keycloak-uncached
Changes
distribution/feature-packs/server-feature-pack/src/main/resources/content/standalone/configuration/keycloak-server.json 4(+2 -2)
forms/common-themes/src/main/resources/theme/keycloak/account/resources/img/keycloak-logo.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/keycloak/admin/resources/img/keyclok-logo.svg 194(+0 -194)
forms/common-themes/src/main/resources/theme/keycloak/login/resources/img/keycloak-logo.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/keycloak/welcome/resources/jboss_community.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/account/resources/img/icon-sidebar-active.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular.js 28604(+28604 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-cookies.js 321(+321 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-loader.js 443(+443 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-mocks.js 2433(+2433 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-resource.js 669(+669 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-route.js 992(+992 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-sanitize.js 683(+683 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-scenario.js 40024(+40024 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate.js 2904(+2904 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate-loader-url.js 75(+75 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate-storage-cookie.js 71(+71 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/errors.json 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/jstd-scenario-adapter.js 185(+185 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/jstd-scenario-adapter-config.js 6(+6 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/select2.js 222(+222 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/angular.treeview.js 97(+97 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/angular.treeview.min.js 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/css/angular.treeview.css 99(+99 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/file.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/folder.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/folder-closed.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/LICENSE 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/README.md 122(+122 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/ui-bootstrap-tpls-0.11.0.js 4116(+4116 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/version.json 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/version.txt 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg 288(+288 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/FontAwesome.otf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.svg 565(+565 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.woff2 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/.bower.json 48(+48 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/bower.json 39(+39 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/bower.json 34(+34 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.css 6800(+6800 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.min.css 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.css 587(+587 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.min.css 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg 288(+288 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/bootstrap.js 2363(+2363 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/bootstrap.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/npm.js 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.svg 288(+288 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.woff2 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-commonjs-generator.js 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-glyphicons-data-generator.js 42(+42 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-lessdoc-parser.js 237(+237 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-raw-files-generator.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/configBridge.json 46(+46 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/sauce_browsers.yml 82(+82 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/affix.js 162(+162 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/alert.js 94(+94 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/button.js 120(+120 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/carousel.js 237(+237 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/collapse.js 211(+211 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/dropdown.js 165(+165 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/modal.js 337(+337 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/popover.js 108(+108 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/scrollspy.js 172(+172 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/tab.js 155(+155 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/tooltip.js 514(+514 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/transition.js 59(+59 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/alerts.less 73(+73 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/badges.less 66(+66 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/bootstrap.less 56(+56 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/breadcrumbs.less 26(+26 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/button-groups.less 244(+244 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/buttons.less 166(+166 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/carousel.less 269(+269 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/close.less 34(+34 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/code.less 69(+69 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/component-animations.less 33(+33 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/dropdowns.less 216(+216 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/forms.less 607(+607 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/glyphicons.less 305(+305 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/grid.less 84(+84 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/input-groups.less 167(+167 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/jumbotron.less 52(+52 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/labels.less 64(+64 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/list-group.less 130(+130 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/media.less 66(+66 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins.less 40(+40 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/alerts.less 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/background-variant.less 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/border-radius.less 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/buttons.less 68(+68 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/center-block.less 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/clearfix.less 22(+22 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/forms.less 85(+85 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/gradients.less 59(+59 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/grid.less 122(+122 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/grid-framework.less 91(+91 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/hide-text.less 21(+21 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/image.less 33(+33 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/labels.less 12(+12 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/list-group.less 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/nav-divider.less 10(+10 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/nav-vertical-align.less 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/opacity.less 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/pagination.less 24(+24 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/panels.less 24(+24 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/progress-bar.less 10(+10 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/reset-filter.less 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/reset-text.less 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/resize.less 6(+6 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/responsive-visibility.less 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/size.less 10(+10 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/tab-focus.less 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/table-row.less 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/text-emphasis.less 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/text-overflow.less 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/vendor-prefixes.less 227(+227 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/modals.less 150(+150 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/navbar.less 660(+660 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/navs.less 242(+242 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/normalize.less 424(+424 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/pager.less 54(+54 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/pagination.less 89(+89 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/panels.less 271(+271 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/popovers.less 131(+131 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/print.less 101(+101 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/progress-bars.less 87(+87 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/responsive-embed.less 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/responsive-utilities.less 194(+194 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/scaffolding.less 161(+161 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/tables.less 234(+234 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/theme.less 291(+291 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/thumbnails.less 36(+36 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/tooltip.less 101(+101 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/type.less 302(+302 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/utilities.less 55(+55 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/variables.less 867(+867 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/wells.less 29(+29 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/LICENSE 21(+21 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/package.js 25(+25 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/README.md 137(+137 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/css/bootstrap-combobox.css 42(+42 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/js/bootstrap-combobox.js 438(+438 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/less/combobox.less 54(+54 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/README.md 59(+59 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/bower.json 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/CHANGELOG.md 228(+228 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/composer.json 39(+39 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/CONTRIBUTING.md 41(+41 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.css 473(+473 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.css 506(+506 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.min.css 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css 752(+752 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.css 783(+783 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/js/bootstrap-datepicker.js 1782(+1782 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ar.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.az.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bg.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bs.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ca.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cs.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cy.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.da.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.de.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.el.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-GB.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.es.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.et.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.eu.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fa.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fi.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fo.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr-CH.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.gl.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.he.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hr.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hu.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hy.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.id.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.is.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it-CH.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ja.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ka.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kh.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kk.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kr.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lt.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lv.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.me.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.mk.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ms.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nb.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl-BE.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.no.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pl.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt-BR.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ro.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs-latin.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ru.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sk.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sl.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sq.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr-latin.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sv.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sw.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.th.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tr.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.uk.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.vi.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-CN.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-TW.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/demo_head.html 31(+31 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_component.html 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_daterange.html 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_inline.html 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_input.html 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_calendarweeks.html 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_clearbtn.html 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_daysofweekdisabled.html 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_enddate.html 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_language.html 31(+31 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_multidate.html 27(+27 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_startdate.html 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_todaybtn.html 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_todayhighlight.html 45(+45 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_weekstart.html 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/common.css 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/common.js 2(+2 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/debug.js 21(+21 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/html-imports.min.js 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/screenshot.js 69(+69 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/demo_head.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_component.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_daterange.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_inline.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_input.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_calendarweeks.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_clearbtn.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_daysofweekdisabled.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_enddate.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_language.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_multidate.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_startdate.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_todaybtn.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_todayhighlight.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_weekstart.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/conf.py 249(+249 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/events.rst 48(+48 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/i18n.rst 31(+31 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/index.rst 122(+122 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/keyboard.rst 27(+27 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/make.bat 190(+190 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/markup.rst 77(+77 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/methods.rst 177(+177 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/options.rst 299(+299 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/README.md 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/requirements.txt 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/bootstrap-datepicker.js 1798(+1798 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.az.js 12(+12 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bs.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cy.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.en-GB.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.et.js 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.eu.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fa.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fo.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr-CH.js 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.gl.js 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hy.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it-CH.js 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ka.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kh.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kk.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.me.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mk.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl-BE.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.no.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sq.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr-latin.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.uk.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.vi.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/less/datepicker.less 239(+239 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/less/datepicker3.less 230(+230 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/LICENSE 202(+202 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/README.md 22(+22 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/bower.json 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.css 263(+263 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.min.css 6(+6 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.js 1650(+1650 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.js.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.min.js 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-bg_BG.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-bg_BG.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-cs_CZ.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-cs_CZ.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-da_DK.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-da_DK.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-de_DE.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-de_DE.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-en_US.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-en_US.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-es_CL.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-es_CL.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-eu.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-eu.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fa_IR.js 37(+37 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fa_IR.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fr_FR.js 42(+42 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fr_FR.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-hu_HU.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-hu_HU.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-it_IT.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-it_IT.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ko_KR.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ko_KR.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-nl_NL.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-nl_NL.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pl_PL.js 37(+37 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pl_PL.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_BR.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_BR.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_PT.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_PT.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ro_RO.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ro_RO.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ru_RU.js 36(+36 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ru_RU.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sk_SK.js 37(+37 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sk_SK.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sl_SI.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sl_SI.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sv_SE.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sv_SE.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-tr_TR.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-tr_TR.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ua_UA.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ua_UA.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_CN.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_CN.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_TW.js 37(+37 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_TW.min.js 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/bootstrap-select.js 1624(+1624 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-bg_BG.js 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-cs_CZ.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-da_DK.js 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-de_DE.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-en_US.js 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-es_CL.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-eu.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-fa_IR.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-fr_FR.js 21(+21 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-hu_HU.js 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-it_IT.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ko_KR.js 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-nl_NL.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pl_PL.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pt_BR.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pt_PT.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ro_RO.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ru_RU.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sk_SK.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sl_SI.js 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sv_SE.js 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-tr_TR.js 24(+24 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ua_UA.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-zh_CN.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-zh_TW.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/less/bootstrap-select.less 332(+332 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/less/variables.less 6(+6 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/LICENSE 21(+21 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/app.js 29(+29 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/bower.json 33(+33 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/CHANGELOG.md 91(+91 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/dist/bootstrap-treeview.min.css 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/dist/bootstrap-treeview.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/LICENSE 202(+202 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/css/bootstrap-treeview.css 37(+37 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/example-dom.html 59(+59 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/index.html 763(+763 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/js/bootstrap-treeview.js 1249(+1249 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/README.md 763(+763 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/screenshot/default.PNG 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/src/css/bootstrap-treeview.css 37(+37 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/src/js/bootstrap-treeview.js 1249(+1249 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/bower.json 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.css 158(+158 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.js 7049(+7049 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.min.css 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.min.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/config.json 11(+11 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/phantom-exporter.js 140(+140 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/test.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/js/c3ext.js 380(+380 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/LICENSE 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/README.md 51(+51 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/bower.json 26(+26 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/CONTRIBUTING.md 25(+25 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/d3.js 9426(+9426 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/d3.min.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/LICENSE 26(+26 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/README.md 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/bower.json 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/Contributing.md 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/license.txt 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables.css 455(+455 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables.min.css 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables_themeroller.css 416(+416 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/favicon.ico 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_asc.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_asc_disabled.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_both.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_desc.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_desc_disabled.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/Sorting icons.psd 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.dataTables.js 14951(+14951 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.dataTables.min.js 160(+160 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/Readme.md 53(+53 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/bower.json 12(+12 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/css/dataTables.colReorder.css 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/alt_insert.xml 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/col_filter.xml 38(+38 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/colvis.xml 26(+26 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/fixedcolumns.xml 43(+43 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/fixedheader.xml 27(+27 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/index.xml 19(+19 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/jqueryui.xml 27(+27 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/new_init.xml 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/predefined.xml 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/realtime.xml 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/reset.xml 41(+41 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/scrolling.xml 27(+27 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/server_side.xml 38(+38 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/simple.xml 25(+25 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/state_save.xml 26(+26 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/images/insert.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/js/dataTables.colReorder.js 1372(+1372 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/License.txt 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/make.sh 31(+31 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/Readme.md 39(+39 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/bower.json 12(+12 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/css/dataTables.colVis.css 185(+185 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/css/dataTables.colvis.jqueryui.css 41(+41 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/button_order.xml 26(+26 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/exclude_columns.xml 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/group_columns.xml 40(+40 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/index.xml 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/jqueryui.xml 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/mouseover.xml 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/new_init.xml 26(+26 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/restore.xml 33(+33 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/simple.xml 25(+25 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/text.xml 29(+29 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/title_callback.xml 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/two_tables.xml 24(+24 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/two_tables_identical.xml 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/js/dataTables.colVis.js 1123(+1123 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/License.txt 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/make.sh 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/README.md 38(+38 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/bower.json 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.css 1801(+1801 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.css.map 7(+7 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.min.css 4(+4 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/FontAwesome.otf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.svg 565(+565 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff2 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/animated.less 34(+34 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/bordered-pulled.less 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/core.less 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/fixed-width.less 6(+6 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/font-awesome.less 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/icons.less 596(+596 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/larger.less 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/list.less 19(+19 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/mixins.less 27(+27 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/path.less 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/rotated-flipped.less 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/stacked.less 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/variables.less 606(+606 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_animated.scss 34(+34 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_bordered-pulled.scss 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_core.scss 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_fixed-width.scss 6(+6 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_icons.scss 596(+596 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_larger.scss 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_list.scss 19(+19 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_mixins.scss 27(+27 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_path.scss 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_rotated-flipped.scss 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_stacked.scss 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_variables.scss 606(+606 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/font-awesome.scss 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/prettify.min.css 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/prettify.min.js 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/run_prettify.min.js 34(+34 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bower.json 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/CHANGES.html 172(+172 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/COPYING 191(+191 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/examples/quine.html 55(+55 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README.html 233(+233 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README.md 54(+54 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README-zh-Hans.html 143(+143 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-apollo.js 51(+51 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-basic.js 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-clj.js 64(+64 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-css.js 159(+159 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-dart.js 88(+88 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-erlang.js 92(+92 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-go.js 58(+58 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-hs.js 101(+101 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-lisp.js 94(+94 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-llvm.js 61(+61 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-lua.js 59(+59 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-matlab.js 180(+180 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-ml.js 56(+56 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-mumps.js 139(+139 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-n.js 65(+65 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-pascal.js 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-proto.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-r.js 57(+57 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-rd.js 47(+47 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-scala.js 54(+54 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-sql.js 58(+58 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-tcl.js 62(+62 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-tex.js 46(+46 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-vb.js 66(+66 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-vhdl.js 34(+34 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-wiki.js 53(+53 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-xq.js 67(+67 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-yaml.js 27(+27 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/prettify.css 52(+52 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/prettify.js 1655(+1655 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/run_prettify.js 1905(+1905 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/demo.html 61(+61 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/desert.css 34(+34 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/doxy.css 64(+64 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/index.html 89(+89 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/sons-of-obsidian.css 118(+118 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/sunburst.css 51(+51 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/bower.json 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.js 9210(+9210 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.min.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.min.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/MIT-LICENSE.txt 21(+21 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax.js 786(+786 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/jsonp.js 89(+89 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/load.js 75(+75 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/parseJSON.js 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/parseXML.js 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/script.js 64(+64 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/var/nonce.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/var/rquery.js 3(+3 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/xhr.js 136(+136 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes.js 11(+11 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/attr.js 141(+141 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/classes.js 158(+158 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/prop.js 94(+94 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/support.js 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/val.js 161(+161 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/callbacks.js 205(+205 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core.js 502(+502 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/access.js 60(+60 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/init.js 123(+123 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/parseHTML.js 39(+39 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/ready.js 97(+97 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/var/rsingleTag.js 4(+4 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css.js 450(+450 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/addGetHookIf.js 22(+22 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/curCSS.js 57(+57 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/defaultDisplay.js 70(+70 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/hiddenVisibleSelectors.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/support.js 96(+96 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/swap.js 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/cssExpand.js 3(+3 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/getStyles.js 12(+12 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/isHidden.js 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/rmargin.js 3(+3 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/rnumnonpx.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data.js 178(+178 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/accepts.js 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/Data.js 181(+181 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/var/data_priv.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/var/data_user.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/deferred.js 149(+149 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/deprecated.js 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/dimensions.js 50(+50 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects.js 648(+648 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects/animatedSelector.js 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects/Tween.js 114(+114 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event.js 868(+868 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/ajax.js 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/alias.js 39(+39 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/support.js 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/exports/amd.js 24(+24 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/exports/global.js 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/intro.js 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/jquery.js 37(+37 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation.js 580(+580 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/_evalUrl.js 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/support.js 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/var/rcheckableType.js 3(+3 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/offset.js 207(+207 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/outro.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/queue.js 142(+142 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/queue/delay.js 22(+22 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector-native.js 172(+172 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector-sizzle.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/serialize.js 111(+111 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.js 2067(+2067 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.min.js 3(+3 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.min.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing.js 199(+199 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing/findFilter.js 100(+100 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing/var/rneedsContext.js 6(+6 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/arr.js 3(+3 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/class2type.js 4(+4 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/concat.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/hasOwn.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/indexOf.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/pnum.js 3(+3 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/push.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/rnotwhite.js 3(+3 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/slice.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/strundefined.js 3(+3 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/support.js 4(+4 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/toString.js 5(+5 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/wrap.js 79(+79 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/bower.json 26(+26 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/CHANGELOG.md 43(+43 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/jquery.matchHeight.js 353(+353 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/jquery.matchHeight-min.js 11(+11 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/lib/jquery-1.11.0.min.js 4(+4 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/LICENSE 21(+21 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/matchHeight.jquery.json 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/README.md 197(+197 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.css 280(+280 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.html 322(+322 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.js 33(+33 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.css 9746(+9746 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.min.css 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.min.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.css 3394(+3394 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.min.css 2(+2 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.min.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.svg 1835(+1835 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.svg 1831(+1831 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.svg 1831(+1831 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.svg 65(+65 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-114.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-144.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-152.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-180.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-57.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-72.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-76.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/bg-login.jpg 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/brand.svg 87(+87 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/favicon.ico 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/logo.svg 22(+22 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-lg.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-sm.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-xs.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/js/patternfly.js 214(+214 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/js/patternfly.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/alerts.less 29(+29 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/badges.less 11(+11 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/blank-slate.less 29(+29 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-combobox.less 35(+35 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-datepicker.less 71(+71 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-select.less 99(+99 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-treeview.less 37(+37 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/breadcrumbs.less 20(+20 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/buttons.less 48(+48 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/cards.less 60(+60 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/charts.less 71(+71 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/close.less 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/datatables.less 222(+222 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/dropdowns.less 145(+145 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/fonts.less 54(+54 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/forms.less 31(+31 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/icons.less 137(+137 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/infotip.less 149(+149 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/labels.less 12(+12 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/list-group.less 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/login.less 100(+100 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/mixins.less 99(+99 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/modals.less 38(+38 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/navbar.less 490(+490 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/pager.less 72(+72 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/pagination.less 64(+64 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/panels.less 57(+57 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/patternfly.less 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/patternfly-additions.less 36(+36 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/popovers.less 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/progress-bars.less 91(+91 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/search.less 65(+65 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/sidebar.less 174(+174 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/spinner.less 60(+60 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/syntax-highlighting.less 25(+25 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tables.less 70(+70 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tabs.less 118(+118 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tooltip.less 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/type.less 24(+24 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/variables.less 230(+230 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/LICENSE.txt 205(+205 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/OPEN_SOURCE_LICENCES.txt 1142(+1142 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/README.md 212(+212 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_config.yml 13(+13 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/datatable.html 419(+419 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/form.html 67(+67 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/head.html 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/layouts-navbar-primary.html 80(+80 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/cards.html 10(+10 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/default.html 10(+10 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/layout.html 4(+4 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/login.html 10(+10 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/page.html 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_plugins/strip.rb 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_plugins/weighted_pages.rb 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/accordions.html 50(+50 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/alerts.html 51(+51 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/badges.html 33(+33 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/basic.html 29(+29 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/blank-slate.html 44(+44 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-combobox.html 305(+305 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-datepicker.html 36(+36 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-select.html 173(+173 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-treeview.html 197(+197 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-treeview-2.html 94(+94 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/breadcrumbs.html 12(+12 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/buttons.html 487(+487 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/cards.html 190(+190 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/charts.html 348(+348 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/code.html 43(+43 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/dashboard.html 225(+225 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/datatables.html 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/datatables-columns.html 34(+34 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/dropdowns.html 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/form.html 80(+80 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/forms.html 391(+391 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/icons.html 248(+248 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/img/dashboard-3.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/index.html 23(+23 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/infotip.html 48(+48 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/labels.html 68(+68 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/list-group.html 71(+71 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/login.html 52(+52 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/modals.html 43(+43 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/navbar.html 4640(+4640 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/pagination.html 243(+243 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/panels.html 73(+73 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/popovers.html 73(+73 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/progress-bars.html 237(+237 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/search.html 131(+131 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/spinner.html 32(+32 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tab.html 72(+72 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tables.html 169(+169 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tabs.html 239(+239 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tests.css 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tooltip.html 30(+30 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography.html 155(+155 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography-2.css 10(+10 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography-2.html 179(+179 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/filesaver/FileSaver.js 241(+241 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload.js 156(+156 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload.min.js 2(+2 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-html5-shim.js 25(+25 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-html5-shim.min.js 2(+2 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-shim.js 215(+215 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-shim.min.js 2(+2 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/FileAPI.min.js 72(+72 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/jquery/jquery-1.10.2.js 9789(+9789 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/css/patternfly.css 11707(+11707 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/css/patternfly.min.css 10(+10 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.svg 1835(+1835 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.svg 1831(+1831 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.svg 1831(+1831 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.svg 1830(+1830 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.svg 63(+63 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-114-precomposed.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-144-precomposed.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-57-precomposed.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-72-precomposed.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/bg-login.jpg 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand.svg 87(+87 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand-lg.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/favicon.ico 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/logo.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/logo.svg 22(+22 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-lg.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-sm.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-xs.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/js/patternfly.js 212(+212 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/js/patternfly.min.js 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.css 9749(+9749 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.min.css 9(+9 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.min.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.css 3450(+3450 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.min.css 2(+2 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.min.css.map 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles.css 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles.min.css 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles-additions.css 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles-additions.min.css 1(+1 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-114.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-120.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-144.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-152.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-180.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-57.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-72.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-76.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login.jpg 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login-2.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/brand.svg 147(+147 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/favicon.ico 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/logo.svg 94(+94 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-lg.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-sm.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-xs.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/component.json 8(+8 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/LICENSE 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/README.md 83(+83 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/release.sh 69(+69 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.css 680(+680 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.jquery.json 36(+36 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.js 3137(+3137 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.min.js 22(+22 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ar.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ca.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_cs.js 49(+49 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_da.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_de.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_el.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_en.js.template 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_es.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_et.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_eu.js 43(+43 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_fi.js 28(+28 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_fr.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_gl.js 43(+43 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_he.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_hr.js 42(+42 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_hu.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_id.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_is.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_it.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ja.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ko.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_lt.js 29(+29 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_lv.js 16(+16 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_mk.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_nl.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_no.js 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pl.js 37(+37 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pt-BR.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pt-PT.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ro.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ru.js 15(+15 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_sk.js 48(+48 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_sv.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_tr.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ua.js 17(+17 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_vi.js 18(+18 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_zh-CN.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_zh-TW.js 14(+14 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2-spinner.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2x2.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial.css 505(+505 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.svg 1107(+1107 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/email/messages/messages_pt_BR.properties 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/login/resources/img/feedback-error-arrow-down.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/login/resources/img/feedback-error-sign.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/login/resources/img/feedback-success-arrow-down.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/login/resources/img/feedback-success-sign.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/login/resources/img/feedback-warning-arrow-down.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/login/resources/img/feedback-warning-sign.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-BoldItalic.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-ExtraBold.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-ExtraBoldItalic.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-LightItalic.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Semibold.ttf 0(+0 -0)
Details
diff --git a/distribution/feature-packs/server-feature-pack/src/main/resources/content/standalone/configuration/keycloak-server.json b/distribution/feature-packs/server-feature-pack/src/main/resources/content/standalone/configuration/keycloak-server.json
index a5b4d1b..0ce6c7a 100644
--- a/distribution/feature-packs/server-feature-pack/src/main/resources/content/standalone/configuration/keycloak-server.json
+++ b/distribution/feature-packs/server-feature-pack/src/main/resources/content/standalone/configuration/keycloak-server.json
@@ -31,7 +31,7 @@
},
"theme": {
- "default": "keycloak",
+ "default": "rh-sso",
"staticMaxAge": 2592000,
"cacheTemplates": true,
"cacheThemes": true,
@@ -60,4 +60,4 @@
"cacheContainer" : "java:comp/env/infinispan/Keycloak"
}
}
-}
\ No newline at end of file
+}
diff --git a/forms/common-themes/src/main/resources/META-INF/keycloak-themes.json b/forms/common-themes/src/main/resources/META-INF/keycloak-themes.json
index 56322d3..cb0d2b8 100755
--- a/forms/common-themes/src/main/resources/META-INF/keycloak-themes.json
+++ b/forms/common-themes/src/main/resources/META-INF/keycloak-themes.json
@@ -4,6 +4,9 @@
"types": [ "admin", "account", "login" ]
}, {
"name" : "keycloak",
+ "types": [ "common" ]
+ }, {
+ "name" : "rh-sso",
"types": [ "admin", "account", "login", "common", "email", "welcome" ]
}]
-}
\ No newline at end of file
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/admin/theme.properties b/forms/common-themes/src/main/resources/theme/rh-sso/admin/theme.properties
new file mode 100755
index 0000000..046dfb5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/admin/theme.properties
@@ -0,0 +1,3 @@
+parent=base
+import=common/rh-sso
+styles=lib/rcue/css/rcue.min.css lib/rcue/css/rcue-additions.min.css lib/select2-3.4.1/select2.css css/styles.css lib/angular/treeview/css/angular.treeview.css
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/img/brand.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/img/brand.svg
new file mode 100644
index 0000000..a908d8c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/img/brand.svg
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 223.4 12.5" style="enable-background:new 0 0 223.4 12.5;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:#FFFFFF;}
+</style>
+<g>
+ <g>
+ <g>
+ <path class="st0" d="M6.5,12.3l-2-4H3.2v4H0V0.3h5.3c0.7,0,1.3,0.1,1.9,0.2c0.6,0.1,1.1,0.4,1.5,0.7c0.4,0.3,0.7,0.7,0.9,1.2
+ C9.9,2.9,10,3.5,10,4.2c0,0.9-0.2,1.6-0.6,2.2C9,7,8.5,7.4,7.8,7.7l2.4,4.6H6.5z M6.4,3.4C6.1,3.1,5.8,3,5.2,3h-2v2.6h2
+ c0.5,0,0.9-0.1,1.2-0.3c0.2-0.2,0.3-0.6,0.3-1C6.7,3.9,6.6,3.6,6.4,3.4z"/>
+ </g>
+ <g>
+ <path class="st0" d="M12.2,12.3V0.3h9.1v2.8h-5.9v1.6H19v2.7h-3.5v2h6v2.8H12.2z"/>
+ </g>
+ <g>
+ <path class="st0" d="M33.5,9.1c-0.3,0.8-0.7,1.4-1.2,1.9c-0.5,0.5-1.2,0.8-2,1c-0.8,0.2-1.7,0.3-2.8,0.3h-3.9V0.3h4.2
+ c0.9,0,1.8,0.1,2.5,0.3c0.8,0.2,1.4,0.5,1.9,1c0.5,0.5,0.9,1.1,1.2,1.8c0.3,0.7,0.4,1.7,0.4,2.8C33.9,7.3,33.8,8.3,33.5,9.1z
+ M30.4,4.9c-0.1-0.4-0.3-0.7-0.5-1c-0.2-0.2-0.5-0.4-0.9-0.6c-0.4-0.1-0.8-0.2-1.3-0.2h-0.8v6.3h0.7c0.5,0,1-0.1,1.3-0.2
+ c0.4-0.1,0.7-0.3,0.9-0.5c0.2-0.2,0.4-0.6,0.5-1c0.1-0.4,0.2-0.9,0.2-1.5C30.5,5.7,30.5,5.3,30.4,4.9z"/>
+ </g>
+ <g>
+ <path class="st0" d="M48,12.3V7.6h-3.7v4.7h-3.4V0.3h3.4v4.4H48V0.3h3.4v11.9H48z"/>
+ </g>
+ <g>
+ <path class="st0" d="M61.5,12.3l-0.6-2.1h-3.6l-0.6,2.1h-3.5l4.3-11.9h3.3l4.3,11.9H61.5z M59.8,6.7c-0.1-0.4-0.2-0.7-0.3-1
+ c-0.1-0.3-0.2-0.5-0.2-0.8c-0.1-0.2-0.1-0.4-0.2-0.6c0-0.2-0.1-0.4-0.1-0.6C59,4,59,4.2,58.9,4.4c0,0.2-0.1,0.4-0.2,0.6
+ c-0.1,0.2-0.1,0.5-0.2,0.8c-0.1,0.3-0.2,0.6-0.3,1l-0.2,0.8h2L59.8,6.7z"/>
+ </g>
+ <g>
+ <path class="st0" d="M71.3,3.2v9.1H68V3.2h-3.3V0.3h10v2.9H71.3z"/>
+ </g>
+ </g>
+ <g>
+ <path class="st0" d="M78.6,2c-0.1,0.1-0.1,0.3-0.3,0.4c-0.1,0.1-0.2,0.2-0.4,0.3c-0.1,0.1-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1
+ c-0.1-0.1-0.3-0.1-0.4-0.3c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.1-0.3,0.3-0.4
+ c0.1-0.1,0.2-0.2,0.4-0.3c0.1-0.1,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.1,0.1,0.3,0.1,0.4,0.3c0.1,0.1,0.2,0.2,0.3,0.4
+ c0.1,0.1,0.1,0.3,0.1,0.5C78.7,1.7,78.6,1.8,78.6,2z M78.4,1.1c-0.1-0.1-0.1-0.2-0.2-0.3c-0.1-0.1-0.2-0.2-0.3-0.2
+ c-0.1-0.1-0.3-0.1-0.4-0.1c-0.1,0-0.3,0-0.4,0.1c-0.1,0.1-0.2,0.1-0.3,0.2c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.1,0.4
+ c0,0.1,0,0.3,0.1,0.4s0.1,0.2,0.2,0.3c0.1,0.1,0.2,0.2,0.3,0.2c0.1,0,0.3,0.1,0.4,0.1c0.1,0,0.3,0,0.4-0.1
+ c0.1-0.1,0.2-0.1,0.3-0.2c0.1-0.1,0.2-0.2,0.2-0.3c0.1-0.1,0.1-0.3,0.1-0.4C78.5,1.4,78.4,1.2,78.4,1.1z M77.9,1.5
+ c-0.1,0.1-0.1,0.1-0.2,0.1L78,2.1h-0.3l-0.3-0.5h-0.3v0.5H77V0.8h0.6c0.1,0,0.1,0,0.2,0c0.1,0,0.1,0,0.1,0.1C77.9,1,77.9,1,78,1
+ c0,0,0,0.1,0,0.2C78,1.3,78,1.4,77.9,1.5z M77.7,1.1c0,0-0.1,0-0.1,0h-0.3v0.4h0.3c0.1,0,0.1,0,0.1,0c0,0,0.1-0.1,0.1-0.1
+ C77.8,1.2,77.8,1.1,77.7,1.1z"/>
+ </g>
+ <g>
+ <path class="st0" d="M91.4,10.2c-0.2,0.5-0.5,0.9-0.9,1.2S89.6,12,89,12.2c-0.6,0.2-1.3,0.3-2.1,0.3c-1,0-1.9-0.2-2.8-0.6
+ c-0.8-0.4-1.5-0.9-1.9-1.6l1.7-1.6c0.4,0.5,0.9,0.8,1.4,1.1s1.1,0.3,1.7,0.3c0.7,0,1.3-0.1,1.6-0.3s0.5-0.5,0.5-1
+ c0-0.2,0-0.4-0.1-0.5C89,8.1,88.8,8,88.6,7.9c-0.2-0.1-0.5-0.2-0.8-0.4c-0.4-0.1-0.8-0.2-1.4-0.4c-0.6-0.1-1.1-0.3-1.5-0.4
+ C84.4,6.5,84,6.3,83.7,6c-0.3-0.3-0.6-0.6-0.8-1c-0.2-0.4-0.3-0.9-0.3-1.5c0-0.6,0.1-1,0.3-1.5c0.2-0.4,0.5-0.8,0.9-1.1
+ c0.4-0.3,0.8-0.5,1.4-0.7C85.8,0.1,86.4,0,87,0c0.9,0,1.8,0.2,2.5,0.5c0.7,0.3,1.3,0.8,1.9,1.4l-1.7,1.7c-0.4-0.4-0.8-0.7-1.3-0.9
+ s-0.9-0.3-1.5-0.3c-0.3,0-0.6,0-0.8,0.1c-0.2,0.1-0.4,0.1-0.5,0.2s-0.2,0.2-0.3,0.3c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.2,0,0.4,0.1,0.5
+ c0.1,0.1,0.2,0.2,0.4,0.4c0.2,0.1,0.4,0.2,0.7,0.3c0.3,0.1,0.7,0.2,1.2,0.3c0.5,0.1,1,0.2,1.4,0.4c0.5,0.2,0.9,0.4,1.3,0.6
+ C90.7,6.2,91,6.6,91.3,7c0.2,0.4,0.4,1,0.4,1.6C91.6,9.2,91.5,9.7,91.4,10.2z"/>
+ <path class="st0" d="M94.4,12.3V0.2h2.4v12.1H94.4z"/>
+ <path class="st0" d="M107.7,12.3l-4.4-6.6c-0.1-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
+ c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
+ c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H107.7z"/>
+ <path class="st0" d="M122.1,9.7c-0.2,0.6-0.6,1.1-1,1.5c-0.4,0.4-0.9,0.7-1.5,0.9c-0.6,0.2-1.2,0.3-1.9,0.3
+ c-0.8,0-1.5-0.1-2.2-0.4c-0.6-0.3-1.2-0.7-1.7-1.3c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6c0-0.9,0.1-1.8,0.4-2.5
+ c0.3-0.8,0.6-1.4,1.1-2s1-1,1.7-1.3c0.7-0.3,1.4-0.5,2.2-0.5c0.6,0,1.2,0.1,1.6,0.2c0.5,0.1,0.9,0.3,1.3,0.6s0.7,0.6,1,1
+ c0.3,0.4,0.5,0.8,0.7,1.3L120,4c-0.1-0.2-0.2-0.4-0.4-0.6s-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.5-0.1-0.8-0.1
+ c-0.4,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.5-0.9,0.8s-0.4,0.7-0.6,1.2c-0.1,0.5-0.2,1-0.2,1.5c0,0.6,0.1,1.1,0.2,1.5
+ c0.1,0.5,0.3,0.9,0.6,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.3c0.4,0,0.8,0,1.1-0.1c0.3-0.1,0.5-0.2,0.7-0.4
+ c0.2-0.2,0.3-0.4,0.4-0.6s0.2-0.5,0.2-0.7h-1.9V6h4.3v1.6C122.4,8.4,122.3,9.1,122.1,9.7z"/>
+ <path class="st0" d="M125,12.3V0.2h2.4v9.7h6.1v2.4H125z"/>
+ <path class="st0" d="M135.7,12.3V0.2h8.4v2.4h-6v2.1h3.5V7h-3.5v2.9h6.2v2.4H135.7z"/>
+ <path class="st0" d="M160.5,10.2c-0.2,0.5-0.5,0.9-0.9,1.2s-0.9,0.6-1.5,0.8c-0.6,0.2-1.3,0.3-2.1,0.3c-1,0-1.9-0.2-2.8-0.6
+ s-1.5-0.9-1.9-1.6l1.7-1.6c0.4,0.5,0.9,0.8,1.4,1.1s1.1,0.3,1.7,0.3c0.7,0,1.3-0.1,1.6-0.3c0.3-0.2,0.5-0.5,0.5-1
+ c0-0.2,0-0.4-0.1-0.5c-0.1-0.1-0.2-0.3-0.4-0.4c-0.2-0.1-0.5-0.2-0.8-0.4c-0.4-0.1-0.8-0.2-1.4-0.4C155,7,154.5,6.9,154,6.7
+ c-0.5-0.2-0.9-0.4-1.2-0.7c-0.3-0.3-0.6-0.6-0.8-1c-0.2-0.4-0.3-0.9-0.3-1.5c0-0.6,0.1-1,0.3-1.5c0.2-0.4,0.5-0.8,0.9-1.1
+ c0.4-0.3,0.8-0.5,1.4-0.7c0.5-0.2,1.1-0.2,1.7-0.2c0.9,0,1.8,0.2,2.5,0.5c0.7,0.3,1.3,0.8,1.9,1.4l-1.7,1.7
+ c-0.4-0.4-0.8-0.7-1.3-0.9s-0.9-0.3-1.5-0.3c-0.3,0-0.6,0-0.8,0.1c-0.2,0.1-0.4,0.1-0.5,0.2s-0.2,0.2-0.3,0.3
+ c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.2,0,0.4,0.1,0.5c0.1,0.1,0.2,0.2,0.4,0.4c0.2,0.1,0.4,0.2,0.7,0.3c0.3,0.1,0.7,0.2,1.2,0.3
+ c0.5,0.1,1,0.2,1.4,0.4c0.5,0.2,0.9,0.4,1.3,0.6c0.4,0.3,0.7,0.6,0.9,1.1c0.2,0.4,0.4,1,0.4,1.6C160.8,9.2,160.7,9.7,160.5,10.2z"
+ />
+ <path class="st0" d="M163.5,12.3V0.2h2.4v12.1H163.5z"/>
+ <path class="st0" d="M178.3,9.7c-0.2,0.6-0.6,1.1-1,1.5c-0.4,0.4-0.9,0.7-1.5,0.9c-0.6,0.2-1.2,0.3-1.9,0.3
+ c-0.8,0-1.5-0.1-2.2-0.4s-1.2-0.7-1.7-1.3c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6c0-0.9,0.1-1.8,0.4-2.5
+ c0.3-0.8,0.6-1.4,1.1-2s1-1,1.7-1.3c0.7-0.3,1.4-0.5,2.2-0.5c0.6,0,1.2,0.1,1.6,0.2c0.5,0.1,0.9,0.3,1.3,0.6c0.4,0.3,0.7,0.6,1,1
+ s0.5,0.8,0.7,1.3L176.2,4c-0.1-0.2-0.2-0.4-0.4-0.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.5-0.1-0.8-0.1
+ c-0.4,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.4,0.7-0.6,1.2c-0.1,0.5-0.2,1-0.2,1.5c0,0.6,0.1,1.1,0.2,1.5
+ c0.1,0.5,0.3,0.9,0.6,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.3c0.4,0,0.8,0,1.1-0.1c0.3-0.1,0.5-0.2,0.7-0.4
+ c0.2-0.2,0.3-0.4,0.4-0.6s0.2-0.5,0.2-0.7h-1.9V6h4.3v1.6C178.7,8.4,178.6,9.1,178.3,9.7z"/>
+ <path class="st0" d="M188.9,12.3l-4.4-6.6c-0.2-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
+ c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
+ c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H188.9z"/>
+ <path class="st0" d="M193.6,7.2V4.8h5v2.4H193.6z"/>
+ <path class="st0" d="M210.7,8.8c-0.3,0.8-0.6,1.4-1.1,2c-0.5,0.5-1,0.9-1.7,1.2c-0.7,0.3-1.4,0.4-2.2,0.4c-0.8,0-1.5-0.1-2.2-0.4
+ s-1.2-0.7-1.7-1.2c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6s0.1-1.9,0.4-2.6c0.3-0.8,0.6-1.4,1.1-2c0.5-0.5,1-0.9,1.7-1.2
+ c0.7-0.3,1.4-0.4,2.2-0.4c0.8,0,1.5,0.1,2.1,0.4s1.2,0.7,1.7,1.2c0.5,0.5,0.8,1.2,1.1,2c0.3,0.8,0.4,1.6,0.4,2.6
+ S211,8.1,210.7,8.8z M207.9,3.4c-0.5-0.7-1.2-1-2.1-1s-1.5,0.3-2,1S203,5,203,6.2c0,1.2,0.3,2.2,0.8,2.8c0.5,0.7,1.2,1,2.1,1
+ s1.5-0.3,2-1s0.8-1.6,0.8-2.8S208.4,4.1,207.9,3.4z"/>
+ <path class="st0" d="M221.2,12.3l-4.4-6.6c-0.2-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
+ c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
+ c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H221.2z"/>
+ </g>
+</g>
+</svg>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/img/favicon.ico b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/img/favicon.ico
new file mode 100644
index 0000000..dad490b
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/img/favicon.ico differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular.js
new file mode 100644
index 0000000..d8b681d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular.js
@@ -0,0 +1,28604 @@
+/**
+ * @license AngularJS v1.4.4
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, document, undefined) {'use strict';
+
+/**
+ * @description
+ *
+ * This object provides a utility for producing rich Error messages within
+ * Angular. It can be called as follows:
+ *
+ * var exampleMinErr = minErr('example');
+ * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
+ *
+ * The above creates an instance of minErr in the example namespace. The
+ * resulting error will have a namespaced error code of example.one. The
+ * resulting error will replace {0} with the value of foo, and {1} with the
+ * value of bar. The object is not restricted in the number of arguments it can
+ * take.
+ *
+ * If fewer arguments are specified than necessary for interpolation, the extra
+ * interpolation markers will be preserved in the final string.
+ *
+ * Since data will be parsed statically during a build step, some restrictions
+ * are applied with respect to how minErr instances are created and called.
+ * Instances should have names of the form namespaceMinErr for a minErr created
+ * using minErr('namespace') . Error codes, namespaces and template strings
+ * should all be static strings, not variables or general expressions.
+ *
+ * @param {string} module The namespace to use for the new minErr instance.
+ * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
+ * error from returned function, for cases when a particular type of error is useful.
+ * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
+ */
+
+function minErr(module, ErrorConstructor) {
+ ErrorConstructor = ErrorConstructor || Error;
+ return function() {
+ var SKIP_INDEXES = 2;
+
+ var templateArgs = arguments,
+ code = templateArgs[0],
+ message = '[' + (module ? module + ':' : '') + code + '] ',
+ template = templateArgs[1],
+ paramPrefix, i;
+
+ message += template.replace(/\{\d+\}/g, function(match) {
+ var index = +match.slice(1, -1),
+ shiftedIndex = index + SKIP_INDEXES;
+
+ if (shiftedIndex < templateArgs.length) {
+ return toDebugString(templateArgs[shiftedIndex]);
+ }
+
+ return match;
+ });
+
+ message += '\nhttp://errors.angularjs.org/1.4.4/' +
+ (module ? module + '/' : '') + code;
+
+ for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
+ message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' +
+ encodeURIComponent(toDebugString(templateArgs[i]));
+ }
+
+ return new ErrorConstructor(message);
+ };
+}
+
+/* We need to tell jshint what variables are being exported */
+/* global angular: true,
+ msie: true,
+ jqLite: true,
+ jQuery: true,
+ slice: true,
+ splice: true,
+ push: true,
+ toString: true,
+ ngMinErr: true,
+ angularModule: true,
+ uid: true,
+ REGEX_STRING_REGEXP: true,
+ VALIDITY_STATE_PROPERTY: true,
+
+ lowercase: true,
+ uppercase: true,
+ manualLowercase: true,
+ manualUppercase: true,
+ nodeName_: true,
+ isArrayLike: true,
+ forEach: true,
+ forEachSorted: true,
+ reverseParams: true,
+ nextUid: true,
+ setHashKey: true,
+ extend: true,
+ toInt: true,
+ inherit: true,
+ merge: true,
+ noop: true,
+ identity: true,
+ valueFn: true,
+ isUndefined: true,
+ isDefined: true,
+ isObject: true,
+ isBlankObject: true,
+ isString: true,
+ isNumber: true,
+ isDate: true,
+ isArray: true,
+ isFunction: true,
+ isRegExp: true,
+ isWindow: true,
+ isScope: true,
+ isFile: true,
+ isFormData: true,
+ isBlob: true,
+ isBoolean: true,
+ isPromiseLike: true,
+ trim: true,
+ escapeForRegexp: true,
+ isElement: true,
+ makeMap: true,
+ includes: true,
+ arrayRemove: true,
+ copy: true,
+ shallowCopy: true,
+ equals: true,
+ csp: true,
+ jq: true,
+ concat: true,
+ sliceArgs: true,
+ bind: true,
+ toJsonReplacer: true,
+ toJson: true,
+ fromJson: true,
+ convertTimezoneToLocal: true,
+ timezoneToOffset: true,
+ startingTag: true,
+ tryDecodeURIComponent: true,
+ parseKeyValue: true,
+ toKeyValue: true,
+ encodeUriSegment: true,
+ encodeUriQuery: true,
+ angularInit: true,
+ bootstrap: true,
+ getTestability: true,
+ snake_case: true,
+ bindJQuery: true,
+ assertArg: true,
+ assertArgFn: true,
+ assertNotHasOwnProperty: true,
+ getter: true,
+ getBlockNodes: true,
+ hasOwnProperty: true,
+ createMap: true,
+
+ NODE_TYPE_ELEMENT: true,
+ NODE_TYPE_ATTRIBUTE: true,
+ NODE_TYPE_TEXT: true,
+ NODE_TYPE_COMMENT: true,
+ NODE_TYPE_DOCUMENT: true,
+ NODE_TYPE_DOCUMENT_FRAGMENT: true,
+*/
+
+////////////////////////////////////
+
+/**
+ * @ngdoc module
+ * @name ng
+ * @module ng
+ * @description
+ *
+ * # ng (core module)
+ * The ng module is loaded by default when an AngularJS application is started. The module itself
+ * contains the essential components for an AngularJS application to function. The table below
+ * lists a high level breakdown of each of the services/factories, filters, directives and testing
+ * components available within this core module.
+ *
+ * <div doc-module-components="ng"></div>
+ */
+
+var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/;
+
+// The name of a form control's ValidityState property.
+// This is used so that it's possible for internal tests to create mock ValidityStates.
+var VALIDITY_STATE_PROPERTY = 'validity';
+
+/**
+ * @ngdoc function
+ * @name angular.lowercase
+ * @module ng
+ * @kind function
+ *
+ * @description Converts the specified string to lowercase.
+ * @param {string} string String to be converted to lowercase.
+ * @returns {string} Lowercased string.
+ */
+var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;};
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+/**
+ * @ngdoc function
+ * @name angular.uppercase
+ * @module ng
+ * @kind function
+ *
+ * @description Converts the specified string to uppercase.
+ * @param {string} string String to be converted to uppercase.
+ * @returns {string} Uppercased string.
+ */
+var uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;};
+
+
+var manualLowercase = function(s) {
+ /* jshint bitwise: false */
+ return isString(s)
+ ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})
+ : s;
+};
+var manualUppercase = function(s) {
+ /* jshint bitwise: false */
+ return isString(s)
+ ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
+ : s;
+};
+
+
+// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish
+// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods
+// with correct but slower alternatives.
+if ('i' !== 'I'.toLowerCase()) {
+ lowercase = manualLowercase;
+ uppercase = manualUppercase;
+}
+
+
+var
+ msie, // holds major version number for IE, or NaN if UA is not IE.
+ jqLite, // delay binding since jQuery could be loaded after us.
+ jQuery, // delay binding
+ slice = [].slice,
+ splice = [].splice,
+ push = [].push,
+ toString = Object.prototype.toString,
+ getPrototypeOf = Object.getPrototypeOf,
+ ngMinErr = minErr('ng'),
+
+ /** @name angular */
+ angular = window.angular || (window.angular = {}),
+ angularModule,
+ uid = 0;
+
+/**
+ * documentMode is an IE-only property
+ * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
+ */
+msie = document.documentMode;
+
+
+/**
+ * @private
+ * @param {*} obj
+ * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,
+ * String ...)
+ */
+function isArrayLike(obj) {
+ if (obj == null || isWindow(obj)) {
+ return false;
+ }
+
+ // Support: iOS 8.2 (not reproducible in simulator)
+ // "length" in obj used to prevent JIT error (gh-11508)
+ var length = "length" in Object(obj) && obj.length;
+
+ if (obj.nodeType === NODE_TYPE_ELEMENT && length) {
+ return true;
+ }
+
+ return isString(obj) || isArray(obj) || length === 0 ||
+ typeof length === 'number' && length > 0 && (length - 1) in obj;
+}
+
+/**
+ * @ngdoc function
+ * @name angular.forEach
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Invokes the `iterator` function once for each item in `obj` collection, which can be either an
+ * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`
+ * is the value of an object property or an array element, `key` is the object property key or
+ * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.
+ *
+ * It is worth noting that `.forEach` does not iterate over inherited properties because it filters
+ * using the `hasOwnProperty` method.
+ *
+ * Unlike ES262's
+ * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),
+ * Providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just
+ * return the value provided.
+ *
+ ```js
+ var values = {name: 'misko', gender: 'male'};
+ var log = [];
+ angular.forEach(values, function(value, key) {
+ this.push(key + ': ' + value);
+ }, log);
+ expect(log).toEqual(['name: misko', 'gender: male']);
+ ```
+ *
+ * @param {Object|Array} obj Object to iterate over.
+ * @param {Function} iterator Iterator function.
+ * @param {Object=} context Object to become context (`this`) for the iterator function.
+ * @returns {Object|Array} Reference to `obj`.
+ */
+
+function forEach(obj, iterator, context) {
+ var key, length;
+ if (obj) {
+ if (isFunction(obj)) {
+ for (key in obj) {
+ // Need to check if hasOwnProperty exists,
+ // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
+ if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ }
+ } else if (isArray(obj) || isArrayLike(obj)) {
+ var isPrimitive = typeof obj !== 'object';
+ for (key = 0, length = obj.length; key < length; key++) {
+ if (isPrimitive || key in obj) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ }
+ } else if (obj.forEach && obj.forEach !== forEach) {
+ obj.forEach(iterator, context, obj);
+ } else if (isBlankObject(obj)) {
+ // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
+ for (key in obj) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ } else if (typeof obj.hasOwnProperty === 'function') {
+ // Slow path for objects inheriting Object.prototype, hasOwnProperty check needed
+ for (key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ }
+ } else {
+ // Slow path for objects which do not have a method `hasOwnProperty`
+ for (key in obj) {
+ if (hasOwnProperty.call(obj, key)) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ }
+ }
+ }
+ return obj;
+}
+
+function forEachSorted(obj, iterator, context) {
+ var keys = Object.keys(obj).sort();
+ for (var i = 0; i < keys.length; i++) {
+ iterator.call(context, obj[keys[i]], keys[i]);
+ }
+ return keys;
+}
+
+
+/**
+ * when using forEach the params are value, key, but it is often useful to have key, value.
+ * @param {function(string, *)} iteratorFn
+ * @returns {function(*, string)}
+ */
+function reverseParams(iteratorFn) {
+ return function(value, key) { iteratorFn(key, value); };
+}
+
+/**
+ * A consistent way of creating unique IDs in angular.
+ *
+ * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before
+ * we hit number precision issues in JavaScript.
+ *
+ * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M
+ *
+ * @returns {number} an unique alpha-numeric string
+ */
+function nextUid() {
+ return ++uid;
+}
+
+
+/**
+ * Set or clear the hashkey for an object.
+ * @param obj object
+ * @param h the hashkey (!truthy to delete the hashkey)
+ */
+function setHashKey(obj, h) {
+ if (h) {
+ obj.$$hashKey = h;
+ } else {
+ delete obj.$$hashKey;
+ }
+}
+
+
+function baseExtend(dst, objs, deep) {
+ var h = dst.$$hashKey;
+
+ for (var i = 0, ii = objs.length; i < ii; ++i) {
+ var obj = objs[i];
+ if (!isObject(obj) && !isFunction(obj)) continue;
+ var keys = Object.keys(obj);
+ for (var j = 0, jj = keys.length; j < jj; j++) {
+ var key = keys[j];
+ var src = obj[key];
+
+ if (deep && isObject(src)) {
+ if (isDate(src)) {
+ dst[key] = new Date(src.valueOf());
+ } else if (isRegExp(src)) {
+ dst[key] = new RegExp(src);
+ } else {
+ if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};
+ baseExtend(dst[key], [src], true);
+ }
+ } else {
+ dst[key] = src;
+ }
+ }
+ }
+
+ setHashKey(dst, h);
+ return dst;
+}
+
+/**
+ * @ngdoc function
+ * @name angular.extend
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
+ * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
+ * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.
+ *
+ * **Note:** Keep in mind that `angular.extend` does not support recursive merge (deep copy). Use
+ * {@link angular.merge} for this.
+ *
+ * @param {Object} dst Destination object.
+ * @param {...Object} src Source object(s).
+ * @returns {Object} Reference to `dst`.
+ */
+function extend(dst) {
+ return baseExtend(dst, slice.call(arguments, 1), false);
+}
+
+
+/**
+* @ngdoc function
+* @name angular.merge
+* @module ng
+* @kind function
+*
+* @description
+* Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
+* to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
+* by passing an empty object as the target: `var object = angular.merge({}, object1, object2)`.
+*
+* Unlike {@link angular.extend extend()}, `merge()` recursively descends into object properties of source
+* objects, performing a deep copy.
+*
+* @param {Object} dst Destination object.
+* @param {...Object} src Source object(s).
+* @returns {Object} Reference to `dst`.
+*/
+function merge(dst) {
+ return baseExtend(dst, slice.call(arguments, 1), true);
+}
+
+
+
+function toInt(str) {
+ return parseInt(str, 10);
+}
+
+
+function inherit(parent, extra) {
+ return extend(Object.create(parent), extra);
+}
+
+/**
+ * @ngdoc function
+ * @name angular.noop
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * A function that performs no operations. This function can be useful when writing code in the
+ * functional style.
+ ```js
+ function foo(callback) {
+ var result = calculateResult();
+ (callback || angular.noop)(result);
+ }
+ ```
+ */
+function noop() {}
+noop.$inject = [];
+
+
+/**
+ * @ngdoc function
+ * @name angular.identity
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * A function that returns its first argument. This function is useful when writing code in the
+ * functional style.
+ *
+ ```js
+ function transformer(transformationFn, value) {
+ return (transformationFn || angular.identity)(value);
+ };
+ ```
+ * @param {*} value to be returned.
+ * @returns {*} the value passed in.
+ */
+function identity($) {return $;}
+identity.$inject = [];
+
+
+function valueFn(value) {return function() {return value;};}
+
+function hasCustomToString(obj) {
+ return isFunction(obj.toString) && obj.toString !== Object.prototype.toString;
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isUndefined
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is undefined.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is undefined.
+ */
+function isUndefined(value) {return typeof value === 'undefined';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isDefined
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is defined.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is defined.
+ */
+function isDefined(value) {return typeof value !== 'undefined';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isObject
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not
+ * considered to be objects. Note that JavaScript arrays are objects.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is an `Object` but not `null`.
+ */
+function isObject(value) {
+ // http://jsperf.com/isobject4
+ return value !== null && typeof value === 'object';
+}
+
+
+/**
+ * Determine if a value is an object with a null prototype
+ *
+ * @returns {boolean} True if `value` is an `Object` with a null prototype
+ */
+function isBlankObject(value) {
+ return value !== null && typeof value === 'object' && !getPrototypeOf(value);
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isString
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a `String`.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `String`.
+ */
+function isString(value) {return typeof value === 'string';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isNumber
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a `Number`.
+ *
+ * This includes the "special" numbers `NaN`, `+Infinity` and `-Infinity`.
+ *
+ * If you wish to exclude these then you can use the native
+ * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)
+ * method.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `Number`.
+ */
+function isNumber(value) {return typeof value === 'number';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isDate
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a value is a date.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `Date`.
+ */
+function isDate(value) {
+ return toString.call(value) === '[object Date]';
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isArray
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is an `Array`.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is an `Array`.
+ */
+var isArray = Array.isArray;
+
+/**
+ * @ngdoc function
+ * @name angular.isFunction
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a `Function`.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `Function`.
+ */
+function isFunction(value) {return typeof value === 'function';}
+
+
+/**
+ * Determines if a value is a regular expression object.
+ *
+ * @private
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `RegExp`.
+ */
+function isRegExp(value) {
+ return toString.call(value) === '[object RegExp]';
+}
+
+
+/**
+ * Checks if `obj` is a window object.
+ *
+ * @private
+ * @param {*} obj Object to check
+ * @returns {boolean} True if `obj` is a window obj.
+ */
+function isWindow(obj) {
+ return obj && obj.window === obj;
+}
+
+
+function isScope(obj) {
+ return obj && obj.$evalAsync && obj.$watch;
+}
+
+
+function isFile(obj) {
+ return toString.call(obj) === '[object File]';
+}
+
+
+function isFormData(obj) {
+ return toString.call(obj) === '[object FormData]';
+}
+
+
+function isBlob(obj) {
+ return toString.call(obj) === '[object Blob]';
+}
+
+
+function isBoolean(value) {
+ return typeof value === 'boolean';
+}
+
+
+function isPromiseLike(obj) {
+ return obj && isFunction(obj.then);
+}
+
+
+var TYPED_ARRAY_REGEXP = /^\[object (Uint8(Clamped)?)|(Uint16)|(Uint32)|(Int8)|(Int16)|(Int32)|(Float(32)|(64))Array\]$/;
+function isTypedArray(value) {
+ return TYPED_ARRAY_REGEXP.test(toString.call(value));
+}
+
+
+var trim = function(value) {
+ return isString(value) ? value.trim() : value;
+};
+
+// Copied from:
+// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021
+// Prereq: s is a string.
+var escapeForRegexp = function(s) {
+ return s.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').
+ replace(/\x08/g, '\\x08');
+};
+
+
+/**
+ * @ngdoc function
+ * @name angular.isElement
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a DOM element (or wrapped jQuery element).
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).
+ */
+function isElement(node) {
+ return !!(node &&
+ (node.nodeName // we are a direct element
+ || (node.prop && node.attr && node.find))); // we have an on and find method part of jQuery API
+}
+
+/**
+ * @param str 'key1,key2,...'
+ * @returns {object} in the form of {key1:true, key2:true, ...}
+ */
+function makeMap(str) {
+ var obj = {}, items = str.split(","), i;
+ for (i = 0; i < items.length; i++) {
+ obj[items[i]] = true;
+ }
+ return obj;
+}
+
+
+function nodeName_(element) {
+ return lowercase(element.nodeName || (element[0] && element[0].nodeName));
+}
+
+function includes(array, obj) {
+ return Array.prototype.indexOf.call(array, obj) != -1;
+}
+
+function arrayRemove(array, value) {
+ var index = array.indexOf(value);
+ if (index >= 0) {
+ array.splice(index, 1);
+ }
+ return index;
+}
+
+/**
+ * @ngdoc function
+ * @name angular.copy
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Creates a deep copy of `source`, which should be an object or an array.
+ *
+ * * If no destination is supplied, a copy of the object or array is created.
+ * * If a destination is provided, all of its elements (for arrays) or properties (for objects)
+ * are deleted and then all elements/properties from the source are copied to it.
+ * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.
+ * * If `source` is identical to 'destination' an exception will be thrown.
+ *
+ * @param {*} source The source that will be used to make a copy.
+ * Can be any type, including primitives, `null`, and `undefined`.
+ * @param {(Object|Array)=} destination Destination into which the source is copied. If
+ * provided, must be of the same type as `source`.
+ * @returns {*} The copy or updated `destination`, if `destination` was specified.
+ *
+ * @example
+ <example module="copyExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form novalidate class="simple-form">
+ Name: <input type="text" ng-model="user.name" /><br />
+ E-mail: <input type="email" ng-model="user.email" /><br />
+ Gender: <input type="radio" ng-model="user.gender" value="male" />male
+ <input type="radio" ng-model="user.gender" value="female" />female<br />
+ <button ng-click="reset()">RESET</button>
+ <button ng-click="update(user)">SAVE</button>
+ </form>
+ <pre>form = {{user | json}}</pre>
+ <pre>master = {{master | json}}</pre>
+ </div>
+
+ <script>
+ angular.module('copyExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.master= {};
+
+ $scope.update = function(user) {
+ // Example with 1 argument
+ $scope.master= angular.copy(user);
+ };
+
+ $scope.reset = function() {
+ // Example with 2 arguments
+ angular.copy($scope.master, $scope.user);
+ };
+
+ $scope.reset();
+ }]);
+ </script>
+ </file>
+ </example>
+ */
+function copy(source, destination, stackSource, stackDest) {
+ if (isWindow(source) || isScope(source)) {
+ throw ngMinErr('cpws',
+ "Can't copy! Making copies of Window or Scope instances is not supported.");
+ }
+ if (isTypedArray(destination)) {
+ throw ngMinErr('cpta',
+ "Can't copy! TypedArray destination cannot be mutated.");
+ }
+
+ if (!destination) {
+ destination = source;
+ if (isObject(source)) {
+ var index;
+ if (stackSource && (index = stackSource.indexOf(source)) !== -1) {
+ return stackDest[index];
+ }
+
+ // TypedArray, Date and RegExp have specific copy functionality and must be
+ // pushed onto the stack before returning.
+ // Array and other objects create the base object and recurse to copy child
+ // objects. The array/object will be pushed onto the stack when recursed.
+ if (isArray(source)) {
+ return copy(source, [], stackSource, stackDest);
+ } else if (isTypedArray(source)) {
+ destination = new source.constructor(source);
+ } else if (isDate(source)) {
+ destination = new Date(source.getTime());
+ } else if (isRegExp(source)) {
+ destination = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]);
+ destination.lastIndex = source.lastIndex;
+ } else {
+ var emptyObject = Object.create(getPrototypeOf(source));
+ return copy(source, emptyObject, stackSource, stackDest);
+ }
+
+ if (stackDest) {
+ stackSource.push(source);
+ stackDest.push(destination);
+ }
+ }
+ } else {
+ if (source === destination) throw ngMinErr('cpi',
+ "Can't copy! Source and destination are identical.");
+
+ stackSource = stackSource || [];
+ stackDest = stackDest || [];
+
+ if (isObject(source)) {
+ stackSource.push(source);
+ stackDest.push(destination);
+ }
+
+ var result, key;
+ if (isArray(source)) {
+ destination.length = 0;
+ for (var i = 0; i < source.length; i++) {
+ destination.push(copy(source[i], null, stackSource, stackDest));
+ }
+ } else {
+ var h = destination.$$hashKey;
+ if (isArray(destination)) {
+ destination.length = 0;
+ } else {
+ forEach(destination, function(value, key) {
+ delete destination[key];
+ });
+ }
+ if (isBlankObject(source)) {
+ // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
+ for (key in source) {
+ destination[key] = copy(source[key], null, stackSource, stackDest);
+ }
+ } else if (source && typeof source.hasOwnProperty === 'function') {
+ // Slow path, which must rely on hasOwnProperty
+ for (key in source) {
+ if (source.hasOwnProperty(key)) {
+ destination[key] = copy(source[key], null, stackSource, stackDest);
+ }
+ }
+ } else {
+ // Slowest path --- hasOwnProperty can't be called as a method
+ for (key in source) {
+ if (hasOwnProperty.call(source, key)) {
+ destination[key] = copy(source[key], null, stackSource, stackDest);
+ }
+ }
+ }
+ setHashKey(destination,h);
+ }
+ }
+ return destination;
+}
+
+/**
+ * Creates a shallow copy of an object, an array or a primitive.
+ *
+ * Assumes that there are no proto properties for objects.
+ */
+function shallowCopy(src, dst) {
+ if (isArray(src)) {
+ dst = dst || [];
+
+ for (var i = 0, ii = src.length; i < ii; i++) {
+ dst[i] = src[i];
+ }
+ } else if (isObject(src)) {
+ dst = dst || {};
+
+ for (var key in src) {
+ if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
+ dst[key] = src[key];
+ }
+ }
+ }
+
+ return dst || src;
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.equals
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if two objects or two values are equivalent. Supports value types, regular
+ * expressions, arrays and objects.
+ *
+ * Two objects or values are considered equivalent if at least one of the following is true:
+ *
+ * * Both objects or values pass `===` comparison.
+ * * Both objects or values are of the same type and all of their properties are equal by
+ * comparing them with `angular.equals`.
+ * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
+ * * Both values represent the same regular expression (In JavaScript,
+ * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
+ * representation matches).
+ *
+ * During a property comparison, properties of `function` type and properties with names
+ * that begin with `$` are ignored.
+ *
+ * Scope and DOMWindow objects are being compared only by identify (`===`).
+ *
+ * @param {*} o1 Object or value to compare.
+ * @param {*} o2 Object or value to compare.
+ * @returns {boolean} True if arguments are equal.
+ */
+function equals(o1, o2) {
+ if (o1 === o2) return true;
+ if (o1 === null || o2 === null) return false;
+ if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
+ var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
+ if (t1 == t2) {
+ if (t1 == 'object') {
+ if (isArray(o1)) {
+ if (!isArray(o2)) return false;
+ if ((length = o1.length) == o2.length) {
+ for (key = 0; key < length; key++) {
+ if (!equals(o1[key], o2[key])) return false;
+ }
+ return true;
+ }
+ } else if (isDate(o1)) {
+ if (!isDate(o2)) return false;
+ return equals(o1.getTime(), o2.getTime());
+ } else if (isRegExp(o1)) {
+ return isRegExp(o2) ? o1.toString() == o2.toString() : false;
+ } else {
+ if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) ||
+ isArray(o2) || isDate(o2) || isRegExp(o2)) return false;
+ keySet = createMap();
+ for (key in o1) {
+ if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
+ if (!equals(o1[key], o2[key])) return false;
+ keySet[key] = true;
+ }
+ for (key in o2) {
+ if (!(key in keySet) &&
+ key.charAt(0) !== '$' &&
+ o2[key] !== undefined &&
+ !isFunction(o2[key])) return false;
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+var csp = function() {
+ if (!isDefined(csp.rules)) {
+
+
+ var ngCspElement = (document.querySelector('[ng-csp]') ||
+ document.querySelector('[data-ng-csp]'));
+
+ if (ngCspElement) {
+ var ngCspAttribute = ngCspElement.getAttribute('ng-csp') ||
+ ngCspElement.getAttribute('data-ng-csp');
+ csp.rules = {
+ noUnsafeEval: !ngCspAttribute || (ngCspAttribute.indexOf('no-unsafe-eval') !== -1),
+ noInlineStyle: !ngCspAttribute || (ngCspAttribute.indexOf('no-inline-style') !== -1)
+ };
+ } else {
+ csp.rules = {
+ noUnsafeEval: noUnsafeEval(),
+ noInlineStyle: false
+ };
+ }
+ }
+
+ return csp.rules;
+
+ function noUnsafeEval() {
+ try {
+ /* jshint -W031, -W054 */
+ new Function('');
+ /* jshint +W031, +W054 */
+ return false;
+ } catch (e) {
+ return true;
+ }
+ }
+};
+
+/**
+ * @ngdoc directive
+ * @module ng
+ * @name ngJq
+ *
+ * @element ANY
+ * @param {string=} ngJq the name of the library available under `window`
+ * to be used for angular.element
+ * @description
+ * Use this directive to force the angular.element library. This should be
+ * used to force either jqLite by leaving ng-jq blank or setting the name of
+ * the jquery variable under window (eg. jQuery).
+ *
+ * Since angular looks for this directive when it is loaded (doesn't wait for the
+ * DOMContentLoaded event), it must be placed on an element that comes before the script
+ * which loads angular. Also, only the first instance of `ng-jq` will be used and all
+ * others ignored.
+ *
+ * @example
+ * This example shows how to force jqLite using the `ngJq` directive to the `html` tag.
+ ```html
+ <!doctype html>
+ <html ng-app ng-jq>
+ ...
+ ...
+ </html>
+ ```
+ * @example
+ * This example shows how to use a jQuery based library of a different name.
+ * The library name must be available at the top most 'window'.
+ ```html
+ <!doctype html>
+ <html ng-app ng-jq="jQueryLib">
+ ...
+ ...
+ </html>
+ ```
+ */
+var jq = function() {
+ if (isDefined(jq.name_)) return jq.name_;
+ var el;
+ var i, ii = ngAttrPrefixes.length, prefix, name;
+ for (i = 0; i < ii; ++i) {
+ prefix = ngAttrPrefixes[i];
+ if (el = document.querySelector('[' + prefix.replace(':', '\\:') + 'jq]')) {
+ name = el.getAttribute(prefix + 'jq');
+ break;
+ }
+ }
+
+ return (jq.name_ = name);
+};
+
+function concat(array1, array2, index) {
+ return array1.concat(slice.call(array2, index));
+}
+
+function sliceArgs(args, startIndex) {
+ return slice.call(args, startIndex || 0);
+}
+
+
+/* jshint -W101 */
+/**
+ * @ngdoc function
+ * @name angular.bind
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for
+ * `fn`). You can supply optional `args` that are prebound to the function. This feature is also
+ * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as
+ * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).
+ *
+ * @param {Object} self Context which `fn` should be evaluated in.
+ * @param {function()} fn Function to be bound.
+ * @param {...*} args Optional arguments to be prebound to the `fn` function call.
+ * @returns {function()} Function that wraps the `fn` with all the specified bindings.
+ */
+/* jshint +W101 */
+function bind(self, fn) {
+ var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
+ if (isFunction(fn) && !(fn instanceof RegExp)) {
+ return curryArgs.length
+ ? function() {
+ return arguments.length
+ ? fn.apply(self, concat(curryArgs, arguments, 0))
+ : fn.apply(self, curryArgs);
+ }
+ : function() {
+ return arguments.length
+ ? fn.apply(self, arguments)
+ : fn.call(self);
+ };
+ } else {
+ // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)
+ return fn;
+ }
+}
+
+
+function toJsonReplacer(key, value) {
+ var val = value;
+
+ if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
+ val = undefined;
+ } else if (isWindow(value)) {
+ val = '$WINDOW';
+ } else if (value && document === value) {
+ val = '$DOCUMENT';
+ } else if (isScope(value)) {
+ val = '$SCOPE';
+ }
+
+ return val;
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.toJson
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be
+ * stripped since angular uses this notation internally.
+ *
+ * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
+ * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace.
+ * If set to an integer, the JSON output will contain that many spaces per indentation.
+ * @returns {string|undefined} JSON-ified string representing `obj`.
+ */
+function toJson(obj, pretty) {
+ if (typeof obj === 'undefined') return undefined;
+ if (!isNumber(pretty)) {
+ pretty = pretty ? 2 : null;
+ }
+ return JSON.stringify(obj, toJsonReplacer, pretty);
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.fromJson
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Deserializes a JSON string.
+ *
+ * @param {string} json JSON string to deserialize.
+ * @returns {Object|Array|string|number} Deserialized JSON string.
+ */
+function fromJson(json) {
+ return isString(json)
+ ? JSON.parse(json)
+ : json;
+}
+
+
+function timezoneToOffset(timezone, fallback) {
+ var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;
+ return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;
+}
+
+
+function addDateMinutes(date, minutes) {
+ date = new Date(date.getTime());
+ date.setMinutes(date.getMinutes() + minutes);
+ return date;
+}
+
+
+function convertTimezoneToLocal(date, timezone, reverse) {
+ reverse = reverse ? -1 : 1;
+ var timezoneOffset = timezoneToOffset(timezone, date.getTimezoneOffset());
+ return addDateMinutes(date, reverse * (timezoneOffset - date.getTimezoneOffset()));
+}
+
+
+/**
+ * @returns {string} Returns the string representation of the element.
+ */
+function startingTag(element) {
+ element = jqLite(element).clone();
+ try {
+ // turns out IE does not let you set .html() on elements which
+ // are not allowed to have children. So we just ignore it.
+ element.empty();
+ } catch (e) {}
+ var elemHtml = jqLite('<div>').append(element).html();
+ try {
+ return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) :
+ elemHtml.
+ match(/^(<[^>]+>)/)[1].
+ replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });
+ } catch (e) {
+ return lowercase(elemHtml);
+ }
+
+}
+
+
+/////////////////////////////////////////////////
+
+/**
+ * Tries to decode the URI component without throwing an exception.
+ *
+ * @private
+ * @param str value potential URI component to check.
+ * @returns {boolean} True if `value` can be decoded
+ * with the decodeURIComponent function.
+ */
+function tryDecodeURIComponent(value) {
+ try {
+ return decodeURIComponent(value);
+ } catch (e) {
+ // Ignore any invalid uri component
+ }
+}
+
+
+/**
+ * Parses an escaped url query string into key-value pairs.
+ * @returns {Object.<string,boolean|Array>}
+ */
+function parseKeyValue(/**string*/keyValue) {
+ var obj = {};
+ forEach((keyValue || "").split('&'), function(keyValue) {
+ var splitPoint, key, val;
+ if (keyValue) {
+ key = keyValue = keyValue.replace(/\+/g,'%20');
+ splitPoint = keyValue.indexOf('=');
+ if (splitPoint !== -1) {
+ key = keyValue.substring(0, splitPoint);
+ val = keyValue.substring(splitPoint + 1);
+ }
+ key = tryDecodeURIComponent(key);
+ if (isDefined(key)) {
+ val = isDefined(val) ? tryDecodeURIComponent(val) : true;
+ if (!hasOwnProperty.call(obj, key)) {
+ obj[key] = val;
+ } else if (isArray(obj[key])) {
+ obj[key].push(val);
+ } else {
+ obj[key] = [obj[key],val];
+ }
+ }
+ }
+ });
+ return obj;
+}
+
+function toKeyValue(obj) {
+ var parts = [];
+ forEach(obj, function(value, key) {
+ if (isArray(value)) {
+ forEach(value, function(arrayValue) {
+ parts.push(encodeUriQuery(key, true) +
+ (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
+ });
+ } else {
+ parts.push(encodeUriQuery(key, true) +
+ (value === true ? '' : '=' + encodeUriQuery(value, true)));
+ }
+ });
+ return parts.length ? parts.join('&') : '';
+}
+
+
+/**
+ * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
+ * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path
+ * segments:
+ * segment = *pchar
+ * pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
+ * pct-encoded = "%" HEXDIG HEXDIG
+ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ * sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
+ * / "*" / "+" / "," / ";" / "="
+ */
+function encodeUriSegment(val) {
+ return encodeUriQuery(val, true).
+ replace(/%26/gi, '&').
+ replace(/%3D/gi, '=').
+ replace(/%2B/gi, '+');
+}
+
+
+/**
+ * This method is intended for encoding *key* or *value* parts of query component. We need a custom
+ * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be
+ * encoded per http://tools.ietf.org/html/rfc3986:
+ * query = *( pchar / "/" / "?" )
+ * pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
+ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ * pct-encoded = "%" HEXDIG HEXDIG
+ * sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
+ * / "*" / "+" / "," / ";" / "="
+ */
+function encodeUriQuery(val, pctEncodeSpaces) {
+ return encodeURIComponent(val).
+ replace(/%40/gi, '@').
+ replace(/%3A/gi, ':').
+ replace(/%24/g, '$').
+ replace(/%2C/gi, ',').
+ replace(/%3B/gi, ';').
+ replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
+}
+
+var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];
+
+function getNgAttribute(element, ngAttr) {
+ var attr, i, ii = ngAttrPrefixes.length;
+ for (i = 0; i < ii; ++i) {
+ attr = ngAttrPrefixes[i] + ngAttr;
+ if (isString(attr = element.getAttribute(attr))) {
+ return attr;
+ }
+ }
+ return null;
+}
+
+/**
+ * @ngdoc directive
+ * @name ngApp
+ * @module ng
+ *
+ * @element ANY
+ * @param {angular.Module} ngApp an optional application
+ * {@link angular.module module} name to load.
+ * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be
+ * created in "strict-di" mode. This means that the application will fail to invoke functions which
+ * do not use explicit function annotation (and are thus unsuitable for minification), as described
+ * in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in
+ * tracking down the root of these bugs.
+ *
+ * @description
+ *
+ * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive
+ * designates the **root element** of the application and is typically placed near the root element
+ * of the page - e.g. on the `<body>` or `<html>` tags.
+ *
+ * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`
+ * found in the document will be used to define the root element to auto-bootstrap as an
+ * application. To run multiple applications in an HTML document you must manually bootstrap them using
+ * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.
+ *
+ * You can specify an **AngularJS module** to be used as the root module for the application. This
+ * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It
+ * should contain the application code needed or have dependencies on other modules that will
+ * contain the code. See {@link angular.module} for more information.
+ *
+ * In the example below if the `ngApp` directive were not placed on the `html` element then the
+ * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`
+ * would not be resolved to `3`.
+ *
+ * `ngApp` is the easiest, and most common way to bootstrap an application.
+ *
+ <example module="ngAppDemo">
+ <file name="index.html">
+ <div ng-controller="ngAppDemoController">
+ I can add: {{a}} + {{b}} = {{ a+b }}
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
+ $scope.a = 1;
+ $scope.b = 2;
+ });
+ </file>
+ </example>
+ *
+ * Using `ngStrictDi`, you would see something like this:
+ *
+ <example ng-app-included="true">
+ <file name="index.html">
+ <div ng-app="ngAppStrictDemo" ng-strict-di>
+ <div ng-controller="GoodController1">
+ I can add: {{a}} + {{b}} = {{ a+b }}
+
+ <p>This renders because the controller does not fail to
+ instantiate, by using explicit annotation style (see
+ script.js for details)
+ </p>
+ </div>
+
+ <div ng-controller="GoodController2">
+ Name: <input ng-model="name"><br />
+ Hello, {{name}}!
+
+ <p>This renders because the controller does not fail to
+ instantiate, by using explicit annotation style
+ (see script.js for details)
+ </p>
+ </div>
+
+ <div ng-controller="BadController">
+ I can add: {{a}} + {{b}} = {{ a+b }}
+
+ <p>The controller could not be instantiated, due to relying
+ on automatic function annotations (which are disabled in
+ strict mode). As such, the content of this section is not
+ interpolated, and there should be an error in your web console.
+ </p>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('ngAppStrictDemo', [])
+ // BadController will fail to instantiate, due to relying on automatic function annotation,
+ // rather than an explicit annotation
+ .controller('BadController', function($scope) {
+ $scope.a = 1;
+ $scope.b = 2;
+ })
+ // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,
+ // due to using explicit annotations using the array style and $inject property, respectively.
+ .controller('GoodController1', ['$scope', function($scope) {
+ $scope.a = 1;
+ $scope.b = 2;
+ }])
+ .controller('GoodController2', GoodController2);
+ function GoodController2($scope) {
+ $scope.name = "World";
+ }
+ GoodController2.$inject = ['$scope'];
+ </file>
+ <file name="style.css">
+ div[ng-controller] {
+ margin-bottom: 1em;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ border: 1px solid;
+ padding: .5em;
+ }
+ div[ng-controller^=Good] {
+ border-color: #d6e9c6;
+ background-color: #dff0d8;
+ color: #3c763d;
+ }
+ div[ng-controller^=Bad] {
+ border-color: #ebccd1;
+ background-color: #f2dede;
+ color: #a94442;
+ margin-bottom: 0;
+ }
+ </file>
+ </example>
+ */
+function angularInit(element, bootstrap) {
+ var appElement,
+ module,
+ config = {};
+
+ // The element `element` has priority over any other element
+ forEach(ngAttrPrefixes, function(prefix) {
+ var name = prefix + 'app';
+
+ if (!appElement && element.hasAttribute && element.hasAttribute(name)) {
+ appElement = element;
+ module = element.getAttribute(name);
+ }
+ });
+ forEach(ngAttrPrefixes, function(prefix) {
+ var name = prefix + 'app';
+ var candidate;
+
+ if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\:') + ']'))) {
+ appElement = candidate;
+ module = candidate.getAttribute(name);
+ }
+ });
+ if (appElement) {
+ config.strictDi = getNgAttribute(appElement, "strict-di") !== null;
+ bootstrap(appElement, module ? [module] : [], config);
+ }
+}
+
+/**
+ * @ngdoc function
+ * @name angular.bootstrap
+ * @module ng
+ * @description
+ * Use this function to manually start up angular application.
+ *
+ * See: {@link guide/bootstrap Bootstrap}
+ *
+ * Note that Protractor based end-to-end tests cannot use this function to bootstrap manually.
+ * They must use {@link ng.directive:ngApp ngApp}.
+ *
+ * Angular will detect if it has been loaded into the browser more than once and only allow the
+ * first loaded script to be bootstrapped and will report a warning to the browser console for
+ * each of the subsequent scripts. This prevents strange results in applications, where otherwise
+ * multiple instances of Angular try to work on the DOM.
+ *
+ * ```html
+ * <!doctype html>
+ * <html>
+ * <body>
+ * <div ng-controller="WelcomeController">
+ * {{greeting}}
+ * </div>
+ *
+ * <script src="angular.js"></script>
+ * <script>
+ * var app = angular.module('demo', [])
+ * .controller('WelcomeController', function($scope) {
+ * $scope.greeting = 'Welcome!';
+ * });
+ * angular.bootstrap(document, ['demo']);
+ * </script>
+ * </body>
+ * </html>
+ * ```
+ *
+ * @param {DOMElement} element DOM element which is the root of angular application.
+ * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
+ * Each item in the array should be the name of a predefined module or a (DI annotated)
+ * function that will be invoked by the injector as a `config` block.
+ * See: {@link angular.module modules}
+ * @param {Object=} config an object for defining configuration options for the application. The
+ * following keys are supported:
+ *
+ * * `strictDi` - disable automatic function annotation for the application. This is meant to
+ * assist in finding bugs which break minified code. Defaults to `false`.
+ *
+ * @returns {auto.$injector} Returns the newly created injector for this app.
+ */
+function bootstrap(element, modules, config) {
+ if (!isObject(config)) config = {};
+ var defaultConfig = {
+ strictDi: false
+ };
+ config = extend(defaultConfig, config);
+ var doBootstrap = function() {
+ element = jqLite(element);
+
+ if (element.injector()) {
+ var tag = (element[0] === document) ? 'document' : startingTag(element);
+ //Encode angle brackets to prevent input from being sanitized to empty string #8683
+ throw ngMinErr(
+ 'btstrpd',
+ "App Already Bootstrapped with this Element '{0}'",
+ tag.replace(/</,'<').replace(/>/,'>'));
+ }
+
+ modules = modules || [];
+ modules.unshift(['$provide', function($provide) {
+ $provide.value('$rootElement', element);
+ }]);
+
+ if (config.debugInfoEnabled) {
+ // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.
+ modules.push(['$compileProvider', function($compileProvider) {
+ $compileProvider.debugInfoEnabled(true);
+ }]);
+ }
+
+ modules.unshift('ng');
+ var injector = createInjector(modules, config.strictDi);
+ injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',
+ function bootstrapApply(scope, element, compile, injector) {
+ scope.$apply(function() {
+ element.data('$injector', injector);
+ compile(element)(scope);
+ });
+ }]
+ );
+ return injector;
+ };
+
+ var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;
+ var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
+
+ if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {
+ config.debugInfoEnabled = true;
+ window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, '');
+ }
+
+ if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
+ return doBootstrap();
+ }
+
+ window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
+ angular.resumeBootstrap = function(extraModules) {
+ forEach(extraModules, function(module) {
+ modules.push(module);
+ });
+ return doBootstrap();
+ };
+
+ if (isFunction(angular.resumeDeferredBootstrap)) {
+ angular.resumeDeferredBootstrap();
+ }
+}
+
+/**
+ * @ngdoc function
+ * @name angular.reloadWithDebugInfo
+ * @module ng
+ * @description
+ * Use this function to reload the current application with debug information turned on.
+ * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.
+ *
+ * See {@link ng.$compileProvider#debugInfoEnabled} for more.
+ */
+function reloadWithDebugInfo() {
+ window.name = 'NG_ENABLE_DEBUG_INFO!' + window.name;
+ window.location.reload();
+}
+
+/**
+ * @name angular.getTestability
+ * @module ng
+ * @description
+ * Get the testability service for the instance of Angular on the given
+ * element.
+ * @param {DOMElement} element DOM element which is the root of angular application.
+ */
+function getTestability(rootElement) {
+ var injector = angular.element(rootElement).injector();
+ if (!injector) {
+ throw ngMinErr('test',
+ 'no injector found for element argument to getTestability');
+ }
+ return injector.get('$$testability');
+}
+
+var SNAKE_CASE_REGEXP = /[A-Z]/g;
+function snake_case(name, separator) {
+ separator = separator || '_';
+ return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
+ return (pos ? separator : '') + letter.toLowerCase();
+ });
+}
+
+var bindJQueryFired = false;
+var skipDestroyOnNextJQueryCleanData;
+function bindJQuery() {
+ var originalCleanData;
+
+ if (bindJQueryFired) {
+ return;
+ }
+
+ // bind to jQuery if present;
+ var jqName = jq();
+ jQuery = window.jQuery; // use default jQuery.
+ if (isDefined(jqName)) { // `ngJq` present
+ jQuery = jqName === null ? undefined : window[jqName]; // if empty; use jqLite. if not empty, use jQuery specified by `ngJq`.
+ }
+
+ // Use jQuery if it exists with proper functionality, otherwise default to us.
+ // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.
+ // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older
+ // versions. It will not work for sure with jQuery <1.7, though.
+ if (jQuery && jQuery.fn.on) {
+ jqLite = jQuery;
+ extend(jQuery.fn, {
+ scope: JQLitePrototype.scope,
+ isolateScope: JQLitePrototype.isolateScope,
+ controller: JQLitePrototype.controller,
+ injector: JQLitePrototype.injector,
+ inheritedData: JQLitePrototype.inheritedData
+ });
+
+ // All nodes removed from the DOM via various jQuery APIs like .remove()
+ // are passed through jQuery.cleanData. Monkey-patch this method to fire
+ // the $destroy event on all removed nodes.
+ originalCleanData = jQuery.cleanData;
+ jQuery.cleanData = function(elems) {
+ var events;
+ if (!skipDestroyOnNextJQueryCleanData) {
+ for (var i = 0, elem; (elem = elems[i]) != null; i++) {
+ events = jQuery._data(elem, "events");
+ if (events && events.$destroy) {
+ jQuery(elem).triggerHandler('$destroy');
+ }
+ }
+ } else {
+ skipDestroyOnNextJQueryCleanData = false;
+ }
+ originalCleanData(elems);
+ };
+ } else {
+ jqLite = JQLite;
+ }
+
+ angular.element = jqLite;
+
+ // Prevent double-proxying.
+ bindJQueryFired = true;
+}
+
+/**
+ * throw error if the argument is falsy.
+ */
+function assertArg(arg, name, reason) {
+ if (!arg) {
+ throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
+ }
+ return arg;
+}
+
+function assertArgFn(arg, name, acceptArrayAnnotation) {
+ if (acceptArrayAnnotation && isArray(arg)) {
+ arg = arg[arg.length - 1];
+ }
+
+ assertArg(isFunction(arg), name, 'not a function, got ' +
+ (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));
+ return arg;
+}
+
+/**
+ * throw error if the name given is hasOwnProperty
+ * @param {String} name the name to test
+ * @param {String} context the context in which the name is used, such as module or directive
+ */
+function assertNotHasOwnProperty(name, context) {
+ if (name === 'hasOwnProperty') {
+ throw ngMinErr('badname', "hasOwnProperty is not a valid {0} name", context);
+ }
+}
+
+/**
+ * Return the value accessible from the object by path. Any undefined traversals are ignored
+ * @param {Object} obj starting object
+ * @param {String} path path to traverse
+ * @param {boolean} [bindFnToScope=true]
+ * @returns {Object} value as accessible by path
+ */
+//TODO(misko): this function needs to be removed
+function getter(obj, path, bindFnToScope) {
+ if (!path) return obj;
+ var keys = path.split('.');
+ var key;
+ var lastInstance = obj;
+ var len = keys.length;
+
+ for (var i = 0; i < len; i++) {
+ key = keys[i];
+ if (obj) {
+ obj = (lastInstance = obj)[key];
+ }
+ }
+ if (!bindFnToScope && isFunction(obj)) {
+ return bind(lastInstance, obj);
+ }
+ return obj;
+}
+
+/**
+ * Return the DOM siblings between the first and last node in the given array.
+ * @param {Array} array like object
+ * @returns {jqLite} jqLite collection containing the nodes
+ */
+function getBlockNodes(nodes) {
+ // TODO(perf): just check if all items in `nodes` are siblings and if they are return the original
+ // collection, otherwise update the original collection.
+ var node = nodes[0];
+ var endNode = nodes[nodes.length - 1];
+ var blockNodes = [node];
+
+ do {
+ node = node.nextSibling;
+ if (!node) break;
+ blockNodes.push(node);
+ } while (node !== endNode);
+
+ return jqLite(blockNodes);
+}
+
+
+/**
+ * Creates a new object without a prototype. This object is useful for lookup without having to
+ * guard against prototypically inherited properties via hasOwnProperty.
+ *
+ * Related micro-benchmarks:
+ * - http://jsperf.com/object-create2
+ * - http://jsperf.com/proto-map-lookup/2
+ * - http://jsperf.com/for-in-vs-object-keys2
+ *
+ * @returns {Object}
+ */
+function createMap() {
+ return Object.create(null);
+}
+
+var NODE_TYPE_ELEMENT = 1;
+var NODE_TYPE_ATTRIBUTE = 2;
+var NODE_TYPE_TEXT = 3;
+var NODE_TYPE_COMMENT = 8;
+var NODE_TYPE_DOCUMENT = 9;
+var NODE_TYPE_DOCUMENT_FRAGMENT = 11;
+
+/**
+ * @ngdoc type
+ * @name angular.Module
+ * @module ng
+ * @description
+ *
+ * Interface for configuring angular {@link angular.module modules}.
+ */
+
+function setupModuleLoader(window) {
+
+ var $injectorMinErr = minErr('$injector');
+ var ngMinErr = minErr('ng');
+
+ function ensure(obj, name, factory) {
+ return obj[name] || (obj[name] = factory());
+ }
+
+ var angular = ensure(window, 'angular', Object);
+
+ // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
+ angular.$$minErr = angular.$$minErr || minErr;
+
+ return ensure(angular, 'module', function() {
+ /** @type {Object.<string, angular.Module>} */
+ var modules = {};
+
+ /**
+ * @ngdoc function
+ * @name angular.module
+ * @module ng
+ * @description
+ *
+ * The `angular.module` is a global place for creating, registering and retrieving Angular
+ * modules.
+ * All modules (angular core or 3rd party) that should be available to an application must be
+ * registered using this mechanism.
+ *
+ * Passing one argument retrieves an existing {@link angular.Module},
+ * whereas passing more than one argument creates a new {@link angular.Module}
+ *
+ *
+ * # Module
+ *
+ * A module is a collection of services, directives, controllers, filters, and configuration information.
+ * `angular.module` is used to configure the {@link auto.$injector $injector}.
+ *
+ * ```js
+ * // Create a new module
+ * var myModule = angular.module('myModule', []);
+ *
+ * // register a new service
+ * myModule.value('appName', 'MyCoolApp');
+ *
+ * // configure existing services inside initialization blocks.
+ * myModule.config(['$locationProvider', function($locationProvider) {
+ * // Configure existing providers
+ * $locationProvider.hashPrefix('!');
+ * }]);
+ * ```
+ *
+ * Then you can create an injector and load your modules like this:
+ *
+ * ```js
+ * var injector = angular.injector(['ng', 'myModule'])
+ * ```
+ *
+ * However it's more likely that you'll just use
+ * {@link ng.directive:ngApp ngApp} or
+ * {@link angular.bootstrap} to simplify this process for you.
+ *
+ * @param {!string} name The name of the module to create or retrieve.
+ * @param {!Array.<string>=} requires If specified then new module is being created. If
+ * unspecified then the module is being retrieved for further configuration.
+ * @param {Function=} configFn Optional configuration function for the module. Same as
+ * {@link angular.Module#config Module#config()}.
+ * @returns {module} new module with the {@link angular.Module} api.
+ */
+ return function module(name, requires, configFn) {
+ var assertNotHasOwnProperty = function(name, context) {
+ if (name === 'hasOwnProperty') {
+ throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
+ }
+ };
+
+ assertNotHasOwnProperty(name, 'module');
+ if (requires && modules.hasOwnProperty(name)) {
+ modules[name] = null;
+ }
+ return ensure(modules, name, function() {
+ if (!requires) {
+ throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
+ "the module name or forgot to load it. If registering a module ensure that you " +
+ "specify the dependencies as the second argument.", name);
+ }
+
+ /** @type {!Array.<Array.<*>>} */
+ var invokeQueue = [];
+
+ /** @type {!Array.<Function>} */
+ var configBlocks = [];
+
+ /** @type {!Array.<Function>} */
+ var runBlocks = [];
+
+ var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
+
+ /** @type {angular.Module} */
+ var moduleInstance = {
+ // Private state
+ _invokeQueue: invokeQueue,
+ _configBlocks: configBlocks,
+ _runBlocks: runBlocks,
+
+ /**
+ * @ngdoc property
+ * @name angular.Module#requires
+ * @module ng
+ *
+ * @description
+ * Holds the list of modules which the injector will load before the current module is
+ * loaded.
+ */
+ requires: requires,
+
+ /**
+ * @ngdoc property
+ * @name angular.Module#name
+ * @module ng
+ *
+ * @description
+ * Name of the module.
+ */
+ name: name,
+
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#provider
+ * @module ng
+ * @param {string} name service name
+ * @param {Function} providerType Construction function for creating new instance of the
+ * service.
+ * @description
+ * See {@link auto.$provide#provider $provide.provider()}.
+ */
+ provider: invokeLaterAndSetModuleName('$provide', 'provider'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#factory
+ * @module ng
+ * @param {string} name service name
+ * @param {Function} providerFunction Function for creating new instance of the service.
+ * @description
+ * See {@link auto.$provide#factory $provide.factory()}.
+ */
+ factory: invokeLaterAndSetModuleName('$provide', 'factory'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#service
+ * @module ng
+ * @param {string} name service name
+ * @param {Function} constructor A constructor function that will be instantiated.
+ * @description
+ * See {@link auto.$provide#service $provide.service()}.
+ */
+ service: invokeLaterAndSetModuleName('$provide', 'service'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#value
+ * @module ng
+ * @param {string} name service name
+ * @param {*} object Service instance object.
+ * @description
+ * See {@link auto.$provide#value $provide.value()}.
+ */
+ value: invokeLater('$provide', 'value'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#constant
+ * @module ng
+ * @param {string} name constant name
+ * @param {*} object Constant value.
+ * @description
+ * Because the constant are fixed, they get applied before other provide methods.
+ * See {@link auto.$provide#constant $provide.constant()}.
+ */
+ constant: invokeLater('$provide', 'constant', 'unshift'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#decorator
+ * @module ng
+ * @param {string} The name of the service to decorate.
+ * @param {Function} This function will be invoked when the service needs to be
+ * instantiated and should return the decorated service instance.
+ * @description
+ * See {@link auto.$provide#decorator $provide.decorator()}.
+ */
+ decorator: invokeLaterAndSetModuleName('$provide', 'decorator'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#animation
+ * @module ng
+ * @param {string} name animation name
+ * @param {Function} animationFactory Factory function for creating new instance of an
+ * animation.
+ * @description
+ *
+ * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
+ *
+ *
+ * Defines an animation hook that can be later used with
+ * {@link $animate $animate} service and directives that use this service.
+ *
+ * ```js
+ * module.animation('.animation-name', function($inject1, $inject2) {
+ * return {
+ * eventName : function(element, done) {
+ * //code to run the animation
+ * //once complete, then run done()
+ * return function cancellationFunction(element) {
+ * //code to cancel the animation
+ * }
+ * }
+ * }
+ * })
+ * ```
+ *
+ * See {@link ng.$animateProvider#register $animateProvider.register()} and
+ * {@link ngAnimate ngAnimate module} for more information.
+ */
+ animation: invokeLaterAndSetModuleName('$animateProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#filter
+ * @module ng
+ * @param {string} name Filter name - this must be a valid angular expression identifier
+ * @param {Function} filterFactory Factory function for creating new instance of filter.
+ * @description
+ * See {@link ng.$filterProvider#register $filterProvider.register()}.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
+ * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
+ * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
+ * (`myapp_subsection_filterx`).
+ * </div>
+ */
+ filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#controller
+ * @module ng
+ * @param {string|Object} name Controller name, or an object map of controllers where the
+ * keys are the names and the values are the constructors.
+ * @param {Function} constructor Controller constructor function.
+ * @description
+ * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
+ */
+ controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#directive
+ * @module ng
+ * @param {string|Object} name Directive name, or an object map of directives where the
+ * keys are the names and the values are the factories.
+ * @param {Function} directiveFactory Factory function for creating new instance of
+ * directives.
+ * @description
+ * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
+ */
+ directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#config
+ * @module ng
+ * @param {Function} configFn Execute this function on module load. Useful for service
+ * configuration.
+ * @description
+ * Use this method to register work which needs to be performed on module loading.
+ * For more about how to configure services, see
+ * {@link providers#provider-recipe Provider Recipe}.
+ */
+ config: config,
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#run
+ * @module ng
+ * @param {Function} initializationFn Execute this function after injector creation.
+ * Useful for application initialization.
+ * @description
+ * Use this method to register work which should be performed when the injector is done
+ * loading all modules.
+ */
+ run: function(block) {
+ runBlocks.push(block);
+ return this;
+ }
+ };
+
+ if (configFn) {
+ config(configFn);
+ }
+
+ return moduleInstance;
+
+ /**
+ * @param {string} provider
+ * @param {string} method
+ * @param {String=} insertMethod
+ * @returns {angular.Module}
+ */
+ function invokeLater(provider, method, insertMethod, queue) {
+ if (!queue) queue = invokeQueue;
+ return function() {
+ queue[insertMethod || 'push']([provider, method, arguments]);
+ return moduleInstance;
+ };
+ }
+
+ /**
+ * @param {string} provider
+ * @param {string} method
+ * @returns {angular.Module}
+ */
+ function invokeLaterAndSetModuleName(provider, method) {
+ return function(recipeName, factoryFunction) {
+ if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;
+ invokeQueue.push([provider, method, arguments]);
+ return moduleInstance;
+ };
+ }
+ });
+ };
+ });
+
+}
+
+/* global: toDebugString: true */
+
+function serializeObject(obj) {
+ var seen = [];
+
+ return JSON.stringify(obj, function(key, val) {
+ val = toJsonReplacer(key, val);
+ if (isObject(val)) {
+
+ if (seen.indexOf(val) >= 0) return '<<already seen>>';
+
+ seen.push(val);
+ }
+ return val;
+ });
+}
+
+function toDebugString(obj) {
+ if (typeof obj === 'function') {
+ return obj.toString().replace(/ \{[\s\S]*$/, '');
+ } else if (typeof obj === 'undefined') {
+ return 'undefined';
+ } else if (typeof obj !== 'string') {
+ return serializeObject(obj);
+ }
+ return obj;
+}
+
+/* global angularModule: true,
+ version: true,
+
+ $CompileProvider,
+
+ htmlAnchorDirective,
+ inputDirective,
+ inputDirective,
+ formDirective,
+ scriptDirective,
+ selectDirective,
+ styleDirective,
+ optionDirective,
+ ngBindDirective,
+ ngBindHtmlDirective,
+ ngBindTemplateDirective,
+ ngClassDirective,
+ ngClassEvenDirective,
+ ngClassOddDirective,
+ ngCloakDirective,
+ ngControllerDirective,
+ ngFormDirective,
+ ngHideDirective,
+ ngIfDirective,
+ ngIncludeDirective,
+ ngIncludeFillContentDirective,
+ ngInitDirective,
+ ngNonBindableDirective,
+ ngPluralizeDirective,
+ ngRepeatDirective,
+ ngShowDirective,
+ ngStyleDirective,
+ ngSwitchDirective,
+ ngSwitchWhenDirective,
+ ngSwitchDefaultDirective,
+ ngOptionsDirective,
+ ngTranscludeDirective,
+ ngModelDirective,
+ ngListDirective,
+ ngChangeDirective,
+ patternDirective,
+ patternDirective,
+ requiredDirective,
+ requiredDirective,
+ minlengthDirective,
+ minlengthDirective,
+ maxlengthDirective,
+ maxlengthDirective,
+ ngValueDirective,
+ ngModelOptionsDirective,
+ ngAttributeAliasDirectives,
+ ngEventDirectives,
+
+ $AnchorScrollProvider,
+ $AnimateProvider,
+ $CoreAnimateCssProvider,
+ $$CoreAnimateQueueProvider,
+ $$CoreAnimateRunnerProvider,
+ $BrowserProvider,
+ $CacheFactoryProvider,
+ $ControllerProvider,
+ $DocumentProvider,
+ $ExceptionHandlerProvider,
+ $FilterProvider,
+ $$ForceReflowProvider,
+ $InterpolateProvider,
+ $IntervalProvider,
+ $$HashMapProvider,
+ $HttpProvider,
+ $HttpParamSerializerProvider,
+ $HttpParamSerializerJQLikeProvider,
+ $HttpBackendProvider,
+ $LocationProvider,
+ $LogProvider,
+ $ParseProvider,
+ $RootScopeProvider,
+ $QProvider,
+ $$QProvider,
+ $$SanitizeUriProvider,
+ $SceProvider,
+ $SceDelegateProvider,
+ $SnifferProvider,
+ $TemplateCacheProvider,
+ $TemplateRequestProvider,
+ $$TestabilityProvider,
+ $TimeoutProvider,
+ $$RAFProvider,
+ $WindowProvider,
+ $$jqLiteProvider,
+ $$CookieReaderProvider
+*/
+
+
+/**
+ * @ngdoc object
+ * @name angular.version
+ * @module ng
+ * @description
+ * An object that contains information about the current AngularJS version. This object has the
+ * following properties:
+ *
+ * - `full` – `{string}` – Full version string, such as "0.9.18".
+ * - `major` – `{number}` – Major version number, such as "0".
+ * - `minor` – `{number}` – Minor version number, such as "9".
+ * - `dot` – `{number}` – Dot version number, such as "18".
+ * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
+ */
+var version = {
+ full: '1.4.4', // all of these placeholder strings will be replaced by grunt's
+ major: 1, // package task
+ minor: 4,
+ dot: 4,
+ codeName: 'pylon-requirement'
+};
+
+
+function publishExternalAPI(angular) {
+ extend(angular, {
+ 'bootstrap': bootstrap,
+ 'copy': copy,
+ 'extend': extend,
+ 'merge': merge,
+ 'equals': equals,
+ 'element': jqLite,
+ 'forEach': forEach,
+ 'injector': createInjector,
+ 'noop': noop,
+ 'bind': bind,
+ 'toJson': toJson,
+ 'fromJson': fromJson,
+ 'identity': identity,
+ 'isUndefined': isUndefined,
+ 'isDefined': isDefined,
+ 'isString': isString,
+ 'isFunction': isFunction,
+ 'isObject': isObject,
+ 'isNumber': isNumber,
+ 'isElement': isElement,
+ 'isArray': isArray,
+ 'version': version,
+ 'isDate': isDate,
+ 'lowercase': lowercase,
+ 'uppercase': uppercase,
+ 'callbacks': {counter: 0},
+ 'getTestability': getTestability,
+ '$$minErr': minErr,
+ '$$csp': csp,
+ 'reloadWithDebugInfo': reloadWithDebugInfo
+ });
+
+ angularModule = setupModuleLoader(window);
+
+ angularModule('ng', ['ngLocale'], ['$provide',
+ function ngModule($provide) {
+ // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.
+ $provide.provider({
+ $$sanitizeUri: $$SanitizeUriProvider
+ });
+ $provide.provider('$compile', $CompileProvider).
+ directive({
+ a: htmlAnchorDirective,
+ input: inputDirective,
+ textarea: inputDirective,
+ form: formDirective,
+ script: scriptDirective,
+ select: selectDirective,
+ style: styleDirective,
+ option: optionDirective,
+ ngBind: ngBindDirective,
+ ngBindHtml: ngBindHtmlDirective,
+ ngBindTemplate: ngBindTemplateDirective,
+ ngClass: ngClassDirective,
+ ngClassEven: ngClassEvenDirective,
+ ngClassOdd: ngClassOddDirective,
+ ngCloak: ngCloakDirective,
+ ngController: ngControllerDirective,
+ ngForm: ngFormDirective,
+ ngHide: ngHideDirective,
+ ngIf: ngIfDirective,
+ ngInclude: ngIncludeDirective,
+ ngInit: ngInitDirective,
+ ngNonBindable: ngNonBindableDirective,
+ ngPluralize: ngPluralizeDirective,
+ ngRepeat: ngRepeatDirective,
+ ngShow: ngShowDirective,
+ ngStyle: ngStyleDirective,
+ ngSwitch: ngSwitchDirective,
+ ngSwitchWhen: ngSwitchWhenDirective,
+ ngSwitchDefault: ngSwitchDefaultDirective,
+ ngOptions: ngOptionsDirective,
+ ngTransclude: ngTranscludeDirective,
+ ngModel: ngModelDirective,
+ ngList: ngListDirective,
+ ngChange: ngChangeDirective,
+ pattern: patternDirective,
+ ngPattern: patternDirective,
+ required: requiredDirective,
+ ngRequired: requiredDirective,
+ minlength: minlengthDirective,
+ ngMinlength: minlengthDirective,
+ maxlength: maxlengthDirective,
+ ngMaxlength: maxlengthDirective,
+ ngValue: ngValueDirective,
+ ngModelOptions: ngModelOptionsDirective
+ }).
+ directive({
+ ngInclude: ngIncludeFillContentDirective
+ }).
+ directive(ngAttributeAliasDirectives).
+ directive(ngEventDirectives);
+ $provide.provider({
+ $anchorScroll: $AnchorScrollProvider,
+ $animate: $AnimateProvider,
+ $animateCss: $CoreAnimateCssProvider,
+ $$animateQueue: $$CoreAnimateQueueProvider,
+ $$AnimateRunner: $$CoreAnimateRunnerProvider,
+ $browser: $BrowserProvider,
+ $cacheFactory: $CacheFactoryProvider,
+ $controller: $ControllerProvider,
+ $document: $DocumentProvider,
+ $exceptionHandler: $ExceptionHandlerProvider,
+ $filter: $FilterProvider,
+ $$forceReflow: $$ForceReflowProvider,
+ $interpolate: $InterpolateProvider,
+ $interval: $IntervalProvider,
+ $http: $HttpProvider,
+ $httpParamSerializer: $HttpParamSerializerProvider,
+ $httpParamSerializerJQLike: $HttpParamSerializerJQLikeProvider,
+ $httpBackend: $HttpBackendProvider,
+ $location: $LocationProvider,
+ $log: $LogProvider,
+ $parse: $ParseProvider,
+ $rootScope: $RootScopeProvider,
+ $q: $QProvider,
+ $$q: $$QProvider,
+ $sce: $SceProvider,
+ $sceDelegate: $SceDelegateProvider,
+ $sniffer: $SnifferProvider,
+ $templateCache: $TemplateCacheProvider,
+ $templateRequest: $TemplateRequestProvider,
+ $$testability: $$TestabilityProvider,
+ $timeout: $TimeoutProvider,
+ $window: $WindowProvider,
+ $$rAF: $$RAFProvider,
+ $$jqLite: $$jqLiteProvider,
+ $$HashMap: $$HashMapProvider,
+ $$cookieReader: $$CookieReaderProvider
+ });
+ }
+ ]);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Any commits to this file should be reviewed with security in mind. *
+ * Changes to this file can potentially create security vulnerabilities. *
+ * An approval from 2 Core members with history of modifying *
+ * this file is required. *
+ * *
+ * Does the change somehow allow for arbitrary javascript to be executed? *
+ * Or allows for someone to change the prototype of built-in objects? *
+ * Or gives undesired access to variables likes document or window? *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* global JQLitePrototype: true,
+ addEventListenerFn: true,
+ removeEventListenerFn: true,
+ BOOLEAN_ATTR: true,
+ ALIASED_ATTR: true,
+*/
+
+//////////////////////////////////
+//JQLite
+//////////////////////////////////
+
+/**
+ * @ngdoc function
+ * @name angular.element
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.
+ *
+ * If jQuery is available, `angular.element` is an alias for the
+ * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`
+ * delegates to Angular's built-in subset of jQuery, called "jQuery lite" or "jqLite."
+ *
+ * <div class="alert alert-success">jqLite is a tiny, API-compatible subset of jQuery that allows
+ * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most
+ * commonly needed functionality with the goal of having a very small footprint.</div>
+ *
+ * To use `jQuery`, simply ensure it is loaded before the `angular.js` file.
+ *
+ * <div class="alert">**Note:** all element references in Angular are always wrapped with jQuery or
+ * jqLite; they are never raw DOM references.</div>
+ *
+ * ## Angular's jqLite
+ * jqLite provides only the following jQuery methods:
+ *
+ * - [`addClass()`](http://api.jquery.com/addClass/)
+ * - [`after()`](http://api.jquery.com/after/)
+ * - [`append()`](http://api.jquery.com/append/)
+ * - [`attr()`](http://api.jquery.com/attr/) - Does not support functions as parameters
+ * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
+ * - [`children()`](http://api.jquery.com/children/) - Does not support selectors
+ * - [`clone()`](http://api.jquery.com/clone/)
+ * - [`contents()`](http://api.jquery.com/contents/)
+ * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()`. As a setter, does not convert numbers to strings or append 'px'.
+ * - [`data()`](http://api.jquery.com/data/)
+ * - [`detach()`](http://api.jquery.com/detach/)
+ * - [`empty()`](http://api.jquery.com/empty/)
+ * - [`eq()`](http://api.jquery.com/eq/)
+ * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
+ * - [`hasClass()`](http://api.jquery.com/hasClass/)
+ * - [`html()`](http://api.jquery.com/html/)
+ * - [`next()`](http://api.jquery.com/next/) - Does not support selectors
+ * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData
+ * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors
+ * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors
+ * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors
+ * - [`prepend()`](http://api.jquery.com/prepend/)
+ * - [`prop()`](http://api.jquery.com/prop/)
+ * - [`ready()`](http://api.jquery.com/ready/)
+ * - [`remove()`](http://api.jquery.com/remove/)
+ * - [`removeAttr()`](http://api.jquery.com/removeAttr/)
+ * - [`removeClass()`](http://api.jquery.com/removeClass/)
+ * - [`removeData()`](http://api.jquery.com/removeData/)
+ * - [`replaceWith()`](http://api.jquery.com/replaceWith/)
+ * - [`text()`](http://api.jquery.com/text/)
+ * - [`toggleClass()`](http://api.jquery.com/toggleClass/)
+ * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.
+ * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces
+ * - [`val()`](http://api.jquery.com/val/)
+ * - [`wrap()`](http://api.jquery.com/wrap/)
+ *
+ * ## jQuery/jqLite Extras
+ * Angular also provides the following additional methods and events to both jQuery and jqLite:
+ *
+ * ### Events
+ * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event
+ * on all DOM nodes being removed. This can be used to clean up any 3rd party bindings to the DOM
+ * element before it is removed.
+ *
+ * ### Methods
+ * - `controller(name)` - retrieves the controller of the current element or its parent. By default
+ * retrieves controller associated with the `ngController` directive. If `name` is provided as
+ * camelCase directive name, then the controller for this directive will be retrieved (e.g.
+ * `'ngModel'`).
+ * - `injector()` - retrieves the injector of the current element or its parent.
+ * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current
+ * element or its parent. Requires {@link guide/production#disabling-debug-data Debug Data} to
+ * be enabled.
+ * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the
+ * current element. This getter should be used only on elements that contain a directive which starts a new isolate
+ * scope. Calling `scope()` on this element always returns the original non-isolate scope.
+ * Requires {@link guide/production#disabling-debug-data Debug Data} to be enabled.
+ * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top
+ * parent element is reached.
+ *
+ * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.
+ * @returns {Object} jQuery object.
+ */
+
+JQLite.expando = 'ng339';
+
+var jqCache = JQLite.cache = {},
+ jqId = 1,
+ addEventListenerFn = function(element, type, fn) {
+ element.addEventListener(type, fn, false);
+ },
+ removeEventListenerFn = function(element, type, fn) {
+ element.removeEventListener(type, fn, false);
+ };
+
+/*
+ * !!! This is an undocumented "private" function !!!
+ */
+JQLite._data = function(node) {
+ //jQuery always returns an object on cache miss
+ return this.cache[node[this.expando]] || {};
+};
+
+function jqNextId() { return ++jqId; }
+
+
+var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
+var MOZ_HACK_REGEXP = /^moz([A-Z])/;
+var MOUSE_EVENT_MAP= { mouseleave: "mouseout", mouseenter: "mouseover"};
+var jqLiteMinErr = minErr('jqLite');
+
+/**
+ * Converts snake_case to camelCase.
+ * Also there is special case for Moz prefix starting with upper case letter.
+ * @param name Name to normalize
+ */
+function camelCase(name) {
+ return name.
+ replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
+ return offset ? letter.toUpperCase() : letter;
+ }).
+ replace(MOZ_HACK_REGEXP, 'Moz$1');
+}
+
+var SINGLE_TAG_REGEXP = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
+var HTML_REGEXP = /<|&#?\w+;/;
+var TAG_NAME_REGEXP = /<([\w:]+)/;
+var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;
+
+var wrapMap = {
+ 'option': [1, '<select multiple="multiple">', '</select>'],
+
+ 'thead': [1, '<table>', '</table>'],
+ 'col': [2, '<table><colgroup>', '</colgroup></table>'],
+ 'tr': [2, '<table><tbody>', '</tbody></table>'],
+ 'td': [3, '<table><tbody><tr>', '</tr></tbody></table>'],
+ '_default': [0, "", ""]
+};
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function jqLiteIsTextNode(html) {
+ return !HTML_REGEXP.test(html);
+}
+
+function jqLiteAcceptsData(node) {
+ // The window object can accept data but has no nodeType
+ // Otherwise we are only interested in elements (1) and documents (9)
+ var nodeType = node.nodeType;
+ return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT;
+}
+
+function jqLiteHasData(node) {
+ for (var key in jqCache[node.ng339]) {
+ return true;
+ }
+ return false;
+}
+
+function jqLiteBuildFragment(html, context) {
+ var tmp, tag, wrap,
+ fragment = context.createDocumentFragment(),
+ nodes = [], i;
+
+ if (jqLiteIsTextNode(html)) {
+ // Convert non-html into a text node
+ nodes.push(context.createTextNode(html));
+ } else {
+ // Convert html into DOM nodes
+ tmp = tmp || fragment.appendChild(context.createElement("div"));
+ tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
+ wrap = wrapMap[tag] || wrapMap._default;
+ tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1></$2>") + wrap[2];
+
+ // Descend through wrappers to the right content
+ i = wrap[0];
+ while (i--) {
+ tmp = tmp.lastChild;
+ }
+
+ nodes = concat(nodes, tmp.childNodes);
+
+ tmp = fragment.firstChild;
+ tmp.textContent = "";
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+ fragment.innerHTML = ""; // Clear inner HTML
+ forEach(nodes, function(node) {
+ fragment.appendChild(node);
+ });
+
+ return fragment;
+}
+
+function jqLiteParseHTML(html, context) {
+ context = context || document;
+ var parsed;
+
+ if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {
+ return [context.createElement(parsed[1])];
+ }
+
+ if ((parsed = jqLiteBuildFragment(html, context))) {
+ return parsed.childNodes;
+ }
+
+ return [];
+}
+
+/////////////////////////////////////////////
+function JQLite(element) {
+ if (element instanceof JQLite) {
+ return element;
+ }
+
+ var argIsString;
+
+ if (isString(element)) {
+ element = trim(element);
+ argIsString = true;
+ }
+ if (!(this instanceof JQLite)) {
+ if (argIsString && element.charAt(0) != '<') {
+ throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element');
+ }
+ return new JQLite(element);
+ }
+
+ if (argIsString) {
+ jqLiteAddNodes(this, jqLiteParseHTML(element));
+ } else {
+ jqLiteAddNodes(this, element);
+ }
+}
+
+function jqLiteClone(element) {
+ return element.cloneNode(true);
+}
+
+function jqLiteDealoc(element, onlyDescendants) {
+ if (!onlyDescendants) jqLiteRemoveData(element);
+
+ if (element.querySelectorAll) {
+ var descendants = element.querySelectorAll('*');
+ for (var i = 0, l = descendants.length; i < l; i++) {
+ jqLiteRemoveData(descendants[i]);
+ }
+ }
+}
+
+function jqLiteOff(element, type, fn, unsupported) {
+ if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument');
+
+ var expandoStore = jqLiteExpandoStore(element);
+ var events = expandoStore && expandoStore.events;
+ var handle = expandoStore && expandoStore.handle;
+
+ if (!handle) return; //no listeners registered
+
+ if (!type) {
+ for (type in events) {
+ if (type !== '$destroy') {
+ removeEventListenerFn(element, type, handle);
+ }
+ delete events[type];
+ }
+ } else {
+ forEach(type.split(' '), function(type) {
+ if (isDefined(fn)) {
+ var listenerFns = events[type];
+ arrayRemove(listenerFns || [], fn);
+ if (listenerFns && listenerFns.length > 0) {
+ return;
+ }
+ }
+
+ removeEventListenerFn(element, type, handle);
+ delete events[type];
+ });
+ }
+}
+
+function jqLiteRemoveData(element, name) {
+ var expandoId = element.ng339;
+ var expandoStore = expandoId && jqCache[expandoId];
+
+ if (expandoStore) {
+ if (name) {
+ delete expandoStore.data[name];
+ return;
+ }
+
+ if (expandoStore.handle) {
+ if (expandoStore.events.$destroy) {
+ expandoStore.handle({}, '$destroy');
+ }
+ jqLiteOff(element);
+ }
+ delete jqCache[expandoId];
+ element.ng339 = undefined; // don't delete DOM expandos. IE and Chrome don't like it
+ }
+}
+
+
+function jqLiteExpandoStore(element, createIfNecessary) {
+ var expandoId = element.ng339,
+ expandoStore = expandoId && jqCache[expandoId];
+
+ if (createIfNecessary && !expandoStore) {
+ element.ng339 = expandoId = jqNextId();
+ expandoStore = jqCache[expandoId] = {events: {}, data: {}, handle: undefined};
+ }
+
+ return expandoStore;
+}
+
+
+function jqLiteData(element, key, value) {
+ if (jqLiteAcceptsData(element)) {
+
+ var isSimpleSetter = isDefined(value);
+ var isSimpleGetter = !isSimpleSetter && key && !isObject(key);
+ var massGetter = !key;
+ var expandoStore = jqLiteExpandoStore(element, !isSimpleGetter);
+ var data = expandoStore && expandoStore.data;
+
+ if (isSimpleSetter) { // data('key', value)
+ data[key] = value;
+ } else {
+ if (massGetter) { // data()
+ return data;
+ } else {
+ if (isSimpleGetter) { // data('key')
+ // don't force creation of expandoStore if it doesn't exist yet
+ return data && data[key];
+ } else { // mass-setter: data({key1: val1, key2: val2})
+ extend(data, key);
+ }
+ }
+ }
+ }
+}
+
+function jqLiteHasClass(element, selector) {
+ if (!element.getAttribute) return false;
+ return ((" " + (element.getAttribute('class') || '') + " ").replace(/[\n\t]/g, " ").
+ indexOf(" " + selector + " ") > -1);
+}
+
+function jqLiteRemoveClass(element, cssClasses) {
+ if (cssClasses && element.setAttribute) {
+ forEach(cssClasses.split(' '), function(cssClass) {
+ element.setAttribute('class', trim(
+ (" " + (element.getAttribute('class') || '') + " ")
+ .replace(/[\n\t]/g, " ")
+ .replace(" " + trim(cssClass) + " ", " "))
+ );
+ });
+ }
+}
+
+function jqLiteAddClass(element, cssClasses) {
+ if (cssClasses && element.setAttribute) {
+ var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
+ .replace(/[\n\t]/g, " ");
+
+ forEach(cssClasses.split(' '), function(cssClass) {
+ cssClass = trim(cssClass);
+ if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {
+ existingClasses += cssClass + ' ';
+ }
+ });
+
+ element.setAttribute('class', trim(existingClasses));
+ }
+}
+
+
+function jqLiteAddNodes(root, elements) {
+ // THIS CODE IS VERY HOT. Don't make changes without benchmarking.
+
+ if (elements) {
+
+ // if a Node (the most common case)
+ if (elements.nodeType) {
+ root[root.length++] = elements;
+ } else {
+ var length = elements.length;
+
+ // if an Array or NodeList and not a Window
+ if (typeof length === 'number' && elements.window !== elements) {
+ if (length) {
+ for (var i = 0; i < length; i++) {
+ root[root.length++] = elements[i];
+ }
+ }
+ } else {
+ root[root.length++] = elements;
+ }
+ }
+ }
+}
+
+
+function jqLiteController(element, name) {
+ return jqLiteInheritedData(element, '$' + (name || 'ngController') + 'Controller');
+}
+
+function jqLiteInheritedData(element, name, value) {
+ // if element is the document object work with the html element instead
+ // this makes $(document).scope() possible
+ if (element.nodeType == NODE_TYPE_DOCUMENT) {
+ element = element.documentElement;
+ }
+ var names = isArray(name) ? name : [name];
+
+ while (element) {
+ for (var i = 0, ii = names.length; i < ii; i++) {
+ if ((value = jqLite.data(element, names[i])) !== undefined) return value;
+ }
+
+ // If dealing with a document fragment node with a host element, and no parent, use the host
+ // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM
+ // to lookup parent controllers.
+ element = element.parentNode || (element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host);
+ }
+}
+
+function jqLiteEmpty(element) {
+ jqLiteDealoc(element, true);
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+}
+
+function jqLiteRemove(element, keepData) {
+ if (!keepData) jqLiteDealoc(element);
+ var parent = element.parentNode;
+ if (parent) parent.removeChild(element);
+}
+
+
+function jqLiteDocumentLoaded(action, win) {
+ win = win || window;
+ if (win.document.readyState === 'complete') {
+ // Force the action to be run async for consistent behaviour
+ // from the action's point of view
+ // i.e. it will definitely not be in a $apply
+ win.setTimeout(action);
+ } else {
+ // No need to unbind this handler as load is only ever called once
+ jqLite(win).on('load', action);
+ }
+}
+
+//////////////////////////////////////////
+// Functions which are declared directly.
+//////////////////////////////////////////
+var JQLitePrototype = JQLite.prototype = {
+ ready: function(fn) {
+ var fired = false;
+
+ function trigger() {
+ if (fired) return;
+ fired = true;
+ fn();
+ }
+
+ // check if document is already loaded
+ if (document.readyState === 'complete') {
+ setTimeout(trigger);
+ } else {
+ this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9
+ // we can not use jqLite since we are not done loading and jQuery could be loaded later.
+ // jshint -W064
+ JQLite(window).on('load', trigger); // fallback to window.onload for others
+ // jshint +W064
+ }
+ },
+ toString: function() {
+ var value = [];
+ forEach(this, function(e) { value.push('' + e);});
+ return '[' + value.join(', ') + ']';
+ },
+
+ eq: function(index) {
+ return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);
+ },
+
+ length: 0,
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+//////////////////////////////////////////
+// Functions iterating getter/setters.
+// these functions return self on setter and
+// value on get.
+//////////////////////////////////////////
+var BOOLEAN_ATTR = {};
+forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {
+ BOOLEAN_ATTR[lowercase(value)] = value;
+});
+var BOOLEAN_ELEMENTS = {};
+forEach('input,select,option,textarea,button,form,details'.split(','), function(value) {
+ BOOLEAN_ELEMENTS[value] = true;
+});
+var ALIASED_ATTR = {
+ 'ngMinlength': 'minlength',
+ 'ngMaxlength': 'maxlength',
+ 'ngMin': 'min',
+ 'ngMax': 'max',
+ 'ngPattern': 'pattern'
+};
+
+function getBooleanAttrName(element, name) {
+ // check dom last since we will most likely fail on name
+ var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];
+
+ // booleanAttr is here twice to minimize DOM access
+ return booleanAttr && BOOLEAN_ELEMENTS[nodeName_(element)] && booleanAttr;
+}
+
+function getAliasedAttrName(element, name) {
+ var nodeName = element.nodeName;
+ return (nodeName === 'INPUT' || nodeName === 'TEXTAREA') && ALIASED_ATTR[name];
+}
+
+forEach({
+ data: jqLiteData,
+ removeData: jqLiteRemoveData,
+ hasData: jqLiteHasData
+}, function(fn, name) {
+ JQLite[name] = fn;
+});
+
+forEach({
+ data: jqLiteData,
+ inheritedData: jqLiteInheritedData,
+
+ scope: function(element) {
+ // Can't use jqLiteData here directly so we stay compatible with jQuery!
+ return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);
+ },
+
+ isolateScope: function(element) {
+ // Can't use jqLiteData here directly so we stay compatible with jQuery!
+ return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');
+ },
+
+ controller: jqLiteController,
+
+ injector: function(element) {
+ return jqLiteInheritedData(element, '$injector');
+ },
+
+ removeAttr: function(element, name) {
+ element.removeAttribute(name);
+ },
+
+ hasClass: jqLiteHasClass,
+
+ css: function(element, name, value) {
+ name = camelCase(name);
+
+ if (isDefined(value)) {
+ element.style[name] = value;
+ } else {
+ return element.style[name];
+ }
+ },
+
+ attr: function(element, name, value) {
+ var nodeType = element.nodeType;
+ if (nodeType === NODE_TYPE_TEXT || nodeType === NODE_TYPE_ATTRIBUTE || nodeType === NODE_TYPE_COMMENT) {
+ return;
+ }
+ var lowercasedName = lowercase(name);
+ if (BOOLEAN_ATTR[lowercasedName]) {
+ if (isDefined(value)) {
+ if (!!value) {
+ element[name] = true;
+ element.setAttribute(name, lowercasedName);
+ } else {
+ element[name] = false;
+ element.removeAttribute(lowercasedName);
+ }
+ } else {
+ return (element[name] ||
+ (element.attributes.getNamedItem(name) || noop).specified)
+ ? lowercasedName
+ : undefined;
+ }
+ } else if (isDefined(value)) {
+ element.setAttribute(name, value);
+ } else if (element.getAttribute) {
+ // the extra argument "2" is to get the right thing for a.href in IE, see jQuery code
+ // some elements (e.g. Document) don't have get attribute, so return undefined
+ var ret = element.getAttribute(name, 2);
+ // normalize non-existing attributes to undefined (as jQuery)
+ return ret === null ? undefined : ret;
+ }
+ },
+
+ prop: function(element, name, value) {
+ if (isDefined(value)) {
+ element[name] = value;
+ } else {
+ return element[name];
+ }
+ },
+
+ text: (function() {
+ getText.$dv = '';
+ return getText;
+
+ function getText(element, value) {
+ if (isUndefined(value)) {
+ var nodeType = element.nodeType;
+ return (nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT) ? element.textContent : '';
+ }
+ element.textContent = value;
+ }
+ })(),
+
+ val: function(element, value) {
+ if (isUndefined(value)) {
+ if (element.multiple && nodeName_(element) === 'select') {
+ var result = [];
+ forEach(element.options, function(option) {
+ if (option.selected) {
+ result.push(option.value || option.text);
+ }
+ });
+ return result.length === 0 ? null : result;
+ }
+ return element.value;
+ }
+ element.value = value;
+ },
+
+ html: function(element, value) {
+ if (isUndefined(value)) {
+ return element.innerHTML;
+ }
+ jqLiteDealoc(element, true);
+ element.innerHTML = value;
+ },
+
+ empty: jqLiteEmpty
+}, function(fn, name) {
+ /**
+ * Properties: writes return selection, reads return first value
+ */
+ JQLite.prototype[name] = function(arg1, arg2) {
+ var i, key;
+ var nodeCount = this.length;
+
+ // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it
+ // in a way that survives minification.
+ // jqLiteEmpty takes no arguments but is a setter.
+ if (fn !== jqLiteEmpty &&
+ (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {
+ if (isObject(arg1)) {
+
+ // we are a write, but the object properties are the key/values
+ for (i = 0; i < nodeCount; i++) {
+ if (fn === jqLiteData) {
+ // data() takes the whole object in jQuery
+ fn(this[i], arg1);
+ } else {
+ for (key in arg1) {
+ fn(this[i], key, arg1[key]);
+ }
+ }
+ }
+ // return self for chaining
+ return this;
+ } else {
+ // we are a read, so read the first child.
+ // TODO: do we still need this?
+ var value = fn.$dv;
+ // Only if we have $dv do we iterate over all, otherwise it is just the first element.
+ var jj = (value === undefined) ? Math.min(nodeCount, 1) : nodeCount;
+ for (var j = 0; j < jj; j++) {
+ var nodeValue = fn(this[j], arg1, arg2);
+ value = value ? value + nodeValue : nodeValue;
+ }
+ return value;
+ }
+ } else {
+ // we are a write, so apply to all children
+ for (i = 0; i < nodeCount; i++) {
+ fn(this[i], arg1, arg2);
+ }
+ // return self for chaining
+ return this;
+ }
+ };
+});
+
+function createEventHandler(element, events) {
+ var eventHandler = function(event, type) {
+ // jQuery specific api
+ event.isDefaultPrevented = function() {
+ return event.defaultPrevented;
+ };
+
+ var eventFns = events[type || event.type];
+ var eventFnsLength = eventFns ? eventFns.length : 0;
+
+ if (!eventFnsLength) return;
+
+ if (isUndefined(event.immediatePropagationStopped)) {
+ var originalStopImmediatePropagation = event.stopImmediatePropagation;
+ event.stopImmediatePropagation = function() {
+ event.immediatePropagationStopped = true;
+
+ if (event.stopPropagation) {
+ event.stopPropagation();
+ }
+
+ if (originalStopImmediatePropagation) {
+ originalStopImmediatePropagation.call(event);
+ }
+ };
+ }
+
+ event.isImmediatePropagationStopped = function() {
+ return event.immediatePropagationStopped === true;
+ };
+
+ // Copy event handlers in case event handlers array is modified during execution.
+ if ((eventFnsLength > 1)) {
+ eventFns = shallowCopy(eventFns);
+ }
+
+ for (var i = 0; i < eventFnsLength; i++) {
+ if (!event.isImmediatePropagationStopped()) {
+ eventFns[i].call(element, event);
+ }
+ }
+ };
+
+ // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all
+ // events on `element`
+ eventHandler.elem = element;
+ return eventHandler;
+}
+
+//////////////////////////////////////////
+// Functions iterating traversal.
+// These functions chain results into a single
+// selector.
+//////////////////////////////////////////
+forEach({
+ removeData: jqLiteRemoveData,
+
+ on: function jqLiteOn(element, type, fn, unsupported) {
+ if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');
+
+ // Do not add event handlers to non-elements because they will not be cleaned up.
+ if (!jqLiteAcceptsData(element)) {
+ return;
+ }
+
+ var expandoStore = jqLiteExpandoStore(element, true);
+ var events = expandoStore.events;
+ var handle = expandoStore.handle;
+
+ if (!handle) {
+ handle = expandoStore.handle = createEventHandler(element, events);
+ }
+
+ // http://jsperf.com/string-indexof-vs-split
+ var types = type.indexOf(' ') >= 0 ? type.split(' ') : [type];
+ var i = types.length;
+
+ while (i--) {
+ type = types[i];
+ var eventFns = events[type];
+
+ if (!eventFns) {
+ events[type] = [];
+
+ if (type === 'mouseenter' || type === 'mouseleave') {
+ // Refer to jQuery's implementation of mouseenter & mouseleave
+ // Read about mouseenter and mouseleave:
+ // http://www.quirksmode.org/js/events_mouse.html#link8
+
+ jqLiteOn(element, MOUSE_EVENT_MAP[type], function(event) {
+ var target = this, related = event.relatedTarget;
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if (!related || (related !== target && !target.contains(related))) {
+ handle(event, type);
+ }
+ });
+
+ } else {
+ if (type !== '$destroy') {
+ addEventListenerFn(element, type, handle);
+ }
+ }
+ eventFns = events[type];
+ }
+ eventFns.push(fn);
+ }
+ },
+
+ off: jqLiteOff,
+
+ one: function(element, type, fn) {
+ element = jqLite(element);
+
+ //add the listener twice so that when it is called
+ //you can remove the original function and still be
+ //able to call element.off(ev, fn) normally
+ element.on(type, function onFn() {
+ element.off(type, fn);
+ element.off(type, onFn);
+ });
+ element.on(type, fn);
+ },
+
+ replaceWith: function(element, replaceNode) {
+ var index, parent = element.parentNode;
+ jqLiteDealoc(element);
+ forEach(new JQLite(replaceNode), function(node) {
+ if (index) {
+ parent.insertBefore(node, index.nextSibling);
+ } else {
+ parent.replaceChild(node, element);
+ }
+ index = node;
+ });
+ },
+
+ children: function(element) {
+ var children = [];
+ forEach(element.childNodes, function(element) {
+ if (element.nodeType === NODE_TYPE_ELEMENT) {
+ children.push(element);
+ }
+ });
+ return children;
+ },
+
+ contents: function(element) {
+ return element.contentDocument || element.childNodes || [];
+ },
+
+ append: function(element, node) {
+ var nodeType = element.nodeType;
+ if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT) return;
+
+ node = new JQLite(node);
+
+ for (var i = 0, ii = node.length; i < ii; i++) {
+ var child = node[i];
+ element.appendChild(child);
+ }
+ },
+
+ prepend: function(element, node) {
+ if (element.nodeType === NODE_TYPE_ELEMENT) {
+ var index = element.firstChild;
+ forEach(new JQLite(node), function(child) {
+ element.insertBefore(child, index);
+ });
+ }
+ },
+
+ wrap: function(element, wrapNode) {
+ wrapNode = jqLite(wrapNode).eq(0).clone()[0];
+ var parent = element.parentNode;
+ if (parent) {
+ parent.replaceChild(wrapNode, element);
+ }
+ wrapNode.appendChild(element);
+ },
+
+ remove: jqLiteRemove,
+
+ detach: function(element) {
+ jqLiteRemove(element, true);
+ },
+
+ after: function(element, newElement) {
+ var index = element, parent = element.parentNode;
+ newElement = new JQLite(newElement);
+
+ for (var i = 0, ii = newElement.length; i < ii; i++) {
+ var node = newElement[i];
+ parent.insertBefore(node, index.nextSibling);
+ index = node;
+ }
+ },
+
+ addClass: jqLiteAddClass,
+ removeClass: jqLiteRemoveClass,
+
+ toggleClass: function(element, selector, condition) {
+ if (selector) {
+ forEach(selector.split(' '), function(className) {
+ var classCondition = condition;
+ if (isUndefined(classCondition)) {
+ classCondition = !jqLiteHasClass(element, className);
+ }
+ (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);
+ });
+ }
+ },
+
+ parent: function(element) {
+ var parent = element.parentNode;
+ return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null;
+ },
+
+ next: function(element) {
+ return element.nextElementSibling;
+ },
+
+ find: function(element, selector) {
+ if (element.getElementsByTagName) {
+ return element.getElementsByTagName(selector);
+ } else {
+ return [];
+ }
+ },
+
+ clone: jqLiteClone,
+
+ triggerHandler: function(element, event, extraParameters) {
+
+ var dummyEvent, eventFnsCopy, handlerArgs;
+ var eventName = event.type || event;
+ var expandoStore = jqLiteExpandoStore(element);
+ var events = expandoStore && expandoStore.events;
+ var eventFns = events && events[eventName];
+
+ if (eventFns) {
+ // Create a dummy event to pass to the handlers
+ dummyEvent = {
+ preventDefault: function() { this.defaultPrevented = true; },
+ isDefaultPrevented: function() { return this.defaultPrevented === true; },
+ stopImmediatePropagation: function() { this.immediatePropagationStopped = true; },
+ isImmediatePropagationStopped: function() { return this.immediatePropagationStopped === true; },
+ stopPropagation: noop,
+ type: eventName,
+ target: element
+ };
+
+ // If a custom event was provided then extend our dummy event with it
+ if (event.type) {
+ dummyEvent = extend(dummyEvent, event);
+ }
+
+ // Copy event handlers in case event handlers array is modified during execution.
+ eventFnsCopy = shallowCopy(eventFns);
+ handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];
+
+ forEach(eventFnsCopy, function(fn) {
+ if (!dummyEvent.isImmediatePropagationStopped()) {
+ fn.apply(element, handlerArgs);
+ }
+ });
+ }
+ }
+}, function(fn, name) {
+ /**
+ * chaining functions
+ */
+ JQLite.prototype[name] = function(arg1, arg2, arg3) {
+ var value;
+
+ for (var i = 0, ii = this.length; i < ii; i++) {
+ if (isUndefined(value)) {
+ value = fn(this[i], arg1, arg2, arg3);
+ if (isDefined(value)) {
+ // any function which returns a value needs to be wrapped
+ value = jqLite(value);
+ }
+ } else {
+ jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));
+ }
+ }
+ return isDefined(value) ? value : this;
+ };
+
+ // bind legacy bind/unbind to on/off
+ JQLite.prototype.bind = JQLite.prototype.on;
+ JQLite.prototype.unbind = JQLite.prototype.off;
+});
+
+
+// Provider for private $$jqLite service
+function $$jqLiteProvider() {
+ this.$get = function $$jqLite() {
+ return extend(JQLite, {
+ hasClass: function(node, classes) {
+ if (node.attr) node = node[0];
+ return jqLiteHasClass(node, classes);
+ },
+ addClass: function(node, classes) {
+ if (node.attr) node = node[0];
+ return jqLiteAddClass(node, classes);
+ },
+ removeClass: function(node, classes) {
+ if (node.attr) node = node[0];
+ return jqLiteRemoveClass(node, classes);
+ }
+ });
+ };
+}
+
+/**
+ * Computes a hash of an 'obj'.
+ * Hash of a:
+ * string is string
+ * number is number as string
+ * object is either result of calling $$hashKey function on the object or uniquely generated id,
+ * that is also assigned to the $$hashKey property of the object.
+ *
+ * @param obj
+ * @returns {string} hash string such that the same input will have the same hash string.
+ * The resulting string key is in 'type:hashKey' format.
+ */
+function hashKey(obj, nextUidFn) {
+ var key = obj && obj.$$hashKey;
+
+ if (key) {
+ if (typeof key === 'function') {
+ key = obj.$$hashKey();
+ }
+ return key;
+ }
+
+ var objType = typeof obj;
+ if (objType == 'function' || (objType == 'object' && obj !== null)) {
+ key = obj.$$hashKey = objType + ':' + (nextUidFn || nextUid)();
+ } else {
+ key = objType + ':' + obj;
+ }
+
+ return key;
+}
+
+/**
+ * HashMap which can use objects as keys
+ */
+function HashMap(array, isolatedUid) {
+ if (isolatedUid) {
+ var uid = 0;
+ this.nextUid = function() {
+ return ++uid;
+ };
+ }
+ forEach(array, this.put, this);
+}
+HashMap.prototype = {
+ /**
+ * Store key value pair
+ * @param key key to store can be any type
+ * @param value value to store can be any type
+ */
+ put: function(key, value) {
+ this[hashKey(key, this.nextUid)] = value;
+ },
+
+ /**
+ * @param key
+ * @returns {Object} the value for the key
+ */
+ get: function(key) {
+ return this[hashKey(key, this.nextUid)];
+ },
+
+ /**
+ * Remove the key/value pair
+ * @param key
+ */
+ remove: function(key) {
+ var value = this[key = hashKey(key, this.nextUid)];
+ delete this[key];
+ return value;
+ }
+};
+
+var $$HashMapProvider = [function() {
+ this.$get = [function() {
+ return HashMap;
+ }];
+}];
+
+/**
+ * @ngdoc function
+ * @module ng
+ * @name angular.injector
+ * @kind function
+ *
+ * @description
+ * Creates an injector object that can be used for retrieving services as well as for
+ * dependency injection (see {@link guide/di dependency injection}).
+ *
+ * @param {Array.<string|Function>} modules A list of module functions or their aliases. See
+ * {@link angular.module}. The `ng` module must be explicitly added.
+ * @param {boolean=} [strictDi=false] Whether the injector should be in strict mode, which
+ * disallows argument name annotation inference.
+ * @returns {injector} Injector object. See {@link auto.$injector $injector}.
+ *
+ * @example
+ * Typical usage
+ * ```js
+ * // create an injector
+ * var $injector = angular.injector(['ng']);
+ *
+ * // use the injector to kick off your application
+ * // use the type inference to auto inject arguments, or use implicit injection
+ * $injector.invoke(function($rootScope, $compile, $document) {
+ * $compile($document)($rootScope);
+ * $rootScope.$digest();
+ * });
+ * ```
+ *
+ * Sometimes you want to get access to the injector of a currently running Angular app
+ * from outside Angular. Perhaps, you want to inject and compile some markup after the
+ * application has been bootstrapped. You can do this using the extra `injector()` added
+ * to JQuery/jqLite elements. See {@link angular.element}.
+ *
+ * *This is fairly rare but could be the case if a third party library is injecting the
+ * markup.*
+ *
+ * In the following example a new block of HTML containing a `ng-controller`
+ * directive is added to the end of the document body by JQuery. We then compile and link
+ * it into the current AngularJS scope.
+ *
+ * ```js
+ * var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
+ * $(document.body).append($div);
+ *
+ * angular.element(document).injector().invoke(function($compile) {
+ * var scope = angular.element($div).scope();
+ * $compile($div)(scope);
+ * });
+ * ```
+ */
+
+
+/**
+ * @ngdoc module
+ * @name auto
+ * @description
+ *
+ * Implicit module which gets automatically added to each {@link auto.$injector $injector}.
+ */
+
+var FN_ARGS = /^[^\(]*\(\s*([^\)]*)\)/m;
+var FN_ARG_SPLIT = /,/;
+var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/;
+var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
+var $injectorMinErr = minErr('$injector');
+
+function anonFn(fn) {
+ // For anonymous functions, showing at the very least the function signature can help in
+ // debugging.
+ var fnText = fn.toString().replace(STRIP_COMMENTS, ''),
+ args = fnText.match(FN_ARGS);
+ if (args) {
+ return 'function(' + (args[1] || '').replace(/[\s\r\n]+/, ' ') + ')';
+ }
+ return 'fn';
+}
+
+function annotate(fn, strictDi, name) {
+ var $inject,
+ fnText,
+ argDecl,
+ last;
+
+ if (typeof fn === 'function') {
+ if (!($inject = fn.$inject)) {
+ $inject = [];
+ if (fn.length) {
+ if (strictDi) {
+ if (!isString(name) || !name) {
+ name = fn.name || anonFn(fn);
+ }
+ throw $injectorMinErr('strictdi',
+ '{0} is not using explicit annotation and cannot be invoked in strict mode', name);
+ }
+ fnText = fn.toString().replace(STRIP_COMMENTS, '');
+ argDecl = fnText.match(FN_ARGS);
+ forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {
+ arg.replace(FN_ARG, function(all, underscore, name) {
+ $inject.push(name);
+ });
+ });
+ }
+ fn.$inject = $inject;
+ }
+ } else if (isArray(fn)) {
+ last = fn.length - 1;
+ assertArgFn(fn[last], 'fn');
+ $inject = fn.slice(0, last);
+ } else {
+ assertArgFn(fn, 'fn', true);
+ }
+ return $inject;
+}
+
+///////////////////////////////////////
+
+/**
+ * @ngdoc service
+ * @name $injector
+ *
+ * @description
+ *
+ * `$injector` is used to retrieve object instances as defined by
+ * {@link auto.$provide provider}, instantiate types, invoke methods,
+ * and load modules.
+ *
+ * The following always holds true:
+ *
+ * ```js
+ * var $injector = angular.injector();
+ * expect($injector.get('$injector')).toBe($injector);
+ * expect($injector.invoke(function($injector) {
+ * return $injector;
+ * })).toBe($injector);
+ * ```
+ *
+ * # Injection Function Annotation
+ *
+ * JavaScript does not have annotations, and annotations are needed for dependency injection. The
+ * following are all valid ways of annotating function with injection arguments and are equivalent.
+ *
+ * ```js
+ * // inferred (only works if code not minified/obfuscated)
+ * $injector.invoke(function(serviceA){});
+ *
+ * // annotated
+ * function explicit(serviceA) {};
+ * explicit.$inject = ['serviceA'];
+ * $injector.invoke(explicit);
+ *
+ * // inline
+ * $injector.invoke(['serviceA', function(serviceA){}]);
+ * ```
+ *
+ * ## Inference
+ *
+ * In JavaScript calling `toString()` on a function returns the function definition. The definition
+ * can then be parsed and the function arguments can be extracted. This method of discovering
+ * annotations is disallowed when the injector is in strict mode.
+ * *NOTE:* This does not work with minification, and obfuscation tools since these tools change the
+ * argument names.
+ *
+ * ## `$inject` Annotation
+ * By adding an `$inject` property onto a function the injection parameters can be specified.
+ *
+ * ## Inline
+ * As an array of injection names, where the last item in the array is the function to call.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#get
+ *
+ * @description
+ * Return an instance of the service.
+ *
+ * @param {string} name The name of the instance to retrieve.
+ * @param {string=} caller An optional string to provide the origin of the function call for error messages.
+ * @return {*} The instance.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#invoke
+ *
+ * @description
+ * Invoke the method and supply the method arguments from the `$injector`.
+ *
+ * @param {Function|Array.<string|Function>} fn The injectable function to invoke. Function parameters are
+ * injected according to the {@link guide/di $inject Annotation} rules.
+ * @param {Object=} self The `this` for the invoked method.
+ * @param {Object=} locals Optional object. If preset then any argument names are read from this
+ * object first, before the `$injector` is consulted.
+ * @returns {*} the value returned by the invoked `fn` function.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#has
+ *
+ * @description
+ * Allows the user to query if the particular service exists.
+ *
+ * @param {string} name Name of the service to query.
+ * @returns {boolean} `true` if injector has given service.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#instantiate
+ * @description
+ * Create a new instance of JS type. The method takes a constructor function, invokes the new
+ * operator, and supplies all of the arguments to the constructor function as specified by the
+ * constructor annotation.
+ *
+ * @param {Function} Type Annotated constructor function.
+ * @param {Object=} locals Optional object. If preset then any argument names are read from this
+ * object first, before the `$injector` is consulted.
+ * @returns {Object} new instance of `Type`.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#annotate
+ *
+ * @description
+ * Returns an array of service names which the function is requesting for injection. This API is
+ * used by the injector to determine which services need to be injected into the function when the
+ * function is invoked. There are three ways in which the function can be annotated with the needed
+ * dependencies.
+ *
+ * # Argument names
+ *
+ * The simplest form is to extract the dependencies from the arguments of the function. This is done
+ * by converting the function into a string using `toString()` method and extracting the argument
+ * names.
+ * ```js
+ * // Given
+ * function MyController($scope, $route) {
+ * // ...
+ * }
+ *
+ * // Then
+ * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
+ * ```
+ *
+ * You can disallow this method by using strict injection mode.
+ *
+ * This method does not work with code minification / obfuscation. For this reason the following
+ * annotation strategies are supported.
+ *
+ * # The `$inject` property
+ *
+ * If a function has an `$inject` property and its value is an array of strings, then the strings
+ * represent names of services to be injected into the function.
+ * ```js
+ * // Given
+ * var MyController = function(obfuscatedScope, obfuscatedRoute) {
+ * // ...
+ * }
+ * // Define function dependencies
+ * MyController['$inject'] = ['$scope', '$route'];
+ *
+ * // Then
+ * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
+ * ```
+ *
+ * # The array notation
+ *
+ * It is often desirable to inline Injected functions and that's when setting the `$inject` property
+ * is very inconvenient. In these situations using the array notation to specify the dependencies in
+ * a way that survives minification is a better choice:
+ *
+ * ```js
+ * // We wish to write this (not minification / obfuscation safe)
+ * injector.invoke(function($compile, $rootScope) {
+ * // ...
+ * });
+ *
+ * // We are forced to write break inlining
+ * var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {
+ * // ...
+ * };
+ * tmpFn.$inject = ['$compile', '$rootScope'];
+ * injector.invoke(tmpFn);
+ *
+ * // To better support inline function the inline annotation is supported
+ * injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {
+ * // ...
+ * }]);
+ *
+ * // Therefore
+ * expect(injector.annotate(
+ * ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])
+ * ).toEqual(['$compile', '$rootScope']);
+ * ```
+ *
+ * @param {Function|Array.<string|Function>} fn Function for which dependent service names need to
+ * be retrieved as described above.
+ *
+ * @param {boolean=} [strictDi=false] Disallow argument name annotation inference.
+ *
+ * @returns {Array.<string>} The names of the services which the function requires.
+ */
+
+
+
+
+/**
+ * @ngdoc service
+ * @name $provide
+ *
+ * @description
+ *
+ * The {@link auto.$provide $provide} service has a number of methods for registering components
+ * with the {@link auto.$injector $injector}. Many of these functions are also exposed on
+ * {@link angular.Module}.
+ *
+ * An Angular **service** is a singleton object created by a **service factory**. These **service
+ * factories** are functions which, in turn, are created by a **service provider**.
+ * The **service providers** are constructor functions. When instantiated they must contain a
+ * property called `$get`, which holds the **service factory** function.
+ *
+ * When you request a service, the {@link auto.$injector $injector} is responsible for finding the
+ * correct **service provider**, instantiating it and then calling its `$get` **service factory**
+ * function to get the instance of the **service**.
+ *
+ * Often services have no configuration options and there is no need to add methods to the service
+ * provider. The provider will be no more than a constructor function with a `$get` property. For
+ * these cases the {@link auto.$provide $provide} service has additional helper methods to register
+ * services without specifying a provider.
+ *
+ * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the
+ * {@link auto.$injector $injector}
+ * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by
+ * providers and services.
+ * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by
+ * services, not providers.
+ * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`,
+ * that will be wrapped in a **service provider** object, whose `$get` property will contain the
+ * given factory function.
+ * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class`
+ * that will be wrapped in a **service provider** object, whose `$get` property will instantiate
+ * a new object using the given constructor function.
+ *
+ * See the individual methods for more information and examples.
+ */
+
+/**
+ * @ngdoc method
+ * @name $provide#provider
+ * @description
+ *
+ * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions
+ * are constructor functions, whose instances are responsible for "providing" a factory for a
+ * service.
+ *
+ * Service provider names start with the name of the service they provide followed by `Provider`.
+ * For example, the {@link ng.$log $log} service has a provider called
+ * {@link ng.$logProvider $logProvider}.
+ *
+ * Service provider objects can have additional methods which allow configuration of the provider
+ * and its service. Importantly, you can configure what kind of service is created by the `$get`
+ * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a
+ * method {@link ng.$logProvider#debugEnabled debugEnabled}
+ * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the
+ * console or not.
+ *
+ * @param {string} name The name of the instance. NOTE: the provider will be available under `name +
+ 'Provider'` key.
+ * @param {(Object|function())} provider If the provider is:
+ *
+ * - `Object`: then it should have a `$get` method. The `$get` method will be invoked using
+ * {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.
+ * - `Constructor`: a new instance of the provider will be created using
+ * {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.
+ *
+ * @returns {Object} registered provider instance
+
+ * @example
+ *
+ * The following example shows how to create a simple event tracking service and register it using
+ * {@link auto.$provide#provider $provide.provider()}.
+ *
+ * ```js
+ * // Define the eventTracker provider
+ * function EventTrackerProvider() {
+ * var trackingUrl = '/track';
+ *
+ * // A provider method for configuring where the tracked events should been saved
+ * this.setTrackingUrl = function(url) {
+ * trackingUrl = url;
+ * };
+ *
+ * // The service factory function
+ * this.$get = ['$http', function($http) {
+ * var trackedEvents = {};
+ * return {
+ * // Call this to track an event
+ * event: function(event) {
+ * var count = trackedEvents[event] || 0;
+ * count += 1;
+ * trackedEvents[event] = count;
+ * return count;
+ * },
+ * // Call this to save the tracked events to the trackingUrl
+ * save: function() {
+ * $http.post(trackingUrl, trackedEvents);
+ * }
+ * };
+ * }];
+ * }
+ *
+ * describe('eventTracker', function() {
+ * var postSpy;
+ *
+ * beforeEach(module(function($provide) {
+ * // Register the eventTracker provider
+ * $provide.provider('eventTracker', EventTrackerProvider);
+ * }));
+ *
+ * beforeEach(module(function(eventTrackerProvider) {
+ * // Configure eventTracker provider
+ * eventTrackerProvider.setTrackingUrl('/custom-track');
+ * }));
+ *
+ * it('tracks events', inject(function(eventTracker) {
+ * expect(eventTracker.event('login')).toEqual(1);
+ * expect(eventTracker.event('login')).toEqual(2);
+ * }));
+ *
+ * it('saves to the tracking url', inject(function(eventTracker, $http) {
+ * postSpy = spyOn($http, 'post');
+ * eventTracker.event('login');
+ * eventTracker.save();
+ * expect(postSpy).toHaveBeenCalled();
+ * expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');
+ * expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');
+ * expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });
+ * }));
+ * });
+ * ```
+ */
+
+/**
+ * @ngdoc method
+ * @name $provide#factory
+ * @description
+ *
+ * Register a **service factory**, which will be called to return the service instance.
+ * This is short for registering a service where its provider consists of only a `$get` property,
+ * which is the given service factory function.
+ * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to
+ * configure your service in a provider.
+ *
+ * @param {string} name The name of the instance.
+ * @param {Function|Array.<string|Function>} $getFn The injectable $getFn for the instance creation.
+ * Internally this is a short hand for `$provide.provider(name, {$get: $getFn})`.
+ * @returns {Object} registered provider instance
+ *
+ * @example
+ * Here is an example of registering a service
+ * ```js
+ * $provide.factory('ping', ['$http', function($http) {
+ * return function ping() {
+ * return $http.send('/ping');
+ * };
+ * }]);
+ * ```
+ * You would then inject and use this service like this:
+ * ```js
+ * someModule.controller('Ctrl', ['ping', function(ping) {
+ * ping();
+ * }]);
+ * ```
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $provide#service
+ * @description
+ *
+ * Register a **service constructor**, which will be invoked with `new` to create the service
+ * instance.
+ * This is short for registering a service where its provider's `$get` property is the service
+ * constructor function that will be used to instantiate the service instance.
+ *
+ * You should use {@link auto.$provide#service $provide.service(class)} if you define your service
+ * as a type/class.
+ *
+ * @param {string} name The name of the instance.
+ * @param {Function|Array.<string|Function>} constructor An injectable class (constructor function)
+ * that will be instantiated.
+ * @returns {Object} registered provider instance
+ *
+ * @example
+ * Here is an example of registering a service using
+ * {@link auto.$provide#service $provide.service(class)}.
+ * ```js
+ * var Ping = function($http) {
+ * this.$http = $http;
+ * };
+ *
+ * Ping.$inject = ['$http'];
+ *
+ * Ping.prototype.send = function() {
+ * return this.$http.get('/ping');
+ * };
+ * $provide.service('ping', Ping);
+ * ```
+ * You would then inject and use this service like this:
+ * ```js
+ * someModule.controller('Ctrl', ['ping', function(ping) {
+ * ping.send();
+ * }]);
+ * ```
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $provide#value
+ * @description
+ *
+ * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a
+ * number, an array, an object or a function. This is short for registering a service where its
+ * provider's `$get` property is a factory function that takes no arguments and returns the **value
+ * service**.
+ *
+ * Value services are similar to constant services, except that they cannot be injected into a
+ * module configuration function (see {@link angular.Module#config}) but they can be overridden by
+ * an Angular
+ * {@link auto.$provide#decorator decorator}.
+ *
+ * @param {string} name The name of the instance.
+ * @param {*} value The value.
+ * @returns {Object} registered provider instance
+ *
+ * @example
+ * Here are some examples of creating value services.
+ * ```js
+ * $provide.value('ADMIN_USER', 'admin');
+ *
+ * $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });
+ *
+ * $provide.value('halfOf', function(value) {
+ * return value / 2;
+ * });
+ * ```
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $provide#constant
+ * @description
+ *
+ * Register a **constant service**, such as a string, a number, an array, an object or a function,
+ * with the {@link auto.$injector $injector}. Unlike {@link auto.$provide#value value} it can be
+ * injected into a module configuration function (see {@link angular.Module#config}) and it cannot
+ * be overridden by an Angular {@link auto.$provide#decorator decorator}.
+ *
+ * @param {string} name The name of the constant.
+ * @param {*} value The constant value.
+ * @returns {Object} registered instance
+ *
+ * @example
+ * Here a some examples of creating constants:
+ * ```js
+ * $provide.constant('SHARD_HEIGHT', 306);
+ *
+ * $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);
+ *
+ * $provide.constant('double', function(value) {
+ * return value * 2;
+ * });
+ * ```
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $provide#decorator
+ * @description
+ *
+ * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator
+ * intercepts the creation of a service, allowing it to override or modify the behaviour of the
+ * service. The object returned by the decorator may be the original service, or a new service
+ * object which replaces or wraps and delegates to the original service.
+ *
+ * @param {string} name The name of the service to decorate.
+ * @param {Function|Array.<string|Function>} decorator This function will be invoked when the service needs to be
+ * instantiated and should return the decorated service instance. The function is called using
+ * the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.
+ * Local injection arguments:
+ *
+ * * `$delegate` - The original service instance, which can be monkey patched, configured,
+ * decorated or delegated to.
+ *
+ * @example
+ * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting
+ * calls to {@link ng.$log#error $log.warn()}.
+ * ```js
+ * $provide.decorator('$log', ['$delegate', function($delegate) {
+ * $delegate.warn = $delegate.error;
+ * return $delegate;
+ * }]);
+ * ```
+ */
+
+
+function createInjector(modulesToLoad, strictDi) {
+ strictDi = (strictDi === true);
+ var INSTANTIATING = {},
+ providerSuffix = 'Provider',
+ path = [],
+ loadedModules = new HashMap([], true),
+ providerCache = {
+ $provide: {
+ provider: supportObject(provider),
+ factory: supportObject(factory),
+ service: supportObject(service),
+ value: supportObject(value),
+ constant: supportObject(constant),
+ decorator: decorator
+ }
+ },
+ providerInjector = (providerCache.$injector =
+ createInternalInjector(providerCache, function(serviceName, caller) {
+ if (angular.isString(caller)) {
+ path.push(caller);
+ }
+ throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
+ })),
+ instanceCache = {},
+ instanceInjector = (instanceCache.$injector =
+ createInternalInjector(instanceCache, function(serviceName, caller) {
+ var provider = providerInjector.get(serviceName + providerSuffix, caller);
+ return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
+ }));
+
+
+ forEach(loadModules(modulesToLoad), function(fn) { if (fn) instanceInjector.invoke(fn); });
+
+ return instanceInjector;
+
+ ////////////////////////////////////
+ // $provider
+ ////////////////////////////////////
+
+ function supportObject(delegate) {
+ return function(key, value) {
+ if (isObject(key)) {
+ forEach(key, reverseParams(delegate));
+ } else {
+ return delegate(key, value);
+ }
+ };
+ }
+
+ function provider(name, provider_) {
+ assertNotHasOwnProperty(name, 'service');
+ if (isFunction(provider_) || isArray(provider_)) {
+ provider_ = providerInjector.instantiate(provider_);
+ }
+ if (!provider_.$get) {
+ throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
+ }
+ return providerCache[name + providerSuffix] = provider_;
+ }
+
+ function enforceReturnValue(name, factory) {
+ return function enforcedReturnValue() {
+ var result = instanceInjector.invoke(factory, this);
+ if (isUndefined(result)) {
+ throw $injectorMinErr('undef', "Provider '{0}' must return a value from $get factory method.", name);
+ }
+ return result;
+ };
+ }
+
+ function factory(name, factoryFn, enforce) {
+ return provider(name, {
+ $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
+ });
+ }
+
+ function service(name, constructor) {
+ return factory(name, ['$injector', function($injector) {
+ return $injector.instantiate(constructor);
+ }]);
+ }
+
+ function value(name, val) { return factory(name, valueFn(val), false); }
+
+ function constant(name, value) {
+ assertNotHasOwnProperty(name, 'constant');
+ providerCache[name] = value;
+ instanceCache[name] = value;
+ }
+
+ function decorator(serviceName, decorFn) {
+ var origProvider = providerInjector.get(serviceName + providerSuffix),
+ orig$get = origProvider.$get;
+
+ origProvider.$get = function() {
+ var origInstance = instanceInjector.invoke(orig$get, origProvider);
+ return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});
+ };
+ }
+
+ ////////////////////////////////////
+ // Module Loading
+ ////////////////////////////////////
+ function loadModules(modulesToLoad) {
+ assertArg(isUndefined(modulesToLoad) || isArray(modulesToLoad), 'modulesToLoad', 'not an array');
+ var runBlocks = [], moduleFn;
+ forEach(modulesToLoad, function(module) {
+ if (loadedModules.get(module)) return;
+ loadedModules.put(module, true);
+
+ function runInvokeQueue(queue) {
+ var i, ii;
+ for (i = 0, ii = queue.length; i < ii; i++) {
+ var invokeArgs = queue[i],
+ provider = providerInjector.get(invokeArgs[0]);
+
+ provider[invokeArgs[1]].apply(provider, invokeArgs[2]);
+ }
+ }
+
+ try {
+ if (isString(module)) {
+ moduleFn = angularModule(module);
+ runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);
+ runInvokeQueue(moduleFn._invokeQueue);
+ runInvokeQueue(moduleFn._configBlocks);
+ } else if (isFunction(module)) {
+ runBlocks.push(providerInjector.invoke(module));
+ } else if (isArray(module)) {
+ runBlocks.push(providerInjector.invoke(module));
+ } else {
+ assertArgFn(module, 'module');
+ }
+ } catch (e) {
+ if (isArray(module)) {
+ module = module[module.length - 1];
+ }
+ if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {
+ // Safari & FF's stack traces don't contain error.message content
+ // unlike those of Chrome and IE
+ // So if stack doesn't contain message, we create a new string that contains both.
+ // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.
+ /* jshint -W022 */
+ e = e.message + '\n' + e.stack;
+ }
+ throw $injectorMinErr('modulerr', "Failed to instantiate module {0} due to:\n{1}",
+ module, e.stack || e.message || e);
+ }
+ });
+ return runBlocks;
+ }
+
+ ////////////////////////////////////
+ // internal Injector
+ ////////////////////////////////////
+
+ function createInternalInjector(cache, factory) {
+
+ function getService(serviceName, caller) {
+ if (cache.hasOwnProperty(serviceName)) {
+ if (cache[serviceName] === INSTANTIATING) {
+ throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
+ serviceName + ' <- ' + path.join(' <- '));
+ }
+ return cache[serviceName];
+ } else {
+ try {
+ path.unshift(serviceName);
+ cache[serviceName] = INSTANTIATING;
+ return cache[serviceName] = factory(serviceName, caller);
+ } catch (err) {
+ if (cache[serviceName] === INSTANTIATING) {
+ delete cache[serviceName];
+ }
+ throw err;
+ } finally {
+ path.shift();
+ }
+ }
+ }
+
+ function invoke(fn, self, locals, serviceName) {
+ if (typeof locals === 'string') {
+ serviceName = locals;
+ locals = null;
+ }
+
+ var args = [],
+ $inject = createInjector.$$annotate(fn, strictDi, serviceName),
+ length, i,
+ key;
+
+ for (i = 0, length = $inject.length; i < length; i++) {
+ key = $inject[i];
+ if (typeof key !== 'string') {
+ throw $injectorMinErr('itkn',
+ 'Incorrect injection token! Expected service name as string, got {0}', key);
+ }
+ args.push(
+ locals && locals.hasOwnProperty(key)
+ ? locals[key]
+ : getService(key, serviceName)
+ );
+ }
+ if (isArray(fn)) {
+ fn = fn[length];
+ }
+
+ // http://jsperf.com/angularjs-invoke-apply-vs-switch
+ // #5388
+ return fn.apply(self, args);
+ }
+
+ function instantiate(Type, locals, serviceName) {
+ // Check if Type is annotated and use just the given function at n-1 as parameter
+ // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
+ // Object creation: http://jsperf.com/create-constructor/2
+ var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null);
+ var returnedValue = invoke(Type, instance, locals, serviceName);
+
+ return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
+ }
+
+ return {
+ invoke: invoke,
+ instantiate: instantiate,
+ get: getService,
+ annotate: createInjector.$$annotate,
+ has: function(name) {
+ return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
+ }
+ };
+ }
+}
+
+createInjector.$$annotate = annotate;
+
+/**
+ * @ngdoc provider
+ * @name $anchorScrollProvider
+ *
+ * @description
+ * Use `$anchorScrollProvider` to disable automatic scrolling whenever
+ * {@link ng.$location#hash $location.hash()} changes.
+ */
+function $AnchorScrollProvider() {
+
+ var autoScrollingEnabled = true;
+
+ /**
+ * @ngdoc method
+ * @name $anchorScrollProvider#disableAutoScrolling
+ *
+ * @description
+ * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to
+ * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.<br />
+ * Use this method to disable automatic scrolling.
+ *
+ * If automatic scrolling is disabled, one must explicitly call
+ * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the
+ * current hash.
+ */
+ this.disableAutoScrolling = function() {
+ autoScrollingEnabled = false;
+ };
+
+ /**
+ * @ngdoc service
+ * @name $anchorScroll
+ * @kind function
+ * @requires $window
+ * @requires $location
+ * @requires $rootScope
+ *
+ * @description
+ * When called, it scrolls to the element related to the specified `hash` or (if omitted) to the
+ * current value of {@link ng.$location#hash $location.hash()}, according to the rules specified
+ * in the
+ * [HTML5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document).
+ *
+ * It also watches the {@link ng.$location#hash $location.hash()} and automatically scrolls to
+ * match any anchor whenever it changes. This can be disabled by calling
+ * {@link ng.$anchorScrollProvider#disableAutoScrolling $anchorScrollProvider.disableAutoScrolling()}.
+ *
+ * Additionally, you can use its {@link ng.$anchorScroll#yOffset yOffset} property to specify a
+ * vertical scroll-offset (either fixed or dynamic).
+ *
+ * @param {string=} hash The hash specifying the element to scroll to. If omitted, the value of
+ * {@link ng.$location#hash $location.hash()} will be used.
+ *
+ * @property {(number|function|jqLite)} yOffset
+ * If set, specifies a vertical scroll-offset. This is often useful when there are fixed
+ * positioned elements at the top of the page, such as navbars, headers etc.
+ *
+ * `yOffset` can be specified in various ways:
+ * - **number**: A fixed number of pixels to be used as offset.<br /><br />
+ * - **function**: A getter function called everytime `$anchorScroll()` is executed. Must return
+ * a number representing the offset (in pixels).<br /><br />
+ * - **jqLite**: A jqLite/jQuery element to be used for specifying the offset. The distance from
+ * the top of the page to the element's bottom will be used as offset.<br />
+ * **Note**: The element will be taken into account only as long as its `position` is set to
+ * `fixed`. This option is useful, when dealing with responsive navbars/headers that adjust
+ * their height and/or positioning according to the viewport's size.
+ *
+ * <br />
+ * <div class="alert alert-warning">
+ * In order for `yOffset` to work properly, scrolling should take place on the document's root and
+ * not some child element.
+ * </div>
+ *
+ * @example
+ <example module="anchorScrollExample">
+ <file name="index.html">
+ <div id="scrollArea" ng-controller="ScrollController">
+ <a ng-click="gotoBottom()">Go to bottom</a>
+ <a id="bottom"></a> You're at the bottom!
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('anchorScrollExample', [])
+ .controller('ScrollController', ['$scope', '$location', '$anchorScroll',
+ function ($scope, $location, $anchorScroll) {
+ $scope.gotoBottom = function() {
+ // set the location.hash to the id of
+ // the element you wish to scroll to.
+ $location.hash('bottom');
+
+ // call $anchorScroll()
+ $anchorScroll();
+ };
+ }]);
+ </file>
+ <file name="style.css">
+ #scrollArea {
+ height: 280px;
+ overflow: auto;
+ }
+
+ #bottom {
+ display: block;
+ margin-top: 2000px;
+ }
+ </file>
+ </example>
+ *
+ * <hr />
+ * The example below illustrates the use of a vertical scroll-offset (specified as a fixed value).
+ * See {@link ng.$anchorScroll#yOffset $anchorScroll.yOffset} for more details.
+ *
+ * @example
+ <example module="anchorScrollOffsetExample">
+ <file name="index.html">
+ <div class="fixed-header" ng-controller="headerCtrl">
+ <a href="" ng-click="gotoAnchor(x)" ng-repeat="x in [1,2,3,4,5]">
+ Go to anchor {{x}}
+ </a>
+ </div>
+ <div id="anchor{{x}}" class="anchor" ng-repeat="x in [1,2,3,4,5]">
+ Anchor {{x}} of 5
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('anchorScrollOffsetExample', [])
+ .run(['$anchorScroll', function($anchorScroll) {
+ $anchorScroll.yOffset = 50; // always scroll by 50 extra pixels
+ }])
+ .controller('headerCtrl', ['$anchorScroll', '$location', '$scope',
+ function ($anchorScroll, $location, $scope) {
+ $scope.gotoAnchor = function(x) {
+ var newHash = 'anchor' + x;
+ if ($location.hash() !== newHash) {
+ // set the $location.hash to `newHash` and
+ // $anchorScroll will automatically scroll to it
+ $location.hash('anchor' + x);
+ } else {
+ // call $anchorScroll() explicitly,
+ // since $location.hash hasn't changed
+ $anchorScroll();
+ }
+ };
+ }
+ ]);
+ </file>
+ <file name="style.css">
+ body {
+ padding-top: 50px;
+ }
+
+ .anchor {
+ border: 2px dashed DarkOrchid;
+ padding: 10px 10px 200px 10px;
+ }
+
+ .fixed-header {
+ background-color: rgba(0, 0, 0, 0.2);
+ height: 50px;
+ position: fixed;
+ top: 0; left: 0; right: 0;
+ }
+
+ .fixed-header > a {
+ display: inline-block;
+ margin: 5px 15px;
+ }
+ </file>
+ </example>
+ */
+ this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {
+ var document = $window.document;
+
+ // Helper function to get first anchor from a NodeList
+ // (using `Array#some()` instead of `angular#forEach()` since it's more performant
+ // and working in all supported browsers.)
+ function getFirstAnchor(list) {
+ var result = null;
+ Array.prototype.some.call(list, function(element) {
+ if (nodeName_(element) === 'a') {
+ result = element;
+ return true;
+ }
+ });
+ return result;
+ }
+
+ function getYOffset() {
+
+ var offset = scroll.yOffset;
+
+ if (isFunction(offset)) {
+ offset = offset();
+ } else if (isElement(offset)) {
+ var elem = offset[0];
+ var style = $window.getComputedStyle(elem);
+ if (style.position !== 'fixed') {
+ offset = 0;
+ } else {
+ offset = elem.getBoundingClientRect().bottom;
+ }
+ } else if (!isNumber(offset)) {
+ offset = 0;
+ }
+
+ return offset;
+ }
+
+ function scrollTo(elem) {
+ if (elem) {
+ elem.scrollIntoView();
+
+ var offset = getYOffset();
+
+ if (offset) {
+ // `offset` is the number of pixels we should scroll UP in order to align `elem` properly.
+ // This is true ONLY if the call to `elem.scrollIntoView()` initially aligns `elem` at the
+ // top of the viewport.
+ //
+ // IF the number of pixels from the top of `elem` to the end of the page's content is less
+ // than the height of the viewport, then `elem.scrollIntoView()` will align the `elem` some
+ // way down the page.
+ //
+ // This is often the case for elements near the bottom of the page.
+ //
+ // In such cases we do not need to scroll the whole `offset` up, just the difference between
+ // the top of the element and the offset, which is enough to align the top of `elem` at the
+ // desired position.
+ var elemTop = elem.getBoundingClientRect().top;
+ $window.scrollBy(0, elemTop - offset);
+ }
+ } else {
+ $window.scrollTo(0, 0);
+ }
+ }
+
+ function scroll(hash) {
+ hash = isString(hash) ? hash : $location.hash();
+ var elm;
+
+ // empty hash, scroll to the top of the page
+ if (!hash) scrollTo(null);
+
+ // element with given id
+ else if ((elm = document.getElementById(hash))) scrollTo(elm);
+
+ // first anchor with given name :-D
+ else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) scrollTo(elm);
+
+ // no element and hash == 'top', scroll to the top of the page
+ else if (hash === 'top') scrollTo(null);
+ }
+
+ // does not scroll when user clicks on anchor link that is currently on
+ // (no url change, no $location.hash() change), browser native does scroll
+ if (autoScrollingEnabled) {
+ $rootScope.$watch(function autoScrollWatch() {return $location.hash();},
+ function autoScrollWatchAction(newVal, oldVal) {
+ // skip the initial scroll if $location.hash is empty
+ if (newVal === oldVal && newVal === '') return;
+
+ jqLiteDocumentLoaded(function() {
+ $rootScope.$evalAsync(scroll);
+ });
+ });
+ }
+
+ return scroll;
+ }];
+}
+
+var $animateMinErr = minErr('$animate');
+var ELEMENT_NODE = 1;
+var NG_ANIMATE_CLASSNAME = 'ng-animate';
+
+function mergeClasses(a,b) {
+ if (!a && !b) return '';
+ if (!a) return b;
+ if (!b) return a;
+ if (isArray(a)) a = a.join(' ');
+ if (isArray(b)) b = b.join(' ');
+ return a + ' ' + b;
+}
+
+function extractElementNode(element) {
+ for (var i = 0; i < element.length; i++) {
+ var elm = element[i];
+ if (elm.nodeType === ELEMENT_NODE) {
+ return elm;
+ }
+ }
+}
+
+function splitClasses(classes) {
+ if (isString(classes)) {
+ classes = classes.split(' ');
+ }
+
+ // Use createMap() to prevent class assumptions involving property names in
+ // Object.prototype
+ var obj = createMap();
+ forEach(classes, function(klass) {
+ // sometimes the split leaves empty string values
+ // incase extra spaces were applied to the options
+ if (klass.length) {
+ obj[klass] = true;
+ }
+ });
+ return obj;
+}
+
+// if any other type of options value besides an Object value is
+// passed into the $animate.method() animation then this helper code
+// will be run which will ignore it. While this patch is not the
+// greatest solution to this, a lot of existing plugins depend on
+// $animate to either call the callback (< 1.2) or return a promise
+// that can be changed. This helper function ensures that the options
+// are wiped clean incase a callback function is provided.
+function prepareAnimateOptions(options) {
+ return isObject(options)
+ ? options
+ : {};
+}
+
+var $$CoreAnimateRunnerProvider = function() {
+ this.$get = ['$q', '$$rAF', function($q, $$rAF) {
+ function AnimateRunner() {}
+ AnimateRunner.all = noop;
+ AnimateRunner.chain = noop;
+ AnimateRunner.prototype = {
+ end: noop,
+ cancel: noop,
+ resume: noop,
+ pause: noop,
+ complete: noop,
+ then: function(pass, fail) {
+ return $q(function(resolve) {
+ $$rAF(function() {
+ resolve();
+ });
+ }).then(pass, fail);
+ }
+ };
+ return AnimateRunner;
+ }];
+};
+
+// this is prefixed with Core since it conflicts with
+// the animateQueueProvider defined in ngAnimate/animateQueue.js
+var $$CoreAnimateQueueProvider = function() {
+ var postDigestQueue = new HashMap();
+ var postDigestElements = [];
+
+ this.$get = ['$$AnimateRunner', '$rootScope',
+ function($$AnimateRunner, $rootScope) {
+ return {
+ enabled: noop,
+ on: noop,
+ off: noop,
+ pin: noop,
+
+ push: function(element, event, options, domOperation) {
+ domOperation && domOperation();
+
+ options = options || {};
+ options.from && element.css(options.from);
+ options.to && element.css(options.to);
+
+ if (options.addClass || options.removeClass) {
+ addRemoveClassesPostDigest(element, options.addClass, options.removeClass);
+ }
+
+ return new $$AnimateRunner(); // jshint ignore:line
+ }
+ };
+
+ function addRemoveClassesPostDigest(element, add, remove) {
+ var classVal, data = postDigestQueue.get(element);
+
+ if (!data) {
+ postDigestQueue.put(element, data = {});
+ postDigestElements.push(element);
+ }
+
+ var updateData = function(classes, value) {
+ var changed = false;
+ if (classes) {
+ classes = isString(classes) ? classes.split(' ') :
+ isArray(classes) ? classes : [];
+ forEach(classes, function(className) {
+ if (className) {
+ changed = true;
+ data[className] = value;
+ }
+ });
+ }
+ return changed;
+ };
+
+ var classesAdded = updateData(add, true);
+ var classesRemoved = updateData(remove, false);
+ if ((!classesAdded && !classesRemoved) || postDigestElements.length > 1) return;
+
+ $rootScope.$$postDigest(function() {
+ forEach(postDigestElements, function(element) {
+ var data = postDigestQueue.get(element);
+ if (data) {
+ var existing = splitClasses(element.attr('class'));
+ var toAdd = '';
+ var toRemove = '';
+ forEach(data, function(status, className) {
+ var hasClass = !!existing[className];
+ if (status !== hasClass) {
+ if (status) {
+ toAdd += (toAdd.length ? ' ' : '') + className;
+ } else {
+ toRemove += (toRemove.length ? ' ' : '') + className;
+ }
+ }
+ });
+
+ forEach(element, function(elm) {
+ toAdd && jqLiteAddClass(elm, toAdd);
+ toRemove && jqLiteRemoveClass(elm, toRemove);
+ });
+ postDigestQueue.remove(element);
+ }
+ });
+
+ postDigestElements.length = 0;
+ });
+ }
+ }];
+};
+
+/**
+ * @ngdoc provider
+ * @name $animateProvider
+ *
+ * @description
+ * Default implementation of $animate that doesn't perform any animations, instead just
+ * synchronously performs DOM updates and resolves the returned runner promise.
+ *
+ * In order to enable animations the `ngAnimate` module has to be loaded.
+ *
+ * To see the functional implementation check out `src/ngAnimate/animate.js`.
+ */
+var $AnimateProvider = ['$provide', function($provide) {
+ var provider = this;
+
+ this.$$registeredAnimations = Object.create(null);
+
+ /**
+ * @ngdoc method
+ * @name $animateProvider#register
+ *
+ * @description
+ * Registers a new injectable animation factory function. The factory function produces the
+ * animation object which contains callback functions for each event that is expected to be
+ * animated.
+ *
+ * * `eventFn`: `function(element, ... , doneFunction, options)`
+ * The element to animate, the `doneFunction` and the options fed into the animation. Depending
+ * on the type of animation additional arguments will be injected into the animation function. The
+ * list below explains the function signatures for the different animation methods:
+ *
+ * - setClass: function(element, addedClasses, removedClasses, doneFunction, options)
+ * - addClass: function(element, addedClasses, doneFunction, options)
+ * - removeClass: function(element, removedClasses, doneFunction, options)
+ * - enter, leave, move: function(element, doneFunction, options)
+ * - animate: function(element, fromStyles, toStyles, doneFunction, options)
+ *
+ * Make sure to trigger the `doneFunction` once the animation is fully complete.
+ *
+ * ```js
+ * return {
+ * //enter, leave, move signature
+ * eventFn : function(element, done, options) {
+ * //code to run the animation
+ * //once complete, then run done()
+ * return function endFunction(wasCancelled) {
+ * //code to cancel the animation
+ * }
+ * }
+ * }
+ * ```
+ *
+ * @param {string} name The name of the animation (this is what the class-based CSS value will be compared to).
+ * @param {Function} factory The factory function that will be executed to return the animation
+ * object.
+ */
+ this.register = function(name, factory) {
+ if (name && name.charAt(0) !== '.') {
+ throw $animateMinErr('notcsel', "Expecting class selector starting with '.' got '{0}'.", name);
+ }
+
+ var key = name + '-animation';
+ provider.$$registeredAnimations[name.substr(1)] = key;
+ $provide.factory(key, factory);
+ };
+
+ /**
+ * @ngdoc method
+ * @name $animateProvider#classNameFilter
+ *
+ * @description
+ * Sets and/or returns the CSS class regular expression that is checked when performing
+ * an animation. Upon bootstrap the classNameFilter value is not set at all and will
+ * therefore enable $animate to attempt to perform an animation on any element that is triggered.
+ * When setting the `classNameFilter` value, animations will only be performed on elements
+ * that successfully match the filter expression. This in turn can boost performance
+ * for low-powered devices as well as applications containing a lot of structural operations.
+ * @param {RegExp=} expression The className expression which will be checked against all animations
+ * @return {RegExp} The current CSS className expression value. If null then there is no expression value
+ */
+ this.classNameFilter = function(expression) {
+ if (arguments.length === 1) {
+ this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;
+ if (this.$$classNameFilter) {
+ var reservedRegex = new RegExp("(\\s+|\\/)" + NG_ANIMATE_CLASSNAME + "(\\s+|\\/)");
+ if (reservedRegex.test(this.$$classNameFilter.toString())) {
+ throw $animateMinErr('nongcls','$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', NG_ANIMATE_CLASSNAME);
+
+ }
+ }
+ }
+ return this.$$classNameFilter;
+ };
+
+ this.$get = ['$$animateQueue', function($$animateQueue) {
+ function domInsert(element, parentElement, afterElement) {
+ // if for some reason the previous element was removed
+ // from the dom sometime before this code runs then let's
+ // just stick to using the parent element as the anchor
+ if (afterElement) {
+ var afterNode = extractElementNode(afterElement);
+ if (afterNode && !afterNode.parentNode && !afterNode.previousElementSibling) {
+ afterElement = null;
+ }
+ }
+ afterElement ? afterElement.after(element) : parentElement.prepend(element);
+ }
+
+ /**
+ * @ngdoc service
+ * @name $animate
+ * @description The $animate service exposes a series of DOM utility methods that provide support
+ * for animation hooks. The default behavior is the application of DOM operations, however,
+ * when an animation is detected (and animations are enabled), $animate will do the heavy lifting
+ * to ensure that animation runs with the triggered DOM operation.
+ *
+ * By default $animate doesn't trigger an animations. This is because the `ngAnimate` module isn't
+ * included and only when it is active then the animation hooks that `$animate` triggers will be
+ * functional. Once active then all structural `ng-` directives will trigger animations as they perform
+ * their DOM-related operations (enter, leave and move). Other directives such as `ngClass`,
+ * `ngShow`, `ngHide` and `ngMessages` also provide support for animations.
+ *
+ * It is recommended that the`$animate` service is always used when executing DOM-related procedures within directives.
+ *
+ * To learn more about enabling animation support, click here to visit the
+ * {@link ngAnimate ngAnimate module page}.
+ */
+ return {
+ // we don't call it directly since non-existant arguments may
+ // be interpreted as null within the sub enabled function
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#on
+ * @kind function
+ * @description Sets up an event listener to fire whenever the animation event (enter, leave, move, etc...)
+ * has fired on the given element or among any of its children. Once the listener is fired, the provided callback
+ * is fired with the following params:
+ *
+ * ```js
+ * $animate.on('enter', container,
+ * function callback(element, phase) {
+ * // cool we detected an enter animation within the container
+ * }
+ * );
+ * ```
+ *
+ * @param {string} event the animation event that will be captured (e.g. enter, leave, move, addClass, removeClass, etc...)
+ * @param {DOMElement} container the container element that will capture each of the animation events that are fired on itself
+ * as well as among its children
+ * @param {Function} callback the callback function that will be fired when the listener is triggered
+ *
+ * The arguments present in the callback function are:
+ * * `element` - The captured DOM element that the animation was fired on.
+ * * `phase` - The phase of the animation. The two possible phases are **start** (when the animation starts) and **close** (when it ends).
+ */
+ on: $$animateQueue.on,
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#off
+ * @kind function
+ * @description Deregisters an event listener based on the event which has been associated with the provided element. This method
+ * can be used in three different ways depending on the arguments:
+ *
+ * ```js
+ * // remove all the animation event listeners listening for `enter`
+ * $animate.off('enter');
+ *
+ * // remove all the animation event listeners listening for `enter` on the given element and its children
+ * $animate.off('enter', container);
+ *
+ * // remove the event listener function provided by `listenerFn` that is set
+ * // to listen for `enter` on the given `element` as well as its children
+ * $animate.off('enter', container, callback);
+ * ```
+ *
+ * @param {string} event the animation event (e.g. enter, leave, move, addClass, removeClass, etc...)
+ * @param {DOMElement=} container the container element the event listener was placed on
+ * @param {Function=} callback the callback function that was registered as the listener
+ */
+ off: $$animateQueue.off,
+
+ /**
+ * @ngdoc method
+ * @name $animate#pin
+ * @kind function
+ * @description Associates the provided element with a host parent element to allow the element to be animated even if it exists
+ * outside of the DOM structure of the Angular application. By doing so, any animation triggered via `$animate` can be issued on the
+ * element despite being outside the realm of the application or within another application. Say for example if the application
+ * was bootstrapped on an element that is somewhere inside of the `<body>` tag, but we wanted to allow for an element to be situated
+ * as a direct child of `document.body`, then this can be achieved by pinning the element via `$animate.pin(element)`. Keep in mind
+ * that calling `$animate.pin(element, parentElement)` will not actually insert into the DOM anywhere; it will just create the association.
+ *
+ * Note that this feature is only active when the `ngAnimate` module is used.
+ *
+ * @param {DOMElement} element the external element that will be pinned
+ * @param {DOMElement} parentElement the host parent element that will be associated with the external element
+ */
+ pin: $$animateQueue.pin,
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#enabled
+ * @kind function
+ * @description Used to get and set whether animations are enabled or not on the entire application or on an element and its children. This
+ * function can be called in four ways:
+ *
+ * ```js
+ * // returns true or false
+ * $animate.enabled();
+ *
+ * // changes the enabled state for all animations
+ * $animate.enabled(false);
+ * $animate.enabled(true);
+ *
+ * // returns true or false if animations are enabled for an element
+ * $animate.enabled(element);
+ *
+ * // changes the enabled state for an element and its children
+ * $animate.enabled(element, true);
+ * $animate.enabled(element, false);
+ * ```
+ *
+ * @param {DOMElement=} element the element that will be considered for checking/setting the enabled state
+ * @param {boolean=} enabled whether or not the animations will be enabled for the element
+ *
+ * @return {boolean} whether or not animations are enabled
+ */
+ enabled: $$animateQueue.enabled,
+
+ /**
+ * @ngdoc method
+ * @name $animate#cancel
+ * @kind function
+ * @description Cancels the provided animation.
+ *
+ * @param {Promise} animationPromise The animation promise that is returned when an animation is started.
+ */
+ cancel: function(runner) {
+ runner.end && runner.end();
+ },
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#enter
+ * @kind function
+ * @description Inserts the element into the DOM either after the `after` element (if provided) or
+ * as the first child within the `parent` element and then triggers an animation.
+ * A promise is returned that will be resolved during the next digest once the animation
+ * has completed.
+ *
+ * @param {DOMElement} element the element which will be inserted into the DOM
+ * @param {DOMElement} parent the parent element which will append the element as
+ * a child (so long as the after element is not present)
+ * @param {DOMElement=} after the sibling element after which the element will be appended
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ enter: function(element, parent, after, options) {
+ parent = parent && jqLite(parent);
+ after = after && jqLite(after);
+ parent = parent || after.parent();
+ domInsert(element, parent, after);
+ return $$animateQueue.push(element, 'enter', prepareAnimateOptions(options));
+ },
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#move
+ * @kind function
+ * @description Inserts (moves) the element into its new position in the DOM either after
+ * the `after` element (if provided) or as the first child within the `parent` element
+ * and then triggers an animation. A promise is returned that will be resolved
+ * during the next digest once the animation has completed.
+ *
+ * @param {DOMElement} element the element which will be moved into the new DOM position
+ * @param {DOMElement} parent the parent element which will append the element as
+ * a child (so long as the after element is not present)
+ * @param {DOMElement=} after the sibling element after which the element will be appended
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ move: function(element, parent, after, options) {
+ parent = parent && jqLite(parent);
+ after = after && jqLite(after);
+ parent = parent || after.parent();
+ domInsert(element, parent, after);
+ return $$animateQueue.push(element, 'move', prepareAnimateOptions(options));
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#leave
+ * @kind function
+ * @description Triggers an animation and then removes the element from the DOM.
+ * When the function is called a promise is returned that will be resolved during the next
+ * digest once the animation has completed.
+ *
+ * @param {DOMElement} element the element which will be removed from the DOM
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ leave: function(element, options) {
+ return $$animateQueue.push(element, 'leave', prepareAnimateOptions(options), function() {
+ element.remove();
+ });
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#addClass
+ * @kind function
+ *
+ * @description Triggers an addClass animation surrounding the addition of the provided CSS class(es). Upon
+ * execution, the addClass operation will only be handled after the next digest and it will not trigger an
+ * animation if element already contains the CSS class or if the class is removed at a later step.
+ * Note that class-based animations are treated differently compared to structural animations
+ * (like enter, move and leave) since the CSS classes may be added/removed at different points
+ * depending if CSS or JavaScript animations are used.
+ *
+ * @param {DOMElement} element the element which the CSS classes will be applied to
+ * @param {string} className the CSS class(es) that will be added (multiple classes are separated via spaces)
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ addClass: function(element, className, options) {
+ options = prepareAnimateOptions(options);
+ options.addClass = mergeClasses(options.addclass, className);
+ return $$animateQueue.push(element, 'addClass', options);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#removeClass
+ * @kind function
+ *
+ * @description Triggers a removeClass animation surrounding the removal of the provided CSS class(es). Upon
+ * execution, the removeClass operation will only be handled after the next digest and it will not trigger an
+ * animation if element does not contain the CSS class or if the class is added at a later step.
+ * Note that class-based animations are treated differently compared to structural animations
+ * (like enter, move and leave) since the CSS classes may be added/removed at different points
+ * depending if CSS or JavaScript animations are used.
+ *
+ * @param {DOMElement} element the element which the CSS classes will be applied to
+ * @param {string} className the CSS class(es) that will be removed (multiple classes are separated via spaces)
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ removeClass: function(element, className, options) {
+ options = prepareAnimateOptions(options);
+ options.removeClass = mergeClasses(options.removeClass, className);
+ return $$animateQueue.push(element, 'removeClass', options);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#setClass
+ * @kind function
+ *
+ * @description Performs both the addition and removal of a CSS classes on an element and (during the process)
+ * triggers an animation surrounding the class addition/removal. Much like `$animate.addClass` and
+ * `$animate.removeClass`, `setClass` will only evaluate the classes being added/removed once a digest has
+ * passed. Note that class-based animations are treated differently compared to structural animations
+ * (like enter, move and leave) since the CSS classes may be added/removed at different points
+ * depending if CSS or JavaScript animations are used.
+ *
+ * @param {DOMElement} element the element which the CSS classes will be applied to
+ * @param {string} add the CSS class(es) that will be added (multiple classes are separated via spaces)
+ * @param {string} remove the CSS class(es) that will be removed (multiple classes are separated via spaces)
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ setClass: function(element, add, remove, options) {
+ options = prepareAnimateOptions(options);
+ options.addClass = mergeClasses(options.addClass, add);
+ options.removeClass = mergeClasses(options.removeClass, remove);
+ return $$animateQueue.push(element, 'setClass', options);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#animate
+ * @kind function
+ *
+ * @description Performs an inline animation on the element which applies the provided to and from CSS styles to the element.
+ * If any detected CSS transition, keyframe or JavaScript matches the provided className value then the animation will take
+ * on the provided styles. For example, if a transition animation is set for the given className then the provided from and
+ * to styles will be applied alongside the given transition. If a JavaScript animation is detected then the provided styles
+ * will be given in as function paramters into the `animate` method (or as apart of the `options` parameter).
+ *
+ * @param {DOMElement} element the element which the CSS styles will be applied to
+ * @param {object} from the from (starting) CSS styles that will be applied to the element and across the animation.
+ * @param {object} to the to (destination) CSS styles that will be applied to the element and across the animation.
+ * @param {string=} className an optional CSS class that will be applied to the element for the duration of the animation. If
+ * this value is left as empty then a CSS class of `ng-inline-animate` will be applied to the element.
+ * (Note that if no animation is detected then this value will not be appplied to the element.)
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ animate: function(element, from, to, className, options) {
+ options = prepareAnimateOptions(options);
+ options.from = options.from ? extend(options.from, from) : from;
+ options.to = options.to ? extend(options.to, to) : to;
+
+ className = className || 'ng-inline-animate';
+ options.tempClasses = mergeClasses(options.tempClasses, className);
+ return $$animateQueue.push(element, 'animate', options);
+ }
+ };
+ }];
+}];
+
+/**
+ * @ngdoc service
+ * @name $animateCss
+ * @kind object
+ *
+ * @description
+ * This is the core version of `$animateCss`. By default, only when the `ngAnimate` is included,
+ * then the `$animateCss` service will actually perform animations.
+ *
+ * Click here {@link ngAnimate.$animateCss to read the documentation for $animateCss}.
+ */
+var $CoreAnimateCssProvider = function() {
+ this.$get = ['$$rAF', '$q', function($$rAF, $q) {
+
+ var RAFPromise = function() {};
+ RAFPromise.prototype = {
+ done: function(cancel) {
+ this.defer && this.defer[cancel === true ? 'reject' : 'resolve']();
+ },
+ end: function() {
+ this.done();
+ },
+ cancel: function() {
+ this.done(true);
+ },
+ getPromise: function() {
+ if (!this.defer) {
+ this.defer = $q.defer();
+ }
+ return this.defer.promise;
+ },
+ then: function(f1,f2) {
+ return this.getPromise().then(f1,f2);
+ },
+ 'catch': function(f1) {
+ return this.getPromise().catch(f1);
+ },
+ 'finally': function(f1) {
+ return this.getPromise().finally(f1);
+ }
+ };
+
+ return function(element, options) {
+ if (options.from) {
+ element.css(options.from);
+ options.from = null;
+ }
+
+ var closed, runner = new RAFPromise();
+ return {
+ start: run,
+ end: run
+ };
+
+ function run() {
+ $$rAF(function() {
+ close();
+ if (!closed) {
+ runner.done();
+ }
+ closed = true;
+ });
+ return runner;
+ }
+
+ function close() {
+ if (options.addClass) {
+ element.addClass(options.addClass);
+ options.addClass = null;
+ }
+ if (options.removeClass) {
+ element.removeClass(options.removeClass);
+ options.removeClass = null;
+ }
+ if (options.to) {
+ element.css(options.to);
+ options.to = null;
+ }
+ }
+ };
+ }];
+};
+
+/* global stripHash: true */
+
+/**
+ * ! This is a private undocumented service !
+ *
+ * @name $browser
+ * @requires $log
+ * @description
+ * This object has two goals:
+ *
+ * - hide all the global state in the browser caused by the window object
+ * - abstract away all the browser specific features and inconsistencies
+ *
+ * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser`
+ * service, which can be used for convenient testing of the application without the interaction with
+ * the real browser apis.
+ */
+/**
+ * @param {object} window The global window object.
+ * @param {object} document jQuery wrapped document.
+ * @param {object} $log window.console or an object with the same interface.
+ * @param {object} $sniffer $sniffer service
+ */
+function Browser(window, document, $log, $sniffer) {
+ var self = this,
+ rawDocument = document[0],
+ location = window.location,
+ history = window.history,
+ setTimeout = window.setTimeout,
+ clearTimeout = window.clearTimeout,
+ pendingDeferIds = {};
+
+ self.isMock = false;
+
+ var outstandingRequestCount = 0;
+ var outstandingRequestCallbacks = [];
+
+ // TODO(vojta): remove this temporary api
+ self.$$completeOutstandingRequest = completeOutstandingRequest;
+ self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; };
+
+ /**
+ * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks`
+ * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed.
+ */
+ function completeOutstandingRequest(fn) {
+ try {
+ fn.apply(null, sliceArgs(arguments, 1));
+ } finally {
+ outstandingRequestCount--;
+ if (outstandingRequestCount === 0) {
+ while (outstandingRequestCallbacks.length) {
+ try {
+ outstandingRequestCallbacks.pop()();
+ } catch (e) {
+ $log.error(e);
+ }
+ }
+ }
+ }
+ }
+
+ function getHash(url) {
+ var index = url.indexOf('#');
+ return index === -1 ? '' : url.substr(index);
+ }
+
+ /**
+ * @private
+ * Note: this method is used only by scenario runner
+ * TODO(vojta): prefix this method with $$ ?
+ * @param {function()} callback Function that will be called when no outstanding request
+ */
+ self.notifyWhenNoOutstandingRequests = function(callback) {
+ if (outstandingRequestCount === 0) {
+ callback();
+ } else {
+ outstandingRequestCallbacks.push(callback);
+ }
+ };
+
+ //////////////////////////////////////////////////////////////
+ // URL API
+ //////////////////////////////////////////////////////////////
+
+ var cachedState, lastHistoryState,
+ lastBrowserUrl = location.href,
+ baseElement = document.find('base'),
+ reloadLocation = null;
+
+ cacheState();
+ lastHistoryState = cachedState;
+
+ /**
+ * @name $browser#url
+ *
+ * @description
+ * GETTER:
+ * Without any argument, this method just returns current value of location.href.
+ *
+ * SETTER:
+ * With at least one argument, this method sets url to new value.
+ * If html5 history api supported, pushState/replaceState is used, otherwise
+ * location.href/location.replace is used.
+ * Returns its own instance to allow chaining
+ *
+ * NOTE: this api is intended for use only by the $location service. Please use the
+ * {@link ng.$location $location service} to change url.
+ *
+ * @param {string} url New url (when used as setter)
+ * @param {boolean=} replace Should new url replace current history record?
+ * @param {object=} state object to use with pushState/replaceState
+ */
+ self.url = function(url, replace, state) {
+ // In modern browsers `history.state` is `null` by default; treating it separately
+ // from `undefined` would cause `$browser.url('/foo')` to change `history.state`
+ // to undefined via `pushState`. Instead, let's change `undefined` to `null` here.
+ if (isUndefined(state)) {
+ state = null;
+ }
+
+ // Android Browser BFCache causes location, history reference to become stale.
+ if (location !== window.location) location = window.location;
+ if (history !== window.history) history = window.history;
+
+ // setter
+ if (url) {
+ var sameState = lastHistoryState === state;
+
+ // Don't change anything if previous and current URLs and states match. This also prevents
+ // IE<10 from getting into redirect loop when in LocationHashbangInHtml5Url mode.
+ // See https://github.com/angular/angular.js/commit/ffb2701
+ if (lastBrowserUrl === url && (!$sniffer.history || sameState)) {
+ return self;
+ }
+ var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);
+ lastBrowserUrl = url;
+ lastHistoryState = state;
+ // Don't use history API if only the hash changed
+ // due to a bug in IE10/IE11 which leads
+ // to not firing a `hashchange` nor `popstate` event
+ // in some cases (see #9143).
+ if ($sniffer.history && (!sameBase || !sameState)) {
+ history[replace ? 'replaceState' : 'pushState'](state, '', url);
+ cacheState();
+ // Do the assignment again so that those two variables are referentially identical.
+ lastHistoryState = cachedState;
+ } else {
+ if (!sameBase || reloadLocation) {
+ reloadLocation = url;
+ }
+ if (replace) {
+ location.replace(url);
+ } else if (!sameBase) {
+ location.href = url;
+ } else {
+ location.hash = getHash(url);
+ }
+ }
+ return self;
+ // getter
+ } else {
+ // - reloadLocation is needed as browsers don't allow to read out
+ // the new location.href if a reload happened.
+ // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172
+ return reloadLocation || location.href.replace(/%27/g,"'");
+ }
+ };
+
+ /**
+ * @name $browser#state
+ *
+ * @description
+ * This method is a getter.
+ *
+ * Return history.state or null if history.state is undefined.
+ *
+ * @returns {object} state
+ */
+ self.state = function() {
+ return cachedState;
+ };
+
+ var urlChangeListeners = [],
+ urlChangeInit = false;
+
+ function cacheStateAndFireUrlChange() {
+ cacheState();
+ fireUrlChange();
+ }
+
+ function getCurrentState() {
+ try {
+ return history.state;
+ } catch (e) {
+ // MSIE can reportedly throw when there is no state (UNCONFIRMED).
+ }
+ }
+
+ // This variable should be used *only* inside the cacheState function.
+ var lastCachedState = null;
+ function cacheState() {
+ // This should be the only place in $browser where `history.state` is read.
+ cachedState = getCurrentState();
+ cachedState = isUndefined(cachedState) ? null : cachedState;
+
+ // Prevent callbacks fo fire twice if both hashchange & popstate were fired.
+ if (equals(cachedState, lastCachedState)) {
+ cachedState = lastCachedState;
+ }
+ lastCachedState = cachedState;
+ }
+
+ function fireUrlChange() {
+ if (lastBrowserUrl === self.url() && lastHistoryState === cachedState) {
+ return;
+ }
+
+ lastBrowserUrl = self.url();
+ lastHistoryState = cachedState;
+ forEach(urlChangeListeners, function(listener) {
+ listener(self.url(), cachedState);
+ });
+ }
+
+ /**
+ * @name $browser#onUrlChange
+ *
+ * @description
+ * Register callback function that will be called, when url changes.
+ *
+ * It's only called when the url is changed from outside of angular:
+ * - user types different url into address bar
+ * - user clicks on history (forward/back) button
+ * - user clicks on a link
+ *
+ * It's not called when url is changed by $browser.url() method
+ *
+ * The listener gets called with new url as parameter.
+ *
+ * NOTE: this api is intended for use only by the $location service. Please use the
+ * {@link ng.$location $location service} to monitor url changes in angular apps.
+ *
+ * @param {function(string)} listener Listener function to be called when url changes.
+ * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous.
+ */
+ self.onUrlChange = function(callback) {
+ // TODO(vojta): refactor to use node's syntax for events
+ if (!urlChangeInit) {
+ // We listen on both (hashchange/popstate) when available, as some browsers (e.g. Opera)
+ // don't fire popstate when user change the address bar and don't fire hashchange when url
+ // changed by push/replaceState
+
+ // html5 history api - popstate event
+ if ($sniffer.history) jqLite(window).on('popstate', cacheStateAndFireUrlChange);
+ // hashchange event
+ jqLite(window).on('hashchange', cacheStateAndFireUrlChange);
+
+ urlChangeInit = true;
+ }
+
+ urlChangeListeners.push(callback);
+ return callback;
+ };
+
+ /**
+ * @private
+ * Remove popstate and hashchange handler from window.
+ *
+ * NOTE: this api is intended for use only by $rootScope.
+ */
+ self.$$applicationDestroyed = function() {
+ jqLite(window).off('hashchange popstate', cacheStateAndFireUrlChange);
+ };
+
+ /**
+ * Checks whether the url has changed outside of Angular.
+ * Needs to be exported to be able to check for changes that have been done in sync,
+ * as hashchange/popstate events fire in async.
+ */
+ self.$$checkUrlChange = fireUrlChange;
+
+ //////////////////////////////////////////////////////////////
+ // Misc API
+ //////////////////////////////////////////////////////////////
+
+ /**
+ * @name $browser#baseHref
+ *
+ * @description
+ * Returns current <base href>
+ * (always relative - without domain)
+ *
+ * @returns {string} The current base href
+ */
+ self.baseHref = function() {
+ var href = baseElement.attr('href');
+ return href ? href.replace(/^(https?\:)?\/\/[^\/]*/, '') : '';
+ };
+
+ /**
+ * @name $browser#defer
+ * @param {function()} fn A function, who's execution should be deferred.
+ * @param {number=} [delay=0] of milliseconds to defer the function execution.
+ * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.
+ *
+ * @description
+ * Executes a fn asynchronously via `setTimeout(fn, delay)`.
+ *
+ * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using
+ * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed
+ * via `$browser.defer.flush()`.
+ *
+ */
+ self.defer = function(fn, delay) {
+ var timeoutId;
+ outstandingRequestCount++;
+ timeoutId = setTimeout(function() {
+ delete pendingDeferIds[timeoutId];
+ completeOutstandingRequest(fn);
+ }, delay || 0);
+ pendingDeferIds[timeoutId] = true;
+ return timeoutId;
+ };
+
+
+ /**
+ * @name $browser#defer.cancel
+ *
+ * @description
+ * Cancels a deferred task identified with `deferId`.
+ *
+ * @param {*} deferId Token returned by the `$browser.defer` function.
+ * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully
+ * canceled.
+ */
+ self.defer.cancel = function(deferId) {
+ if (pendingDeferIds[deferId]) {
+ delete pendingDeferIds[deferId];
+ clearTimeout(deferId);
+ completeOutstandingRequest(noop);
+ return true;
+ }
+ return false;
+ };
+
+}
+
+function $BrowserProvider() {
+ this.$get = ['$window', '$log', '$sniffer', '$document',
+ function($window, $log, $sniffer, $document) {
+ return new Browser($window, $document, $log, $sniffer);
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $cacheFactory
+ *
+ * @description
+ * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to
+ * them.
+ *
+ * ```js
+ *
+ * var cache = $cacheFactory('cacheId');
+ * expect($cacheFactory.get('cacheId')).toBe(cache);
+ * expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();
+ *
+ * cache.put("key", "value");
+ * cache.put("another key", "another value");
+ *
+ * // We've specified no options on creation
+ * expect(cache.info()).toEqual({id: 'cacheId', size: 2});
+ *
+ * ```
+ *
+ *
+ * @param {string} cacheId Name or id of the newly created cache.
+ * @param {object=} options Options object that specifies the cache behavior. Properties:
+ *
+ * - `{number=}` `capacity` — turns the cache into LRU cache.
+ *
+ * @returns {object} Newly created cache object with the following set of methods:
+ *
+ * - `{object}` `info()` — Returns id, size, and options of cache.
+ * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns
+ * it.
+ * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss.
+ * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache.
+ * - `{void}` `removeAll()` — Removes all cached values.
+ * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.
+ *
+ * @example
+ <example module="cacheExampleApp">
+ <file name="index.html">
+ <div ng-controller="CacheController">
+ <input ng-model="newCacheKey" placeholder="Key">
+ <input ng-model="newCacheValue" placeholder="Value">
+ <button ng-click="put(newCacheKey, newCacheValue)">Cache</button>
+
+ <p ng-if="keys.length">Cached Values</p>
+ <div ng-repeat="key in keys">
+ <span ng-bind="key"></span>
+ <span>: </span>
+ <b ng-bind="cache.get(key)"></b>
+ </div>
+
+ <p>Cache Info</p>
+ <div ng-repeat="(key, value) in cache.info()">
+ <span ng-bind="key"></span>
+ <span>: </span>
+ <b ng-bind="value"></b>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('cacheExampleApp', []).
+ controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
+ $scope.keys = [];
+ $scope.cache = $cacheFactory('cacheId');
+ $scope.put = function(key, value) {
+ if ($scope.cache.get(key) === undefined) {
+ $scope.keys.push(key);
+ }
+ $scope.cache.put(key, value === undefined ? null : value);
+ };
+ }]);
+ </file>
+ <file name="style.css">
+ p {
+ margin: 10px 0 3px;
+ }
+ </file>
+ </example>
+ */
+function $CacheFactoryProvider() {
+
+ this.$get = function() {
+ var caches = {};
+
+ function cacheFactory(cacheId, options) {
+ if (cacheId in caches) {
+ throw minErr('$cacheFactory')('iid', "CacheId '{0}' is already taken!", cacheId);
+ }
+
+ var size = 0,
+ stats = extend({}, options, {id: cacheId}),
+ data = {},
+ capacity = (options && options.capacity) || Number.MAX_VALUE,
+ lruHash = {},
+ freshEnd = null,
+ staleEnd = null;
+
+ /**
+ * @ngdoc type
+ * @name $cacheFactory.Cache
+ *
+ * @description
+ * A cache object used to store and retrieve data, primarily used by
+ * {@link $http $http} and the {@link ng.directive:script script} directive to cache
+ * templates and other data.
+ *
+ * ```js
+ * angular.module('superCache')
+ * .factory('superCache', ['$cacheFactory', function($cacheFactory) {
+ * return $cacheFactory('super-cache');
+ * }]);
+ * ```
+ *
+ * Example test:
+ *
+ * ```js
+ * it('should behave like a cache', inject(function(superCache) {
+ * superCache.put('key', 'value');
+ * superCache.put('another key', 'another value');
+ *
+ * expect(superCache.info()).toEqual({
+ * id: 'super-cache',
+ * size: 2
+ * });
+ *
+ * superCache.remove('another key');
+ * expect(superCache.get('another key')).toBeUndefined();
+ *
+ * superCache.removeAll();
+ * expect(superCache.info()).toEqual({
+ * id: 'super-cache',
+ * size: 0
+ * });
+ * }));
+ * ```
+ */
+ return caches[cacheId] = {
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#put
+ * @kind function
+ *
+ * @description
+ * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be
+ * retrieved later, and incrementing the size of the cache if the key was not already
+ * present in the cache. If behaving like an LRU cache, it will also remove stale
+ * entries from the set.
+ *
+ * It will not insert undefined values into the cache.
+ *
+ * @param {string} key the key under which the cached data is stored.
+ * @param {*} value the value to store alongside the key. If it is undefined, the key
+ * will not be stored.
+ * @returns {*} the value stored.
+ */
+ put: function(key, value) {
+ if (isUndefined(value)) return;
+ if (capacity < Number.MAX_VALUE) {
+ var lruEntry = lruHash[key] || (lruHash[key] = {key: key});
+
+ refresh(lruEntry);
+ }
+
+ if (!(key in data)) size++;
+ data[key] = value;
+
+ if (size > capacity) {
+ this.remove(staleEnd.key);
+ }
+
+ return value;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#get
+ * @kind function
+ *
+ * @description
+ * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.
+ *
+ * @param {string} key the key of the data to be retrieved
+ * @returns {*} the value stored.
+ */
+ get: function(key) {
+ if (capacity < Number.MAX_VALUE) {
+ var lruEntry = lruHash[key];
+
+ if (!lruEntry) return;
+
+ refresh(lruEntry);
+ }
+
+ return data[key];
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#remove
+ * @kind function
+ *
+ * @description
+ * Removes an entry from the {@link $cacheFactory.Cache Cache} object.
+ *
+ * @param {string} key the key of the entry to be removed
+ */
+ remove: function(key) {
+ if (capacity < Number.MAX_VALUE) {
+ var lruEntry = lruHash[key];
+
+ if (!lruEntry) return;
+
+ if (lruEntry == freshEnd) freshEnd = lruEntry.p;
+ if (lruEntry == staleEnd) staleEnd = lruEntry.n;
+ link(lruEntry.n,lruEntry.p);
+
+ delete lruHash[key];
+ }
+
+ delete data[key];
+ size--;
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#removeAll
+ * @kind function
+ *
+ * @description
+ * Clears the cache object of any entries.
+ */
+ removeAll: function() {
+ data = {};
+ size = 0;
+ lruHash = {};
+ freshEnd = staleEnd = null;
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#destroy
+ * @kind function
+ *
+ * @description
+ * Destroys the {@link $cacheFactory.Cache Cache} object entirely,
+ * removing it from the {@link $cacheFactory $cacheFactory} set.
+ */
+ destroy: function() {
+ data = null;
+ stats = null;
+ lruHash = null;
+ delete caches[cacheId];
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#info
+ * @kind function
+ *
+ * @description
+ * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.
+ *
+ * @returns {object} an object with the following properties:
+ * <ul>
+ * <li>**id**: the id of the cache instance</li>
+ * <li>**size**: the number of entries kept in the cache instance</li>
+ * <li>**...**: any additional properties from the options object when creating the
+ * cache.</li>
+ * </ul>
+ */
+ info: function() {
+ return extend({}, stats, {size: size});
+ }
+ };
+
+
+ /**
+ * makes the `entry` the freshEnd of the LRU linked list
+ */
+ function refresh(entry) {
+ if (entry != freshEnd) {
+ if (!staleEnd) {
+ staleEnd = entry;
+ } else if (staleEnd == entry) {
+ staleEnd = entry.n;
+ }
+
+ link(entry.n, entry.p);
+ link(entry, freshEnd);
+ freshEnd = entry;
+ freshEnd.n = null;
+ }
+ }
+
+
+ /**
+ * bidirectionally links two entries of the LRU linked list
+ */
+ function link(nextEntry, prevEntry) {
+ if (nextEntry != prevEntry) {
+ if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify
+ if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify
+ }
+ }
+ }
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory#info
+ *
+ * @description
+ * Get information about all the caches that have been created
+ *
+ * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`
+ */
+ cacheFactory.info = function() {
+ var info = {};
+ forEach(caches, function(cache, cacheId) {
+ info[cacheId] = cache.info();
+ });
+ return info;
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory#get
+ *
+ * @description
+ * Get access to a cache object by the `cacheId` used when it was created.
+ *
+ * @param {string} cacheId Name or id of a cache to access.
+ * @returns {object} Cache object identified by the cacheId or undefined if no such cache.
+ */
+ cacheFactory.get = function(cacheId) {
+ return caches[cacheId];
+ };
+
+
+ return cacheFactory;
+ };
+}
+
+/**
+ * @ngdoc service
+ * @name $templateCache
+ *
+ * @description
+ * The first time a template is used, it is loaded in the template cache for quick retrieval. You
+ * can load templates directly into the cache in a `script` tag, or by consuming the
+ * `$templateCache` service directly.
+ *
+ * Adding via the `script` tag:
+ *
+ * ```html
+ * <script type="text/ng-template" id="templateId.html">
+ * <p>This is the content of the template</p>
+ * </script>
+ * ```
+ *
+ * **Note:** the `script` tag containing the template does not need to be included in the `head` of
+ * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE,
+ * element with ng-app attribute), otherwise the template will be ignored.
+ *
+ * Adding via the `$templateCache` service:
+ *
+ * ```js
+ * var myApp = angular.module('myApp', []);
+ * myApp.run(function($templateCache) {
+ * $templateCache.put('templateId.html', 'This is the content of the template');
+ * });
+ * ```
+ *
+ * To retrieve the template later, simply use it in your HTML:
+ * ```html
+ * <div ng-include=" 'templateId.html' "></div>
+ * ```
+ *
+ * or get it via Javascript:
+ * ```js
+ * $templateCache.get('templateId.html')
+ * ```
+ *
+ * See {@link ng.$cacheFactory $cacheFactory}.
+ *
+ */
+function $TemplateCacheProvider() {
+ this.$get = ['$cacheFactory', function($cacheFactory) {
+ return $cacheFactory('templates');
+ }];
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Any commits to this file should be reviewed with security in mind. *
+ * Changes to this file can potentially create security vulnerabilities. *
+ * An approval from 2 Core members with history of modifying *
+ * this file is required. *
+ * *
+ * Does the change somehow allow for arbitrary javascript to be executed? *
+ * Or allows for someone to change the prototype of built-in objects? *
+ * Or gives undesired access to variables likes document or window? *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!
+ *
+ * DOM-related variables:
+ *
+ * - "node" - DOM Node
+ * - "element" - DOM Element or Node
+ * - "$node" or "$element" - jqLite-wrapped node or element
+ *
+ *
+ * Compiler related stuff:
+ *
+ * - "linkFn" - linking fn of a single directive
+ * - "nodeLinkFn" - function that aggregates all linking fns for a particular node
+ * - "childLinkFn" - function that aggregates all linking fns for child nodes of a particular node
+ * - "compositeLinkFn" - function that aggregates all linking fns for a compilation root (nodeList)
+ */
+
+
+/**
+ * @ngdoc service
+ * @name $compile
+ * @kind function
+ *
+ * @description
+ * Compiles an HTML string or DOM into a template and produces a template function, which
+ * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.
+ *
+ * The compilation is a process of walking the DOM tree and matching DOM elements to
+ * {@link ng.$compileProvider#directive directives}.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** This document is an in-depth reference of all directive options.
+ * For a gentle introduction to directives with examples of common use cases,
+ * see the {@link guide/directive directive guide}.
+ * </div>
+ *
+ * ## Comprehensive Directive API
+ *
+ * There are many different options for a directive.
+ *
+ * The difference resides in the return value of the factory function.
+ * You can either return a "Directive Definition Object" (see below) that defines the directive properties,
+ * or just the `postLink` function (all other properties will have the default values).
+ *
+ * <div class="alert alert-success">
+ * **Best Practice:** It's recommended to use the "directive definition object" form.
+ * </div>
+ *
+ * Here's an example directive declared with a Directive Definition Object:
+ *
+ * ```js
+ * var myModule = angular.module(...);
+ *
+ * myModule.directive('directiveName', function factory(injectables) {
+ * var directiveDefinitionObject = {
+ * priority: 0,
+ * template: '<div></div>', // or // function(tElement, tAttrs) { ... },
+ * // or
+ * // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },
+ * transclude: false,
+ * restrict: 'A',
+ * templateNamespace: 'html',
+ * scope: false,
+ * controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
+ * controllerAs: 'stringIdentifier',
+ * bindToController: false,
+ * require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],
+ * compile: function compile(tElement, tAttrs, transclude) {
+ * return {
+ * pre: function preLink(scope, iElement, iAttrs, controller) { ... },
+ * post: function postLink(scope, iElement, iAttrs, controller) { ... }
+ * }
+ * // or
+ * // return function postLink( ... ) { ... }
+ * },
+ * // or
+ * // link: {
+ * // pre: function preLink(scope, iElement, iAttrs, controller) { ... },
+ * // post: function postLink(scope, iElement, iAttrs, controller) { ... }
+ * // }
+ * // or
+ * // link: function postLink( ... ) { ... }
+ * };
+ * return directiveDefinitionObject;
+ * });
+ * ```
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Any unspecified options will use the default value. You can see the default values below.
+ * </div>
+ *
+ * Therefore the above can be simplified as:
+ *
+ * ```js
+ * var myModule = angular.module(...);
+ *
+ * myModule.directive('directiveName', function factory(injectables) {
+ * var directiveDefinitionObject = {
+ * link: function postLink(scope, iElement, iAttrs) { ... }
+ * };
+ * return directiveDefinitionObject;
+ * // or
+ * // return function postLink(scope, iElement, iAttrs) { ... }
+ * });
+ * ```
+ *
+ *
+ *
+ * ### Directive Definition Object
+ *
+ * The directive definition object provides instructions to the {@link ng.$compile
+ * compiler}. The attributes are:
+ *
+ * #### `multiElement`
+ * When this property is set to true, the HTML compiler will collect DOM nodes between
+ * nodes with the attributes `directive-name-start` and `directive-name-end`, and group them
+ * together as the directive elements. It is recommended that this feature be used on directives
+ * which are not strictly behavioural (such as {@link ngClick}), and which
+ * do not manipulate or replace child nodes (such as {@link ngInclude}).
+ *
+ * #### `priority`
+ * When there are multiple directives defined on a single DOM element, sometimes it
+ * is necessary to specify the order in which the directives are applied. The `priority` is used
+ * to sort the directives before their `compile` functions get called. Priority is defined as a
+ * number. Directives with greater numerical `priority` are compiled first. Pre-link functions
+ * are also run in priority order, but post-link functions are run in reverse order. The order
+ * of directives with the same priority is undefined. The default priority is `0`.
+ *
+ * #### `terminal`
+ * If set to true then the current `priority` will be the last set of directives
+ * which will execute (any directives at the current priority will still execute
+ * as the order of execution on same `priority` is undefined). Note that expressions
+ * and other directives used in the directive's template will also be excluded from execution.
+ *
+ * #### `scope`
+ * **If set to `true`,** then a new scope will be created for this directive. If multiple directives on the
+ * same element request a new scope, only one new scope is created. The new scope rule does not
+ * apply for the root of the template since the root of the template always gets a new scope.
+ *
+ * **If set to `{}` (object hash),** then a new "isolate" scope is created. The 'isolate' scope differs from
+ * normal scope in that it does not prototypically inherit from the parent scope. This is useful
+ * when creating reusable components, which should not accidentally read or modify data in the
+ * parent scope.
+ *
+ * The 'isolate' scope takes an object hash which defines a set of local scope properties
+ * derived from the parent scope. These local properties are useful for aliasing values for
+ * templates. Locals definition is a hash of local scope property to its source:
+ *
+ * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is
+ * always a string since DOM attributes are strings. If no `attr` name is specified then the
+ * attribute name is assumed to be the same as the local name.
+ * Given `<widget my-attr="hello {{name}}">` and widget definition
+ * of `scope: { localName:'@myAttr' }`, then widget scope property `localName` will reflect
+ * the interpolated value of `hello {{name}}`. As the `name` attribute changes so will the
+ * `localName` property on the widget scope. The `name` is read from the parent scope (not
+ * component scope).
+ *
+ * * `=` or `=attr` - set up bi-directional binding between a local scope property and the
+ * parent scope property of name defined via the value of the `attr` attribute. If no `attr`
+ * name is specified then the attribute name is assumed to be the same as the local name.
+ * Given `<widget my-attr="parentModel">` and widget definition of
+ * `scope: { localModel:'=myAttr' }`, then widget scope property `localModel` will reflect the
+ * value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected
+ * in `localModel` and any changes in `localModel` will reflect in `parentModel`. If the parent
+ * scope property doesn't exist, it will throw a NON_ASSIGNABLE_MODEL_EXPRESSION exception. You
+ * can avoid this behavior using `=?` or `=?attr` in order to flag the property as optional. If
+ * you want to shallow watch for changes (i.e. $watchCollection instead of $watch) you can use
+ * `=*` or `=*attr` (`=*?` or `=*?attr` if the property is optional).
+ *
+ * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope.
+ * If no `attr` name is specified then the attribute name is assumed to be the same as the
+ * local name. Given `<widget my-attr="count = count + value">` and widget definition of
+ * `scope: { localFn:'&myAttr' }`, then isolate scope property `localFn` will point to
+ * a function wrapper for the `count = count + value` expression. Often it's desirable to
+ * pass data from the isolated scope via an expression to the parent scope, this can be
+ * done by passing a map of local variable names and values into the expression wrapper fn.
+ * For example, if the expression is `increment(amount)` then we can specify the amount value
+ * by calling the `localFn` as `localFn({amount: 22})`.
+ *
+ *
+ * #### `bindToController`
+ * When an isolate scope is used for a component (see above), and `controllerAs` is used, `bindToController: true` will
+ * allow a component to have its properties bound to the controller, rather than to scope. When the controller
+ * is instantiated, the initial values of the isolate scope bindings are already available.
+ *
+ * #### `controller`
+ * Controller constructor function. The controller is instantiated before the
+ * pre-linking phase and it is shared with other directives (see
+ * `require` attribute). This allows the directives to communicate with each other and augment
+ * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:
+ *
+ * * `$scope` - Current scope associated with the element
+ * * `$element` - Current element
+ * * `$attrs` - Current attributes object for the element
+ * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope:
+ * `function([scope], cloneLinkingFn, futureParentElement)`.
+ * * `scope`: optional argument to override the scope.
+ * * `cloneLinkingFn`: optional argument to create clones of the original transcluded content.
+ * * `futureParentElement`:
+ * * defines the parent to which the `cloneLinkingFn` will add the cloned elements.
+ * * default: `$element.parent()` resp. `$element` for `transclude:'element'` resp. `transclude:true`.
+ * * only needed for transcludes that are allowed to contain non html elements (e.g. SVG elements)
+ * and when the `cloneLinkinFn` is passed,
+ * as those elements need to created and cloned in a special way when they are defined outside their
+ * usual containers (e.g. like `<svg>`).
+ * * See also the `directive.templateNamespace` property.
+ *
+ *
+ * #### `require`
+ * Require another directive and inject its controller as the fourth argument to the linking function. The
+ * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the
+ * injected argument will be an array in corresponding order. If no such directive can be
+ * found, or if the directive does not have a controller, then an error is raised (unless no link function
+ * is specified, in which case error checking is skipped). The name can be prefixed with:
+ *
+ * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.
+ * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.
+ * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.
+ * * `^^` - Locate the required controller by searching the element's parents. Throw an error if not found.
+ * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass
+ * `null` to the `link` fn if not found.
+ * * `?^^` - Attempt to locate the required controller by searching the element's parents, or pass
+ * `null` to the `link` fn if not found.
+ *
+ *
+ * #### `controllerAs`
+ * Identifier name for a reference to the controller in the directive's scope.
+ * This allows the controller to be referenced from the directive template. The directive
+ * needs to define a scope for this configuration to be used. Useful in the case when
+ * directive is used as component.
+ *
+ *
+ * #### `restrict`
+ * String of subset of `EACM` which restricts the directive to a specific directive
+ * declaration style. If omitted, the defaults (elements and attributes) are used.
+ *
+ * * `E` - Element name (default): `<my-directive></my-directive>`
+ * * `A` - Attribute (default): `<div my-directive="exp"></div>`
+ * * `C` - Class: `<div class="my-directive: exp;"></div>`
+ * * `M` - Comment: `<!-- directive: my-directive exp -->`
+ *
+ *
+ * #### `templateNamespace`
+ * String representing the document type used by the markup in the template.
+ * AngularJS needs this information as those elements need to be created and cloned
+ * in a special way when they are defined outside their usual containers like `<svg>` and `<math>`.
+ *
+ * * `html` - All root nodes in the template are HTML. Root nodes may also be
+ * top-level elements such as `<svg>` or `<math>`.
+ * * `svg` - The root nodes in the template are SVG elements (excluding `<math>`).
+ * * `math` - The root nodes in the template are MathML elements (excluding `<svg>`).
+ *
+ * If no `templateNamespace` is specified, then the namespace is considered to be `html`.
+ *
+ * #### `template`
+ * HTML markup that may:
+ * * Replace the contents of the directive's element (default).
+ * * Replace the directive's element itself (if `replace` is true - DEPRECATED).
+ * * Wrap the contents of the directive's element (if `transclude` is true).
+ *
+ * Value may be:
+ *
+ * * A string. For example `<div red-on-hover>{{delete_str}}</div>`.
+ * * A function which takes two arguments `tElement` and `tAttrs` (described in the `compile`
+ * function api below) and returns a string value.
+ *
+ *
+ * #### `templateUrl`
+ * This is similar to `template` but the template is loaded from the specified URL, asynchronously.
+ *
+ * Because template loading is asynchronous the compiler will suspend compilation of directives on that element
+ * for later when the template has been resolved. In the meantime it will continue to compile and link
+ * sibling and parent elements as though this element had not contained any directives.
+ *
+ * The compiler does not suspend the entire compilation to wait for templates to be loaded because this
+ * would result in the whole app "stalling" until all templates are loaded asynchronously - even in the
+ * case when only one deeply nested directive has `templateUrl`.
+ *
+ * Template loading is asynchronous even if the template has been preloaded into the {@link $templateCache}
+ *
+ * You can specify `templateUrl` as a string representing the URL or as a function which takes two
+ * arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns
+ * a string value representing the url. In either case, the template URL is passed through {@link
+ * $sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}.
+ *
+ *
+ * #### `replace` ([*DEPRECATED*!], will be removed in next major release - i.e. v2.0)
+ * specify what the template should replace. Defaults to `false`.
+ *
+ * * `true` - the template will replace the directive's element.
+ * * `false` - the template will replace the contents of the directive's element.
+ *
+ * The replacement process migrates all of the attributes / classes from the old element to the new
+ * one. See the {@link guide/directive#template-expanding-directive
+ * Directives Guide} for an example.
+ *
+ * There are very few scenarios where element replacement is required for the application function,
+ * the main one being reusable custom components that are used within SVG contexts
+ * (because SVG doesn't work with custom elements in the DOM tree).
+ *
+ * #### `transclude`
+ * Extract the contents of the element where the directive appears and make it available to the directive.
+ * The contents are compiled and provided to the directive as a **transclusion function**. See the
+ * {@link $compile#transclusion Transclusion} section below.
+ *
+ * There are two kinds of transclusion depending upon whether you want to transclude just the contents of the
+ * directive's element or the entire element:
+ *
+ * * `true` - transclude the content (i.e. the child nodes) of the directive's element.
+ * * `'element'` - transclude the whole of the directive's element including any directives on this
+ * element that defined at a lower priority than this directive. When used, the `template`
+ * property is ignored.
+ *
+ *
+ * #### `compile`
+ *
+ * ```js
+ * function compile(tElement, tAttrs, transclude) { ... }
+ * ```
+ *
+ * The compile function deals with transforming the template DOM. Since most directives do not do
+ * template transformation, it is not used often. The compile function takes the following arguments:
+ *
+ * * `tElement` - template element - The element where the directive has been declared. It is
+ * safe to do template transformation on the element and child elements only.
+ *
+ * * `tAttrs` - template attributes - Normalized list of attributes declared on this element shared
+ * between all directive compile functions.
+ *
+ * * `transclude` - [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)`
+ *
+ * <div class="alert alert-warning">
+ * **Note:** The template instance and the link instance may be different objects if the template has
+ * been cloned. For this reason it is **not** safe to do anything other than DOM transformations that
+ * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration
+ * should be done in a linking function rather than in a compile function.
+ * </div>
+
+ * <div class="alert alert-warning">
+ * **Note:** The compile function cannot handle directives that recursively use themselves in their
+ * own templates or compile functions. Compiling these directives results in an infinite loop and a
+ * stack overflow errors.
+ *
+ * This can be avoided by manually using $compile in the postLink function to imperatively compile
+ * a directive's template instead of relying on automatic template compilation via `template` or
+ * `templateUrl` declaration or manual compilation inside the compile function.
+ * </div>
+ *
+ * <div class="alert alert-danger">
+ * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it
+ * e.g. does not know about the right outer scope. Please use the transclude function that is passed
+ * to the link function instead.
+ * </div>
+
+ * A compile function can have a return value which can be either a function or an object.
+ *
+ * * returning a (post-link) function - is equivalent to registering the linking function via the
+ * `link` property of the config object when the compile function is empty.
+ *
+ * * returning an object with function(s) registered via `pre` and `post` properties - allows you to
+ * control when a linking function should be called during the linking phase. See info about
+ * pre-linking and post-linking functions below.
+ *
+ *
+ * #### `link`
+ * This property is used only if the `compile` property is not defined.
+ *
+ * ```js
+ * function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }
+ * ```
+ *
+ * The link function is responsible for registering DOM listeners as well as updating the DOM. It is
+ * executed after the template has been cloned. This is where most of the directive logic will be
+ * put.
+ *
+ * * `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the
+ * directive for registering {@link ng.$rootScope.Scope#$watch watches}.
+ *
+ * * `iElement` - instance element - The element where the directive is to be used. It is safe to
+ * manipulate the children of the element only in `postLink` function since the children have
+ * already been linked.
+ *
+ * * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared
+ * between all directive linking functions.
+ *
+ * * `controller` - the directive's required controller instance(s) - Instances are shared
+ * among all directives, which allows the directives to use the controllers as a communication
+ * channel. The exact value depends on the directive's `require` property:
+ * * no controller(s) required: the directive's own controller, or `undefined` if it doesn't have one
+ * * `string`: the controller instance
+ * * `array`: array of controller instances
+ *
+ * If a required controller cannot be found, and it is optional, the instance is `null`,
+ * otherwise the {@link error:$compile:ctreq Missing Required Controller} error is thrown.
+ *
+ * Note that you can also require the directive's own controller - it will be made available like
+ * any other controller.
+ *
+ * * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope.
+ * This is the same as the `$transclude`
+ * parameter of directive controllers, see there for details.
+ * `function([scope], cloneLinkingFn, futureParentElement)`.
+ *
+ * #### Pre-linking function
+ *
+ * Executed before the child elements are linked. Not safe to do DOM transformation since the
+ * compiler linking function will fail to locate the correct elements for linking.
+ *
+ * #### Post-linking function
+ *
+ * Executed after the child elements are linked.
+ *
+ * Note that child elements that contain `templateUrl` directives will not have been compiled
+ * and linked since they are waiting for their template to load asynchronously and their own
+ * compilation and linking has been suspended until that occurs.
+ *
+ * It is safe to do DOM transformation in the post-linking function on elements that are not waiting
+ * for their async templates to be resolved.
+ *
+ *
+ * ### Transclusion
+ *
+ * Transclusion is the process of extracting a collection of DOM elements from one part of the DOM and
+ * copying them to another part of the DOM, while maintaining their connection to the original AngularJS
+ * scope from where they were taken.
+ *
+ * Transclusion is used (often with {@link ngTransclude}) to insert the
+ * original contents of a directive's element into a specified place in the template of the directive.
+ * The benefit of transclusion, over simply moving the DOM elements manually, is that the transcluded
+ * content has access to the properties on the scope from which it was taken, even if the directive
+ * has isolated scope.
+ * See the {@link guide/directive#creating-a-directive-that-wraps-other-elements Directives Guide}.
+ *
+ * This makes it possible for the widget to have private state for its template, while the transcluded
+ * content has access to its originating scope.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** When testing an element transclude directive you must not place the directive at the root of the
+ * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives
+ * Testing Transclusion Directives}.
+ * </div>
+ *
+ * #### Transclusion Functions
+ *
+ * When a directive requests transclusion, the compiler extracts its contents and provides a **transclusion
+ * function** to the directive's `link` function and `controller`. This transclusion function is a special
+ * **linking function** that will return the compiled contents linked to a new transclusion scope.
+ *
+ * <div class="alert alert-info">
+ * If you are just using {@link ngTransclude} then you don't need to worry about this function, since
+ * ngTransclude will deal with it for us.
+ * </div>
+ *
+ * If you want to manually control the insertion and removal of the transcluded content in your directive
+ * then you must use this transclude function. When you call a transclude function it returns a a jqLite/JQuery
+ * object that contains the compiled DOM, which is linked to the correct transclusion scope.
+ *
+ * When you call a transclusion function you can pass in a **clone attach function**. This function accepts
+ * two parameters, `function(clone, scope) { ... }`, where the `clone` is a fresh compiled copy of your transcluded
+ * content and the `scope` is the newly created transclusion scope, to which the clone is bound.
+ *
+ * <div class="alert alert-info">
+ * **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a translude function
+ * since you then get a fresh clone of the original DOM and also have access to the new transclusion scope.
+ * </div>
+ *
+ * It is normal practice to attach your transcluded content (`clone`) to the DOM inside your **clone
+ * attach function**:
+ *
+ * ```js
+ * var transcludedContent, transclusionScope;
+ *
+ * $transclude(function(clone, scope) {
+ * element.append(clone);
+ * transcludedContent = clone;
+ * transclusionScope = scope;
+ * });
+ * ```
+ *
+ * Later, if you want to remove the transcluded content from your DOM then you should also destroy the
+ * associated transclusion scope:
+ *
+ * ```js
+ * transcludedContent.remove();
+ * transclusionScope.$destroy();
+ * ```
+ *
+ * <div class="alert alert-info">
+ * **Best Practice**: if you intend to add and remove transcluded content manually in your directive
+ * (by calling the transclude function to get the DOM and calling `element.remove()` to remove it),
+ * then you are also responsible for calling `$destroy` on the transclusion scope.
+ * </div>
+ *
+ * The built-in DOM manipulation directives, such as {@link ngIf}, {@link ngSwitch} and {@link ngRepeat}
+ * automatically destroy their transluded clones as necessary so you do not need to worry about this if
+ * you are simply using {@link ngTransclude} to inject the transclusion into your directive.
+ *
+ *
+ * #### Transclusion Scopes
+ *
+ * When you call a transclude function it returns a DOM fragment that is pre-bound to a **transclusion
+ * scope**. This scope is special, in that it is a child of the directive's scope (and so gets destroyed
+ * when the directive's scope gets destroyed) but it inherits the properties of the scope from which it
+ * was taken.
+ *
+ * For example consider a directive that uses transclusion and isolated scope. The DOM hierarchy might look
+ * like this:
+ *
+ * ```html
+ * <div ng-app>
+ * <div isolate>
+ * <div transclusion>
+ * </div>
+ * </div>
+ * </div>
+ * ```
+ *
+ * The `$parent` scope hierarchy will look like this:
+ *
+ * ```
+ * - $rootScope
+ * - isolate
+ * - transclusion
+ * ```
+ *
+ * but the scopes will inherit prototypically from different scopes to their `$parent`.
+ *
+ * ```
+ * - $rootScope
+ * - transclusion
+ * - isolate
+ * ```
+ *
+ *
+ * ### Attributes
+ *
+ * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the
+ * `link()` or `compile()` functions. It has a variety of uses.
+ *
+ * accessing *Normalized attribute names:*
+ * Directives like 'ngBind' can be expressed in many ways: 'ng:bind', `data-ng-bind`, or 'x-ng-bind'.
+ * the attributes object allows for normalized access to
+ * the attributes.
+ *
+ * * *Directive inter-communication:* All directives share the same instance of the attributes
+ * object which allows the directives to use the attributes object as inter directive
+ * communication.
+ *
+ * * *Supports interpolation:* Interpolation attributes are assigned to the attribute object
+ * allowing other directives to read the interpolated value.
+ *
+ * * *Observing interpolated attributes:* Use `$observe` to observe the value changes of attributes
+ * that contain interpolation (e.g. `src="{{bar}}"`). Not only is this very efficient but it's also
+ * the only way to easily get the actual value because during the linking phase the interpolation
+ * hasn't been evaluated yet and so the value is at this time set to `undefined`.
+ *
+ * ```js
+ * function linkingFn(scope, elm, attrs, ctrl) {
+ * // get the attribute value
+ * console.log(attrs.ngModel);
+ *
+ * // change the attribute
+ * attrs.$set('ngModel', 'new value');
+ *
+ * // observe changes to interpolated attribute
+ * attrs.$observe('ngModel', function(value) {
+ * console.log('ngModel has changed value to ' + value);
+ * });
+ * }
+ * ```
+ *
+ * ## Example
+ *
+ * <div class="alert alert-warning">
+ * **Note**: Typically directives are registered with `module.directive`. The example below is
+ * to illustrate how `$compile` works.
+ * </div>
+ *
+ <example module="compileExample">
+ <file name="index.html">
+ <script>
+ angular.module('compileExample', [], function($compileProvider) {
+ // configure new 'compile' directive by passing a directive
+ // factory function. The factory function injects the '$compile'
+ $compileProvider.directive('compile', function($compile) {
+ // directive factory creates a link function
+ return function(scope, element, attrs) {
+ scope.$watch(
+ function(scope) {
+ // watch the 'compile' expression for changes
+ return scope.$eval(attrs.compile);
+ },
+ function(value) {
+ // when the 'compile' expression changes
+ // assign it into the current DOM
+ element.html(value);
+
+ // compile the new DOM and link it to the current
+ // scope.
+ // NOTE: we only compile .childNodes so that
+ // we don't get into infinite loop compiling ourselves
+ $compile(element.contents())(scope);
+ }
+ );
+ };
+ });
+ })
+ .controller('GreeterController', ['$scope', function($scope) {
+ $scope.name = 'Angular';
+ $scope.html = 'Hello {{name}}';
+ }]);
+ </script>
+ <div ng-controller="GreeterController">
+ <input ng-model="name"> <br/>
+ <textarea ng-model="html"></textarea> <br/>
+ <div compile="html"></div>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should auto compile', function() {
+ var textarea = $('textarea');
+ var output = $('div[compile]');
+ // The initial state reads 'Hello Angular'.
+ expect(output.getText()).toBe('Hello Angular');
+ textarea.clear();
+ textarea.sendKeys('{{name}}!');
+ expect(output.getText()).toBe('Angular!');
+ });
+ </file>
+ </example>
+
+ *
+ *
+ * @param {string|DOMElement} element Element or HTML string to compile into a template function.
+ * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED.
+ *
+ * <div class="alert alert-danger">
+ * **Note:** Passing a `transclude` function to the $compile function is deprecated, as it
+ * e.g. will not use the right outer scope. Please pass the transclude function as a
+ * `parentBoundTranscludeFn` to the link function instead.
+ * </div>
+ *
+ * @param {number} maxPriority only apply directives lower than given priority (Only effects the
+ * root element(s), not their children)
+ * @returns {function(scope, cloneAttachFn=, options=)} a link function which is used to bind template
+ * (a DOM element/tree) to a scope. Where:
+ *
+ * * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.
+ * * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the
+ * `template` and call the `cloneAttachFn` function allowing the caller to attach the
+ * cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is
+ * called as: <br/> `cloneAttachFn(clonedElement, scope)` where:
+ *
+ * * `clonedElement` - is a clone of the original `element` passed into the compiler.
+ * * `scope` - is the current scope with which the linking function is working with.
+ *
+ * * `options` - An optional object hash with linking options. If `options` is provided, then the following
+ * keys may be used to control linking behavior:
+ *
+ * * `parentBoundTranscludeFn` - the transclude function made available to
+ * directives; if given, it will be passed through to the link functions of
+ * directives found in `element` during compilation.
+ * * `transcludeControllers` - an object hash with keys that map controller names
+ * to controller instances; if given, it will make the controllers
+ * available to directives.
+ * * `futureParentElement` - defines the parent to which the `cloneAttachFn` will add
+ * the cloned elements; only needed for transcludes that are allowed to contain non html
+ * elements (e.g. SVG elements). See also the directive.controller property.
+ *
+ * Calling the linking function returns the element of the template. It is either the original
+ * element passed in, or the clone of the element if the `cloneAttachFn` is provided.
+ *
+ * After linking the view is not updated until after a call to $digest which typically is done by
+ * Angular automatically.
+ *
+ * If you need access to the bound view, there are two ways to do it:
+ *
+ * - If you are not asking the linking function to clone the template, create the DOM element(s)
+ * before you send them to the compiler and keep this reference around.
+ * ```js
+ * var element = $compile('<p>{{total}}</p>')(scope);
+ * ```
+ *
+ * - if on the other hand, you need the element to be cloned, the view reference from the original
+ * example would not point to the clone, but rather to the original template that was cloned. In
+ * this case, you can access the clone via the cloneAttachFn:
+ * ```js
+ * var templateElement = angular.element('<p>{{total}}</p>'),
+ * scope = ....;
+ *
+ * var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {
+ * //attach the clone to DOM document at the right place
+ * });
+ *
+ * //now we have reference to the cloned DOM via `clonedElement`
+ * ```
+ *
+ *
+ * For information on how the compiler works, see the
+ * {@link guide/compiler Angular HTML Compiler} section of the Developer Guide.
+ */
+
+var $compileMinErr = minErr('$compile');
+
+/**
+ * @ngdoc provider
+ * @name $compileProvider
+ *
+ * @description
+ */
+$CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider'];
+function $CompileProvider($provide, $$sanitizeUriProvider) {
+ var hasDirectives = {},
+ Suffix = 'Directive',
+ COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\w\-]+)\s+(.*)$/,
+ CLASS_DIRECTIVE_REGEXP = /(([\w\-]+)(?:\:([^;]+))?;?)/,
+ ALL_OR_NOTHING_ATTRS = makeMap('ngSrc,ngSrcset,src,srcset'),
+ REQUIRE_PREFIX_REGEXP = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/;
+
+ // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes
+ // The assumption is that future DOM event attribute names will begin with
+ // 'on' and be composed of only English letters.
+ var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;
+
+ function parseIsolateBindings(scope, directiveName, isController) {
+ var LOCAL_REGEXP = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/;
+
+ var bindings = {};
+
+ forEach(scope, function(definition, scopeName) {
+ var match = definition.match(LOCAL_REGEXP);
+
+ if (!match) {
+ throw $compileMinErr('iscp',
+ "Invalid {3} for directive '{0}'." +
+ " Definition: {... {1}: '{2}' ...}",
+ directiveName, scopeName, definition,
+ (isController ? "controller bindings definition" :
+ "isolate scope definition"));
+ }
+
+ bindings[scopeName] = {
+ mode: match[1][0],
+ collection: match[2] === '*',
+ optional: match[3] === '?',
+ attrName: match[4] || scopeName
+ };
+ });
+
+ return bindings;
+ }
+
+ function parseDirectiveBindings(directive, directiveName) {
+ var bindings = {
+ isolateScope: null,
+ bindToController: null
+ };
+ if (isObject(directive.scope)) {
+ if (directive.bindToController === true) {
+ bindings.bindToController = parseIsolateBindings(directive.scope,
+ directiveName, true);
+ bindings.isolateScope = {};
+ } else {
+ bindings.isolateScope = parseIsolateBindings(directive.scope,
+ directiveName, false);
+ }
+ }
+ if (isObject(directive.bindToController)) {
+ bindings.bindToController =
+ parseIsolateBindings(directive.bindToController, directiveName, true);
+ }
+ if (isObject(bindings.bindToController)) {
+ var controller = directive.controller;
+ var controllerAs = directive.controllerAs;
+ if (!controller) {
+ // There is no controller, there may or may not be a controllerAs property
+ throw $compileMinErr('noctrl',
+ "Cannot bind to controller without directive '{0}'s controller.",
+ directiveName);
+ } else if (!identifierForController(controller, controllerAs)) {
+ // There is a controller, but no identifier or controllerAs property
+ throw $compileMinErr('noident',
+ "Cannot bind to controller without identifier for directive '{0}'.",
+ directiveName);
+ }
+ }
+ return bindings;
+ }
+
+ function assertValidDirectiveName(name) {
+ var letter = name.charAt(0);
+ if (!letter || letter !== lowercase(letter)) {
+ throw $compileMinErr('baddir', "Directive name '{0}' is invalid. The first character must be a lowercase letter", name);
+ }
+ if (name !== name.trim()) {
+ throw $compileMinErr('baddir',
+ "Directive name '{0}' is invalid. The name should not contain leading or trailing whitespaces",
+ name);
+ }
+ }
+
+ /**
+ * @ngdoc method
+ * @name $compileProvider#directive
+ * @kind function
+ *
+ * @description
+ * Register a new directive with the compiler.
+ *
+ * @param {string|Object} name Name of the directive in camel-case (i.e. <code>ngBind</code> which
+ * will match as <code>ng-bind</code>), or an object map of directives where the keys are the
+ * names and the values are the factories.
+ * @param {Function|Array} directiveFactory An injectable directive factory function. See
+ * {@link guide/directive} for more info.
+ * @returns {ng.$compileProvider} Self for chaining.
+ */
+ this.directive = function registerDirective(name, directiveFactory) {
+ assertNotHasOwnProperty(name, 'directive');
+ if (isString(name)) {
+ assertValidDirectiveName(name);
+ assertArg(directiveFactory, 'directiveFactory');
+ if (!hasDirectives.hasOwnProperty(name)) {
+ hasDirectives[name] = [];
+ $provide.factory(name + Suffix, ['$injector', '$exceptionHandler',
+ function($injector, $exceptionHandler) {
+ var directives = [];
+ forEach(hasDirectives[name], function(directiveFactory, index) {
+ try {
+ var directive = $injector.invoke(directiveFactory);
+ if (isFunction(directive)) {
+ directive = { compile: valueFn(directive) };
+ } else if (!directive.compile && directive.link) {
+ directive.compile = valueFn(directive.link);
+ }
+ directive.priority = directive.priority || 0;
+ directive.index = index;
+ directive.name = directive.name || name;
+ directive.require = directive.require || (directive.controller && directive.name);
+ directive.restrict = directive.restrict || 'EA';
+ var bindings = directive.$$bindings =
+ parseDirectiveBindings(directive, directive.name);
+ if (isObject(bindings.isolateScope)) {
+ directive.$$isolateBindings = bindings.isolateScope;
+ }
+ directive.$$moduleName = directiveFactory.$$moduleName;
+ directives.push(directive);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ });
+ return directives;
+ }]);
+ }
+ hasDirectives[name].push(directiveFactory);
+ } else {
+ forEach(name, reverseParams(registerDirective));
+ }
+ return this;
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $compileProvider#aHrefSanitizationWhitelist
+ * @kind function
+ *
+ * @description
+ * Retrieves or overrides the default regular expression that is used for whitelisting of safe
+ * urls during a[href] sanitization.
+ *
+ * The sanitization is a security measure aimed at preventing XSS attacks via html links.
+ *
+ * Any url about to be assigned to a[href] via data-binding is first normalized and turned into
+ * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`
+ * regular expression. If a match is found, the original url is written into the dom. Otherwise,
+ * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
+ *
+ * @param {RegExp=} regexp New regexp to whitelist urls with.
+ * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
+ * chaining otherwise.
+ */
+ this.aHrefSanitizationWhitelist = function(regexp) {
+ if (isDefined(regexp)) {
+ $$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp);
+ return this;
+ } else {
+ return $$sanitizeUriProvider.aHrefSanitizationWhitelist();
+ }
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $compileProvider#imgSrcSanitizationWhitelist
+ * @kind function
+ *
+ * @description
+ * Retrieves or overrides the default regular expression that is used for whitelisting of safe
+ * urls during img[src] sanitization.
+ *
+ * The sanitization is a security measure aimed at prevent XSS attacks via html links.
+ *
+ * Any url about to be assigned to img[src] via data-binding is first normalized and turned into
+ * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`
+ * regular expression. If a match is found, the original url is written into the dom. Otherwise,
+ * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
+ *
+ * @param {RegExp=} regexp New regexp to whitelist urls with.
+ * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
+ * chaining otherwise.
+ */
+ this.imgSrcSanitizationWhitelist = function(regexp) {
+ if (isDefined(regexp)) {
+ $$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp);
+ return this;
+ } else {
+ return $$sanitizeUriProvider.imgSrcSanitizationWhitelist();
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $compileProvider#debugInfoEnabled
+ *
+ * @param {boolean=} enabled update the debugInfoEnabled state if provided, otherwise just return the
+ * current debugInfoEnabled state
+ * @returns {*} current value if used as getter or itself (chaining) if used as setter
+ *
+ * @kind function
+ *
+ * @description
+ * Call this method to enable/disable various debug runtime information in the compiler such as adding
+ * binding information and a reference to the current scope on to DOM elements.
+ * If enabled, the compiler will add the following to DOM elements that have been bound to the scope
+ * * `ng-binding` CSS class
+ * * `$binding` data property containing an array of the binding expressions
+ *
+ * You may want to disable this in production for a significant performance boost. See
+ * {@link guide/production#disabling-debug-data Disabling Debug Data} for more.
+ *
+ * The default value is true.
+ */
+ var debugInfoEnabled = true;
+ this.debugInfoEnabled = function(enabled) {
+ if (isDefined(enabled)) {
+ debugInfoEnabled = enabled;
+ return this;
+ }
+ return debugInfoEnabled;
+ };
+
+ this.$get = [
+ '$injector', '$interpolate', '$exceptionHandler', '$templateRequest', '$parse',
+ '$controller', '$rootScope', '$document', '$sce', '$animate', '$$sanitizeUri',
+ function($injector, $interpolate, $exceptionHandler, $templateRequest, $parse,
+ $controller, $rootScope, $document, $sce, $animate, $$sanitizeUri) {
+
+ var Attributes = function(element, attributesToCopy) {
+ if (attributesToCopy) {
+ var keys = Object.keys(attributesToCopy);
+ var i, l, key;
+
+ for (i = 0, l = keys.length; i < l; i++) {
+ key = keys[i];
+ this[key] = attributesToCopy[key];
+ }
+ } else {
+ this.$attr = {};
+ }
+
+ this.$$element = element;
+ };
+
+ Attributes.prototype = {
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$normalize
+ * @kind function
+ *
+ * @description
+ * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or
+ * `data-`) to its normalized, camelCase form.
+ *
+ * Also there is special case for Moz prefix starting with upper case letter.
+ *
+ * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}
+ *
+ * @param {string} name Name to normalize
+ */
+ $normalize: directiveNormalize,
+
+
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$addClass
+ * @kind function
+ *
+ * @description
+ * Adds the CSS class value specified by the classVal parameter to the element. If animations
+ * are enabled then an animation will be triggered for the class addition.
+ *
+ * @param {string} classVal The className value that will be added to the element
+ */
+ $addClass: function(classVal) {
+ if (classVal && classVal.length > 0) {
+ $animate.addClass(this.$$element, classVal);
+ }
+ },
+
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$removeClass
+ * @kind function
+ *
+ * @description
+ * Removes the CSS class value specified by the classVal parameter from the element. If
+ * animations are enabled then an animation will be triggered for the class removal.
+ *
+ * @param {string} classVal The className value that will be removed from the element
+ */
+ $removeClass: function(classVal) {
+ if (classVal && classVal.length > 0) {
+ $animate.removeClass(this.$$element, classVal);
+ }
+ },
+
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$updateClass
+ * @kind function
+ *
+ * @description
+ * Adds and removes the appropriate CSS class values to the element based on the difference
+ * between the new and old CSS class values (specified as newClasses and oldClasses).
+ *
+ * @param {string} newClasses The current CSS className value
+ * @param {string} oldClasses The former CSS className value
+ */
+ $updateClass: function(newClasses, oldClasses) {
+ var toAdd = tokenDifference(newClasses, oldClasses);
+ if (toAdd && toAdd.length) {
+ $animate.addClass(this.$$element, toAdd);
+ }
+
+ var toRemove = tokenDifference(oldClasses, newClasses);
+ if (toRemove && toRemove.length) {
+ $animate.removeClass(this.$$element, toRemove);
+ }
+ },
+
+ /**
+ * Set a normalized attribute on the element in a way such that all directives
+ * can share the attribute. This function properly handles boolean attributes.
+ * @param {string} key Normalized key. (ie ngAttribute)
+ * @param {string|boolean} value The value to set. If `null` attribute will be deleted.
+ * @param {boolean=} writeAttr If false, does not write the value to DOM element attribute.
+ * Defaults to true.
+ * @param {string=} attrName Optional none normalized name. Defaults to key.
+ */
+ $set: function(key, value, writeAttr, attrName) {
+ // TODO: decide whether or not to throw an error if "class"
+ //is set through this function since it may cause $updateClass to
+ //become unstable.
+
+ var node = this.$$element[0],
+ booleanKey = getBooleanAttrName(node, key),
+ aliasedKey = getAliasedAttrName(node, key),
+ observer = key,
+ nodeName;
+
+ if (booleanKey) {
+ this.$$element.prop(key, value);
+ attrName = booleanKey;
+ } else if (aliasedKey) {
+ this[aliasedKey] = value;
+ observer = aliasedKey;
+ }
+
+ this[key] = value;
+
+ // translate normalized key to actual key
+ if (attrName) {
+ this.$attr[key] = attrName;
+ } else {
+ attrName = this.$attr[key];
+ if (!attrName) {
+ this.$attr[key] = attrName = snake_case(key, '-');
+ }
+ }
+
+ nodeName = nodeName_(this.$$element);
+
+ if ((nodeName === 'a' && key === 'href') ||
+ (nodeName === 'img' && key === 'src')) {
+ // sanitize a[href] and img[src] values
+ this[key] = value = $$sanitizeUri(value, key === 'src');
+ } else if (nodeName === 'img' && key === 'srcset') {
+ // sanitize img[srcset] values
+ var result = "";
+
+ // first check if there are spaces because it's not the same pattern
+ var trimmedSrcset = trim(value);
+ // ( 999x ,| 999w ,| ,|, )
+ var srcPattern = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/;
+ var pattern = /\s/.test(trimmedSrcset) ? srcPattern : /(,)/;
+
+ // split srcset into tuple of uri and descriptor except for the last item
+ var rawUris = trimmedSrcset.split(pattern);
+
+ // for each tuples
+ var nbrUrisWith2parts = Math.floor(rawUris.length / 2);
+ for (var i = 0; i < nbrUrisWith2parts; i++) {
+ var innerIdx = i * 2;
+ // sanitize the uri
+ result += $$sanitizeUri(trim(rawUris[innerIdx]), true);
+ // add the descriptor
+ result += (" " + trim(rawUris[innerIdx + 1]));
+ }
+
+ // split the last item into uri and descriptor
+ var lastTuple = trim(rawUris[i * 2]).split(/\s/);
+
+ // sanitize the last uri
+ result += $$sanitizeUri(trim(lastTuple[0]), true);
+
+ // and add the last descriptor if any
+ if (lastTuple.length === 2) {
+ result += (" " + trim(lastTuple[1]));
+ }
+ this[key] = value = result;
+ }
+
+ if (writeAttr !== false) {
+ if (value === null || value === undefined) {
+ this.$$element.removeAttr(attrName);
+ } else {
+ this.$$element.attr(attrName, value);
+ }
+ }
+
+ // fire observers
+ var $$observers = this.$$observers;
+ $$observers && forEach($$observers[observer], function(fn) {
+ try {
+ fn(value);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ });
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$observe
+ * @kind function
+ *
+ * @description
+ * Observes an interpolated attribute.
+ *
+ * The observer function will be invoked once during the next `$digest` following
+ * compilation. The observer is then invoked whenever the interpolated value
+ * changes.
+ *
+ * @param {string} key Normalized key. (ie ngAttribute) .
+ * @param {function(interpolatedValue)} fn Function that will be called whenever
+ the interpolated value of the attribute changes.
+ * See the {@link guide/directive#text-and-attribute-bindings Directives} guide for more info.
+ * @returns {function()} Returns a deregistration function for this observer.
+ */
+ $observe: function(key, fn) {
+ var attrs = this,
+ $$observers = (attrs.$$observers || (attrs.$$observers = createMap())),
+ listeners = ($$observers[key] || ($$observers[key] = []));
+
+ listeners.push(fn);
+ $rootScope.$evalAsync(function() {
+ if (!listeners.$$inter && attrs.hasOwnProperty(key) && !isUndefined(attrs[key])) {
+ // no one registered attribute interpolation function, so lets call it manually
+ fn(attrs[key]);
+ }
+ });
+
+ return function() {
+ arrayRemove(listeners, fn);
+ };
+ }
+ };
+
+
+ function safeAddClass($element, className) {
+ try {
+ $element.addClass(className);
+ } catch (e) {
+ // ignore, since it means that we are trying to set class on
+ // SVG element, where class name is read-only.
+ }
+ }
+
+
+ var startSymbol = $interpolate.startSymbol(),
+ endSymbol = $interpolate.endSymbol(),
+ denormalizeTemplate = (startSymbol == '{{' || endSymbol == '}}')
+ ? identity
+ : function denormalizeTemplate(template) {
+ return template.replace(/\{\{/g, startSymbol).replace(/}}/g, endSymbol);
+ },
+ NG_ATTR_BINDING = /^ngAttr[A-Z]/;
+
+ compile.$$addBindingInfo = debugInfoEnabled ? function $$addBindingInfo($element, binding) {
+ var bindings = $element.data('$binding') || [];
+
+ if (isArray(binding)) {
+ bindings = bindings.concat(binding);
+ } else {
+ bindings.push(binding);
+ }
+
+ $element.data('$binding', bindings);
+ } : noop;
+
+ compile.$$addBindingClass = debugInfoEnabled ? function $$addBindingClass($element) {
+ safeAddClass($element, 'ng-binding');
+ } : noop;
+
+ compile.$$addScopeInfo = debugInfoEnabled ? function $$addScopeInfo($element, scope, isolated, noTemplate) {
+ var dataName = isolated ? (noTemplate ? '$isolateScopeNoTemplate' : '$isolateScope') : '$scope';
+ $element.data(dataName, scope);
+ } : noop;
+
+ compile.$$addScopeClass = debugInfoEnabled ? function $$addScopeClass($element, isolated) {
+ safeAddClass($element, isolated ? 'ng-isolate-scope' : 'ng-scope');
+ } : noop;
+
+ return compile;
+
+ //================================
+
+ function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective,
+ previousCompileContext) {
+ if (!($compileNodes instanceof jqLite)) {
+ // jquery always rewraps, whereas we need to preserve the original selector so that we can
+ // modify it.
+ $compileNodes = jqLite($compileNodes);
+ }
+ // We can not compile top level text elements since text nodes can be merged and we will
+ // not be able to attach scope data to them, so we will wrap them in <span>
+ forEach($compileNodes, function(node, index) {
+ if (node.nodeType == NODE_TYPE_TEXT && node.nodeValue.match(/\S+/) /* non-empty */ ) {
+ $compileNodes[index] = jqLite(node).wrap('<span></span>').parent()[0];
+ }
+ });
+ var compositeLinkFn =
+ compileNodes($compileNodes, transcludeFn, $compileNodes,
+ maxPriority, ignoreDirective, previousCompileContext);
+ compile.$$addScopeClass($compileNodes);
+ var namespace = null;
+ return function publicLinkFn(scope, cloneConnectFn, options) {
+ assertArg(scope, 'scope');
+
+ options = options || {};
+ var parentBoundTranscludeFn = options.parentBoundTranscludeFn,
+ transcludeControllers = options.transcludeControllers,
+ futureParentElement = options.futureParentElement;
+
+ // When `parentBoundTranscludeFn` is passed, it is a
+ // `controllersBoundTransclude` function (it was previously passed
+ // as `transclude` to directive.link) so we must unwrap it to get
+ // its `boundTranscludeFn`
+ if (parentBoundTranscludeFn && parentBoundTranscludeFn.$$boundTransclude) {
+ parentBoundTranscludeFn = parentBoundTranscludeFn.$$boundTransclude;
+ }
+
+ if (!namespace) {
+ namespace = detectNamespaceForChildElements(futureParentElement);
+ }
+ var $linkNode;
+ if (namespace !== 'html') {
+ // When using a directive with replace:true and templateUrl the $compileNodes
+ // (or a child element inside of them)
+ // might change, so we need to recreate the namespace adapted compileNodes
+ // for call to the link function.
+ // Note: This will already clone the nodes...
+ $linkNode = jqLite(
+ wrapTemplate(namespace, jqLite('<div>').append($compileNodes).html())
+ );
+ } else if (cloneConnectFn) {
+ // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart
+ // and sometimes changes the structure of the DOM.
+ $linkNode = JQLitePrototype.clone.call($compileNodes);
+ } else {
+ $linkNode = $compileNodes;
+ }
+
+ if (transcludeControllers) {
+ for (var controllerName in transcludeControllers) {
+ $linkNode.data('$' + controllerName + 'Controller', transcludeControllers[controllerName].instance);
+ }
+ }
+
+ compile.$$addScopeInfo($linkNode, scope);
+
+ if (cloneConnectFn) cloneConnectFn($linkNode, scope);
+ if (compositeLinkFn) compositeLinkFn(scope, $linkNode, $linkNode, parentBoundTranscludeFn);
+ return $linkNode;
+ };
+ }
+
+ function detectNamespaceForChildElements(parentElement) {
+ // TODO: Make this detect MathML as well...
+ var node = parentElement && parentElement[0];
+ if (!node) {
+ return 'html';
+ } else {
+ return nodeName_(node) !== 'foreignobject' && node.toString().match(/SVG/) ? 'svg' : 'html';
+ }
+ }
+
+ /**
+ * Compile function matches each node in nodeList against the directives. Once all directives
+ * for a particular node are collected their compile functions are executed. The compile
+ * functions return values - the linking functions - are combined into a composite linking
+ * function, which is the a linking function for the node.
+ *
+ * @param {NodeList} nodeList an array of nodes or NodeList to compile
+ * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the
+ * scope argument is auto-generated to the new child of the transcluded parent scope.
+ * @param {DOMElement=} $rootElement If the nodeList is the root of the compilation tree then
+ * the rootElement must be set the jqLite collection of the compile root. This is
+ * needed so that the jqLite collection items can be replaced with widgets.
+ * @param {number=} maxPriority Max directive priority.
+ * @returns {Function} A composite linking function of all of the matched directives or null.
+ */
+ function compileNodes(nodeList, transcludeFn, $rootElement, maxPriority, ignoreDirective,
+ previousCompileContext) {
+ var linkFns = [],
+ attrs, directives, nodeLinkFn, childNodes, childLinkFn, linkFnFound, nodeLinkFnFound;
+
+ for (var i = 0; i < nodeList.length; i++) {
+ attrs = new Attributes();
+
+ // we must always refer to nodeList[i] since the nodes can be replaced underneath us.
+ directives = collectDirectives(nodeList[i], [], attrs, i === 0 ? maxPriority : undefined,
+ ignoreDirective);
+
+ nodeLinkFn = (directives.length)
+ ? applyDirectivesToNode(directives, nodeList[i], attrs, transcludeFn, $rootElement,
+ null, [], [], previousCompileContext)
+ : null;
+
+ if (nodeLinkFn && nodeLinkFn.scope) {
+ compile.$$addScopeClass(attrs.$$element);
+ }
+
+ childLinkFn = (nodeLinkFn && nodeLinkFn.terminal ||
+ !(childNodes = nodeList[i].childNodes) ||
+ !childNodes.length)
+ ? null
+ : compileNodes(childNodes,
+ nodeLinkFn ? (
+ (nodeLinkFn.transcludeOnThisElement || !nodeLinkFn.templateOnThisElement)
+ && nodeLinkFn.transclude) : transcludeFn);
+
+ if (nodeLinkFn || childLinkFn) {
+ linkFns.push(i, nodeLinkFn, childLinkFn);
+ linkFnFound = true;
+ nodeLinkFnFound = nodeLinkFnFound || nodeLinkFn;
+ }
+
+ //use the previous context only for the first element in the virtual group
+ previousCompileContext = null;
+ }
+
+ // return a linking function if we have found anything, null otherwise
+ return linkFnFound ? compositeLinkFn : null;
+
+ function compositeLinkFn(scope, nodeList, $rootElement, parentBoundTranscludeFn) {
+ var nodeLinkFn, childLinkFn, node, childScope, i, ii, idx, childBoundTranscludeFn;
+ var stableNodeList;
+
+
+ if (nodeLinkFnFound) {
+ // copy nodeList so that if a nodeLinkFn removes or adds an element at this DOM level our
+ // offsets don't get screwed up
+ var nodeListLength = nodeList.length;
+ stableNodeList = new Array(nodeListLength);
+
+ // create a sparse array by only copying the elements which have a linkFn
+ for (i = 0; i < linkFns.length; i+=3) {
+ idx = linkFns[i];
+ stableNodeList[idx] = nodeList[idx];
+ }
+ } else {
+ stableNodeList = nodeList;
+ }
+
+ for (i = 0, ii = linkFns.length; i < ii;) {
+ node = stableNodeList[linkFns[i++]];
+ nodeLinkFn = linkFns[i++];
+ childLinkFn = linkFns[i++];
+
+ if (nodeLinkFn) {
+ if (nodeLinkFn.scope) {
+ childScope = scope.$new();
+ compile.$$addScopeInfo(jqLite(node), childScope);
+ var destroyBindings = nodeLinkFn.$$destroyBindings;
+ if (destroyBindings) {
+ nodeLinkFn.$$destroyBindings = null;
+ childScope.$on('$destroyed', destroyBindings);
+ }
+ } else {
+ childScope = scope;
+ }
+
+ if (nodeLinkFn.transcludeOnThisElement) {
+ childBoundTranscludeFn = createBoundTranscludeFn(
+ scope, nodeLinkFn.transclude, parentBoundTranscludeFn);
+
+ } else if (!nodeLinkFn.templateOnThisElement && parentBoundTranscludeFn) {
+ childBoundTranscludeFn = parentBoundTranscludeFn;
+
+ } else if (!parentBoundTranscludeFn && transcludeFn) {
+ childBoundTranscludeFn = createBoundTranscludeFn(scope, transcludeFn);
+
+ } else {
+ childBoundTranscludeFn = null;
+ }
+
+ nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn,
+ nodeLinkFn);
+
+ } else if (childLinkFn) {
+ childLinkFn(scope, node.childNodes, undefined, parentBoundTranscludeFn);
+ }
+ }
+ }
+ }
+
+ function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn) {
+
+ var boundTranscludeFn = function(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) {
+
+ if (!transcludedScope) {
+ transcludedScope = scope.$new(false, containingScope);
+ transcludedScope.$$transcluded = true;
+ }
+
+ return transcludeFn(transcludedScope, cloneFn, {
+ parentBoundTranscludeFn: previousBoundTranscludeFn,
+ transcludeControllers: controllers,
+ futureParentElement: futureParentElement
+ });
+ };
+
+ return boundTranscludeFn;
+ }
+
+ /**
+ * Looks for directives on the given node and adds them to the directive collection which is
+ * sorted.
+ *
+ * @param node Node to search.
+ * @param directives An array to which the directives are added to. This array is sorted before
+ * the function returns.
+ * @param attrs The shared attrs object which is used to populate the normalized attributes.
+ * @param {number=} maxPriority Max directive priority.
+ */
+ function collectDirectives(node, directives, attrs, maxPriority, ignoreDirective) {
+ var nodeType = node.nodeType,
+ attrsMap = attrs.$attr,
+ match,
+ className;
+
+ switch (nodeType) {
+ case NODE_TYPE_ELEMENT: /* Element */
+ // use the node name: <directive>
+ addDirective(directives,
+ directiveNormalize(nodeName_(node)), 'E', maxPriority, ignoreDirective);
+
+ // iterate over the attributes
+ for (var attr, name, nName, ngAttrName, value, isNgAttr, nAttrs = node.attributes,
+ j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {
+ var attrStartName = false;
+ var attrEndName = false;
+
+ attr = nAttrs[j];
+ name = attr.name;
+ value = trim(attr.value);
+
+ // support ngAttr attribute binding
+ ngAttrName = directiveNormalize(name);
+ if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) {
+ name = name.replace(PREFIX_REGEXP, '')
+ .substr(8).replace(/_(.)/g, function(match, letter) {
+ return letter.toUpperCase();
+ });
+ }
+
+ var directiveNName = ngAttrName.replace(/(Start|End)$/, '');
+ if (directiveIsMultiElement(directiveNName)) {
+ if (ngAttrName === directiveNName + 'Start') {
+ attrStartName = name;
+ attrEndName = name.substr(0, name.length - 5) + 'end';
+ name = name.substr(0, name.length - 6);
+ }
+ }
+
+ nName = directiveNormalize(name.toLowerCase());
+ attrsMap[nName] = name;
+ if (isNgAttr || !attrs.hasOwnProperty(nName)) {
+ attrs[nName] = value;
+ if (getBooleanAttrName(node, nName)) {
+ attrs[nName] = true; // presence means true
+ }
+ }
+ addAttrInterpolateDirective(node, directives, value, nName, isNgAttr);
+ addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName,
+ attrEndName);
+ }
+
+ // use class as directive
+ className = node.className;
+ if (isObject(className)) {
+ // Maybe SVGAnimatedString
+ className = className.animVal;
+ }
+ if (isString(className) && className !== '') {
+ while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {
+ nName = directiveNormalize(match[2]);
+ if (addDirective(directives, nName, 'C', maxPriority, ignoreDirective)) {
+ attrs[nName] = trim(match[3]);
+ }
+ className = className.substr(match.index + match[0].length);
+ }
+ }
+ break;
+ case NODE_TYPE_TEXT: /* Text Node */
+ if (msie === 11) {
+ // Workaround for #11781
+ while (node.parentNode && node.nextSibling && node.nextSibling.nodeType === NODE_TYPE_TEXT) {
+ node.nodeValue = node.nodeValue + node.nextSibling.nodeValue;
+ node.parentNode.removeChild(node.nextSibling);
+ }
+ }
+ addTextInterpolateDirective(directives, node.nodeValue);
+ break;
+ case NODE_TYPE_COMMENT: /* Comment */
+ try {
+ match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);
+ if (match) {
+ nName = directiveNormalize(match[1]);
+ if (addDirective(directives, nName, 'M', maxPriority, ignoreDirective)) {
+ attrs[nName] = trim(match[2]);
+ }
+ }
+ } catch (e) {
+ // turns out that under some circumstances IE9 throws errors when one attempts to read
+ // comment's node value.
+ // Just ignore it and continue. (Can't seem to reproduce in test case.)
+ }
+ break;
+ }
+
+ directives.sort(byPriority);
+ return directives;
+ }
+
+ /**
+ * Given a node with an directive-start it collects all of the siblings until it finds
+ * directive-end.
+ * @param node
+ * @param attrStart
+ * @param attrEnd
+ * @returns {*}
+ */
+ function groupScan(node, attrStart, attrEnd) {
+ var nodes = [];
+ var depth = 0;
+ if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {
+ do {
+ if (!node) {
+ throw $compileMinErr('uterdir',
+ "Unterminated attribute, found '{0}' but no matching '{1}' found.",
+ attrStart, attrEnd);
+ }
+ if (node.nodeType == NODE_TYPE_ELEMENT) {
+ if (node.hasAttribute(attrStart)) depth++;
+ if (node.hasAttribute(attrEnd)) depth--;
+ }
+ nodes.push(node);
+ node = node.nextSibling;
+ } while (depth > 0);
+ } else {
+ nodes.push(node);
+ }
+
+ return jqLite(nodes);
+ }
+
+ /**
+ * Wrapper for linking function which converts normal linking function into a grouped
+ * linking function.
+ * @param linkFn
+ * @param attrStart
+ * @param attrEnd
+ * @returns {Function}
+ */
+ function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) {
+ return function(scope, element, attrs, controllers, transcludeFn) {
+ element = groupScan(element[0], attrStart, attrEnd);
+ return linkFn(scope, element, attrs, controllers, transcludeFn);
+ };
+ }
+
+ /**
+ * Once the directives have been collected, their compile functions are executed. This method
+ * is responsible for inlining directive templates as well as terminating the application
+ * of the directives if the terminal directive has been reached.
+ *
+ * @param {Array} directives Array of collected directives to execute their compile function.
+ * this needs to be pre-sorted by priority order.
+ * @param {Node} compileNode The raw DOM node to apply the compile functions to
+ * @param {Object} templateAttrs The shared attribute function
+ * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the
+ * scope argument is auto-generated to the new
+ * child of the transcluded parent scope.
+ * @param {JQLite} jqCollection If we are working on the root of the compile tree then this
+ * argument has the root jqLite array so that we can replace nodes
+ * on it.
+ * @param {Object=} originalReplaceDirective An optional directive that will be ignored when
+ * compiling the transclusion.
+ * @param {Array.<Function>} preLinkFns
+ * @param {Array.<Function>} postLinkFns
+ * @param {Object} previousCompileContext Context used for previous compilation of the current
+ * node
+ * @returns {Function} linkFn
+ */
+ function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn,
+ jqCollection, originalReplaceDirective, preLinkFns, postLinkFns,
+ previousCompileContext) {
+ previousCompileContext = previousCompileContext || {};
+
+ var terminalPriority = -Number.MAX_VALUE,
+ newScopeDirective = previousCompileContext.newScopeDirective,
+ controllerDirectives = previousCompileContext.controllerDirectives,
+ newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective,
+ templateDirective = previousCompileContext.templateDirective,
+ nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,
+ hasTranscludeDirective = false,
+ hasTemplate = false,
+ hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,
+ $compileNode = templateAttrs.$$element = jqLite(compileNode),
+ directive,
+ directiveName,
+ $template,
+ replaceDirective = originalReplaceDirective,
+ childTranscludeFn = transcludeFn,
+ linkFn,
+ directiveValue;
+
+ // executes all directives on the current element
+ for (var i = 0, ii = directives.length; i < ii; i++) {
+ directive = directives[i];
+ var attrStart = directive.$$start;
+ var attrEnd = directive.$$end;
+
+ // collect multiblock sections
+ if (attrStart) {
+ $compileNode = groupScan(compileNode, attrStart, attrEnd);
+ }
+ $template = undefined;
+
+ if (terminalPriority > directive.priority) {
+ break; // prevent further processing of directives
+ }
+
+ if (directiveValue = directive.scope) {
+
+ // skip the check for directives with async templates, we'll check the derived sync
+ // directive when the template arrives
+ if (!directive.templateUrl) {
+ if (isObject(directiveValue)) {
+ // This directive is trying to add an isolated scope.
+ // Check that there is no scope of any kind already
+ assertNoDuplicate('new/isolated scope', newIsolateScopeDirective || newScopeDirective,
+ directive, $compileNode);
+ newIsolateScopeDirective = directive;
+ } else {
+ // This directive is trying to add a child scope.
+ // Check that there is no isolated scope already
+ assertNoDuplicate('new/isolated scope', newIsolateScopeDirective, directive,
+ $compileNode);
+ }
+ }
+
+ newScopeDirective = newScopeDirective || directive;
+ }
+
+ directiveName = directive.name;
+
+ if (!directive.templateUrl && directive.controller) {
+ directiveValue = directive.controller;
+ controllerDirectives = controllerDirectives || createMap();
+ assertNoDuplicate("'" + directiveName + "' controller",
+ controllerDirectives[directiveName], directive, $compileNode);
+ controllerDirectives[directiveName] = directive;
+ }
+
+ if (directiveValue = directive.transclude) {
+ hasTranscludeDirective = true;
+
+ // Special case ngIf and ngRepeat so that we don't complain about duplicate transclusion.
+ // This option should only be used by directives that know how to safely handle element transclusion,
+ // where the transcluded nodes are added or replaced after linking.
+ if (!directive.$$tlb) {
+ assertNoDuplicate('transclusion', nonTlbTranscludeDirective, directive, $compileNode);
+ nonTlbTranscludeDirective = directive;
+ }
+
+ if (directiveValue == 'element') {
+ hasElementTranscludeDirective = true;
+ terminalPriority = directive.priority;
+ $template = $compileNode;
+ $compileNode = templateAttrs.$$element =
+ jqLite(document.createComment(' ' + directiveName + ': ' +
+ templateAttrs[directiveName] + ' '));
+ compileNode = $compileNode[0];
+ replaceWith(jqCollection, sliceArgs($template), compileNode);
+
+ childTranscludeFn = compile($template, transcludeFn, terminalPriority,
+ replaceDirective && replaceDirective.name, {
+ // Don't pass in:
+ // - controllerDirectives - otherwise we'll create duplicates controllers
+ // - newIsolateScopeDirective or templateDirective - combining templates with
+ // element transclusion doesn't make sense.
+ //
+ // We need only nonTlbTranscludeDirective so that we prevent putting transclusion
+ // on the same element more than once.
+ nonTlbTranscludeDirective: nonTlbTranscludeDirective
+ });
+ } else {
+ $template = jqLite(jqLiteClone(compileNode)).contents();
+ $compileNode.empty(); // clear contents
+ childTranscludeFn = compile($template, transcludeFn);
+ }
+ }
+
+ if (directive.template) {
+ hasTemplate = true;
+ assertNoDuplicate('template', templateDirective, directive, $compileNode);
+ templateDirective = directive;
+
+ directiveValue = (isFunction(directive.template))
+ ? directive.template($compileNode, templateAttrs)
+ : directive.template;
+
+ directiveValue = denormalizeTemplate(directiveValue);
+
+ if (directive.replace) {
+ replaceDirective = directive;
+ if (jqLiteIsTextNode(directiveValue)) {
+ $template = [];
+ } else {
+ $template = removeComments(wrapTemplate(directive.templateNamespace, trim(directiveValue)));
+ }
+ compileNode = $template[0];
+
+ if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
+ throw $compileMinErr('tplrt',
+ "Template for directive '{0}' must have exactly one root element. {1}",
+ directiveName, '');
+ }
+
+ replaceWith(jqCollection, $compileNode, compileNode);
+
+ var newTemplateAttrs = {$attr: {}};
+
+ // combine directives from the original node and from the template:
+ // - take the array of directives for this element
+ // - split it into two parts, those that already applied (processed) and those that weren't (unprocessed)
+ // - collect directives from the template and sort them by priority
+ // - combine directives as: processed + template + unprocessed
+ var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs);
+ var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1));
+
+ if (newIsolateScopeDirective) {
+ markDirectivesAsIsolate(templateDirectives);
+ }
+ directives = directives.concat(templateDirectives).concat(unprocessedDirectives);
+ mergeTemplateAttributes(templateAttrs, newTemplateAttrs);
+
+ ii = directives.length;
+ } else {
+ $compileNode.html(directiveValue);
+ }
+ }
+
+ if (directive.templateUrl) {
+ hasTemplate = true;
+ assertNoDuplicate('template', templateDirective, directive, $compileNode);
+ templateDirective = directive;
+
+ if (directive.replace) {
+ replaceDirective = directive;
+ }
+
+ nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode,
+ templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, {
+ controllerDirectives: controllerDirectives,
+ newScopeDirective: (newScopeDirective !== directive) && newScopeDirective,
+ newIsolateScopeDirective: newIsolateScopeDirective,
+ templateDirective: templateDirective,
+ nonTlbTranscludeDirective: nonTlbTranscludeDirective
+ });
+ ii = directives.length;
+ } else if (directive.compile) {
+ try {
+ linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn);
+ if (isFunction(linkFn)) {
+ addLinkFns(null, linkFn, attrStart, attrEnd);
+ } else if (linkFn) {
+ addLinkFns(linkFn.pre, linkFn.post, attrStart, attrEnd);
+ }
+ } catch (e) {
+ $exceptionHandler(e, startingTag($compileNode));
+ }
+ }
+
+ if (directive.terminal) {
+ nodeLinkFn.terminal = true;
+ terminalPriority = Math.max(terminalPriority, directive.priority);
+ }
+
+ }
+
+ nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;
+ nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective;
+ nodeLinkFn.templateOnThisElement = hasTemplate;
+ nodeLinkFn.transclude = childTranscludeFn;
+
+ previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;
+
+ // might be normal or delayed nodeLinkFn depending on if templateUrl is present
+ return nodeLinkFn;
+
+ ////////////////////
+
+ function addLinkFns(pre, post, attrStart, attrEnd) {
+ if (pre) {
+ if (attrStart) pre = groupElementsLinkFnWrapper(pre, attrStart, attrEnd);
+ pre.require = directive.require;
+ pre.directiveName = directiveName;
+ if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
+ pre = cloneAndAnnotateFn(pre, {isolateScope: true});
+ }
+ preLinkFns.push(pre);
+ }
+ if (post) {
+ if (attrStart) post = groupElementsLinkFnWrapper(post, attrStart, attrEnd);
+ post.require = directive.require;
+ post.directiveName = directiveName;
+ if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
+ post = cloneAndAnnotateFn(post, {isolateScope: true});
+ }
+ postLinkFns.push(post);
+ }
+ }
+
+
+ function getControllers(directiveName, require, $element, elementControllers) {
+ var value;
+
+ if (isString(require)) {
+ var match = require.match(REQUIRE_PREFIX_REGEXP);
+ var name = require.substring(match[0].length);
+ var inheritType = match[1] || match[3];
+ var optional = match[2] === '?';
+
+ //If only parents then start at the parent element
+ if (inheritType === '^^') {
+ $element = $element.parent();
+ //Otherwise attempt getting the controller from elementControllers in case
+ //the element is transcluded (and has no data) and to avoid .data if possible
+ } else {
+ value = elementControllers && elementControllers[name];
+ value = value && value.instance;
+ }
+
+ if (!value) {
+ var dataName = '$' + name + 'Controller';
+ value = inheritType ? $element.inheritedData(dataName) : $element.data(dataName);
+ }
+
+ if (!value && !optional) {
+ throw $compileMinErr('ctreq',
+ "Controller '{0}', required by directive '{1}', can't be found!",
+ name, directiveName);
+ }
+ } else if (isArray(require)) {
+ value = [];
+ for (var i = 0, ii = require.length; i < ii; i++) {
+ value[i] = getControllers(directiveName, require[i], $element, elementControllers);
+ }
+ }
+
+ return value || null;
+ }
+
+ function setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope) {
+ var elementControllers = createMap();
+ for (var controllerKey in controllerDirectives) {
+ var directive = controllerDirectives[controllerKey];
+ var locals = {
+ $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,
+ $element: $element,
+ $attrs: attrs,
+ $transclude: transcludeFn
+ };
+
+ var controller = directive.controller;
+ if (controller == '@') {
+ controller = attrs[directive.name];
+ }
+
+ var controllerInstance = $controller(controller, locals, true, directive.controllerAs);
+
+ // For directives with element transclusion the element is a comment,
+ // but jQuery .data doesn't support attaching data to comment nodes as it's hard to
+ // clean up (http://bugs.jquery.com/ticket/8335).
+ // Instead, we save the controllers for the element in a local hash and attach to .data
+ // later, once we have the actual element.
+ elementControllers[directive.name] = controllerInstance;
+ if (!hasElementTranscludeDirective) {
+ $element.data('$' + directive.name + 'Controller', controllerInstance.instance);
+ }
+ }
+ return elementControllers;
+ }
+
+ function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn,
+ thisLinkFn) {
+ var i, ii, linkFn, controller, isolateScope, elementControllers, transcludeFn, $element,
+ attrs;
+
+ if (compileNode === linkNode) {
+ attrs = templateAttrs;
+ $element = templateAttrs.$$element;
+ } else {
+ $element = jqLite(linkNode);
+ attrs = new Attributes($element, templateAttrs);
+ }
+
+ if (newIsolateScopeDirective) {
+ isolateScope = scope.$new(true);
+ }
+
+ if (boundTranscludeFn) {
+ // track `boundTranscludeFn` so it can be unwrapped if `transcludeFn`
+ // is later passed as `parentBoundTranscludeFn` to `publicLinkFn`
+ transcludeFn = controllersBoundTransclude;
+ transcludeFn.$$boundTransclude = boundTranscludeFn;
+ }
+
+ if (controllerDirectives) {
+ elementControllers = setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope);
+ }
+
+ if (newIsolateScopeDirective) {
+ // Initialize isolate scope bindings for new isolate scope directive.
+ compile.$$addScopeInfo($element, isolateScope, true, !(templateDirective && (templateDirective === newIsolateScopeDirective ||
+ templateDirective === newIsolateScopeDirective.$$originalDirective)));
+ compile.$$addScopeClass($element, true);
+ isolateScope.$$isolateBindings =
+ newIsolateScopeDirective.$$isolateBindings;
+ initializeDirectiveBindings(scope, attrs, isolateScope,
+ isolateScope.$$isolateBindings,
+ newIsolateScopeDirective, isolateScope);
+ }
+ if (elementControllers) {
+ // Initialize bindToController bindings for new/isolate scopes
+ var scopeDirective = newIsolateScopeDirective || newScopeDirective;
+ var bindings;
+ var controllerForBindings;
+ if (scopeDirective && elementControllers[scopeDirective.name]) {
+ bindings = scopeDirective.$$bindings.bindToController;
+ controller = elementControllers[scopeDirective.name];
+
+ if (controller && controller.identifier && bindings) {
+ controllerForBindings = controller;
+ thisLinkFn.$$destroyBindings =
+ initializeDirectiveBindings(scope, attrs, controller.instance,
+ bindings, scopeDirective);
+ }
+ }
+ for (i in elementControllers) {
+ controller = elementControllers[i];
+ var controllerResult = controller();
+
+ if (controllerResult !== controller.instance) {
+ // If the controller constructor has a return value, overwrite the instance
+ // from setupControllers and update the element data
+ controller.instance = controllerResult;
+ $element.data('$' + i + 'Controller', controllerResult);
+ if (controller === controllerForBindings) {
+ // Remove and re-install bindToController bindings
+ thisLinkFn.$$destroyBindings();
+ thisLinkFn.$$destroyBindings =
+ initializeDirectiveBindings(scope, attrs, controllerResult, bindings, scopeDirective);
+ }
+ }
+ }
+ }
+
+ // PRELINKING
+ for (i = 0, ii = preLinkFns.length; i < ii; i++) {
+ linkFn = preLinkFns[i];
+ invokeLinkFn(linkFn,
+ linkFn.isolateScope ? isolateScope : scope,
+ $element,
+ attrs,
+ linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),
+ transcludeFn
+ );
+ }
+
+ // RECURSION
+ // We only pass the isolate scope, if the isolate directive has a template,
+ // otherwise the child elements do not belong to the isolate directive.
+ var scopeToChild = scope;
+ if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {
+ scopeToChild = isolateScope;
+ }
+ childLinkFn && childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn);
+
+ // POSTLINKING
+ for (i = postLinkFns.length - 1; i >= 0; i--) {
+ linkFn = postLinkFns[i];
+ invokeLinkFn(linkFn,
+ linkFn.isolateScope ? isolateScope : scope,
+ $element,
+ attrs,
+ linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),
+ transcludeFn
+ );
+ }
+
+ // This is the function that is injected as `$transclude`.
+ // Note: all arguments are optional!
+ function controllersBoundTransclude(scope, cloneAttachFn, futureParentElement) {
+ var transcludeControllers;
+
+ // No scope passed in:
+ if (!isScope(scope)) {
+ futureParentElement = cloneAttachFn;
+ cloneAttachFn = scope;
+ scope = undefined;
+ }
+
+ if (hasElementTranscludeDirective) {
+ transcludeControllers = elementControllers;
+ }
+ if (!futureParentElement) {
+ futureParentElement = hasElementTranscludeDirective ? $element.parent() : $element;
+ }
+ return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild);
+ }
+ }
+ }
+
+ function markDirectivesAsIsolate(directives) {
+ // mark all directives as needing isolate scope.
+ for (var j = 0, jj = directives.length; j < jj; j++) {
+ directives[j] = inherit(directives[j], {$$isolateScope: true});
+ }
+ }
+
+ /**
+ * looks up the directive and decorates it with exception handling and proper parameters. We
+ * call this the boundDirective.
+ *
+ * @param {string} name name of the directive to look up.
+ * @param {string} location The directive must be found in specific format.
+ * String containing any of theses characters:
+ *
+ * * `E`: element name
+ * * `A': attribute
+ * * `C`: class
+ * * `M`: comment
+ * @returns {boolean} true if directive was added.
+ */
+ function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName,
+ endAttrName) {
+ if (name === ignoreDirective) return null;
+ var match = null;
+ if (hasDirectives.hasOwnProperty(name)) {
+ for (var directive, directives = $injector.get(name + Suffix),
+ i = 0, ii = directives.length; i < ii; i++) {
+ try {
+ directive = directives[i];
+ if ((maxPriority === undefined || maxPriority > directive.priority) &&
+ directive.restrict.indexOf(location) != -1) {
+ if (startAttrName) {
+ directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName});
+ }
+ tDirectives.push(directive);
+ match = directive;
+ }
+ } catch (e) { $exceptionHandler(e); }
+ }
+ }
+ return match;
+ }
+
+
+ /**
+ * looks up the directive and returns true if it is a multi-element directive,
+ * and therefore requires DOM nodes between -start and -end markers to be grouped
+ * together.
+ *
+ * @param {string} name name of the directive to look up.
+ * @returns true if directive was registered as multi-element.
+ */
+ function directiveIsMultiElement(name) {
+ if (hasDirectives.hasOwnProperty(name)) {
+ for (var directive, directives = $injector.get(name + Suffix),
+ i = 0, ii = directives.length; i < ii; i++) {
+ directive = directives[i];
+ if (directive.multiElement) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * When the element is replaced with HTML template then the new attributes
+ * on the template need to be merged with the existing attributes in the DOM.
+ * The desired effect is to have both of the attributes present.
+ *
+ * @param {object} dst destination attributes (original DOM)
+ * @param {object} src source attributes (from the directive template)
+ */
+ function mergeTemplateAttributes(dst, src) {
+ var srcAttr = src.$attr,
+ dstAttr = dst.$attr,
+ $element = dst.$$element;
+
+ // reapply the old attributes to the new element
+ forEach(dst, function(value, key) {
+ if (key.charAt(0) != '$') {
+ if (src[key] && src[key] !== value) {
+ value += (key === 'style' ? ';' : ' ') + src[key];
+ }
+ dst.$set(key, value, true, srcAttr[key]);
+ }
+ });
+
+ // copy the new attributes on the old attrs object
+ forEach(src, function(value, key) {
+ if (key == 'class') {
+ safeAddClass($element, value);
+ dst['class'] = (dst['class'] ? dst['class'] + ' ' : '') + value;
+ } else if (key == 'style') {
+ $element.attr('style', $element.attr('style') + ';' + value);
+ dst['style'] = (dst['style'] ? dst['style'] + ';' : '') + value;
+ // `dst` will never contain hasOwnProperty as DOM parser won't let it.
+ // You will get an "InvalidCharacterError: DOM Exception 5" error if you
+ // have an attribute like "has-own-property" or "data-has-own-property", etc.
+ } else if (key.charAt(0) != '$' && !dst.hasOwnProperty(key)) {
+ dst[key] = value;
+ dstAttr[key] = srcAttr[key];
+ }
+ });
+ }
+
+
+ function compileTemplateUrl(directives, $compileNode, tAttrs,
+ $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {
+ var linkQueue = [],
+ afterTemplateNodeLinkFn,
+ afterTemplateChildLinkFn,
+ beforeTemplateCompileNode = $compileNode[0],
+ origAsyncDirective = directives.shift(),
+ derivedSyncDirective = inherit(origAsyncDirective, {
+ templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective
+ }),
+ templateUrl = (isFunction(origAsyncDirective.templateUrl))
+ ? origAsyncDirective.templateUrl($compileNode, tAttrs)
+ : origAsyncDirective.templateUrl,
+ templateNamespace = origAsyncDirective.templateNamespace;
+
+ $compileNode.empty();
+
+ $templateRequest(templateUrl)
+ .then(function(content) {
+ var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;
+
+ content = denormalizeTemplate(content);
+
+ if (origAsyncDirective.replace) {
+ if (jqLiteIsTextNode(content)) {
+ $template = [];
+ } else {
+ $template = removeComments(wrapTemplate(templateNamespace, trim(content)));
+ }
+ compileNode = $template[0];
+
+ if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
+ throw $compileMinErr('tplrt',
+ "Template for directive '{0}' must have exactly one root element. {1}",
+ origAsyncDirective.name, templateUrl);
+ }
+
+ tempTemplateAttrs = {$attr: {}};
+ replaceWith($rootElement, $compileNode, compileNode);
+ var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);
+
+ if (isObject(origAsyncDirective.scope)) {
+ markDirectivesAsIsolate(templateDirectives);
+ }
+ directives = templateDirectives.concat(directives);
+ mergeTemplateAttributes(tAttrs, tempTemplateAttrs);
+ } else {
+ compileNode = beforeTemplateCompileNode;
+ $compileNode.html(content);
+ }
+
+ directives.unshift(derivedSyncDirective);
+
+ afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs,
+ childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns,
+ previousCompileContext);
+ forEach($rootElement, function(node, i) {
+ if (node == compileNode) {
+ $rootElement[i] = $compileNode[0];
+ }
+ });
+ afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn);
+
+ while (linkQueue.length) {
+ var scope = linkQueue.shift(),
+ beforeTemplateLinkNode = linkQueue.shift(),
+ linkRootElement = linkQueue.shift(),
+ boundTranscludeFn = linkQueue.shift(),
+ linkNode = $compileNode[0];
+
+ if (scope.$$destroyed) continue;
+
+ if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {
+ var oldClasses = beforeTemplateLinkNode.className;
+
+ if (!(previousCompileContext.hasElementTranscludeDirective &&
+ origAsyncDirective.replace)) {
+ // it was cloned therefore we have to clone as well.
+ linkNode = jqLiteClone(compileNode);
+ }
+ replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);
+
+ // Copy in CSS classes from original node
+ safeAddClass(jqLite(linkNode), oldClasses);
+ }
+ if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
+ childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
+ } else {
+ childBoundTranscludeFn = boundTranscludeFn;
+ }
+ afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement,
+ childBoundTranscludeFn, afterTemplateNodeLinkFn);
+ }
+ linkQueue = null;
+ });
+
+ return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) {
+ var childBoundTranscludeFn = boundTranscludeFn;
+ if (scope.$$destroyed) return;
+ if (linkQueue) {
+ linkQueue.push(scope,
+ node,
+ rootElement,
+ childBoundTranscludeFn);
+ } else {
+ if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
+ childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
+ }
+ afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn,
+ afterTemplateNodeLinkFn);
+ }
+ };
+ }
+
+
+ /**
+ * Sorting function for bound directives.
+ */
+ function byPriority(a, b) {
+ var diff = b.priority - a.priority;
+ if (diff !== 0) return diff;
+ if (a.name !== b.name) return (a.name < b.name) ? -1 : 1;
+ return a.index - b.index;
+ }
+
+ function assertNoDuplicate(what, previousDirective, directive, element) {
+
+ function wrapModuleNameIfDefined(moduleName) {
+ return moduleName ?
+ (' (module: ' + moduleName + ')') :
+ '';
+ }
+
+ if (previousDirective) {
+ throw $compileMinErr('multidir', 'Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}',
+ previousDirective.name, wrapModuleNameIfDefined(previousDirective.$$moduleName),
+ directive.name, wrapModuleNameIfDefined(directive.$$moduleName), what, startingTag(element));
+ }
+ }
+
+
+ function addTextInterpolateDirective(directives, text) {
+ var interpolateFn = $interpolate(text, true);
+ if (interpolateFn) {
+ directives.push({
+ priority: 0,
+ compile: function textInterpolateCompileFn(templateNode) {
+ var templateNodeParent = templateNode.parent(),
+ hasCompileParent = !!templateNodeParent.length;
+
+ // When transcluding a template that has bindings in the root
+ // we don't have a parent and thus need to add the class during linking fn.
+ if (hasCompileParent) compile.$$addBindingClass(templateNodeParent);
+
+ return function textInterpolateLinkFn(scope, node) {
+ var parent = node.parent();
+ if (!hasCompileParent) compile.$$addBindingClass(parent);
+ compile.$$addBindingInfo(parent, interpolateFn.expressions);
+ scope.$watch(interpolateFn, function interpolateFnWatchAction(value) {
+ node[0].nodeValue = value;
+ });
+ };
+ }
+ });
+ }
+ }
+
+
+ function wrapTemplate(type, template) {
+ type = lowercase(type || 'html');
+ switch (type) {
+ case 'svg':
+ case 'math':
+ var wrapper = document.createElement('div');
+ wrapper.innerHTML = '<' + type + '>' + template + '</' + type + '>';
+ return wrapper.childNodes[0].childNodes;
+ default:
+ return template;
+ }
+ }
+
+
+ function getTrustedContext(node, attrNormalizedName) {
+ if (attrNormalizedName == "srcdoc") {
+ return $sce.HTML;
+ }
+ var tag = nodeName_(node);
+ // maction[xlink:href] can source SVG. It's not limited to <maction>.
+ if (attrNormalizedName == "xlinkHref" ||
+ (tag == "form" && attrNormalizedName == "action") ||
+ (tag != "img" && (attrNormalizedName == "src" ||
+ attrNormalizedName == "ngSrc"))) {
+ return $sce.RESOURCE_URL;
+ }
+ }
+
+
+ function addAttrInterpolateDirective(node, directives, value, name, allOrNothing) {
+ var trustedContext = getTrustedContext(node, name);
+ allOrNothing = ALL_OR_NOTHING_ATTRS[name] || allOrNothing;
+
+ var interpolateFn = $interpolate(value, true, trustedContext, allOrNothing);
+
+ // no interpolation found -> ignore
+ if (!interpolateFn) return;
+
+
+ if (name === "multiple" && nodeName_(node) === "select") {
+ throw $compileMinErr("selmulti",
+ "Binding to the 'multiple' attribute is not supported. Element: {0}",
+ startingTag(node));
+ }
+
+ directives.push({
+ priority: 100,
+ compile: function() {
+ return {
+ pre: function attrInterpolatePreLinkFn(scope, element, attr) {
+ var $$observers = (attr.$$observers || (attr.$$observers = {}));
+
+ if (EVENT_HANDLER_ATTR_REGEXP.test(name)) {
+ throw $compileMinErr('nodomevents',
+ "Interpolations for HTML DOM event attributes are disallowed. Please use the " +
+ "ng- versions (such as ng-click instead of onclick) instead.");
+ }
+
+ // If the attribute has changed since last $interpolate()ed
+ var newValue = attr[name];
+ if (newValue !== value) {
+ // we need to interpolate again since the attribute value has been updated
+ // (e.g. by another directive's compile function)
+ // ensure unset/empty values make interpolateFn falsy
+ interpolateFn = newValue && $interpolate(newValue, true, trustedContext, allOrNothing);
+ value = newValue;
+ }
+
+ // if attribute was updated so that there is no interpolation going on we don't want to
+ // register any observers
+ if (!interpolateFn) return;
+
+ // initialize attr object so that it's ready in case we need the value for isolate
+ // scope initialization, otherwise the value would not be available from isolate
+ // directive's linking fn during linking phase
+ attr[name] = interpolateFn(scope);
+
+ ($$observers[name] || ($$observers[name] = [])).$$inter = true;
+ (attr.$$observers && attr.$$observers[name].$$scope || scope).
+ $watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) {
+ //special case for class attribute addition + removal
+ //so that class changes can tap into the animation
+ //hooks provided by the $animate service. Be sure to
+ //skip animations when the first digest occurs (when
+ //both the new and the old values are the same) since
+ //the CSS classes are the non-interpolated values
+ if (name === 'class' && newValue != oldValue) {
+ attr.$updateClass(newValue, oldValue);
+ } else {
+ attr.$set(name, newValue);
+ }
+ });
+ }
+ };
+ }
+ });
+ }
+
+
+ /**
+ * This is a special jqLite.replaceWith, which can replace items which
+ * have no parents, provided that the containing jqLite collection is provided.
+ *
+ * @param {JqLite=} $rootElement The root of the compile tree. Used so that we can replace nodes
+ * in the root of the tree.
+ * @param {JqLite} elementsToRemove The jqLite element which we are going to replace. We keep
+ * the shell, but replace its DOM node reference.
+ * @param {Node} newNode The new DOM node.
+ */
+ function replaceWith($rootElement, elementsToRemove, newNode) {
+ var firstElementToRemove = elementsToRemove[0],
+ removeCount = elementsToRemove.length,
+ parent = firstElementToRemove.parentNode,
+ i, ii;
+
+ if ($rootElement) {
+ for (i = 0, ii = $rootElement.length; i < ii; i++) {
+ if ($rootElement[i] == firstElementToRemove) {
+ $rootElement[i++] = newNode;
+ for (var j = i, j2 = j + removeCount - 1,
+ jj = $rootElement.length;
+ j < jj; j++, j2++) {
+ if (j2 < jj) {
+ $rootElement[j] = $rootElement[j2];
+ } else {
+ delete $rootElement[j];
+ }
+ }
+ $rootElement.length -= removeCount - 1;
+
+ // If the replaced element is also the jQuery .context then replace it
+ // .context is a deprecated jQuery api, so we should set it only when jQuery set it
+ // http://api.jquery.com/context/
+ if ($rootElement.context === firstElementToRemove) {
+ $rootElement.context = newNode;
+ }
+ break;
+ }
+ }
+ }
+
+ if (parent) {
+ parent.replaceChild(newNode, firstElementToRemove);
+ }
+
+ // TODO(perf): what's this document fragment for? is it needed? can we at least reuse it?
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild(firstElementToRemove);
+
+ if (jqLite.hasData(firstElementToRemove)) {
+ // Copy over user data (that includes Angular's $scope etc.). Don't copy private
+ // data here because there's no public interface in jQuery to do that and copying over
+ // event listeners (which is the main use of private data) wouldn't work anyway.
+ jqLite(newNode).data(jqLite(firstElementToRemove).data());
+
+ // Remove data of the replaced element. We cannot just call .remove()
+ // on the element it since that would deallocate scope that is needed
+ // for the new node. Instead, remove the data "manually".
+ if (!jQuery) {
+ delete jqLite.cache[firstElementToRemove[jqLite.expando]];
+ } else {
+ // jQuery 2.x doesn't expose the data storage. Use jQuery.cleanData to clean up after
+ // the replaced element. The cleanData version monkey-patched by Angular would cause
+ // the scope to be trashed and we do need the very same scope to work with the new
+ // element. However, we cannot just cache the non-patched version and use it here as
+ // that would break if another library patches the method after Angular does (one
+ // example is jQuery UI). Instead, set a flag indicating scope destroying should be
+ // skipped this one time.
+ skipDestroyOnNextJQueryCleanData = true;
+ jQuery.cleanData([firstElementToRemove]);
+ }
+ }
+
+ for (var k = 1, kk = elementsToRemove.length; k < kk; k++) {
+ var element = elementsToRemove[k];
+ jqLite(element).remove(); // must do this way to clean up expando
+ fragment.appendChild(element);
+ delete elementsToRemove[k];
+ }
+
+ elementsToRemove[0] = newNode;
+ elementsToRemove.length = 1;
+ }
+
+
+ function cloneAndAnnotateFn(fn, annotation) {
+ return extend(function() { return fn.apply(null, arguments); }, fn, annotation);
+ }
+
+
+ function invokeLinkFn(linkFn, scope, $element, attrs, controllers, transcludeFn) {
+ try {
+ linkFn(scope, $element, attrs, controllers, transcludeFn);
+ } catch (e) {
+ $exceptionHandler(e, startingTag($element));
+ }
+ }
+
+
+ // Set up $watches for isolate scope and controller bindings. This process
+ // only occurs for isolate scopes and new scopes with controllerAs.
+ function initializeDirectiveBindings(scope, attrs, destination, bindings,
+ directive, newScope) {
+ var onNewScopeDestroyed;
+ forEach(bindings, function(definition, scopeName) {
+ var attrName = definition.attrName,
+ optional = definition.optional,
+ mode = definition.mode, // @, =, or &
+ lastValue,
+ parentGet, parentSet, compare;
+
+ switch (mode) {
+
+ case '@':
+ if (!optional && !hasOwnProperty.call(attrs, attrName)) {
+ destination[scopeName] = attrs[attrName] = void 0;
+ }
+ attrs.$observe(attrName, function(value) {
+ if (isString(value)) {
+ destination[scopeName] = value;
+ }
+ });
+ attrs.$$observers[attrName].$$scope = scope;
+ if (isString(attrs[attrName])) {
+ // If the attribute has been provided then we trigger an interpolation to ensure
+ // the value is there for use in the link fn
+ destination[scopeName] = $interpolate(attrs[attrName])(scope);
+ }
+ break;
+
+ case '=':
+ if (!hasOwnProperty.call(attrs, attrName)) {
+ if (optional) break;
+ attrs[attrName] = void 0;
+ }
+ if (optional && !attrs[attrName]) break;
+
+ parentGet = $parse(attrs[attrName]);
+ if (parentGet.literal) {
+ compare = equals;
+ } else {
+ compare = function(a, b) { return a === b || (a !== a && b !== b); };
+ }
+ parentSet = parentGet.assign || function() {
+ // reset the change, or we will throw this exception on every $digest
+ lastValue = destination[scopeName] = parentGet(scope);
+ throw $compileMinErr('nonassign',
+ "Expression '{0}' used with directive '{1}' is non-assignable!",
+ attrs[attrName], directive.name);
+ };
+ lastValue = destination[scopeName] = parentGet(scope);
+ var parentValueWatch = function parentValueWatch(parentValue) {
+ if (!compare(parentValue, destination[scopeName])) {
+ // we are out of sync and need to copy
+ if (!compare(parentValue, lastValue)) {
+ // parent changed and it has precedence
+ destination[scopeName] = parentValue;
+ } else {
+ // if the parent can be assigned then do so
+ parentSet(scope, parentValue = destination[scopeName]);
+ }
+ }
+ return lastValue = parentValue;
+ };
+ parentValueWatch.$stateful = true;
+ var unwatch;
+ if (definition.collection) {
+ unwatch = scope.$watchCollection(attrs[attrName], parentValueWatch);
+ } else {
+ unwatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal);
+ }
+ onNewScopeDestroyed = (onNewScopeDestroyed || []);
+ onNewScopeDestroyed.push(unwatch);
+ break;
+
+ case '&':
+ // Don't assign Object.prototype method to scope
+ parentGet = attrs.hasOwnProperty(attrName) ? $parse(attrs[attrName]) : noop;
+
+ // Don't assign noop to destination if expression is not valid
+ if (parentGet === noop && optional) break;
+
+ destination[scopeName] = function(locals) {
+ return parentGet(scope, locals);
+ };
+ break;
+ }
+ });
+ var destroyBindings = onNewScopeDestroyed ? function destroyBindings() {
+ for (var i = 0, ii = onNewScopeDestroyed.length; i < ii; ++i) {
+ onNewScopeDestroyed[i]();
+ }
+ } : noop;
+ if (newScope && destroyBindings !== noop) {
+ newScope.$on('$destroy', destroyBindings);
+ return noop;
+ }
+ return destroyBindings;
+ }
+ }];
+}
+
+var PREFIX_REGEXP = /^((?:x|data)[\:\-_])/i;
+/**
+ * Converts all accepted directives format into proper directive name.
+ * @param name Name to normalize
+ */
+function directiveNormalize(name) {
+ return camelCase(name.replace(PREFIX_REGEXP, ''));
+}
+
+/**
+ * @ngdoc type
+ * @name $compile.directive.Attributes
+ *
+ * @description
+ * A shared object between directive compile / linking functions which contains normalized DOM
+ * element attributes. The values reflect current binding state `{{ }}`. The normalization is
+ * needed since all of these are treated as equivalent in Angular:
+ *
+ * ```
+ * <span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">
+ * ```
+ */
+
+/**
+ * @ngdoc property
+ * @name $compile.directive.Attributes#$attr
+ *
+ * @description
+ * A map of DOM element attribute names to the normalized name. This is
+ * needed to do reverse lookup from normalized name back to actual name.
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$set
+ * @kind function
+ *
+ * @description
+ * Set DOM element attribute value.
+ *
+ *
+ * @param {string} name Normalized element attribute name of the property to modify. The name is
+ * reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr}
+ * property to the original name.
+ * @param {string} value Value to set the attribute to. The value can be an interpolated string.
+ */
+
+
+
+/**
+ * Closure compiler type information
+ */
+
+function nodesetLinkingFn(
+ /* angular.Scope */ scope,
+ /* NodeList */ nodeList,
+ /* Element */ rootElement,
+ /* function(Function) */ boundTranscludeFn
+) {}
+
+function directiveLinkingFn(
+ /* nodesetLinkingFn */ nodesetLinkingFn,
+ /* angular.Scope */ scope,
+ /* Node */ node,
+ /* Element */ rootElement,
+ /* function(Function) */ boundTranscludeFn
+) {}
+
+function tokenDifference(str1, str2) {
+ var values = '',
+ tokens1 = str1.split(/\s+/),
+ tokens2 = str2.split(/\s+/);
+
+ outer:
+ for (var i = 0; i < tokens1.length; i++) {
+ var token = tokens1[i];
+ for (var j = 0; j < tokens2.length; j++) {
+ if (token == tokens2[j]) continue outer;
+ }
+ values += (values.length > 0 ? ' ' : '') + token;
+ }
+ return values;
+}
+
+function removeComments(jqNodes) {
+ jqNodes = jqLite(jqNodes);
+ var i = jqNodes.length;
+
+ if (i <= 1) {
+ return jqNodes;
+ }
+
+ while (i--) {
+ var node = jqNodes[i];
+ if (node.nodeType === NODE_TYPE_COMMENT) {
+ splice.call(jqNodes, i, 1);
+ }
+ }
+ return jqNodes;
+}
+
+var $controllerMinErr = minErr('$controller');
+
+
+var CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/;
+function identifierForController(controller, ident) {
+ if (ident && isString(ident)) return ident;
+ if (isString(controller)) {
+ var match = CNTRL_REG.exec(controller);
+ if (match) return match[3];
+ }
+}
+
+
+/**
+ * @ngdoc provider
+ * @name $controllerProvider
+ * @description
+ * The {@link ng.$controller $controller service} is used by Angular to create new
+ * controllers.
+ *
+ * This provider allows controller registration via the
+ * {@link ng.$controllerProvider#register register} method.
+ */
+function $ControllerProvider() {
+ var controllers = {},
+ globals = false;
+
+ /**
+ * @ngdoc method
+ * @name $controllerProvider#register
+ * @param {string|Object} name Controller name, or an object map of controllers where the keys are
+ * the names and the values are the constructors.
+ * @param {Function|Array} constructor Controller constructor fn (optionally decorated with DI
+ * annotations in the array notation).
+ */
+ this.register = function(name, constructor) {
+ assertNotHasOwnProperty(name, 'controller');
+ if (isObject(name)) {
+ extend(controllers, name);
+ } else {
+ controllers[name] = constructor;
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $controllerProvider#allowGlobals
+ * @description If called, allows `$controller` to find controller constructors on `window`
+ */
+ this.allowGlobals = function() {
+ globals = true;
+ };
+
+
+ this.$get = ['$injector', '$window', function($injector, $window) {
+
+ /**
+ * @ngdoc service
+ * @name $controller
+ * @requires $injector
+ *
+ * @param {Function|string} constructor If called with a function then it's considered to be the
+ * controller constructor function. Otherwise it's considered to be a string which is used
+ * to retrieve the controller constructor using the following steps:
+ *
+ * * check if a controller with given name is registered via `$controllerProvider`
+ * * check if evaluating the string on the current scope returns a constructor
+ * * if $controllerProvider#allowGlobals, check `window[constructor]` on the global
+ * `window` object (not recommended)
+ *
+ * The string can use the `controller as property` syntax, where the controller instance is published
+ * as the specified property on the `scope`; the `scope` must be injected into `locals` param for this
+ * to work correctly.
+ *
+ * @param {Object} locals Injection locals for Controller.
+ * @return {Object} Instance of given controller.
+ *
+ * @description
+ * `$controller` service is responsible for instantiating controllers.
+ *
+ * It's just a simple call to {@link auto.$injector $injector}, but extracted into
+ * a service, so that one can override this service with [BC version](https://gist.github.com/1649788).
+ */
+ return function(expression, locals, later, ident) {
+ // PRIVATE API:
+ // param `later` --- indicates that the controller's constructor is invoked at a later time.
+ // If true, $controller will allocate the object with the correct
+ // prototype chain, but will not invoke the controller until a returned
+ // callback is invoked.
+ // param `ident` --- An optional label which overrides the label parsed from the controller
+ // expression, if any.
+ var instance, match, constructor, identifier;
+ later = later === true;
+ if (ident && isString(ident)) {
+ identifier = ident;
+ }
+
+ if (isString(expression)) {
+ match = expression.match(CNTRL_REG);
+ if (!match) {
+ throw $controllerMinErr('ctrlfmt',
+ "Badly formed controller string '{0}'. " +
+ "Must match `__name__ as __id__` or `__name__`.", expression);
+ }
+ constructor = match[1],
+ identifier = identifier || match[3];
+ expression = controllers.hasOwnProperty(constructor)
+ ? controllers[constructor]
+ : getter(locals.$scope, constructor, true) ||
+ (globals ? getter($window, constructor, true) : undefined);
+
+ assertArgFn(expression, constructor, true);
+ }
+
+ if (later) {
+ // Instantiate controller later:
+ // This machinery is used to create an instance of the object before calling the
+ // controller's constructor itself.
+ //
+ // This allows properties to be added to the controller before the constructor is
+ // invoked. Primarily, this is used for isolate scope bindings in $compile.
+ //
+ // This feature is not intended for use by applications, and is thus not documented
+ // publicly.
+ // Object creation: http://jsperf.com/create-constructor/2
+ var controllerPrototype = (isArray(expression) ?
+ expression[expression.length - 1] : expression).prototype;
+ instance = Object.create(controllerPrototype || null);
+
+ if (identifier) {
+ addIdentifier(locals, identifier, instance, constructor || expression.name);
+ }
+
+ var instantiate;
+ return instantiate = extend(function() {
+ var result = $injector.invoke(expression, instance, locals, constructor);
+ if (result !== instance && (isObject(result) || isFunction(result))) {
+ instance = result;
+ if (identifier) {
+ // If result changed, re-assign controllerAs value to scope.
+ addIdentifier(locals, identifier, instance, constructor || expression.name);
+ }
+ }
+ return instance;
+ }, {
+ instance: instance,
+ identifier: identifier
+ });
+ }
+
+ instance = $injector.instantiate(expression, locals, constructor);
+
+ if (identifier) {
+ addIdentifier(locals, identifier, instance, constructor || expression.name);
+ }
+
+ return instance;
+ };
+
+ function addIdentifier(locals, identifier, instance, name) {
+ if (!(locals && isObject(locals.$scope))) {
+ throw minErr('$controller')('noscp',
+ "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",
+ name, identifier);
+ }
+
+ locals.$scope[identifier] = instance;
+ }
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $document
+ * @requires $window
+ *
+ * @description
+ * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object.
+ *
+ * @example
+ <example module="documentExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <p>$document title: <b ng-bind="title"></b></p>
+ <p>window.document title: <b ng-bind="windowTitle"></b></p>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('documentExample', [])
+ .controller('ExampleController', ['$scope', '$document', function($scope, $document) {
+ $scope.title = $document[0].title;
+ $scope.windowTitle = angular.element(window.document)[0].title;
+ }]);
+ </file>
+ </example>
+ */
+function $DocumentProvider() {
+ this.$get = ['$window', function(window) {
+ return jqLite(window.document);
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $exceptionHandler
+ * @requires ng.$log
+ *
+ * @description
+ * Any uncaught exception in angular expressions is delegated to this service.
+ * The default implementation simply delegates to `$log.error` which logs it into
+ * the browser console.
+ *
+ * In unit tests, if `angular-mocks.js` is loaded, this service is overridden by
+ * {@link ngMock.$exceptionHandler mock $exceptionHandler} which aids in testing.
+ *
+ * ## Example:
+ *
+ * ```js
+ * angular.module('exceptionOverride', []).factory('$exceptionHandler', function() {
+ * return function(exception, cause) {
+ * exception.message += ' (caused by "' + cause + '")';
+ * throw exception;
+ * };
+ * });
+ * ```
+ *
+ * This example will override the normal action of `$exceptionHandler`, to make angular
+ * exceptions fail hard when they happen, instead of just logging to the console.
+ *
+ * <hr />
+ * Note, that code executed in event-listeners (even those registered using jqLite's `on`/`bind`
+ * methods) does not delegate exceptions to the {@link ng.$exceptionHandler $exceptionHandler}
+ * (unless executed during a digest).
+ *
+ * If you wish, you can manually delegate exceptions, e.g.
+ * `try { ... } catch(e) { $exceptionHandler(e); }`
+ *
+ * @param {Error} exception Exception associated with the error.
+ * @param {string=} cause optional information about the context in which
+ * the error was thrown.
+ *
+ */
+function $ExceptionHandlerProvider() {
+ this.$get = ['$log', function($log) {
+ return function(exception, cause) {
+ $log.error.apply($log, arguments);
+ };
+ }];
+}
+
+var $$ForceReflowProvider = function() {
+ this.$get = ['$document', function($document) {
+ return function(domNode) {
+ //the line below will force the browser to perform a repaint so
+ //that all the animated elements within the animation frame will
+ //be properly updated and drawn on screen. This is required to
+ //ensure that the preparation animation is properly flushed so that
+ //the active state picks up from there. DO NOT REMOVE THIS LINE.
+ //DO NOT OPTIMIZE THIS LINE. THE MINIFIER WILL REMOVE IT OTHERWISE WHICH
+ //WILL RESULT IN AN UNPREDICTABLE BUG THAT IS VERY HARD TO TRACK DOWN AND
+ //WILL TAKE YEARS AWAY FROM YOUR LIFE.
+ if (domNode) {
+ if (!domNode.nodeType && domNode instanceof jqLite) {
+ domNode = domNode[0];
+ }
+ } else {
+ domNode = $document[0].body;
+ }
+ return domNode.offsetWidth + 1;
+ };
+ }];
+};
+
+var APPLICATION_JSON = 'application/json';
+var CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': APPLICATION_JSON + ';charset=utf-8'};
+var JSON_START = /^\[|^\{(?!\{)/;
+var JSON_ENDS = {
+ '[': /]$/,
+ '{': /}$/
+};
+var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/;
+var $httpMinErr = minErr('$http');
+var $httpMinErrLegacyFn = function(method) {
+ return function() {
+ throw $httpMinErr('legacy', 'The method `{0}` on the promise returned from `$http` has been disabled.', method);
+ };
+};
+
+function serializeValue(v) {
+ if (isObject(v)) {
+ return isDate(v) ? v.toISOString() : toJson(v);
+ }
+ return v;
+}
+
+
+function $HttpParamSerializerProvider() {
+ /**
+ * @ngdoc service
+ * @name $httpParamSerializer
+ * @description
+ *
+ * Default {@link $http `$http`} params serializer that converts objects to strings
+ * according to the following rules:
+ *
+ * * `{'foo': 'bar'}` results in `foo=bar`
+ * * `{'foo': Date.now()}` results in `foo=2015-04-01T09%3A50%3A49.262Z` (`toISOString()` and encoded representation of a Date object)
+ * * `{'foo': ['bar', 'baz']}` results in `foo=bar&foo=baz` (repeated key for each array element)
+ * * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D"` (stringified and encoded representation of an object)
+ *
+ * Note that serializer will sort the request parameters alphabetically.
+ * */
+
+ this.$get = function() {
+ return function ngParamSerializer(params) {
+ if (!params) return '';
+ var parts = [];
+ forEachSorted(params, function(value, key) {
+ if (value === null || isUndefined(value)) return;
+ if (isArray(value)) {
+ forEach(value, function(v, k) {
+ parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(v)));
+ });
+ } else {
+ parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(value)));
+ }
+ });
+
+ return parts.join('&');
+ };
+ };
+}
+
+function $HttpParamSerializerJQLikeProvider() {
+ /**
+ * @ngdoc service
+ * @name $httpParamSerializerJQLike
+ * @description
+ *
+ * Alternative {@link $http `$http`} params serializer that follows
+ * jQuery's [`param()`](http://api.jquery.com/jquery.param/) method logic.
+ * The serializer will also sort the params alphabetically.
+ *
+ * To use it for serializing `$http` request parameters, set it as the `paramSerializer` property:
+ *
+ * ```js
+ * $http({
+ * url: myUrl,
+ * method: 'GET',
+ * params: myParams,
+ * paramSerializer: '$httpParamSerializerJQLike'
+ * });
+ * ```
+ *
+ * It is also possible to set it as the default `paramSerializer` in the
+ * {@link $httpProvider#defaults `$httpProvider`}.
+ *
+ * Additionally, you can inject the serializer and use it explicitly, for example to serialize
+ * form data for submission:
+ *
+ * ```js
+ * .controller(function($http, $httpParamSerializerJQLike) {
+ * //...
+ *
+ * $http({
+ * url: myUrl,
+ * method: 'POST',
+ * data: $httpParamSerializerJQLike(myData),
+ * headers: {
+ * 'Content-Type': 'application/x-www-form-urlencoded'
+ * }
+ * });
+ *
+ * });
+ * ```
+ *
+ * */
+ this.$get = function() {
+ return function jQueryLikeParamSerializer(params) {
+ if (!params) return '';
+ var parts = [];
+ serialize(params, '', true);
+ return parts.join('&');
+
+ function serialize(toSerialize, prefix, topLevel) {
+ if (toSerialize === null || isUndefined(toSerialize)) return;
+ if (isArray(toSerialize)) {
+ forEach(toSerialize, function(value, index) {
+ serialize(value, prefix + '[' + (isObject(value) ? index : '') + ']');
+ });
+ } else if (isObject(toSerialize) && !isDate(toSerialize)) {
+ forEachSorted(toSerialize, function(value, key) {
+ serialize(value, prefix +
+ (topLevel ? '' : '[') +
+ key +
+ (topLevel ? '' : ']'));
+ });
+ } else {
+ parts.push(encodeUriQuery(prefix) + '=' + encodeUriQuery(serializeValue(toSerialize)));
+ }
+ }
+ };
+ };
+}
+
+function defaultHttpResponseTransform(data, headers) {
+ if (isString(data)) {
+ // Strip json vulnerability protection prefix and trim whitespace
+ var tempData = data.replace(JSON_PROTECTION_PREFIX, '').trim();
+
+ if (tempData) {
+ var contentType = headers('Content-Type');
+ if ((contentType && (contentType.indexOf(APPLICATION_JSON) === 0)) || isJsonLike(tempData)) {
+ data = fromJson(tempData);
+ }
+ }
+ }
+
+ return data;
+}
+
+function isJsonLike(str) {
+ var jsonStart = str.match(JSON_START);
+ return jsonStart && JSON_ENDS[jsonStart[0]].test(str);
+}
+
+/**
+ * Parse headers into key value object
+ *
+ * @param {string} headers Raw headers as a string
+ * @returns {Object} Parsed headers as key value object
+ */
+function parseHeaders(headers) {
+ var parsed = createMap(), i;
+
+ function fillInParsed(key, val) {
+ if (key) {
+ parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+ }
+ }
+
+ if (isString(headers)) {
+ forEach(headers.split('\n'), function(line) {
+ i = line.indexOf(':');
+ fillInParsed(lowercase(trim(line.substr(0, i))), trim(line.substr(i + 1)));
+ });
+ } else if (isObject(headers)) {
+ forEach(headers, function(headerVal, headerKey) {
+ fillInParsed(lowercase(headerKey), trim(headerVal));
+ });
+ }
+
+ return parsed;
+}
+
+
+/**
+ * Returns a function that provides access to parsed headers.
+ *
+ * Headers are lazy parsed when first requested.
+ * @see parseHeaders
+ *
+ * @param {(string|Object)} headers Headers to provide access to.
+ * @returns {function(string=)} Returns a getter function which if called with:
+ *
+ * - if called with single an argument returns a single header value or null
+ * - if called with no arguments returns an object containing all headers.
+ */
+function headersGetter(headers) {
+ var headersObj;
+
+ return function(name) {
+ if (!headersObj) headersObj = parseHeaders(headers);
+
+ if (name) {
+ var value = headersObj[lowercase(name)];
+ if (value === void 0) {
+ value = null;
+ }
+ return value;
+ }
+
+ return headersObj;
+ };
+}
+
+
+/**
+ * Chain all given functions
+ *
+ * This function is used for both request and response transforming
+ *
+ * @param {*} data Data to transform.
+ * @param {function(string=)} headers HTTP headers getter fn.
+ * @param {number} status HTTP status code of the response.
+ * @param {(Function|Array.<Function>)} fns Function or an array of functions.
+ * @returns {*} Transformed data.
+ */
+function transformData(data, headers, status, fns) {
+ if (isFunction(fns)) {
+ return fns(data, headers, status);
+ }
+
+ forEach(fns, function(fn) {
+ data = fn(data, headers, status);
+ });
+
+ return data;
+}
+
+
+function isSuccess(status) {
+ return 200 <= status && status < 300;
+}
+
+
+/**
+ * @ngdoc provider
+ * @name $httpProvider
+ * @description
+ * Use `$httpProvider` to change the default behavior of the {@link ng.$http $http} service.
+ * */
+function $HttpProvider() {
+ /**
+ * @ngdoc property
+ * @name $httpProvider#defaults
+ * @description
+ *
+ * Object containing default values for all {@link ng.$http $http} requests.
+ *
+ * - **`defaults.cache`** - {Object} - an object built with {@link ng.$cacheFactory `$cacheFactory`}
+ * that will provide the cache for all requests who set their `cache` property to `true`.
+ * If you set the `defaults.cache = false` then only requests that specify their own custom
+ * cache object will be cached. See {@link $http#caching $http Caching} for more information.
+ *
+ * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token.
+ * Defaults value is `'XSRF-TOKEN'`.
+ *
+ * - **`defaults.xsrfHeaderName`** - {string} - Name of HTTP header to populate with the
+ * XSRF token. Defaults value is `'X-XSRF-TOKEN'`.
+ *
+ * - **`defaults.headers`** - {Object} - Default headers for all $http requests.
+ * Refer to {@link ng.$http#setting-http-headers $http} for documentation on
+ * setting default headers.
+ * - **`defaults.headers.common`**
+ * - **`defaults.headers.post`**
+ * - **`defaults.headers.put`**
+ * - **`defaults.headers.patch`**
+ *
+ *
+ * - **`defaults.paramSerializer`** - `{string|function(Object<string,string>):string}` - A function
+ * used to the prepare string representation of request parameters (specified as an object).
+ * If specified as string, it is interpreted as a function registered with the {@link auto.$injector $injector}.
+ * Defaults to {@link ng.$httpParamSerializer $httpParamSerializer}.
+ *
+ **/
+ var defaults = this.defaults = {
+ // transform incoming response data
+ transformResponse: [defaultHttpResponseTransform],
+
+ // transform outgoing request data
+ transformRequest: [function(d) {
+ return isObject(d) && !isFile(d) && !isBlob(d) && !isFormData(d) ? toJson(d) : d;
+ }],
+
+ // default headers
+ headers: {
+ common: {
+ 'Accept': 'application/json, text/plain, */*'
+ },
+ post: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
+ put: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
+ patch: shallowCopy(CONTENT_TYPE_APPLICATION_JSON)
+ },
+
+ xsrfCookieName: 'XSRF-TOKEN',
+ xsrfHeaderName: 'X-XSRF-TOKEN',
+
+ paramSerializer: '$httpParamSerializer'
+ };
+
+ var useApplyAsync = false;
+ /**
+ * @ngdoc method
+ * @name $httpProvider#useApplyAsync
+ * @description
+ *
+ * Configure $http service to combine processing of multiple http responses received at around
+ * the same time via {@link ng.$rootScope.Scope#$applyAsync $rootScope.$applyAsync}. This can result in
+ * significant performance improvement for bigger applications that make many HTTP requests
+ * concurrently (common during application bootstrap).
+ *
+ * Defaults to false. If no value is specified, returns the current configured value.
+ *
+ * @param {boolean=} value If true, when requests are loaded, they will schedule a deferred
+ * "apply" on the next tick, giving time for subsequent requests in a roughly ~10ms window
+ * to load and share the same digest cycle.
+ *
+ * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining.
+ * otherwise, returns the current configured value.
+ **/
+ this.useApplyAsync = function(value) {
+ if (isDefined(value)) {
+ useApplyAsync = !!value;
+ return this;
+ }
+ return useApplyAsync;
+ };
+
+ var useLegacyPromise = true;
+ /**
+ * @ngdoc method
+ * @name $httpProvider#useLegacyPromiseExtensions
+ * @description
+ *
+ * Configure `$http` service to return promises without the shorthand methods `success` and `error`.
+ * This should be used to make sure that applications work without these methods.
+ *
+ * Defaults to false. If no value is specified, returns the current configured value.
+ *
+ * @param {boolean=} value If true, `$http` will return a normal promise without the `success` and `error` methods.
+ *
+ * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining.
+ * otherwise, returns the current configured value.
+ **/
+ this.useLegacyPromiseExtensions = function(value) {
+ if (isDefined(value)) {
+ useLegacyPromise = !!value;
+ return this;
+ }
+ return useLegacyPromise;
+ };
+
+ /**
+ * @ngdoc property
+ * @name $httpProvider#interceptors
+ * @description
+ *
+ * Array containing service factories for all synchronous or asynchronous {@link ng.$http $http}
+ * pre-processing of request or postprocessing of responses.
+ *
+ * These service factories are ordered by request, i.e. they are applied in the same order as the
+ * array, on request, but reverse order, on response.
+ *
+ * {@link ng.$http#interceptors Interceptors detailed info}
+ **/
+ var interceptorFactories = this.interceptors = [];
+
+ this.$get = ['$httpBackend', '$$cookieReader', '$cacheFactory', '$rootScope', '$q', '$injector',
+ function($httpBackend, $$cookieReader, $cacheFactory, $rootScope, $q, $injector) {
+
+ var defaultCache = $cacheFactory('$http');
+
+ /**
+ * Make sure that default param serializer is exposed as a function
+ */
+ defaults.paramSerializer = isString(defaults.paramSerializer) ?
+ $injector.get(defaults.paramSerializer) : defaults.paramSerializer;
+
+ /**
+ * Interceptors stored in reverse order. Inner interceptors before outer interceptors.
+ * The reversal is needed so that we can build up the interception chain around the
+ * server request.
+ */
+ var reversedInterceptors = [];
+
+ forEach(interceptorFactories, function(interceptorFactory) {
+ reversedInterceptors.unshift(isString(interceptorFactory)
+ ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory));
+ });
+
+ /**
+ * @ngdoc service
+ * @kind function
+ * @name $http
+ * @requires ng.$httpBackend
+ * @requires $cacheFactory
+ * @requires $rootScope
+ * @requires $q
+ * @requires $injector
+ *
+ * @description
+ * The `$http` service is a core Angular service that facilitates communication with the remote
+ * HTTP servers via the browser's [XMLHttpRequest](https://developer.mozilla.org/en/xmlhttprequest)
+ * object or via [JSONP](http://en.wikipedia.org/wiki/JSONP).
+ *
+ * For unit testing applications that use `$http` service, see
+ * {@link ngMock.$httpBackend $httpBackend mock}.
+ *
+ * For a higher level of abstraction, please check out the {@link ngResource.$resource
+ * $resource} service.
+ *
+ * The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by
+ * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage
+ * it is important to familiarize yourself with these APIs and the guarantees they provide.
+ *
+ *
+ * ## General usage
+ * The `$http` service is a function which takes a single argument — a configuration object —
+ * that is used to generate an HTTP request and returns a {@link ng.$q promise}.
+ *
+ * ```js
+ * // Simple GET request example :
+ * $http.get('/someUrl').
+ * then(function(response) {
+ * // this callback will be called asynchronously
+ * // when the response is available
+ * }, function(response) {
+ * // called asynchronously if an error occurs
+ * // or server returns response with an error status.
+ * });
+ * ```
+ *
+ * ```js
+ * // Simple POST request example (passing data) :
+ * $http.post('/someUrl', {msg:'hello word!'}).
+ * then(function(response) {
+ * // this callback will be called asynchronously
+ * // when the response is available
+ * }, function(response) {
+ * // called asynchronously if an error occurs
+ * // or server returns response with an error status.
+ * });
+ * ```
+ *
+ * The response object has these properties:
+ *
+ * - **data** – `{string|Object}` – The response body transformed with the transform
+ * functions.
+ * - **status** – `{number}` – HTTP status code of the response.
+ * - **headers** – `{function([headerName])}` – Header getter function.
+ * - **config** – `{Object}` – The configuration object that was used to generate the request.
+ * - **statusText** – `{string}` – HTTP status text of the response.
+ *
+ * A response status code between 200 and 299 is considered a success status and
+ * will result in the success callback being called. Note that if the response is a redirect,
+ * XMLHttpRequest will transparently follow it, meaning that the error callback will not be
+ * called for such responses.
+ *
+ * ## Writing Unit Tests that use $http
+ * When unit testing (using {@link ngMock ngMock}), it is necessary to call
+ * {@link ngMock.$httpBackend#flush $httpBackend.flush()} to flush each pending
+ * request using trained responses.
+ *
+ * ```
+ * $httpBackend.expectGET(...);
+ * $http.get(...);
+ * $httpBackend.flush();
+ * ```
+ *
+ * ## Shortcut methods
+ *
+ * Shortcut methods are also available. All shortcut methods require passing in the URL, and
+ * request data must be passed in for POST/PUT requests.
+ *
+ * ```js
+ * $http.get('/someUrl').then(successCallback);
+ * $http.post('/someUrl', data).then(successCallback);
+ * ```
+ *
+ * Complete list of shortcut methods:
+ *
+ * - {@link ng.$http#get $http.get}
+ * - {@link ng.$http#head $http.head}
+ * - {@link ng.$http#post $http.post}
+ * - {@link ng.$http#put $http.put}
+ * - {@link ng.$http#delete $http.delete}
+ * - {@link ng.$http#jsonp $http.jsonp}
+ * - {@link ng.$http#patch $http.patch}
+ *
+ *
+ * ## Deprecation Notice
+ * <div class="alert alert-danger">
+ * The `$http` legacy promise methods `success` and `error` have been deprecated.
+ * Use the standard `then` method instead.
+ * If {@link $httpProvider#useLegacyPromiseExtensions `$httpProvider.useLegacyPromiseExtensions`} is set to
+ * `false` then these methods will throw {@link $http:legacy `$http/legacy`} error.
+ * </div>
+ *
+ * ## Setting HTTP Headers
+ *
+ * The $http service will automatically add certain HTTP headers to all requests. These defaults
+ * can be fully configured by accessing the `$httpProvider.defaults.headers` configuration
+ * object, which currently contains this default configuration:
+ *
+ * - `$httpProvider.defaults.headers.common` (headers that are common for all requests):
+ * - `Accept: application/json, text/plain, * / *`
+ * - `$httpProvider.defaults.headers.post`: (header defaults for POST requests)
+ * - `Content-Type: application/json`
+ * - `$httpProvider.defaults.headers.put` (header defaults for PUT requests)
+ * - `Content-Type: application/json`
+ *
+ * To add or overwrite these defaults, simply add or remove a property from these configuration
+ * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object
+ * with the lowercased HTTP method name as the key, e.g.
+ * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }`.
+ *
+ * The defaults can also be set at runtime via the `$http.defaults` object in the same
+ * fashion. For example:
+ *
+ * ```
+ * module.run(function($http) {
+ * $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
+ * });
+ * ```
+ *
+ * In addition, you can supply a `headers` property in the config object passed when
+ * calling `$http(config)`, which overrides the defaults without changing them globally.
+ *
+ * To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis,
+ * Use the `headers` property, setting the desired header to `undefined`. For example:
+ *
+ * ```js
+ * var req = {
+ * method: 'POST',
+ * url: 'http://example.com',
+ * headers: {
+ * 'Content-Type': undefined
+ * },
+ * data: { test: 'test' }
+ * }
+ *
+ * $http(req).then(function(){...}, function(){...});
+ * ```
+ *
+ * ## Transforming Requests and Responses
+ *
+ * Both requests and responses can be transformed using transformation functions: `transformRequest`
+ * and `transformResponse`. These properties can be a single function that returns
+ * the transformed value (`function(data, headersGetter, status)`) or an array of such transformation functions,
+ * which allows you to `push` or `unshift` a new transformation function into the transformation chain.
+ *
+ * ### Default Transformations
+ *
+ * The `$httpProvider` provider and `$http` service expose `defaults.transformRequest` and
+ * `defaults.transformResponse` properties. If a request does not provide its own transformations
+ * then these will be applied.
+ *
+ * You can augment or replace the default transformations by modifying these properties by adding to or
+ * replacing the array.
+ *
+ * Angular provides the following default transformations:
+ *
+ * Request transformations (`$httpProvider.defaults.transformRequest` and `$http.defaults.transformRequest`):
+ *
+ * - If the `data` property of the request configuration object contains an object, serialize it
+ * into JSON format.
+ *
+ * Response transformations (`$httpProvider.defaults.transformResponse` and `$http.defaults.transformResponse`):
+ *
+ * - If XSRF prefix is detected, strip it (see Security Considerations section below).
+ * - If JSON response is detected, deserialize it using a JSON parser.
+ *
+ *
+ * ### Overriding the Default Transformations Per Request
+ *
+ * If you wish override the request/response transformations only for a single request then provide
+ * `transformRequest` and/or `transformResponse` properties on the configuration object passed
+ * into `$http`.
+ *
+ * Note that if you provide these properties on the config object the default transformations will be
+ * overwritten. If you wish to augment the default transformations then you must include them in your
+ * local transformation array.
+ *
+ * The following code demonstrates adding a new response transformation to be run after the default response
+ * transformations have been run.
+ *
+ * ```js
+ * function appendTransform(defaults, transform) {
+ *
+ * // We can't guarantee that the default transformation is an array
+ * defaults = angular.isArray(defaults) ? defaults : [defaults];
+ *
+ * // Append the new transformation to the defaults
+ * return defaults.concat(transform);
+ * }
+ *
+ * $http({
+ * url: '...',
+ * method: 'GET',
+ * transformResponse: appendTransform($http.defaults.transformResponse, function(value) {
+ * return doTransform(value);
+ * })
+ * });
+ * ```
+ *
+ *
+ * ## Caching
+ *
+ * To enable caching, set the request configuration `cache` property to `true` (to use default
+ * cache) or to a custom cache object (built with {@link ng.$cacheFactory `$cacheFactory`}).
+ * When the cache is enabled, `$http` stores the response from the server in the specified
+ * cache. The next time the same request is made, the response is served from the cache without
+ * sending a request to the server.
+ *
+ * Note that even if the response is served from cache, delivery of the data is asynchronous in
+ * the same way that real requests are.
+ *
+ * If there are multiple GET requests for the same URL that should be cached using the same
+ * cache, but the cache is not populated yet, only one request to the server will be made and
+ * the remaining requests will be fulfilled using the response from the first request.
+ *
+ * You can change the default cache to a new object (built with
+ * {@link ng.$cacheFactory `$cacheFactory`}) by updating the
+ * {@link ng.$http#defaults `$http.defaults.cache`} property. All requests who set
+ * their `cache` property to `true` will now use this cache object.
+ *
+ * If you set the default cache to `false` then only requests that specify their own custom
+ * cache object will be cached.
+ *
+ * ## Interceptors
+ *
+ * Before you start creating interceptors, be sure to understand the
+ * {@link ng.$q $q and deferred/promise APIs}.
+ *
+ * For purposes of global error handling, authentication, or any kind of synchronous or
+ * asynchronous pre-processing of request or postprocessing of responses, it is desirable to be
+ * able to intercept requests before they are handed to the server and
+ * responses before they are handed over to the application code that
+ * initiated these requests. The interceptors leverage the {@link ng.$q
+ * promise APIs} to fulfill this need for both synchronous and asynchronous pre-processing.
+ *
+ * The interceptors are service factories that are registered with the `$httpProvider` by
+ * adding them to the `$httpProvider.interceptors` array. The factory is called and
+ * injected with dependencies (if specified) and returns the interceptor.
+ *
+ * There are two kinds of interceptors (and two kinds of rejection interceptors):
+ *
+ * * `request`: interceptors get called with a http `config` object. The function is free to
+ * modify the `config` object or create a new one. The function needs to return the `config`
+ * object directly, or a promise containing the `config` or a new `config` object.
+ * * `requestError`: interceptor gets called when a previous interceptor threw an error or
+ * resolved with a rejection.
+ * * `response`: interceptors get called with http `response` object. The function is free to
+ * modify the `response` object or create a new one. The function needs to return the `response`
+ * object directly, or as a promise containing the `response` or a new `response` object.
+ * * `responseError`: interceptor gets called when a previous interceptor threw an error or
+ * resolved with a rejection.
+ *
+ *
+ * ```js
+ * // register the interceptor as a service
+ * $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
+ * return {
+ * // optional method
+ * 'request': function(config) {
+ * // do something on success
+ * return config;
+ * },
+ *
+ * // optional method
+ * 'requestError': function(rejection) {
+ * // do something on error
+ * if (canRecover(rejection)) {
+ * return responseOrNewPromise
+ * }
+ * return $q.reject(rejection);
+ * },
+ *
+ *
+ *
+ * // optional method
+ * 'response': function(response) {
+ * // do something on success
+ * return response;
+ * },
+ *
+ * // optional method
+ * 'responseError': function(rejection) {
+ * // do something on error
+ * if (canRecover(rejection)) {
+ * return responseOrNewPromise
+ * }
+ * return $q.reject(rejection);
+ * }
+ * };
+ * });
+ *
+ * $httpProvider.interceptors.push('myHttpInterceptor');
+ *
+ *
+ * // alternatively, register the interceptor via an anonymous factory
+ * $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
+ * return {
+ * 'request': function(config) {
+ * // same as above
+ * },
+ *
+ * 'response': function(response) {
+ * // same as above
+ * }
+ * };
+ * });
+ * ```
+ *
+ * ## Security Considerations
+ *
+ * When designing web applications, consider security threats from:
+ *
+ * - [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)
+ * - [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery)
+ *
+ * Both server and the client must cooperate in order to eliminate these threats. Angular comes
+ * pre-configured with strategies that address these issues, but for this to work backend server
+ * cooperation is required.
+ *
+ * ### JSON Vulnerability Protection
+ *
+ * A [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)
+ * allows third party website to turn your JSON resource URL into
+ * [JSONP](http://en.wikipedia.org/wiki/JSONP) request under some conditions. To
+ * counter this your server can prefix all JSON requests with following string `")]}',\n"`.
+ * Angular will automatically strip the prefix before processing it as JSON.
+ *
+ * For example if your server needs to return:
+ * ```js
+ * ['one','two']
+ * ```
+ *
+ * which is vulnerable to attack, your server can return:
+ * ```js
+ * )]}',
+ * ['one','two']
+ * ```
+ *
+ * Angular will strip the prefix, before processing the JSON.
+ *
+ *
+ * ### Cross Site Request Forgery (XSRF) Protection
+ *
+ * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is a technique by which
+ * an unauthorized site can gain your user's private data. Angular provides a mechanism
+ * to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie
+ * (by default, `XSRF-TOKEN`) and sets it as an HTTP header (`X-XSRF-TOKEN`). Since only
+ * JavaScript that runs on your domain could read the cookie, your server can be assured that
+ * the XHR came from JavaScript running on your domain. The header will not be set for
+ * cross-domain requests.
+ *
+ * To take advantage of this, your server needs to set a token in a JavaScript readable session
+ * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the
+ * server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure
+ * that only JavaScript running on your domain could have sent the request. The token must be
+ * unique for each user and must be verifiable by the server (to prevent the JavaScript from
+ * making up its own tokens). We recommend that the token is a digest of your site's
+ * authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography))
+ * for added security.
+ *
+ * The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName
+ * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time,
+ * or the per-request config object.
+ *
+ * In order to prevent collisions in environments where multiple Angular apps share the
+ * same domain or subdomain, we recommend that each application uses unique cookie name.
+ *
+ * @param {object} config Object describing the request to be made and how it should be
+ * processed. The object has following properties:
+ *
+ * - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc)
+ * - **url** – `{string}` – Absolute or relative URL of the resource that is being requested.
+ * - **params** – `{Object.<string|Object>}` – Map of strings or objects which will be serialized
+ * with the `paramSerializer` and appended as GET parameters.
+ * - **data** – `{string|Object}` – Data to be sent as the request message data.
+ * - **headers** – `{Object}` – Map of strings or functions which return strings representing
+ * HTTP headers to send to the server. If the return value of a function is null, the
+ * header will not be sent. Functions accept a config object as an argument.
+ * - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token.
+ * - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token.
+ * - **transformRequest** –
+ * `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
+ * transform function or an array of such functions. The transform function takes the http
+ * request body and headers and returns its transformed (typically serialized) version.
+ * See {@link ng.$http#overriding-the-default-transformations-per-request
+ * Overriding the Default Transformations}
+ * - **transformResponse** –
+ * `{function(data, headersGetter, status)|Array.<function(data, headersGetter, status)>}` –
+ * transform function or an array of such functions. The transform function takes the http
+ * response body, headers and status and returns its transformed (typically deserialized) version.
+ * See {@link ng.$http#overriding-the-default-transformations-per-request
+ * Overriding the Default TransformationjqLiks}
+ * - **paramSerializer** - `{string|function(Object<string,string>):string}` - A function used to
+ * prepare the string representation of request parameters (specified as an object).
+ * If specified as string, it is interpreted as function registered with the
+ * {@link $injector $injector}, which means you can create your own serializer
+ * by registering it as a {@link auto.$provide#service service}.
+ * The default serializer is the {@link $httpParamSerializer $httpParamSerializer};
+ * alternatively, you can use the {@link $httpParamSerializerJQLike $httpParamSerializerJQLike}
+ * - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
+ * GET request, otherwise if a cache instance built with
+ * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
+ * caching.
+ * - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}
+ * that should abort the request when resolved.
+ * - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the
+ * XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)
+ * for more information.
+ * - **responseType** - `{string}` - see
+ * [XMLHttpRequest.responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#xmlhttprequest-responsetype).
+ *
+ * @returns {HttpPromise} Returns a {@link ng.$q `Promise}` that will be resolved to a response object
+ * when the request succeeds or fails.
+ *
+ *
+ * @property {Array.<Object>} pendingRequests Array of config objects for currently pending
+ * requests. This is primarily meant to be used for debugging purposes.
+ *
+ *
+ * @example
+<example module="httpExample">
+<file name="index.html">
+ <div ng-controller="FetchController">
+ <select ng-model="method" aria-label="Request method">
+ <option>GET</option>
+ <option>JSONP</option>
+ </select>
+ <input type="text" ng-model="url" size="80" aria-label="URL" />
+ <button id="fetchbtn" ng-click="fetch()">fetch</button><br>
+ <button id="samplegetbtn" ng-click="updateModel('GET', 'http-hello.html')">Sample GET</button>
+ <button id="samplejsonpbtn"
+ ng-click="updateModel('JSONP',
+ 'https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero')">
+ Sample JSONP
+ </button>
+ <button id="invalidjsonpbtn"
+ ng-click="updateModel('JSONP', 'https://angularjs.org/doesntexist&callback=JSON_CALLBACK')">
+ Invalid JSONP
+ </button>
+ <pre>http status code: {{status}}</pre>
+ <pre>http response data: {{data}}</pre>
+ </div>
+</file>
+<file name="script.js">
+ angular.module('httpExample', [])
+ .controller('FetchController', ['$scope', '$http', '$templateCache',
+ function($scope, $http, $templateCache) {
+ $scope.method = 'GET';
+ $scope.url = 'http-hello.html';
+
+ $scope.fetch = function() {
+ $scope.code = null;
+ $scope.response = null;
+
+ $http({method: $scope.method, url: $scope.url, cache: $templateCache}).
+ then(function(response) {
+ $scope.status = response.status;
+ $scope.data = response.data;
+ }, function(response) {
+ $scope.data = response.data || "Request failed";
+ $scope.status = response.status;
+ });
+ };
+
+ $scope.updateModel = function(method, url) {
+ $scope.method = method;
+ $scope.url = url;
+ };
+ }]);
+</file>
+<file name="http-hello.html">
+ Hello, $http!
+</file>
+<file name="protractor.js" type="protractor">
+ var status = element(by.binding('status'));
+ var data = element(by.binding('data'));
+ var fetchBtn = element(by.id('fetchbtn'));
+ var sampleGetBtn = element(by.id('samplegetbtn'));
+ var sampleJsonpBtn = element(by.id('samplejsonpbtn'));
+ var invalidJsonpBtn = element(by.id('invalidjsonpbtn'));
+
+ it('should make an xhr GET request', function() {
+ sampleGetBtn.click();
+ fetchBtn.click();
+ expect(status.getText()).toMatch('200');
+ expect(data.getText()).toMatch(/Hello, \$http!/);
+ });
+
+// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185
+// it('should make a JSONP request to angularjs.org', function() {
+// sampleJsonpBtn.click();
+// fetchBtn.click();
+// expect(status.getText()).toMatch('200');
+// expect(data.getText()).toMatch(/Super Hero!/);
+// });
+
+ it('should make JSONP request to invalid URL and invoke the error handler',
+ function() {
+ invalidJsonpBtn.click();
+ fetchBtn.click();
+ expect(status.getText()).toMatch('0');
+ expect(data.getText()).toMatch('Request failed');
+ });
+</file>
+</example>
+ */
+ function $http(requestConfig) {
+
+ if (!angular.isObject(requestConfig)) {
+ throw minErr('$http')('badreq', 'Http request configuration must be an object. Received: {0}', requestConfig);
+ }
+
+ var config = extend({
+ method: 'get',
+ transformRequest: defaults.transformRequest,
+ transformResponse: defaults.transformResponse,
+ paramSerializer: defaults.paramSerializer
+ }, requestConfig);
+
+ config.headers = mergeHeaders(requestConfig);
+ config.method = uppercase(config.method);
+ config.paramSerializer = isString(config.paramSerializer) ?
+ $injector.get(config.paramSerializer) : config.paramSerializer;
+
+ var serverRequest = function(config) {
+ var headers = config.headers;
+ var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest);
+
+ // strip content-type if data is undefined
+ if (isUndefined(reqData)) {
+ forEach(headers, function(value, header) {
+ if (lowercase(header) === 'content-type') {
+ delete headers[header];
+ }
+ });
+ }
+
+ if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) {
+ config.withCredentials = defaults.withCredentials;
+ }
+
+ // send request
+ return sendReq(config, reqData).then(transformResponse, transformResponse);
+ };
+
+ var chain = [serverRequest, undefined];
+ var promise = $q.when(config);
+
+ // apply interceptors
+ forEach(reversedInterceptors, function(interceptor) {
+ if (interceptor.request || interceptor.requestError) {
+ chain.unshift(interceptor.request, interceptor.requestError);
+ }
+ if (interceptor.response || interceptor.responseError) {
+ chain.push(interceptor.response, interceptor.responseError);
+ }
+ });
+
+ while (chain.length) {
+ var thenFn = chain.shift();
+ var rejectFn = chain.shift();
+
+ promise = promise.then(thenFn, rejectFn);
+ }
+
+ if (useLegacyPromise) {
+ promise.success = function(fn) {
+ assertArgFn(fn, 'fn');
+
+ promise.then(function(response) {
+ fn(response.data, response.status, response.headers, config);
+ });
+ return promise;
+ };
+
+ promise.error = function(fn) {
+ assertArgFn(fn, 'fn');
+
+ promise.then(null, function(response) {
+ fn(response.data, response.status, response.headers, config);
+ });
+ return promise;
+ };
+ } else {
+ promise.success = $httpMinErrLegacyFn('success');
+ promise.error = $httpMinErrLegacyFn('error');
+ }
+
+ return promise;
+
+ function transformResponse(response) {
+ // make a copy since the response must be cacheable
+ var resp = extend({}, response);
+ if (!response.data) {
+ resp.data = response.data;
+ } else {
+ resp.data = transformData(response.data, response.headers, response.status, config.transformResponse);
+ }
+ return (isSuccess(response.status))
+ ? resp
+ : $q.reject(resp);
+ }
+
+ function executeHeaderFns(headers, config) {
+ var headerContent, processedHeaders = {};
+
+ forEach(headers, function(headerFn, header) {
+ if (isFunction(headerFn)) {
+ headerContent = headerFn(config);
+ if (headerContent != null) {
+ processedHeaders[header] = headerContent;
+ }
+ } else {
+ processedHeaders[header] = headerFn;
+ }
+ });
+
+ return processedHeaders;
+ }
+
+ function mergeHeaders(config) {
+ var defHeaders = defaults.headers,
+ reqHeaders = extend({}, config.headers),
+ defHeaderName, lowercaseDefHeaderName, reqHeaderName;
+
+ defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]);
+
+ // using for-in instead of forEach to avoid unecessary iteration after header has been found
+ defaultHeadersIteration:
+ for (defHeaderName in defHeaders) {
+ lowercaseDefHeaderName = lowercase(defHeaderName);
+
+ for (reqHeaderName in reqHeaders) {
+ if (lowercase(reqHeaderName) === lowercaseDefHeaderName) {
+ continue defaultHeadersIteration;
+ }
+ }
+
+ reqHeaders[defHeaderName] = defHeaders[defHeaderName];
+ }
+
+ // execute if header value is a function for merged headers
+ return executeHeaderFns(reqHeaders, shallowCopy(config));
+ }
+ }
+
+ $http.pendingRequests = [];
+
+ /**
+ * @ngdoc method
+ * @name $http#get
+ *
+ * @description
+ * Shortcut method to perform `GET` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#delete
+ *
+ * @description
+ * Shortcut method to perform `DELETE` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#head
+ *
+ * @description
+ * Shortcut method to perform `HEAD` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#jsonp
+ *
+ * @description
+ * Shortcut method to perform `JSONP` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request.
+ * The name of the callback should be the string `JSON_CALLBACK`.
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+ createShortMethods('get', 'delete', 'head', 'jsonp');
+
+ /**
+ * @ngdoc method
+ * @name $http#post
+ *
+ * @description
+ * Shortcut method to perform `POST` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {*} data Request content
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#put
+ *
+ * @description
+ * Shortcut method to perform `PUT` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {*} data Request content
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#patch
+ *
+ * @description
+ * Shortcut method to perform `PATCH` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {*} data Request content
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+ createShortMethodsWithData('post', 'put', 'patch');
+
+ /**
+ * @ngdoc property
+ * @name $http#defaults
+ *
+ * @description
+ * Runtime equivalent of the `$httpProvider.defaults` property. Allows configuration of
+ * default headers, withCredentials as well as request and response transformations.
+ *
+ * See "Setting HTTP Headers" and "Transforming Requests and Responses" sections above.
+ */
+ $http.defaults = defaults;
+
+
+ return $http;
+
+
+ function createShortMethods(names) {
+ forEach(arguments, function(name) {
+ $http[name] = function(url, config) {
+ return $http(extend({}, config || {}, {
+ method: name,
+ url: url
+ }));
+ };
+ });
+ }
+
+
+ function createShortMethodsWithData(name) {
+ forEach(arguments, function(name) {
+ $http[name] = function(url, data, config) {
+ return $http(extend({}, config || {}, {
+ method: name,
+ url: url,
+ data: data
+ }));
+ };
+ });
+ }
+
+
+ /**
+ * Makes the request.
+ *
+ * !!! ACCESSES CLOSURE VARS:
+ * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests
+ */
+ function sendReq(config, reqData) {
+ var deferred = $q.defer(),
+ promise = deferred.promise,
+ cache,
+ cachedResp,
+ reqHeaders = config.headers,
+ url = buildUrl(config.url, config.paramSerializer(config.params));
+
+ $http.pendingRequests.push(config);
+ promise.then(removePendingReq, removePendingReq);
+
+
+ if ((config.cache || defaults.cache) && config.cache !== false &&
+ (config.method === 'GET' || config.method === 'JSONP')) {
+ cache = isObject(config.cache) ? config.cache
+ : isObject(defaults.cache) ? defaults.cache
+ : defaultCache;
+ }
+
+ if (cache) {
+ cachedResp = cache.get(url);
+ if (isDefined(cachedResp)) {
+ if (isPromiseLike(cachedResp)) {
+ // cached request has already been sent, but there is no response yet
+ cachedResp.then(resolvePromiseWithResult, resolvePromiseWithResult);
+ } else {
+ // serving from cache
+ if (isArray(cachedResp)) {
+ resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3]);
+ } else {
+ resolvePromise(cachedResp, 200, {}, 'OK');
+ }
+ }
+ } else {
+ // put the promise for the non-transformed response into cache as a placeholder
+ cache.put(url, promise);
+ }
+ }
+
+
+ // if we won't have the response in cache, set the xsrf headers and
+ // send the request to the backend
+ if (isUndefined(cachedResp)) {
+ var xsrfValue = urlIsSameOrigin(config.url)
+ ? $$cookieReader()[config.xsrfCookieName || defaults.xsrfCookieName]
+ : undefined;
+ if (xsrfValue) {
+ reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;
+ }
+
+ $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,
+ config.withCredentials, config.responseType);
+ }
+
+ return promise;
+
+
+ /**
+ * Callback registered to $httpBackend():
+ * - caches the response if desired
+ * - resolves the raw $http promise
+ * - calls $apply
+ */
+ function done(status, response, headersString, statusText) {
+ if (cache) {
+ if (isSuccess(status)) {
+ cache.put(url, [status, response, parseHeaders(headersString), statusText]);
+ } else {
+ // remove promise from the cache
+ cache.remove(url);
+ }
+ }
+
+ function resolveHttpPromise() {
+ resolvePromise(response, status, headersString, statusText);
+ }
+
+ if (useApplyAsync) {
+ $rootScope.$applyAsync(resolveHttpPromise);
+ } else {
+ resolveHttpPromise();
+ if (!$rootScope.$$phase) $rootScope.$apply();
+ }
+ }
+
+
+ /**
+ * Resolves the raw $http promise.
+ */
+ function resolvePromise(response, status, headers, statusText) {
+ // normalize internal statuses to 0
+ status = Math.max(status, 0);
+
+ (isSuccess(status) ? deferred.resolve : deferred.reject)({
+ data: response,
+ status: status,
+ headers: headersGetter(headers),
+ config: config,
+ statusText: statusText
+ });
+ }
+
+ function resolvePromiseWithResult(result) {
+ resolvePromise(result.data, result.status, shallowCopy(result.headers()), result.statusText);
+ }
+
+ function removePendingReq() {
+ var idx = $http.pendingRequests.indexOf(config);
+ if (idx !== -1) $http.pendingRequests.splice(idx, 1);
+ }
+ }
+
+
+ function buildUrl(url, serializedParams) {
+ if (serializedParams.length > 0) {
+ url += ((url.indexOf('?') == -1) ? '?' : '&') + serializedParams;
+ }
+ return url;
+ }
+ }];
+}
+
+function createXhr() {
+ return new window.XMLHttpRequest();
+}
+
+/**
+ * @ngdoc service
+ * @name $httpBackend
+ * @requires $window
+ * @requires $document
+ *
+ * @description
+ * HTTP backend used by the {@link ng.$http service} that delegates to
+ * XMLHttpRequest object or JSONP and deals with browser incompatibilities.
+ *
+ * You should never need to use this service directly, instead use the higher-level abstractions:
+ * {@link ng.$http $http} or {@link ngResource.$resource $resource}.
+ *
+ * During testing this implementation is swapped with {@link ngMock.$httpBackend mock
+ * $httpBackend} which can be trained with responses.
+ */
+function $HttpBackendProvider() {
+ this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {
+ return createHttpBackend($browser, createXhr, $browser.defer, $window.angular.callbacks, $document[0]);
+ }];
+}
+
+function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {
+ // TODO(vojta): fix the signature
+ return function(method, url, post, callback, headers, timeout, withCredentials, responseType) {
+ $browser.$$incOutstandingRequestCount();
+ url = url || $browser.url();
+
+ if (lowercase(method) == 'jsonp') {
+ var callbackId = '_' + (callbacks.counter++).toString(36);
+ callbacks[callbackId] = function(data) {
+ callbacks[callbackId].data = data;
+ callbacks[callbackId].called = true;
+ };
+
+ var jsonpDone = jsonpReq(url.replace('JSON_CALLBACK', 'angular.callbacks.' + callbackId),
+ callbackId, function(status, text) {
+ completeRequest(callback, status, callbacks[callbackId].data, "", text);
+ callbacks[callbackId] = noop;
+ });
+ } else {
+
+ var xhr = createXhr();
+
+ xhr.open(method, url, true);
+ forEach(headers, function(value, key) {
+ if (isDefined(value)) {
+ xhr.setRequestHeader(key, value);
+ }
+ });
+
+ xhr.onload = function requestLoaded() {
+ var statusText = xhr.statusText || '';
+
+ // responseText is the old-school way of retrieving response (supported by IE9)
+ // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)
+ var response = ('response' in xhr) ? xhr.response : xhr.responseText;
+
+ // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)
+ var status = xhr.status === 1223 ? 204 : xhr.status;
+
+ // fix status code when it is 0 (0 status is undocumented).
+ // Occurs when accessing file resources or on Android 4.1 stock browser
+ // while retrieving files from application cache.
+ if (status === 0) {
+ status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0;
+ }
+
+ completeRequest(callback,
+ status,
+ response,
+ xhr.getAllResponseHeaders(),
+ statusText);
+ };
+
+ var requestError = function() {
+ // The response is always empty
+ // See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error
+ completeRequest(callback, -1, null, null, '');
+ };
+
+ xhr.onerror = requestError;
+ xhr.onabort = requestError;
+
+ if (withCredentials) {
+ xhr.withCredentials = true;
+ }
+
+ if (responseType) {
+ try {
+ xhr.responseType = responseType;
+ } catch (e) {
+ // WebKit added support for the json responseType value on 09/03/2013
+ // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are
+ // known to throw when setting the value "json" as the response type. Other older
+ // browsers implementing the responseType
+ //
+ // The json response type can be ignored if not supported, because JSON payloads are
+ // parsed on the client-side regardless.
+ if (responseType !== 'json') {
+ throw e;
+ }
+ }
+ }
+
+ xhr.send(post);
+ }
+
+ if (timeout > 0) {
+ var timeoutId = $browserDefer(timeoutRequest, timeout);
+ } else if (isPromiseLike(timeout)) {
+ timeout.then(timeoutRequest);
+ }
+
+
+ function timeoutRequest() {
+ jsonpDone && jsonpDone();
+ xhr && xhr.abort();
+ }
+
+ function completeRequest(callback, status, response, headersString, statusText) {
+ // cancel timeout and subsequent timeout promise resolution
+ if (timeoutId !== undefined) {
+ $browserDefer.cancel(timeoutId);
+ }
+ jsonpDone = xhr = null;
+
+ callback(status, response, headersString, statusText);
+ $browser.$$completeOutstandingRequest(noop);
+ }
+ };
+
+ function jsonpReq(url, callbackId, done) {
+ // we can't use jQuery/jqLite here because jQuery does crazy stuff with script elements, e.g.:
+ // - fetches local scripts via XHR and evals them
+ // - adds and immediately removes script elements from the document
+ var script = rawDocument.createElement('script'), callback = null;
+ script.type = "text/javascript";
+ script.src = url;
+ script.async = true;
+
+ callback = function(event) {
+ removeEventListenerFn(script, "load", callback);
+ removeEventListenerFn(script, "error", callback);
+ rawDocument.body.removeChild(script);
+ script = null;
+ var status = -1;
+ var text = "unknown";
+
+ if (event) {
+ if (event.type === "load" && !callbacks[callbackId].called) {
+ event = { type: "error" };
+ }
+ text = event.type;
+ status = event.type === "error" ? 404 : 200;
+ }
+
+ if (done) {
+ done(status, text);
+ }
+ };
+
+ addEventListenerFn(script, "load", callback);
+ addEventListenerFn(script, "error", callback);
+ rawDocument.body.appendChild(script);
+ return callback;
+ }
+}
+
+var $interpolateMinErr = angular.$interpolateMinErr = minErr('$interpolate');
+$interpolateMinErr.throwNoconcat = function(text) {
+ throw $interpolateMinErr('noconcat',
+ "Error while interpolating: {0}\nStrict Contextual Escaping disallows " +
+ "interpolations that concatenate multiple expressions when a trusted value is " +
+ "required. See http://docs.angularjs.org/api/ng.$sce", text);
+};
+
+$interpolateMinErr.interr = function(text, err) {
+ return $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text, err.toString());
+};
+
+/**
+ * @ngdoc provider
+ * @name $interpolateProvider
+ *
+ * @description
+ *
+ * Used for configuring the interpolation markup. Defaults to `{{` and `}}`.
+ *
+ * @example
+<example module="customInterpolationApp">
+<file name="index.html">
+<script>
+ var customInterpolationApp = angular.module('customInterpolationApp', []);
+
+ customInterpolationApp.config(function($interpolateProvider) {
+ $interpolateProvider.startSymbol('//');
+ $interpolateProvider.endSymbol('//');
+ });
+
+
+ customInterpolationApp.controller('DemoController', function() {
+ this.label = "This binding is brought you by // interpolation symbols.";
+ });
+</script>
+<div ng-app="App" ng-controller="DemoController as demo">
+ //demo.label//
+</div>
+</file>
+<file name="protractor.js" type="protractor">
+ it('should interpolate binding with custom symbols', function() {
+ expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.');
+ });
+</file>
+</example>
+ */
+function $InterpolateProvider() {
+ var startSymbol = '{{';
+ var endSymbol = '}}';
+
+ /**
+ * @ngdoc method
+ * @name $interpolateProvider#startSymbol
+ * @description
+ * Symbol to denote start of expression in the interpolated string. Defaults to `{{`.
+ *
+ * @param {string=} value new value to set the starting symbol to.
+ * @returns {string|self} Returns the symbol when used as getter and self if used as setter.
+ */
+ this.startSymbol = function(value) {
+ if (value) {
+ startSymbol = value;
+ return this;
+ } else {
+ return startSymbol;
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $interpolateProvider#endSymbol
+ * @description
+ * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
+ *
+ * @param {string=} value new value to set the ending symbol to.
+ * @returns {string|self} Returns the symbol when used as getter and self if used as setter.
+ */
+ this.endSymbol = function(value) {
+ if (value) {
+ endSymbol = value;
+ return this;
+ } else {
+ return endSymbol;
+ }
+ };
+
+
+ this.$get = ['$parse', '$exceptionHandler', '$sce', function($parse, $exceptionHandler, $sce) {
+ var startSymbolLength = startSymbol.length,
+ endSymbolLength = endSymbol.length,
+ escapedStartRegexp = new RegExp(startSymbol.replace(/./g, escape), 'g'),
+ escapedEndRegexp = new RegExp(endSymbol.replace(/./g, escape), 'g');
+
+ function escape(ch) {
+ return '\\\\\\' + ch;
+ }
+
+ function unescapeText(text) {
+ return text.replace(escapedStartRegexp, startSymbol).
+ replace(escapedEndRegexp, endSymbol);
+ }
+
+ function stringify(value) {
+ if (value == null) { // null || undefined
+ return '';
+ }
+ switch (typeof value) {
+ case 'string':
+ break;
+ case 'number':
+ value = '' + value;
+ break;
+ default:
+ value = toJson(value);
+ }
+
+ return value;
+ }
+
+ /**
+ * @ngdoc service
+ * @name $interpolate
+ * @kind function
+ *
+ * @requires $parse
+ * @requires $sce
+ *
+ * @description
+ *
+ * Compiles a string with markup into an interpolation function. This service is used by the
+ * HTML {@link ng.$compile $compile} service for data binding. See
+ * {@link ng.$interpolateProvider $interpolateProvider} for configuring the
+ * interpolation markup.
+ *
+ *
+ * ```js
+ * var $interpolate = ...; // injected
+ * var exp = $interpolate('Hello {{name | uppercase}}!');
+ * expect(exp({name:'Angular'}).toEqual('Hello ANGULAR!');
+ * ```
+ *
+ * `$interpolate` takes an optional fourth argument, `allOrNothing`. If `allOrNothing` is
+ * `true`, the interpolation function will return `undefined` unless all embedded expressions
+ * evaluate to a value other than `undefined`.
+ *
+ * ```js
+ * var $interpolate = ...; // injected
+ * var context = {greeting: 'Hello', name: undefined };
+ *
+ * // default "forgiving" mode
+ * var exp = $interpolate('{{greeting}} {{name}}!');
+ * expect(exp(context)).toEqual('Hello !');
+ *
+ * // "allOrNothing" mode
+ * exp = $interpolate('{{greeting}} {{name}}!', false, null, true);
+ * expect(exp(context)).toBeUndefined();
+ * context.name = 'Angular';
+ * expect(exp(context)).toEqual('Hello Angular!');
+ * ```
+ *
+ * `allOrNothing` is useful for interpolating URLs. `ngSrc` and `ngSrcset` use this behavior.
+ *
+ * ####Escaped Interpolation
+ * $interpolate provides a mechanism for escaping interpolation markers. Start and end markers
+ * can be escaped by preceding each of their characters with a REVERSE SOLIDUS U+005C (backslash).
+ * It will be rendered as a regular start/end marker, and will not be interpreted as an expression
+ * or binding.
+ *
+ * This enables web-servers to prevent script injection attacks and defacing attacks, to some
+ * degree, while also enabling code examples to work without relying on the
+ * {@link ng.directive:ngNonBindable ngNonBindable} directive.
+ *
+ * **For security purposes, it is strongly encouraged that web servers escape user-supplied data,
+ * replacing angle brackets (<, >) with &lt; and &gt; respectively, and replacing all
+ * interpolation start/end markers with their escaped counterparts.**
+ *
+ * Escaped interpolation markers are only replaced with the actual interpolation markers in rendered
+ * output when the $interpolate service processes the text. So, for HTML elements interpolated
+ * by {@link ng.$compile $compile}, or otherwise interpolated with the `mustHaveExpression` parameter
+ * set to `true`, the interpolated text must contain an unescaped interpolation expression. As such,
+ * this is typically useful only when user-data is used in rendering a template from the server, or
+ * when otherwise untrusted data is used by a directive.
+ *
+ * <example>
+ * <file name="index.html">
+ * <div ng-init="username='A user'">
+ * <p ng-init="apptitle='Escaping demo'">{{apptitle}}: \{\{ username = "defaced value"; \}\}
+ * </p>
+ * <p><strong>{{username}}</strong> attempts to inject code which will deface the
+ * application, but fails to accomplish their task, because the server has correctly
+ * escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash)
+ * characters.</p>
+ * <p>Instead, the result of the attempted script injection is visible, and can be removed
+ * from the database by an administrator.</p>
+ * </div>
+ * </file>
+ * </example>
+ *
+ * @param {string} text The text with markup to interpolate.
+ * @param {boolean=} mustHaveExpression if set to true then the interpolation string must have
+ * embedded expression in order to return an interpolation function. Strings with no
+ * embedded expression will return null for the interpolation function.
+ * @param {string=} trustedContext when provided, the returned function passes the interpolated
+ * result through {@link ng.$sce#getTrusted $sce.getTrusted(interpolatedResult,
+ * trustedContext)} before returning it. Refer to the {@link ng.$sce $sce} service that
+ * provides Strict Contextual Escaping for details.
+ * @param {boolean=} allOrNothing if `true`, then the returned function returns undefined
+ * unless all embedded expressions evaluate to a value other than `undefined`.
+ * @returns {function(context)} an interpolation function which is used to compute the
+ * interpolated string. The function has these parameters:
+ *
+ * - `context`: evaluation context for all expressions embedded in the interpolated text
+ */
+ function $interpolate(text, mustHaveExpression, trustedContext, allOrNothing) {
+ allOrNothing = !!allOrNothing;
+ var startIndex,
+ endIndex,
+ index = 0,
+ expressions = [],
+ parseFns = [],
+ textLength = text.length,
+ exp,
+ concat = [],
+ expressionPositions = [];
+
+ while (index < textLength) {
+ if (((startIndex = text.indexOf(startSymbol, index)) != -1) &&
+ ((endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) != -1)) {
+ if (index !== startIndex) {
+ concat.push(unescapeText(text.substring(index, startIndex)));
+ }
+ exp = text.substring(startIndex + startSymbolLength, endIndex);
+ expressions.push(exp);
+ parseFns.push($parse(exp, parseStringifyInterceptor));
+ index = endIndex + endSymbolLength;
+ expressionPositions.push(concat.length);
+ concat.push('');
+ } else {
+ // we did not find an interpolation, so we have to add the remainder to the separators array
+ if (index !== textLength) {
+ concat.push(unescapeText(text.substring(index)));
+ }
+ break;
+ }
+ }
+
+ // Concatenating expressions makes it hard to reason about whether some combination of
+ // concatenated values are unsafe to use and could easily lead to XSS. By requiring that a
+ // single expression be used for iframe[src], object[src], etc., we ensure that the value
+ // that's used is assigned or constructed by some JS code somewhere that is more testable or
+ // make it obvious that you bound the value to some user controlled value. This helps reduce
+ // the load when auditing for XSS issues.
+ if (trustedContext && concat.length > 1) {
+ $interpolateMinErr.throwNoconcat(text);
+ }
+
+ if (!mustHaveExpression || expressions.length) {
+ var compute = function(values) {
+ for (var i = 0, ii = expressions.length; i < ii; i++) {
+ if (allOrNothing && isUndefined(values[i])) return;
+ concat[expressionPositions[i]] = values[i];
+ }
+ return concat.join('');
+ };
+
+ var getValue = function(value) {
+ return trustedContext ?
+ $sce.getTrusted(trustedContext, value) :
+ $sce.valueOf(value);
+ };
+
+ return extend(function interpolationFn(context) {
+ var i = 0;
+ var ii = expressions.length;
+ var values = new Array(ii);
+
+ try {
+ for (; i < ii; i++) {
+ values[i] = parseFns[i](context);
+ }
+
+ return compute(values);
+ } catch (err) {
+ $exceptionHandler($interpolateMinErr.interr(text, err));
+ }
+
+ }, {
+ // all of these properties are undocumented for now
+ exp: text, //just for compatibility with regular watchers created via $watch
+ expressions: expressions,
+ $$watchDelegate: function(scope, listener) {
+ var lastValue;
+ return scope.$watchGroup(parseFns, function interpolateFnWatcher(values, oldValues) {
+ var currValue = compute(values);
+ if (isFunction(listener)) {
+ listener.call(this, currValue, values !== oldValues ? lastValue : currValue, scope);
+ }
+ lastValue = currValue;
+ });
+ }
+ });
+ }
+
+ function parseStringifyInterceptor(value) {
+ try {
+ value = getValue(value);
+ return allOrNothing && !isDefined(value) ? value : stringify(value);
+ } catch (err) {
+ $exceptionHandler($interpolateMinErr.interr(text, err));
+ }
+ }
+ }
+
+
+ /**
+ * @ngdoc method
+ * @name $interpolate#startSymbol
+ * @description
+ * Symbol to denote the start of expression in the interpolated string. Defaults to `{{`.
+ *
+ * Use {@link ng.$interpolateProvider#startSymbol `$interpolateProvider.startSymbol`} to change
+ * the symbol.
+ *
+ * @returns {string} start symbol.
+ */
+ $interpolate.startSymbol = function() {
+ return startSymbol;
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $interpolate#endSymbol
+ * @description
+ * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
+ *
+ * Use {@link ng.$interpolateProvider#endSymbol `$interpolateProvider.endSymbol`} to change
+ * the symbol.
+ *
+ * @returns {string} end symbol.
+ */
+ $interpolate.endSymbol = function() {
+ return endSymbol;
+ };
+
+ return $interpolate;
+ }];
+}
+
+function $IntervalProvider() {
+ this.$get = ['$rootScope', '$window', '$q', '$$q',
+ function($rootScope, $window, $q, $$q) {
+ var intervals = {};
+
+
+ /**
+ * @ngdoc service
+ * @name $interval
+ *
+ * @description
+ * Angular's wrapper for `window.setInterval`. The `fn` function is executed every `delay`
+ * milliseconds.
+ *
+ * The return value of registering an interval function is a promise. This promise will be
+ * notified upon each tick of the interval, and will be resolved after `count` iterations, or
+ * run indefinitely if `count` is not defined. The value of the notification will be the
+ * number of iterations that have run.
+ * To cancel an interval, call `$interval.cancel(promise)`.
+ *
+ * In tests you can use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
+ * move forward by `millis` milliseconds and trigger any functions scheduled to run in that
+ * time.
+ *
+ * <div class="alert alert-warning">
+ * **Note**: Intervals created by this service must be explicitly destroyed when you are finished
+ * with them. In particular they are not automatically destroyed when a controller's scope or a
+ * directive's element are destroyed.
+ * You should take this into consideration and make sure to always cancel the interval at the
+ * appropriate moment. See the example below for more details on how and when to do this.
+ * </div>
+ *
+ * @param {function()} fn A function that should be called repeatedly.
+ * @param {number} delay Number of milliseconds between each function call.
+ * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
+ * indefinitely.
+ * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
+ * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
+ * @param {...*=} Pass additional parameters to the executed function.
+ * @returns {promise} A promise which will be notified on each iteration.
+ *
+ * @example
+ * <example module="intervalExample">
+ * <file name="index.html">
+ * <script>
+ * angular.module('intervalExample', [])
+ * .controller('ExampleController', ['$scope', '$interval',
+ * function($scope, $interval) {
+ * $scope.format = 'M/d/yy h:mm:ss a';
+ * $scope.blood_1 = 100;
+ * $scope.blood_2 = 120;
+ *
+ * var stop;
+ * $scope.fight = function() {
+ * // Don't start a new fight if we are already fighting
+ * if ( angular.isDefined(stop) ) return;
+ *
+ * stop = $interval(function() {
+ * if ($scope.blood_1 > 0 && $scope.blood_2 > 0) {
+ * $scope.blood_1 = $scope.blood_1 - 3;
+ * $scope.blood_2 = $scope.blood_2 - 4;
+ * } else {
+ * $scope.stopFight();
+ * }
+ * }, 100);
+ * };
+ *
+ * $scope.stopFight = function() {
+ * if (angular.isDefined(stop)) {
+ * $interval.cancel(stop);
+ * stop = undefined;
+ * }
+ * };
+ *
+ * $scope.resetFight = function() {
+ * $scope.blood_1 = 100;
+ * $scope.blood_2 = 120;
+ * };
+ *
+ * $scope.$on('$destroy', function() {
+ * // Make sure that the interval is destroyed too
+ * $scope.stopFight();
+ * });
+ * }])
+ * // Register the 'myCurrentTime' directive factory method.
+ * // We inject $interval and dateFilter service since the factory method is DI.
+ * .directive('myCurrentTime', ['$interval', 'dateFilter',
+ * function($interval, dateFilter) {
+ * // return the directive link function. (compile function not needed)
+ * return function(scope, element, attrs) {
+ * var format, // date format
+ * stopTime; // so that we can cancel the time updates
+ *
+ * // used to update the UI
+ * function updateTime() {
+ * element.text(dateFilter(new Date(), format));
+ * }
+ *
+ * // watch the expression, and update the UI on change.
+ * scope.$watch(attrs.myCurrentTime, function(value) {
+ * format = value;
+ * updateTime();
+ * });
+ *
+ * stopTime = $interval(updateTime, 1000);
+ *
+ * // listen on DOM destroy (removal) event, and cancel the next UI update
+ * // to prevent updating time after the DOM element was removed.
+ * element.on('$destroy', function() {
+ * $interval.cancel(stopTime);
+ * });
+ * }
+ * }]);
+ * </script>
+ *
+ * <div>
+ * <div ng-controller="ExampleController">
+ * <label>Date format: <input ng-model="format"></label> <hr/>
+ * Current time is: <span my-current-time="format"></span>
+ * <hr/>
+ * Blood 1 : <font color='red'>{{blood_1}}</font>
+ * Blood 2 : <font color='red'>{{blood_2}}</font>
+ * <button type="button" data-ng-click="fight()">Fight</button>
+ * <button type="button" data-ng-click="stopFight()">StopFight</button>
+ * <button type="button" data-ng-click="resetFight()">resetFight</button>
+ * </div>
+ * </div>
+ *
+ * </file>
+ * </example>
+ */
+ function interval(fn, delay, count, invokeApply) {
+ var hasParams = arguments.length > 4,
+ args = hasParams ? sliceArgs(arguments, 4) : [],
+ setInterval = $window.setInterval,
+ clearInterval = $window.clearInterval,
+ iteration = 0,
+ skipApply = (isDefined(invokeApply) && !invokeApply),
+ deferred = (skipApply ? $$q : $q).defer(),
+ promise = deferred.promise;
+
+ count = isDefined(count) ? count : 0;
+
+ promise.then(null, null, (!hasParams) ? fn : function() {
+ fn.apply(null, args);
+ });
+
+ promise.$$intervalId = setInterval(function tick() {
+ deferred.notify(iteration++);
+
+ if (count > 0 && iteration >= count) {
+ deferred.resolve(iteration);
+ clearInterval(promise.$$intervalId);
+ delete intervals[promise.$$intervalId];
+ }
+
+ if (!skipApply) $rootScope.$apply();
+
+ }, delay);
+
+ intervals[promise.$$intervalId] = deferred;
+
+ return promise;
+ }
+
+
+ /**
+ * @ngdoc method
+ * @name $interval#cancel
+ *
+ * @description
+ * Cancels a task associated with the `promise`.
+ *
+ * @param {Promise=} promise returned by the `$interval` function.
+ * @returns {boolean} Returns `true` if the task was successfully canceled.
+ */
+ interval.cancel = function(promise) {
+ if (promise && promise.$$intervalId in intervals) {
+ intervals[promise.$$intervalId].reject('canceled');
+ $window.clearInterval(promise.$$intervalId);
+ delete intervals[promise.$$intervalId];
+ return true;
+ }
+ return false;
+ };
+
+ return interval;
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $locale
+ *
+ * @description
+ * $locale service provides localization rules for various Angular components. As of right now the
+ * only public api is:
+ *
+ * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`)
+ */
+
+var PATH_MATCH = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
+ DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};
+var $locationMinErr = minErr('$location');
+
+
+/**
+ * Encode path using encodeUriSegment, ignoring forward slashes
+ *
+ * @param {string} path Path to encode
+ * @returns {string}
+ */
+function encodePath(path) {
+ var segments = path.split('/'),
+ i = segments.length;
+
+ while (i--) {
+ segments[i] = encodeUriSegment(segments[i]);
+ }
+
+ return segments.join('/');
+}
+
+function parseAbsoluteUrl(absoluteUrl, locationObj) {
+ var parsedUrl = urlResolve(absoluteUrl);
+
+ locationObj.$$protocol = parsedUrl.protocol;
+ locationObj.$$host = parsedUrl.hostname;
+ locationObj.$$port = toInt(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;
+}
+
+
+function parseAppUrl(relativeUrl, locationObj) {
+ var prefixed = (relativeUrl.charAt(0) !== '/');
+ if (prefixed) {
+ relativeUrl = '/' + relativeUrl;
+ }
+ var match = urlResolve(relativeUrl);
+ locationObj.$$path = decodeURIComponent(prefixed && match.pathname.charAt(0) === '/' ?
+ match.pathname.substring(1) : match.pathname);
+ locationObj.$$search = parseKeyValue(match.search);
+ locationObj.$$hash = decodeURIComponent(match.hash);
+
+ // make sure path starts with '/';
+ if (locationObj.$$path && locationObj.$$path.charAt(0) != '/') {
+ locationObj.$$path = '/' + locationObj.$$path;
+ }
+}
+
+
+/**
+ *
+ * @param {string} begin
+ * @param {string} whole
+ * @returns {string} returns text from whole after begin or undefined if it does not begin with
+ * expected string.
+ */
+function beginsWith(begin, whole) {
+ if (whole.indexOf(begin) === 0) {
+ return whole.substr(begin.length);
+ }
+}
+
+
+function stripHash(url) {
+ var index = url.indexOf('#');
+ return index == -1 ? url : url.substr(0, index);
+}
+
+function trimEmptyHash(url) {
+ return url.replace(/(#.+)|#$/, '$1');
+}
+
+
+function stripFile(url) {
+ return url.substr(0, stripHash(url).lastIndexOf('/') + 1);
+}
+
+/* return the server only (scheme://host:port) */
+function serverBase(url) {
+ return url.substring(0, url.indexOf('/', url.indexOf('//') + 2));
+}
+
+
+/**
+ * LocationHtml5Url represents an url
+ * This object is exposed as $location service when HTML5 mode is enabled and supported
+ *
+ * @constructor
+ * @param {string} appBase application base URL
+ * @param {string} appBaseNoFile application base URL stripped of any filename
+ * @param {string} basePrefix url path prefix
+ */
+function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
+ this.$$html5 = true;
+ basePrefix = basePrefix || '';
+ parseAbsoluteUrl(appBase, this);
+
+
+ /**
+ * Parse given html5 (regular) url string into properties
+ * @param {string} url HTML5 url
+ * @private
+ */
+ this.$$parse = function(url) {
+ var pathUrl = beginsWith(appBaseNoFile, url);
+ if (!isString(pathUrl)) {
+ throw $locationMinErr('ipthprfx', 'Invalid url "{0}", missing path prefix "{1}".', url,
+ appBaseNoFile);
+ }
+
+ parseAppUrl(pathUrl, this);
+
+ if (!this.$$path) {
+ this.$$path = '/';
+ }
+
+ this.$$compose();
+ };
+
+ /**
+ * Compose url and update `absUrl` property
+ * @private
+ */
+ this.$$compose = function() {
+ var search = toKeyValue(this.$$search),
+ hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
+
+ this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
+ this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/'
+ };
+
+ this.$$parseLinkUrl = function(url, relHref) {
+ if (relHref && relHref[0] === '#') {
+ // special case for links to hash fragments:
+ // keep the old url and only replace the hash fragment
+ this.hash(relHref.slice(1));
+ return true;
+ }
+ var appUrl, prevAppUrl;
+ var rewrittenUrl;
+
+ if ((appUrl = beginsWith(appBase, url)) !== undefined) {
+ prevAppUrl = appUrl;
+ if ((appUrl = beginsWith(basePrefix, appUrl)) !== undefined) {
+ rewrittenUrl = appBaseNoFile + (beginsWith('/', appUrl) || appUrl);
+ } else {
+ rewrittenUrl = appBase + prevAppUrl;
+ }
+ } else if ((appUrl = beginsWith(appBaseNoFile, url)) !== undefined) {
+ rewrittenUrl = appBaseNoFile + appUrl;
+ } else if (appBaseNoFile == url + '/') {
+ rewrittenUrl = appBaseNoFile;
+ }
+ if (rewrittenUrl) {
+ this.$$parse(rewrittenUrl);
+ }
+ return !!rewrittenUrl;
+ };
+}
+
+
+/**
+ * LocationHashbangUrl represents url
+ * This object is exposed as $location service when developer doesn't opt into html5 mode.
+ * It also serves as the base class for html5 mode fallback on legacy browsers.
+ *
+ * @constructor
+ * @param {string} appBase application base URL
+ * @param {string} appBaseNoFile application base URL stripped of any filename
+ * @param {string} hashPrefix hashbang prefix
+ */
+function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {
+
+ parseAbsoluteUrl(appBase, this);
+
+
+ /**
+ * Parse given hashbang url into properties
+ * @param {string} url Hashbang url
+ * @private
+ */
+ this.$$parse = function(url) {
+ var withoutBaseUrl = beginsWith(appBase, url) || beginsWith(appBaseNoFile, url);
+ var withoutHashUrl;
+
+ if (!isUndefined(withoutBaseUrl) && withoutBaseUrl.charAt(0) === '#') {
+
+ // The rest of the url starts with a hash so we have
+ // got either a hashbang path or a plain hash fragment
+ withoutHashUrl = beginsWith(hashPrefix, withoutBaseUrl);
+ if (isUndefined(withoutHashUrl)) {
+ // There was no hashbang prefix so we just have a hash fragment
+ withoutHashUrl = withoutBaseUrl;
+ }
+
+ } else {
+ // There was no hashbang path nor hash fragment:
+ // If we are in HTML5 mode we use what is left as the path;
+ // Otherwise we ignore what is left
+ if (this.$$html5) {
+ withoutHashUrl = withoutBaseUrl;
+ } else {
+ withoutHashUrl = '';
+ if (isUndefined(withoutBaseUrl)) {
+ appBase = url;
+ this.replace();
+ }
+ }
+ }
+
+ parseAppUrl(withoutHashUrl, this);
+
+ this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase);
+
+ this.$$compose();
+
+ /*
+ * In Windows, on an anchor node on documents loaded from
+ * the filesystem, the browser will return a pathname
+ * prefixed with the drive name ('/C:/path') when a
+ * pathname without a drive is set:
+ * * a.setAttribute('href', '/foo')
+ * * a.pathname === '/C:/foo' //true
+ *
+ * Inside of Angular, we're always using pathnames that
+ * do not include drive names for routing.
+ */
+ function removeWindowsDriveName(path, url, base) {
+ /*
+ Matches paths for file protocol on windows,
+ such as /C:/foo/bar, and captures only /foo/bar.
+ */
+ var windowsFilePathExp = /^\/[A-Z]:(\/.*)/;
+
+ var firstPathSegmentMatch;
+
+ //Get the relative path from the input URL.
+ if (url.indexOf(base) === 0) {
+ url = url.replace(base, '');
+ }
+
+ // The input URL intentionally contains a first path segment that ends with a colon.
+ if (windowsFilePathExp.exec(url)) {
+ return path;
+ }
+
+ firstPathSegmentMatch = windowsFilePathExp.exec(path);
+ return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path;
+ }
+ };
+
+ /**
+ * Compose hashbang url and update `absUrl` property
+ * @private
+ */
+ this.$$compose = function() {
+ var search = toKeyValue(this.$$search),
+ hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
+
+ this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
+ this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : '');
+ };
+
+ this.$$parseLinkUrl = function(url, relHref) {
+ if (stripHash(appBase) == stripHash(url)) {
+ this.$$parse(url);
+ return true;
+ }
+ return false;
+ };
+}
+
+
+/**
+ * LocationHashbangUrl represents url
+ * This object is exposed as $location service when html5 history api is enabled but the browser
+ * does not support it.
+ *
+ * @constructor
+ * @param {string} appBase application base URL
+ * @param {string} appBaseNoFile application base URL stripped of any filename
+ * @param {string} hashPrefix hashbang prefix
+ */
+function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {
+ this.$$html5 = true;
+ LocationHashbangUrl.apply(this, arguments);
+
+ this.$$parseLinkUrl = function(url, relHref) {
+ if (relHref && relHref[0] === '#') {
+ // special case for links to hash fragments:
+ // keep the old url and only replace the hash fragment
+ this.hash(relHref.slice(1));
+ return true;
+ }
+
+ var rewrittenUrl;
+ var appUrl;
+
+ if (appBase == stripHash(url)) {
+ rewrittenUrl = url;
+ } else if ((appUrl = beginsWith(appBaseNoFile, url))) {
+ rewrittenUrl = appBase + hashPrefix + appUrl;
+ } else if (appBaseNoFile === url + '/') {
+ rewrittenUrl = appBaseNoFile;
+ }
+ if (rewrittenUrl) {
+ this.$$parse(rewrittenUrl);
+ }
+ return !!rewrittenUrl;
+ };
+
+ this.$$compose = function() {
+ var search = toKeyValue(this.$$search),
+ hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
+
+ this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
+ // include hashPrefix in $$absUrl when $$url is empty so IE9 does not reload page because of removal of '#'
+ this.$$absUrl = appBase + hashPrefix + this.$$url;
+ };
+
+}
+
+
+var locationPrototype = {
+
+ /**
+ * Are we in html5 mode?
+ * @private
+ */
+ $$html5: false,
+
+ /**
+ * Has any change been replacing?
+ * @private
+ */
+ $$replace: false,
+
+ /**
+ * @ngdoc method
+ * @name $location#absUrl
+ *
+ * @description
+ * This method is getter only.
+ *
+ * Return full url representation with all segments encoded according to rules specified in
+ * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var absUrl = $location.absUrl();
+ * // => "http://example.com/#/some/path?foo=bar&baz=xoxo"
+ * ```
+ *
+ * @return {string} full url
+ */
+ absUrl: locationGetter('$$absUrl'),
+
+ /**
+ * @ngdoc method
+ * @name $location#url
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return url (e.g. `/path?a=b#hash`) when called without any parameter.
+ *
+ * Change path, search and hash, when called with parameter and return `$location`.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var url = $location.url();
+ * // => "/some/path?foo=bar&baz=xoxo"
+ * ```
+ *
+ * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`)
+ * @return {string} url
+ */
+ url: function(url) {
+ if (isUndefined(url)) {
+ return this.$$url;
+ }
+
+ var match = PATH_MATCH.exec(url);
+ if (match[1] || url === '') this.path(decodeURIComponent(match[1]));
+ if (match[2] || match[1] || url === '') this.search(match[3] || '');
+ this.hash(match[5] || '');
+
+ return this;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $location#protocol
+ *
+ * @description
+ * This method is getter only.
+ *
+ * Return protocol of current url.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var protocol = $location.protocol();
+ * // => "http"
+ * ```
+ *
+ * @return {string} protocol of current url
+ */
+ protocol: locationGetter('$$protocol'),
+
+ /**
+ * @ngdoc method
+ * @name $location#host
+ *
+ * @description
+ * This method is getter only.
+ *
+ * Return host of current url.
+ *
+ * Note: compared to the non-angular version `location.host` which returns `hostname:port`, this returns the `hostname` portion only.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var host = $location.host();
+ * // => "example.com"
+ *
+ * // given url http://user:password@example.com:8080/#/some/path?foo=bar&baz=xoxo
+ * host = $location.host();
+ * // => "example.com"
+ * host = location.host;
+ * // => "example.com:8080"
+ * ```
+ *
+ * @return {string} host of current url.
+ */
+ host: locationGetter('$$host'),
+
+ /**
+ * @ngdoc method
+ * @name $location#port
+ *
+ * @description
+ * This method is getter only.
+ *
+ * Return port of current url.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var port = $location.port();
+ * // => 80
+ * ```
+ *
+ * @return {Number} port
+ */
+ port: locationGetter('$$port'),
+
+ /**
+ * @ngdoc method
+ * @name $location#path
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return path of current url when called without any parameter.
+ *
+ * Change path when called with parameter and return `$location`.
+ *
+ * Note: Path should always begin with forward slash (/), this method will add the forward slash
+ * if it is missing.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var path = $location.path();
+ * // => "/some/path"
+ * ```
+ *
+ * @param {(string|number)=} path New path
+ * @return {string} path
+ */
+ path: locationGetterSetter('$$path', function(path) {
+ path = path !== null ? path.toString() : '';
+ return path.charAt(0) == '/' ? path : '/' + path;
+ }),
+
+ /**
+ * @ngdoc method
+ * @name $location#search
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return search part (as object) of current url when called without any parameter.
+ *
+ * Change search part when called with parameter and return `$location`.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var searchObject = $location.search();
+ * // => {foo: 'bar', baz: 'xoxo'}
+ *
+ * // set foo to 'yipee'
+ * $location.search('foo', 'yipee');
+ * // $location.search() => {foo: 'yipee', baz: 'xoxo'}
+ * ```
+ *
+ * @param {string|Object.<string>|Object.<Array.<string>>} search New search params - string or
+ * hash object.
+ *
+ * When called with a single argument the method acts as a setter, setting the `search` component
+ * of `$location` to the specified value.
+ *
+ * If the argument is a hash object containing an array of values, these values will be encoded
+ * as duplicate search parameters in the url.
+ *
+ * @param {(string|Number|Array<string>|boolean)=} paramValue If `search` is a string or number, then `paramValue`
+ * will override only a single search property.
+ *
+ * If `paramValue` is an array, it will override the property of the `search` component of
+ * `$location` specified via the first argument.
+ *
+ * If `paramValue` is `null`, the property specified via the first argument will be deleted.
+ *
+ * If `paramValue` is `true`, the property specified via the first argument will be added with no
+ * value nor trailing equal sign.
+ *
+ * @return {Object} If called with no arguments returns the parsed `search` object. If called with
+ * one or more arguments returns `$location` object itself.
+ */
+ search: function(search, paramValue) {
+ switch (arguments.length) {
+ case 0:
+ return this.$$search;
+ case 1:
+ if (isString(search) || isNumber(search)) {
+ search = search.toString();
+ this.$$search = parseKeyValue(search);
+ } else if (isObject(search)) {
+ search = copy(search, {});
+ // remove object undefined or null properties
+ forEach(search, function(value, key) {
+ if (value == null) delete search[key];
+ });
+
+ this.$$search = search;
+ } else {
+ throw $locationMinErr('isrcharg',
+ 'The first argument of the `$location#search()` call must be a string or an object.');
+ }
+ break;
+ default:
+ if (isUndefined(paramValue) || paramValue === null) {
+ delete this.$$search[search];
+ } else {
+ this.$$search[search] = paramValue;
+ }
+ }
+
+ this.$$compose();
+ return this;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $location#hash
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return hash fragment when called without any parameter.
+ *
+ * Change hash fragment when called with parameter and return `$location`.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue
+ * var hash = $location.hash();
+ * // => "hashValue"
+ * ```
+ *
+ * @param {(string|number)=} hash New hash fragment
+ * @return {string} hash
+ */
+ hash: locationGetterSetter('$$hash', function(hash) {
+ return hash !== null ? hash.toString() : '';
+ }),
+
+ /**
+ * @ngdoc method
+ * @name $location#replace
+ *
+ * @description
+ * If called, all changes to $location during current `$digest` will be replacing current history
+ * record, instead of adding new one.
+ */
+ replace: function() {
+ this.$$replace = true;
+ return this;
+ }
+};
+
+forEach([LocationHashbangInHtml5Url, LocationHashbangUrl, LocationHtml5Url], function(Location) {
+ Location.prototype = Object.create(locationPrototype);
+
+ /**
+ * @ngdoc method
+ * @name $location#state
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return the history state object when called without any parameter.
+ *
+ * Change the history state object when called with one parameter and return `$location`.
+ * The state object is later passed to `pushState` or `replaceState`.
+ *
+ * NOTE: This method is supported only in HTML5 mode and only in browsers supporting
+ * the HTML5 History API (i.e. methods `pushState` and `replaceState`). If you need to support
+ * older browsers (like IE9 or Android < 4.0), don't use this method.
+ *
+ * @param {object=} state State object for pushState or replaceState
+ * @return {object} state
+ */
+ Location.prototype.state = function(state) {
+ if (!arguments.length) {
+ return this.$$state;
+ }
+
+ if (Location !== LocationHtml5Url || !this.$$html5) {
+ throw $locationMinErr('nostate', 'History API state support is available only ' +
+ 'in HTML5 mode and only in browsers supporting HTML5 History API');
+ }
+ // The user might modify `stateObject` after invoking `$location.state(stateObject)`
+ // but we're changing the $$state reference to $browser.state() during the $digest
+ // so the modification window is narrow.
+ this.$$state = isUndefined(state) ? null : state;
+
+ return this;
+ };
+});
+
+
+function locationGetter(property) {
+ return function() {
+ return this[property];
+ };
+}
+
+
+function locationGetterSetter(property, preprocess) {
+ return function(value) {
+ if (isUndefined(value)) {
+ return this[property];
+ }
+
+ this[property] = preprocess(value);
+ this.$$compose();
+
+ return this;
+ };
+}
+
+
+/**
+ * @ngdoc service
+ * @name $location
+ *
+ * @requires $rootElement
+ *
+ * @description
+ * The $location service parses the URL in the browser address bar (based on the
+ * [window.location](https://developer.mozilla.org/en/window.location)) and makes the URL
+ * available to your application. Changes to the URL in the address bar are reflected into
+ * $location service and changes to $location are reflected into the browser address bar.
+ *
+ * **The $location service:**
+ *
+ * - Exposes the current URL in the browser address bar, so you can
+ * - Watch and observe the URL.
+ * - Change the URL.
+ * - Synchronizes the URL with the browser when the user
+ * - Changes the address bar.
+ * - Clicks the back or forward button (or clicks a History link).
+ * - Clicks on a link.
+ * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).
+ *
+ * For more information see {@link guide/$location Developer Guide: Using $location}
+ */
+
+/**
+ * @ngdoc provider
+ * @name $locationProvider
+ * @description
+ * Use the `$locationProvider` to configure how the application deep linking paths are stored.
+ */
+function $LocationProvider() {
+ var hashPrefix = '',
+ html5Mode = {
+ enabled: false,
+ requireBase: true,
+ rewriteLinks: true
+ };
+
+ /**
+ * @ngdoc method
+ * @name $locationProvider#hashPrefix
+ * @description
+ * @param {string=} prefix Prefix for hash part (containing path and search)
+ * @returns {*} current value if used as getter or itself (chaining) if used as setter
+ */
+ this.hashPrefix = function(prefix) {
+ if (isDefined(prefix)) {
+ hashPrefix = prefix;
+ return this;
+ } else {
+ return hashPrefix;
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $locationProvider#html5Mode
+ * @description
+ * @param {(boolean|Object)=} mode If boolean, sets `html5Mode.enabled` to value.
+ * If object, sets `enabled`, `requireBase` and `rewriteLinks` to respective values. Supported
+ * properties:
+ * - **enabled** – `{boolean}` – (default: false) If true, will rely on `history.pushState` to
+ * change urls where supported. Will fall back to hash-prefixed paths in browsers that do not
+ * support `pushState`.
+ * - **requireBase** - `{boolean}` - (default: `true`) When html5Mode is enabled, specifies
+ * whether or not a <base> tag is required to be present. If `enabled` and `requireBase` are
+ * true, and a base tag is not present, an error will be thrown when `$location` is injected.
+ * See the {@link guide/$location $location guide for more information}
+ * - **rewriteLinks** - `{boolean}` - (default: `true`) When html5Mode is enabled,
+ * enables/disables url rewriting for relative links.
+ *
+ * @returns {Object} html5Mode object if used as getter or itself (chaining) if used as setter
+ */
+ this.html5Mode = function(mode) {
+ if (isBoolean(mode)) {
+ html5Mode.enabled = mode;
+ return this;
+ } else if (isObject(mode)) {
+
+ if (isBoolean(mode.enabled)) {
+ html5Mode.enabled = mode.enabled;
+ }
+
+ if (isBoolean(mode.requireBase)) {
+ html5Mode.requireBase = mode.requireBase;
+ }
+
+ if (isBoolean(mode.rewriteLinks)) {
+ html5Mode.rewriteLinks = mode.rewriteLinks;
+ }
+
+ return this;
+ } else {
+ return html5Mode;
+ }
+ };
+
+ /**
+ * @ngdoc event
+ * @name $location#$locationChangeStart
+ * @eventType broadcast on root scope
+ * @description
+ * Broadcasted before a URL will change.
+ *
+ * This change can be prevented by calling
+ * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more
+ * details about event object. Upon successful change
+ * {@link ng.$location#$locationChangeSuccess $locationChangeSuccess} is fired.
+ *
+ * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when
+ * the browser supports the HTML5 History API.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {string} newUrl New URL
+ * @param {string=} oldUrl URL that was before it was changed.
+ * @param {string=} newState New history state object
+ * @param {string=} oldState History state object that was before it was changed.
+ */
+
+ /**
+ * @ngdoc event
+ * @name $location#$locationChangeSuccess
+ * @eventType broadcast on root scope
+ * @description
+ * Broadcasted after a URL was changed.
+ *
+ * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when
+ * the browser supports the HTML5 History API.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {string} newUrl New URL
+ * @param {string=} oldUrl URL that was before it was changed.
+ * @param {string=} newState New history state object
+ * @param {string=} oldState History state object that was before it was changed.
+ */
+
+ this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement', '$window',
+ function($rootScope, $browser, $sniffer, $rootElement, $window) {
+ var $location,
+ LocationMode,
+ baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to ''
+ initialUrl = $browser.url(),
+ appBase;
+
+ if (html5Mode.enabled) {
+ if (!baseHref && html5Mode.requireBase) {
+ throw $locationMinErr('nobase',
+ "$location in HTML5 mode requires a <base> tag to be present!");
+ }
+ appBase = serverBase(initialUrl) + (baseHref || '/');
+ LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url;
+ } else {
+ appBase = stripHash(initialUrl);
+ LocationMode = LocationHashbangUrl;
+ }
+ var appBaseNoFile = stripFile(appBase);
+
+ $location = new LocationMode(appBase, appBaseNoFile, '#' + hashPrefix);
+ $location.$$parseLinkUrl(initialUrl, initialUrl);
+
+ $location.$$state = $browser.state();
+
+ var IGNORE_URI_REGEXP = /^\s*(javascript|mailto):/i;
+
+ function setBrowserUrlWithFallback(url, replace, state) {
+ var oldUrl = $location.url();
+ var oldState = $location.$$state;
+ try {
+ $browser.url(url, replace, state);
+
+ // Make sure $location.state() returns referentially identical (not just deeply equal)
+ // state object; this makes possible quick checking if the state changed in the digest
+ // loop. Checking deep equality would be too expensive.
+ $location.$$state = $browser.state();
+ } catch (e) {
+ // Restore old values if pushState fails
+ $location.url(oldUrl);
+ $location.$$state = oldState;
+
+ throw e;
+ }
+ }
+
+ $rootElement.on('click', function(event) {
+ // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)
+ // currently we open nice url link and redirect then
+
+ if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.shiftKey || event.which == 2 || event.button == 2) return;
+
+ var elm = jqLite(event.target);
+
+ // traverse the DOM up to find first A tag
+ while (nodeName_(elm[0]) !== 'a') {
+ // ignore rewriting if no A tag (reached root element, or no parent - removed from document)
+ if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0]) return;
+ }
+
+ var absHref = elm.prop('href');
+ // get the actual href attribute - see
+ // http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx
+ var relHref = elm.attr('href') || elm.attr('xlink:href');
+
+ if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') {
+ // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during
+ // an animation.
+ absHref = urlResolve(absHref.animVal).href;
+ }
+
+ // Ignore when url is started with javascript: or mailto:
+ if (IGNORE_URI_REGEXP.test(absHref)) return;
+
+ if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) {
+ if ($location.$$parseLinkUrl(absHref, relHref)) {
+ // We do a preventDefault for all urls that are part of the angular application,
+ // in html5mode and also without, so that we are able to abort navigation without
+ // getting double entries in the location history.
+ event.preventDefault();
+ // update location manually
+ if ($location.absUrl() != $browser.url()) {
+ $rootScope.$apply();
+ // hack to work around FF6 bug 684208 when scenario runner clicks on links
+ $window.angular['ff-684208-preventDefault'] = true;
+ }
+ }
+ }
+ });
+
+
+ // rewrite hashbang url <> html5 url
+ if (trimEmptyHash($location.absUrl()) != trimEmptyHash(initialUrl)) {
+ $browser.url($location.absUrl(), true);
+ }
+
+ var initializing = true;
+
+ // update $location when $browser url changes
+ $browser.onUrlChange(function(newUrl, newState) {
+
+ if (isUndefined(beginsWith(appBaseNoFile, newUrl))) {
+ // If we are navigating outside of the app then force a reload
+ $window.location.href = newUrl;
+ return;
+ }
+
+ $rootScope.$evalAsync(function() {
+ var oldUrl = $location.absUrl();
+ var oldState = $location.$$state;
+ var defaultPrevented;
+
+ $location.$$parse(newUrl);
+ $location.$$state = newState;
+
+ defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
+ newState, oldState).defaultPrevented;
+
+ // if the location was changed by a `$locationChangeStart` handler then stop
+ // processing this location change
+ if ($location.absUrl() !== newUrl) return;
+
+ if (defaultPrevented) {
+ $location.$$parse(oldUrl);
+ $location.$$state = oldState;
+ setBrowserUrlWithFallback(oldUrl, false, oldState);
+ } else {
+ initializing = false;
+ afterLocationChange(oldUrl, oldState);
+ }
+ });
+ if (!$rootScope.$$phase) $rootScope.$digest();
+ });
+
+ // update browser
+ $rootScope.$watch(function $locationWatch() {
+ var oldUrl = trimEmptyHash($browser.url());
+ var newUrl = trimEmptyHash($location.absUrl());
+ var oldState = $browser.state();
+ var currentReplace = $location.$$replace;
+ var urlOrStateChanged = oldUrl !== newUrl ||
+ ($location.$$html5 && $sniffer.history && oldState !== $location.$$state);
+
+ if (initializing || urlOrStateChanged) {
+ initializing = false;
+
+ $rootScope.$evalAsync(function() {
+ var newUrl = $location.absUrl();
+ var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
+ $location.$$state, oldState).defaultPrevented;
+
+ // if the location was changed by a `$locationChangeStart` handler then stop
+ // processing this location change
+ if ($location.absUrl() !== newUrl) return;
+
+ if (defaultPrevented) {
+ $location.$$parse(oldUrl);
+ $location.$$state = oldState;
+ } else {
+ if (urlOrStateChanged) {
+ setBrowserUrlWithFallback(newUrl, currentReplace,
+ oldState === $location.$$state ? null : $location.$$state);
+ }
+ afterLocationChange(oldUrl, oldState);
+ }
+ });
+ }
+
+ $location.$$replace = false;
+
+ // we don't need to return anything because $evalAsync will make the digest loop dirty when
+ // there is a change
+ });
+
+ return $location;
+
+ function afterLocationChange(oldUrl, oldState) {
+ $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl,
+ $location.$$state, oldState);
+ }
+}];
+}
+
+/**
+ * @ngdoc service
+ * @name $log
+ * @requires $window
+ *
+ * @description
+ * Simple service for logging. Default implementation safely writes the message
+ * into the browser's console (if present).
+ *
+ * The main purpose of this service is to simplify debugging and troubleshooting.
+ *
+ * The default is to log `debug` messages. You can use
+ * {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this.
+ *
+ * @example
+ <example module="logExample">
+ <file name="script.js">
+ angular.module('logExample', [])
+ .controller('LogController', ['$scope', '$log', function($scope, $log) {
+ $scope.$log = $log;
+ $scope.message = 'Hello World!';
+ }]);
+ </file>
+ <file name="index.html">
+ <div ng-controller="LogController">
+ <p>Reload this page with open console, enter text and hit the log button...</p>
+ <label>Message:
+ <input type="text" ng-model="message" /></label>
+ <button ng-click="$log.log(message)">log</button>
+ <button ng-click="$log.warn(message)">warn</button>
+ <button ng-click="$log.info(message)">info</button>
+ <button ng-click="$log.error(message)">error</button>
+ <button ng-click="$log.debug(message)">debug</button>
+ </div>
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc provider
+ * @name $logProvider
+ * @description
+ * Use the `$logProvider` to configure how the application logs messages
+ */
+function $LogProvider() {
+ var debug = true,
+ self = this;
+
+ /**
+ * @ngdoc method
+ * @name $logProvider#debugEnabled
+ * @description
+ * @param {boolean=} flag enable or disable debug level messages
+ * @returns {*} current value if used as getter or itself (chaining) if used as setter
+ */
+ this.debugEnabled = function(flag) {
+ if (isDefined(flag)) {
+ debug = flag;
+ return this;
+ } else {
+ return debug;
+ }
+ };
+
+ this.$get = ['$window', function($window) {
+ return {
+ /**
+ * @ngdoc method
+ * @name $log#log
+ *
+ * @description
+ * Write a log message
+ */
+ log: consoleLog('log'),
+
+ /**
+ * @ngdoc method
+ * @name $log#info
+ *
+ * @description
+ * Write an information message
+ */
+ info: consoleLog('info'),
+
+ /**
+ * @ngdoc method
+ * @name $log#warn
+ *
+ * @description
+ * Write a warning message
+ */
+ warn: consoleLog('warn'),
+
+ /**
+ * @ngdoc method
+ * @name $log#error
+ *
+ * @description
+ * Write an error message
+ */
+ error: consoleLog('error'),
+
+ /**
+ * @ngdoc method
+ * @name $log#debug
+ *
+ * @description
+ * Write a debug message
+ */
+ debug: (function() {
+ var fn = consoleLog('debug');
+
+ return function() {
+ if (debug) {
+ fn.apply(self, arguments);
+ }
+ };
+ }())
+ };
+
+ function formatError(arg) {
+ if (arg instanceof Error) {
+ if (arg.stack) {
+ arg = (arg.message && arg.stack.indexOf(arg.message) === -1)
+ ? 'Error: ' + arg.message + '\n' + arg.stack
+ : arg.stack;
+ } else if (arg.sourceURL) {
+ arg = arg.message + '\n' + arg.sourceURL + ':' + arg.line;
+ }
+ }
+ return arg;
+ }
+
+ function consoleLog(type) {
+ var console = $window.console || {},
+ logFn = console[type] || console.log || noop,
+ hasApply = false;
+
+ // Note: reading logFn.apply throws an error in IE11 in IE8 document mode.
+ // The reason behind this is that console.log has type "object" in IE8...
+ try {
+ hasApply = !!logFn.apply;
+ } catch (e) {}
+
+ if (hasApply) {
+ return function() {
+ var args = [];
+ forEach(arguments, function(arg) {
+ args.push(formatError(arg));
+ });
+ return logFn.apply(console, args);
+ };
+ }
+
+ // we are IE which either doesn't have window.console => this is noop and we do nothing,
+ // or we are IE where console.log doesn't have apply so we log at least first 2 args
+ return function(arg1, arg2) {
+ logFn(arg1, arg2 == null ? '' : arg2);
+ };
+ }
+ }];
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Any commits to this file should be reviewed with security in mind. *
+ * Changes to this file can potentially create security vulnerabilities. *
+ * An approval from 2 Core members with history of modifying *
+ * this file is required. *
+ * *
+ * Does the change somehow allow for arbitrary javascript to be executed? *
+ * Or allows for someone to change the prototype of built-in objects? *
+ * Or gives undesired access to variables likes document or window? *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+var $parseMinErr = minErr('$parse');
+
+// Sandboxing Angular Expressions
+// ------------------------------
+// Angular expressions are generally considered safe because these expressions only have direct
+// access to `$scope` and locals. However, one can obtain the ability to execute arbitrary JS code by
+// obtaining a reference to native JS functions such as the Function constructor.
+//
+// As an example, consider the following Angular expression:
+//
+// {}.toString.constructor('alert("evil JS code")')
+//
+// This sandboxing technique is not perfect and doesn't aim to be. The goal is to prevent exploits
+// against the expression language, but not to prevent exploits that were enabled by exposing
+// sensitive JavaScript or browser APIs on Scope. Exposing such objects on a Scope is never a good
+// practice and therefore we are not even trying to protect against interaction with an object
+// explicitly exposed in this way.
+//
+// In general, it is not possible to access a Window object from an angular expression unless a
+// window or some DOM object that has a reference to window is published onto a Scope.
+// Similarly we prevent invocations of function known to be dangerous, as well as assignments to
+// native objects.
+//
+// See https://docs.angularjs.org/guide/security
+
+
+function ensureSafeMemberName(name, fullExpression) {
+ if (name === "__defineGetter__" || name === "__defineSetter__"
+ || name === "__lookupGetter__" || name === "__lookupSetter__"
+ || name === "__proto__") {
+ throw $parseMinErr('isecfld',
+ 'Attempting to access a disallowed field in Angular expressions! '
+ + 'Expression: {0}', fullExpression);
+ }
+ return name;
+}
+
+function ensureSafeObject(obj, fullExpression) {
+ // nifty check if obj is Function that is fast and works across iframes and other contexts
+ if (obj) {
+ if (obj.constructor === obj) {
+ throw $parseMinErr('isecfn',
+ 'Referencing Function in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ } else if (// isWindow(obj)
+ obj.window === obj) {
+ throw $parseMinErr('isecwindow',
+ 'Referencing the Window in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ } else if (// isElement(obj)
+ obj.children && (obj.nodeName || (obj.prop && obj.attr && obj.find))) {
+ throw $parseMinErr('isecdom',
+ 'Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ } else if (// block Object so that we can't get hold of dangerous Object.* methods
+ obj === Object) {
+ throw $parseMinErr('isecobj',
+ 'Referencing Object in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ }
+ }
+ return obj;
+}
+
+var CALL = Function.prototype.call;
+var APPLY = Function.prototype.apply;
+var BIND = Function.prototype.bind;
+
+function ensureSafeFunction(obj, fullExpression) {
+ if (obj) {
+ if (obj.constructor === obj) {
+ throw $parseMinErr('isecfn',
+ 'Referencing Function in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ } else if (obj === CALL || obj === APPLY || obj === BIND) {
+ throw $parseMinErr('isecff',
+ 'Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ }
+ }
+}
+
+var OPERATORS = createMap();
+forEach('+ - * / % === !== == != < > <= >= && || ! = |'.split(' '), function(operator) { OPERATORS[operator] = true; });
+var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'};
+
+
+/////////////////////////////////////////
+
+
+/**
+ * @constructor
+ */
+var Lexer = function(options) {
+ this.options = options;
+};
+
+Lexer.prototype = {
+ constructor: Lexer,
+
+ lex: function(text) {
+ this.text = text;
+ this.index = 0;
+ this.tokens = [];
+
+ while (this.index < this.text.length) {
+ var ch = this.text.charAt(this.index);
+ if (ch === '"' || ch === "'") {
+ this.readString(ch);
+ } else if (this.isNumber(ch) || ch === '.' && this.isNumber(this.peek())) {
+ this.readNumber();
+ } else if (this.isIdent(ch)) {
+ this.readIdent();
+ } else if (this.is(ch, '(){}[].,;:?')) {
+ this.tokens.push({index: this.index, text: ch});
+ this.index++;
+ } else if (this.isWhitespace(ch)) {
+ this.index++;
+ } else {
+ var ch2 = ch + this.peek();
+ var ch3 = ch2 + this.peek(2);
+ var op1 = OPERATORS[ch];
+ var op2 = OPERATORS[ch2];
+ var op3 = OPERATORS[ch3];
+ if (op1 || op2 || op3) {
+ var token = op3 ? ch3 : (op2 ? ch2 : ch);
+ this.tokens.push({index: this.index, text: token, operator: true});
+ this.index += token.length;
+ } else {
+ this.throwError('Unexpected next character ', this.index, this.index + 1);
+ }
+ }
+ }
+ return this.tokens;
+ },
+
+ is: function(ch, chars) {
+ return chars.indexOf(ch) !== -1;
+ },
+
+ peek: function(i) {
+ var num = i || 1;
+ return (this.index + num < this.text.length) ? this.text.charAt(this.index + num) : false;
+ },
+
+ isNumber: function(ch) {
+ return ('0' <= ch && ch <= '9') && typeof ch === "string";
+ },
+
+ isWhitespace: function(ch) {
+ // IE treats non-breaking space as \u00A0
+ return (ch === ' ' || ch === '\r' || ch === '\t' ||
+ ch === '\n' || ch === '\v' || ch === '\u00A0');
+ },
+
+ isIdent: function(ch) {
+ return ('a' <= ch && ch <= 'z' ||
+ 'A' <= ch && ch <= 'Z' ||
+ '_' === ch || ch === '$');
+ },
+
+ isExpOperator: function(ch) {
+ return (ch === '-' || ch === '+' || this.isNumber(ch));
+ },
+
+ throwError: function(error, start, end) {
+ end = end || this.index;
+ var colStr = (isDefined(start)
+ ? 's ' + start + '-' + this.index + ' [' + this.text.substring(start, end) + ']'
+ : ' ' + end);
+ throw $parseMinErr('lexerr', 'Lexer Error: {0} at column{1} in expression [{2}].',
+ error, colStr, this.text);
+ },
+
+ readNumber: function() {
+ var number = '';
+ var start = this.index;
+ while (this.index < this.text.length) {
+ var ch = lowercase(this.text.charAt(this.index));
+ if (ch == '.' || this.isNumber(ch)) {
+ number += ch;
+ } else {
+ var peekCh = this.peek();
+ if (ch == 'e' && this.isExpOperator(peekCh)) {
+ number += ch;
+ } else if (this.isExpOperator(ch) &&
+ peekCh && this.isNumber(peekCh) &&
+ number.charAt(number.length - 1) == 'e') {
+ number += ch;
+ } else if (this.isExpOperator(ch) &&
+ (!peekCh || !this.isNumber(peekCh)) &&
+ number.charAt(number.length - 1) == 'e') {
+ this.throwError('Invalid exponent');
+ } else {
+ break;
+ }
+ }
+ this.index++;
+ }
+ this.tokens.push({
+ index: start,
+ text: number,
+ constant: true,
+ value: Number(number)
+ });
+ },
+
+ readIdent: function() {
+ var start = this.index;
+ while (this.index < this.text.length) {
+ var ch = this.text.charAt(this.index);
+ if (!(this.isIdent(ch) || this.isNumber(ch))) {
+ break;
+ }
+ this.index++;
+ }
+ this.tokens.push({
+ index: start,
+ text: this.text.slice(start, this.index),
+ identifier: true
+ });
+ },
+
+ readString: function(quote) {
+ var start = this.index;
+ this.index++;
+ var string = '';
+ var rawString = quote;
+ var escape = false;
+ while (this.index < this.text.length) {
+ var ch = this.text.charAt(this.index);
+ rawString += ch;
+ if (escape) {
+ if (ch === 'u') {
+ var hex = this.text.substring(this.index + 1, this.index + 5);
+ if (!hex.match(/[\da-f]{4}/i)) {
+ this.throwError('Invalid unicode escape [\\u' + hex + ']');
+ }
+ this.index += 4;
+ string += String.fromCharCode(parseInt(hex, 16));
+ } else {
+ var rep = ESCAPE[ch];
+ string = string + (rep || ch);
+ }
+ escape = false;
+ } else if (ch === '\\') {
+ escape = true;
+ } else if (ch === quote) {
+ this.index++;
+ this.tokens.push({
+ index: start,
+ text: rawString,
+ constant: true,
+ value: string
+ });
+ return;
+ } else {
+ string += ch;
+ }
+ this.index++;
+ }
+ this.throwError('Unterminated quote', start);
+ }
+};
+
+var AST = function(lexer, options) {
+ this.lexer = lexer;
+ this.options = options;
+};
+
+AST.Program = 'Program';
+AST.ExpressionStatement = 'ExpressionStatement';
+AST.AssignmentExpression = 'AssignmentExpression';
+AST.ConditionalExpression = 'ConditionalExpression';
+AST.LogicalExpression = 'LogicalExpression';
+AST.BinaryExpression = 'BinaryExpression';
+AST.UnaryExpression = 'UnaryExpression';
+AST.CallExpression = 'CallExpression';
+AST.MemberExpression = 'MemberExpression';
+AST.Identifier = 'Identifier';
+AST.Literal = 'Literal';
+AST.ArrayExpression = 'ArrayExpression';
+AST.Property = 'Property';
+AST.ObjectExpression = 'ObjectExpression';
+AST.ThisExpression = 'ThisExpression';
+
+// Internal use only
+AST.NGValueParameter = 'NGValueParameter';
+
+AST.prototype = {
+ ast: function(text) {
+ this.text = text;
+ this.tokens = this.lexer.lex(text);
+
+ var value = this.program();
+
+ if (this.tokens.length !== 0) {
+ this.throwError('is an unexpected token', this.tokens[0]);
+ }
+
+ return value;
+ },
+
+ program: function() {
+ var body = [];
+ while (true) {
+ if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']'))
+ body.push(this.expressionStatement());
+ if (!this.expect(';')) {
+ return { type: AST.Program, body: body};
+ }
+ }
+ },
+
+ expressionStatement: function() {
+ return { type: AST.ExpressionStatement, expression: this.filterChain() };
+ },
+
+ filterChain: function() {
+ var left = this.expression();
+ var token;
+ while ((token = this.expect('|'))) {
+ left = this.filter(left);
+ }
+ return left;
+ },
+
+ expression: function() {
+ return this.assignment();
+ },
+
+ assignment: function() {
+ var result = this.ternary();
+ if (this.expect('=')) {
+ result = { type: AST.AssignmentExpression, left: result, right: this.assignment(), operator: '='};
+ }
+ return result;
+ },
+
+ ternary: function() {
+ var test = this.logicalOR();
+ var alternate;
+ var consequent;
+ if (this.expect('?')) {
+ alternate = this.expression();
+ if (this.consume(':')) {
+ consequent = this.expression();
+ return { type: AST.ConditionalExpression, test: test, alternate: alternate, consequent: consequent};
+ }
+ }
+ return test;
+ },
+
+ logicalOR: function() {
+ var left = this.logicalAND();
+ while (this.expect('||')) {
+ left = { type: AST.LogicalExpression, operator: '||', left: left, right: this.logicalAND() };
+ }
+ return left;
+ },
+
+ logicalAND: function() {
+ var left = this.equality();
+ while (this.expect('&&')) {
+ left = { type: AST.LogicalExpression, operator: '&&', left: left, right: this.equality()};
+ }
+ return left;
+ },
+
+ equality: function() {
+ var left = this.relational();
+ var token;
+ while ((token = this.expect('==','!=','===','!=='))) {
+ left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.relational() };
+ }
+ return left;
+ },
+
+ relational: function() {
+ var left = this.additive();
+ var token;
+ while ((token = this.expect('<', '>', '<=', '>='))) {
+ left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.additive() };
+ }
+ return left;
+ },
+
+ additive: function() {
+ var left = this.multiplicative();
+ var token;
+ while ((token = this.expect('+','-'))) {
+ left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.multiplicative() };
+ }
+ return left;
+ },
+
+ multiplicative: function() {
+ var left = this.unary();
+ var token;
+ while ((token = this.expect('*','/','%'))) {
+ left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.unary() };
+ }
+ return left;
+ },
+
+ unary: function() {
+ var token;
+ if ((token = this.expect('+', '-', '!'))) {
+ return { type: AST.UnaryExpression, operator: token.text, prefix: true, argument: this.unary() };
+ } else {
+ return this.primary();
+ }
+ },
+
+ primary: function() {
+ var primary;
+ if (this.expect('(')) {
+ primary = this.filterChain();
+ this.consume(')');
+ } else if (this.expect('[')) {
+ primary = this.arrayDeclaration();
+ } else if (this.expect('{')) {
+ primary = this.object();
+ } else if (this.constants.hasOwnProperty(this.peek().text)) {
+ primary = copy(this.constants[this.consume().text]);
+ } else if (this.peek().identifier) {
+ primary = this.identifier();
+ } else if (this.peek().constant) {
+ primary = this.constant();
+ } else {
+ this.throwError('not a primary expression', this.peek());
+ }
+
+ var next;
+ while ((next = this.expect('(', '[', '.'))) {
+ if (next.text === '(') {
+ primary = {type: AST.CallExpression, callee: primary, arguments: this.parseArguments() };
+ this.consume(')');
+ } else if (next.text === '[') {
+ primary = { type: AST.MemberExpression, object: primary, property: this.expression(), computed: true };
+ this.consume(']');
+ } else if (next.text === '.') {
+ primary = { type: AST.MemberExpression, object: primary, property: this.identifier(), computed: false };
+ } else {
+ this.throwError('IMPOSSIBLE');
+ }
+ }
+ return primary;
+ },
+
+ filter: function(baseExpression) {
+ var args = [baseExpression];
+ var result = {type: AST.CallExpression, callee: this.identifier(), arguments: args, filter: true};
+
+ while (this.expect(':')) {
+ args.push(this.expression());
+ }
+
+ return result;
+ },
+
+ parseArguments: function() {
+ var args = [];
+ if (this.peekToken().text !== ')') {
+ do {
+ args.push(this.expression());
+ } while (this.expect(','));
+ }
+ return args;
+ },
+
+ identifier: function() {
+ var token = this.consume();
+ if (!token.identifier) {
+ this.throwError('is not a valid identifier', token);
+ }
+ return { type: AST.Identifier, name: token.text };
+ },
+
+ constant: function() {
+ // TODO check that it is a constant
+ return { type: AST.Literal, value: this.consume().value };
+ },
+
+ arrayDeclaration: function() {
+ var elements = [];
+ if (this.peekToken().text !== ']') {
+ do {
+ if (this.peek(']')) {
+ // Support trailing commas per ES5.1.
+ break;
+ }
+ elements.push(this.expression());
+ } while (this.expect(','));
+ }
+ this.consume(']');
+
+ return { type: AST.ArrayExpression, elements: elements };
+ },
+
+ object: function() {
+ var properties = [], property;
+ if (this.peekToken().text !== '}') {
+ do {
+ if (this.peek('}')) {
+ // Support trailing commas per ES5.1.
+ break;
+ }
+ property = {type: AST.Property, kind: 'init'};
+ if (this.peek().constant) {
+ property.key = this.constant();
+ } else if (this.peek().identifier) {
+ property.key = this.identifier();
+ } else {
+ this.throwError("invalid key", this.peek());
+ }
+ this.consume(':');
+ property.value = this.expression();
+ properties.push(property);
+ } while (this.expect(','));
+ }
+ this.consume('}');
+
+ return {type: AST.ObjectExpression, properties: properties };
+ },
+
+ throwError: function(msg, token) {
+ throw $parseMinErr('syntax',
+ 'Syntax Error: Token \'{0}\' {1} at column {2} of the expression [{3}] starting at [{4}].',
+ token.text, msg, (token.index + 1), this.text, this.text.substring(token.index));
+ },
+
+ consume: function(e1) {
+ if (this.tokens.length === 0) {
+ throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);
+ }
+
+ var token = this.expect(e1);
+ if (!token) {
+ this.throwError('is unexpected, expecting [' + e1 + ']', this.peek());
+ }
+ return token;
+ },
+
+ peekToken: function() {
+ if (this.tokens.length === 0) {
+ throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);
+ }
+ return this.tokens[0];
+ },
+
+ peek: function(e1, e2, e3, e4) {
+ return this.peekAhead(0, e1, e2, e3, e4);
+ },
+
+ peekAhead: function(i, e1, e2, e3, e4) {
+ if (this.tokens.length > i) {
+ var token = this.tokens[i];
+ var t = token.text;
+ if (t === e1 || t === e2 || t === e3 || t === e4 ||
+ (!e1 && !e2 && !e3 && !e4)) {
+ return token;
+ }
+ }
+ return false;
+ },
+
+ expect: function(e1, e2, e3, e4) {
+ var token = this.peek(e1, e2, e3, e4);
+ if (token) {
+ this.tokens.shift();
+ return token;
+ }
+ return false;
+ },
+
+
+ /* `undefined` is not a constant, it is an identifier,
+ * but using it as an identifier is not supported
+ */
+ constants: {
+ 'true': { type: AST.Literal, value: true },
+ 'false': { type: AST.Literal, value: false },
+ 'null': { type: AST.Literal, value: null },
+ 'undefined': {type: AST.Literal, value: undefined },
+ 'this': {type: AST.ThisExpression }
+ }
+};
+
+function ifDefined(v, d) {
+ return typeof v !== 'undefined' ? v : d;
+}
+
+function plusFn(l, r) {
+ if (typeof l === 'undefined') return r;
+ if (typeof r === 'undefined') return l;
+ return l + r;
+}
+
+function isStateless($filter, filterName) {
+ var fn = $filter(filterName);
+ return !fn.$stateful;
+}
+
+function findConstantAndWatchExpressions(ast, $filter) {
+ var allConstants;
+ var argsToWatch;
+ switch (ast.type) {
+ case AST.Program:
+ allConstants = true;
+ forEach(ast.body, function(expr) {
+ findConstantAndWatchExpressions(expr.expression, $filter);
+ allConstants = allConstants && expr.expression.constant;
+ });
+ ast.constant = allConstants;
+ break;
+ case AST.Literal:
+ ast.constant = true;
+ ast.toWatch = [];
+ break;
+ case AST.UnaryExpression:
+ findConstantAndWatchExpressions(ast.argument, $filter);
+ ast.constant = ast.argument.constant;
+ ast.toWatch = ast.argument.toWatch;
+ break;
+ case AST.BinaryExpression:
+ findConstantAndWatchExpressions(ast.left, $filter);
+ findConstantAndWatchExpressions(ast.right, $filter);
+ ast.constant = ast.left.constant && ast.right.constant;
+ ast.toWatch = ast.left.toWatch.concat(ast.right.toWatch);
+ break;
+ case AST.LogicalExpression:
+ findConstantAndWatchExpressions(ast.left, $filter);
+ findConstantAndWatchExpressions(ast.right, $filter);
+ ast.constant = ast.left.constant && ast.right.constant;
+ ast.toWatch = ast.constant ? [] : [ast];
+ break;
+ case AST.ConditionalExpression:
+ findConstantAndWatchExpressions(ast.test, $filter);
+ findConstantAndWatchExpressions(ast.alternate, $filter);
+ findConstantAndWatchExpressions(ast.consequent, $filter);
+ ast.constant = ast.test.constant && ast.alternate.constant && ast.consequent.constant;
+ ast.toWatch = ast.constant ? [] : [ast];
+ break;
+ case AST.Identifier:
+ ast.constant = false;
+ ast.toWatch = [ast];
+ break;
+ case AST.MemberExpression:
+ findConstantAndWatchExpressions(ast.object, $filter);
+ if (ast.computed) {
+ findConstantAndWatchExpressions(ast.property, $filter);
+ }
+ ast.constant = ast.object.constant && (!ast.computed || ast.property.constant);
+ ast.toWatch = [ast];
+ break;
+ case AST.CallExpression:
+ allConstants = ast.filter ? isStateless($filter, ast.callee.name) : false;
+ argsToWatch = [];
+ forEach(ast.arguments, function(expr) {
+ findConstantAndWatchExpressions(expr, $filter);
+ allConstants = allConstants && expr.constant;
+ if (!expr.constant) {
+ argsToWatch.push.apply(argsToWatch, expr.toWatch);
+ }
+ });
+ ast.constant = allConstants;
+ ast.toWatch = ast.filter && isStateless($filter, ast.callee.name) ? argsToWatch : [ast];
+ break;
+ case AST.AssignmentExpression:
+ findConstantAndWatchExpressions(ast.left, $filter);
+ findConstantAndWatchExpressions(ast.right, $filter);
+ ast.constant = ast.left.constant && ast.right.constant;
+ ast.toWatch = [ast];
+ break;
+ case AST.ArrayExpression:
+ allConstants = true;
+ argsToWatch = [];
+ forEach(ast.elements, function(expr) {
+ findConstantAndWatchExpressions(expr, $filter);
+ allConstants = allConstants && expr.constant;
+ if (!expr.constant) {
+ argsToWatch.push.apply(argsToWatch, expr.toWatch);
+ }
+ });
+ ast.constant = allConstants;
+ ast.toWatch = argsToWatch;
+ break;
+ case AST.ObjectExpression:
+ allConstants = true;
+ argsToWatch = [];
+ forEach(ast.properties, function(property) {
+ findConstantAndWatchExpressions(property.value, $filter);
+ allConstants = allConstants && property.value.constant;
+ if (!property.value.constant) {
+ argsToWatch.push.apply(argsToWatch, property.value.toWatch);
+ }
+ });
+ ast.constant = allConstants;
+ ast.toWatch = argsToWatch;
+ break;
+ case AST.ThisExpression:
+ ast.constant = false;
+ ast.toWatch = [];
+ break;
+ }
+}
+
+function getInputs(body) {
+ if (body.length != 1) return;
+ var lastExpression = body[0].expression;
+ var candidate = lastExpression.toWatch;
+ if (candidate.length !== 1) return candidate;
+ return candidate[0] !== lastExpression ? candidate : undefined;
+}
+
+function isAssignable(ast) {
+ return ast.type === AST.Identifier || ast.type === AST.MemberExpression;
+}
+
+function assignableAST(ast) {
+ if (ast.body.length === 1 && isAssignable(ast.body[0].expression)) {
+ return {type: AST.AssignmentExpression, left: ast.body[0].expression, right: {type: AST.NGValueParameter}, operator: '='};
+ }
+}
+
+function isLiteral(ast) {
+ return ast.body.length === 0 ||
+ ast.body.length === 1 && (
+ ast.body[0].expression.type === AST.Literal ||
+ ast.body[0].expression.type === AST.ArrayExpression ||
+ ast.body[0].expression.type === AST.ObjectExpression);
+}
+
+function isConstant(ast) {
+ return ast.constant;
+}
+
+function ASTCompiler(astBuilder, $filter) {
+ this.astBuilder = astBuilder;
+ this.$filter = $filter;
+}
+
+ASTCompiler.prototype = {
+ compile: function(expression, expensiveChecks) {
+ var self = this;
+ var ast = this.astBuilder.ast(expression);
+ this.state = {
+ nextId: 0,
+ filters: {},
+ expensiveChecks: expensiveChecks,
+ fn: {vars: [], body: [], own: {}},
+ assign: {vars: [], body: [], own: {}},
+ inputs: []
+ };
+ findConstantAndWatchExpressions(ast, self.$filter);
+ var extra = '';
+ var assignable;
+ this.stage = 'assign';
+ if ((assignable = assignableAST(ast))) {
+ this.state.computing = 'assign';
+ var result = this.nextId();
+ this.recurse(assignable, result);
+ extra = 'fn.assign=' + this.generateFunction('assign', 's,v,l');
+ }
+ var toWatch = getInputs(ast.body);
+ self.stage = 'inputs';
+ forEach(toWatch, function(watch, key) {
+ var fnKey = 'fn' + key;
+ self.state[fnKey] = {vars: [], body: [], own: {}};
+ self.state.computing = fnKey;
+ var intoId = self.nextId();
+ self.recurse(watch, intoId);
+ self.return_(intoId);
+ self.state.inputs.push(fnKey);
+ watch.watchId = key;
+ });
+ this.state.computing = 'fn';
+ this.stage = 'main';
+ this.recurse(ast);
+ var fnString =
+ // The build and minification steps remove the string "use strict" from the code, but this is done using a regex.
+ // This is a workaround for this until we do a better job at only removing the prefix only when we should.
+ '"' + this.USE + ' ' + this.STRICT + '";\n' +
+ this.filterPrefix() +
+ 'var fn=' + this.generateFunction('fn', 's,l,a,i') +
+ extra +
+ this.watchFns() +
+ 'return fn;';
+
+ /* jshint -W054 */
+ var fn = (new Function('$filter',
+ 'ensureSafeMemberName',
+ 'ensureSafeObject',
+ 'ensureSafeFunction',
+ 'ifDefined',
+ 'plus',
+ 'text',
+ fnString))(
+ this.$filter,
+ ensureSafeMemberName,
+ ensureSafeObject,
+ ensureSafeFunction,
+ ifDefined,
+ plusFn,
+ expression);
+ /* jshint +W054 */
+ this.state = this.stage = undefined;
+ fn.literal = isLiteral(ast);
+ fn.constant = isConstant(ast);
+ return fn;
+ },
+
+ USE: 'use',
+
+ STRICT: 'strict',
+
+ watchFns: function() {
+ var result = [];
+ var fns = this.state.inputs;
+ var self = this;
+ forEach(fns, function(name) {
+ result.push('var ' + name + '=' + self.generateFunction(name, 's'));
+ });
+ if (fns.length) {
+ result.push('fn.inputs=[' + fns.join(',') + '];');
+ }
+ return result.join('');
+ },
+
+ generateFunction: function(name, params) {
+ return 'function(' + params + '){' +
+ this.varsPrefix(name) +
+ this.body(name) +
+ '};';
+ },
+
+ filterPrefix: function() {
+ var parts = [];
+ var self = this;
+ forEach(this.state.filters, function(id, filter) {
+ parts.push(id + '=$filter(' + self.escape(filter) + ')');
+ });
+ if (parts.length) return 'var ' + parts.join(',') + ';';
+ return '';
+ },
+
+ varsPrefix: function(section) {
+ return this.state[section].vars.length ? 'var ' + this.state[section].vars.join(',') + ';' : '';
+ },
+
+ body: function(section) {
+ return this.state[section].body.join('');
+ },
+
+ recurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) {
+ var left, right, self = this, args, expression;
+ recursionFn = recursionFn || noop;
+ if (!skipWatchIdCheck && isDefined(ast.watchId)) {
+ intoId = intoId || this.nextId();
+ this.if_('i',
+ this.lazyAssign(intoId, this.computedMember('i', ast.watchId)),
+ this.lazyRecurse(ast, intoId, nameId, recursionFn, create, true)
+ );
+ return;
+ }
+ switch (ast.type) {
+ case AST.Program:
+ forEach(ast.body, function(expression, pos) {
+ self.recurse(expression.expression, undefined, undefined, function(expr) { right = expr; });
+ if (pos !== ast.body.length - 1) {
+ self.current().body.push(right, ';');
+ } else {
+ self.return_(right);
+ }
+ });
+ break;
+ case AST.Literal:
+ expression = this.escape(ast.value);
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.UnaryExpression:
+ this.recurse(ast.argument, undefined, undefined, function(expr) { right = expr; });
+ expression = ast.operator + '(' + this.ifDefined(right, 0) + ')';
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.BinaryExpression:
+ this.recurse(ast.left, undefined, undefined, function(expr) { left = expr; });
+ this.recurse(ast.right, undefined, undefined, function(expr) { right = expr; });
+ if (ast.operator === '+') {
+ expression = this.plus(left, right);
+ } else if (ast.operator === '-') {
+ expression = this.ifDefined(left, 0) + ast.operator + this.ifDefined(right, 0);
+ } else {
+ expression = '(' + left + ')' + ast.operator + '(' + right + ')';
+ }
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.LogicalExpression:
+ intoId = intoId || this.nextId();
+ self.recurse(ast.left, intoId);
+ self.if_(ast.operator === '&&' ? intoId : self.not(intoId), self.lazyRecurse(ast.right, intoId));
+ recursionFn(intoId);
+ break;
+ case AST.ConditionalExpression:
+ intoId = intoId || this.nextId();
+ self.recurse(ast.test, intoId);
+ self.if_(intoId, self.lazyRecurse(ast.alternate, intoId), self.lazyRecurse(ast.consequent, intoId));
+ recursionFn(intoId);
+ break;
+ case AST.Identifier:
+ intoId = intoId || this.nextId();
+ if (nameId) {
+ nameId.context = self.stage === 'inputs' ? 's' : this.assign(this.nextId(), this.getHasOwnProperty('l', ast.name) + '?l:s');
+ nameId.computed = false;
+ nameId.name = ast.name;
+ }
+ ensureSafeMemberName(ast.name);
+ self.if_(self.stage === 'inputs' || self.not(self.getHasOwnProperty('l', ast.name)),
+ function() {
+ self.if_(self.stage === 'inputs' || 's', function() {
+ if (create && create !== 1) {
+ self.if_(
+ self.not(self.nonComputedMember('s', ast.name)),
+ self.lazyAssign(self.nonComputedMember('s', ast.name), '{}'));
+ }
+ self.assign(intoId, self.nonComputedMember('s', ast.name));
+ });
+ }, intoId && self.lazyAssign(intoId, self.nonComputedMember('l', ast.name))
+ );
+ if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.name)) {
+ self.addEnsureSafeObject(intoId);
+ }
+ recursionFn(intoId);
+ break;
+ case AST.MemberExpression:
+ left = nameId && (nameId.context = this.nextId()) || this.nextId();
+ intoId = intoId || this.nextId();
+ self.recurse(ast.object, left, undefined, function() {
+ self.if_(self.notNull(left), function() {
+ if (ast.computed) {
+ right = self.nextId();
+ self.recurse(ast.property, right);
+ self.addEnsureSafeMemberName(right);
+ if (create && create !== 1) {
+ self.if_(self.not(self.computedMember(left, right)), self.lazyAssign(self.computedMember(left, right), '{}'));
+ }
+ expression = self.ensureSafeObject(self.computedMember(left, right));
+ self.assign(intoId, expression);
+ if (nameId) {
+ nameId.computed = true;
+ nameId.name = right;
+ }
+ } else {
+ ensureSafeMemberName(ast.property.name);
+ if (create && create !== 1) {
+ self.if_(self.not(self.nonComputedMember(left, ast.property.name)), self.lazyAssign(self.nonComputedMember(left, ast.property.name), '{}'));
+ }
+ expression = self.nonComputedMember(left, ast.property.name);
+ if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.property.name)) {
+ expression = self.ensureSafeObject(expression);
+ }
+ self.assign(intoId, expression);
+ if (nameId) {
+ nameId.computed = false;
+ nameId.name = ast.property.name;
+ }
+ }
+ }, function() {
+ self.assign(intoId, 'undefined');
+ });
+ recursionFn(intoId);
+ }, !!create);
+ break;
+ case AST.CallExpression:
+ intoId = intoId || this.nextId();
+ if (ast.filter) {
+ right = self.filter(ast.callee.name);
+ args = [];
+ forEach(ast.arguments, function(expr) {
+ var argument = self.nextId();
+ self.recurse(expr, argument);
+ args.push(argument);
+ });
+ expression = right + '(' + args.join(',') + ')';
+ self.assign(intoId, expression);
+ recursionFn(intoId);
+ } else {
+ right = self.nextId();
+ left = {};
+ args = [];
+ self.recurse(ast.callee, right, left, function() {
+ self.if_(self.notNull(right), function() {
+ self.addEnsureSafeFunction(right);
+ forEach(ast.arguments, function(expr) {
+ self.recurse(expr, self.nextId(), undefined, function(argument) {
+ args.push(self.ensureSafeObject(argument));
+ });
+ });
+ if (left.name) {
+ if (!self.state.expensiveChecks) {
+ self.addEnsureSafeObject(left.context);
+ }
+ expression = self.member(left.context, left.name, left.computed) + '(' + args.join(',') + ')';
+ } else {
+ expression = right + '(' + args.join(',') + ')';
+ }
+ expression = self.ensureSafeObject(expression);
+ self.assign(intoId, expression);
+ }, function() {
+ self.assign(intoId, 'undefined');
+ });
+ recursionFn(intoId);
+ });
+ }
+ break;
+ case AST.AssignmentExpression:
+ right = this.nextId();
+ left = {};
+ if (!isAssignable(ast.left)) {
+ throw $parseMinErr('lval', 'Trying to assing a value to a non l-value');
+ }
+ this.recurse(ast.left, undefined, left, function() {
+ self.if_(self.notNull(left.context), function() {
+ self.recurse(ast.right, right);
+ self.addEnsureSafeObject(self.member(left.context, left.name, left.computed));
+ expression = self.member(left.context, left.name, left.computed) + ast.operator + right;
+ self.assign(intoId, expression);
+ recursionFn(intoId || expression);
+ });
+ }, 1);
+ break;
+ case AST.ArrayExpression:
+ args = [];
+ forEach(ast.elements, function(expr) {
+ self.recurse(expr, self.nextId(), undefined, function(argument) {
+ args.push(argument);
+ });
+ });
+ expression = '[' + args.join(',') + ']';
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.ObjectExpression:
+ args = [];
+ forEach(ast.properties, function(property) {
+ self.recurse(property.value, self.nextId(), undefined, function(expr) {
+ args.push(self.escape(
+ property.key.type === AST.Identifier ? property.key.name :
+ ('' + property.key.value)) +
+ ':' + expr);
+ });
+ });
+ expression = '{' + args.join(',') + '}';
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.ThisExpression:
+ this.assign(intoId, 's');
+ recursionFn('s');
+ break;
+ case AST.NGValueParameter:
+ this.assign(intoId, 'v');
+ recursionFn('v');
+ break;
+ }
+ },
+
+ getHasOwnProperty: function(element, property) {
+ var key = element + '.' + property;
+ var own = this.current().own;
+ if (!own.hasOwnProperty(key)) {
+ own[key] = this.nextId(false, element + '&&(' + this.escape(property) + ' in ' + element + ')');
+ }
+ return own[key];
+ },
+
+ assign: function(id, value) {
+ if (!id) return;
+ this.current().body.push(id, '=', value, ';');
+ return id;
+ },
+
+ filter: function(filterName) {
+ if (!this.state.filters.hasOwnProperty(filterName)) {
+ this.state.filters[filterName] = this.nextId(true);
+ }
+ return this.state.filters[filterName];
+ },
+
+ ifDefined: function(id, defaultValue) {
+ return 'ifDefined(' + id + ',' + this.escape(defaultValue) + ')';
+ },
+
+ plus: function(left, right) {
+ return 'plus(' + left + ',' + right + ')';
+ },
+
+ return_: function(id) {
+ this.current().body.push('return ', id, ';');
+ },
+
+ if_: function(test, alternate, consequent) {
+ if (test === true) {
+ alternate();
+ } else {
+ var body = this.current().body;
+ body.push('if(', test, '){');
+ alternate();
+ body.push('}');
+ if (consequent) {
+ body.push('else{');
+ consequent();
+ body.push('}');
+ }
+ }
+ },
+
+ not: function(expression) {
+ return '!(' + expression + ')';
+ },
+
+ notNull: function(expression) {
+ return expression + '!=null';
+ },
+
+ nonComputedMember: function(left, right) {
+ return left + '.' + right;
+ },
+
+ computedMember: function(left, right) {
+ return left + '[' + right + ']';
+ },
+
+ member: function(left, right, computed) {
+ if (computed) return this.computedMember(left, right);
+ return this.nonComputedMember(left, right);
+ },
+
+ addEnsureSafeObject: function(item) {
+ this.current().body.push(this.ensureSafeObject(item), ';');
+ },
+
+ addEnsureSafeMemberName: function(item) {
+ this.current().body.push(this.ensureSafeMemberName(item), ';');
+ },
+
+ addEnsureSafeFunction: function(item) {
+ this.current().body.push(this.ensureSafeFunction(item), ';');
+ },
+
+ ensureSafeObject: function(item) {
+ return 'ensureSafeObject(' + item + ',text)';
+ },
+
+ ensureSafeMemberName: function(item) {
+ return 'ensureSafeMemberName(' + item + ',text)';
+ },
+
+ ensureSafeFunction: function(item) {
+ return 'ensureSafeFunction(' + item + ',text)';
+ },
+
+ lazyRecurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) {
+ var self = this;
+ return function() {
+ self.recurse(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck);
+ };
+ },
+
+ lazyAssign: function(id, value) {
+ var self = this;
+ return function() {
+ self.assign(id, value);
+ };
+ },
+
+ stringEscapeRegex: /[^ a-zA-Z0-9]/g,
+
+ stringEscapeFn: function(c) {
+ return '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4);
+ },
+
+ escape: function(value) {
+ if (isString(value)) return "'" + value.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
+ if (isNumber(value)) return value.toString();
+ if (value === true) return 'true';
+ if (value === false) return 'false';
+ if (value === null) return 'null';
+ if (typeof value === 'undefined') return 'undefined';
+
+ throw $parseMinErr('esc', 'IMPOSSIBLE');
+ },
+
+ nextId: function(skip, init) {
+ var id = 'v' + (this.state.nextId++);
+ if (!skip) {
+ this.current().vars.push(id + (init ? '=' + init : ''));
+ }
+ return id;
+ },
+
+ current: function() {
+ return this.state[this.state.computing];
+ }
+};
+
+
+function ASTInterpreter(astBuilder, $filter) {
+ this.astBuilder = astBuilder;
+ this.$filter = $filter;
+}
+
+ASTInterpreter.prototype = {
+ compile: function(expression, expensiveChecks) {
+ var self = this;
+ var ast = this.astBuilder.ast(expression);
+ this.expression = expression;
+ this.expensiveChecks = expensiveChecks;
+ findConstantAndWatchExpressions(ast, self.$filter);
+ var assignable;
+ var assign;
+ if ((assignable = assignableAST(ast))) {
+ assign = this.recurse(assignable);
+ }
+ var toWatch = getInputs(ast.body);
+ var inputs;
+ if (toWatch) {
+ inputs = [];
+ forEach(toWatch, function(watch, key) {
+ var input = self.recurse(watch);
+ watch.input = input;
+ inputs.push(input);
+ watch.watchId = key;
+ });
+ }
+ var expressions = [];
+ forEach(ast.body, function(expression) {
+ expressions.push(self.recurse(expression.expression));
+ });
+ var fn = ast.body.length === 0 ? function() {} :
+ ast.body.length === 1 ? expressions[0] :
+ function(scope, locals) {
+ var lastValue;
+ forEach(expressions, function(exp) {
+ lastValue = exp(scope, locals);
+ });
+ return lastValue;
+ };
+ if (assign) {
+ fn.assign = function(scope, value, locals) {
+ return assign(scope, locals, value);
+ };
+ }
+ if (inputs) {
+ fn.inputs = inputs;
+ }
+ fn.literal = isLiteral(ast);
+ fn.constant = isConstant(ast);
+ return fn;
+ },
+
+ recurse: function(ast, context, create) {
+ var left, right, self = this, args, expression;
+ if (ast.input) {
+ return this.inputs(ast.input, ast.watchId);
+ }
+ switch (ast.type) {
+ case AST.Literal:
+ return this.value(ast.value, context);
+ case AST.UnaryExpression:
+ right = this.recurse(ast.argument);
+ return this['unary' + ast.operator](right, context);
+ case AST.BinaryExpression:
+ left = this.recurse(ast.left);
+ right = this.recurse(ast.right);
+ return this['binary' + ast.operator](left, right, context);
+ case AST.LogicalExpression:
+ left = this.recurse(ast.left);
+ right = this.recurse(ast.right);
+ return this['binary' + ast.operator](left, right, context);
+ case AST.ConditionalExpression:
+ return this['ternary?:'](
+ this.recurse(ast.test),
+ this.recurse(ast.alternate),
+ this.recurse(ast.consequent),
+ context
+ );
+ case AST.Identifier:
+ ensureSafeMemberName(ast.name, self.expression);
+ return self.identifier(ast.name,
+ self.expensiveChecks || isPossiblyDangerousMemberName(ast.name),
+ context, create, self.expression);
+ case AST.MemberExpression:
+ left = this.recurse(ast.object, false, !!create);
+ if (!ast.computed) {
+ ensureSafeMemberName(ast.property.name, self.expression);
+ right = ast.property.name;
+ }
+ if (ast.computed) right = this.recurse(ast.property);
+ return ast.computed ?
+ this.computedMember(left, right, context, create, self.expression) :
+ this.nonComputedMember(left, right, self.expensiveChecks, context, create, self.expression);
+ case AST.CallExpression:
+ args = [];
+ forEach(ast.arguments, function(expr) {
+ args.push(self.recurse(expr));
+ });
+ if (ast.filter) right = this.$filter(ast.callee.name);
+ if (!ast.filter) right = this.recurse(ast.callee, true);
+ return ast.filter ?
+ function(scope, locals, assign, inputs) {
+ var values = [];
+ for (var i = 0; i < args.length; ++i) {
+ values.push(args[i](scope, locals, assign, inputs));
+ }
+ var value = right.apply(undefined, values, inputs);
+ return context ? {context: undefined, name: undefined, value: value} : value;
+ } :
+ function(scope, locals, assign, inputs) {
+ var rhs = right(scope, locals, assign, inputs);
+ var value;
+ if (rhs.value != null) {
+ ensureSafeObject(rhs.context, self.expression);
+ ensureSafeFunction(rhs.value, self.expression);
+ var values = [];
+ for (var i = 0; i < args.length; ++i) {
+ values.push(ensureSafeObject(args[i](scope, locals, assign, inputs), self.expression));
+ }
+ value = ensureSafeObject(rhs.value.apply(rhs.context, values), self.expression);
+ }
+ return context ? {value: value} : value;
+ };
+ case AST.AssignmentExpression:
+ left = this.recurse(ast.left, true, 1);
+ right = this.recurse(ast.right);
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ var rhs = right(scope, locals, assign, inputs);
+ ensureSafeObject(lhs.value, self.expression);
+ lhs.context[lhs.name] = rhs;
+ return context ? {value: rhs} : rhs;
+ };
+ case AST.ArrayExpression:
+ args = [];
+ forEach(ast.elements, function(expr) {
+ args.push(self.recurse(expr));
+ });
+ return function(scope, locals, assign, inputs) {
+ var value = [];
+ for (var i = 0; i < args.length; ++i) {
+ value.push(args[i](scope, locals, assign, inputs));
+ }
+ return context ? {value: value} : value;
+ };
+ case AST.ObjectExpression:
+ args = [];
+ forEach(ast.properties, function(property) {
+ args.push({key: property.key.type === AST.Identifier ?
+ property.key.name :
+ ('' + property.key.value),
+ value: self.recurse(property.value)
+ });
+ });
+ return function(scope, locals, assign, inputs) {
+ var value = {};
+ for (var i = 0; i < args.length; ++i) {
+ value[args[i].key] = args[i].value(scope, locals, assign, inputs);
+ }
+ return context ? {value: value} : value;
+ };
+ case AST.ThisExpression:
+ return function(scope) {
+ return context ? {value: scope} : scope;
+ };
+ case AST.NGValueParameter:
+ return function(scope, locals, assign, inputs) {
+ return context ? {value: assign} : assign;
+ };
+ }
+ },
+
+ 'unary+': function(argument, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = argument(scope, locals, assign, inputs);
+ if (isDefined(arg)) {
+ arg = +arg;
+ } else {
+ arg = 0;
+ }
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'unary-': function(argument, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = argument(scope, locals, assign, inputs);
+ if (isDefined(arg)) {
+ arg = -arg;
+ } else {
+ arg = 0;
+ }
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'unary!': function(argument, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = !argument(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary+': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ var rhs = right(scope, locals, assign, inputs);
+ var arg = plusFn(lhs, rhs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary-': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ var rhs = right(scope, locals, assign, inputs);
+ var arg = (isDefined(lhs) ? lhs : 0) - (isDefined(rhs) ? rhs : 0);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary*': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) * right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary/': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) / right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary%': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) % right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary===': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) === right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary!==': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) !== right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary==': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) == right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary!=': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) != right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary<': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) < right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary>': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) > right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary<=': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) <= right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary>=': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) >= right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary&&': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) && right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary||': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) || right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'ternary?:': function(test, alternate, consequent, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = test(scope, locals, assign, inputs) ? alternate(scope, locals, assign, inputs) : consequent(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ value: function(value, context) {
+ return function() { return context ? {context: undefined, name: undefined, value: value} : value; };
+ },
+ identifier: function(name, expensiveChecks, context, create, expression) {
+ return function(scope, locals, assign, inputs) {
+ var base = locals && (name in locals) ? locals : scope;
+ if (create && create !== 1 && base && !(base[name])) {
+ base[name] = {};
+ }
+ var value = base ? base[name] : undefined;
+ if (expensiveChecks) {
+ ensureSafeObject(value, expression);
+ }
+ if (context) {
+ return {context: base, name: name, value: value};
+ } else {
+ return value;
+ }
+ };
+ },
+ computedMember: function(left, right, context, create, expression) {
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ var rhs;
+ var value;
+ if (lhs != null) {
+ rhs = right(scope, locals, assign, inputs);
+ ensureSafeMemberName(rhs, expression);
+ if (create && create !== 1 && lhs && !(lhs[rhs])) {
+ lhs[rhs] = {};
+ }
+ value = lhs[rhs];
+ ensureSafeObject(value, expression);
+ }
+ if (context) {
+ return {context: lhs, name: rhs, value: value};
+ } else {
+ return value;
+ }
+ };
+ },
+ nonComputedMember: function(left, right, expensiveChecks, context, create, expression) {
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ if (create && create !== 1 && lhs && !(lhs[right])) {
+ lhs[right] = {};
+ }
+ var value = lhs != null ? lhs[right] : undefined;
+ if (expensiveChecks || isPossiblyDangerousMemberName(right)) {
+ ensureSafeObject(value, expression);
+ }
+ if (context) {
+ return {context: lhs, name: right, value: value};
+ } else {
+ return value;
+ }
+ };
+ },
+ inputs: function(input, watchId) {
+ return function(scope, value, locals, inputs) {
+ if (inputs) return inputs[watchId];
+ return input(scope, value, locals);
+ };
+ }
+};
+
+/**
+ * @constructor
+ */
+var Parser = function(lexer, $filter, options) {
+ this.lexer = lexer;
+ this.$filter = $filter;
+ this.options = options;
+ this.ast = new AST(this.lexer);
+ this.astCompiler = options.csp ? new ASTInterpreter(this.ast, $filter) :
+ new ASTCompiler(this.ast, $filter);
+};
+
+Parser.prototype = {
+ constructor: Parser,
+
+ parse: function(text) {
+ return this.astCompiler.compile(text, this.options.expensiveChecks);
+ }
+};
+
+var getterFnCacheDefault = createMap();
+var getterFnCacheExpensive = createMap();
+
+function isPossiblyDangerousMemberName(name) {
+ return name == 'constructor';
+}
+
+var objectValueOf = Object.prototype.valueOf;
+
+function getValueOf(value) {
+ return isFunction(value.valueOf) ? value.valueOf() : objectValueOf.call(value);
+}
+
+///////////////////////////////////
+
+/**
+ * @ngdoc service
+ * @name $parse
+ * @kind function
+ *
+ * @description
+ *
+ * Converts Angular {@link guide/expression expression} into a function.
+ *
+ * ```js
+ * var getter = $parse('user.name');
+ * var setter = getter.assign;
+ * var context = {user:{name:'angular'}};
+ * var locals = {user:{name:'local'}};
+ *
+ * expect(getter(context)).toEqual('angular');
+ * setter(context, 'newValue');
+ * expect(context.user.name).toEqual('newValue');
+ * expect(getter(context, locals)).toEqual('local');
+ * ```
+ *
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ *
+ * The returned function also has the following properties:
+ * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript
+ * literal.
+ * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript
+ * constant literals.
+ * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be
+ * set to a function to change its value on the given context.
+ *
+ */
+
+
+/**
+ * @ngdoc provider
+ * @name $parseProvider
+ *
+ * @description
+ * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}
+ * service.
+ */
+function $ParseProvider() {
+ var cacheDefault = createMap();
+ var cacheExpensive = createMap();
+
+ this.$get = ['$filter', function($filter) {
+ var noUnsafeEval = csp().noUnsafeEval;
+ var $parseOptions = {
+ csp: noUnsafeEval,
+ expensiveChecks: false
+ },
+ $parseOptionsExpensive = {
+ csp: noUnsafeEval,
+ expensiveChecks: true
+ };
+
+ return function $parse(exp, interceptorFn, expensiveChecks) {
+ var parsedExpression, oneTime, cacheKey;
+
+ switch (typeof exp) {
+ case 'string':
+ exp = exp.trim();
+ cacheKey = exp;
+
+ var cache = (expensiveChecks ? cacheExpensive : cacheDefault);
+ parsedExpression = cache[cacheKey];
+
+ if (!parsedExpression) {
+ if (exp.charAt(0) === ':' && exp.charAt(1) === ':') {
+ oneTime = true;
+ exp = exp.substring(2);
+ }
+ var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions;
+ var lexer = new Lexer(parseOptions);
+ var parser = new Parser(lexer, $filter, parseOptions);
+ parsedExpression = parser.parse(exp);
+ if (parsedExpression.constant) {
+ parsedExpression.$$watchDelegate = constantWatchDelegate;
+ } else if (oneTime) {
+ parsedExpression.$$watchDelegate = parsedExpression.literal ?
+ oneTimeLiteralWatchDelegate : oneTimeWatchDelegate;
+ } else if (parsedExpression.inputs) {
+ parsedExpression.$$watchDelegate = inputsWatchDelegate;
+ }
+ cache[cacheKey] = parsedExpression;
+ }
+ return addInterceptor(parsedExpression, interceptorFn);
+
+ case 'function':
+ return addInterceptor(exp, interceptorFn);
+
+ default:
+ return noop;
+ }
+ };
+
+ function expressionInputDirtyCheck(newValue, oldValueOfValue) {
+
+ if (newValue == null || oldValueOfValue == null) { // null/undefined
+ return newValue === oldValueOfValue;
+ }
+
+ if (typeof newValue === 'object') {
+
+ // attempt to convert the value to a primitive type
+ // TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can
+ // be cheaply dirty-checked
+ newValue = getValueOf(newValue);
+
+ if (typeof newValue === 'object') {
+ // objects/arrays are not supported - deep-watching them would be too expensive
+ return false;
+ }
+
+ // fall-through to the primitive equality check
+ }
+
+ //Primitive or NaN
+ return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue);
+ }
+
+ function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression, prettyPrintExpression) {
+ var inputExpressions = parsedExpression.inputs;
+ var lastResult;
+
+ if (inputExpressions.length === 1) {
+ var oldInputValueOf = expressionInputDirtyCheck; // init to something unique so that equals check fails
+ inputExpressions = inputExpressions[0];
+ return scope.$watch(function expressionInputWatch(scope) {
+ var newInputValue = inputExpressions(scope);
+ if (!expressionInputDirtyCheck(newInputValue, oldInputValueOf)) {
+ lastResult = parsedExpression(scope, undefined, undefined, [newInputValue]);
+ oldInputValueOf = newInputValue && getValueOf(newInputValue);
+ }
+ return lastResult;
+ }, listener, objectEquality, prettyPrintExpression);
+ }
+
+ var oldInputValueOfValues = [];
+ var oldInputValues = [];
+ for (var i = 0, ii = inputExpressions.length; i < ii; i++) {
+ oldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails
+ oldInputValues[i] = null;
+ }
+
+ return scope.$watch(function expressionInputsWatch(scope) {
+ var changed = false;
+
+ for (var i = 0, ii = inputExpressions.length; i < ii; i++) {
+ var newInputValue = inputExpressions[i](scope);
+ if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i]))) {
+ oldInputValues[i] = newInputValue;
+ oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue);
+ }
+ }
+
+ if (changed) {
+ lastResult = parsedExpression(scope, undefined, undefined, oldInputValues);
+ }
+
+ return lastResult;
+ }, listener, objectEquality, prettyPrintExpression);
+ }
+
+ function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression) {
+ var unwatch, lastValue;
+ return unwatch = scope.$watch(function oneTimeWatch(scope) {
+ return parsedExpression(scope);
+ }, function oneTimeListener(value, old, scope) {
+ lastValue = value;
+ if (isFunction(listener)) {
+ listener.apply(this, arguments);
+ }
+ if (isDefined(value)) {
+ scope.$$postDigest(function() {
+ if (isDefined(lastValue)) {
+ unwatch();
+ }
+ });
+ }
+ }, objectEquality);
+ }
+
+ function oneTimeLiteralWatchDelegate(scope, listener, objectEquality, parsedExpression) {
+ var unwatch, lastValue;
+ return unwatch = scope.$watch(function oneTimeWatch(scope) {
+ return parsedExpression(scope);
+ }, function oneTimeListener(value, old, scope) {
+ lastValue = value;
+ if (isFunction(listener)) {
+ listener.call(this, value, old, scope);
+ }
+ if (isAllDefined(value)) {
+ scope.$$postDigest(function() {
+ if (isAllDefined(lastValue)) unwatch();
+ });
+ }
+ }, objectEquality);
+
+ function isAllDefined(value) {
+ var allDefined = true;
+ forEach(value, function(val) {
+ if (!isDefined(val)) allDefined = false;
+ });
+ return allDefined;
+ }
+ }
+
+ function constantWatchDelegate(scope, listener, objectEquality, parsedExpression) {
+ var unwatch;
+ return unwatch = scope.$watch(function constantWatch(scope) {
+ return parsedExpression(scope);
+ }, function constantListener(value, old, scope) {
+ if (isFunction(listener)) {
+ listener.apply(this, arguments);
+ }
+ unwatch();
+ }, objectEquality);
+ }
+
+ function addInterceptor(parsedExpression, interceptorFn) {
+ if (!interceptorFn) return parsedExpression;
+ var watchDelegate = parsedExpression.$$watchDelegate;
+
+ var regularWatch =
+ watchDelegate !== oneTimeLiteralWatchDelegate &&
+ watchDelegate !== oneTimeWatchDelegate;
+
+ var fn = regularWatch ? function regularInterceptedExpression(scope, locals, assign, inputs) {
+ var value = parsedExpression(scope, locals, assign, inputs);
+ return interceptorFn(value, scope, locals);
+ } : function oneTimeInterceptedExpression(scope, locals, assign, inputs) {
+ var value = parsedExpression(scope, locals, assign, inputs);
+ var result = interceptorFn(value, scope, locals);
+ // we only return the interceptor's result if the
+ // initial value is defined (for bind-once)
+ return isDefined(value) ? result : value;
+ };
+
+ // Propagate $$watchDelegates other then inputsWatchDelegate
+ if (parsedExpression.$$watchDelegate &&
+ parsedExpression.$$watchDelegate !== inputsWatchDelegate) {
+ fn.$$watchDelegate = parsedExpression.$$watchDelegate;
+ } else if (!interceptorFn.$stateful) {
+ // If there is an interceptor, but no watchDelegate then treat the interceptor like
+ // we treat filters - it is assumed to be a pure function unless flagged with $stateful
+ fn.$$watchDelegate = inputsWatchDelegate;
+ fn.inputs = parsedExpression.inputs ? parsedExpression.inputs : [parsedExpression];
+ }
+
+ return fn;
+ }
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $q
+ * @requires $rootScope
+ *
+ * @description
+ * A service that helps you run functions asynchronously, and use their return values (or exceptions)
+ * when they are done processing.
+ *
+ * This is an implementation of promises/deferred objects inspired by
+ * [Kris Kowal's Q](https://github.com/kriskowal/q).
+ *
+ * $q can be used in two fashions --- one which is more similar to Kris Kowal's Q or jQuery's Deferred
+ * implementations, and the other which resembles ES6 promises to some degree.
+ *
+ * # $q constructor
+ *
+ * The streamlined ES6 style promise is essentially just using $q as a constructor which takes a `resolver`
+ * function as the first argument. This is similar to the native Promise implementation from ES6 Harmony,
+ * see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).
+ *
+ * While the constructor-style use is supported, not all of the supporting methods from ES6 Harmony promises are
+ * available yet.
+ *
+ * It can be used like so:
+ *
+ * ```js
+ * // for the purpose of this example let's assume that variables `$q` and `okToGreet`
+ * // are available in the current lexical scope (they could have been injected or passed in).
+ *
+ * function asyncGreet(name) {
+ * // perform some asynchronous operation, resolve or reject the promise when appropriate.
+ * return $q(function(resolve, reject) {
+ * setTimeout(function() {
+ * if (okToGreet(name)) {
+ * resolve('Hello, ' + name + '!');
+ * } else {
+ * reject('Greeting ' + name + ' is not allowed.');
+ * }
+ * }, 1000);
+ * });
+ * }
+ *
+ * var promise = asyncGreet('Robin Hood');
+ * promise.then(function(greeting) {
+ * alert('Success: ' + greeting);
+ * }, function(reason) {
+ * alert('Failed: ' + reason);
+ * });
+ * ```
+ *
+ * Note: progress/notify callbacks are not currently supported via the ES6-style interface.
+ *
+ * However, the more traditional CommonJS-style usage is still available, and documented below.
+ *
+ * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an
+ * interface for interacting with an object that represents the result of an action that is
+ * performed asynchronously, and may or may not be finished at any given point in time.
+ *
+ * From the perspective of dealing with error handling, deferred and promise APIs are to
+ * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming.
+ *
+ * ```js
+ * // for the purpose of this example let's assume that variables `$q` and `okToGreet`
+ * // are available in the current lexical scope (they could have been injected or passed in).
+ *
+ * function asyncGreet(name) {
+ * var deferred = $q.defer();
+ *
+ * setTimeout(function() {
+ * deferred.notify('About to greet ' + name + '.');
+ *
+ * if (okToGreet(name)) {
+ * deferred.resolve('Hello, ' + name + '!');
+ * } else {
+ * deferred.reject('Greeting ' + name + ' is not allowed.');
+ * }
+ * }, 1000);
+ *
+ * return deferred.promise;
+ * }
+ *
+ * var promise = asyncGreet('Robin Hood');
+ * promise.then(function(greeting) {
+ * alert('Success: ' + greeting);
+ * }, function(reason) {
+ * alert('Failed: ' + reason);
+ * }, function(update) {
+ * alert('Got notification: ' + update);
+ * });
+ * ```
+ *
+ * At first it might not be obvious why this extra complexity is worth the trouble. The payoff
+ * comes in the way of guarantees that promise and deferred APIs make, see
+ * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md.
+ *
+ * Additionally the promise api allows for composition that is very hard to do with the
+ * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach.
+ * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the
+ * section on serial or parallel joining of promises.
+ *
+ * # The Deferred API
+ *
+ * A new instance of deferred is constructed by calling `$q.defer()`.
+ *
+ * The purpose of the deferred object is to expose the associated Promise instance as well as APIs
+ * that can be used for signaling the successful or unsuccessful completion, as well as the status
+ * of the task.
+ *
+ * **Methods**
+ *
+ * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection
+ * constructed via `$q.reject`, the promise will be rejected instead.
+ * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to
+ * resolving it with a rejection constructed via `$q.reject`.
+ * - `notify(value)` - provides updates on the status of the promise's execution. This may be called
+ * multiple times before the promise is either resolved or rejected.
+ *
+ * **Properties**
+ *
+ * - promise – `{Promise}` – promise object associated with this deferred.
+ *
+ *
+ * # The Promise API
+ *
+ * A new promise instance is created when a deferred instance is created and can be retrieved by
+ * calling `deferred.promise`.
+ *
+ * The purpose of the promise object is to allow for interested parties to get access to the result
+ * of the deferred task when it completes.
+ *
+ * **Methods**
+ *
+ * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or
+ * will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously
+ * as soon as the result is available. The callbacks are called with a single argument: the result
+ * or rejection reason. Additionally, the notify callback may be called zero or more times to
+ * provide a progress indication, before the promise is resolved or rejected.
+ *
+ * This method *returns a new promise* which is resolved or rejected via the return value of the
+ * `successCallback`, `errorCallback` (unless that value is a promise, in which case it is resolved
+ * with the value which is resolved in that promise using
+ * [promise chaining](http://www.html5rocks.com/en/tutorials/es6/promises/#toc-promises-queues)).
+ * It also notifies via the return value of the `notifyCallback` method. The promise cannot be
+ * resolved or rejected from the notifyCallback method.
+ *
+ * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`
+ *
+ * - `finally(callback, notifyCallback)` – allows you to observe either the fulfillment or rejection of a promise,
+ * but to do so without modifying the final value. This is useful to release resources or do some
+ * clean-up that needs to be done whether the promise was rejected or resolved. See the [full
+ * specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for
+ * more information.
+ *
+ * # Chaining promises
+ *
+ * Because calling the `then` method of a promise returns a new derived promise, it is easily
+ * possible to create a chain of promises:
+ *
+ * ```js
+ * promiseB = promiseA.then(function(result) {
+ * return result + 1;
+ * });
+ *
+ * // promiseB will be resolved immediately after promiseA is resolved and its value
+ * // will be the result of promiseA incremented by 1
+ * ```
+ *
+ * It is possible to create chains of any length and since a promise can be resolved with another
+ * promise (which will defer its resolution further), it is possible to pause/defer resolution of
+ * the promises at any point in the chain. This makes it possible to implement powerful APIs like
+ * $http's response interceptors.
+ *
+ *
+ * # Differences between Kris Kowal's Q and $q
+ *
+ * There are two main differences:
+ *
+ * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation
+ * mechanism in angular, which means faster propagation of resolution or rejection into your
+ * models and avoiding unnecessary browser repaints, which would result in flickering UI.
+ * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains
+ * all the important functionality needed for common async tasks.
+ *
+ * # Testing
+ *
+ * ```js
+ * it('should simulate promise', inject(function($q, $rootScope) {
+ * var deferred = $q.defer();
+ * var promise = deferred.promise;
+ * var resolvedValue;
+ *
+ * promise.then(function(value) { resolvedValue = value; });
+ * expect(resolvedValue).toBeUndefined();
+ *
+ * // Simulate resolving of promise
+ * deferred.resolve(123);
+ * // Note that the 'then' function does not get called synchronously.
+ * // This is because we want the promise API to always be async, whether or not
+ * // it got called synchronously or asynchronously.
+ * expect(resolvedValue).toBeUndefined();
+ *
+ * // Propagate promise resolution to 'then' functions using $apply().
+ * $rootScope.$apply();
+ * expect(resolvedValue).toEqual(123);
+ * }));
+ * ```
+ *
+ * @param {function(function, function)} resolver Function which is responsible for resolving or
+ * rejecting the newly created promise. The first parameter is a function which resolves the
+ * promise, the second parameter is a function which rejects the promise.
+ *
+ * @returns {Promise} The newly created promise.
+ */
+function $QProvider() {
+
+ this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {
+ return qFactory(function(callback) {
+ $rootScope.$evalAsync(callback);
+ }, $exceptionHandler);
+ }];
+}
+
+function $$QProvider() {
+ this.$get = ['$browser', '$exceptionHandler', function($browser, $exceptionHandler) {
+ return qFactory(function(callback) {
+ $browser.defer(callback);
+ }, $exceptionHandler);
+ }];
+}
+
+/**
+ * Constructs a promise manager.
+ *
+ * @param {function(function)} nextTick Function for executing functions in the next turn.
+ * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for
+ * debugging purposes.
+ * @returns {object} Promise manager.
+ */
+function qFactory(nextTick, exceptionHandler) {
+ var $qMinErr = minErr('$q', TypeError);
+ function callOnce(self, resolveFn, rejectFn) {
+ var called = false;
+ function wrap(fn) {
+ return function(value) {
+ if (called) return;
+ called = true;
+ fn.call(self, value);
+ };
+ }
+
+ return [wrap(resolveFn), wrap(rejectFn)];
+ }
+
+ /**
+ * @ngdoc method
+ * @name ng.$q#defer
+ * @kind function
+ *
+ * @description
+ * Creates a `Deferred` object which represents a task which will finish in the future.
+ *
+ * @returns {Deferred} Returns a new instance of deferred.
+ */
+ var defer = function() {
+ return new Deferred();
+ };
+
+ function Promise() {
+ this.$$state = { status: 0 };
+ }
+
+ extend(Promise.prototype, {
+ then: function(onFulfilled, onRejected, progressBack) {
+ if (isUndefined(onFulfilled) && isUndefined(onRejected) && isUndefined(progressBack)) {
+ return this;
+ }
+ var result = new Deferred();
+
+ this.$$state.pending = this.$$state.pending || [];
+ this.$$state.pending.push([result, onFulfilled, onRejected, progressBack]);
+ if (this.$$state.status > 0) scheduleProcessQueue(this.$$state);
+
+ return result.promise;
+ },
+
+ "catch": function(callback) {
+ return this.then(null, callback);
+ },
+
+ "finally": function(callback, progressBack) {
+ return this.then(function(value) {
+ return handleCallback(value, true, callback);
+ }, function(error) {
+ return handleCallback(error, false, callback);
+ }, progressBack);
+ }
+ });
+
+ //Faster, more basic than angular.bind http://jsperf.com/angular-bind-vs-custom-vs-native
+ function simpleBind(context, fn) {
+ return function(value) {
+ fn.call(context, value);
+ };
+ }
+
+ function processQueue(state) {
+ var fn, deferred, pending;
+
+ pending = state.pending;
+ state.processScheduled = false;
+ state.pending = undefined;
+ for (var i = 0, ii = pending.length; i < ii; ++i) {
+ deferred = pending[i][0];
+ fn = pending[i][state.status];
+ try {
+ if (isFunction(fn)) {
+ deferred.resolve(fn(state.value));
+ } else if (state.status === 1) {
+ deferred.resolve(state.value);
+ } else {
+ deferred.reject(state.value);
+ }
+ } catch (e) {
+ deferred.reject(e);
+ exceptionHandler(e);
+ }
+ }
+ }
+
+ function scheduleProcessQueue(state) {
+ if (state.processScheduled || !state.pending) return;
+ state.processScheduled = true;
+ nextTick(function() { processQueue(state); });
+ }
+
+ function Deferred() {
+ this.promise = new Promise();
+ //Necessary to support unbound execution :/
+ this.resolve = simpleBind(this, this.resolve);
+ this.reject = simpleBind(this, this.reject);
+ this.notify = simpleBind(this, this.notify);
+ }
+
+ extend(Deferred.prototype, {
+ resolve: function(val) {
+ if (this.promise.$$state.status) return;
+ if (val === this.promise) {
+ this.$$reject($qMinErr(
+ 'qcycle',
+ "Expected promise to be resolved with value other than itself '{0}'",
+ val));
+ } else {
+ this.$$resolve(val);
+ }
+
+ },
+
+ $$resolve: function(val) {
+ var then, fns;
+
+ fns = callOnce(this, this.$$resolve, this.$$reject);
+ try {
+ if ((isObject(val) || isFunction(val))) then = val && val.then;
+ if (isFunction(then)) {
+ this.promise.$$state.status = -1;
+ then.call(val, fns[0], fns[1], this.notify);
+ } else {
+ this.promise.$$state.value = val;
+ this.promise.$$state.status = 1;
+ scheduleProcessQueue(this.promise.$$state);
+ }
+ } catch (e) {
+ fns[1](e);
+ exceptionHandler(e);
+ }
+ },
+
+ reject: function(reason) {
+ if (this.promise.$$state.status) return;
+ this.$$reject(reason);
+ },
+
+ $$reject: function(reason) {
+ this.promise.$$state.value = reason;
+ this.promise.$$state.status = 2;
+ scheduleProcessQueue(this.promise.$$state);
+ },
+
+ notify: function(progress) {
+ var callbacks = this.promise.$$state.pending;
+
+ if ((this.promise.$$state.status <= 0) && callbacks && callbacks.length) {
+ nextTick(function() {
+ var callback, result;
+ for (var i = 0, ii = callbacks.length; i < ii; i++) {
+ result = callbacks[i][0];
+ callback = callbacks[i][3];
+ try {
+ result.notify(isFunction(callback) ? callback(progress) : progress);
+ } catch (e) {
+ exceptionHandler(e);
+ }
+ }
+ });
+ }
+ }
+ });
+
+ /**
+ * @ngdoc method
+ * @name $q#reject
+ * @kind function
+ *
+ * @description
+ * Creates a promise that is resolved as rejected with the specified `reason`. This api should be
+ * used to forward rejection in a chain of promises. If you are dealing with the last promise in
+ * a promise chain, you don't need to worry about it.
+ *
+ * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of
+ * `reject` as the `throw` keyword in JavaScript. This also means that if you "catch" an error via
+ * a promise error callback and you want to forward the error to the promise derived from the
+ * current promise, you have to "rethrow" the error by returning a rejection constructed via
+ * `reject`.
+ *
+ * ```js
+ * promiseB = promiseA.then(function(result) {
+ * // success: do something and resolve promiseB
+ * // with the old or a new result
+ * return result;
+ * }, function(reason) {
+ * // error: handle the error if possible and
+ * // resolve promiseB with newPromiseOrValue,
+ * // otherwise forward the rejection to promiseB
+ * if (canHandle(reason)) {
+ * // handle the error and recover
+ * return newPromiseOrValue;
+ * }
+ * return $q.reject(reason);
+ * });
+ * ```
+ *
+ * @param {*} reason Constant, message, exception or an object representing the rejection reason.
+ * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`.
+ */
+ var reject = function(reason) {
+ var result = new Deferred();
+ result.reject(reason);
+ return result.promise;
+ };
+
+ var makePromise = function makePromise(value, resolved) {
+ var result = new Deferred();
+ if (resolved) {
+ result.resolve(value);
+ } else {
+ result.reject(value);
+ }
+ return result.promise;
+ };
+
+ var handleCallback = function handleCallback(value, isResolved, callback) {
+ var callbackOutput = null;
+ try {
+ if (isFunction(callback)) callbackOutput = callback();
+ } catch (e) {
+ return makePromise(e, false);
+ }
+ if (isPromiseLike(callbackOutput)) {
+ return callbackOutput.then(function() {
+ return makePromise(value, isResolved);
+ }, function(error) {
+ return makePromise(error, false);
+ });
+ } else {
+ return makePromise(value, isResolved);
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $q#when
+ * @kind function
+ *
+ * @description
+ * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise.
+ * This is useful when you are dealing with an object that might or might not be a promise, or if
+ * the promise comes from a source that can't be trusted.
+ *
+ * @param {*} value Value or a promise
+ * @param {Function=} successCallback
+ * @param {Function=} errorCallback
+ * @param {Function=} progressCallback
+ * @returns {Promise} Returns a promise of the passed value or promise
+ */
+
+
+ var when = function(value, callback, errback, progressBack) {
+ var result = new Deferred();
+ result.resolve(value);
+ return result.promise.then(callback, errback, progressBack);
+ };
+
+ /**
+ * @ngdoc method
+ * @name $q#resolve
+ * @kind function
+ *
+ * @description
+ * Alias of {@link ng.$q#when when} to maintain naming consistency with ES6.
+ *
+ * @param {*} value Value or a promise
+ * @param {Function=} successCallback
+ * @param {Function=} errorCallback
+ * @param {Function=} progressCallback
+ * @returns {Promise} Returns a promise of the passed value or promise
+ */
+ var resolve = when;
+
+ /**
+ * @ngdoc method
+ * @name $q#all
+ * @kind function
+ *
+ * @description
+ * Combines multiple promises into a single promise that is resolved when all of the input
+ * promises are resolved.
+ *
+ * @param {Array.<Promise>|Object.<Promise>} promises An array or hash of promises.
+ * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values,
+ * each value corresponding to the promise at the same index/key in the `promises` array/hash.
+ * If any of the promises is resolved with a rejection, this resulting promise will be rejected
+ * with the same rejection value.
+ */
+
+ function all(promises) {
+ var deferred = new Deferred(),
+ counter = 0,
+ results = isArray(promises) ? [] : {};
+
+ forEach(promises, function(promise, key) {
+ counter++;
+ when(promise).then(function(value) {
+ if (results.hasOwnProperty(key)) return;
+ results[key] = value;
+ if (!(--counter)) deferred.resolve(results);
+ }, function(reason) {
+ if (results.hasOwnProperty(key)) return;
+ deferred.reject(reason);
+ });
+ });
+
+ if (counter === 0) {
+ deferred.resolve(results);
+ }
+
+ return deferred.promise;
+ }
+
+ var $Q = function Q(resolver) {
+ if (!isFunction(resolver)) {
+ throw $qMinErr('norslvr', "Expected resolverFn, got '{0}'", resolver);
+ }
+
+ if (!(this instanceof Q)) {
+ // More useful when $Q is the Promise itself.
+ return new Q(resolver);
+ }
+
+ var deferred = new Deferred();
+
+ function resolveFn(value) {
+ deferred.resolve(value);
+ }
+
+ function rejectFn(reason) {
+ deferred.reject(reason);
+ }
+
+ resolver(resolveFn, rejectFn);
+
+ return deferred.promise;
+ };
+
+ $Q.defer = defer;
+ $Q.reject = reject;
+ $Q.when = when;
+ $Q.resolve = resolve;
+ $Q.all = all;
+
+ return $Q;
+}
+
+function $$RAFProvider() { //rAF
+ this.$get = ['$window', '$timeout', function($window, $timeout) {
+ var requestAnimationFrame = $window.requestAnimationFrame ||
+ $window.webkitRequestAnimationFrame;
+
+ var cancelAnimationFrame = $window.cancelAnimationFrame ||
+ $window.webkitCancelAnimationFrame ||
+ $window.webkitCancelRequestAnimationFrame;
+
+ var rafSupported = !!requestAnimationFrame;
+ var rafFn = rafSupported
+ ? function(fn) {
+ var id = requestAnimationFrame(fn);
+ return function() {
+ cancelAnimationFrame(id);
+ };
+ }
+ : function(fn) {
+ var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666
+ return function() {
+ $timeout.cancel(timer);
+ };
+ };
+
+ queueFn.supported = rafSupported;
+
+ var cancelLastRAF;
+ var taskCount = 0;
+ var taskQueue = [];
+ return queueFn;
+
+ function flush() {
+ for (var i = 0; i < taskQueue.length; i++) {
+ var task = taskQueue[i];
+ if (task) {
+ taskQueue[i] = null;
+ task();
+ }
+ }
+ taskCount = taskQueue.length = 0;
+ }
+
+ function queueFn(asyncFn) {
+ var index = taskQueue.length;
+
+ taskCount++;
+ taskQueue.push(asyncFn);
+
+ if (index === 0) {
+ cancelLastRAF = rafFn(flush);
+ }
+
+ return function cancelQueueFn() {
+ if (index >= 0) {
+ taskQueue[index] = null;
+ index = null;
+
+ if (--taskCount === 0 && cancelLastRAF) {
+ cancelLastRAF();
+ cancelLastRAF = null;
+ taskQueue.length = 0;
+ }
+ }
+ };
+ }
+ }];
+}
+
+/**
+ * DESIGN NOTES
+ *
+ * The design decisions behind the scope are heavily favored for speed and memory consumption.
+ *
+ * The typical use of scope is to watch the expressions, which most of the time return the same
+ * value as last time so we optimize the operation.
+ *
+ * Closures construction is expensive in terms of speed as well as memory:
+ * - No closures, instead use prototypical inheritance for API
+ * - Internal state needs to be stored on scope directly, which means that private state is
+ * exposed as $$____ properties
+ *
+ * Loop operations are optimized by using while(count--) { ... }
+ * - this means that in order to keep the same order of execution as addition we have to add
+ * items to the array at the beginning (unshift) instead of at the end (push)
+ *
+ * Child scopes are created and removed often
+ * - Using an array would be slow since inserts in middle are expensive so we use linked list
+ *
+ * There are few watches then a lot of observers. This is why you don't want the observer to be
+ * implemented in the same way as watch. Watch requires return of initialization function which
+ * are expensive to construct.
+ */
+
+
+/**
+ * @ngdoc provider
+ * @name $rootScopeProvider
+ * @description
+ *
+ * Provider for the $rootScope service.
+ */
+
+/**
+ * @ngdoc method
+ * @name $rootScopeProvider#digestTtl
+ * @description
+ *
+ * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and
+ * assuming that the model is unstable.
+ *
+ * The current default is 10 iterations.
+ *
+ * In complex applications it's possible that the dependencies between `$watch`s will result in
+ * several digest iterations. However if an application needs more than the default 10 digest
+ * iterations for its model to stabilize then you should investigate what is causing the model to
+ * continuously change during the digest.
+ *
+ * Increasing the TTL could have performance implications, so you should not change it without
+ * proper justification.
+ *
+ * @param {number} limit The number of digest iterations.
+ */
+
+
+/**
+ * @ngdoc service
+ * @name $rootScope
+ * @description
+ *
+ * Every application has a single root {@link ng.$rootScope.Scope scope}.
+ * All other scopes are descendant scopes of the root scope. Scopes provide separation
+ * between the model and the view, via a mechanism for watching the model for changes.
+ * They also provide an event emission/broadcast and subscription facility. See the
+ * {@link guide/scope developer guide on scopes}.
+ */
+function $RootScopeProvider() {
+ var TTL = 10;
+ var $rootScopeMinErr = minErr('$rootScope');
+ var lastDirtyWatch = null;
+ var applyAsyncId = null;
+
+ this.digestTtl = function(value) {
+ if (arguments.length) {
+ TTL = value;
+ }
+ return TTL;
+ };
+
+ function createChildScopeClass(parent) {
+ function ChildScope() {
+ this.$$watchers = this.$$nextSibling =
+ this.$$childHead = this.$$childTail = null;
+ this.$$listeners = {};
+ this.$$listenerCount = {};
+ this.$$watchersCount = 0;
+ this.$id = nextUid();
+ this.$$ChildScope = null;
+ }
+ ChildScope.prototype = parent;
+ return ChildScope;
+ }
+
+ this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',
+ function($injector, $exceptionHandler, $parse, $browser) {
+
+ function destroyChildScope($event) {
+ $event.currentScope.$$destroyed = true;
+ }
+
+ /**
+ * @ngdoc type
+ * @name $rootScope.Scope
+ *
+ * @description
+ * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the
+ * {@link auto.$injector $injector}. Child scopes are created using the
+ * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when
+ * compiled HTML template is executed.) See also the {@link guide/scope Scopes guide} for
+ * an in-depth introduction and usage examples.
+ *
+ *
+ * # Inheritance
+ * A scope can inherit from a parent scope, as in this example:
+ * ```js
+ var parent = $rootScope;
+ var child = parent.$new();
+
+ parent.salutation = "Hello";
+ expect(child.salutation).toEqual('Hello');
+
+ child.salutation = "Welcome";
+ expect(child.salutation).toEqual('Welcome');
+ expect(parent.salutation).toEqual('Hello');
+ * ```
+ *
+ * When interacting with `Scope` in tests, additional helper methods are available on the
+ * instances of `Scope` type. See {@link ngMock.$rootScope.Scope ngMock Scope} for additional
+ * details.
+ *
+ *
+ * @param {Object.<string, function()>=} providers Map of service factory which need to be
+ * provided for the current scope. Defaults to {@link ng}.
+ * @param {Object.<string, *>=} instanceCache Provides pre-instantiated services which should
+ * append/override services provided by `providers`. This is handy
+ * when unit-testing and having the need to override a default
+ * service.
+ * @returns {Object} Newly created scope.
+ *
+ */
+ function Scope() {
+ this.$id = nextUid();
+ this.$$phase = this.$parent = this.$$watchers =
+ this.$$nextSibling = this.$$prevSibling =
+ this.$$childHead = this.$$childTail = null;
+ this.$root = this;
+ this.$$destroyed = false;
+ this.$$listeners = {};
+ this.$$listenerCount = {};
+ this.$$watchersCount = 0;
+ this.$$isolateBindings = null;
+ }
+
+ /**
+ * @ngdoc property
+ * @name $rootScope.Scope#$id
+ *
+ * @description
+ * Unique scope ID (monotonically increasing) useful for debugging.
+ */
+
+ /**
+ * @ngdoc property
+ * @name $rootScope.Scope#$parent
+ *
+ * @description
+ * Reference to the parent scope.
+ */
+
+ /**
+ * @ngdoc property
+ * @name $rootScope.Scope#$root
+ *
+ * @description
+ * Reference to the root scope.
+ */
+
+ Scope.prototype = {
+ constructor: Scope,
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$new
+ * @kind function
+ *
+ * @description
+ * Creates a new child {@link ng.$rootScope.Scope scope}.
+ *
+ * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event.
+ * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.
+ *
+ * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is
+ * desired for the scope and its child scopes to be permanently detached from the parent and
+ * thus stop participating in model change detection and listener notification by invoking.
+ *
+ * @param {boolean} isolate If true, then the scope does not prototypically inherit from the
+ * parent scope. The scope is isolated, as it can not see parent scope properties.
+ * When creating widgets, it is useful for the widget to not accidentally read parent
+ * state.
+ *
+ * @param {Scope} [parent=this] The {@link ng.$rootScope.Scope `Scope`} that will be the `$parent`
+ * of the newly created scope. Defaults to `this` scope if not provided.
+ * This is used when creating a transclude scope to correctly place it
+ * in the scope hierarchy while maintaining the correct prototypical
+ * inheritance.
+ *
+ * @returns {Object} The newly created child scope.
+ *
+ */
+ $new: function(isolate, parent) {
+ var child;
+
+ parent = parent || this;
+
+ if (isolate) {
+ child = new Scope();
+ child.$root = this.$root;
+ } else {
+ // Only create a child scope class if somebody asks for one,
+ // but cache it to allow the VM to optimize lookups.
+ if (!this.$$ChildScope) {
+ this.$$ChildScope = createChildScopeClass(this);
+ }
+ child = new this.$$ChildScope();
+ }
+ child.$parent = parent;
+ child.$$prevSibling = parent.$$childTail;
+ if (parent.$$childHead) {
+ parent.$$childTail.$$nextSibling = child;
+ parent.$$childTail = child;
+ } else {
+ parent.$$childHead = parent.$$childTail = child;
+ }
+
+ // When the new scope is not isolated or we inherit from `this`, and
+ // the parent scope is destroyed, the property `$$destroyed` is inherited
+ // prototypically. In all other cases, this property needs to be set
+ // when the parent scope is destroyed.
+ // The listener needs to be added after the parent is set
+ if (isolate || parent != this) child.$on('$destroy', destroyChildScope);
+
+ return child;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$watch
+ * @kind function
+ *
+ * @description
+ * Registers a `listener` callback to be executed whenever the `watchExpression` changes.
+ *
+ * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest
+ * $digest()} and should return the value that will be watched. (Since
+ * {@link ng.$rootScope.Scope#$digest $digest()} reruns when it detects changes the
+ * `watchExpression` can execute multiple times per
+ * {@link ng.$rootScope.Scope#$digest $digest()} and should be idempotent.)
+ * - The `listener` is called only when the value from the current `watchExpression` and the
+ * previous call to `watchExpression` are not equal (with the exception of the initial run,
+ * see below). Inequality is determined according to reference inequality,
+ * [strict comparison](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)
+ * via the `!==` Javascript operator, unless `objectEquality == true`
+ * (see next point)
+ * - When `objectEquality == true`, inequality of the `watchExpression` is determined
+ * according to the {@link angular.equals} function. To save the value of the object for
+ * later comparison, the {@link angular.copy} function is used. This therefore means that
+ * watching complex objects will have adverse memory and performance implications.
+ * - The watch `listener` may change the model, which may trigger other `listener`s to fire.
+ * This is achieved by rerunning the watchers until no changes are detected. The rerun
+ * iteration limit is 10 to prevent an infinite loop deadlock.
+ *
+ *
+ * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called,
+ * you can register a `watchExpression` function with no `listener`. (Be prepared for
+ * multiple calls to your `watchExpression` because it will execute multiple times in a
+ * single {@link ng.$rootScope.Scope#$digest $digest} cycle if a change is detected.)
+ *
+ * After a watcher is registered with the scope, the `listener` fn is called asynchronously
+ * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the
+ * watcher. In rare cases, this is undesirable because the listener is called when the result
+ * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you
+ * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the
+ * listener was called due to initialization.
+ *
+ *
+ *
+ * # Example
+ * ```js
+ // let's assume that scope was dependency injected as the $rootScope
+ var scope = $rootScope;
+ scope.name = 'misko';
+ scope.counter = 0;
+
+ expect(scope.counter).toEqual(0);
+ scope.$watch('name', function(newValue, oldValue) {
+ scope.counter = scope.counter + 1;
+ });
+ expect(scope.counter).toEqual(0);
+
+ scope.$digest();
+ // the listener is always called during the first $digest loop after it was registered
+ expect(scope.counter).toEqual(1);
+
+ scope.$digest();
+ // but now it will not be called unless the value changes
+ expect(scope.counter).toEqual(1);
+
+ scope.name = 'adam';
+ scope.$digest();
+ expect(scope.counter).toEqual(2);
+
+
+
+ // Using a function as a watchExpression
+ var food;
+ scope.foodCounter = 0;
+ expect(scope.foodCounter).toEqual(0);
+ scope.$watch(
+ // This function returns the value being watched. It is called for each turn of the $digest loop
+ function() { return food; },
+ // This is the change listener, called when the value returned from the above function changes
+ function(newValue, oldValue) {
+ if ( newValue !== oldValue ) {
+ // Only increment the counter if the value changed
+ scope.foodCounter = scope.foodCounter + 1;
+ }
+ }
+ );
+ // No digest has been run so the counter will be zero
+ expect(scope.foodCounter).toEqual(0);
+
+ // Run the digest but since food has not changed count will still be zero
+ scope.$digest();
+ expect(scope.foodCounter).toEqual(0);
+
+ // Update food and run digest. Now the counter will increment
+ food = 'cheeseburger';
+ scope.$digest();
+ expect(scope.foodCounter).toEqual(1);
+
+ * ```
+ *
+ *
+ *
+ * @param {(function()|string)} watchExpression Expression that is evaluated on each
+ * {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers
+ * a call to the `listener`.
+ *
+ * - `string`: Evaluated as {@link guide/expression expression}
+ * - `function(scope)`: called with current `scope` as a parameter.
+ * @param {function(newVal, oldVal, scope)} listener Callback called whenever the value
+ * of `watchExpression` changes.
+ *
+ * - `newVal` contains the current value of the `watchExpression`
+ * - `oldVal` contains the previous value of the `watchExpression`
+ * - `scope` refers to the current scope
+ * @param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of
+ * comparing for reference equality.
+ * @returns {function()} Returns a deregistration function for this listener.
+ */
+ $watch: function(watchExp, listener, objectEquality, prettyPrintExpression) {
+ var get = $parse(watchExp);
+
+ if (get.$$watchDelegate) {
+ return get.$$watchDelegate(this, listener, objectEquality, get, watchExp);
+ }
+ var scope = this,
+ array = scope.$$watchers,
+ watcher = {
+ fn: listener,
+ last: initWatchVal,
+ get: get,
+ exp: prettyPrintExpression || watchExp,
+ eq: !!objectEquality
+ };
+
+ lastDirtyWatch = null;
+
+ if (!isFunction(listener)) {
+ watcher.fn = noop;
+ }
+
+ if (!array) {
+ array = scope.$$watchers = [];
+ }
+ // we use unshift since we use a while loop in $digest for speed.
+ // the while loop reads in reverse order.
+ array.unshift(watcher);
+ incrementWatchersCount(this, 1);
+
+ return function deregisterWatch() {
+ if (arrayRemove(array, watcher) >= 0) {
+ incrementWatchersCount(scope, -1);
+ }
+ lastDirtyWatch = null;
+ };
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$watchGroup
+ * @kind function
+ *
+ * @description
+ * A variant of {@link ng.$rootScope.Scope#$watch $watch()} where it watches an array of `watchExpressions`.
+ * If any one expression in the collection changes the `listener` is executed.
+ *
+ * - The items in the `watchExpressions` array are observed via standard $watch operation and are examined on every
+ * call to $digest() to see if any items changes.
+ * - The `listener` is called whenever any expression in the `watchExpressions` array changes.
+ *
+ * @param {Array.<string|Function(scope)>} watchExpressions Array of expressions that will be individually
+ * watched using {@link ng.$rootScope.Scope#$watch $watch()}
+ *
+ * @param {function(newValues, oldValues, scope)} listener Callback called whenever the return value of any
+ * expression in `watchExpressions` changes
+ * The `newValues` array contains the current values of the `watchExpressions`, with the indexes matching
+ * those of `watchExpression`
+ * and the `oldValues` array contains the previous values of the `watchExpressions`, with the indexes matching
+ * those of `watchExpression`
+ * The `scope` refers to the current scope.
+ * @returns {function()} Returns a de-registration function for all listeners.
+ */
+ $watchGroup: function(watchExpressions, listener) {
+ var oldValues = new Array(watchExpressions.length);
+ var newValues = new Array(watchExpressions.length);
+ var deregisterFns = [];
+ var self = this;
+ var changeReactionScheduled = false;
+ var firstRun = true;
+
+ if (!watchExpressions.length) {
+ // No expressions means we call the listener ASAP
+ var shouldCall = true;
+ self.$evalAsync(function() {
+ if (shouldCall) listener(newValues, newValues, self);
+ });
+ return function deregisterWatchGroup() {
+ shouldCall = false;
+ };
+ }
+
+ if (watchExpressions.length === 1) {
+ // Special case size of one
+ return this.$watch(watchExpressions[0], function watchGroupAction(value, oldValue, scope) {
+ newValues[0] = value;
+ oldValues[0] = oldValue;
+ listener(newValues, (value === oldValue) ? newValues : oldValues, scope);
+ });
+ }
+
+ forEach(watchExpressions, function(expr, i) {
+ var unwatchFn = self.$watch(expr, function watchGroupSubAction(value, oldValue) {
+ newValues[i] = value;
+ oldValues[i] = oldValue;
+ if (!changeReactionScheduled) {
+ changeReactionScheduled = true;
+ self.$evalAsync(watchGroupAction);
+ }
+ });
+ deregisterFns.push(unwatchFn);
+ });
+
+ function watchGroupAction() {
+ changeReactionScheduled = false;
+
+ if (firstRun) {
+ firstRun = false;
+ listener(newValues, newValues, self);
+ } else {
+ listener(newValues, oldValues, self);
+ }
+ }
+
+ return function deregisterWatchGroup() {
+ while (deregisterFns.length) {
+ deregisterFns.shift()();
+ }
+ };
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$watchCollection
+ * @kind function
+ *
+ * @description
+ * Shallow watches the properties of an object and fires whenever any of the properties change
+ * (for arrays, this implies watching the array items; for object maps, this implies watching
+ * the properties). If a change is detected, the `listener` callback is fired.
+ *
+ * - The `obj` collection is observed via standard $watch operation and is examined on every
+ * call to $digest() to see if any items have been added, removed, or moved.
+ * - The `listener` is called whenever anything within the `obj` has changed. Examples include
+ * adding, removing, and moving items belonging to an object or array.
+ *
+ *
+ * # Example
+ * ```js
+ $scope.names = ['igor', 'matias', 'misko', 'james'];
+ $scope.dataCount = 4;
+
+ $scope.$watchCollection('names', function(newNames, oldNames) {
+ $scope.dataCount = newNames.length;
+ });
+
+ expect($scope.dataCount).toEqual(4);
+ $scope.$digest();
+
+ //still at 4 ... no changes
+ expect($scope.dataCount).toEqual(4);
+
+ $scope.names.pop();
+ $scope.$digest();
+
+ //now there's been a change
+ expect($scope.dataCount).toEqual(3);
+ * ```
+ *
+ *
+ * @param {string|function(scope)} obj Evaluated as {@link guide/expression expression}. The
+ * expression value should evaluate to an object or an array which is observed on each
+ * {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the
+ * collection will trigger a call to the `listener`.
+ *
+ * @param {function(newCollection, oldCollection, scope)} listener a callback function called
+ * when a change is detected.
+ * - The `newCollection` object is the newly modified data obtained from the `obj` expression
+ * - The `oldCollection` object is a copy of the former collection data.
+ * Due to performance considerations, the`oldCollection` value is computed only if the
+ * `listener` function declares two or more arguments.
+ * - The `scope` argument refers to the current scope.
+ *
+ * @returns {function()} Returns a de-registration function for this listener. When the
+ * de-registration function is executed, the internal watch operation is terminated.
+ */
+ $watchCollection: function(obj, listener) {
+ $watchCollectionInterceptor.$stateful = true;
+
+ var self = this;
+ // the current value, updated on each dirty-check run
+ var newValue;
+ // a shallow copy of the newValue from the last dirty-check run,
+ // updated to match newValue during dirty-check run
+ var oldValue;
+ // a shallow copy of the newValue from when the last change happened
+ var veryOldValue;
+ // only track veryOldValue if the listener is asking for it
+ var trackVeryOldValue = (listener.length > 1);
+ var changeDetected = 0;
+ var changeDetector = $parse(obj, $watchCollectionInterceptor);
+ var internalArray = [];
+ var internalObject = {};
+ var initRun = true;
+ var oldLength = 0;
+
+ function $watchCollectionInterceptor(_value) {
+ newValue = _value;
+ var newLength, key, bothNaN, newItem, oldItem;
+
+ // If the new value is undefined, then return undefined as the watch may be a one-time watch
+ if (isUndefined(newValue)) return;
+
+ if (!isObject(newValue)) { // if primitive
+ if (oldValue !== newValue) {
+ oldValue = newValue;
+ changeDetected++;
+ }
+ } else if (isArrayLike(newValue)) {
+ if (oldValue !== internalArray) {
+ // we are transitioning from something which was not an array into array.
+ oldValue = internalArray;
+ oldLength = oldValue.length = 0;
+ changeDetected++;
+ }
+
+ newLength = newValue.length;
+
+ if (oldLength !== newLength) {
+ // if lengths do not match we need to trigger change notification
+ changeDetected++;
+ oldValue.length = oldLength = newLength;
+ }
+ // copy the items to oldValue and look for changes.
+ for (var i = 0; i < newLength; i++) {
+ oldItem = oldValue[i];
+ newItem = newValue[i];
+
+ bothNaN = (oldItem !== oldItem) && (newItem !== newItem);
+ if (!bothNaN && (oldItem !== newItem)) {
+ changeDetected++;
+ oldValue[i] = newItem;
+ }
+ }
+ } else {
+ if (oldValue !== internalObject) {
+ // we are transitioning from something which was not an object into object.
+ oldValue = internalObject = {};
+ oldLength = 0;
+ changeDetected++;
+ }
+ // copy the items to oldValue and look for changes.
+ newLength = 0;
+ for (key in newValue) {
+ if (newValue.hasOwnProperty(key)) {
+ newLength++;
+ newItem = newValue[key];
+ oldItem = oldValue[key];
+
+ if (key in oldValue) {
+ bothNaN = (oldItem !== oldItem) && (newItem !== newItem);
+ if (!bothNaN && (oldItem !== newItem)) {
+ changeDetected++;
+ oldValue[key] = newItem;
+ }
+ } else {
+ oldLength++;
+ oldValue[key] = newItem;
+ changeDetected++;
+ }
+ }
+ }
+ if (oldLength > newLength) {
+ // we used to have more keys, need to find them and destroy them.
+ changeDetected++;
+ for (key in oldValue) {
+ if (!newValue.hasOwnProperty(key)) {
+ oldLength--;
+ delete oldValue[key];
+ }
+ }
+ }
+ }
+ return changeDetected;
+ }
+
+ function $watchCollectionAction() {
+ if (initRun) {
+ initRun = false;
+ listener(newValue, newValue, self);
+ } else {
+ listener(newValue, veryOldValue, self);
+ }
+
+ // make a copy for the next time a collection is changed
+ if (trackVeryOldValue) {
+ if (!isObject(newValue)) {
+ //primitive
+ veryOldValue = newValue;
+ } else if (isArrayLike(newValue)) {
+ veryOldValue = new Array(newValue.length);
+ for (var i = 0; i < newValue.length; i++) {
+ veryOldValue[i] = newValue[i];
+ }
+ } else { // if object
+ veryOldValue = {};
+ for (var key in newValue) {
+ if (hasOwnProperty.call(newValue, key)) {
+ veryOldValue[key] = newValue[key];
+ }
+ }
+ }
+ }
+ }
+
+ return this.$watch(changeDetector, $watchCollectionAction);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$digest
+ * @kind function
+ *
+ * @description
+ * Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and
+ * its children. Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change
+ * the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers}
+ * until no more listeners are firing. This means that it is possible to get into an infinite
+ * loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of
+ * iterations exceeds 10.
+ *
+ * Usually, you don't call `$digest()` directly in
+ * {@link ng.directive:ngController controllers} or in
+ * {@link ng.$compileProvider#directive directives}.
+ * Instead, you should call {@link ng.$rootScope.Scope#$apply $apply()} (typically from within
+ * a {@link ng.$compileProvider#directive directive}), which will force a `$digest()`.
+ *
+ * If you want to be notified whenever `$digest()` is called,
+ * you can register a `watchExpression` function with
+ * {@link ng.$rootScope.Scope#$watch $watch()} with no `listener`.
+ *
+ * In unit tests, you may need to call `$digest()` to simulate the scope life cycle.
+ *
+ * # Example
+ * ```js
+ var scope = ...;
+ scope.name = 'misko';
+ scope.counter = 0;
+
+ expect(scope.counter).toEqual(0);
+ scope.$watch('name', function(newValue, oldValue) {
+ scope.counter = scope.counter + 1;
+ });
+ expect(scope.counter).toEqual(0);
+
+ scope.$digest();
+ // the listener is always called during the first $digest loop after it was registered
+ expect(scope.counter).toEqual(1);
+
+ scope.$digest();
+ // but now it will not be called unless the value changes
+ expect(scope.counter).toEqual(1);
+
+ scope.name = 'adam';
+ scope.$digest();
+ expect(scope.counter).toEqual(2);
+ * ```
+ *
+ */
+ $digest: function() {
+ var watch, value, last,
+ watchers,
+ length,
+ dirty, ttl = TTL,
+ next, current, target = this,
+ watchLog = [],
+ logIdx, logMsg, asyncTask;
+
+ beginPhase('$digest');
+ // Check for changes to browser url that happened in sync before the call to $digest
+ $browser.$$checkUrlChange();
+
+ if (this === $rootScope && applyAsyncId !== null) {
+ // If this is the root scope, and $applyAsync has scheduled a deferred $apply(), then
+ // cancel the scheduled $apply and flush the queue of expressions to be evaluated.
+ $browser.defer.cancel(applyAsyncId);
+ flushApplyAsync();
+ }
+
+ lastDirtyWatch = null;
+
+ do { // "while dirty" loop
+ dirty = false;
+ current = target;
+
+ while (asyncQueue.length) {
+ try {
+ asyncTask = asyncQueue.shift();
+ asyncTask.scope.$eval(asyncTask.expression, asyncTask.locals);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ lastDirtyWatch = null;
+ }
+
+ traverseScopesLoop:
+ do { // "traverse the scopes" loop
+ if ((watchers = current.$$watchers)) {
+ // process our watches
+ length = watchers.length;
+ while (length--) {
+ try {
+ watch = watchers[length];
+ // Most common watches are on primitives, in which case we can short
+ // circuit it with === operator, only when === fails do we use .equals
+ if (watch) {
+ if ((value = watch.get(current)) !== (last = watch.last) &&
+ !(watch.eq
+ ? equals(value, last)
+ : (typeof value === 'number' && typeof last === 'number'
+ && isNaN(value) && isNaN(last)))) {
+ dirty = true;
+ lastDirtyWatch = watch;
+ watch.last = watch.eq ? copy(value, null) : value;
+ watch.fn(value, ((last === initWatchVal) ? value : last), current);
+ if (ttl < 5) {
+ logIdx = 4 - ttl;
+ if (!watchLog[logIdx]) watchLog[logIdx] = [];
+ watchLog[logIdx].push({
+ msg: isFunction(watch.exp) ? 'fn: ' + (watch.exp.name || watch.exp.toString()) : watch.exp,
+ newVal: value,
+ oldVal: last
+ });
+ }
+ } else if (watch === lastDirtyWatch) {
+ // If the most recently dirty watcher is now clean, short circuit since the remaining watchers
+ // have already been tested.
+ dirty = false;
+ break traverseScopesLoop;
+ }
+ }
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+ }
+
+ // Insanity Warning: scope depth-first traversal
+ // yes, this code is a bit crazy, but it works and we have tests to prove it!
+ // this piece should be kept in sync with the traversal in $broadcast
+ if (!(next = ((current.$$watchersCount && current.$$childHead) ||
+ (current !== target && current.$$nextSibling)))) {
+ while (current !== target && !(next = current.$$nextSibling)) {
+ current = current.$parent;
+ }
+ }
+ } while ((current = next));
+
+ // `break traverseScopesLoop;` takes us to here
+
+ if ((dirty || asyncQueue.length) && !(ttl--)) {
+ clearPhase();
+ throw $rootScopeMinErr('infdig',
+ '{0} $digest() iterations reached. Aborting!\n' +
+ 'Watchers fired in the last 5 iterations: {1}',
+ TTL, watchLog);
+ }
+
+ } while (dirty || asyncQueue.length);
+
+ clearPhase();
+
+ while (postDigestQueue.length) {
+ try {
+ postDigestQueue.shift()();
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+ },
+
+
+ /**
+ * @ngdoc event
+ * @name $rootScope.Scope#$destroy
+ * @eventType broadcast on scope being destroyed
+ *
+ * @description
+ * Broadcasted when a scope and its children are being destroyed.
+ *
+ * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
+ * clean up DOM bindings before an element is removed from the DOM.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$destroy
+ * @kind function
+ *
+ * @description
+ * Removes the current scope (and all of its children) from the parent scope. Removal implies
+ * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer
+ * propagate to the current scope and its children. Removal also implies that the current
+ * scope is eligible for garbage collection.
+ *
+ * The `$destroy()` is usually used by directives such as
+ * {@link ng.directive:ngRepeat ngRepeat} for managing the
+ * unrolling of the loop.
+ *
+ * Just before a scope is destroyed, a `$destroy` event is broadcasted on this scope.
+ * Application code can register a `$destroy` event handler that will give it a chance to
+ * perform any necessary cleanup.
+ *
+ * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
+ * clean up DOM bindings before an element is removed from the DOM.
+ */
+ $destroy: function() {
+ // We can't destroy a scope that has been already destroyed.
+ if (this.$$destroyed) return;
+ var parent = this.$parent;
+
+ this.$broadcast('$destroy');
+ this.$$destroyed = true;
+
+ if (this === $rootScope) {
+ //Remove handlers attached to window when $rootScope is removed
+ $browser.$$applicationDestroyed();
+ }
+
+ incrementWatchersCount(this, -this.$$watchersCount);
+ for (var eventName in this.$$listenerCount) {
+ decrementListenerCount(this, this.$$listenerCount[eventName], eventName);
+ }
+
+ // sever all the references to parent scopes (after this cleanup, the current scope should
+ // not be retained by any of our references and should be eligible for garbage collection)
+ if (parent && parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;
+ if (parent && parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;
+ if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;
+ if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling;
+
+ // Disable listeners, watchers and apply/digest methods
+ this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = noop;
+ this.$on = this.$watch = this.$watchGroup = function() { return noop; };
+ this.$$listeners = {};
+
+ // All of the code below is bogus code that works around V8's memory leak via optimized code
+ // and inline caches.
+ //
+ // see:
+ // - https://code.google.com/p/v8/issues/detail?id=2073#c26
+ // - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909
+ // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451
+
+ this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead =
+ this.$$childTail = this.$root = this.$$watchers = null;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$eval
+ * @kind function
+ *
+ * @description
+ * Executes the `expression` on the current scope and returns the result. Any exceptions in
+ * the expression are propagated (uncaught). This is useful when evaluating Angular
+ * expressions.
+ *
+ * # Example
+ * ```js
+ var scope = ng.$rootScope.Scope();
+ scope.a = 1;
+ scope.b = 2;
+
+ expect(scope.$eval('a+b')).toEqual(3);
+ expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);
+ * ```
+ *
+ * @param {(string|function())=} expression An angular expression to be executed.
+ *
+ * - `string`: execute using the rules as defined in {@link guide/expression expression}.
+ * - `function(scope)`: execute the function with the current `scope` parameter.
+ *
+ * @param {(object)=} locals Local variables object, useful for overriding values in scope.
+ * @returns {*} The result of evaluating the expression.
+ */
+ $eval: function(expr, locals) {
+ return $parse(expr)(this, locals);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$evalAsync
+ * @kind function
+ *
+ * @description
+ * Executes the expression on the current scope at a later point in time.
+ *
+ * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only
+ * that:
+ *
+ * - it will execute after the function that scheduled the evaluation (preferably before DOM
+ * rendering).
+ * - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after
+ * `expression` execution.
+ *
+ * Any exceptions from the execution of the expression are forwarded to the
+ * {@link ng.$exceptionHandler $exceptionHandler} service.
+ *
+ * __Note:__ if this function is called outside of a `$digest` cycle, a new `$digest` cycle
+ * will be scheduled. However, it is encouraged to always call code that changes the model
+ * from within an `$apply` call. That includes code evaluated via `$evalAsync`.
+ *
+ * @param {(string|function())=} expression An angular expression to be executed.
+ *
+ * - `string`: execute using the rules as defined in {@link guide/expression expression}.
+ * - `function(scope)`: execute the function with the current `scope` parameter.
+ *
+ * @param {(object)=} locals Local variables object, useful for overriding values in scope.
+ */
+ $evalAsync: function(expr, locals) {
+ // if we are outside of an $digest loop and this is the first time we are scheduling async
+ // task also schedule async auto-flush
+ if (!$rootScope.$$phase && !asyncQueue.length) {
+ $browser.defer(function() {
+ if (asyncQueue.length) {
+ $rootScope.$digest();
+ }
+ });
+ }
+
+ asyncQueue.push({scope: this, expression: expr, locals: locals});
+ },
+
+ $$postDigest: function(fn) {
+ postDigestQueue.push(fn);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$apply
+ * @kind function
+ *
+ * @description
+ * `$apply()` is used to execute an expression in angular from outside of the angular
+ * framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).
+ * Because we are calling into the angular framework we need to perform proper scope life
+ * cycle of {@link ng.$exceptionHandler exception handling},
+ * {@link ng.$rootScope.Scope#$digest executing watches}.
+ *
+ * ## Life cycle
+ *
+ * # Pseudo-Code of `$apply()`
+ * ```js
+ function $apply(expr) {
+ try {
+ return $eval(expr);
+ } catch (e) {
+ $exceptionHandler(e);
+ } finally {
+ $root.$digest();
+ }
+ }
+ * ```
+ *
+ *
+ * Scope's `$apply()` method transitions through the following stages:
+ *
+ * 1. The {@link guide/expression expression} is executed using the
+ * {@link ng.$rootScope.Scope#$eval $eval()} method.
+ * 2. Any exceptions from the execution of the expression are forwarded to the
+ * {@link ng.$exceptionHandler $exceptionHandler} service.
+ * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the
+ * expression was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method.
+ *
+ *
+ * @param {(string|function())=} exp An angular expression to be executed.
+ *
+ * - `string`: execute using the rules as defined in {@link guide/expression expression}.
+ * - `function(scope)`: execute the function with current `scope` parameter.
+ *
+ * @returns {*} The result of evaluating the expression.
+ */
+ $apply: function(expr) {
+ try {
+ beginPhase('$apply');
+ try {
+ return this.$eval(expr);
+ } finally {
+ clearPhase();
+ }
+ } catch (e) {
+ $exceptionHandler(e);
+ } finally {
+ try {
+ $rootScope.$digest();
+ } catch (e) {
+ $exceptionHandler(e);
+ throw e;
+ }
+ }
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$applyAsync
+ * @kind function
+ *
+ * @description
+ * Schedule the invocation of $apply to occur at a later time. The actual time difference
+ * varies across browsers, but is typically around ~10 milliseconds.
+ *
+ * This can be used to queue up multiple expressions which need to be evaluated in the same
+ * digest.
+ *
+ * @param {(string|function())=} exp An angular expression to be executed.
+ *
+ * - `string`: execute using the rules as defined in {@link guide/expression expression}.
+ * - `function(scope)`: execute the function with current `scope` parameter.
+ */
+ $applyAsync: function(expr) {
+ var scope = this;
+ expr && applyAsyncQueue.push($applyAsyncExpression);
+ scheduleApplyAsync();
+
+ function $applyAsyncExpression() {
+ scope.$eval(expr);
+ }
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$on
+ * @kind function
+ *
+ * @description
+ * Listens on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for
+ * discussion of event life cycle.
+ *
+ * The event listener function format is: `function(event, args...)`. The `event` object
+ * passed into the listener has the following attributes:
+ *
+ * - `targetScope` - `{Scope}`: the scope on which the event was `$emit`-ed or
+ * `$broadcast`-ed.
+ * - `currentScope` - `{Scope}`: the scope that is currently handling the event. Once the
+ * event propagates through the scope hierarchy, this property is set to null.
+ * - `name` - `{string}`: name of the event.
+ * - `stopPropagation` - `{function=}`: calling `stopPropagation` function will cancel
+ * further event propagation (available only for events that were `$emit`-ed).
+ * - `preventDefault` - `{function}`: calling `preventDefault` sets `defaultPrevented` flag
+ * to true.
+ * - `defaultPrevented` - `{boolean}`: true if `preventDefault` was called.
+ *
+ * @param {string} name Event name to listen on.
+ * @param {function(event, ...args)} listener Function to call when the event is emitted.
+ * @returns {function()} Returns a deregistration function for this listener.
+ */
+ $on: function(name, listener) {
+ var namedListeners = this.$$listeners[name];
+ if (!namedListeners) {
+ this.$$listeners[name] = namedListeners = [];
+ }
+ namedListeners.push(listener);
+
+ var current = this;
+ do {
+ if (!current.$$listenerCount[name]) {
+ current.$$listenerCount[name] = 0;
+ }
+ current.$$listenerCount[name]++;
+ } while ((current = current.$parent));
+
+ var self = this;
+ return function() {
+ var indexOfListener = namedListeners.indexOf(listener);
+ if (indexOfListener !== -1) {
+ namedListeners[indexOfListener] = null;
+ decrementListenerCount(self, 1, name);
+ }
+ };
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$emit
+ * @kind function
+ *
+ * @description
+ * Dispatches an event `name` upwards through the scope hierarchy notifying the
+ * registered {@link ng.$rootScope.Scope#$on} listeners.
+ *
+ * The event life cycle starts at the scope on which `$emit` was called. All
+ * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get
+ * notified. Afterwards, the event traverses upwards toward the root scope and calls all
+ * registered listeners along the way. The event will stop propagating if one of the listeners
+ * cancels it.
+ *
+ * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
+ * onto the {@link ng.$exceptionHandler $exceptionHandler} service.
+ *
+ * @param {string} name Event name to emit.
+ * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.
+ * @return {Object} Event object (see {@link ng.$rootScope.Scope#$on}).
+ */
+ $emit: function(name, args) {
+ var empty = [],
+ namedListeners,
+ scope = this,
+ stopPropagation = false,
+ event = {
+ name: name,
+ targetScope: scope,
+ stopPropagation: function() {stopPropagation = true;},
+ preventDefault: function() {
+ event.defaultPrevented = true;
+ },
+ defaultPrevented: false
+ },
+ listenerArgs = concat([event], arguments, 1),
+ i, length;
+
+ do {
+ namedListeners = scope.$$listeners[name] || empty;
+ event.currentScope = scope;
+ for (i = 0, length = namedListeners.length; i < length; i++) {
+
+ // if listeners were deregistered, defragment the array
+ if (!namedListeners[i]) {
+ namedListeners.splice(i, 1);
+ i--;
+ length--;
+ continue;
+ }
+ try {
+ //allow all listeners attached to the current scope to run
+ namedListeners[i].apply(null, listenerArgs);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+ //if any listener on the current scope stops propagation, prevent bubbling
+ if (stopPropagation) {
+ event.currentScope = null;
+ return event;
+ }
+ //traverse upwards
+ scope = scope.$parent;
+ } while (scope);
+
+ event.currentScope = null;
+
+ return event;
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$broadcast
+ * @kind function
+ *
+ * @description
+ * Dispatches an event `name` downwards to all child scopes (and their children) notifying the
+ * registered {@link ng.$rootScope.Scope#$on} listeners.
+ *
+ * The event life cycle starts at the scope on which `$broadcast` was called. All
+ * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get
+ * notified. Afterwards, the event propagates to all direct and indirect scopes of the current
+ * scope and calls all registered listeners along the way. The event cannot be canceled.
+ *
+ * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
+ * onto the {@link ng.$exceptionHandler $exceptionHandler} service.
+ *
+ * @param {string} name Event name to broadcast.
+ * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.
+ * @return {Object} Event object, see {@link ng.$rootScope.Scope#$on}
+ */
+ $broadcast: function(name, args) {
+ var target = this,
+ current = target,
+ next = target,
+ event = {
+ name: name,
+ targetScope: target,
+ preventDefault: function() {
+ event.defaultPrevented = true;
+ },
+ defaultPrevented: false
+ };
+
+ if (!target.$$listenerCount[name]) return event;
+
+ var listenerArgs = concat([event], arguments, 1),
+ listeners, i, length;
+
+ //down while you can, then up and next sibling or up and next sibling until back at root
+ while ((current = next)) {
+ event.currentScope = current;
+ listeners = current.$$listeners[name] || [];
+ for (i = 0, length = listeners.length; i < length; i++) {
+ // if listeners were deregistered, defragment the array
+ if (!listeners[i]) {
+ listeners.splice(i, 1);
+ i--;
+ length--;
+ continue;
+ }
+
+ try {
+ listeners[i].apply(null, listenerArgs);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+
+ // Insanity Warning: scope depth-first traversal
+ // yes, this code is a bit crazy, but it works and we have tests to prove it!
+ // this piece should be kept in sync with the traversal in $digest
+ // (though it differs due to having the extra check for $$listenerCount)
+ if (!(next = ((current.$$listenerCount[name] && current.$$childHead) ||
+ (current !== target && current.$$nextSibling)))) {
+ while (current !== target && !(next = current.$$nextSibling)) {
+ current = current.$parent;
+ }
+ }
+ }
+
+ event.currentScope = null;
+ return event;
+ }
+ };
+
+ var $rootScope = new Scope();
+
+ //The internal queues. Expose them on the $rootScope for debugging/testing purposes.
+ var asyncQueue = $rootScope.$$asyncQueue = [];
+ var postDigestQueue = $rootScope.$$postDigestQueue = [];
+ var applyAsyncQueue = $rootScope.$$applyAsyncQueue = [];
+
+ return $rootScope;
+
+
+ function beginPhase(phase) {
+ if ($rootScope.$$phase) {
+ throw $rootScopeMinErr('inprog', '{0} already in progress', $rootScope.$$phase);
+ }
+
+ $rootScope.$$phase = phase;
+ }
+
+ function clearPhase() {
+ $rootScope.$$phase = null;
+ }
+
+ function incrementWatchersCount(current, count) {
+ do {
+ current.$$watchersCount += count;
+ } while ((current = current.$parent));
+ }
+
+ function decrementListenerCount(current, count, name) {
+ do {
+ current.$$listenerCount[name] -= count;
+
+ if (current.$$listenerCount[name] === 0) {
+ delete current.$$listenerCount[name];
+ }
+ } while ((current = current.$parent));
+ }
+
+ /**
+ * function used as an initial value for watchers.
+ * because it's unique we can easily tell it apart from other values
+ */
+ function initWatchVal() {}
+
+ function flushApplyAsync() {
+ while (applyAsyncQueue.length) {
+ try {
+ applyAsyncQueue.shift()();
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+ applyAsyncId = null;
+ }
+
+ function scheduleApplyAsync() {
+ if (applyAsyncId === null) {
+ applyAsyncId = $browser.defer(function() {
+ $rootScope.$apply(flushApplyAsync);
+ });
+ }
+ }
+ }];
+}
+
+/**
+ * @description
+ * Private service to sanitize uris for links and images. Used by $compile and $sanitize.
+ */
+function $$SanitizeUriProvider() {
+ var aHrefSanitizationWhitelist = /^\s*(https?|ftp|mailto|tel|file):/,
+ imgSrcSanitizationWhitelist = /^\s*((https?|ftp|file|blob):|data:image\/)/;
+
+ /**
+ * @description
+ * Retrieves or overrides the default regular expression that is used for whitelisting of safe
+ * urls during a[href] sanitization.
+ *
+ * The sanitization is a security measure aimed at prevent XSS attacks via html links.
+ *
+ * Any url about to be assigned to a[href] via data-binding is first normalized and turned into
+ * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`
+ * regular expression. If a match is found, the original url is written into the dom. Otherwise,
+ * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
+ *
+ * @param {RegExp=} regexp New regexp to whitelist urls with.
+ * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
+ * chaining otherwise.
+ */
+ this.aHrefSanitizationWhitelist = function(regexp) {
+ if (isDefined(regexp)) {
+ aHrefSanitizationWhitelist = regexp;
+ return this;
+ }
+ return aHrefSanitizationWhitelist;
+ };
+
+
+ /**
+ * @description
+ * Retrieves or overrides the default regular expression that is used for whitelisting of safe
+ * urls during img[src] sanitization.
+ *
+ * The sanitization is a security measure aimed at prevent XSS attacks via html links.
+ *
+ * Any url about to be assigned to img[src] via data-binding is first normalized and turned into
+ * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`
+ * regular expression. If a match is found, the original url is written into the dom. Otherwise,
+ * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
+ *
+ * @param {RegExp=} regexp New regexp to whitelist urls with.
+ * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
+ * chaining otherwise.
+ */
+ this.imgSrcSanitizationWhitelist = function(regexp) {
+ if (isDefined(regexp)) {
+ imgSrcSanitizationWhitelist = regexp;
+ return this;
+ }
+ return imgSrcSanitizationWhitelist;
+ };
+
+ this.$get = function() {
+ return function sanitizeUri(uri, isImage) {
+ var regex = isImage ? imgSrcSanitizationWhitelist : aHrefSanitizationWhitelist;
+ var normalizedVal;
+ normalizedVal = urlResolve(uri).href;
+ if (normalizedVal !== '' && !normalizedVal.match(regex)) {
+ return 'unsafe:' + normalizedVal;
+ }
+ return uri;
+ };
+ };
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Any commits to this file should be reviewed with security in mind. *
+ * Changes to this file can potentially create security vulnerabilities. *
+ * An approval from 2 Core members with history of modifying *
+ * this file is required. *
+ * *
+ * Does the change somehow allow for arbitrary javascript to be executed? *
+ * Or allows for someone to change the prototype of built-in objects? *
+ * Or gives undesired access to variables likes document or window? *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+var $sceMinErr = minErr('$sce');
+
+var SCE_CONTEXTS = {
+ HTML: 'html',
+ CSS: 'css',
+ URL: 'url',
+ // RESOURCE_URL is a subtype of URL used in contexts where a privileged resource is sourced from a
+ // url. (e.g. ng-include, script src, templateUrl)
+ RESOURCE_URL: 'resourceUrl',
+ JS: 'js'
+};
+
+// Helper functions follow.
+
+function adjustMatcher(matcher) {
+ if (matcher === 'self') {
+ return matcher;
+ } else if (isString(matcher)) {
+ // Strings match exactly except for 2 wildcards - '*' and '**'.
+ // '*' matches any character except those from the set ':/.?&'.
+ // '**' matches any character (like .* in a RegExp).
+ // More than 2 *'s raises an error as it's ill defined.
+ if (matcher.indexOf('***') > -1) {
+ throw $sceMinErr('iwcard',
+ 'Illegal sequence *** in string matcher. String: {0}', matcher);
+ }
+ matcher = escapeForRegexp(matcher).
+ replace('\\*\\*', '.*').
+ replace('\\*', '[^:/.?&;]*');
+ return new RegExp('^' + matcher + '$');
+ } else if (isRegExp(matcher)) {
+ // The only other type of matcher allowed is a Regexp.
+ // Match entire URL / disallow partial matches.
+ // Flags are reset (i.e. no global, ignoreCase or multiline)
+ return new RegExp('^' + matcher.source + '$');
+ } else {
+ throw $sceMinErr('imatcher',
+ 'Matchers may only be "self", string patterns or RegExp objects');
+ }
+}
+
+
+function adjustMatchers(matchers) {
+ var adjustedMatchers = [];
+ if (isDefined(matchers)) {
+ forEach(matchers, function(matcher) {
+ adjustedMatchers.push(adjustMatcher(matcher));
+ });
+ }
+ return adjustedMatchers;
+}
+
+
+/**
+ * @ngdoc service
+ * @name $sceDelegate
+ * @kind function
+ *
+ * @description
+ *
+ * `$sceDelegate` is a service that is used by the `$sce` service to provide {@link ng.$sce Strict
+ * Contextual Escaping (SCE)} services to AngularJS.
+ *
+ * Typically, you would configure or override the {@link ng.$sceDelegate $sceDelegate} instead of
+ * the `$sce` service to customize the way Strict Contextual Escaping works in AngularJS. This is
+ * because, while the `$sce` provides numerous shorthand methods, etc., you really only need to
+ * override 3 core functions (`trustAs`, `getTrusted` and `valueOf`) to replace the way things
+ * work because `$sce` delegates to `$sceDelegate` for these operations.
+ *
+ * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} to configure this service.
+ *
+ * The default instance of `$sceDelegate` should work out of the box with little pain. While you
+ * can override it completely to change the behavior of `$sce`, the common case would
+ * involve configuring the {@link ng.$sceDelegateProvider $sceDelegateProvider} instead by setting
+ * your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as
+ * templates. Refer {@link ng.$sceDelegateProvider#resourceUrlWhitelist
+ * $sceDelegateProvider.resourceUrlWhitelist} and {@link
+ * ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}
+ */
+
+/**
+ * @ngdoc provider
+ * @name $sceDelegateProvider
+ * @description
+ *
+ * The `$sceDelegateProvider` provider allows developers to configure the {@link ng.$sceDelegate
+ * $sceDelegate} service. This allows one to get/set the whitelists and blacklists used to ensure
+ * that the URLs used for sourcing Angular templates are safe. Refer {@link
+ * ng.$sceDelegateProvider#resourceUrlWhitelist $sceDelegateProvider.resourceUrlWhitelist} and
+ * {@link ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}
+ *
+ * For the general details about this service in Angular, read the main page for {@link ng.$sce
+ * Strict Contextual Escaping (SCE)}.
+ *
+ * **Example**: Consider the following case. <a name="example"></a>
+ *
+ * - your app is hosted at url `http://myapp.example.com/`
+ * - but some of your templates are hosted on other domains you control such as
+ * `http://srv01.assets.example.com/`, `http://srv02.assets.example.com/`, etc.
+ * - and you have an open redirect at `http://myapp.example.com/clickThru?...`.
+ *
+ * Here is what a secure configuration for this scenario might look like:
+ *
+ * ```
+ * angular.module('myApp', []).config(function($sceDelegateProvider) {
+ * $sceDelegateProvider.resourceUrlWhitelist([
+ * // Allow same origin resource loads.
+ * 'self',
+ * // Allow loading from our assets domain. Notice the difference between * and **.
+ * 'http://srv*.assets.example.com/**'
+ * ]);
+ *
+ * // The blacklist overrides the whitelist so the open redirect here is blocked.
+ * $sceDelegateProvider.resourceUrlBlacklist([
+ * 'http://myapp.example.com/clickThru**'
+ * ]);
+ * });
+ * ```
+ */
+
+function $SceDelegateProvider() {
+ this.SCE_CONTEXTS = SCE_CONTEXTS;
+
+ // Resource URLs can also be trusted by policy.
+ var resourceUrlWhitelist = ['self'],
+ resourceUrlBlacklist = [];
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegateProvider#resourceUrlWhitelist
+ * @kind function
+ *
+ * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value
+ * provided. This must be an array or null. A snapshot of this array is used so further
+ * changes to the array are ignored.
+ *
+ * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items
+ * allowed in this array.
+ *
+ * Note: **an empty whitelist array will block all URLs**!
+ *
+ * @return {Array} the currently set whitelist array.
+ *
+ * The **default value** when no whitelist has been explicitly set is `['self']` allowing only
+ * same origin resource requests.
+ *
+ * @description
+ * Sets/Gets the whitelist of trusted resource URLs.
+ */
+ this.resourceUrlWhitelist = function(value) {
+ if (arguments.length) {
+ resourceUrlWhitelist = adjustMatchers(value);
+ }
+ return resourceUrlWhitelist;
+ };
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegateProvider#resourceUrlBlacklist
+ * @kind function
+ *
+ * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value
+ * provided. This must be an array or null. A snapshot of this array is used so further
+ * changes to the array are ignored.
+ *
+ * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items
+ * allowed in this array.
+ *
+ * The typical usage for the blacklist is to **block
+ * [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as
+ * these would otherwise be trusted but actually return content from the redirected domain.
+ *
+ * Finally, **the blacklist overrides the whitelist** and has the final say.
+ *
+ * @return {Array} the currently set blacklist array.
+ *
+ * The **default value** when no whitelist has been explicitly set is the empty array (i.e. there
+ * is no blacklist.)
+ *
+ * @description
+ * Sets/Gets the blacklist of trusted resource URLs.
+ */
+
+ this.resourceUrlBlacklist = function(value) {
+ if (arguments.length) {
+ resourceUrlBlacklist = adjustMatchers(value);
+ }
+ return resourceUrlBlacklist;
+ };
+
+ this.$get = ['$injector', function($injector) {
+
+ var htmlSanitizer = function htmlSanitizer(html) {
+ throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');
+ };
+
+ if ($injector.has('$sanitize')) {
+ htmlSanitizer = $injector.get('$sanitize');
+ }
+
+
+ function matchUrl(matcher, parsedUrl) {
+ if (matcher === 'self') {
+ return urlIsSameOrigin(parsedUrl);
+ } else {
+ // definitely a regex. See adjustMatchers()
+ return !!matcher.exec(parsedUrl.href);
+ }
+ }
+
+ function isResourceUrlAllowedByPolicy(url) {
+ var parsedUrl = urlResolve(url.toString());
+ var i, n, allowed = false;
+ // Ensure that at least one item from the whitelist allows this url.
+ for (i = 0, n = resourceUrlWhitelist.length; i < n; i++) {
+ if (matchUrl(resourceUrlWhitelist[i], parsedUrl)) {
+ allowed = true;
+ break;
+ }
+ }
+ if (allowed) {
+ // Ensure that no item from the blacklist blocked this url.
+ for (i = 0, n = resourceUrlBlacklist.length; i < n; i++) {
+ if (matchUrl(resourceUrlBlacklist[i], parsedUrl)) {
+ allowed = false;
+ break;
+ }
+ }
+ }
+ return allowed;
+ }
+
+ function generateHolderType(Base) {
+ var holderType = function TrustedValueHolderType(trustedValue) {
+ this.$$unwrapTrustedValue = function() {
+ return trustedValue;
+ };
+ };
+ if (Base) {
+ holderType.prototype = new Base();
+ }
+ holderType.prototype.valueOf = function sceValueOf() {
+ return this.$$unwrapTrustedValue();
+ };
+ holderType.prototype.toString = function sceToString() {
+ return this.$$unwrapTrustedValue().toString();
+ };
+ return holderType;
+ }
+
+ var trustedValueHolderBase = generateHolderType(),
+ byType = {};
+
+ byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase);
+ byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase);
+ byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase);
+ byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase);
+ byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]);
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegate#trustAs
+ *
+ * @description
+ * Returns an object that is trusted by angular for use in specified strict
+ * contextual escaping contexts (such as ng-bind-html, ng-include, any src
+ * attribute interpolation, any dom event binding attribute interpolation
+ * such as for onclick, etc.) that uses the provided value.
+ * See {@link ng.$sce $sce} for enabling strict contextual escaping.
+ *
+ * @param {string} type The kind of context in which this value is safe for use. e.g. url,
+ * resourceUrl, html, js and css.
+ * @param {*} value The value that that should be considered trusted/safe.
+ * @returns {*} A value that can be used to stand in for the provided `value` in places
+ * where Angular expects a $sce.trustAs() return value.
+ */
+ function trustAs(type, trustedValue) {
+ var Constructor = (byType.hasOwnProperty(type) ? byType[type] : null);
+ if (!Constructor) {
+ throw $sceMinErr('icontext',
+ 'Attempted to trust a value in invalid context. Context: {0}; Value: {1}',
+ type, trustedValue);
+ }
+ if (trustedValue === null || trustedValue === undefined || trustedValue === '') {
+ return trustedValue;
+ }
+ // All the current contexts in SCE_CONTEXTS happen to be strings. In order to avoid trusting
+ // mutable objects, we ensure here that the value passed in is actually a string.
+ if (typeof trustedValue !== 'string') {
+ throw $sceMinErr('itype',
+ 'Attempted to trust a non-string value in a content requiring a string: Context: {0}',
+ type);
+ }
+ return new Constructor(trustedValue);
+ }
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegate#valueOf
+ *
+ * @description
+ * If the passed parameter had been returned by a prior call to {@link ng.$sceDelegate#trustAs
+ * `$sceDelegate.trustAs`}, returns the value that had been passed to {@link
+ * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.
+ *
+ * If the passed parameter is not a value that had been returned by {@link
+ * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}, returns it as-is.
+ *
+ * @param {*} value The result of a prior {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}
+ * call or anything else.
+ * @returns {*} The `value` that was originally provided to {@link ng.$sceDelegate#trustAs
+ * `$sceDelegate.trustAs`} if `value` is the result of such a call. Otherwise, returns
+ * `value` unchanged.
+ */
+ function valueOf(maybeTrusted) {
+ if (maybeTrusted instanceof trustedValueHolderBase) {
+ return maybeTrusted.$$unwrapTrustedValue();
+ } else {
+ return maybeTrusted;
+ }
+ }
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegate#getTrusted
+ *
+ * @description
+ * Takes the result of a {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call and
+ * returns the originally supplied value if the queried context type is a supertype of the
+ * created type. If this condition isn't satisfied, throws an exception.
+ *
+ * @param {string} type The kind of context in which this value is to be used.
+ * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs
+ * `$sceDelegate.trustAs`} call.
+ * @returns {*} The value the was originally provided to {@link ng.$sceDelegate#trustAs
+ * `$sceDelegate.trustAs`} if valid in this context. Otherwise, throws an exception.
+ */
+ function getTrusted(type, maybeTrusted) {
+ if (maybeTrusted === null || maybeTrusted === undefined || maybeTrusted === '') {
+ return maybeTrusted;
+ }
+ var constructor = (byType.hasOwnProperty(type) ? byType[type] : null);
+ if (constructor && maybeTrusted instanceof constructor) {
+ return maybeTrusted.$$unwrapTrustedValue();
+ }
+ // If we get here, then we may only take one of two actions.
+ // 1. sanitize the value for the requested type, or
+ // 2. throw an exception.
+ if (type === SCE_CONTEXTS.RESOURCE_URL) {
+ if (isResourceUrlAllowedByPolicy(maybeTrusted)) {
+ return maybeTrusted;
+ } else {
+ throw $sceMinErr('insecurl',
+ 'Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}',
+ maybeTrusted.toString());
+ }
+ } else if (type === SCE_CONTEXTS.HTML) {
+ return htmlSanitizer(maybeTrusted);
+ }
+ throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');
+ }
+
+ return { trustAs: trustAs,
+ getTrusted: getTrusted,
+ valueOf: valueOf };
+ }];
+}
+
+
+/**
+ * @ngdoc provider
+ * @name $sceProvider
+ * @description
+ *
+ * The $sceProvider provider allows developers to configure the {@link ng.$sce $sce} service.
+ * - enable/disable Strict Contextual Escaping (SCE) in a module
+ * - override the default implementation with a custom delegate
+ *
+ * Read more about {@link ng.$sce Strict Contextual Escaping (SCE)}.
+ */
+
+/* jshint maxlen: false*/
+
+/**
+ * @ngdoc service
+ * @name $sce
+ * @kind function
+ *
+ * @description
+ *
+ * `$sce` is a service that provides Strict Contextual Escaping services to AngularJS.
+ *
+ * # Strict Contextual Escaping
+ *
+ * Strict Contextual Escaping (SCE) is a mode in which AngularJS requires bindings in certain
+ * contexts to result in a value that is marked as safe to use for that context. One example of
+ * such a context is binding arbitrary html controlled by the user via `ng-bind-html`. We refer
+ * to these contexts as privileged or SCE contexts.
+ *
+ * As of version 1.2, Angular ships with SCE enabled by default.
+ *
+ * Note: When enabled (the default), IE<11 in quirks mode is not supported. In this mode, IE<11 allow
+ * one to execute arbitrary javascript by the use of the expression() syntax. Refer
+ * <http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx> to learn more about them.
+ * You can ensure your document is in standards mode and not quirks mode by adding `<!doctype html>`
+ * to the top of your HTML document.
+ *
+ * SCE assists in writing code in way that (a) is secure by default and (b) makes auditing for
+ * security vulnerabilities such as XSS, clickjacking, etc. a lot easier.
+ *
+ * Here's an example of a binding in a privileged context:
+ *
+ * ```
+ * <input ng-model="userHtml" aria-label="User input">
+ * <div ng-bind-html="userHtml"></div>
+ * ```
+ *
+ * Notice that `ng-bind-html` is bound to `userHtml` controlled by the user. With SCE
+ * disabled, this application allows the user to render arbitrary HTML into the DIV.
+ * In a more realistic example, one may be rendering user comments, blog articles, etc. via
+ * bindings. (HTML is just one example of a context where rendering user controlled input creates
+ * security vulnerabilities.)
+ *
+ * For the case of HTML, you might use a library, either on the client side, or on the server side,
+ * to sanitize unsafe HTML before binding to the value and rendering it in the document.
+ *
+ * How would you ensure that every place that used these types of bindings was bound to a value that
+ * was sanitized by your library (or returned as safe for rendering by your server?) How can you
+ * ensure that you didn't accidentally delete the line that sanitized the value, or renamed some
+ * properties/fields and forgot to update the binding to the sanitized value?
+ *
+ * To be secure by default, you want to ensure that any such bindings are disallowed unless you can
+ * determine that something explicitly says it's safe to use a value for binding in that
+ * context. You can then audit your code (a simple grep would do) to ensure that this is only done
+ * for those values that you can easily tell are safe - because they were received from your server,
+ * sanitized by your library, etc. You can organize your codebase to help with this - perhaps
+ * allowing only the files in a specific directory to do this. Ensuring that the internal API
+ * exposed by that code doesn't markup arbitrary values as safe then becomes a more manageable task.
+ *
+ * In the case of AngularJS' SCE service, one uses {@link ng.$sce#trustAs $sce.trustAs}
+ * (and shorthand methods such as {@link ng.$sce#trustAsHtml $sce.trustAsHtml}, etc.) to
+ * obtain values that will be accepted by SCE / privileged contexts.
+ *
+ *
+ * ## How does it work?
+ *
+ * In privileged contexts, directives and code will bind to the result of {@link ng.$sce#getTrusted
+ * $sce.getTrusted(context, value)} rather than to the value directly. Directives use {@link
+ * ng.$sce#parseAs $sce.parseAs} rather than `$parse` to watch attribute bindings, which performs the
+ * {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals.
+ *
+ * As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link
+ * ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly
+ * simplified):
+ *
+ * ```
+ * var ngBindHtmlDirective = ['$sce', function($sce) {
+ * return function(scope, element, attr) {
+ * scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) {
+ * element.html(value || '');
+ * });
+ * };
+ * }];
+ * ```
+ *
+ * ## Impact on loading templates
+ *
+ * This applies both to the {@link ng.directive:ngInclude `ng-include`} directive as well as
+ * `templateUrl`'s specified by {@link guide/directive directives}.
+ *
+ * By default, Angular only loads templates from the same domain and protocol as the application
+ * document. This is done by calling {@link ng.$sce#getTrustedResourceUrl
+ * $sce.getTrustedResourceUrl} on the template URL. To load templates from other domains and/or
+ * protocols, you may either either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist
+ * them} or {@link ng.$sce#trustAsResourceUrl wrap it} into a trusted value.
+ *
+ * *Please note*:
+ * The browser's
+ * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)
+ * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)
+ * policy apply in addition to this and may further restrict whether the template is successfully
+ * loaded. This means that without the right CORS policy, loading templates from a different domain
+ * won't work on all browsers. Also, loading templates from `file://` URL does not work on some
+ * browsers.
+ *
+ * ## This feels like too much overhead
+ *
+ * It's important to remember that SCE only applies to interpolation expressions.
+ *
+ * If your expressions are constant literals, they're automatically trusted and you don't need to
+ * call `$sce.trustAs` on them (remember to include the `ngSanitize` module) (e.g.
+ * `<div ng-bind-html="'<b>implicitly trusted</b>'"></div>`) just works.
+ *
+ * Additionally, `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them
+ * through {@link ng.$sce#getTrusted $sce.getTrusted}. SCE doesn't play a role here.
+ *
+ * The included {@link ng.$sceDelegate $sceDelegate} comes with sane defaults to allow you to load
+ * templates in `ng-include` from your application's domain without having to even know about SCE.
+ * It blocks loading templates from other domains or loading templates over http from an https
+ * served document. You can change these by setting your own custom {@link
+ * ng.$sceDelegateProvider#resourceUrlWhitelist whitelists} and {@link
+ * ng.$sceDelegateProvider#resourceUrlBlacklist blacklists} for matching such URLs.
+ *
+ * This significantly reduces the overhead. It is far easier to pay the small overhead and have an
+ * application that's secure and can be audited to verify that with much more ease than bolting
+ * security onto an application later.
+ *
+ * <a name="contexts"></a>
+ * ## What trusted context types are supported?
+ *
+ * | Context | Notes |
+ * |---------------------|----------------|
+ * | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered and the {@link ngSanitize $sanitize} module is present this will sanitize the value instead of throwing an error. |
+ * | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. |
+ * | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`<a href=` and `<img src=` sanitize their urls and don't constitute an SCE context. |
+ * | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose contents are also safe to include in your application. Examples include `ng-include`, `src` / `ngSrc` bindings for tags other than `IMG` (e.g. `IFRAME`, `OBJECT`, etc.) <br><br>Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |
+ * | `$sce.JS` | For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives. |
+ *
+ * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist} <a name="resourceUrlPatternItem"></a>
+ *
+ * Each element in these arrays must be one of the following:
+ *
+ * - **'self'**
+ * - The special **string**, `'self'`, can be used to match against all URLs of the **same
+ * domain** as the application document using the **same protocol**.
+ * - **String** (except the special value `'self'`)
+ * - The string is matched against the full *normalized / absolute URL* of the resource
+ * being tested (substring matches are not good enough.)
+ * - There are exactly **two wildcard sequences** - `*` and `**`. All other characters
+ * match themselves.
+ * - `*`: matches zero or more occurrences of any character other than one of the following 6
+ * characters: '`:`', '`/`', '`.`', '`?`', '`&`' and '`;`'. It's a useful wildcard for use
+ * in a whitelist.
+ * - `**`: matches zero or more occurrences of *any* character. As such, it's not
+ * appropriate for use in a scheme, domain, etc. as it would match too much. (e.g.
+ * http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might
+ * not have been the intention.) Its usage at the very end of the path is ok. (e.g.
+ * http://foo.example.com/templates/**).
+ * - **RegExp** (*see caveat below*)
+ * - *Caveat*: While regular expressions are powerful and offer great flexibility, their syntax
+ * (and all the inevitable escaping) makes them *harder to maintain*. It's easy to
+ * accidentally introduce a bug when one updates a complex expression (imho, all regexes should
+ * have good test coverage). For instance, the use of `.` in the regex is correct only in a
+ * small number of cases. A `.` character in the regex used when matching the scheme or a
+ * subdomain could be matched against a `:` or literal `.` that was likely not intended. It
+ * is highly recommended to use the string patterns and only fall back to regular expressions
+ * as a last resort.
+ * - The regular expression must be an instance of RegExp (i.e. not a string.) It is
+ * matched against the **entire** *normalized / absolute URL* of the resource being tested
+ * (even when the RegExp did not have the `^` and `$` codes.) In addition, any flags
+ * present on the RegExp (such as multiline, global, ignoreCase) are ignored.
+ * - If you are generating your JavaScript from some other templating engine (not
+ * recommended, e.g. in issue [#4006](https://github.com/angular/angular.js/issues/4006)),
+ * remember to escape your regular expression (and be aware that you might need more than
+ * one level of escaping depending on your templating engine and the way you interpolated
+ * the value.) Do make use of your platform's escaping mechanism as it might be good
+ * enough before coding your own. E.g. Ruby has
+ * [Regexp.escape(str)](http://www.ruby-doc.org/core-2.0.0/Regexp.html#method-c-escape)
+ * and Python has [re.escape](http://docs.python.org/library/re.html#re.escape).
+ * Javascript lacks a similar built in function for escaping. Take a look at Google
+ * Closure library's [goog.string.regExpEscape(s)](
+ * http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962).
+ *
+ * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} for an example.
+ *
+ * ## Show me an example using SCE.
+ *
+ * <example module="mySceApp" deps="angular-sanitize.js">
+ * <file name="index.html">
+ * <div ng-controller="AppController as myCtrl">
+ * <i ng-bind-html="myCtrl.explicitlyTrustedHtml" id="explicitlyTrustedHtml"></i><br><br>
+ * <b>User comments</b><br>
+ * By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when
+ * $sanitize is available. If $sanitize isn't available, this results in an error instead of an
+ * exploit.
+ * <div class="well">
+ * <div ng-repeat="userComment in myCtrl.userComments">
+ * <b>{{userComment.name}}</b>:
+ * <span ng-bind-html="userComment.htmlComment" class="htmlComment"></span>
+ * <br>
+ * </div>
+ * </div>
+ * </div>
+ * </file>
+ *
+ * <file name="script.js">
+ * angular.module('mySceApp', ['ngSanitize'])
+ * .controller('AppController', ['$http', '$templateCache', '$sce',
+ * function($http, $templateCache, $sce) {
+ * var self = this;
+ * $http.get("test_data.json", {cache: $templateCache}).success(function(userComments) {
+ * self.userComments = userComments;
+ * });
+ * self.explicitlyTrustedHtml = $sce.trustAsHtml(
+ * '<span onmouseover="this.textContent="Explicitly trusted HTML bypasses ' +
+ * 'sanitization."">Hover over this text.</span>');
+ * }]);
+ * </file>
+ *
+ * <file name="test_data.json">
+ * [
+ * { "name": "Alice",
+ * "htmlComment":
+ * "<span onmouseover='this.textContent=\"PWN3D!\"'>Is <i>anyone</i> reading this?</span>"
+ * },
+ * { "name": "Bob",
+ * "htmlComment": "<i>Yes!</i> Am I the only other one?"
+ * }
+ * ]
+ * </file>
+ *
+ * <file name="protractor.js" type="protractor">
+ * describe('SCE doc demo', function() {
+ * it('should sanitize untrusted values', function() {
+ * expect(element.all(by.css('.htmlComment')).first().getInnerHtml())
+ * .toBe('<span>Is <i>anyone</i> reading this?</span>');
+ * });
+ *
+ * it('should NOT sanitize explicitly trusted values', function() {
+ * expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe(
+ * '<span onmouseover="this.textContent="Explicitly trusted HTML bypasses ' +
+ * 'sanitization."">Hover over this text.</span>');
+ * });
+ * });
+ * </file>
+ * </example>
+ *
+ *
+ *
+ * ## Can I disable SCE completely?
+ *
+ * Yes, you can. However, this is strongly discouraged. SCE gives you a lot of security benefits
+ * for little coding overhead. It will be much harder to take an SCE disabled application and
+ * either secure it on your own or enable SCE at a later stage. It might make sense to disable SCE
+ * for cases where you have a lot of existing code that was written before SCE was introduced and
+ * you're migrating them a module at a time.
+ *
+ * That said, here's how you can completely disable SCE:
+ *
+ * ```
+ * angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {
+ * // Completely disable SCE. For demonstration purposes only!
+ * // Do not use in new projects.
+ * $sceProvider.enabled(false);
+ * });
+ * ```
+ *
+ */
+/* jshint maxlen: 100 */
+
+function $SceProvider() {
+ var enabled = true;
+
+ /**
+ * @ngdoc method
+ * @name $sceProvider#enabled
+ * @kind function
+ *
+ * @param {boolean=} value If provided, then enables/disables SCE.
+ * @return {boolean} true if SCE is enabled, false otherwise.
+ *
+ * @description
+ * Enables/disables SCE and returns the current value.
+ */
+ this.enabled = function(value) {
+ if (arguments.length) {
+ enabled = !!value;
+ }
+ return enabled;
+ };
+
+
+ /* Design notes on the default implementation for SCE.
+ *
+ * The API contract for the SCE delegate
+ * -------------------------------------
+ * The SCE delegate object must provide the following 3 methods:
+ *
+ * - trustAs(contextEnum, value)
+ * This method is used to tell the SCE service that the provided value is OK to use in the
+ * contexts specified by contextEnum. It must return an object that will be accepted by
+ * getTrusted() for a compatible contextEnum and return this value.
+ *
+ * - valueOf(value)
+ * For values that were not produced by trustAs(), return them as is. For values that were
+ * produced by trustAs(), return the corresponding input value to trustAs. Basically, if
+ * trustAs is wrapping the given values into some type, this operation unwraps it when given
+ * such a value.
+ *
+ * - getTrusted(contextEnum, value)
+ * This function should return the a value that is safe to use in the context specified by
+ * contextEnum or throw and exception otherwise.
+ *
+ * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be
+ * opaque or wrapped in some holder object. That happens to be an implementation detail. For
+ * instance, an implementation could maintain a registry of all trusted objects by context. In
+ * such a case, trustAs() would return the same object that was passed in. getTrusted() would
+ * return the same object passed in if it was found in the registry under a compatible context or
+ * throw an exception otherwise. An implementation might only wrap values some of the time based
+ * on some criteria. getTrusted() might return a value and not throw an exception for special
+ * constants or objects even if not wrapped. All such implementations fulfill this contract.
+ *
+ *
+ * A note on the inheritance model for SCE contexts
+ * ------------------------------------------------
+ * I've used inheritance and made RESOURCE_URL wrapped types a subtype of URL wrapped types. This
+ * is purely an implementation details.
+ *
+ * The contract is simply this:
+ *
+ * getTrusted($sce.RESOURCE_URL, value) succeeding implies that getTrusted($sce.URL, value)
+ * will also succeed.
+ *
+ * Inheritance happens to capture this in a natural way. In some future, we
+ * may not use inheritance anymore. That is OK because no code outside of
+ * sce.js and sceSpecs.js would need to be aware of this detail.
+ */
+
+ this.$get = ['$parse', '$sceDelegate', function(
+ $parse, $sceDelegate) {
+ // Prereq: Ensure that we're not running in IE<11 quirks mode. In that mode, IE < 11 allow
+ // the "expression(javascript expression)" syntax which is insecure.
+ if (enabled && msie < 8) {
+ throw $sceMinErr('iequirks',
+ 'Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks ' +
+ 'mode. You can fix this by adding the text <!doctype html> to the top of your HTML ' +
+ 'document. See http://docs.angularjs.org/api/ng.$sce for more information.');
+ }
+
+ var sce = shallowCopy(SCE_CONTEXTS);
+
+ /**
+ * @ngdoc method
+ * @name $sce#isEnabled
+ * @kind function
+ *
+ * @return {Boolean} true if SCE is enabled, false otherwise. If you want to set the value, you
+ * have to do it at module config time on {@link ng.$sceProvider $sceProvider}.
+ *
+ * @description
+ * Returns a boolean indicating if SCE is enabled.
+ */
+ sce.isEnabled = function() {
+ return enabled;
+ };
+ sce.trustAs = $sceDelegate.trustAs;
+ sce.getTrusted = $sceDelegate.getTrusted;
+ sce.valueOf = $sceDelegate.valueOf;
+
+ if (!enabled) {
+ sce.trustAs = sce.getTrusted = function(type, value) { return value; };
+ sce.valueOf = identity;
+ }
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAs
+ *
+ * @description
+ * Converts Angular {@link guide/expression expression} into a function. This is like {@link
+ * ng.$parse $parse} and is identical when the expression is a literal constant. Otherwise, it
+ * wraps the expression in a call to {@link ng.$sce#getTrusted $sce.getTrusted(*type*,
+ * *result*)}
+ *
+ * @param {string} type The kind of SCE context in which this result will be used.
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+ sce.parseAs = function sceParseAs(type, expr) {
+ var parsed = $parse(expr);
+ if (parsed.literal && parsed.constant) {
+ return parsed;
+ } else {
+ return $parse(expr, function(value) {
+ return sce.getTrusted(type, value);
+ });
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAs
+ *
+ * @description
+ * Delegates to {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}. As such,
+ * returns an object that is trusted by angular for use in specified strict contextual
+ * escaping contexts (such as ng-bind-html, ng-include, any src attribute
+ * interpolation, any dom event binding attribute interpolation such as for onclick, etc.)
+ * that uses the provided value. See * {@link ng.$sce $sce} for enabling strict contextual
+ * escaping.
+ *
+ * @param {string} type The kind of context in which this value is safe for use. e.g. url,
+ * resourceUrl, html, js and css.
+ * @param {*} value The value that that should be considered trusted/safe.
+ * @returns {*} A value that can be used to stand in for the provided `value` in places
+ * where Angular expects a $sce.trustAs() return value.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAsHtml
+ *
+ * @description
+ * Shorthand method. `$sce.trustAsHtml(value)` →
+ * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.HTML, value)`}
+ *
+ * @param {*} value The value to trustAs.
+ * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedHtml
+ * $sce.getTrustedHtml(value)} to obtain the original value. (privileged directives
+ * only accept expressions that are either literal constants or are the
+ * return value of {@link ng.$sce#trustAs $sce.trustAs}.)
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAsUrl
+ *
+ * @description
+ * Shorthand method. `$sce.trustAsUrl(value)` →
+ * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.URL, value)`}
+ *
+ * @param {*} value The value to trustAs.
+ * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedUrl
+ * $sce.getTrustedUrl(value)} to obtain the original value. (privileged directives
+ * only accept expressions that are either literal constants or are the
+ * return value of {@link ng.$sce#trustAs $sce.trustAs}.)
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAsResourceUrl
+ *
+ * @description
+ * Shorthand method. `$sce.trustAsResourceUrl(value)` →
+ * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.RESOURCE_URL, value)`}
+ *
+ * @param {*} value The value to trustAs.
+ * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedResourceUrl
+ * $sce.getTrustedResourceUrl(value)} to obtain the original value. (privileged directives
+ * only accept expressions that are either literal constants or are the return
+ * value of {@link ng.$sce#trustAs $sce.trustAs}.)
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAsJs
+ *
+ * @description
+ * Shorthand method. `$sce.trustAsJs(value)` →
+ * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.JS, value)`}
+ *
+ * @param {*} value The value to trustAs.
+ * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedJs
+ * $sce.getTrustedJs(value)} to obtain the original value. (privileged directives
+ * only accept expressions that are either literal constants or are the
+ * return value of {@link ng.$sce#trustAs $sce.trustAs}.)
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrusted
+ *
+ * @description
+ * Delegates to {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted`}. As such,
+ * takes the result of a {@link ng.$sce#trustAs `$sce.trustAs`}() call and returns the
+ * originally supplied value if the queried context type is a supertype of the created type.
+ * If this condition isn't satisfied, throws an exception.
+ *
+ * @param {string} type The kind of context in which this value is to be used.
+ * @param {*} maybeTrusted The result of a prior {@link ng.$sce#trustAs `$sce.trustAs`}
+ * call.
+ * @returns {*} The value the was originally provided to
+ * {@link ng.$sce#trustAs `$sce.trustAs`} if valid in this context.
+ * Otherwise, throws an exception.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedHtml
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedHtml(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.HTML, value)`}
+ *
+ * @param {*} value The value to pass to `$sce.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.HTML, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedCss
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedCss(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.CSS, value)`}
+ *
+ * @param {*} value The value to pass to `$sce.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.CSS, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedUrl
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedUrl(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.URL, value)`}
+ *
+ * @param {*} value The value to pass to `$sce.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.URL, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedResourceUrl
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedResourceUrl(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.RESOURCE_URL, value)`}
+ *
+ * @param {*} value The value to pass to `$sceDelegate.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.RESOURCE_URL, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedJs
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedJs(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.JS, value)`}
+ *
+ * @param {*} value The value to pass to `$sce.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.JS, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsHtml
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsHtml(expression string)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.HTML, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsCss
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsCss(value)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.CSS, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsUrl
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsUrl(value)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.URL, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsResourceUrl
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsResourceUrl(value)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.RESOURCE_URL, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsJs
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsJs(value)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.JS, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ // Shorthand delegations.
+ var parse = sce.parseAs,
+ getTrusted = sce.getTrusted,
+ trustAs = sce.trustAs;
+
+ forEach(SCE_CONTEXTS, function(enumValue, name) {
+ var lName = lowercase(name);
+ sce[camelCase("parse_as_" + lName)] = function(expr) {
+ return parse(enumValue, expr);
+ };
+ sce[camelCase("get_trusted_" + lName)] = function(value) {
+ return getTrusted(enumValue, value);
+ };
+ sce[camelCase("trust_as_" + lName)] = function(value) {
+ return trustAs(enumValue, value);
+ };
+ });
+
+ return sce;
+ }];
+}
+
+/**
+ * !!! This is an undocumented "private" service !!!
+ *
+ * @name $sniffer
+ * @requires $window
+ * @requires $document
+ *
+ * @property {boolean} history Does the browser support html5 history api ?
+ * @property {boolean} transitions Does the browser support CSS transition events ?
+ * @property {boolean} animations Does the browser support CSS animation events ?
+ *
+ * @description
+ * This is very simple implementation of testing browser's features.
+ */
+function $SnifferProvider() {
+ this.$get = ['$window', '$document', function($window, $document) {
+ var eventSupport = {},
+ android =
+ toInt((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),
+ boxee = /Boxee/i.test(($window.navigator || {}).userAgent),
+ document = $document[0] || {},
+ vendorPrefix,
+ vendorRegex = /^(Moz|webkit|ms)(?=[A-Z])/,
+ bodyStyle = document.body && document.body.style,
+ transitions = false,
+ animations = false,
+ match;
+
+ if (bodyStyle) {
+ for (var prop in bodyStyle) {
+ if (match = vendorRegex.exec(prop)) {
+ vendorPrefix = match[0];
+ vendorPrefix = vendorPrefix.substr(0, 1).toUpperCase() + vendorPrefix.substr(1);
+ break;
+ }
+ }
+
+ if (!vendorPrefix) {
+ vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit';
+ }
+
+ transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));
+ animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));
+
+ if (android && (!transitions || !animations)) {
+ transitions = isString(bodyStyle.webkitTransition);
+ animations = isString(bodyStyle.webkitAnimation);
+ }
+ }
+
+
+ return {
+ // Android has history.pushState, but it does not update location correctly
+ // so let's not use the history API at all.
+ // http://code.google.com/p/android/issues/detail?id=17471
+ // https://github.com/angular/angular.js/issues/904
+
+ // older webkit browser (533.9) on Boxee box has exactly the same problem as Android has
+ // so let's not use the history API also
+ // We are purposefully using `!(android < 4)` to cover the case when `android` is undefined
+ // jshint -W018
+ history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),
+ // jshint +W018
+ hasEvent: function(event) {
+ // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have
+ // it. In particular the event is not fired when backspace or delete key are pressed or
+ // when cut operation is performed.
+ // IE10+ implements 'input' event but it erroneously fires under various situations,
+ // e.g. when placeholder changes, or a form is focused.
+ if (event === 'input' && msie <= 11) return false;
+
+ if (isUndefined(eventSupport[event])) {
+ var divElm = document.createElement('div');
+ eventSupport[event] = 'on' + event in divElm;
+ }
+
+ return eventSupport[event];
+ },
+ csp: csp(),
+ vendorPrefix: vendorPrefix,
+ transitions: transitions,
+ animations: animations,
+ android: android
+ };
+ }];
+}
+
+var $compileMinErr = minErr('$compile');
+
+/**
+ * @ngdoc service
+ * @name $templateRequest
+ *
+ * @description
+ * The `$templateRequest` service runs security checks then downloads the provided template using
+ * `$http` and, upon success, stores the contents inside of `$templateCache`. If the HTTP request
+ * fails or the response data of the HTTP request is empty, a `$compile` error will be thrown (the
+ * exception can be thwarted by setting the 2nd parameter of the function to true). Note that the
+ * contents of `$templateCache` are trusted, so the call to `$sce.getTrustedUrl(tpl)` is omitted
+ * when `tpl` is of type string and `$templateCache` has the matching entry.
+ *
+ * @param {string|TrustedResourceUrl} tpl The HTTP request template URL
+ * @param {boolean=} ignoreRequestError Whether or not to ignore the exception when the request fails or the template is empty
+ *
+ * @return {Promise} a promise for the HTTP response data of the given URL.
+ *
+ * @property {number} totalPendingRequests total amount of pending template requests being downloaded.
+ */
+function $TemplateRequestProvider() {
+ this.$get = ['$templateCache', '$http', '$q', '$sce', function($templateCache, $http, $q, $sce) {
+ function handleRequestFn(tpl, ignoreRequestError) {
+ handleRequestFn.totalPendingRequests++;
+
+ // We consider the template cache holds only trusted templates, so
+ // there's no need to go through whitelisting again for keys that already
+ // are included in there. This also makes Angular accept any script
+ // directive, no matter its name. However, we still need to unwrap trusted
+ // types.
+ if (!isString(tpl) || !$templateCache.get(tpl)) {
+ tpl = $sce.getTrustedResourceUrl(tpl);
+ }
+
+ var transformResponse = $http.defaults && $http.defaults.transformResponse;
+
+ if (isArray(transformResponse)) {
+ transformResponse = transformResponse.filter(function(transformer) {
+ return transformer !== defaultHttpResponseTransform;
+ });
+ } else if (transformResponse === defaultHttpResponseTransform) {
+ transformResponse = null;
+ }
+
+ var httpOptions = {
+ cache: $templateCache,
+ transformResponse: transformResponse
+ };
+
+ return $http.get(tpl, httpOptions)
+ ['finally'](function() {
+ handleRequestFn.totalPendingRequests--;
+ })
+ .then(function(response) {
+ $templateCache.put(tpl, response.data);
+ return response.data;
+ }, handleError);
+
+ function handleError(resp) {
+ if (!ignoreRequestError) {
+ throw $compileMinErr('tpload', 'Failed to load template: {0} (HTTP status: {1} {2})',
+ tpl, resp.status, resp.statusText);
+ }
+ return $q.reject(resp);
+ }
+ }
+
+ handleRequestFn.totalPendingRequests = 0;
+
+ return handleRequestFn;
+ }];
+}
+
+function $$TestabilityProvider() {
+ this.$get = ['$rootScope', '$browser', '$location',
+ function($rootScope, $browser, $location) {
+
+ /**
+ * @name $testability
+ *
+ * @description
+ * The private $$testability service provides a collection of methods for use when debugging
+ * or by automated test and debugging tools.
+ */
+ var testability = {};
+
+ /**
+ * @name $$testability#findBindings
+ *
+ * @description
+ * Returns an array of elements that are bound (via ng-bind or {{}})
+ * to expressions matching the input.
+ *
+ * @param {Element} element The element root to search from.
+ * @param {string} expression The binding expression to match.
+ * @param {boolean} opt_exactMatch If true, only returns exact matches
+ * for the expression. Filters and whitespace are ignored.
+ */
+ testability.findBindings = function(element, expression, opt_exactMatch) {
+ var bindings = element.getElementsByClassName('ng-binding');
+ var matches = [];
+ forEach(bindings, function(binding) {
+ var dataBinding = angular.element(binding).data('$binding');
+ if (dataBinding) {
+ forEach(dataBinding, function(bindingName) {
+ if (opt_exactMatch) {
+ var matcher = new RegExp('(^|\\s)' + escapeForRegexp(expression) + '(\\s|\\||$)');
+ if (matcher.test(bindingName)) {
+ matches.push(binding);
+ }
+ } else {
+ if (bindingName.indexOf(expression) != -1) {
+ matches.push(binding);
+ }
+ }
+ });
+ }
+ });
+ return matches;
+ };
+
+ /**
+ * @name $$testability#findModels
+ *
+ * @description
+ * Returns an array of elements that are two-way found via ng-model to
+ * expressions matching the input.
+ *
+ * @param {Element} element The element root to search from.
+ * @param {string} expression The model expression to match.
+ * @param {boolean} opt_exactMatch If true, only returns exact matches
+ * for the expression.
+ */
+ testability.findModels = function(element, expression, opt_exactMatch) {
+ var prefixes = ['ng-', 'data-ng-', 'ng\\:'];
+ for (var p = 0; p < prefixes.length; ++p) {
+ var attributeEquals = opt_exactMatch ? '=' : '*=';
+ var selector = '[' + prefixes[p] + 'model' + attributeEquals + '"' + expression + '"]';
+ var elements = element.querySelectorAll(selector);
+ if (elements.length) {
+ return elements;
+ }
+ }
+ };
+
+ /**
+ * @name $$testability#getLocation
+ *
+ * @description
+ * Shortcut for getting the location in a browser agnostic way. Returns
+ * the path, search, and hash. (e.g. /path?a=b#hash)
+ */
+ testability.getLocation = function() {
+ return $location.url();
+ };
+
+ /**
+ * @name $$testability#setLocation
+ *
+ * @description
+ * Shortcut for navigating to a location without doing a full page reload.
+ *
+ * @param {string} url The location url (path, search and hash,
+ * e.g. /path?a=b#hash) to go to.
+ */
+ testability.setLocation = function(url) {
+ if (url !== $location.url()) {
+ $location.url(url);
+ $rootScope.$digest();
+ }
+ };
+
+ /**
+ * @name $$testability#whenStable
+ *
+ * @description
+ * Calls the callback when $timeout and $http requests are completed.
+ *
+ * @param {function} callback
+ */
+ testability.whenStable = function(callback) {
+ $browser.notifyWhenNoOutstandingRequests(callback);
+ };
+
+ return testability;
+ }];
+}
+
+function $TimeoutProvider() {
+ this.$get = ['$rootScope', '$browser', '$q', '$$q', '$exceptionHandler',
+ function($rootScope, $browser, $q, $$q, $exceptionHandler) {
+
+ var deferreds = {};
+
+
+ /**
+ * @ngdoc service
+ * @name $timeout
+ *
+ * @description
+ * Angular's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch
+ * block and delegates any exceptions to
+ * {@link ng.$exceptionHandler $exceptionHandler} service.
+ *
+ * The return value of calling `$timeout` is a promise, which will be resolved when
+ * the delay has passed and the timeout function, if provided, is executed.
+ *
+ * To cancel a timeout request, call `$timeout.cancel(promise)`.
+ *
+ * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to
+ * synchronously flush the queue of deferred functions.
+ *
+ * If you only want a promise that will be resolved after some specified delay
+ * then you can call `$timeout` without the `fn` function.
+ *
+ * @param {function()=} fn A function, whose execution should be delayed.
+ * @param {number=} [delay=0] Delay in milliseconds.
+ * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
+ * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
+ * @param {...*=} Pass additional parameters to the executed function.
+ * @returns {Promise} Promise that will be resolved when the timeout is reached. The value this
+ * promise will be resolved with is the return value of the `fn` function.
+ *
+ */
+ function timeout(fn, delay, invokeApply) {
+ if (!isFunction(fn)) {
+ invokeApply = delay;
+ delay = fn;
+ fn = noop;
+ }
+
+ var args = sliceArgs(arguments, 3),
+ skipApply = (isDefined(invokeApply) && !invokeApply),
+ deferred = (skipApply ? $$q : $q).defer(),
+ promise = deferred.promise,
+ timeoutId;
+
+ timeoutId = $browser.defer(function() {
+ try {
+ deferred.resolve(fn.apply(null, args));
+ } catch (e) {
+ deferred.reject(e);
+ $exceptionHandler(e);
+ }
+ finally {
+ delete deferreds[promise.$$timeoutId];
+ }
+
+ if (!skipApply) $rootScope.$apply();
+ }, delay);
+
+ promise.$$timeoutId = timeoutId;
+ deferreds[timeoutId] = deferred;
+
+ return promise;
+ }
+
+
+ /**
+ * @ngdoc method
+ * @name $timeout#cancel
+ *
+ * @description
+ * Cancels a task associated with the `promise`. As a result of this, the promise will be
+ * resolved with a rejection.
+ *
+ * @param {Promise=} promise Promise returned by the `$timeout` function.
+ * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully
+ * canceled.
+ */
+ timeout.cancel = function(promise) {
+ if (promise && promise.$$timeoutId in deferreds) {
+ deferreds[promise.$$timeoutId].reject('canceled');
+ delete deferreds[promise.$$timeoutId];
+ return $browser.defer.cancel(promise.$$timeoutId);
+ }
+ return false;
+ };
+
+ return timeout;
+ }];
+}
+
+// NOTE: The usage of window and document instead of $window and $document here is
+// deliberate. This service depends on the specific behavior of anchor nodes created by the
+// browser (resolving and parsing URLs) that is unlikely to be provided by mock objects and
+// cause us to break tests. In addition, when the browser resolves a URL for XHR, it
+// doesn't know about mocked locations and resolves URLs to the real document - which is
+// exactly the behavior needed here. There is little value is mocking these out for this
+// service.
+var urlParsingNode = document.createElement("a");
+var originUrl = urlResolve(window.location.href);
+
+
+/**
+ *
+ * Implementation Notes for non-IE browsers
+ * ----------------------------------------
+ * Assigning a URL to the href property of an anchor DOM node, even one attached to the DOM,
+ * results both in the normalizing and parsing of the URL. Normalizing means that a relative
+ * URL will be resolved into an absolute URL in the context of the application document.
+ * Parsing means that the anchor node's host, hostname, protocol, port, pathname and related
+ * properties are all populated to reflect the normalized URL. This approach has wide
+ * compatibility - Safari 1+, Mozilla 1+, Opera 7+,e etc. See
+ * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html
+ *
+ * Implementation Notes for IE
+ * ---------------------------
+ * IE <= 10 normalizes the URL when assigned to the anchor node similar to the other
+ * browsers. However, the parsed components will not be set if the URL assigned did not specify
+ * them. (e.g. if you assign a.href = "foo", then a.protocol, a.host, etc. will be empty.) We
+ * work around that by performing the parsing in a 2nd step by taking a previously normalized
+ * URL (e.g. by assigning to a.href) and assigning it a.href again. This correctly populates the
+ * properties such as protocol, hostname, port, etc.
+ *
+ * References:
+ * http://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement
+ * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html
+ * http://url.spec.whatwg.org/#urlutils
+ * https://github.com/angular/angular.js/pull/2902
+ * http://james.padolsey.com/javascript/parsing-urls-with-the-dom/
+ *
+ * @kind function
+ * @param {string} url The URL to be parsed.
+ * @description Normalizes and parses a URL.
+ * @returns {object} Returns the normalized URL as a dictionary.
+ *
+ * | member name | Description |
+ * |---------------|----------------|
+ * | href | A normalized version of the provided URL if it was not an absolute URL |
+ * | protocol | The protocol including the trailing colon |
+ * | host | The host and port (if the port is non-default) of the normalizedUrl |
+ * | search | The search params, minus the question mark |
+ * | hash | The hash string, minus the hash symbol
+ * | hostname | The hostname
+ * | port | The port, without ":"
+ * | pathname | The pathname, beginning with "/"
+ *
+ */
+function urlResolve(url) {
+ var href = url;
+
+ if (msie) {
+ // Normalize before parse. Refer Implementation Notes on why this is
+ // done in two steps on IE.
+ urlParsingNode.setAttribute("href", href);
+ href = urlParsingNode.href;
+ }
+
+ urlParsingNode.setAttribute('href', href);
+
+ // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
+ return {
+ href: urlParsingNode.href,
+ protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
+ host: urlParsingNode.host,
+ search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
+ hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
+ hostname: urlParsingNode.hostname,
+ port: urlParsingNode.port,
+ pathname: (urlParsingNode.pathname.charAt(0) === '/')
+ ? urlParsingNode.pathname
+ : '/' + urlParsingNode.pathname
+ };
+}
+
+/**
+ * Parse a request URL and determine whether this is a same-origin request as the application document.
+ *
+ * @param {string|object} requestUrl The url of the request as a string that will be resolved
+ * or a parsed URL object.
+ * @returns {boolean} Whether the request is for the same origin as the application document.
+ */
+function urlIsSameOrigin(requestUrl) {
+ var parsed = (isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;
+ return (parsed.protocol === originUrl.protocol &&
+ parsed.host === originUrl.host);
+}
+
+/**
+ * @ngdoc service
+ * @name $window
+ *
+ * @description
+ * A reference to the browser's `window` object. While `window`
+ * is globally available in JavaScript, it causes testability problems, because
+ * it is a global variable. In angular we always refer to it through the
+ * `$window` service, so it may be overridden, removed or mocked for testing.
+ *
+ * Expressions, like the one defined for the `ngClick` directive in the example
+ * below, are evaluated with respect to the current scope. Therefore, there is
+ * no risk of inadvertently coding in a dependency on a global value in such an
+ * expression.
+ *
+ * @example
+ <example module="windowExample">
+ <file name="index.html">
+ <script>
+ angular.module('windowExample', [])
+ .controller('ExampleController', ['$scope', '$window', function($scope, $window) {
+ $scope.greeting = 'Hello, World!';
+ $scope.doGreeting = function(greeting) {
+ $window.alert(greeting);
+ };
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <input type="text" ng-model="greeting" aria-label="greeting" />
+ <button ng-click="doGreeting(greeting)">ALERT</button>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should display the greeting in the input box', function() {
+ element(by.model('greeting')).sendKeys('Hello, E2E Tests');
+ // If we click the button it will block the test runner
+ // element(':button').click();
+ });
+ </file>
+ </example>
+ */
+function $WindowProvider() {
+ this.$get = valueFn(window);
+}
+
+/**
+ * @name $$cookieReader
+ * @requires $document
+ *
+ * @description
+ * This is a private service for reading cookies used by $http and ngCookies
+ *
+ * @return {Object} a key/value map of the current cookies
+ */
+function $$CookieReader($document) {
+ var rawDocument = $document[0] || {};
+ var lastCookies = {};
+ var lastCookieString = '';
+
+ function safeDecodeURIComponent(str) {
+ try {
+ return decodeURIComponent(str);
+ } catch (e) {
+ return str;
+ }
+ }
+
+ return function() {
+ var cookieArray, cookie, i, index, name;
+ var currentCookieString = rawDocument.cookie || '';
+
+ if (currentCookieString !== lastCookieString) {
+ lastCookieString = currentCookieString;
+ cookieArray = lastCookieString.split('; ');
+ lastCookies = {};
+
+ for (i = 0; i < cookieArray.length; i++) {
+ cookie = cookieArray[i];
+ index = cookie.indexOf('=');
+ if (index > 0) { //ignore nameless cookies
+ name = safeDecodeURIComponent(cookie.substring(0, index));
+ // the first value that is seen for a cookie is the most
+ // specific one. values for the same cookie name that
+ // follow are for less specific paths.
+ if (lastCookies[name] === undefined) {
+ lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1));
+ }
+ }
+ }
+ }
+ return lastCookies;
+ };
+}
+
+$$CookieReader.$inject = ['$document'];
+
+function $$CookieReaderProvider() {
+ this.$get = $$CookieReader;
+}
+
+/* global currencyFilter: true,
+ dateFilter: true,
+ filterFilter: true,
+ jsonFilter: true,
+ limitToFilter: true,
+ lowercaseFilter: true,
+ numberFilter: true,
+ orderByFilter: true,
+ uppercaseFilter: true,
+ */
+
+/**
+ * @ngdoc provider
+ * @name $filterProvider
+ * @description
+ *
+ * Filters are just functions which transform input to an output. However filters need to be
+ * Dependency Injected. To achieve this a filter definition consists of a factory function which is
+ * annotated with dependencies and is responsible for creating a filter function.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
+ * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
+ * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
+ * (`myapp_subsection_filterx`).
+ * </div>
+ *
+ * ```js
+ * // Filter registration
+ * function MyModule($provide, $filterProvider) {
+ * // create a service to demonstrate injection (not always needed)
+ * $provide.value('greet', function(name){
+ * return 'Hello ' + name + '!';
+ * });
+ *
+ * // register a filter factory which uses the
+ * // greet service to demonstrate DI.
+ * $filterProvider.register('greet', function(greet){
+ * // return the filter function which uses the greet service
+ * // to generate salutation
+ * return function(text) {
+ * // filters need to be forgiving so check input validity
+ * return text && greet(text) || text;
+ * };
+ * });
+ * }
+ * ```
+ *
+ * The filter function is registered with the `$injector` under the filter name suffix with
+ * `Filter`.
+ *
+ * ```js
+ * it('should be the same instance', inject(
+ * function($filterProvider) {
+ * $filterProvider.register('reverse', function(){
+ * return ...;
+ * });
+ * },
+ * function($filter, reverseFilter) {
+ * expect($filter('reverse')).toBe(reverseFilter);
+ * });
+ * ```
+ *
+ *
+ * For more information about how angular filters work, and how to create your own filters, see
+ * {@link guide/filter Filters} in the Angular Developer Guide.
+ */
+
+/**
+ * @ngdoc service
+ * @name $filter
+ * @kind function
+ * @description
+ * Filters are used for formatting data displayed to the user.
+ *
+ * The general syntax in templates is as follows:
+ *
+ * {{ expression [| filter_name[:parameter_value] ... ] }}
+ *
+ * @param {String} name Name of the filter function to retrieve
+ * @return {Function} the filter function
+ * @example
+ <example name="$filter" module="filterExample">
+ <file name="index.html">
+ <div ng-controller="MainCtrl">
+ <h3>{{ originalText }}</h3>
+ <h3>{{ filteredText }}</h3>
+ </div>
+ </file>
+
+ <file name="script.js">
+ angular.module('filterExample', [])
+ .controller('MainCtrl', function($scope, $filter) {
+ $scope.originalText = 'hello';
+ $scope.filteredText = $filter('uppercase')($scope.originalText);
+ });
+ </file>
+ </example>
+ */
+$FilterProvider.$inject = ['$provide'];
+function $FilterProvider($provide) {
+ var suffix = 'Filter';
+
+ /**
+ * @ngdoc method
+ * @name $filterProvider#register
+ * @param {string|Object} name Name of the filter function, or an object map of filters where
+ * the keys are the filter names and the values are the filter factories.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
+ * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
+ * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
+ * (`myapp_subsection_filterx`).
+ * </div>
+ * @param {Function} factory If the first argument was a string, a factory function for the filter to be registered.
+ * @returns {Object} Registered filter instance, or if a map of filters was provided then a map
+ * of the registered filter instances.
+ */
+ function register(name, factory) {
+ if (isObject(name)) {
+ var filters = {};
+ forEach(name, function(filter, key) {
+ filters[key] = register(key, filter);
+ });
+ return filters;
+ } else {
+ return $provide.factory(name + suffix, factory);
+ }
+ }
+ this.register = register;
+
+ this.$get = ['$injector', function($injector) {
+ return function(name) {
+ return $injector.get(name + suffix);
+ };
+ }];
+
+ ////////////////////////////////////////
+
+ /* global
+ currencyFilter: false,
+ dateFilter: false,
+ filterFilter: false,
+ jsonFilter: false,
+ limitToFilter: false,
+ lowercaseFilter: false,
+ numberFilter: false,
+ orderByFilter: false,
+ uppercaseFilter: false,
+ */
+
+ register('currency', currencyFilter);
+ register('date', dateFilter);
+ register('filter', filterFilter);
+ register('json', jsonFilter);
+ register('limitTo', limitToFilter);
+ register('lowercase', lowercaseFilter);
+ register('number', numberFilter);
+ register('orderBy', orderByFilter);
+ register('uppercase', uppercaseFilter);
+}
+
+/**
+ * @ngdoc filter
+ * @name filter
+ * @kind function
+ *
+ * @description
+ * Selects a subset of items from `array` and returns it as a new array.
+ *
+ * @param {Array} array The source array.
+ * @param {string|Object|function()} expression The predicate to be used for selecting items from
+ * `array`.
+ *
+ * Can be one of:
+ *
+ * - `string`: The string is used for matching against the contents of the `array`. All strings or
+ * objects with string properties in `array` that match this string will be returned. This also
+ * applies to nested object properties.
+ * The predicate can be negated by prefixing the string with `!`.
+ *
+ * - `Object`: A pattern object can be used to filter specific properties on objects contained
+ * by `array`. For example `{name:"M", phone:"1"}` predicate will return an array of items
+ * which have property `name` containing "M" and property `phone` containing "1". A special
+ * property name `$` can be used (as in `{$:"text"}`) to accept a match against any
+ * property of the object or its nested object properties. That's equivalent to the simple
+ * substring match with a `string` as described above. The predicate can be negated by prefixing
+ * the string with `!`.
+ * For example `{name: "!M"}` predicate will return an array of items which have property `name`
+ * not containing "M".
+ *
+ * Note that a named property will match properties on the same level only, while the special
+ * `$` property will match properties on the same level or deeper. E.g. an array item like
+ * `{name: {first: 'John', last: 'Doe'}}` will **not** be matched by `{name: 'John'}`, but
+ * **will** be matched by `{$: 'John'}`.
+ *
+ * - `function(value, index, array)`: A predicate function can be used to write arbitrary filters.
+ * The function is called for each element of the array, with the element, its index, and
+ * the entire array itself as arguments.
+ *
+ * The final result is an array of those elements that the predicate returned true for.
+ *
+ * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in
+ * determining if the expected value (from the filter expression) and actual value (from
+ * the object in the array) should be considered a match.
+ *
+ * Can be one of:
+ *
+ * - `function(actual, expected)`:
+ * The function will be given the object value and the predicate value to compare and
+ * should return true if both values should be considered equal.
+ *
+ * - `true`: A shorthand for `function(actual, expected) { return angular.equals(actual, expected)}`.
+ * This is essentially strict comparison of expected and actual.
+ *
+ * - `false|undefined`: A short hand for a function which will look for a substring match in case
+ * insensitive way.
+ *
+ * Primitive values are converted to strings. Objects are not compared against primitives,
+ * unless they have a custom `toString` method (e.g. `Date` objects).
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <div ng-init="friends = [{name:'John', phone:'555-1276'},
+ {name:'Mary', phone:'800-BIG-MARY'},
+ {name:'Mike', phone:'555-4321'},
+ {name:'Adam', phone:'555-5678'},
+ {name:'Julie', phone:'555-8765'},
+ {name:'Juliette', phone:'555-5678'}]"></div>
+
+ <label>Search: <input ng-model="searchText"></label>
+ <table id="searchTextResults">
+ <tr><th>Name</th><th>Phone</th></tr>
+ <tr ng-repeat="friend in friends | filter:searchText">
+ <td>{{friend.name}}</td>
+ <td>{{friend.phone}}</td>
+ </tr>
+ </table>
+ <hr>
+ <label>Any: <input ng-model="search.$"></label> <br>
+ <label>Name only <input ng-model="search.name"></label><br>
+ <label>Phone only <input ng-model="search.phone"></label><br>
+ <label>Equality <input type="checkbox" ng-model="strict"></label><br>
+ <table id="searchObjResults">
+ <tr><th>Name</th><th>Phone</th></tr>
+ <tr ng-repeat="friendObj in friends | filter:search:strict">
+ <td>{{friendObj.name}}</td>
+ <td>{{friendObj.phone}}</td>
+ </tr>
+ </table>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var expectFriendNames = function(expectedNames, key) {
+ element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) {
+ arr.forEach(function(wd, i) {
+ expect(wd.getText()).toMatch(expectedNames[i]);
+ });
+ });
+ };
+
+ it('should search across all fields when filtering with a string', function() {
+ var searchText = element(by.model('searchText'));
+ searchText.clear();
+ searchText.sendKeys('m');
+ expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend');
+
+ searchText.clear();
+ searchText.sendKeys('76');
+ expectFriendNames(['John', 'Julie'], 'friend');
+ });
+
+ it('should search in specific fields when filtering with a predicate object', function() {
+ var searchAny = element(by.model('search.$'));
+ searchAny.clear();
+ searchAny.sendKeys('i');
+ expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj');
+ });
+ it('should use a equal comparison when comparator is true', function() {
+ var searchName = element(by.model('search.name'));
+ var strict = element(by.model('strict'));
+ searchName.clear();
+ searchName.sendKeys('Julie');
+ strict.click();
+ expectFriendNames(['Julie'], 'friendObj');
+ });
+ </file>
+ </example>
+ */
+function filterFilter() {
+ return function(array, expression, comparator) {
+ if (!isArrayLike(array)) {
+ if (array == null) {
+ return array;
+ } else {
+ throw minErr('filter')('notarray', 'Expected array but received: {0}', array);
+ }
+ }
+
+ var expressionType = getTypeForFilter(expression);
+ var predicateFn;
+ var matchAgainstAnyProp;
+
+ switch (expressionType) {
+ case 'function':
+ predicateFn = expression;
+ break;
+ case 'boolean':
+ case 'null':
+ case 'number':
+ case 'string':
+ matchAgainstAnyProp = true;
+ //jshint -W086
+ case 'object':
+ //jshint +W086
+ predicateFn = createPredicateFn(expression, comparator, matchAgainstAnyProp);
+ break;
+ default:
+ return array;
+ }
+
+ return Array.prototype.filter.call(array, predicateFn);
+ };
+}
+
+// Helper functions for `filterFilter`
+function createPredicateFn(expression, comparator, matchAgainstAnyProp) {
+ var shouldMatchPrimitives = isObject(expression) && ('$' in expression);
+ var predicateFn;
+
+ if (comparator === true) {
+ comparator = equals;
+ } else if (!isFunction(comparator)) {
+ comparator = function(actual, expected) {
+ if (isUndefined(actual)) {
+ // No substring matching against `undefined`
+ return false;
+ }
+ if ((actual === null) || (expected === null)) {
+ // No substring matching against `null`; only match against `null`
+ return actual === expected;
+ }
+ if (isObject(expected) || (isObject(actual) && !hasCustomToString(actual))) {
+ // Should not compare primitives against objects, unless they have custom `toString` method
+ return false;
+ }
+
+ actual = lowercase('' + actual);
+ expected = lowercase('' + expected);
+ return actual.indexOf(expected) !== -1;
+ };
+ }
+
+ predicateFn = function(item) {
+ if (shouldMatchPrimitives && !isObject(item)) {
+ return deepCompare(item, expression.$, comparator, false);
+ }
+ return deepCompare(item, expression, comparator, matchAgainstAnyProp);
+ };
+
+ return predicateFn;
+}
+
+function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) {
+ var actualType = getTypeForFilter(actual);
+ var expectedType = getTypeForFilter(expected);
+
+ if ((expectedType === 'string') && (expected.charAt(0) === '!')) {
+ return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp);
+ } else if (isArray(actual)) {
+ // In case `actual` is an array, consider it a match
+ // if ANY of it's items matches `expected`
+ return actual.some(function(item) {
+ return deepCompare(item, expected, comparator, matchAgainstAnyProp);
+ });
+ }
+
+ switch (actualType) {
+ case 'object':
+ var key;
+ if (matchAgainstAnyProp) {
+ for (key in actual) {
+ if ((key.charAt(0) !== '$') && deepCompare(actual[key], expected, comparator, true)) {
+ return true;
+ }
+ }
+ return dontMatchWholeObject ? false : deepCompare(actual, expected, comparator, false);
+ } else if (expectedType === 'object') {
+ for (key in expected) {
+ var expectedVal = expected[key];
+ if (isFunction(expectedVal) || isUndefined(expectedVal)) {
+ continue;
+ }
+
+ var matchAnyProperty = key === '$';
+ var actualVal = matchAnyProperty ? actual : actual[key];
+ if (!deepCompare(actualVal, expectedVal, comparator, matchAnyProperty, matchAnyProperty)) {
+ return false;
+ }
+ }
+ return true;
+ } else {
+ return comparator(actual, expected);
+ }
+ break;
+ case 'function':
+ return false;
+ default:
+ return comparator(actual, expected);
+ }
+}
+
+// Used for easily differentiating between `null` and actual `object`
+function getTypeForFilter(val) {
+ return (val === null) ? 'null' : typeof val;
+}
+
+/**
+ * @ngdoc filter
+ * @name currency
+ * @kind function
+ *
+ * @description
+ * Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default
+ * symbol for current locale is used.
+ *
+ * @param {number} amount Input to filter.
+ * @param {string=} symbol Currency symbol or identifier to be displayed.
+ * @param {number=} fractionSize Number of decimal places to round the amount to, defaults to default max fraction size for current locale
+ * @returns {string} Formatted number.
+ *
+ *
+ * @example
+ <example module="currencyExample">
+ <file name="index.html">
+ <script>
+ angular.module('currencyExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.amount = 1234.56;
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <input type="number" ng-model="amount" aria-label="amount"> <br>
+ default currency symbol ($): <span id="currency-default">{{amount | currency}}</span><br>
+ custom currency identifier (USD$): <span id="currency-custom">{{amount | currency:"USD$"}}</span>
+ no fractions (0): <span id="currency-no-fractions">{{amount | currency:"USD$":0}}</span>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should init with 1234.56', function() {
+ expect(element(by.id('currency-default')).getText()).toBe('$1,234.56');
+ expect(element(by.id('currency-custom')).getText()).toBe('USD$1,234.56');
+ expect(element(by.id('currency-no-fractions')).getText()).toBe('USD$1,235');
+ });
+ it('should update', function() {
+ if (browser.params.browser == 'safari') {
+ // Safari does not understand the minus key. See
+ // https://github.com/angular/protractor/issues/481
+ return;
+ }
+ element(by.model('amount')).clear();
+ element(by.model('amount')).sendKeys('-1234');
+ expect(element(by.id('currency-default')).getText()).toBe('-$1,234.00');
+ expect(element(by.id('currency-custom')).getText()).toBe('-USD$1,234.00');
+ expect(element(by.id('currency-no-fractions')).getText()).toBe('-USD$1,234');
+ });
+ </file>
+ </example>
+ */
+currencyFilter.$inject = ['$locale'];
+function currencyFilter($locale) {
+ var formats = $locale.NUMBER_FORMATS;
+ return function(amount, currencySymbol, fractionSize) {
+ if (isUndefined(currencySymbol)) {
+ currencySymbol = formats.CURRENCY_SYM;
+ }
+
+ if (isUndefined(fractionSize)) {
+ fractionSize = formats.PATTERNS[1].maxFrac;
+ }
+
+ // if null or undefined pass it through
+ return (amount == null)
+ ? amount
+ : formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, fractionSize).
+ replace(/\u00A4/g, currencySymbol);
+ };
+}
+
+/**
+ * @ngdoc filter
+ * @name number
+ * @kind function
+ *
+ * @description
+ * Formats a number as text.
+ *
+ * If the input is null or undefined, it will just be returned.
+ * If the input is infinite (Infinity/-Infinity) the Infinity symbol '∞' is returned.
+ * If the input is not a number an empty string is returned.
+ *
+ *
+ * @param {number|string} number Number to format.
+ * @param {(number|string)=} fractionSize Number of decimal places to round the number to.
+ * If this is not provided then the fraction size is computed from the current locale's number
+ * formatting pattern. In the case of the default locale, it will be 3.
+ * @returns {string} Number rounded to decimalPlaces and places a “,” after each third digit.
+ *
+ * @example
+ <example module="numberFilterExample">
+ <file name="index.html">
+ <script>
+ angular.module('numberFilterExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.val = 1234.56789;
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>Enter number: <input ng-model='val'></label><br>
+ Default formatting: <span id='number-default'>{{val | number}}</span><br>
+ No fractions: <span>{{val | number:0}}</span><br>
+ Negative number: <span>{{-val | number:4}}</span>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should format numbers', function() {
+ expect(element(by.id('number-default')).getText()).toBe('1,234.568');
+ expect(element(by.binding('val | number:0')).getText()).toBe('1,235');
+ expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679');
+ });
+
+ it('should update', function() {
+ element(by.model('val')).clear();
+ element(by.model('val')).sendKeys('3374.333');
+ expect(element(by.id('number-default')).getText()).toBe('3,374.333');
+ expect(element(by.binding('val | number:0')).getText()).toBe('3,374');
+ expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330');
+ });
+ </file>
+ </example>
+ */
+
+
+numberFilter.$inject = ['$locale'];
+function numberFilter($locale) {
+ var formats = $locale.NUMBER_FORMATS;
+ return function(number, fractionSize) {
+
+ // if null or undefined pass it through
+ return (number == null)
+ ? number
+ : formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP,
+ fractionSize);
+ };
+}
+
+var DECIMAL_SEP = '.';
+function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
+ if (isObject(number)) return '';
+
+ var isNegative = number < 0;
+ number = Math.abs(number);
+
+ var isInfinity = number === Infinity;
+ if (!isInfinity && !isFinite(number)) return '';
+
+ var numStr = number + '',
+ formatedText = '',
+ hasExponent = false,
+ parts = [];
+
+ if (isInfinity) formatedText = '\u221e';
+
+ if (!isInfinity && numStr.indexOf('e') !== -1) {
+ var match = numStr.match(/([\d\.]+)e(-?)(\d+)/);
+ if (match && match[2] == '-' && match[3] > fractionSize + 1) {
+ number = 0;
+ } else {
+ formatedText = numStr;
+ hasExponent = true;
+ }
+ }
+
+ if (!isInfinity && !hasExponent) {
+ var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length;
+
+ // determine fractionSize if it is not specified
+ if (isUndefined(fractionSize)) {
+ fractionSize = Math.min(Math.max(pattern.minFrac, fractionLen), pattern.maxFrac);
+ }
+
+ // safely round numbers in JS without hitting imprecisions of floating-point arithmetics
+ // inspired by:
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
+ number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);
+
+ var fraction = ('' + number).split(DECIMAL_SEP);
+ var whole = fraction[0];
+ fraction = fraction[1] || '';
+
+ var i, pos = 0,
+ lgroup = pattern.lgSize,
+ group = pattern.gSize;
+
+ if (whole.length >= (lgroup + group)) {
+ pos = whole.length - lgroup;
+ for (i = 0; i < pos; i++) {
+ if ((pos - i) % group === 0 && i !== 0) {
+ formatedText += groupSep;
+ }
+ formatedText += whole.charAt(i);
+ }
+ }
+
+ for (i = pos; i < whole.length; i++) {
+ if ((whole.length - i) % lgroup === 0 && i !== 0) {
+ formatedText += groupSep;
+ }
+ formatedText += whole.charAt(i);
+ }
+
+ // format fraction part.
+ while (fraction.length < fractionSize) {
+ fraction += '0';
+ }
+
+ if (fractionSize && fractionSize !== "0") formatedText += decimalSep + fraction.substr(0, fractionSize);
+ } else {
+ if (fractionSize > 0 && number < 1) {
+ formatedText = number.toFixed(fractionSize);
+ number = parseFloat(formatedText);
+ }
+ }
+
+ if (number === 0) {
+ isNegative = false;
+ }
+
+ parts.push(isNegative ? pattern.negPre : pattern.posPre,
+ formatedText,
+ isNegative ? pattern.negSuf : pattern.posSuf);
+ return parts.join('');
+}
+
+function padNumber(num, digits, trim) {
+ var neg = '';
+ if (num < 0) {
+ neg = '-';
+ num = -num;
+ }
+ num = '' + num;
+ while (num.length < digits) num = '0' + num;
+ if (trim) {
+ num = num.substr(num.length - digits);
+ }
+ return neg + num;
+}
+
+
+function dateGetter(name, size, offset, trim) {
+ offset = offset || 0;
+ return function(date) {
+ var value = date['get' + name]();
+ if (offset > 0 || value > -offset) {
+ value += offset;
+ }
+ if (value === 0 && offset == -12) value = 12;
+ return padNumber(value, size, trim);
+ };
+}
+
+function dateStrGetter(name, shortForm) {
+ return function(date, formats) {
+ var value = date['get' + name]();
+ var get = uppercase(shortForm ? ('SHORT' + name) : name);
+
+ return formats[get][value];
+ };
+}
+
+function timeZoneGetter(date, formats, offset) {
+ var zone = -1 * offset;
+ var paddedZone = (zone >= 0) ? "+" : "";
+
+ paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) +
+ padNumber(Math.abs(zone % 60), 2);
+
+ return paddedZone;
+}
+
+function getFirstThursdayOfYear(year) {
+ // 0 = index of January
+ var dayOfWeekOnFirst = (new Date(year, 0, 1)).getDay();
+ // 4 = index of Thursday (+1 to account for 1st = 5)
+ // 11 = index of *next* Thursday (+1 account for 1st = 12)
+ return new Date(year, 0, ((dayOfWeekOnFirst <= 4) ? 5 : 12) - dayOfWeekOnFirst);
+}
+
+function getThursdayThisWeek(datetime) {
+ return new Date(datetime.getFullYear(), datetime.getMonth(),
+ // 4 = index of Thursday
+ datetime.getDate() + (4 - datetime.getDay()));
+}
+
+function weekGetter(size) {
+ return function(date) {
+ var firstThurs = getFirstThursdayOfYear(date.getFullYear()),
+ thisThurs = getThursdayThisWeek(date);
+
+ var diff = +thisThurs - +firstThurs,
+ result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week
+
+ return padNumber(result, size);
+ };
+}
+
+function ampmGetter(date, formats) {
+ return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];
+}
+
+function eraGetter(date, formats) {
+ return date.getFullYear() <= 0 ? formats.ERAS[0] : formats.ERAS[1];
+}
+
+function longEraGetter(date, formats) {
+ return date.getFullYear() <= 0 ? formats.ERANAMES[0] : formats.ERANAMES[1];
+}
+
+var DATE_FORMATS = {
+ yyyy: dateGetter('FullYear', 4),
+ yy: dateGetter('FullYear', 2, 0, true),
+ y: dateGetter('FullYear', 1),
+ MMMM: dateStrGetter('Month'),
+ MMM: dateStrGetter('Month', true),
+ MM: dateGetter('Month', 2, 1),
+ M: dateGetter('Month', 1, 1),
+ dd: dateGetter('Date', 2),
+ d: dateGetter('Date', 1),
+ HH: dateGetter('Hours', 2),
+ H: dateGetter('Hours', 1),
+ hh: dateGetter('Hours', 2, -12),
+ h: dateGetter('Hours', 1, -12),
+ mm: dateGetter('Minutes', 2),
+ m: dateGetter('Minutes', 1),
+ ss: dateGetter('Seconds', 2),
+ s: dateGetter('Seconds', 1),
+ // while ISO 8601 requires fractions to be prefixed with `.` or `,`
+ // we can be just safely rely on using `sss` since we currently don't support single or two digit fractions
+ sss: dateGetter('Milliseconds', 3),
+ EEEE: dateStrGetter('Day'),
+ EEE: dateStrGetter('Day', true),
+ a: ampmGetter,
+ Z: timeZoneGetter,
+ ww: weekGetter(2),
+ w: weekGetter(1),
+ G: eraGetter,
+ GG: eraGetter,
+ GGG: eraGetter,
+ GGGG: longEraGetter
+};
+
+var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,
+ NUMBER_STRING = /^\-?\d+$/;
+
+/**
+ * @ngdoc filter
+ * @name date
+ * @kind function
+ *
+ * @description
+ * Formats `date` to a string based on the requested `format`.
+ *
+ * `format` string can be composed of the following elements:
+ *
+ * * `'yyyy'`: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)
+ * * `'yy'`: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)
+ * * `'y'`: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)
+ * * `'MMMM'`: Month in year (January-December)
+ * * `'MMM'`: Month in year (Jan-Dec)
+ * * `'MM'`: Month in year, padded (01-12)
+ * * `'M'`: Month in year (1-12)
+ * * `'dd'`: Day in month, padded (01-31)
+ * * `'d'`: Day in month (1-31)
+ * * `'EEEE'`: Day in Week,(Sunday-Saturday)
+ * * `'EEE'`: Day in Week, (Sun-Sat)
+ * * `'HH'`: Hour in day, padded (00-23)
+ * * `'H'`: Hour in day (0-23)
+ * * `'hh'`: Hour in AM/PM, padded (01-12)
+ * * `'h'`: Hour in AM/PM, (1-12)
+ * * `'mm'`: Minute in hour, padded (00-59)
+ * * `'m'`: Minute in hour (0-59)
+ * * `'ss'`: Second in minute, padded (00-59)
+ * * `'s'`: Second in minute (0-59)
+ * * `'sss'`: Millisecond in second, padded (000-999)
+ * * `'a'`: AM/PM marker
+ * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)
+ * * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year
+ * * `'w'`: Week of year (0-53). Week 1 is the week with the first Thursday of the year
+ * * `'G'`, `'GG'`, `'GGG'`: The abbreviated form of the era string (e.g. 'AD')
+ * * `'GGGG'`: The long form of the era string (e.g. 'Anno Domini')
+ *
+ * `format` string can also be one of the following predefined
+ * {@link guide/i18n localizable formats}:
+ *
+ * * `'medium'`: equivalent to `'MMM d, y h:mm:ss a'` for en_US locale
+ * (e.g. Sep 3, 2010 12:05:08 PM)
+ * * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US locale (e.g. 9/3/10 12:05 PM)
+ * * `'fullDate'`: equivalent to `'EEEE, MMMM d, y'` for en_US locale
+ * (e.g. Friday, September 3, 2010)
+ * * `'longDate'`: equivalent to `'MMMM d, y'` for en_US locale (e.g. September 3, 2010)
+ * * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US locale (e.g. Sep 3, 2010)
+ * * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10)
+ * * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 PM)
+ * * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 PM)
+ *
+ * `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g.
+ * `"h 'in the morning'"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence
+ * (e.g. `"h 'o''clock'"`).
+ *
+ * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
+ * number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its
+ * shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is
+ * specified in the string input, the time is considered to be in the local timezone.
+ * @param {string=} format Formatting rules (see Description). If not specified,
+ * `mediumDate` is used.
+ * @param {string=} timezone Timezone to be used for formatting. It understands UTC/GMT and the
+ * continental US time zone abbreviations, but for general use, use a time zone offset, for
+ * example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian)
+ * If not specified, the timezone of the browser will be used.
+ * @returns {string} Formatted string or the input if input is not recognized as date/millis.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <span ng-non-bindable>{{1288323623006 | date:'medium'}}</span>:
+ <span>{{1288323623006 | date:'medium'}}</span><br>
+ <span ng-non-bindable>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span>:
+ <span>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span><br>
+ <span ng-non-bindable>{{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}</span>:
+ <span>{{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}</span><br>
+ <span ng-non-bindable>{{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}</span>:
+ <span>{{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}</span><br>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should format date', function() {
+ expect(element(by.binding("1288323623006 | date:'medium'")).getText()).
+ toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/);
+ expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()).
+ toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/);
+ expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()).
+ toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/);
+ expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()).
+ toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/);
+ });
+ </file>
+ </example>
+ */
+dateFilter.$inject = ['$locale'];
+function dateFilter($locale) {
+
+
+ var R_ISO8601_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
+ // 1 2 3 4 5 6 7 8 9 10 11
+ function jsonStringToDate(string) {
+ var match;
+ if (match = string.match(R_ISO8601_STR)) {
+ var date = new Date(0),
+ tzHour = 0,
+ tzMin = 0,
+ dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear,
+ timeSetter = match[8] ? date.setUTCHours : date.setHours;
+
+ if (match[9]) {
+ tzHour = toInt(match[9] + match[10]);
+ tzMin = toInt(match[9] + match[11]);
+ }
+ dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3]));
+ var h = toInt(match[4] || 0) - tzHour;
+ var m = toInt(match[5] || 0) - tzMin;
+ var s = toInt(match[6] || 0);
+ var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);
+ timeSetter.call(date, h, m, s, ms);
+ return date;
+ }
+ return string;
+ }
+
+
+ return function(date, format, timezone) {
+ var text = '',
+ parts = [],
+ fn, match;
+
+ format = format || 'mediumDate';
+ format = $locale.DATETIME_FORMATS[format] || format;
+ if (isString(date)) {
+ date = NUMBER_STRING.test(date) ? toInt(date) : jsonStringToDate(date);
+ }
+
+ if (isNumber(date)) {
+ date = new Date(date);
+ }
+
+ if (!isDate(date) || !isFinite(date.getTime())) {
+ return date;
+ }
+
+ while (format) {
+ match = DATE_FORMATS_SPLIT.exec(format);
+ if (match) {
+ parts = concat(parts, match, 1);
+ format = parts.pop();
+ } else {
+ parts.push(format);
+ format = null;
+ }
+ }
+
+ var dateTimezoneOffset = date.getTimezoneOffset();
+ if (timezone) {
+ dateTimezoneOffset = timezoneToOffset(timezone, date.getTimezoneOffset());
+ date = convertTimezoneToLocal(date, timezone, true);
+ }
+ forEach(parts, function(value) {
+ fn = DATE_FORMATS[value];
+ text += fn ? fn(date, $locale.DATETIME_FORMATS, dateTimezoneOffset)
+ : value.replace(/(^'|'$)/g, '').replace(/''/g, "'");
+ });
+
+ return text;
+ };
+}
+
+
+/**
+ * @ngdoc filter
+ * @name json
+ * @kind function
+ *
+ * @description
+ * Allows you to convert a JavaScript object into JSON string.
+ *
+ * This filter is mostly useful for debugging. When using the double curly {{value}} notation
+ * the binding is automatically converted to JSON.
+ *
+ * @param {*} object Any JavaScript object (including arrays and primitive types) to filter.
+ * @param {number=} spacing The number of spaces to use per indentation, defaults to 2.
+ * @returns {string} JSON string.
+ *
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <pre id="default-spacing">{{ {'name':'value'} | json }}</pre>
+ <pre id="custom-spacing">{{ {'name':'value'} | json:4 }}</pre>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should jsonify filtered objects', function() {
+ expect(element(by.id('default-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/);
+ expect(element(by.id('custom-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/);
+ });
+ </file>
+ </example>
+ *
+ */
+function jsonFilter() {
+ return function(object, spacing) {
+ if (isUndefined(spacing)) {
+ spacing = 2;
+ }
+ return toJson(object, spacing);
+ };
+}
+
+
+/**
+ * @ngdoc filter
+ * @name lowercase
+ * @kind function
+ * @description
+ * Converts string to lowercase.
+ * @see angular.lowercase
+ */
+var lowercaseFilter = valueFn(lowercase);
+
+
+/**
+ * @ngdoc filter
+ * @name uppercase
+ * @kind function
+ * @description
+ * Converts string to uppercase.
+ * @see angular.uppercase
+ */
+var uppercaseFilter = valueFn(uppercase);
+
+/**
+ * @ngdoc filter
+ * @name limitTo
+ * @kind function
+ *
+ * @description
+ * Creates a new array or string containing only a specified number of elements. The elements
+ * are taken from either the beginning or the end of the source array, string or number, as specified by
+ * the value and sign (positive or negative) of `limit`. If a number is used as input, it is
+ * converted to a string.
+ *
+ * @param {Array|string|number} input Source array, string or number to be limited.
+ * @param {string|number} limit The length of the returned array or string. If the `limit` number
+ * is positive, `limit` number of items from the beginning of the source array/string are copied.
+ * If the number is negative, `limit` number of items from the end of the source array/string
+ * are copied. The `limit` will be trimmed if it exceeds `array.length`. If `limit` is undefined,
+ * the input will be returned unchanged.
+ * @param {(string|number)=} begin Index at which to begin limitation. As a negative index, `begin`
+ * indicates an offset from the end of `input`. Defaults to `0`.
+ * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array
+ * had less than `limit` elements.
+ *
+ * @example
+ <example module="limitToExample">
+ <file name="index.html">
+ <script>
+ angular.module('limitToExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.numbers = [1,2,3,4,5,6,7,8,9];
+ $scope.letters = "abcdefghi";
+ $scope.longNumber = 2345432342;
+ $scope.numLimit = 3;
+ $scope.letterLimit = 3;
+ $scope.longNumberLimit = 3;
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>
+ Limit {{numbers}} to:
+ <input type="number" step="1" ng-model="numLimit">
+ </label>
+ <p>Output numbers: {{ numbers | limitTo:numLimit }}</p>
+ <label>
+ Limit {{letters}} to:
+ <input type="number" step="1" ng-model="letterLimit">
+ </label>
+ <p>Output letters: {{ letters | limitTo:letterLimit }}</p>
+ <label>
+ Limit {{longNumber}} to:
+ <input type="number" step="1" ng-model="longNumberLimit">
+ </label>
+ <p>Output long number: {{ longNumber | limitTo:longNumberLimit }}</p>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var numLimitInput = element(by.model('numLimit'));
+ var letterLimitInput = element(by.model('letterLimit'));
+ var longNumberLimitInput = element(by.model('longNumberLimit'));
+ var limitedNumbers = element(by.binding('numbers | limitTo:numLimit'));
+ var limitedLetters = element(by.binding('letters | limitTo:letterLimit'));
+ var limitedLongNumber = element(by.binding('longNumber | limitTo:longNumberLimit'));
+
+ it('should limit the number array to first three items', function() {
+ expect(numLimitInput.getAttribute('value')).toBe('3');
+ expect(letterLimitInput.getAttribute('value')).toBe('3');
+ expect(longNumberLimitInput.getAttribute('value')).toBe('3');
+ expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]');
+ expect(limitedLetters.getText()).toEqual('Output letters: abc');
+ expect(limitedLongNumber.getText()).toEqual('Output long number: 234');
+ });
+
+ // There is a bug in safari and protractor that doesn't like the minus key
+ // it('should update the output when -3 is entered', function() {
+ // numLimitInput.clear();
+ // numLimitInput.sendKeys('-3');
+ // letterLimitInput.clear();
+ // letterLimitInput.sendKeys('-3');
+ // longNumberLimitInput.clear();
+ // longNumberLimitInput.sendKeys('-3');
+ // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]');
+ // expect(limitedLetters.getText()).toEqual('Output letters: ghi');
+ // expect(limitedLongNumber.getText()).toEqual('Output long number: 342');
+ // });
+
+ it('should not exceed the maximum size of input array', function() {
+ numLimitInput.clear();
+ numLimitInput.sendKeys('100');
+ letterLimitInput.clear();
+ letterLimitInput.sendKeys('100');
+ longNumberLimitInput.clear();
+ longNumberLimitInput.sendKeys('100');
+ expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]');
+ expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi');
+ expect(limitedLongNumber.getText()).toEqual('Output long number: 2345432342');
+ });
+ </file>
+ </example>
+*/
+function limitToFilter() {
+ return function(input, limit, begin) {
+ if (Math.abs(Number(limit)) === Infinity) {
+ limit = Number(limit);
+ } else {
+ limit = toInt(limit);
+ }
+ if (isNaN(limit)) return input;
+
+ if (isNumber(input)) input = input.toString();
+ if (!isArray(input) && !isString(input)) return input;
+
+ begin = (!begin || isNaN(begin)) ? 0 : toInt(begin);
+ begin = (begin < 0 && begin >= -input.length) ? input.length + begin : begin;
+
+ if (limit >= 0) {
+ return input.slice(begin, begin + limit);
+ } else {
+ if (begin === 0) {
+ return input.slice(limit, input.length);
+ } else {
+ return input.slice(Math.max(0, begin + limit), begin);
+ }
+ }
+ };
+}
+
+/**
+ * @ngdoc filter
+ * @name orderBy
+ * @kind function
+ *
+ * @description
+ * Orders a specified `array` by the `expression` predicate. It is ordered alphabetically
+ * for strings and numerically for numbers. Note: if you notice numbers are not being sorted
+ * as expected, make sure they are actually being saved as numbers and not strings.
+ *
+ * @param {Array} array The array to sort.
+ * @param {function(*)|string|Array.<(function(*)|string)>=} expression A predicate to be
+ * used by the comparator to determine the order of elements.
+ *
+ * Can be one of:
+ *
+ * - `function`: Getter function. The result of this function will be sorted using the
+ * `<`, `===`, `>` operator.
+ * - `string`: An Angular expression. The result of this expression is used to compare elements
+ * (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by
+ * 3 first characters of a property called `name`). The result of a constant expression
+ * is interpreted as a property name to be used in comparisons (for example `"special name"`
+ * to sort object by the value of their `special name` property). An expression can be
+ * optionally prefixed with `+` or `-` to control ascending or descending sort order
+ * (for example, `+name` or `-name`). If no property is provided, (e.g. `'+'`) then the array
+ * element itself is used to compare where sorting.
+ * - `Array`: An array of function or string predicates. The first predicate in the array
+ * is used for sorting, but when two items are equivalent, the next predicate is used.
+ *
+ * If the predicate is missing or empty then it defaults to `'+'`.
+ *
+ * @param {boolean=} reverse Reverse the order of the array.
+ * @returns {Array} Sorted copy of the source array.
+ *
+ *
+ * @example
+ * The example below demonstrates a simple ngRepeat, where the data is sorted
+ * by age in descending order (predicate is set to `'-age'`).
+ * `reverse` is not set, which means it defaults to `false`.
+ <example module="orderByExample">
+ <file name="index.html">
+ <script>
+ angular.module('orderByExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.friends =
+ [{name:'John', phone:'555-1212', age:10},
+ {name:'Mary', phone:'555-9876', age:19},
+ {name:'Mike', phone:'555-4321', age:21},
+ {name:'Adam', phone:'555-5678', age:35},
+ {name:'Julie', phone:'555-8765', age:29}];
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <table class="friend">
+ <tr>
+ <th>Name</th>
+ <th>Phone Number</th>
+ <th>Age</th>
+ </tr>
+ <tr ng-repeat="friend in friends | orderBy:'-age'">
+ <td>{{friend.name}}</td>
+ <td>{{friend.phone}}</td>
+ <td>{{friend.age}}</td>
+ </tr>
+ </table>
+ </div>
+ </file>
+ </example>
+ *
+ * The predicate and reverse parameters can be controlled dynamically through scope properties,
+ * as shown in the next example.
+ * @example
+ <example module="orderByExample">
+ <file name="index.html">
+ <script>
+ angular.module('orderByExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.friends =
+ [{name:'John', phone:'555-1212', age:10},
+ {name:'Mary', phone:'555-9876', age:19},
+ {name:'Mike', phone:'555-4321', age:21},
+ {name:'Adam', phone:'555-5678', age:35},
+ {name:'Julie', phone:'555-8765', age:29}];
+ $scope.predicate = 'age';
+ $scope.reverse = true;
+ $scope.order = function(predicate) {
+ $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
+ $scope.predicate = predicate;
+ };
+ }]);
+ </script>
+ <style type="text/css">
+ .sortorder:after {
+ content: '\25b2';
+ }
+ .sortorder.reverse:after {
+ content: '\25bc';
+ }
+ </style>
+ <div ng-controller="ExampleController">
+ <pre>Sorting predicate = {{predicate}}; reverse = {{reverse}}</pre>
+ <hr/>
+ [ <a href="" ng-click="predicate=''">unsorted</a> ]
+ <table class="friend">
+ <tr>
+ <th>
+ <a href="" ng-click="order('name')">Name</a>
+ <span class="sortorder" ng-show="predicate === 'name'" ng-class="{reverse:reverse}"></span>
+ </th>
+ <th>
+ <a href="" ng-click="order('phone')">Phone Number</a>
+ <span class="sortorder" ng-show="predicate === 'phone'" ng-class="{reverse:reverse}"></span>
+ </th>
+ <th>
+ <a href="" ng-click="order('age')">Age</a>
+ <span class="sortorder" ng-show="predicate === 'age'" ng-class="{reverse:reverse}"></span>
+ </th>
+ </tr>
+ <tr ng-repeat="friend in friends | orderBy:predicate:reverse">
+ <td>{{friend.name}}</td>
+ <td>{{friend.phone}}</td>
+ <td>{{friend.age}}</td>
+ </tr>
+ </table>
+ </div>
+ </file>
+ </example>
+ *
+ * It's also possible to call the orderBy filter manually, by injecting `$filter`, retrieving the
+ * filter routine with `$filter('orderBy')`, and calling the returned filter routine with the
+ * desired parameters.
+ *
+ * Example:
+ *
+ * @example
+ <example module="orderByExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <table class="friend">
+ <tr>
+ <th><a href="" ng-click="reverse=false;order('name', false)">Name</a>
+ (<a href="" ng-click="order('-name',false)">^</a>)</th>
+ <th><a href="" ng-click="reverse=!reverse;order('phone', reverse)">Phone Number</a></th>
+ <th><a href="" ng-click="reverse=!reverse;order('age',reverse)">Age</a></th>
+ </tr>
+ <tr ng-repeat="friend in friends">
+ <td>{{friend.name}}</td>
+ <td>{{friend.phone}}</td>
+ <td>{{friend.age}}</td>
+ </tr>
+ </table>
+ </div>
+ </file>
+
+ <file name="script.js">
+ angular.module('orderByExample', [])
+ .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) {
+ var orderBy = $filter('orderBy');
+ $scope.friends = [
+ { name: 'John', phone: '555-1212', age: 10 },
+ { name: 'Mary', phone: '555-9876', age: 19 },
+ { name: 'Mike', phone: '555-4321', age: 21 },
+ { name: 'Adam', phone: '555-5678', age: 35 },
+ { name: 'Julie', phone: '555-8765', age: 29 }
+ ];
+ $scope.order = function(predicate, reverse) {
+ $scope.friends = orderBy($scope.friends, predicate, reverse);
+ };
+ $scope.order('-age',false);
+ }]);
+ </file>
+</example>
+ */
+orderByFilter.$inject = ['$parse'];
+function orderByFilter($parse) {
+ return function(array, sortPredicate, reverseOrder) {
+
+ if (!(isArrayLike(array))) return array;
+
+ if (!isArray(sortPredicate)) { sortPredicate = [sortPredicate]; }
+ if (sortPredicate.length === 0) { sortPredicate = ['+']; }
+
+ var predicates = processPredicates(sortPredicate, reverseOrder);
+ // Add a predicate at the end that evaluates to the element index. This makes the
+ // sort stable as it works as a tie-breaker when all the input predicates cannot
+ // distinguish between two elements.
+ predicates.push({ get: function() { return {}; }, descending: reverseOrder ? -1 : 1});
+
+ // The next three lines are a version of a Swartzian Transform idiom from Perl
+ // (sometimes called the Decorate-Sort-Undecorate idiom)
+ // See https://en.wikipedia.org/wiki/Schwartzian_transform
+ var compareValues = Array.prototype.map.call(array, getComparisonObject);
+ compareValues.sort(doComparison);
+ array = compareValues.map(function(item) { return item.value; });
+
+ return array;
+
+ function getComparisonObject(value, index) {
+ return {
+ value: value,
+ predicateValues: predicates.map(function(predicate) {
+ return getPredicateValue(predicate.get(value), index);
+ })
+ };
+ }
+
+ function doComparison(v1, v2) {
+ var result = 0;
+ for (var index=0, length = predicates.length; index < length; ++index) {
+ result = compare(v1.predicateValues[index], v2.predicateValues[index]) * predicates[index].descending;
+ if (result) break;
+ }
+ return result;
+ }
+ };
+
+ function processPredicates(sortPredicate, reverseOrder) {
+ reverseOrder = reverseOrder ? -1 : 1;
+ return sortPredicate.map(function(predicate) {
+ var descending = 1, get = identity;
+
+ if (isFunction(predicate)) {
+ get = predicate;
+ } else if (isString(predicate)) {
+ if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) {
+ descending = predicate.charAt(0) == '-' ? -1 : 1;
+ predicate = predicate.substring(1);
+ }
+ if (predicate !== '') {
+ get = $parse(predicate);
+ if (get.constant) {
+ var key = get();
+ get = function(value) { return value[key]; };
+ }
+ }
+ }
+ return { get: get, descending: descending * reverseOrder };
+ });
+ }
+
+ function isPrimitive(value) {
+ switch (typeof value) {
+ case 'number': /* falls through */
+ case 'boolean': /* falls through */
+ case 'string':
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ function objectValue(value, index) {
+ // If `valueOf` is a valid function use that
+ if (typeof value.valueOf === 'function') {
+ value = value.valueOf();
+ if (isPrimitive(value)) return value;
+ }
+ // If `toString` is a valid function and not the one from `Object.prototype` use that
+ if (hasCustomToString(value)) {
+ value = value.toString();
+ if (isPrimitive(value)) return value;
+ }
+ // We have a basic object so we use the position of the object in the collection
+ return index;
+ }
+
+ function getPredicateValue(value, index) {
+ var type = typeof value;
+ if (value === null) {
+ type = 'string';
+ value = 'null';
+ } else if (type === 'string') {
+ value = value.toLowerCase();
+ } else if (type === 'object') {
+ value = objectValue(value, index);
+ }
+ return { value: value, type: type };
+ }
+
+ function compare(v1, v2) {
+ var result = 0;
+ if (v1.type === v2.type) {
+ if (v1.value !== v2.value) {
+ result = v1.value < v2.value ? -1 : 1;
+ }
+ } else {
+ result = v1.type < v2.type ? -1 : 1;
+ }
+ return result;
+ }
+}
+
+function ngDirective(directive) {
+ if (isFunction(directive)) {
+ directive = {
+ link: directive
+ };
+ }
+ directive.restrict = directive.restrict || 'AC';
+ return valueFn(directive);
+}
+
+/**
+ * @ngdoc directive
+ * @name a
+ * @restrict E
+ *
+ * @description
+ * Modifies the default behavior of the html A tag so that the default action is prevented when
+ * the href attribute is empty.
+ *
+ * This change permits the easy creation of action links with the `ngClick` directive
+ * without changing the location or causing page reloads, e.g.:
+ * `<a href="" ng-click="list.addItem()">Add Item</a>`
+ */
+var htmlAnchorDirective = valueFn({
+ restrict: 'E',
+ compile: function(element, attr) {
+ if (!attr.href && !attr.xlinkHref) {
+ return function(scope, element) {
+ // If the linked element is not an anchor tag anymore, do nothing
+ if (element[0].nodeName.toLowerCase() !== 'a') return;
+
+ // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.
+ var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?
+ 'xlink:href' : 'href';
+ element.on('click', function(event) {
+ // if we have no href url, then don't navigate anywhere.
+ if (!element.attr(href)) {
+ event.preventDefault();
+ }
+ });
+ };
+ }
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name ngHref
+ * @restrict A
+ * @priority 99
+ *
+ * @description
+ * Using Angular markup like `{{hash}}` in an href attribute will
+ * make the link go to the wrong URL if the user clicks it before
+ * Angular has a chance to replace the `{{hash}}` markup with its
+ * value. Until Angular replaces the markup the link will be broken
+ * and will most likely return a 404 error. The `ngHref` directive
+ * solves this problem.
+ *
+ * The wrong way to write it:
+ * ```html
+ * <a href="http://www.gravatar.com/avatar/{{hash}}">link1</a>
+ * ```
+ *
+ * The correct way to write it:
+ * ```html
+ * <a ng-href="http://www.gravatar.com/avatar/{{hash}}">link1</a>
+ * ```
+ *
+ * @element A
+ * @param {template} ngHref any string which can contain `{{}}` markup.
+ *
+ * @example
+ * This example shows various combinations of `href`, `ng-href` and `ng-click` attributes
+ * in links and their different behaviors:
+ <example>
+ <file name="index.html">
+ <input ng-model="value" /><br />
+ <a id="link-1" href ng-click="value = 1">link 1</a> (link, don't reload)<br />
+ <a id="link-2" href="" ng-click="value = 2">link 2</a> (link, don't reload)<br />
+ <a id="link-3" ng-href="/{{'123'}}">link 3</a> (link, reload!)<br />
+ <a id="link-4" href="" name="xx" ng-click="value = 4">anchor</a> (link, don't reload)<br />
+ <a id="link-5" name="xxx" ng-click="value = 5">anchor</a> (no link)<br />
+ <a id="link-6" ng-href="{{value}}">link</a> (link, change location)
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should execute ng-click but not reload when href without value', function() {
+ element(by.id('link-1')).click();
+ expect(element(by.model('value')).getAttribute('value')).toEqual('1');
+ expect(element(by.id('link-1')).getAttribute('href')).toBe('');
+ });
+
+ it('should execute ng-click but not reload when href empty string', function() {
+ element(by.id('link-2')).click();
+ expect(element(by.model('value')).getAttribute('value')).toEqual('2');
+ expect(element(by.id('link-2')).getAttribute('href')).toBe('');
+ });
+
+ it('should execute ng-click and change url when ng-href specified', function() {
+ expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\/123$/);
+
+ element(by.id('link-3')).click();
+
+ // At this point, we navigate away from an Angular page, so we need
+ // to use browser.driver to get the base webdriver.
+
+ browser.wait(function() {
+ return browser.driver.getCurrentUrl().then(function(url) {
+ return url.match(/\/123$/);
+ });
+ }, 5000, 'page should navigate to /123');
+ });
+
+ it('should execute ng-click but not reload when href empty string and name specified', function() {
+ element(by.id('link-4')).click();
+ expect(element(by.model('value')).getAttribute('value')).toEqual('4');
+ expect(element(by.id('link-4')).getAttribute('href')).toBe('');
+ });
+
+ it('should execute ng-click but not reload when no href but name specified', function() {
+ element(by.id('link-5')).click();
+ expect(element(by.model('value')).getAttribute('value')).toEqual('5');
+ expect(element(by.id('link-5')).getAttribute('href')).toBe(null);
+ });
+
+ it('should only change url when only ng-href', function() {
+ element(by.model('value')).clear();
+ element(by.model('value')).sendKeys('6');
+ expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\/6$/);
+
+ element(by.id('link-6')).click();
+
+ // At this point, we navigate away from an Angular page, so we need
+ // to use browser.driver to get the base webdriver.
+ browser.wait(function() {
+ return browser.driver.getCurrentUrl().then(function(url) {
+ return url.match(/\/6$/);
+ });
+ }, 5000, 'page should navigate to /6');
+ });
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngSrc
+ * @restrict A
+ * @priority 99
+ *
+ * @description
+ * Using Angular markup like `{{hash}}` in a `src` attribute doesn't
+ * work right: The browser will fetch from the URL with the literal
+ * text `{{hash}}` until Angular replaces the expression inside
+ * `{{hash}}`. The `ngSrc` directive solves this problem.
+ *
+ * The buggy way to write it:
+ * ```html
+ * <img src="http://www.gravatar.com/avatar/{{hash}}" alt="Description"/>
+ * ```
+ *
+ * The correct way to write it:
+ * ```html
+ * <img ng-src="http://www.gravatar.com/avatar/{{hash}}" alt="Description" />
+ * ```
+ *
+ * @element IMG
+ * @param {template} ngSrc any string which can contain `{{}}` markup.
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngSrcset
+ * @restrict A
+ * @priority 99
+ *
+ * @description
+ * Using Angular markup like `{{hash}}` in a `srcset` attribute doesn't
+ * work right: The browser will fetch from the URL with the literal
+ * text `{{hash}}` until Angular replaces the expression inside
+ * `{{hash}}`. The `ngSrcset` directive solves this problem.
+ *
+ * The buggy way to write it:
+ * ```html
+ * <img srcset="http://www.gravatar.com/avatar/{{hash}} 2x" alt="Description"/>
+ * ```
+ *
+ * The correct way to write it:
+ * ```html
+ * <img ng-srcset="http://www.gravatar.com/avatar/{{hash}} 2x" alt="Description" />
+ * ```
+ *
+ * @element IMG
+ * @param {template} ngSrcset any string which can contain `{{}}` markup.
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngDisabled
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ *
+ * This directive sets the `disabled` attribute on the element if the
+ * {@link guide/expression expression} inside `ngDisabled` evaluates to truthy.
+ *
+ * A special directive is necessary because we cannot use interpolation inside the `disabled`
+ * attribute. The following example would make the button enabled on Chrome/Firefox
+ * but not on older IEs:
+ *
+ * ```html
+ * <!-- See below for an example of ng-disabled being used correctly -->
+ * <div ng-init="isDisabled = false">
+ * <button disabled="{{isDisabled}}">Disabled</button>
+ * </div>
+ * ```
+ *
+ * This is because the HTML specification does not require browsers to preserve the values of
+ * boolean attributes such as `disabled` (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Click me to toggle: <input type="checkbox" ng-model="checked"></label><br/>
+ <button ng-model="button" ng-disabled="checked">Button</button>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should toggle button', function() {
+ expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy();
+ element(by.model('checked')).click();
+ expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element INPUT
+ * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,
+ * then the `disabled` attribute will be set on the element
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngChecked
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ * Sets the `checked` attribute on the element, if the expression inside `ngChecked` is truthy.
+ *
+ * Note that this directive should not be used together with {@link ngModel `ngModel`},
+ * as this can lead to unexpected behavior.
+ *
+ * ### Why do we need `ngChecked`?
+ *
+ * The HTML specification does not require browsers to preserve the values of boolean attributes
+ * such as checked. (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ * The `ngChecked` directive solves this problem for the `checked` attribute.
+ * This complementary directive is not removed by the browser and so provides
+ * a permanent reliable place to store the binding information.
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Check me to check both: <input type="checkbox" ng-model="master"></label><br/>
+ <input id="checkSlave" type="checkbox" ng-checked="master" aria-label="Slave input">
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check both checkBoxes', function() {
+ expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy();
+ element(by.model('master')).click();
+ expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element INPUT
+ * @param {expression} ngChecked If the {@link guide/expression expression} is truthy,
+ * then the `checked` attribute will be set on the element
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngReadonly
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ * The HTML specification does not require browsers to preserve the values of boolean attributes
+ * such as readonly. (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ * The `ngReadonly` directive solves this problem for the `readonly` attribute.
+ * This complementary directive is not removed by the browser and so provides
+ * a permanent reliable place to store the binding information.
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Check me to make text readonly: <input type="checkbox" ng-model="checked"></label><br/>
+ <input type="text" ng-readonly="checked" value="I'm Angular" aria-label="Readonly field" />
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should toggle readonly attr', function() {
+ expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy();
+ element(by.model('checked')).click();
+ expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element INPUT
+ * @param {expression} ngReadonly If the {@link guide/expression expression} is truthy,
+ * then special attribute "readonly" will be set on the element
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngSelected
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ * The HTML specification does not require browsers to preserve the values of boolean attributes
+ * such as selected. (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ * The `ngSelected` directive solves this problem for the `selected` attribute.
+ * This complementary directive is not removed by the browser and so provides
+ * a permanent reliable place to store the binding information.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Check me to select: <input type="checkbox" ng-model="selected"></label><br/>
+ <select aria-label="ngSelected demo">
+ <option>Hello!</option>
+ <option id="greet" ng-selected="selected">Greetings!</option>
+ </select>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should select Greetings!', function() {
+ expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy();
+ element(by.model('selected')).click();
+ expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element OPTION
+ * @param {expression} ngSelected If the {@link guide/expression expression} is truthy,
+ * then special attribute "selected" will be set on the element
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngOpen
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ * The HTML specification does not require browsers to preserve the values of boolean attributes
+ * such as open. (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ * The `ngOpen` directive solves this problem for the `open` attribute.
+ * This complementary directive is not removed by the browser and so provides
+ * a permanent reliable place to store the binding information.
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Check me check multiple: <input type="checkbox" ng-model="open"></label><br/>
+ <details id="details" ng-open="open">
+ <summary>Show/Hide me</summary>
+ </details>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should toggle open', function() {
+ expect(element(by.id('details')).getAttribute('open')).toBeFalsy();
+ element(by.model('open')).click();
+ expect(element(by.id('details')).getAttribute('open')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element DETAILS
+ * @param {expression} ngOpen If the {@link guide/expression expression} is truthy,
+ * then special attribute "open" will be set on the element
+ */
+
+var ngAttributeAliasDirectives = {};
+
+// boolean attrs are evaluated
+forEach(BOOLEAN_ATTR, function(propName, attrName) {
+ // binding to multiple is not supported
+ if (propName == "multiple") return;
+
+ function defaultLinkFn(scope, element, attr) {
+ scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {
+ attr.$set(attrName, !!value);
+ });
+ }
+
+ var normalized = directiveNormalize('ng-' + attrName);
+ var linkFn = defaultLinkFn;
+
+ if (propName === 'checked') {
+ linkFn = function(scope, element, attr) {
+ // ensuring ngChecked doesn't interfere with ngModel when both are set on the same input
+ if (attr.ngModel !== attr[normalized]) {
+ defaultLinkFn(scope, element, attr);
+ }
+ };
+ }
+
+ ngAttributeAliasDirectives[normalized] = function() {
+ return {
+ restrict: 'A',
+ priority: 100,
+ link: linkFn
+ };
+ };
+});
+
+// aliased input attrs are evaluated
+forEach(ALIASED_ATTR, function(htmlAttr, ngAttr) {
+ ngAttributeAliasDirectives[ngAttr] = function() {
+ return {
+ priority: 100,
+ link: function(scope, element, attr) {
+ //special case ngPattern when a literal regular expression value
+ //is used as the expression (this way we don't have to watch anything).
+ if (ngAttr === "ngPattern" && attr.ngPattern.charAt(0) == "/") {
+ var match = attr.ngPattern.match(REGEX_STRING_REGEXP);
+ if (match) {
+ attr.$set("ngPattern", new RegExp(match[1], match[2]));
+ return;
+ }
+ }
+
+ scope.$watch(attr[ngAttr], function ngAttrAliasWatchAction(value) {
+ attr.$set(ngAttr, value);
+ });
+ }
+ };
+ };
+});
+
+// ng-src, ng-srcset, ng-href are interpolated
+forEach(['src', 'srcset', 'href'], function(attrName) {
+ var normalized = directiveNormalize('ng-' + attrName);
+ ngAttributeAliasDirectives[normalized] = function() {
+ return {
+ priority: 99, // it needs to run after the attributes are interpolated
+ link: function(scope, element, attr) {
+ var propName = attrName,
+ name = attrName;
+
+ if (attrName === 'href' &&
+ toString.call(element.prop('href')) === '[object SVGAnimatedString]') {
+ name = 'xlinkHref';
+ attr.$attr[name] = 'xlink:href';
+ propName = null;
+ }
+
+ attr.$observe(normalized, function(value) {
+ if (!value) {
+ if (attrName === 'href') {
+ attr.$set(name, null);
+ }
+ return;
+ }
+
+ attr.$set(name, value);
+
+ // on IE, if "ng:src" directive declaration is used and "src" attribute doesn't exist
+ // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need
+ // to set the property as well to achieve the desired effect.
+ // we use attr[attrName] value since $set can sanitize the url.
+ if (msie && propName) element.prop(propName, attr[name]);
+ });
+ }
+ };
+ };
+});
+
+/* global -nullFormCtrl, -SUBMITTED_CLASS, addSetValidityMethod: true
+ */
+var nullFormCtrl = {
+ $addControl: noop,
+ $$renameControl: nullFormRenameControl,
+ $removeControl: noop,
+ $setValidity: noop,
+ $setDirty: noop,
+ $setPristine: noop,
+ $setSubmitted: noop
+},
+SUBMITTED_CLASS = 'ng-submitted';
+
+function nullFormRenameControl(control, name) {
+ control.$name = name;
+}
+
+/**
+ * @ngdoc type
+ * @name form.FormController
+ *
+ * @property {boolean} $pristine True if user has not interacted with the form yet.
+ * @property {boolean} $dirty True if user has already interacted with the form.
+ * @property {boolean} $valid True if all of the containing forms and controls are valid.
+ * @property {boolean} $invalid True if at least one containing control or form is invalid.
+ * @property {boolean} $submitted True if user has submitted the form even if its invalid.
+ *
+ * @property {Object} $error Is an object hash, containing references to controls or
+ * forms with failing validators, where:
+ *
+ * - keys are validation tokens (error names),
+ * - values are arrays of controls or forms that have a failing validator for given error name.
+ *
+ * Built-in validation tokens:
+ *
+ * - `email`
+ * - `max`
+ * - `maxlength`
+ * - `min`
+ * - `minlength`
+ * - `number`
+ * - `pattern`
+ * - `required`
+ * - `url`
+ * - `date`
+ * - `datetimelocal`
+ * - `time`
+ * - `week`
+ * - `month`
+ *
+ * @description
+ * `FormController` keeps track of all its controls and nested forms as well as the state of them,
+ * such as being valid/invalid or dirty/pristine.
+ *
+ * Each {@link ng.directive:form form} directive creates an instance
+ * of `FormController`.
+ *
+ */
+//asks for $scope to fool the BC controller module
+FormController.$inject = ['$element', '$attrs', '$scope', '$animate', '$interpolate'];
+function FormController(element, attrs, $scope, $animate, $interpolate) {
+ var form = this,
+ controls = [];
+
+ var parentForm = form.$$parentForm = element.parent().controller('form') || nullFormCtrl;
+
+ // init state
+ form.$error = {};
+ form.$$success = {};
+ form.$pending = undefined;
+ form.$name = $interpolate(attrs.name || attrs.ngForm || '')($scope);
+ form.$dirty = false;
+ form.$pristine = true;
+ form.$valid = true;
+ form.$invalid = false;
+ form.$submitted = false;
+
+ parentForm.$addControl(form);
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$rollbackViewValue
+ *
+ * @description
+ * Rollback all form controls pending updates to the `$modelValue`.
+ *
+ * Updates may be pending by a debounced event or because the input is waiting for a some future
+ * event defined in `ng-model-options`. This method is typically needed by the reset button of
+ * a form that uses `ng-model-options` to pend updates.
+ */
+ form.$rollbackViewValue = function() {
+ forEach(controls, function(control) {
+ control.$rollbackViewValue();
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$commitViewValue
+ *
+ * @description
+ * Commit all form controls pending updates to the `$modelValue`.
+ *
+ * Updates may be pending by a debounced event or because the input is waiting for a some future
+ * event defined in `ng-model-options`. This method is rarely needed as `NgModelController`
+ * usually handles calling this in response to input events.
+ */
+ form.$commitViewValue = function() {
+ forEach(controls, function(control) {
+ control.$commitViewValue();
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$addControl
+ *
+ * @description
+ * Register a control with the form.
+ *
+ * Input elements using ngModelController do this automatically when they are linked.
+ */
+ form.$addControl = function(control) {
+ // Breaking change - before, inputs whose name was "hasOwnProperty" were quietly ignored
+ // and not added to the scope. Now we throw an error.
+ assertNotHasOwnProperty(control.$name, 'input');
+ controls.push(control);
+
+ if (control.$name) {
+ form[control.$name] = control;
+ }
+ };
+
+ // Private API: rename a form control
+ form.$$renameControl = function(control, newName) {
+ var oldName = control.$name;
+
+ if (form[oldName] === control) {
+ delete form[oldName];
+ }
+ form[newName] = control;
+ control.$name = newName;
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$removeControl
+ *
+ * @description
+ * Deregister a control from the form.
+ *
+ * Input elements using ngModelController do this automatically when they are destroyed.
+ */
+ form.$removeControl = function(control) {
+ if (control.$name && form[control.$name] === control) {
+ delete form[control.$name];
+ }
+ forEach(form.$pending, function(value, name) {
+ form.$setValidity(name, null, control);
+ });
+ forEach(form.$error, function(value, name) {
+ form.$setValidity(name, null, control);
+ });
+ forEach(form.$$success, function(value, name) {
+ form.$setValidity(name, null, control);
+ });
+
+ arrayRemove(controls, control);
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setValidity
+ *
+ * @description
+ * Sets the validity of a form control.
+ *
+ * This method will also propagate to parent forms.
+ */
+ addSetValidityMethod({
+ ctrl: this,
+ $element: element,
+ set: function(object, property, controller) {
+ var list = object[property];
+ if (!list) {
+ object[property] = [controller];
+ } else {
+ var index = list.indexOf(controller);
+ if (index === -1) {
+ list.push(controller);
+ }
+ }
+ },
+ unset: function(object, property, controller) {
+ var list = object[property];
+ if (!list) {
+ return;
+ }
+ arrayRemove(list, controller);
+ if (list.length === 0) {
+ delete object[property];
+ }
+ },
+ parentForm: parentForm,
+ $animate: $animate
+ });
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setDirty
+ *
+ * @description
+ * Sets the form to a dirty state.
+ *
+ * This method can be called to add the 'ng-dirty' class and set the form to a dirty
+ * state (ng-dirty class). This method will also propagate to parent forms.
+ */
+ form.$setDirty = function() {
+ $animate.removeClass(element, PRISTINE_CLASS);
+ $animate.addClass(element, DIRTY_CLASS);
+ form.$dirty = true;
+ form.$pristine = false;
+ parentForm.$setDirty();
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setPristine
+ *
+ * @description
+ * Sets the form to its pristine state.
+ *
+ * This method can be called to remove the 'ng-dirty' class and set the form to its pristine
+ * state (ng-pristine class). This method will also propagate to all the controls contained
+ * in this form.
+ *
+ * Setting a form back to a pristine state is often useful when we want to 'reuse' a form after
+ * saving or resetting it.
+ */
+ form.$setPristine = function() {
+ $animate.setClass(element, PRISTINE_CLASS, DIRTY_CLASS + ' ' + SUBMITTED_CLASS);
+ form.$dirty = false;
+ form.$pristine = true;
+ form.$submitted = false;
+ forEach(controls, function(control) {
+ control.$setPristine();
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setUntouched
+ *
+ * @description
+ * Sets the form to its untouched state.
+ *
+ * This method can be called to remove the 'ng-touched' class and set the form controls to their
+ * untouched state (ng-untouched class).
+ *
+ * Setting a form controls back to their untouched state is often useful when setting the form
+ * back to its pristine state.
+ */
+ form.$setUntouched = function() {
+ forEach(controls, function(control) {
+ control.$setUntouched();
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setSubmitted
+ *
+ * @description
+ * Sets the form to its submitted state.
+ */
+ form.$setSubmitted = function() {
+ $animate.addClass(element, SUBMITTED_CLASS);
+ form.$submitted = true;
+ parentForm.$setSubmitted();
+ };
+}
+
+/**
+ * @ngdoc directive
+ * @name ngForm
+ * @restrict EAC
+ *
+ * @description
+ * Nestable alias of {@link ng.directive:form `form`} directive. HTML
+ * does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a
+ * sub-group of controls needs to be determined.
+ *
+ * Note: the purpose of `ngForm` is to group controls,
+ * but not to be a replacement for the `<form>` tag with all of its capabilities
+ * (e.g. posting to the server, ...).
+ *
+ * @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into
+ * related scope, under this name.
+ *
+ */
+
+ /**
+ * @ngdoc directive
+ * @name form
+ * @restrict E
+ *
+ * @description
+ * Directive that instantiates
+ * {@link form.FormController FormController}.
+ *
+ * If the `name` attribute is specified, the form controller is published onto the current scope under
+ * this name.
+ *
+ * # Alias: {@link ng.directive:ngForm `ngForm`}
+ *
+ * In Angular, forms can be nested. This means that the outer form is valid when all of the child
+ * forms are valid as well. However, browsers do not allow nesting of `<form>` elements, so
+ * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to
+ * `<form>` but can be nested. This allows you to have nested forms, which is very useful when
+ * using Angular validation directives in forms that are dynamically generated using the
+ * {@link ng.directive:ngRepeat `ngRepeat`} directive. Since you cannot dynamically generate the `name`
+ * attribute of input elements using interpolation, you have to wrap each set of repeated inputs in an
+ * `ngForm` directive and nest these in an outer `form` element.
+ *
+ *
+ * # CSS classes
+ * - `ng-valid` is set if the form is valid.
+ * - `ng-invalid` is set if the form is invalid.
+ * - `ng-pristine` is set if the form is pristine.
+ * - `ng-dirty` is set if the form is dirty.
+ * - `ng-submitted` is set if the form was submitted.
+ *
+ * Keep in mind that ngAnimate can detect each of these classes when added and removed.
+ *
+ *
+ * # Submitting a form and preventing the default action
+ *
+ * Since the role of forms in client-side Angular applications is different than in classical
+ * roundtrip apps, it is desirable for the browser not to translate the form submission into a full
+ * page reload that sends the data to the server. Instead some javascript logic should be triggered
+ * to handle the form submission in an application-specific way.
+ *
+ * For this reason, Angular prevents the default action (form submission to the server) unless the
+ * `<form>` element has an `action` attribute specified.
+ *
+ * You can use one of the following two ways to specify what javascript method should be called when
+ * a form is submitted:
+ *
+ * - {@link ng.directive:ngSubmit ngSubmit} directive on the form element
+ * - {@link ng.directive:ngClick ngClick} directive on the first
+ * button or input field of type submit (input[type=submit])
+ *
+ * To prevent double execution of the handler, use only one of the {@link ng.directive:ngSubmit ngSubmit}
+ * or {@link ng.directive:ngClick ngClick} directives.
+ * This is because of the following form submission rules in the HTML specification:
+ *
+ * - If a form has only one input field then hitting enter in this field triggers form submit
+ * (`ngSubmit`)
+ * - if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter
+ * doesn't trigger submit
+ * - if a form has one or more input fields and one or more buttons or input[type=submit] then
+ * hitting enter in any of the input fields will trigger the click handler on the *first* button or
+ * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`)
+ *
+ * Any pending `ngModelOptions` changes will take place immediately when an enclosing form is
+ * submitted. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`
+ * to have access to the updated model.
+ *
+ * ## Animation Hooks
+ *
+ * Animations in ngForm are triggered when any of the associated CSS classes are added and removed.
+ * These classes are: `.ng-pristine`, `.ng-dirty`, `.ng-invalid` and `.ng-valid` as well as any
+ * other validations that are performed within the form. Animations in ngForm are similar to how
+ * they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well
+ * as JS animations.
+ *
+ * The following example shows a simple way to utilize CSS transitions to style a form element
+ * that has been rendered as invalid after it has been validated:
+ *
+ * <pre>
+ * //be sure to include ngAnimate as a module to hook into more
+ * //advanced animations
+ * .my-form {
+ * transition:0.5s linear all;
+ * background: white;
+ * }
+ * .my-form.ng-invalid {
+ * background: red;
+ * color:white;
+ * }
+ * </pre>
+ *
+ * @example
+ <example deps="angular-animate.js" animations="true" fixBase="true" module="formExample">
+ <file name="index.html">
+ <script>
+ angular.module('formExample', [])
+ .controller('FormController', ['$scope', function($scope) {
+ $scope.userType = 'guest';
+ }]);
+ </script>
+ <style>
+ .my-form {
+ -webkit-transition:all linear 0.5s;
+ transition:all linear 0.5s;
+ background: transparent;
+ }
+ .my-form.ng-invalid {
+ background: red;
+ }
+ </style>
+ <form name="myForm" ng-controller="FormController" class="my-form">
+ userType: <input name="input" ng-model="userType" required>
+ <span class="error" ng-show="myForm.input.$error.required">Required!</span><br>
+ <code>userType = {{userType}}</code><br>
+ <code>myForm.input.$valid = {{myForm.input.$valid}}</code><br>
+ <code>myForm.input.$error = {{myForm.input.$error}}</code><br>
+ <code>myForm.$valid = {{myForm.$valid}}</code><br>
+ <code>myForm.$error.required = {{!!myForm.$error.required}}</code><br>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should initialize to model', function() {
+ var userType = element(by.binding('userType'));
+ var valid = element(by.binding('myForm.input.$valid'));
+
+ expect(userType.getText()).toContain('guest');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ var userType = element(by.binding('userType'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var userInput = element(by.model('userType'));
+
+ userInput.clear();
+ userInput.sendKeys('');
+
+ expect(userType.getText()).toEqual('userType =');
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ *
+ * @param {string=} name Name of the form. If specified, the form controller will be published into
+ * related scope, under this name.
+ */
+var formDirectiveFactory = function(isNgForm) {
+ return ['$timeout', '$parse', function($timeout, $parse) {
+ var formDirective = {
+ name: 'form',
+ restrict: isNgForm ? 'EAC' : 'E',
+ controller: FormController,
+ compile: function ngFormCompile(formElement, attr) {
+ // Setup initial state of the control
+ formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS);
+
+ var nameAttr = attr.name ? 'name' : (isNgForm && attr.ngForm ? 'ngForm' : false);
+
+ return {
+ pre: function ngFormPreLink(scope, formElement, attr, controller) {
+ // if `action` attr is not present on the form, prevent the default action (submission)
+ if (!('action' in attr)) {
+ // we can't use jq events because if a form is destroyed during submission the default
+ // action is not prevented. see #1238
+ //
+ // IE 9 is not affected because it doesn't fire a submit event and try to do a full
+ // page reload if the form was destroyed by submission of the form via a click handler
+ // on a button in the form. Looks like an IE9 specific bug.
+ var handleFormSubmission = function(event) {
+ scope.$apply(function() {
+ controller.$commitViewValue();
+ controller.$setSubmitted();
+ });
+
+ event.preventDefault();
+ };
+
+ addEventListenerFn(formElement[0], 'submit', handleFormSubmission);
+
+ // unregister the preventDefault listener so that we don't not leak memory but in a
+ // way that will achieve the prevention of the default action.
+ formElement.on('$destroy', function() {
+ $timeout(function() {
+ removeEventListenerFn(formElement[0], 'submit', handleFormSubmission);
+ }, 0, false);
+ });
+ }
+
+ var parentFormCtrl = controller.$$parentForm;
+ var setter = nameAttr ? getSetter(controller.$name) : noop;
+
+ if (nameAttr) {
+ setter(scope, controller);
+ attr.$observe(nameAttr, function(newValue) {
+ if (controller.$name === newValue) return;
+ setter(scope, undefined);
+ parentFormCtrl.$$renameControl(controller, newValue);
+ setter = getSetter(controller.$name);
+ setter(scope, controller);
+ });
+ }
+ formElement.on('$destroy', function() {
+ parentFormCtrl.$removeControl(controller);
+ setter(scope, undefined);
+ extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards
+ });
+ }
+ };
+ }
+ };
+
+ return formDirective;
+
+ function getSetter(expression) {
+ if (expression === '') {
+ //create an assignable expression, so forms with an empty name can be renamed later
+ return $parse('this[""]').assign;
+ }
+ return $parse(expression).assign || noop;
+ }
+ }];
+};
+
+var formDirective = formDirectiveFactory();
+var ngFormDirective = formDirectiveFactory(true);
+
+/* global VALID_CLASS: false,
+ INVALID_CLASS: false,
+ PRISTINE_CLASS: false,
+ DIRTY_CLASS: false,
+ UNTOUCHED_CLASS: false,
+ TOUCHED_CLASS: false,
+ ngModelMinErr: false,
+*/
+
+// Regex code is obtained from SO: https://stackoverflow.com/questions/3143070/javascript-regex-iso-datetime#answer-3143231
+var ISO_DATE_REGEXP = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/;
+var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;
+var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
+var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/;
+var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/;
+var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
+var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/;
+var MONTH_REGEXP = /^(\d{4})-(\d\d)$/;
+var TIME_REGEXP = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
+
+var inputType = {
+
+ /**
+ * @ngdoc input
+ * @name input[text]
+ *
+ * @description
+ * Standard HTML text input with angular data binding, inherited by most of the `input` elements.
+ *
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Adds `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
+ * any length.
+ * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
+ * that contains the regular expression body that will be converted to a regular expression
+ * as in the ngPattern directive.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
+ * This parameter is ignored for input[type=password] controls, which will never trim the
+ * input.
+ *
+ * @example
+ <example name="text-input-directive" module="textInputExample">
+ <file name="index.html">
+ <script>
+ angular.module('textInputExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.example = {
+ text: 'guest',
+ word: /^\s*\w*\s*$/
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>Single word:
+ <input type="text" name="input" ng-model="example.text"
+ ng-pattern="example.word" required ng-trim="false">
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.pattern">
+ Single word only!</span>
+ </div>
+ <tt>text = {{example.text}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var text = element(by.binding('example.text'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.text'));
+
+ it('should initialize to model', function() {
+ expect(text.getText()).toContain('guest');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ input.clear();
+ input.sendKeys('');
+
+ expect(text.getText()).toEqual('text =');
+ expect(valid.getText()).toContain('false');
+ });
+
+ it('should be invalid if multi word', function() {
+ input.clear();
+ input.sendKeys('hello world');
+
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+ 'text': textInputType,
+
+ /**
+ * @ngdoc input
+ * @name input[date]
+ *
+ * @description
+ * Input with date validation and transformation. In browsers that do not yet support
+ * the HTML5 date input, a text element will be used. In that case, text must be entered in a valid ISO-8601
+ * date format (yyyy-MM-dd), for example: `2009-01-06`. Since many
+ * modern browsers do not yet support this input type, it is important to provide cues to users on the
+ * expected input format via a placeholder or label.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
+ * valid ISO date string (yyyy-MM-dd).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
+ * a valid ISO date string (yyyy-MM-dd).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="date-input-directive" module="dateInputExample">
+ <file name="index.html">
+ <script>
+ angular.module('dateInputExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(2013, 9, 22)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label for="exampleInput">Pick a date in 2013:</label>
+ <input type="date" id="exampleInput" name="input" ng-model="example.value"
+ placeholder="yyyy-MM-dd" min="2013-01-01" max="2013-12-31" required />
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.date">
+ Not a valid date!</span>
+ </div>
+ <tt>value = {{example.value | date: "yyyy-MM-dd"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "yyyy-MM-dd"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (see https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('2013-10-22');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('2015-01-01');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'date': createDateInputType('date', DATE_REGEXP,
+ createDateParser(DATE_REGEXP, ['yyyy', 'MM', 'dd']),
+ 'yyyy-MM-dd'),
+
+ /**
+ * @ngdoc input
+ * @name input[datetime-local]
+ *
+ * @description
+ * Input with datetime validation and transformation. In browsers that do not yet support
+ * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
+ * local datetime format (yyyy-MM-ddTHH:mm:ss), for example: `2010-12-28T14:57:00`.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
+ * valid ISO datetime format (yyyy-MM-ddTHH:mm:ss).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
+ * a valid ISO datetime format (yyyy-MM-ddTHH:mm:ss).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="datetimelocal-input-directive" module="dateExample">
+ <file name="index.html">
+ <script>
+ angular.module('dateExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(2010, 11, 28, 14, 57)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label for="exampleInput">Pick a date between in 2013:</label>
+ <input type="datetime-local" id="exampleInput" name="input" ng-model="example.value"
+ placeholder="yyyy-MM-ddTHH:mm:ss" min="2001-01-01T00:00:00" max="2013-12-31T00:00:00" required />
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.datetimelocal">
+ Not a valid date!</span>
+ </div>
+ <tt>value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "yyyy-MM-ddTHH:mm:ss"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('2010-12-28T14:57:00');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('2015-01-01T23:59:00');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'datetime-local': createDateInputType('datetimelocal', DATETIMELOCAL_REGEXP,
+ createDateParser(DATETIMELOCAL_REGEXP, ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss', 'sss']),
+ 'yyyy-MM-ddTHH:mm:ss.sss'),
+
+ /**
+ * @ngdoc input
+ * @name input[time]
+ *
+ * @description
+ * Input with time validation and transformation. In browsers that do not yet support
+ * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
+ * local time format (HH:mm:ss), for example: `14:57:00`. Model must be a Date object. This binding will always output a
+ * Date object to the model of January 1, 1970, or local date `new Date(1970, 0, 1, HH, mm, ss)`.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
+ * valid ISO time format (HH:mm:ss).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be a
+ * valid ISO time format (HH:mm:ss).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="time-input-directive" module="timeExample">
+ <file name="index.html">
+ <script>
+ angular.module('timeExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(1970, 0, 1, 14, 57, 0)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label for="exampleInput">Pick a between 8am and 5pm:</label>
+ <input type="time" id="exampleInput" name="input" ng-model="example.value"
+ placeholder="HH:mm:ss" min="08:00:00" max="17:00:00" required />
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.time">
+ Not a valid date!</span>
+ </div>
+ <tt>value = {{example.value | date: "HH:mm:ss"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "HH:mm:ss"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('14:57:00');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('23:59:00');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'time': createDateInputType('time', TIME_REGEXP,
+ createDateParser(TIME_REGEXP, ['HH', 'mm', 'ss', 'sss']),
+ 'HH:mm:ss.sss'),
+
+ /**
+ * @ngdoc input
+ * @name input[week]
+ *
+ * @description
+ * Input with week-of-the-year validation and transformation to Date. In browsers that do not yet support
+ * the HTML5 week input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
+ * week format (yyyy-W##), for example: `2013-W02`.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
+ * valid ISO week format (yyyy-W##).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
+ * a valid ISO week format (yyyy-W##).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="week-input-directive" module="weekExample">
+ <file name="index.html">
+ <script>
+ angular.module('weekExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(2013, 0, 3)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label>Pick a date between in 2013:
+ <input id="exampleInput" type="week" name="input" ng-model="example.value"
+ placeholder="YYYY-W##" min="2012-W32"
+ max="2013-W52" required />
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.week">
+ Not a valid date!</span>
+ </div>
+ <tt>value = {{example.value | date: "yyyy-Www"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "yyyy-Www"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('2013-W01');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('2015-W01');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'week': createDateInputType('week', WEEK_REGEXP, weekParser, 'yyyy-Www'),
+
+ /**
+ * @ngdoc input
+ * @name input[month]
+ *
+ * @description
+ * Input with month validation and transformation. In browsers that do not yet support
+ * the HTML5 month input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
+ * month format (yyyy-MM), for example: `2009-01`.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ * If the model is not set to the first of the month, the next view to model update will set it
+ * to the first of the month.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be
+ * a valid ISO month format (yyyy-MM).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must
+ * be a valid ISO month format (yyyy-MM).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="month-input-directive" module="monthExample">
+ <file name="index.html">
+ <script>
+ angular.module('monthExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(2013, 9, 1)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label for="exampleInput">Pick a month in 2013:</label>
+ <input id="exampleInput" type="month" name="input" ng-model="example.value"
+ placeholder="yyyy-MM" min="2013-01" max="2013-12" required />
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.month">
+ Not a valid month!</span>
+ </div>
+ <tt>value = {{example.value | date: "yyyy-MM"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "yyyy-MM"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('2013-10');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('2015-01');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'month': createDateInputType('month', MONTH_REGEXP,
+ createDateParser(MONTH_REGEXP, ['yyyy', 'MM']),
+ 'yyyy-MM'),
+
+ /**
+ * @ngdoc input
+ * @name input[number]
+ *
+ * @description
+ * Text input with number validation and transformation. Sets the `number` validation
+ * error if not a valid number.
+ *
+ * <div class="alert alert-warning">
+ * The model must always be of type `number` otherwise Angular will throw an error.
+ * Be aware that a string containing a number is not enough. See the {@link ngModel:numfmt}
+ * error docs for more information and an example of how to convert your model if necessary.
+ * </div>
+ *
+ * ## Issues with HTML5 constraint validation
+ *
+ * In browsers that follow the
+ * [HTML5 specification](https://html.spec.whatwg.org/multipage/forms.html#number-state-%28type=number%29),
+ * `input[number]` does not work as expected with {@link ngModelOptions `ngModelOptions.allowInvalid`}.
+ * If a non-number is entered in the input, the browser will report the value as an empty string,
+ * which means the view / model values in `ngModel` and subsequently the scope value
+ * will also be an empty string.
+ *
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
+ * any length.
+ * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
+ * that contains the regular expression body that will be converted to a regular expression
+ * as in the ngPattern directive.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="number-input-directive" module="numberExample">
+ <file name="index.html">
+ <script>
+ angular.module('numberExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.example = {
+ value: 12
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>Number:
+ <input type="number" name="input" ng-model="example.value"
+ min="0" max="99" required>
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.number">
+ Not valid number!</span>
+ </div>
+ <tt>value = {{example.value}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('12');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ input.clear();
+ input.sendKeys('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('false');
+ });
+
+ it('should be invalid if over max', function() {
+ input.clear();
+ input.sendKeys('123');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+ 'number': numberInputType,
+
+
+ /**
+ * @ngdoc input
+ * @name input[url]
+ *
+ * @description
+ * Text input with URL validation. Sets the `url` validation error key if the content is not a
+ * valid URL.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** `input[url]` uses a regex to validate urls that is derived from the regex
+ * used in Chromium. If you need stricter validation, you can use `ng-pattern` or modify
+ * the built-in validators (see the {@link guide/forms Forms guide})
+ * </div>
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
+ * any length.
+ * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
+ * that contains the regular expression body that will be converted to a regular expression
+ * as in the ngPattern directive.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="url-input-directive" module="urlExample">
+ <file name="index.html">
+ <script>
+ angular.module('urlExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.url = {
+ text: 'http://google.com'
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>URL:
+ <input type="url" name="input" ng-model="url.text" required>
+ <label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.url">
+ Not valid url!</span>
+ </div>
+ <tt>text = {{url.text}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ <tt>myForm.$error.url = {{!!myForm.$error.url}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var text = element(by.binding('url.text'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('url.text'));
+
+ it('should initialize to model', function() {
+ expect(text.getText()).toContain('http://google.com');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ input.clear();
+ input.sendKeys('');
+
+ expect(text.getText()).toEqual('text =');
+ expect(valid.getText()).toContain('false');
+ });
+
+ it('should be invalid if not url', function() {
+ input.clear();
+ input.sendKeys('box');
+
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+ 'url': urlInputType,
+
+
+ /**
+ * @ngdoc input
+ * @name input[email]
+ *
+ * @description
+ * Text input with email validation. Sets the `email` validation error key if not a valid email
+ * address.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** `input[email]` uses a regex to validate email addresses that is derived from the regex
+ * used in Chromium. If you need stricter validation (e.g. requiring a top-level domain), you can
+ * use `ng-pattern` or modify the built-in validators (see the {@link guide/forms Forms guide})
+ * </div>
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
+ * any length.
+ * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
+ * that contains the regular expression body that will be converted to a regular expression
+ * as in the ngPattern directive.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="email-input-directive" module="emailExample">
+ <file name="index.html">
+ <script>
+ angular.module('emailExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.email = {
+ text: 'me@example.com'
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>Email:
+ <input type="email" name="input" ng-model="email.text" required>
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.email">
+ Not valid email!</span>
+ </div>
+ <tt>text = {{email.text}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ <tt>myForm.$error.email = {{!!myForm.$error.email}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var text = element(by.binding('email.text'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('email.text'));
+
+ it('should initialize to model', function() {
+ expect(text.getText()).toContain('me@example.com');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ input.clear();
+ input.sendKeys('');
+ expect(text.getText()).toEqual('text =');
+ expect(valid.getText()).toContain('false');
+ });
+
+ it('should be invalid if not email', function() {
+ input.clear();
+ input.sendKeys('xxx');
+
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+ 'email': emailInputType,
+
+
+ /**
+ * @ngdoc input
+ * @name input[radio]
+ *
+ * @description
+ * HTML radio button.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string} value The value to which the `ngModel` expression should be set when selected.
+ * Note that `value` only supports `string` values, i.e. the scope model needs to be a string,
+ * too. Use `ngValue` if you need complex models (`number`, `object`, ...).
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ * @param {string} ngValue Angular expression to which `ngModel` will be be set when the radio
+ * is selected. Should be used instead of the `value` attribute if you need
+ * a non-string `ngModel` (`boolean`, `array`, ...).
+ *
+ * @example
+ <example name="radio-input-directive" module="radioExample">
+ <file name="index.html">
+ <script>
+ angular.module('radioExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.color = {
+ name: 'blue'
+ };
+ $scope.specialValue = {
+ "id": "12345",
+ "value": "green"
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>
+ <input type="radio" ng-model="color.name" value="red">
+ Red
+ </label><br/>
+ <label>
+ <input type="radio" ng-model="color.name" ng-value="specialValue">
+ Green
+ </label><br/>
+ <label>
+ <input type="radio" ng-model="color.name" value="blue">
+ Blue
+ </label><br/>
+ <tt>color = {{color.name | json}}</tt><br/>
+ </form>
+ Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`.
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should change state', function() {
+ var color = element(by.binding('color.name'));
+
+ expect(color.getText()).toContain('blue');
+
+ element.all(by.model('color.name')).get(0).click();
+
+ expect(color.getText()).toContain('red');
+ });
+ </file>
+ </example>
+ */
+ 'radio': radioInputType,
+
+
+ /**
+ * @ngdoc input
+ * @name input[checkbox]
+ *
+ * @description
+ * HTML checkbox.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {expression=} ngTrueValue The value to which the expression should be set when selected.
+ * @param {expression=} ngFalseValue The value to which the expression should be set when not selected.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="checkbox-input-directive" module="checkboxExample">
+ <file name="index.html">
+ <script>
+ angular.module('checkboxExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.checkboxModel = {
+ value1 : true,
+ value2 : 'YES'
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>Value1:
+ <input type="checkbox" ng-model="checkboxModel.value1">
+ </label><br/>
+ <label>Value2:
+ <input type="checkbox" ng-model="checkboxModel.value2"
+ ng-true-value="'YES'" ng-false-value="'NO'">
+ </label><br/>
+ <tt>value1 = {{checkboxModel.value1}}</tt><br/>
+ <tt>value2 = {{checkboxModel.value2}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should change state', function() {
+ var value1 = element(by.binding('checkboxModel.value1'));
+ var value2 = element(by.binding('checkboxModel.value2'));
+
+ expect(value1.getText()).toContain('true');
+ expect(value2.getText()).toContain('YES');
+
+ element(by.model('checkboxModel.value1')).click();
+ element(by.model('checkboxModel.value2')).click();
+
+ expect(value1.getText()).toContain('false');
+ expect(value2.getText()).toContain('NO');
+ });
+ </file>
+ </example>
+ */
+ 'checkbox': checkboxInputType,
+
+ 'hidden': noop,
+ 'button': noop,
+ 'submit': noop,
+ 'reset': noop,
+ 'file': noop
+};
+
+function stringBasedInputType(ctrl) {
+ ctrl.$formatters.push(function(value) {
+ return ctrl.$isEmpty(value) ? value : value.toString();
+ });
+}
+
+function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+ stringBasedInputType(ctrl);
+}
+
+function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ var type = lowercase(element[0].type);
+
+ // In composition mode, users are still inputing intermediate text buffer,
+ // hold the listener until composition is done.
+ // More about composition events: https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent
+ if (!$sniffer.android) {
+ var composing = false;
+
+ element.on('compositionstart', function(data) {
+ composing = true;
+ });
+
+ element.on('compositionend', function() {
+ composing = false;
+ listener();
+ });
+ }
+
+ var listener = function(ev) {
+ if (timeout) {
+ $browser.defer.cancel(timeout);
+ timeout = null;
+ }
+ if (composing) return;
+ var value = element.val(),
+ event = ev && ev.type;
+
+ // By default we will trim the value
+ // If the attribute ng-trim exists we will avoid trimming
+ // If input type is 'password', the value is never trimmed
+ if (type !== 'password' && (!attr.ngTrim || attr.ngTrim !== 'false')) {
+ value = trim(value);
+ }
+
+ // If a control is suffering from bad input (due to native validators), browsers discard its
+ // value, so it may be necessary to revalidate (by calling $setViewValue again) even if the
+ // control's value is the same empty value twice in a row.
+ if (ctrl.$viewValue !== value || (value === '' && ctrl.$$hasNativeValidators)) {
+ ctrl.$setViewValue(value, event);
+ }
+ };
+
+ // if the browser does support "input" event, we are fine - except on IE9 which doesn't fire the
+ // input event on backspace, delete or cut
+ if ($sniffer.hasEvent('input')) {
+ element.on('input', listener);
+ } else {
+ var timeout;
+
+ var deferListener = function(ev, input, origValue) {
+ if (!timeout) {
+ timeout = $browser.defer(function() {
+ timeout = null;
+ if (!input || input.value !== origValue) {
+ listener(ev);
+ }
+ });
+ }
+ };
+
+ element.on('keydown', function(event) {
+ var key = event.keyCode;
+
+ // ignore
+ // command modifiers arrows
+ if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return;
+
+ deferListener(event, this, this.value);
+ });
+
+ // if user modifies input value using context menu in IE, we need "paste" and "cut" events to catch it
+ if ($sniffer.hasEvent('paste')) {
+ element.on('paste cut', deferListener);
+ }
+ }
+
+ // if user paste into input using mouse on older browser
+ // or form autocomplete on newer browser, we need "change" event to catch it
+ element.on('change', listener);
+
+ ctrl.$render = function() {
+ // Workaround for Firefox validation #12102.
+ var value = ctrl.$isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue;
+ if (element.val() !== value) {
+ element.val(value);
+ }
+ };
+}
+
+function weekParser(isoWeek, existingDate) {
+ if (isDate(isoWeek)) {
+ return isoWeek;
+ }
+
+ if (isString(isoWeek)) {
+ WEEK_REGEXP.lastIndex = 0;
+ var parts = WEEK_REGEXP.exec(isoWeek);
+ if (parts) {
+ var year = +parts[1],
+ week = +parts[2],
+ hours = 0,
+ minutes = 0,
+ seconds = 0,
+ milliseconds = 0,
+ firstThurs = getFirstThursdayOfYear(year),
+ addDays = (week - 1) * 7;
+
+ if (existingDate) {
+ hours = existingDate.getHours();
+ minutes = existingDate.getMinutes();
+ seconds = existingDate.getSeconds();
+ milliseconds = existingDate.getMilliseconds();
+ }
+
+ return new Date(year, 0, firstThurs.getDate() + addDays, hours, minutes, seconds, milliseconds);
+ }
+ }
+
+ return NaN;
+}
+
+function createDateParser(regexp, mapping) {
+ return function(iso, date) {
+ var parts, map;
+
+ if (isDate(iso)) {
+ return iso;
+ }
+
+ if (isString(iso)) {
+ // When a date is JSON'ified to wraps itself inside of an extra
+ // set of double quotes. This makes the date parsing code unable
+ // to match the date string and parse it as a date.
+ if (iso.charAt(0) == '"' && iso.charAt(iso.length - 1) == '"') {
+ iso = iso.substring(1, iso.length - 1);
+ }
+ if (ISO_DATE_REGEXP.test(iso)) {
+ return new Date(iso);
+ }
+ regexp.lastIndex = 0;
+ parts = regexp.exec(iso);
+
+ if (parts) {
+ parts.shift();
+ if (date) {
+ map = {
+ yyyy: date.getFullYear(),
+ MM: date.getMonth() + 1,
+ dd: date.getDate(),
+ HH: date.getHours(),
+ mm: date.getMinutes(),
+ ss: date.getSeconds(),
+ sss: date.getMilliseconds() / 1000
+ };
+ } else {
+ map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 };
+ }
+
+ forEach(parts, function(part, index) {
+ if (index < mapping.length) {
+ map[mapping[index]] = +part;
+ }
+ });
+ return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss * 1000 || 0);
+ }
+ }
+
+ return NaN;
+ };
+}
+
+function createDateInputType(type, regexp, parseDate, format) {
+ return function dynamicDateInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter) {
+ badInputChecker(scope, element, attr, ctrl);
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+ var timezone = ctrl && ctrl.$options && ctrl.$options.timezone;
+ var previousDate;
+
+ ctrl.$$parserName = type;
+ ctrl.$parsers.push(function(value) {
+ if (ctrl.$isEmpty(value)) return null;
+ if (regexp.test(value)) {
+ // Note: We cannot read ctrl.$modelValue, as there might be a different
+ // parser/formatter in the processing chain so that the model
+ // contains some different data format!
+ var parsedDate = parseDate(value, previousDate);
+ if (timezone) {
+ parsedDate = convertTimezoneToLocal(parsedDate, timezone);
+ }
+ return parsedDate;
+ }
+ return undefined;
+ });
+
+ ctrl.$formatters.push(function(value) {
+ if (value && !isDate(value)) {
+ throw ngModelMinErr('datefmt', 'Expected `{0}` to be a date', value);
+ }
+ if (isValidDate(value)) {
+ previousDate = value;
+ if (previousDate && timezone) {
+ previousDate = convertTimezoneToLocal(previousDate, timezone, true);
+ }
+ return $filter('date')(value, format, timezone);
+ } else {
+ previousDate = null;
+ return '';
+ }
+ });
+
+ if (isDefined(attr.min) || attr.ngMin) {
+ var minVal;
+ ctrl.$validators.min = function(value) {
+ return !isValidDate(value) || isUndefined(minVal) || parseDate(value) >= minVal;
+ };
+ attr.$observe('min', function(val) {
+ minVal = parseObservedDateValue(val);
+ ctrl.$validate();
+ });
+ }
+
+ if (isDefined(attr.max) || attr.ngMax) {
+ var maxVal;
+ ctrl.$validators.max = function(value) {
+ return !isValidDate(value) || isUndefined(maxVal) || parseDate(value) <= maxVal;
+ };
+ attr.$observe('max', function(val) {
+ maxVal = parseObservedDateValue(val);
+ ctrl.$validate();
+ });
+ }
+
+ function isValidDate(value) {
+ // Invalid Date: getTime() returns NaN
+ return value && !(value.getTime && value.getTime() !== value.getTime());
+ }
+
+ function parseObservedDateValue(val) {
+ return isDefined(val) ? (isDate(val) ? val : parseDate(val)) : undefined;
+ }
+ };
+}
+
+function badInputChecker(scope, element, attr, ctrl) {
+ var node = element[0];
+ var nativeValidation = ctrl.$$hasNativeValidators = isObject(node.validity);
+ if (nativeValidation) {
+ ctrl.$parsers.push(function(value) {
+ var validity = element.prop(VALIDITY_STATE_PROPERTY) || {};
+ // Detect bug in FF35 for input[email] (https://bugzilla.mozilla.org/show_bug.cgi?id=1064430):
+ // - also sets validity.badInput (should only be validity.typeMismatch).
+ // - see http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#e-mail-state-(type=email)
+ // - can ignore this case as we can still read out the erroneous email...
+ return validity.badInput && !validity.typeMismatch ? undefined : value;
+ });
+ }
+}
+
+function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ badInputChecker(scope, element, attr, ctrl);
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+
+ ctrl.$$parserName = 'number';
+ ctrl.$parsers.push(function(value) {
+ if (ctrl.$isEmpty(value)) return null;
+ if (NUMBER_REGEXP.test(value)) return parseFloat(value);
+ return undefined;
+ });
+
+ ctrl.$formatters.push(function(value) {
+ if (!ctrl.$isEmpty(value)) {
+ if (!isNumber(value)) {
+ throw ngModelMinErr('numfmt', 'Expected `{0}` to be a number', value);
+ }
+ value = value.toString();
+ }
+ return value;
+ });
+
+ if (isDefined(attr.min) || attr.ngMin) {
+ var minVal;
+ ctrl.$validators.min = function(value) {
+ return ctrl.$isEmpty(value) || isUndefined(minVal) || value >= minVal;
+ };
+
+ attr.$observe('min', function(val) {
+ if (isDefined(val) && !isNumber(val)) {
+ val = parseFloat(val, 10);
+ }
+ minVal = isNumber(val) && !isNaN(val) ? val : undefined;
+ // TODO(matsko): implement validateLater to reduce number of validations
+ ctrl.$validate();
+ });
+ }
+
+ if (isDefined(attr.max) || attr.ngMax) {
+ var maxVal;
+ ctrl.$validators.max = function(value) {
+ return ctrl.$isEmpty(value) || isUndefined(maxVal) || value <= maxVal;
+ };
+
+ attr.$observe('max', function(val) {
+ if (isDefined(val) && !isNumber(val)) {
+ val = parseFloat(val, 10);
+ }
+ maxVal = isNumber(val) && !isNaN(val) ? val : undefined;
+ // TODO(matsko): implement validateLater to reduce number of validations
+ ctrl.$validate();
+ });
+ }
+}
+
+function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ // Note: no badInputChecker here by purpose as `url` is only a validation
+ // in browsers, i.e. we can always read out input.value even if it is not valid!
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+ stringBasedInputType(ctrl);
+
+ ctrl.$$parserName = 'url';
+ ctrl.$validators.url = function(modelValue, viewValue) {
+ var value = modelValue || viewValue;
+ return ctrl.$isEmpty(value) || URL_REGEXP.test(value);
+ };
+}
+
+function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ // Note: no badInputChecker here by purpose as `url` is only a validation
+ // in browsers, i.e. we can always read out input.value even if it is not valid!
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+ stringBasedInputType(ctrl);
+
+ ctrl.$$parserName = 'email';
+ ctrl.$validators.email = function(modelValue, viewValue) {
+ var value = modelValue || viewValue;
+ return ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value);
+ };
+}
+
+function radioInputType(scope, element, attr, ctrl) {
+ // make the name unique, if not defined
+ if (isUndefined(attr.name)) {
+ element.attr('name', nextUid());
+ }
+
+ var listener = function(ev) {
+ if (element[0].checked) {
+ ctrl.$setViewValue(attr.value, ev && ev.type);
+ }
+ };
+
+ element.on('click', listener);
+
+ ctrl.$render = function() {
+ var value = attr.value;
+ element[0].checked = (value == ctrl.$viewValue);
+ };
+
+ attr.$observe('value', ctrl.$render);
+}
+
+function parseConstantExpr($parse, context, name, expression, fallback) {
+ var parseFn;
+ if (isDefined(expression)) {
+ parseFn = $parse(expression);
+ if (!parseFn.constant) {
+ throw ngModelMinErr('constexpr', 'Expected constant expression for `{0}`, but saw ' +
+ '`{1}`.', name, expression);
+ }
+ return parseFn(context);
+ }
+ return fallback;
+}
+
+function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter, $parse) {
+ var trueValue = parseConstantExpr($parse, scope, 'ngTrueValue', attr.ngTrueValue, true);
+ var falseValue = parseConstantExpr($parse, scope, 'ngFalseValue', attr.ngFalseValue, false);
+
+ var listener = function(ev) {
+ ctrl.$setViewValue(element[0].checked, ev && ev.type);
+ };
+
+ element.on('click', listener);
+
+ ctrl.$render = function() {
+ element[0].checked = ctrl.$viewValue;
+ };
+
+ // Override the standard `$isEmpty` because the $viewValue of an empty checkbox is always set to `false`
+ // This is because of the parser below, which compares the `$modelValue` with `trueValue` to convert
+ // it to a boolean.
+ ctrl.$isEmpty = function(value) {
+ return value === false;
+ };
+
+ ctrl.$formatters.push(function(value) {
+ return equals(value, trueValue);
+ });
+
+ ctrl.$parsers.push(function(value) {
+ return value ? trueValue : falseValue;
+ });
+}
+
+
+/**
+ * @ngdoc directive
+ * @name textarea
+ * @restrict E
+ *
+ * @description
+ * HTML textarea element control with angular data-binding. The data-binding and validation
+ * properties of this element are exactly the same as those of the
+ * {@link ng.directive:input input element}.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
+ * length.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name input
+ * @restrict E
+ *
+ * @description
+ * HTML input element control. When used together with {@link ngModel `ngModel`}, it provides data-binding,
+ * input state control, and validation.
+ * Input control follows HTML5 input types and polyfills the HTML5 validation behavior for older browsers.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Not every feature offered is available for all input types.
+ * Specifically, data binding and event handling via `ng-model` is unsupported for `input[file]`.
+ * </div>
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {boolean=} ngRequired Sets `required` attribute if set to true
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
+ * length.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
+ * This parameter is ignored for input[type=password] controls, which will never trim the
+ * input.
+ *
+ * @example
+ <example name="input-directive" module="inputExample">
+ <file name="index.html">
+ <script>
+ angular.module('inputExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.user = {name: 'guest', last: 'visitor'};
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <form name="myForm">
+ <label>
+ User name:
+ <input type="text" name="userName" ng-model="user.name" required>
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.userName.$error.required">
+ Required!</span>
+ </div>
+ <label>
+ Last name:
+ <input type="text" name="lastName" ng-model="user.last"
+ ng-minlength="3" ng-maxlength="10">
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.lastName.$error.minlength">
+ Too short!</span>
+ <span class="error" ng-show="myForm.lastName.$error.maxlength">
+ Too long!</span>
+ </div>
+ </form>
+ <hr>
+ <tt>user = {{user}}</tt><br/>
+ <tt>myForm.userName.$valid = {{myForm.userName.$valid}}</tt><br/>
+ <tt>myForm.userName.$error = {{myForm.userName.$error}}</tt><br/>
+ <tt>myForm.lastName.$valid = {{myForm.lastName.$valid}}</tt><br/>
+ <tt>myForm.lastName.$error = {{myForm.lastName.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ <tt>myForm.$error.minlength = {{!!myForm.$error.minlength}}</tt><br/>
+ <tt>myForm.$error.maxlength = {{!!myForm.$error.maxlength}}</tt><br/>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var user = element(by.exactBinding('user'));
+ var userNameValid = element(by.binding('myForm.userName.$valid'));
+ var lastNameValid = element(by.binding('myForm.lastName.$valid'));
+ var lastNameError = element(by.binding('myForm.lastName.$error'));
+ var formValid = element(by.binding('myForm.$valid'));
+ var userNameInput = element(by.model('user.name'));
+ var userLastInput = element(by.model('user.last'));
+
+ it('should initialize to model', function() {
+ expect(user.getText()).toContain('{"name":"guest","last":"visitor"}');
+ expect(userNameValid.getText()).toContain('true');
+ expect(formValid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty when required', function() {
+ userNameInput.clear();
+ userNameInput.sendKeys('');
+
+ expect(user.getText()).toContain('{"last":"visitor"}');
+ expect(userNameValid.getText()).toContain('false');
+ expect(formValid.getText()).toContain('false');
+ });
+
+ it('should be valid if empty when min length is set', function() {
+ userLastInput.clear();
+ userLastInput.sendKeys('');
+
+ expect(user.getText()).toContain('{"name":"guest","last":""}');
+ expect(lastNameValid.getText()).toContain('true');
+ expect(formValid.getText()).toContain('true');
+ });
+
+ it('should be invalid if less than required min length', function() {
+ userLastInput.clear();
+ userLastInput.sendKeys('xx');
+
+ expect(user.getText()).toContain('{"name":"guest"}');
+ expect(lastNameValid.getText()).toContain('false');
+ expect(lastNameError.getText()).toContain('minlength');
+ expect(formValid.getText()).toContain('false');
+ });
+
+ it('should be invalid if longer than max length', function() {
+ userLastInput.clear();
+ userLastInput.sendKeys('some ridiculously long name');
+
+ expect(user.getText()).toContain('{"name":"guest"}');
+ expect(lastNameValid.getText()).toContain('false');
+ expect(lastNameError.getText()).toContain('maxlength');
+ expect(formValid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+var inputDirective = ['$browser', '$sniffer', '$filter', '$parse',
+ function($browser, $sniffer, $filter, $parse) {
+ return {
+ restrict: 'E',
+ require: ['?ngModel'],
+ link: {
+ pre: function(scope, element, attr, ctrls) {
+ if (ctrls[0]) {
+ (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrls[0], $sniffer,
+ $browser, $filter, $parse);
+ }
+ }
+ }
+ };
+}];
+
+
+
+var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/;
+/**
+ * @ngdoc directive
+ * @name ngValue
+ *
+ * @description
+ * Binds the given expression to the value of `<option>` or {@link input[radio] `input[radio]`},
+ * so that when the element is selected, the {@link ngModel `ngModel`} of that element is set to
+ * the bound value.
+ *
+ * `ngValue` is useful when dynamically generating lists of radio buttons using
+ * {@link ngRepeat `ngRepeat`}, as shown below.
+ *
+ * Likewise, `ngValue` can be used to generate `<option>` elements for
+ * the {@link select `select`} element. In that case however, only strings are supported
+ * for the `value `attribute, so the resulting `ngModel` will always be a string.
+ * Support for `select` models with non-string values is available via `ngOptions`.
+ *
+ * @element input
+ * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute
+ * of the `input` element
+ *
+ * @example
+ <example name="ngValue-directive" module="valueExample">
+ <file name="index.html">
+ <script>
+ angular.module('valueExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.names = ['pizza', 'unicorns', 'robots'];
+ $scope.my = { favorite: 'unicorns' };
+ }]);
+ </script>
+ <form ng-controller="ExampleController">
+ <h2>Which is your favorite?</h2>
+ <label ng-repeat="name in names" for="{{name}}">
+ {{name}}
+ <input type="radio"
+ ng-model="my.favorite"
+ ng-value="name"
+ id="{{name}}"
+ name="favorite">
+ </label>
+ <div>You chose {{my.favorite}}</div>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var favorite = element(by.binding('my.favorite'));
+
+ it('should initialize to model', function() {
+ expect(favorite.getText()).toContain('unicorns');
+ });
+ it('should bind the values to the inputs', function() {
+ element.all(by.model('my.favorite')).get(0).click();
+ expect(favorite.getText()).toContain('pizza');
+ });
+ </file>
+ </example>
+ */
+var ngValueDirective = function() {
+ return {
+ restrict: 'A',
+ priority: 100,
+ compile: function(tpl, tplAttr) {
+ if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {
+ return function ngValueConstantLink(scope, elm, attr) {
+ attr.$set('value', scope.$eval(attr.ngValue));
+ };
+ } else {
+ return function ngValueLink(scope, elm, attr) {
+ scope.$watch(attr.ngValue, function valueWatchAction(value) {
+ attr.$set('value', value);
+ });
+ };
+ }
+ }
+ };
+};
+
+/**
+ * @ngdoc directive
+ * @name ngBind
+ * @restrict AC
+ *
+ * @description
+ * The `ngBind` attribute tells Angular to replace the text content of the specified HTML element
+ * with the value of a given expression, and to update the text content when the value of that
+ * expression changes.
+ *
+ * Typically, you don't use `ngBind` directly, but instead you use the double curly markup like
+ * `{{ expression }}` which is similar but less verbose.
+ *
+ * It is preferable to use `ngBind` instead of `{{ expression }}` if a template is momentarily
+ * displayed by the browser in its raw state before Angular compiles it. Since `ngBind` is an
+ * element attribute, it makes the bindings invisible to the user while the page is loading.
+ *
+ * An alternative solution to this problem would be using the
+ * {@link ng.directive:ngCloak ngCloak} directive.
+ *
+ *
+ * @element ANY
+ * @param {expression} ngBind {@link guide/expression Expression} to evaluate.
+ *
+ * @example
+ * Enter a name in the Live Preview text box; the greeting below the text box changes instantly.
+ <example module="bindExample">
+ <file name="index.html">
+ <script>
+ angular.module('bindExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.name = 'Whirled';
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>Enter name: <input type="text" ng-model="name"></label><br>
+ Hello <span ng-bind="name"></span>!
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-bind', function() {
+ var nameInput = element(by.model('name'));
+
+ expect(element(by.binding('name')).getText()).toBe('Whirled');
+ nameInput.clear();
+ nameInput.sendKeys('world');
+ expect(element(by.binding('name')).getText()).toBe('world');
+ });
+ </file>
+ </example>
+ */
+var ngBindDirective = ['$compile', function($compile) {
+ return {
+ restrict: 'AC',
+ compile: function ngBindCompile(templateElement) {
+ $compile.$$addBindingClass(templateElement);
+ return function ngBindLink(scope, element, attr) {
+ $compile.$$addBindingInfo(element, attr.ngBind);
+ element = element[0];
+ scope.$watch(attr.ngBind, function ngBindWatchAction(value) {
+ element.textContent = value === undefined ? '' : value;
+ });
+ };
+ }
+ };
+}];
+
+
+/**
+ * @ngdoc directive
+ * @name ngBindTemplate
+ *
+ * @description
+ * The `ngBindTemplate` directive specifies that the element
+ * text content should be replaced with the interpolation of the template
+ * in the `ngBindTemplate` attribute.
+ * Unlike `ngBind`, the `ngBindTemplate` can contain multiple `{{` `}}`
+ * expressions. This directive is needed since some HTML elements
+ * (such as TITLE and OPTION) cannot contain SPAN elements.
+ *
+ * @element ANY
+ * @param {string} ngBindTemplate template of form
+ * <tt>{{</tt> <tt>expression</tt> <tt>}}</tt> to eval.
+ *
+ * @example
+ * Try it here: enter text in text box and watch the greeting change.
+ <example module="bindExample">
+ <file name="index.html">
+ <script>
+ angular.module('bindExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.salutation = 'Hello';
+ $scope.name = 'World';
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>Salutation: <input type="text" ng-model="salutation"></label><br>
+ <label>Name: <input type="text" ng-model="name"></label><br>
+ <pre ng-bind-template="{{salutation}} {{name}}!"></pre>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-bind', function() {
+ var salutationElem = element(by.binding('salutation'));
+ var salutationInput = element(by.model('salutation'));
+ var nameInput = element(by.model('name'));
+
+ expect(salutationElem.getText()).toBe('Hello World!');
+
+ salutationInput.clear();
+ salutationInput.sendKeys('Greetings');
+ nameInput.clear();
+ nameInput.sendKeys('user');
+
+ expect(salutationElem.getText()).toBe('Greetings user!');
+ });
+ </file>
+ </example>
+ */
+var ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate, $compile) {
+ return {
+ compile: function ngBindTemplateCompile(templateElement) {
+ $compile.$$addBindingClass(templateElement);
+ return function ngBindTemplateLink(scope, element, attr) {
+ var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate));
+ $compile.$$addBindingInfo(element, interpolateFn.expressions);
+ element = element[0];
+ attr.$observe('ngBindTemplate', function(value) {
+ element.textContent = value === undefined ? '' : value;
+ });
+ };
+ }
+ };
+}];
+
+
+/**
+ * @ngdoc directive
+ * @name ngBindHtml
+ *
+ * @description
+ * Evaluates the expression and inserts the resulting HTML into the element in a secure way. By default,
+ * the resulting HTML content will be sanitized using the {@link ngSanitize.$sanitize $sanitize} service.
+ * To utilize this functionality, ensure that `$sanitize` is available, for example, by including {@link
+ * ngSanitize} in your module's dependencies (not in core Angular). In order to use {@link ngSanitize}
+ * in your module's dependencies, you need to include "angular-sanitize.js" in your application.
+ *
+ * You may also bypass sanitization for values you know are safe. To do so, bind to
+ * an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}. See the example
+ * under {@link ng.$sce#show-me-an-example-using-sce- Strict Contextual Escaping (SCE)}.
+ *
+ * Note: If a `$sanitize` service is unavailable and the bound value isn't explicitly trusted, you
+ * will have an exception (instead of an exploit.)
+ *
+ * @element ANY
+ * @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.
+ *
+ * @example
+
+ <example module="bindHtmlExample" deps="angular-sanitize.js">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <p ng-bind-html="myHTML"></p>
+ </div>
+ </file>
+
+ <file name="script.js">
+ angular.module('bindHtmlExample', ['ngSanitize'])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.myHTML =
+ 'I am an <code>HTML</code>string with ' +
+ '<a href="#">links!</a> and other <em>stuff</em>';
+ }]);
+ </file>
+
+ <file name="protractor.js" type="protractor">
+ it('should check ng-bind-html', function() {
+ expect(element(by.binding('myHTML')).getText()).toBe(
+ 'I am an HTMLstring with links! and other stuff');
+ });
+ </file>
+ </example>
+ */
+var ngBindHtmlDirective = ['$sce', '$parse', '$compile', function($sce, $parse, $compile) {
+ return {
+ restrict: 'A',
+ compile: function ngBindHtmlCompile(tElement, tAttrs) {
+ var ngBindHtmlGetter = $parse(tAttrs.ngBindHtml);
+ var ngBindHtmlWatch = $parse(tAttrs.ngBindHtml, function getStringValue(value) {
+ return (value || '').toString();
+ });
+ $compile.$$addBindingClass(tElement);
+
+ return function ngBindHtmlLink(scope, element, attr) {
+ $compile.$$addBindingInfo(element, attr.ngBindHtml);
+
+ scope.$watch(ngBindHtmlWatch, function ngBindHtmlWatchAction() {
+ // we re-evaluate the expr because we want a TrustedValueHolderType
+ // for $sce, not a string
+ element.html($sce.getTrustedHtml(ngBindHtmlGetter(scope)) || '');
+ });
+ };
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngChange
+ *
+ * @description
+ * Evaluate the given expression when the user changes the input.
+ * The expression is evaluated immediately, unlike the JavaScript onchange event
+ * which only triggers at the end of a change (usually, when the user leaves the
+ * form element or presses the return key).
+ *
+ * The `ngChange` expression is only evaluated when a change in the input value causes
+ * a new value to be committed to the model.
+ *
+ * It will not be evaluated:
+ * * if the value returned from the `$parsers` transformation pipeline has not changed
+ * * if the input has continued to be invalid since the model will stay `null`
+ * * if the model is changed programmatically and not by a change to the input value
+ *
+ *
+ * Note, this directive requires `ngModel` to be present.
+ *
+ * @element input
+ * @param {expression} ngChange {@link guide/expression Expression} to evaluate upon change
+ * in input value.
+ *
+ * @example
+ * <example name="ngChange-directive" module="changeExample">
+ * <file name="index.html">
+ * <script>
+ * angular.module('changeExample', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.counter = 0;
+ * $scope.change = function() {
+ * $scope.counter++;
+ * };
+ * }]);
+ * </script>
+ * <div ng-controller="ExampleController">
+ * <input type="checkbox" ng-model="confirmed" ng-change="change()" id="ng-change-example1" />
+ * <input type="checkbox" ng-model="confirmed" id="ng-change-example2" />
+ * <label for="ng-change-example2">Confirmed</label><br />
+ * <tt>debug = {{confirmed}}</tt><br/>
+ * <tt>counter = {{counter}}</tt><br/>
+ * </div>
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * var counter = element(by.binding('counter'));
+ * var debug = element(by.binding('confirmed'));
+ *
+ * it('should evaluate the expression if changing from view', function() {
+ * expect(counter.getText()).toContain('0');
+ *
+ * element(by.id('ng-change-example1')).click();
+ *
+ * expect(counter.getText()).toContain('1');
+ * expect(debug.getText()).toContain('true');
+ * });
+ *
+ * it('should not evaluate the expression if changing from model', function() {
+ * element(by.id('ng-change-example2')).click();
+
+ * expect(counter.getText()).toContain('0');
+ * expect(debug.getText()).toContain('true');
+ * });
+ * </file>
+ * </example>
+ */
+var ngChangeDirective = valueFn({
+ restrict: 'A',
+ require: 'ngModel',
+ link: function(scope, element, attr, ctrl) {
+ ctrl.$viewChangeListeners.push(function() {
+ scope.$eval(attr.ngChange);
+ });
+ }
+});
+
+function classDirective(name, selector) {
+ name = 'ngClass' + name;
+ return ['$animate', function($animate) {
+ return {
+ restrict: 'AC',
+ link: function(scope, element, attr) {
+ var oldVal;
+
+ scope.$watch(attr[name], ngClassWatchAction, true);
+
+ attr.$observe('class', function(value) {
+ ngClassWatchAction(scope.$eval(attr[name]));
+ });
+
+
+ if (name !== 'ngClass') {
+ scope.$watch('$index', function($index, old$index) {
+ // jshint bitwise: false
+ var mod = $index & 1;
+ if (mod !== (old$index & 1)) {
+ var classes = arrayClasses(scope.$eval(attr[name]));
+ mod === selector ?
+ addClasses(classes) :
+ removeClasses(classes);
+ }
+ });
+ }
+
+ function addClasses(classes) {
+ var newClasses = digestClassCounts(classes, 1);
+ attr.$addClass(newClasses);
+ }
+
+ function removeClasses(classes) {
+ var newClasses = digestClassCounts(classes, -1);
+ attr.$removeClass(newClasses);
+ }
+
+ function digestClassCounts(classes, count) {
+ // Use createMap() to prevent class assumptions involving property
+ // names in Object.prototype
+ var classCounts = element.data('$classCounts') || createMap();
+ var classesToUpdate = [];
+ forEach(classes, function(className) {
+ if (count > 0 || classCounts[className]) {
+ classCounts[className] = (classCounts[className] || 0) + count;
+ if (classCounts[className] === +(count > 0)) {
+ classesToUpdate.push(className);
+ }
+ }
+ });
+ element.data('$classCounts', classCounts);
+ return classesToUpdate.join(' ');
+ }
+
+ function updateClasses(oldClasses, newClasses) {
+ var toAdd = arrayDifference(newClasses, oldClasses);
+ var toRemove = arrayDifference(oldClasses, newClasses);
+ toAdd = digestClassCounts(toAdd, 1);
+ toRemove = digestClassCounts(toRemove, -1);
+ if (toAdd && toAdd.length) {
+ $animate.addClass(element, toAdd);
+ }
+ if (toRemove && toRemove.length) {
+ $animate.removeClass(element, toRemove);
+ }
+ }
+
+ function ngClassWatchAction(newVal) {
+ if (selector === true || scope.$index % 2 === selector) {
+ var newClasses = arrayClasses(newVal || []);
+ if (!oldVal) {
+ addClasses(newClasses);
+ } else if (!equals(newVal,oldVal)) {
+ var oldClasses = arrayClasses(oldVal);
+ updateClasses(oldClasses, newClasses);
+ }
+ }
+ oldVal = shallowCopy(newVal);
+ }
+ }
+ };
+
+ function arrayDifference(tokens1, tokens2) {
+ var values = [];
+
+ outer:
+ for (var i = 0; i < tokens1.length; i++) {
+ var token = tokens1[i];
+ for (var j = 0; j < tokens2.length; j++) {
+ if (token == tokens2[j]) continue outer;
+ }
+ values.push(token);
+ }
+ return values;
+ }
+
+ function arrayClasses(classVal) {
+ var classes = [];
+ if (isArray(classVal)) {
+ forEach(classVal, function(v) {
+ classes = classes.concat(arrayClasses(v));
+ });
+ return classes;
+ } else if (isString(classVal)) {
+ return classVal.split(' ');
+ } else if (isObject(classVal)) {
+ forEach(classVal, function(v, k) {
+ if (v) {
+ classes = classes.concat(k.split(' '));
+ }
+ });
+ return classes;
+ }
+ return classVal;
+ }
+ }];
+}
+
+/**
+ * @ngdoc directive
+ * @name ngClass
+ * @restrict AC
+ *
+ * @description
+ * The `ngClass` directive allows you to dynamically set CSS classes on an HTML element by databinding
+ * an expression that represents all classes to be added.
+ *
+ * The directive operates in three different ways, depending on which of three types the expression
+ * evaluates to:
+ *
+ * 1. If the expression evaluates to a string, the string should be one or more space-delimited class
+ * names.
+ *
+ * 2. If the expression evaluates to an object, then for each key-value pair of the
+ * object with a truthy value the corresponding key is used as a class name.
+ *
+ * 3. If the expression evaluates to an array, each element of the array should either be a string as in
+ * type 1 or an object as in type 2. This means that you can mix strings and objects together in an array
+ * to give you more control over what CSS classes appear. See the code below for an example of this.
+ *
+ *
+ * The directive won't add duplicate classes if a particular class was already set.
+ *
+ * When the expression changes, the previously added classes are removed and only then are the
+ * new classes added.
+ *
+ * @animations
+ * **add** - happens just before the class is applied to the elements
+ *
+ * **remove** - happens just before the class is removed from the element
+ *
+ * @element ANY
+ * @param {expression} ngClass {@link guide/expression Expression} to eval. The result
+ * of the evaluation can be a string representing space delimited class
+ * names, an array, or a map of class names to boolean values. In the case of a map, the
+ * names of the properties whose values are truthy will be added as css classes to the
+ * element.
+ *
+ * @example Example that demonstrates basic bindings via ngClass directive.
+ <example>
+ <file name="index.html">
+ <p ng-class="{strike: deleted, bold: important, 'has-error': error}">Map Syntax Example</p>
+ <label>
+ <input type="checkbox" ng-model="deleted">
+ deleted (apply "strike" class)
+ </label><br>
+ <label>
+ <input type="checkbox" ng-model="important">
+ important (apply "bold" class)
+ </label><br>
+ <label>
+ <input type="checkbox" ng-model="error">
+ error (apply "has-error" class)
+ </label>
+ <hr>
+ <p ng-class="style">Using String Syntax</p>
+ <input type="text" ng-model="style"
+ placeholder="Type: bold strike red" aria-label="Type: bold strike red">
+ <hr>
+ <p ng-class="[style1, style2, style3]">Using Array Syntax</p>
+ <input ng-model="style1"
+ placeholder="Type: bold, strike or red" aria-label="Type: bold, strike or red"><br>
+ <input ng-model="style2"
+ placeholder="Type: bold, strike or red" aria-label="Type: bold, strike or red 2"><br>
+ <input ng-model="style3"
+ placeholder="Type: bold, strike or red" aria-label="Type: bold, strike or red 3"><br>
+ <hr>
+ <p ng-class="[style4, {orange: warning}]">Using Array and Map Syntax</p>
+ <input ng-model="style4" placeholder="Type: bold, strike" aria-label="Type: bold, strike"><br>
+ <label><input type="checkbox" ng-model="warning"> warning (apply "orange" class)</label>
+ </file>
+ <file name="style.css">
+ .strike {
+ text-decoration: line-through;
+ }
+ .bold {
+ font-weight: bold;
+ }
+ .red {
+ color: red;
+ }
+ .has-error {
+ color: red;
+ background-color: yellow;
+ }
+ .orange {
+ color: orange;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var ps = element.all(by.css('p'));
+
+ it('should let you toggle the class', function() {
+
+ expect(ps.first().getAttribute('class')).not.toMatch(/bold/);
+ expect(ps.first().getAttribute('class')).not.toMatch(/has-error/);
+
+ element(by.model('important')).click();
+ expect(ps.first().getAttribute('class')).toMatch(/bold/);
+
+ element(by.model('error')).click();
+ expect(ps.first().getAttribute('class')).toMatch(/has-error/);
+ });
+
+ it('should let you toggle string example', function() {
+ expect(ps.get(1).getAttribute('class')).toBe('');
+ element(by.model('style')).clear();
+ element(by.model('style')).sendKeys('red');
+ expect(ps.get(1).getAttribute('class')).toBe('red');
+ });
+
+ it('array example should have 3 classes', function() {
+ expect(ps.get(2).getAttribute('class')).toBe('');
+ element(by.model('style1')).sendKeys('bold');
+ element(by.model('style2')).sendKeys('strike');
+ element(by.model('style3')).sendKeys('red');
+ expect(ps.get(2).getAttribute('class')).toBe('bold strike red');
+ });
+
+ it('array with map example should have 2 classes', function() {
+ expect(ps.last().getAttribute('class')).toBe('');
+ element(by.model('style4')).sendKeys('bold');
+ element(by.model('warning')).click();
+ expect(ps.last().getAttribute('class')).toBe('bold orange');
+ });
+ </file>
+ </example>
+
+ ## Animations
+
+ The example below demonstrates how to perform animations using ngClass.
+
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <input id="setbtn" type="button" value="set" ng-click="myVar='my-class'">
+ <input id="clearbtn" type="button" value="clear" ng-click="myVar=''">
+ <br>
+ <span class="base-class" ng-class="myVar">Sample Text</span>
+ </file>
+ <file name="style.css">
+ .base-class {
+ -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ }
+
+ .base-class.my-class {
+ color: red;
+ font-size:3em;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-class', function() {
+ expect(element(by.css('.base-class')).getAttribute('class')).not.
+ toMatch(/my-class/);
+
+ element(by.id('setbtn')).click();
+
+ expect(element(by.css('.base-class')).getAttribute('class')).
+ toMatch(/my-class/);
+
+ element(by.id('clearbtn')).click();
+
+ expect(element(by.css('.base-class')).getAttribute('class')).not.
+ toMatch(/my-class/);
+ });
+ </file>
+ </example>
+
+
+ ## ngClass and pre-existing CSS3 Transitions/Animations
+ The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.
+ Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder
+ any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure
+ to view the step by step details of {@link $animate#addClass $animate.addClass} and
+ {@link $animate#removeClass $animate.removeClass}.
+ */
+var ngClassDirective = classDirective('', true);
+
+/**
+ * @ngdoc directive
+ * @name ngClassOdd
+ * @restrict AC
+ *
+ * @description
+ * The `ngClassOdd` and `ngClassEven` directives work exactly as
+ * {@link ng.directive:ngClass ngClass}, except they work in
+ * conjunction with `ngRepeat` and take effect only on odd (even) rows.
+ *
+ * This directive can be applied only within the scope of an
+ * {@link ng.directive:ngRepeat ngRepeat}.
+ *
+ * @element ANY
+ * @param {expression} ngClassOdd {@link guide/expression Expression} to eval. The result
+ * of the evaluation can be a string representing space delimited class names or an array.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
+ <li ng-repeat="name in names">
+ <span ng-class-odd="'odd'" ng-class-even="'even'">
+ {{name}}
+ </span>
+ </li>
+ </ol>
+ </file>
+ <file name="style.css">
+ .odd {
+ color: red;
+ }
+ .even {
+ color: blue;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-class-odd and ng-class-even', function() {
+ expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
+ toMatch(/odd/);
+ expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
+ toMatch(/even/);
+ });
+ </file>
+ </example>
+ */
+var ngClassOddDirective = classDirective('Odd', 0);
+
+/**
+ * @ngdoc directive
+ * @name ngClassEven
+ * @restrict AC
+ *
+ * @description
+ * The `ngClassOdd` and `ngClassEven` directives work exactly as
+ * {@link ng.directive:ngClass ngClass}, except they work in
+ * conjunction with `ngRepeat` and take effect only on odd (even) rows.
+ *
+ * This directive can be applied only within the scope of an
+ * {@link ng.directive:ngRepeat ngRepeat}.
+ *
+ * @element ANY
+ * @param {expression} ngClassEven {@link guide/expression Expression} to eval. The
+ * result of the evaluation can be a string representing space delimited class names or an array.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
+ <li ng-repeat="name in names">
+ <span ng-class-odd="'odd'" ng-class-even="'even'">
+ {{name}}
+ </span>
+ </li>
+ </ol>
+ </file>
+ <file name="style.css">
+ .odd {
+ color: red;
+ }
+ .even {
+ color: blue;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-class-odd and ng-class-even', function() {
+ expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
+ toMatch(/odd/);
+ expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
+ toMatch(/even/);
+ });
+ </file>
+ </example>
+ */
+var ngClassEvenDirective = classDirective('Even', 1);
+
+/**
+ * @ngdoc directive
+ * @name ngCloak
+ * @restrict AC
+ *
+ * @description
+ * The `ngCloak` directive is used to prevent the Angular html template from being briefly
+ * displayed by the browser in its raw (uncompiled) form while your application is loading. Use this
+ * directive to avoid the undesirable flicker effect caused by the html template display.
+ *
+ * The directive can be applied to the `<body>` element, but the preferred usage is to apply
+ * multiple `ngCloak` directives to small portions of the page to permit progressive rendering
+ * of the browser view.
+ *
+ * `ngCloak` works in cooperation with the following css rule embedded within `angular.js` and
+ * `angular.min.js`.
+ * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
+ *
+ * ```css
+ * [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
+ * display: none !important;
+ * }
+ * ```
+ *
+ * When this css rule is loaded by the browser, all html elements (including their children) that
+ * are tagged with the `ngCloak` directive are hidden. When Angular encounters this directive
+ * during the compilation of the template it deletes the `ngCloak` element attribute, making
+ * the compiled element visible.
+ *
+ * For the best result, the `angular.js` script must be loaded in the head section of the html
+ * document; alternatively, the css rule above must be included in the external stylesheet of the
+ * application.
+ *
+ * @element ANY
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <div id="template1" ng-cloak>{{ 'hello' }}</div>
+ <div id="template2" class="ng-cloak">{{ 'world' }}</div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should remove the template directive and css class', function() {
+ expect($('#template1').getAttribute('ng-cloak')).
+ toBeNull();
+ expect($('#template2').getAttribute('ng-cloak')).
+ toBeNull();
+ });
+ </file>
+ </example>
+ *
+ */
+var ngCloakDirective = ngDirective({
+ compile: function(element, attr) {
+ attr.$set('ngCloak', undefined);
+ element.removeClass('ng-cloak');
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name ngController
+ *
+ * @description
+ * The `ngController` directive attaches a controller class to the view. This is a key aspect of how angular
+ * supports the principles behind the Model-View-Controller design pattern.
+ *
+ * MVC components in angular:
+ *
+ * * Model — Models are the properties of a scope; scopes are attached to the DOM where scope properties
+ * are accessed through bindings.
+ * * View — The template (HTML with data bindings) that is rendered into the View.
+ * * Controller — The `ngController` directive specifies a Controller class; the class contains business
+ * logic behind the application to decorate the scope with functions and values
+ *
+ * Note that you can also attach controllers to the DOM by declaring it in a route definition
+ * via the {@link ngRoute.$route $route} service. A common mistake is to declare the controller
+ * again using `ng-controller` in the template itself. This will cause the controller to be attached
+ * and executed twice.
+ *
+ * @element ANY
+ * @scope
+ * @priority 500
+ * @param {expression} ngController Name of a constructor function registered with the current
+ * {@link ng.$controllerProvider $controllerProvider} or an {@link guide/expression expression}
+ * that on the current scope evaluates to a constructor function.
+ *
+ * The controller instance can be published into a scope property by specifying
+ * `ng-controller="as propertyName"`.
+ *
+ * If the current `$controllerProvider` is configured to use globals (via
+ * {@link ng.$controllerProvider#allowGlobals `$controllerProvider.allowGlobals()` }), this may
+ * also be the name of a globally accessible constructor function (not recommended).
+ *
+ * @example
+ * Here is a simple form for editing user contact information. Adding, removing, clearing, and
+ * greeting are methods declared on the controller (see source tab). These methods can
+ * easily be called from the angular markup. Any changes to the data are automatically reflected
+ * in the View without the need for a manual update.
+ *
+ * Two different declaration styles are included below:
+ *
+ * * one binds methods and properties directly onto the controller using `this`:
+ * `ng-controller="SettingsController1 as settings"`
+ * * one injects `$scope` into the controller:
+ * `ng-controller="SettingsController2"`
+ *
+ * The second option is more common in the Angular community, and is generally used in boilerplates
+ * and in this guide. However, there are advantages to binding properties directly to the controller
+ * and avoiding scope.
+ *
+ * * Using `controller as` makes it obvious which controller you are accessing in the template when
+ * multiple controllers apply to an element.
+ * * If you are writing your controllers as classes you have easier access to the properties and
+ * methods, which will appear on the scope, from inside the controller code.
+ * * Since there is always a `.` in the bindings, you don't have to worry about prototypal
+ * inheritance masking primitives.
+ *
+ * This example demonstrates the `controller as` syntax.
+ *
+ * <example name="ngControllerAs" module="controllerAsExample">
+ * <file name="index.html">
+ * <div id="ctrl-as-exmpl" ng-controller="SettingsController1 as settings">
+ * <label>Name: <input type="text" ng-model="settings.name"/></label>
+ * <button ng-click="settings.greet()">greet</button><br/>
+ * Contact:
+ * <ul>
+ * <li ng-repeat="contact in settings.contacts">
+ * <select ng-model="contact.type" aria-label="Contact method" id="select_{{$index}}">
+ * <option>phone</option>
+ * <option>email</option>
+ * </select>
+ * <input type="text" ng-model="contact.value" aria-labelledby="select_{{$index}}" />
+ * <button ng-click="settings.clearContact(contact)">clear</button>
+ * <button ng-click="settings.removeContact(contact)" aria-label="Remove">X</button>
+ * </li>
+ * <li><button ng-click="settings.addContact()">add</button></li>
+ * </ul>
+ * </div>
+ * </file>
+ * <file name="app.js">
+ * angular.module('controllerAsExample', [])
+ * .controller('SettingsController1', SettingsController1);
+ *
+ * function SettingsController1() {
+ * this.name = "John Smith";
+ * this.contacts = [
+ * {type: 'phone', value: '408 555 1212'},
+ * {type: 'email', value: 'john.smith@example.org'} ];
+ * }
+ *
+ * SettingsController1.prototype.greet = function() {
+ * alert(this.name);
+ * };
+ *
+ * SettingsController1.prototype.addContact = function() {
+ * this.contacts.push({type: 'email', value: 'yourname@example.org'});
+ * };
+ *
+ * SettingsController1.prototype.removeContact = function(contactToRemove) {
+ * var index = this.contacts.indexOf(contactToRemove);
+ * this.contacts.splice(index, 1);
+ * };
+ *
+ * SettingsController1.prototype.clearContact = function(contact) {
+ * contact.type = 'phone';
+ * contact.value = '';
+ * };
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * it('should check controller as', function() {
+ * var container = element(by.id('ctrl-as-exmpl'));
+ * expect(container.element(by.model('settings.name'))
+ * .getAttribute('value')).toBe('John Smith');
+ *
+ * var firstRepeat =
+ * container.element(by.repeater('contact in settings.contacts').row(0));
+ * var secondRepeat =
+ * container.element(by.repeater('contact in settings.contacts').row(1));
+ *
+ * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('408 555 1212');
+ *
+ * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('john.smith@example.org');
+ *
+ * firstRepeat.element(by.buttonText('clear')).click();
+ *
+ * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('');
+ *
+ * container.element(by.buttonText('add')).click();
+ *
+ * expect(container.element(by.repeater('contact in settings.contacts').row(2))
+ * .element(by.model('contact.value'))
+ * .getAttribute('value'))
+ * .toBe('yourname@example.org');
+ * });
+ * </file>
+ * </example>
+ *
+ * This example demonstrates the "attach to `$scope`" style of controller.
+ *
+ * <example name="ngController" module="controllerExample">
+ * <file name="index.html">
+ * <div id="ctrl-exmpl" ng-controller="SettingsController2">
+ * <label>Name: <input type="text" ng-model="name"/></label>
+ * <button ng-click="greet()">greet</button><br/>
+ * Contact:
+ * <ul>
+ * <li ng-repeat="contact in contacts">
+ * <select ng-model="contact.type" id="select_{{$index}}">
+ * <option>phone</option>
+ * <option>email</option>
+ * </select>
+ * <input type="text" ng-model="contact.value" aria-labelledby="select_{{$index}}" />
+ * <button ng-click="clearContact(contact)">clear</button>
+ * <button ng-click="removeContact(contact)">X</button>
+ * </li>
+ * <li>[ <button ng-click="addContact()">add</button> ]</li>
+ * </ul>
+ * </div>
+ * </file>
+ * <file name="app.js">
+ * angular.module('controllerExample', [])
+ * .controller('SettingsController2', ['$scope', SettingsController2]);
+ *
+ * function SettingsController2($scope) {
+ * $scope.name = "John Smith";
+ * $scope.contacts = [
+ * {type:'phone', value:'408 555 1212'},
+ * {type:'email', value:'john.smith@example.org'} ];
+ *
+ * $scope.greet = function() {
+ * alert($scope.name);
+ * };
+ *
+ * $scope.addContact = function() {
+ * $scope.contacts.push({type:'email', value:'yourname@example.org'});
+ * };
+ *
+ * $scope.removeContact = function(contactToRemove) {
+ * var index = $scope.contacts.indexOf(contactToRemove);
+ * $scope.contacts.splice(index, 1);
+ * };
+ *
+ * $scope.clearContact = function(contact) {
+ * contact.type = 'phone';
+ * contact.value = '';
+ * };
+ * }
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * it('should check controller', function() {
+ * var container = element(by.id('ctrl-exmpl'));
+ *
+ * expect(container.element(by.model('name'))
+ * .getAttribute('value')).toBe('John Smith');
+ *
+ * var firstRepeat =
+ * container.element(by.repeater('contact in contacts').row(0));
+ * var secondRepeat =
+ * container.element(by.repeater('contact in contacts').row(1));
+ *
+ * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('408 555 1212');
+ * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('john.smith@example.org');
+ *
+ * firstRepeat.element(by.buttonText('clear')).click();
+ *
+ * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('');
+ *
+ * container.element(by.buttonText('add')).click();
+ *
+ * expect(container.element(by.repeater('contact in contacts').row(2))
+ * .element(by.model('contact.value'))
+ * .getAttribute('value'))
+ * .toBe('yourname@example.org');
+ * });
+ * </file>
+ *</example>
+
+ */
+var ngControllerDirective = [function() {
+ return {
+ restrict: 'A',
+ scope: true,
+ controller: '@',
+ priority: 500
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngCsp
+ *
+ * @element html
+ * @description
+ *
+ * Angular has some features that can break certain
+ * [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) rules.
+ *
+ * If you intend to implement these rules then you must tell Angular not to use these features.
+ *
+ * This is necessary when developing things like Google Chrome Extensions or Universal Windows Apps.
+ *
+ *
+ * The following rules affect Angular:
+ *
+ * * `unsafe-eval`: this rule forbids apps to use `eval` or `Function(string)` generated functions
+ * (among other things). Angular makes use of this in the {@link $parse} service to provide a 30%
+ * increase in the speed of evaluating Angular expressions.
+ *
+ * * `unsafe-inline`: this rule forbids apps from inject custom styles into the document. Angular
+ * makes use of this to include some CSS rules (e.g. {@link ngCloak} and {@link ngHide}).
+ * To make these directives work when a CSP rule is blocking inline styles, you must link to the
+ * `angular-csp.css` in your HTML manually.
+ *
+ * If you do not provide `ngCsp` then Angular tries to autodetect if CSP is blocking unsafe-eval
+ * and automatically deactivates this feature in the {@link $parse} service. This autodetection,
+ * however, triggers a CSP error to be logged in the console:
+ *
+ * ```
+ * Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of
+ * script in the following Content Security Policy directive: "default-src 'self'". Note that
+ * 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
+ * ```
+ *
+ * This error is harmless but annoying. To prevent the error from showing up, put the `ngCsp`
+ * directive on an element of the HTML document that appears before the `<script>` tag that loads
+ * the `angular.js` file.
+ *
+ * *Note: This directive is only available in the `ng-csp` and `data-ng-csp` attribute form.*
+ *
+ * You can specify which of the CSP related Angular features should be deactivated by providing
+ * a value for the `ng-csp` attribute. The options are as follows:
+ *
+ * * no-inline-style: this stops Angular from injecting CSS styles into the DOM
+ *
+ * * no-unsafe-eval: this stops Angular from optimising $parse with unsafe eval of strings
+ *
+ * You can use these values in the following combinations:
+ *
+ *
+ * * No declaration means that Angular will assume that you can do inline styles, but it will do
+ * a runtime check for unsafe-eval. E.g. `<body>`. This is backwardly compatible with previous versions
+ * of Angular.
+ *
+ * * A simple `ng-csp` (or `data-ng-csp`) attribute will tell Angular to deactivate both inline
+ * styles and unsafe eval. E.g. `<body ng-csp>`. This is backwardly compatible with previous versions
+ * of Angular.
+ *
+ * * Specifying only `no-unsafe-eval` tells Angular that we must not use eval, but that we can inject
+ * inline styles. E.g. `<body ng-csp="no-unsafe-eval">`.
+ *
+ * * Specifying only `no-inline-style` tells Angular that we must not inject styles, but that we can
+ * run eval - no automcatic check for unsafe eval will occur. E.g. `<body ng-csp="no-inline-style">`
+ *
+ * * Specifying both `no-unsafe-eval` and `no-inline-style` tells Angular that we must not inject
+ * styles nor use eval, which is the same as an empty: ng-csp.
+ * E.g.`<body ng-csp="no-inline-style;no-unsafe-eval">`
+ *
+ * @example
+ * This example shows how to apply the `ngCsp` directive to the `html` tag.
+ ```html
+ <!doctype html>
+ <html ng-app ng-csp>
+ ...
+ ...
+ </html>
+ ```
+ * @example
+ // Note: the suffix `.csp` in the example name triggers
+ // csp mode in our http server!
+ <example name="example.csp" module="cspExample" ng-csp="true">
+ <file name="index.html">
+ <div ng-controller="MainController as ctrl">
+ <div>
+ <button ng-click="ctrl.inc()" id="inc">Increment</button>
+ <span id="counter">
+ {{ctrl.counter}}
+ </span>
+ </div>
+
+ <div>
+ <button ng-click="ctrl.evil()" id="evil">Evil</button>
+ <span id="evilError">
+ {{ctrl.evilError}}
+ </span>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('cspExample', [])
+ .controller('MainController', function() {
+ this.counter = 0;
+ this.inc = function() {
+ this.counter++;
+ };
+ this.evil = function() {
+ // jshint evil:true
+ try {
+ eval('1+2');
+ } catch (e) {
+ this.evilError = e.message;
+ }
+ };
+ });
+ </file>
+ <file name="protractor.js" type="protractor">
+ var util, webdriver;
+
+ var incBtn = element(by.id('inc'));
+ var counter = element(by.id('counter'));
+ var evilBtn = element(by.id('evil'));
+ var evilError = element(by.id('evilError'));
+
+ function getAndClearSevereErrors() {
+ return browser.manage().logs().get('browser').then(function(browserLog) {
+ return browserLog.filter(function(logEntry) {
+ return logEntry.level.value > webdriver.logging.Level.WARNING.value;
+ });
+ });
+ }
+
+ function clearErrors() {
+ getAndClearSevereErrors();
+ }
+
+ function expectNoErrors() {
+ getAndClearSevereErrors().then(function(filteredLog) {
+ expect(filteredLog.length).toEqual(0);
+ if (filteredLog.length) {
+ console.log('browser console errors: ' + util.inspect(filteredLog));
+ }
+ });
+ }
+
+ function expectError(regex) {
+ getAndClearSevereErrors().then(function(filteredLog) {
+ var found = false;
+ filteredLog.forEach(function(log) {
+ if (log.message.match(regex)) {
+ found = true;
+ }
+ });
+ if (!found) {
+ throw new Error('expected an error that matches ' + regex);
+ }
+ });
+ }
+
+ beforeEach(function() {
+ util = require('util');
+ webdriver = require('protractor/node_modules/selenium-webdriver');
+ });
+
+ // For now, we only test on Chrome,
+ // as Safari does not load the page with Protractor's injected scripts,
+ // and Firefox webdriver always disables content security policy (#6358)
+ if (browser.params.browser !== 'chrome') {
+ return;
+ }
+
+ it('should not report errors when the page is loaded', function() {
+ // clear errors so we are not dependent on previous tests
+ clearErrors();
+ // Need to reload the page as the page is already loaded when
+ // we come here
+ browser.driver.getCurrentUrl().then(function(url) {
+ browser.get(url);
+ });
+ expectNoErrors();
+ });
+
+ it('should evaluate expressions', function() {
+ expect(counter.getText()).toEqual('0');
+ incBtn.click();
+ expect(counter.getText()).toEqual('1');
+ expectNoErrors();
+ });
+
+ it('should throw and report an error when using "eval"', function() {
+ evilBtn.click();
+ expect(evilError.getText()).toMatch(/Content Security Policy/);
+ expectError(/Content Security Policy/);
+ });
+ </file>
+ </example>
+ */
+
+// ngCsp is not implemented as a proper directive any more, because we need it be processed while we
+// bootstrap the system (before $parse is instantiated), for this reason we just have
+// the csp() fn that looks for the `ng-csp` attribute anywhere in the current doc
+
+/**
+ * @ngdoc directive
+ * @name ngClick
+ *
+ * @description
+ * The ngClick directive allows you to specify custom behavior when
+ * an element is clicked.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon
+ * click. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-click="count = count + 1" ng-init="count=0">
+ Increment
+ </button>
+ <span>
+ count: {{count}}
+ </span>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-click', function() {
+ expect(element(by.binding('count')).getText()).toMatch('0');
+ element(by.css('button')).click();
+ expect(element(by.binding('count')).getText()).toMatch('1');
+ });
+ </file>
+ </example>
+ */
+/*
+ * A collection of directives that allows creation of custom event handlers that are defined as
+ * angular expressions and are compiled and executed within the current scope.
+ */
+var ngEventDirectives = {};
+
+// For events that might fire synchronously during DOM manipulation
+// we need to execute their event handlers asynchronously using $evalAsync,
+// so that they are not executed in an inconsistent state.
+var forceAsyncEvents = {
+ 'blur': true,
+ 'focus': true
+};
+forEach(
+ 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),
+ function(eventName) {
+ var directiveName = directiveNormalize('ng-' + eventName);
+ ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) {
+ return {
+ restrict: 'A',
+ compile: function($element, attr) {
+ // We expose the powerful $event object on the scope that provides access to the Window,
+ // etc. that isn't protected by the fast paths in $parse. We explicitly request better
+ // checks at the cost of speed since event handler expressions are not executed as
+ // frequently as regular change detection.
+ var fn = $parse(attr[directiveName], /* interceptorFn */ null, /* expensiveChecks */ true);
+ return function ngEventHandler(scope, element) {
+ element.on(eventName, function(event) {
+ var callback = function() {
+ fn(scope, {$event:event});
+ };
+ if (forceAsyncEvents[eventName] && $rootScope.$$phase) {
+ scope.$evalAsync(callback);
+ } else {
+ scope.$apply(callback);
+ }
+ });
+ };
+ }
+ };
+ }];
+ }
+);
+
+/**
+ * @ngdoc directive
+ * @name ngDblclick
+ *
+ * @description
+ * The `ngDblclick` directive allows you to specify custom behavior on a dblclick event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon
+ * a dblclick. (The Event object is available as `$event`)
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-dblclick="count = count + 1" ng-init="count=0">
+ Increment (on double click)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMousedown
+ *
+ * @description
+ * The ngMousedown directive allows you to specify custom behavior on mousedown event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon
+ * mousedown. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mousedown="count = count + 1" ng-init="count=0">
+ Increment (on mouse down)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMouseup
+ *
+ * @description
+ * Specify custom behavior on mouseup event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon
+ * mouseup. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mouseup="count = count + 1" ng-init="count=0">
+ Increment (on mouse up)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngMouseover
+ *
+ * @description
+ * Specify custom behavior on mouseover event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon
+ * mouseover. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mouseover="count = count + 1" ng-init="count=0">
+ Increment (when mouse is over)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMouseenter
+ *
+ * @description
+ * Specify custom behavior on mouseenter event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon
+ * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mouseenter="count = count + 1" ng-init="count=0">
+ Increment (when mouse enters)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMouseleave
+ *
+ * @description
+ * Specify custom behavior on mouseleave event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon
+ * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mouseleave="count = count + 1" ng-init="count=0">
+ Increment (when mouse leaves)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMousemove
+ *
+ * @description
+ * Specify custom behavior on mousemove event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon
+ * mousemove. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mousemove="count = count + 1" ng-init="count=0">
+ Increment (when mouse moves)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngKeydown
+ *
+ * @description
+ * Specify custom behavior on keydown event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon
+ * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-keydown="count = count + 1" ng-init="count=0">
+ key down count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngKeyup
+ *
+ * @description
+ * Specify custom behavior on keyup event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon
+ * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <p>Typing in the input box below updates the key count</p>
+ <input ng-keyup="count = count + 1" ng-init="count=0"> key up count: {{count}}
+
+ <p>Typing in the input box below updates the keycode</p>
+ <input ng-keyup="event=$event">
+ <p>event keyCode: {{ event.keyCode }}</p>
+ <p>event altKey: {{ event.altKey }}</p>
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngKeypress
+ *
+ * @description
+ * Specify custom behavior on keypress event.
+ *
+ * @element ANY
+ * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
+ * keypress. ({@link guide/expression#-event- Event object is available as `$event`}
+ * and can be interrogated for keyCode, altKey, etc.)
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-keypress="count = count + 1" ng-init="count=0">
+ key press count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngSubmit
+ *
+ * @description
+ * Enables binding angular expressions to onsubmit events.
+ *
+ * Additionally it prevents the default action (which for form means sending the request to the
+ * server and reloading the current page), but only if the form does not contain `action`,
+ * `data-action`, or `x-action` attributes.
+ *
+ * <div class="alert alert-warning">
+ * **Warning:** Be careful not to cause "double-submission" by using both the `ngClick` and
+ * `ngSubmit` handlers together. See the
+ * {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}
+ * for a detailed discussion of when `ngSubmit` may be triggered.
+ * </div>
+ *
+ * @element form
+ * @priority 0
+ * @param {expression} ngSubmit {@link guide/expression Expression} to eval.
+ * ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example module="submitExample">
+ <file name="index.html">
+ <script>
+ angular.module('submitExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.list = [];
+ $scope.text = 'hello';
+ $scope.submit = function() {
+ if ($scope.text) {
+ $scope.list.push(this.text);
+ $scope.text = '';
+ }
+ };
+ }]);
+ </script>
+ <form ng-submit="submit()" ng-controller="ExampleController">
+ Enter text and hit enter:
+ <input type="text" ng-model="text" name="text" />
+ <input type="submit" id="submit" value="Submit" />
+ <pre>list={{list}}</pre>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-submit', function() {
+ expect(element(by.binding('list')).getText()).toBe('list=[]');
+ element(by.css('#submit')).click();
+ expect(element(by.binding('list')).getText()).toContain('hello');
+ expect(element(by.model('text')).getAttribute('value')).toBe('');
+ });
+ it('should ignore empty strings', function() {
+ expect(element(by.binding('list')).getText()).toBe('list=[]');
+ element(by.css('#submit')).click();
+ element(by.css('#submit')).click();
+ expect(element(by.binding('list')).getText()).toContain('hello');
+ });
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngFocus
+ *
+ * @description
+ * Specify custom behavior on focus event.
+ *
+ * Note: As the `focus` event is executed synchronously when calling `input.focus()`
+ * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
+ * during an `$apply` to ensure a consistent state.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon
+ * focus. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ * See {@link ng.directive:ngClick ngClick}
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngBlur
+ *
+ * @description
+ * Specify custom behavior on blur event.
+ *
+ * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when
+ * an element has lost focus.
+ *
+ * Note: As the `blur` event is executed synchronously also during DOM manipulations
+ * (e.g. removing a focussed input),
+ * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
+ * during an `$apply` to ensure a consistent state.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon
+ * blur. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ * See {@link ng.directive:ngClick ngClick}
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngCopy
+ *
+ * @description
+ * Specify custom behavior on copy event.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon
+ * copy. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-copy="copied=true" ng-init="copied=false; value='copy me'" ng-model="value">
+ copied: {{copied}}
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngCut
+ *
+ * @description
+ * Specify custom behavior on cut event.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon
+ * cut. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-cut="cut=true" ng-init="cut=false; value='cut me'" ng-model="value">
+ cut: {{cut}}
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngPaste
+ *
+ * @description
+ * Specify custom behavior on paste event.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon
+ * paste. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
+ pasted: {{paste}}
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngIf
+ * @restrict A
+ * @multiElement
+ *
+ * @description
+ * The `ngIf` directive removes or recreates a portion of the DOM tree based on an
+ * {expression}. If the expression assigned to `ngIf` evaluates to a false
+ * value then the element is removed from the DOM, otherwise a clone of the
+ * element is reinserted into the DOM.
+ *
+ * `ngIf` differs from `ngShow` and `ngHide` in that `ngIf` completely removes and recreates the
+ * element in the DOM rather than changing its visibility via the `display` css property. A common
+ * case when this difference is significant is when using css selectors that rely on an element's
+ * position within the DOM, such as the `:first-child` or `:last-child` pseudo-classes.
+ *
+ * Note that when an element is removed using `ngIf` its scope is destroyed and a new scope
+ * is created when the element is restored. The scope created within `ngIf` inherits from
+ * its parent scope using
+ * [prototypal inheritance](https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance).
+ * An important implication of this is if `ngModel` is used within `ngIf` to bind to
+ * a javascript primitive defined in the parent scope. In this case any modifications made to the
+ * variable within the child scope will override (hide) the value in the parent scope.
+ *
+ * Also, `ngIf` recreates elements using their compiled state. An example of this behavior
+ * is if an element's class attribute is directly modified after it's compiled, using something like
+ * jQuery's `.addClass()` method, and the element is later removed. When `ngIf` recreates the element
+ * the added class will be lost because the original compiled state is used to regenerate the element.
+ *
+ * Additionally, you can provide animations via the `ngAnimate` module to animate the `enter`
+ * and `leave` effects.
+ *
+ * @animations
+ * enter - happens just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container
+ * leave - happens just before the `ngIf` contents are removed from the DOM
+ *
+ * @element ANY
+ * @scope
+ * @priority 600
+ * @param {expression} ngIf If the {@link guide/expression expression} is falsy then
+ * the element is removed from the DOM tree. If it is truthy a copy of the compiled
+ * element is added to the DOM tree.
+ *
+ * @example
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <label>Click me: <input type="checkbox" ng-model="checked" ng-init="checked=true" /></label><br/>
+ Show when checked:
+ <span ng-if="checked" class="animate-if">
+ This is removed when the checkbox is unchecked.
+ </span>
+ </file>
+ <file name="animations.css">
+ .animate-if {
+ background:white;
+ border:1px solid black;
+ padding:10px;
+ }
+
+ .animate-if.ng-enter, .animate-if.ng-leave {
+ -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ }
+
+ .animate-if.ng-enter,
+ .animate-if.ng-leave.ng-leave-active {
+ opacity:0;
+ }
+
+ .animate-if.ng-leave,
+ .animate-if.ng-enter.ng-enter-active {
+ opacity:1;
+ }
+ </file>
+ </example>
+ */
+var ngIfDirective = ['$animate', function($animate) {
+ return {
+ multiElement: true,
+ transclude: 'element',
+ priority: 600,
+ terminal: true,
+ restrict: 'A',
+ $$tlb: true,
+ link: function($scope, $element, $attr, ctrl, $transclude) {
+ var block, childScope, previousElements;
+ $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {
+
+ if (value) {
+ if (!childScope) {
+ $transclude(function(clone, newScope) {
+ childScope = newScope;
+ clone[clone.length++] = document.createComment(' end ngIf: ' + $attr.ngIf + ' ');
+ // Note: We only need the first/last node of the cloned nodes.
+ // However, we need to keep the reference to the jqlite wrapper as it might be changed later
+ // by a directive with templateUrl when its template arrives.
+ block = {
+ clone: clone
+ };
+ $animate.enter(clone, $element.parent(), $element);
+ });
+ }
+ } else {
+ if (previousElements) {
+ previousElements.remove();
+ previousElements = null;
+ }
+ if (childScope) {
+ childScope.$destroy();
+ childScope = null;
+ }
+ if (block) {
+ previousElements = getBlockNodes(block.clone);
+ $animate.leave(previousElements).then(function() {
+ previousElements = null;
+ });
+ block = null;
+ }
+ }
+ });
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngInclude
+ * @restrict ECA
+ *
+ * @description
+ * Fetches, compiles and includes an external HTML fragment.
+ *
+ * By default, the template URL is restricted to the same domain and protocol as the
+ * application document. This is done by calling {@link $sce#getTrustedResourceUrl
+ * $sce.getTrustedResourceUrl} on it. To load templates from other domains or protocols
+ * you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist them} or
+ * {@link $sce#trustAsResourceUrl wrap them} as trusted values. Refer to Angular's {@link
+ * ng.$sce Strict Contextual Escaping}.
+ *
+ * In addition, the browser's
+ * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)
+ * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)
+ * policy may further restrict whether the template is successfully loaded.
+ * For example, `ngInclude` won't work for cross-domain requests on all browsers and for `file://`
+ * access on some browsers.
+ *
+ * @animations
+ * enter - animation is used to bring new content into the browser.
+ * leave - animation is used to animate existing content away.
+ *
+ * The enter and leave animation occur concurrently.
+ *
+ * @scope
+ * @priority 400
+ *
+ * @param {string} ngInclude|src angular expression evaluating to URL. If the source is a string constant,
+ * make sure you wrap it in **single** quotes, e.g. `src="'myPartialTemplate.html'"`.
+ * @param {string=} onload Expression to evaluate when a new partial is loaded.
+ *
+ * @param {string=} autoscroll Whether `ngInclude` should call {@link ng.$anchorScroll
+ * $anchorScroll} to scroll the viewport after the content is loaded.
+ *
+ * - If the attribute is not set, disable scrolling.
+ * - If the attribute is set without value, enable scrolling.
+ * - Otherwise enable scrolling only if the expression evaluates to truthy value.
+ *
+ * @example
+ <example module="includeExample" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <select ng-model="template" ng-options="t.name for t in templates">
+ <option value="">(blank)</option>
+ </select>
+ url of the template: <code>{{template.url}}</code>
+ <hr/>
+ <div class="slide-animate-container">
+ <div class="slide-animate" ng-include="template.url"></div>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('includeExample', ['ngAnimate'])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.templates =
+ [ { name: 'template1.html', url: 'template1.html'},
+ { name: 'template2.html', url: 'template2.html'} ];
+ $scope.template = $scope.templates[0];
+ }]);
+ </file>
+ <file name="template1.html">
+ Content of template1.html
+ </file>
+ <file name="template2.html">
+ Content of template2.html
+ </file>
+ <file name="animations.css">
+ .slide-animate-container {
+ position:relative;
+ background:white;
+ border:1px solid black;
+ height:40px;
+ overflow:hidden;
+ }
+
+ .slide-animate {
+ padding:10px;
+ }
+
+ .slide-animate.ng-enter, .slide-animate.ng-leave {
+ -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+
+ position:absolute;
+ top:0;
+ left:0;
+ right:0;
+ bottom:0;
+ display:block;
+ padding:10px;
+ }
+
+ .slide-animate.ng-enter {
+ top:-50px;
+ }
+ .slide-animate.ng-enter.ng-enter-active {
+ top:0;
+ }
+
+ .slide-animate.ng-leave {
+ top:0;
+ }
+ .slide-animate.ng-leave.ng-leave-active {
+ top:50px;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var templateSelect = element(by.model('template'));
+ var includeElem = element(by.css('[ng-include]'));
+
+ it('should load template1.html', function() {
+ expect(includeElem.getText()).toMatch(/Content of template1.html/);
+ });
+
+ it('should load template2.html', function() {
+ if (browser.params.browser == 'firefox') {
+ // Firefox can't handle using selects
+ // See https://github.com/angular/protractor/issues/480
+ return;
+ }
+ templateSelect.click();
+ templateSelect.all(by.css('option')).get(2).click();
+ expect(includeElem.getText()).toMatch(/Content of template2.html/);
+ });
+
+ it('should change to blank', function() {
+ if (browser.params.browser == 'firefox') {
+ // Firefox can't handle using selects
+ return;
+ }
+ templateSelect.click();
+ templateSelect.all(by.css('option')).get(0).click();
+ expect(includeElem.isPresent()).toBe(false);
+ });
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc event
+ * @name ngInclude#$includeContentRequested
+ * @eventType emit on the scope ngInclude was declared in
+ * @description
+ * Emitted every time the ngInclude content is requested.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {String} src URL of content to load.
+ */
+
+
+/**
+ * @ngdoc event
+ * @name ngInclude#$includeContentLoaded
+ * @eventType emit on the current ngInclude scope
+ * @description
+ * Emitted every time the ngInclude content is reloaded.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {String} src URL of content to load.
+ */
+
+
+/**
+ * @ngdoc event
+ * @name ngInclude#$includeContentError
+ * @eventType emit on the scope ngInclude was declared in
+ * @description
+ * Emitted when a template HTTP request yields an erroneous response (status < 200 || status > 299)
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {String} src URL of content to load.
+ */
+var ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate',
+ function($templateRequest, $anchorScroll, $animate) {
+ return {
+ restrict: 'ECA',
+ priority: 400,
+ terminal: true,
+ transclude: 'element',
+ controller: angular.noop,
+ compile: function(element, attr) {
+ var srcExp = attr.ngInclude || attr.src,
+ onloadExp = attr.onload || '',
+ autoScrollExp = attr.autoscroll;
+
+ return function(scope, $element, $attr, ctrl, $transclude) {
+ var changeCounter = 0,
+ currentScope,
+ previousElement,
+ currentElement;
+
+ var cleanupLastIncludeContent = function() {
+ if (previousElement) {
+ previousElement.remove();
+ previousElement = null;
+ }
+ if (currentScope) {
+ currentScope.$destroy();
+ currentScope = null;
+ }
+ if (currentElement) {
+ $animate.leave(currentElement).then(function() {
+ previousElement = null;
+ });
+ previousElement = currentElement;
+ currentElement = null;
+ }
+ };
+
+ scope.$watch(srcExp, function ngIncludeWatchAction(src) {
+ var afterAnimation = function() {
+ if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {
+ $anchorScroll();
+ }
+ };
+ var thisChangeId = ++changeCounter;
+
+ if (src) {
+ //set the 2nd param to true to ignore the template request error so that the inner
+ //contents and scope can be cleaned up.
+ $templateRequest(src, true).then(function(response) {
+ if (thisChangeId !== changeCounter) return;
+ var newScope = scope.$new();
+ ctrl.template = response;
+
+ // Note: This will also link all children of ng-include that were contained in the original
+ // html. If that content contains controllers, ... they could pollute/change the scope.
+ // However, using ng-include on an element with additional content does not make sense...
+ // Note: We can't remove them in the cloneAttchFn of $transclude as that
+ // function is called before linking the content, which would apply child
+ // directives to non existing elements.
+ var clone = $transclude(newScope, function(clone) {
+ cleanupLastIncludeContent();
+ $animate.enter(clone, null, $element).then(afterAnimation);
+ });
+
+ currentScope = newScope;
+ currentElement = clone;
+
+ currentScope.$emit('$includeContentLoaded', src);
+ scope.$eval(onloadExp);
+ }, function() {
+ if (thisChangeId === changeCounter) {
+ cleanupLastIncludeContent();
+ scope.$emit('$includeContentError', src);
+ }
+ });
+ scope.$emit('$includeContentRequested', src);
+ } else {
+ cleanupLastIncludeContent();
+ ctrl.template = null;
+ }
+ });
+ };
+ }
+ };
+}];
+
+// This directive is called during the $transclude call of the first `ngInclude` directive.
+// It will replace and compile the content of the element with the loaded template.
+// We need this directive so that the element content is already filled when
+// the link function of another directive on the same element as ngInclude
+// is called.
+var ngIncludeFillContentDirective = ['$compile',
+ function($compile) {
+ return {
+ restrict: 'ECA',
+ priority: -400,
+ require: 'ngInclude',
+ link: function(scope, $element, $attr, ctrl) {
+ if (/SVG/.test($element[0].toString())) {
+ // WebKit: https://bugs.webkit.org/show_bug.cgi?id=135698 --- SVG elements do not
+ // support innerHTML, so detect this here and try to generate the contents
+ // specially.
+ $element.empty();
+ $compile(jqLiteBuildFragment(ctrl.template, document).childNodes)(scope,
+ function namespaceAdaptedClone(clone) {
+ $element.append(clone);
+ }, {futureParentElement: $element});
+ return;
+ }
+
+ $element.html(ctrl.template);
+ $compile($element.contents())(scope);
+ }
+ };
+ }];
+
+/**
+ * @ngdoc directive
+ * @name ngInit
+ * @restrict AC
+ *
+ * @description
+ * The `ngInit` directive allows you to evaluate an expression in the
+ * current scope.
+ *
+ * <div class="alert alert-danger">
+ * The only appropriate use of `ngInit` is for aliasing special properties of
+ * {@link ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below. Besides this case, you
+ * should use {@link guide/controller controllers} rather than `ngInit`
+ * to initialize values on a scope.
+ * </div>
+ * <div class="alert alert-warning">
+ * **Note**: If you have assignment in `ngInit` along with {@link ng.$filter `$filter`}, make
+ * sure you have parenthesis for correct precedence:
+ * <pre class="prettyprint">
+ * `<div ng-init="test1 = (data | orderBy:'name')"></div>`
+ * </pre>
+ * </div>
+ *
+ * @priority 450
+ *
+ * @element ANY
+ * @param {expression} ngInit {@link guide/expression Expression} to eval.
+ *
+ * @example
+ <example module="initExample">
+ <file name="index.html">
+ <script>
+ angular.module('initExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.list = [['a', 'b'], ['c', 'd']];
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <div ng-repeat="innerList in list" ng-init="outerIndex = $index">
+ <div ng-repeat="value in innerList" ng-init="innerIndex = $index">
+ <span class="example-init">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span>
+ </div>
+ </div>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should alias index positions', function() {
+ var elements = element.all(by.css('.example-init'));
+ expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');
+ expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');
+ expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');
+ expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');
+ });
+ </file>
+ </example>
+ */
+var ngInitDirective = ngDirective({
+ priority: 450,
+ compile: function() {
+ return {
+ pre: function(scope, element, attrs) {
+ scope.$eval(attrs.ngInit);
+ }
+ };
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name ngList
+ *
+ * @description
+ * Text input that converts between a delimited string and an array of strings. The default
+ * delimiter is a comma followed by a space - equivalent to `ng-list=", "`. You can specify a custom
+ * delimiter as the value of the `ngList` attribute - for example, `ng-list=" | "`.
+ *
+ * The behaviour of the directive is affected by the use of the `ngTrim` attribute.
+ * * If `ngTrim` is set to `"false"` then whitespace around both the separator and each
+ * list item is respected. This implies that the user of the directive is responsible for
+ * dealing with whitespace but also allows you to use whitespace as a delimiter, such as a
+ * tab or newline character.
+ * * Otherwise whitespace around the delimiter is ignored when splitting (although it is respected
+ * when joining the list items back together) and whitespace around each list item is stripped
+ * before it is added to the model.
+ *
+ * ### Example with Validation
+ *
+ * <example name="ngList-directive" module="listExample">
+ * <file name="app.js">
+ * angular.module('listExample', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.names = ['morpheus', 'neo', 'trinity'];
+ * }]);
+ * </file>
+ * <file name="index.html">
+ * <form name="myForm" ng-controller="ExampleController">
+ * <label>List: <input name="namesInput" ng-model="names" ng-list required></label>
+ * <span role="alert">
+ * <span class="error" ng-show="myForm.namesInput.$error.required">
+ * Required!</span>
+ * </span>
+ * <br>
+ * <tt>names = {{names}}</tt><br/>
+ * <tt>myForm.namesInput.$valid = {{myForm.namesInput.$valid}}</tt><br/>
+ * <tt>myForm.namesInput.$error = {{myForm.namesInput.$error}}</tt><br/>
+ * <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ * <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ * </form>
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * var listInput = element(by.model('names'));
+ * var names = element(by.exactBinding('names'));
+ * var valid = element(by.binding('myForm.namesInput.$valid'));
+ * var error = element(by.css('span.error'));
+ *
+ * it('should initialize to model', function() {
+ * expect(names.getText()).toContain('["morpheus","neo","trinity"]');
+ * expect(valid.getText()).toContain('true');
+ * expect(error.getCssValue('display')).toBe('none');
+ * });
+ *
+ * it('should be invalid if empty', function() {
+ * listInput.clear();
+ * listInput.sendKeys('');
+ *
+ * expect(names.getText()).toContain('');
+ * expect(valid.getText()).toContain('false');
+ * expect(error.getCssValue('display')).not.toBe('none');
+ * });
+ * </file>
+ * </example>
+ *
+ * ### Example - splitting on whitespace
+ * <example name="ngList-directive-newlines">
+ * <file name="index.html">
+ * <textarea ng-model="list" ng-list=" " ng-trim="false"></textarea>
+ * <pre>{{ list | json }}</pre>
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * it("should split the text by newlines", function() {
+ * var listInput = element(by.model('list'));
+ * var output = element(by.binding('list | json'));
+ * listInput.sendKeys('abc\ndef\nghi');
+ * expect(output.getText()).toContain('[\n "abc",\n "def",\n "ghi"\n]');
+ * });
+ * </file>
+ * </example>
+ *
+ * @element input
+ * @param {string=} ngList optional delimiter that should be used to split the value.
+ */
+var ngListDirective = function() {
+ return {
+ restrict: 'A',
+ priority: 100,
+ require: 'ngModel',
+ link: function(scope, element, attr, ctrl) {
+ // We want to control whitespace trimming so we use this convoluted approach
+ // to access the ngList attribute, which doesn't pre-trim the attribute
+ var ngList = element.attr(attr.$attr.ngList) || ', ';
+ var trimValues = attr.ngTrim !== 'false';
+ var separator = trimValues ? trim(ngList) : ngList;
+
+ var parse = function(viewValue) {
+ // If the viewValue is invalid (say required but empty) it will be `undefined`
+ if (isUndefined(viewValue)) return;
+
+ var list = [];
+
+ if (viewValue) {
+ forEach(viewValue.split(separator), function(value) {
+ if (value) list.push(trimValues ? trim(value) : value);
+ });
+ }
+
+ return list;
+ };
+
+ ctrl.$parsers.push(parse);
+ ctrl.$formatters.push(function(value) {
+ if (isArray(value)) {
+ return value.join(ngList);
+ }
+
+ return undefined;
+ });
+
+ // Override the standard $isEmpty because an empty array means the input is empty.
+ ctrl.$isEmpty = function(value) {
+ return !value || !value.length;
+ };
+ }
+ };
+};
+
+/* global VALID_CLASS: true,
+ INVALID_CLASS: true,
+ PRISTINE_CLASS: true,
+ DIRTY_CLASS: true,
+ UNTOUCHED_CLASS: true,
+ TOUCHED_CLASS: true,
+*/
+
+var VALID_CLASS = 'ng-valid',
+ INVALID_CLASS = 'ng-invalid',
+ PRISTINE_CLASS = 'ng-pristine',
+ DIRTY_CLASS = 'ng-dirty',
+ UNTOUCHED_CLASS = 'ng-untouched',
+ TOUCHED_CLASS = 'ng-touched',
+ PENDING_CLASS = 'ng-pending';
+
+var ngModelMinErr = minErr('ngModel');
+
+/**
+ * @ngdoc type
+ * @name ngModel.NgModelController
+ *
+ * @property {string} $viewValue Actual string value in the view.
+ * @property {*} $modelValue The value in the model that the control is bound to.
+ * @property {Array.<Function>} $parsers Array of functions to execute, as a pipeline, whenever
+ the control reads value from the DOM. The functions are called in array order, each passing
+ its return value through to the next. The last return value is forwarded to the
+ {@link ngModel.NgModelController#$validators `$validators`} collection.
+
+Parsers are used to sanitize / convert the {@link ngModel.NgModelController#$viewValue
+`$viewValue`}.
+
+Returning `undefined` from a parser means a parse error occurred. In that case,
+no {@link ngModel.NgModelController#$validators `$validators`} will run and the `ngModel`
+will be set to `undefined` unless {@link ngModelOptions `ngModelOptions.allowInvalid`}
+is set to `true`. The parse error is stored in `ngModel.$error.parse`.
+
+ *
+ * @property {Array.<Function>} $formatters Array of functions to execute, as a pipeline, whenever
+ the model value changes. The functions are called in reverse array order, each passing the value through to the
+ next. The last return value is used as the actual DOM value.
+ Used to format / convert values for display in the control.
+ * ```js
+ * function formatter(value) {
+ * if (value) {
+ * return value.toUpperCase();
+ * }
+ * }
+ * ngModel.$formatters.push(formatter);
+ * ```
+ *
+ * @property {Object.<string, function>} $validators A collection of validators that are applied
+ * whenever the model value changes. The key value within the object refers to the name of the
+ * validator while the function refers to the validation operation. The validation operation is
+ * provided with the model value as an argument and must return a true or false value depending
+ * on the response of that validation.
+ *
+ * ```js
+ * ngModel.$validators.validCharacters = function(modelValue, viewValue) {
+ * var value = modelValue || viewValue;
+ * return /[0-9]+/.test(value) &&
+ * /[a-z]+/.test(value) &&
+ * /[A-Z]+/.test(value) &&
+ * /\W+/.test(value);
+ * };
+ * ```
+ *
+ * @property {Object.<string, function>} $asyncValidators A collection of validations that are expected to
+ * perform an asynchronous validation (e.g. a HTTP request). The validation function that is provided
+ * is expected to return a promise when it is run during the model validation process. Once the promise
+ * is delivered then the validation status will be set to true when fulfilled and false when rejected.
+ * When the asynchronous validators are triggered, each of the validators will run in parallel and the model
+ * value will only be updated once all validators have been fulfilled. As long as an asynchronous validator
+ * is unfulfilled, its key will be added to the controllers `$pending` property. Also, all asynchronous validators
+ * will only run once all synchronous validators have passed.
+ *
+ * Please note that if $http is used then it is important that the server returns a success HTTP response code
+ * in order to fulfill the validation and a status level of `4xx` in order to reject the validation.
+ *
+ * ```js
+ * ngModel.$asyncValidators.uniqueUsername = function(modelValue, viewValue) {
+ * var value = modelValue || viewValue;
+ *
+ * // Lookup user by username
+ * return $http.get('/api/users/' + value).
+ * then(function resolved() {
+ * //username exists, this means validation fails
+ * return $q.reject('exists');
+ * }, function rejected() {
+ * //username does not exist, therefore this validation passes
+ * return true;
+ * });
+ * };
+ * ```
+ *
+ * @property {Array.<Function>} $viewChangeListeners Array of functions to execute whenever the
+ * view value has changed. It is called with no arguments, and its return value is ignored.
+ * This can be used in place of additional $watches against the model value.
+ *
+ * @property {Object} $error An object hash with all failing validator ids as keys.
+ * @property {Object} $pending An object hash with all pending validator ids as keys.
+ *
+ * @property {boolean} $untouched True if control has not lost focus yet.
+ * @property {boolean} $touched True if control has lost focus.
+ * @property {boolean} $pristine True if user has not interacted with the control yet.
+ * @property {boolean} $dirty True if user has already interacted with the control.
+ * @property {boolean} $valid True if there is no error.
+ * @property {boolean} $invalid True if at least one error on the control.
+ * @property {string} $name The name attribute of the control.
+ *
+ * @description
+ *
+ * `NgModelController` provides API for the {@link ngModel `ngModel`} directive.
+ * The controller contains services for data-binding, validation, CSS updates, and value formatting
+ * and parsing. It purposefully does not contain any logic which deals with DOM rendering or
+ * listening to DOM events.
+ * Such DOM related logic should be provided by other directives which make use of
+ * `NgModelController` for data-binding to control elements.
+ * Angular provides this DOM logic for most {@link input `input`} elements.
+ * At the end of this page you can find a {@link ngModel.NgModelController#custom-control-example
+ * custom control example} that uses `ngModelController` to bind to `contenteditable` elements.
+ *
+ * @example
+ * ### Custom Control Example
+ * This example shows how to use `NgModelController` with a custom control to achieve
+ * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)
+ * collaborate together to achieve the desired result.
+ *
+ * `contenteditable` is an HTML5 attribute, which tells the browser to let the element
+ * contents be edited in place by the user.
+ *
+ * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize}
+ * module to automatically remove "bad" content like inline event listener (e.g. `<span onclick="...">`).
+ * However, as we are using `$sce` the model can still decide to provide unsafe content if it marks
+ * that content using the `$sce` service.
+ *
+ * <example name="NgModelController" module="customControl" deps="angular-sanitize.js">
+ <file name="style.css">
+ [contenteditable] {
+ border: 1px solid black;
+ background-color: white;
+ min-height: 20px;
+ }
+
+ .ng-invalid {
+ border: 1px solid red;
+ }
+
+ </file>
+ <file name="script.js">
+ angular.module('customControl', ['ngSanitize']).
+ directive('contenteditable', ['$sce', function($sce) {
+ return {
+ restrict: 'A', // only activate on element attribute
+ require: '?ngModel', // get a hold of NgModelController
+ link: function(scope, element, attrs, ngModel) {
+ if (!ngModel) return; // do nothing if no ng-model
+
+ // Specify how UI should be updated
+ ngModel.$render = function() {
+ element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));
+ };
+
+ // Listen for change events to enable binding
+ element.on('blur keyup change', function() {
+ scope.$evalAsync(read);
+ });
+ read(); // initialize
+
+ // Write data to the model
+ function read() {
+ var html = element.html();
+ // When we clear the content editable the browser leaves a <br> behind
+ // If strip-br attribute is provided then we strip this out
+ if ( attrs.stripBr && html == '<br>' ) {
+ html = '';
+ }
+ ngModel.$setViewValue(html);
+ }
+ }
+ };
+ }]);
+ </file>
+ <file name="index.html">
+ <form name="myForm">
+ <div contenteditable
+ name="myWidget" ng-model="userContent"
+ strip-br="true"
+ required>Change me!</div>
+ <span ng-show="myForm.myWidget.$error.required">Required!</span>
+ <hr>
+ <textarea ng-model="userContent" aria-label="Dynamic textarea"></textarea>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should data-bind and become invalid', function() {
+ if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') {
+ // SafariDriver can't handle contenteditable
+ // and Firefox driver can't clear contenteditables very well
+ return;
+ }
+ var contentEditable = element(by.css('[contenteditable]'));
+ var content = 'Change me!';
+
+ expect(contentEditable.getText()).toEqual(content);
+
+ contentEditable.clear();
+ contentEditable.sendKeys(protractor.Key.BACK_SPACE);
+ expect(contentEditable.getText()).toEqual('');
+ expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/);
+ });
+ </file>
+ * </example>
+ *
+ *
+ */
+var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate', '$timeout', '$rootScope', '$q', '$interpolate',
+ function($scope, $exceptionHandler, $attr, $element, $parse, $animate, $timeout, $rootScope, $q, $interpolate) {
+ this.$viewValue = Number.NaN;
+ this.$modelValue = Number.NaN;
+ this.$$rawModelValue = undefined; // stores the parsed modelValue / model set from scope regardless of validity.
+ this.$validators = {};
+ this.$asyncValidators = {};
+ this.$parsers = [];
+ this.$formatters = [];
+ this.$viewChangeListeners = [];
+ this.$untouched = true;
+ this.$touched = false;
+ this.$pristine = true;
+ this.$dirty = false;
+ this.$valid = true;
+ this.$invalid = false;
+ this.$error = {}; // keep invalid keys here
+ this.$$success = {}; // keep valid keys here
+ this.$pending = undefined; // keep pending keys here
+ this.$name = $interpolate($attr.name || '', false)($scope);
+
+
+ var parsedNgModel = $parse($attr.ngModel),
+ parsedNgModelAssign = parsedNgModel.assign,
+ ngModelGet = parsedNgModel,
+ ngModelSet = parsedNgModelAssign,
+ pendingDebounce = null,
+ parserValid,
+ ctrl = this;
+
+ this.$$setOptions = function(options) {
+ ctrl.$options = options;
+ if (options && options.getterSetter) {
+ var invokeModelGetter = $parse($attr.ngModel + '()'),
+ invokeModelSetter = $parse($attr.ngModel + '($$$p)');
+
+ ngModelGet = function($scope) {
+ var modelValue = parsedNgModel($scope);
+ if (isFunction(modelValue)) {
+ modelValue = invokeModelGetter($scope);
+ }
+ return modelValue;
+ };
+ ngModelSet = function($scope, newValue) {
+ if (isFunction(parsedNgModel($scope))) {
+ invokeModelSetter($scope, {$$$p: ctrl.$modelValue});
+ } else {
+ parsedNgModelAssign($scope, ctrl.$modelValue);
+ }
+ };
+ } else if (!parsedNgModel.assign) {
+ throw ngModelMinErr('nonassign', "Expression '{0}' is non-assignable. Element: {1}",
+ $attr.ngModel, startingTag($element));
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$render
+ *
+ * @description
+ * Called when the view needs to be updated. It is expected that the user of the ng-model
+ * directive will implement this method.
+ *
+ * The `$render()` method is invoked in the following situations:
+ *
+ * * `$rollbackViewValue()` is called. If we are rolling back the view value to the last
+ * committed value then `$render()` is called to update the input control.
+ * * The value referenced by `ng-model` is changed programmatically and both the `$modelValue` and
+ * the `$viewValue` are different from last time.
+ *
+ * Since `ng-model` does not do a deep watch, `$render()` is only invoked if the values of
+ * `$modelValue` and `$viewValue` are actually different from their previous value. If `$modelValue`
+ * or `$viewValue` are objects (rather than a string or number) then `$render()` will not be
+ * invoked if you only change a property on the objects.
+ */
+ this.$render = noop;
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$isEmpty
+ *
+ * @description
+ * This is called when we need to determine if the value of an input is empty.
+ *
+ * For instance, the required directive does this to work out if the input has data or not.
+ *
+ * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`.
+ *
+ * You can override this for input directives whose concept of being empty is different from the
+ * default. The `checkboxInputType` directive does this because in its case a value of `false`
+ * implies empty.
+ *
+ * @param {*} value The value of the input to check for emptiness.
+ * @returns {boolean} True if `value` is "empty".
+ */
+ this.$isEmpty = function(value) {
+ return isUndefined(value) || value === '' || value === null || value !== value;
+ };
+
+ var parentForm = $element.inheritedData('$formController') || nullFormCtrl,
+ currentValidationRunId = 0;
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setValidity
+ *
+ * @description
+ * Change the validity state, and notify the form.
+ *
+ * This method can be called within $parsers/$formatters or a custom validation implementation.
+ * However, in most cases it should be sufficient to use the `ngModel.$validators` and
+ * `ngModel.$asyncValidators` collections which will call `$setValidity` automatically.
+ *
+ * @param {string} validationErrorKey Name of the validator. The `validationErrorKey` will be assigned
+ * to either `$error[validationErrorKey]` or `$pending[validationErrorKey]`
+ * (for unfulfilled `$asyncValidators`), so that it is available for data-binding.
+ * The `validationErrorKey` should be in camelCase and will get converted into dash-case
+ * for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error`
+ * class and can be bound to as `{{someForm.someControl.$error.myError}}` .
+ * @param {boolean} isValid Whether the current state is valid (true), invalid (false), pending (undefined),
+ * or skipped (null). Pending is used for unfulfilled `$asyncValidators`.
+ * Skipped is used by Angular when validators do not run because of parse errors and
+ * when `$asyncValidators` do not run because any of the `$validators` failed.
+ */
+ addSetValidityMethod({
+ ctrl: this,
+ $element: $element,
+ set: function(object, property) {
+ object[property] = true;
+ },
+ unset: function(object, property) {
+ delete object[property];
+ },
+ parentForm: parentForm,
+ $animate: $animate
+ });
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setPristine
+ *
+ * @description
+ * Sets the control to its pristine state.
+ *
+ * This method can be called to remove the `ng-dirty` class and set the control to its pristine
+ * state (`ng-pristine` class). A model is considered to be pristine when the control
+ * has not been changed from when first compiled.
+ */
+ this.$setPristine = function() {
+ ctrl.$dirty = false;
+ ctrl.$pristine = true;
+ $animate.removeClass($element, DIRTY_CLASS);
+ $animate.addClass($element, PRISTINE_CLASS);
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setDirty
+ *
+ * @description
+ * Sets the control to its dirty state.
+ *
+ * This method can be called to remove the `ng-pristine` class and set the control to its dirty
+ * state (`ng-dirty` class). A model is considered to be dirty when the control has been changed
+ * from when first compiled.
+ */
+ this.$setDirty = function() {
+ ctrl.$dirty = true;
+ ctrl.$pristine = false;
+ $animate.removeClass($element, PRISTINE_CLASS);
+ $animate.addClass($element, DIRTY_CLASS);
+ parentForm.$setDirty();
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setUntouched
+ *
+ * @description
+ * Sets the control to its untouched state.
+ *
+ * This method can be called to remove the `ng-touched` class and set the control to its
+ * untouched state (`ng-untouched` class). Upon compilation, a model is set as untouched
+ * by default, however this function can be used to restore that state if the model has
+ * already been touched by the user.
+ */
+ this.$setUntouched = function() {
+ ctrl.$touched = false;
+ ctrl.$untouched = true;
+ $animate.setClass($element, UNTOUCHED_CLASS, TOUCHED_CLASS);
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setTouched
+ *
+ * @description
+ * Sets the control to its touched state.
+ *
+ * This method can be called to remove the `ng-untouched` class and set the control to its
+ * touched state (`ng-touched` class). A model is considered to be touched when the user has
+ * first focused the control element and then shifted focus away from the control (blur event).
+ */
+ this.$setTouched = function() {
+ ctrl.$touched = true;
+ ctrl.$untouched = false;
+ $animate.setClass($element, TOUCHED_CLASS, UNTOUCHED_CLASS);
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$rollbackViewValue
+ *
+ * @description
+ * Cancel an update and reset the input element's value to prevent an update to the `$modelValue`,
+ * which may be caused by a pending debounced event or because the input is waiting for a some
+ * future event.
+ *
+ * If you have an input that uses `ng-model-options` to set up debounced events or events such
+ * as blur you can have a situation where there is a period when the `$viewValue`
+ * is out of synch with the ngModel's `$modelValue`.
+ *
+ * In this case, you can run into difficulties if you try to update the ngModel's `$modelValue`
+ * programmatically before these debounced/future events have resolved/occurred, because Angular's
+ * dirty checking mechanism is not able to tell whether the model has actually changed or not.
+ *
+ * The `$rollbackViewValue()` method should be called before programmatically changing the model of an
+ * input which may have such events pending. This is important in order to make sure that the
+ * input field will be updated with the new model value and any pending operations are cancelled.
+ *
+ * <example name="ng-model-cancel-update" module="cancel-update-example">
+ * <file name="app.js">
+ * angular.module('cancel-update-example', [])
+ *
+ * .controller('CancelUpdateController', ['$scope', function($scope) {
+ * $scope.resetWithCancel = function(e) {
+ * if (e.keyCode == 27) {
+ * $scope.myForm.myInput1.$rollbackViewValue();
+ * $scope.myValue = '';
+ * }
+ * };
+ * $scope.resetWithoutCancel = function(e) {
+ * if (e.keyCode == 27) {
+ * $scope.myValue = '';
+ * }
+ * };
+ * }]);
+ * </file>
+ * <file name="index.html">
+ * <div ng-controller="CancelUpdateController">
+ * <p>Try typing something in each input. See that the model only updates when you
+ * blur off the input.
+ * </p>
+ * <p>Now see what happens if you start typing then press the Escape key</p>
+ *
+ * <form name="myForm" ng-model-options="{ updateOn: 'blur' }">
+ * <p id="inputDescription1">With $rollbackViewValue()</p>
+ * <input name="myInput1" aria-describedby="inputDescription1" ng-model="myValue"
+ * ng-keydown="resetWithCancel($event)"><br/>
+ * myValue: "{{ myValue }}"
+ *
+ * <p id="inputDescription2">Without $rollbackViewValue()</p>
+ * <input name="myInput2" aria-describedby="inputDescription2" ng-model="myValue"
+ * ng-keydown="resetWithoutCancel($event)"><br/>
+ * myValue: "{{ myValue }}"
+ * </form>
+ * </div>
+ * </file>
+ * </example>
+ */
+ this.$rollbackViewValue = function() {
+ $timeout.cancel(pendingDebounce);
+ ctrl.$viewValue = ctrl.$$lastCommittedViewValue;
+ ctrl.$render();
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$validate
+ *
+ * @description
+ * Runs each of the registered validators (first synchronous validators and then
+ * asynchronous validators).
+ * If the validity changes to invalid, the model will be set to `undefined`,
+ * unless {@link ngModelOptions `ngModelOptions.allowInvalid`} is `true`.
+ * If the validity changes to valid, it will set the model to the last available valid
+ * `$modelValue`, i.e. either the last parsed value or the last value set from the scope.
+ */
+ this.$validate = function() {
+ // ignore $validate before model is initialized
+ if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
+ return;
+ }
+
+ var viewValue = ctrl.$$lastCommittedViewValue;
+ // Note: we use the $$rawModelValue as $modelValue might have been
+ // set to undefined during a view -> model update that found validation
+ // errors. We can't parse the view here, since that could change
+ // the model although neither viewValue nor the model on the scope changed
+ var modelValue = ctrl.$$rawModelValue;
+
+ var prevValid = ctrl.$valid;
+ var prevModelValue = ctrl.$modelValue;
+
+ var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
+
+ ctrl.$$runValidators(modelValue, viewValue, function(allValid) {
+ // If there was no change in validity, don't update the model
+ // This prevents changing an invalid modelValue to undefined
+ if (!allowInvalid && prevValid !== allValid) {
+ // Note: Don't check ctrl.$valid here, as we could have
+ // external validators (e.g. calculated on the server),
+ // that just call $setValidity and need the model value
+ // to calculate their validity.
+ ctrl.$modelValue = allValid ? modelValue : undefined;
+
+ if (ctrl.$modelValue !== prevModelValue) {
+ ctrl.$$writeModelToScope();
+ }
+ }
+ });
+
+ };
+
+ this.$$runValidators = function(modelValue, viewValue, doneCallback) {
+ currentValidationRunId++;
+ var localValidationRunId = currentValidationRunId;
+
+ // check parser error
+ if (!processParseErrors()) {
+ validationDone(false);
+ return;
+ }
+ if (!processSyncValidators()) {
+ validationDone(false);
+ return;
+ }
+ processAsyncValidators();
+
+ function processParseErrors() {
+ var errorKey = ctrl.$$parserName || 'parse';
+ if (parserValid === undefined) {
+ setValidity(errorKey, null);
+ } else {
+ if (!parserValid) {
+ forEach(ctrl.$validators, function(v, name) {
+ setValidity(name, null);
+ });
+ forEach(ctrl.$asyncValidators, function(v, name) {
+ setValidity(name, null);
+ });
+ }
+ // Set the parse error last, to prevent unsetting it, should a $validators key == parserName
+ setValidity(errorKey, parserValid);
+ return parserValid;
+ }
+ return true;
+ }
+
+ function processSyncValidators() {
+ var syncValidatorsValid = true;
+ forEach(ctrl.$validators, function(validator, name) {
+ var result = validator(modelValue, viewValue);
+ syncValidatorsValid = syncValidatorsValid && result;
+ setValidity(name, result);
+ });
+ if (!syncValidatorsValid) {
+ forEach(ctrl.$asyncValidators, function(v, name) {
+ setValidity(name, null);
+ });
+ return false;
+ }
+ return true;
+ }
+
+ function processAsyncValidators() {
+ var validatorPromises = [];
+ var allValid = true;
+ forEach(ctrl.$asyncValidators, function(validator, name) {
+ var promise = validator(modelValue, viewValue);
+ if (!isPromiseLike(promise)) {
+ throw ngModelMinErr("$asyncValidators",
+ "Expected asynchronous validator to return a promise but got '{0}' instead.", promise);
+ }
+ setValidity(name, undefined);
+ validatorPromises.push(promise.then(function() {
+ setValidity(name, true);
+ }, function(error) {
+ allValid = false;
+ setValidity(name, false);
+ }));
+ });
+ if (!validatorPromises.length) {
+ validationDone(true);
+ } else {
+ $q.all(validatorPromises).then(function() {
+ validationDone(allValid);
+ }, noop);
+ }
+ }
+
+ function setValidity(name, isValid) {
+ if (localValidationRunId === currentValidationRunId) {
+ ctrl.$setValidity(name, isValid);
+ }
+ }
+
+ function validationDone(allValid) {
+ if (localValidationRunId === currentValidationRunId) {
+
+ doneCallback(allValid);
+ }
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$commitViewValue
+ *
+ * @description
+ * Commit a pending update to the `$modelValue`.
+ *
+ * Updates may be pending by a debounced event or because the input is waiting for a some future
+ * event defined in `ng-model-options`. this method is rarely needed as `NgModelController`
+ * usually handles calling this in response to input events.
+ */
+ this.$commitViewValue = function() {
+ var viewValue = ctrl.$viewValue;
+
+ $timeout.cancel(pendingDebounce);
+
+ // If the view value has not changed then we should just exit, except in the case where there is
+ // a native validator on the element. In this case the validation state may have changed even though
+ // the viewValue has stayed empty.
+ if (ctrl.$$lastCommittedViewValue === viewValue && (viewValue !== '' || !ctrl.$$hasNativeValidators)) {
+ return;
+ }
+ ctrl.$$lastCommittedViewValue = viewValue;
+
+ // change to dirty
+ if (ctrl.$pristine) {
+ this.$setDirty();
+ }
+ this.$$parseAndValidate();
+ };
+
+ this.$$parseAndValidate = function() {
+ var viewValue = ctrl.$$lastCommittedViewValue;
+ var modelValue = viewValue;
+ parserValid = isUndefined(modelValue) ? undefined : true;
+
+ if (parserValid) {
+ for (var i = 0; i < ctrl.$parsers.length; i++) {
+ modelValue = ctrl.$parsers[i](modelValue);
+ if (isUndefined(modelValue)) {
+ parserValid = false;
+ break;
+ }
+ }
+ }
+ if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
+ // ctrl.$modelValue has not been touched yet...
+ ctrl.$modelValue = ngModelGet($scope);
+ }
+ var prevModelValue = ctrl.$modelValue;
+ var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
+ ctrl.$$rawModelValue = modelValue;
+
+ if (allowInvalid) {
+ ctrl.$modelValue = modelValue;
+ writeToModelIfNeeded();
+ }
+
+ // Pass the $$lastCommittedViewValue here, because the cached viewValue might be out of date.
+ // This can happen if e.g. $setViewValue is called from inside a parser
+ ctrl.$$runValidators(modelValue, ctrl.$$lastCommittedViewValue, function(allValid) {
+ if (!allowInvalid) {
+ // Note: Don't check ctrl.$valid here, as we could have
+ // external validators (e.g. calculated on the server),
+ // that just call $setValidity and need the model value
+ // to calculate their validity.
+ ctrl.$modelValue = allValid ? modelValue : undefined;
+ writeToModelIfNeeded();
+ }
+ });
+
+ function writeToModelIfNeeded() {
+ if (ctrl.$modelValue !== prevModelValue) {
+ ctrl.$$writeModelToScope();
+ }
+ }
+ };
+
+ this.$$writeModelToScope = function() {
+ ngModelSet($scope, ctrl.$modelValue);
+ forEach(ctrl.$viewChangeListeners, function(listener) {
+ try {
+ listener();
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setViewValue
+ *
+ * @description
+ * Update the view value.
+ *
+ * This method should be called when an input directive want to change the view value; typically,
+ * this is done from within a DOM event handler.
+ *
+ * For example {@link ng.directive:input input} calls it when the value of the input changes and
+ * {@link ng.directive:select select} calls it when an option is selected.
+ *
+ * If the new `value` is an object (rather than a string or a number), we should make a copy of the
+ * object before passing it to `$setViewValue`. This is because `ngModel` does not perform a deep
+ * watch of objects, it only looks for a change of identity. If you only change the property of
+ * the object then ngModel will not realise that the object has changed and will not invoke the
+ * `$parsers` and `$validators` pipelines.
+ *
+ * For this reason, you should not change properties of the copy once it has been passed to
+ * `$setViewValue`. Otherwise you may cause the model value on the scope to change incorrectly.
+ *
+ * When this method is called, the new `value` will be staged for committing through the `$parsers`
+ * and `$validators` pipelines. If there are no special {@link ngModelOptions} specified then the staged
+ * value sent directly for processing, finally to be applied to `$modelValue` and then the
+ * **expression** specified in the `ng-model` attribute.
+ *
+ * Lastly, all the registered change listeners, in the `$viewChangeListeners` list, are called.
+ *
+ * In case the {@link ng.directive:ngModelOptions ngModelOptions} directive is used with `updateOn`
+ * and the `default` trigger is not listed, all those actions will remain pending until one of the
+ * `updateOn` events is triggered on the DOM element.
+ * All these actions will be debounced if the {@link ng.directive:ngModelOptions ngModelOptions}
+ * directive is used with a custom debounce for this particular event.
+ *
+ * Note that calling this function does not trigger a `$digest`.
+ *
+ * @param {string} value Value from the view.
+ * @param {string} trigger Event that triggered the update.
+ */
+ this.$setViewValue = function(value, trigger) {
+ ctrl.$viewValue = value;
+ if (!ctrl.$options || ctrl.$options.updateOnDefault) {
+ ctrl.$$debounceViewValueCommit(trigger);
+ }
+ };
+
+ this.$$debounceViewValueCommit = function(trigger) {
+ var debounceDelay = 0,
+ options = ctrl.$options,
+ debounce;
+
+ if (options && isDefined(options.debounce)) {
+ debounce = options.debounce;
+ if (isNumber(debounce)) {
+ debounceDelay = debounce;
+ } else if (isNumber(debounce[trigger])) {
+ debounceDelay = debounce[trigger];
+ } else if (isNumber(debounce['default'])) {
+ debounceDelay = debounce['default'];
+ }
+ }
+
+ $timeout.cancel(pendingDebounce);
+ if (debounceDelay) {
+ pendingDebounce = $timeout(function() {
+ ctrl.$commitViewValue();
+ }, debounceDelay);
+ } else if ($rootScope.$$phase) {
+ ctrl.$commitViewValue();
+ } else {
+ $scope.$apply(function() {
+ ctrl.$commitViewValue();
+ });
+ }
+ };
+
+ // model -> value
+ // Note: we cannot use a normal scope.$watch as we want to detect the following:
+ // 1. scope value is 'a'
+ // 2. user enters 'b'
+ // 3. ng-change kicks in and reverts scope value to 'a'
+ // -> scope value did not change since the last digest as
+ // ng-change executes in apply phase
+ // 4. view should be changed back to 'a'
+ $scope.$watch(function ngModelWatch() {
+ var modelValue = ngModelGet($scope);
+
+ // if scope model value and ngModel value are out of sync
+ // TODO(perf): why not move this to the action fn?
+ if (modelValue !== ctrl.$modelValue &&
+ // checks for NaN is needed to allow setting the model to NaN when there's an asyncValidator
+ (ctrl.$modelValue === ctrl.$modelValue || modelValue === modelValue)
+ ) {
+ ctrl.$modelValue = ctrl.$$rawModelValue = modelValue;
+ parserValid = undefined;
+
+ var formatters = ctrl.$formatters,
+ idx = formatters.length;
+
+ var viewValue = modelValue;
+ while (idx--) {
+ viewValue = formatters[idx](viewValue);
+ }
+ if (ctrl.$viewValue !== viewValue) {
+ ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue;
+ ctrl.$render();
+
+ ctrl.$$runValidators(modelValue, viewValue, noop);
+ }
+ }
+
+ return modelValue;
+ });
+}];
+
+
+/**
+ * @ngdoc directive
+ * @name ngModel
+ *
+ * @element input
+ * @priority 1
+ *
+ * @description
+ * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a
+ * property on the scope using {@link ngModel.NgModelController NgModelController},
+ * which is created and exposed by this directive.
+ *
+ * `ngModel` is responsible for:
+ *
+ * - Binding the view into the model, which other directives such as `input`, `textarea` or `select`
+ * require.
+ * - Providing validation behavior (i.e. required, number, email, url).
+ * - Keeping the state of the control (valid/invalid, dirty/pristine, touched/untouched, validation errors).
+ * - Setting related css classes on the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`, `ng-touched`, `ng-untouched`) including animations.
+ * - Registering the control with its parent {@link ng.directive:form form}.
+ *
+ * Note: `ngModel` will try to bind to the property given by evaluating the expression on the
+ * current scope. If the property doesn't already exist on this scope, it will be created
+ * implicitly and added to the scope.
+ *
+ * For best practices on using `ngModel`, see:
+ *
+ * - [Understanding Scopes](https://github.com/angular/angular.js/wiki/Understanding-Scopes)
+ *
+ * For basic examples, how to use `ngModel`, see:
+ *
+ * - {@link ng.directive:input input}
+ * - {@link input[text] text}
+ * - {@link input[checkbox] checkbox}
+ * - {@link input[radio] radio}
+ * - {@link input[number] number}
+ * - {@link input[email] email}
+ * - {@link input[url] url}
+ * - {@link input[date] date}
+ * - {@link input[datetime-local] datetime-local}
+ * - {@link input[time] time}
+ * - {@link input[month] month}
+ * - {@link input[week] week}
+ * - {@link ng.directive:select select}
+ * - {@link ng.directive:textarea textarea}
+ *
+ * # CSS classes
+ * The following CSS classes are added and removed on the associated input/select/textarea element
+ * depending on the validity of the model.
+ *
+ * - `ng-valid`: the model is valid
+ * - `ng-invalid`: the model is invalid
+ * - `ng-valid-[key]`: for each valid key added by `$setValidity`
+ * - `ng-invalid-[key]`: for each invalid key added by `$setValidity`
+ * - `ng-pristine`: the control hasn't been interacted with yet
+ * - `ng-dirty`: the control has been interacted with
+ * - `ng-touched`: the control has been blurred
+ * - `ng-untouched`: the control hasn't been blurred
+ * - `ng-pending`: any `$asyncValidators` are unfulfilled
+ *
+ * Keep in mind that ngAnimate can detect each of these classes when added and removed.
+ *
+ * ## Animation Hooks
+ *
+ * Animations within models are triggered when any of the associated CSS classes are added and removed
+ * on the input element which is attached to the model. These classes are: `.ng-pristine`, `.ng-dirty`,
+ * `.ng-invalid` and `.ng-valid` as well as any other validations that are performed on the model itself.
+ * The animations that are triggered within ngModel are similar to how they work in ngClass and
+ * animations can be hooked into using CSS transitions, keyframes as well as JS animations.
+ *
+ * The following example shows a simple way to utilize CSS transitions to style an input element
+ * that has been rendered as invalid after it has been validated:
+ *
+ * <pre>
+ * //be sure to include ngAnimate as a module to hook into more
+ * //advanced animations
+ * .my-input {
+ * transition:0.5s linear all;
+ * background: white;
+ * }
+ * .my-input.ng-invalid {
+ * background: red;
+ * color:white;
+ * }
+ * </pre>
+ *
+ * @example
+ * <example deps="angular-animate.js" animations="true" fixBase="true" module="inputExample">
+ <file name="index.html">
+ <script>
+ angular.module('inputExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.val = '1';
+ }]);
+ </script>
+ <style>
+ .my-input {
+ -webkit-transition:all linear 0.5s;
+ transition:all linear 0.5s;
+ background: transparent;
+ }
+ .my-input.ng-invalid {
+ color:white;
+ background: red;
+ }
+ </style>
+ <p id="inputDescription">
+ Update input to see transitions when valid/invalid.
+ Integer is a valid value.
+ </p>
+ <form name="testForm" ng-controller="ExampleController">
+ <input ng-model="val" ng-pattern="/^\d+$/" name="anim" class="my-input"
+ aria-describedby="inputDescription" />
+ </form>
+ </file>
+ * </example>
+ *
+ * ## Binding to a getter/setter
+ *
+ * Sometimes it's helpful to bind `ngModel` to a getter/setter function. A getter/setter is a
+ * function that returns a representation of the model when called with zero arguments, and sets
+ * the internal state of a model when called with an argument. It's sometimes useful to use this
+ * for models that have an internal representation that's different from what the model exposes
+ * to the view.
+ *
+ * <div class="alert alert-success">
+ * **Best Practice:** It's best to keep getters fast because Angular is likely to call them more
+ * frequently than other parts of your code.
+ * </div>
+ *
+ * You use this behavior by adding `ng-model-options="{ getterSetter: true }"` to an element that
+ * has `ng-model` attached to it. You can also add `ng-model-options="{ getterSetter: true }"` to
+ * a `<form>`, which will enable this behavior for all `<input>`s within it. See
+ * {@link ng.directive:ngModelOptions `ngModelOptions`} for more.
+ *
+ * The following example shows how to use `ngModel` with a getter/setter:
+ *
+ * @example
+ * <example name="ngModel-getter-setter" module="getterSetterExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form name="userForm">
+ <label>Name:
+ <input type="text" name="userName"
+ ng-model="user.name"
+ ng-model-options="{ getterSetter: true }" />
+ </label>
+ </form>
+ <pre>user.name = <span ng-bind="user.name()"></span></pre>
+ </div>
+ </file>
+ <file name="app.js">
+ angular.module('getterSetterExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ var _name = 'Brian';
+ $scope.user = {
+ name: function(newName) {
+ // Note that newName can be undefined for two reasons:
+ // 1. Because it is called as a getter and thus called with no arguments
+ // 2. Because the property should actually be set to undefined. This happens e.g. if the
+ // input is invalid
+ return arguments.length ? (_name = newName) : _name;
+ }
+ };
+ }]);
+ </file>
+ * </example>
+ */
+var ngModelDirective = ['$rootScope', function($rootScope) {
+ return {
+ restrict: 'A',
+ require: ['ngModel', '^?form', '^?ngModelOptions'],
+ controller: NgModelController,
+ // Prelink needs to run before any input directive
+ // so that we can set the NgModelOptions in NgModelController
+ // before anyone else uses it.
+ priority: 1,
+ compile: function ngModelCompile(element) {
+ // Setup initial state of the control
+ element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS);
+
+ return {
+ pre: function ngModelPreLink(scope, element, attr, ctrls) {
+ var modelCtrl = ctrls[0],
+ formCtrl = ctrls[1] || nullFormCtrl;
+
+ modelCtrl.$$setOptions(ctrls[2] && ctrls[2].$options);
+
+ // notify others, especially parent forms
+ formCtrl.$addControl(modelCtrl);
+
+ attr.$observe('name', function(newValue) {
+ if (modelCtrl.$name !== newValue) {
+ formCtrl.$$renameControl(modelCtrl, newValue);
+ }
+ });
+
+ scope.$on('$destroy', function() {
+ formCtrl.$removeControl(modelCtrl);
+ });
+ },
+ post: function ngModelPostLink(scope, element, attr, ctrls) {
+ var modelCtrl = ctrls[0];
+ if (modelCtrl.$options && modelCtrl.$options.updateOn) {
+ element.on(modelCtrl.$options.updateOn, function(ev) {
+ modelCtrl.$$debounceViewValueCommit(ev && ev.type);
+ });
+ }
+
+ element.on('blur', function(ev) {
+ if (modelCtrl.$touched) return;
+
+ if ($rootScope.$$phase) {
+ scope.$evalAsync(modelCtrl.$setTouched);
+ } else {
+ scope.$apply(modelCtrl.$setTouched);
+ }
+ });
+ }
+ };
+ }
+ };
+}];
+
+var DEFAULT_REGEXP = /(\s+|^)default(\s+|$)/;
+
+/**
+ * @ngdoc directive
+ * @name ngModelOptions
+ *
+ * @description
+ * Allows tuning how model updates are done. Using `ngModelOptions` you can specify a custom list of
+ * events that will trigger a model update and/or a debouncing delay so that the actual update only
+ * takes place when a timer expires; this timer will be reset after another change takes place.
+ *
+ * Given the nature of `ngModelOptions`, the value displayed inside input fields in the view might
+ * be different from the value in the actual model. This means that if you update the model you
+ * should also invoke {@link ngModel.NgModelController `$rollbackViewValue`} on the relevant input field in
+ * order to make sure it is synchronized with the model and that any debounced action is canceled.
+ *
+ * The easiest way to reference the control's {@link ngModel.NgModelController `$rollbackViewValue`}
+ * method is by making sure the input is placed inside a form that has a `name` attribute. This is
+ * important because `form` controllers are published to the related scope under the name in their
+ * `name` attribute.
+ *
+ * Any pending changes will take place immediately when an enclosing form is submitted via the
+ * `submit` event. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`
+ * to have access to the updated model.
+ *
+ * `ngModelOptions` has an effect on the element it's declared on and its descendants.
+ *
+ * @param {Object} ngModelOptions options to apply to the current model. Valid keys are:
+ * - `updateOn`: string specifying which event should the input be bound to. You can set several
+ * events using an space delimited list. There is a special event called `default` that
+ * matches the default events belonging of the control.
+ * - `debounce`: integer value which contains the debounce model update value in milliseconds. A
+ * value of 0 triggers an immediate update. If an object is supplied instead, you can specify a
+ * custom value for each event. For example:
+ * `ng-model-options="{ updateOn: 'default blur', debounce: { 'default': 500, 'blur': 0 } }"`
+ * - `allowInvalid`: boolean value which indicates that the model can be set with values that did
+ * not validate correctly instead of the default behavior of setting the model to undefined.
+ * - `getterSetter`: boolean value which determines whether or not to treat functions bound to
+ `ngModel` as getters/setters.
+ * - `timezone`: Defines the timezone to be used to read/write the `Date` instance in the model for
+ * `<input type="date">`, `<input type="time">`, ... . It understands UTC/GMT and the
+ * continental US time zone abbreviations, but for general use, use a time zone offset, for
+ * example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian)
+ * If not specified, the timezone of the browser will be used.
+ *
+ * @example
+
+ The following example shows how to override immediate updates. Changes on the inputs within the
+ form will update the model only when the control loses focus (blur event). If `escape` key is
+ pressed while the input field is focused, the value is reset to the value in the current model.
+
+ <example name="ngModelOptions-directive-blur" module="optionsExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form name="userForm">
+ <label>Name:
+ <input type="text" name="userName"
+ ng-model="user.name"
+ ng-model-options="{ updateOn: 'blur' }"
+ ng-keyup="cancel($event)" />
+ </label><br />
+ <label>Other data:
+ <input type="text" ng-model="user.data" />
+ </label><br />
+ </form>
+ <pre>user.name = <span ng-bind="user.name"></span></pre>
+ </div>
+ </file>
+ <file name="app.js">
+ angular.module('optionsExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.user = { name: 'say', data: '' };
+
+ $scope.cancel = function(e) {
+ if (e.keyCode == 27) {
+ $scope.userForm.userName.$rollbackViewValue();
+ }
+ };
+ }]);
+ </file>
+ <file name="protractor.js" type="protractor">
+ var model = element(by.binding('user.name'));
+ var input = element(by.model('user.name'));
+ var other = element(by.model('user.data'));
+
+ it('should allow custom events', function() {
+ input.sendKeys(' hello');
+ input.click();
+ expect(model.getText()).toEqual('say');
+ other.click();
+ expect(model.getText()).toEqual('say hello');
+ });
+
+ it('should $rollbackViewValue when model changes', function() {
+ input.sendKeys(' hello');
+ expect(input.getAttribute('value')).toEqual('say hello');
+ input.sendKeys(protractor.Key.ESCAPE);
+ expect(input.getAttribute('value')).toEqual('say');
+ other.click();
+ expect(model.getText()).toEqual('say');
+ });
+ </file>
+ </example>
+
+ This one shows how to debounce model changes. Model will be updated only 1 sec after last change.
+ If the `Clear` button is pressed, any debounced action is canceled and the value becomes empty.
+
+ <example name="ngModelOptions-directive-debounce" module="optionsExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form name="userForm">
+ <label>Name:
+ <input type="text" name="userName"
+ ng-model="user.name"
+ ng-model-options="{ debounce: 1000 }" />
+ </label>
+ <button ng-click="userForm.userName.$rollbackViewValue(); user.name=''">Clear</button>
+ <br />
+ </form>
+ <pre>user.name = <span ng-bind="user.name"></span></pre>
+ </div>
+ </file>
+ <file name="app.js">
+ angular.module('optionsExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.user = { name: 'say' };
+ }]);
+ </file>
+ </example>
+
+ This one shows how to bind to getter/setters:
+
+ <example name="ngModelOptions-directive-getter-setter" module="getterSetterExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form name="userForm">
+ <label>Name:
+ <input type="text" name="userName"
+ ng-model="user.name"
+ ng-model-options="{ getterSetter: true }" />
+ </label>
+ </form>
+ <pre>user.name = <span ng-bind="user.name()"></span></pre>
+ </div>
+ </file>
+ <file name="app.js">
+ angular.module('getterSetterExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ var _name = 'Brian';
+ $scope.user = {
+ name: function(newName) {
+ // Note that newName can be undefined for two reasons:
+ // 1. Because it is called as a getter and thus called with no arguments
+ // 2. Because the property should actually be set to undefined. This happens e.g. if the
+ // input is invalid
+ return arguments.length ? (_name = newName) : _name;
+ }
+ };
+ }]);
+ </file>
+ </example>
+ */
+var ngModelOptionsDirective = function() {
+ return {
+ restrict: 'A',
+ controller: ['$scope', '$attrs', function($scope, $attrs) {
+ var that = this;
+ this.$options = copy($scope.$eval($attrs.ngModelOptions));
+ // Allow adding/overriding bound events
+ if (this.$options.updateOn !== undefined) {
+ this.$options.updateOnDefault = false;
+ // extract "default" pseudo-event from list of events that can trigger a model update
+ this.$options.updateOn = trim(this.$options.updateOn.replace(DEFAULT_REGEXP, function() {
+ that.$options.updateOnDefault = true;
+ return ' ';
+ }));
+ } else {
+ this.$options.updateOnDefault = true;
+ }
+ }]
+ };
+};
+
+
+
+// helper methods
+function addSetValidityMethod(context) {
+ var ctrl = context.ctrl,
+ $element = context.$element,
+ classCache = {},
+ set = context.set,
+ unset = context.unset,
+ parentForm = context.parentForm,
+ $animate = context.$animate;
+
+ classCache[INVALID_CLASS] = !(classCache[VALID_CLASS] = $element.hasClass(VALID_CLASS));
+
+ ctrl.$setValidity = setValidity;
+
+ function setValidity(validationErrorKey, state, controller) {
+ if (state === undefined) {
+ createAndSet('$pending', validationErrorKey, controller);
+ } else {
+ unsetAndCleanup('$pending', validationErrorKey, controller);
+ }
+ if (!isBoolean(state)) {
+ unset(ctrl.$error, validationErrorKey, controller);
+ unset(ctrl.$$success, validationErrorKey, controller);
+ } else {
+ if (state) {
+ unset(ctrl.$error, validationErrorKey, controller);
+ set(ctrl.$$success, validationErrorKey, controller);
+ } else {
+ set(ctrl.$error, validationErrorKey, controller);
+ unset(ctrl.$$success, validationErrorKey, controller);
+ }
+ }
+ if (ctrl.$pending) {
+ cachedToggleClass(PENDING_CLASS, true);
+ ctrl.$valid = ctrl.$invalid = undefined;
+ toggleValidationCss('', null);
+ } else {
+ cachedToggleClass(PENDING_CLASS, false);
+ ctrl.$valid = isObjectEmpty(ctrl.$error);
+ ctrl.$invalid = !ctrl.$valid;
+ toggleValidationCss('', ctrl.$valid);
+ }
+
+ // re-read the state as the set/unset methods could have
+ // combined state in ctrl.$error[validationError] (used for forms),
+ // where setting/unsetting only increments/decrements the value,
+ // and does not replace it.
+ var combinedState;
+ if (ctrl.$pending && ctrl.$pending[validationErrorKey]) {
+ combinedState = undefined;
+ } else if (ctrl.$error[validationErrorKey]) {
+ combinedState = false;
+ } else if (ctrl.$$success[validationErrorKey]) {
+ combinedState = true;
+ } else {
+ combinedState = null;
+ }
+
+ toggleValidationCss(validationErrorKey, combinedState);
+ parentForm.$setValidity(validationErrorKey, combinedState, ctrl);
+ }
+
+ function createAndSet(name, value, controller) {
+ if (!ctrl[name]) {
+ ctrl[name] = {};
+ }
+ set(ctrl[name], value, controller);
+ }
+
+ function unsetAndCleanup(name, value, controller) {
+ if (ctrl[name]) {
+ unset(ctrl[name], value, controller);
+ }
+ if (isObjectEmpty(ctrl[name])) {
+ ctrl[name] = undefined;
+ }
+ }
+
+ function cachedToggleClass(className, switchValue) {
+ if (switchValue && !classCache[className]) {
+ $animate.addClass($element, className);
+ classCache[className] = true;
+ } else if (!switchValue && classCache[className]) {
+ $animate.removeClass($element, className);
+ classCache[className] = false;
+ }
+ }
+
+ function toggleValidationCss(validationErrorKey, isValid) {
+ validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';
+
+ cachedToggleClass(VALID_CLASS + validationErrorKey, isValid === true);
+ cachedToggleClass(INVALID_CLASS + validationErrorKey, isValid === false);
+ }
+}
+
+function isObjectEmpty(obj) {
+ if (obj) {
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop)) {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+/**
+ * @ngdoc directive
+ * @name ngNonBindable
+ * @restrict AC
+ * @priority 1000
+ *
+ * @description
+ * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current
+ * DOM element. This is useful if the element contains what appears to be Angular directives and
+ * bindings but which should be ignored by Angular. This could be the case if you have a site that
+ * displays snippets of code, for instance.
+ *
+ * @element ANY
+ *
+ * @example
+ * In this example there are two locations where a simple interpolation binding (`{{}}`) is present,
+ * but the one wrapped in `ngNonBindable` is left alone.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <div>Normal: {{1 + 2}}</div>
+ <div ng-non-bindable>Ignored: {{1 + 2}}</div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-non-bindable', function() {
+ expect(element(by.binding('1 + 2')).getText()).toContain('3');
+ expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/);
+ });
+ </file>
+ </example>
+ */
+var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
+
+/* global jqLiteRemove */
+
+var ngOptionsMinErr = minErr('ngOptions');
+
+/**
+ * @ngdoc directive
+ * @name ngOptions
+ * @restrict A
+ *
+ * @description
+ *
+ * The `ngOptions` attribute can be used to dynamically generate a list of `<option>`
+ * elements for the `<select>` element using the array or object obtained by evaluating the
+ * `ngOptions` comprehension expression.
+ *
+ * In many cases, `ngRepeat` can be used on `<option>` elements instead of `ngOptions` to achieve a
+ * similar result. However, `ngOptions` provides some benefits such as reducing memory and
+ * increasing speed by not creating a new scope for each repeated instance, as well as providing
+ * more flexibility in how the `<select>`'s model is assigned via the `select` **`as`** part of the
+ * comprehension expression. `ngOptions` should be used when the `<select>` model needs to be bound
+ * to a non-string value. This is because an option element can only be bound to string values at
+ * present.
+ *
+ * When an item in the `<select>` menu is selected, the array element or object property
+ * represented by the selected option will be bound to the model identified by the `ngModel`
+ * directive.
+ *
+ * Optionally, a single hard-coded `<option>` element, with the value set to an empty string, can
+ * be nested into the `<select>` element. This element will then represent the `null` or "not selected"
+ * option. See example below for demonstration.
+ *
+ * ## Complex Models (objects or collections)
+ *
+ * **Note:** By default, `ngModel` watches the model by reference, not value. This is important when
+ * binding any input directive to a model that is an object or a collection.
+ *
+ * Since this is a common situation for `ngOptions` the directive additionally watches the model using
+ * `$watchCollection` when the select has the `multiple` attribute or when there is a `track by` clause in
+ * the options expression. This allows ngOptions to trigger a re-rendering of the options even if the actual
+ * object/collection has not changed identity but only a property on the object or an item in the collection
+ * changes.
+ *
+ * Note that `$watchCollection` does a shallow comparison of the properties of the object (or the items in the collection
+ * if the model is an array). This means that changing a property deeper inside the object/collection that the
+ * first level will not trigger a re-rendering.
+ *
+ *
+ * ## `select` **`as`**
+ *
+ * Using `select` **`as`** will bind the result of the `select` expression to the model, but
+ * the value of the `<select>` and `<option>` html elements will be either the index (for array data sources)
+ * or property name (for object data sources) of the value within the collection. If a **`track by`** expression
+ * is used, the result of that expression will be set as the value of the `option` and `select` elements.
+ *
+ *
+ * ### `select` **`as`** and **`track by`**
+ *
+ * <div class="alert alert-warning">
+ * Do not use `select` **`as`** and **`track by`** in the same expression. They are not designed to work together.
+ * </div>
+ *
+ * Consider the following example:
+ *
+ * ```html
+ * <select ng-options="item.subItem as item.label for item in values track by item.id" ng-model="selected"></select>
+ * ```
+ *
+ * ```js
+ * $scope.values = [{
+ * id: 1,
+ * label: 'aLabel',
+ * subItem: { name: 'aSubItem' }
+ * }, {
+ * id: 2,
+ * label: 'bLabel',
+ * subItem: { name: 'bSubItem' }
+ * }];
+ *
+ * $scope.selected = { name: 'aSubItem' };
+ * ```
+ *
+ * With the purpose of preserving the selection, the **`track by`** expression is always applied to the element
+ * of the data source (to `item` in this example). To calculate whether an element is selected, we do the
+ * following:
+ *
+ * 1. Apply **`track by`** to the elements in the array. In the example: `[1, 2]`
+ * 2. Apply **`track by`** to the already selected value in `ngModel`.
+ * In the example: this is not possible as **`track by`** refers to `item.id`, but the selected
+ * value from `ngModel` is `{name: 'aSubItem'}`, so the **`track by`** expression is applied to
+ * a wrong object, the selected element can't be found, `<select>` is always reset to the "not
+ * selected" option.
+ *
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required The control is considered valid only if value is entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {comprehension_expression=} ngOptions in one of the following forms:
+ *
+ * * for array data sources:
+ * * `label` **`for`** `value` **`in`** `array`
+ * * `select` **`as`** `label` **`for`** `value` **`in`** `array`
+ * * `label` **`group by`** `group` **`for`** `value` **`in`** `array`
+ * * `label` **`disable when`** `disable` **`for`** `value` **`in`** `array`
+ * * `label` **`group by`** `group` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`
+ * * `label` **`disable when`** `disable` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`
+ * * `label` **`for`** `value` **`in`** `array` | orderBy:`orderexpr` **`track by`** `trackexpr`
+ * (for including a filter with `track by`)
+ * * for object data sources:
+ * * `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
+ * * `select` **`as`** `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
+ * * `label` **`group by`** `group` **`for (`**`key`**`,`** `value`**`) in`** `object`
+ * * `label` **`disable when`** `disable` **`for (`**`key`**`,`** `value`**`) in`** `object`
+ * * `select` **`as`** `label` **`group by`** `group`
+ * **`for` `(`**`key`**`,`** `value`**`) in`** `object`
+ * * `select` **`as`** `label` **`disable when`** `disable`
+ * **`for` `(`**`key`**`,`** `value`**`) in`** `object`
+ *
+ * Where:
+ *
+ * * `array` / `object`: an expression which evaluates to an array / object to iterate over.
+ * * `value`: local variable which will refer to each item in the `array` or each property value
+ * of `object` during iteration.
+ * * `key`: local variable which will refer to a property name in `object` during iteration.
+ * * `label`: The result of this expression will be the label for `<option>` element. The
+ * `expression` will most likely refer to the `value` variable (e.g. `value.propertyName`).
+ * * `select`: The result of this expression will be bound to the model of the parent `<select>`
+ * element. If not specified, `select` expression will default to `value`.
+ * * `group`: The result of this expression will be used to group options using the `<optgroup>`
+ * DOM element.
+ * * `disable`: The result of this expression will be used to disable the rendered `<option>`
+ * element. Return `true` to disable.
+ * * `trackexpr`: Used when working with an array of objects. The result of this expression will be
+ * used to identify the objects in the array. The `trackexpr` will most likely refer to the
+ * `value` variable (e.g. `value.propertyName`). With this the selection is preserved
+ * even when the options are recreated (e.g. reloaded from the server).
+ *
+ * @example
+ <example module="selectExample">
+ <file name="index.html">
+ <script>
+ angular.module('selectExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.colors = [
+ {name:'black', shade:'dark'},
+ {name:'white', shade:'light', notAnOption: true},
+ {name:'red', shade:'dark'},
+ {name:'blue', shade:'dark', notAnOption: true},
+ {name:'yellow', shade:'light', notAnOption: false}
+ ];
+ $scope.myColor = $scope.colors[2]; // red
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <ul>
+ <li ng-repeat="color in colors">
+ <label>Name: <input ng-model="color.name"></label>
+ <label><input type="checkbox" ng-model="color.notAnOption"> Disabled?</label>
+ <button ng-click="colors.splice($index, 1)" aria-label="Remove">X</button>
+ </li>
+ <li>
+ <button ng-click="colors.push({})">add</button>
+ </li>
+ </ul>
+ <hr/>
+ <label>Color (null not allowed):
+ <select ng-model="myColor" ng-options="color.name for color in colors"></select>
+ </label><br/>
+ <label>Color (null allowed):
+ <span class="nullable">
+ <select ng-model="myColor" ng-options="color.name for color in colors">
+ <option value="">-- choose color --</option>
+ </select>
+ </span></label><br/>
+
+ <label>Color grouped by shade:
+ <select ng-model="myColor" ng-options="color.name group by color.shade for color in colors">
+ </select>
+ </label><br/>
+
+ <label>Color grouped by shade, with some disabled:
+ <select ng-model="myColor"
+ ng-options="color.name group by color.shade disable when color.notAnOption for color in colors">
+ </select>
+ </label><br/>
+
+
+
+ Select <button ng-click="myColor = { name:'not in list', shade: 'other' }">bogus</button>.
+ <br/>
+ <hr/>
+ Currently selected: {{ {selected_color:myColor} }}
+ <div style="border:solid 1px black; height:20px"
+ ng-style="{'background-color':myColor.name}">
+ </div>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-options', function() {
+ expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');
+ element.all(by.model('myColor')).first().click();
+ element.all(by.css('select[ng-model="myColor"] option')).first().click();
+ expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');
+ element(by.css('.nullable select[ng-model="myColor"]')).click();
+ element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click();
+ expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');
+ });
+ </file>
+ </example>
+ */
+
+// jshint maxlen: false
+// //00001111111111000000000002222222222000000000000000000000333333333300000000000000000000000004444444444400000000000005555555555555550000000006666666666666660000000777777777777777000000000000000888888888800000000000000000009999999999
+var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/;
+ // 1: value expression (valueFn)
+ // 2: label expression (displayFn)
+ // 3: group by expression (groupByFn)
+ // 4: disable when expression (disableWhenFn)
+ // 5: array item variable name
+ // 6: object item key variable name
+ // 7: object item value variable name
+ // 8: collection expression
+ // 9: track by expression
+// jshint maxlen: 100
+
+
+var ngOptionsDirective = ['$compile', '$parse', function($compile, $parse) {
+
+ function parseOptionsExpression(optionsExp, selectElement, scope) {
+
+ var match = optionsExp.match(NG_OPTIONS_REGEXP);
+ if (!(match)) {
+ throw ngOptionsMinErr('iexp',
+ "Expected expression in form of " +
+ "'_select_ (as _label_)? for (_key_,)?_value_ in _collection_'" +
+ " but got '{0}'. Element: {1}",
+ optionsExp, startingTag(selectElement));
+ }
+
+ // Extract the parts from the ngOptions expression
+
+ // The variable name for the value of the item in the collection
+ var valueName = match[5] || match[7];
+ // The variable name for the key of the item in the collection
+ var keyName = match[6];
+
+ // An expression that generates the viewValue for an option if there is a label expression
+ var selectAs = / as /.test(match[0]) && match[1];
+ // An expression that is used to track the id of each object in the options collection
+ var trackBy = match[9];
+ // An expression that generates the viewValue for an option if there is no label expression
+ var valueFn = $parse(match[2] ? match[1] : valueName);
+ var selectAsFn = selectAs && $parse(selectAs);
+ var viewValueFn = selectAsFn || valueFn;
+ var trackByFn = trackBy && $parse(trackBy);
+
+ // Get the value by which we are going to track the option
+ // if we have a trackFn then use that (passing scope and locals)
+ // otherwise just hash the given viewValue
+ var getTrackByValueFn = trackBy ?
+ function(value, locals) { return trackByFn(scope, locals); } :
+ function getHashOfValue(value) { return hashKey(value); };
+ var getTrackByValue = function(value, key) {
+ return getTrackByValueFn(value, getLocals(value, key));
+ };
+
+ var displayFn = $parse(match[2] || match[1]);
+ var groupByFn = $parse(match[3] || '');
+ var disableWhenFn = $parse(match[4] || '');
+ var valuesFn = $parse(match[8]);
+
+ var locals = {};
+ var getLocals = keyName ? function(value, key) {
+ locals[keyName] = key;
+ locals[valueName] = value;
+ return locals;
+ } : function(value) {
+ locals[valueName] = value;
+ return locals;
+ };
+
+
+ function Option(selectValue, viewValue, label, group, disabled) {
+ this.selectValue = selectValue;
+ this.viewValue = viewValue;
+ this.label = label;
+ this.group = group;
+ this.disabled = disabled;
+ }
+
+ function getOptionValuesKeys(optionValues) {
+ var optionValuesKeys;
+
+ if (!keyName && isArrayLike(optionValues)) {
+ optionValuesKeys = optionValues;
+ } else {
+ // if object, extract keys, in enumeration order, unsorted
+ optionValuesKeys = [];
+ for (var itemKey in optionValues) {
+ if (optionValues.hasOwnProperty(itemKey) && itemKey.charAt(0) !== '$') {
+ optionValuesKeys.push(itemKey);
+ }
+ }
+ }
+ return optionValuesKeys;
+ }
+
+ return {
+ trackBy: trackBy,
+ getTrackByValue: getTrackByValue,
+ getWatchables: $parse(valuesFn, function(optionValues) {
+ // Create a collection of things that we would like to watch (watchedArray)
+ // so that they can all be watched using a single $watchCollection
+ // that only runs the handler once if anything changes
+ var watchedArray = [];
+ optionValues = optionValues || [];
+
+ var optionValuesKeys = getOptionValuesKeys(optionValues);
+ var optionValuesLength = optionValuesKeys.length;
+ for (var index = 0; index < optionValuesLength; index++) {
+ var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index];
+ var value = optionValues[key];
+
+ var locals = getLocals(optionValues[key], key);
+ var selectValue = getTrackByValueFn(optionValues[key], locals);
+ watchedArray.push(selectValue);
+
+ // Only need to watch the displayFn if there is a specific label expression
+ if (match[2] || match[1]) {
+ var label = displayFn(scope, locals);
+ watchedArray.push(label);
+ }
+
+ // Only need to watch the disableWhenFn if there is a specific disable expression
+ if (match[4]) {
+ var disableWhen = disableWhenFn(scope, locals);
+ watchedArray.push(disableWhen);
+ }
+ }
+ return watchedArray;
+ }),
+
+ getOptions: function() {
+
+ var optionItems = [];
+ var selectValueMap = {};
+
+ // The option values were already computed in the `getWatchables` fn,
+ // which must have been called to trigger `getOptions`
+ var optionValues = valuesFn(scope) || [];
+ var optionValuesKeys = getOptionValuesKeys(optionValues);
+ var optionValuesLength = optionValuesKeys.length;
+
+ for (var index = 0; index < optionValuesLength; index++) {
+ var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index];
+ var value = optionValues[key];
+ var locals = getLocals(value, key);
+ var viewValue = viewValueFn(scope, locals);
+ var selectValue = getTrackByValueFn(viewValue, locals);
+ var label = displayFn(scope, locals);
+ var group = groupByFn(scope, locals);
+ var disabled = disableWhenFn(scope, locals);
+ var optionItem = new Option(selectValue, viewValue, label, group, disabled);
+
+ optionItems.push(optionItem);
+ selectValueMap[selectValue] = optionItem;
+ }
+
+ return {
+ items: optionItems,
+ selectValueMap: selectValueMap,
+ getOptionFromViewValue: function(value) {
+ return selectValueMap[getTrackByValue(value)];
+ },
+ getViewValueFromOption: function(option) {
+ // If the viewValue could be an object that may be mutated by the application,
+ // we need to make a copy and not return the reference to the value on the option.
+ return trackBy ? angular.copy(option.viewValue) : option.viewValue;
+ }
+ };
+ }
+ };
+ }
+
+
+ // we can't just jqLite('<option>') since jqLite is not smart enough
+ // to create it in <select> and IE barfs otherwise.
+ var optionTemplate = document.createElement('option'),
+ optGroupTemplate = document.createElement('optgroup');
+
+ return {
+ restrict: 'A',
+ terminal: true,
+ require: ['select', '?ngModel'],
+ link: function(scope, selectElement, attr, ctrls) {
+
+ // if ngModel is not defined, we don't need to do anything
+ var ngModelCtrl = ctrls[1];
+ if (!ngModelCtrl) return;
+
+ var selectCtrl = ctrls[0];
+ var multiple = attr.multiple;
+
+ // The emptyOption allows the application developer to provide their own custom "empty"
+ // option when the viewValue does not match any of the option values.
+ var emptyOption;
+ for (var i = 0, children = selectElement.children(), ii = children.length; i < ii; i++) {
+ if (children[i].value === '') {
+ emptyOption = children.eq(i);
+ break;
+ }
+ }
+
+ var providedEmptyOption = !!emptyOption;
+
+ var unknownOption = jqLite(optionTemplate.cloneNode(false));
+ unknownOption.val('?');
+
+ var options;
+ var ngOptions = parseOptionsExpression(attr.ngOptions, selectElement, scope);
+
+
+ var renderEmptyOption = function() {
+ if (!providedEmptyOption) {
+ selectElement.prepend(emptyOption);
+ }
+ selectElement.val('');
+ emptyOption.prop('selected', true); // needed for IE
+ emptyOption.attr('selected', true);
+ };
+
+ var removeEmptyOption = function() {
+ if (!providedEmptyOption) {
+ emptyOption.remove();
+ }
+ };
+
+
+ var renderUnknownOption = function() {
+ selectElement.prepend(unknownOption);
+ selectElement.val('?');
+ unknownOption.prop('selected', true); // needed for IE
+ unknownOption.attr('selected', true);
+ };
+
+ var removeUnknownOption = function() {
+ unknownOption.remove();
+ };
+
+
+ // Update the controller methods for multiple selectable options
+ if (!multiple) {
+
+ selectCtrl.writeValue = function writeNgOptionsValue(value) {
+ var option = options.getOptionFromViewValue(value);
+
+ if (option && !option.disabled) {
+ if (selectElement[0].value !== option.selectValue) {
+ removeUnknownOption();
+ removeEmptyOption();
+
+ selectElement[0].value = option.selectValue;
+ option.element.selected = true;
+ option.element.setAttribute('selected', 'selected');
+ }
+ } else {
+ if (value === null || providedEmptyOption) {
+ removeUnknownOption();
+ renderEmptyOption();
+ } else {
+ removeEmptyOption();
+ renderUnknownOption();
+ }
+ }
+ };
+
+ selectCtrl.readValue = function readNgOptionsValue() {
+
+ var selectedOption = options.selectValueMap[selectElement.val()];
+
+ if (selectedOption && !selectedOption.disabled) {
+ removeEmptyOption();
+ removeUnknownOption();
+ return options.getViewValueFromOption(selectedOption);
+ }
+ return null;
+ };
+
+ // If we are using `track by` then we must watch the tracked value on the model
+ // since ngModel only watches for object identity change
+ if (ngOptions.trackBy) {
+ scope.$watch(
+ function() { return ngOptions.getTrackByValue(ngModelCtrl.$viewValue); },
+ function() { ngModelCtrl.$render(); }
+ );
+ }
+
+ } else {
+
+ ngModelCtrl.$isEmpty = function(value) {
+ return !value || value.length === 0;
+ };
+
+
+ selectCtrl.writeValue = function writeNgOptionsMultiple(value) {
+ options.items.forEach(function(option) {
+ option.element.selected = false;
+ });
+
+ if (value) {
+ value.forEach(function(item) {
+ var option = options.getOptionFromViewValue(item);
+ if (option && !option.disabled) option.element.selected = true;
+ });
+ }
+ };
+
+
+ selectCtrl.readValue = function readNgOptionsMultiple() {
+ var selectedValues = selectElement.val() || [],
+ selections = [];
+
+ forEach(selectedValues, function(value) {
+ var option = options.selectValueMap[value];
+ if (option && !option.disabled) selections.push(options.getViewValueFromOption(option));
+ });
+
+ return selections;
+ };
+
+ // If we are using `track by` then we must watch these tracked values on the model
+ // since ngModel only watches for object identity change
+ if (ngOptions.trackBy) {
+
+ scope.$watchCollection(function() {
+ if (isArray(ngModelCtrl.$viewValue)) {
+ return ngModelCtrl.$viewValue.map(function(value) {
+ return ngOptions.getTrackByValue(value);
+ });
+ }
+ }, function() {
+ ngModelCtrl.$render();
+ });
+
+ }
+ }
+
+
+ if (providedEmptyOption) {
+
+ // we need to remove it before calling selectElement.empty() because otherwise IE will
+ // remove the label from the element. wtf?
+ emptyOption.remove();
+
+ // compile the element since there might be bindings in it
+ $compile(emptyOption)(scope);
+
+ // remove the class, which is added automatically because we recompile the element and it
+ // becomes the compilation root
+ emptyOption.removeClass('ng-scope');
+ } else {
+ emptyOption = jqLite(optionTemplate.cloneNode(false));
+ }
+
+ // We need to do this here to ensure that the options object is defined
+ // when we first hit it in writeNgOptionsValue
+ updateOptions();
+
+ // We will re-render the option elements if the option values or labels change
+ scope.$watchCollection(ngOptions.getWatchables, updateOptions);
+
+ // ------------------------------------------------------------------ //
+
+
+ function updateOptionElement(option, element) {
+ option.element = element;
+ element.disabled = option.disabled;
+ if (option.value !== element.value) element.value = option.selectValue;
+ if (option.label !== element.label) {
+ element.label = option.label;
+ element.textContent = option.label;
+ }
+ }
+
+ function addOrReuseElement(parent, current, type, templateElement) {
+ var element;
+ // Check whether we can reuse the next element
+ if (current && lowercase(current.nodeName) === type) {
+ // The next element is the right type so reuse it
+ element = current;
+ } else {
+ // The next element is not the right type so create a new one
+ element = templateElement.cloneNode(false);
+ if (!current) {
+ // There are no more elements so just append it to the select
+ parent.appendChild(element);
+ } else {
+ // The next element is not a group so insert the new one
+ parent.insertBefore(element, current);
+ }
+ }
+ return element;
+ }
+
+
+ function removeExcessElements(current) {
+ var next;
+ while (current) {
+ next = current.nextSibling;
+ jqLiteRemove(current);
+ current = next;
+ }
+ }
+
+
+ function skipEmptyAndUnknownOptions(current) {
+ var emptyOption_ = emptyOption && emptyOption[0];
+ var unknownOption_ = unknownOption && unknownOption[0];
+
+ if (emptyOption_ || unknownOption_) {
+ while (current &&
+ (current === emptyOption_ ||
+ current === unknownOption_)) {
+ current = current.nextSibling;
+ }
+ }
+ return current;
+ }
+
+
+ function updateOptions() {
+
+ var previousValue = options && selectCtrl.readValue();
+
+ options = ngOptions.getOptions();
+
+ var groupMap = {};
+ var currentElement = selectElement[0].firstChild;
+
+ // Ensure that the empty option is always there if it was explicitly provided
+ if (providedEmptyOption) {
+ selectElement.prepend(emptyOption);
+ }
+
+ currentElement = skipEmptyAndUnknownOptions(currentElement);
+
+ options.items.forEach(function updateOption(option) {
+ var group;
+ var groupElement;
+ var optionElement;
+
+ if (option.group) {
+
+ // This option is to live in a group
+ // See if we have already created this group
+ group = groupMap[option.group];
+
+ if (!group) {
+
+ // We have not already created this group
+ groupElement = addOrReuseElement(selectElement[0],
+ currentElement,
+ 'optgroup',
+ optGroupTemplate);
+ // Move to the next element
+ currentElement = groupElement.nextSibling;
+
+ // Update the label on the group element
+ groupElement.label = option.group;
+
+ // Store it for use later
+ group = groupMap[option.group] = {
+ groupElement: groupElement,
+ currentOptionElement: groupElement.firstChild
+ };
+
+ }
+
+ // So now we have a group for this option we add the option to the group
+ optionElement = addOrReuseElement(group.groupElement,
+ group.currentOptionElement,
+ 'option',
+ optionTemplate);
+ updateOptionElement(option, optionElement);
+ // Move to the next element
+ group.currentOptionElement = optionElement.nextSibling;
+
+ } else {
+
+ // This option is not in a group
+ optionElement = addOrReuseElement(selectElement[0],
+ currentElement,
+ 'option',
+ optionTemplate);
+ updateOptionElement(option, optionElement);
+ // Move to the next element
+ currentElement = optionElement.nextSibling;
+ }
+ });
+
+
+ // Now remove all excess options and group
+ Object.keys(groupMap).forEach(function(key) {
+ removeExcessElements(groupMap[key].currentOptionElement);
+ });
+ removeExcessElements(currentElement);
+
+ ngModelCtrl.$render();
+
+ // Check to see if the value has changed due to the update to the options
+ if (!ngModelCtrl.$isEmpty(previousValue)) {
+ var nextValue = selectCtrl.readValue();
+ if (ngOptions.trackBy ? !equals(previousValue, nextValue) : previousValue !== nextValue) {
+ ngModelCtrl.$setViewValue(nextValue);
+ ngModelCtrl.$render();
+ }
+ }
+
+ }
+
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngPluralize
+ * @restrict EA
+ *
+ * @description
+ * `ngPluralize` is a directive that displays messages according to en-US localization rules.
+ * These rules are bundled with angular.js, but can be overridden
+ * (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive
+ * by specifying the mappings between
+ * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
+ * and the strings to be displayed.
+ *
+ * # Plural categories and explicit number rules
+ * There are two
+ * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
+ * in Angular's default en-US locale: "one" and "other".
+ *
+ * While a plural category may match many numbers (for example, in en-US locale, "other" can match
+ * any number that is not 1), an explicit number rule can only match one number. For example, the
+ * explicit number rule for "3" matches the number 3. There are examples of plural categories
+ * and explicit number rules throughout the rest of this documentation.
+ *
+ * # Configuring ngPluralize
+ * You configure ngPluralize by providing 2 attributes: `count` and `when`.
+ * You can also provide an optional attribute, `offset`.
+ *
+ * The value of the `count` attribute can be either a string or an {@link guide/expression
+ * Angular expression}; these are evaluated on the current scope for its bound value.
+ *
+ * The `when` attribute specifies the mappings between plural categories and the actual
+ * string to be displayed. The value of the attribute should be a JSON object.
+ *
+ * The following example shows how to configure ngPluralize:
+ *
+ * ```html
+ * <ng-pluralize count="personCount"
+ when="{'0': 'Nobody is viewing.',
+ * 'one': '1 person is viewing.',
+ * 'other': '{} people are viewing.'}">
+ * </ng-pluralize>
+ *```
+ *
+ * In the example, `"0: Nobody is viewing."` is an explicit number rule. If you did not
+ * specify this rule, 0 would be matched to the "other" category and "0 people are viewing"
+ * would be shown instead of "Nobody is viewing". You can specify an explicit number rule for
+ * other numbers, for example 12, so that instead of showing "12 people are viewing", you can
+ * show "a dozen people are viewing".
+ *
+ * You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted
+ * into pluralized strings. In the previous example, Angular will replace `{}` with
+ * <span ng-non-bindable>`{{personCount}}`</span>. The closed braces `{}` is a placeholder
+ * for <span ng-non-bindable>{{numberExpression}}</span>.
+ *
+ * If no rule is defined for a category, then an empty string is displayed and a warning is generated.
+ * Note that some locales define more categories than `one` and `other`. For example, fr-fr defines `few` and `many`.
+ *
+ * # Configuring ngPluralize with offset
+ * The `offset` attribute allows further customization of pluralized text, which can result in
+ * a better user experience. For example, instead of the message "4 people are viewing this document",
+ * you might display "John, Kate and 2 others are viewing this document".
+ * The offset attribute allows you to offset a number by any desired value.
+ * Let's take a look at an example:
+ *
+ * ```html
+ * <ng-pluralize count="personCount" offset=2
+ * when="{'0': 'Nobody is viewing.',
+ * '1': '{{person1}} is viewing.',
+ * '2': '{{person1}} and {{person2}} are viewing.',
+ * 'one': '{{person1}}, {{person2}} and one other person are viewing.',
+ * 'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
+ * </ng-pluralize>
+ * ```
+ *
+ * Notice that we are still using two plural categories(one, other), but we added
+ * three explicit number rules 0, 1 and 2.
+ * When one person, perhaps John, views the document, "John is viewing" will be shown.
+ * When three people view the document, no explicit number rule is found, so
+ * an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category.
+ * In this case, plural category 'one' is matched and "John, Mary and one other person are viewing"
+ * is shown.
+ *
+ * Note that when you specify offsets, you must provide explicit number rules for
+ * numbers from 0 up to and including the offset. If you use an offset of 3, for example,
+ * you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for
+ * plural categories "one" and "other".
+ *
+ * @param {string|expression} count The variable to be bound to.
+ * @param {string} when The mapping between plural category to its corresponding strings.
+ * @param {number=} offset Offset to deduct from the total number.
+ *
+ * @example
+ <example module="pluralizeExample">
+ <file name="index.html">
+ <script>
+ angular.module('pluralizeExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.person1 = 'Igor';
+ $scope.person2 = 'Misko';
+ $scope.personCount = 1;
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>Person 1:<input type="text" ng-model="person1" value="Igor" /></label><br/>
+ <label>Person 2:<input type="text" ng-model="person2" value="Misko" /></label><br/>
+ <label>Number of People:<input type="text" ng-model="personCount" value="1" /></label><br/>
+
+ <!--- Example with simple pluralization rules for en locale --->
+ Without Offset:
+ <ng-pluralize count="personCount"
+ when="{'0': 'Nobody is viewing.',
+ 'one': '1 person is viewing.',
+ 'other': '{} people are viewing.'}">
+ </ng-pluralize><br>
+
+ <!--- Example with offset --->
+ With Offset(2):
+ <ng-pluralize count="personCount" offset=2
+ when="{'0': 'Nobody is viewing.',
+ '1': '{{person1}} is viewing.',
+ '2': '{{person1}} and {{person2}} are viewing.',
+ 'one': '{{person1}}, {{person2}} and one other person are viewing.',
+ 'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
+ </ng-pluralize>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should show correct pluralized string', function() {
+ var withoutOffset = element.all(by.css('ng-pluralize')).get(0);
+ var withOffset = element.all(by.css('ng-pluralize')).get(1);
+ var countInput = element(by.model('personCount'));
+
+ expect(withoutOffset.getText()).toEqual('1 person is viewing.');
+ expect(withOffset.getText()).toEqual('Igor is viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('0');
+
+ expect(withoutOffset.getText()).toEqual('Nobody is viewing.');
+ expect(withOffset.getText()).toEqual('Nobody is viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('2');
+
+ expect(withoutOffset.getText()).toEqual('2 people are viewing.');
+ expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('3');
+
+ expect(withoutOffset.getText()).toEqual('3 people are viewing.');
+ expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('4');
+
+ expect(withoutOffset.getText()).toEqual('4 people are viewing.');
+ expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');
+ });
+ it('should show data-bound names', function() {
+ var withOffset = element.all(by.css('ng-pluralize')).get(1);
+ var personCount = element(by.model('personCount'));
+ var person1 = element(by.model('person1'));
+ var person2 = element(by.model('person2'));
+ personCount.clear();
+ personCount.sendKeys('4');
+ person1.clear();
+ person1.sendKeys('Di');
+ person2.clear();
+ person2.sendKeys('Vojta');
+ expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');
+ });
+ </file>
+ </example>
+ */
+var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, $interpolate, $log) {
+ var BRACE = /{}/g,
+ IS_WHEN = /^when(Minus)?(.+)$/;
+
+ return {
+ link: function(scope, element, attr) {
+ var numberExp = attr.count,
+ whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs
+ offset = attr.offset || 0,
+ whens = scope.$eval(whenExp) || {},
+ whensExpFns = {},
+ startSymbol = $interpolate.startSymbol(),
+ endSymbol = $interpolate.endSymbol(),
+ braceReplacement = startSymbol + numberExp + '-' + offset + endSymbol,
+ watchRemover = angular.noop,
+ lastCount;
+
+ forEach(attr, function(expression, attributeName) {
+ var tmpMatch = IS_WHEN.exec(attributeName);
+ if (tmpMatch) {
+ var whenKey = (tmpMatch[1] ? '-' : '') + lowercase(tmpMatch[2]);
+ whens[whenKey] = element.attr(attr.$attr[attributeName]);
+ }
+ });
+ forEach(whens, function(expression, key) {
+ whensExpFns[key] = $interpolate(expression.replace(BRACE, braceReplacement));
+
+ });
+
+ scope.$watch(numberExp, function ngPluralizeWatchAction(newVal) {
+ var count = parseFloat(newVal);
+ var countIsNaN = isNaN(count);
+
+ if (!countIsNaN && !(count in whens)) {
+ // If an explicit number rule such as 1, 2, 3... is defined, just use it.
+ // Otherwise, check it against pluralization rules in $locale service.
+ count = $locale.pluralCat(count - offset);
+ }
+
+ // If both `count` and `lastCount` are NaN, we don't need to re-register a watch.
+ // In JS `NaN !== NaN`, so we have to exlicitly check.
+ if ((count !== lastCount) && !(countIsNaN && isNumber(lastCount) && isNaN(lastCount))) {
+ watchRemover();
+ var whenExpFn = whensExpFns[count];
+ if (isUndefined(whenExpFn)) {
+ if (newVal != null) {
+ $log.debug("ngPluralize: no rule defined for '" + count + "' in " + whenExp);
+ }
+ watchRemover = noop;
+ updateElementText();
+ } else {
+ watchRemover = scope.$watch(whenExpFn, updateElementText);
+ }
+ lastCount = count;
+ }
+ });
+
+ function updateElementText(newText) {
+ element.text(newText || '');
+ }
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngRepeat
+ * @multiElement
+ *
+ * @description
+ * The `ngRepeat` directive instantiates a template once per item from a collection. Each template
+ * instance gets its own scope, where the given loop variable is set to the current collection item,
+ * and `$index` is set to the item index or key.
+ *
+ * Special properties are exposed on the local scope of each template instance, including:
+ *
+ * | Variable | Type | Details |
+ * |-----------|-----------------|-----------------------------------------------------------------------------|
+ * | `$index` | {@type number} | iterator offset of the repeated element (0..length-1) |
+ * | `$first` | {@type boolean} | true if the repeated element is first in the iterator. |
+ * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. |
+ * | `$last` | {@type boolean} | true if the repeated element is last in the iterator. |
+ * | `$even` | {@type boolean} | true if the iterator position `$index` is even (otherwise false). |
+ * | `$odd` | {@type boolean} | true if the iterator position `$index` is odd (otherwise false). |
+ *
+ * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.
+ * This may be useful when, for instance, nesting ngRepeats.
+ *
+ *
+ * # Iterating over object properties
+ *
+ * It is possible to get `ngRepeat` to iterate over the properties of an object using the following
+ * syntax:
+ *
+ * ```js
+ * <div ng-repeat="(key, value) in myObj"> ... </div>
+ * ```
+ *
+ * You need to be aware that the JavaScript specification does not define the order of keys
+ * returned for an object. (To mitigate this in Angular 1.3 the `ngRepeat` directive
+ * used to sort the keys alphabetically.)
+ *
+ * Version 1.4 removed the alphabetic sorting. We now rely on the order returned by the browser
+ * when running `for key in myObj`. It seems that browsers generally follow the strategy of providing
+ * keys in the order in which they were defined, although there are exceptions when keys are deleted
+ * and reinstated. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_issues
+ *
+ * If this is not desired, the recommended workaround is to convert your object into an array
+ * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could
+ * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)
+ * or implement a `$watch` on the object yourself.
+ *
+ *
+ * # Tracking and Duplicates
+ *
+ * When the contents of the collection change, `ngRepeat` makes the corresponding changes to the DOM:
+ *
+ * * When an item is added, a new instance of the template is added to the DOM.
+ * * When an item is removed, its template instance is removed from the DOM.
+ * * When items are reordered, their respective templates are reordered in the DOM.
+ *
+ * By default, `ngRepeat` does not allow duplicate items in arrays. This is because when
+ * there are duplicates, it is not possible to maintain a one-to-one mapping between collection
+ * items and DOM elements.
+ *
+ * If you do need to repeat duplicate items, you can substitute the default tracking behavior
+ * with your own using the `track by` expression.
+ *
+ * For example, you may track items by the index of each item in the collection, using the
+ * special scope property `$index`:
+ * ```html
+ * <div ng-repeat="n in [42, 42, 43, 43] track by $index">
+ * {{n}}
+ * </div>
+ * ```
+ *
+ * You may use arbitrary expressions in `track by`, including references to custom functions
+ * on the scope:
+ * ```html
+ * <div ng-repeat="n in [42, 42, 43, 43] track by myTrackingFunction(n)">
+ * {{n}}
+ * </div>
+ * ```
+ *
+ * If you are working with objects that have an identifier property, you can track
+ * by the identifier instead of the whole object. Should you reload your data later, `ngRepeat`
+ * will not have to rebuild the DOM elements for items it has already rendered, even if the
+ * JavaScript objects in the collection have been substituted for new ones:
+ * ```html
+ * <div ng-repeat="model in collection track by model.id">
+ * {{model.name}}
+ * </div>
+ * ```
+ *
+ * When no `track by` expression is provided, it is equivalent to tracking by the built-in
+ * `$id` function, which tracks items by their identity:
+ * ```html
+ * <div ng-repeat="obj in collection track by $id(obj)">
+ * {{obj.prop}}
+ * </div>
+ * ```
+ *
+ * <div class="alert alert-warning">
+ * **Note:** `track by` must always be the last expression:
+ * </div>
+ * ```
+ * <div ng-repeat="model in collection | orderBy: 'id' as filtered_result track by model.id">
+ * {{model.name}}
+ * </div>
+ * ```
+ *
+ * # Special repeat start and end points
+ * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
+ * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
+ * The **ng-repeat-start** directive works the same as **ng-repeat**, but will repeat all the HTML code (including the tag it's defined on)
+ * up to and including the ending HTML tag where **ng-repeat-end** is placed.
+ *
+ * The example below makes use of this feature:
+ * ```html
+ * <header ng-repeat-start="item in items">
+ * Header {{ item }}
+ * </header>
+ * <div class="body">
+ * Body {{ item }}
+ * </div>
+ * <footer ng-repeat-end>
+ * Footer {{ item }}
+ * </footer>
+ * ```
+ *
+ * And with an input of {@type ['A','B']} for the items variable in the example above, the output will evaluate to:
+ * ```html
+ * <header>
+ * Header A
+ * </header>
+ * <div class="body">
+ * Body A
+ * </div>
+ * <footer>
+ * Footer A
+ * </footer>
+ * <header>
+ * Header B
+ * </header>
+ * <div class="body">
+ * Body B
+ * </div>
+ * <footer>
+ * Footer B
+ * </footer>
+ * ```
+ *
+ * The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such
+ * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**).
+ *
+ * @animations
+ * **.enter** - when a new item is added to the list or when an item is revealed after a filter
+ *
+ * **.leave** - when an item is removed from the list or when an item is filtered out
+ *
+ * **.move** - when an adjacent item is filtered out causing a reorder or when the item contents are reordered
+ *
+ * @element ANY
+ * @scope
+ * @priority 1000
+ * @param {repeat_expression} ngRepeat The expression indicating how to enumerate a collection. These
+ * formats are currently supported:
+ *
+ * * `variable in expression` – where variable is the user defined loop variable and `expression`
+ * is a scope expression giving the collection to enumerate.
+ *
+ * For example: `album in artist.albums`.
+ *
+ * * `(key, value) in expression` – where `key` and `value` can be any user defined identifiers,
+ * and `expression` is the scope expression giving the collection to enumerate.
+ *
+ * For example: `(name, age) in {'adam':10, 'amalie':12}`.
+ *
+ * * `variable in expression track by tracking_expression` – You can also provide an optional tracking expression
+ * which can be used to associate the objects in the collection with the DOM elements. If no tracking expression
+ * is specified, ng-repeat associates elements by identity. It is an error to have
+ * more than one tracking expression value resolve to the same key. (This would mean that two distinct objects are
+ * mapped to the same DOM element, which is not possible.)
+ *
+ * Note that the tracking expression must come last, after any filters, and the alias expression.
+ *
+ * For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements
+ * will be associated by item identity in the array.
+ *
+ * For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique
+ * `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements
+ * with the corresponding item in the array by identity. Moving the same object in array would move the DOM
+ * element in the same way in the DOM.
+ *
+ * For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this
+ * case the object identity does not matter. Two objects are considered equivalent as long as their `id`
+ * property is same.
+ *
+ * For example: `item in items | filter:searchText track by item.id` is a pattern that might be used to apply a filter
+ * to items in conjunction with a tracking expression.
+ *
+ * * `variable in expression as alias_expression` – You can also provide an optional alias expression which will then store the
+ * intermediate results of the repeater after the filters have been applied. Typically this is used to render a special message
+ * when a filter is active on the repeater, but the filtered result set is empty.
+ *
+ * For example: `item in items | filter:x as results` will store the fragment of the repeated items as `results`, but only after
+ * the items have been processed through the filter.
+ *
+ * Please note that `as [variable name] is not an operator but rather a part of ngRepeat micro-syntax so it can be used only at the end
+ * (and not as operator, inside an expression).
+ *
+ * For example: `item in items | filter : x | orderBy : order | limitTo : limit as results` .
+ *
+ * @example
+ * This example initializes the scope to a list of names and
+ * then uses `ngRepeat` to display every person:
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <div ng-init="friends = [
+ {name:'John', age:25, gender:'boy'},
+ {name:'Jessie', age:30, gender:'girl'},
+ {name:'Johanna', age:28, gender:'girl'},
+ {name:'Joy', age:15, gender:'girl'},
+ {name:'Mary', age:28, gender:'girl'},
+ {name:'Peter', age:95, gender:'boy'},
+ {name:'Sebastian', age:50, gender:'boy'},
+ {name:'Erika', age:27, gender:'girl'},
+ {name:'Patrick', age:40, gender:'boy'},
+ {name:'Samantha', age:60, gender:'girl'}
+ ]">
+ I have {{friends.length}} friends. They are:
+ <input type="search" ng-model="q" placeholder="filter friends..." aria-label="filter friends" />
+ <ul class="example-animate-container">
+ <li class="animate-repeat" ng-repeat="friend in friends | filter:q as results">
+ [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
+ </li>
+ <li class="animate-repeat" ng-if="results.length == 0">
+ <strong>No results found...</strong>
+ </li>
+ </ul>
+ </div>
+ </file>
+ <file name="animations.css">
+ .example-animate-container {
+ background:white;
+ border:1px solid black;
+ list-style:none;
+ margin:0;
+ padding:0 10px;
+ }
+
+ .animate-repeat {
+ line-height:40px;
+ list-style:none;
+ box-sizing:border-box;
+ }
+
+ .animate-repeat.ng-move,
+ .animate-repeat.ng-enter,
+ .animate-repeat.ng-leave {
+ -webkit-transition:all linear 0.5s;
+ transition:all linear 0.5s;
+ }
+
+ .animate-repeat.ng-leave.ng-leave-active,
+ .animate-repeat.ng-move,
+ .animate-repeat.ng-enter {
+ opacity:0;
+ max-height:0;
+ }
+
+ .animate-repeat.ng-leave,
+ .animate-repeat.ng-move.ng-move-active,
+ .animate-repeat.ng-enter.ng-enter-active {
+ opacity:1;
+ max-height:40px;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var friends = element.all(by.repeater('friend in friends'));
+
+ it('should render initial data set', function() {
+ expect(friends.count()).toBe(10);
+ expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');
+ expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');
+ expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');
+ expect(element(by.binding('friends.length')).getText())
+ .toMatch("I have 10 friends. They are:");
+ });
+
+ it('should update repeater when filter predicate changes', function() {
+ expect(friends.count()).toBe(10);
+
+ element(by.model('q')).sendKeys('ma');
+
+ expect(friends.count()).toBe(2);
+ expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');
+ expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');
+ });
+ </file>
+ </example>
+ */
+var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
+ var NG_REMOVED = '$$NG_REMOVED';
+ var ngRepeatMinErr = minErr('ngRepeat');
+
+ var updateScope = function(scope, index, valueIdentifier, value, keyIdentifier, key, arrayLength) {
+ // TODO(perf): generate setters to shave off ~40ms or 1-1.5%
+ scope[valueIdentifier] = value;
+ if (keyIdentifier) scope[keyIdentifier] = key;
+ scope.$index = index;
+ scope.$first = (index === 0);
+ scope.$last = (index === (arrayLength - 1));
+ scope.$middle = !(scope.$first || scope.$last);
+ // jshint bitwise: false
+ scope.$odd = !(scope.$even = (index&1) === 0);
+ // jshint bitwise: true
+ };
+
+ var getBlockStart = function(block) {
+ return block.clone[0];
+ };
+
+ var getBlockEnd = function(block) {
+ return block.clone[block.clone.length - 1];
+ };
+
+
+ return {
+ restrict: 'A',
+ multiElement: true,
+ transclude: 'element',
+ priority: 1000,
+ terminal: true,
+ $$tlb: true,
+ compile: function ngRepeatCompile($element, $attr) {
+ var expression = $attr.ngRepeat;
+ var ngRepeatEndComment = document.createComment(' end ngRepeat: ' + expression + ' ');
+
+ var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
+
+ if (!match) {
+ throw ngRepeatMinErr('iexp', "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",
+ expression);
+ }
+
+ var lhs = match[1];
+ var rhs = match[2];
+ var aliasAs = match[3];
+ var trackByExp = match[4];
+
+ match = lhs.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);
+
+ if (!match) {
+ throw ngRepeatMinErr('iidexp', "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",
+ lhs);
+ }
+ var valueIdentifier = match[3] || match[1];
+ var keyIdentifier = match[2];
+
+ if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||
+ /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
+ throw ngRepeatMinErr('badident', "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
+ aliasAs);
+ }
+
+ var trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn;
+ var hashFnLocals = {$id: hashKey};
+
+ if (trackByExp) {
+ trackByExpGetter = $parse(trackByExp);
+ } else {
+ trackByIdArrayFn = function(key, value) {
+ return hashKey(value);
+ };
+ trackByIdObjFn = function(key) {
+ return key;
+ };
+ }
+
+ return function ngRepeatLink($scope, $element, $attr, ctrl, $transclude) {
+
+ if (trackByExpGetter) {
+ trackByIdExpFn = function(key, value, index) {
+ // assign key, value, and $index to the locals so that they can be used in hash functions
+ if (keyIdentifier) hashFnLocals[keyIdentifier] = key;
+ hashFnLocals[valueIdentifier] = value;
+ hashFnLocals.$index = index;
+ return trackByExpGetter($scope, hashFnLocals);
+ };
+ }
+
+ // Store a list of elements from previous run. This is a hash where key is the item from the
+ // iterator, and the value is objects with following properties.
+ // - scope: bound scope
+ // - element: previous element.
+ // - index: position
+ //
+ // We are using no-proto object so that we don't need to guard against inherited props via
+ // hasOwnProperty.
+ var lastBlockMap = createMap();
+
+ //watch props
+ $scope.$watchCollection(rhs, function ngRepeatAction(collection) {
+ var index, length,
+ previousNode = $element[0], // node that cloned nodes should be inserted after
+ // initialized to the comment node anchor
+ nextNode,
+ // Same as lastBlockMap but it has the current state. It will become the
+ // lastBlockMap on the next iteration.
+ nextBlockMap = createMap(),
+ collectionLength,
+ key, value, // key/value of iteration
+ trackById,
+ trackByIdFn,
+ collectionKeys,
+ block, // last object information {scope, element, id}
+ nextBlockOrder,
+ elementsToRemove;
+
+ if (aliasAs) {
+ $scope[aliasAs] = collection;
+ }
+
+ if (isArrayLike(collection)) {
+ collectionKeys = collection;
+ trackByIdFn = trackByIdExpFn || trackByIdArrayFn;
+ } else {
+ trackByIdFn = trackByIdExpFn || trackByIdObjFn;
+ // if object, extract keys, in enumeration order, unsorted
+ collectionKeys = [];
+ for (var itemKey in collection) {
+ if (collection.hasOwnProperty(itemKey) && itemKey.charAt(0) !== '$') {
+ collectionKeys.push(itemKey);
+ }
+ }
+ }
+
+ collectionLength = collectionKeys.length;
+ nextBlockOrder = new Array(collectionLength);
+
+ // locate existing items
+ for (index = 0; index < collectionLength; index++) {
+ key = (collection === collectionKeys) ? index : collectionKeys[index];
+ value = collection[key];
+ trackById = trackByIdFn(key, value, index);
+ if (lastBlockMap[trackById]) {
+ // found previously seen block
+ block = lastBlockMap[trackById];
+ delete lastBlockMap[trackById];
+ nextBlockMap[trackById] = block;
+ nextBlockOrder[index] = block;
+ } else if (nextBlockMap[trackById]) {
+ // if collision detected. restore lastBlockMap and throw an error
+ forEach(nextBlockOrder, function(block) {
+ if (block && block.scope) lastBlockMap[block.id] = block;
+ });
+ throw ngRepeatMinErr('dupes',
+ "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",
+ expression, trackById, value);
+ } else {
+ // new never before seen block
+ nextBlockOrder[index] = {id: trackById, scope: undefined, clone: undefined};
+ nextBlockMap[trackById] = true;
+ }
+ }
+
+ // remove leftover items
+ for (var blockKey in lastBlockMap) {
+ block = lastBlockMap[blockKey];
+ elementsToRemove = getBlockNodes(block.clone);
+ $animate.leave(elementsToRemove);
+ if (elementsToRemove[0].parentNode) {
+ // if the element was not removed yet because of pending animation, mark it as deleted
+ // so that we can ignore it later
+ for (index = 0, length = elementsToRemove.length; index < length; index++) {
+ elementsToRemove[index][NG_REMOVED] = true;
+ }
+ }
+ block.scope.$destroy();
+ }
+
+ // we are not using forEach for perf reasons (trying to avoid #call)
+ for (index = 0; index < collectionLength; index++) {
+ key = (collection === collectionKeys) ? index : collectionKeys[index];
+ value = collection[key];
+ block = nextBlockOrder[index];
+
+ if (block.scope) {
+ // if we have already seen this object, then we need to reuse the
+ // associated scope/element
+
+ nextNode = previousNode;
+
+ // skip nodes that are already pending removal via leave animation
+ do {
+ nextNode = nextNode.nextSibling;
+ } while (nextNode && nextNode[NG_REMOVED]);
+
+ if (getBlockStart(block) != nextNode) {
+ // existing item which got moved
+ $animate.move(getBlockNodes(block.clone), null, jqLite(previousNode));
+ }
+ previousNode = getBlockEnd(block);
+ updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
+ } else {
+ // new item which we don't know about
+ $transclude(function ngRepeatTransclude(clone, scope) {
+ block.scope = scope;
+ // http://jsperf.com/clone-vs-createcomment
+ var endNode = ngRepeatEndComment.cloneNode(false);
+ clone[clone.length++] = endNode;
+
+ // TODO(perf): support naked previousNode in `enter` to avoid creation of jqLite wrapper?
+ $animate.enter(clone, null, jqLite(previousNode));
+ previousNode = endNode;
+ // Note: We only need the first/last node of the cloned nodes.
+ // However, we need to keep the reference to the jqlite wrapper as it might be changed later
+ // by a directive with templateUrl when its template arrives.
+ block.clone = clone;
+ nextBlockMap[block.id] = block;
+ updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
+ });
+ }
+ }
+ lastBlockMap = nextBlockMap;
+ });
+ };
+ }
+ };
+}];
+
+var NG_HIDE_CLASS = 'ng-hide';
+var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate';
+/**
+ * @ngdoc directive
+ * @name ngShow
+ * @multiElement
+ *
+ * @description
+ * The `ngShow` directive shows or hides the given HTML element based on the expression
+ * provided to the `ngShow` attribute. The element is shown or hidden by removing or adding
+ * the `.ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined
+ * in AngularJS and sets the display style to none (using an !important flag).
+ * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
+ *
+ * ```html
+ * <!-- when $scope.myValue is truthy (element is visible) -->
+ * <div ng-show="myValue"></div>
+ *
+ * <!-- when $scope.myValue is falsy (element is hidden) -->
+ * <div ng-show="myValue" class="ng-hide"></div>
+ * ```
+ *
+ * When the `ngShow` expression evaluates to a falsy value then the `.ng-hide` CSS class is added to the class
+ * attribute on the element causing it to become hidden. When truthy, the `.ng-hide` CSS class is removed
+ * from the element causing the element not to appear hidden.
+ *
+ * ## Why is !important used?
+ *
+ * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector
+ * can be easily overridden by heavier selectors. For example, something as simple
+ * as changing the display style on a HTML list item would make hidden elements appear visible.
+ * This also becomes a bigger issue when dealing with CSS frameworks.
+ *
+ * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector
+ * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the
+ * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.
+ *
+ * ### Overriding `.ng-hide`
+ *
+ * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
+ * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
+ * class CSS. Note that the selector that needs to be used is actually `.ng-hide:not(.ng-hide-animate)` to cope
+ * with extra animation classes that can be added.
+ *
+ * ```css
+ * .ng-hide:not(.ng-hide-animate) {
+ * /* this is just another form of hiding an element */
+ * display: block!important;
+ * position: absolute;
+ * top: -9999px;
+ * left: -9999px;
+ * }
+ * ```
+ *
+ * By default you don't need to override in CSS anything and the animations will work around the display style.
+ *
+ * ## A note about animations with `ngShow`
+ *
+ * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression
+ * is true and false. This system works like the animation system present with ngClass except that
+ * you must also include the !important flag to override the display property
+ * so that you can perform an animation when the element is hidden during the time of the animation.
+ *
+ * ```css
+ * //
+ * //a working example can be found at the bottom of this page
+ * //
+ * .my-element.ng-hide-add, .my-element.ng-hide-remove {
+ * /* this is required as of 1.3x to properly
+ * apply all styling in a show/hide animation */
+ * transition: 0s linear all;
+ * }
+ *
+ * .my-element.ng-hide-add-active,
+ * .my-element.ng-hide-remove-active {
+ * /* the transition is defined in the active class */
+ * transition: 1s linear all;
+ * }
+ *
+ * .my-element.ng-hide-add { ... }
+ * .my-element.ng-hide-add.ng-hide-add-active { ... }
+ * .my-element.ng-hide-remove { ... }
+ * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
+ * ```
+ *
+ * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display
+ * property to block during animation states--ngAnimate will handle the style toggling automatically for you.
+ *
+ * @animations
+ * addClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a truthy value and the just before contents are set to visible
+ * removeClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden
+ *
+ * @element ANY
+ * @param {expression} ngShow If the {@link guide/expression expression} is truthy
+ * then the element is shown or hidden respectively.
+ *
+ * @example
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ Click me: <input type="checkbox" ng-model="checked" aria-label="Toggle ngHide"><br/>
+ <div>
+ Show:
+ <div class="check-element animate-show" ng-show="checked">
+ <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
+ </div>
+ </div>
+ <div>
+ Hide:
+ <div class="check-element animate-show" ng-hide="checked">
+ <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
+ </div>
+ </div>
+ </file>
+ <file name="glyphicons.css">
+ @import url(../../components/bootstrap-3.1.1/css/bootstrap.css);
+ </file>
+ <file name="animations.css">
+ .animate-show {
+ line-height: 20px;
+ opacity: 1;
+ padding: 10px;
+ border: 1px solid black;
+ background: white;
+ }
+
+ .animate-show.ng-hide-add.ng-hide-add-active,
+ .animate-show.ng-hide-remove.ng-hide-remove-active {
+ -webkit-transition: all linear 0.5s;
+ transition: all linear 0.5s;
+ }
+
+ .animate-show.ng-hide {
+ line-height: 0;
+ opacity: 0;
+ padding: 0 10px;
+ }
+
+ .check-element {
+ padding: 10px;
+ border: 1px solid black;
+ background: white;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
+ var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
+
+ it('should check ng-show / ng-hide', function() {
+ expect(thumbsUp.isDisplayed()).toBeFalsy();
+ expect(thumbsDown.isDisplayed()).toBeTruthy();
+
+ element(by.model('checked')).click();
+
+ expect(thumbsUp.isDisplayed()).toBeTruthy();
+ expect(thumbsDown.isDisplayed()).toBeFalsy();
+ });
+ </file>
+ </example>
+ */
+var ngShowDirective = ['$animate', function($animate) {
+ return {
+ restrict: 'A',
+ multiElement: true,
+ link: function(scope, element, attr) {
+ scope.$watch(attr.ngShow, function ngShowWatchAction(value) {
+ // we're adding a temporary, animation-specific class for ng-hide since this way
+ // we can control when the element is actually displayed on screen without having
+ // to have a global/greedy CSS selector that breaks when other animations are run.
+ // Read: https://github.com/angular/angular.js/issues/9103#issuecomment-58335845
+ $animate[value ? 'removeClass' : 'addClass'](element, NG_HIDE_CLASS, {
+ tempClasses: NG_HIDE_IN_PROGRESS_CLASS
+ });
+ });
+ }
+ };
+}];
+
+
+/**
+ * @ngdoc directive
+ * @name ngHide
+ * @multiElement
+ *
+ * @description
+ * The `ngHide` directive shows or hides the given HTML element based on the expression
+ * provided to the `ngHide` attribute. The element is shown or hidden by removing or adding
+ * the `ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined
+ * in AngularJS and sets the display style to none (using an !important flag).
+ * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
+ *
+ * ```html
+ * <!-- when $scope.myValue is truthy (element is hidden) -->
+ * <div ng-hide="myValue" class="ng-hide"></div>
+ *
+ * <!-- when $scope.myValue is falsy (element is visible) -->
+ * <div ng-hide="myValue"></div>
+ * ```
+ *
+ * When the `ngHide` expression evaluates to a truthy value then the `.ng-hide` CSS class is added to the class
+ * attribute on the element causing it to become hidden. When falsy, the `.ng-hide` CSS class is removed
+ * from the element causing the element not to appear hidden.
+ *
+ * ## Why is !important used?
+ *
+ * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector
+ * can be easily overridden by heavier selectors. For example, something as simple
+ * as changing the display style on a HTML list item would make hidden elements appear visible.
+ * This also becomes a bigger issue when dealing with CSS frameworks.
+ *
+ * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector
+ * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the
+ * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.
+ *
+ * ### Overriding `.ng-hide`
+ *
+ * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
+ * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
+ * class in CSS:
+ *
+ * ```css
+ * .ng-hide {
+ * /* this is just another form of hiding an element */
+ * display: block!important;
+ * position: absolute;
+ * top: -9999px;
+ * left: -9999px;
+ * }
+ * ```
+ *
+ * By default you don't need to override in CSS anything and the animations will work around the display style.
+ *
+ * ## A note about animations with `ngHide`
+ *
+ * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression
+ * is true and false. This system works like the animation system present with ngClass, except that the `.ng-hide`
+ * CSS class is added and removed for you instead of your own CSS class.
+ *
+ * ```css
+ * //
+ * //a working example can be found at the bottom of this page
+ * //
+ * .my-element.ng-hide-add, .my-element.ng-hide-remove {
+ * transition: 0.5s linear all;
+ * }
+ *
+ * .my-element.ng-hide-add { ... }
+ * .my-element.ng-hide-add.ng-hide-add-active { ... }
+ * .my-element.ng-hide-remove { ... }
+ * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
+ * ```
+ *
+ * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display
+ * property to block during animation states--ngAnimate will handle the style toggling automatically for you.
+ *
+ * @animations
+ * removeClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden
+ * addClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a non truthy value and just before the contents are set to visible
+ *
+ * @element ANY
+ * @param {expression} ngHide If the {@link guide/expression expression} is truthy then
+ * the element is shown or hidden respectively.
+ *
+ * @example
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ Click me: <input type="checkbox" ng-model="checked" aria-label="Toggle ngShow"><br/>
+ <div>
+ Show:
+ <div class="check-element animate-hide" ng-show="checked">
+ <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
+ </div>
+ </div>
+ <div>
+ Hide:
+ <div class="check-element animate-hide" ng-hide="checked">
+ <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
+ </div>
+ </div>
+ </file>
+ <file name="glyphicons.css">
+ @import url(../../components/bootstrap-3.1.1/css/bootstrap.css);
+ </file>
+ <file name="animations.css">
+ .animate-hide {
+ -webkit-transition: all linear 0.5s;
+ transition: all linear 0.5s;
+ line-height: 20px;
+ opacity: 1;
+ padding: 10px;
+ border: 1px solid black;
+ background: white;
+ }
+
+ .animate-hide.ng-hide {
+ line-height: 0;
+ opacity: 0;
+ padding: 0 10px;
+ }
+
+ .check-element {
+ padding: 10px;
+ border: 1px solid black;
+ background: white;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
+ var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
+
+ it('should check ng-show / ng-hide', function() {
+ expect(thumbsUp.isDisplayed()).toBeFalsy();
+ expect(thumbsDown.isDisplayed()).toBeTruthy();
+
+ element(by.model('checked')).click();
+
+ expect(thumbsUp.isDisplayed()).toBeTruthy();
+ expect(thumbsDown.isDisplayed()).toBeFalsy();
+ });
+ </file>
+ </example>
+ */
+var ngHideDirective = ['$animate', function($animate) {
+ return {
+ restrict: 'A',
+ multiElement: true,
+ link: function(scope, element, attr) {
+ scope.$watch(attr.ngHide, function ngHideWatchAction(value) {
+ // The comment inside of the ngShowDirective explains why we add and
+ // remove a temporary class for the show/hide animation
+ $animate[value ? 'addClass' : 'removeClass'](element,NG_HIDE_CLASS, {
+ tempClasses: NG_HIDE_IN_PROGRESS_CLASS
+ });
+ });
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngStyle
+ * @restrict AC
+ *
+ * @description
+ * The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.
+ *
+ * @element ANY
+ * @param {expression} ngStyle
+ *
+ * {@link guide/expression Expression} which evals to an
+ * object whose keys are CSS style names and values are corresponding values for those CSS
+ * keys.
+ *
+ * Since some CSS style names are not valid keys for an object, they must be quoted.
+ * See the 'background-color' style in the example below.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input type="button" value="set color" ng-click="myStyle={color:'red'}">
+ <input type="button" value="set background" ng-click="myStyle={'background-color':'blue'}">
+ <input type="button" value="clear" ng-click="myStyle={}">
+ <br/>
+ <span ng-style="myStyle">Sample Text</span>
+ <pre>myStyle={{myStyle}}</pre>
+ </file>
+ <file name="style.css">
+ span {
+ color: black;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var colorSpan = element(by.css('span'));
+
+ it('should check ng-style', function() {
+ expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
+ element(by.css('input[value=\'set color\']')).click();
+ expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');
+ element(by.css('input[value=clear]')).click();
+ expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
+ });
+ </file>
+ </example>
+ */
+var ngStyleDirective = ngDirective(function(scope, element, attr) {
+ scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {
+ if (oldStyles && (newStyles !== oldStyles)) {
+ forEach(oldStyles, function(val, style) { element.css(style, '');});
+ }
+ if (newStyles) element.css(newStyles);
+ }, true);
+});
+
+/**
+ * @ngdoc directive
+ * @name ngSwitch
+ * @restrict EA
+ *
+ * @description
+ * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.
+ * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location
+ * as specified in the template.
+ *
+ * The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it
+ * from the template cache), `ngSwitch` simply chooses one of the nested elements and makes it visible based on which element
+ * matches the value obtained from the evaluated expression. In other words, you define a container element
+ * (where you place the directive), place an expression on the **`on="..."` attribute**
+ * (or the **`ng-switch="..."` attribute**), define any inner elements inside of the directive and place
+ * a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on
+ * expression is evaluated. If a matching expression is not found via a when attribute then an element with the default
+ * attribute is displayed.
+ *
+ * <div class="alert alert-info">
+ * Be aware that the attribute values to match against cannot be expressions. They are interpreted
+ * as literal string values to match against.
+ * For example, **`ng-switch-when="someVal"`** will match against the string `"someVal"` not against the
+ * value of the expression `$scope.someVal`.
+ * </div>
+
+ * @animations
+ * enter - happens after the ngSwitch contents change and the matched child element is placed inside the container
+ * leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM
+ *
+ * @usage
+ *
+ * ```
+ * <ANY ng-switch="expression">
+ * <ANY ng-switch-when="matchValue1">...</ANY>
+ * <ANY ng-switch-when="matchValue2">...</ANY>
+ * <ANY ng-switch-default>...</ANY>
+ * </ANY>
+ * ```
+ *
+ *
+ * @scope
+ * @priority 1200
+ * @param {*} ngSwitch|on expression to match against <code>ng-switch-when</code>.
+ * On child elements add:
+ *
+ * * `ngSwitchWhen`: the case statement to match against. If match then this
+ * case will be displayed. If the same match appears multiple times, all the
+ * elements will be displayed.
+ * * `ngSwitchDefault`: the default case when no other case match. If there
+ * are multiple default cases, all of them will be displayed when no other
+ * case match.
+ *
+ *
+ * @example
+ <example module="switchExample" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <select ng-model="selection" ng-options="item for item in items">
+ </select>
+ <code>selection={{selection}}</code>
+ <hr/>
+ <div class="animate-switch-container"
+ ng-switch on="selection">
+ <div class="animate-switch" ng-switch-when="settings">Settings Div</div>
+ <div class="animate-switch" ng-switch-when="home">Home Span</div>
+ <div class="animate-switch" ng-switch-default>default</div>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('switchExample', ['ngAnimate'])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.items = ['settings', 'home', 'other'];
+ $scope.selection = $scope.items[0];
+ }]);
+ </file>
+ <file name="animations.css">
+ .animate-switch-container {
+ position:relative;
+ background:white;
+ border:1px solid black;
+ height:40px;
+ overflow:hidden;
+ }
+
+ .animate-switch {
+ padding:10px;
+ }
+
+ .animate-switch.ng-animate {
+ -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+
+ position:absolute;
+ top:0;
+ left:0;
+ right:0;
+ bottom:0;
+ }
+
+ .animate-switch.ng-leave.ng-leave-active,
+ .animate-switch.ng-enter {
+ top:-50px;
+ }
+ .animate-switch.ng-leave,
+ .animate-switch.ng-enter.ng-enter-active {
+ top:0;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var switchElem = element(by.css('[ng-switch]'));
+ var select = element(by.model('selection'));
+
+ it('should start in settings', function() {
+ expect(switchElem.getText()).toMatch(/Settings Div/);
+ });
+ it('should change to home', function() {
+ select.all(by.css('option')).get(1).click();
+ expect(switchElem.getText()).toMatch(/Home Span/);
+ });
+ it('should select default', function() {
+ select.all(by.css('option')).get(2).click();
+ expect(switchElem.getText()).toMatch(/default/);
+ });
+ </file>
+ </example>
+ */
+var ngSwitchDirective = ['$animate', function($animate) {
+ return {
+ require: 'ngSwitch',
+
+ // asks for $scope to fool the BC controller module
+ controller: ['$scope', function ngSwitchController() {
+ this.cases = {};
+ }],
+ link: function(scope, element, attr, ngSwitchController) {
+ var watchExpr = attr.ngSwitch || attr.on,
+ selectedTranscludes = [],
+ selectedElements = [],
+ previousLeaveAnimations = [],
+ selectedScopes = [];
+
+ var spliceFactory = function(array, index) {
+ return function() { array.splice(index, 1); };
+ };
+
+ scope.$watch(watchExpr, function ngSwitchWatchAction(value) {
+ var i, ii;
+ for (i = 0, ii = previousLeaveAnimations.length; i < ii; ++i) {
+ $animate.cancel(previousLeaveAnimations[i]);
+ }
+ previousLeaveAnimations.length = 0;
+
+ for (i = 0, ii = selectedScopes.length; i < ii; ++i) {
+ var selected = getBlockNodes(selectedElements[i].clone);
+ selectedScopes[i].$destroy();
+ var promise = previousLeaveAnimations[i] = $animate.leave(selected);
+ promise.then(spliceFactory(previousLeaveAnimations, i));
+ }
+
+ selectedElements.length = 0;
+ selectedScopes.length = 0;
+
+ if ((selectedTranscludes = ngSwitchController.cases['!' + value] || ngSwitchController.cases['?'])) {
+ forEach(selectedTranscludes, function(selectedTransclude) {
+ selectedTransclude.transclude(function(caseElement, selectedScope) {
+ selectedScopes.push(selectedScope);
+ var anchor = selectedTransclude.element;
+ caseElement[caseElement.length++] = document.createComment(' end ngSwitchWhen: ');
+ var block = { clone: caseElement };
+
+ selectedElements.push(block);
+ $animate.enter(caseElement, anchor.parent(), anchor);
+ });
+ });
+ }
+ });
+ }
+ };
+}];
+
+var ngSwitchWhenDirective = ngDirective({
+ transclude: 'element',
+ priority: 1200,
+ require: '^ngSwitch',
+ multiElement: true,
+ link: function(scope, element, attrs, ctrl, $transclude) {
+ ctrl.cases['!' + attrs.ngSwitchWhen] = (ctrl.cases['!' + attrs.ngSwitchWhen] || []);
+ ctrl.cases['!' + attrs.ngSwitchWhen].push({ transclude: $transclude, element: element });
+ }
+});
+
+var ngSwitchDefaultDirective = ngDirective({
+ transclude: 'element',
+ priority: 1200,
+ require: '^ngSwitch',
+ multiElement: true,
+ link: function(scope, element, attr, ctrl, $transclude) {
+ ctrl.cases['?'] = (ctrl.cases['?'] || []);
+ ctrl.cases['?'].push({ transclude: $transclude, element: element });
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name ngTransclude
+ * @restrict EAC
+ *
+ * @description
+ * Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.
+ *
+ * Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.
+ *
+ * @element ANY
+ *
+ * @example
+ <example module="transcludeExample">
+ <file name="index.html">
+ <script>
+ angular.module('transcludeExample', [])
+ .directive('pane', function(){
+ return {
+ restrict: 'E',
+ transclude: true,
+ scope: { title:'@' },
+ template: '<div style="border: 1px solid black;">' +
+ '<div style="background-color: gray">{{title}}</div>' +
+ '<ng-transclude></ng-transclude>' +
+ '</div>'
+ };
+ })
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.title = 'Lorem Ipsum';
+ $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <input ng-model="title" aria-label="title"> <br/>
+ <textarea ng-model="text" aria-label="text"></textarea> <br/>
+ <pane title="{{title}}">{{text}}</pane>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should have transcluded', function() {
+ var titleElement = element(by.model('title'));
+ titleElement.clear();
+ titleElement.sendKeys('TITLE');
+ var textElement = element(by.model('text'));
+ textElement.clear();
+ textElement.sendKeys('TEXT');
+ expect(element(by.binding('title')).getText()).toEqual('TITLE');
+ expect(element(by.binding('text')).getText()).toEqual('TEXT');
+ });
+ </file>
+ </example>
+ *
+ */
+var ngTranscludeDirective = ngDirective({
+ restrict: 'EAC',
+ link: function($scope, $element, $attrs, controller, $transclude) {
+ if (!$transclude) {
+ throw minErr('ngTransclude')('orphan',
+ 'Illegal use of ngTransclude directive in the template! ' +
+ 'No parent directive that requires a transclusion found. ' +
+ 'Element: {0}',
+ startingTag($element));
+ }
+
+ $transclude(function(clone) {
+ $element.empty();
+ $element.append(clone);
+ });
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name script
+ * @restrict E
+ *
+ * @description
+ * Load the content of a `<script>` element into {@link ng.$templateCache `$templateCache`}, so that the
+ * template can be used by {@link ng.directive:ngInclude `ngInclude`},
+ * {@link ngRoute.directive:ngView `ngView`}, or {@link guide/directive directives}. The type of the
+ * `<script>` element must be specified as `text/ng-template`, and a cache name for the template must be
+ * assigned through the element's `id`, which can then be used as a directive's `templateUrl`.
+ *
+ * @param {string} type Must be set to `'text/ng-template'`.
+ * @param {string} id Cache name of the template.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <script type="text/ng-template" id="/tpl.html">
+ Content of the template.
+ </script>
+
+ <a ng-click="currentTpl='/tpl.html'" id="tpl-link">Load inlined template</a>
+ <div id="tpl-content" ng-include src="currentTpl"></div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should load template defined inside script tag', function() {
+ element(by.css('#tpl-link')).click();
+ expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);
+ });
+ </file>
+ </example>
+ */
+var scriptDirective = ['$templateCache', function($templateCache) {
+ return {
+ restrict: 'E',
+ terminal: true,
+ compile: function(element, attr) {
+ if (attr.type == 'text/ng-template') {
+ var templateUrl = attr.id,
+ text = element[0].text;
+
+ $templateCache.put(templateUrl, text);
+ }
+ }
+ };
+}];
+
+var noopNgModelController = { $setViewValue: noop, $render: noop };
+
+/**
+ * @ngdoc type
+ * @name select.SelectController
+ * @description
+ * The controller for the `<select>` directive. This provides support for reading
+ * and writing the selected value(s) of the control and also coordinates dynamically
+ * added `<option>` elements, perhaps by an `ngRepeat` directive.
+ */
+var SelectController =
+ ['$element', '$scope', '$attrs', function($element, $scope, $attrs) {
+
+ var self = this,
+ optionsMap = new HashMap();
+
+ // If the ngModel doesn't get provided then provide a dummy noop version to prevent errors
+ self.ngModelCtrl = noopNgModelController;
+
+ // The "unknown" option is one that is prepended to the list if the viewValue
+ // does not match any of the options. When it is rendered the value of the unknown
+ // option is '? XXX ?' where XXX is the hashKey of the value that is not known.
+ //
+ // We can't just jqLite('<option>') since jqLite is not smart enough
+ // to create it in <select> and IE barfs otherwise.
+ self.unknownOption = jqLite(document.createElement('option'));
+ self.renderUnknownOption = function(val) {
+ var unknownVal = '? ' + hashKey(val) + ' ?';
+ self.unknownOption.val(unknownVal);
+ $element.prepend(self.unknownOption);
+ $element.val(unknownVal);
+ };
+
+ $scope.$on('$destroy', function() {
+ // disable unknown option so that we don't do work when the whole select is being destroyed
+ self.renderUnknownOption = noop;
+ });
+
+ self.removeUnknownOption = function() {
+ if (self.unknownOption.parent()) self.unknownOption.remove();
+ };
+
+
+ // Read the value of the select control, the implementation of this changes depending
+ // upon whether the select can have multiple values and whether ngOptions is at work.
+ self.readValue = function readSingleValue() {
+ self.removeUnknownOption();
+ return $element.val();
+ };
+
+
+ // Write the value to the select control, the implementation of this changes depending
+ // upon whether the select can have multiple values and whether ngOptions is at work.
+ self.writeValue = function writeSingleValue(value) {
+ if (self.hasOption(value)) {
+ self.removeUnknownOption();
+ $element.val(value);
+ if (value === '') self.emptyOption.prop('selected', true); // to make IE9 happy
+ } else {
+ if (value == null && self.emptyOption) {
+ self.removeUnknownOption();
+ $element.val('');
+ } else {
+ self.renderUnknownOption(value);
+ }
+ }
+ };
+
+
+ // Tell the select control that an option, with the given value, has been added
+ self.addOption = function(value, element) {
+ assertNotHasOwnProperty(value, '"option value"');
+ if (value === '') {
+ self.emptyOption = element;
+ }
+ var count = optionsMap.get(value) || 0;
+ optionsMap.put(value, count + 1);
+ };
+
+ // Tell the select control that an option, with the given value, has been removed
+ self.removeOption = function(value) {
+ var count = optionsMap.get(value);
+ if (count) {
+ if (count === 1) {
+ optionsMap.remove(value);
+ if (value === '') {
+ self.emptyOption = undefined;
+ }
+ } else {
+ optionsMap.put(value, count - 1);
+ }
+ }
+ };
+
+ // Check whether the select control has an option matching the given value
+ self.hasOption = function(value) {
+ return !!optionsMap.get(value);
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name select
+ * @restrict E
+ *
+ * @description
+ * HTML `SELECT` element with angular data-binding.
+ *
+ * In many cases, `ngRepeat` can be used on `<option>` elements instead of {@link ng.directive:ngOptions
+ * ngOptions} to achieve a similar result. However, `ngOptions` provides some benefits such as reducing
+ * memory and increasing speed by not creating a new scope for each repeated instance, as well as providing
+ * more flexibility in how the `<select>`'s model is assigned via the `select` **`as`** part of the
+ * comprehension expression.
+ *
+ * When an item in the `<select>` menu is selected, the array element or object property
+ * represented by the selected option will be bound to the model identified by the `ngModel`
+ * directive.
+ *
+ * If the viewValue contains a value that doesn't match any of the options then the control
+ * will automatically add an "unknown" option, which it then removes when this is resolved.
+ *
+ * Optionally, a single hard-coded `<option>` element, with the value set to an empty string, can
+ * be nested into the `<select>` element. This element will then represent the `null` or "not selected"
+ * option. See example below for demonstration.
+ *
+ * <div class="alert alert-info">
+ * The value of a `select` directive used without `ngOptions` is always a string.
+ * When the model needs to be bound to a non-string value, you must either explictly convert it
+ * using a directive (see example below) or use `ngOptions` to specify the set of options.
+ * This is because an option element can only be bound to string values at present.
+ * </div>
+ *
+ * ### Example (binding `select` to a non-string value)
+ *
+ * <example name="select-with-non-string-options" module="nonStringSelect">
+ * <file name="index.html">
+ * <select ng-model="model.id" convert-to-number>
+ * <option value="0">Zero</option>
+ * <option value="1">One</option>
+ * <option value="2">Two</option>
+ * </select>
+ * {{ model }}
+ * </file>
+ * <file name="app.js">
+ * angular.module('nonStringSelect', [])
+ * .run(function($rootScope) {
+ * $rootScope.model = { id: 2 };
+ * })
+ * .directive('convertToNumber', function() {
+ * return {
+ * require: 'ngModel',
+ * link: function(scope, element, attrs, ngModel) {
+ * ngModel.$parsers.push(function(val) {
+ * return parseInt(val, 10);
+ * });
+ * ngModel.$formatters.push(function(val) {
+ * return '' + val;
+ * });
+ * }
+ * };
+ * });
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * it('should initialize to model', function() {
+ * var select = element(by.css('select'));
+ * expect(element(by.model('model.id')).$('option:checked').getText()).toEqual('Two');
+ * });
+ * </file>
+ * </example>
+ *
+ */
+var selectDirective = function() {
+
+ return {
+ restrict: 'E',
+ require: ['select', '?ngModel'],
+ controller: SelectController,
+ link: function(scope, element, attr, ctrls) {
+
+ // if ngModel is not defined, we don't need to do anything
+ var ngModelCtrl = ctrls[1];
+ if (!ngModelCtrl) return;
+
+ var selectCtrl = ctrls[0];
+
+ selectCtrl.ngModelCtrl = ngModelCtrl;
+
+ // We delegate rendering to the `writeValue` method, which can be changed
+ // if the select can have multiple selected values or if the options are being
+ // generated by `ngOptions`
+ ngModelCtrl.$render = function() {
+ selectCtrl.writeValue(ngModelCtrl.$viewValue);
+ };
+
+ // When the selected item(s) changes we delegate getting the value of the select control
+ // to the `readValue` method, which can be changed if the select can have multiple
+ // selected values or if the options are being generated by `ngOptions`
+ element.on('change', function() {
+ scope.$apply(function() {
+ ngModelCtrl.$setViewValue(selectCtrl.readValue());
+ });
+ });
+
+ // If the select allows multiple values then we need to modify how we read and write
+ // values from and to the control; also what it means for the value to be empty and
+ // we have to add an extra watch since ngModel doesn't work well with arrays - it
+ // doesn't trigger rendering if only an item in the array changes.
+ if (attr.multiple) {
+
+ // Read value now needs to check each option to see if it is selected
+ selectCtrl.readValue = function readMultipleValue() {
+ var array = [];
+ forEach(element.find('option'), function(option) {
+ if (option.selected) {
+ array.push(option.value);
+ }
+ });
+ return array;
+ };
+
+ // Write value now needs to set the selected property of each matching option
+ selectCtrl.writeValue = function writeMultipleValue(value) {
+ var items = new HashMap(value);
+ forEach(element.find('option'), function(option) {
+ option.selected = isDefined(items.get(option.value));
+ });
+ };
+
+ // we have to do it on each watch since ngModel watches reference, but
+ // we need to work of an array, so we need to see if anything was inserted/removed
+ var lastView, lastViewRef = NaN;
+ scope.$watch(function selectMultipleWatch() {
+ if (lastViewRef === ngModelCtrl.$viewValue && !equals(lastView, ngModelCtrl.$viewValue)) {
+ lastView = shallowCopy(ngModelCtrl.$viewValue);
+ ngModelCtrl.$render();
+ }
+ lastViewRef = ngModelCtrl.$viewValue;
+ });
+
+ // If we are a multiple select then value is now a collection
+ // so the meaning of $isEmpty changes
+ ngModelCtrl.$isEmpty = function(value) {
+ return !value || value.length === 0;
+ };
+
+ }
+ }
+ };
+};
+
+
+// The option directive is purely designed to communicate the existence (or lack of)
+// of dynamically created (and destroyed) option elements to their containing select
+// directive via its controller.
+var optionDirective = ['$interpolate', function($interpolate) {
+
+ function chromeHack(optionElement) {
+ // Workaround for https://code.google.com/p/chromium/issues/detail?id=381459
+ // Adding an <option selected="selected"> element to a <select required="required"> should
+ // automatically select the new element
+ if (optionElement[0].hasAttribute('selected')) {
+ optionElement[0].selected = true;
+ }
+ }
+
+ return {
+ restrict: 'E',
+ priority: 100,
+ compile: function(element, attr) {
+
+ // If the value attribute is not defined then we fall back to the
+ // text content of the option element, which may be interpolated
+ if (isUndefined(attr.value)) {
+ var interpolateFn = $interpolate(element.text(), true);
+ if (!interpolateFn) {
+ attr.$set('value', element.text());
+ }
+ }
+
+ return function(scope, element, attr) {
+
+ // This is an optimization over using ^^ since we don't want to have to search
+ // all the way to the root of the DOM for every single option element
+ var selectCtrlName = '$selectController',
+ parent = element.parent(),
+ selectCtrl = parent.data(selectCtrlName) ||
+ parent.parent().data(selectCtrlName); // in case we are in optgroup
+
+ // Only update trigger option updates if this is an option within a `select`
+ // that also has `ngModel` attached
+ if (selectCtrl && selectCtrl.ngModelCtrl) {
+
+ if (interpolateFn) {
+ scope.$watch(interpolateFn, function interpolateWatchAction(newVal, oldVal) {
+ attr.$set('value', newVal);
+ if (oldVal !== newVal) {
+ selectCtrl.removeOption(oldVal);
+ }
+ selectCtrl.addOption(newVal, element);
+ selectCtrl.ngModelCtrl.$render();
+ chromeHack(element);
+ });
+ } else {
+ selectCtrl.addOption(attr.value, element);
+ selectCtrl.ngModelCtrl.$render();
+ chromeHack(element);
+ }
+
+ element.on('$destroy', function() {
+ selectCtrl.removeOption(attr.value);
+ selectCtrl.ngModelCtrl.$render();
+ });
+ }
+ };
+ }
+ };
+}];
+
+var styleDirective = valueFn({
+ restrict: 'E',
+ terminal: false
+});
+
+var requiredDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+ attr.required = true; // force truthy in case we are on non input element
+
+ ctrl.$validators.required = function(modelValue, viewValue) {
+ return !attr.required || !ctrl.$isEmpty(viewValue);
+ };
+
+ attr.$observe('required', function() {
+ ctrl.$validate();
+ });
+ }
+ };
+};
+
+
+var patternDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+
+ var regexp, patternExp = attr.ngPattern || attr.pattern;
+ attr.$observe('pattern', function(regex) {
+ if (isString(regex) && regex.length > 0) {
+ regex = new RegExp('^' + regex + '$');
+ }
+
+ if (regex && !regex.test) {
+ throw minErr('ngPattern')('noregexp',
+ 'Expected {0} to be a RegExp but was {1}. Element: {2}', patternExp,
+ regex, startingTag(elm));
+ }
+
+ regexp = regex || undefined;
+ ctrl.$validate();
+ });
+
+ ctrl.$validators.pattern = function(value) {
+ return ctrl.$isEmpty(value) || isUndefined(regexp) || regexp.test(value);
+ };
+ }
+ };
+};
+
+
+var maxlengthDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+
+ var maxlength = -1;
+ attr.$observe('maxlength', function(value) {
+ var intVal = toInt(value);
+ maxlength = isNaN(intVal) ? -1 : intVal;
+ ctrl.$validate();
+ });
+ ctrl.$validators.maxlength = function(modelValue, viewValue) {
+ return (maxlength < 0) || ctrl.$isEmpty(viewValue) || (viewValue.length <= maxlength);
+ };
+ }
+ };
+};
+
+var minlengthDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+
+ var minlength = 0;
+ attr.$observe('minlength', function(value) {
+ minlength = toInt(value) || 0;
+ ctrl.$validate();
+ });
+ ctrl.$validators.minlength = function(modelValue, viewValue) {
+ return ctrl.$isEmpty(viewValue) || viewValue.length >= minlength;
+ };
+ }
+ };
+};
+
+if (window.angular.bootstrap) {
+ //AngularJS is already loaded, so we can return here...
+ console.log('WARNING: Tried to load angular more than once.');
+ return;
+}
+
+//try to bind to jquery now so that one can write jqLite(document).ready()
+//but we will rebind on bootstrap again.
+bindJQuery();
+
+publishExternalAPI(angular);
+
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+ n = n + '';
+ var i = n.indexOf('.');
+ return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+ var v = opt_precision;
+
+ if (undefined === v) {
+ v = Math.min(getDecimals(n), 3);
+ }
+
+ var base = Math.pow(10, v);
+ var f = ((n * base) | 0) % base;
+ return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "ERANAMES": [
+ "Before Christ",
+ "Anno Domini"
+ ],
+ "ERAS": [
+ "BC",
+ "AD"
+ ],
+ "FIRSTDAYOFWEEK": 6,
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "WEEKENDRANGE": [
+ 5,
+ 6
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-\u00a4",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-us",
+ "pluralCat": function(n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
+
+ jqLite(document).ready(function() {
+ angularInit(document, bootstrap);
+ });
+
+})(window, document);
+
+!window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>');
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-cookies.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-cookies.js
new file mode 100644
index 0000000..634386a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-cookies.js
@@ -0,0 +1,321 @@
+/**
+ * @license AngularJS v1.4.4
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular, undefined) {'use strict';
+
+/**
+ * @ngdoc module
+ * @name ngCookies
+ * @description
+ *
+ * # ngCookies
+ *
+ * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.
+ *
+ *
+ * <div doc-module-components="ngCookies"></div>
+ *
+ * See {@link ngCookies.$cookies `$cookies`} for usage.
+ */
+
+
+angular.module('ngCookies', ['ng']).
+ /**
+ * @ngdoc provider
+ * @name $cookiesProvider
+ * @description
+ * Use `$cookiesProvider` to change the default behavior of the {@link ngCookies.$cookies $cookies} service.
+ * */
+ provider('$cookies', [function $CookiesProvider() {
+ /**
+ * @ngdoc property
+ * @name $cookiesProvider#defaults
+ * @description
+ *
+ * Object containing default options to pass when setting cookies.
+ *
+ * The object may have following properties:
+ *
+ * - **path** - `{string}` - The cookie will be available only for this path and its
+ * sub-paths. By default, this would be the URL that appears in your base tag.
+ * - **domain** - `{string}` - The cookie will be available only for this domain and
+ * its sub-domains. For obvious security reasons the user agent will not accept the
+ * cookie if the current domain is not a sub domain or equals to the requested domain.
+ * - **expires** - `{string|Date}` - String of the form "Wdy, DD Mon YYYY HH:MM:SS GMT"
+ * or a Date object indicating the exact date/time this cookie will expire.
+ * - **secure** - `{boolean}` - The cookie will be available only in secured connection.
+ *
+ * Note: by default the address that appears in your `<base>` tag will be used as path.
+ * This is important so that cookies will be visible for all routes in case html5mode is enabled
+ *
+ **/
+ var defaults = this.defaults = {};
+
+ function calcOptions(options) {
+ return options ? angular.extend({}, defaults, options) : defaults;
+ }
+
+ /**
+ * @ngdoc service
+ * @name $cookies
+ *
+ * @description
+ * Provides read/write access to browser's cookies.
+ *
+ * <div class="alert alert-info">
+ * Up until Angular 1.3, `$cookies` exposed properties that represented the
+ * current browser cookie values. In version 1.4, this behavior has changed, and
+ * `$cookies` now provides a standard api of getters, setters etc.
+ * </div>
+ *
+ * Requires the {@link ngCookies `ngCookies`} module to be installed.
+ *
+ * @example
+ *
+ * ```js
+ * angular.module('cookiesExample', ['ngCookies'])
+ * .controller('ExampleController', ['$cookies', function($cookies) {
+ * // Retrieving a cookie
+ * var favoriteCookie = $cookies.get('myFavorite');
+ * // Setting a cookie
+ * $cookies.put('myFavorite', 'oatmeal');
+ * }]);
+ * ```
+ */
+ this.$get = ['$$cookieReader', '$$cookieWriter', function($$cookieReader, $$cookieWriter) {
+ return {
+ /**
+ * @ngdoc method
+ * @name $cookies#get
+ *
+ * @description
+ * Returns the value of given cookie key
+ *
+ * @param {string} key Id to use for lookup.
+ * @returns {string} Raw cookie value.
+ */
+ get: function(key) {
+ return $$cookieReader()[key];
+ },
+
+ /**
+ * @ngdoc method
+ * @name $cookies#getObject
+ *
+ * @description
+ * Returns the deserialized value of given cookie key
+ *
+ * @param {string} key Id to use for lookup.
+ * @returns {Object} Deserialized cookie value.
+ */
+ getObject: function(key) {
+ var value = this.get(key);
+ return value ? angular.fromJson(value) : value;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $cookies#getAll
+ *
+ * @description
+ * Returns a key value object with all the cookies
+ *
+ * @returns {Object} All cookies
+ */
+ getAll: function() {
+ return $$cookieReader();
+ },
+
+ /**
+ * @ngdoc method
+ * @name $cookies#put
+ *
+ * @description
+ * Sets a value for given cookie key
+ *
+ * @param {string} key Id for the `value`.
+ * @param {string} value Raw value to be stored.
+ * @param {Object=} options Options object.
+ * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}
+ */
+ put: function(key, value, options) {
+ $$cookieWriter(key, value, calcOptions(options));
+ },
+
+ /**
+ * @ngdoc method
+ * @name $cookies#putObject
+ *
+ * @description
+ * Serializes and sets a value for given cookie key
+ *
+ * @param {string} key Id for the `value`.
+ * @param {Object} value Value to be stored.
+ * @param {Object=} options Options object.
+ * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}
+ */
+ putObject: function(key, value, options) {
+ this.put(key, angular.toJson(value), options);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $cookies#remove
+ *
+ * @description
+ * Remove given cookie
+ *
+ * @param {string} key Id of the key-value pair to delete.
+ * @param {Object=} options Options object.
+ * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}
+ */
+ remove: function(key, options) {
+ $$cookieWriter(key, undefined, calcOptions(options));
+ }
+ };
+ }];
+ }]);
+
+angular.module('ngCookies').
+/**
+ * @ngdoc service
+ * @name $cookieStore
+ * @deprecated
+ * @requires $cookies
+ *
+ * @description
+ * Provides a key-value (string-object) storage, that is backed by session cookies.
+ * Objects put or retrieved from this storage are automatically serialized or
+ * deserialized by angular's toJson/fromJson.
+ *
+ * Requires the {@link ngCookies `ngCookies`} module to be installed.
+ *
+ * <div class="alert alert-danger">
+ * **Note:** The $cookieStore service is **deprecated**.
+ * Please use the {@link ngCookies.$cookies `$cookies`} service instead.
+ * </div>
+ *
+ * @example
+ *
+ * ```js
+ * angular.module('cookieStoreExample', ['ngCookies'])
+ * .controller('ExampleController', ['$cookieStore', function($cookieStore) {
+ * // Put cookie
+ * $cookieStore.put('myFavorite','oatmeal');
+ * // Get cookie
+ * var favoriteCookie = $cookieStore.get('myFavorite');
+ * // Removing a cookie
+ * $cookieStore.remove('myFavorite');
+ * }]);
+ * ```
+ */
+ factory('$cookieStore', ['$cookies', function($cookies) {
+
+ return {
+ /**
+ * @ngdoc method
+ * @name $cookieStore#get
+ *
+ * @description
+ * Returns the value of given cookie key
+ *
+ * @param {string} key Id to use for lookup.
+ * @returns {Object} Deserialized cookie value, undefined if the cookie does not exist.
+ */
+ get: function(key) {
+ return $cookies.getObject(key);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $cookieStore#put
+ *
+ * @description
+ * Sets a value for given cookie key
+ *
+ * @param {string} key Id for the `value`.
+ * @param {Object} value Value to be stored.
+ */
+ put: function(key, value) {
+ $cookies.putObject(key, value);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $cookieStore#remove
+ *
+ * @description
+ * Remove given cookie
+ *
+ * @param {string} key Id of the key-value pair to delete.
+ */
+ remove: function(key) {
+ $cookies.remove(key);
+ }
+ };
+
+ }]);
+
+/**
+ * @name $$cookieWriter
+ * @requires $document
+ *
+ * @description
+ * This is a private service for writing cookies
+ *
+ * @param {string} name Cookie name
+ * @param {string=} value Cookie value (if undefined, cookie will be deleted)
+ * @param {Object=} options Object with options that need to be stored for the cookie.
+ */
+function $$CookieWriter($document, $log, $browser) {
+ var cookiePath = $browser.baseHref();
+ var rawDocument = $document[0];
+
+ function buildCookieString(name, value, options) {
+ var path, expires;
+ options = options || {};
+ expires = options.expires;
+ path = angular.isDefined(options.path) ? options.path : cookiePath;
+ if (value === undefined) {
+ expires = 'Thu, 01 Jan 1970 00:00:00 GMT';
+ value = '';
+ }
+ if (angular.isString(expires)) {
+ expires = new Date(expires);
+ }
+
+ var str = encodeURIComponent(name) + '=' + encodeURIComponent(value);
+ str += path ? ';path=' + path : '';
+ str += options.domain ? ';domain=' + options.domain : '';
+ str += expires ? ';expires=' + expires.toUTCString() : '';
+ str += options.secure ? ';secure' : '';
+
+ // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:
+ // - 300 cookies
+ // - 20 cookies per unique domain
+ // - 4096 bytes per cookie
+ var cookieLength = str.length + 1;
+ if (cookieLength > 4096) {
+ $log.warn("Cookie '" + name +
+ "' possibly not set or overflowed because it was too large (" +
+ cookieLength + " > 4096 bytes)!");
+ }
+
+ return str;
+ }
+
+ return function(name, value, options) {
+ rawDocument.cookie = buildCookieString(name, value, options);
+ };
+}
+
+$$CookieWriter.$inject = ['$document', '$log', '$browser'];
+
+angular.module('ngCookies').provider('$$cookieWriter', function $$CookieWriterProvider() {
+ this.$get = $$CookieWriter;
+});
+
+
+})(window, window.angular);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-loader.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-loader.js
new file mode 100644
index 0000000..f117396
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-loader.js
@@ -0,0 +1,443 @@
+/**
+ * @license AngularJS v1.4.4
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+
+(function() {'use strict';
+ function isFunction(value) {return typeof value === 'function';};
+
+/**
+ * @description
+ *
+ * This object provides a utility for producing rich Error messages within
+ * Angular. It can be called as follows:
+ *
+ * var exampleMinErr = minErr('example');
+ * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
+ *
+ * The above creates an instance of minErr in the example namespace. The
+ * resulting error will have a namespaced error code of example.one. The
+ * resulting error will replace {0} with the value of foo, and {1} with the
+ * value of bar. The object is not restricted in the number of arguments it can
+ * take.
+ *
+ * If fewer arguments are specified than necessary for interpolation, the extra
+ * interpolation markers will be preserved in the final string.
+ *
+ * Since data will be parsed statically during a build step, some restrictions
+ * are applied with respect to how minErr instances are created and called.
+ * Instances should have names of the form namespaceMinErr for a minErr created
+ * using minErr('namespace') . Error codes, namespaces and template strings
+ * should all be static strings, not variables or general expressions.
+ *
+ * @param {string} module The namespace to use for the new minErr instance.
+ * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
+ * error from returned function, for cases when a particular type of error is useful.
+ * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
+ */
+
+function minErr(module, ErrorConstructor) {
+ ErrorConstructor = ErrorConstructor || Error;
+ return function() {
+ var SKIP_INDEXES = 2;
+
+ var templateArgs = arguments,
+ code = templateArgs[0],
+ message = '[' + (module ? module + ':' : '') + code + '] ',
+ template = templateArgs[1],
+ paramPrefix, i;
+
+ message += template.replace(/\{\d+\}/g, function(match) {
+ var index = +match.slice(1, -1),
+ shiftedIndex = index + SKIP_INDEXES;
+
+ if (shiftedIndex < templateArgs.length) {
+ return toDebugString(templateArgs[shiftedIndex]);
+ }
+
+ return match;
+ });
+
+ message += '\nhttp://errors.angularjs.org/1.4.4/' +
+ (module ? module + '/' : '') + code;
+
+ for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
+ message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' +
+ encodeURIComponent(toDebugString(templateArgs[i]));
+ }
+
+ return new ErrorConstructor(message);
+ };
+}
+
+/**
+ * @ngdoc type
+ * @name angular.Module
+ * @module ng
+ * @description
+ *
+ * Interface for configuring angular {@link angular.module modules}.
+ */
+
+function setupModuleLoader(window) {
+
+ var $injectorMinErr = minErr('$injector');
+ var ngMinErr = minErr('ng');
+
+ function ensure(obj, name, factory) {
+ return obj[name] || (obj[name] = factory());
+ }
+
+ var angular = ensure(window, 'angular', Object);
+
+ // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
+ angular.$$minErr = angular.$$minErr || minErr;
+
+ return ensure(angular, 'module', function() {
+ /** @type {Object.<string, angular.Module>} */
+ var modules = {};
+
+ /**
+ * @ngdoc function
+ * @name angular.module
+ * @module ng
+ * @description
+ *
+ * The `angular.module` is a global place for creating, registering and retrieving Angular
+ * modules.
+ * All modules (angular core or 3rd party) that should be available to an application must be
+ * registered using this mechanism.
+ *
+ * Passing one argument retrieves an existing {@link angular.Module},
+ * whereas passing more than one argument creates a new {@link angular.Module}
+ *
+ *
+ * # Module
+ *
+ * A module is a collection of services, directives, controllers, filters, and configuration information.
+ * `angular.module` is used to configure the {@link auto.$injector $injector}.
+ *
+ * ```js
+ * // Create a new module
+ * var myModule = angular.module('myModule', []);
+ *
+ * // register a new service
+ * myModule.value('appName', 'MyCoolApp');
+ *
+ * // configure existing services inside initialization blocks.
+ * myModule.config(['$locationProvider', function($locationProvider) {
+ * // Configure existing providers
+ * $locationProvider.hashPrefix('!');
+ * }]);
+ * ```
+ *
+ * Then you can create an injector and load your modules like this:
+ *
+ * ```js
+ * var injector = angular.injector(['ng', 'myModule'])
+ * ```
+ *
+ * However it's more likely that you'll just use
+ * {@link ng.directive:ngApp ngApp} or
+ * {@link angular.bootstrap} to simplify this process for you.
+ *
+ * @param {!string} name The name of the module to create or retrieve.
+ * @param {!Array.<string>=} requires If specified then new module is being created. If
+ * unspecified then the module is being retrieved for further configuration.
+ * @param {Function=} configFn Optional configuration function for the module. Same as
+ * {@link angular.Module#config Module#config()}.
+ * @returns {module} new module with the {@link angular.Module} api.
+ */
+ return function module(name, requires, configFn) {
+ var assertNotHasOwnProperty = function(name, context) {
+ if (name === 'hasOwnProperty') {
+ throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
+ }
+ };
+
+ assertNotHasOwnProperty(name, 'module');
+ if (requires && modules.hasOwnProperty(name)) {
+ modules[name] = null;
+ }
+ return ensure(modules, name, function() {
+ if (!requires) {
+ throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
+ "the module name or forgot to load it. If registering a module ensure that you " +
+ "specify the dependencies as the second argument.", name);
+ }
+
+ /** @type {!Array.<Array.<*>>} */
+ var invokeQueue = [];
+
+ /** @type {!Array.<Function>} */
+ var configBlocks = [];
+
+ /** @type {!Array.<Function>} */
+ var runBlocks = [];
+
+ var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
+
+ /** @type {angular.Module} */
+ var moduleInstance = {
+ // Private state
+ _invokeQueue: invokeQueue,
+ _configBlocks: configBlocks,
+ _runBlocks: runBlocks,
+
+ /**
+ * @ngdoc property
+ * @name angular.Module#requires
+ * @module ng
+ *
+ * @description
+ * Holds the list of modules which the injector will load before the current module is
+ * loaded.
+ */
+ requires: requires,
+
+ /**
+ * @ngdoc property
+ * @name angular.Module#name
+ * @module ng
+ *
+ * @description
+ * Name of the module.
+ */
+ name: name,
+
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#provider
+ * @module ng
+ * @param {string} name service name
+ * @param {Function} providerType Construction function for creating new instance of the
+ * service.
+ * @description
+ * See {@link auto.$provide#provider $provide.provider()}.
+ */
+ provider: invokeLaterAndSetModuleName('$provide', 'provider'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#factory
+ * @module ng
+ * @param {string} name service name
+ * @param {Function} providerFunction Function for creating new instance of the service.
+ * @description
+ * See {@link auto.$provide#factory $provide.factory()}.
+ */
+ factory: invokeLaterAndSetModuleName('$provide', 'factory'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#service
+ * @module ng
+ * @param {string} name service name
+ * @param {Function} constructor A constructor function that will be instantiated.
+ * @description
+ * See {@link auto.$provide#service $provide.service()}.
+ */
+ service: invokeLaterAndSetModuleName('$provide', 'service'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#value
+ * @module ng
+ * @param {string} name service name
+ * @param {*} object Service instance object.
+ * @description
+ * See {@link auto.$provide#value $provide.value()}.
+ */
+ value: invokeLater('$provide', 'value'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#constant
+ * @module ng
+ * @param {string} name constant name
+ * @param {*} object Constant value.
+ * @description
+ * Because the constant are fixed, they get applied before other provide methods.
+ * See {@link auto.$provide#constant $provide.constant()}.
+ */
+ constant: invokeLater('$provide', 'constant', 'unshift'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#decorator
+ * @module ng
+ * @param {string} The name of the service to decorate.
+ * @param {Function} This function will be invoked when the service needs to be
+ * instantiated and should return the decorated service instance.
+ * @description
+ * See {@link auto.$provide#decorator $provide.decorator()}.
+ */
+ decorator: invokeLaterAndSetModuleName('$provide', 'decorator'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#animation
+ * @module ng
+ * @param {string} name animation name
+ * @param {Function} animationFactory Factory function for creating new instance of an
+ * animation.
+ * @description
+ *
+ * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
+ *
+ *
+ * Defines an animation hook that can be later used with
+ * {@link $animate $animate} service and directives that use this service.
+ *
+ * ```js
+ * module.animation('.animation-name', function($inject1, $inject2) {
+ * return {
+ * eventName : function(element, done) {
+ * //code to run the animation
+ * //once complete, then run done()
+ * return function cancellationFunction(element) {
+ * //code to cancel the animation
+ * }
+ * }
+ * }
+ * })
+ * ```
+ *
+ * See {@link ng.$animateProvider#register $animateProvider.register()} and
+ * {@link ngAnimate ngAnimate module} for more information.
+ */
+ animation: invokeLaterAndSetModuleName('$animateProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#filter
+ * @module ng
+ * @param {string} name Filter name - this must be a valid angular expression identifier
+ * @param {Function} filterFactory Factory function for creating new instance of filter.
+ * @description
+ * See {@link ng.$filterProvider#register $filterProvider.register()}.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
+ * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
+ * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
+ * (`myapp_subsection_filterx`).
+ * </div>
+ */
+ filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#controller
+ * @module ng
+ * @param {string|Object} name Controller name, or an object map of controllers where the
+ * keys are the names and the values are the constructors.
+ * @param {Function} constructor Controller constructor function.
+ * @description
+ * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
+ */
+ controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#directive
+ * @module ng
+ * @param {string|Object} name Directive name, or an object map of directives where the
+ * keys are the names and the values are the factories.
+ * @param {Function} directiveFactory Factory function for creating new instance of
+ * directives.
+ * @description
+ * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
+ */
+ directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#config
+ * @module ng
+ * @param {Function} configFn Execute this function on module load. Useful for service
+ * configuration.
+ * @description
+ * Use this method to register work which needs to be performed on module loading.
+ * For more about how to configure services, see
+ * {@link providers#provider-recipe Provider Recipe}.
+ */
+ config: config,
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#run
+ * @module ng
+ * @param {Function} initializationFn Execute this function after injector creation.
+ * Useful for application initialization.
+ * @description
+ * Use this method to register work which should be performed when the injector is done
+ * loading all modules.
+ */
+ run: function(block) {
+ runBlocks.push(block);
+ return this;
+ }
+ };
+
+ if (configFn) {
+ config(configFn);
+ }
+
+ return moduleInstance;
+
+ /**
+ * @param {string} provider
+ * @param {string} method
+ * @param {String=} insertMethod
+ * @returns {angular.Module}
+ */
+ function invokeLater(provider, method, insertMethod, queue) {
+ if (!queue) queue = invokeQueue;
+ return function() {
+ queue[insertMethod || 'push']([provider, method, arguments]);
+ return moduleInstance;
+ };
+ }
+
+ /**
+ * @param {string} provider
+ * @param {string} method
+ * @returns {angular.Module}
+ */
+ function invokeLaterAndSetModuleName(provider, method) {
+ return function(recipeName, factoryFunction) {
+ if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;
+ invokeQueue.push([provider, method, arguments]);
+ return moduleInstance;
+ };
+ }
+ });
+ };
+ });
+
+}
+
+setupModuleLoader(window);
+})(window);
+
+/**
+ * Closure compiler type information
+ *
+ * @typedef { {
+ * requires: !Array.<string>,
+ * invokeQueue: !Array.<Array.<*>>,
+ *
+ * service: function(string, Function):angular.Module,
+ * factory: function(string, Function):angular.Module,
+ * value: function(string, *):angular.Module,
+ *
+ * filter: function(string, Function):angular.Module,
+ *
+ * init: function(Function):angular.Module
+ * } }
+ */
+angular.Module;
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-mocks.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-mocks.js
new file mode 100644
index 0000000..8b7c1f2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-mocks.js
@@ -0,0 +1,2433 @@
+/**
+ * @license AngularJS v1.4.4
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular, undefined) {
+
+'use strict';
+
+/**
+ * @ngdoc object
+ * @name angular.mock
+ * @description
+ *
+ * Namespace from 'angular-mocks.js' which contains testing related code.
+ */
+angular.mock = {};
+
+/**
+ * ! This is a private undocumented service !
+ *
+ * @name $browser
+ *
+ * @description
+ * This service is a mock implementation of {@link ng.$browser}. It provides fake
+ * implementation for commonly used browser apis that are hard to test, e.g. setTimeout, xhr,
+ * cookies, etc...
+ *
+ * The api of this service is the same as that of the real {@link ng.$browser $browser}, except
+ * that there are several helper methods available which can be used in tests.
+ */
+angular.mock.$BrowserProvider = function() {
+ this.$get = function() {
+ return new angular.mock.$Browser();
+ };
+};
+
+angular.mock.$Browser = function() {
+ var self = this;
+
+ this.isMock = true;
+ self.$$url = "http://server/";
+ self.$$lastUrl = self.$$url; // used by url polling fn
+ self.pollFns = [];
+
+ // TODO(vojta): remove this temporary api
+ self.$$completeOutstandingRequest = angular.noop;
+ self.$$incOutstandingRequestCount = angular.noop;
+
+
+ // register url polling fn
+
+ self.onUrlChange = function(listener) {
+ self.pollFns.push(
+ function() {
+ if (self.$$lastUrl !== self.$$url || self.$$state !== self.$$lastState) {
+ self.$$lastUrl = self.$$url;
+ self.$$lastState = self.$$state;
+ listener(self.$$url, self.$$state);
+ }
+ }
+ );
+
+ return listener;
+ };
+
+ self.$$applicationDestroyed = angular.noop;
+ self.$$checkUrlChange = angular.noop;
+
+ self.deferredFns = [];
+ self.deferredNextId = 0;
+
+ self.defer = function(fn, delay) {
+ delay = delay || 0;
+ self.deferredFns.push({time:(self.defer.now + delay), fn:fn, id: self.deferredNextId});
+ self.deferredFns.sort(function(a, b) { return a.time - b.time;});
+ return self.deferredNextId++;
+ };
+
+
+ /**
+ * @name $browser#defer.now
+ *
+ * @description
+ * Current milliseconds mock time.
+ */
+ self.defer.now = 0;
+
+
+ self.defer.cancel = function(deferId) {
+ var fnIndex;
+
+ angular.forEach(self.deferredFns, function(fn, index) {
+ if (fn.id === deferId) fnIndex = index;
+ });
+
+ if (fnIndex !== undefined) {
+ self.deferredFns.splice(fnIndex, 1);
+ return true;
+ }
+
+ return false;
+ };
+
+
+ /**
+ * @name $browser#defer.flush
+ *
+ * @description
+ * Flushes all pending requests and executes the defer callbacks.
+ *
+ * @param {number=} number of milliseconds to flush. See {@link #defer.now}
+ */
+ self.defer.flush = function(delay) {
+ if (angular.isDefined(delay)) {
+ self.defer.now += delay;
+ } else {
+ if (self.deferredFns.length) {
+ self.defer.now = self.deferredFns[self.deferredFns.length - 1].time;
+ } else {
+ throw new Error('No deferred tasks to be flushed');
+ }
+ }
+
+ while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
+ self.deferredFns.shift().fn();
+ }
+ };
+
+ self.$$baseHref = '/';
+ self.baseHref = function() {
+ return this.$$baseHref;
+ };
+};
+angular.mock.$Browser.prototype = {
+
+/**
+ * @name $browser#poll
+ *
+ * @description
+ * run all fns in pollFns
+ */
+ poll: function poll() {
+ angular.forEach(this.pollFns, function(pollFn) {
+ pollFn();
+ });
+ },
+
+ url: function(url, replace, state) {
+ if (angular.isUndefined(state)) {
+ state = null;
+ }
+ if (url) {
+ this.$$url = url;
+ // Native pushState serializes & copies the object; simulate it.
+ this.$$state = angular.copy(state);
+ return this;
+ }
+
+ return this.$$url;
+ },
+
+ state: function() {
+ return this.$$state;
+ },
+
+ notifyWhenNoOutstandingRequests: function(fn) {
+ fn();
+ }
+};
+
+
+/**
+ * @ngdoc provider
+ * @name $exceptionHandlerProvider
+ *
+ * @description
+ * Configures the mock implementation of {@link ng.$exceptionHandler} to rethrow or to log errors
+ * passed to the `$exceptionHandler`.
+ */
+
+/**
+ * @ngdoc service
+ * @name $exceptionHandler
+ *
+ * @description
+ * Mock implementation of {@link ng.$exceptionHandler} that rethrows or logs errors passed
+ * to it. See {@link ngMock.$exceptionHandlerProvider $exceptionHandlerProvider} for configuration
+ * information.
+ *
+ *
+ * ```js
+ * describe('$exceptionHandlerProvider', function() {
+ *
+ * it('should capture log messages and exceptions', function() {
+ *
+ * module(function($exceptionHandlerProvider) {
+ * $exceptionHandlerProvider.mode('log');
+ * });
+ *
+ * inject(function($log, $exceptionHandler, $timeout) {
+ * $timeout(function() { $log.log(1); });
+ * $timeout(function() { $log.log(2); throw 'banana peel'; });
+ * $timeout(function() { $log.log(3); });
+ * expect($exceptionHandler.errors).toEqual([]);
+ * expect($log.assertEmpty());
+ * $timeout.flush();
+ * expect($exceptionHandler.errors).toEqual(['banana peel']);
+ * expect($log.log.logs).toEqual([[1], [2], [3]]);
+ * });
+ * });
+ * });
+ * ```
+ */
+
+angular.mock.$ExceptionHandlerProvider = function() {
+ var handler;
+
+ /**
+ * @ngdoc method
+ * @name $exceptionHandlerProvider#mode
+ *
+ * @description
+ * Sets the logging mode.
+ *
+ * @param {string} mode Mode of operation, defaults to `rethrow`.
+ *
+ * - `log`: Sometimes it is desirable to test that an error is thrown, for this case the `log`
+ * mode stores an array of errors in `$exceptionHandler.errors`, to allow later
+ * assertion of them. See {@link ngMock.$log#assertEmpty assertEmpty()} and
+ * {@link ngMock.$log#reset reset()}
+ * - `rethrow`: If any errors are passed to the handler in tests, it typically means that there
+ * is a bug in the application or test, so this mock will make these tests fail.
+ * For any implementations that expect exceptions to be thrown, the `rethrow` mode
+ * will also maintain a log of thrown errors.
+ */
+ this.mode = function(mode) {
+
+ switch (mode) {
+ case 'log':
+ case 'rethrow':
+ var errors = [];
+ handler = function(e) {
+ if (arguments.length == 1) {
+ errors.push(e);
+ } else {
+ errors.push([].slice.call(arguments, 0));
+ }
+ if (mode === "rethrow") {
+ throw e;
+ }
+ };
+ handler.errors = errors;
+ break;
+ default:
+ throw new Error("Unknown mode '" + mode + "', only 'log'/'rethrow' modes are allowed!");
+ }
+ };
+
+ this.$get = function() {
+ return handler;
+ };
+
+ this.mode('rethrow');
+};
+
+
+/**
+ * @ngdoc service
+ * @name $log
+ *
+ * @description
+ * Mock implementation of {@link ng.$log} that gathers all logged messages in arrays
+ * (one array per logging level). These arrays are exposed as `logs` property of each of the
+ * level-specific log function, e.g. for level `error` the array is exposed as `$log.error.logs`.
+ *
+ */
+angular.mock.$LogProvider = function() {
+ var debug = true;
+
+ function concat(array1, array2, index) {
+ return array1.concat(Array.prototype.slice.call(array2, index));
+ }
+
+ this.debugEnabled = function(flag) {
+ if (angular.isDefined(flag)) {
+ debug = flag;
+ return this;
+ } else {
+ return debug;
+ }
+ };
+
+ this.$get = function() {
+ var $log = {
+ log: function() { $log.log.logs.push(concat([], arguments, 0)); },
+ warn: function() { $log.warn.logs.push(concat([], arguments, 0)); },
+ info: function() { $log.info.logs.push(concat([], arguments, 0)); },
+ error: function() { $log.error.logs.push(concat([], arguments, 0)); },
+ debug: function() {
+ if (debug) {
+ $log.debug.logs.push(concat([], arguments, 0));
+ }
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $log#reset
+ *
+ * @description
+ * Reset all of the logging arrays to empty.
+ */
+ $log.reset = function() {
+ /**
+ * @ngdoc property
+ * @name $log#log.logs
+ *
+ * @description
+ * Array of messages logged using {@link ng.$log#log `log()`}.
+ *
+ * @example
+ * ```js
+ * $log.log('Some Log');
+ * var first = $log.log.logs.unshift();
+ * ```
+ */
+ $log.log.logs = [];
+ /**
+ * @ngdoc property
+ * @name $log#info.logs
+ *
+ * @description
+ * Array of messages logged using {@link ng.$log#info `info()`}.
+ *
+ * @example
+ * ```js
+ * $log.info('Some Info');
+ * var first = $log.info.logs.unshift();
+ * ```
+ */
+ $log.info.logs = [];
+ /**
+ * @ngdoc property
+ * @name $log#warn.logs
+ *
+ * @description
+ * Array of messages logged using {@link ng.$log#warn `warn()`}.
+ *
+ * @example
+ * ```js
+ * $log.warn('Some Warning');
+ * var first = $log.warn.logs.unshift();
+ * ```
+ */
+ $log.warn.logs = [];
+ /**
+ * @ngdoc property
+ * @name $log#error.logs
+ *
+ * @description
+ * Array of messages logged using {@link ng.$log#error `error()`}.
+ *
+ * @example
+ * ```js
+ * $log.error('Some Error');
+ * var first = $log.error.logs.unshift();
+ * ```
+ */
+ $log.error.logs = [];
+ /**
+ * @ngdoc property
+ * @name $log#debug.logs
+ *
+ * @description
+ * Array of messages logged using {@link ng.$log#debug `debug()`}.
+ *
+ * @example
+ * ```js
+ * $log.debug('Some Error');
+ * var first = $log.debug.logs.unshift();
+ * ```
+ */
+ $log.debug.logs = [];
+ };
+
+ /**
+ * @ngdoc method
+ * @name $log#assertEmpty
+ *
+ * @description
+ * Assert that all of the logging methods have no logged messages. If any messages are present,
+ * an exception is thrown.
+ */
+ $log.assertEmpty = function() {
+ var errors = [];
+ angular.forEach(['error', 'warn', 'info', 'log', 'debug'], function(logLevel) {
+ angular.forEach($log[logLevel].logs, function(log) {
+ angular.forEach(log, function(logItem) {
+ errors.push('MOCK $log (' + logLevel + '): ' + String(logItem) + '\n' +
+ (logItem.stack || ''));
+ });
+ });
+ });
+ if (errors.length) {
+ errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or " +
+ "an expected log message was not checked and removed:");
+ errors.push('');
+ throw new Error(errors.join('\n---------\n'));
+ }
+ };
+
+ $log.reset();
+ return $log;
+ };
+};
+
+
+/**
+ * @ngdoc service
+ * @name $interval
+ *
+ * @description
+ * Mock implementation of the $interval service.
+ *
+ * Use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
+ * move forward by `millis` milliseconds and trigger any functions scheduled to run in that
+ * time.
+ *
+ * @param {function()} fn A function that should be called repeatedly.
+ * @param {number} delay Number of milliseconds between each function call.
+ * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
+ * indefinitely.
+ * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
+ * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
+ * @param {...*=} Pass additional parameters to the executed function.
+ * @returns {promise} A promise which will be notified on each iteration.
+ */
+angular.mock.$IntervalProvider = function() {
+ this.$get = ['$browser', '$rootScope', '$q', '$$q',
+ function($browser, $rootScope, $q, $$q) {
+ var repeatFns = [],
+ nextRepeatId = 0,
+ now = 0;
+
+ var $interval = function(fn, delay, count, invokeApply) {
+ var hasParams = arguments.length > 4,
+ args = hasParams ? Array.prototype.slice.call(arguments, 4) : [],
+ iteration = 0,
+ skipApply = (angular.isDefined(invokeApply) && !invokeApply),
+ deferred = (skipApply ? $$q : $q).defer(),
+ promise = deferred.promise;
+
+ count = (angular.isDefined(count)) ? count : 0;
+ promise.then(null, null, (!hasParams) ? fn : function() {
+ fn.apply(null, args);
+ });
+
+ promise.$$intervalId = nextRepeatId;
+
+ function tick() {
+ deferred.notify(iteration++);
+
+ if (count > 0 && iteration >= count) {
+ var fnIndex;
+ deferred.resolve(iteration);
+
+ angular.forEach(repeatFns, function(fn, index) {
+ if (fn.id === promise.$$intervalId) fnIndex = index;
+ });
+
+ if (fnIndex !== undefined) {
+ repeatFns.splice(fnIndex, 1);
+ }
+ }
+
+ if (skipApply) {
+ $browser.defer.flush();
+ } else {
+ $rootScope.$apply();
+ }
+ }
+
+ repeatFns.push({
+ nextTime:(now + delay),
+ delay: delay,
+ fn: tick,
+ id: nextRepeatId,
+ deferred: deferred
+ });
+ repeatFns.sort(function(a, b) { return a.nextTime - b.nextTime;});
+
+ nextRepeatId++;
+ return promise;
+ };
+ /**
+ * @ngdoc method
+ * @name $interval#cancel
+ *
+ * @description
+ * Cancels a task associated with the `promise`.
+ *
+ * @param {promise} promise A promise from calling the `$interval` function.
+ * @returns {boolean} Returns `true` if the task was successfully cancelled.
+ */
+ $interval.cancel = function(promise) {
+ if (!promise) return false;
+ var fnIndex;
+
+ angular.forEach(repeatFns, function(fn, index) {
+ if (fn.id === promise.$$intervalId) fnIndex = index;
+ });
+
+ if (fnIndex !== undefined) {
+ repeatFns[fnIndex].deferred.reject('canceled');
+ repeatFns.splice(fnIndex, 1);
+ return true;
+ }
+
+ return false;
+ };
+
+ /**
+ * @ngdoc method
+ * @name $interval#flush
+ * @description
+ *
+ * Runs interval tasks scheduled to be run in the next `millis` milliseconds.
+ *
+ * @param {number=} millis maximum timeout amount to flush up until.
+ *
+ * @return {number} The amount of time moved forward.
+ */
+ $interval.flush = function(millis) {
+ now += millis;
+ while (repeatFns.length && repeatFns[0].nextTime <= now) {
+ var task = repeatFns[0];
+ task.fn();
+ task.nextTime += task.delay;
+ repeatFns.sort(function(a, b) { return a.nextTime - b.nextTime;});
+ }
+ return millis;
+ };
+
+ return $interval;
+ }];
+};
+
+
+/* jshint -W101 */
+/* The R_ISO8061_STR regex is never going to fit into the 100 char limit!
+ * This directive should go inside the anonymous function but a bug in JSHint means that it would
+ * not be enacted early enough to prevent the warning.
+ */
+var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;
+
+function jsonStringToDate(string) {
+ var match;
+ if (match = string.match(R_ISO8061_STR)) {
+ var date = new Date(0),
+ tzHour = 0,
+ tzMin = 0;
+ if (match[9]) {
+ tzHour = toInt(match[9] + match[10]);
+ tzMin = toInt(match[9] + match[11]);
+ }
+ date.setUTCFullYear(toInt(match[1]), toInt(match[2]) - 1, toInt(match[3]));
+ date.setUTCHours(toInt(match[4] || 0) - tzHour,
+ toInt(match[5] || 0) - tzMin,
+ toInt(match[6] || 0),
+ toInt(match[7] || 0));
+ return date;
+ }
+ return string;
+}
+
+function toInt(str) {
+ return parseInt(str, 10);
+}
+
+function padNumber(num, digits, trim) {
+ var neg = '';
+ if (num < 0) {
+ neg = '-';
+ num = -num;
+ }
+ num = '' + num;
+ while (num.length < digits) num = '0' + num;
+ if (trim) {
+ num = num.substr(num.length - digits);
+ }
+ return neg + num;
+}
+
+
+/**
+ * @ngdoc type
+ * @name angular.mock.TzDate
+ * @description
+ *
+ * *NOTE*: this is not an injectable instance, just a globally available mock class of `Date`.
+ *
+ * Mock of the Date type which has its timezone specified via constructor arg.
+ *
+ * The main purpose is to create Date-like instances with timezone fixed to the specified timezone
+ * offset, so that we can test code that depends on local timezone settings without dependency on
+ * the time zone settings of the machine where the code is running.
+ *
+ * @param {number} offset Offset of the *desired* timezone in hours (fractions will be honored)
+ * @param {(number|string)} timestamp Timestamp representing the desired time in *UTC*
+ *
+ * @example
+ * !!!! WARNING !!!!!
+ * This is not a complete Date object so only methods that were implemented can be called safely.
+ * To make matters worse, TzDate instances inherit stuff from Date via a prototype.
+ *
+ * We do our best to intercept calls to "unimplemented" methods, but since the list of methods is
+ * incomplete we might be missing some non-standard methods. This can result in errors like:
+ * "Date.prototype.foo called on incompatible Object".
+ *
+ * ```js
+ * var newYearInBratislava = new TzDate(-1, '2009-12-31T23:00:00Z');
+ * newYearInBratislava.getTimezoneOffset() => -60;
+ * newYearInBratislava.getFullYear() => 2010;
+ * newYearInBratislava.getMonth() => 0;
+ * newYearInBratislava.getDate() => 1;
+ * newYearInBratislava.getHours() => 0;
+ * newYearInBratislava.getMinutes() => 0;
+ * newYearInBratislava.getSeconds() => 0;
+ * ```
+ *
+ */
+angular.mock.TzDate = function(offset, timestamp) {
+ var self = new Date(0);
+ if (angular.isString(timestamp)) {
+ var tsStr = timestamp;
+
+ self.origDate = jsonStringToDate(timestamp);
+
+ timestamp = self.origDate.getTime();
+ if (isNaN(timestamp)) {
+ throw {
+ name: "Illegal Argument",
+ message: "Arg '" + tsStr + "' passed into TzDate constructor is not a valid date string"
+ };
+ }
+ } else {
+ self.origDate = new Date(timestamp);
+ }
+
+ var localOffset = new Date(timestamp).getTimezoneOffset();
+ self.offsetDiff = localOffset * 60 * 1000 - offset * 1000 * 60 * 60;
+ self.date = new Date(timestamp + self.offsetDiff);
+
+ self.getTime = function() {
+ return self.date.getTime() - self.offsetDiff;
+ };
+
+ self.toLocaleDateString = function() {
+ return self.date.toLocaleDateString();
+ };
+
+ self.getFullYear = function() {
+ return self.date.getFullYear();
+ };
+
+ self.getMonth = function() {
+ return self.date.getMonth();
+ };
+
+ self.getDate = function() {
+ return self.date.getDate();
+ };
+
+ self.getHours = function() {
+ return self.date.getHours();
+ };
+
+ self.getMinutes = function() {
+ return self.date.getMinutes();
+ };
+
+ self.getSeconds = function() {
+ return self.date.getSeconds();
+ };
+
+ self.getMilliseconds = function() {
+ return self.date.getMilliseconds();
+ };
+
+ self.getTimezoneOffset = function() {
+ return offset * 60;
+ };
+
+ self.getUTCFullYear = function() {
+ return self.origDate.getUTCFullYear();
+ };
+
+ self.getUTCMonth = function() {
+ return self.origDate.getUTCMonth();
+ };
+
+ self.getUTCDate = function() {
+ return self.origDate.getUTCDate();
+ };
+
+ self.getUTCHours = function() {
+ return self.origDate.getUTCHours();
+ };
+
+ self.getUTCMinutes = function() {
+ return self.origDate.getUTCMinutes();
+ };
+
+ self.getUTCSeconds = function() {
+ return self.origDate.getUTCSeconds();
+ };
+
+ self.getUTCMilliseconds = function() {
+ return self.origDate.getUTCMilliseconds();
+ };
+
+ self.getDay = function() {
+ return self.date.getDay();
+ };
+
+ // provide this method only on browsers that already have it
+ if (self.toISOString) {
+ self.toISOString = function() {
+ return padNumber(self.origDate.getUTCFullYear(), 4) + '-' +
+ padNumber(self.origDate.getUTCMonth() + 1, 2) + '-' +
+ padNumber(self.origDate.getUTCDate(), 2) + 'T' +
+ padNumber(self.origDate.getUTCHours(), 2) + ':' +
+ padNumber(self.origDate.getUTCMinutes(), 2) + ':' +
+ padNumber(self.origDate.getUTCSeconds(), 2) + '.' +
+ padNumber(self.origDate.getUTCMilliseconds(), 3) + 'Z';
+ };
+ }
+
+ //hide all methods not implemented in this mock that the Date prototype exposes
+ var unimplementedMethods = ['getUTCDay',
+ 'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds',
+ 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',
+ 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds',
+ 'setYear', 'toDateString', 'toGMTString', 'toJSON', 'toLocaleFormat', 'toLocaleString',
+ 'toLocaleTimeString', 'toSource', 'toString', 'toTimeString', 'toUTCString', 'valueOf'];
+
+ angular.forEach(unimplementedMethods, function(methodName) {
+ self[methodName] = function() {
+ throw new Error("Method '" + methodName + "' is not implemented in the TzDate mock");
+ };
+ });
+
+ return self;
+};
+
+//make "tzDateInstance instanceof Date" return true
+angular.mock.TzDate.prototype = Date.prototype;
+/* jshint +W101 */
+
+angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
+
+ .config(['$provide', function($provide) {
+
+ $provide.factory('$$forceReflow', function() {
+ function reflowFn() {
+ reflowFn.totalReflows++;
+ }
+ reflowFn.totalReflows = 0;
+ return reflowFn;
+ });
+
+ $provide.decorator('$animate', ['$delegate', '$timeout', '$browser', '$$rAF', '$$forceReflow',
+ function($delegate, $timeout, $browser, $$rAF, $$forceReflow) {
+
+ var animate = {
+ queue: [],
+ cancel: $delegate.cancel,
+ get reflows() {
+ return $$forceReflow.totalReflows;
+ },
+ enabled: $delegate.enabled,
+ triggerCallbackEvents: function() {
+ $$rAF.flush();
+ },
+ triggerCallbackPromise: function() {
+ $timeout.flush(0);
+ },
+ triggerCallbacks: function() {
+ this.triggerCallbackEvents();
+ this.triggerCallbackPromise();
+ }
+ };
+
+ angular.forEach(
+ ['animate','enter','leave','move','addClass','removeClass','setClass'], function(method) {
+ animate[method] = function() {
+ animate.queue.push({
+ event: method,
+ element: arguments[0],
+ options: arguments[arguments.length - 1],
+ args: arguments
+ });
+ return $delegate[method].apply($delegate, arguments);
+ };
+ });
+
+ return animate;
+ }]);
+
+ }]);
+
+
+/**
+ * @ngdoc function
+ * @name angular.mock.dump
+ * @description
+ *
+ * *NOTE*: this is not an injectable instance, just a globally available function.
+ *
+ * Method for serializing common angular objects (scope, elements, etc..) into strings, useful for
+ * debugging.
+ *
+ * This method is also available on window, where it can be used to display objects on debug
+ * console.
+ *
+ * @param {*} object - any object to turn into string.
+ * @return {string} a serialized string of the argument
+ */
+angular.mock.dump = function(object) {
+ return serialize(object);
+
+ function serialize(object) {
+ var out;
+
+ if (angular.isElement(object)) {
+ object = angular.element(object);
+ out = angular.element('<div></div>');
+ angular.forEach(object, function(element) {
+ out.append(angular.element(element).clone());
+ });
+ out = out.html();
+ } else if (angular.isArray(object)) {
+ out = [];
+ angular.forEach(object, function(o) {
+ out.push(serialize(o));
+ });
+ out = '[ ' + out.join(', ') + ' ]';
+ } else if (angular.isObject(object)) {
+ if (angular.isFunction(object.$eval) && angular.isFunction(object.$apply)) {
+ out = serializeScope(object);
+ } else if (object instanceof Error) {
+ out = object.stack || ('' + object.name + ': ' + object.message);
+ } else {
+ // TODO(i): this prevents methods being logged,
+ // we should have a better way to serialize objects
+ out = angular.toJson(object, true);
+ }
+ } else {
+ out = String(object);
+ }
+
+ return out;
+ }
+
+ function serializeScope(scope, offset) {
+ offset = offset || ' ';
+ var log = [offset + 'Scope(' + scope.$id + '): {'];
+ for (var key in scope) {
+ if (Object.prototype.hasOwnProperty.call(scope, key) && !key.match(/^(\$|this)/)) {
+ log.push(' ' + key + ': ' + angular.toJson(scope[key]));
+ }
+ }
+ var child = scope.$$childHead;
+ while (child) {
+ log.push(serializeScope(child, offset + ' '));
+ child = child.$$nextSibling;
+ }
+ log.push('}');
+ return log.join('\n' + offset);
+ }
+};
+
+/**
+ * @ngdoc service
+ * @name $httpBackend
+ * @description
+ * Fake HTTP backend implementation suitable for unit testing applications that use the
+ * {@link ng.$http $http service}.
+ *
+ * *Note*: For fake HTTP backend implementation suitable for end-to-end testing or backend-less
+ * development please see {@link ngMockE2E.$httpBackend e2e $httpBackend mock}.
+ *
+ * During unit testing, we want our unit tests to run quickly and have no external dependencies so
+ * we don’t want to send [XHR](https://developer.mozilla.org/en/xmlhttprequest) or
+ * [JSONP](http://en.wikipedia.org/wiki/JSONP) requests to a real server. All we really need is
+ * to verify whether a certain request has been sent or not, or alternatively just let the
+ * application make requests, respond with pre-trained responses and assert that the end result is
+ * what we expect it to be.
+ *
+ * This mock implementation can be used to respond with static or dynamic responses via the
+ * `expect` and `when` apis and their shortcuts (`expectGET`, `whenPOST`, etc).
+ *
+ * When an Angular application needs some data from a server, it calls the $http service, which
+ * sends the request to a real server using $httpBackend service. With dependency injection, it is
+ * easy to inject $httpBackend mock (which has the same API as $httpBackend) and use it to verify
+ * the requests and respond with some testing data without sending a request to a real server.
+ *
+ * There are two ways to specify what test data should be returned as http responses by the mock
+ * backend when the code under test makes http requests:
+ *
+ * - `$httpBackend.expect` - specifies a request expectation
+ * - `$httpBackend.when` - specifies a backend definition
+ *
+ *
+ * # Request Expectations vs Backend Definitions
+ *
+ * Request expectations provide a way to make assertions about requests made by the application and
+ * to define responses for those requests. The test will fail if the expected requests are not made
+ * or they are made in the wrong order.
+ *
+ * Backend definitions allow you to define a fake backend for your application which doesn't assert
+ * if a particular request was made or not, it just returns a trained response if a request is made.
+ * The test will pass whether or not the request gets made during testing.
+ *
+ *
+ * <table class="table">
+ * <tr><th width="220px"></th><th>Request expectations</th><th>Backend definitions</th></tr>
+ * <tr>
+ * <th>Syntax</th>
+ * <td>.expect(...).respond(...)</td>
+ * <td>.when(...).respond(...)</td>
+ * </tr>
+ * <tr>
+ * <th>Typical usage</th>
+ * <td>strict unit tests</td>
+ * <td>loose (black-box) unit testing</td>
+ * </tr>
+ * <tr>
+ * <th>Fulfills multiple requests</th>
+ * <td>NO</td>
+ * <td>YES</td>
+ * </tr>
+ * <tr>
+ * <th>Order of requests matters</th>
+ * <td>YES</td>
+ * <td>NO</td>
+ * </tr>
+ * <tr>
+ * <th>Request required</th>
+ * <td>YES</td>
+ * <td>NO</td>
+ * </tr>
+ * <tr>
+ * <th>Response required</th>
+ * <td>optional (see below)</td>
+ * <td>YES</td>
+ * </tr>
+ * </table>
+ *
+ * In cases where both backend definitions and request expectations are specified during unit
+ * testing, the request expectations are evaluated first.
+ *
+ * If a request expectation has no response specified, the algorithm will search your backend
+ * definitions for an appropriate response.
+ *
+ * If a request didn't match any expectation or if the expectation doesn't have the response
+ * defined, the backend definitions are evaluated in sequential order to see if any of them match
+ * the request. The response from the first matched definition is returned.
+ *
+ *
+ * # Flushing HTTP requests
+ *
+ * The $httpBackend used in production always responds to requests asynchronously. If we preserved
+ * this behavior in unit testing, we'd have to create async unit tests, which are hard to write,
+ * to follow and to maintain. But neither can the testing mock respond synchronously; that would
+ * change the execution of the code under test. For this reason, the mock $httpBackend has a
+ * `flush()` method, which allows the test to explicitly flush pending requests. This preserves
+ * the async api of the backend, while allowing the test to execute synchronously.
+ *
+ *
+ * # Unit testing with mock $httpBackend
+ * The following code shows how to setup and use the mock backend when unit testing a controller.
+ * First we create the controller under test:
+ *
+ ```js
+ // The module code
+ angular
+ .module('MyApp', [])
+ .controller('MyController', MyController);
+
+ // The controller code
+ function MyController($scope, $http) {
+ var authToken;
+
+ $http.get('/auth.py').success(function(data, status, headers) {
+ authToken = headers('A-Token');
+ $scope.user = data;
+ });
+
+ $scope.saveMessage = function(message) {
+ var headers = { 'Authorization': authToken };
+ $scope.status = 'Saving...';
+
+ $http.post('/add-msg.py', message, { headers: headers } ).success(function(response) {
+ $scope.status = '';
+ }).error(function() {
+ $scope.status = 'ERROR!';
+ });
+ };
+ }
+ ```
+ *
+ * Now we setup the mock backend and create the test specs:
+ *
+ ```js
+ // testing controller
+ describe('MyController', function() {
+ var $httpBackend, $rootScope, createController, authRequestHandler;
+
+ // Set up the module
+ beforeEach(module('MyApp'));
+
+ beforeEach(inject(function($injector) {
+ // Set up the mock http service responses
+ $httpBackend = $injector.get('$httpBackend');
+ // backend definition common for all tests
+ authRequestHandler = $httpBackend.when('GET', '/auth.py')
+ .respond({userId: 'userX'}, {'A-Token': 'xxx'});
+
+ // Get hold of a scope (i.e. the root scope)
+ $rootScope = $injector.get('$rootScope');
+ // The $controller service is used to create instances of controllers
+ var $controller = $injector.get('$controller');
+
+ createController = function() {
+ return $controller('MyController', {'$scope' : $rootScope });
+ };
+ }));
+
+
+ afterEach(function() {
+ $httpBackend.verifyNoOutstandingExpectation();
+ $httpBackend.verifyNoOutstandingRequest();
+ });
+
+
+ it('should fetch authentication token', function() {
+ $httpBackend.expectGET('/auth.py');
+ var controller = createController();
+ $httpBackend.flush();
+ });
+
+
+ it('should fail authentication', function() {
+
+ // Notice how you can change the response even after it was set
+ authRequestHandler.respond(401, '');
+
+ $httpBackend.expectGET('/auth.py');
+ var controller = createController();
+ $httpBackend.flush();
+ expect($rootScope.status).toBe('Failed...');
+ });
+
+
+ it('should send msg to server', function() {
+ var controller = createController();
+ $httpBackend.flush();
+
+ // now you don’t care about the authentication, but
+ // the controller will still send the request and
+ // $httpBackend will respond without you having to
+ // specify the expectation and response for this request
+
+ $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
+ $rootScope.saveMessage('message content');
+ expect($rootScope.status).toBe('Saving...');
+ $httpBackend.flush();
+ expect($rootScope.status).toBe('');
+ });
+
+
+ it('should send auth header', function() {
+ var controller = createController();
+ $httpBackend.flush();
+
+ $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
+ // check if the header was sent, if it wasn't the expectation won't
+ // match the request and the test will fail
+ return headers['Authorization'] == 'xxx';
+ }).respond(201, '');
+
+ $rootScope.saveMessage('whatever');
+ $httpBackend.flush();
+ });
+ });
+ ```
+ */
+angular.mock.$HttpBackendProvider = function() {
+ this.$get = ['$rootScope', '$timeout', createHttpBackendMock];
+};
+
+/**
+ * General factory function for $httpBackend mock.
+ * Returns instance for unit testing (when no arguments specified):
+ * - passing through is disabled
+ * - auto flushing is disabled
+ *
+ * Returns instance for e2e testing (when `$delegate` and `$browser` specified):
+ * - passing through (delegating request to real backend) is enabled
+ * - auto flushing is enabled
+ *
+ * @param {Object=} $delegate Real $httpBackend instance (allow passing through if specified)
+ * @param {Object=} $browser Auto-flushing enabled if specified
+ * @return {Object} Instance of $httpBackend mock
+ */
+function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
+ var definitions = [],
+ expectations = [],
+ responses = [],
+ responsesPush = angular.bind(responses, responses.push),
+ copy = angular.copy;
+
+ function createResponse(status, data, headers, statusText) {
+ if (angular.isFunction(status)) return status;
+
+ return function() {
+ return angular.isNumber(status)
+ ? [status, data, headers, statusText]
+ : [200, status, data, headers];
+ };
+ }
+
+ // TODO(vojta): change params to: method, url, data, headers, callback
+ function $httpBackend(method, url, data, callback, headers, timeout, withCredentials) {
+ var xhr = new MockXhr(),
+ expectation = expectations[0],
+ wasExpected = false;
+
+ function prettyPrint(data) {
+ return (angular.isString(data) || angular.isFunction(data) || data instanceof RegExp)
+ ? data
+ : angular.toJson(data);
+ }
+
+ function wrapResponse(wrapped) {
+ if (!$browser && timeout) {
+ timeout.then ? timeout.then(handleTimeout) : $timeout(handleTimeout, timeout);
+ }
+
+ return handleResponse;
+
+ function handleResponse() {
+ var response = wrapped.response(method, url, data, headers);
+ xhr.$$respHeaders = response[2];
+ callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders(),
+ copy(response[3] || ''));
+ }
+
+ function handleTimeout() {
+ for (var i = 0, ii = responses.length; i < ii; i++) {
+ if (responses[i] === handleResponse) {
+ responses.splice(i, 1);
+ callback(-1, undefined, '');
+ break;
+ }
+ }
+ }
+ }
+
+ if (expectation && expectation.match(method, url)) {
+ if (!expectation.matchData(data)) {
+ throw new Error('Expected ' + expectation + ' with different data\n' +
+ 'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT: ' + data);
+ }
+
+ if (!expectation.matchHeaders(headers)) {
+ throw new Error('Expected ' + expectation + ' with different headers\n' +
+ 'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT: ' +
+ prettyPrint(headers));
+ }
+
+ expectations.shift();
+
+ if (expectation.response) {
+ responses.push(wrapResponse(expectation));
+ return;
+ }
+ wasExpected = true;
+ }
+
+ var i = -1, definition;
+ while ((definition = definitions[++i])) {
+ if (definition.match(method, url, data, headers || {})) {
+ if (definition.response) {
+ // if $browser specified, we do auto flush all requests
+ ($browser ? $browser.defer : responsesPush)(wrapResponse(definition));
+ } else if (definition.passThrough) {
+ $delegate(method, url, data, callback, headers, timeout, withCredentials);
+ } else throw new Error('No response defined !');
+ return;
+ }
+ }
+ throw wasExpected ?
+ new Error('No response defined !') :
+ new Error('Unexpected request: ' + method + ' ' + url + '\n' +
+ (expectation ? 'Expected ' + expectation : 'No more request expected'));
+ }
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#when
+ * @description
+ * Creates a new backend definition.
+ *
+ * @param {string} method HTTP method.
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
+ * data string and returns true if the data is as expected.
+ * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
+ * object and returns true if the headers match the current definition.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ *
+ * - respond –
+ * `{function([status,] data[, headers, statusText])
+ * | function(function(method, url, data, headers)}`
+ * – The respond method takes a set of static data to be returned or a function that can
+ * return an array containing response status (number), response data (string), response
+ * headers (Object), and the text for the status (string). The respond method returns the
+ * `requestHandler` object for possible overrides.
+ */
+ $httpBackend.when = function(method, url, data, headers) {
+ var definition = new MockHttpExpectation(method, url, data, headers),
+ chain = {
+ respond: function(status, data, headers, statusText) {
+ definition.passThrough = undefined;
+ definition.response = createResponse(status, data, headers, statusText);
+ return chain;
+ }
+ };
+
+ if ($browser) {
+ chain.passThrough = function() {
+ definition.response = undefined;
+ definition.passThrough = true;
+ return chain;
+ };
+ }
+
+ definitions.push(definition);
+ return chain;
+ };
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#whenGET
+ * @description
+ * Creates a new backend definition for GET requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#whenHEAD
+ * @description
+ * Creates a new backend definition for HEAD requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#whenDELETE
+ * @description
+ * Creates a new backend definition for DELETE requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#whenPOST
+ * @description
+ * Creates a new backend definition for POST requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
+ * data string and returns true if the data is as expected.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#whenPUT
+ * @description
+ * Creates a new backend definition for PUT requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
+ * data string and returns true if the data is as expected.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#whenJSONP
+ * @description
+ * Creates a new backend definition for JSONP requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+ createShortMethods('when');
+
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#expect
+ * @description
+ * Creates a new request expectation.
+ *
+ * @param {string} method HTTP method.
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+ * receives data string and returns true if the data is as expected, or Object if request body
+ * is in JSON format.
+ * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
+ * object and returns true if the headers match the current expectation.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ *
+ * - respond –
+ * `{function([status,] data[, headers, statusText])
+ * | function(function(method, url, data, headers)}`
+ * – The respond method takes a set of static data to be returned or a function that can
+ * return an array containing response status (number), response data (string), response
+ * headers (Object), and the text for the status (string). The respond method returns the
+ * `requestHandler` object for possible overrides.
+ */
+ $httpBackend.expect = function(method, url, data, headers) {
+ var expectation = new MockHttpExpectation(method, url, data, headers),
+ chain = {
+ respond: function(status, data, headers, statusText) {
+ expectation.response = createResponse(status, data, headers, statusText);
+ return chain;
+ }
+ };
+
+ expectations.push(expectation);
+ return chain;
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#expectGET
+ * @description
+ * Creates a new request expectation for GET requests. For more info see `expect()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {Object=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled. See #expect for more info.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#expectHEAD
+ * @description
+ * Creates a new request expectation for HEAD requests. For more info see `expect()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {Object=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#expectDELETE
+ * @description
+ * Creates a new request expectation for DELETE requests. For more info see `expect()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {Object=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#expectPOST
+ * @description
+ * Creates a new request expectation for POST requests. For more info see `expect()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+ * receives data string and returns true if the data is as expected, or Object if request body
+ * is in JSON format.
+ * @param {Object=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#expectPUT
+ * @description
+ * Creates a new request expectation for PUT requests. For more info see `expect()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+ * receives data string and returns true if the data is as expected, or Object if request body
+ * is in JSON format.
+ * @param {Object=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#expectPATCH
+ * @description
+ * Creates a new request expectation for PATCH requests. For more info see `expect()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+ * receives data string and returns true if the data is as expected, or Object if request body
+ * is in JSON format.
+ * @param {Object=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#expectJSONP
+ * @description
+ * Creates a new request expectation for JSONP requests. For more info see `expect()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives an url
+ * and returns true if the url matches the current definition.
+ * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+ * request is handled. You can save this object for later use and invoke `respond` again in
+ * order to change how a matched request is handled.
+ */
+ createShortMethods('expect');
+
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#flush
+ * @description
+ * Flushes all pending requests using the trained responses.
+ *
+ * @param {number=} count Number of responses to flush (in the order they arrived). If undefined,
+ * all pending requests will be flushed. If there are no pending requests when the flush method
+ * is called an exception is thrown (as this typically a sign of programming error).
+ */
+ $httpBackend.flush = function(count, digest) {
+ if (digest !== false) $rootScope.$digest();
+ if (!responses.length) throw new Error('No pending request to flush !');
+
+ if (angular.isDefined(count) && count !== null) {
+ while (count--) {
+ if (!responses.length) throw new Error('No more pending request to flush !');
+ responses.shift()();
+ }
+ } else {
+ while (responses.length) {
+ responses.shift()();
+ }
+ }
+ $httpBackend.verifyNoOutstandingExpectation(digest);
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#verifyNoOutstandingExpectation
+ * @description
+ * Verifies that all of the requests defined via the `expect` api were made. If any of the
+ * requests were not made, verifyNoOutstandingExpectation throws an exception.
+ *
+ * Typically, you would call this method following each test case that asserts requests using an
+ * "afterEach" clause.
+ *
+ * ```js
+ * afterEach($httpBackend.verifyNoOutstandingExpectation);
+ * ```
+ */
+ $httpBackend.verifyNoOutstandingExpectation = function(digest) {
+ if (digest !== false) $rootScope.$digest();
+ if (expectations.length) {
+ throw new Error('Unsatisfied requests: ' + expectations.join(', '));
+ }
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#verifyNoOutstandingRequest
+ * @description
+ * Verifies that there are no outstanding requests that need to be flushed.
+ *
+ * Typically, you would call this method following each test case that asserts requests using an
+ * "afterEach" clause.
+ *
+ * ```js
+ * afterEach($httpBackend.verifyNoOutstandingRequest);
+ * ```
+ */
+ $httpBackend.verifyNoOutstandingRequest = function() {
+ if (responses.length) {
+ throw new Error('Unflushed requests: ' + responses.length);
+ }
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $httpBackend#resetExpectations
+ * @description
+ * Resets all request expectations, but preserves all backend definitions. Typically, you would
+ * call resetExpectations during a multiple-phase test when you want to reuse the same instance of
+ * $httpBackend mock.
+ */
+ $httpBackend.resetExpectations = function() {
+ expectations.length = 0;
+ responses.length = 0;
+ };
+
+ return $httpBackend;
+
+
+ function createShortMethods(prefix) {
+ angular.forEach(['GET', 'DELETE', 'JSONP', 'HEAD'], function(method) {
+ $httpBackend[prefix + method] = function(url, headers) {
+ return $httpBackend[prefix](method, url, undefined, headers);
+ };
+ });
+
+ angular.forEach(['PUT', 'POST', 'PATCH'], function(method) {
+ $httpBackend[prefix + method] = function(url, data, headers) {
+ return $httpBackend[prefix](method, url, data, headers);
+ };
+ });
+ }
+}
+
+function MockHttpExpectation(method, url, data, headers) {
+
+ this.data = data;
+ this.headers = headers;
+
+ this.match = function(m, u, d, h) {
+ if (method != m) return false;
+ if (!this.matchUrl(u)) return false;
+ if (angular.isDefined(d) && !this.matchData(d)) return false;
+ if (angular.isDefined(h) && !this.matchHeaders(h)) return false;
+ return true;
+ };
+
+ this.matchUrl = function(u) {
+ if (!url) return true;
+ if (angular.isFunction(url.test)) return url.test(u);
+ if (angular.isFunction(url)) return url(u);
+ return url == u;
+ };
+
+ this.matchHeaders = function(h) {
+ if (angular.isUndefined(headers)) return true;
+ if (angular.isFunction(headers)) return headers(h);
+ return angular.equals(headers, h);
+ };
+
+ this.matchData = function(d) {
+ if (angular.isUndefined(data)) return true;
+ if (data && angular.isFunction(data.test)) return data.test(d);
+ if (data && angular.isFunction(data)) return data(d);
+ if (data && !angular.isString(data)) {
+ return angular.equals(angular.fromJson(angular.toJson(data)), angular.fromJson(d));
+ }
+ return data == d;
+ };
+
+ this.toString = function() {
+ return method + ' ' + url;
+ };
+}
+
+function createMockXhr() {
+ return new MockXhr();
+}
+
+function MockXhr() {
+
+ // hack for testing $http, $httpBackend
+ MockXhr.$$lastInstance = this;
+
+ this.open = function(method, url, async) {
+ this.$$method = method;
+ this.$$url = url;
+ this.$$async = async;
+ this.$$reqHeaders = {};
+ this.$$respHeaders = {};
+ };
+
+ this.send = function(data) {
+ this.$$data = data;
+ };
+
+ this.setRequestHeader = function(key, value) {
+ this.$$reqHeaders[key] = value;
+ };
+
+ this.getResponseHeader = function(name) {
+ // the lookup must be case insensitive,
+ // that's why we try two quick lookups first and full scan last
+ var header = this.$$respHeaders[name];
+ if (header) return header;
+
+ name = angular.lowercase(name);
+ header = this.$$respHeaders[name];
+ if (header) return header;
+
+ header = undefined;
+ angular.forEach(this.$$respHeaders, function(headerVal, headerName) {
+ if (!header && angular.lowercase(headerName) == name) header = headerVal;
+ });
+ return header;
+ };
+
+ this.getAllResponseHeaders = function() {
+ var lines = [];
+
+ angular.forEach(this.$$respHeaders, function(value, key) {
+ lines.push(key + ': ' + value);
+ });
+ return lines.join('\n');
+ };
+
+ this.abort = angular.noop;
+}
+
+
+/**
+ * @ngdoc service
+ * @name $timeout
+ * @description
+ *
+ * This service is just a simple decorator for {@link ng.$timeout $timeout} service
+ * that adds a "flush" and "verifyNoPendingTasks" methods.
+ */
+
+angular.mock.$TimeoutDecorator = ['$delegate', '$browser', function($delegate, $browser) {
+
+ /**
+ * @ngdoc method
+ * @name $timeout#flush
+ * @description
+ *
+ * Flushes the queue of pending tasks.
+ *
+ * @param {number=} delay maximum timeout amount to flush up until
+ */
+ $delegate.flush = function(delay) {
+ $browser.defer.flush(delay);
+ };
+
+ /**
+ * @ngdoc method
+ * @name $timeout#verifyNoPendingTasks
+ * @description
+ *
+ * Verifies that there are no pending tasks that need to be flushed.
+ */
+ $delegate.verifyNoPendingTasks = function() {
+ if ($browser.deferredFns.length) {
+ throw new Error('Deferred tasks to flush (' + $browser.deferredFns.length + '): ' +
+ formatPendingTasksAsString($browser.deferredFns));
+ }
+ };
+
+ function formatPendingTasksAsString(tasks) {
+ var result = [];
+ angular.forEach(tasks, function(task) {
+ result.push('{id: ' + task.id + ', ' + 'time: ' + task.time + '}');
+ });
+
+ return result.join(', ');
+ }
+
+ return $delegate;
+}];
+
+angular.mock.$RAFDecorator = ['$delegate', function($delegate) {
+ var queue = [];
+ var rafFn = function(fn) {
+ var index = queue.length;
+ queue.push(fn);
+ return function() {
+ queue.splice(index, 1);
+ };
+ };
+
+ rafFn.supported = $delegate.supported;
+
+ rafFn.flush = function() {
+ if (queue.length === 0) {
+ throw new Error('No rAF callbacks present');
+ }
+
+ var length = queue.length;
+ for (var i = 0; i < length; i++) {
+ queue[i]();
+ }
+
+ queue = queue.slice(i);
+ };
+
+ return rafFn;
+}];
+
+/**
+ *
+ */
+angular.mock.$RootElementProvider = function() {
+ this.$get = function() {
+ return angular.element('<div ng-app></div>');
+ };
+};
+
+/**
+ * @ngdoc service
+ * @name $controller
+ * @description
+ * A decorator for {@link ng.$controller} with additional `bindings` parameter, useful when testing
+ * controllers of directives that use {@link $compile#-bindtocontroller- `bindToController`}.
+ *
+ *
+ * ## Example
+ *
+ * ```js
+ *
+ * // Directive definition ...
+ *
+ * myMod.directive('myDirective', {
+ * controller: 'MyDirectiveController',
+ * bindToController: {
+ * name: '@'
+ * }
+ * });
+ *
+ *
+ * // Controller definition ...
+ *
+ * myMod.controller('MyDirectiveController', ['log', function($log) {
+ * $log.info(this.name);
+ * })];
+ *
+ *
+ * // In a test ...
+ *
+ * describe('myDirectiveController', function() {
+ * it('should write the bound name to the log', inject(function($controller, $log) {
+ * var ctrl = $controller('MyDirective', { /* no locals */ }, { name: 'Clark Kent' });
+ * expect(ctrl.name).toEqual('Clark Kent');
+ * expect($log.info.logs).toEqual(['Clark Kent']);
+ * });
+ * });
+ *
+ * ```
+ *
+ * @param {Function|string} constructor If called with a function then it's considered to be the
+ * controller constructor function. Otherwise it's considered to be a string which is used
+ * to retrieve the controller constructor using the following steps:
+ *
+ * * check if a controller with given name is registered via `$controllerProvider`
+ * * check if evaluating the string on the current scope returns a constructor
+ * * if $controllerProvider#allowGlobals, check `window[constructor]` on the global
+ * `window` object (not recommended)
+ *
+ * The string can use the `controller as property` syntax, where the controller instance is published
+ * as the specified property on the `scope`; the `scope` must be injected into `locals` param for this
+ * to work correctly.
+ *
+ * @param {Object} locals Injection locals for Controller.
+ * @param {Object=} bindings Properties to add to the controller before invoking the constructor. This is used
+ * to simulate the `bindToController` feature and simplify certain kinds of tests.
+ * @return {Object} Instance of given controller.
+ */
+angular.mock.$ControllerDecorator = ['$delegate', function($delegate) {
+ return function(expression, locals, later, ident) {
+ if (later && typeof later === 'object') {
+ var create = $delegate(expression, locals, true, ident);
+ angular.extend(create.instance, later);
+ return create();
+ }
+ return $delegate(expression, locals, later, ident);
+ };
+}];
+
+
+/**
+ * @ngdoc module
+ * @name ngMock
+ * @packageName angular-mocks
+ * @description
+ *
+ * # ngMock
+ *
+ * The `ngMock` module provides support to inject and mock Angular services into unit tests.
+ * In addition, ngMock also extends various core ng services such that they can be
+ * inspected and controlled in a synchronous manner within test code.
+ *
+ *
+ * <div doc-module-components="ngMock"></div>
+ *
+ */
+angular.module('ngMock', ['ng']).provider({
+ $browser: angular.mock.$BrowserProvider,
+ $exceptionHandler: angular.mock.$ExceptionHandlerProvider,
+ $log: angular.mock.$LogProvider,
+ $interval: angular.mock.$IntervalProvider,
+ $httpBackend: angular.mock.$HttpBackendProvider,
+ $rootElement: angular.mock.$RootElementProvider
+}).config(['$provide', function($provide) {
+ $provide.decorator('$timeout', angular.mock.$TimeoutDecorator);
+ $provide.decorator('$$rAF', angular.mock.$RAFDecorator);
+ $provide.decorator('$rootScope', angular.mock.$RootScopeDecorator);
+ $provide.decorator('$controller', angular.mock.$ControllerDecorator);
+}]);
+
+/**
+ * @ngdoc module
+ * @name ngMockE2E
+ * @module ngMockE2E
+ * @packageName angular-mocks
+ * @description
+ *
+ * The `ngMockE2E` is an angular module which contains mocks suitable for end-to-end testing.
+ * Currently there is only one mock present in this module -
+ * the {@link ngMockE2E.$httpBackend e2e $httpBackend} mock.
+ */
+angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
+ $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
+}]);
+
+/**
+ * @ngdoc service
+ * @name $httpBackend
+ * @module ngMockE2E
+ * @description
+ * Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of
+ * applications that use the {@link ng.$http $http service}.
+ *
+ * *Note*: For fake http backend implementation suitable for unit testing please see
+ * {@link ngMock.$httpBackend unit-testing $httpBackend mock}.
+ *
+ * This implementation can be used to respond with static or dynamic responses via the `when` api
+ * and its shortcuts (`whenGET`, `whenPOST`, etc) and optionally pass through requests to the
+ * real $httpBackend for specific requests (e.g. to interact with certain remote apis or to fetch
+ * templates from a webserver).
+ *
+ * As opposed to unit-testing, in an end-to-end testing scenario or in scenario when an application
+ * is being developed with the real backend api replaced with a mock, it is often desirable for
+ * certain category of requests to bypass the mock and issue a real http request (e.g. to fetch
+ * templates or static files from the webserver). To configure the backend with this behavior
+ * use the `passThrough` request handler of `when` instead of `respond`.
+ *
+ * Additionally, we don't want to manually have to flush mocked out requests like we do during unit
+ * testing. For this reason the e2e $httpBackend flushes mocked out requests
+ * automatically, closely simulating the behavior of the XMLHttpRequest object.
+ *
+ * To setup the application to run with this http backend, you have to create a module that depends
+ * on the `ngMockE2E` and your application modules and defines the fake backend:
+ *
+ * ```js
+ * myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
+ * myAppDev.run(function($httpBackend) {
+ * phones = [{name: 'phone1'}, {name: 'phone2'}];
+ *
+ * // returns the current list of phones
+ * $httpBackend.whenGET('/phones').respond(phones);
+ *
+ * // adds a new phone to the phones array
+ * $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
+ * var phone = angular.fromJson(data);
+ * phones.push(phone);
+ * return [200, phone, {}];
+ * });
+ * $httpBackend.whenGET(/^\/templates\//).passThrough();
+ * //...
+ * });
+ * ```
+ *
+ * Afterwards, bootstrap your app with this new module.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#when
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition.
+ *
+ * @param {string} method HTTP method.
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
+ * object and returns true if the headers match the current definition.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ * control how a matched request is handled. You can save this object for later use and invoke
+ * `respond` or `passThrough` again in order to change how a matched request is handled.
+ *
+ * - respond –
+ * `{function([status,] data[, headers, statusText])
+ * | function(function(method, url, data, headers)}`
+ * – The respond method takes a set of static data to be returned or a function that can return
+ * an array containing response status (number), response data (string), response headers
+ * (Object), and the text for the status (string).
+ * - passThrough – `{function()}` – Any request matching a backend definition with
+ * `passThrough` handler will be passed through to the real backend (an XHR request will be made
+ * to the server.)
+ * - Both methods return the `requestHandler` object for possible overrides.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenGET
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for GET requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ * control how a matched request is handled. You can save this object for later use and invoke
+ * `respond` or `passThrough` again in order to change how a matched request is handled.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenHEAD
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for HEAD requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ * control how a matched request is handled. You can save this object for later use and invoke
+ * `respond` or `passThrough` again in order to change how a matched request is handled.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenDELETE
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for DELETE requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ * control how a matched request is handled. You can save this object for later use and invoke
+ * `respond` or `passThrough` again in order to change how a matched request is handled.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenPOST
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for POST requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ * control how a matched request is handled. You can save this object for later use and invoke
+ * `respond` or `passThrough` again in order to change how a matched request is handled.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenPUT
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for PUT requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ * control how a matched request is handled. You can save this object for later use and invoke
+ * `respond` or `passThrough` again in order to change how a matched request is handled.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenPATCH
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for PATCH requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ * control how a matched request is handled. You can save this object for later use and invoke
+ * `respond` or `passThrough` again in order to change how a matched request is handled.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenJSONP
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for JSONP requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ * and returns true if the url matches the current definition.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ * control how a matched request is handled. You can save this object for later use and invoke
+ * `respond` or `passThrough` again in order to change how a matched request is handled.
+ */
+angular.mock.e2e = {};
+angular.mock.e2e.$httpBackendDecorator =
+ ['$rootScope', '$timeout', '$delegate', '$browser', createHttpBackendMock];
+
+
+/**
+ * @ngdoc type
+ * @name $rootScope.Scope
+ * @module ngMock
+ * @description
+ * {@link ng.$rootScope.Scope Scope} type decorated with helper methods useful for testing. These
+ * methods are automatically available on any {@link ng.$rootScope.Scope Scope} instance when
+ * `ngMock` module is loaded.
+ *
+ * In addition to all the regular `Scope` methods, the following helper methods are available:
+ */
+angular.mock.$RootScopeDecorator = ['$delegate', function($delegate) {
+
+ var $rootScopePrototype = Object.getPrototypeOf($delegate);
+
+ $rootScopePrototype.$countChildScopes = countChildScopes;
+ $rootScopePrototype.$countWatchers = countWatchers;
+
+ return $delegate;
+
+ // ------------------------------------------------------------------------------------------ //
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$countChildScopes
+ * @module ngMock
+ * @description
+ * Counts all the direct and indirect child scopes of the current scope.
+ *
+ * The current scope is excluded from the count. The count includes all isolate child scopes.
+ *
+ * @returns {number} Total number of child scopes.
+ */
+ function countChildScopes() {
+ // jshint validthis: true
+ var count = 0; // exclude the current scope
+ var pendingChildHeads = [this.$$childHead];
+ var currentScope;
+
+ while (pendingChildHeads.length) {
+ currentScope = pendingChildHeads.shift();
+
+ while (currentScope) {
+ count += 1;
+ pendingChildHeads.push(currentScope.$$childHead);
+ currentScope = currentScope.$$nextSibling;
+ }
+ }
+
+ return count;
+ }
+
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$countWatchers
+ * @module ngMock
+ * @description
+ * Counts all the watchers of direct and indirect child scopes of the current scope.
+ *
+ * The watchers of the current scope are included in the count and so are all the watchers of
+ * isolate child scopes.
+ *
+ * @returns {number} Total number of watchers.
+ */
+ function countWatchers() {
+ // jshint validthis: true
+ var count = this.$$watchers ? this.$$watchers.length : 0; // include the current scope
+ var pendingChildHeads = [this.$$childHead];
+ var currentScope;
+
+ while (pendingChildHeads.length) {
+ currentScope = pendingChildHeads.shift();
+
+ while (currentScope) {
+ count += currentScope.$$watchers ? currentScope.$$watchers.length : 0;
+ pendingChildHeads.push(currentScope.$$childHead);
+ currentScope = currentScope.$$nextSibling;
+ }
+ }
+
+ return count;
+ }
+}];
+
+
+if (window.jasmine || window.mocha) {
+
+ var currentSpec = null,
+ annotatedFunctions = [],
+ isSpecRunning = function() {
+ return !!currentSpec;
+ };
+
+ angular.mock.$$annotate = angular.injector.$$annotate;
+ angular.injector.$$annotate = function(fn) {
+ if (typeof fn === 'function' && !fn.$inject) {
+ annotatedFunctions.push(fn);
+ }
+ return angular.mock.$$annotate.apply(this, arguments);
+ };
+
+
+ (window.beforeEach || window.setup)(function() {
+ annotatedFunctions = [];
+ currentSpec = this;
+ });
+
+ (window.afterEach || window.teardown)(function() {
+ var injector = currentSpec.$injector;
+
+ annotatedFunctions.forEach(function(fn) {
+ delete fn.$inject;
+ });
+
+ angular.forEach(currentSpec.$modules, function(module) {
+ if (module && module.$$hashKey) {
+ module.$$hashKey = undefined;
+ }
+ });
+
+ currentSpec.$injector = null;
+ currentSpec.$modules = null;
+ currentSpec = null;
+
+ if (injector) {
+ injector.get('$rootElement').off();
+ }
+
+ // clean up jquery's fragment cache
+ angular.forEach(angular.element.fragments, function(val, key) {
+ delete angular.element.fragments[key];
+ });
+
+ MockXhr.$$lastInstance = null;
+
+ angular.forEach(angular.callbacks, function(val, key) {
+ delete angular.callbacks[key];
+ });
+ angular.callbacks.counter = 0;
+ });
+
+ /**
+ * @ngdoc function
+ * @name angular.mock.module
+ * @description
+ *
+ * *NOTE*: This function is also published on window for easy access.<br>
+ * *NOTE*: This function is declared ONLY WHEN running tests with jasmine or mocha
+ *
+ * This function registers a module configuration code. It collects the configuration information
+ * which will be used when the injector is created by {@link angular.mock.inject inject}.
+ *
+ * See {@link angular.mock.inject inject} for usage example
+ *
+ * @param {...(string|Function|Object)} fns any number of modules which are represented as string
+ * aliases or as anonymous module initialization functions. The modules are used to
+ * configure the injector. The 'ng' and 'ngMock' modules are automatically loaded. If an
+ * object literal is passed they will be registered as values in the module, the key being
+ * the module name and the value being what is returned.
+ */
+ window.module = angular.mock.module = function() {
+ var moduleFns = Array.prototype.slice.call(arguments, 0);
+ return isSpecRunning() ? workFn() : workFn;
+ /////////////////////
+ function workFn() {
+ if (currentSpec.$injector) {
+ throw new Error('Injector already created, can not register a module!');
+ } else {
+ var modules = currentSpec.$modules || (currentSpec.$modules = []);
+ angular.forEach(moduleFns, function(module) {
+ if (angular.isObject(module) && !angular.isArray(module)) {
+ modules.push(function($provide) {
+ angular.forEach(module, function(value, key) {
+ $provide.value(key, value);
+ });
+ });
+ } else {
+ modules.push(module);
+ }
+ });
+ }
+ }
+ };
+
+ /**
+ * @ngdoc function
+ * @name angular.mock.inject
+ * @description
+ *
+ * *NOTE*: This function is also published on window for easy access.<br>
+ * *NOTE*: This function is declared ONLY WHEN running tests with jasmine or mocha
+ *
+ * The inject function wraps a function into an injectable function. The inject() creates new
+ * instance of {@link auto.$injector $injector} per test, which is then used for
+ * resolving references.
+ *
+ *
+ * ## Resolving References (Underscore Wrapping)
+ * Often, we would like to inject a reference once, in a `beforeEach()` block and reuse this
+ * in multiple `it()` clauses. To be able to do this we must assign the reference to a variable
+ * that is declared in the scope of the `describe()` block. Since we would, most likely, want
+ * the variable to have the same name of the reference we have a problem, since the parameter
+ * to the `inject()` function would hide the outer variable.
+ *
+ * To help with this, the injected parameters can, optionally, be enclosed with underscores.
+ * These are ignored by the injector when the reference name is resolved.
+ *
+ * For example, the parameter `_myService_` would be resolved as the reference `myService`.
+ * Since it is available in the function body as _myService_, we can then assign it to a variable
+ * defined in an outer scope.
+ *
+ * ```
+ * // Defined out reference variable outside
+ * var myService;
+ *
+ * // Wrap the parameter in underscores
+ * beforeEach( inject( function(_myService_){
+ * myService = _myService_;
+ * }));
+ *
+ * // Use myService in a series of tests.
+ * it('makes use of myService', function() {
+ * myService.doStuff();
+ * });
+ *
+ * ```
+ *
+ * See also {@link angular.mock.module angular.mock.module}
+ *
+ * ## Example
+ * Example of what a typical jasmine tests looks like with the inject method.
+ * ```js
+ *
+ * angular.module('myApplicationModule', [])
+ * .value('mode', 'app')
+ * .value('version', 'v1.0.1');
+ *
+ *
+ * describe('MyApp', function() {
+ *
+ * // You need to load modules that you want to test,
+ * // it loads only the "ng" module by default.
+ * beforeEach(module('myApplicationModule'));
+ *
+ *
+ * // inject() is used to inject arguments of all given functions
+ * it('should provide a version', inject(function(mode, version) {
+ * expect(version).toEqual('v1.0.1');
+ * expect(mode).toEqual('app');
+ * }));
+ *
+ *
+ * // The inject and module method can also be used inside of the it or beforeEach
+ * it('should override a version and test the new version is injected', function() {
+ * // module() takes functions or strings (module aliases)
+ * module(function($provide) {
+ * $provide.value('version', 'overridden'); // override version here
+ * });
+ *
+ * inject(function(version) {
+ * expect(version).toEqual('overridden');
+ * });
+ * });
+ * });
+ *
+ * ```
+ *
+ * @param {...Function} fns any number of functions which will be injected using the injector.
+ */
+
+
+
+ var ErrorAddingDeclarationLocationStack = function(e, errorForStack) {
+ this.message = e.message;
+ this.name = e.name;
+ if (e.line) this.line = e.line;
+ if (e.sourceId) this.sourceId = e.sourceId;
+ if (e.stack && errorForStack)
+ this.stack = e.stack + '\n' + errorForStack.stack;
+ if (e.stackArray) this.stackArray = e.stackArray;
+ };
+ ErrorAddingDeclarationLocationStack.prototype.toString = Error.prototype.toString;
+
+ window.inject = angular.mock.inject = function() {
+ var blockFns = Array.prototype.slice.call(arguments, 0);
+ var errorForStack = new Error('Declaration Location');
+ return isSpecRunning() ? workFn.call(currentSpec) : workFn;
+ /////////////////////
+ function workFn() {
+ var modules = currentSpec.$modules || [];
+ var strictDi = !!currentSpec.$injectorStrict;
+ modules.unshift('ngMock');
+ modules.unshift('ng');
+ var injector = currentSpec.$injector;
+ if (!injector) {
+ if (strictDi) {
+ // If strictDi is enabled, annotate the providerInjector blocks
+ angular.forEach(modules, function(moduleFn) {
+ if (typeof moduleFn === "function") {
+ angular.injector.$$annotate(moduleFn);
+ }
+ });
+ }
+ injector = currentSpec.$injector = angular.injector(modules, strictDi);
+ currentSpec.$injectorStrict = strictDi;
+ }
+ for (var i = 0, ii = blockFns.length; i < ii; i++) {
+ if (currentSpec.$injectorStrict) {
+ // If the injector is strict / strictDi, and the spec wants to inject using automatic
+ // annotation, then annotate the function here.
+ injector.annotate(blockFns[i]);
+ }
+ try {
+ /* jshint -W040 *//* Jasmine explicitly provides a `this` object when calling functions */
+ injector.invoke(blockFns[i] || angular.noop, this);
+ /* jshint +W040 */
+ } catch (e) {
+ if (e.stack && errorForStack) {
+ throw new ErrorAddingDeclarationLocationStack(e, errorForStack);
+ }
+ throw e;
+ } finally {
+ errorForStack = null;
+ }
+ }
+ }
+ };
+
+
+ angular.mock.inject.strictDi = function(value) {
+ value = arguments.length ? !!value : true;
+ return isSpecRunning() ? workFn() : workFn;
+
+ function workFn() {
+ if (value !== currentSpec.$injectorStrict) {
+ if (currentSpec.$injector) {
+ throw new Error('Injector already created, can not modify strict annotations');
+ } else {
+ currentSpec.$injectorStrict = value;
+ }
+ }
+ }
+ };
+}
+
+
+})(window, window.angular);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-resource.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-resource.js
new file mode 100644
index 0000000..99903d2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-resource.js
@@ -0,0 +1,669 @@
+/**
+ * @license AngularJS v1.4.4
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular, undefined) {'use strict';
+
+var $resourceMinErr = angular.$$minErr('$resource');
+
+// Helper functions and regex to lookup a dotted path on an object
+// stopping at undefined/null. The path must be composed of ASCII
+// identifiers (just like $parse)
+var MEMBER_NAME_REGEX = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
+
+function isValidDottedPath(path) {
+ return (path != null && path !== '' && path !== 'hasOwnProperty' &&
+ MEMBER_NAME_REGEX.test('.' + path));
+}
+
+function lookupDottedPath(obj, path) {
+ if (!isValidDottedPath(path)) {
+ throw $resourceMinErr('badmember', 'Dotted member path "@{0}" is invalid.', path);
+ }
+ var keys = path.split('.');
+ for (var i = 0, ii = keys.length; i < ii && obj !== undefined; i++) {
+ var key = keys[i];
+ obj = (obj !== null) ? obj[key] : undefined;
+ }
+ return obj;
+}
+
+/**
+ * Create a shallow copy of an object and clear other fields from the destination
+ */
+function shallowClearAndCopy(src, dst) {
+ dst = dst || {};
+
+ angular.forEach(dst, function(value, key) {
+ delete dst[key];
+ });
+
+ for (var key in src) {
+ if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
+ dst[key] = src[key];
+ }
+ }
+
+ return dst;
+}
+
+/**
+ * @ngdoc module
+ * @name ngResource
+ * @description
+ *
+ * # ngResource
+ *
+ * The `ngResource` module provides interaction support with RESTful services
+ * via the $resource service.
+ *
+ *
+ * <div doc-module-components="ngResource"></div>
+ *
+ * See {@link ngResource.$resource `$resource`} for usage.
+ */
+
+/**
+ * @ngdoc service
+ * @name $resource
+ * @requires $http
+ *
+ * @description
+ * A factory which creates a resource object that lets you interact with
+ * [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources.
+ *
+ * The returned resource object has action methods which provide high-level behaviors without
+ * the need to interact with the low level {@link ng.$http $http} service.
+ *
+ * Requires the {@link ngResource `ngResource`} module to be installed.
+ *
+ * By default, trailing slashes will be stripped from the calculated URLs,
+ * which can pose problems with server backends that do not expect that
+ * behavior. This can be disabled by configuring the `$resourceProvider` like
+ * this:
+ *
+ * ```js
+ app.config(['$resourceProvider', function($resourceProvider) {
+ // Don't strip trailing slashes from calculated URLs
+ $resourceProvider.defaults.stripTrailingSlashes = false;
+ }]);
+ * ```
+ *
+ * @param {string} url A parameterized URL template with parameters prefixed by `:` as in
+ * `/user/:username`. If you are using a URL with a port number (e.g.
+ * `http://example.com:8080/api`), it will be respected.
+ *
+ * If you are using a url with a suffix, just add the suffix, like this:
+ * `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')`
+ * or even `$resource('http://example.com/resource/:resource_id.:format')`
+ * If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be
+ * collapsed down to a single `.`. If you need this sequence to appear and not collapse then you
+ * can escape it with `/\.`.
+ *
+ * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in
+ * `actions` methods. If any of the parameter value is a function, it will be executed every time
+ * when a param value needs to be obtained for a request (unless the param was overridden).
+ *
+ * Each key value in the parameter object is first bound to url template if present and then any
+ * excess keys are appended to the url search query after the `?`.
+ *
+ * Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in
+ * URL `/path/greet?salutation=Hello`.
+ *
+ * If the parameter value is prefixed with `@` then the value for that parameter will be extracted
+ * from the corresponding property on the `data` object (provided when calling an action method). For
+ * example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of `someParam`
+ * will be `data.someProp`.
+ *
+ * @param {Object.<Object>=} actions Hash with declaration of custom actions that should extend
+ * the default set of resource actions. The declaration should be created in the format of {@link
+ * ng.$http#usage $http.config}:
+ *
+ * {action1: {method:?, params:?, isArray:?, headers:?, ...},
+ * action2: {method:?, params:?, isArray:?, headers:?, ...},
+ * ...}
+ *
+ * Where:
+ *
+ * - **`action`** – {string} – The name of action. This name becomes the name of the method on
+ * your resource object.
+ * - **`method`** – {string} – Case insensitive HTTP method (e.g. `GET`, `POST`, `PUT`,
+ * `DELETE`, `JSONP`, etc).
+ * - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of
+ * the parameter value is a function, it will be executed every time when a param value needs to
+ * be obtained for a request (unless the param was overridden).
+ * - **`url`** – {string} – action specific `url` override. The url templating is supported just
+ * like for the resource-level urls.
+ * - **`isArray`** – {boolean=} – If true then the returned object for this action is an array,
+ * see `returns` section.
+ * - **`transformRequest`** –
+ * `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
+ * transform function or an array of such functions. The transform function takes the http
+ * request body and headers and returns its transformed (typically serialized) version.
+ * By default, transformRequest will contain one function that checks if the request data is
+ * an object and serializes to using `angular.toJson`. To prevent this behavior, set
+ * `transformRequest` to an empty array: `transformRequest: []`
+ * - **`transformResponse`** –
+ * `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
+ * transform function or an array of such functions. The transform function takes the http
+ * response body and headers and returns its transformed (typically deserialized) version.
+ * By default, transformResponse will contain one function that checks if the response looks like
+ * a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior, set
+ * `transformResponse` to an empty array: `transformResponse: []`
+ * - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
+ * GET request, otherwise if a cache instance built with
+ * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
+ * caching.
+ * - **`timeout`** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise} that
+ * should abort the request when resolved.
+ * - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the
+ * XHR object. See
+ * [requests with credentials](https://developer.mozilla.org/en/http_access_control#section_5)
+ * for more information.
+ * - **`responseType`** - `{string}` - see
+ * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).
+ * - **`interceptor`** - `{Object=}` - The interceptor object has two optional methods -
+ * `response` and `responseError`. Both `response` and `responseError` interceptors get called
+ * with `http response` object. See {@link ng.$http $http interceptors}.
+ *
+ * @param {Object} options Hash with custom settings that should extend the
+ * default `$resourceProvider` behavior. The only supported option is
+ *
+ * Where:
+ *
+ * - **`stripTrailingSlashes`** – {boolean} – If true then the trailing
+ * slashes from any calculated URL will be stripped. (Defaults to true.)
+ *
+ * @returns {Object} A resource "class" object with methods for the default set of resource actions
+ * optionally extended with custom `actions`. The default set contains these actions:
+ * ```js
+ * { 'get': {method:'GET'},
+ * 'save': {method:'POST'},
+ * 'query': {method:'GET', isArray:true},
+ * 'remove': {method:'DELETE'},
+ * 'delete': {method:'DELETE'} };
+ * ```
+ *
+ * Calling these methods invoke an {@link ng.$http} with the specified http method,
+ * destination and parameters. When the data is returned from the server then the object is an
+ * instance of the resource class. The actions `save`, `remove` and `delete` are available on it
+ * as methods with the `$` prefix. This allows you to easily perform CRUD operations (create,
+ * read, update, delete) on server-side data like this:
+ * ```js
+ * var User = $resource('/user/:userId', {userId:'@id'});
+ * var user = User.get({userId:123}, function() {
+ * user.abc = true;
+ * user.$save();
+ * });
+ * ```
+ *
+ * It is important to realize that invoking a $resource object method immediately returns an
+ * empty reference (object or array depending on `isArray`). Once the data is returned from the
+ * server the existing reference is populated with the actual data. This is a useful trick since
+ * usually the resource is assigned to a model which is then rendered by the view. Having an empty
+ * object results in no rendering, once the data arrives from the server then the object is
+ * populated with the data and the view automatically re-renders itself showing the new data. This
+ * means that in most cases one never has to write a callback function for the action methods.
+ *
+ * The action methods on the class object or instance object can be invoked with the following
+ * parameters:
+ *
+ * - HTTP GET "class" actions: `Resource.action([parameters], [success], [error])`
+ * - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])`
+ * - non-GET instance actions: `instance.$action([parameters], [success], [error])`
+ *
+ *
+ * Success callback is called with (value, responseHeaders) arguments, where the value is
+ * the populated resource instance or collection object. The error callback is called
+ * with (httpResponse) argument.
+ *
+ * Class actions return empty instance (with additional properties below).
+ * Instance actions return promise of the action.
+ *
+ * The Resource instances and collection have these additional properties:
+ *
+ * - `$promise`: the {@link ng.$q promise} of the original server interaction that created this
+ * instance or collection.
+ *
+ * On success, the promise is resolved with the same resource instance or collection object,
+ * updated with data from server. This makes it easy to use in
+ * {@link ngRoute.$routeProvider resolve section of $routeProvider.when()} to defer view
+ * rendering until the resource(s) are loaded.
+ *
+ * On failure, the promise is resolved with the {@link ng.$http http response} object, without
+ * the `resource` property.
+ *
+ * If an interceptor object was provided, the promise will instead be resolved with the value
+ * returned by the interceptor.
+ *
+ * - `$resolved`: `true` after first server interaction is completed (either with success or
+ * rejection), `false` before that. Knowing if the Resource has been resolved is useful in
+ * data-binding.
+ *
+ * @example
+ *
+ * # Credit card resource
+ *
+ * ```js
+ // Define CreditCard class
+ var CreditCard = $resource('/user/:userId/card/:cardId',
+ {userId:123, cardId:'@id'}, {
+ charge: {method:'POST', params:{charge:true}}
+ });
+
+ // We can retrieve a collection from the server
+ var cards = CreditCard.query(function() {
+ // GET: /user/123/card
+ // server returns: [ {id:456, number:'1234', name:'Smith'} ];
+
+ var card = cards[0];
+ // each item is an instance of CreditCard
+ expect(card instanceof CreditCard).toEqual(true);
+ card.name = "J. Smith";
+ // non GET methods are mapped onto the instances
+ card.$save();
+ // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'}
+ // server returns: {id:456, number:'1234', name: 'J. Smith'};
+
+ // our custom method is mapped as well.
+ card.$charge({amount:9.99});
+ // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'}
+ });
+
+ // we can create an instance as well
+ var newCard = new CreditCard({number:'0123'});
+ newCard.name = "Mike Smith";
+ newCard.$save();
+ // POST: /user/123/card {number:'0123', name:'Mike Smith'}
+ // server returns: {id:789, number:'0123', name: 'Mike Smith'};
+ expect(newCard.id).toEqual(789);
+ * ```
+ *
+ * The object returned from this function execution is a resource "class" which has "static" method
+ * for each action in the definition.
+ *
+ * Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and
+ * `headers`.
+ * When the data is returned from the server then the object is an instance of the resource type and
+ * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD
+ * operations (create, read, update, delete) on server-side data.
+
+ ```js
+ var User = $resource('/user/:userId', {userId:'@id'});
+ User.get({userId:123}, function(user) {
+ user.abc = true;
+ user.$save();
+ });
+ ```
+ *
+ * It's worth noting that the success callback for `get`, `query` and other methods gets passed
+ * in the response that came from the server as well as $http header getter function, so one
+ * could rewrite the above example and get access to http headers as:
+ *
+ ```js
+ var User = $resource('/user/:userId', {userId:'@id'});
+ User.get({userId:123}, function(u, getResponseHeaders){
+ u.abc = true;
+ u.$save(function(u, putResponseHeaders) {
+ //u => saved user object
+ //putResponseHeaders => $http header getter
+ });
+ });
+ ```
+ *
+ * You can also access the raw `$http` promise via the `$promise` property on the object returned
+ *
+ ```
+ var User = $resource('/user/:userId', {userId:'@id'});
+ User.get({userId:123})
+ .$promise.then(function(user) {
+ $scope.user = user;
+ });
+ ```
+
+ * # Creating a custom 'PUT' request
+ * In this example we create a custom method on our resource to make a PUT request
+ * ```js
+ * var app = angular.module('app', ['ngResource', 'ngRoute']);
+ *
+ * // Some APIs expect a PUT request in the format URL/object/ID
+ * // Here we are creating an 'update' method
+ * app.factory('Notes', ['$resource', function($resource) {
+ * return $resource('/notes/:id', null,
+ * {
+ * 'update': { method:'PUT' }
+ * });
+ * }]);
+ *
+ * // In our controller we get the ID from the URL using ngRoute and $routeParams
+ * // We pass in $routeParams and our Notes factory along with $scope
+ * app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
+ function($scope, $routeParams, Notes) {
+ * // First get a note object from the factory
+ * var note = Notes.get({ id:$routeParams.id });
+ * $id = note.id;
+ *
+ * // Now call update passing in the ID first then the object you are updating
+ * Notes.update({ id:$id }, note);
+ *
+ * // This will PUT /notes/ID with the note object in the request payload
+ * }]);
+ * ```
+ */
+angular.module('ngResource', ['ng']).
+ provider('$resource', function() {
+ var provider = this;
+
+ this.defaults = {
+ // Strip slashes by default
+ stripTrailingSlashes: true,
+
+ // Default actions configuration
+ actions: {
+ 'get': {method: 'GET'},
+ 'save': {method: 'POST'},
+ 'query': {method: 'GET', isArray: true},
+ 'remove': {method: 'DELETE'},
+ 'delete': {method: 'DELETE'}
+ }
+ };
+
+ this.$get = ['$http', '$q', function($http, $q) {
+
+ var noop = angular.noop,
+ forEach = angular.forEach,
+ extend = angular.extend,
+ copy = angular.copy,
+ isFunction = angular.isFunction;
+
+ /**
+ * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
+ * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set
+ * (pchar) allowed in path segments:
+ * segment = *pchar
+ * pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
+ * pct-encoded = "%" HEXDIG HEXDIG
+ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ * sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
+ * / "*" / "+" / "," / ";" / "="
+ */
+ function encodeUriSegment(val) {
+ return encodeUriQuery(val, true).
+ replace(/%26/gi, '&').
+ replace(/%3D/gi, '=').
+ replace(/%2B/gi, '+');
+ }
+
+
+ /**
+ * This method is intended for encoding *key* or *value* parts of query component. We need a
+ * custom method because encodeURIComponent is too aggressive and encodes stuff that doesn't
+ * have to be encoded per http://tools.ietf.org/html/rfc3986:
+ * query = *( pchar / "/" / "?" )
+ * pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
+ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ * pct-encoded = "%" HEXDIG HEXDIG
+ * sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
+ * / "*" / "+" / "," / ";" / "="
+ */
+ function encodeUriQuery(val, pctEncodeSpaces) {
+ return encodeURIComponent(val).
+ replace(/%40/gi, '@').
+ replace(/%3A/gi, ':').
+ replace(/%24/g, '$').
+ replace(/%2C/gi, ',').
+ replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
+ }
+
+ function Route(template, defaults) {
+ this.template = template;
+ this.defaults = extend({}, provider.defaults, defaults);
+ this.urlParams = {};
+ }
+
+ Route.prototype = {
+ setUrlParams: function(config, params, actionUrl) {
+ var self = this,
+ url = actionUrl || self.template,
+ val,
+ encodedVal;
+
+ var urlParams = self.urlParams = {};
+ forEach(url.split(/\W/), function(param) {
+ if (param === 'hasOwnProperty') {
+ throw $resourceMinErr('badname', "hasOwnProperty is not a valid parameter name.");
+ }
+ if (!(new RegExp("^\\d+$").test(param)) && param &&
+ (new RegExp("(^|[^\\\\]):" + param + "(\\W|$)").test(url))) {
+ urlParams[param] = true;
+ }
+ });
+ url = url.replace(/\\:/g, ':');
+
+ params = params || {};
+ forEach(self.urlParams, function(_, urlParam) {
+ val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam];
+ if (angular.isDefined(val) && val !== null) {
+ encodedVal = encodeUriSegment(val);
+ url = url.replace(new RegExp(":" + urlParam + "(\\W|$)", "g"), function(match, p1) {
+ return encodedVal + p1;
+ });
+ } else {
+ url = url.replace(new RegExp("(\/?):" + urlParam + "(\\W|$)", "g"), function(match,
+ leadingSlashes, tail) {
+ if (tail.charAt(0) == '/') {
+ return tail;
+ } else {
+ return leadingSlashes + tail;
+ }
+ });
+ }
+ });
+
+ // strip trailing slashes and set the url (unless this behavior is specifically disabled)
+ if (self.defaults.stripTrailingSlashes) {
+ url = url.replace(/\/+$/, '') || '/';
+ }
+
+ // then replace collapse `/.` if found in the last URL path segment before the query
+ // E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x`
+ url = url.replace(/\/\.(?=\w+($|\?))/, '.');
+ // replace escaped `/\.` with `/.`
+ config.url = url.replace(/\/\\\./, '/.');
+
+
+ // set params - delegate param encoding to $http
+ forEach(params, function(value, key) {
+ if (!self.urlParams[key]) {
+ config.params = config.params || {};
+ config.params[key] = value;
+ }
+ });
+ }
+ };
+
+
+ function resourceFactory(url, paramDefaults, actions, options) {
+ var route = new Route(url, options);
+
+ actions = extend({}, provider.defaults.actions, actions);
+
+ function extractParams(data, actionParams) {
+ var ids = {};
+ actionParams = extend({}, paramDefaults, actionParams);
+ forEach(actionParams, function(value, key) {
+ if (isFunction(value)) { value = value(); }
+ ids[key] = value && value.charAt && value.charAt(0) == '@' ?
+ lookupDottedPath(data, value.substr(1)) : value;
+ });
+ return ids;
+ }
+
+ function defaultResponseInterceptor(response) {
+ return response.resource;
+ }
+
+ function Resource(value) {
+ shallowClearAndCopy(value || {}, this);
+ }
+
+ Resource.prototype.toJSON = function() {
+ var data = extend({}, this);
+ delete data.$promise;
+ delete data.$resolved;
+ return data;
+ };
+
+ forEach(actions, function(action, name) {
+ var hasBody = /^(POST|PUT|PATCH)$/i.test(action.method);
+
+ Resource[name] = function(a1, a2, a3, a4) {
+ var params = {}, data, success, error;
+
+ /* jshint -W086 */ /* (purposefully fall through case statements) */
+ switch (arguments.length) {
+ case 4:
+ error = a4;
+ success = a3;
+ //fallthrough
+ case 3:
+ case 2:
+ if (isFunction(a2)) {
+ if (isFunction(a1)) {
+ success = a1;
+ error = a2;
+ break;
+ }
+
+ success = a2;
+ error = a3;
+ //fallthrough
+ } else {
+ params = a1;
+ data = a2;
+ success = a3;
+ break;
+ }
+ case 1:
+ if (isFunction(a1)) success = a1;
+ else if (hasBody) data = a1;
+ else params = a1;
+ break;
+ case 0: break;
+ default:
+ throw $resourceMinErr('badargs',
+ "Expected up to 4 arguments [params, data, success, error], got {0} arguments",
+ arguments.length);
+ }
+ /* jshint +W086 */ /* (purposefully fall through case statements) */
+
+ var isInstanceCall = this instanceof Resource;
+ var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data));
+ var httpConfig = {};
+ var responseInterceptor = action.interceptor && action.interceptor.response ||
+ defaultResponseInterceptor;
+ var responseErrorInterceptor = action.interceptor && action.interceptor.responseError ||
+ undefined;
+
+ forEach(action, function(value, key) {
+ if (key != 'params' && key != 'isArray' && key != 'interceptor') {
+ httpConfig[key] = copy(value);
+ }
+ });
+
+ if (hasBody) httpConfig.data = data;
+ route.setUrlParams(httpConfig,
+ extend({}, extractParams(data, action.params || {}), params),
+ action.url);
+
+ var promise = $http(httpConfig).then(function(response) {
+ var data = response.data,
+ promise = value.$promise;
+
+ if (data) {
+ // Need to convert action.isArray to boolean in case it is undefined
+ // jshint -W018
+ if (angular.isArray(data) !== (!!action.isArray)) {
+ throw $resourceMinErr('badcfg',
+ 'Error in resource configuration for action `{0}`. Expected response to ' +
+ 'contain an {1} but got an {2} (Request: {3} {4})', name, action.isArray ? 'array' : 'object',
+ angular.isArray(data) ? 'array' : 'object', httpConfig.method, httpConfig.url);
+ }
+ // jshint +W018
+ if (action.isArray) {
+ value.length = 0;
+ forEach(data, function(item) {
+ if (typeof item === "object") {
+ value.push(new Resource(item));
+ } else {
+ // Valid JSON values may be string literals, and these should not be converted
+ // into objects. These items will not have access to the Resource prototype
+ // methods, but unfortunately there
+ value.push(item);
+ }
+ });
+ } else {
+ shallowClearAndCopy(data, value);
+ value.$promise = promise;
+ }
+ }
+
+ value.$resolved = true;
+
+ response.resource = value;
+
+ return response;
+ }, function(response) {
+ value.$resolved = true;
+
+ (error || noop)(response);
+
+ return $q.reject(response);
+ });
+
+ promise = promise.then(
+ function(response) {
+ var value = responseInterceptor(response);
+ (success || noop)(value, response.headers);
+ return value;
+ },
+ responseErrorInterceptor);
+
+ if (!isInstanceCall) {
+ // we are creating instance / collection
+ // - set the initial promise
+ // - return the instance / collection
+ value.$promise = promise;
+ value.$resolved = false;
+
+ return value;
+ }
+
+ // instance call
+ return promise;
+ };
+
+
+ Resource.prototype['$' + name] = function(params, success, error) {
+ if (isFunction(params)) {
+ error = success; success = params; params = {};
+ }
+ var result = Resource[name].call(this, params, this, success, error);
+ return result.$promise || result;
+ };
+ });
+
+ Resource.bind = function(additionalParamDefaults) {
+ return resourceFactory(url, extend({}, paramDefaults, additionalParamDefaults), actions);
+ };
+
+ return Resource;
+ }
+
+ return resourceFactory;
+ }];
+ });
+
+
+})(window, window.angular);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-route.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-route.js
new file mode 100644
index 0000000..353e86f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-route.js
@@ -0,0 +1,992 @@
+/**
+ * @license AngularJS v1.4.4
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular, undefined) {'use strict';
+
+/**
+ * @ngdoc module
+ * @name ngRoute
+ * @description
+ *
+ * # ngRoute
+ *
+ * The `ngRoute` module provides routing and deeplinking services and directives for angular apps.
+ *
+ * ## Example
+ * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`.
+ *
+ *
+ * <div doc-module-components="ngRoute"></div>
+ */
+ /* global -ngRouteModule */
+var ngRouteModule = angular.module('ngRoute', ['ng']).
+ provider('$route', $RouteProvider),
+ $routeMinErr = angular.$$minErr('ngRoute');
+
+/**
+ * @ngdoc provider
+ * @name $routeProvider
+ *
+ * @description
+ *
+ * Used for configuring routes.
+ *
+ * ## Example
+ * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`.
+ *
+ * ## Dependencies
+ * Requires the {@link ngRoute `ngRoute`} module to be installed.
+ */
+function $RouteProvider() {
+ function inherit(parent, extra) {
+ return angular.extend(Object.create(parent), extra);
+ }
+
+ var routes = {};
+
+ /**
+ * @ngdoc method
+ * @name $routeProvider#when
+ *
+ * @param {string} path Route path (matched against `$location.path`). If `$location.path`
+ * contains redundant trailing slash or is missing one, the route will still match and the
+ * `$location.path` will be updated to add or drop the trailing slash to exactly match the
+ * route definition.
+ *
+ * * `path` can contain named groups starting with a colon: e.g. `:name`. All characters up
+ * to the next slash are matched and stored in `$routeParams` under the given `name`
+ * when the route matches.
+ * * `path` can contain named groups starting with a colon and ending with a star:
+ * e.g.`:name*`. All characters are eagerly stored in `$routeParams` under the given `name`
+ * when the route matches.
+ * * `path` can contain optional named groups with a question mark: e.g.`:name?`.
+ *
+ * For example, routes like `/color/:color/largecode/:largecode*\/edit` will match
+ * `/color/brown/largecode/code/with/slashes/edit` and extract:
+ *
+ * * `color: brown`
+ * * `largecode: code/with/slashes`.
+ *
+ *
+ * @param {Object} route Mapping information to be assigned to `$route.current` on route
+ * match.
+ *
+ * Object properties:
+ *
+ * - `controller` – `{(string|function()=}` – Controller fn that should be associated with
+ * newly created scope or the name of a {@link angular.Module#controller registered
+ * controller} if passed as a string.
+ * - `controllerAs` – `{string=}` – An identifier name for a reference to the controller.
+ * If present, the controller will be published to scope under the `controllerAs` name.
+ * - `template` – `{string=|function()=}` – html template as a string or a function that
+ * returns an html template as a string which should be used by {@link
+ * ngRoute.directive:ngView ngView} or {@link ng.directive:ngInclude ngInclude} directives.
+ * This property takes precedence over `templateUrl`.
+ *
+ * If `template` is a function, it will be called with the following parameters:
+ *
+ * - `{Array.<Object>}` - route parameters extracted from the current
+ * `$location.path()` by applying the current route
+ *
+ * - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html
+ * template that should be used by {@link ngRoute.directive:ngView ngView}.
+ *
+ * If `templateUrl` is a function, it will be called with the following parameters:
+ *
+ * - `{Array.<Object>}` - route parameters extracted from the current
+ * `$location.path()` by applying the current route
+ *
+ * - `resolve` - `{Object.<string, function>=}` - An optional map of dependencies which should
+ * be injected into the controller. If any of these dependencies are promises, the router
+ * will wait for them all to be resolved or one to be rejected before the controller is
+ * instantiated.
+ * If all the promises are resolved successfully, the values of the resolved promises are
+ * injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is
+ * fired. If any of the promises are rejected the
+ * {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired. The map object
+ * is:
+ *
+ * - `key` – `{string}`: a name of a dependency to be injected into the controller.
+ * - `factory` - `{string|function}`: If `string` then it is an alias for a service.
+ * Otherwise if function, then it is {@link auto.$injector#invoke injected}
+ * and the return value is treated as the dependency. If the result is a promise, it is
+ * resolved before its value is injected into the controller. Be aware that
+ * `ngRoute.$routeParams` will still refer to the previous route within these resolve
+ * functions. Use `$route.current.params` to access the new route parameters, instead.
+ *
+ * - `redirectTo` – {(string|function())=} – value to update
+ * {@link ng.$location $location} path with and trigger route redirection.
+ *
+ * If `redirectTo` is a function, it will be called with the following parameters:
+ *
+ * - `{Object.<string>}` - route parameters extracted from the current
+ * `$location.path()` by applying the current route templateUrl.
+ * - `{string}` - current `$location.path()`
+ * - `{Object}` - current `$location.search()`
+ *
+ * The custom `redirectTo` function is expected to return a string which will be used
+ * to update `$location.path()` and `$location.search()`.
+ *
+ * - `[reloadOnSearch=true]` - {boolean=} - reload route when only `$location.search()`
+ * or `$location.hash()` changes.
+ *
+ * If the option is set to `false` and url in the browser changes, then
+ * `$routeUpdate` event is broadcasted on the root scope.
+ *
+ * - `[caseInsensitiveMatch=false]` - {boolean=} - match routes without being case sensitive
+ *
+ * If the option is set to `true`, then the particular route can be matched without being
+ * case sensitive
+ *
+ * @returns {Object} self
+ *
+ * @description
+ * Adds a new route definition to the `$route` service.
+ */
+ this.when = function(path, route) {
+ //copy original route object to preserve params inherited from proto chain
+ var routeCopy = angular.copy(route);
+ if (angular.isUndefined(routeCopy.reloadOnSearch)) {
+ routeCopy.reloadOnSearch = true;
+ }
+ if (angular.isUndefined(routeCopy.caseInsensitiveMatch)) {
+ routeCopy.caseInsensitiveMatch = this.caseInsensitiveMatch;
+ }
+ routes[path] = angular.extend(
+ routeCopy,
+ path && pathRegExp(path, routeCopy)
+ );
+
+ // create redirection for trailing slashes
+ if (path) {
+ var redirectPath = (path[path.length - 1] == '/')
+ ? path.substr(0, path.length - 1)
+ : path + '/';
+
+ routes[redirectPath] = angular.extend(
+ {redirectTo: path},
+ pathRegExp(redirectPath, routeCopy)
+ );
+ }
+
+ return this;
+ };
+
+ /**
+ * @ngdoc property
+ * @name $routeProvider#caseInsensitiveMatch
+ * @description
+ *
+ * A boolean property indicating if routes defined
+ * using this provider should be matched using a case insensitive
+ * algorithm. Defaults to `false`.
+ */
+ this.caseInsensitiveMatch = false;
+
+ /**
+ * @param path {string} path
+ * @param opts {Object} options
+ * @return {?Object}
+ *
+ * @description
+ * Normalizes the given path, returning a regular expression
+ * and the original path.
+ *
+ * Inspired by pathRexp in visionmedia/express/lib/utils.js.
+ */
+ function pathRegExp(path, opts) {
+ var insensitive = opts.caseInsensitiveMatch,
+ ret = {
+ originalPath: path,
+ regexp: path
+ },
+ keys = ret.keys = [];
+
+ path = path
+ .replace(/([().])/g, '\\$1')
+ .replace(/(\/)?:(\w+)([\?\*])?/g, function(_, slash, key, option) {
+ var optional = option === '?' ? option : null;
+ var star = option === '*' ? option : null;
+ keys.push({ name: key, optional: !!optional });
+ slash = slash || '';
+ return ''
+ + (optional ? '' : slash)
+ + '(?:'
+ + (optional ? slash : '')
+ + (star && '(.+?)' || '([^/]+)')
+ + (optional || '')
+ + ')'
+ + (optional || '');
+ })
+ .replace(/([\/$\*])/g, '\\$1');
+
+ ret.regexp = new RegExp('^' + path + '$', insensitive ? 'i' : '');
+ return ret;
+ }
+
+ /**
+ * @ngdoc method
+ * @name $routeProvider#otherwise
+ *
+ * @description
+ * Sets route definition that will be used on route change when no other route definition
+ * is matched.
+ *
+ * @param {Object|string} params Mapping information to be assigned to `$route.current`.
+ * If called with a string, the value maps to `redirectTo`.
+ * @returns {Object} self
+ */
+ this.otherwise = function(params) {
+ if (typeof params === 'string') {
+ params = {redirectTo: params};
+ }
+ this.when(null, params);
+ return this;
+ };
+
+
+ this.$get = ['$rootScope',
+ '$location',
+ '$routeParams',
+ '$q',
+ '$injector',
+ '$templateRequest',
+ '$sce',
+ function($rootScope, $location, $routeParams, $q, $injector, $templateRequest, $sce) {
+
+ /**
+ * @ngdoc service
+ * @name $route
+ * @requires $location
+ * @requires $routeParams
+ *
+ * @property {Object} current Reference to the current route definition.
+ * The route definition contains:
+ *
+ * - `controller`: The controller constructor as define in route definition.
+ * - `locals`: A map of locals which is used by {@link ng.$controller $controller} service for
+ * controller instantiation. The `locals` contain
+ * the resolved values of the `resolve` map. Additionally the `locals` also contain:
+ *
+ * - `$scope` - The current route scope.
+ * - `$template` - The current route template HTML.
+ *
+ * @property {Object} routes Object with all route configuration Objects as its properties.
+ *
+ * @description
+ * `$route` is used for deep-linking URLs to controllers and views (HTML partials).
+ * It watches `$location.url()` and tries to map the path to an existing route definition.
+ *
+ * Requires the {@link ngRoute `ngRoute`} module to be installed.
+ *
+ * You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API.
+ *
+ * The `$route` service is typically used in conjunction with the
+ * {@link ngRoute.directive:ngView `ngView`} directive and the
+ * {@link ngRoute.$routeParams `$routeParams`} service.
+ *
+ * @example
+ * This example shows how changing the URL hash causes the `$route` to match a route against the
+ * URL, and the `ngView` pulls in the partial.
+ *
+ * <example name="$route-service" module="ngRouteExample"
+ * deps="angular-route.js" fixBase="true">
+ * <file name="index.html">
+ * <div ng-controller="MainController">
+ * Choose:
+ * <a href="Book/Moby">Moby</a> |
+ * <a href="Book/Moby/ch/1">Moby: Ch1</a> |
+ * <a href="Book/Gatsby">Gatsby</a> |
+ * <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> |
+ * <a href="Book/Scarlet">Scarlet Letter</a><br/>
+ *
+ * <div ng-view></div>
+ *
+ * <hr />
+ *
+ * <pre>$location.path() = {{$location.path()}}</pre>
+ * <pre>$route.current.templateUrl = {{$route.current.templateUrl}}</pre>
+ * <pre>$route.current.params = {{$route.current.params}}</pre>
+ * <pre>$route.current.scope.name = {{$route.current.scope.name}}</pre>
+ * <pre>$routeParams = {{$routeParams}}</pre>
+ * </div>
+ * </file>
+ *
+ * <file name="book.html">
+ * controller: {{name}}<br />
+ * Book Id: {{params.bookId}}<br />
+ * </file>
+ *
+ * <file name="chapter.html">
+ * controller: {{name}}<br />
+ * Book Id: {{params.bookId}}<br />
+ * Chapter Id: {{params.chapterId}}
+ * </file>
+ *
+ * <file name="script.js">
+ * angular.module('ngRouteExample', ['ngRoute'])
+ *
+ * .controller('MainController', function($scope, $route, $routeParams, $location) {
+ * $scope.$route = $route;
+ * $scope.$location = $location;
+ * $scope.$routeParams = $routeParams;
+ * })
+ *
+ * .controller('BookController', function($scope, $routeParams) {
+ * $scope.name = "BookController";
+ * $scope.params = $routeParams;
+ * })
+ *
+ * .controller('ChapterController', function($scope, $routeParams) {
+ * $scope.name = "ChapterController";
+ * $scope.params = $routeParams;
+ * })
+ *
+ * .config(function($routeProvider, $locationProvider) {
+ * $routeProvider
+ * .when('/Book/:bookId', {
+ * templateUrl: 'book.html',
+ * controller: 'BookController',
+ * resolve: {
+ * // I will cause a 1 second delay
+ * delay: function($q, $timeout) {
+ * var delay = $q.defer();
+ * $timeout(delay.resolve, 1000);
+ * return delay.promise;
+ * }
+ * }
+ * })
+ * .when('/Book/:bookId/ch/:chapterId', {
+ * templateUrl: 'chapter.html',
+ * controller: 'ChapterController'
+ * });
+ *
+ * // configure html5 to get links working on jsfiddle
+ * $locationProvider.html5Mode(true);
+ * });
+ *
+ * </file>
+ *
+ * <file name="protractor.js" type="protractor">
+ * it('should load and compile correct template', function() {
+ * element(by.linkText('Moby: Ch1')).click();
+ * var content = element(by.css('[ng-view]')).getText();
+ * expect(content).toMatch(/controller\: ChapterController/);
+ * expect(content).toMatch(/Book Id\: Moby/);
+ * expect(content).toMatch(/Chapter Id\: 1/);
+ *
+ * element(by.partialLinkText('Scarlet')).click();
+ *
+ * content = element(by.css('[ng-view]')).getText();
+ * expect(content).toMatch(/controller\: BookController/);
+ * expect(content).toMatch(/Book Id\: Scarlet/);
+ * });
+ * </file>
+ * </example>
+ */
+
+ /**
+ * @ngdoc event
+ * @name $route#$routeChangeStart
+ * @eventType broadcast on root scope
+ * @description
+ * Broadcasted before a route change. At this point the route services starts
+ * resolving all of the dependencies needed for the route change to occur.
+ * Typically this involves fetching the view template as well as any dependencies
+ * defined in `resolve` route property. Once all of the dependencies are resolved
+ * `$routeChangeSuccess` is fired.
+ *
+ * The route change (and the `$location` change that triggered it) can be prevented
+ * by calling `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on}
+ * for more details about event object.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {Route} next Future route information.
+ * @param {Route} current Current route information.
+ */
+
+ /**
+ * @ngdoc event
+ * @name $route#$routeChangeSuccess
+ * @eventType broadcast on root scope
+ * @description
+ * Broadcasted after a route change has happened successfully.
+ * The `resolve` dependencies are now available in the `current.locals` property.
+ *
+ * {@link ngRoute.directive:ngView ngView} listens for the directive
+ * to instantiate the controller and render the view.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {Route} current Current route information.
+ * @param {Route|Undefined} previous Previous route information, or undefined if current is
+ * first route entered.
+ */
+
+ /**
+ * @ngdoc event
+ * @name $route#$routeChangeError
+ * @eventType broadcast on root scope
+ * @description
+ * Broadcasted if any of the resolve promises are rejected.
+ *
+ * @param {Object} angularEvent Synthetic event object
+ * @param {Route} current Current route information.
+ * @param {Route} previous Previous route information.
+ * @param {Route} rejection Rejection of the promise. Usually the error of the failed promise.
+ */
+
+ /**
+ * @ngdoc event
+ * @name $route#$routeUpdate
+ * @eventType broadcast on root scope
+ * @description
+ * The `reloadOnSearch` property has been set to false, and we are reusing the same
+ * instance of the Controller.
+ *
+ * @param {Object} angularEvent Synthetic event object
+ * @param {Route} current Current/previous route information.
+ */
+
+ var forceReload = false,
+ preparedRoute,
+ preparedRouteIsUpdateOnly,
+ $route = {
+ routes: routes,
+
+ /**
+ * @ngdoc method
+ * @name $route#reload
+ *
+ * @description
+ * Causes `$route` service to reload the current route even if
+ * {@link ng.$location $location} hasn't changed.
+ *
+ * As a result of that, {@link ngRoute.directive:ngView ngView}
+ * creates new scope and reinstantiates the controller.
+ */
+ reload: function() {
+ forceReload = true;
+ $rootScope.$evalAsync(function() {
+ // Don't support cancellation of a reload for now...
+ prepareRoute();
+ commitRoute();
+ });
+ },
+
+ /**
+ * @ngdoc method
+ * @name $route#updateParams
+ *
+ * @description
+ * Causes `$route` service to update the current URL, replacing
+ * current route parameters with those specified in `newParams`.
+ * Provided property names that match the route's path segment
+ * definitions will be interpolated into the location's path, while
+ * remaining properties will be treated as query params.
+ *
+ * @param {!Object<string, string>} newParams mapping of URL parameter names to values
+ */
+ updateParams: function(newParams) {
+ if (this.current && this.current.$$route) {
+ newParams = angular.extend({}, this.current.params, newParams);
+ $location.path(interpolate(this.current.$$route.originalPath, newParams));
+ // interpolate modifies newParams, only query params are left
+ $location.search(newParams);
+ } else {
+ throw $routeMinErr('norout', 'Tried updating route when with no current route');
+ }
+ }
+ };
+
+ $rootScope.$on('$locationChangeStart', prepareRoute);
+ $rootScope.$on('$locationChangeSuccess', commitRoute);
+
+ return $route;
+
+ /////////////////////////////////////////////////////
+
+ /**
+ * @param on {string} current url
+ * @param route {Object} route regexp to match the url against
+ * @return {?Object}
+ *
+ * @description
+ * Check if the route matches the current url.
+ *
+ * Inspired by match in
+ * visionmedia/express/lib/router/router.js.
+ */
+ function switchRouteMatcher(on, route) {
+ var keys = route.keys,
+ params = {};
+
+ if (!route.regexp) return null;
+
+ var m = route.regexp.exec(on);
+ if (!m) return null;
+
+ for (var i = 1, len = m.length; i < len; ++i) {
+ var key = keys[i - 1];
+
+ var val = m[i];
+
+ if (key && val) {
+ params[key.name] = val;
+ }
+ }
+ return params;
+ }
+
+ function prepareRoute($locationEvent) {
+ var lastRoute = $route.current;
+
+ preparedRoute = parseRoute();
+ preparedRouteIsUpdateOnly = preparedRoute && lastRoute && preparedRoute.$$route === lastRoute.$$route
+ && angular.equals(preparedRoute.pathParams, lastRoute.pathParams)
+ && !preparedRoute.reloadOnSearch && !forceReload;
+
+ if (!preparedRouteIsUpdateOnly && (lastRoute || preparedRoute)) {
+ if ($rootScope.$broadcast('$routeChangeStart', preparedRoute, lastRoute).defaultPrevented) {
+ if ($locationEvent) {
+ $locationEvent.preventDefault();
+ }
+ }
+ }
+ }
+
+ function commitRoute() {
+ var lastRoute = $route.current;
+ var nextRoute = preparedRoute;
+
+ if (preparedRouteIsUpdateOnly) {
+ lastRoute.params = nextRoute.params;
+ angular.copy(lastRoute.params, $routeParams);
+ $rootScope.$broadcast('$routeUpdate', lastRoute);
+ } else if (nextRoute || lastRoute) {
+ forceReload = false;
+ $route.current = nextRoute;
+ if (nextRoute) {
+ if (nextRoute.redirectTo) {
+ if (angular.isString(nextRoute.redirectTo)) {
+ $location.path(interpolate(nextRoute.redirectTo, nextRoute.params)).search(nextRoute.params)
+ .replace();
+ } else {
+ $location.url(nextRoute.redirectTo(nextRoute.pathParams, $location.path(), $location.search()))
+ .replace();
+ }
+ }
+ }
+
+ $q.when(nextRoute).
+ then(function() {
+ if (nextRoute) {
+ var locals = angular.extend({}, nextRoute.resolve),
+ template, templateUrl;
+
+ angular.forEach(locals, function(value, key) {
+ locals[key] = angular.isString(value) ?
+ $injector.get(value) : $injector.invoke(value, null, null, key);
+ });
+
+ if (angular.isDefined(template = nextRoute.template)) {
+ if (angular.isFunction(template)) {
+ template = template(nextRoute.params);
+ }
+ } else if (angular.isDefined(templateUrl = nextRoute.templateUrl)) {
+ if (angular.isFunction(templateUrl)) {
+ templateUrl = templateUrl(nextRoute.params);
+ }
+ if (angular.isDefined(templateUrl)) {
+ nextRoute.loadedTemplateUrl = $sce.valueOf(templateUrl);
+ template = $templateRequest(templateUrl);
+ }
+ }
+ if (angular.isDefined(template)) {
+ locals['$template'] = template;
+ }
+ return $q.all(locals);
+ }
+ }).
+ then(function(locals) {
+ // after route change
+ if (nextRoute == $route.current) {
+ if (nextRoute) {
+ nextRoute.locals = locals;
+ angular.copy(nextRoute.params, $routeParams);
+ }
+ $rootScope.$broadcast('$routeChangeSuccess', nextRoute, lastRoute);
+ }
+ }, function(error) {
+ if (nextRoute == $route.current) {
+ $rootScope.$broadcast('$routeChangeError', nextRoute, lastRoute, error);
+ }
+ });
+ }
+ }
+
+
+ /**
+ * @returns {Object} the current active route, by matching it against the URL
+ */
+ function parseRoute() {
+ // Match a route
+ var params, match;
+ angular.forEach(routes, function(route, path) {
+ if (!match && (params = switchRouteMatcher($location.path(), route))) {
+ match = inherit(route, {
+ params: angular.extend({}, $location.search(), params),
+ pathParams: params});
+ match.$$route = route;
+ }
+ });
+ // No route matched; fallback to "otherwise" route
+ return match || routes[null] && inherit(routes[null], {params: {}, pathParams:{}});
+ }
+
+ /**
+ * @returns {string} interpolation of the redirect path with the parameters
+ */
+ function interpolate(string, params) {
+ var result = [];
+ angular.forEach((string || '').split(':'), function(segment, i) {
+ if (i === 0) {
+ result.push(segment);
+ } else {
+ var segmentMatch = segment.match(/(\w+)(?:[?*])?(.*)/);
+ var key = segmentMatch[1];
+ result.push(params[key]);
+ result.push(segmentMatch[2] || '');
+ delete params[key];
+ }
+ });
+ return result.join('');
+ }
+ }];
+}
+
+ngRouteModule.provider('$routeParams', $RouteParamsProvider);
+
+
+/**
+ * @ngdoc service
+ * @name $routeParams
+ * @requires $route
+ *
+ * @description
+ * The `$routeParams` service allows you to retrieve the current set of route parameters.
+ *
+ * Requires the {@link ngRoute `ngRoute`} module to be installed.
+ *
+ * The route parameters are a combination of {@link ng.$location `$location`}'s
+ * {@link ng.$location#search `search()`} and {@link ng.$location#path `path()`}.
+ * The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched.
+ *
+ * In case of parameter name collision, `path` params take precedence over `search` params.
+ *
+ * The service guarantees that the identity of the `$routeParams` object will remain unchanged
+ * (but its properties will likely change) even when a route change occurs.
+ *
+ * Note that the `$routeParams` are only updated *after* a route change completes successfully.
+ * This means that you cannot rely on `$routeParams` being correct in route resolve functions.
+ * Instead you can use `$route.current.params` to access the new route's parameters.
+ *
+ * @example
+ * ```js
+ * // Given:
+ * // URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby
+ * // Route: /Chapter/:chapterId/Section/:sectionId
+ * //
+ * // Then
+ * $routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'}
+ * ```
+ */
+function $RouteParamsProvider() {
+ this.$get = function() { return {}; };
+}
+
+ngRouteModule.directive('ngView', ngViewFactory);
+ngRouteModule.directive('ngView', ngViewFillContentFactory);
+
+
+/**
+ * @ngdoc directive
+ * @name ngView
+ * @restrict ECA
+ *
+ * @description
+ * # Overview
+ * `ngView` is a directive that complements the {@link ngRoute.$route $route} service by
+ * including the rendered template of the current route into the main layout (`index.html`) file.
+ * Every time the current route changes, the included view changes with it according to the
+ * configuration of the `$route` service.
+ *
+ * Requires the {@link ngRoute `ngRoute`} module to be installed.
+ *
+ * @animations
+ * enter - animation is used to bring new content into the browser.
+ * leave - animation is used to animate existing content away.
+ *
+ * The enter and leave animation occur concurrently.
+ *
+ * @scope
+ * @priority 400
+ * @param {string=} onload Expression to evaluate whenever the view updates.
+ *
+ * @param {string=} autoscroll Whether `ngView` should call {@link ng.$anchorScroll
+ * $anchorScroll} to scroll the viewport after the view is updated.
+ *
+ * - If the attribute is not set, disable scrolling.
+ * - If the attribute is set without value, enable scrolling.
+ * - Otherwise enable scrolling only if the `autoscroll` attribute value evaluated
+ * as an expression yields a truthy value.
+ * @example
+ <example name="ngView-directive" module="ngViewExample"
+ deps="angular-route.js;angular-animate.js"
+ animations="true" fixBase="true">
+ <file name="index.html">
+ <div ng-controller="MainCtrl as main">
+ Choose:
+ <a href="Book/Moby">Moby</a> |
+ <a href="Book/Moby/ch/1">Moby: Ch1</a> |
+ <a href="Book/Gatsby">Gatsby</a> |
+ <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> |
+ <a href="Book/Scarlet">Scarlet Letter</a><br/>
+
+ <div class="view-animate-container">
+ <div ng-view class="view-animate"></div>
+ </div>
+ <hr />
+
+ <pre>$location.path() = {{main.$location.path()}}</pre>
+ <pre>$route.current.templateUrl = {{main.$route.current.templateUrl}}</pre>
+ <pre>$route.current.params = {{main.$route.current.params}}</pre>
+ <pre>$routeParams = {{main.$routeParams}}</pre>
+ </div>
+ </file>
+
+ <file name="book.html">
+ <div>
+ controller: {{book.name}}<br />
+ Book Id: {{book.params.bookId}}<br />
+ </div>
+ </file>
+
+ <file name="chapter.html">
+ <div>
+ controller: {{chapter.name}}<br />
+ Book Id: {{chapter.params.bookId}}<br />
+ Chapter Id: {{chapter.params.chapterId}}
+ </div>
+ </file>
+
+ <file name="animations.css">
+ .view-animate-container {
+ position:relative;
+ height:100px!important;
+ background:white;
+ border:1px solid black;
+ height:40px;
+ overflow:hidden;
+ }
+
+ .view-animate {
+ padding:10px;
+ }
+
+ .view-animate.ng-enter, .view-animate.ng-leave {
+ -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
+
+ display:block;
+ width:100%;
+ border-left:1px solid black;
+
+ position:absolute;
+ top:0;
+ left:0;
+ right:0;
+ bottom:0;
+ padding:10px;
+ }
+
+ .view-animate.ng-enter {
+ left:100%;
+ }
+ .view-animate.ng-enter.ng-enter-active {
+ left:0;
+ }
+ .view-animate.ng-leave.ng-leave-active {
+ left:-100%;
+ }
+ </file>
+
+ <file name="script.js">
+ angular.module('ngViewExample', ['ngRoute', 'ngAnimate'])
+ .config(['$routeProvider', '$locationProvider',
+ function($routeProvider, $locationProvider) {
+ $routeProvider
+ .when('/Book/:bookId', {
+ templateUrl: 'book.html',
+ controller: 'BookCtrl',
+ controllerAs: 'book'
+ })
+ .when('/Book/:bookId/ch/:chapterId', {
+ templateUrl: 'chapter.html',
+ controller: 'ChapterCtrl',
+ controllerAs: 'chapter'
+ });
+
+ $locationProvider.html5Mode(true);
+ }])
+ .controller('MainCtrl', ['$route', '$routeParams', '$location',
+ function($route, $routeParams, $location) {
+ this.$route = $route;
+ this.$location = $location;
+ this.$routeParams = $routeParams;
+ }])
+ .controller('BookCtrl', ['$routeParams', function($routeParams) {
+ this.name = "BookCtrl";
+ this.params = $routeParams;
+ }])
+ .controller('ChapterCtrl', ['$routeParams', function($routeParams) {
+ this.name = "ChapterCtrl";
+ this.params = $routeParams;
+ }]);
+
+ </file>
+
+ <file name="protractor.js" type="protractor">
+ it('should load and compile correct template', function() {
+ element(by.linkText('Moby: Ch1')).click();
+ var content = element(by.css('[ng-view]')).getText();
+ expect(content).toMatch(/controller\: ChapterCtrl/);
+ expect(content).toMatch(/Book Id\: Moby/);
+ expect(content).toMatch(/Chapter Id\: 1/);
+
+ element(by.partialLinkText('Scarlet')).click();
+
+ content = element(by.css('[ng-view]')).getText();
+ expect(content).toMatch(/controller\: BookCtrl/);
+ expect(content).toMatch(/Book Id\: Scarlet/);
+ });
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc event
+ * @name ngView#$viewContentLoaded
+ * @eventType emit on the current ngView scope
+ * @description
+ * Emitted every time the ngView content is reloaded.
+ */
+ngViewFactory.$inject = ['$route', '$anchorScroll', '$animate'];
+function ngViewFactory($route, $anchorScroll, $animate) {
+ return {
+ restrict: 'ECA',
+ terminal: true,
+ priority: 400,
+ transclude: 'element',
+ link: function(scope, $element, attr, ctrl, $transclude) {
+ var currentScope,
+ currentElement,
+ previousLeaveAnimation,
+ autoScrollExp = attr.autoscroll,
+ onloadExp = attr.onload || '';
+
+ scope.$on('$routeChangeSuccess', update);
+ update();
+
+ function cleanupLastView() {
+ if (previousLeaveAnimation) {
+ $animate.cancel(previousLeaveAnimation);
+ previousLeaveAnimation = null;
+ }
+
+ if (currentScope) {
+ currentScope.$destroy();
+ currentScope = null;
+ }
+ if (currentElement) {
+ previousLeaveAnimation = $animate.leave(currentElement);
+ previousLeaveAnimation.then(function() {
+ previousLeaveAnimation = null;
+ });
+ currentElement = null;
+ }
+ }
+
+ function update() {
+ var locals = $route.current && $route.current.locals,
+ template = locals && locals.$template;
+
+ if (angular.isDefined(template)) {
+ var newScope = scope.$new();
+ var current = $route.current;
+
+ // Note: This will also link all children of ng-view that were contained in the original
+ // html. If that content contains controllers, ... they could pollute/change the scope.
+ // However, using ng-view on an element with additional content does not make sense...
+ // Note: We can't remove them in the cloneAttchFn of $transclude as that
+ // function is called before linking the content, which would apply child
+ // directives to non existing elements.
+ var clone = $transclude(newScope, function(clone) {
+ $animate.enter(clone, null, currentElement || $element).then(function onNgViewEnter() {
+ if (angular.isDefined(autoScrollExp)
+ && (!autoScrollExp || scope.$eval(autoScrollExp))) {
+ $anchorScroll();
+ }
+ });
+ cleanupLastView();
+ });
+
+ currentElement = clone;
+ currentScope = current.scope = newScope;
+ currentScope.$emit('$viewContentLoaded');
+ currentScope.$eval(onloadExp);
+ } else {
+ cleanupLastView();
+ }
+ }
+ }
+ };
+}
+
+// This directive is called during the $transclude call of the first `ngView` directive.
+// It will replace and compile the content of the element with the loaded template.
+// We need this directive so that the element content is already filled when
+// the link function of another directive on the same element as ngView
+// is called.
+ngViewFillContentFactory.$inject = ['$compile', '$controller', '$route'];
+function ngViewFillContentFactory($compile, $controller, $route) {
+ return {
+ restrict: 'ECA',
+ priority: -400,
+ link: function(scope, $element) {
+ var current = $route.current,
+ locals = current.locals;
+
+ $element.html(locals.$template);
+
+ var link = $compile($element.contents());
+
+ if (current.controller) {
+ locals.$scope = scope;
+ var controller = $controller(current.controller, locals);
+ if (current.controllerAs) {
+ scope[current.controllerAs] = controller;
+ }
+ $element.data('$ngControllerController', controller);
+ $element.children().data('$ngControllerController', controller);
+ }
+
+ link(scope);
+ }
+ };
+}
+
+
+})(window, window.angular);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-sanitize.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-sanitize.js
new file mode 100644
index 0000000..06d558c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-sanitize.js
@@ -0,0 +1,683 @@
+/**
+ * @license AngularJS v1.4.4
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular, undefined) {'use strict';
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Any commits to this file should be reviewed with security in mind. *
+ * Changes to this file can potentially create security vulnerabilities. *
+ * An approval from 2 Core members with history of modifying *
+ * this file is required. *
+ * *
+ * Does the change somehow allow for arbitrary javascript to be executed? *
+ * Or allows for someone to change the prototype of built-in objects? *
+ * Or gives undesired access to variables likes document or window? *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+var $sanitizeMinErr = angular.$$minErr('$sanitize');
+
+/**
+ * @ngdoc module
+ * @name ngSanitize
+ * @description
+ *
+ * # ngSanitize
+ *
+ * The `ngSanitize` module provides functionality to sanitize HTML.
+ *
+ *
+ * <div doc-module-components="ngSanitize"></div>
+ *
+ * See {@link ngSanitize.$sanitize `$sanitize`} for usage.
+ */
+
+/*
+ * HTML Parser By Misko Hevery (misko@hevery.com)
+ * based on: HTML Parser By John Resig (ejohn.org)
+ * Original code by Erik Arvidsson, Mozilla Public License
+ * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
+ *
+ * // Use like so:
+ * htmlParser(htmlString, {
+ * start: function(tag, attrs, unary) {},
+ * end: function(tag) {},
+ * chars: function(text) {},
+ * comment: function(text) {}
+ * });
+ *
+ */
+
+
+/**
+ * @ngdoc service
+ * @name $sanitize
+ * @kind function
+ *
+ * @description
+ * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are
+ * then serialized back to properly escaped html string. This means that no unsafe input can make
+ * it into the returned string, however, since our parser is more strict than a typical browser
+ * parser, it's possible that some obscure input, which would be recognized as valid HTML by a
+ * browser, won't make it through the sanitizer. The input may also contain SVG markup.
+ * The whitelist is configured using the functions `aHrefSanitizationWhitelist` and
+ * `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider `$compileProvider`}.
+ *
+ * @param {string} html HTML input.
+ * @returns {string} Sanitized HTML.
+ *
+ * @example
+ <example module="sanitizeExample" deps="angular-sanitize.js">
+ <file name="index.html">
+ <script>
+ angular.module('sanitizeExample', ['ngSanitize'])
+ .controller('ExampleController', ['$scope', '$sce', function($scope, $sce) {
+ $scope.snippet =
+ '<p style="color:blue">an html\n' +
+ '<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
+ 'snippet</p>';
+ $scope.deliberatelyTrustDangerousSnippet = function() {
+ return $sce.trustAsHtml($scope.snippet);
+ };
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
+ <table>
+ <tr>
+ <td>Directive</td>
+ <td>How</td>
+ <td>Source</td>
+ <td>Rendered</td>
+ </tr>
+ <tr id="bind-html-with-sanitize">
+ <td>ng-bind-html</td>
+ <td>Automatically uses $sanitize</td>
+ <td><pre><div ng-bind-html="snippet"><br/></div></pre></td>
+ <td><div ng-bind-html="snippet"></div></td>
+ </tr>
+ <tr id="bind-html-with-trust">
+ <td>ng-bind-html</td>
+ <td>Bypass $sanitize by explicitly trusting the dangerous value</td>
+ <td>
+ <pre><div ng-bind-html="deliberatelyTrustDangerousSnippet()">
+</div></pre>
+ </td>
+ <td><div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div></td>
+ </tr>
+ <tr id="bind-default">
+ <td>ng-bind</td>
+ <td>Automatically escapes</td>
+ <td><pre><div ng-bind="snippet"><br/></div></pre></td>
+ <td><div ng-bind="snippet"></div></td>
+ </tr>
+ </table>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should sanitize the html snippet by default', function() {
+ expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
+ toBe('<p>an html\n<em>click here</em>\nsnippet</p>');
+ });
+
+ it('should inline raw snippet if bound to a trusted value', function() {
+ expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).
+ toBe("<p style=\"color:blue\">an html\n" +
+ "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
+ "snippet</p>");
+ });
+
+ it('should escape snippet without any filter', function() {
+ expect(element(by.css('#bind-default div')).getInnerHtml()).
+ toBe("<p style=\"color:blue\">an html\n" +
+ "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
+ "snippet</p>");
+ });
+
+ it('should update', function() {
+ element(by.model('snippet')).clear();
+ element(by.model('snippet')).sendKeys('new <b onclick="alert(1)">text</b>');
+ expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
+ toBe('new <b>text</b>');
+ expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe(
+ 'new <b onclick="alert(1)">text</b>');
+ expect(element(by.css('#bind-default div')).getInnerHtml()).toBe(
+ "new <b onclick=\"alert(1)\">text</b>");
+ });
+ </file>
+ </example>
+ */
+function $SanitizeProvider() {
+ this.$get = ['$$sanitizeUri', function($$sanitizeUri) {
+ return function(html) {
+ var buf = [];
+ htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {
+ return !/^unsafe/.test($$sanitizeUri(uri, isImage));
+ }));
+ return buf.join('');
+ };
+ }];
+}
+
+function sanitizeText(chars) {
+ var buf = [];
+ var writer = htmlSanitizeWriter(buf, angular.noop);
+ writer.chars(chars);
+ return buf.join('');
+}
+
+
+// Regular Expressions for parsing tags and attributes
+var START_TAG_REGEXP =
+ /^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,
+ END_TAG_REGEXP = /^<\/\s*([\w:-]+)[^>]*>/,
+ ATTR_REGEXP = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,
+ BEGIN_TAG_REGEXP = /^</,
+ BEGING_END_TAGE_REGEXP = /^<\//,
+ COMMENT_REGEXP = /<!--(.*?)-->/g,
+ DOCTYPE_REGEXP = /<!DOCTYPE([^>]*?)>/i,
+ CDATA_REGEXP = /<!\[CDATA\[(.*?)]]>/g,
+ SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+ // Match everything outside of normal chars and " (quote character)
+ NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g;
+
+
+// Good source of info about elements and attributes
+// http://dev.w3.org/html5/spec/Overview.html#semantics
+// http://simon.html5.org/html-elements
+
+// Safe Void Elements - HTML5
+// http://dev.w3.org/html5/spec/Overview.html#void-elements
+var voidElements = makeMap("area,br,col,hr,img,wbr");
+
+// Elements that you can, intentionally, leave open (and which close themselves)
+// http://dev.w3.org/html5/spec/Overview.html#optional-tags
+var optionalEndTagBlockElements = makeMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
+ optionalEndTagInlineElements = makeMap("rp,rt"),
+ optionalEndTagElements = angular.extend({},
+ optionalEndTagInlineElements,
+ optionalEndTagBlockElements);
+
+// Safe Block Elements - HTML5
+var blockElements = angular.extend({}, optionalEndTagBlockElements, makeMap("address,article," +
+ "aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5," +
+ "h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul"));
+
+// Inline Elements - HTML5
+var inlineElements = angular.extend({}, optionalEndTagInlineElements, makeMap("a,abbr,acronym,b," +
+ "bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s," +
+ "samp,small,span,strike,strong,sub,sup,time,tt,u,var"));
+
+// SVG Elements
+// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements
+// Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.
+// They can potentially allow for arbitrary javascript to be executed. See #11290
+var svgElements = makeMap("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph," +
+ "hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline," +
+ "radialGradient,rect,stop,svg,switch,text,title,tspan,use");
+
+// Special Elements (can contain anything)
+var specialElements = makeMap("script,style");
+
+var validElements = angular.extend({},
+ voidElements,
+ blockElements,
+ inlineElements,
+ optionalEndTagElements,
+ svgElements);
+
+//Attributes that have href and hence need to be sanitized
+var uriAttrs = makeMap("background,cite,href,longdesc,src,usemap,xlink:href");
+
+var htmlAttrs = makeMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +
+ 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +
+ 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +
+ 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +
+ 'valign,value,vspace,width');
+
+// SVG attributes (without "id" and "name" attributes)
+// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes
+var svgAttrs = makeMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +
+ 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +
+ 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +
+ 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +
+ 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +
+ 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +
+ 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +
+ 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +
+ 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +
+ 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +
+ 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +
+ 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +
+ 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +
+ 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +
+ 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);
+
+var validAttrs = angular.extend({},
+ uriAttrs,
+ svgAttrs,
+ htmlAttrs);
+
+function makeMap(str, lowercaseKeys) {
+ var obj = {}, items = str.split(','), i;
+ for (i = 0; i < items.length; i++) {
+ obj[lowercaseKeys ? angular.lowercase(items[i]) : items[i]] = true;
+ }
+ return obj;
+}
+
+
+/**
+ * @example
+ * htmlParser(htmlString, {
+ * start: function(tag, attrs, unary) {},
+ * end: function(tag) {},
+ * chars: function(text) {},
+ * comment: function(text) {}
+ * });
+ *
+ * @param {string} html string
+ * @param {object} handler
+ */
+function htmlParser(html, handler) {
+ if (typeof html !== 'string') {
+ if (html === null || typeof html === 'undefined') {
+ html = '';
+ } else {
+ html = '' + html;
+ }
+ }
+ var index, chars, match, stack = [], last = html, text;
+ stack.last = function() { return stack[stack.length - 1]; };
+
+ while (html) {
+ text = '';
+ chars = true;
+
+ // Make sure we're not in a script or style element
+ if (!stack.last() || !specialElements[stack.last()]) {
+
+ // Comment
+ if (html.indexOf("<!--") === 0) {
+ // comments containing -- are not allowed unless they terminate the comment
+ index = html.indexOf("--", 4);
+
+ if (index >= 0 && html.lastIndexOf("-->", index) === index) {
+ if (handler.comment) handler.comment(html.substring(4, index));
+ html = html.substring(index + 3);
+ chars = false;
+ }
+ // DOCTYPE
+ } else if (DOCTYPE_REGEXP.test(html)) {
+ match = html.match(DOCTYPE_REGEXP);
+
+ if (match) {
+ html = html.replace(match[0], '');
+ chars = false;
+ }
+ // end tag
+ } else if (BEGING_END_TAGE_REGEXP.test(html)) {
+ match = html.match(END_TAG_REGEXP);
+
+ if (match) {
+ html = html.substring(match[0].length);
+ match[0].replace(END_TAG_REGEXP, parseEndTag);
+ chars = false;
+ }
+
+ // start tag
+ } else if (BEGIN_TAG_REGEXP.test(html)) {
+ match = html.match(START_TAG_REGEXP);
+
+ if (match) {
+ // We only have a valid start-tag if there is a '>'.
+ if (match[4]) {
+ html = html.substring(match[0].length);
+ match[0].replace(START_TAG_REGEXP, parseStartTag);
+ }
+ chars = false;
+ } else {
+ // no ending tag found --- this piece should be encoded as an entity.
+ text += '<';
+ html = html.substring(1);
+ }
+ }
+
+ if (chars) {
+ index = html.indexOf("<");
+
+ text += index < 0 ? html : html.substring(0, index);
+ html = index < 0 ? "" : html.substring(index);
+
+ if (handler.chars) handler.chars(decodeEntities(text));
+ }
+
+ } else {
+ // IE versions 9 and 10 do not understand the regex '[^]', so using a workaround with [\W\w].
+ html = html.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*" + stack.last() + "[^>]*>", 'i'),
+ function(all, text) {
+ text = text.replace(COMMENT_REGEXP, "$1").replace(CDATA_REGEXP, "$1");
+
+ if (handler.chars) handler.chars(decodeEntities(text));
+
+ return "";
+ });
+
+ parseEndTag("", stack.last());
+ }
+
+ if (html == last) {
+ throw $sanitizeMinErr('badparse', "The sanitizer was unable to parse the following block " +
+ "of html: {0}", html);
+ }
+ last = html;
+ }
+
+ // Clean up any remaining tags
+ parseEndTag();
+
+ function parseStartTag(tag, tagName, rest, unary) {
+ tagName = angular.lowercase(tagName);
+ if (blockElements[tagName]) {
+ while (stack.last() && inlineElements[stack.last()]) {
+ parseEndTag("", stack.last());
+ }
+ }
+
+ if (optionalEndTagElements[tagName] && stack.last() == tagName) {
+ parseEndTag("", tagName);
+ }
+
+ unary = voidElements[tagName] || !!unary;
+
+ if (!unary) {
+ stack.push(tagName);
+ }
+
+ var attrs = {};
+
+ rest.replace(ATTR_REGEXP,
+ function(match, name, doubleQuotedValue, singleQuotedValue, unquotedValue) {
+ var value = doubleQuotedValue
+ || singleQuotedValue
+ || unquotedValue
+ || '';
+
+ attrs[name] = decodeEntities(value);
+ });
+ if (handler.start) handler.start(tagName, attrs, unary);
+ }
+
+ function parseEndTag(tag, tagName) {
+ var pos = 0, i;
+ tagName = angular.lowercase(tagName);
+ if (tagName) {
+ // Find the closest opened tag of the same type
+ for (pos = stack.length - 1; pos >= 0; pos--) {
+ if (stack[pos] == tagName) break;
+ }
+ }
+
+ if (pos >= 0) {
+ // Close all the open elements, up the stack
+ for (i = stack.length - 1; i >= pos; i--)
+ if (handler.end) handler.end(stack[i]);
+
+ // Remove the open elements from the stack
+ stack.length = pos;
+ }
+ }
+}
+
+var hiddenPre=document.createElement("pre");
+/**
+ * decodes all entities into regular string
+ * @param value
+ * @returns {string} A string with decoded entities.
+ */
+function decodeEntities(value) {
+ if (!value) { return ''; }
+
+ hiddenPre.innerHTML = value.replace(/</g,"<");
+ // innerText depends on styling as it doesn't display hidden elements.
+ // Therefore, it's better to use textContent not to cause unnecessary reflows.
+ return hiddenPre.textContent;
+}
+
+/**
+ * Escapes all potentially dangerous characters, so that the
+ * resulting string can be safely inserted into attribute or
+ * element text.
+ * @param value
+ * @returns {string} escaped text
+ */
+function encodeEntities(value) {
+ return value.
+ replace(/&/g, '&').
+ replace(SURROGATE_PAIR_REGEXP, function(value) {
+ var hi = value.charCodeAt(0);
+ var low = value.charCodeAt(1);
+ return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
+ }).
+ replace(NON_ALPHANUMERIC_REGEXP, function(value) {
+ return '&#' + value.charCodeAt(0) + ';';
+ }).
+ replace(/</g, '<').
+ replace(/>/g, '>');
+}
+
+/**
+ * create an HTML/XML writer which writes to buffer
+ * @param {Array} buf use buf.jain('') to get out sanitized html string
+ * @returns {object} in the form of {
+ * start: function(tag, attrs, unary) {},
+ * end: function(tag) {},
+ * chars: function(text) {},
+ * comment: function(text) {}
+ * }
+ */
+function htmlSanitizeWriter(buf, uriValidator) {
+ var ignore = false;
+ var out = angular.bind(buf, buf.push);
+ return {
+ start: function(tag, attrs, unary) {
+ tag = angular.lowercase(tag);
+ if (!ignore && specialElements[tag]) {
+ ignore = tag;
+ }
+ if (!ignore && validElements[tag] === true) {
+ out('<');
+ out(tag);
+ angular.forEach(attrs, function(value, key) {
+ var lkey=angular.lowercase(key);
+ var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');
+ if (validAttrs[lkey] === true &&
+ (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {
+ out(' ');
+ out(key);
+ out('="');
+ out(encodeEntities(value));
+ out('"');
+ }
+ });
+ out(unary ? '/>' : '>');
+ }
+ },
+ end: function(tag) {
+ tag = angular.lowercase(tag);
+ if (!ignore && validElements[tag] === true) {
+ out('</');
+ out(tag);
+ out('>');
+ }
+ if (tag == ignore) {
+ ignore = false;
+ }
+ },
+ chars: function(chars) {
+ if (!ignore) {
+ out(encodeEntities(chars));
+ }
+ }
+ };
+}
+
+
+// define ngSanitize module and register $sanitize service
+angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
+
+/* global sanitizeText: false */
+
+/**
+ * @ngdoc filter
+ * @name linky
+ * @kind function
+ *
+ * @description
+ * Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and
+ * plain email address links.
+ *
+ * Requires the {@link ngSanitize `ngSanitize`} module to be installed.
+ *
+ * @param {string} text Input text.
+ * @param {string} target Window (_blank|_self|_parent|_top) or named frame to open links in.
+ * @returns {string} Html-linkified text.
+ *
+ * @usage
+ <span ng-bind-html="linky_expression | linky"></span>
+ *
+ * @example
+ <example module="linkyExample" deps="angular-sanitize.js">
+ <file name="index.html">
+ <script>
+ angular.module('linkyExample', ['ngSanitize'])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.snippet =
+ 'Pretty text with some links:\n'+
+ 'http://angularjs.org/,\n'+
+ 'mailto:us@somewhere.org,\n'+
+ 'another@somewhere.org,\n'+
+ 'and one more: ftp://127.0.0.1/.';
+ $scope.snippetWithTarget = 'http://angularjs.org/';
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
+ <table>
+ <tr>
+ <td>Filter</td>
+ <td>Source</td>
+ <td>Rendered</td>
+ </tr>
+ <tr id="linky-filter">
+ <td>linky filter</td>
+ <td>
+ <pre><div ng-bind-html="snippet | linky"><br></div></pre>
+ </td>
+ <td>
+ <div ng-bind-html="snippet | linky"></div>
+ </td>
+ </tr>
+ <tr id="linky-target">
+ <td>linky target</td>
+ <td>
+ <pre><div ng-bind-html="snippetWithTarget | linky:'_blank'"><br></div></pre>
+ </td>
+ <td>
+ <div ng-bind-html="snippetWithTarget | linky:'_blank'"></div>
+ </td>
+ </tr>
+ <tr id="escaped-html">
+ <td>no filter</td>
+ <td><pre><div ng-bind="snippet"><br></div></pre></td>
+ <td><div ng-bind="snippet"></div></td>
+ </tr>
+ </table>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should linkify the snippet with urls', function() {
+ expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
+ toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +
+ 'another@somewhere.org, and one more: ftp://127.0.0.1/.');
+ expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);
+ });
+
+ it('should not linkify snippet without the linky filter', function() {
+ expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).
+ toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +
+ 'another@somewhere.org, and one more: ftp://127.0.0.1/.');
+ expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);
+ });
+
+ it('should update', function() {
+ element(by.model('snippet')).clear();
+ element(by.model('snippet')).sendKeys('new http://link.');
+ expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
+ toBe('new http://link.');
+ expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);
+ expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())
+ .toBe('new http://link.');
+ });
+
+ it('should work with the target property', function() {
+ expect(element(by.id('linky-target')).
+ element(by.binding("snippetWithTarget | linky:'_blank'")).getText()).
+ toBe('http://angularjs.org/');
+ expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');
+ });
+ </file>
+ </example>
+ */
+angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
+ var LINKY_URL_REGEXP =
+ /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
+ MAILTO_REGEXP = /^mailto:/i;
+
+ return function(text, target) {
+ if (!text) return text;
+ var match;
+ var raw = text;
+ var html = [];
+ var url;
+ var i;
+ while ((match = raw.match(LINKY_URL_REGEXP))) {
+ // We can not end in these as they are sometimes found at the end of the sentence
+ url = match[0];
+ // if we did not match ftp/http/www/mailto then assume mailto
+ if (!match[2] && !match[4]) {
+ url = (match[3] ? 'http://' : 'mailto:') + url;
+ }
+ i = match.index;
+ addText(raw.substr(0, i));
+ addLink(url, match[0].replace(MAILTO_REGEXP, ''));
+ raw = raw.substring(i + match[0].length);
+ }
+ addText(raw);
+ return $sanitize(html.join(''));
+
+ function addText(text) {
+ if (!text) {
+ return;
+ }
+ html.push(sanitizeText(text));
+ }
+
+ function addLink(url, text) {
+ html.push('<a ');
+ if (angular.isDefined(target)) {
+ html.push('target="',
+ target,
+ '" ');
+ }
+ html.push('href="',
+ url.replace(/"/g, '"'),
+ '">');
+ addText(text);
+ html.push('</a>');
+ }
+ };
+}]);
+
+
+})(window, window.angular);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-scenario.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-scenario.js
new file mode 100644
index 0000000..705d70e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-scenario.js
@@ -0,0 +1,40024 @@
+/*!
+ * jQuery JavaScript Library v2.1.1
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-05-01T17:11Z
+ */
+
+(function( global, factory ) {'use strict';
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ // For CommonJS and CommonJS-like environments where a proper window is present,
+ // execute the factory and get jQuery
+ // For environments that do not inherently posses a window with a document
+ // (such as Node.js), expose a jQuery-making factory as module.exports
+ // This accentuates the need for the creation of a real window
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//
+
+var arr = [];
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+ // Use the correct document accordingly with window argument (sandbox)
+ document = window.document,
+
+ version = "2.1.1",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android<4.1
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num != null ?
+
+ // Return just the one element from the set
+ ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+ // Return all the elements in a clean array
+ slice.call( this );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray,
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ // parseFloat NaNs numeric-cast false positives (null|true|false|"")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
+ },
+
+ isPlainObject: function( obj ) {
+ // Not plain objects:
+ // - Any object or value whose internal [[Class]] property is not "[object Object]"
+ // - DOM nodes
+ // - window
+ if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.constructor &&
+ !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
+ return false;
+ }
+
+ // If the function hasn't returned already, we're confident that
+ // |obj| is a plain object, created by {} or constructed with new Object
+ return true;
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+ // Support: Android < 4.0, iOS < 6 (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call(obj) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ var script,
+ indirect = eval;
+
+ code = jQuery.trim( code );
+
+ if ( code ) {
+ // If the code includes a valid, prologue position
+ // strict mode pragma, execute code by injecting a
+ // script tag into the document.
+ if ( code.indexOf("use strict") === 1 ) {
+ script = document.createElement("script");
+ script.text = code;
+ document.head.appendChild( script ).parentNode.removeChild( script );
+ } else {
+ // Otherwise, avoid the DOM node creation, insertion
+ // and removal by using an indirect global eval
+ indirect( code );
+ }
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ // args is for internal usage only
+ each: function( obj, callback, args ) {
+ var value,
+ i = 0,
+ length = obj.length,
+ isArray = isArraylike( obj );
+
+ if ( args ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android<4.1
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArraylike( Object(arr) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value,
+ i = 0,
+ length = elems.length,
+ isArray = isArraylike( elems ),
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+ var length = obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.nodeType === 1 && length ) {
+ return true;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v1.10.19
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-04-18
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + -(new Date()),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ strundefined = typeof undefined,
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf if we can't use a native one
+ indexOf = arr.indexOf || function( elem ) {
+ var i = 0,
+ len = this.length;
+ for ( ; i < len; i++ ) {
+ if ( this[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + characterEncoding + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var match, elem, m, nodeType,
+ // QSA vars
+ i, groups, old, nid, newContext, newSelector;
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+
+ context = context || document;
+ results = results || [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( documentIsHTML && !seed ) {
+
+ // Shortcuts
+ if ( (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document (jQuery #6963)
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // QSA path
+ if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ nid = old = expando;
+ newContext = context;
+ newSelector = nodeType === 9 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + toSelector( groups[i] );
+ }
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = attrs.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== strundefined && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare,
+ doc = node ? node.ownerDocument || node : preferredDoc,
+ parent = doc.defaultView;
+
+ // If no document and documentElement is available, return
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Set our document
+ document = doc;
+ docElem = doc.documentElement;
+
+ // Support tests
+ documentIsHTML = !isXML( doc );
+
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ // IE6-8 do not support the defaultView property so parent will be undefined
+ if ( parent && parent !== parent.top ) {
+ // IE11 does not have attachEvent, so all must suffer
+ if ( parent.addEventListener ) {
+ parent.addEventListener( "unload", function() {
+ setDocument();
+ }, false );
+ } else if ( parent.attachEvent ) {
+ parent.attachEvent( "onunload", function() {
+ setDocument();
+ });
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Check if getElementsByClassName can be trusted
+ support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
+ div.innerHTML = "<div class='a'></div><div class='a i'></div>";
+
+ // Support: Safari<4
+ // Catch class over-caching
+ div.firstChild.className = "i";
+ // Support: Opera<10
+ // Catch gEBCN failure to find non-leading classes
+ return div.getElementsByClassName("i").length === 2;
+ });
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [ m ] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== strundefined ) {
+ return context.getElementsByTagName( tag );
+ }
+ } :
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ div.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( div.querySelectorAll("[msallowclip^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+ });
+
+ assert(function( div ) {
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = doc.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( div.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully does not implement inclusive descendent
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === doc ? -1 :
+ b === doc ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, outerCache, node, diff, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+ // Seek `elem` from a previously-cached index
+ outerCache = parent[ expando ] || (parent[ expando ] = {});
+ cache = outerCache[ type ] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = cache[0] === dirruns && cache[2];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ // Use previously-cached element index if available
+ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+ diff = cache[1];
+
+ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ } else {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf.call( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+ if ( (oldCache = outerCache[ dir ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ outerCache[ dir ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf.call( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is no seed and only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = "<a href='#'></a>";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = "<input/>";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ });
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ });
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
+ });
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ }));
+};
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i,
+ len = this.length,
+ ret = [],
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ }) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], false) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], true) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+});
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ init = jQuery.fn.init = function( selector, context ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+
+ // scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return typeof rootjQuery.ready !== "undefined" ?
+ rootjQuery.ready( selector ) :
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.extend({
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+ },
+
+ sibling: function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+ }
+});
+
+jQuery.fn.extend({
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter(function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && (pos ?
+ pos.index(cur) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector(cur, selectors)) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.unique(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+});
+
+function sibling( cur, dir ) {
+ while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.unique( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+});
+var rnotwhite = (/\S+/g);
+
+
+
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
+
+ var // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // Flag to know if list is currently firing
+ firing,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+ add( arg );
+ }
+ });
+ })( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away
+ } else if ( memory ) {
+ firingStart = start;
+ fire( memory );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+ // Handle firing indexes
+ if ( firing ) {
+ if ( index <= firingLength ) {
+ firingLength--;
+ }
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ });
+ }
+ return this;
+ },
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ firingLength = 0;
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( list && ( !fired || stack ) ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ if ( firing ) {
+ stack.push( args );
+ } else {
+ fire( args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var tuples = [
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[1] ](function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .done( newDefer.resolve )
+ .fail( newDefer.reject )
+ .progress( newDefer.notify );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+ }
+ });
+ });
+ fns = null;
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[1] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(function() {
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[0] ] = function() {
+ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[0] + "With" ] = list.fireWith;
+ });
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject )
+ .progress( updateFunc( i, progressContexts, progressValues ) );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // if we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+});
+
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+};
+
+jQuery.extend({
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ jQuery( document ).off( "ready" );
+ }
+ }
+});
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed, false );
+ window.removeEventListener( "load", completed, false );
+ jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ setTimeout( jQuery.ready );
+
+ } else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed, false );
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ len ? fn( elems[0], key ) : emptyGet;
+};
+
+
+/**
+ * Determines whether an object can have data
+ */
+jQuery.acceptData = function( owner ) {
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ /* jshint -W018 */
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+function Data() {
+ // Support: Android < 4,
+ // Old WebKit does not have Object.preventExtensions/freeze method,
+ // return new empty object instead with no [[set]] accessor
+ Object.defineProperty( this.cache = {}, 0, {
+ get: function() {
+ return {};
+ }
+ });
+
+ this.expando = jQuery.expando + Math.random();
+}
+
+Data.uid = 1;
+Data.accepts = jQuery.acceptData;
+
+Data.prototype = {
+ key: function( owner ) {
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return the key for a frozen object.
+ if ( !Data.accepts( owner ) ) {
+ return 0;
+ }
+
+ var descriptor = {},
+ // Check if the owner object already has a cache key
+ unlock = owner[ this.expando ];
+
+ // If not, create one
+ if ( !unlock ) {
+ unlock = Data.uid++;
+
+ // Secure it in a non-enumerable, non-writable property
+ try {
+ descriptor[ this.expando ] = { value: unlock };
+ Object.defineProperties( owner, descriptor );
+
+ // Support: Android < 4
+ // Fallback to a less secure definition
+ } catch ( e ) {
+ descriptor[ this.expando ] = unlock;
+ jQuery.extend( owner, descriptor );
+ }
+ }
+
+ // Ensure the cache object
+ if ( !this.cache[ unlock ] ) {
+ this.cache[ unlock ] = {};
+ }
+
+ return unlock;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ // There may be an unlock assigned to this node,
+ // if there is no entry for this "owner", create one inline
+ // and set the unlock as though an owner entry had always existed
+ unlock = this.key( owner ),
+ cache = this.cache[ unlock ];
+
+ // Handle: [ owner, key, value ] args
+ if ( typeof data === "string" ) {
+ cache[ data ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+ // Fresh assignments by object are shallow copied
+ if ( jQuery.isEmptyObject( cache ) ) {
+ jQuery.extend( this.cache[ unlock ], data );
+ // Otherwise, copy the properties one-by-one to the cache object
+ } else {
+ for ( prop in data ) {
+ cache[ prop ] = data[ prop ];
+ }
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ // Either a valid cache is found, or will be created.
+ // New caches will be created and the unlock returned,
+ // allowing direct access to the newly created
+ // empty data object. A valid owner object must be provided.
+ var cache = this.cache[ this.key( owner ) ];
+
+ return key === undefined ?
+ cache : cache[ key ];
+ },
+ access: function( owner, key, value ) {
+ var stored;
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ((key && typeof key === "string") && value === undefined) ) {
+
+ stored = this.get( owner, key );
+
+ return stored !== undefined ?
+ stored : this.get( owner, jQuery.camelCase(key) );
+ }
+
+ // [*]When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i, name, camel,
+ unlock = this.key( owner ),
+ cache = this.cache[ unlock ];
+
+ if ( key === undefined ) {
+ this.cache[ unlock ] = {};
+
+ } else {
+ // Support array or space separated string of keys
+ if ( jQuery.isArray( key ) ) {
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = key.concat( key.map( jQuery.camelCase ) );
+ } else {
+ camel = jQuery.camelCase( key );
+ // Try the string as a key before any manipulation
+ if ( key in cache ) {
+ name = [ key, camel ];
+ } else {
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ name = camel;
+ name = name in cache ?
+ [ name ] : ( name.match( rnotwhite ) || [] );
+ }
+ }
+
+ i = name.length;
+ while ( i-- ) {
+ delete cache[ name[ i ] ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ return !jQuery.isEmptyObject(
+ this.cache[ owner[ this.expando ] ] || {}
+ );
+ },
+ discard: function( owner ) {
+ if ( owner[ this.expando ] ) {
+ delete this.cache[ owner[ this.expando ] ];
+ }
+ }
+};
+var data_priv = new Data();
+
+var data_user = new Data();
+
+
+
+/*
+ Implementation Summary
+
+ 1. Enforce API surface and semantic compatibility with 1.9.x branch
+ 2. Improve the module's maintainability by reducing the storage
+ paths to a single mechanism.
+ 3. Use the same single mechanism to support "private" and "user" data.
+ 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+ 5. Avoid exposing implementation details on user objects (eg. expando properties)
+ 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+*/
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ data_user.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend({
+ hasData: function( elem ) {
+ return data_user.hasData( elem ) || data_priv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return data_user.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ data_user.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to data_priv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return data_priv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ data_priv.remove( elem, name );
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = data_user.get( elem );
+
+ if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE11+
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.slice(5) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ data_priv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ data_user.set( this, key );
+ });
+ }
+
+ return access( this, function( value ) {
+ var data,
+ camelKey = jQuery.camelCase( key );
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+ // Attempt to get data from the cache
+ // with the key as-is
+ data = data_user.get( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to get data from the cache
+ // with the key camelized
+ data = data_user.get( elem, camelKey );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, camelKey, undefined );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ this.each(function() {
+ // First, attempt to store a copy or reference of any
+ // data that might've been store with a camelCased key.
+ var data = data_user.get( this, camelKey );
+
+ // For HTML5 data-* attribute interop, we have to
+ // store property names with dashes in a camelCase form.
+ // This might not apply to all properties...*
+ data_user.set( this, camelKey, value );
+
+ // *... In the case of properties that might _actually_
+ // have dashes, we need to also store a copy of that
+ // unchanged property.
+ if ( key.indexOf("-") !== -1 && data !== undefined ) {
+ data_user.set( this, key, value );
+ }
+ });
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ data_user.remove( this, key );
+ });
+ }
+});
+
+
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = data_priv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray( data ) ) {
+ queue = data_priv.access( elem, type, jQuery.makeArray(data) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // not intended for public consumption - generates a queueHooks object, or returns the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return data_priv.get( elem, key ) || data_priv.access( elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ data_priv.remove( elem, [ type + "queue", key ] );
+ })
+ });
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = data_priv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+});
+var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHidden = function( elem, el ) {
+ // isHidden might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+ };
+
+var rcheckableType = (/^(?:checkbox|radio)$/i);
+
+
+
+(function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // #11217 - WebKit loses check when the name is after the checked attribute
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` need .setAttribute for WWA
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
+ // old WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ // Support: IE9-IE11+
+ div.innerHTML = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+})();
+var strundefined = typeof undefined;
+
+
+
+support.focusinBubbles = "onfocusin" in window;
+
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = data_priv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !(events = elemData.events) ) {
+ events = elemData.events = {};
+ }
+ if ( !(eventHandle = elemData.handle) ) {
+ eventHandle = elemData.handle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !(handlers = events[ type ]) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = data_priv.hasData( elem ) && data_priv.get( elem );
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ delete elemData.handle;
+ data_priv.remove( elem, "events" );
+ }
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+
+ var i, cur, tmp, bubbleType, ontype, handle, special,
+ eventPath = [ elem || document ],
+ type = hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf(":") < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === (elem.ownerDocument || document) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
+ event.result = handle.apply( cur, data );
+ if ( event.result === false ) {
+ event.preventDefault();
+ }
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+ jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
+
+ var i, j, ret, matched, handleObj,
+ handlerQueue = [],
+ args = slice.call( arguments ),
+ handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( (event.result = ret) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, matches, sel, handleObj,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ // Black-hole SVG <use> instance trees (#13180)
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.disabled !== true || event.type !== "click" ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) >= 0 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, handlers: matches });
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+ }
+
+ return handlerQueue;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var eventDoc, doc, body,
+ button = original.button;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop, copy,
+ type = event.type,
+ originalEvent = event,
+ fixHook = this.fixHooks[ type ];
+
+ if ( !fixHook ) {
+ this.fixHooks[ type ] = fixHook =
+ rmouseEvent.test( type ) ? this.mouseHooks :
+ rkeyEvent.test( type ) ? this.keyHooks :
+ {};
+ }
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = new jQuery.Event( originalEvent );
+
+ i = copy.length;
+ while ( i-- ) {
+ prop = copy[ i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Support: Cordova 2.5 (WebKit) (#13255)
+ // All events should have a target; Cordova deviceready doesn't
+ if ( !event.target ) {
+ event.target = document;
+ }
+
+ // Support: Safari 6.0+, Chrome < 28
+ // Target should not be a text node (#504, #13143)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ this.focus();
+ return false;
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+ // Support: Android < 4.0
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e && e.preventDefault ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e && e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && e.stopImmediatePropagation ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// Support: Chrome 15+
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// Create "bubbling" focus and blur events
+// Support: Firefox, Chrome, Safari
+if ( !support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler on the document while someone wants focusin/focusout
+ var handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ var doc = this.ownerDocument || this,
+ attaches = data_priv.access( doc, fix );
+
+ if ( !attaches ) {
+ doc.addEventListener( orig, handler, true );
+ }
+ data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
+ },
+ teardown: function() {
+ var doc = this.ownerDocument || this,
+ attaches = data_priv.access( doc, fix ) - 1;
+
+ if ( !attaches ) {
+ doc.removeEventListener( orig, handler, true );
+ data_priv.remove( doc, fix );
+
+ } else {
+ data_priv.access( doc, fix, attaches );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[0];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+});
+
+
+var
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ rtagName = /<([\w:]+)/,
+ rhtml = /<|&#?\w+;/,
+ rnoInnerhtml = /<(?:script|style|link)/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /^$|\/(?:java|ecma)script/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+ // We have to close these tags to support XHTML (#13200)
+ wrapMap = {
+
+ // Support: IE 9
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+ thead: [ 1, "<table>", "</table>" ],
+ col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ _default: [ 0, "", "" ]
+ };
+
+// Support: IE 9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// Support: 1.x compatibility
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+ return jQuery.nodeName( elem, "table" ) &&
+ jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
+
+ elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+ elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+
+ if ( match ) {
+ elem.type = match[ 1 ];
+ } else {
+ elem.removeAttribute("type");
+ }
+
+ return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ data_priv.set(
+ elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+function cloneCopyEvent( src, dest ) {
+ var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // 1. Copy private data: events, handlers, etc.
+ if ( data_priv.hasData( src ) ) {
+ pdataOld = data_priv.access( src );
+ pdataCur = data_priv.set( dest, pdataOld );
+ events = pdataOld.events;
+
+ if ( events ) {
+ delete pdataCur.handle;
+ pdataCur.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+ }
+
+ // 2. Copy user data
+ if ( data_user.hasData( src ) ) {
+ udataOld = data_user.access( src );
+ udataCur = jQuery.extend( {}, udataOld );
+
+ data_user.set( dest, udataCur );
+ }
+}
+
+function getAll( context, tag ) {
+ var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
+ context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
+ [];
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], ret ) :
+ ret;
+}
+
+// Support: IE >= 9
+function fixInput( src, dest ) {
+ var nodeName = dest.nodeName.toLowerCase();
+
+ // Fails to persist the checked state of a cloned checkbox or radio button.
+ if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+ dest.checked = src.checked;
+
+ // Fails to return the selected option to the default selected state when cloning options
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var i, l, srcElements, destElements,
+ clone = elem.cloneNode( true ),
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ // Support: IE >= 9
+ // Fix Cloning issues
+ if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+ !jQuery.isXMLDoc( elem ) ) {
+
+ // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ fixInput( srcElements[ i ], destElements[ i ] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ // Return the cloned set
+ return clone;
+ },
+
+ buildFragment: function( elems, context, scripts, selection ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+ // Support: QtWebKit
+ // jQuery.merge because push.apply(_, arraylike) throws
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement("div") );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: QtWebKit
+ // jQuery.merge because push.apply(_, arraylike) throws
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Fixes #12346
+ // Support: Webkit, IE
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( (elem = nodes[ i++ ]) ) {
+
+ // #4087 - If origin and destination elements are the same, and this is
+ // that element, do not do anything
+ if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( (elem = tmp[ j++ ]) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+ },
+
+ cleanData: function( elems ) {
+ var data, elem, type, key,
+ special = jQuery.event.special,
+ i = 0;
+
+ for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
+ if ( jQuery.acceptData( elem ) ) {
+ key = elem[ data_priv.expando ];
+
+ if ( key && (data = data_priv.cache[ key ]) ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+ if ( data_priv.cache[ key ] ) {
+ // Discard any remaining `private` data
+ delete data_priv.cache[ key ];
+ }
+ }
+ }
+ // Discard any remaining `user` data
+ delete data_user.cache[ elem[ data_user.expando ] ];
+ }
+ }
+});
+
+jQuery.fn.extend({
+ text: function( value ) {
+ return access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().each(function() {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ this.textContent = value;
+ }
+ });
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ });
+ },
+
+ after: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ });
+ },
+
+ remove: function( selector, keepData /* Internal Use Only */ ) {
+ var elem,
+ elems = selector ? jQuery.filter( selector, this ) : this,
+ i = 0;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem ) );
+ }
+
+ if ( elem.parentNode ) {
+ if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+ setGlobalEval( getAll( elem, "script" ) );
+ }
+ elem.parentNode.removeChild( elem );
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; (elem = this[i]) != null; i++ ) {
+ if ( elem.nodeType === 1 ) {
+
+ // Prevent memory leaks
+ jQuery.cleanData( getAll( elem, false ) );
+
+ // Remove any remaining nodes
+ elem.textContent = "";
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map(function() {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ return access( this, function( value ) {
+ var elem = this[ 0 ] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined && elem.nodeType === 1 ) {
+ return elem.innerHTML;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+ value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+ try {
+ for ( ; i < l; i++ ) {
+ elem = this[ i ] || {};
+
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch( e ) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var arg = arguments[ 0 ];
+
+ // Make the changes, replacing each context element with the new content
+ this.domManip( arguments, function( elem ) {
+ arg = this.parentNode;
+
+ jQuery.cleanData( getAll( this ) );
+
+ if ( arg ) {
+ arg.replaceChild( elem, this );
+ }
+ });
+
+ // Force removal if there was no new content (e.g., from empty arguments)
+ return arg && (arg.length || arg.nodeType) ? this : this.remove();
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, callback ) {
+
+ // Flatten any nested arrays
+ args = concat.apply( [], args );
+
+ var fragment, first, scripts, hasScripts, node, doc,
+ i = 0,
+ l = this.length,
+ set = this,
+ iNoClone = l - 1,
+ value = args[ 0 ],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction ||
+ ( l > 1 && typeof value === "string" &&
+ !support.checkClone && rchecked.test( value ) ) ) {
+ return this.each(function( index ) {
+ var self = set.eq( index );
+ if ( isFunction ) {
+ args[ 0 ] = value.call( this, index, self.html() );
+ }
+ self.domManip( args, callback );
+ });
+ }
+
+ if ( l ) {
+ fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ if ( first ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+ // Support: QtWebKit
+ // jQuery.merge because push.apply(_, arraylike) throws
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( this[ i ], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+ // Optional AJAX dependency, but won't run scripts if not present
+ if ( jQuery._evalUrl ) {
+ jQuery._evalUrl( node.src );
+ }
+ } else {
+ jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return this;
+ }
+});
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1,
+ i = 0;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone( true );
+ jQuery( insert[ i ] )[ original ]( elems );
+
+ // Support: QtWebKit
+ // .get() because push.apply(_, arraylike) throws
+ push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+
+var iframe,
+ elemdisplay = {};
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+ var style,
+ elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+ // getDefaultComputedStyle might be reliably used only on attached element
+ display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
+
+ // Use of this method is a temporary fix (more like optmization) until something better comes along,
+ // since it was removed from specification and supported only in FF
+ style.display : jQuery.css( elem[ 0 ], "display" );
+
+ // We don't have any data stored on the element,
+ // so use "detach" method as fast way to get rid of the element
+ elem.detach();
+
+ return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+ var doc = document,
+ display = elemdisplay[ nodeName ];
+
+ if ( !display ) {
+ display = actualDisplay( nodeName, doc );
+
+ // If the simple way fails, read from inside an iframe
+ if ( display === "none" || !display ) {
+
+ // Use the already-created iframe if possible
+ iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
+
+ // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+ doc = iframe[ 0 ].contentDocument;
+
+ // Support: IE
+ doc.write();
+ doc.close();
+
+ display = actualDisplay( nodeName, doc );
+ iframe.detach();
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return display;
+}
+var rmargin = (/^margin/);
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+ return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+ };
+
+
+
+function curCSS( elem, name, computed ) {
+ var width, minWidth, maxWidth, ret,
+ style = elem.style;
+
+ computed = computed || getStyles( elem );
+
+ // Support: IE9
+ // getPropertyValue is only needed for .css('filter') in IE9, see #12537
+ if ( computed ) {
+ ret = computed.getPropertyValue( name ) || computed[ name ];
+ }
+
+ if ( computed ) {
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // Support: iOS < 6
+ // A tribute to the "awesome hack by Dean Edwards"
+ // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+ // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret !== undefined ?
+ // Support: IE
+ // IE returns zIndex value as an integer.
+ ret + "" :
+ ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+ // Define the hook, we'll check on the first run if it's really needed.
+ return {
+ get: function() {
+ if ( conditionFn() ) {
+ // Hook not needed (or it's not possible to use it due to missing dependency),
+ // remove it.
+ // Since there are no other hooks for marginRight, remove the whole object.
+ delete this.get;
+ return;
+ }
+
+ // Hook needed; redefine it so that the support test is not executed again.
+
+ return (this.get = hookFn).apply( this, arguments );
+ }
+ };
+}
+
+
+(function() {
+ var pixelPositionVal, boxSizingReliableVal,
+ docElem = document.documentElement,
+ container = document.createElement( "div" ),
+ div = document.createElement( "div" );
+
+ if ( !div.style ) {
+ return;
+ }
+
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
+ "position:absolute";
+ container.appendChild( div );
+
+ // Executing both pixelPosition & boxSizingReliable tests require only one layout
+ // so they're executed at the same time to save the second computation.
+ function computePixelPositionAndBoxSizingReliable() {
+ div.style.cssText =
+ // Support: Firefox<29, Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
+ "box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
+ "border:1px;padding:1px;width:4px;position:absolute";
+ div.innerHTML = "";
+ docElem.appendChild( container );
+
+ var divStyle = window.getComputedStyle( div, null );
+ pixelPositionVal = divStyle.top !== "1%";
+ boxSizingReliableVal = divStyle.width === "4px";
+
+ docElem.removeChild( container );
+ }
+
+ // Support: node.js jsdom
+ // Don't assume that getComputedStyle is a property of the global object
+ if ( window.getComputedStyle ) {
+ jQuery.extend( support, {
+ pixelPosition: function() {
+ // This test is executed only once but we still do memoizing
+ // since we can use the boxSizingReliable pre-computing.
+ // No need to check if the test was already performed, though.
+ computePixelPositionAndBoxSizingReliable();
+ return pixelPositionVal;
+ },
+ boxSizingReliable: function() {
+ if ( boxSizingReliableVal == null ) {
+ computePixelPositionAndBoxSizingReliable();
+ }
+ return boxSizingReliableVal;
+ },
+ reliableMarginRight: function() {
+ // Support: Android 2.3
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. (#3333)
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // This support function is only executed once so no memoizing is needed.
+ var ret,
+ marginDiv = div.appendChild( document.createElement( "div" ) );
+
+ // Reset CSS: box-sizing; display; margin; border; padding
+ marginDiv.style.cssText = div.style.cssText =
+ // Support: Firefox<29, Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
+ "box-sizing:content-box;display:block;margin:0;border:0;padding:0";
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+ docElem.appendChild( container );
+
+ ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
+
+ docElem.removeChild( container );
+
+ return ret;
+ }
+ });
+ }
+})();
+
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+jQuery.swap = function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+
+var
+ // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+ // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
+ rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: "0",
+ fontWeight: "400"
+ },
+
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+ // shortcut for names that are not vendor prefixed
+ if ( name in style ) {
+ return name;
+ }
+
+ // check for vendor prefixed names
+ var capName = name[0].toUpperCase() + name.slice(1),
+ origName = name,
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in style ) {
+ return name;
+ }
+ }
+
+ return origName;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+ var matches = rnumsplit.exec( value );
+ return matches ?
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+ // both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // at this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+ // at this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // at this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var valueIsBorderBox = true,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ styles = getStyles( elem ),
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, styles );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
+ // we need the check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox &&
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+function showHide( elements, show ) {
+ var display, elem, hidden,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ values[ index ] = data_priv.get( elem, "olddisplay" );
+ display = elem.style.display;
+ if ( show ) {
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !values[ index ] && display === "none" ) {
+ elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( elem.style.display === "" && isHidden( elem ) ) {
+ values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+ }
+ } else {
+ hidden = isHidden( elem );
+
+ if ( display !== "none" || !hidden ) {
+ data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( index = 0; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+ elem.style.display = show ? values[ index ] || "" : "none";
+ }
+ }
+
+ return elements;
+}
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "columnCount": true,
+ "fillOpacity": true,
+ "flexGrow": true,
+ "flexShrink": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": "cssFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that null and NaN values aren't set. See: #7116
+ if ( value == null || value !== value ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
+ // but it would mean to define eight (for every problematic property) identical functions
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+ style[ name ] = value;
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var val, num, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ //convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Return, converting to number if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+ }
+ return val;
+ }
+});
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+ // certain elements can have dimension info if we invisibly show them
+ // however, it must have a current display style that would benefit from this
+ return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
+ jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ }) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var styles = extra && getStyles( elem );
+ return setPositiveNumber( elem, value, extra ?
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ ) : 0
+ );
+ }
+ };
+});
+
+// Support: Android 2.3
+jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
+ function( elem, computed ) {
+ if ( computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ return jQuery.swap( elem, { "display": "inline-block" },
+ curCSS, [ elem, "marginRight" ] );
+ }
+ }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+});
+
+jQuery.fn.extend({
+ css: function( name, value ) {
+ return access( this, function( elem, name, value ) {
+ var styles, len,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ },
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each(function() {
+ if ( isHidden( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ });
+ }
+});
+
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || "swing";
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ if ( tween.elem[ tween.prop ] != null &&
+ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails
+ // so, simple values such as "10px" are parsed to Float.
+ // complex values such as "rotate(1rad)" are returned as is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+ // use step hook for back compat - use cssHook if its there - use .style if its
+ // available and use plain properties where available
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE9
+// Panic based approach to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p * Math.PI ) / 2;
+ }
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+ fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
+ rrun = /queueHooks$/,
+ animationPrefilters = [ defaultPrefilter ],
+ tweeners = {
+ "*": [ function( prop, value ) {
+ var tween = this.createTween( prop, value ),
+ target = tween.cur(),
+ parts = rfxnum.exec( value ),
+ unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+ rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+ scale = 1,
+ maxIterations = 20;
+
+ if ( start && start[ 3 ] !== unit ) {
+ // Trust units reported by jQuery.css
+ unit = unit || start[ 3 ];
+
+ // Make sure we update the tween properties later on
+ parts = parts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ start = +target || 1;
+
+ do {
+ // If previous iteration zeroed out, double until we get *something*
+ // Use a string for doubling factor so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+ }
+
+ // Update tween properties
+ if ( parts ) {
+ start = tween.start = +start || +target || 0;
+ tween.unit = unit;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[ 1 ] ?
+ start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+ +parts[ 2 ];
+ }
+
+ return tween;
+ } ]
+ };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout(function() {
+ fxNow = undefined;
+ });
+ return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ i = 0,
+ attrs = { height: type };
+
+ // if we include width, step value is 1 to do all cssExpand values,
+ // if we don't include width, step value is 2 to skip over Left and Right
+ includeWidth = includeWidth ? 1 : 0;
+ for ( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+ // we're done with this property
+ return tween;
+ }
+ }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+ /* jshint validthis: true */
+ var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = data_priv.get( elem, "fxshow" );
+
+ // handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always(function() {
+ // doing this makes sure that the complete handler will be called
+ // before this completes
+ anim.always(function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+
+ // height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE9-10 do not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ display = jQuery.css( elem, "display" );
+
+ // Test default display if display is currently "none"
+ checkDisplay = display === "none" ?
+ data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+ if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
+ style.display = "inline-block";
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ anim.always(function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ });
+ }
+
+ // show/hide pass
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+
+ // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+ hidden = true;
+ } else {
+ continue;
+ }
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+
+ // Any non-fx value stops us from restoring the original display value
+ } else {
+ display = undefined;
+ }
+ }
+
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = data_priv.access( elem, "fxshow", {} );
+ }
+
+ // store state if its toggle - enables .stop().toggle() to "reverse"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done(function() {
+ jQuery( elem ).hide();
+ });
+ }
+ anim.done(function() {
+ var prop;
+
+ data_priv.remove( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ });
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+
+ // If this is a noop like .hide().hide(), restore an overwritten display value
+ } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
+ style.display = display;
+ }
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // not quite $.extend, this wont overwrite keys already present.
+ // also - reusing 'index' from above because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = animationPrefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+ // don't match elem in the :animated selector
+ delete tick.elem;
+ }),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+ // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise({
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, { specialEasing: {} }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+ // if we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // resolve when we played the last frame
+ // otherwise, reject
+ if ( gotoEnd ) {
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ }),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ })
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.split(" ");
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ tweeners[ prop ] = tweeners[ prop ] || [];
+ tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ animationPrefilters.unshift( callback );
+ } else {
+ animationPrefilters.push( callback );
+ }
+ }
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.fn.extend({
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // animate to the value specified
+ .end().animate({ opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || data_priv.get( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = data_priv.get( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each(function() {
+ var index,
+ data = data_priv.get( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // enable finishing flag on private data
+ data.finish = true;
+
+ // empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // turn off finishing flag
+ delete data.finish;
+ });
+ }
+});
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+ var timer,
+ i = 0,
+ timers = jQuery.timers;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ jQuery.timers.push( timer );
+ if ( timer() ) {
+ jQuery.fx.start();
+ } else {
+ jQuery.timers.pop();
+ }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ clearInterval( timerId );
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+};
+
+
+(function() {
+ var input = document.createElement( "input" ),
+ select = document.createElement( "select" ),
+ opt = select.appendChild( document.createElement( "option" ) );
+
+ input.type = "checkbox";
+
+ // Support: iOS 5.1, Android 4.x, Android 2.3
+ // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere)
+ support.checkOn = input.value !== "";
+
+ // Must access the parent to make an option select properly
+ // Support: IE9, IE10
+ support.optSelected = opt.selected;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Check if an input maintains its value after becoming a radio
+ // Support: IE9, IE10
+ input = document.createElement( "input" );
+ input.value = "t";
+ input.type = "radio";
+ support.radioValue = input.value === "t";
+})();
+
+
+var nodeHook, boolHook,
+ attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ }
+});
+
+jQuery.extend({
+ attr: function( elem, name, value ) {
+ var hooks, ret,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === strundefined ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+
+ } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name, propName,
+ i = 0,
+ attrNames = value && value.match( rnotwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( (name = attrNames[i++]) ) {
+ propName = jQuery.propFix[ name ] || name;
+
+ // Boolean attributes get special treatment (#10870)
+ if ( jQuery.expr.match.bool.test( name ) ) {
+ // Set corresponding property to false
+ elem[ propName ] = false;
+ }
+
+ elem.removeAttribute( name );
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !support.radioValue && value === "radio" &&
+ jQuery.nodeName( elem, "input" ) ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to default in case type is set after value during creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ }
+});
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = attrHandle[ name ] || jQuery.find.attr;
+
+ attrHandle[ name ] = function( elem, name, isXML ) {
+ var ret, handle;
+ if ( !isXML ) {
+ // Avoid an infinite loop by temporarily removing this function from the getter
+ handle = attrHandle[ name ];
+ attrHandle[ name ] = ret;
+ ret = getter( elem, name, isXML ) != null ?
+ name.toLowerCase() :
+ null;
+ attrHandle[ name ] = handle;
+ }
+ return ret;
+ };
+});
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i;
+
+jQuery.fn.extend({
+ prop: function( name, value ) {
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ return this.each(function() {
+ delete this[ jQuery.propFix[ name ] || name ];
+ });
+ }
+});
+
+jQuery.extend({
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+ ret :
+ ( elem[ name ] = value );
+
+ } else {
+ return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+ ret :
+ elem[ name ];
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
+ elem.tabIndex :
+ -1;
+ }
+ }
+ }
+});
+
+// Support: IE9+
+// Selectedness for an option in an optgroup can be inaccurate
+if ( !support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+ if ( parent && parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ return null;
+ }
+ };
+}
+
+jQuery.each([
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+
+
+
+var rclass = /[\t\r\n\f]/g;
+
+jQuery.fn.extend({
+ addClass: function( value ) {
+ var classes, elem, cur, clazz, j, finalValue,
+ proceed = typeof value === "string" && value,
+ i = 0,
+ len = this.length;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call( this, j, this.className ) );
+ });
+ }
+
+ if ( proceed ) {
+ // The disjunction here is for better compressibility (see removeClass)
+ classes = ( value || "" ).match( rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ " "
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+
+ // only assign if different to avoid unneeded rendering.
+ finalValue = jQuery.trim( cur );
+ if ( elem.className !== finalValue ) {
+ elem.className = finalValue;
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, clazz, j, finalValue,
+ proceed = arguments.length === 0 || typeof value === "string" && value,
+ i = 0,
+ len = this.length;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, this.className ) );
+ });
+ }
+ if ( proceed ) {
+ classes = ( value || "" ).match( rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ ""
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+
+ // only assign if different to avoid unneeded rendering.
+ finalValue = value ? jQuery.trim( cur ) : "";
+ if ( elem.className !== finalValue ) {
+ elem.className = finalValue;
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ classNames = value.match( rnotwhite ) || [];
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( type === strundefined || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ data_priv.set( this, "__className__", this.className );
+ }
+
+ // If the element has a class name or if we're passed "false",
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+});
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend({
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+
+ } else if ( typeof val === "number" ) {
+ val += "";
+
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map( val, function( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+ // Support: IE10-11+
+ // option.text throws exceptions (#14686, #14858)
+ jQuery.trim( jQuery.text( elem ) );
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // IE6-9 doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+ if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
+ optionSet = true;
+ }
+ }
+
+ // force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ }
+});
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ };
+ if ( !support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ // Support: Webkit
+ // "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ };
+ }
+});
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+});
+
+jQuery.fn.extend({
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+ }
+});
+
+
+var nonce = jQuery.now();
+
+var rquery = (/\?/);
+
+
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+ return JSON.parse( data + "" );
+};
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+ var xml, tmp;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+
+ // Support: IE9
+ try {
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data, "text/xml" );
+ } catch ( e ) {
+ xml = undefined;
+ }
+
+ if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+};
+
+
+var
+ // Document location
+ ajaxLocParts,
+ ajaxLocation,
+
+ rhash = /#.*$/,
+ rts = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat("*");
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+ // For each dataType in the dataTypeExpression
+ while ( (dataType = dataTypes[i++]) ) {
+ // Prepend if requested
+ if ( dataType[0] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+ // Otherwise append
+ } else {
+ (structure[ dataType ] = structure[ dataType ] || []).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ });
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var ct, type, finalDataType, firstDataType,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while ( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s[ "throws" ] ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ type: "GET",
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var transport,
+ // URL without anti-cache param
+ cacheURL,
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks("once memory"),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // The jqXHR state
+ state = 0,
+ // Default abort message
+ strAbort = "canceled",
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( (match = rheaders.exec( responseHeadersString )) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ var lname = name.toLowerCase();
+ if ( !state ) {
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( state < 2 ) {
+ for ( code in map ) {
+ // Lazy-add the new callback in a way that preserves old ones
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ } else {
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR ).complete = completeDeferred.add;
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (prefilters might expect it)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
+ .replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+ // A cross-domain request is in order when we have a protocol:host:port mismatch
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger("ajaxStart");
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ cacheURL = s.url;
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+ s.url = rts.test( cacheURL ) ?
+
+ // If there is already a '_' parameter, set its value
+ cacheURL.replace( rts, "$1_=" + nonce++ ) :
+
+ // Otherwise add one to the end
+ cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
+ }
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout(function() {
+ jqXHR.abort("timeout");
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader("etag");
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger("ajaxStop");
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ });
+ };
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
+ jQuery.fn[ type ] = function( fn ) {
+ return this.on( type, fn );
+ };
+});
+
+
+jQuery._evalUrl = function( url ) {
+ return jQuery.ajax({
+ url: url,
+ type: "GET",
+ dataType: "script",
+ async: false,
+ global: false,
+ "throws": true
+ });
+};
+
+
+jQuery.fn.extend({
+ wrapAll: function( html ) {
+ var wrap;
+
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[ 0 ] ) {
+
+ // The elements to wrap the target around
+ wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+ if ( this[ 0 ].parentNode ) {
+ wrap.insertBefore( this[ 0 ] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstElementChild ) {
+ elem = elem.firstElementChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function( i ) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ }
+});
+
+
+jQuery.expr.filters.hidden = function( elem ) {
+ // Support: Opera <= 12.12
+ // Opera reports offsetWidths and offsetHeights less than zero on some elements
+ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
+};
+jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+};
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+};
+
+jQuery.fn.extend({
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map(function() {
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ })
+ .filter(function() {
+ var type = this.type;
+
+ // Use .is( ":disabled" ) so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !rcheckableType.test( type ) );
+ })
+ .map(function( i, elem ) {
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val ) {
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+
+jQuery.ajaxSettings.xhr = function() {
+ try {
+ return new XMLHttpRequest();
+ } catch( e ) {}
+};
+
+var xhrId = 0,
+ xhrCallbacks = {},
+ xhrSuccessStatus = {
+ // file protocol always yields status code 0, assume 200
+ 0: 200,
+ // Support: IE9
+ // #1450: sometimes IE returns 1223 when it should be 204
+ 1223: 204
+ },
+ xhrSupported = jQuery.ajaxSettings.xhr();
+
+// Support: IE9
+// Open requests must be manually aborted on unload (#5280)
+if ( window.ActiveXObject ) {
+ jQuery( window ).on( "unload", function() {
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]();
+ }
+ });
+}
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport(function( options ) {
+ var callback;
+
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( support.cors || xhrSupported && !options.crossDomain ) {
+ return {
+ send: function( headers, complete ) {
+ var i,
+ xhr = options.xhr(),
+ id = ++xhrId;
+
+ xhr.open( options.type, options.url, options.async, options.username, options.password );
+
+ // Apply custom fields if provided
+ if ( options.xhrFields ) {
+ for ( i in options.xhrFields ) {
+ xhr[ i ] = options.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( options.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( options.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !options.crossDomain && !headers["X-Requested-With"] ) {
+ headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ // Set headers
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+
+ // Callback
+ callback = function( type ) {
+ return function() {
+ if ( callback ) {
+ delete xhrCallbacks[ id ];
+ callback = xhr.onload = xhr.onerror = null;
+
+ if ( type === "abort" ) {
+ xhr.abort();
+ } else if ( type === "error" ) {
+ complete(
+ // file: protocol always yields status 0; see #8605, #14207
+ xhr.status,
+ xhr.statusText
+ );
+ } else {
+ complete(
+ xhrSuccessStatus[ xhr.status ] || xhr.status,
+ xhr.statusText,
+ // Support: IE9
+ // Accessing binary-data responseText throws an exception
+ // (#11426)
+ typeof xhr.responseText === "string" ? {
+ text: xhr.responseText
+ } : undefined,
+ xhr.getAllResponseHeaders()
+ );
+ }
+ }
+ };
+ };
+
+ // Listen to events
+ xhr.onload = callback();
+ xhr.onerror = callback("error");
+
+ // Create the abort callback
+ callback = xhrCallbacks[ id ] = callback("abort");
+
+ try {
+ // Do send the request (this may raise an exception)
+ xhr.send( options.hasContent && options.data || null );
+ } catch ( e ) {
+ // #14683: Only rethrow if this hasn't been notified as an error yet
+ if ( callback ) {
+ throw e;
+ }
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /(?:java|ecma)script/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+ var script, callback;
+ return {
+ send: function( _, complete ) {
+ script = jQuery("<script>").prop({
+ async: true,
+ charset: s.scriptCharset,
+ src: s.url
+ }).on(
+ "load error",
+ callback = function( evt ) {
+ script.remove();
+ callback = null;
+ if ( evt ) {
+ complete( evt.type === "error" ? 404 : 200, evt.type );
+ }
+ }
+ );
+ document.head.appendChild( script[ 0 ] );
+ },
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+});
+
+
+
+
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always(function() {
+ // Restore preexisting value
+ window[ callbackName ] = overwritten;
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+ // make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ });
+
+ // Delegate to script
+ return "script";
+ }
+});
+
+
+
+
+// data: string of html
+// context (optional): If specified, the fragment will be created in this context, defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
+
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
+
+ if ( scripts && scripts.length ) {
+ jQuery( scripts ).remove();
+ }
+
+ return jQuery.merge( [], parsed.childNodes );
+};
+
+
+// Keep a copy of the old load method
+var _load = jQuery.fn.load;
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+ }
+
+ var selector, type, response,
+ self = this,
+ off = url.indexOf(" ");
+
+ if ( off >= 0 ) {
+ selector = jQuery.trim( url.slice( off ) );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax({
+ url: url,
+
+ // if "type" variable is undefined, then "GET" method will be used
+ type: type,
+ dataType: "html",
+ data: params
+ }).done(function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ }).complete( callback && function( jqXHR, status ) {
+ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+ });
+ }
+
+ return this;
+};
+
+
+
+
+jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+};
+
+
+
+
+var docElem = window.document.documentElement;
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+ setOffset: function( elem, options, i ) {
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+ position = jQuery.css( elem, "position" ),
+ curElem = jQuery( elem ),
+ props = {};
+
+ // Set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ curOffset = curElem.offset();
+ curCSSTop = jQuery.css( elem, "top" );
+ curCSSLeft = jQuery.css( elem, "left" );
+ calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+ ( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
+
+ // Need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+jQuery.fn.extend({
+ offset: function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var docElem, win,
+ elem = this[ 0 ],
+ box = { top: 0, left: 0 },
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ // If we don't have gBCR, just use 0,0 rather than error
+ // BlackBerry 5, iOS 3 (original iPhone)
+ if ( typeof elem.getBoundingClientRect !== strundefined ) {
+ box = elem.getBoundingClientRect();
+ }
+ win = getWindow( doc );
+ return {
+ top: box.top + win.pageYOffset - docElem.clientTop,
+ left: box.left + win.pageXOffset - docElem.clientLeft
+ };
+ },
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ elem = this[ 0 ],
+ parentOffset = { top: 0, left: 0 };
+
+ // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+ // We assume that getBoundingClientRect is available when computed position is fixed
+ offset = elem.getBoundingClientRect();
+
+ } else {
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+ }
+
+ // Subtract parent offsets and element margins
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || docElem;
+
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ return offsetParent || docElem;
+ });
+ }
+});
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+ var top = "pageYOffset" === prop;
+
+ jQuery.fn[ method ] = function( val ) {
+ return access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? win[ prop ] : elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : window.pageXOffset,
+ top ? val : window.pageYOffset
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// getComputedStyle returns percent when specified for top/left/bottom/right
+// rather than make the css module depend on the offset module, we just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+ function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+ // if curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ );
+});
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+ // margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+ // whichever is greatest
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ });
+});
+
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+ return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function() {
+ return jQuery;
+ });
+}
+
+
+
+
+var
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in
+// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( typeof noGlobal === strundefined ) {
+ window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+
+}));
+
+/**
+ * @license AngularJS v1.4.4
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, document){
+ var _jQuery = window.jQuery.noConflict(true);
+
+/**
+ * @description
+ *
+ * This object provides a utility for producing rich Error messages within
+ * Angular. It can be called as follows:
+ *
+ * var exampleMinErr = minErr('example');
+ * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
+ *
+ * The above creates an instance of minErr in the example namespace. The
+ * resulting error will have a namespaced error code of example.one. The
+ * resulting error will replace {0} with the value of foo, and {1} with the
+ * value of bar. The object is not restricted in the number of arguments it can
+ * take.
+ *
+ * If fewer arguments are specified than necessary for interpolation, the extra
+ * interpolation markers will be preserved in the final string.
+ *
+ * Since data will be parsed statically during a build step, some restrictions
+ * are applied with respect to how minErr instances are created and called.
+ * Instances should have names of the form namespaceMinErr for a minErr created
+ * using minErr('namespace') . Error codes, namespaces and template strings
+ * should all be static strings, not variables or general expressions.
+ *
+ * @param {string} module The namespace to use for the new minErr instance.
+ * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
+ * error from returned function, for cases when a particular type of error is useful.
+ * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
+ */
+
+function minErr(module, ErrorConstructor) {
+ ErrorConstructor = ErrorConstructor || Error;
+ return function() {
+ var SKIP_INDEXES = 2;
+
+ var templateArgs = arguments,
+ code = templateArgs[0],
+ message = '[' + (module ? module + ':' : '') + code + '] ',
+ template = templateArgs[1],
+ paramPrefix, i;
+
+ message += template.replace(/\{\d+\}/g, function(match) {
+ var index = +match.slice(1, -1),
+ shiftedIndex = index + SKIP_INDEXES;
+
+ if (shiftedIndex < templateArgs.length) {
+ return toDebugString(templateArgs[shiftedIndex]);
+ }
+
+ return match;
+ });
+
+ message += '\nhttp://errors.angularjs.org/1.4.4/' +
+ (module ? module + '/' : '') + code;
+
+ for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
+ message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' +
+ encodeURIComponent(toDebugString(templateArgs[i]));
+ }
+
+ return new ErrorConstructor(message);
+ };
+}
+
+/* We need to tell jshint what variables are being exported */
+/* global angular: true,
+ msie: true,
+ jqLite: true,
+ jQuery: true,
+ slice: true,
+ splice: true,
+ push: true,
+ toString: true,
+ ngMinErr: true,
+ angularModule: true,
+ uid: true,
+ REGEX_STRING_REGEXP: true,
+ VALIDITY_STATE_PROPERTY: true,
+
+ lowercase: true,
+ uppercase: true,
+ manualLowercase: true,
+ manualUppercase: true,
+ nodeName_: true,
+ isArrayLike: true,
+ forEach: true,
+ forEachSorted: true,
+ reverseParams: true,
+ nextUid: true,
+ setHashKey: true,
+ extend: true,
+ toInt: true,
+ inherit: true,
+ merge: true,
+ noop: true,
+ identity: true,
+ valueFn: true,
+ isUndefined: true,
+ isDefined: true,
+ isObject: true,
+ isBlankObject: true,
+ isString: true,
+ isNumber: true,
+ isDate: true,
+ isArray: true,
+ isFunction: true,
+ isRegExp: true,
+ isWindow: true,
+ isScope: true,
+ isFile: true,
+ isFormData: true,
+ isBlob: true,
+ isBoolean: true,
+ isPromiseLike: true,
+ trim: true,
+ escapeForRegexp: true,
+ isElement: true,
+ makeMap: true,
+ includes: true,
+ arrayRemove: true,
+ copy: true,
+ shallowCopy: true,
+ equals: true,
+ csp: true,
+ jq: true,
+ concat: true,
+ sliceArgs: true,
+ bind: true,
+ toJsonReplacer: true,
+ toJson: true,
+ fromJson: true,
+ convertTimezoneToLocal: true,
+ timezoneToOffset: true,
+ startingTag: true,
+ tryDecodeURIComponent: true,
+ parseKeyValue: true,
+ toKeyValue: true,
+ encodeUriSegment: true,
+ encodeUriQuery: true,
+ angularInit: true,
+ bootstrap: true,
+ getTestability: true,
+ snake_case: true,
+ bindJQuery: true,
+ assertArg: true,
+ assertArgFn: true,
+ assertNotHasOwnProperty: true,
+ getter: true,
+ getBlockNodes: true,
+ hasOwnProperty: true,
+ createMap: true,
+
+ NODE_TYPE_ELEMENT: true,
+ NODE_TYPE_ATTRIBUTE: true,
+ NODE_TYPE_TEXT: true,
+ NODE_TYPE_COMMENT: true,
+ NODE_TYPE_DOCUMENT: true,
+ NODE_TYPE_DOCUMENT_FRAGMENT: true,
+*/
+
+////////////////////////////////////
+
+/**
+ * @ngdoc module
+ * @name ng
+ * @module ng
+ * @description
+ *
+ * # ng (core module)
+ * The ng module is loaded by default when an AngularJS application is started. The module itself
+ * contains the essential components for an AngularJS application to function. The table below
+ * lists a high level breakdown of each of the services/factories, filters, directives and testing
+ * components available within this core module.
+ *
+ * <div doc-module-components="ng"></div>
+ */
+
+var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/;
+
+// The name of a form control's ValidityState property.
+// This is used so that it's possible for internal tests to create mock ValidityStates.
+var VALIDITY_STATE_PROPERTY = 'validity';
+
+/**
+ * @ngdoc function
+ * @name angular.lowercase
+ * @module ng
+ * @kind function
+ *
+ * @description Converts the specified string to lowercase.
+ * @param {string} string String to be converted to lowercase.
+ * @returns {string} Lowercased string.
+ */
+var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;};
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+/**
+ * @ngdoc function
+ * @name angular.uppercase
+ * @module ng
+ * @kind function
+ *
+ * @description Converts the specified string to uppercase.
+ * @param {string} string String to be converted to uppercase.
+ * @returns {string} Uppercased string.
+ */
+var uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;};
+
+
+var manualLowercase = function(s) {
+ /* jshint bitwise: false */
+ return isString(s)
+ ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})
+ : s;
+};
+var manualUppercase = function(s) {
+ /* jshint bitwise: false */
+ return isString(s)
+ ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
+ : s;
+};
+
+
+// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish
+// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods
+// with correct but slower alternatives.
+if ('i' !== 'I'.toLowerCase()) {
+ lowercase = manualLowercase;
+ uppercase = manualUppercase;
+}
+
+
+var
+ msie, // holds major version number for IE, or NaN if UA is not IE.
+ jqLite, // delay binding since jQuery could be loaded after us.
+ jQuery, // delay binding
+ slice = [].slice,
+ splice = [].splice,
+ push = [].push,
+ toString = Object.prototype.toString,
+ getPrototypeOf = Object.getPrototypeOf,
+ ngMinErr = minErr('ng'),
+
+ /** @name angular */
+ angular = window.angular || (window.angular = {}),
+ angularModule,
+ uid = 0;
+
+/**
+ * documentMode is an IE-only property
+ * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
+ */
+msie = document.documentMode;
+
+
+/**
+ * @private
+ * @param {*} obj
+ * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,
+ * String ...)
+ */
+function isArrayLike(obj) {
+ if (obj == null || isWindow(obj)) {
+ return false;
+ }
+
+ // Support: iOS 8.2 (not reproducible in simulator)
+ // "length" in obj used to prevent JIT error (gh-11508)
+ var length = "length" in Object(obj) && obj.length;
+
+ if (obj.nodeType === NODE_TYPE_ELEMENT && length) {
+ return true;
+ }
+
+ return isString(obj) || isArray(obj) || length === 0 ||
+ typeof length === 'number' && length > 0 && (length - 1) in obj;
+}
+
+/**
+ * @ngdoc function
+ * @name angular.forEach
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Invokes the `iterator` function once for each item in `obj` collection, which can be either an
+ * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`
+ * is the value of an object property or an array element, `key` is the object property key or
+ * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.
+ *
+ * It is worth noting that `.forEach` does not iterate over inherited properties because it filters
+ * using the `hasOwnProperty` method.
+ *
+ * Unlike ES262's
+ * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),
+ * Providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just
+ * return the value provided.
+ *
+ ```js
+ var values = {name: 'misko', gender: 'male'};
+ var log = [];
+ angular.forEach(values, function(value, key) {
+ this.push(key + ': ' + value);
+ }, log);
+ expect(log).toEqual(['name: misko', 'gender: male']);
+ ```
+ *
+ * @param {Object|Array} obj Object to iterate over.
+ * @param {Function} iterator Iterator function.
+ * @param {Object=} context Object to become context (`this`) for the iterator function.
+ * @returns {Object|Array} Reference to `obj`.
+ */
+
+function forEach(obj, iterator, context) {
+ var key, length;
+ if (obj) {
+ if (isFunction(obj)) {
+ for (key in obj) {
+ // Need to check if hasOwnProperty exists,
+ // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
+ if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ }
+ } else if (isArray(obj) || isArrayLike(obj)) {
+ var isPrimitive = typeof obj !== 'object';
+ for (key = 0, length = obj.length; key < length; key++) {
+ if (isPrimitive || key in obj) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ }
+ } else if (obj.forEach && obj.forEach !== forEach) {
+ obj.forEach(iterator, context, obj);
+ } else if (isBlankObject(obj)) {
+ // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
+ for (key in obj) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ } else if (typeof obj.hasOwnProperty === 'function') {
+ // Slow path for objects inheriting Object.prototype, hasOwnProperty check needed
+ for (key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ }
+ } else {
+ // Slow path for objects which do not have a method `hasOwnProperty`
+ for (key in obj) {
+ if (hasOwnProperty.call(obj, key)) {
+ iterator.call(context, obj[key], key, obj);
+ }
+ }
+ }
+ }
+ return obj;
+}
+
+function forEachSorted(obj, iterator, context) {
+ var keys = Object.keys(obj).sort();
+ for (var i = 0; i < keys.length; i++) {
+ iterator.call(context, obj[keys[i]], keys[i]);
+ }
+ return keys;
+}
+
+
+/**
+ * when using forEach the params are value, key, but it is often useful to have key, value.
+ * @param {function(string, *)} iteratorFn
+ * @returns {function(*, string)}
+ */
+function reverseParams(iteratorFn) {
+ return function(value, key) { iteratorFn(key, value); };
+}
+
+/**
+ * A consistent way of creating unique IDs in angular.
+ *
+ * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before
+ * we hit number precision issues in JavaScript.
+ *
+ * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M
+ *
+ * @returns {number} an unique alpha-numeric string
+ */
+function nextUid() {
+ return ++uid;
+}
+
+
+/**
+ * Set or clear the hashkey for an object.
+ * @param obj object
+ * @param h the hashkey (!truthy to delete the hashkey)
+ */
+function setHashKey(obj, h) {
+ if (h) {
+ obj.$$hashKey = h;
+ } else {
+ delete obj.$$hashKey;
+ }
+}
+
+
+function baseExtend(dst, objs, deep) {
+ var h = dst.$$hashKey;
+
+ for (var i = 0, ii = objs.length; i < ii; ++i) {
+ var obj = objs[i];
+ if (!isObject(obj) && !isFunction(obj)) continue;
+ var keys = Object.keys(obj);
+ for (var j = 0, jj = keys.length; j < jj; j++) {
+ var key = keys[j];
+ var src = obj[key];
+
+ if (deep && isObject(src)) {
+ if (isDate(src)) {
+ dst[key] = new Date(src.valueOf());
+ } else if (isRegExp(src)) {
+ dst[key] = new RegExp(src);
+ } else {
+ if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};
+ baseExtend(dst[key], [src], true);
+ }
+ } else {
+ dst[key] = src;
+ }
+ }
+ }
+
+ setHashKey(dst, h);
+ return dst;
+}
+
+/**
+ * @ngdoc function
+ * @name angular.extend
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
+ * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
+ * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.
+ *
+ * **Note:** Keep in mind that `angular.extend` does not support recursive merge (deep copy). Use
+ * {@link angular.merge} for this.
+ *
+ * @param {Object} dst Destination object.
+ * @param {...Object} src Source object(s).
+ * @returns {Object} Reference to `dst`.
+ */
+function extend(dst) {
+ return baseExtend(dst, slice.call(arguments, 1), false);
+}
+
+
+/**
+* @ngdoc function
+* @name angular.merge
+* @module ng
+* @kind function
+*
+* @description
+* Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
+* to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
+* by passing an empty object as the target: `var object = angular.merge({}, object1, object2)`.
+*
+* Unlike {@link angular.extend extend()}, `merge()` recursively descends into object properties of source
+* objects, performing a deep copy.
+*
+* @param {Object} dst Destination object.
+* @param {...Object} src Source object(s).
+* @returns {Object} Reference to `dst`.
+*/
+function merge(dst) {
+ return baseExtend(dst, slice.call(arguments, 1), true);
+}
+
+
+
+function toInt(str) {
+ return parseInt(str, 10);
+}
+
+
+function inherit(parent, extra) {
+ return extend(Object.create(parent), extra);
+}
+
+/**
+ * @ngdoc function
+ * @name angular.noop
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * A function that performs no operations. This function can be useful when writing code in the
+ * functional style.
+ ```js
+ function foo(callback) {
+ var result = calculateResult();
+ (callback || angular.noop)(result);
+ }
+ ```
+ */
+function noop() {}
+noop.$inject = [];
+
+
+/**
+ * @ngdoc function
+ * @name angular.identity
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * A function that returns its first argument. This function is useful when writing code in the
+ * functional style.
+ *
+ ```js
+ function transformer(transformationFn, value) {
+ return (transformationFn || angular.identity)(value);
+ };
+ ```
+ * @param {*} value to be returned.
+ * @returns {*} the value passed in.
+ */
+function identity($) {return $;}
+identity.$inject = [];
+
+
+function valueFn(value) {return function() {return value;};}
+
+function hasCustomToString(obj) {
+ return isFunction(obj.toString) && obj.toString !== Object.prototype.toString;
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isUndefined
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is undefined.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is undefined.
+ */
+function isUndefined(value) {return typeof value === 'undefined';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isDefined
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is defined.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is defined.
+ */
+function isDefined(value) {return typeof value !== 'undefined';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isObject
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not
+ * considered to be objects. Note that JavaScript arrays are objects.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is an `Object` but not `null`.
+ */
+function isObject(value) {
+ // http://jsperf.com/isobject4
+ return value !== null && typeof value === 'object';
+}
+
+
+/**
+ * Determine if a value is an object with a null prototype
+ *
+ * @returns {boolean} True if `value` is an `Object` with a null prototype
+ */
+function isBlankObject(value) {
+ return value !== null && typeof value === 'object' && !getPrototypeOf(value);
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isString
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a `String`.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `String`.
+ */
+function isString(value) {return typeof value === 'string';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isNumber
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a `Number`.
+ *
+ * This includes the "special" numbers `NaN`, `+Infinity` and `-Infinity`.
+ *
+ * If you wish to exclude these then you can use the native
+ * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)
+ * method.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `Number`.
+ */
+function isNumber(value) {return typeof value === 'number';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isDate
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a value is a date.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `Date`.
+ */
+function isDate(value) {
+ return toString.call(value) === '[object Date]';
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isArray
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is an `Array`.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is an `Array`.
+ */
+var isArray = Array.isArray;
+
+/**
+ * @ngdoc function
+ * @name angular.isFunction
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a `Function`.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `Function`.
+ */
+function isFunction(value) {return typeof value === 'function';}
+
+
+/**
+ * Determines if a value is a regular expression object.
+ *
+ * @private
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `RegExp`.
+ */
+function isRegExp(value) {
+ return toString.call(value) === '[object RegExp]';
+}
+
+
+/**
+ * Checks if `obj` is a window object.
+ *
+ * @private
+ * @param {*} obj Object to check
+ * @returns {boolean} True if `obj` is a window obj.
+ */
+function isWindow(obj) {
+ return obj && obj.window === obj;
+}
+
+
+function isScope(obj) {
+ return obj && obj.$evalAsync && obj.$watch;
+}
+
+
+function isFile(obj) {
+ return toString.call(obj) === '[object File]';
+}
+
+
+function isFormData(obj) {
+ return toString.call(obj) === '[object FormData]';
+}
+
+
+function isBlob(obj) {
+ return toString.call(obj) === '[object Blob]';
+}
+
+
+function isBoolean(value) {
+ return typeof value === 'boolean';
+}
+
+
+function isPromiseLike(obj) {
+ return obj && isFunction(obj.then);
+}
+
+
+var TYPED_ARRAY_REGEXP = /^\[object (Uint8(Clamped)?)|(Uint16)|(Uint32)|(Int8)|(Int16)|(Int32)|(Float(32)|(64))Array\]$/;
+function isTypedArray(value) {
+ return TYPED_ARRAY_REGEXP.test(toString.call(value));
+}
+
+
+var trim = function(value) {
+ return isString(value) ? value.trim() : value;
+};
+
+// Copied from:
+// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021
+// Prereq: s is a string.
+var escapeForRegexp = function(s) {
+ return s.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').
+ replace(/\x08/g, '\\x08');
+};
+
+
+/**
+ * @ngdoc function
+ * @name angular.isElement
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a DOM element (or wrapped jQuery element).
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).
+ */
+function isElement(node) {
+ return !!(node &&
+ (node.nodeName // we are a direct element
+ || (node.prop && node.attr && node.find))); // we have an on and find method part of jQuery API
+}
+
+/**
+ * @param str 'key1,key2,...'
+ * @returns {object} in the form of {key1:true, key2:true, ...}
+ */
+function makeMap(str) {
+ var obj = {}, items = str.split(","), i;
+ for (i = 0; i < items.length; i++) {
+ obj[items[i]] = true;
+ }
+ return obj;
+}
+
+
+function nodeName_(element) {
+ return lowercase(element.nodeName || (element[0] && element[0].nodeName));
+}
+
+function includes(array, obj) {
+ return Array.prototype.indexOf.call(array, obj) != -1;
+}
+
+function arrayRemove(array, value) {
+ var index = array.indexOf(value);
+ if (index >= 0) {
+ array.splice(index, 1);
+ }
+ return index;
+}
+
+/**
+ * @ngdoc function
+ * @name angular.copy
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Creates a deep copy of `source`, which should be an object or an array.
+ *
+ * * If no destination is supplied, a copy of the object or array is created.
+ * * If a destination is provided, all of its elements (for arrays) or properties (for objects)
+ * are deleted and then all elements/properties from the source are copied to it.
+ * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.
+ * * If `source` is identical to 'destination' an exception will be thrown.
+ *
+ * @param {*} source The source that will be used to make a copy.
+ * Can be any type, including primitives, `null`, and `undefined`.
+ * @param {(Object|Array)=} destination Destination into which the source is copied. If
+ * provided, must be of the same type as `source`.
+ * @returns {*} The copy or updated `destination`, if `destination` was specified.
+ *
+ * @example
+ <example module="copyExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form novalidate class="simple-form">
+ Name: <input type="text" ng-model="user.name" /><br />
+ E-mail: <input type="email" ng-model="user.email" /><br />
+ Gender: <input type="radio" ng-model="user.gender" value="male" />male
+ <input type="radio" ng-model="user.gender" value="female" />female<br />
+ <button ng-click="reset()">RESET</button>
+ <button ng-click="update(user)">SAVE</button>
+ </form>
+ <pre>form = {{user | json}}</pre>
+ <pre>master = {{master | json}}</pre>
+ </div>
+
+ <script>
+ angular.module('copyExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.master= {};
+
+ $scope.update = function(user) {
+ // Example with 1 argument
+ $scope.master= angular.copy(user);
+ };
+
+ $scope.reset = function() {
+ // Example with 2 arguments
+ angular.copy($scope.master, $scope.user);
+ };
+
+ $scope.reset();
+ }]);
+ </script>
+ </file>
+ </example>
+ */
+function copy(source, destination, stackSource, stackDest) {
+ if (isWindow(source) || isScope(source)) {
+ throw ngMinErr('cpws',
+ "Can't copy! Making copies of Window or Scope instances is not supported.");
+ }
+ if (isTypedArray(destination)) {
+ throw ngMinErr('cpta',
+ "Can't copy! TypedArray destination cannot be mutated.");
+ }
+
+ if (!destination) {
+ destination = source;
+ if (isObject(source)) {
+ var index;
+ if (stackSource && (index = stackSource.indexOf(source)) !== -1) {
+ return stackDest[index];
+ }
+
+ // TypedArray, Date and RegExp have specific copy functionality and must be
+ // pushed onto the stack before returning.
+ // Array and other objects create the base object and recurse to copy child
+ // objects. The array/object will be pushed onto the stack when recursed.
+ if (isArray(source)) {
+ return copy(source, [], stackSource, stackDest);
+ } else if (isTypedArray(source)) {
+ destination = new source.constructor(source);
+ } else if (isDate(source)) {
+ destination = new Date(source.getTime());
+ } else if (isRegExp(source)) {
+ destination = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]);
+ destination.lastIndex = source.lastIndex;
+ } else {
+ var emptyObject = Object.create(getPrototypeOf(source));
+ return copy(source, emptyObject, stackSource, stackDest);
+ }
+
+ if (stackDest) {
+ stackSource.push(source);
+ stackDest.push(destination);
+ }
+ }
+ } else {
+ if (source === destination) throw ngMinErr('cpi',
+ "Can't copy! Source and destination are identical.");
+
+ stackSource = stackSource || [];
+ stackDest = stackDest || [];
+
+ if (isObject(source)) {
+ stackSource.push(source);
+ stackDest.push(destination);
+ }
+
+ var result, key;
+ if (isArray(source)) {
+ destination.length = 0;
+ for (var i = 0; i < source.length; i++) {
+ destination.push(copy(source[i], null, stackSource, stackDest));
+ }
+ } else {
+ var h = destination.$$hashKey;
+ if (isArray(destination)) {
+ destination.length = 0;
+ } else {
+ forEach(destination, function(value, key) {
+ delete destination[key];
+ });
+ }
+ if (isBlankObject(source)) {
+ // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
+ for (key in source) {
+ destination[key] = copy(source[key], null, stackSource, stackDest);
+ }
+ } else if (source && typeof source.hasOwnProperty === 'function') {
+ // Slow path, which must rely on hasOwnProperty
+ for (key in source) {
+ if (source.hasOwnProperty(key)) {
+ destination[key] = copy(source[key], null, stackSource, stackDest);
+ }
+ }
+ } else {
+ // Slowest path --- hasOwnProperty can't be called as a method
+ for (key in source) {
+ if (hasOwnProperty.call(source, key)) {
+ destination[key] = copy(source[key], null, stackSource, stackDest);
+ }
+ }
+ }
+ setHashKey(destination,h);
+ }
+ }
+ return destination;
+}
+
+/**
+ * Creates a shallow copy of an object, an array or a primitive.
+ *
+ * Assumes that there are no proto properties for objects.
+ */
+function shallowCopy(src, dst) {
+ if (isArray(src)) {
+ dst = dst || [];
+
+ for (var i = 0, ii = src.length; i < ii; i++) {
+ dst[i] = src[i];
+ }
+ } else if (isObject(src)) {
+ dst = dst || {};
+
+ for (var key in src) {
+ if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
+ dst[key] = src[key];
+ }
+ }
+ }
+
+ return dst || src;
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.equals
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if two objects or two values are equivalent. Supports value types, regular
+ * expressions, arrays and objects.
+ *
+ * Two objects or values are considered equivalent if at least one of the following is true:
+ *
+ * * Both objects or values pass `===` comparison.
+ * * Both objects or values are of the same type and all of their properties are equal by
+ * comparing them with `angular.equals`.
+ * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
+ * * Both values represent the same regular expression (In JavaScript,
+ * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
+ * representation matches).
+ *
+ * During a property comparison, properties of `function` type and properties with names
+ * that begin with `$` are ignored.
+ *
+ * Scope and DOMWindow objects are being compared only by identify (`===`).
+ *
+ * @param {*} o1 Object or value to compare.
+ * @param {*} o2 Object or value to compare.
+ * @returns {boolean} True if arguments are equal.
+ */
+function equals(o1, o2) {
+ if (o1 === o2) return true;
+ if (o1 === null || o2 === null) return false;
+ if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
+ var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
+ if (t1 == t2) {
+ if (t1 == 'object') {
+ if (isArray(o1)) {
+ if (!isArray(o2)) return false;
+ if ((length = o1.length) == o2.length) {
+ for (key = 0; key < length; key++) {
+ if (!equals(o1[key], o2[key])) return false;
+ }
+ return true;
+ }
+ } else if (isDate(o1)) {
+ if (!isDate(o2)) return false;
+ return equals(o1.getTime(), o2.getTime());
+ } else if (isRegExp(o1)) {
+ return isRegExp(o2) ? o1.toString() == o2.toString() : false;
+ } else {
+ if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) ||
+ isArray(o2) || isDate(o2) || isRegExp(o2)) return false;
+ keySet = createMap();
+ for (key in o1) {
+ if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
+ if (!equals(o1[key], o2[key])) return false;
+ keySet[key] = true;
+ }
+ for (key in o2) {
+ if (!(key in keySet) &&
+ key.charAt(0) !== '$' &&
+ o2[key] !== undefined &&
+ !isFunction(o2[key])) return false;
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+var csp = function() {
+ if (!isDefined(csp.rules)) {
+
+
+ var ngCspElement = (document.querySelector('[ng-csp]') ||
+ document.querySelector('[data-ng-csp]'));
+
+ if (ngCspElement) {
+ var ngCspAttribute = ngCspElement.getAttribute('ng-csp') ||
+ ngCspElement.getAttribute('data-ng-csp');
+ csp.rules = {
+ noUnsafeEval: !ngCspAttribute || (ngCspAttribute.indexOf('no-unsafe-eval') !== -1),
+ noInlineStyle: !ngCspAttribute || (ngCspAttribute.indexOf('no-inline-style') !== -1)
+ };
+ } else {
+ csp.rules = {
+ noUnsafeEval: noUnsafeEval(),
+ noInlineStyle: false
+ };
+ }
+ }
+
+ return csp.rules;
+
+ function noUnsafeEval() {
+ try {
+ /* jshint -W031, -W054 */
+ new Function('');
+ /* jshint +W031, +W054 */
+ return false;
+ } catch (e) {
+ return true;
+ }
+ }
+};
+
+/**
+ * @ngdoc directive
+ * @module ng
+ * @name ngJq
+ *
+ * @element ANY
+ * @param {string=} ngJq the name of the library available under `window`
+ * to be used for angular.element
+ * @description
+ * Use this directive to force the angular.element library. This should be
+ * used to force either jqLite by leaving ng-jq blank or setting the name of
+ * the jquery variable under window (eg. jQuery).
+ *
+ * Since angular looks for this directive when it is loaded (doesn't wait for the
+ * DOMContentLoaded event), it must be placed on an element that comes before the script
+ * which loads angular. Also, only the first instance of `ng-jq` will be used and all
+ * others ignored.
+ *
+ * @example
+ * This example shows how to force jqLite using the `ngJq` directive to the `html` tag.
+ ```html
+ <!doctype html>
+ <html ng-app ng-jq>
+ ...
+ ...
+ </html>
+ ```
+ * @example
+ * This example shows how to use a jQuery based library of a different name.
+ * The library name must be available at the top most 'window'.
+ ```html
+ <!doctype html>
+ <html ng-app ng-jq="jQueryLib">
+ ...
+ ...
+ </html>
+ ```
+ */
+var jq = function() {
+ if (isDefined(jq.name_)) return jq.name_;
+ var el;
+ var i, ii = ngAttrPrefixes.length, prefix, name;
+ for (i = 0; i < ii; ++i) {
+ prefix = ngAttrPrefixes[i];
+ if (el = document.querySelector('[' + prefix.replace(':', '\\:') + 'jq]')) {
+ name = el.getAttribute(prefix + 'jq');
+ break;
+ }
+ }
+
+ return (jq.name_ = name);
+};
+
+function concat(array1, array2, index) {
+ return array1.concat(slice.call(array2, index));
+}
+
+function sliceArgs(args, startIndex) {
+ return slice.call(args, startIndex || 0);
+}
+
+
+/* jshint -W101 */
+/**
+ * @ngdoc function
+ * @name angular.bind
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for
+ * `fn`). You can supply optional `args` that are prebound to the function. This feature is also
+ * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as
+ * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).
+ *
+ * @param {Object} self Context which `fn` should be evaluated in.
+ * @param {function()} fn Function to be bound.
+ * @param {...*} args Optional arguments to be prebound to the `fn` function call.
+ * @returns {function()} Function that wraps the `fn` with all the specified bindings.
+ */
+/* jshint +W101 */
+function bind(self, fn) {
+ var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
+ if (isFunction(fn) && !(fn instanceof RegExp)) {
+ return curryArgs.length
+ ? function() {
+ return arguments.length
+ ? fn.apply(self, concat(curryArgs, arguments, 0))
+ : fn.apply(self, curryArgs);
+ }
+ : function() {
+ return arguments.length
+ ? fn.apply(self, arguments)
+ : fn.call(self);
+ };
+ } else {
+ // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)
+ return fn;
+ }
+}
+
+
+function toJsonReplacer(key, value) {
+ var val = value;
+
+ if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
+ val = undefined;
+ } else if (isWindow(value)) {
+ val = '$WINDOW';
+ } else if (value && document === value) {
+ val = '$DOCUMENT';
+ } else if (isScope(value)) {
+ val = '$SCOPE';
+ }
+
+ return val;
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.toJson
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be
+ * stripped since angular uses this notation internally.
+ *
+ * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
+ * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace.
+ * If set to an integer, the JSON output will contain that many spaces per indentation.
+ * @returns {string|undefined} JSON-ified string representing `obj`.
+ */
+function toJson(obj, pretty) {
+ if (typeof obj === 'undefined') return undefined;
+ if (!isNumber(pretty)) {
+ pretty = pretty ? 2 : null;
+ }
+ return JSON.stringify(obj, toJsonReplacer, pretty);
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.fromJson
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Deserializes a JSON string.
+ *
+ * @param {string} json JSON string to deserialize.
+ * @returns {Object|Array|string|number} Deserialized JSON string.
+ */
+function fromJson(json) {
+ return isString(json)
+ ? JSON.parse(json)
+ : json;
+}
+
+
+function timezoneToOffset(timezone, fallback) {
+ var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;
+ return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;
+}
+
+
+function addDateMinutes(date, minutes) {
+ date = new Date(date.getTime());
+ date.setMinutes(date.getMinutes() + minutes);
+ return date;
+}
+
+
+function convertTimezoneToLocal(date, timezone, reverse) {
+ reverse = reverse ? -1 : 1;
+ var timezoneOffset = timezoneToOffset(timezone, date.getTimezoneOffset());
+ return addDateMinutes(date, reverse * (timezoneOffset - date.getTimezoneOffset()));
+}
+
+
+/**
+ * @returns {string} Returns the string representation of the element.
+ */
+function startingTag(element) {
+ element = jqLite(element).clone();
+ try {
+ // turns out IE does not let you set .html() on elements which
+ // are not allowed to have children. So we just ignore it.
+ element.empty();
+ } catch (e) {}
+ var elemHtml = jqLite('<div>').append(element).html();
+ try {
+ return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) :
+ elemHtml.
+ match(/^(<[^>]+>)/)[1].
+ replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });
+ } catch (e) {
+ return lowercase(elemHtml);
+ }
+
+}
+
+
+/////////////////////////////////////////////////
+
+/**
+ * Tries to decode the URI component without throwing an exception.
+ *
+ * @private
+ * @param str value potential URI component to check.
+ * @returns {boolean} True if `value` can be decoded
+ * with the decodeURIComponent function.
+ */
+function tryDecodeURIComponent(value) {
+ try {
+ return decodeURIComponent(value);
+ } catch (e) {
+ // Ignore any invalid uri component
+ }
+}
+
+
+/**
+ * Parses an escaped url query string into key-value pairs.
+ * @returns {Object.<string,boolean|Array>}
+ */
+function parseKeyValue(/**string*/keyValue) {
+ var obj = {};
+ forEach((keyValue || "").split('&'), function(keyValue) {
+ var splitPoint, key, val;
+ if (keyValue) {
+ key = keyValue = keyValue.replace(/\+/g,'%20');
+ splitPoint = keyValue.indexOf('=');
+ if (splitPoint !== -1) {
+ key = keyValue.substring(0, splitPoint);
+ val = keyValue.substring(splitPoint + 1);
+ }
+ key = tryDecodeURIComponent(key);
+ if (isDefined(key)) {
+ val = isDefined(val) ? tryDecodeURIComponent(val) : true;
+ if (!hasOwnProperty.call(obj, key)) {
+ obj[key] = val;
+ } else if (isArray(obj[key])) {
+ obj[key].push(val);
+ } else {
+ obj[key] = [obj[key],val];
+ }
+ }
+ }
+ });
+ return obj;
+}
+
+function toKeyValue(obj) {
+ var parts = [];
+ forEach(obj, function(value, key) {
+ if (isArray(value)) {
+ forEach(value, function(arrayValue) {
+ parts.push(encodeUriQuery(key, true) +
+ (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
+ });
+ } else {
+ parts.push(encodeUriQuery(key, true) +
+ (value === true ? '' : '=' + encodeUriQuery(value, true)));
+ }
+ });
+ return parts.length ? parts.join('&') : '';
+}
+
+
+/**
+ * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
+ * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path
+ * segments:
+ * segment = *pchar
+ * pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
+ * pct-encoded = "%" HEXDIG HEXDIG
+ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ * sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
+ * / "*" / "+" / "," / ";" / "="
+ */
+function encodeUriSegment(val) {
+ return encodeUriQuery(val, true).
+ replace(/%26/gi, '&').
+ replace(/%3D/gi, '=').
+ replace(/%2B/gi, '+');
+}
+
+
+/**
+ * This method is intended for encoding *key* or *value* parts of query component. We need a custom
+ * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be
+ * encoded per http://tools.ietf.org/html/rfc3986:
+ * query = *( pchar / "/" / "?" )
+ * pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
+ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ * pct-encoded = "%" HEXDIG HEXDIG
+ * sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
+ * / "*" / "+" / "," / ";" / "="
+ */
+function encodeUriQuery(val, pctEncodeSpaces) {
+ return encodeURIComponent(val).
+ replace(/%40/gi, '@').
+ replace(/%3A/gi, ':').
+ replace(/%24/g, '$').
+ replace(/%2C/gi, ',').
+ replace(/%3B/gi, ';').
+ replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
+}
+
+var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];
+
+function getNgAttribute(element, ngAttr) {
+ var attr, i, ii = ngAttrPrefixes.length;
+ for (i = 0; i < ii; ++i) {
+ attr = ngAttrPrefixes[i] + ngAttr;
+ if (isString(attr = element.getAttribute(attr))) {
+ return attr;
+ }
+ }
+ return null;
+}
+
+/**
+ * @ngdoc directive
+ * @name ngApp
+ * @module ng
+ *
+ * @element ANY
+ * @param {angular.Module} ngApp an optional application
+ * {@link angular.module module} name to load.
+ * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be
+ * created in "strict-di" mode. This means that the application will fail to invoke functions which
+ * do not use explicit function annotation (and are thus unsuitable for minification), as described
+ * in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in
+ * tracking down the root of these bugs.
+ *
+ * @description
+ *
+ * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive
+ * designates the **root element** of the application and is typically placed near the root element
+ * of the page - e.g. on the `<body>` or `<html>` tags.
+ *
+ * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`
+ * found in the document will be used to define the root element to auto-bootstrap as an
+ * application. To run multiple applications in an HTML document you must manually bootstrap them using
+ * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.
+ *
+ * You can specify an **AngularJS module** to be used as the root module for the application. This
+ * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It
+ * should contain the application code needed or have dependencies on other modules that will
+ * contain the code. See {@link angular.module} for more information.
+ *
+ * In the example below if the `ngApp` directive were not placed on the `html` element then the
+ * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`
+ * would not be resolved to `3`.
+ *
+ * `ngApp` is the easiest, and most common way to bootstrap an application.
+ *
+ <example module="ngAppDemo">
+ <file name="index.html">
+ <div ng-controller="ngAppDemoController">
+ I can add: {{a}} + {{b}} = {{ a+b }}
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
+ $scope.a = 1;
+ $scope.b = 2;
+ });
+ </file>
+ </example>
+ *
+ * Using `ngStrictDi`, you would see something like this:
+ *
+ <example ng-app-included="true">
+ <file name="index.html">
+ <div ng-app="ngAppStrictDemo" ng-strict-di>
+ <div ng-controller="GoodController1">
+ I can add: {{a}} + {{b}} = {{ a+b }}
+
+ <p>This renders because the controller does not fail to
+ instantiate, by using explicit annotation style (see
+ script.js for details)
+ </p>
+ </div>
+
+ <div ng-controller="GoodController2">
+ Name: <input ng-model="name"><br />
+ Hello, {{name}}!
+
+ <p>This renders because the controller does not fail to
+ instantiate, by using explicit annotation style
+ (see script.js for details)
+ </p>
+ </div>
+
+ <div ng-controller="BadController">
+ I can add: {{a}} + {{b}} = {{ a+b }}
+
+ <p>The controller could not be instantiated, due to relying
+ on automatic function annotations (which are disabled in
+ strict mode). As such, the content of this section is not
+ interpolated, and there should be an error in your web console.
+ </p>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('ngAppStrictDemo', [])
+ // BadController will fail to instantiate, due to relying on automatic function annotation,
+ // rather than an explicit annotation
+ .controller('BadController', function($scope) {
+ $scope.a = 1;
+ $scope.b = 2;
+ })
+ // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,
+ // due to using explicit annotations using the array style and $inject property, respectively.
+ .controller('GoodController1', ['$scope', function($scope) {
+ $scope.a = 1;
+ $scope.b = 2;
+ }])
+ .controller('GoodController2', GoodController2);
+ function GoodController2($scope) {
+ $scope.name = "World";
+ }
+ GoodController2.$inject = ['$scope'];
+ </file>
+ <file name="style.css">
+ div[ng-controller] {
+ margin-bottom: 1em;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ border: 1px solid;
+ padding: .5em;
+ }
+ div[ng-controller^=Good] {
+ border-color: #d6e9c6;
+ background-color: #dff0d8;
+ color: #3c763d;
+ }
+ div[ng-controller^=Bad] {
+ border-color: #ebccd1;
+ background-color: #f2dede;
+ color: #a94442;
+ margin-bottom: 0;
+ }
+ </file>
+ </example>
+ */
+function angularInit(element, bootstrap) {
+ var appElement,
+ module,
+ config = {};
+
+ // The element `element` has priority over any other element
+ forEach(ngAttrPrefixes, function(prefix) {
+ var name = prefix + 'app';
+
+ if (!appElement && element.hasAttribute && element.hasAttribute(name)) {
+ appElement = element;
+ module = element.getAttribute(name);
+ }
+ });
+ forEach(ngAttrPrefixes, function(prefix) {
+ var name = prefix + 'app';
+ var candidate;
+
+ if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\:') + ']'))) {
+ appElement = candidate;
+ module = candidate.getAttribute(name);
+ }
+ });
+ if (appElement) {
+ config.strictDi = getNgAttribute(appElement, "strict-di") !== null;
+ bootstrap(appElement, module ? [module] : [], config);
+ }
+}
+
+/**
+ * @ngdoc function
+ * @name angular.bootstrap
+ * @module ng
+ * @description
+ * Use this function to manually start up angular application.
+ *
+ * See: {@link guide/bootstrap Bootstrap}
+ *
+ * Note that Protractor based end-to-end tests cannot use this function to bootstrap manually.
+ * They must use {@link ng.directive:ngApp ngApp}.
+ *
+ * Angular will detect if it has been loaded into the browser more than once and only allow the
+ * first loaded script to be bootstrapped and will report a warning to the browser console for
+ * each of the subsequent scripts. This prevents strange results in applications, where otherwise
+ * multiple instances of Angular try to work on the DOM.
+ *
+ * ```html
+ * <!doctype html>
+ * <html>
+ * <body>
+ * <div ng-controller="WelcomeController">
+ * {{greeting}}
+ * </div>
+ *
+ * <script src="angular.js"></script>
+ * <script>
+ * var app = angular.module('demo', [])
+ * .controller('WelcomeController', function($scope) {
+ * $scope.greeting = 'Welcome!';
+ * });
+ * angular.bootstrap(document, ['demo']);
+ * </script>
+ * </body>
+ * </html>
+ * ```
+ *
+ * @param {DOMElement} element DOM element which is the root of angular application.
+ * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
+ * Each item in the array should be the name of a predefined module or a (DI annotated)
+ * function that will be invoked by the injector as a `config` block.
+ * See: {@link angular.module modules}
+ * @param {Object=} config an object for defining configuration options for the application. The
+ * following keys are supported:
+ *
+ * * `strictDi` - disable automatic function annotation for the application. This is meant to
+ * assist in finding bugs which break minified code. Defaults to `false`.
+ *
+ * @returns {auto.$injector} Returns the newly created injector for this app.
+ */
+function bootstrap(element, modules, config) {
+ if (!isObject(config)) config = {};
+ var defaultConfig = {
+ strictDi: false
+ };
+ config = extend(defaultConfig, config);
+ var doBootstrap = function() {
+ element = jqLite(element);
+
+ if (element.injector()) {
+ var tag = (element[0] === document) ? 'document' : startingTag(element);
+ //Encode angle brackets to prevent input from being sanitized to empty string #8683
+ throw ngMinErr(
+ 'btstrpd',
+ "App Already Bootstrapped with this Element '{0}'",
+ tag.replace(/</,'<').replace(/>/,'>'));
+ }
+
+ modules = modules || [];
+ modules.unshift(['$provide', function($provide) {
+ $provide.value('$rootElement', element);
+ }]);
+
+ if (config.debugInfoEnabled) {
+ // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.
+ modules.push(['$compileProvider', function($compileProvider) {
+ $compileProvider.debugInfoEnabled(true);
+ }]);
+ }
+
+ modules.unshift('ng');
+ var injector = createInjector(modules, config.strictDi);
+ injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',
+ function bootstrapApply(scope, element, compile, injector) {
+ scope.$apply(function() {
+ element.data('$injector', injector);
+ compile(element)(scope);
+ });
+ }]
+ );
+ return injector;
+ };
+
+ var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;
+ var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
+
+ if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {
+ config.debugInfoEnabled = true;
+ window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, '');
+ }
+
+ if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
+ return doBootstrap();
+ }
+
+ window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
+ angular.resumeBootstrap = function(extraModules) {
+ forEach(extraModules, function(module) {
+ modules.push(module);
+ });
+ return doBootstrap();
+ };
+
+ if (isFunction(angular.resumeDeferredBootstrap)) {
+ angular.resumeDeferredBootstrap();
+ }
+}
+
+/**
+ * @ngdoc function
+ * @name angular.reloadWithDebugInfo
+ * @module ng
+ * @description
+ * Use this function to reload the current application with debug information turned on.
+ * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.
+ *
+ * See {@link ng.$compileProvider#debugInfoEnabled} for more.
+ */
+function reloadWithDebugInfo() {
+ window.name = 'NG_ENABLE_DEBUG_INFO!' + window.name;
+ window.location.reload();
+}
+
+/**
+ * @name angular.getTestability
+ * @module ng
+ * @description
+ * Get the testability service for the instance of Angular on the given
+ * element.
+ * @param {DOMElement} element DOM element which is the root of angular application.
+ */
+function getTestability(rootElement) {
+ var injector = angular.element(rootElement).injector();
+ if (!injector) {
+ throw ngMinErr('test',
+ 'no injector found for element argument to getTestability');
+ }
+ return injector.get('$$testability');
+}
+
+var SNAKE_CASE_REGEXP = /[A-Z]/g;
+function snake_case(name, separator) {
+ separator = separator || '_';
+ return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
+ return (pos ? separator : '') + letter.toLowerCase();
+ });
+}
+
+var bindJQueryFired = false;
+var skipDestroyOnNextJQueryCleanData;
+function bindJQuery() {
+ var originalCleanData;
+
+ if (bindJQueryFired) {
+ return;
+ }
+
+ // bind to jQuery if present;
+ var jqName = jq();
+ jQuery = window.jQuery; // use default jQuery.
+ if (isDefined(jqName)) { // `ngJq` present
+ jQuery = jqName === null ? undefined : window[jqName]; // if empty; use jqLite. if not empty, use jQuery specified by `ngJq`.
+ }
+
+ // Use jQuery if it exists with proper functionality, otherwise default to us.
+ // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.
+ // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older
+ // versions. It will not work for sure with jQuery <1.7, though.
+ if (jQuery && jQuery.fn.on) {
+ jqLite = jQuery;
+ extend(jQuery.fn, {
+ scope: JQLitePrototype.scope,
+ isolateScope: JQLitePrototype.isolateScope,
+ controller: JQLitePrototype.controller,
+ injector: JQLitePrototype.injector,
+ inheritedData: JQLitePrototype.inheritedData
+ });
+
+ // All nodes removed from the DOM via various jQuery APIs like .remove()
+ // are passed through jQuery.cleanData. Monkey-patch this method to fire
+ // the $destroy event on all removed nodes.
+ originalCleanData = jQuery.cleanData;
+ jQuery.cleanData = function(elems) {
+ var events;
+ if (!skipDestroyOnNextJQueryCleanData) {
+ for (var i = 0, elem; (elem = elems[i]) != null; i++) {
+ events = jQuery._data(elem, "events");
+ if (events && events.$destroy) {
+ jQuery(elem).triggerHandler('$destroy');
+ }
+ }
+ } else {
+ skipDestroyOnNextJQueryCleanData = false;
+ }
+ originalCleanData(elems);
+ };
+ } else {
+ jqLite = JQLite;
+ }
+
+ angular.element = jqLite;
+
+ // Prevent double-proxying.
+ bindJQueryFired = true;
+}
+
+/**
+ * throw error if the argument is falsy.
+ */
+function assertArg(arg, name, reason) {
+ if (!arg) {
+ throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
+ }
+ return arg;
+}
+
+function assertArgFn(arg, name, acceptArrayAnnotation) {
+ if (acceptArrayAnnotation && isArray(arg)) {
+ arg = arg[arg.length - 1];
+ }
+
+ assertArg(isFunction(arg), name, 'not a function, got ' +
+ (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));
+ return arg;
+}
+
+/**
+ * throw error if the name given is hasOwnProperty
+ * @param {String} name the name to test
+ * @param {String} context the context in which the name is used, such as module or directive
+ */
+function assertNotHasOwnProperty(name, context) {
+ if (name === 'hasOwnProperty') {
+ throw ngMinErr('badname', "hasOwnProperty is not a valid {0} name", context);
+ }
+}
+
+/**
+ * Return the value accessible from the object by path. Any undefined traversals are ignored
+ * @param {Object} obj starting object
+ * @param {String} path path to traverse
+ * @param {boolean} [bindFnToScope=true]
+ * @returns {Object} value as accessible by path
+ */
+//TODO(misko): this function needs to be removed
+function getter(obj, path, bindFnToScope) {
+ if (!path) return obj;
+ var keys = path.split('.');
+ var key;
+ var lastInstance = obj;
+ var len = keys.length;
+
+ for (var i = 0; i < len; i++) {
+ key = keys[i];
+ if (obj) {
+ obj = (lastInstance = obj)[key];
+ }
+ }
+ if (!bindFnToScope && isFunction(obj)) {
+ return bind(lastInstance, obj);
+ }
+ return obj;
+}
+
+/**
+ * Return the DOM siblings between the first and last node in the given array.
+ * @param {Array} array like object
+ * @returns {jqLite} jqLite collection containing the nodes
+ */
+function getBlockNodes(nodes) {
+ // TODO(perf): just check if all items in `nodes` are siblings and if they are return the original
+ // collection, otherwise update the original collection.
+ var node = nodes[0];
+ var endNode = nodes[nodes.length - 1];
+ var blockNodes = [node];
+
+ do {
+ node = node.nextSibling;
+ if (!node) break;
+ blockNodes.push(node);
+ } while (node !== endNode);
+
+ return jqLite(blockNodes);
+}
+
+
+/**
+ * Creates a new object without a prototype. This object is useful for lookup without having to
+ * guard against prototypically inherited properties via hasOwnProperty.
+ *
+ * Related micro-benchmarks:
+ * - http://jsperf.com/object-create2
+ * - http://jsperf.com/proto-map-lookup/2
+ * - http://jsperf.com/for-in-vs-object-keys2
+ *
+ * @returns {Object}
+ */
+function createMap() {
+ return Object.create(null);
+}
+
+var NODE_TYPE_ELEMENT = 1;
+var NODE_TYPE_ATTRIBUTE = 2;
+var NODE_TYPE_TEXT = 3;
+var NODE_TYPE_COMMENT = 8;
+var NODE_TYPE_DOCUMENT = 9;
+var NODE_TYPE_DOCUMENT_FRAGMENT = 11;
+
+/**
+ * @ngdoc type
+ * @name angular.Module
+ * @module ng
+ * @description
+ *
+ * Interface for configuring angular {@link angular.module modules}.
+ */
+
+function setupModuleLoader(window) {
+
+ var $injectorMinErr = minErr('$injector');
+ var ngMinErr = minErr('ng');
+
+ function ensure(obj, name, factory) {
+ return obj[name] || (obj[name] = factory());
+ }
+
+ var angular = ensure(window, 'angular', Object);
+
+ // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
+ angular.$$minErr = angular.$$minErr || minErr;
+
+ return ensure(angular, 'module', function() {
+ /** @type {Object.<string, angular.Module>} */
+ var modules = {};
+
+ /**
+ * @ngdoc function
+ * @name angular.module
+ * @module ng
+ * @description
+ *
+ * The `angular.module` is a global place for creating, registering and retrieving Angular
+ * modules.
+ * All modules (angular core or 3rd party) that should be available to an application must be
+ * registered using this mechanism.
+ *
+ * Passing one argument retrieves an existing {@link angular.Module},
+ * whereas passing more than one argument creates a new {@link angular.Module}
+ *
+ *
+ * # Module
+ *
+ * A module is a collection of services, directives, controllers, filters, and configuration information.
+ * `angular.module` is used to configure the {@link auto.$injector $injector}.
+ *
+ * ```js
+ * // Create a new module
+ * var myModule = angular.module('myModule', []);
+ *
+ * // register a new service
+ * myModule.value('appName', 'MyCoolApp');
+ *
+ * // configure existing services inside initialization blocks.
+ * myModule.config(['$locationProvider', function($locationProvider) {
+ * // Configure existing providers
+ * $locationProvider.hashPrefix('!');
+ * }]);
+ * ```
+ *
+ * Then you can create an injector and load your modules like this:
+ *
+ * ```js
+ * var injector = angular.injector(['ng', 'myModule'])
+ * ```
+ *
+ * However it's more likely that you'll just use
+ * {@link ng.directive:ngApp ngApp} or
+ * {@link angular.bootstrap} to simplify this process for you.
+ *
+ * @param {!string} name The name of the module to create or retrieve.
+ * @param {!Array.<string>=} requires If specified then new module is being created. If
+ * unspecified then the module is being retrieved for further configuration.
+ * @param {Function=} configFn Optional configuration function for the module. Same as
+ * {@link angular.Module#config Module#config()}.
+ * @returns {module} new module with the {@link angular.Module} api.
+ */
+ return function module(name, requires, configFn) {
+ var assertNotHasOwnProperty = function(name, context) {
+ if (name === 'hasOwnProperty') {
+ throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
+ }
+ };
+
+ assertNotHasOwnProperty(name, 'module');
+ if (requires && modules.hasOwnProperty(name)) {
+ modules[name] = null;
+ }
+ return ensure(modules, name, function() {
+ if (!requires) {
+ throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
+ "the module name or forgot to load it. If registering a module ensure that you " +
+ "specify the dependencies as the second argument.", name);
+ }
+
+ /** @type {!Array.<Array.<*>>} */
+ var invokeQueue = [];
+
+ /** @type {!Array.<Function>} */
+ var configBlocks = [];
+
+ /** @type {!Array.<Function>} */
+ var runBlocks = [];
+
+ var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
+
+ /** @type {angular.Module} */
+ var moduleInstance = {
+ // Private state
+ _invokeQueue: invokeQueue,
+ _configBlocks: configBlocks,
+ _runBlocks: runBlocks,
+
+ /**
+ * @ngdoc property
+ * @name angular.Module#requires
+ * @module ng
+ *
+ * @description
+ * Holds the list of modules which the injector will load before the current module is
+ * loaded.
+ */
+ requires: requires,
+
+ /**
+ * @ngdoc property
+ * @name angular.Module#name
+ * @module ng
+ *
+ * @description
+ * Name of the module.
+ */
+ name: name,
+
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#provider
+ * @module ng
+ * @param {string} name service name
+ * @param {Function} providerType Construction function for creating new instance of the
+ * service.
+ * @description
+ * See {@link auto.$provide#provider $provide.provider()}.
+ */
+ provider: invokeLaterAndSetModuleName('$provide', 'provider'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#factory
+ * @module ng
+ * @param {string} name service name
+ * @param {Function} providerFunction Function for creating new instance of the service.
+ * @description
+ * See {@link auto.$provide#factory $provide.factory()}.
+ */
+ factory: invokeLaterAndSetModuleName('$provide', 'factory'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#service
+ * @module ng
+ * @param {string} name service name
+ * @param {Function} constructor A constructor function that will be instantiated.
+ * @description
+ * See {@link auto.$provide#service $provide.service()}.
+ */
+ service: invokeLaterAndSetModuleName('$provide', 'service'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#value
+ * @module ng
+ * @param {string} name service name
+ * @param {*} object Service instance object.
+ * @description
+ * See {@link auto.$provide#value $provide.value()}.
+ */
+ value: invokeLater('$provide', 'value'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#constant
+ * @module ng
+ * @param {string} name constant name
+ * @param {*} object Constant value.
+ * @description
+ * Because the constant are fixed, they get applied before other provide methods.
+ * See {@link auto.$provide#constant $provide.constant()}.
+ */
+ constant: invokeLater('$provide', 'constant', 'unshift'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#decorator
+ * @module ng
+ * @param {string} The name of the service to decorate.
+ * @param {Function} This function will be invoked when the service needs to be
+ * instantiated and should return the decorated service instance.
+ * @description
+ * See {@link auto.$provide#decorator $provide.decorator()}.
+ */
+ decorator: invokeLaterAndSetModuleName('$provide', 'decorator'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#animation
+ * @module ng
+ * @param {string} name animation name
+ * @param {Function} animationFactory Factory function for creating new instance of an
+ * animation.
+ * @description
+ *
+ * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
+ *
+ *
+ * Defines an animation hook that can be later used with
+ * {@link $animate $animate} service and directives that use this service.
+ *
+ * ```js
+ * module.animation('.animation-name', function($inject1, $inject2) {
+ * return {
+ * eventName : function(element, done) {
+ * //code to run the animation
+ * //once complete, then run done()
+ * return function cancellationFunction(element) {
+ * //code to cancel the animation
+ * }
+ * }
+ * }
+ * })
+ * ```
+ *
+ * See {@link ng.$animateProvider#register $animateProvider.register()} and
+ * {@link ngAnimate ngAnimate module} for more information.
+ */
+ animation: invokeLaterAndSetModuleName('$animateProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#filter
+ * @module ng
+ * @param {string} name Filter name - this must be a valid angular expression identifier
+ * @param {Function} filterFactory Factory function for creating new instance of filter.
+ * @description
+ * See {@link ng.$filterProvider#register $filterProvider.register()}.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
+ * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
+ * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
+ * (`myapp_subsection_filterx`).
+ * </div>
+ */
+ filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#controller
+ * @module ng
+ * @param {string|Object} name Controller name, or an object map of controllers where the
+ * keys are the names and the values are the constructors.
+ * @param {Function} constructor Controller constructor function.
+ * @description
+ * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
+ */
+ controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#directive
+ * @module ng
+ * @param {string|Object} name Directive name, or an object map of directives where the
+ * keys are the names and the values are the factories.
+ * @param {Function} directiveFactory Factory function for creating new instance of
+ * directives.
+ * @description
+ * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
+ */
+ directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#config
+ * @module ng
+ * @param {Function} configFn Execute this function on module load. Useful for service
+ * configuration.
+ * @description
+ * Use this method to register work which needs to be performed on module loading.
+ * For more about how to configure services, see
+ * {@link providers#provider-recipe Provider Recipe}.
+ */
+ config: config,
+
+ /**
+ * @ngdoc method
+ * @name angular.Module#run
+ * @module ng
+ * @param {Function} initializationFn Execute this function after injector creation.
+ * Useful for application initialization.
+ * @description
+ * Use this method to register work which should be performed when the injector is done
+ * loading all modules.
+ */
+ run: function(block) {
+ runBlocks.push(block);
+ return this;
+ }
+ };
+
+ if (configFn) {
+ config(configFn);
+ }
+
+ return moduleInstance;
+
+ /**
+ * @param {string} provider
+ * @param {string} method
+ * @param {String=} insertMethod
+ * @returns {angular.Module}
+ */
+ function invokeLater(provider, method, insertMethod, queue) {
+ if (!queue) queue = invokeQueue;
+ return function() {
+ queue[insertMethod || 'push']([provider, method, arguments]);
+ return moduleInstance;
+ };
+ }
+
+ /**
+ * @param {string} provider
+ * @param {string} method
+ * @returns {angular.Module}
+ */
+ function invokeLaterAndSetModuleName(provider, method) {
+ return function(recipeName, factoryFunction) {
+ if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;
+ invokeQueue.push([provider, method, arguments]);
+ return moduleInstance;
+ };
+ }
+ });
+ };
+ });
+
+}
+
+/* global: toDebugString: true */
+
+function serializeObject(obj) {
+ var seen = [];
+
+ return JSON.stringify(obj, function(key, val) {
+ val = toJsonReplacer(key, val);
+ if (isObject(val)) {
+
+ if (seen.indexOf(val) >= 0) return '<<already seen>>';
+
+ seen.push(val);
+ }
+ return val;
+ });
+}
+
+function toDebugString(obj) {
+ if (typeof obj === 'function') {
+ return obj.toString().replace(/ \{[\s\S]*$/, '');
+ } else if (typeof obj === 'undefined') {
+ return 'undefined';
+ } else if (typeof obj !== 'string') {
+ return serializeObject(obj);
+ }
+ return obj;
+}
+
+/* global angularModule: true,
+ version: true,
+
+ $CompileProvider,
+
+ htmlAnchorDirective,
+ inputDirective,
+ inputDirective,
+ formDirective,
+ scriptDirective,
+ selectDirective,
+ styleDirective,
+ optionDirective,
+ ngBindDirective,
+ ngBindHtmlDirective,
+ ngBindTemplateDirective,
+ ngClassDirective,
+ ngClassEvenDirective,
+ ngClassOddDirective,
+ ngCloakDirective,
+ ngControllerDirective,
+ ngFormDirective,
+ ngHideDirective,
+ ngIfDirective,
+ ngIncludeDirective,
+ ngIncludeFillContentDirective,
+ ngInitDirective,
+ ngNonBindableDirective,
+ ngPluralizeDirective,
+ ngRepeatDirective,
+ ngShowDirective,
+ ngStyleDirective,
+ ngSwitchDirective,
+ ngSwitchWhenDirective,
+ ngSwitchDefaultDirective,
+ ngOptionsDirective,
+ ngTranscludeDirective,
+ ngModelDirective,
+ ngListDirective,
+ ngChangeDirective,
+ patternDirective,
+ patternDirective,
+ requiredDirective,
+ requiredDirective,
+ minlengthDirective,
+ minlengthDirective,
+ maxlengthDirective,
+ maxlengthDirective,
+ ngValueDirective,
+ ngModelOptionsDirective,
+ ngAttributeAliasDirectives,
+ ngEventDirectives,
+
+ $AnchorScrollProvider,
+ $AnimateProvider,
+ $CoreAnimateCssProvider,
+ $$CoreAnimateQueueProvider,
+ $$CoreAnimateRunnerProvider,
+ $BrowserProvider,
+ $CacheFactoryProvider,
+ $ControllerProvider,
+ $DocumentProvider,
+ $ExceptionHandlerProvider,
+ $FilterProvider,
+ $$ForceReflowProvider,
+ $InterpolateProvider,
+ $IntervalProvider,
+ $$HashMapProvider,
+ $HttpProvider,
+ $HttpParamSerializerProvider,
+ $HttpParamSerializerJQLikeProvider,
+ $HttpBackendProvider,
+ $LocationProvider,
+ $LogProvider,
+ $ParseProvider,
+ $RootScopeProvider,
+ $QProvider,
+ $$QProvider,
+ $$SanitizeUriProvider,
+ $SceProvider,
+ $SceDelegateProvider,
+ $SnifferProvider,
+ $TemplateCacheProvider,
+ $TemplateRequestProvider,
+ $$TestabilityProvider,
+ $TimeoutProvider,
+ $$RAFProvider,
+ $WindowProvider,
+ $$jqLiteProvider,
+ $$CookieReaderProvider
+*/
+
+
+/**
+ * @ngdoc object
+ * @name angular.version
+ * @module ng
+ * @description
+ * An object that contains information about the current AngularJS version. This object has the
+ * following properties:
+ *
+ * - `full` – `{string}` – Full version string, such as "0.9.18".
+ * - `major` – `{number}` – Major version number, such as "0".
+ * - `minor` – `{number}` – Minor version number, such as "9".
+ * - `dot` – `{number}` – Dot version number, such as "18".
+ * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
+ */
+var version = {
+ full: '1.4.4', // all of these placeholder strings will be replaced by grunt's
+ major: 1, // package task
+ minor: 4,
+ dot: 4,
+ codeName: 'pylon-requirement'
+};
+
+
+function publishExternalAPI(angular) {
+ extend(angular, {
+ 'bootstrap': bootstrap,
+ 'copy': copy,
+ 'extend': extend,
+ 'merge': merge,
+ 'equals': equals,
+ 'element': jqLite,
+ 'forEach': forEach,
+ 'injector': createInjector,
+ 'noop': noop,
+ 'bind': bind,
+ 'toJson': toJson,
+ 'fromJson': fromJson,
+ 'identity': identity,
+ 'isUndefined': isUndefined,
+ 'isDefined': isDefined,
+ 'isString': isString,
+ 'isFunction': isFunction,
+ 'isObject': isObject,
+ 'isNumber': isNumber,
+ 'isElement': isElement,
+ 'isArray': isArray,
+ 'version': version,
+ 'isDate': isDate,
+ 'lowercase': lowercase,
+ 'uppercase': uppercase,
+ 'callbacks': {counter: 0},
+ 'getTestability': getTestability,
+ '$$minErr': minErr,
+ '$$csp': csp,
+ 'reloadWithDebugInfo': reloadWithDebugInfo
+ });
+
+ angularModule = setupModuleLoader(window);
+
+ angularModule('ng', ['ngLocale'], ['$provide',
+ function ngModule($provide) {
+ // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.
+ $provide.provider({
+ $$sanitizeUri: $$SanitizeUriProvider
+ });
+ $provide.provider('$compile', $CompileProvider).
+ directive({
+ a: htmlAnchorDirective,
+ input: inputDirective,
+ textarea: inputDirective,
+ form: formDirective,
+ script: scriptDirective,
+ select: selectDirective,
+ style: styleDirective,
+ option: optionDirective,
+ ngBind: ngBindDirective,
+ ngBindHtml: ngBindHtmlDirective,
+ ngBindTemplate: ngBindTemplateDirective,
+ ngClass: ngClassDirective,
+ ngClassEven: ngClassEvenDirective,
+ ngClassOdd: ngClassOddDirective,
+ ngCloak: ngCloakDirective,
+ ngController: ngControllerDirective,
+ ngForm: ngFormDirective,
+ ngHide: ngHideDirective,
+ ngIf: ngIfDirective,
+ ngInclude: ngIncludeDirective,
+ ngInit: ngInitDirective,
+ ngNonBindable: ngNonBindableDirective,
+ ngPluralize: ngPluralizeDirective,
+ ngRepeat: ngRepeatDirective,
+ ngShow: ngShowDirective,
+ ngStyle: ngStyleDirective,
+ ngSwitch: ngSwitchDirective,
+ ngSwitchWhen: ngSwitchWhenDirective,
+ ngSwitchDefault: ngSwitchDefaultDirective,
+ ngOptions: ngOptionsDirective,
+ ngTransclude: ngTranscludeDirective,
+ ngModel: ngModelDirective,
+ ngList: ngListDirective,
+ ngChange: ngChangeDirective,
+ pattern: patternDirective,
+ ngPattern: patternDirective,
+ required: requiredDirective,
+ ngRequired: requiredDirective,
+ minlength: minlengthDirective,
+ ngMinlength: minlengthDirective,
+ maxlength: maxlengthDirective,
+ ngMaxlength: maxlengthDirective,
+ ngValue: ngValueDirective,
+ ngModelOptions: ngModelOptionsDirective
+ }).
+ directive({
+ ngInclude: ngIncludeFillContentDirective
+ }).
+ directive(ngAttributeAliasDirectives).
+ directive(ngEventDirectives);
+ $provide.provider({
+ $anchorScroll: $AnchorScrollProvider,
+ $animate: $AnimateProvider,
+ $animateCss: $CoreAnimateCssProvider,
+ $$animateQueue: $$CoreAnimateQueueProvider,
+ $$AnimateRunner: $$CoreAnimateRunnerProvider,
+ $browser: $BrowserProvider,
+ $cacheFactory: $CacheFactoryProvider,
+ $controller: $ControllerProvider,
+ $document: $DocumentProvider,
+ $exceptionHandler: $ExceptionHandlerProvider,
+ $filter: $FilterProvider,
+ $$forceReflow: $$ForceReflowProvider,
+ $interpolate: $InterpolateProvider,
+ $interval: $IntervalProvider,
+ $http: $HttpProvider,
+ $httpParamSerializer: $HttpParamSerializerProvider,
+ $httpParamSerializerJQLike: $HttpParamSerializerJQLikeProvider,
+ $httpBackend: $HttpBackendProvider,
+ $location: $LocationProvider,
+ $log: $LogProvider,
+ $parse: $ParseProvider,
+ $rootScope: $RootScopeProvider,
+ $q: $QProvider,
+ $$q: $$QProvider,
+ $sce: $SceProvider,
+ $sceDelegate: $SceDelegateProvider,
+ $sniffer: $SnifferProvider,
+ $templateCache: $TemplateCacheProvider,
+ $templateRequest: $TemplateRequestProvider,
+ $$testability: $$TestabilityProvider,
+ $timeout: $TimeoutProvider,
+ $window: $WindowProvider,
+ $$rAF: $$RAFProvider,
+ $$jqLite: $$jqLiteProvider,
+ $$HashMap: $$HashMapProvider,
+ $$cookieReader: $$CookieReaderProvider
+ });
+ }
+ ]);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Any commits to this file should be reviewed with security in mind. *
+ * Changes to this file can potentially create security vulnerabilities. *
+ * An approval from 2 Core members with history of modifying *
+ * this file is required. *
+ * *
+ * Does the change somehow allow for arbitrary javascript to be executed? *
+ * Or allows for someone to change the prototype of built-in objects? *
+ * Or gives undesired access to variables likes document or window? *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* global JQLitePrototype: true,
+ addEventListenerFn: true,
+ removeEventListenerFn: true,
+ BOOLEAN_ATTR: true,
+ ALIASED_ATTR: true,
+*/
+
+//////////////////////////////////
+//JQLite
+//////////////////////////////////
+
+/**
+ * @ngdoc function
+ * @name angular.element
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.
+ *
+ * If jQuery is available, `angular.element` is an alias for the
+ * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`
+ * delegates to Angular's built-in subset of jQuery, called "jQuery lite" or "jqLite."
+ *
+ * <div class="alert alert-success">jqLite is a tiny, API-compatible subset of jQuery that allows
+ * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most
+ * commonly needed functionality with the goal of having a very small footprint.</div>
+ *
+ * To use `jQuery`, simply ensure it is loaded before the `angular.js` file.
+ *
+ * <div class="alert">**Note:** all element references in Angular are always wrapped with jQuery or
+ * jqLite; they are never raw DOM references.</div>
+ *
+ * ## Angular's jqLite
+ * jqLite provides only the following jQuery methods:
+ *
+ * - [`addClass()`](http://api.jquery.com/addClass/)
+ * - [`after()`](http://api.jquery.com/after/)
+ * - [`append()`](http://api.jquery.com/append/)
+ * - [`attr()`](http://api.jquery.com/attr/) - Does not support functions as parameters
+ * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
+ * - [`children()`](http://api.jquery.com/children/) - Does not support selectors
+ * - [`clone()`](http://api.jquery.com/clone/)
+ * - [`contents()`](http://api.jquery.com/contents/)
+ * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()`. As a setter, does not convert numbers to strings or append 'px'.
+ * - [`data()`](http://api.jquery.com/data/)
+ * - [`detach()`](http://api.jquery.com/detach/)
+ * - [`empty()`](http://api.jquery.com/empty/)
+ * - [`eq()`](http://api.jquery.com/eq/)
+ * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
+ * - [`hasClass()`](http://api.jquery.com/hasClass/)
+ * - [`html()`](http://api.jquery.com/html/)
+ * - [`next()`](http://api.jquery.com/next/) - Does not support selectors
+ * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData
+ * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors
+ * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors
+ * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors
+ * - [`prepend()`](http://api.jquery.com/prepend/)
+ * - [`prop()`](http://api.jquery.com/prop/)
+ * - [`ready()`](http://api.jquery.com/ready/)
+ * - [`remove()`](http://api.jquery.com/remove/)
+ * - [`removeAttr()`](http://api.jquery.com/removeAttr/)
+ * - [`removeClass()`](http://api.jquery.com/removeClass/)
+ * - [`removeData()`](http://api.jquery.com/removeData/)
+ * - [`replaceWith()`](http://api.jquery.com/replaceWith/)
+ * - [`text()`](http://api.jquery.com/text/)
+ * - [`toggleClass()`](http://api.jquery.com/toggleClass/)
+ * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.
+ * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces
+ * - [`val()`](http://api.jquery.com/val/)
+ * - [`wrap()`](http://api.jquery.com/wrap/)
+ *
+ * ## jQuery/jqLite Extras
+ * Angular also provides the following additional methods and events to both jQuery and jqLite:
+ *
+ * ### Events
+ * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event
+ * on all DOM nodes being removed. This can be used to clean up any 3rd party bindings to the DOM
+ * element before it is removed.
+ *
+ * ### Methods
+ * - `controller(name)` - retrieves the controller of the current element or its parent. By default
+ * retrieves controller associated with the `ngController` directive. If `name` is provided as
+ * camelCase directive name, then the controller for this directive will be retrieved (e.g.
+ * `'ngModel'`).
+ * - `injector()` - retrieves the injector of the current element or its parent.
+ * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current
+ * element or its parent. Requires {@link guide/production#disabling-debug-data Debug Data} to
+ * be enabled.
+ * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the
+ * current element. This getter should be used only on elements that contain a directive which starts a new isolate
+ * scope. Calling `scope()` on this element always returns the original non-isolate scope.
+ * Requires {@link guide/production#disabling-debug-data Debug Data} to be enabled.
+ * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top
+ * parent element is reached.
+ *
+ * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.
+ * @returns {Object} jQuery object.
+ */
+
+JQLite.expando = 'ng339';
+
+var jqCache = JQLite.cache = {},
+ jqId = 1,
+ addEventListenerFn = function(element, type, fn) {
+ element.addEventListener(type, fn, false);
+ },
+ removeEventListenerFn = function(element, type, fn) {
+ element.removeEventListener(type, fn, false);
+ };
+
+/*
+ * !!! This is an undocumented "private" function !!!
+ */
+JQLite._data = function(node) {
+ //jQuery always returns an object on cache miss
+ return this.cache[node[this.expando]] || {};
+};
+
+function jqNextId() { return ++jqId; }
+
+
+var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
+var MOZ_HACK_REGEXP = /^moz([A-Z])/;
+var MOUSE_EVENT_MAP= { mouseleave: "mouseout", mouseenter: "mouseover"};
+var jqLiteMinErr = minErr('jqLite');
+
+/**
+ * Converts snake_case to camelCase.
+ * Also there is special case for Moz prefix starting with upper case letter.
+ * @param name Name to normalize
+ */
+function camelCase(name) {
+ return name.
+ replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
+ return offset ? letter.toUpperCase() : letter;
+ }).
+ replace(MOZ_HACK_REGEXP, 'Moz$1');
+}
+
+var SINGLE_TAG_REGEXP = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
+var HTML_REGEXP = /<|&#?\w+;/;
+var TAG_NAME_REGEXP = /<([\w:]+)/;
+var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;
+
+var wrapMap = {
+ 'option': [1, '<select multiple="multiple">', '</select>'],
+
+ 'thead': [1, '<table>', '</table>'],
+ 'col': [2, '<table><colgroup>', '</colgroup></table>'],
+ 'tr': [2, '<table><tbody>', '</tbody></table>'],
+ 'td': [3, '<table><tbody><tr>', '</tr></tbody></table>'],
+ '_default': [0, "", ""]
+};
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function jqLiteIsTextNode(html) {
+ return !HTML_REGEXP.test(html);
+}
+
+function jqLiteAcceptsData(node) {
+ // The window object can accept data but has no nodeType
+ // Otherwise we are only interested in elements (1) and documents (9)
+ var nodeType = node.nodeType;
+ return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT;
+}
+
+function jqLiteHasData(node) {
+ for (var key in jqCache[node.ng339]) {
+ return true;
+ }
+ return false;
+}
+
+function jqLiteBuildFragment(html, context) {
+ var tmp, tag, wrap,
+ fragment = context.createDocumentFragment(),
+ nodes = [], i;
+
+ if (jqLiteIsTextNode(html)) {
+ // Convert non-html into a text node
+ nodes.push(context.createTextNode(html));
+ } else {
+ // Convert html into DOM nodes
+ tmp = tmp || fragment.appendChild(context.createElement("div"));
+ tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
+ wrap = wrapMap[tag] || wrapMap._default;
+ tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1></$2>") + wrap[2];
+
+ // Descend through wrappers to the right content
+ i = wrap[0];
+ while (i--) {
+ tmp = tmp.lastChild;
+ }
+
+ nodes = concat(nodes, tmp.childNodes);
+
+ tmp = fragment.firstChild;
+ tmp.textContent = "";
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+ fragment.innerHTML = ""; // Clear inner HTML
+ forEach(nodes, function(node) {
+ fragment.appendChild(node);
+ });
+
+ return fragment;
+}
+
+function jqLiteParseHTML(html, context) {
+ context = context || document;
+ var parsed;
+
+ if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {
+ return [context.createElement(parsed[1])];
+ }
+
+ if ((parsed = jqLiteBuildFragment(html, context))) {
+ return parsed.childNodes;
+ }
+
+ return [];
+}
+
+/////////////////////////////////////////////
+function JQLite(element) {
+ if (element instanceof JQLite) {
+ return element;
+ }
+
+ var argIsString;
+
+ if (isString(element)) {
+ element = trim(element);
+ argIsString = true;
+ }
+ if (!(this instanceof JQLite)) {
+ if (argIsString && element.charAt(0) != '<') {
+ throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element');
+ }
+ return new JQLite(element);
+ }
+
+ if (argIsString) {
+ jqLiteAddNodes(this, jqLiteParseHTML(element));
+ } else {
+ jqLiteAddNodes(this, element);
+ }
+}
+
+function jqLiteClone(element) {
+ return element.cloneNode(true);
+}
+
+function jqLiteDealoc(element, onlyDescendants) {
+ if (!onlyDescendants) jqLiteRemoveData(element);
+
+ if (element.querySelectorAll) {
+ var descendants = element.querySelectorAll('*');
+ for (var i = 0, l = descendants.length; i < l; i++) {
+ jqLiteRemoveData(descendants[i]);
+ }
+ }
+}
+
+function jqLiteOff(element, type, fn, unsupported) {
+ if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument');
+
+ var expandoStore = jqLiteExpandoStore(element);
+ var events = expandoStore && expandoStore.events;
+ var handle = expandoStore && expandoStore.handle;
+
+ if (!handle) return; //no listeners registered
+
+ if (!type) {
+ for (type in events) {
+ if (type !== '$destroy') {
+ removeEventListenerFn(element, type, handle);
+ }
+ delete events[type];
+ }
+ } else {
+ forEach(type.split(' '), function(type) {
+ if (isDefined(fn)) {
+ var listenerFns = events[type];
+ arrayRemove(listenerFns || [], fn);
+ if (listenerFns && listenerFns.length > 0) {
+ return;
+ }
+ }
+
+ removeEventListenerFn(element, type, handle);
+ delete events[type];
+ });
+ }
+}
+
+function jqLiteRemoveData(element, name) {
+ var expandoId = element.ng339;
+ var expandoStore = expandoId && jqCache[expandoId];
+
+ if (expandoStore) {
+ if (name) {
+ delete expandoStore.data[name];
+ return;
+ }
+
+ if (expandoStore.handle) {
+ if (expandoStore.events.$destroy) {
+ expandoStore.handle({}, '$destroy');
+ }
+ jqLiteOff(element);
+ }
+ delete jqCache[expandoId];
+ element.ng339 = undefined; // don't delete DOM expandos. IE and Chrome don't like it
+ }
+}
+
+
+function jqLiteExpandoStore(element, createIfNecessary) {
+ var expandoId = element.ng339,
+ expandoStore = expandoId && jqCache[expandoId];
+
+ if (createIfNecessary && !expandoStore) {
+ element.ng339 = expandoId = jqNextId();
+ expandoStore = jqCache[expandoId] = {events: {}, data: {}, handle: undefined};
+ }
+
+ return expandoStore;
+}
+
+
+function jqLiteData(element, key, value) {
+ if (jqLiteAcceptsData(element)) {
+
+ var isSimpleSetter = isDefined(value);
+ var isSimpleGetter = !isSimpleSetter && key && !isObject(key);
+ var massGetter = !key;
+ var expandoStore = jqLiteExpandoStore(element, !isSimpleGetter);
+ var data = expandoStore && expandoStore.data;
+
+ if (isSimpleSetter) { // data('key', value)
+ data[key] = value;
+ } else {
+ if (massGetter) { // data()
+ return data;
+ } else {
+ if (isSimpleGetter) { // data('key')
+ // don't force creation of expandoStore if it doesn't exist yet
+ return data && data[key];
+ } else { // mass-setter: data({key1: val1, key2: val2})
+ extend(data, key);
+ }
+ }
+ }
+ }
+}
+
+function jqLiteHasClass(element, selector) {
+ if (!element.getAttribute) return false;
+ return ((" " + (element.getAttribute('class') || '') + " ").replace(/[\n\t]/g, " ").
+ indexOf(" " + selector + " ") > -1);
+}
+
+function jqLiteRemoveClass(element, cssClasses) {
+ if (cssClasses && element.setAttribute) {
+ forEach(cssClasses.split(' '), function(cssClass) {
+ element.setAttribute('class', trim(
+ (" " + (element.getAttribute('class') || '') + " ")
+ .replace(/[\n\t]/g, " ")
+ .replace(" " + trim(cssClass) + " ", " "))
+ );
+ });
+ }
+}
+
+function jqLiteAddClass(element, cssClasses) {
+ if (cssClasses && element.setAttribute) {
+ var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
+ .replace(/[\n\t]/g, " ");
+
+ forEach(cssClasses.split(' '), function(cssClass) {
+ cssClass = trim(cssClass);
+ if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {
+ existingClasses += cssClass + ' ';
+ }
+ });
+
+ element.setAttribute('class', trim(existingClasses));
+ }
+}
+
+
+function jqLiteAddNodes(root, elements) {
+ // THIS CODE IS VERY HOT. Don't make changes without benchmarking.
+
+ if (elements) {
+
+ // if a Node (the most common case)
+ if (elements.nodeType) {
+ root[root.length++] = elements;
+ } else {
+ var length = elements.length;
+
+ // if an Array or NodeList and not a Window
+ if (typeof length === 'number' && elements.window !== elements) {
+ if (length) {
+ for (var i = 0; i < length; i++) {
+ root[root.length++] = elements[i];
+ }
+ }
+ } else {
+ root[root.length++] = elements;
+ }
+ }
+ }
+}
+
+
+function jqLiteController(element, name) {
+ return jqLiteInheritedData(element, '$' + (name || 'ngController') + 'Controller');
+}
+
+function jqLiteInheritedData(element, name, value) {
+ // if element is the document object work with the html element instead
+ // this makes $(document).scope() possible
+ if (element.nodeType == NODE_TYPE_DOCUMENT) {
+ element = element.documentElement;
+ }
+ var names = isArray(name) ? name : [name];
+
+ while (element) {
+ for (var i = 0, ii = names.length; i < ii; i++) {
+ if ((value = jqLite.data(element, names[i])) !== undefined) return value;
+ }
+
+ // If dealing with a document fragment node with a host element, and no parent, use the host
+ // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM
+ // to lookup parent controllers.
+ element = element.parentNode || (element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host);
+ }
+}
+
+function jqLiteEmpty(element) {
+ jqLiteDealoc(element, true);
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+}
+
+function jqLiteRemove(element, keepData) {
+ if (!keepData) jqLiteDealoc(element);
+ var parent = element.parentNode;
+ if (parent) parent.removeChild(element);
+}
+
+
+function jqLiteDocumentLoaded(action, win) {
+ win = win || window;
+ if (win.document.readyState === 'complete') {
+ // Force the action to be run async for consistent behaviour
+ // from the action's point of view
+ // i.e. it will definitely not be in a $apply
+ win.setTimeout(action);
+ } else {
+ // No need to unbind this handler as load is only ever called once
+ jqLite(win).on('load', action);
+ }
+}
+
+//////////////////////////////////////////
+// Functions which are declared directly.
+//////////////////////////////////////////
+var JQLitePrototype = JQLite.prototype = {
+ ready: function(fn) {
+ var fired = false;
+
+ function trigger() {
+ if (fired) return;
+ fired = true;
+ fn();
+ }
+
+ // check if document is already loaded
+ if (document.readyState === 'complete') {
+ setTimeout(trigger);
+ } else {
+ this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9
+ // we can not use jqLite since we are not done loading and jQuery could be loaded later.
+ // jshint -W064
+ JQLite(window).on('load', trigger); // fallback to window.onload for others
+ // jshint +W064
+ }
+ },
+ toString: function() {
+ var value = [];
+ forEach(this, function(e) { value.push('' + e);});
+ return '[' + value.join(', ') + ']';
+ },
+
+ eq: function(index) {
+ return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);
+ },
+
+ length: 0,
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+//////////////////////////////////////////
+// Functions iterating getter/setters.
+// these functions return self on setter and
+// value on get.
+//////////////////////////////////////////
+var BOOLEAN_ATTR = {};
+forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {
+ BOOLEAN_ATTR[lowercase(value)] = value;
+});
+var BOOLEAN_ELEMENTS = {};
+forEach('input,select,option,textarea,button,form,details'.split(','), function(value) {
+ BOOLEAN_ELEMENTS[value] = true;
+});
+var ALIASED_ATTR = {
+ 'ngMinlength': 'minlength',
+ 'ngMaxlength': 'maxlength',
+ 'ngMin': 'min',
+ 'ngMax': 'max',
+ 'ngPattern': 'pattern'
+};
+
+function getBooleanAttrName(element, name) {
+ // check dom last since we will most likely fail on name
+ var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];
+
+ // booleanAttr is here twice to minimize DOM access
+ return booleanAttr && BOOLEAN_ELEMENTS[nodeName_(element)] && booleanAttr;
+}
+
+function getAliasedAttrName(element, name) {
+ var nodeName = element.nodeName;
+ return (nodeName === 'INPUT' || nodeName === 'TEXTAREA') && ALIASED_ATTR[name];
+}
+
+forEach({
+ data: jqLiteData,
+ removeData: jqLiteRemoveData,
+ hasData: jqLiteHasData
+}, function(fn, name) {
+ JQLite[name] = fn;
+});
+
+forEach({
+ data: jqLiteData,
+ inheritedData: jqLiteInheritedData,
+
+ scope: function(element) {
+ // Can't use jqLiteData here directly so we stay compatible with jQuery!
+ return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);
+ },
+
+ isolateScope: function(element) {
+ // Can't use jqLiteData here directly so we stay compatible with jQuery!
+ return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');
+ },
+
+ controller: jqLiteController,
+
+ injector: function(element) {
+ return jqLiteInheritedData(element, '$injector');
+ },
+
+ removeAttr: function(element, name) {
+ element.removeAttribute(name);
+ },
+
+ hasClass: jqLiteHasClass,
+
+ css: function(element, name, value) {
+ name = camelCase(name);
+
+ if (isDefined(value)) {
+ element.style[name] = value;
+ } else {
+ return element.style[name];
+ }
+ },
+
+ attr: function(element, name, value) {
+ var nodeType = element.nodeType;
+ if (nodeType === NODE_TYPE_TEXT || nodeType === NODE_TYPE_ATTRIBUTE || nodeType === NODE_TYPE_COMMENT) {
+ return;
+ }
+ var lowercasedName = lowercase(name);
+ if (BOOLEAN_ATTR[lowercasedName]) {
+ if (isDefined(value)) {
+ if (!!value) {
+ element[name] = true;
+ element.setAttribute(name, lowercasedName);
+ } else {
+ element[name] = false;
+ element.removeAttribute(lowercasedName);
+ }
+ } else {
+ return (element[name] ||
+ (element.attributes.getNamedItem(name) || noop).specified)
+ ? lowercasedName
+ : undefined;
+ }
+ } else if (isDefined(value)) {
+ element.setAttribute(name, value);
+ } else if (element.getAttribute) {
+ // the extra argument "2" is to get the right thing for a.href in IE, see jQuery code
+ // some elements (e.g. Document) don't have get attribute, so return undefined
+ var ret = element.getAttribute(name, 2);
+ // normalize non-existing attributes to undefined (as jQuery)
+ return ret === null ? undefined : ret;
+ }
+ },
+
+ prop: function(element, name, value) {
+ if (isDefined(value)) {
+ element[name] = value;
+ } else {
+ return element[name];
+ }
+ },
+
+ text: (function() {
+ getText.$dv = '';
+ return getText;
+
+ function getText(element, value) {
+ if (isUndefined(value)) {
+ var nodeType = element.nodeType;
+ return (nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT) ? element.textContent : '';
+ }
+ element.textContent = value;
+ }
+ })(),
+
+ val: function(element, value) {
+ if (isUndefined(value)) {
+ if (element.multiple && nodeName_(element) === 'select') {
+ var result = [];
+ forEach(element.options, function(option) {
+ if (option.selected) {
+ result.push(option.value || option.text);
+ }
+ });
+ return result.length === 0 ? null : result;
+ }
+ return element.value;
+ }
+ element.value = value;
+ },
+
+ html: function(element, value) {
+ if (isUndefined(value)) {
+ return element.innerHTML;
+ }
+ jqLiteDealoc(element, true);
+ element.innerHTML = value;
+ },
+
+ empty: jqLiteEmpty
+}, function(fn, name) {
+ /**
+ * Properties: writes return selection, reads return first value
+ */
+ JQLite.prototype[name] = function(arg1, arg2) {
+ var i, key;
+ var nodeCount = this.length;
+
+ // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it
+ // in a way that survives minification.
+ // jqLiteEmpty takes no arguments but is a setter.
+ if (fn !== jqLiteEmpty &&
+ (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {
+ if (isObject(arg1)) {
+
+ // we are a write, but the object properties are the key/values
+ for (i = 0; i < nodeCount; i++) {
+ if (fn === jqLiteData) {
+ // data() takes the whole object in jQuery
+ fn(this[i], arg1);
+ } else {
+ for (key in arg1) {
+ fn(this[i], key, arg1[key]);
+ }
+ }
+ }
+ // return self for chaining
+ return this;
+ } else {
+ // we are a read, so read the first child.
+ // TODO: do we still need this?
+ var value = fn.$dv;
+ // Only if we have $dv do we iterate over all, otherwise it is just the first element.
+ var jj = (value === undefined) ? Math.min(nodeCount, 1) : nodeCount;
+ for (var j = 0; j < jj; j++) {
+ var nodeValue = fn(this[j], arg1, arg2);
+ value = value ? value + nodeValue : nodeValue;
+ }
+ return value;
+ }
+ } else {
+ // we are a write, so apply to all children
+ for (i = 0; i < nodeCount; i++) {
+ fn(this[i], arg1, arg2);
+ }
+ // return self for chaining
+ return this;
+ }
+ };
+});
+
+function createEventHandler(element, events) {
+ var eventHandler = function(event, type) {
+ // jQuery specific api
+ event.isDefaultPrevented = function() {
+ return event.defaultPrevented;
+ };
+
+ var eventFns = events[type || event.type];
+ var eventFnsLength = eventFns ? eventFns.length : 0;
+
+ if (!eventFnsLength) return;
+
+ if (isUndefined(event.immediatePropagationStopped)) {
+ var originalStopImmediatePropagation = event.stopImmediatePropagation;
+ event.stopImmediatePropagation = function() {
+ event.immediatePropagationStopped = true;
+
+ if (event.stopPropagation) {
+ event.stopPropagation();
+ }
+
+ if (originalStopImmediatePropagation) {
+ originalStopImmediatePropagation.call(event);
+ }
+ };
+ }
+
+ event.isImmediatePropagationStopped = function() {
+ return event.immediatePropagationStopped === true;
+ };
+
+ // Copy event handlers in case event handlers array is modified during execution.
+ if ((eventFnsLength > 1)) {
+ eventFns = shallowCopy(eventFns);
+ }
+
+ for (var i = 0; i < eventFnsLength; i++) {
+ if (!event.isImmediatePropagationStopped()) {
+ eventFns[i].call(element, event);
+ }
+ }
+ };
+
+ // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all
+ // events on `element`
+ eventHandler.elem = element;
+ return eventHandler;
+}
+
+//////////////////////////////////////////
+// Functions iterating traversal.
+// These functions chain results into a single
+// selector.
+//////////////////////////////////////////
+forEach({
+ removeData: jqLiteRemoveData,
+
+ on: function jqLiteOn(element, type, fn, unsupported) {
+ if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');
+
+ // Do not add event handlers to non-elements because they will not be cleaned up.
+ if (!jqLiteAcceptsData(element)) {
+ return;
+ }
+
+ var expandoStore = jqLiteExpandoStore(element, true);
+ var events = expandoStore.events;
+ var handle = expandoStore.handle;
+
+ if (!handle) {
+ handle = expandoStore.handle = createEventHandler(element, events);
+ }
+
+ // http://jsperf.com/string-indexof-vs-split
+ var types = type.indexOf(' ') >= 0 ? type.split(' ') : [type];
+ var i = types.length;
+
+ while (i--) {
+ type = types[i];
+ var eventFns = events[type];
+
+ if (!eventFns) {
+ events[type] = [];
+
+ if (type === 'mouseenter' || type === 'mouseleave') {
+ // Refer to jQuery's implementation of mouseenter & mouseleave
+ // Read about mouseenter and mouseleave:
+ // http://www.quirksmode.org/js/events_mouse.html#link8
+
+ jqLiteOn(element, MOUSE_EVENT_MAP[type], function(event) {
+ var target = this, related = event.relatedTarget;
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if (!related || (related !== target && !target.contains(related))) {
+ handle(event, type);
+ }
+ });
+
+ } else {
+ if (type !== '$destroy') {
+ addEventListenerFn(element, type, handle);
+ }
+ }
+ eventFns = events[type];
+ }
+ eventFns.push(fn);
+ }
+ },
+
+ off: jqLiteOff,
+
+ one: function(element, type, fn) {
+ element = jqLite(element);
+
+ //add the listener twice so that when it is called
+ //you can remove the original function and still be
+ //able to call element.off(ev, fn) normally
+ element.on(type, function onFn() {
+ element.off(type, fn);
+ element.off(type, onFn);
+ });
+ element.on(type, fn);
+ },
+
+ replaceWith: function(element, replaceNode) {
+ var index, parent = element.parentNode;
+ jqLiteDealoc(element);
+ forEach(new JQLite(replaceNode), function(node) {
+ if (index) {
+ parent.insertBefore(node, index.nextSibling);
+ } else {
+ parent.replaceChild(node, element);
+ }
+ index = node;
+ });
+ },
+
+ children: function(element) {
+ var children = [];
+ forEach(element.childNodes, function(element) {
+ if (element.nodeType === NODE_TYPE_ELEMENT) {
+ children.push(element);
+ }
+ });
+ return children;
+ },
+
+ contents: function(element) {
+ return element.contentDocument || element.childNodes || [];
+ },
+
+ append: function(element, node) {
+ var nodeType = element.nodeType;
+ if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT) return;
+
+ node = new JQLite(node);
+
+ for (var i = 0, ii = node.length; i < ii; i++) {
+ var child = node[i];
+ element.appendChild(child);
+ }
+ },
+
+ prepend: function(element, node) {
+ if (element.nodeType === NODE_TYPE_ELEMENT) {
+ var index = element.firstChild;
+ forEach(new JQLite(node), function(child) {
+ element.insertBefore(child, index);
+ });
+ }
+ },
+
+ wrap: function(element, wrapNode) {
+ wrapNode = jqLite(wrapNode).eq(0).clone()[0];
+ var parent = element.parentNode;
+ if (parent) {
+ parent.replaceChild(wrapNode, element);
+ }
+ wrapNode.appendChild(element);
+ },
+
+ remove: jqLiteRemove,
+
+ detach: function(element) {
+ jqLiteRemove(element, true);
+ },
+
+ after: function(element, newElement) {
+ var index = element, parent = element.parentNode;
+ newElement = new JQLite(newElement);
+
+ for (var i = 0, ii = newElement.length; i < ii; i++) {
+ var node = newElement[i];
+ parent.insertBefore(node, index.nextSibling);
+ index = node;
+ }
+ },
+
+ addClass: jqLiteAddClass,
+ removeClass: jqLiteRemoveClass,
+
+ toggleClass: function(element, selector, condition) {
+ if (selector) {
+ forEach(selector.split(' '), function(className) {
+ var classCondition = condition;
+ if (isUndefined(classCondition)) {
+ classCondition = !jqLiteHasClass(element, className);
+ }
+ (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);
+ });
+ }
+ },
+
+ parent: function(element) {
+ var parent = element.parentNode;
+ return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null;
+ },
+
+ next: function(element) {
+ return element.nextElementSibling;
+ },
+
+ find: function(element, selector) {
+ if (element.getElementsByTagName) {
+ return element.getElementsByTagName(selector);
+ } else {
+ return [];
+ }
+ },
+
+ clone: jqLiteClone,
+
+ triggerHandler: function(element, event, extraParameters) {
+
+ var dummyEvent, eventFnsCopy, handlerArgs;
+ var eventName = event.type || event;
+ var expandoStore = jqLiteExpandoStore(element);
+ var events = expandoStore && expandoStore.events;
+ var eventFns = events && events[eventName];
+
+ if (eventFns) {
+ // Create a dummy event to pass to the handlers
+ dummyEvent = {
+ preventDefault: function() { this.defaultPrevented = true; },
+ isDefaultPrevented: function() { return this.defaultPrevented === true; },
+ stopImmediatePropagation: function() { this.immediatePropagationStopped = true; },
+ isImmediatePropagationStopped: function() { return this.immediatePropagationStopped === true; },
+ stopPropagation: noop,
+ type: eventName,
+ target: element
+ };
+
+ // If a custom event was provided then extend our dummy event with it
+ if (event.type) {
+ dummyEvent = extend(dummyEvent, event);
+ }
+
+ // Copy event handlers in case event handlers array is modified during execution.
+ eventFnsCopy = shallowCopy(eventFns);
+ handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];
+
+ forEach(eventFnsCopy, function(fn) {
+ if (!dummyEvent.isImmediatePropagationStopped()) {
+ fn.apply(element, handlerArgs);
+ }
+ });
+ }
+ }
+}, function(fn, name) {
+ /**
+ * chaining functions
+ */
+ JQLite.prototype[name] = function(arg1, arg2, arg3) {
+ var value;
+
+ for (var i = 0, ii = this.length; i < ii; i++) {
+ if (isUndefined(value)) {
+ value = fn(this[i], arg1, arg2, arg3);
+ if (isDefined(value)) {
+ // any function which returns a value needs to be wrapped
+ value = jqLite(value);
+ }
+ } else {
+ jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));
+ }
+ }
+ return isDefined(value) ? value : this;
+ };
+
+ // bind legacy bind/unbind to on/off
+ JQLite.prototype.bind = JQLite.prototype.on;
+ JQLite.prototype.unbind = JQLite.prototype.off;
+});
+
+
+// Provider for private $$jqLite service
+function $$jqLiteProvider() {
+ this.$get = function $$jqLite() {
+ return extend(JQLite, {
+ hasClass: function(node, classes) {
+ if (node.attr) node = node[0];
+ return jqLiteHasClass(node, classes);
+ },
+ addClass: function(node, classes) {
+ if (node.attr) node = node[0];
+ return jqLiteAddClass(node, classes);
+ },
+ removeClass: function(node, classes) {
+ if (node.attr) node = node[0];
+ return jqLiteRemoveClass(node, classes);
+ }
+ });
+ };
+}
+
+/**
+ * Computes a hash of an 'obj'.
+ * Hash of a:
+ * string is string
+ * number is number as string
+ * object is either result of calling $$hashKey function on the object or uniquely generated id,
+ * that is also assigned to the $$hashKey property of the object.
+ *
+ * @param obj
+ * @returns {string} hash string such that the same input will have the same hash string.
+ * The resulting string key is in 'type:hashKey' format.
+ */
+function hashKey(obj, nextUidFn) {
+ var key = obj && obj.$$hashKey;
+
+ if (key) {
+ if (typeof key === 'function') {
+ key = obj.$$hashKey();
+ }
+ return key;
+ }
+
+ var objType = typeof obj;
+ if (objType == 'function' || (objType == 'object' && obj !== null)) {
+ key = obj.$$hashKey = objType + ':' + (nextUidFn || nextUid)();
+ } else {
+ key = objType + ':' + obj;
+ }
+
+ return key;
+}
+
+/**
+ * HashMap which can use objects as keys
+ */
+function HashMap(array, isolatedUid) {
+ if (isolatedUid) {
+ var uid = 0;
+ this.nextUid = function() {
+ return ++uid;
+ };
+ }
+ forEach(array, this.put, this);
+}
+HashMap.prototype = {
+ /**
+ * Store key value pair
+ * @param key key to store can be any type
+ * @param value value to store can be any type
+ */
+ put: function(key, value) {
+ this[hashKey(key, this.nextUid)] = value;
+ },
+
+ /**
+ * @param key
+ * @returns {Object} the value for the key
+ */
+ get: function(key) {
+ return this[hashKey(key, this.nextUid)];
+ },
+
+ /**
+ * Remove the key/value pair
+ * @param key
+ */
+ remove: function(key) {
+ var value = this[key = hashKey(key, this.nextUid)];
+ delete this[key];
+ return value;
+ }
+};
+
+var $$HashMapProvider = [function() {
+ this.$get = [function() {
+ return HashMap;
+ }];
+}];
+
+/**
+ * @ngdoc function
+ * @module ng
+ * @name angular.injector
+ * @kind function
+ *
+ * @description
+ * Creates an injector object that can be used for retrieving services as well as for
+ * dependency injection (see {@link guide/di dependency injection}).
+ *
+ * @param {Array.<string|Function>} modules A list of module functions or their aliases. See
+ * {@link angular.module}. The `ng` module must be explicitly added.
+ * @param {boolean=} [strictDi=false] Whether the injector should be in strict mode, which
+ * disallows argument name annotation inference.
+ * @returns {injector} Injector object. See {@link auto.$injector $injector}.
+ *
+ * @example
+ * Typical usage
+ * ```js
+ * // create an injector
+ * var $injector = angular.injector(['ng']);
+ *
+ * // use the injector to kick off your application
+ * // use the type inference to auto inject arguments, or use implicit injection
+ * $injector.invoke(function($rootScope, $compile, $document) {
+ * $compile($document)($rootScope);
+ * $rootScope.$digest();
+ * });
+ * ```
+ *
+ * Sometimes you want to get access to the injector of a currently running Angular app
+ * from outside Angular. Perhaps, you want to inject and compile some markup after the
+ * application has been bootstrapped. You can do this using the extra `injector()` added
+ * to JQuery/jqLite elements. See {@link angular.element}.
+ *
+ * *This is fairly rare but could be the case if a third party library is injecting the
+ * markup.*
+ *
+ * In the following example a new block of HTML containing a `ng-controller`
+ * directive is added to the end of the document body by JQuery. We then compile and link
+ * it into the current AngularJS scope.
+ *
+ * ```js
+ * var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
+ * $(document.body).append($div);
+ *
+ * angular.element(document).injector().invoke(function($compile) {
+ * var scope = angular.element($div).scope();
+ * $compile($div)(scope);
+ * });
+ * ```
+ */
+
+
+/**
+ * @ngdoc module
+ * @name auto
+ * @description
+ *
+ * Implicit module which gets automatically added to each {@link auto.$injector $injector}.
+ */
+
+var FN_ARGS = /^[^\(]*\(\s*([^\)]*)\)/m;
+var FN_ARG_SPLIT = /,/;
+var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/;
+var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
+var $injectorMinErr = minErr('$injector');
+
+function anonFn(fn) {
+ // For anonymous functions, showing at the very least the function signature can help in
+ // debugging.
+ var fnText = fn.toString().replace(STRIP_COMMENTS, ''),
+ args = fnText.match(FN_ARGS);
+ if (args) {
+ return 'function(' + (args[1] || '').replace(/[\s\r\n]+/, ' ') + ')';
+ }
+ return 'fn';
+}
+
+function annotate(fn, strictDi, name) {
+ var $inject,
+ fnText,
+ argDecl,
+ last;
+
+ if (typeof fn === 'function') {
+ if (!($inject = fn.$inject)) {
+ $inject = [];
+ if (fn.length) {
+ if (strictDi) {
+ if (!isString(name) || !name) {
+ name = fn.name || anonFn(fn);
+ }
+ throw $injectorMinErr('strictdi',
+ '{0} is not using explicit annotation and cannot be invoked in strict mode', name);
+ }
+ fnText = fn.toString().replace(STRIP_COMMENTS, '');
+ argDecl = fnText.match(FN_ARGS);
+ forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {
+ arg.replace(FN_ARG, function(all, underscore, name) {
+ $inject.push(name);
+ });
+ });
+ }
+ fn.$inject = $inject;
+ }
+ } else if (isArray(fn)) {
+ last = fn.length - 1;
+ assertArgFn(fn[last], 'fn');
+ $inject = fn.slice(0, last);
+ } else {
+ assertArgFn(fn, 'fn', true);
+ }
+ return $inject;
+}
+
+///////////////////////////////////////
+
+/**
+ * @ngdoc service
+ * @name $injector
+ *
+ * @description
+ *
+ * `$injector` is used to retrieve object instances as defined by
+ * {@link auto.$provide provider}, instantiate types, invoke methods,
+ * and load modules.
+ *
+ * The following always holds true:
+ *
+ * ```js
+ * var $injector = angular.injector();
+ * expect($injector.get('$injector')).toBe($injector);
+ * expect($injector.invoke(function($injector) {
+ * return $injector;
+ * })).toBe($injector);
+ * ```
+ *
+ * # Injection Function Annotation
+ *
+ * JavaScript does not have annotations, and annotations are needed for dependency injection. The
+ * following are all valid ways of annotating function with injection arguments and are equivalent.
+ *
+ * ```js
+ * // inferred (only works if code not minified/obfuscated)
+ * $injector.invoke(function(serviceA){});
+ *
+ * // annotated
+ * function explicit(serviceA) {};
+ * explicit.$inject = ['serviceA'];
+ * $injector.invoke(explicit);
+ *
+ * // inline
+ * $injector.invoke(['serviceA', function(serviceA){}]);
+ * ```
+ *
+ * ## Inference
+ *
+ * In JavaScript calling `toString()` on a function returns the function definition. The definition
+ * can then be parsed and the function arguments can be extracted. This method of discovering
+ * annotations is disallowed when the injector is in strict mode.
+ * *NOTE:* This does not work with minification, and obfuscation tools since these tools change the
+ * argument names.
+ *
+ * ## `$inject` Annotation
+ * By adding an `$inject` property onto a function the injection parameters can be specified.
+ *
+ * ## Inline
+ * As an array of injection names, where the last item in the array is the function to call.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#get
+ *
+ * @description
+ * Return an instance of the service.
+ *
+ * @param {string} name The name of the instance to retrieve.
+ * @param {string=} caller An optional string to provide the origin of the function call for error messages.
+ * @return {*} The instance.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#invoke
+ *
+ * @description
+ * Invoke the method and supply the method arguments from the `$injector`.
+ *
+ * @param {Function|Array.<string|Function>} fn The injectable function to invoke. Function parameters are
+ * injected according to the {@link guide/di $inject Annotation} rules.
+ * @param {Object=} self The `this` for the invoked method.
+ * @param {Object=} locals Optional object. If preset then any argument names are read from this
+ * object first, before the `$injector` is consulted.
+ * @returns {*} the value returned by the invoked `fn` function.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#has
+ *
+ * @description
+ * Allows the user to query if the particular service exists.
+ *
+ * @param {string} name Name of the service to query.
+ * @returns {boolean} `true` if injector has given service.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#instantiate
+ * @description
+ * Create a new instance of JS type. The method takes a constructor function, invokes the new
+ * operator, and supplies all of the arguments to the constructor function as specified by the
+ * constructor annotation.
+ *
+ * @param {Function} Type Annotated constructor function.
+ * @param {Object=} locals Optional object. If preset then any argument names are read from this
+ * object first, before the `$injector` is consulted.
+ * @returns {Object} new instance of `Type`.
+ */
+
+/**
+ * @ngdoc method
+ * @name $injector#annotate
+ *
+ * @description
+ * Returns an array of service names which the function is requesting for injection. This API is
+ * used by the injector to determine which services need to be injected into the function when the
+ * function is invoked. There are three ways in which the function can be annotated with the needed
+ * dependencies.
+ *
+ * # Argument names
+ *
+ * The simplest form is to extract the dependencies from the arguments of the function. This is done
+ * by converting the function into a string using `toString()` method and extracting the argument
+ * names.
+ * ```js
+ * // Given
+ * function MyController($scope, $route) {
+ * // ...
+ * }
+ *
+ * // Then
+ * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
+ * ```
+ *
+ * You can disallow this method by using strict injection mode.
+ *
+ * This method does not work with code minification / obfuscation. For this reason the following
+ * annotation strategies are supported.
+ *
+ * # The `$inject` property
+ *
+ * If a function has an `$inject` property and its value is an array of strings, then the strings
+ * represent names of services to be injected into the function.
+ * ```js
+ * // Given
+ * var MyController = function(obfuscatedScope, obfuscatedRoute) {
+ * // ...
+ * }
+ * // Define function dependencies
+ * MyController['$inject'] = ['$scope', '$route'];
+ *
+ * // Then
+ * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
+ * ```
+ *
+ * # The array notation
+ *
+ * It is often desirable to inline Injected functions and that's when setting the `$inject` property
+ * is very inconvenient. In these situations using the array notation to specify the dependencies in
+ * a way that survives minification is a better choice:
+ *
+ * ```js
+ * // We wish to write this (not minification / obfuscation safe)
+ * injector.invoke(function($compile, $rootScope) {
+ * // ...
+ * });
+ *
+ * // We are forced to write break inlining
+ * var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {
+ * // ...
+ * };
+ * tmpFn.$inject = ['$compile', '$rootScope'];
+ * injector.invoke(tmpFn);
+ *
+ * // To better support inline function the inline annotation is supported
+ * injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {
+ * // ...
+ * }]);
+ *
+ * // Therefore
+ * expect(injector.annotate(
+ * ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])
+ * ).toEqual(['$compile', '$rootScope']);
+ * ```
+ *
+ * @param {Function|Array.<string|Function>} fn Function for which dependent service names need to
+ * be retrieved as described above.
+ *
+ * @param {boolean=} [strictDi=false] Disallow argument name annotation inference.
+ *
+ * @returns {Array.<string>} The names of the services which the function requires.
+ */
+
+
+
+
+/**
+ * @ngdoc service
+ * @name $provide
+ *
+ * @description
+ *
+ * The {@link auto.$provide $provide} service has a number of methods for registering components
+ * with the {@link auto.$injector $injector}. Many of these functions are also exposed on
+ * {@link angular.Module}.
+ *
+ * An Angular **service** is a singleton object created by a **service factory**. These **service
+ * factories** are functions which, in turn, are created by a **service provider**.
+ * The **service providers** are constructor functions. When instantiated they must contain a
+ * property called `$get`, which holds the **service factory** function.
+ *
+ * When you request a service, the {@link auto.$injector $injector} is responsible for finding the
+ * correct **service provider**, instantiating it and then calling its `$get` **service factory**
+ * function to get the instance of the **service**.
+ *
+ * Often services have no configuration options and there is no need to add methods to the service
+ * provider. The provider will be no more than a constructor function with a `$get` property. For
+ * these cases the {@link auto.$provide $provide} service has additional helper methods to register
+ * services without specifying a provider.
+ *
+ * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the
+ * {@link auto.$injector $injector}
+ * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by
+ * providers and services.
+ * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by
+ * services, not providers.
+ * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`,
+ * that will be wrapped in a **service provider** object, whose `$get` property will contain the
+ * given factory function.
+ * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class`
+ * that will be wrapped in a **service provider** object, whose `$get` property will instantiate
+ * a new object using the given constructor function.
+ *
+ * See the individual methods for more information and examples.
+ */
+
+/**
+ * @ngdoc method
+ * @name $provide#provider
+ * @description
+ *
+ * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions
+ * are constructor functions, whose instances are responsible for "providing" a factory for a
+ * service.
+ *
+ * Service provider names start with the name of the service they provide followed by `Provider`.
+ * For example, the {@link ng.$log $log} service has a provider called
+ * {@link ng.$logProvider $logProvider}.
+ *
+ * Service provider objects can have additional methods which allow configuration of the provider
+ * and its service. Importantly, you can configure what kind of service is created by the `$get`
+ * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a
+ * method {@link ng.$logProvider#debugEnabled debugEnabled}
+ * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the
+ * console or not.
+ *
+ * @param {string} name The name of the instance. NOTE: the provider will be available under `name +
+ 'Provider'` key.
+ * @param {(Object|function())} provider If the provider is:
+ *
+ * - `Object`: then it should have a `$get` method. The `$get` method will be invoked using
+ * {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.
+ * - `Constructor`: a new instance of the provider will be created using
+ * {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.
+ *
+ * @returns {Object} registered provider instance
+
+ * @example
+ *
+ * The following example shows how to create a simple event tracking service and register it using
+ * {@link auto.$provide#provider $provide.provider()}.
+ *
+ * ```js
+ * // Define the eventTracker provider
+ * function EventTrackerProvider() {
+ * var trackingUrl = '/track';
+ *
+ * // A provider method for configuring where the tracked events should been saved
+ * this.setTrackingUrl = function(url) {
+ * trackingUrl = url;
+ * };
+ *
+ * // The service factory function
+ * this.$get = ['$http', function($http) {
+ * var trackedEvents = {};
+ * return {
+ * // Call this to track an event
+ * event: function(event) {
+ * var count = trackedEvents[event] || 0;
+ * count += 1;
+ * trackedEvents[event] = count;
+ * return count;
+ * },
+ * // Call this to save the tracked events to the trackingUrl
+ * save: function() {
+ * $http.post(trackingUrl, trackedEvents);
+ * }
+ * };
+ * }];
+ * }
+ *
+ * describe('eventTracker', function() {
+ * var postSpy;
+ *
+ * beforeEach(module(function($provide) {
+ * // Register the eventTracker provider
+ * $provide.provider('eventTracker', EventTrackerProvider);
+ * }));
+ *
+ * beforeEach(module(function(eventTrackerProvider) {
+ * // Configure eventTracker provider
+ * eventTrackerProvider.setTrackingUrl('/custom-track');
+ * }));
+ *
+ * it('tracks events', inject(function(eventTracker) {
+ * expect(eventTracker.event('login')).toEqual(1);
+ * expect(eventTracker.event('login')).toEqual(2);
+ * }));
+ *
+ * it('saves to the tracking url', inject(function(eventTracker, $http) {
+ * postSpy = spyOn($http, 'post');
+ * eventTracker.event('login');
+ * eventTracker.save();
+ * expect(postSpy).toHaveBeenCalled();
+ * expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');
+ * expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');
+ * expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });
+ * }));
+ * });
+ * ```
+ */
+
+/**
+ * @ngdoc method
+ * @name $provide#factory
+ * @description
+ *
+ * Register a **service factory**, which will be called to return the service instance.
+ * This is short for registering a service where its provider consists of only a `$get` property,
+ * which is the given service factory function.
+ * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to
+ * configure your service in a provider.
+ *
+ * @param {string} name The name of the instance.
+ * @param {Function|Array.<string|Function>} $getFn The injectable $getFn for the instance creation.
+ * Internally this is a short hand for `$provide.provider(name, {$get: $getFn})`.
+ * @returns {Object} registered provider instance
+ *
+ * @example
+ * Here is an example of registering a service
+ * ```js
+ * $provide.factory('ping', ['$http', function($http) {
+ * return function ping() {
+ * return $http.send('/ping');
+ * };
+ * }]);
+ * ```
+ * You would then inject and use this service like this:
+ * ```js
+ * someModule.controller('Ctrl', ['ping', function(ping) {
+ * ping();
+ * }]);
+ * ```
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $provide#service
+ * @description
+ *
+ * Register a **service constructor**, which will be invoked with `new` to create the service
+ * instance.
+ * This is short for registering a service where its provider's `$get` property is the service
+ * constructor function that will be used to instantiate the service instance.
+ *
+ * You should use {@link auto.$provide#service $provide.service(class)} if you define your service
+ * as a type/class.
+ *
+ * @param {string} name The name of the instance.
+ * @param {Function|Array.<string|Function>} constructor An injectable class (constructor function)
+ * that will be instantiated.
+ * @returns {Object} registered provider instance
+ *
+ * @example
+ * Here is an example of registering a service using
+ * {@link auto.$provide#service $provide.service(class)}.
+ * ```js
+ * var Ping = function($http) {
+ * this.$http = $http;
+ * };
+ *
+ * Ping.$inject = ['$http'];
+ *
+ * Ping.prototype.send = function() {
+ * return this.$http.get('/ping');
+ * };
+ * $provide.service('ping', Ping);
+ * ```
+ * You would then inject and use this service like this:
+ * ```js
+ * someModule.controller('Ctrl', ['ping', function(ping) {
+ * ping.send();
+ * }]);
+ * ```
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $provide#value
+ * @description
+ *
+ * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a
+ * number, an array, an object or a function. This is short for registering a service where its
+ * provider's `$get` property is a factory function that takes no arguments and returns the **value
+ * service**.
+ *
+ * Value services are similar to constant services, except that they cannot be injected into a
+ * module configuration function (see {@link angular.Module#config}) but they can be overridden by
+ * an Angular
+ * {@link auto.$provide#decorator decorator}.
+ *
+ * @param {string} name The name of the instance.
+ * @param {*} value The value.
+ * @returns {Object} registered provider instance
+ *
+ * @example
+ * Here are some examples of creating value services.
+ * ```js
+ * $provide.value('ADMIN_USER', 'admin');
+ *
+ * $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });
+ *
+ * $provide.value('halfOf', function(value) {
+ * return value / 2;
+ * });
+ * ```
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $provide#constant
+ * @description
+ *
+ * Register a **constant service**, such as a string, a number, an array, an object or a function,
+ * with the {@link auto.$injector $injector}. Unlike {@link auto.$provide#value value} it can be
+ * injected into a module configuration function (see {@link angular.Module#config}) and it cannot
+ * be overridden by an Angular {@link auto.$provide#decorator decorator}.
+ *
+ * @param {string} name The name of the constant.
+ * @param {*} value The constant value.
+ * @returns {Object} registered instance
+ *
+ * @example
+ * Here a some examples of creating constants:
+ * ```js
+ * $provide.constant('SHARD_HEIGHT', 306);
+ *
+ * $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);
+ *
+ * $provide.constant('double', function(value) {
+ * return value * 2;
+ * });
+ * ```
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $provide#decorator
+ * @description
+ *
+ * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator
+ * intercepts the creation of a service, allowing it to override or modify the behaviour of the
+ * service. The object returned by the decorator may be the original service, or a new service
+ * object which replaces or wraps and delegates to the original service.
+ *
+ * @param {string} name The name of the service to decorate.
+ * @param {Function|Array.<string|Function>} decorator This function will be invoked when the service needs to be
+ * instantiated and should return the decorated service instance. The function is called using
+ * the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.
+ * Local injection arguments:
+ *
+ * * `$delegate` - The original service instance, which can be monkey patched, configured,
+ * decorated or delegated to.
+ *
+ * @example
+ * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting
+ * calls to {@link ng.$log#error $log.warn()}.
+ * ```js
+ * $provide.decorator('$log', ['$delegate', function($delegate) {
+ * $delegate.warn = $delegate.error;
+ * return $delegate;
+ * }]);
+ * ```
+ */
+
+
+function createInjector(modulesToLoad, strictDi) {
+ strictDi = (strictDi === true);
+ var INSTANTIATING = {},
+ providerSuffix = 'Provider',
+ path = [],
+ loadedModules = new HashMap([], true),
+ providerCache = {
+ $provide: {
+ provider: supportObject(provider),
+ factory: supportObject(factory),
+ service: supportObject(service),
+ value: supportObject(value),
+ constant: supportObject(constant),
+ decorator: decorator
+ }
+ },
+ providerInjector = (providerCache.$injector =
+ createInternalInjector(providerCache, function(serviceName, caller) {
+ if (angular.isString(caller)) {
+ path.push(caller);
+ }
+ throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
+ })),
+ instanceCache = {},
+ instanceInjector = (instanceCache.$injector =
+ createInternalInjector(instanceCache, function(serviceName, caller) {
+ var provider = providerInjector.get(serviceName + providerSuffix, caller);
+ return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
+ }));
+
+
+ forEach(loadModules(modulesToLoad), function(fn) { if (fn) instanceInjector.invoke(fn); });
+
+ return instanceInjector;
+
+ ////////////////////////////////////
+ // $provider
+ ////////////////////////////////////
+
+ function supportObject(delegate) {
+ return function(key, value) {
+ if (isObject(key)) {
+ forEach(key, reverseParams(delegate));
+ } else {
+ return delegate(key, value);
+ }
+ };
+ }
+
+ function provider(name, provider_) {
+ assertNotHasOwnProperty(name, 'service');
+ if (isFunction(provider_) || isArray(provider_)) {
+ provider_ = providerInjector.instantiate(provider_);
+ }
+ if (!provider_.$get) {
+ throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
+ }
+ return providerCache[name + providerSuffix] = provider_;
+ }
+
+ function enforceReturnValue(name, factory) {
+ return function enforcedReturnValue() {
+ var result = instanceInjector.invoke(factory, this);
+ if (isUndefined(result)) {
+ throw $injectorMinErr('undef', "Provider '{0}' must return a value from $get factory method.", name);
+ }
+ return result;
+ };
+ }
+
+ function factory(name, factoryFn, enforce) {
+ return provider(name, {
+ $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
+ });
+ }
+
+ function service(name, constructor) {
+ return factory(name, ['$injector', function($injector) {
+ return $injector.instantiate(constructor);
+ }]);
+ }
+
+ function value(name, val) { return factory(name, valueFn(val), false); }
+
+ function constant(name, value) {
+ assertNotHasOwnProperty(name, 'constant');
+ providerCache[name] = value;
+ instanceCache[name] = value;
+ }
+
+ function decorator(serviceName, decorFn) {
+ var origProvider = providerInjector.get(serviceName + providerSuffix),
+ orig$get = origProvider.$get;
+
+ origProvider.$get = function() {
+ var origInstance = instanceInjector.invoke(orig$get, origProvider);
+ return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});
+ };
+ }
+
+ ////////////////////////////////////
+ // Module Loading
+ ////////////////////////////////////
+ function loadModules(modulesToLoad) {
+ assertArg(isUndefined(modulesToLoad) || isArray(modulesToLoad), 'modulesToLoad', 'not an array');
+ var runBlocks = [], moduleFn;
+ forEach(modulesToLoad, function(module) {
+ if (loadedModules.get(module)) return;
+ loadedModules.put(module, true);
+
+ function runInvokeQueue(queue) {
+ var i, ii;
+ for (i = 0, ii = queue.length; i < ii; i++) {
+ var invokeArgs = queue[i],
+ provider = providerInjector.get(invokeArgs[0]);
+
+ provider[invokeArgs[1]].apply(provider, invokeArgs[2]);
+ }
+ }
+
+ try {
+ if (isString(module)) {
+ moduleFn = angularModule(module);
+ runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);
+ runInvokeQueue(moduleFn._invokeQueue);
+ runInvokeQueue(moduleFn._configBlocks);
+ } else if (isFunction(module)) {
+ runBlocks.push(providerInjector.invoke(module));
+ } else if (isArray(module)) {
+ runBlocks.push(providerInjector.invoke(module));
+ } else {
+ assertArgFn(module, 'module');
+ }
+ } catch (e) {
+ if (isArray(module)) {
+ module = module[module.length - 1];
+ }
+ if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {
+ // Safari & FF's stack traces don't contain error.message content
+ // unlike those of Chrome and IE
+ // So if stack doesn't contain message, we create a new string that contains both.
+ // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.
+ /* jshint -W022 */
+ e = e.message + '\n' + e.stack;
+ }
+ throw $injectorMinErr('modulerr', "Failed to instantiate module {0} due to:\n{1}",
+ module, e.stack || e.message || e);
+ }
+ });
+ return runBlocks;
+ }
+
+ ////////////////////////////////////
+ // internal Injector
+ ////////////////////////////////////
+
+ function createInternalInjector(cache, factory) {
+
+ function getService(serviceName, caller) {
+ if (cache.hasOwnProperty(serviceName)) {
+ if (cache[serviceName] === INSTANTIATING) {
+ throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
+ serviceName + ' <- ' + path.join(' <- '));
+ }
+ return cache[serviceName];
+ } else {
+ try {
+ path.unshift(serviceName);
+ cache[serviceName] = INSTANTIATING;
+ return cache[serviceName] = factory(serviceName, caller);
+ } catch (err) {
+ if (cache[serviceName] === INSTANTIATING) {
+ delete cache[serviceName];
+ }
+ throw err;
+ } finally {
+ path.shift();
+ }
+ }
+ }
+
+ function invoke(fn, self, locals, serviceName) {
+ if (typeof locals === 'string') {
+ serviceName = locals;
+ locals = null;
+ }
+
+ var args = [],
+ $inject = createInjector.$$annotate(fn, strictDi, serviceName),
+ length, i,
+ key;
+
+ for (i = 0, length = $inject.length; i < length; i++) {
+ key = $inject[i];
+ if (typeof key !== 'string') {
+ throw $injectorMinErr('itkn',
+ 'Incorrect injection token! Expected service name as string, got {0}', key);
+ }
+ args.push(
+ locals && locals.hasOwnProperty(key)
+ ? locals[key]
+ : getService(key, serviceName)
+ );
+ }
+ if (isArray(fn)) {
+ fn = fn[length];
+ }
+
+ // http://jsperf.com/angularjs-invoke-apply-vs-switch
+ // #5388
+ return fn.apply(self, args);
+ }
+
+ function instantiate(Type, locals, serviceName) {
+ // Check if Type is annotated and use just the given function at n-1 as parameter
+ // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
+ // Object creation: http://jsperf.com/create-constructor/2
+ var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null);
+ var returnedValue = invoke(Type, instance, locals, serviceName);
+
+ return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
+ }
+
+ return {
+ invoke: invoke,
+ instantiate: instantiate,
+ get: getService,
+ annotate: createInjector.$$annotate,
+ has: function(name) {
+ return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
+ }
+ };
+ }
+}
+
+createInjector.$$annotate = annotate;
+
+/**
+ * @ngdoc provider
+ * @name $anchorScrollProvider
+ *
+ * @description
+ * Use `$anchorScrollProvider` to disable automatic scrolling whenever
+ * {@link ng.$location#hash $location.hash()} changes.
+ */
+function $AnchorScrollProvider() {
+
+ var autoScrollingEnabled = true;
+
+ /**
+ * @ngdoc method
+ * @name $anchorScrollProvider#disableAutoScrolling
+ *
+ * @description
+ * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to
+ * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.<br />
+ * Use this method to disable automatic scrolling.
+ *
+ * If automatic scrolling is disabled, one must explicitly call
+ * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the
+ * current hash.
+ */
+ this.disableAutoScrolling = function() {
+ autoScrollingEnabled = false;
+ };
+
+ /**
+ * @ngdoc service
+ * @name $anchorScroll
+ * @kind function
+ * @requires $window
+ * @requires $location
+ * @requires $rootScope
+ *
+ * @description
+ * When called, it scrolls to the element related to the specified `hash` or (if omitted) to the
+ * current value of {@link ng.$location#hash $location.hash()}, according to the rules specified
+ * in the
+ * [HTML5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document).
+ *
+ * It also watches the {@link ng.$location#hash $location.hash()} and automatically scrolls to
+ * match any anchor whenever it changes. This can be disabled by calling
+ * {@link ng.$anchorScrollProvider#disableAutoScrolling $anchorScrollProvider.disableAutoScrolling()}.
+ *
+ * Additionally, you can use its {@link ng.$anchorScroll#yOffset yOffset} property to specify a
+ * vertical scroll-offset (either fixed or dynamic).
+ *
+ * @param {string=} hash The hash specifying the element to scroll to. If omitted, the value of
+ * {@link ng.$location#hash $location.hash()} will be used.
+ *
+ * @property {(number|function|jqLite)} yOffset
+ * If set, specifies a vertical scroll-offset. This is often useful when there are fixed
+ * positioned elements at the top of the page, such as navbars, headers etc.
+ *
+ * `yOffset` can be specified in various ways:
+ * - **number**: A fixed number of pixels to be used as offset.<br /><br />
+ * - **function**: A getter function called everytime `$anchorScroll()` is executed. Must return
+ * a number representing the offset (in pixels).<br /><br />
+ * - **jqLite**: A jqLite/jQuery element to be used for specifying the offset. The distance from
+ * the top of the page to the element's bottom will be used as offset.<br />
+ * **Note**: The element will be taken into account only as long as its `position` is set to
+ * `fixed`. This option is useful, when dealing with responsive navbars/headers that adjust
+ * their height and/or positioning according to the viewport's size.
+ *
+ * <br />
+ * <div class="alert alert-warning">
+ * In order for `yOffset` to work properly, scrolling should take place on the document's root and
+ * not some child element.
+ * </div>
+ *
+ * @example
+ <example module="anchorScrollExample">
+ <file name="index.html">
+ <div id="scrollArea" ng-controller="ScrollController">
+ <a ng-click="gotoBottom()">Go to bottom</a>
+ <a id="bottom"></a> You're at the bottom!
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('anchorScrollExample', [])
+ .controller('ScrollController', ['$scope', '$location', '$anchorScroll',
+ function ($scope, $location, $anchorScroll) {
+ $scope.gotoBottom = function() {
+ // set the location.hash to the id of
+ // the element you wish to scroll to.
+ $location.hash('bottom');
+
+ // call $anchorScroll()
+ $anchorScroll();
+ };
+ }]);
+ </file>
+ <file name="style.css">
+ #scrollArea {
+ height: 280px;
+ overflow: auto;
+ }
+
+ #bottom {
+ display: block;
+ margin-top: 2000px;
+ }
+ </file>
+ </example>
+ *
+ * <hr />
+ * The example below illustrates the use of a vertical scroll-offset (specified as a fixed value).
+ * See {@link ng.$anchorScroll#yOffset $anchorScroll.yOffset} for more details.
+ *
+ * @example
+ <example module="anchorScrollOffsetExample">
+ <file name="index.html">
+ <div class="fixed-header" ng-controller="headerCtrl">
+ <a href="" ng-click="gotoAnchor(x)" ng-repeat="x in [1,2,3,4,5]">
+ Go to anchor {{x}}
+ </a>
+ </div>
+ <div id="anchor{{x}}" class="anchor" ng-repeat="x in [1,2,3,4,5]">
+ Anchor {{x}} of 5
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('anchorScrollOffsetExample', [])
+ .run(['$anchorScroll', function($anchorScroll) {
+ $anchorScroll.yOffset = 50; // always scroll by 50 extra pixels
+ }])
+ .controller('headerCtrl', ['$anchorScroll', '$location', '$scope',
+ function ($anchorScroll, $location, $scope) {
+ $scope.gotoAnchor = function(x) {
+ var newHash = 'anchor' + x;
+ if ($location.hash() !== newHash) {
+ // set the $location.hash to `newHash` and
+ // $anchorScroll will automatically scroll to it
+ $location.hash('anchor' + x);
+ } else {
+ // call $anchorScroll() explicitly,
+ // since $location.hash hasn't changed
+ $anchorScroll();
+ }
+ };
+ }
+ ]);
+ </file>
+ <file name="style.css">
+ body {
+ padding-top: 50px;
+ }
+
+ .anchor {
+ border: 2px dashed DarkOrchid;
+ padding: 10px 10px 200px 10px;
+ }
+
+ .fixed-header {
+ background-color: rgba(0, 0, 0, 0.2);
+ height: 50px;
+ position: fixed;
+ top: 0; left: 0; right: 0;
+ }
+
+ .fixed-header > a {
+ display: inline-block;
+ margin: 5px 15px;
+ }
+ </file>
+ </example>
+ */
+ this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {
+ var document = $window.document;
+
+ // Helper function to get first anchor from a NodeList
+ // (using `Array#some()` instead of `angular#forEach()` since it's more performant
+ // and working in all supported browsers.)
+ function getFirstAnchor(list) {
+ var result = null;
+ Array.prototype.some.call(list, function(element) {
+ if (nodeName_(element) === 'a') {
+ result = element;
+ return true;
+ }
+ });
+ return result;
+ }
+
+ function getYOffset() {
+
+ var offset = scroll.yOffset;
+
+ if (isFunction(offset)) {
+ offset = offset();
+ } else if (isElement(offset)) {
+ var elem = offset[0];
+ var style = $window.getComputedStyle(elem);
+ if (style.position !== 'fixed') {
+ offset = 0;
+ } else {
+ offset = elem.getBoundingClientRect().bottom;
+ }
+ } else if (!isNumber(offset)) {
+ offset = 0;
+ }
+
+ return offset;
+ }
+
+ function scrollTo(elem) {
+ if (elem) {
+ elem.scrollIntoView();
+
+ var offset = getYOffset();
+
+ if (offset) {
+ // `offset` is the number of pixels we should scroll UP in order to align `elem` properly.
+ // This is true ONLY if the call to `elem.scrollIntoView()` initially aligns `elem` at the
+ // top of the viewport.
+ //
+ // IF the number of pixels from the top of `elem` to the end of the page's content is less
+ // than the height of the viewport, then `elem.scrollIntoView()` will align the `elem` some
+ // way down the page.
+ //
+ // This is often the case for elements near the bottom of the page.
+ //
+ // In such cases we do not need to scroll the whole `offset` up, just the difference between
+ // the top of the element and the offset, which is enough to align the top of `elem` at the
+ // desired position.
+ var elemTop = elem.getBoundingClientRect().top;
+ $window.scrollBy(0, elemTop - offset);
+ }
+ } else {
+ $window.scrollTo(0, 0);
+ }
+ }
+
+ function scroll(hash) {
+ hash = isString(hash) ? hash : $location.hash();
+ var elm;
+
+ // empty hash, scroll to the top of the page
+ if (!hash) scrollTo(null);
+
+ // element with given id
+ else if ((elm = document.getElementById(hash))) scrollTo(elm);
+
+ // first anchor with given name :-D
+ else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) scrollTo(elm);
+
+ // no element and hash == 'top', scroll to the top of the page
+ else if (hash === 'top') scrollTo(null);
+ }
+
+ // does not scroll when user clicks on anchor link that is currently on
+ // (no url change, no $location.hash() change), browser native does scroll
+ if (autoScrollingEnabled) {
+ $rootScope.$watch(function autoScrollWatch() {return $location.hash();},
+ function autoScrollWatchAction(newVal, oldVal) {
+ // skip the initial scroll if $location.hash is empty
+ if (newVal === oldVal && newVal === '') return;
+
+ jqLiteDocumentLoaded(function() {
+ $rootScope.$evalAsync(scroll);
+ });
+ });
+ }
+
+ return scroll;
+ }];
+}
+
+var $animateMinErr = minErr('$animate');
+var ELEMENT_NODE = 1;
+var NG_ANIMATE_CLASSNAME = 'ng-animate';
+
+function mergeClasses(a,b) {
+ if (!a && !b) return '';
+ if (!a) return b;
+ if (!b) return a;
+ if (isArray(a)) a = a.join(' ');
+ if (isArray(b)) b = b.join(' ');
+ return a + ' ' + b;
+}
+
+function extractElementNode(element) {
+ for (var i = 0; i < element.length; i++) {
+ var elm = element[i];
+ if (elm.nodeType === ELEMENT_NODE) {
+ return elm;
+ }
+ }
+}
+
+function splitClasses(classes) {
+ if (isString(classes)) {
+ classes = classes.split(' ');
+ }
+
+ // Use createMap() to prevent class assumptions involving property names in
+ // Object.prototype
+ var obj = createMap();
+ forEach(classes, function(klass) {
+ // sometimes the split leaves empty string values
+ // incase extra spaces were applied to the options
+ if (klass.length) {
+ obj[klass] = true;
+ }
+ });
+ return obj;
+}
+
+// if any other type of options value besides an Object value is
+// passed into the $animate.method() animation then this helper code
+// will be run which will ignore it. While this patch is not the
+// greatest solution to this, a lot of existing plugins depend on
+// $animate to either call the callback (< 1.2) or return a promise
+// that can be changed. This helper function ensures that the options
+// are wiped clean incase a callback function is provided.
+function prepareAnimateOptions(options) {
+ return isObject(options)
+ ? options
+ : {};
+}
+
+var $$CoreAnimateRunnerProvider = function() {
+ this.$get = ['$q', '$$rAF', function($q, $$rAF) {
+ function AnimateRunner() {}
+ AnimateRunner.all = noop;
+ AnimateRunner.chain = noop;
+ AnimateRunner.prototype = {
+ end: noop,
+ cancel: noop,
+ resume: noop,
+ pause: noop,
+ complete: noop,
+ then: function(pass, fail) {
+ return $q(function(resolve) {
+ $$rAF(function() {
+ resolve();
+ });
+ }).then(pass, fail);
+ }
+ };
+ return AnimateRunner;
+ }];
+};
+
+// this is prefixed with Core since it conflicts with
+// the animateQueueProvider defined in ngAnimate/animateQueue.js
+var $$CoreAnimateQueueProvider = function() {
+ var postDigestQueue = new HashMap();
+ var postDigestElements = [];
+
+ this.$get = ['$$AnimateRunner', '$rootScope',
+ function($$AnimateRunner, $rootScope) {
+ return {
+ enabled: noop,
+ on: noop,
+ off: noop,
+ pin: noop,
+
+ push: function(element, event, options, domOperation) {
+ domOperation && domOperation();
+
+ options = options || {};
+ options.from && element.css(options.from);
+ options.to && element.css(options.to);
+
+ if (options.addClass || options.removeClass) {
+ addRemoveClassesPostDigest(element, options.addClass, options.removeClass);
+ }
+
+ return new $$AnimateRunner(); // jshint ignore:line
+ }
+ };
+
+ function addRemoveClassesPostDigest(element, add, remove) {
+ var classVal, data = postDigestQueue.get(element);
+
+ if (!data) {
+ postDigestQueue.put(element, data = {});
+ postDigestElements.push(element);
+ }
+
+ var updateData = function(classes, value) {
+ var changed = false;
+ if (classes) {
+ classes = isString(classes) ? classes.split(' ') :
+ isArray(classes) ? classes : [];
+ forEach(classes, function(className) {
+ if (className) {
+ changed = true;
+ data[className] = value;
+ }
+ });
+ }
+ return changed;
+ };
+
+ var classesAdded = updateData(add, true);
+ var classesRemoved = updateData(remove, false);
+ if ((!classesAdded && !classesRemoved) || postDigestElements.length > 1) return;
+
+ $rootScope.$$postDigest(function() {
+ forEach(postDigestElements, function(element) {
+ var data = postDigestQueue.get(element);
+ if (data) {
+ var existing = splitClasses(element.attr('class'));
+ var toAdd = '';
+ var toRemove = '';
+ forEach(data, function(status, className) {
+ var hasClass = !!existing[className];
+ if (status !== hasClass) {
+ if (status) {
+ toAdd += (toAdd.length ? ' ' : '') + className;
+ } else {
+ toRemove += (toRemove.length ? ' ' : '') + className;
+ }
+ }
+ });
+
+ forEach(element, function(elm) {
+ toAdd && jqLiteAddClass(elm, toAdd);
+ toRemove && jqLiteRemoveClass(elm, toRemove);
+ });
+ postDigestQueue.remove(element);
+ }
+ });
+
+ postDigestElements.length = 0;
+ });
+ }
+ }];
+};
+
+/**
+ * @ngdoc provider
+ * @name $animateProvider
+ *
+ * @description
+ * Default implementation of $animate that doesn't perform any animations, instead just
+ * synchronously performs DOM updates and resolves the returned runner promise.
+ *
+ * In order to enable animations the `ngAnimate` module has to be loaded.
+ *
+ * To see the functional implementation check out `src/ngAnimate/animate.js`.
+ */
+var $AnimateProvider = ['$provide', function($provide) {
+ var provider = this;
+
+ this.$$registeredAnimations = Object.create(null);
+
+ /**
+ * @ngdoc method
+ * @name $animateProvider#register
+ *
+ * @description
+ * Registers a new injectable animation factory function. The factory function produces the
+ * animation object which contains callback functions for each event that is expected to be
+ * animated.
+ *
+ * * `eventFn`: `function(element, ... , doneFunction, options)`
+ * The element to animate, the `doneFunction` and the options fed into the animation. Depending
+ * on the type of animation additional arguments will be injected into the animation function. The
+ * list below explains the function signatures for the different animation methods:
+ *
+ * - setClass: function(element, addedClasses, removedClasses, doneFunction, options)
+ * - addClass: function(element, addedClasses, doneFunction, options)
+ * - removeClass: function(element, removedClasses, doneFunction, options)
+ * - enter, leave, move: function(element, doneFunction, options)
+ * - animate: function(element, fromStyles, toStyles, doneFunction, options)
+ *
+ * Make sure to trigger the `doneFunction` once the animation is fully complete.
+ *
+ * ```js
+ * return {
+ * //enter, leave, move signature
+ * eventFn : function(element, done, options) {
+ * //code to run the animation
+ * //once complete, then run done()
+ * return function endFunction(wasCancelled) {
+ * //code to cancel the animation
+ * }
+ * }
+ * }
+ * ```
+ *
+ * @param {string} name The name of the animation (this is what the class-based CSS value will be compared to).
+ * @param {Function} factory The factory function that will be executed to return the animation
+ * object.
+ */
+ this.register = function(name, factory) {
+ if (name && name.charAt(0) !== '.') {
+ throw $animateMinErr('notcsel', "Expecting class selector starting with '.' got '{0}'.", name);
+ }
+
+ var key = name + '-animation';
+ provider.$$registeredAnimations[name.substr(1)] = key;
+ $provide.factory(key, factory);
+ };
+
+ /**
+ * @ngdoc method
+ * @name $animateProvider#classNameFilter
+ *
+ * @description
+ * Sets and/or returns the CSS class regular expression that is checked when performing
+ * an animation. Upon bootstrap the classNameFilter value is not set at all and will
+ * therefore enable $animate to attempt to perform an animation on any element that is triggered.
+ * When setting the `classNameFilter` value, animations will only be performed on elements
+ * that successfully match the filter expression. This in turn can boost performance
+ * for low-powered devices as well as applications containing a lot of structural operations.
+ * @param {RegExp=} expression The className expression which will be checked against all animations
+ * @return {RegExp} The current CSS className expression value. If null then there is no expression value
+ */
+ this.classNameFilter = function(expression) {
+ if (arguments.length === 1) {
+ this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;
+ if (this.$$classNameFilter) {
+ var reservedRegex = new RegExp("(\\s+|\\/)" + NG_ANIMATE_CLASSNAME + "(\\s+|\\/)");
+ if (reservedRegex.test(this.$$classNameFilter.toString())) {
+ throw $animateMinErr('nongcls','$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', NG_ANIMATE_CLASSNAME);
+
+ }
+ }
+ }
+ return this.$$classNameFilter;
+ };
+
+ this.$get = ['$$animateQueue', function($$animateQueue) {
+ function domInsert(element, parentElement, afterElement) {
+ // if for some reason the previous element was removed
+ // from the dom sometime before this code runs then let's
+ // just stick to using the parent element as the anchor
+ if (afterElement) {
+ var afterNode = extractElementNode(afterElement);
+ if (afterNode && !afterNode.parentNode && !afterNode.previousElementSibling) {
+ afterElement = null;
+ }
+ }
+ afterElement ? afterElement.after(element) : parentElement.prepend(element);
+ }
+
+ /**
+ * @ngdoc service
+ * @name $animate
+ * @description The $animate service exposes a series of DOM utility methods that provide support
+ * for animation hooks. The default behavior is the application of DOM operations, however,
+ * when an animation is detected (and animations are enabled), $animate will do the heavy lifting
+ * to ensure that animation runs with the triggered DOM operation.
+ *
+ * By default $animate doesn't trigger an animations. This is because the `ngAnimate` module isn't
+ * included and only when it is active then the animation hooks that `$animate` triggers will be
+ * functional. Once active then all structural `ng-` directives will trigger animations as they perform
+ * their DOM-related operations (enter, leave and move). Other directives such as `ngClass`,
+ * `ngShow`, `ngHide` and `ngMessages` also provide support for animations.
+ *
+ * It is recommended that the`$animate` service is always used when executing DOM-related procedures within directives.
+ *
+ * To learn more about enabling animation support, click here to visit the
+ * {@link ngAnimate ngAnimate module page}.
+ */
+ return {
+ // we don't call it directly since non-existant arguments may
+ // be interpreted as null within the sub enabled function
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#on
+ * @kind function
+ * @description Sets up an event listener to fire whenever the animation event (enter, leave, move, etc...)
+ * has fired on the given element or among any of its children. Once the listener is fired, the provided callback
+ * is fired with the following params:
+ *
+ * ```js
+ * $animate.on('enter', container,
+ * function callback(element, phase) {
+ * // cool we detected an enter animation within the container
+ * }
+ * );
+ * ```
+ *
+ * @param {string} event the animation event that will be captured (e.g. enter, leave, move, addClass, removeClass, etc...)
+ * @param {DOMElement} container the container element that will capture each of the animation events that are fired on itself
+ * as well as among its children
+ * @param {Function} callback the callback function that will be fired when the listener is triggered
+ *
+ * The arguments present in the callback function are:
+ * * `element` - The captured DOM element that the animation was fired on.
+ * * `phase` - The phase of the animation. The two possible phases are **start** (when the animation starts) and **close** (when it ends).
+ */
+ on: $$animateQueue.on,
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#off
+ * @kind function
+ * @description Deregisters an event listener based on the event which has been associated with the provided element. This method
+ * can be used in three different ways depending on the arguments:
+ *
+ * ```js
+ * // remove all the animation event listeners listening for `enter`
+ * $animate.off('enter');
+ *
+ * // remove all the animation event listeners listening for `enter` on the given element and its children
+ * $animate.off('enter', container);
+ *
+ * // remove the event listener function provided by `listenerFn` that is set
+ * // to listen for `enter` on the given `element` as well as its children
+ * $animate.off('enter', container, callback);
+ * ```
+ *
+ * @param {string} event the animation event (e.g. enter, leave, move, addClass, removeClass, etc...)
+ * @param {DOMElement=} container the container element the event listener was placed on
+ * @param {Function=} callback the callback function that was registered as the listener
+ */
+ off: $$animateQueue.off,
+
+ /**
+ * @ngdoc method
+ * @name $animate#pin
+ * @kind function
+ * @description Associates the provided element with a host parent element to allow the element to be animated even if it exists
+ * outside of the DOM structure of the Angular application. By doing so, any animation triggered via `$animate` can be issued on the
+ * element despite being outside the realm of the application or within another application. Say for example if the application
+ * was bootstrapped on an element that is somewhere inside of the `<body>` tag, but we wanted to allow for an element to be situated
+ * as a direct child of `document.body`, then this can be achieved by pinning the element via `$animate.pin(element)`. Keep in mind
+ * that calling `$animate.pin(element, parentElement)` will not actually insert into the DOM anywhere; it will just create the association.
+ *
+ * Note that this feature is only active when the `ngAnimate` module is used.
+ *
+ * @param {DOMElement} element the external element that will be pinned
+ * @param {DOMElement} parentElement the host parent element that will be associated with the external element
+ */
+ pin: $$animateQueue.pin,
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#enabled
+ * @kind function
+ * @description Used to get and set whether animations are enabled or not on the entire application or on an element and its children. This
+ * function can be called in four ways:
+ *
+ * ```js
+ * // returns true or false
+ * $animate.enabled();
+ *
+ * // changes the enabled state for all animations
+ * $animate.enabled(false);
+ * $animate.enabled(true);
+ *
+ * // returns true or false if animations are enabled for an element
+ * $animate.enabled(element);
+ *
+ * // changes the enabled state for an element and its children
+ * $animate.enabled(element, true);
+ * $animate.enabled(element, false);
+ * ```
+ *
+ * @param {DOMElement=} element the element that will be considered for checking/setting the enabled state
+ * @param {boolean=} enabled whether or not the animations will be enabled for the element
+ *
+ * @return {boolean} whether or not animations are enabled
+ */
+ enabled: $$animateQueue.enabled,
+
+ /**
+ * @ngdoc method
+ * @name $animate#cancel
+ * @kind function
+ * @description Cancels the provided animation.
+ *
+ * @param {Promise} animationPromise The animation promise that is returned when an animation is started.
+ */
+ cancel: function(runner) {
+ runner.end && runner.end();
+ },
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#enter
+ * @kind function
+ * @description Inserts the element into the DOM either after the `after` element (if provided) or
+ * as the first child within the `parent` element and then triggers an animation.
+ * A promise is returned that will be resolved during the next digest once the animation
+ * has completed.
+ *
+ * @param {DOMElement} element the element which will be inserted into the DOM
+ * @param {DOMElement} parent the parent element which will append the element as
+ * a child (so long as the after element is not present)
+ * @param {DOMElement=} after the sibling element after which the element will be appended
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ enter: function(element, parent, after, options) {
+ parent = parent && jqLite(parent);
+ after = after && jqLite(after);
+ parent = parent || after.parent();
+ domInsert(element, parent, after);
+ return $$animateQueue.push(element, 'enter', prepareAnimateOptions(options));
+ },
+
+ /**
+ *
+ * @ngdoc method
+ * @name $animate#move
+ * @kind function
+ * @description Inserts (moves) the element into its new position in the DOM either after
+ * the `after` element (if provided) or as the first child within the `parent` element
+ * and then triggers an animation. A promise is returned that will be resolved
+ * during the next digest once the animation has completed.
+ *
+ * @param {DOMElement} element the element which will be moved into the new DOM position
+ * @param {DOMElement} parent the parent element which will append the element as
+ * a child (so long as the after element is not present)
+ * @param {DOMElement=} after the sibling element after which the element will be appended
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ move: function(element, parent, after, options) {
+ parent = parent && jqLite(parent);
+ after = after && jqLite(after);
+ parent = parent || after.parent();
+ domInsert(element, parent, after);
+ return $$animateQueue.push(element, 'move', prepareAnimateOptions(options));
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#leave
+ * @kind function
+ * @description Triggers an animation and then removes the element from the DOM.
+ * When the function is called a promise is returned that will be resolved during the next
+ * digest once the animation has completed.
+ *
+ * @param {DOMElement} element the element which will be removed from the DOM
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ leave: function(element, options) {
+ return $$animateQueue.push(element, 'leave', prepareAnimateOptions(options), function() {
+ element.remove();
+ });
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#addClass
+ * @kind function
+ *
+ * @description Triggers an addClass animation surrounding the addition of the provided CSS class(es). Upon
+ * execution, the addClass operation will only be handled after the next digest and it will not trigger an
+ * animation if element already contains the CSS class or if the class is removed at a later step.
+ * Note that class-based animations are treated differently compared to structural animations
+ * (like enter, move and leave) since the CSS classes may be added/removed at different points
+ * depending if CSS or JavaScript animations are used.
+ *
+ * @param {DOMElement} element the element which the CSS classes will be applied to
+ * @param {string} className the CSS class(es) that will be added (multiple classes are separated via spaces)
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ addClass: function(element, className, options) {
+ options = prepareAnimateOptions(options);
+ options.addClass = mergeClasses(options.addclass, className);
+ return $$animateQueue.push(element, 'addClass', options);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#removeClass
+ * @kind function
+ *
+ * @description Triggers a removeClass animation surrounding the removal of the provided CSS class(es). Upon
+ * execution, the removeClass operation will only be handled after the next digest and it will not trigger an
+ * animation if element does not contain the CSS class or if the class is added at a later step.
+ * Note that class-based animations are treated differently compared to structural animations
+ * (like enter, move and leave) since the CSS classes may be added/removed at different points
+ * depending if CSS or JavaScript animations are used.
+ *
+ * @param {DOMElement} element the element which the CSS classes will be applied to
+ * @param {string} className the CSS class(es) that will be removed (multiple classes are separated via spaces)
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ removeClass: function(element, className, options) {
+ options = prepareAnimateOptions(options);
+ options.removeClass = mergeClasses(options.removeClass, className);
+ return $$animateQueue.push(element, 'removeClass', options);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#setClass
+ * @kind function
+ *
+ * @description Performs both the addition and removal of a CSS classes on an element and (during the process)
+ * triggers an animation surrounding the class addition/removal. Much like `$animate.addClass` and
+ * `$animate.removeClass`, `setClass` will only evaluate the classes being added/removed once a digest has
+ * passed. Note that class-based animations are treated differently compared to structural animations
+ * (like enter, move and leave) since the CSS classes may be added/removed at different points
+ * depending if CSS or JavaScript animations are used.
+ *
+ * @param {DOMElement} element the element which the CSS classes will be applied to
+ * @param {string} add the CSS class(es) that will be added (multiple classes are separated via spaces)
+ * @param {string} remove the CSS class(es) that will be removed (multiple classes are separated via spaces)
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ setClass: function(element, add, remove, options) {
+ options = prepareAnimateOptions(options);
+ options.addClass = mergeClasses(options.addClass, add);
+ options.removeClass = mergeClasses(options.removeClass, remove);
+ return $$animateQueue.push(element, 'setClass', options);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $animate#animate
+ * @kind function
+ *
+ * @description Performs an inline animation on the element which applies the provided to and from CSS styles to the element.
+ * If any detected CSS transition, keyframe or JavaScript matches the provided className value then the animation will take
+ * on the provided styles. For example, if a transition animation is set for the given className then the provided from and
+ * to styles will be applied alongside the given transition. If a JavaScript animation is detected then the provided styles
+ * will be given in as function paramters into the `animate` method (or as apart of the `options` parameter).
+ *
+ * @param {DOMElement} element the element which the CSS styles will be applied to
+ * @param {object} from the from (starting) CSS styles that will be applied to the element and across the animation.
+ * @param {object} to the to (destination) CSS styles that will be applied to the element and across the animation.
+ * @param {string=} className an optional CSS class that will be applied to the element for the duration of the animation. If
+ * this value is left as empty then a CSS class of `ng-inline-animate` will be applied to the element.
+ * (Note that if no animation is detected then this value will not be appplied to the element.)
+ * @param {object=} options an optional collection of options/styles that will be applied to the element
+ *
+ * @return {Promise} the animation callback promise
+ */
+ animate: function(element, from, to, className, options) {
+ options = prepareAnimateOptions(options);
+ options.from = options.from ? extend(options.from, from) : from;
+ options.to = options.to ? extend(options.to, to) : to;
+
+ className = className || 'ng-inline-animate';
+ options.tempClasses = mergeClasses(options.tempClasses, className);
+ return $$animateQueue.push(element, 'animate', options);
+ }
+ };
+ }];
+}];
+
+/**
+ * @ngdoc service
+ * @name $animateCss
+ * @kind object
+ *
+ * @description
+ * This is the core version of `$animateCss`. By default, only when the `ngAnimate` is included,
+ * then the `$animateCss` service will actually perform animations.
+ *
+ * Click here {@link ngAnimate.$animateCss to read the documentation for $animateCss}.
+ */
+var $CoreAnimateCssProvider = function() {
+ this.$get = ['$$rAF', '$q', function($$rAF, $q) {
+
+ var RAFPromise = function() {};
+ RAFPromise.prototype = {
+ done: function(cancel) {
+ this.defer && this.defer[cancel === true ? 'reject' : 'resolve']();
+ },
+ end: function() {
+ this.done();
+ },
+ cancel: function() {
+ this.done(true);
+ },
+ getPromise: function() {
+ if (!this.defer) {
+ this.defer = $q.defer();
+ }
+ return this.defer.promise;
+ },
+ then: function(f1,f2) {
+ return this.getPromise().then(f1,f2);
+ },
+ 'catch': function(f1) {
+ return this.getPromise().catch(f1);
+ },
+ 'finally': function(f1) {
+ return this.getPromise().finally(f1);
+ }
+ };
+
+ return function(element, options) {
+ if (options.from) {
+ element.css(options.from);
+ options.from = null;
+ }
+
+ var closed, runner = new RAFPromise();
+ return {
+ start: run,
+ end: run
+ };
+
+ function run() {
+ $$rAF(function() {
+ close();
+ if (!closed) {
+ runner.done();
+ }
+ closed = true;
+ });
+ return runner;
+ }
+
+ function close() {
+ if (options.addClass) {
+ element.addClass(options.addClass);
+ options.addClass = null;
+ }
+ if (options.removeClass) {
+ element.removeClass(options.removeClass);
+ options.removeClass = null;
+ }
+ if (options.to) {
+ element.css(options.to);
+ options.to = null;
+ }
+ }
+ };
+ }];
+};
+
+/* global stripHash: true */
+
+/**
+ * ! This is a private undocumented service !
+ *
+ * @name $browser
+ * @requires $log
+ * @description
+ * This object has two goals:
+ *
+ * - hide all the global state in the browser caused by the window object
+ * - abstract away all the browser specific features and inconsistencies
+ *
+ * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser`
+ * service, which can be used for convenient testing of the application without the interaction with
+ * the real browser apis.
+ */
+/**
+ * @param {object} window The global window object.
+ * @param {object} document jQuery wrapped document.
+ * @param {object} $log window.console or an object with the same interface.
+ * @param {object} $sniffer $sniffer service
+ */
+function Browser(window, document, $log, $sniffer) {
+ var self = this,
+ rawDocument = document[0],
+ location = window.location,
+ history = window.history,
+ setTimeout = window.setTimeout,
+ clearTimeout = window.clearTimeout,
+ pendingDeferIds = {};
+
+ self.isMock = false;
+
+ var outstandingRequestCount = 0;
+ var outstandingRequestCallbacks = [];
+
+ // TODO(vojta): remove this temporary api
+ self.$$completeOutstandingRequest = completeOutstandingRequest;
+ self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; };
+
+ /**
+ * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks`
+ * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed.
+ */
+ function completeOutstandingRequest(fn) {
+ try {
+ fn.apply(null, sliceArgs(arguments, 1));
+ } finally {
+ outstandingRequestCount--;
+ if (outstandingRequestCount === 0) {
+ while (outstandingRequestCallbacks.length) {
+ try {
+ outstandingRequestCallbacks.pop()();
+ } catch (e) {
+ $log.error(e);
+ }
+ }
+ }
+ }
+ }
+
+ function getHash(url) {
+ var index = url.indexOf('#');
+ return index === -1 ? '' : url.substr(index);
+ }
+
+ /**
+ * @private
+ * Note: this method is used only by scenario runner
+ * TODO(vojta): prefix this method with $$ ?
+ * @param {function()} callback Function that will be called when no outstanding request
+ */
+ self.notifyWhenNoOutstandingRequests = function(callback) {
+ if (outstandingRequestCount === 0) {
+ callback();
+ } else {
+ outstandingRequestCallbacks.push(callback);
+ }
+ };
+
+ //////////////////////////////////////////////////////////////
+ // URL API
+ //////////////////////////////////////////////////////////////
+
+ var cachedState, lastHistoryState,
+ lastBrowserUrl = location.href,
+ baseElement = document.find('base'),
+ reloadLocation = null;
+
+ cacheState();
+ lastHistoryState = cachedState;
+
+ /**
+ * @name $browser#url
+ *
+ * @description
+ * GETTER:
+ * Without any argument, this method just returns current value of location.href.
+ *
+ * SETTER:
+ * With at least one argument, this method sets url to new value.
+ * If html5 history api supported, pushState/replaceState is used, otherwise
+ * location.href/location.replace is used.
+ * Returns its own instance to allow chaining
+ *
+ * NOTE: this api is intended for use only by the $location service. Please use the
+ * {@link ng.$location $location service} to change url.
+ *
+ * @param {string} url New url (when used as setter)
+ * @param {boolean=} replace Should new url replace current history record?
+ * @param {object=} state object to use with pushState/replaceState
+ */
+ self.url = function(url, replace, state) {
+ // In modern browsers `history.state` is `null` by default; treating it separately
+ // from `undefined` would cause `$browser.url('/foo')` to change `history.state`
+ // to undefined via `pushState`. Instead, let's change `undefined` to `null` here.
+ if (isUndefined(state)) {
+ state = null;
+ }
+
+ // Android Browser BFCache causes location, history reference to become stale.
+ if (location !== window.location) location = window.location;
+ if (history !== window.history) history = window.history;
+
+ // setter
+ if (url) {
+ var sameState = lastHistoryState === state;
+
+ // Don't change anything if previous and current URLs and states match. This also prevents
+ // IE<10 from getting into redirect loop when in LocationHashbangInHtml5Url mode.
+ // See https://github.com/angular/angular.js/commit/ffb2701
+ if (lastBrowserUrl === url && (!$sniffer.history || sameState)) {
+ return self;
+ }
+ var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);
+ lastBrowserUrl = url;
+ lastHistoryState = state;
+ // Don't use history API if only the hash changed
+ // due to a bug in IE10/IE11 which leads
+ // to not firing a `hashchange` nor `popstate` event
+ // in some cases (see #9143).
+ if ($sniffer.history && (!sameBase || !sameState)) {
+ history[replace ? 'replaceState' : 'pushState'](state, '', url);
+ cacheState();
+ // Do the assignment again so that those two variables are referentially identical.
+ lastHistoryState = cachedState;
+ } else {
+ if (!sameBase || reloadLocation) {
+ reloadLocation = url;
+ }
+ if (replace) {
+ location.replace(url);
+ } else if (!sameBase) {
+ location.href = url;
+ } else {
+ location.hash = getHash(url);
+ }
+ }
+ return self;
+ // getter
+ } else {
+ // - reloadLocation is needed as browsers don't allow to read out
+ // the new location.href if a reload happened.
+ // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172
+ return reloadLocation || location.href.replace(/%27/g,"'");
+ }
+ };
+
+ /**
+ * @name $browser#state
+ *
+ * @description
+ * This method is a getter.
+ *
+ * Return history.state or null if history.state is undefined.
+ *
+ * @returns {object} state
+ */
+ self.state = function() {
+ return cachedState;
+ };
+
+ var urlChangeListeners = [],
+ urlChangeInit = false;
+
+ function cacheStateAndFireUrlChange() {
+ cacheState();
+ fireUrlChange();
+ }
+
+ function getCurrentState() {
+ try {
+ return history.state;
+ } catch (e) {
+ // MSIE can reportedly throw when there is no state (UNCONFIRMED).
+ }
+ }
+
+ // This variable should be used *only* inside the cacheState function.
+ var lastCachedState = null;
+ function cacheState() {
+ // This should be the only place in $browser where `history.state` is read.
+ cachedState = getCurrentState();
+ cachedState = isUndefined(cachedState) ? null : cachedState;
+
+ // Prevent callbacks fo fire twice if both hashchange & popstate were fired.
+ if (equals(cachedState, lastCachedState)) {
+ cachedState = lastCachedState;
+ }
+ lastCachedState = cachedState;
+ }
+
+ function fireUrlChange() {
+ if (lastBrowserUrl === self.url() && lastHistoryState === cachedState) {
+ return;
+ }
+
+ lastBrowserUrl = self.url();
+ lastHistoryState = cachedState;
+ forEach(urlChangeListeners, function(listener) {
+ listener(self.url(), cachedState);
+ });
+ }
+
+ /**
+ * @name $browser#onUrlChange
+ *
+ * @description
+ * Register callback function that will be called, when url changes.
+ *
+ * It's only called when the url is changed from outside of angular:
+ * - user types different url into address bar
+ * - user clicks on history (forward/back) button
+ * - user clicks on a link
+ *
+ * It's not called when url is changed by $browser.url() method
+ *
+ * The listener gets called with new url as parameter.
+ *
+ * NOTE: this api is intended for use only by the $location service. Please use the
+ * {@link ng.$location $location service} to monitor url changes in angular apps.
+ *
+ * @param {function(string)} listener Listener function to be called when url changes.
+ * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous.
+ */
+ self.onUrlChange = function(callback) {
+ // TODO(vojta): refactor to use node's syntax for events
+ if (!urlChangeInit) {
+ // We listen on both (hashchange/popstate) when available, as some browsers (e.g. Opera)
+ // don't fire popstate when user change the address bar and don't fire hashchange when url
+ // changed by push/replaceState
+
+ // html5 history api - popstate event
+ if ($sniffer.history) jqLite(window).on('popstate', cacheStateAndFireUrlChange);
+ // hashchange event
+ jqLite(window).on('hashchange', cacheStateAndFireUrlChange);
+
+ urlChangeInit = true;
+ }
+
+ urlChangeListeners.push(callback);
+ return callback;
+ };
+
+ /**
+ * @private
+ * Remove popstate and hashchange handler from window.
+ *
+ * NOTE: this api is intended for use only by $rootScope.
+ */
+ self.$$applicationDestroyed = function() {
+ jqLite(window).off('hashchange popstate', cacheStateAndFireUrlChange);
+ };
+
+ /**
+ * Checks whether the url has changed outside of Angular.
+ * Needs to be exported to be able to check for changes that have been done in sync,
+ * as hashchange/popstate events fire in async.
+ */
+ self.$$checkUrlChange = fireUrlChange;
+
+ //////////////////////////////////////////////////////////////
+ // Misc API
+ //////////////////////////////////////////////////////////////
+
+ /**
+ * @name $browser#baseHref
+ *
+ * @description
+ * Returns current <base href>
+ * (always relative - without domain)
+ *
+ * @returns {string} The current base href
+ */
+ self.baseHref = function() {
+ var href = baseElement.attr('href');
+ return href ? href.replace(/^(https?\:)?\/\/[^\/]*/, '') : '';
+ };
+
+ /**
+ * @name $browser#defer
+ * @param {function()} fn A function, who's execution should be deferred.
+ * @param {number=} [delay=0] of milliseconds to defer the function execution.
+ * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.
+ *
+ * @description
+ * Executes a fn asynchronously via `setTimeout(fn, delay)`.
+ *
+ * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using
+ * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed
+ * via `$browser.defer.flush()`.
+ *
+ */
+ self.defer = function(fn, delay) {
+ var timeoutId;
+ outstandingRequestCount++;
+ timeoutId = setTimeout(function() {
+ delete pendingDeferIds[timeoutId];
+ completeOutstandingRequest(fn);
+ }, delay || 0);
+ pendingDeferIds[timeoutId] = true;
+ return timeoutId;
+ };
+
+
+ /**
+ * @name $browser#defer.cancel
+ *
+ * @description
+ * Cancels a deferred task identified with `deferId`.
+ *
+ * @param {*} deferId Token returned by the `$browser.defer` function.
+ * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully
+ * canceled.
+ */
+ self.defer.cancel = function(deferId) {
+ if (pendingDeferIds[deferId]) {
+ delete pendingDeferIds[deferId];
+ clearTimeout(deferId);
+ completeOutstandingRequest(noop);
+ return true;
+ }
+ return false;
+ };
+
+}
+
+function $BrowserProvider() {
+ this.$get = ['$window', '$log', '$sniffer', '$document',
+ function($window, $log, $sniffer, $document) {
+ return new Browser($window, $document, $log, $sniffer);
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $cacheFactory
+ *
+ * @description
+ * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to
+ * them.
+ *
+ * ```js
+ *
+ * var cache = $cacheFactory('cacheId');
+ * expect($cacheFactory.get('cacheId')).toBe(cache);
+ * expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();
+ *
+ * cache.put("key", "value");
+ * cache.put("another key", "another value");
+ *
+ * // We've specified no options on creation
+ * expect(cache.info()).toEqual({id: 'cacheId', size: 2});
+ *
+ * ```
+ *
+ *
+ * @param {string} cacheId Name or id of the newly created cache.
+ * @param {object=} options Options object that specifies the cache behavior. Properties:
+ *
+ * - `{number=}` `capacity` — turns the cache into LRU cache.
+ *
+ * @returns {object} Newly created cache object with the following set of methods:
+ *
+ * - `{object}` `info()` — Returns id, size, and options of cache.
+ * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns
+ * it.
+ * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss.
+ * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache.
+ * - `{void}` `removeAll()` — Removes all cached values.
+ * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.
+ *
+ * @example
+ <example module="cacheExampleApp">
+ <file name="index.html">
+ <div ng-controller="CacheController">
+ <input ng-model="newCacheKey" placeholder="Key">
+ <input ng-model="newCacheValue" placeholder="Value">
+ <button ng-click="put(newCacheKey, newCacheValue)">Cache</button>
+
+ <p ng-if="keys.length">Cached Values</p>
+ <div ng-repeat="key in keys">
+ <span ng-bind="key"></span>
+ <span>: </span>
+ <b ng-bind="cache.get(key)"></b>
+ </div>
+
+ <p>Cache Info</p>
+ <div ng-repeat="(key, value) in cache.info()">
+ <span ng-bind="key"></span>
+ <span>: </span>
+ <b ng-bind="value"></b>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('cacheExampleApp', []).
+ controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
+ $scope.keys = [];
+ $scope.cache = $cacheFactory('cacheId');
+ $scope.put = function(key, value) {
+ if ($scope.cache.get(key) === undefined) {
+ $scope.keys.push(key);
+ }
+ $scope.cache.put(key, value === undefined ? null : value);
+ };
+ }]);
+ </file>
+ <file name="style.css">
+ p {
+ margin: 10px 0 3px;
+ }
+ </file>
+ </example>
+ */
+function $CacheFactoryProvider() {
+
+ this.$get = function() {
+ var caches = {};
+
+ function cacheFactory(cacheId, options) {
+ if (cacheId in caches) {
+ throw minErr('$cacheFactory')('iid', "CacheId '{0}' is already taken!", cacheId);
+ }
+
+ var size = 0,
+ stats = extend({}, options, {id: cacheId}),
+ data = {},
+ capacity = (options && options.capacity) || Number.MAX_VALUE,
+ lruHash = {},
+ freshEnd = null,
+ staleEnd = null;
+
+ /**
+ * @ngdoc type
+ * @name $cacheFactory.Cache
+ *
+ * @description
+ * A cache object used to store and retrieve data, primarily used by
+ * {@link $http $http} and the {@link ng.directive:script script} directive to cache
+ * templates and other data.
+ *
+ * ```js
+ * angular.module('superCache')
+ * .factory('superCache', ['$cacheFactory', function($cacheFactory) {
+ * return $cacheFactory('super-cache');
+ * }]);
+ * ```
+ *
+ * Example test:
+ *
+ * ```js
+ * it('should behave like a cache', inject(function(superCache) {
+ * superCache.put('key', 'value');
+ * superCache.put('another key', 'another value');
+ *
+ * expect(superCache.info()).toEqual({
+ * id: 'super-cache',
+ * size: 2
+ * });
+ *
+ * superCache.remove('another key');
+ * expect(superCache.get('another key')).toBeUndefined();
+ *
+ * superCache.removeAll();
+ * expect(superCache.info()).toEqual({
+ * id: 'super-cache',
+ * size: 0
+ * });
+ * }));
+ * ```
+ */
+ return caches[cacheId] = {
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#put
+ * @kind function
+ *
+ * @description
+ * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be
+ * retrieved later, and incrementing the size of the cache if the key was not already
+ * present in the cache. If behaving like an LRU cache, it will also remove stale
+ * entries from the set.
+ *
+ * It will not insert undefined values into the cache.
+ *
+ * @param {string} key the key under which the cached data is stored.
+ * @param {*} value the value to store alongside the key. If it is undefined, the key
+ * will not be stored.
+ * @returns {*} the value stored.
+ */
+ put: function(key, value) {
+ if (isUndefined(value)) return;
+ if (capacity < Number.MAX_VALUE) {
+ var lruEntry = lruHash[key] || (lruHash[key] = {key: key});
+
+ refresh(lruEntry);
+ }
+
+ if (!(key in data)) size++;
+ data[key] = value;
+
+ if (size > capacity) {
+ this.remove(staleEnd.key);
+ }
+
+ return value;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#get
+ * @kind function
+ *
+ * @description
+ * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.
+ *
+ * @param {string} key the key of the data to be retrieved
+ * @returns {*} the value stored.
+ */
+ get: function(key) {
+ if (capacity < Number.MAX_VALUE) {
+ var lruEntry = lruHash[key];
+
+ if (!lruEntry) return;
+
+ refresh(lruEntry);
+ }
+
+ return data[key];
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#remove
+ * @kind function
+ *
+ * @description
+ * Removes an entry from the {@link $cacheFactory.Cache Cache} object.
+ *
+ * @param {string} key the key of the entry to be removed
+ */
+ remove: function(key) {
+ if (capacity < Number.MAX_VALUE) {
+ var lruEntry = lruHash[key];
+
+ if (!lruEntry) return;
+
+ if (lruEntry == freshEnd) freshEnd = lruEntry.p;
+ if (lruEntry == staleEnd) staleEnd = lruEntry.n;
+ link(lruEntry.n,lruEntry.p);
+
+ delete lruHash[key];
+ }
+
+ delete data[key];
+ size--;
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#removeAll
+ * @kind function
+ *
+ * @description
+ * Clears the cache object of any entries.
+ */
+ removeAll: function() {
+ data = {};
+ size = 0;
+ lruHash = {};
+ freshEnd = staleEnd = null;
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#destroy
+ * @kind function
+ *
+ * @description
+ * Destroys the {@link $cacheFactory.Cache Cache} object entirely,
+ * removing it from the {@link $cacheFactory $cacheFactory} set.
+ */
+ destroy: function() {
+ data = null;
+ stats = null;
+ lruHash = null;
+ delete caches[cacheId];
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory.Cache#info
+ * @kind function
+ *
+ * @description
+ * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.
+ *
+ * @returns {object} an object with the following properties:
+ * <ul>
+ * <li>**id**: the id of the cache instance</li>
+ * <li>**size**: the number of entries kept in the cache instance</li>
+ * <li>**...**: any additional properties from the options object when creating the
+ * cache.</li>
+ * </ul>
+ */
+ info: function() {
+ return extend({}, stats, {size: size});
+ }
+ };
+
+
+ /**
+ * makes the `entry` the freshEnd of the LRU linked list
+ */
+ function refresh(entry) {
+ if (entry != freshEnd) {
+ if (!staleEnd) {
+ staleEnd = entry;
+ } else if (staleEnd == entry) {
+ staleEnd = entry.n;
+ }
+
+ link(entry.n, entry.p);
+ link(entry, freshEnd);
+ freshEnd = entry;
+ freshEnd.n = null;
+ }
+ }
+
+
+ /**
+ * bidirectionally links two entries of the LRU linked list
+ */
+ function link(nextEntry, prevEntry) {
+ if (nextEntry != prevEntry) {
+ if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify
+ if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify
+ }
+ }
+ }
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory#info
+ *
+ * @description
+ * Get information about all the caches that have been created
+ *
+ * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`
+ */
+ cacheFactory.info = function() {
+ var info = {};
+ forEach(caches, function(cache, cacheId) {
+ info[cacheId] = cache.info();
+ });
+ return info;
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $cacheFactory#get
+ *
+ * @description
+ * Get access to a cache object by the `cacheId` used when it was created.
+ *
+ * @param {string} cacheId Name or id of a cache to access.
+ * @returns {object} Cache object identified by the cacheId or undefined if no such cache.
+ */
+ cacheFactory.get = function(cacheId) {
+ return caches[cacheId];
+ };
+
+
+ return cacheFactory;
+ };
+}
+
+/**
+ * @ngdoc service
+ * @name $templateCache
+ *
+ * @description
+ * The first time a template is used, it is loaded in the template cache for quick retrieval. You
+ * can load templates directly into the cache in a `script` tag, or by consuming the
+ * `$templateCache` service directly.
+ *
+ * Adding via the `script` tag:
+ *
+ * ```html
+ * <script type="text/ng-template" id="templateId.html">
+ * <p>This is the content of the template</p>
+ * </script>
+ * ```
+ *
+ * **Note:** the `script` tag containing the template does not need to be included in the `head` of
+ * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE,
+ * element with ng-app attribute), otherwise the template will be ignored.
+ *
+ * Adding via the `$templateCache` service:
+ *
+ * ```js
+ * var myApp = angular.module('myApp', []);
+ * myApp.run(function($templateCache) {
+ * $templateCache.put('templateId.html', 'This is the content of the template');
+ * });
+ * ```
+ *
+ * To retrieve the template later, simply use it in your HTML:
+ * ```html
+ * <div ng-include=" 'templateId.html' "></div>
+ * ```
+ *
+ * or get it via Javascript:
+ * ```js
+ * $templateCache.get('templateId.html')
+ * ```
+ *
+ * See {@link ng.$cacheFactory $cacheFactory}.
+ *
+ */
+function $TemplateCacheProvider() {
+ this.$get = ['$cacheFactory', function($cacheFactory) {
+ return $cacheFactory('templates');
+ }];
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Any commits to this file should be reviewed with security in mind. *
+ * Changes to this file can potentially create security vulnerabilities. *
+ * An approval from 2 Core members with history of modifying *
+ * this file is required. *
+ * *
+ * Does the change somehow allow for arbitrary javascript to be executed? *
+ * Or allows for someone to change the prototype of built-in objects? *
+ * Or gives undesired access to variables likes document or window? *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!
+ *
+ * DOM-related variables:
+ *
+ * - "node" - DOM Node
+ * - "element" - DOM Element or Node
+ * - "$node" or "$element" - jqLite-wrapped node or element
+ *
+ *
+ * Compiler related stuff:
+ *
+ * - "linkFn" - linking fn of a single directive
+ * - "nodeLinkFn" - function that aggregates all linking fns for a particular node
+ * - "childLinkFn" - function that aggregates all linking fns for child nodes of a particular node
+ * - "compositeLinkFn" - function that aggregates all linking fns for a compilation root (nodeList)
+ */
+
+
+/**
+ * @ngdoc service
+ * @name $compile
+ * @kind function
+ *
+ * @description
+ * Compiles an HTML string or DOM into a template and produces a template function, which
+ * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.
+ *
+ * The compilation is a process of walking the DOM tree and matching DOM elements to
+ * {@link ng.$compileProvider#directive directives}.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** This document is an in-depth reference of all directive options.
+ * For a gentle introduction to directives with examples of common use cases,
+ * see the {@link guide/directive directive guide}.
+ * </div>
+ *
+ * ## Comprehensive Directive API
+ *
+ * There are many different options for a directive.
+ *
+ * The difference resides in the return value of the factory function.
+ * You can either return a "Directive Definition Object" (see below) that defines the directive properties,
+ * or just the `postLink` function (all other properties will have the default values).
+ *
+ * <div class="alert alert-success">
+ * **Best Practice:** It's recommended to use the "directive definition object" form.
+ * </div>
+ *
+ * Here's an example directive declared with a Directive Definition Object:
+ *
+ * ```js
+ * var myModule = angular.module(...);
+ *
+ * myModule.directive('directiveName', function factory(injectables) {
+ * var directiveDefinitionObject = {
+ * priority: 0,
+ * template: '<div></div>', // or // function(tElement, tAttrs) { ... },
+ * // or
+ * // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },
+ * transclude: false,
+ * restrict: 'A',
+ * templateNamespace: 'html',
+ * scope: false,
+ * controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
+ * controllerAs: 'stringIdentifier',
+ * bindToController: false,
+ * require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],
+ * compile: function compile(tElement, tAttrs, transclude) {
+ * return {
+ * pre: function preLink(scope, iElement, iAttrs, controller) { ... },
+ * post: function postLink(scope, iElement, iAttrs, controller) { ... }
+ * }
+ * // or
+ * // return function postLink( ... ) { ... }
+ * },
+ * // or
+ * // link: {
+ * // pre: function preLink(scope, iElement, iAttrs, controller) { ... },
+ * // post: function postLink(scope, iElement, iAttrs, controller) { ... }
+ * // }
+ * // or
+ * // link: function postLink( ... ) { ... }
+ * };
+ * return directiveDefinitionObject;
+ * });
+ * ```
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Any unspecified options will use the default value. You can see the default values below.
+ * </div>
+ *
+ * Therefore the above can be simplified as:
+ *
+ * ```js
+ * var myModule = angular.module(...);
+ *
+ * myModule.directive('directiveName', function factory(injectables) {
+ * var directiveDefinitionObject = {
+ * link: function postLink(scope, iElement, iAttrs) { ... }
+ * };
+ * return directiveDefinitionObject;
+ * // or
+ * // return function postLink(scope, iElement, iAttrs) { ... }
+ * });
+ * ```
+ *
+ *
+ *
+ * ### Directive Definition Object
+ *
+ * The directive definition object provides instructions to the {@link ng.$compile
+ * compiler}. The attributes are:
+ *
+ * #### `multiElement`
+ * When this property is set to true, the HTML compiler will collect DOM nodes between
+ * nodes with the attributes `directive-name-start` and `directive-name-end`, and group them
+ * together as the directive elements. It is recommended that this feature be used on directives
+ * which are not strictly behavioural (such as {@link ngClick}), and which
+ * do not manipulate or replace child nodes (such as {@link ngInclude}).
+ *
+ * #### `priority`
+ * When there are multiple directives defined on a single DOM element, sometimes it
+ * is necessary to specify the order in which the directives are applied. The `priority` is used
+ * to sort the directives before their `compile` functions get called. Priority is defined as a
+ * number. Directives with greater numerical `priority` are compiled first. Pre-link functions
+ * are also run in priority order, but post-link functions are run in reverse order. The order
+ * of directives with the same priority is undefined. The default priority is `0`.
+ *
+ * #### `terminal`
+ * If set to true then the current `priority` will be the last set of directives
+ * which will execute (any directives at the current priority will still execute
+ * as the order of execution on same `priority` is undefined). Note that expressions
+ * and other directives used in the directive's template will also be excluded from execution.
+ *
+ * #### `scope`
+ * **If set to `true`,** then a new scope will be created for this directive. If multiple directives on the
+ * same element request a new scope, only one new scope is created. The new scope rule does not
+ * apply for the root of the template since the root of the template always gets a new scope.
+ *
+ * **If set to `{}` (object hash),** then a new "isolate" scope is created. The 'isolate' scope differs from
+ * normal scope in that it does not prototypically inherit from the parent scope. This is useful
+ * when creating reusable components, which should not accidentally read or modify data in the
+ * parent scope.
+ *
+ * The 'isolate' scope takes an object hash which defines a set of local scope properties
+ * derived from the parent scope. These local properties are useful for aliasing values for
+ * templates. Locals definition is a hash of local scope property to its source:
+ *
+ * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is
+ * always a string since DOM attributes are strings. If no `attr` name is specified then the
+ * attribute name is assumed to be the same as the local name.
+ * Given `<widget my-attr="hello {{name}}">` and widget definition
+ * of `scope: { localName:'@myAttr' }`, then widget scope property `localName` will reflect
+ * the interpolated value of `hello {{name}}`. As the `name` attribute changes so will the
+ * `localName` property on the widget scope. The `name` is read from the parent scope (not
+ * component scope).
+ *
+ * * `=` or `=attr` - set up bi-directional binding between a local scope property and the
+ * parent scope property of name defined via the value of the `attr` attribute. If no `attr`
+ * name is specified then the attribute name is assumed to be the same as the local name.
+ * Given `<widget my-attr="parentModel">` and widget definition of
+ * `scope: { localModel:'=myAttr' }`, then widget scope property `localModel` will reflect the
+ * value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected
+ * in `localModel` and any changes in `localModel` will reflect in `parentModel`. If the parent
+ * scope property doesn't exist, it will throw a NON_ASSIGNABLE_MODEL_EXPRESSION exception. You
+ * can avoid this behavior using `=?` or `=?attr` in order to flag the property as optional. If
+ * you want to shallow watch for changes (i.e. $watchCollection instead of $watch) you can use
+ * `=*` or `=*attr` (`=*?` or `=*?attr` if the property is optional).
+ *
+ * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope.
+ * If no `attr` name is specified then the attribute name is assumed to be the same as the
+ * local name. Given `<widget my-attr="count = count + value">` and widget definition of
+ * `scope: { localFn:'&myAttr' }`, then isolate scope property `localFn` will point to
+ * a function wrapper for the `count = count + value` expression. Often it's desirable to
+ * pass data from the isolated scope via an expression to the parent scope, this can be
+ * done by passing a map of local variable names and values into the expression wrapper fn.
+ * For example, if the expression is `increment(amount)` then we can specify the amount value
+ * by calling the `localFn` as `localFn({amount: 22})`.
+ *
+ *
+ * #### `bindToController`
+ * When an isolate scope is used for a component (see above), and `controllerAs` is used, `bindToController: true` will
+ * allow a component to have its properties bound to the controller, rather than to scope. When the controller
+ * is instantiated, the initial values of the isolate scope bindings are already available.
+ *
+ * #### `controller`
+ * Controller constructor function. The controller is instantiated before the
+ * pre-linking phase and it is shared with other directives (see
+ * `require` attribute). This allows the directives to communicate with each other and augment
+ * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:
+ *
+ * * `$scope` - Current scope associated with the element
+ * * `$element` - Current element
+ * * `$attrs` - Current attributes object for the element
+ * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope:
+ * `function([scope], cloneLinkingFn, futureParentElement)`.
+ * * `scope`: optional argument to override the scope.
+ * * `cloneLinkingFn`: optional argument to create clones of the original transcluded content.
+ * * `futureParentElement`:
+ * * defines the parent to which the `cloneLinkingFn` will add the cloned elements.
+ * * default: `$element.parent()` resp. `$element` for `transclude:'element'` resp. `transclude:true`.
+ * * only needed for transcludes that are allowed to contain non html elements (e.g. SVG elements)
+ * and when the `cloneLinkinFn` is passed,
+ * as those elements need to created and cloned in a special way when they are defined outside their
+ * usual containers (e.g. like `<svg>`).
+ * * See also the `directive.templateNamespace` property.
+ *
+ *
+ * #### `require`
+ * Require another directive and inject its controller as the fourth argument to the linking function. The
+ * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the
+ * injected argument will be an array in corresponding order. If no such directive can be
+ * found, or if the directive does not have a controller, then an error is raised (unless no link function
+ * is specified, in which case error checking is skipped). The name can be prefixed with:
+ *
+ * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.
+ * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.
+ * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.
+ * * `^^` - Locate the required controller by searching the element's parents. Throw an error if not found.
+ * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass
+ * `null` to the `link` fn if not found.
+ * * `?^^` - Attempt to locate the required controller by searching the element's parents, or pass
+ * `null` to the `link` fn if not found.
+ *
+ *
+ * #### `controllerAs`
+ * Identifier name for a reference to the controller in the directive's scope.
+ * This allows the controller to be referenced from the directive template. The directive
+ * needs to define a scope for this configuration to be used. Useful in the case when
+ * directive is used as component.
+ *
+ *
+ * #### `restrict`
+ * String of subset of `EACM` which restricts the directive to a specific directive
+ * declaration style. If omitted, the defaults (elements and attributes) are used.
+ *
+ * * `E` - Element name (default): `<my-directive></my-directive>`
+ * * `A` - Attribute (default): `<div my-directive="exp"></div>`
+ * * `C` - Class: `<div class="my-directive: exp;"></div>`
+ * * `M` - Comment: `<!-- directive: my-directive exp -->`
+ *
+ *
+ * #### `templateNamespace`
+ * String representing the document type used by the markup in the template.
+ * AngularJS needs this information as those elements need to be created and cloned
+ * in a special way when they are defined outside their usual containers like `<svg>` and `<math>`.
+ *
+ * * `html` - All root nodes in the template are HTML. Root nodes may also be
+ * top-level elements such as `<svg>` or `<math>`.
+ * * `svg` - The root nodes in the template are SVG elements (excluding `<math>`).
+ * * `math` - The root nodes in the template are MathML elements (excluding `<svg>`).
+ *
+ * If no `templateNamespace` is specified, then the namespace is considered to be `html`.
+ *
+ * #### `template`
+ * HTML markup that may:
+ * * Replace the contents of the directive's element (default).
+ * * Replace the directive's element itself (if `replace` is true - DEPRECATED).
+ * * Wrap the contents of the directive's element (if `transclude` is true).
+ *
+ * Value may be:
+ *
+ * * A string. For example `<div red-on-hover>{{delete_str}}</div>`.
+ * * A function which takes two arguments `tElement` and `tAttrs` (described in the `compile`
+ * function api below) and returns a string value.
+ *
+ *
+ * #### `templateUrl`
+ * This is similar to `template` but the template is loaded from the specified URL, asynchronously.
+ *
+ * Because template loading is asynchronous the compiler will suspend compilation of directives on that element
+ * for later when the template has been resolved. In the meantime it will continue to compile and link
+ * sibling and parent elements as though this element had not contained any directives.
+ *
+ * The compiler does not suspend the entire compilation to wait for templates to be loaded because this
+ * would result in the whole app "stalling" until all templates are loaded asynchronously - even in the
+ * case when only one deeply nested directive has `templateUrl`.
+ *
+ * Template loading is asynchronous even if the template has been preloaded into the {@link $templateCache}
+ *
+ * You can specify `templateUrl` as a string representing the URL or as a function which takes two
+ * arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns
+ * a string value representing the url. In either case, the template URL is passed through {@link
+ * $sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}.
+ *
+ *
+ * #### `replace` ([*DEPRECATED*!], will be removed in next major release - i.e. v2.0)
+ * specify what the template should replace. Defaults to `false`.
+ *
+ * * `true` - the template will replace the directive's element.
+ * * `false` - the template will replace the contents of the directive's element.
+ *
+ * The replacement process migrates all of the attributes / classes from the old element to the new
+ * one. See the {@link guide/directive#template-expanding-directive
+ * Directives Guide} for an example.
+ *
+ * There are very few scenarios where element replacement is required for the application function,
+ * the main one being reusable custom components that are used within SVG contexts
+ * (because SVG doesn't work with custom elements in the DOM tree).
+ *
+ * #### `transclude`
+ * Extract the contents of the element where the directive appears and make it available to the directive.
+ * The contents are compiled and provided to the directive as a **transclusion function**. See the
+ * {@link $compile#transclusion Transclusion} section below.
+ *
+ * There are two kinds of transclusion depending upon whether you want to transclude just the contents of the
+ * directive's element or the entire element:
+ *
+ * * `true` - transclude the content (i.e. the child nodes) of the directive's element.
+ * * `'element'` - transclude the whole of the directive's element including any directives on this
+ * element that defined at a lower priority than this directive. When used, the `template`
+ * property is ignored.
+ *
+ *
+ * #### `compile`
+ *
+ * ```js
+ * function compile(tElement, tAttrs, transclude) { ... }
+ * ```
+ *
+ * The compile function deals with transforming the template DOM. Since most directives do not do
+ * template transformation, it is not used often. The compile function takes the following arguments:
+ *
+ * * `tElement` - template element - The element where the directive has been declared. It is
+ * safe to do template transformation on the element and child elements only.
+ *
+ * * `tAttrs` - template attributes - Normalized list of attributes declared on this element shared
+ * between all directive compile functions.
+ *
+ * * `transclude` - [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)`
+ *
+ * <div class="alert alert-warning">
+ * **Note:** The template instance and the link instance may be different objects if the template has
+ * been cloned. For this reason it is **not** safe to do anything other than DOM transformations that
+ * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration
+ * should be done in a linking function rather than in a compile function.
+ * </div>
+
+ * <div class="alert alert-warning">
+ * **Note:** The compile function cannot handle directives that recursively use themselves in their
+ * own templates or compile functions. Compiling these directives results in an infinite loop and a
+ * stack overflow errors.
+ *
+ * This can be avoided by manually using $compile in the postLink function to imperatively compile
+ * a directive's template instead of relying on automatic template compilation via `template` or
+ * `templateUrl` declaration or manual compilation inside the compile function.
+ * </div>
+ *
+ * <div class="alert alert-danger">
+ * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it
+ * e.g. does not know about the right outer scope. Please use the transclude function that is passed
+ * to the link function instead.
+ * </div>
+
+ * A compile function can have a return value which can be either a function or an object.
+ *
+ * * returning a (post-link) function - is equivalent to registering the linking function via the
+ * `link` property of the config object when the compile function is empty.
+ *
+ * * returning an object with function(s) registered via `pre` and `post` properties - allows you to
+ * control when a linking function should be called during the linking phase. See info about
+ * pre-linking and post-linking functions below.
+ *
+ *
+ * #### `link`
+ * This property is used only if the `compile` property is not defined.
+ *
+ * ```js
+ * function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }
+ * ```
+ *
+ * The link function is responsible for registering DOM listeners as well as updating the DOM. It is
+ * executed after the template has been cloned. This is where most of the directive logic will be
+ * put.
+ *
+ * * `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the
+ * directive for registering {@link ng.$rootScope.Scope#$watch watches}.
+ *
+ * * `iElement` - instance element - The element where the directive is to be used. It is safe to
+ * manipulate the children of the element only in `postLink` function since the children have
+ * already been linked.
+ *
+ * * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared
+ * between all directive linking functions.
+ *
+ * * `controller` - the directive's required controller instance(s) - Instances are shared
+ * among all directives, which allows the directives to use the controllers as a communication
+ * channel. The exact value depends on the directive's `require` property:
+ * * no controller(s) required: the directive's own controller, or `undefined` if it doesn't have one
+ * * `string`: the controller instance
+ * * `array`: array of controller instances
+ *
+ * If a required controller cannot be found, and it is optional, the instance is `null`,
+ * otherwise the {@link error:$compile:ctreq Missing Required Controller} error is thrown.
+ *
+ * Note that you can also require the directive's own controller - it will be made available like
+ * any other controller.
+ *
+ * * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope.
+ * This is the same as the `$transclude`
+ * parameter of directive controllers, see there for details.
+ * `function([scope], cloneLinkingFn, futureParentElement)`.
+ *
+ * #### Pre-linking function
+ *
+ * Executed before the child elements are linked. Not safe to do DOM transformation since the
+ * compiler linking function will fail to locate the correct elements for linking.
+ *
+ * #### Post-linking function
+ *
+ * Executed after the child elements are linked.
+ *
+ * Note that child elements that contain `templateUrl` directives will not have been compiled
+ * and linked since they are waiting for their template to load asynchronously and their own
+ * compilation and linking has been suspended until that occurs.
+ *
+ * It is safe to do DOM transformation in the post-linking function on elements that are not waiting
+ * for their async templates to be resolved.
+ *
+ *
+ * ### Transclusion
+ *
+ * Transclusion is the process of extracting a collection of DOM elements from one part of the DOM and
+ * copying them to another part of the DOM, while maintaining their connection to the original AngularJS
+ * scope from where they were taken.
+ *
+ * Transclusion is used (often with {@link ngTransclude}) to insert the
+ * original contents of a directive's element into a specified place in the template of the directive.
+ * The benefit of transclusion, over simply moving the DOM elements manually, is that the transcluded
+ * content has access to the properties on the scope from which it was taken, even if the directive
+ * has isolated scope.
+ * See the {@link guide/directive#creating-a-directive-that-wraps-other-elements Directives Guide}.
+ *
+ * This makes it possible for the widget to have private state for its template, while the transcluded
+ * content has access to its originating scope.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** When testing an element transclude directive you must not place the directive at the root of the
+ * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives
+ * Testing Transclusion Directives}.
+ * </div>
+ *
+ * #### Transclusion Functions
+ *
+ * When a directive requests transclusion, the compiler extracts its contents and provides a **transclusion
+ * function** to the directive's `link` function and `controller`. This transclusion function is a special
+ * **linking function** that will return the compiled contents linked to a new transclusion scope.
+ *
+ * <div class="alert alert-info">
+ * If you are just using {@link ngTransclude} then you don't need to worry about this function, since
+ * ngTransclude will deal with it for us.
+ * </div>
+ *
+ * If you want to manually control the insertion and removal of the transcluded content in your directive
+ * then you must use this transclude function. When you call a transclude function it returns a a jqLite/JQuery
+ * object that contains the compiled DOM, which is linked to the correct transclusion scope.
+ *
+ * When you call a transclusion function you can pass in a **clone attach function**. This function accepts
+ * two parameters, `function(clone, scope) { ... }`, where the `clone` is a fresh compiled copy of your transcluded
+ * content and the `scope` is the newly created transclusion scope, to which the clone is bound.
+ *
+ * <div class="alert alert-info">
+ * **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a translude function
+ * since you then get a fresh clone of the original DOM and also have access to the new transclusion scope.
+ * </div>
+ *
+ * It is normal practice to attach your transcluded content (`clone`) to the DOM inside your **clone
+ * attach function**:
+ *
+ * ```js
+ * var transcludedContent, transclusionScope;
+ *
+ * $transclude(function(clone, scope) {
+ * element.append(clone);
+ * transcludedContent = clone;
+ * transclusionScope = scope;
+ * });
+ * ```
+ *
+ * Later, if you want to remove the transcluded content from your DOM then you should also destroy the
+ * associated transclusion scope:
+ *
+ * ```js
+ * transcludedContent.remove();
+ * transclusionScope.$destroy();
+ * ```
+ *
+ * <div class="alert alert-info">
+ * **Best Practice**: if you intend to add and remove transcluded content manually in your directive
+ * (by calling the transclude function to get the DOM and calling `element.remove()` to remove it),
+ * then you are also responsible for calling `$destroy` on the transclusion scope.
+ * </div>
+ *
+ * The built-in DOM manipulation directives, such as {@link ngIf}, {@link ngSwitch} and {@link ngRepeat}
+ * automatically destroy their transluded clones as necessary so you do not need to worry about this if
+ * you are simply using {@link ngTransclude} to inject the transclusion into your directive.
+ *
+ *
+ * #### Transclusion Scopes
+ *
+ * When you call a transclude function it returns a DOM fragment that is pre-bound to a **transclusion
+ * scope**. This scope is special, in that it is a child of the directive's scope (and so gets destroyed
+ * when the directive's scope gets destroyed) but it inherits the properties of the scope from which it
+ * was taken.
+ *
+ * For example consider a directive that uses transclusion and isolated scope. The DOM hierarchy might look
+ * like this:
+ *
+ * ```html
+ * <div ng-app>
+ * <div isolate>
+ * <div transclusion>
+ * </div>
+ * </div>
+ * </div>
+ * ```
+ *
+ * The `$parent` scope hierarchy will look like this:
+ *
+ * ```
+ * - $rootScope
+ * - isolate
+ * - transclusion
+ * ```
+ *
+ * but the scopes will inherit prototypically from different scopes to their `$parent`.
+ *
+ * ```
+ * - $rootScope
+ * - transclusion
+ * - isolate
+ * ```
+ *
+ *
+ * ### Attributes
+ *
+ * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the
+ * `link()` or `compile()` functions. It has a variety of uses.
+ *
+ * accessing *Normalized attribute names:*
+ * Directives like 'ngBind' can be expressed in many ways: 'ng:bind', `data-ng-bind`, or 'x-ng-bind'.
+ * the attributes object allows for normalized access to
+ * the attributes.
+ *
+ * * *Directive inter-communication:* All directives share the same instance of the attributes
+ * object which allows the directives to use the attributes object as inter directive
+ * communication.
+ *
+ * * *Supports interpolation:* Interpolation attributes are assigned to the attribute object
+ * allowing other directives to read the interpolated value.
+ *
+ * * *Observing interpolated attributes:* Use `$observe` to observe the value changes of attributes
+ * that contain interpolation (e.g. `src="{{bar}}"`). Not only is this very efficient but it's also
+ * the only way to easily get the actual value because during the linking phase the interpolation
+ * hasn't been evaluated yet and so the value is at this time set to `undefined`.
+ *
+ * ```js
+ * function linkingFn(scope, elm, attrs, ctrl) {
+ * // get the attribute value
+ * console.log(attrs.ngModel);
+ *
+ * // change the attribute
+ * attrs.$set('ngModel', 'new value');
+ *
+ * // observe changes to interpolated attribute
+ * attrs.$observe('ngModel', function(value) {
+ * console.log('ngModel has changed value to ' + value);
+ * });
+ * }
+ * ```
+ *
+ * ## Example
+ *
+ * <div class="alert alert-warning">
+ * **Note**: Typically directives are registered with `module.directive`. The example below is
+ * to illustrate how `$compile` works.
+ * </div>
+ *
+ <example module="compileExample">
+ <file name="index.html">
+ <script>
+ angular.module('compileExample', [], function($compileProvider) {
+ // configure new 'compile' directive by passing a directive
+ // factory function. The factory function injects the '$compile'
+ $compileProvider.directive('compile', function($compile) {
+ // directive factory creates a link function
+ return function(scope, element, attrs) {
+ scope.$watch(
+ function(scope) {
+ // watch the 'compile' expression for changes
+ return scope.$eval(attrs.compile);
+ },
+ function(value) {
+ // when the 'compile' expression changes
+ // assign it into the current DOM
+ element.html(value);
+
+ // compile the new DOM and link it to the current
+ // scope.
+ // NOTE: we only compile .childNodes so that
+ // we don't get into infinite loop compiling ourselves
+ $compile(element.contents())(scope);
+ }
+ );
+ };
+ });
+ })
+ .controller('GreeterController', ['$scope', function($scope) {
+ $scope.name = 'Angular';
+ $scope.html = 'Hello {{name}}';
+ }]);
+ </script>
+ <div ng-controller="GreeterController">
+ <input ng-model="name"> <br/>
+ <textarea ng-model="html"></textarea> <br/>
+ <div compile="html"></div>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should auto compile', function() {
+ var textarea = $('textarea');
+ var output = $('div[compile]');
+ // The initial state reads 'Hello Angular'.
+ expect(output.getText()).toBe('Hello Angular');
+ textarea.clear();
+ textarea.sendKeys('{{name}}!');
+ expect(output.getText()).toBe('Angular!');
+ });
+ </file>
+ </example>
+
+ *
+ *
+ * @param {string|DOMElement} element Element or HTML string to compile into a template function.
+ * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED.
+ *
+ * <div class="alert alert-danger">
+ * **Note:** Passing a `transclude` function to the $compile function is deprecated, as it
+ * e.g. will not use the right outer scope. Please pass the transclude function as a
+ * `parentBoundTranscludeFn` to the link function instead.
+ * </div>
+ *
+ * @param {number} maxPriority only apply directives lower than given priority (Only effects the
+ * root element(s), not their children)
+ * @returns {function(scope, cloneAttachFn=, options=)} a link function which is used to bind template
+ * (a DOM element/tree) to a scope. Where:
+ *
+ * * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.
+ * * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the
+ * `template` and call the `cloneAttachFn` function allowing the caller to attach the
+ * cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is
+ * called as: <br/> `cloneAttachFn(clonedElement, scope)` where:
+ *
+ * * `clonedElement` - is a clone of the original `element` passed into the compiler.
+ * * `scope` - is the current scope with which the linking function is working with.
+ *
+ * * `options` - An optional object hash with linking options. If `options` is provided, then the following
+ * keys may be used to control linking behavior:
+ *
+ * * `parentBoundTranscludeFn` - the transclude function made available to
+ * directives; if given, it will be passed through to the link functions of
+ * directives found in `element` during compilation.
+ * * `transcludeControllers` - an object hash with keys that map controller names
+ * to controller instances; if given, it will make the controllers
+ * available to directives.
+ * * `futureParentElement` - defines the parent to which the `cloneAttachFn` will add
+ * the cloned elements; only needed for transcludes that are allowed to contain non html
+ * elements (e.g. SVG elements). See also the directive.controller property.
+ *
+ * Calling the linking function returns the element of the template. It is either the original
+ * element passed in, or the clone of the element if the `cloneAttachFn` is provided.
+ *
+ * After linking the view is not updated until after a call to $digest which typically is done by
+ * Angular automatically.
+ *
+ * If you need access to the bound view, there are two ways to do it:
+ *
+ * - If you are not asking the linking function to clone the template, create the DOM element(s)
+ * before you send them to the compiler and keep this reference around.
+ * ```js
+ * var element = $compile('<p>{{total}}</p>')(scope);
+ * ```
+ *
+ * - if on the other hand, you need the element to be cloned, the view reference from the original
+ * example would not point to the clone, but rather to the original template that was cloned. In
+ * this case, you can access the clone via the cloneAttachFn:
+ * ```js
+ * var templateElement = angular.element('<p>{{total}}</p>'),
+ * scope = ....;
+ *
+ * var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {
+ * //attach the clone to DOM document at the right place
+ * });
+ *
+ * //now we have reference to the cloned DOM via `clonedElement`
+ * ```
+ *
+ *
+ * For information on how the compiler works, see the
+ * {@link guide/compiler Angular HTML Compiler} section of the Developer Guide.
+ */
+
+var $compileMinErr = minErr('$compile');
+
+/**
+ * @ngdoc provider
+ * @name $compileProvider
+ *
+ * @description
+ */
+$CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider'];
+function $CompileProvider($provide, $$sanitizeUriProvider) {
+ var hasDirectives = {},
+ Suffix = 'Directive',
+ COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\w\-]+)\s+(.*)$/,
+ CLASS_DIRECTIVE_REGEXP = /(([\w\-]+)(?:\:([^;]+))?;?)/,
+ ALL_OR_NOTHING_ATTRS = makeMap('ngSrc,ngSrcset,src,srcset'),
+ REQUIRE_PREFIX_REGEXP = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/;
+
+ // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes
+ // The assumption is that future DOM event attribute names will begin with
+ // 'on' and be composed of only English letters.
+ var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;
+
+ function parseIsolateBindings(scope, directiveName, isController) {
+ var LOCAL_REGEXP = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/;
+
+ var bindings = {};
+
+ forEach(scope, function(definition, scopeName) {
+ var match = definition.match(LOCAL_REGEXP);
+
+ if (!match) {
+ throw $compileMinErr('iscp',
+ "Invalid {3} for directive '{0}'." +
+ " Definition: {... {1}: '{2}' ...}",
+ directiveName, scopeName, definition,
+ (isController ? "controller bindings definition" :
+ "isolate scope definition"));
+ }
+
+ bindings[scopeName] = {
+ mode: match[1][0],
+ collection: match[2] === '*',
+ optional: match[3] === '?',
+ attrName: match[4] || scopeName
+ };
+ });
+
+ return bindings;
+ }
+
+ function parseDirectiveBindings(directive, directiveName) {
+ var bindings = {
+ isolateScope: null,
+ bindToController: null
+ };
+ if (isObject(directive.scope)) {
+ if (directive.bindToController === true) {
+ bindings.bindToController = parseIsolateBindings(directive.scope,
+ directiveName, true);
+ bindings.isolateScope = {};
+ } else {
+ bindings.isolateScope = parseIsolateBindings(directive.scope,
+ directiveName, false);
+ }
+ }
+ if (isObject(directive.bindToController)) {
+ bindings.bindToController =
+ parseIsolateBindings(directive.bindToController, directiveName, true);
+ }
+ if (isObject(bindings.bindToController)) {
+ var controller = directive.controller;
+ var controllerAs = directive.controllerAs;
+ if (!controller) {
+ // There is no controller, there may or may not be a controllerAs property
+ throw $compileMinErr('noctrl',
+ "Cannot bind to controller without directive '{0}'s controller.",
+ directiveName);
+ } else if (!identifierForController(controller, controllerAs)) {
+ // There is a controller, but no identifier or controllerAs property
+ throw $compileMinErr('noident',
+ "Cannot bind to controller without identifier for directive '{0}'.",
+ directiveName);
+ }
+ }
+ return bindings;
+ }
+
+ function assertValidDirectiveName(name) {
+ var letter = name.charAt(0);
+ if (!letter || letter !== lowercase(letter)) {
+ throw $compileMinErr('baddir', "Directive name '{0}' is invalid. The first character must be a lowercase letter", name);
+ }
+ if (name !== name.trim()) {
+ throw $compileMinErr('baddir',
+ "Directive name '{0}' is invalid. The name should not contain leading or trailing whitespaces",
+ name);
+ }
+ }
+
+ /**
+ * @ngdoc method
+ * @name $compileProvider#directive
+ * @kind function
+ *
+ * @description
+ * Register a new directive with the compiler.
+ *
+ * @param {string|Object} name Name of the directive in camel-case (i.e. <code>ngBind</code> which
+ * will match as <code>ng-bind</code>), or an object map of directives where the keys are the
+ * names and the values are the factories.
+ * @param {Function|Array} directiveFactory An injectable directive factory function. See
+ * {@link guide/directive} for more info.
+ * @returns {ng.$compileProvider} Self for chaining.
+ */
+ this.directive = function registerDirective(name, directiveFactory) {
+ assertNotHasOwnProperty(name, 'directive');
+ if (isString(name)) {
+ assertValidDirectiveName(name);
+ assertArg(directiveFactory, 'directiveFactory');
+ if (!hasDirectives.hasOwnProperty(name)) {
+ hasDirectives[name] = [];
+ $provide.factory(name + Suffix, ['$injector', '$exceptionHandler',
+ function($injector, $exceptionHandler) {
+ var directives = [];
+ forEach(hasDirectives[name], function(directiveFactory, index) {
+ try {
+ var directive = $injector.invoke(directiveFactory);
+ if (isFunction(directive)) {
+ directive = { compile: valueFn(directive) };
+ } else if (!directive.compile && directive.link) {
+ directive.compile = valueFn(directive.link);
+ }
+ directive.priority = directive.priority || 0;
+ directive.index = index;
+ directive.name = directive.name || name;
+ directive.require = directive.require || (directive.controller && directive.name);
+ directive.restrict = directive.restrict || 'EA';
+ var bindings = directive.$$bindings =
+ parseDirectiveBindings(directive, directive.name);
+ if (isObject(bindings.isolateScope)) {
+ directive.$$isolateBindings = bindings.isolateScope;
+ }
+ directive.$$moduleName = directiveFactory.$$moduleName;
+ directives.push(directive);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ });
+ return directives;
+ }]);
+ }
+ hasDirectives[name].push(directiveFactory);
+ } else {
+ forEach(name, reverseParams(registerDirective));
+ }
+ return this;
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $compileProvider#aHrefSanitizationWhitelist
+ * @kind function
+ *
+ * @description
+ * Retrieves or overrides the default regular expression that is used for whitelisting of safe
+ * urls during a[href] sanitization.
+ *
+ * The sanitization is a security measure aimed at preventing XSS attacks via html links.
+ *
+ * Any url about to be assigned to a[href] via data-binding is first normalized and turned into
+ * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`
+ * regular expression. If a match is found, the original url is written into the dom. Otherwise,
+ * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
+ *
+ * @param {RegExp=} regexp New regexp to whitelist urls with.
+ * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
+ * chaining otherwise.
+ */
+ this.aHrefSanitizationWhitelist = function(regexp) {
+ if (isDefined(regexp)) {
+ $$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp);
+ return this;
+ } else {
+ return $$sanitizeUriProvider.aHrefSanitizationWhitelist();
+ }
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $compileProvider#imgSrcSanitizationWhitelist
+ * @kind function
+ *
+ * @description
+ * Retrieves or overrides the default regular expression that is used for whitelisting of safe
+ * urls during img[src] sanitization.
+ *
+ * The sanitization is a security measure aimed at prevent XSS attacks via html links.
+ *
+ * Any url about to be assigned to img[src] via data-binding is first normalized and turned into
+ * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`
+ * regular expression. If a match is found, the original url is written into the dom. Otherwise,
+ * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
+ *
+ * @param {RegExp=} regexp New regexp to whitelist urls with.
+ * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
+ * chaining otherwise.
+ */
+ this.imgSrcSanitizationWhitelist = function(regexp) {
+ if (isDefined(regexp)) {
+ $$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp);
+ return this;
+ } else {
+ return $$sanitizeUriProvider.imgSrcSanitizationWhitelist();
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $compileProvider#debugInfoEnabled
+ *
+ * @param {boolean=} enabled update the debugInfoEnabled state if provided, otherwise just return the
+ * current debugInfoEnabled state
+ * @returns {*} current value if used as getter or itself (chaining) if used as setter
+ *
+ * @kind function
+ *
+ * @description
+ * Call this method to enable/disable various debug runtime information in the compiler such as adding
+ * binding information and a reference to the current scope on to DOM elements.
+ * If enabled, the compiler will add the following to DOM elements that have been bound to the scope
+ * * `ng-binding` CSS class
+ * * `$binding` data property containing an array of the binding expressions
+ *
+ * You may want to disable this in production for a significant performance boost. See
+ * {@link guide/production#disabling-debug-data Disabling Debug Data} for more.
+ *
+ * The default value is true.
+ */
+ var debugInfoEnabled = true;
+ this.debugInfoEnabled = function(enabled) {
+ if (isDefined(enabled)) {
+ debugInfoEnabled = enabled;
+ return this;
+ }
+ return debugInfoEnabled;
+ };
+
+ this.$get = [
+ '$injector', '$interpolate', '$exceptionHandler', '$templateRequest', '$parse',
+ '$controller', '$rootScope', '$document', '$sce', '$animate', '$$sanitizeUri',
+ function($injector, $interpolate, $exceptionHandler, $templateRequest, $parse,
+ $controller, $rootScope, $document, $sce, $animate, $$sanitizeUri) {
+
+ var Attributes = function(element, attributesToCopy) {
+ if (attributesToCopy) {
+ var keys = Object.keys(attributesToCopy);
+ var i, l, key;
+
+ for (i = 0, l = keys.length; i < l; i++) {
+ key = keys[i];
+ this[key] = attributesToCopy[key];
+ }
+ } else {
+ this.$attr = {};
+ }
+
+ this.$$element = element;
+ };
+
+ Attributes.prototype = {
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$normalize
+ * @kind function
+ *
+ * @description
+ * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or
+ * `data-`) to its normalized, camelCase form.
+ *
+ * Also there is special case for Moz prefix starting with upper case letter.
+ *
+ * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}
+ *
+ * @param {string} name Name to normalize
+ */
+ $normalize: directiveNormalize,
+
+
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$addClass
+ * @kind function
+ *
+ * @description
+ * Adds the CSS class value specified by the classVal parameter to the element. If animations
+ * are enabled then an animation will be triggered for the class addition.
+ *
+ * @param {string} classVal The className value that will be added to the element
+ */
+ $addClass: function(classVal) {
+ if (classVal && classVal.length > 0) {
+ $animate.addClass(this.$$element, classVal);
+ }
+ },
+
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$removeClass
+ * @kind function
+ *
+ * @description
+ * Removes the CSS class value specified by the classVal parameter from the element. If
+ * animations are enabled then an animation will be triggered for the class removal.
+ *
+ * @param {string} classVal The className value that will be removed from the element
+ */
+ $removeClass: function(classVal) {
+ if (classVal && classVal.length > 0) {
+ $animate.removeClass(this.$$element, classVal);
+ }
+ },
+
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$updateClass
+ * @kind function
+ *
+ * @description
+ * Adds and removes the appropriate CSS class values to the element based on the difference
+ * between the new and old CSS class values (specified as newClasses and oldClasses).
+ *
+ * @param {string} newClasses The current CSS className value
+ * @param {string} oldClasses The former CSS className value
+ */
+ $updateClass: function(newClasses, oldClasses) {
+ var toAdd = tokenDifference(newClasses, oldClasses);
+ if (toAdd && toAdd.length) {
+ $animate.addClass(this.$$element, toAdd);
+ }
+
+ var toRemove = tokenDifference(oldClasses, newClasses);
+ if (toRemove && toRemove.length) {
+ $animate.removeClass(this.$$element, toRemove);
+ }
+ },
+
+ /**
+ * Set a normalized attribute on the element in a way such that all directives
+ * can share the attribute. This function properly handles boolean attributes.
+ * @param {string} key Normalized key. (ie ngAttribute)
+ * @param {string|boolean} value The value to set. If `null` attribute will be deleted.
+ * @param {boolean=} writeAttr If false, does not write the value to DOM element attribute.
+ * Defaults to true.
+ * @param {string=} attrName Optional none normalized name. Defaults to key.
+ */
+ $set: function(key, value, writeAttr, attrName) {
+ // TODO: decide whether or not to throw an error if "class"
+ //is set through this function since it may cause $updateClass to
+ //become unstable.
+
+ var node = this.$$element[0],
+ booleanKey = getBooleanAttrName(node, key),
+ aliasedKey = getAliasedAttrName(node, key),
+ observer = key,
+ nodeName;
+
+ if (booleanKey) {
+ this.$$element.prop(key, value);
+ attrName = booleanKey;
+ } else if (aliasedKey) {
+ this[aliasedKey] = value;
+ observer = aliasedKey;
+ }
+
+ this[key] = value;
+
+ // translate normalized key to actual key
+ if (attrName) {
+ this.$attr[key] = attrName;
+ } else {
+ attrName = this.$attr[key];
+ if (!attrName) {
+ this.$attr[key] = attrName = snake_case(key, '-');
+ }
+ }
+
+ nodeName = nodeName_(this.$$element);
+
+ if ((nodeName === 'a' && key === 'href') ||
+ (nodeName === 'img' && key === 'src')) {
+ // sanitize a[href] and img[src] values
+ this[key] = value = $$sanitizeUri(value, key === 'src');
+ } else if (nodeName === 'img' && key === 'srcset') {
+ // sanitize img[srcset] values
+ var result = "";
+
+ // first check if there are spaces because it's not the same pattern
+ var trimmedSrcset = trim(value);
+ // ( 999x ,| 999w ,| ,|, )
+ var srcPattern = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/;
+ var pattern = /\s/.test(trimmedSrcset) ? srcPattern : /(,)/;
+
+ // split srcset into tuple of uri and descriptor except for the last item
+ var rawUris = trimmedSrcset.split(pattern);
+
+ // for each tuples
+ var nbrUrisWith2parts = Math.floor(rawUris.length / 2);
+ for (var i = 0; i < nbrUrisWith2parts; i++) {
+ var innerIdx = i * 2;
+ // sanitize the uri
+ result += $$sanitizeUri(trim(rawUris[innerIdx]), true);
+ // add the descriptor
+ result += (" " + trim(rawUris[innerIdx + 1]));
+ }
+
+ // split the last item into uri and descriptor
+ var lastTuple = trim(rawUris[i * 2]).split(/\s/);
+
+ // sanitize the last uri
+ result += $$sanitizeUri(trim(lastTuple[0]), true);
+
+ // and add the last descriptor if any
+ if (lastTuple.length === 2) {
+ result += (" " + trim(lastTuple[1]));
+ }
+ this[key] = value = result;
+ }
+
+ if (writeAttr !== false) {
+ if (value === null || value === undefined) {
+ this.$$element.removeAttr(attrName);
+ } else {
+ this.$$element.attr(attrName, value);
+ }
+ }
+
+ // fire observers
+ var $$observers = this.$$observers;
+ $$observers && forEach($$observers[observer], function(fn) {
+ try {
+ fn(value);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ });
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$observe
+ * @kind function
+ *
+ * @description
+ * Observes an interpolated attribute.
+ *
+ * The observer function will be invoked once during the next `$digest` following
+ * compilation. The observer is then invoked whenever the interpolated value
+ * changes.
+ *
+ * @param {string} key Normalized key. (ie ngAttribute) .
+ * @param {function(interpolatedValue)} fn Function that will be called whenever
+ the interpolated value of the attribute changes.
+ * See the {@link guide/directive#text-and-attribute-bindings Directives} guide for more info.
+ * @returns {function()} Returns a deregistration function for this observer.
+ */
+ $observe: function(key, fn) {
+ var attrs = this,
+ $$observers = (attrs.$$observers || (attrs.$$observers = createMap())),
+ listeners = ($$observers[key] || ($$observers[key] = []));
+
+ listeners.push(fn);
+ $rootScope.$evalAsync(function() {
+ if (!listeners.$$inter && attrs.hasOwnProperty(key) && !isUndefined(attrs[key])) {
+ // no one registered attribute interpolation function, so lets call it manually
+ fn(attrs[key]);
+ }
+ });
+
+ return function() {
+ arrayRemove(listeners, fn);
+ };
+ }
+ };
+
+
+ function safeAddClass($element, className) {
+ try {
+ $element.addClass(className);
+ } catch (e) {
+ // ignore, since it means that we are trying to set class on
+ // SVG element, where class name is read-only.
+ }
+ }
+
+
+ var startSymbol = $interpolate.startSymbol(),
+ endSymbol = $interpolate.endSymbol(),
+ denormalizeTemplate = (startSymbol == '{{' || endSymbol == '}}')
+ ? identity
+ : function denormalizeTemplate(template) {
+ return template.replace(/\{\{/g, startSymbol).replace(/}}/g, endSymbol);
+ },
+ NG_ATTR_BINDING = /^ngAttr[A-Z]/;
+
+ compile.$$addBindingInfo = debugInfoEnabled ? function $$addBindingInfo($element, binding) {
+ var bindings = $element.data('$binding') || [];
+
+ if (isArray(binding)) {
+ bindings = bindings.concat(binding);
+ } else {
+ bindings.push(binding);
+ }
+
+ $element.data('$binding', bindings);
+ } : noop;
+
+ compile.$$addBindingClass = debugInfoEnabled ? function $$addBindingClass($element) {
+ safeAddClass($element, 'ng-binding');
+ } : noop;
+
+ compile.$$addScopeInfo = debugInfoEnabled ? function $$addScopeInfo($element, scope, isolated, noTemplate) {
+ var dataName = isolated ? (noTemplate ? '$isolateScopeNoTemplate' : '$isolateScope') : '$scope';
+ $element.data(dataName, scope);
+ } : noop;
+
+ compile.$$addScopeClass = debugInfoEnabled ? function $$addScopeClass($element, isolated) {
+ safeAddClass($element, isolated ? 'ng-isolate-scope' : 'ng-scope');
+ } : noop;
+
+ return compile;
+
+ //================================
+
+ function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective,
+ previousCompileContext) {
+ if (!($compileNodes instanceof jqLite)) {
+ // jquery always rewraps, whereas we need to preserve the original selector so that we can
+ // modify it.
+ $compileNodes = jqLite($compileNodes);
+ }
+ // We can not compile top level text elements since text nodes can be merged and we will
+ // not be able to attach scope data to them, so we will wrap them in <span>
+ forEach($compileNodes, function(node, index) {
+ if (node.nodeType == NODE_TYPE_TEXT && node.nodeValue.match(/\S+/) /* non-empty */ ) {
+ $compileNodes[index] = jqLite(node).wrap('<span></span>').parent()[0];
+ }
+ });
+ var compositeLinkFn =
+ compileNodes($compileNodes, transcludeFn, $compileNodes,
+ maxPriority, ignoreDirective, previousCompileContext);
+ compile.$$addScopeClass($compileNodes);
+ var namespace = null;
+ return function publicLinkFn(scope, cloneConnectFn, options) {
+ assertArg(scope, 'scope');
+
+ options = options || {};
+ var parentBoundTranscludeFn = options.parentBoundTranscludeFn,
+ transcludeControllers = options.transcludeControllers,
+ futureParentElement = options.futureParentElement;
+
+ // When `parentBoundTranscludeFn` is passed, it is a
+ // `controllersBoundTransclude` function (it was previously passed
+ // as `transclude` to directive.link) so we must unwrap it to get
+ // its `boundTranscludeFn`
+ if (parentBoundTranscludeFn && parentBoundTranscludeFn.$$boundTransclude) {
+ parentBoundTranscludeFn = parentBoundTranscludeFn.$$boundTransclude;
+ }
+
+ if (!namespace) {
+ namespace = detectNamespaceForChildElements(futureParentElement);
+ }
+ var $linkNode;
+ if (namespace !== 'html') {
+ // When using a directive with replace:true and templateUrl the $compileNodes
+ // (or a child element inside of them)
+ // might change, so we need to recreate the namespace adapted compileNodes
+ // for call to the link function.
+ // Note: This will already clone the nodes...
+ $linkNode = jqLite(
+ wrapTemplate(namespace, jqLite('<div>').append($compileNodes).html())
+ );
+ } else if (cloneConnectFn) {
+ // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart
+ // and sometimes changes the structure of the DOM.
+ $linkNode = JQLitePrototype.clone.call($compileNodes);
+ } else {
+ $linkNode = $compileNodes;
+ }
+
+ if (transcludeControllers) {
+ for (var controllerName in transcludeControllers) {
+ $linkNode.data('$' + controllerName + 'Controller', transcludeControllers[controllerName].instance);
+ }
+ }
+
+ compile.$$addScopeInfo($linkNode, scope);
+
+ if (cloneConnectFn) cloneConnectFn($linkNode, scope);
+ if (compositeLinkFn) compositeLinkFn(scope, $linkNode, $linkNode, parentBoundTranscludeFn);
+ return $linkNode;
+ };
+ }
+
+ function detectNamespaceForChildElements(parentElement) {
+ // TODO: Make this detect MathML as well...
+ var node = parentElement && parentElement[0];
+ if (!node) {
+ return 'html';
+ } else {
+ return nodeName_(node) !== 'foreignobject' && node.toString().match(/SVG/) ? 'svg' : 'html';
+ }
+ }
+
+ /**
+ * Compile function matches each node in nodeList against the directives. Once all directives
+ * for a particular node are collected their compile functions are executed. The compile
+ * functions return values - the linking functions - are combined into a composite linking
+ * function, which is the a linking function for the node.
+ *
+ * @param {NodeList} nodeList an array of nodes or NodeList to compile
+ * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the
+ * scope argument is auto-generated to the new child of the transcluded parent scope.
+ * @param {DOMElement=} $rootElement If the nodeList is the root of the compilation tree then
+ * the rootElement must be set the jqLite collection of the compile root. This is
+ * needed so that the jqLite collection items can be replaced with widgets.
+ * @param {number=} maxPriority Max directive priority.
+ * @returns {Function} A composite linking function of all of the matched directives or null.
+ */
+ function compileNodes(nodeList, transcludeFn, $rootElement, maxPriority, ignoreDirective,
+ previousCompileContext) {
+ var linkFns = [],
+ attrs, directives, nodeLinkFn, childNodes, childLinkFn, linkFnFound, nodeLinkFnFound;
+
+ for (var i = 0; i < nodeList.length; i++) {
+ attrs = new Attributes();
+
+ // we must always refer to nodeList[i] since the nodes can be replaced underneath us.
+ directives = collectDirectives(nodeList[i], [], attrs, i === 0 ? maxPriority : undefined,
+ ignoreDirective);
+
+ nodeLinkFn = (directives.length)
+ ? applyDirectivesToNode(directives, nodeList[i], attrs, transcludeFn, $rootElement,
+ null, [], [], previousCompileContext)
+ : null;
+
+ if (nodeLinkFn && nodeLinkFn.scope) {
+ compile.$$addScopeClass(attrs.$$element);
+ }
+
+ childLinkFn = (nodeLinkFn && nodeLinkFn.terminal ||
+ !(childNodes = nodeList[i].childNodes) ||
+ !childNodes.length)
+ ? null
+ : compileNodes(childNodes,
+ nodeLinkFn ? (
+ (nodeLinkFn.transcludeOnThisElement || !nodeLinkFn.templateOnThisElement)
+ && nodeLinkFn.transclude) : transcludeFn);
+
+ if (nodeLinkFn || childLinkFn) {
+ linkFns.push(i, nodeLinkFn, childLinkFn);
+ linkFnFound = true;
+ nodeLinkFnFound = nodeLinkFnFound || nodeLinkFn;
+ }
+
+ //use the previous context only for the first element in the virtual group
+ previousCompileContext = null;
+ }
+
+ // return a linking function if we have found anything, null otherwise
+ return linkFnFound ? compositeLinkFn : null;
+
+ function compositeLinkFn(scope, nodeList, $rootElement, parentBoundTranscludeFn) {
+ var nodeLinkFn, childLinkFn, node, childScope, i, ii, idx, childBoundTranscludeFn;
+ var stableNodeList;
+
+
+ if (nodeLinkFnFound) {
+ // copy nodeList so that if a nodeLinkFn removes or adds an element at this DOM level our
+ // offsets don't get screwed up
+ var nodeListLength = nodeList.length;
+ stableNodeList = new Array(nodeListLength);
+
+ // create a sparse array by only copying the elements which have a linkFn
+ for (i = 0; i < linkFns.length; i+=3) {
+ idx = linkFns[i];
+ stableNodeList[idx] = nodeList[idx];
+ }
+ } else {
+ stableNodeList = nodeList;
+ }
+
+ for (i = 0, ii = linkFns.length; i < ii;) {
+ node = stableNodeList[linkFns[i++]];
+ nodeLinkFn = linkFns[i++];
+ childLinkFn = linkFns[i++];
+
+ if (nodeLinkFn) {
+ if (nodeLinkFn.scope) {
+ childScope = scope.$new();
+ compile.$$addScopeInfo(jqLite(node), childScope);
+ var destroyBindings = nodeLinkFn.$$destroyBindings;
+ if (destroyBindings) {
+ nodeLinkFn.$$destroyBindings = null;
+ childScope.$on('$destroyed', destroyBindings);
+ }
+ } else {
+ childScope = scope;
+ }
+
+ if (nodeLinkFn.transcludeOnThisElement) {
+ childBoundTranscludeFn = createBoundTranscludeFn(
+ scope, nodeLinkFn.transclude, parentBoundTranscludeFn);
+
+ } else if (!nodeLinkFn.templateOnThisElement && parentBoundTranscludeFn) {
+ childBoundTranscludeFn = parentBoundTranscludeFn;
+
+ } else if (!parentBoundTranscludeFn && transcludeFn) {
+ childBoundTranscludeFn = createBoundTranscludeFn(scope, transcludeFn);
+
+ } else {
+ childBoundTranscludeFn = null;
+ }
+
+ nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn,
+ nodeLinkFn);
+
+ } else if (childLinkFn) {
+ childLinkFn(scope, node.childNodes, undefined, parentBoundTranscludeFn);
+ }
+ }
+ }
+ }
+
+ function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn) {
+
+ var boundTranscludeFn = function(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) {
+
+ if (!transcludedScope) {
+ transcludedScope = scope.$new(false, containingScope);
+ transcludedScope.$$transcluded = true;
+ }
+
+ return transcludeFn(transcludedScope, cloneFn, {
+ parentBoundTranscludeFn: previousBoundTranscludeFn,
+ transcludeControllers: controllers,
+ futureParentElement: futureParentElement
+ });
+ };
+
+ return boundTranscludeFn;
+ }
+
+ /**
+ * Looks for directives on the given node and adds them to the directive collection which is
+ * sorted.
+ *
+ * @param node Node to search.
+ * @param directives An array to which the directives are added to. This array is sorted before
+ * the function returns.
+ * @param attrs The shared attrs object which is used to populate the normalized attributes.
+ * @param {number=} maxPriority Max directive priority.
+ */
+ function collectDirectives(node, directives, attrs, maxPriority, ignoreDirective) {
+ var nodeType = node.nodeType,
+ attrsMap = attrs.$attr,
+ match,
+ className;
+
+ switch (nodeType) {
+ case NODE_TYPE_ELEMENT: /* Element */
+ // use the node name: <directive>
+ addDirective(directives,
+ directiveNormalize(nodeName_(node)), 'E', maxPriority, ignoreDirective);
+
+ // iterate over the attributes
+ for (var attr, name, nName, ngAttrName, value, isNgAttr, nAttrs = node.attributes,
+ j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {
+ var attrStartName = false;
+ var attrEndName = false;
+
+ attr = nAttrs[j];
+ name = attr.name;
+ value = trim(attr.value);
+
+ // support ngAttr attribute binding
+ ngAttrName = directiveNormalize(name);
+ if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) {
+ name = name.replace(PREFIX_REGEXP, '')
+ .substr(8).replace(/_(.)/g, function(match, letter) {
+ return letter.toUpperCase();
+ });
+ }
+
+ var directiveNName = ngAttrName.replace(/(Start|End)$/, '');
+ if (directiveIsMultiElement(directiveNName)) {
+ if (ngAttrName === directiveNName + 'Start') {
+ attrStartName = name;
+ attrEndName = name.substr(0, name.length - 5) + 'end';
+ name = name.substr(0, name.length - 6);
+ }
+ }
+
+ nName = directiveNormalize(name.toLowerCase());
+ attrsMap[nName] = name;
+ if (isNgAttr || !attrs.hasOwnProperty(nName)) {
+ attrs[nName] = value;
+ if (getBooleanAttrName(node, nName)) {
+ attrs[nName] = true; // presence means true
+ }
+ }
+ addAttrInterpolateDirective(node, directives, value, nName, isNgAttr);
+ addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName,
+ attrEndName);
+ }
+
+ // use class as directive
+ className = node.className;
+ if (isObject(className)) {
+ // Maybe SVGAnimatedString
+ className = className.animVal;
+ }
+ if (isString(className) && className !== '') {
+ while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {
+ nName = directiveNormalize(match[2]);
+ if (addDirective(directives, nName, 'C', maxPriority, ignoreDirective)) {
+ attrs[nName] = trim(match[3]);
+ }
+ className = className.substr(match.index + match[0].length);
+ }
+ }
+ break;
+ case NODE_TYPE_TEXT: /* Text Node */
+ if (msie === 11) {
+ // Workaround for #11781
+ while (node.parentNode && node.nextSibling && node.nextSibling.nodeType === NODE_TYPE_TEXT) {
+ node.nodeValue = node.nodeValue + node.nextSibling.nodeValue;
+ node.parentNode.removeChild(node.nextSibling);
+ }
+ }
+ addTextInterpolateDirective(directives, node.nodeValue);
+ break;
+ case NODE_TYPE_COMMENT: /* Comment */
+ try {
+ match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);
+ if (match) {
+ nName = directiveNormalize(match[1]);
+ if (addDirective(directives, nName, 'M', maxPriority, ignoreDirective)) {
+ attrs[nName] = trim(match[2]);
+ }
+ }
+ } catch (e) {
+ // turns out that under some circumstances IE9 throws errors when one attempts to read
+ // comment's node value.
+ // Just ignore it and continue. (Can't seem to reproduce in test case.)
+ }
+ break;
+ }
+
+ directives.sort(byPriority);
+ return directives;
+ }
+
+ /**
+ * Given a node with an directive-start it collects all of the siblings until it finds
+ * directive-end.
+ * @param node
+ * @param attrStart
+ * @param attrEnd
+ * @returns {*}
+ */
+ function groupScan(node, attrStart, attrEnd) {
+ var nodes = [];
+ var depth = 0;
+ if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {
+ do {
+ if (!node) {
+ throw $compileMinErr('uterdir',
+ "Unterminated attribute, found '{0}' but no matching '{1}' found.",
+ attrStart, attrEnd);
+ }
+ if (node.nodeType == NODE_TYPE_ELEMENT) {
+ if (node.hasAttribute(attrStart)) depth++;
+ if (node.hasAttribute(attrEnd)) depth--;
+ }
+ nodes.push(node);
+ node = node.nextSibling;
+ } while (depth > 0);
+ } else {
+ nodes.push(node);
+ }
+
+ return jqLite(nodes);
+ }
+
+ /**
+ * Wrapper for linking function which converts normal linking function into a grouped
+ * linking function.
+ * @param linkFn
+ * @param attrStart
+ * @param attrEnd
+ * @returns {Function}
+ */
+ function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) {
+ return function(scope, element, attrs, controllers, transcludeFn) {
+ element = groupScan(element[0], attrStart, attrEnd);
+ return linkFn(scope, element, attrs, controllers, transcludeFn);
+ };
+ }
+
+ /**
+ * Once the directives have been collected, their compile functions are executed. This method
+ * is responsible for inlining directive templates as well as terminating the application
+ * of the directives if the terminal directive has been reached.
+ *
+ * @param {Array} directives Array of collected directives to execute their compile function.
+ * this needs to be pre-sorted by priority order.
+ * @param {Node} compileNode The raw DOM node to apply the compile functions to
+ * @param {Object} templateAttrs The shared attribute function
+ * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the
+ * scope argument is auto-generated to the new
+ * child of the transcluded parent scope.
+ * @param {JQLite} jqCollection If we are working on the root of the compile tree then this
+ * argument has the root jqLite array so that we can replace nodes
+ * on it.
+ * @param {Object=} originalReplaceDirective An optional directive that will be ignored when
+ * compiling the transclusion.
+ * @param {Array.<Function>} preLinkFns
+ * @param {Array.<Function>} postLinkFns
+ * @param {Object} previousCompileContext Context used for previous compilation of the current
+ * node
+ * @returns {Function} linkFn
+ */
+ function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn,
+ jqCollection, originalReplaceDirective, preLinkFns, postLinkFns,
+ previousCompileContext) {
+ previousCompileContext = previousCompileContext || {};
+
+ var terminalPriority = -Number.MAX_VALUE,
+ newScopeDirective = previousCompileContext.newScopeDirective,
+ controllerDirectives = previousCompileContext.controllerDirectives,
+ newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective,
+ templateDirective = previousCompileContext.templateDirective,
+ nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,
+ hasTranscludeDirective = false,
+ hasTemplate = false,
+ hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,
+ $compileNode = templateAttrs.$$element = jqLite(compileNode),
+ directive,
+ directiveName,
+ $template,
+ replaceDirective = originalReplaceDirective,
+ childTranscludeFn = transcludeFn,
+ linkFn,
+ directiveValue;
+
+ // executes all directives on the current element
+ for (var i = 0, ii = directives.length; i < ii; i++) {
+ directive = directives[i];
+ var attrStart = directive.$$start;
+ var attrEnd = directive.$$end;
+
+ // collect multiblock sections
+ if (attrStart) {
+ $compileNode = groupScan(compileNode, attrStart, attrEnd);
+ }
+ $template = undefined;
+
+ if (terminalPriority > directive.priority) {
+ break; // prevent further processing of directives
+ }
+
+ if (directiveValue = directive.scope) {
+
+ // skip the check for directives with async templates, we'll check the derived sync
+ // directive when the template arrives
+ if (!directive.templateUrl) {
+ if (isObject(directiveValue)) {
+ // This directive is trying to add an isolated scope.
+ // Check that there is no scope of any kind already
+ assertNoDuplicate('new/isolated scope', newIsolateScopeDirective || newScopeDirective,
+ directive, $compileNode);
+ newIsolateScopeDirective = directive;
+ } else {
+ // This directive is trying to add a child scope.
+ // Check that there is no isolated scope already
+ assertNoDuplicate('new/isolated scope', newIsolateScopeDirective, directive,
+ $compileNode);
+ }
+ }
+
+ newScopeDirective = newScopeDirective || directive;
+ }
+
+ directiveName = directive.name;
+
+ if (!directive.templateUrl && directive.controller) {
+ directiveValue = directive.controller;
+ controllerDirectives = controllerDirectives || createMap();
+ assertNoDuplicate("'" + directiveName + "' controller",
+ controllerDirectives[directiveName], directive, $compileNode);
+ controllerDirectives[directiveName] = directive;
+ }
+
+ if (directiveValue = directive.transclude) {
+ hasTranscludeDirective = true;
+
+ // Special case ngIf and ngRepeat so that we don't complain about duplicate transclusion.
+ // This option should only be used by directives that know how to safely handle element transclusion,
+ // where the transcluded nodes are added or replaced after linking.
+ if (!directive.$$tlb) {
+ assertNoDuplicate('transclusion', nonTlbTranscludeDirective, directive, $compileNode);
+ nonTlbTranscludeDirective = directive;
+ }
+
+ if (directiveValue == 'element') {
+ hasElementTranscludeDirective = true;
+ terminalPriority = directive.priority;
+ $template = $compileNode;
+ $compileNode = templateAttrs.$$element =
+ jqLite(document.createComment(' ' + directiveName + ': ' +
+ templateAttrs[directiveName] + ' '));
+ compileNode = $compileNode[0];
+ replaceWith(jqCollection, sliceArgs($template), compileNode);
+
+ childTranscludeFn = compile($template, transcludeFn, terminalPriority,
+ replaceDirective && replaceDirective.name, {
+ // Don't pass in:
+ // - controllerDirectives - otherwise we'll create duplicates controllers
+ // - newIsolateScopeDirective or templateDirective - combining templates with
+ // element transclusion doesn't make sense.
+ //
+ // We need only nonTlbTranscludeDirective so that we prevent putting transclusion
+ // on the same element more than once.
+ nonTlbTranscludeDirective: nonTlbTranscludeDirective
+ });
+ } else {
+ $template = jqLite(jqLiteClone(compileNode)).contents();
+ $compileNode.empty(); // clear contents
+ childTranscludeFn = compile($template, transcludeFn);
+ }
+ }
+
+ if (directive.template) {
+ hasTemplate = true;
+ assertNoDuplicate('template', templateDirective, directive, $compileNode);
+ templateDirective = directive;
+
+ directiveValue = (isFunction(directive.template))
+ ? directive.template($compileNode, templateAttrs)
+ : directive.template;
+
+ directiveValue = denormalizeTemplate(directiveValue);
+
+ if (directive.replace) {
+ replaceDirective = directive;
+ if (jqLiteIsTextNode(directiveValue)) {
+ $template = [];
+ } else {
+ $template = removeComments(wrapTemplate(directive.templateNamespace, trim(directiveValue)));
+ }
+ compileNode = $template[0];
+
+ if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
+ throw $compileMinErr('tplrt',
+ "Template for directive '{0}' must have exactly one root element. {1}",
+ directiveName, '');
+ }
+
+ replaceWith(jqCollection, $compileNode, compileNode);
+
+ var newTemplateAttrs = {$attr: {}};
+
+ // combine directives from the original node and from the template:
+ // - take the array of directives for this element
+ // - split it into two parts, those that already applied (processed) and those that weren't (unprocessed)
+ // - collect directives from the template and sort them by priority
+ // - combine directives as: processed + template + unprocessed
+ var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs);
+ var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1));
+
+ if (newIsolateScopeDirective) {
+ markDirectivesAsIsolate(templateDirectives);
+ }
+ directives = directives.concat(templateDirectives).concat(unprocessedDirectives);
+ mergeTemplateAttributes(templateAttrs, newTemplateAttrs);
+
+ ii = directives.length;
+ } else {
+ $compileNode.html(directiveValue);
+ }
+ }
+
+ if (directive.templateUrl) {
+ hasTemplate = true;
+ assertNoDuplicate('template', templateDirective, directive, $compileNode);
+ templateDirective = directive;
+
+ if (directive.replace) {
+ replaceDirective = directive;
+ }
+
+ nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode,
+ templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, {
+ controllerDirectives: controllerDirectives,
+ newScopeDirective: (newScopeDirective !== directive) && newScopeDirective,
+ newIsolateScopeDirective: newIsolateScopeDirective,
+ templateDirective: templateDirective,
+ nonTlbTranscludeDirective: nonTlbTranscludeDirective
+ });
+ ii = directives.length;
+ } else if (directive.compile) {
+ try {
+ linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn);
+ if (isFunction(linkFn)) {
+ addLinkFns(null, linkFn, attrStart, attrEnd);
+ } else if (linkFn) {
+ addLinkFns(linkFn.pre, linkFn.post, attrStart, attrEnd);
+ }
+ } catch (e) {
+ $exceptionHandler(e, startingTag($compileNode));
+ }
+ }
+
+ if (directive.terminal) {
+ nodeLinkFn.terminal = true;
+ terminalPriority = Math.max(terminalPriority, directive.priority);
+ }
+
+ }
+
+ nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;
+ nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective;
+ nodeLinkFn.templateOnThisElement = hasTemplate;
+ nodeLinkFn.transclude = childTranscludeFn;
+
+ previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;
+
+ // might be normal or delayed nodeLinkFn depending on if templateUrl is present
+ return nodeLinkFn;
+
+ ////////////////////
+
+ function addLinkFns(pre, post, attrStart, attrEnd) {
+ if (pre) {
+ if (attrStart) pre = groupElementsLinkFnWrapper(pre, attrStart, attrEnd);
+ pre.require = directive.require;
+ pre.directiveName = directiveName;
+ if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
+ pre = cloneAndAnnotateFn(pre, {isolateScope: true});
+ }
+ preLinkFns.push(pre);
+ }
+ if (post) {
+ if (attrStart) post = groupElementsLinkFnWrapper(post, attrStart, attrEnd);
+ post.require = directive.require;
+ post.directiveName = directiveName;
+ if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
+ post = cloneAndAnnotateFn(post, {isolateScope: true});
+ }
+ postLinkFns.push(post);
+ }
+ }
+
+
+ function getControllers(directiveName, require, $element, elementControllers) {
+ var value;
+
+ if (isString(require)) {
+ var match = require.match(REQUIRE_PREFIX_REGEXP);
+ var name = require.substring(match[0].length);
+ var inheritType = match[1] || match[3];
+ var optional = match[2] === '?';
+
+ //If only parents then start at the parent element
+ if (inheritType === '^^') {
+ $element = $element.parent();
+ //Otherwise attempt getting the controller from elementControllers in case
+ //the element is transcluded (and has no data) and to avoid .data if possible
+ } else {
+ value = elementControllers && elementControllers[name];
+ value = value && value.instance;
+ }
+
+ if (!value) {
+ var dataName = '$' + name + 'Controller';
+ value = inheritType ? $element.inheritedData(dataName) : $element.data(dataName);
+ }
+
+ if (!value && !optional) {
+ throw $compileMinErr('ctreq',
+ "Controller '{0}', required by directive '{1}', can't be found!",
+ name, directiveName);
+ }
+ } else if (isArray(require)) {
+ value = [];
+ for (var i = 0, ii = require.length; i < ii; i++) {
+ value[i] = getControllers(directiveName, require[i], $element, elementControllers);
+ }
+ }
+
+ return value || null;
+ }
+
+ function setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope) {
+ var elementControllers = createMap();
+ for (var controllerKey in controllerDirectives) {
+ var directive = controllerDirectives[controllerKey];
+ var locals = {
+ $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,
+ $element: $element,
+ $attrs: attrs,
+ $transclude: transcludeFn
+ };
+
+ var controller = directive.controller;
+ if (controller == '@') {
+ controller = attrs[directive.name];
+ }
+
+ var controllerInstance = $controller(controller, locals, true, directive.controllerAs);
+
+ // For directives with element transclusion the element is a comment,
+ // but jQuery .data doesn't support attaching data to comment nodes as it's hard to
+ // clean up (http://bugs.jquery.com/ticket/8335).
+ // Instead, we save the controllers for the element in a local hash and attach to .data
+ // later, once we have the actual element.
+ elementControllers[directive.name] = controllerInstance;
+ if (!hasElementTranscludeDirective) {
+ $element.data('$' + directive.name + 'Controller', controllerInstance.instance);
+ }
+ }
+ return elementControllers;
+ }
+
+ function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn,
+ thisLinkFn) {
+ var i, ii, linkFn, controller, isolateScope, elementControllers, transcludeFn, $element,
+ attrs;
+
+ if (compileNode === linkNode) {
+ attrs = templateAttrs;
+ $element = templateAttrs.$$element;
+ } else {
+ $element = jqLite(linkNode);
+ attrs = new Attributes($element, templateAttrs);
+ }
+
+ if (newIsolateScopeDirective) {
+ isolateScope = scope.$new(true);
+ }
+
+ if (boundTranscludeFn) {
+ // track `boundTranscludeFn` so it can be unwrapped if `transcludeFn`
+ // is later passed as `parentBoundTranscludeFn` to `publicLinkFn`
+ transcludeFn = controllersBoundTransclude;
+ transcludeFn.$$boundTransclude = boundTranscludeFn;
+ }
+
+ if (controllerDirectives) {
+ elementControllers = setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope);
+ }
+
+ if (newIsolateScopeDirective) {
+ // Initialize isolate scope bindings for new isolate scope directive.
+ compile.$$addScopeInfo($element, isolateScope, true, !(templateDirective && (templateDirective === newIsolateScopeDirective ||
+ templateDirective === newIsolateScopeDirective.$$originalDirective)));
+ compile.$$addScopeClass($element, true);
+ isolateScope.$$isolateBindings =
+ newIsolateScopeDirective.$$isolateBindings;
+ initializeDirectiveBindings(scope, attrs, isolateScope,
+ isolateScope.$$isolateBindings,
+ newIsolateScopeDirective, isolateScope);
+ }
+ if (elementControllers) {
+ // Initialize bindToController bindings for new/isolate scopes
+ var scopeDirective = newIsolateScopeDirective || newScopeDirective;
+ var bindings;
+ var controllerForBindings;
+ if (scopeDirective && elementControllers[scopeDirective.name]) {
+ bindings = scopeDirective.$$bindings.bindToController;
+ controller = elementControllers[scopeDirective.name];
+
+ if (controller && controller.identifier && bindings) {
+ controllerForBindings = controller;
+ thisLinkFn.$$destroyBindings =
+ initializeDirectiveBindings(scope, attrs, controller.instance,
+ bindings, scopeDirective);
+ }
+ }
+ for (i in elementControllers) {
+ controller = elementControllers[i];
+ var controllerResult = controller();
+
+ if (controllerResult !== controller.instance) {
+ // If the controller constructor has a return value, overwrite the instance
+ // from setupControllers and update the element data
+ controller.instance = controllerResult;
+ $element.data('$' + i + 'Controller', controllerResult);
+ if (controller === controllerForBindings) {
+ // Remove and re-install bindToController bindings
+ thisLinkFn.$$destroyBindings();
+ thisLinkFn.$$destroyBindings =
+ initializeDirectiveBindings(scope, attrs, controllerResult, bindings, scopeDirective);
+ }
+ }
+ }
+ }
+
+ // PRELINKING
+ for (i = 0, ii = preLinkFns.length; i < ii; i++) {
+ linkFn = preLinkFns[i];
+ invokeLinkFn(linkFn,
+ linkFn.isolateScope ? isolateScope : scope,
+ $element,
+ attrs,
+ linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),
+ transcludeFn
+ );
+ }
+
+ // RECURSION
+ // We only pass the isolate scope, if the isolate directive has a template,
+ // otherwise the child elements do not belong to the isolate directive.
+ var scopeToChild = scope;
+ if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {
+ scopeToChild = isolateScope;
+ }
+ childLinkFn && childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn);
+
+ // POSTLINKING
+ for (i = postLinkFns.length - 1; i >= 0; i--) {
+ linkFn = postLinkFns[i];
+ invokeLinkFn(linkFn,
+ linkFn.isolateScope ? isolateScope : scope,
+ $element,
+ attrs,
+ linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),
+ transcludeFn
+ );
+ }
+
+ // This is the function that is injected as `$transclude`.
+ // Note: all arguments are optional!
+ function controllersBoundTransclude(scope, cloneAttachFn, futureParentElement) {
+ var transcludeControllers;
+
+ // No scope passed in:
+ if (!isScope(scope)) {
+ futureParentElement = cloneAttachFn;
+ cloneAttachFn = scope;
+ scope = undefined;
+ }
+
+ if (hasElementTranscludeDirective) {
+ transcludeControllers = elementControllers;
+ }
+ if (!futureParentElement) {
+ futureParentElement = hasElementTranscludeDirective ? $element.parent() : $element;
+ }
+ return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild);
+ }
+ }
+ }
+
+ function markDirectivesAsIsolate(directives) {
+ // mark all directives as needing isolate scope.
+ for (var j = 0, jj = directives.length; j < jj; j++) {
+ directives[j] = inherit(directives[j], {$$isolateScope: true});
+ }
+ }
+
+ /**
+ * looks up the directive and decorates it with exception handling and proper parameters. We
+ * call this the boundDirective.
+ *
+ * @param {string} name name of the directive to look up.
+ * @param {string} location The directive must be found in specific format.
+ * String containing any of theses characters:
+ *
+ * * `E`: element name
+ * * `A': attribute
+ * * `C`: class
+ * * `M`: comment
+ * @returns {boolean} true if directive was added.
+ */
+ function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName,
+ endAttrName) {
+ if (name === ignoreDirective) return null;
+ var match = null;
+ if (hasDirectives.hasOwnProperty(name)) {
+ for (var directive, directives = $injector.get(name + Suffix),
+ i = 0, ii = directives.length; i < ii; i++) {
+ try {
+ directive = directives[i];
+ if ((maxPriority === undefined || maxPriority > directive.priority) &&
+ directive.restrict.indexOf(location) != -1) {
+ if (startAttrName) {
+ directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName});
+ }
+ tDirectives.push(directive);
+ match = directive;
+ }
+ } catch (e) { $exceptionHandler(e); }
+ }
+ }
+ return match;
+ }
+
+
+ /**
+ * looks up the directive and returns true if it is a multi-element directive,
+ * and therefore requires DOM nodes between -start and -end markers to be grouped
+ * together.
+ *
+ * @param {string} name name of the directive to look up.
+ * @returns true if directive was registered as multi-element.
+ */
+ function directiveIsMultiElement(name) {
+ if (hasDirectives.hasOwnProperty(name)) {
+ for (var directive, directives = $injector.get(name + Suffix),
+ i = 0, ii = directives.length; i < ii; i++) {
+ directive = directives[i];
+ if (directive.multiElement) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * When the element is replaced with HTML template then the new attributes
+ * on the template need to be merged with the existing attributes in the DOM.
+ * The desired effect is to have both of the attributes present.
+ *
+ * @param {object} dst destination attributes (original DOM)
+ * @param {object} src source attributes (from the directive template)
+ */
+ function mergeTemplateAttributes(dst, src) {
+ var srcAttr = src.$attr,
+ dstAttr = dst.$attr,
+ $element = dst.$$element;
+
+ // reapply the old attributes to the new element
+ forEach(dst, function(value, key) {
+ if (key.charAt(0) != '$') {
+ if (src[key] && src[key] !== value) {
+ value += (key === 'style' ? ';' : ' ') + src[key];
+ }
+ dst.$set(key, value, true, srcAttr[key]);
+ }
+ });
+
+ // copy the new attributes on the old attrs object
+ forEach(src, function(value, key) {
+ if (key == 'class') {
+ safeAddClass($element, value);
+ dst['class'] = (dst['class'] ? dst['class'] + ' ' : '') + value;
+ } else if (key == 'style') {
+ $element.attr('style', $element.attr('style') + ';' + value);
+ dst['style'] = (dst['style'] ? dst['style'] + ';' : '') + value;
+ // `dst` will never contain hasOwnProperty as DOM parser won't let it.
+ // You will get an "InvalidCharacterError: DOM Exception 5" error if you
+ // have an attribute like "has-own-property" or "data-has-own-property", etc.
+ } else if (key.charAt(0) != '$' && !dst.hasOwnProperty(key)) {
+ dst[key] = value;
+ dstAttr[key] = srcAttr[key];
+ }
+ });
+ }
+
+
+ function compileTemplateUrl(directives, $compileNode, tAttrs,
+ $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {
+ var linkQueue = [],
+ afterTemplateNodeLinkFn,
+ afterTemplateChildLinkFn,
+ beforeTemplateCompileNode = $compileNode[0],
+ origAsyncDirective = directives.shift(),
+ derivedSyncDirective = inherit(origAsyncDirective, {
+ templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective
+ }),
+ templateUrl = (isFunction(origAsyncDirective.templateUrl))
+ ? origAsyncDirective.templateUrl($compileNode, tAttrs)
+ : origAsyncDirective.templateUrl,
+ templateNamespace = origAsyncDirective.templateNamespace;
+
+ $compileNode.empty();
+
+ $templateRequest(templateUrl)
+ .then(function(content) {
+ var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;
+
+ content = denormalizeTemplate(content);
+
+ if (origAsyncDirective.replace) {
+ if (jqLiteIsTextNode(content)) {
+ $template = [];
+ } else {
+ $template = removeComments(wrapTemplate(templateNamespace, trim(content)));
+ }
+ compileNode = $template[0];
+
+ if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
+ throw $compileMinErr('tplrt',
+ "Template for directive '{0}' must have exactly one root element. {1}",
+ origAsyncDirective.name, templateUrl);
+ }
+
+ tempTemplateAttrs = {$attr: {}};
+ replaceWith($rootElement, $compileNode, compileNode);
+ var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);
+
+ if (isObject(origAsyncDirective.scope)) {
+ markDirectivesAsIsolate(templateDirectives);
+ }
+ directives = templateDirectives.concat(directives);
+ mergeTemplateAttributes(tAttrs, tempTemplateAttrs);
+ } else {
+ compileNode = beforeTemplateCompileNode;
+ $compileNode.html(content);
+ }
+
+ directives.unshift(derivedSyncDirective);
+
+ afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs,
+ childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns,
+ previousCompileContext);
+ forEach($rootElement, function(node, i) {
+ if (node == compileNode) {
+ $rootElement[i] = $compileNode[0];
+ }
+ });
+ afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn);
+
+ while (linkQueue.length) {
+ var scope = linkQueue.shift(),
+ beforeTemplateLinkNode = linkQueue.shift(),
+ linkRootElement = linkQueue.shift(),
+ boundTranscludeFn = linkQueue.shift(),
+ linkNode = $compileNode[0];
+
+ if (scope.$$destroyed) continue;
+
+ if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {
+ var oldClasses = beforeTemplateLinkNode.className;
+
+ if (!(previousCompileContext.hasElementTranscludeDirective &&
+ origAsyncDirective.replace)) {
+ // it was cloned therefore we have to clone as well.
+ linkNode = jqLiteClone(compileNode);
+ }
+ replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);
+
+ // Copy in CSS classes from original node
+ safeAddClass(jqLite(linkNode), oldClasses);
+ }
+ if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
+ childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
+ } else {
+ childBoundTranscludeFn = boundTranscludeFn;
+ }
+ afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement,
+ childBoundTranscludeFn, afterTemplateNodeLinkFn);
+ }
+ linkQueue = null;
+ });
+
+ return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) {
+ var childBoundTranscludeFn = boundTranscludeFn;
+ if (scope.$$destroyed) return;
+ if (linkQueue) {
+ linkQueue.push(scope,
+ node,
+ rootElement,
+ childBoundTranscludeFn);
+ } else {
+ if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
+ childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
+ }
+ afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn,
+ afterTemplateNodeLinkFn);
+ }
+ };
+ }
+
+
+ /**
+ * Sorting function for bound directives.
+ */
+ function byPriority(a, b) {
+ var diff = b.priority - a.priority;
+ if (diff !== 0) return diff;
+ if (a.name !== b.name) return (a.name < b.name) ? -1 : 1;
+ return a.index - b.index;
+ }
+
+ function assertNoDuplicate(what, previousDirective, directive, element) {
+
+ function wrapModuleNameIfDefined(moduleName) {
+ return moduleName ?
+ (' (module: ' + moduleName + ')') :
+ '';
+ }
+
+ if (previousDirective) {
+ throw $compileMinErr('multidir', 'Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}',
+ previousDirective.name, wrapModuleNameIfDefined(previousDirective.$$moduleName),
+ directive.name, wrapModuleNameIfDefined(directive.$$moduleName), what, startingTag(element));
+ }
+ }
+
+
+ function addTextInterpolateDirective(directives, text) {
+ var interpolateFn = $interpolate(text, true);
+ if (interpolateFn) {
+ directives.push({
+ priority: 0,
+ compile: function textInterpolateCompileFn(templateNode) {
+ var templateNodeParent = templateNode.parent(),
+ hasCompileParent = !!templateNodeParent.length;
+
+ // When transcluding a template that has bindings in the root
+ // we don't have a parent and thus need to add the class during linking fn.
+ if (hasCompileParent) compile.$$addBindingClass(templateNodeParent);
+
+ return function textInterpolateLinkFn(scope, node) {
+ var parent = node.parent();
+ if (!hasCompileParent) compile.$$addBindingClass(parent);
+ compile.$$addBindingInfo(parent, interpolateFn.expressions);
+ scope.$watch(interpolateFn, function interpolateFnWatchAction(value) {
+ node[0].nodeValue = value;
+ });
+ };
+ }
+ });
+ }
+ }
+
+
+ function wrapTemplate(type, template) {
+ type = lowercase(type || 'html');
+ switch (type) {
+ case 'svg':
+ case 'math':
+ var wrapper = document.createElement('div');
+ wrapper.innerHTML = '<' + type + '>' + template + '</' + type + '>';
+ return wrapper.childNodes[0].childNodes;
+ default:
+ return template;
+ }
+ }
+
+
+ function getTrustedContext(node, attrNormalizedName) {
+ if (attrNormalizedName == "srcdoc") {
+ return $sce.HTML;
+ }
+ var tag = nodeName_(node);
+ // maction[xlink:href] can source SVG. It's not limited to <maction>.
+ if (attrNormalizedName == "xlinkHref" ||
+ (tag == "form" && attrNormalizedName == "action") ||
+ (tag != "img" && (attrNormalizedName == "src" ||
+ attrNormalizedName == "ngSrc"))) {
+ return $sce.RESOURCE_URL;
+ }
+ }
+
+
+ function addAttrInterpolateDirective(node, directives, value, name, allOrNothing) {
+ var trustedContext = getTrustedContext(node, name);
+ allOrNothing = ALL_OR_NOTHING_ATTRS[name] || allOrNothing;
+
+ var interpolateFn = $interpolate(value, true, trustedContext, allOrNothing);
+
+ // no interpolation found -> ignore
+ if (!interpolateFn) return;
+
+
+ if (name === "multiple" && nodeName_(node) === "select") {
+ throw $compileMinErr("selmulti",
+ "Binding to the 'multiple' attribute is not supported. Element: {0}",
+ startingTag(node));
+ }
+
+ directives.push({
+ priority: 100,
+ compile: function() {
+ return {
+ pre: function attrInterpolatePreLinkFn(scope, element, attr) {
+ var $$observers = (attr.$$observers || (attr.$$observers = {}));
+
+ if (EVENT_HANDLER_ATTR_REGEXP.test(name)) {
+ throw $compileMinErr('nodomevents',
+ "Interpolations for HTML DOM event attributes are disallowed. Please use the " +
+ "ng- versions (such as ng-click instead of onclick) instead.");
+ }
+
+ // If the attribute has changed since last $interpolate()ed
+ var newValue = attr[name];
+ if (newValue !== value) {
+ // we need to interpolate again since the attribute value has been updated
+ // (e.g. by another directive's compile function)
+ // ensure unset/empty values make interpolateFn falsy
+ interpolateFn = newValue && $interpolate(newValue, true, trustedContext, allOrNothing);
+ value = newValue;
+ }
+
+ // if attribute was updated so that there is no interpolation going on we don't want to
+ // register any observers
+ if (!interpolateFn) return;
+
+ // initialize attr object so that it's ready in case we need the value for isolate
+ // scope initialization, otherwise the value would not be available from isolate
+ // directive's linking fn during linking phase
+ attr[name] = interpolateFn(scope);
+
+ ($$observers[name] || ($$observers[name] = [])).$$inter = true;
+ (attr.$$observers && attr.$$observers[name].$$scope || scope).
+ $watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) {
+ //special case for class attribute addition + removal
+ //so that class changes can tap into the animation
+ //hooks provided by the $animate service. Be sure to
+ //skip animations when the first digest occurs (when
+ //both the new and the old values are the same) since
+ //the CSS classes are the non-interpolated values
+ if (name === 'class' && newValue != oldValue) {
+ attr.$updateClass(newValue, oldValue);
+ } else {
+ attr.$set(name, newValue);
+ }
+ });
+ }
+ };
+ }
+ });
+ }
+
+
+ /**
+ * This is a special jqLite.replaceWith, which can replace items which
+ * have no parents, provided that the containing jqLite collection is provided.
+ *
+ * @param {JqLite=} $rootElement The root of the compile tree. Used so that we can replace nodes
+ * in the root of the tree.
+ * @param {JqLite} elementsToRemove The jqLite element which we are going to replace. We keep
+ * the shell, but replace its DOM node reference.
+ * @param {Node} newNode The new DOM node.
+ */
+ function replaceWith($rootElement, elementsToRemove, newNode) {
+ var firstElementToRemove = elementsToRemove[0],
+ removeCount = elementsToRemove.length,
+ parent = firstElementToRemove.parentNode,
+ i, ii;
+
+ if ($rootElement) {
+ for (i = 0, ii = $rootElement.length; i < ii; i++) {
+ if ($rootElement[i] == firstElementToRemove) {
+ $rootElement[i++] = newNode;
+ for (var j = i, j2 = j + removeCount - 1,
+ jj = $rootElement.length;
+ j < jj; j++, j2++) {
+ if (j2 < jj) {
+ $rootElement[j] = $rootElement[j2];
+ } else {
+ delete $rootElement[j];
+ }
+ }
+ $rootElement.length -= removeCount - 1;
+
+ // If the replaced element is also the jQuery .context then replace it
+ // .context is a deprecated jQuery api, so we should set it only when jQuery set it
+ // http://api.jquery.com/context/
+ if ($rootElement.context === firstElementToRemove) {
+ $rootElement.context = newNode;
+ }
+ break;
+ }
+ }
+ }
+
+ if (parent) {
+ parent.replaceChild(newNode, firstElementToRemove);
+ }
+
+ // TODO(perf): what's this document fragment for? is it needed? can we at least reuse it?
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild(firstElementToRemove);
+
+ if (jqLite.hasData(firstElementToRemove)) {
+ // Copy over user data (that includes Angular's $scope etc.). Don't copy private
+ // data here because there's no public interface in jQuery to do that and copying over
+ // event listeners (which is the main use of private data) wouldn't work anyway.
+ jqLite(newNode).data(jqLite(firstElementToRemove).data());
+
+ // Remove data of the replaced element. We cannot just call .remove()
+ // on the element it since that would deallocate scope that is needed
+ // for the new node. Instead, remove the data "manually".
+ if (!jQuery) {
+ delete jqLite.cache[firstElementToRemove[jqLite.expando]];
+ } else {
+ // jQuery 2.x doesn't expose the data storage. Use jQuery.cleanData to clean up after
+ // the replaced element. The cleanData version monkey-patched by Angular would cause
+ // the scope to be trashed and we do need the very same scope to work with the new
+ // element. However, we cannot just cache the non-patched version and use it here as
+ // that would break if another library patches the method after Angular does (one
+ // example is jQuery UI). Instead, set a flag indicating scope destroying should be
+ // skipped this one time.
+ skipDestroyOnNextJQueryCleanData = true;
+ jQuery.cleanData([firstElementToRemove]);
+ }
+ }
+
+ for (var k = 1, kk = elementsToRemove.length; k < kk; k++) {
+ var element = elementsToRemove[k];
+ jqLite(element).remove(); // must do this way to clean up expando
+ fragment.appendChild(element);
+ delete elementsToRemove[k];
+ }
+
+ elementsToRemove[0] = newNode;
+ elementsToRemove.length = 1;
+ }
+
+
+ function cloneAndAnnotateFn(fn, annotation) {
+ return extend(function() { return fn.apply(null, arguments); }, fn, annotation);
+ }
+
+
+ function invokeLinkFn(linkFn, scope, $element, attrs, controllers, transcludeFn) {
+ try {
+ linkFn(scope, $element, attrs, controllers, transcludeFn);
+ } catch (e) {
+ $exceptionHandler(e, startingTag($element));
+ }
+ }
+
+
+ // Set up $watches for isolate scope and controller bindings. This process
+ // only occurs for isolate scopes and new scopes with controllerAs.
+ function initializeDirectiveBindings(scope, attrs, destination, bindings,
+ directive, newScope) {
+ var onNewScopeDestroyed;
+ forEach(bindings, function(definition, scopeName) {
+ var attrName = definition.attrName,
+ optional = definition.optional,
+ mode = definition.mode, // @, =, or &
+ lastValue,
+ parentGet, parentSet, compare;
+
+ switch (mode) {
+
+ case '@':
+ if (!optional && !hasOwnProperty.call(attrs, attrName)) {
+ destination[scopeName] = attrs[attrName] = void 0;
+ }
+ attrs.$observe(attrName, function(value) {
+ if (isString(value)) {
+ destination[scopeName] = value;
+ }
+ });
+ attrs.$$observers[attrName].$$scope = scope;
+ if (isString(attrs[attrName])) {
+ // If the attribute has been provided then we trigger an interpolation to ensure
+ // the value is there for use in the link fn
+ destination[scopeName] = $interpolate(attrs[attrName])(scope);
+ }
+ break;
+
+ case '=':
+ if (!hasOwnProperty.call(attrs, attrName)) {
+ if (optional) break;
+ attrs[attrName] = void 0;
+ }
+ if (optional && !attrs[attrName]) break;
+
+ parentGet = $parse(attrs[attrName]);
+ if (parentGet.literal) {
+ compare = equals;
+ } else {
+ compare = function(a, b) { return a === b || (a !== a && b !== b); };
+ }
+ parentSet = parentGet.assign || function() {
+ // reset the change, or we will throw this exception on every $digest
+ lastValue = destination[scopeName] = parentGet(scope);
+ throw $compileMinErr('nonassign',
+ "Expression '{0}' used with directive '{1}' is non-assignable!",
+ attrs[attrName], directive.name);
+ };
+ lastValue = destination[scopeName] = parentGet(scope);
+ var parentValueWatch = function parentValueWatch(parentValue) {
+ if (!compare(parentValue, destination[scopeName])) {
+ // we are out of sync and need to copy
+ if (!compare(parentValue, lastValue)) {
+ // parent changed and it has precedence
+ destination[scopeName] = parentValue;
+ } else {
+ // if the parent can be assigned then do so
+ parentSet(scope, parentValue = destination[scopeName]);
+ }
+ }
+ return lastValue = parentValue;
+ };
+ parentValueWatch.$stateful = true;
+ var unwatch;
+ if (definition.collection) {
+ unwatch = scope.$watchCollection(attrs[attrName], parentValueWatch);
+ } else {
+ unwatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal);
+ }
+ onNewScopeDestroyed = (onNewScopeDestroyed || []);
+ onNewScopeDestroyed.push(unwatch);
+ break;
+
+ case '&':
+ // Don't assign Object.prototype method to scope
+ parentGet = attrs.hasOwnProperty(attrName) ? $parse(attrs[attrName]) : noop;
+
+ // Don't assign noop to destination if expression is not valid
+ if (parentGet === noop && optional) break;
+
+ destination[scopeName] = function(locals) {
+ return parentGet(scope, locals);
+ };
+ break;
+ }
+ });
+ var destroyBindings = onNewScopeDestroyed ? function destroyBindings() {
+ for (var i = 0, ii = onNewScopeDestroyed.length; i < ii; ++i) {
+ onNewScopeDestroyed[i]();
+ }
+ } : noop;
+ if (newScope && destroyBindings !== noop) {
+ newScope.$on('$destroy', destroyBindings);
+ return noop;
+ }
+ return destroyBindings;
+ }
+ }];
+}
+
+var PREFIX_REGEXP = /^((?:x|data)[\:\-_])/i;
+/**
+ * Converts all accepted directives format into proper directive name.
+ * @param name Name to normalize
+ */
+function directiveNormalize(name) {
+ return camelCase(name.replace(PREFIX_REGEXP, ''));
+}
+
+/**
+ * @ngdoc type
+ * @name $compile.directive.Attributes
+ *
+ * @description
+ * A shared object between directive compile / linking functions which contains normalized DOM
+ * element attributes. The values reflect current binding state `{{ }}`. The normalization is
+ * needed since all of these are treated as equivalent in Angular:
+ *
+ * ```
+ * <span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">
+ * ```
+ */
+
+/**
+ * @ngdoc property
+ * @name $compile.directive.Attributes#$attr
+ *
+ * @description
+ * A map of DOM element attribute names to the normalized name. This is
+ * needed to do reverse lookup from normalized name back to actual name.
+ */
+
+
+/**
+ * @ngdoc method
+ * @name $compile.directive.Attributes#$set
+ * @kind function
+ *
+ * @description
+ * Set DOM element attribute value.
+ *
+ *
+ * @param {string} name Normalized element attribute name of the property to modify. The name is
+ * reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr}
+ * property to the original name.
+ * @param {string} value Value to set the attribute to. The value can be an interpolated string.
+ */
+
+
+
+/**
+ * Closure compiler type information
+ */
+
+function nodesetLinkingFn(
+ /* angular.Scope */ scope,
+ /* NodeList */ nodeList,
+ /* Element */ rootElement,
+ /* function(Function) */ boundTranscludeFn
+) {}
+
+function directiveLinkingFn(
+ /* nodesetLinkingFn */ nodesetLinkingFn,
+ /* angular.Scope */ scope,
+ /* Node */ node,
+ /* Element */ rootElement,
+ /* function(Function) */ boundTranscludeFn
+) {}
+
+function tokenDifference(str1, str2) {
+ var values = '',
+ tokens1 = str1.split(/\s+/),
+ tokens2 = str2.split(/\s+/);
+
+ outer:
+ for (var i = 0; i < tokens1.length; i++) {
+ var token = tokens1[i];
+ for (var j = 0; j < tokens2.length; j++) {
+ if (token == tokens2[j]) continue outer;
+ }
+ values += (values.length > 0 ? ' ' : '') + token;
+ }
+ return values;
+}
+
+function removeComments(jqNodes) {
+ jqNodes = jqLite(jqNodes);
+ var i = jqNodes.length;
+
+ if (i <= 1) {
+ return jqNodes;
+ }
+
+ while (i--) {
+ var node = jqNodes[i];
+ if (node.nodeType === NODE_TYPE_COMMENT) {
+ splice.call(jqNodes, i, 1);
+ }
+ }
+ return jqNodes;
+}
+
+var $controllerMinErr = minErr('$controller');
+
+
+var CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/;
+function identifierForController(controller, ident) {
+ if (ident && isString(ident)) return ident;
+ if (isString(controller)) {
+ var match = CNTRL_REG.exec(controller);
+ if (match) return match[3];
+ }
+}
+
+
+/**
+ * @ngdoc provider
+ * @name $controllerProvider
+ * @description
+ * The {@link ng.$controller $controller service} is used by Angular to create new
+ * controllers.
+ *
+ * This provider allows controller registration via the
+ * {@link ng.$controllerProvider#register register} method.
+ */
+function $ControllerProvider() {
+ var controllers = {},
+ globals = false;
+
+ /**
+ * @ngdoc method
+ * @name $controllerProvider#register
+ * @param {string|Object} name Controller name, or an object map of controllers where the keys are
+ * the names and the values are the constructors.
+ * @param {Function|Array} constructor Controller constructor fn (optionally decorated with DI
+ * annotations in the array notation).
+ */
+ this.register = function(name, constructor) {
+ assertNotHasOwnProperty(name, 'controller');
+ if (isObject(name)) {
+ extend(controllers, name);
+ } else {
+ controllers[name] = constructor;
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $controllerProvider#allowGlobals
+ * @description If called, allows `$controller` to find controller constructors on `window`
+ */
+ this.allowGlobals = function() {
+ globals = true;
+ };
+
+
+ this.$get = ['$injector', '$window', function($injector, $window) {
+
+ /**
+ * @ngdoc service
+ * @name $controller
+ * @requires $injector
+ *
+ * @param {Function|string} constructor If called with a function then it's considered to be the
+ * controller constructor function. Otherwise it's considered to be a string which is used
+ * to retrieve the controller constructor using the following steps:
+ *
+ * * check if a controller with given name is registered via `$controllerProvider`
+ * * check if evaluating the string on the current scope returns a constructor
+ * * if $controllerProvider#allowGlobals, check `window[constructor]` on the global
+ * `window` object (not recommended)
+ *
+ * The string can use the `controller as property` syntax, where the controller instance is published
+ * as the specified property on the `scope`; the `scope` must be injected into `locals` param for this
+ * to work correctly.
+ *
+ * @param {Object} locals Injection locals for Controller.
+ * @return {Object} Instance of given controller.
+ *
+ * @description
+ * `$controller` service is responsible for instantiating controllers.
+ *
+ * It's just a simple call to {@link auto.$injector $injector}, but extracted into
+ * a service, so that one can override this service with [BC version](https://gist.github.com/1649788).
+ */
+ return function(expression, locals, later, ident) {
+ // PRIVATE API:
+ // param `later` --- indicates that the controller's constructor is invoked at a later time.
+ // If true, $controller will allocate the object with the correct
+ // prototype chain, but will not invoke the controller until a returned
+ // callback is invoked.
+ // param `ident` --- An optional label which overrides the label parsed from the controller
+ // expression, if any.
+ var instance, match, constructor, identifier;
+ later = later === true;
+ if (ident && isString(ident)) {
+ identifier = ident;
+ }
+
+ if (isString(expression)) {
+ match = expression.match(CNTRL_REG);
+ if (!match) {
+ throw $controllerMinErr('ctrlfmt',
+ "Badly formed controller string '{0}'. " +
+ "Must match `__name__ as __id__` or `__name__`.", expression);
+ }
+ constructor = match[1],
+ identifier = identifier || match[3];
+ expression = controllers.hasOwnProperty(constructor)
+ ? controllers[constructor]
+ : getter(locals.$scope, constructor, true) ||
+ (globals ? getter($window, constructor, true) : undefined);
+
+ assertArgFn(expression, constructor, true);
+ }
+
+ if (later) {
+ // Instantiate controller later:
+ // This machinery is used to create an instance of the object before calling the
+ // controller's constructor itself.
+ //
+ // This allows properties to be added to the controller before the constructor is
+ // invoked. Primarily, this is used for isolate scope bindings in $compile.
+ //
+ // This feature is not intended for use by applications, and is thus not documented
+ // publicly.
+ // Object creation: http://jsperf.com/create-constructor/2
+ var controllerPrototype = (isArray(expression) ?
+ expression[expression.length - 1] : expression).prototype;
+ instance = Object.create(controllerPrototype || null);
+
+ if (identifier) {
+ addIdentifier(locals, identifier, instance, constructor || expression.name);
+ }
+
+ var instantiate;
+ return instantiate = extend(function() {
+ var result = $injector.invoke(expression, instance, locals, constructor);
+ if (result !== instance && (isObject(result) || isFunction(result))) {
+ instance = result;
+ if (identifier) {
+ // If result changed, re-assign controllerAs value to scope.
+ addIdentifier(locals, identifier, instance, constructor || expression.name);
+ }
+ }
+ return instance;
+ }, {
+ instance: instance,
+ identifier: identifier
+ });
+ }
+
+ instance = $injector.instantiate(expression, locals, constructor);
+
+ if (identifier) {
+ addIdentifier(locals, identifier, instance, constructor || expression.name);
+ }
+
+ return instance;
+ };
+
+ function addIdentifier(locals, identifier, instance, name) {
+ if (!(locals && isObject(locals.$scope))) {
+ throw minErr('$controller')('noscp',
+ "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",
+ name, identifier);
+ }
+
+ locals.$scope[identifier] = instance;
+ }
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $document
+ * @requires $window
+ *
+ * @description
+ * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object.
+ *
+ * @example
+ <example module="documentExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <p>$document title: <b ng-bind="title"></b></p>
+ <p>window.document title: <b ng-bind="windowTitle"></b></p>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('documentExample', [])
+ .controller('ExampleController', ['$scope', '$document', function($scope, $document) {
+ $scope.title = $document[0].title;
+ $scope.windowTitle = angular.element(window.document)[0].title;
+ }]);
+ </file>
+ </example>
+ */
+function $DocumentProvider() {
+ this.$get = ['$window', function(window) {
+ return jqLite(window.document);
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $exceptionHandler
+ * @requires ng.$log
+ *
+ * @description
+ * Any uncaught exception in angular expressions is delegated to this service.
+ * The default implementation simply delegates to `$log.error` which logs it into
+ * the browser console.
+ *
+ * In unit tests, if `angular-mocks.js` is loaded, this service is overridden by
+ * {@link ngMock.$exceptionHandler mock $exceptionHandler} which aids in testing.
+ *
+ * ## Example:
+ *
+ * ```js
+ * angular.module('exceptionOverride', []).factory('$exceptionHandler', function() {
+ * return function(exception, cause) {
+ * exception.message += ' (caused by "' + cause + '")';
+ * throw exception;
+ * };
+ * });
+ * ```
+ *
+ * This example will override the normal action of `$exceptionHandler`, to make angular
+ * exceptions fail hard when they happen, instead of just logging to the console.
+ *
+ * <hr />
+ * Note, that code executed in event-listeners (even those registered using jqLite's `on`/`bind`
+ * methods) does not delegate exceptions to the {@link ng.$exceptionHandler $exceptionHandler}
+ * (unless executed during a digest).
+ *
+ * If you wish, you can manually delegate exceptions, e.g.
+ * `try { ... } catch(e) { $exceptionHandler(e); }`
+ *
+ * @param {Error} exception Exception associated with the error.
+ * @param {string=} cause optional information about the context in which
+ * the error was thrown.
+ *
+ */
+function $ExceptionHandlerProvider() {
+ this.$get = ['$log', function($log) {
+ return function(exception, cause) {
+ $log.error.apply($log, arguments);
+ };
+ }];
+}
+
+var $$ForceReflowProvider = function() {
+ this.$get = ['$document', function($document) {
+ return function(domNode) {
+ //the line below will force the browser to perform a repaint so
+ //that all the animated elements within the animation frame will
+ //be properly updated and drawn on screen. This is required to
+ //ensure that the preparation animation is properly flushed so that
+ //the active state picks up from there. DO NOT REMOVE THIS LINE.
+ //DO NOT OPTIMIZE THIS LINE. THE MINIFIER WILL REMOVE IT OTHERWISE WHICH
+ //WILL RESULT IN AN UNPREDICTABLE BUG THAT IS VERY HARD TO TRACK DOWN AND
+ //WILL TAKE YEARS AWAY FROM YOUR LIFE.
+ if (domNode) {
+ if (!domNode.nodeType && domNode instanceof jqLite) {
+ domNode = domNode[0];
+ }
+ } else {
+ domNode = $document[0].body;
+ }
+ return domNode.offsetWidth + 1;
+ };
+ }];
+};
+
+var APPLICATION_JSON = 'application/json';
+var CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': APPLICATION_JSON + ';charset=utf-8'};
+var JSON_START = /^\[|^\{(?!\{)/;
+var JSON_ENDS = {
+ '[': /]$/,
+ '{': /}$/
+};
+var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/;
+var $httpMinErr = minErr('$http');
+var $httpMinErrLegacyFn = function(method) {
+ return function() {
+ throw $httpMinErr('legacy', 'The method `{0}` on the promise returned from `$http` has been disabled.', method);
+ };
+};
+
+function serializeValue(v) {
+ if (isObject(v)) {
+ return isDate(v) ? v.toISOString() : toJson(v);
+ }
+ return v;
+}
+
+
+function $HttpParamSerializerProvider() {
+ /**
+ * @ngdoc service
+ * @name $httpParamSerializer
+ * @description
+ *
+ * Default {@link $http `$http`} params serializer that converts objects to strings
+ * according to the following rules:
+ *
+ * * `{'foo': 'bar'}` results in `foo=bar`
+ * * `{'foo': Date.now()}` results in `foo=2015-04-01T09%3A50%3A49.262Z` (`toISOString()` and encoded representation of a Date object)
+ * * `{'foo': ['bar', 'baz']}` results in `foo=bar&foo=baz` (repeated key for each array element)
+ * * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D"` (stringified and encoded representation of an object)
+ *
+ * Note that serializer will sort the request parameters alphabetically.
+ * */
+
+ this.$get = function() {
+ return function ngParamSerializer(params) {
+ if (!params) return '';
+ var parts = [];
+ forEachSorted(params, function(value, key) {
+ if (value === null || isUndefined(value)) return;
+ if (isArray(value)) {
+ forEach(value, function(v, k) {
+ parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(v)));
+ });
+ } else {
+ parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(value)));
+ }
+ });
+
+ return parts.join('&');
+ };
+ };
+}
+
+function $HttpParamSerializerJQLikeProvider() {
+ /**
+ * @ngdoc service
+ * @name $httpParamSerializerJQLike
+ * @description
+ *
+ * Alternative {@link $http `$http`} params serializer that follows
+ * jQuery's [`param()`](http://api.jquery.com/jquery.param/) method logic.
+ * The serializer will also sort the params alphabetically.
+ *
+ * To use it for serializing `$http` request parameters, set it as the `paramSerializer` property:
+ *
+ * ```js
+ * $http({
+ * url: myUrl,
+ * method: 'GET',
+ * params: myParams,
+ * paramSerializer: '$httpParamSerializerJQLike'
+ * });
+ * ```
+ *
+ * It is also possible to set it as the default `paramSerializer` in the
+ * {@link $httpProvider#defaults `$httpProvider`}.
+ *
+ * Additionally, you can inject the serializer and use it explicitly, for example to serialize
+ * form data for submission:
+ *
+ * ```js
+ * .controller(function($http, $httpParamSerializerJQLike) {
+ * //...
+ *
+ * $http({
+ * url: myUrl,
+ * method: 'POST',
+ * data: $httpParamSerializerJQLike(myData),
+ * headers: {
+ * 'Content-Type': 'application/x-www-form-urlencoded'
+ * }
+ * });
+ *
+ * });
+ * ```
+ *
+ * */
+ this.$get = function() {
+ return function jQueryLikeParamSerializer(params) {
+ if (!params) return '';
+ var parts = [];
+ serialize(params, '', true);
+ return parts.join('&');
+
+ function serialize(toSerialize, prefix, topLevel) {
+ if (toSerialize === null || isUndefined(toSerialize)) return;
+ if (isArray(toSerialize)) {
+ forEach(toSerialize, function(value, index) {
+ serialize(value, prefix + '[' + (isObject(value) ? index : '') + ']');
+ });
+ } else if (isObject(toSerialize) && !isDate(toSerialize)) {
+ forEachSorted(toSerialize, function(value, key) {
+ serialize(value, prefix +
+ (topLevel ? '' : '[') +
+ key +
+ (topLevel ? '' : ']'));
+ });
+ } else {
+ parts.push(encodeUriQuery(prefix) + '=' + encodeUriQuery(serializeValue(toSerialize)));
+ }
+ }
+ };
+ };
+}
+
+function defaultHttpResponseTransform(data, headers) {
+ if (isString(data)) {
+ // Strip json vulnerability protection prefix and trim whitespace
+ var tempData = data.replace(JSON_PROTECTION_PREFIX, '').trim();
+
+ if (tempData) {
+ var contentType = headers('Content-Type');
+ if ((contentType && (contentType.indexOf(APPLICATION_JSON) === 0)) || isJsonLike(tempData)) {
+ data = fromJson(tempData);
+ }
+ }
+ }
+
+ return data;
+}
+
+function isJsonLike(str) {
+ var jsonStart = str.match(JSON_START);
+ return jsonStart && JSON_ENDS[jsonStart[0]].test(str);
+}
+
+/**
+ * Parse headers into key value object
+ *
+ * @param {string} headers Raw headers as a string
+ * @returns {Object} Parsed headers as key value object
+ */
+function parseHeaders(headers) {
+ var parsed = createMap(), i;
+
+ function fillInParsed(key, val) {
+ if (key) {
+ parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+ }
+ }
+
+ if (isString(headers)) {
+ forEach(headers.split('\n'), function(line) {
+ i = line.indexOf(':');
+ fillInParsed(lowercase(trim(line.substr(0, i))), trim(line.substr(i + 1)));
+ });
+ } else if (isObject(headers)) {
+ forEach(headers, function(headerVal, headerKey) {
+ fillInParsed(lowercase(headerKey), trim(headerVal));
+ });
+ }
+
+ return parsed;
+}
+
+
+/**
+ * Returns a function that provides access to parsed headers.
+ *
+ * Headers are lazy parsed when first requested.
+ * @see parseHeaders
+ *
+ * @param {(string|Object)} headers Headers to provide access to.
+ * @returns {function(string=)} Returns a getter function which if called with:
+ *
+ * - if called with single an argument returns a single header value or null
+ * - if called with no arguments returns an object containing all headers.
+ */
+function headersGetter(headers) {
+ var headersObj;
+
+ return function(name) {
+ if (!headersObj) headersObj = parseHeaders(headers);
+
+ if (name) {
+ var value = headersObj[lowercase(name)];
+ if (value === void 0) {
+ value = null;
+ }
+ return value;
+ }
+
+ return headersObj;
+ };
+}
+
+
+/**
+ * Chain all given functions
+ *
+ * This function is used for both request and response transforming
+ *
+ * @param {*} data Data to transform.
+ * @param {function(string=)} headers HTTP headers getter fn.
+ * @param {number} status HTTP status code of the response.
+ * @param {(Function|Array.<Function>)} fns Function or an array of functions.
+ * @returns {*} Transformed data.
+ */
+function transformData(data, headers, status, fns) {
+ if (isFunction(fns)) {
+ return fns(data, headers, status);
+ }
+
+ forEach(fns, function(fn) {
+ data = fn(data, headers, status);
+ });
+
+ return data;
+}
+
+
+function isSuccess(status) {
+ return 200 <= status && status < 300;
+}
+
+
+/**
+ * @ngdoc provider
+ * @name $httpProvider
+ * @description
+ * Use `$httpProvider` to change the default behavior of the {@link ng.$http $http} service.
+ * */
+function $HttpProvider() {
+ /**
+ * @ngdoc property
+ * @name $httpProvider#defaults
+ * @description
+ *
+ * Object containing default values for all {@link ng.$http $http} requests.
+ *
+ * - **`defaults.cache`** - {Object} - an object built with {@link ng.$cacheFactory `$cacheFactory`}
+ * that will provide the cache for all requests who set their `cache` property to `true`.
+ * If you set the `defaults.cache = false` then only requests that specify their own custom
+ * cache object will be cached. See {@link $http#caching $http Caching} for more information.
+ *
+ * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token.
+ * Defaults value is `'XSRF-TOKEN'`.
+ *
+ * - **`defaults.xsrfHeaderName`** - {string} - Name of HTTP header to populate with the
+ * XSRF token. Defaults value is `'X-XSRF-TOKEN'`.
+ *
+ * - **`defaults.headers`** - {Object} - Default headers for all $http requests.
+ * Refer to {@link ng.$http#setting-http-headers $http} for documentation on
+ * setting default headers.
+ * - **`defaults.headers.common`**
+ * - **`defaults.headers.post`**
+ * - **`defaults.headers.put`**
+ * - **`defaults.headers.patch`**
+ *
+ *
+ * - **`defaults.paramSerializer`** - `{string|function(Object<string,string>):string}` - A function
+ * used to the prepare string representation of request parameters (specified as an object).
+ * If specified as string, it is interpreted as a function registered with the {@link auto.$injector $injector}.
+ * Defaults to {@link ng.$httpParamSerializer $httpParamSerializer}.
+ *
+ **/
+ var defaults = this.defaults = {
+ // transform incoming response data
+ transformResponse: [defaultHttpResponseTransform],
+
+ // transform outgoing request data
+ transformRequest: [function(d) {
+ return isObject(d) && !isFile(d) && !isBlob(d) && !isFormData(d) ? toJson(d) : d;
+ }],
+
+ // default headers
+ headers: {
+ common: {
+ 'Accept': 'application/json, text/plain, */*'
+ },
+ post: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
+ put: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
+ patch: shallowCopy(CONTENT_TYPE_APPLICATION_JSON)
+ },
+
+ xsrfCookieName: 'XSRF-TOKEN',
+ xsrfHeaderName: 'X-XSRF-TOKEN',
+
+ paramSerializer: '$httpParamSerializer'
+ };
+
+ var useApplyAsync = false;
+ /**
+ * @ngdoc method
+ * @name $httpProvider#useApplyAsync
+ * @description
+ *
+ * Configure $http service to combine processing of multiple http responses received at around
+ * the same time via {@link ng.$rootScope.Scope#$applyAsync $rootScope.$applyAsync}. This can result in
+ * significant performance improvement for bigger applications that make many HTTP requests
+ * concurrently (common during application bootstrap).
+ *
+ * Defaults to false. If no value is specified, returns the current configured value.
+ *
+ * @param {boolean=} value If true, when requests are loaded, they will schedule a deferred
+ * "apply" on the next tick, giving time for subsequent requests in a roughly ~10ms window
+ * to load and share the same digest cycle.
+ *
+ * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining.
+ * otherwise, returns the current configured value.
+ **/
+ this.useApplyAsync = function(value) {
+ if (isDefined(value)) {
+ useApplyAsync = !!value;
+ return this;
+ }
+ return useApplyAsync;
+ };
+
+ var useLegacyPromise = true;
+ /**
+ * @ngdoc method
+ * @name $httpProvider#useLegacyPromiseExtensions
+ * @description
+ *
+ * Configure `$http` service to return promises without the shorthand methods `success` and `error`.
+ * This should be used to make sure that applications work without these methods.
+ *
+ * Defaults to false. If no value is specified, returns the current configured value.
+ *
+ * @param {boolean=} value If true, `$http` will return a normal promise without the `success` and `error` methods.
+ *
+ * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining.
+ * otherwise, returns the current configured value.
+ **/
+ this.useLegacyPromiseExtensions = function(value) {
+ if (isDefined(value)) {
+ useLegacyPromise = !!value;
+ return this;
+ }
+ return useLegacyPromise;
+ };
+
+ /**
+ * @ngdoc property
+ * @name $httpProvider#interceptors
+ * @description
+ *
+ * Array containing service factories for all synchronous or asynchronous {@link ng.$http $http}
+ * pre-processing of request or postprocessing of responses.
+ *
+ * These service factories are ordered by request, i.e. they are applied in the same order as the
+ * array, on request, but reverse order, on response.
+ *
+ * {@link ng.$http#interceptors Interceptors detailed info}
+ **/
+ var interceptorFactories = this.interceptors = [];
+
+ this.$get = ['$httpBackend', '$$cookieReader', '$cacheFactory', '$rootScope', '$q', '$injector',
+ function($httpBackend, $$cookieReader, $cacheFactory, $rootScope, $q, $injector) {
+
+ var defaultCache = $cacheFactory('$http');
+
+ /**
+ * Make sure that default param serializer is exposed as a function
+ */
+ defaults.paramSerializer = isString(defaults.paramSerializer) ?
+ $injector.get(defaults.paramSerializer) : defaults.paramSerializer;
+
+ /**
+ * Interceptors stored in reverse order. Inner interceptors before outer interceptors.
+ * The reversal is needed so that we can build up the interception chain around the
+ * server request.
+ */
+ var reversedInterceptors = [];
+
+ forEach(interceptorFactories, function(interceptorFactory) {
+ reversedInterceptors.unshift(isString(interceptorFactory)
+ ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory));
+ });
+
+ /**
+ * @ngdoc service
+ * @kind function
+ * @name $http
+ * @requires ng.$httpBackend
+ * @requires $cacheFactory
+ * @requires $rootScope
+ * @requires $q
+ * @requires $injector
+ *
+ * @description
+ * The `$http` service is a core Angular service that facilitates communication with the remote
+ * HTTP servers via the browser's [XMLHttpRequest](https://developer.mozilla.org/en/xmlhttprequest)
+ * object or via [JSONP](http://en.wikipedia.org/wiki/JSONP).
+ *
+ * For unit testing applications that use `$http` service, see
+ * {@link ngMock.$httpBackend $httpBackend mock}.
+ *
+ * For a higher level of abstraction, please check out the {@link ngResource.$resource
+ * $resource} service.
+ *
+ * The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by
+ * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage
+ * it is important to familiarize yourself with these APIs and the guarantees they provide.
+ *
+ *
+ * ## General usage
+ * The `$http` service is a function which takes a single argument — a configuration object —
+ * that is used to generate an HTTP request and returns a {@link ng.$q promise}.
+ *
+ * ```js
+ * // Simple GET request example :
+ * $http.get('/someUrl').
+ * then(function(response) {
+ * // this callback will be called asynchronously
+ * // when the response is available
+ * }, function(response) {
+ * // called asynchronously if an error occurs
+ * // or server returns response with an error status.
+ * });
+ * ```
+ *
+ * ```js
+ * // Simple POST request example (passing data) :
+ * $http.post('/someUrl', {msg:'hello word!'}).
+ * then(function(response) {
+ * // this callback will be called asynchronously
+ * // when the response is available
+ * }, function(response) {
+ * // called asynchronously if an error occurs
+ * // or server returns response with an error status.
+ * });
+ * ```
+ *
+ * The response object has these properties:
+ *
+ * - **data** – `{string|Object}` – The response body transformed with the transform
+ * functions.
+ * - **status** – `{number}` – HTTP status code of the response.
+ * - **headers** – `{function([headerName])}` – Header getter function.
+ * - **config** – `{Object}` – The configuration object that was used to generate the request.
+ * - **statusText** – `{string}` – HTTP status text of the response.
+ *
+ * A response status code between 200 and 299 is considered a success status and
+ * will result in the success callback being called. Note that if the response is a redirect,
+ * XMLHttpRequest will transparently follow it, meaning that the error callback will not be
+ * called for such responses.
+ *
+ * ## Writing Unit Tests that use $http
+ * When unit testing (using {@link ngMock ngMock}), it is necessary to call
+ * {@link ngMock.$httpBackend#flush $httpBackend.flush()} to flush each pending
+ * request using trained responses.
+ *
+ * ```
+ * $httpBackend.expectGET(...);
+ * $http.get(...);
+ * $httpBackend.flush();
+ * ```
+ *
+ * ## Shortcut methods
+ *
+ * Shortcut methods are also available. All shortcut methods require passing in the URL, and
+ * request data must be passed in for POST/PUT requests.
+ *
+ * ```js
+ * $http.get('/someUrl').then(successCallback);
+ * $http.post('/someUrl', data).then(successCallback);
+ * ```
+ *
+ * Complete list of shortcut methods:
+ *
+ * - {@link ng.$http#get $http.get}
+ * - {@link ng.$http#head $http.head}
+ * - {@link ng.$http#post $http.post}
+ * - {@link ng.$http#put $http.put}
+ * - {@link ng.$http#delete $http.delete}
+ * - {@link ng.$http#jsonp $http.jsonp}
+ * - {@link ng.$http#patch $http.patch}
+ *
+ *
+ * ## Deprecation Notice
+ * <div class="alert alert-danger">
+ * The `$http` legacy promise methods `success` and `error` have been deprecated.
+ * Use the standard `then` method instead.
+ * If {@link $httpProvider#useLegacyPromiseExtensions `$httpProvider.useLegacyPromiseExtensions`} is set to
+ * `false` then these methods will throw {@link $http:legacy `$http/legacy`} error.
+ * </div>
+ *
+ * ## Setting HTTP Headers
+ *
+ * The $http service will automatically add certain HTTP headers to all requests. These defaults
+ * can be fully configured by accessing the `$httpProvider.defaults.headers` configuration
+ * object, which currently contains this default configuration:
+ *
+ * - `$httpProvider.defaults.headers.common` (headers that are common for all requests):
+ * - `Accept: application/json, text/plain, * / *`
+ * - `$httpProvider.defaults.headers.post`: (header defaults for POST requests)
+ * - `Content-Type: application/json`
+ * - `$httpProvider.defaults.headers.put` (header defaults for PUT requests)
+ * - `Content-Type: application/json`
+ *
+ * To add or overwrite these defaults, simply add or remove a property from these configuration
+ * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object
+ * with the lowercased HTTP method name as the key, e.g.
+ * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }`.
+ *
+ * The defaults can also be set at runtime via the `$http.defaults` object in the same
+ * fashion. For example:
+ *
+ * ```
+ * module.run(function($http) {
+ * $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
+ * });
+ * ```
+ *
+ * In addition, you can supply a `headers` property in the config object passed when
+ * calling `$http(config)`, which overrides the defaults without changing them globally.
+ *
+ * To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis,
+ * Use the `headers` property, setting the desired header to `undefined`. For example:
+ *
+ * ```js
+ * var req = {
+ * method: 'POST',
+ * url: 'http://example.com',
+ * headers: {
+ * 'Content-Type': undefined
+ * },
+ * data: { test: 'test' }
+ * }
+ *
+ * $http(req).then(function(){...}, function(){...});
+ * ```
+ *
+ * ## Transforming Requests and Responses
+ *
+ * Both requests and responses can be transformed using transformation functions: `transformRequest`
+ * and `transformResponse`. These properties can be a single function that returns
+ * the transformed value (`function(data, headersGetter, status)`) or an array of such transformation functions,
+ * which allows you to `push` or `unshift` a new transformation function into the transformation chain.
+ *
+ * ### Default Transformations
+ *
+ * The `$httpProvider` provider and `$http` service expose `defaults.transformRequest` and
+ * `defaults.transformResponse` properties. If a request does not provide its own transformations
+ * then these will be applied.
+ *
+ * You can augment or replace the default transformations by modifying these properties by adding to or
+ * replacing the array.
+ *
+ * Angular provides the following default transformations:
+ *
+ * Request transformations (`$httpProvider.defaults.transformRequest` and `$http.defaults.transformRequest`):
+ *
+ * - If the `data` property of the request configuration object contains an object, serialize it
+ * into JSON format.
+ *
+ * Response transformations (`$httpProvider.defaults.transformResponse` and `$http.defaults.transformResponse`):
+ *
+ * - If XSRF prefix is detected, strip it (see Security Considerations section below).
+ * - If JSON response is detected, deserialize it using a JSON parser.
+ *
+ *
+ * ### Overriding the Default Transformations Per Request
+ *
+ * If you wish override the request/response transformations only for a single request then provide
+ * `transformRequest` and/or `transformResponse` properties on the configuration object passed
+ * into `$http`.
+ *
+ * Note that if you provide these properties on the config object the default transformations will be
+ * overwritten. If you wish to augment the default transformations then you must include them in your
+ * local transformation array.
+ *
+ * The following code demonstrates adding a new response transformation to be run after the default response
+ * transformations have been run.
+ *
+ * ```js
+ * function appendTransform(defaults, transform) {
+ *
+ * // We can't guarantee that the default transformation is an array
+ * defaults = angular.isArray(defaults) ? defaults : [defaults];
+ *
+ * // Append the new transformation to the defaults
+ * return defaults.concat(transform);
+ * }
+ *
+ * $http({
+ * url: '...',
+ * method: 'GET',
+ * transformResponse: appendTransform($http.defaults.transformResponse, function(value) {
+ * return doTransform(value);
+ * })
+ * });
+ * ```
+ *
+ *
+ * ## Caching
+ *
+ * To enable caching, set the request configuration `cache` property to `true` (to use default
+ * cache) or to a custom cache object (built with {@link ng.$cacheFactory `$cacheFactory`}).
+ * When the cache is enabled, `$http` stores the response from the server in the specified
+ * cache. The next time the same request is made, the response is served from the cache without
+ * sending a request to the server.
+ *
+ * Note that even if the response is served from cache, delivery of the data is asynchronous in
+ * the same way that real requests are.
+ *
+ * If there are multiple GET requests for the same URL that should be cached using the same
+ * cache, but the cache is not populated yet, only one request to the server will be made and
+ * the remaining requests will be fulfilled using the response from the first request.
+ *
+ * You can change the default cache to a new object (built with
+ * {@link ng.$cacheFactory `$cacheFactory`}) by updating the
+ * {@link ng.$http#defaults `$http.defaults.cache`} property. All requests who set
+ * their `cache` property to `true` will now use this cache object.
+ *
+ * If you set the default cache to `false` then only requests that specify their own custom
+ * cache object will be cached.
+ *
+ * ## Interceptors
+ *
+ * Before you start creating interceptors, be sure to understand the
+ * {@link ng.$q $q and deferred/promise APIs}.
+ *
+ * For purposes of global error handling, authentication, or any kind of synchronous or
+ * asynchronous pre-processing of request or postprocessing of responses, it is desirable to be
+ * able to intercept requests before they are handed to the server and
+ * responses before they are handed over to the application code that
+ * initiated these requests. The interceptors leverage the {@link ng.$q
+ * promise APIs} to fulfill this need for both synchronous and asynchronous pre-processing.
+ *
+ * The interceptors are service factories that are registered with the `$httpProvider` by
+ * adding them to the `$httpProvider.interceptors` array. The factory is called and
+ * injected with dependencies (if specified) and returns the interceptor.
+ *
+ * There are two kinds of interceptors (and two kinds of rejection interceptors):
+ *
+ * * `request`: interceptors get called with a http `config` object. The function is free to
+ * modify the `config` object or create a new one. The function needs to return the `config`
+ * object directly, or a promise containing the `config` or a new `config` object.
+ * * `requestError`: interceptor gets called when a previous interceptor threw an error or
+ * resolved with a rejection.
+ * * `response`: interceptors get called with http `response` object. The function is free to
+ * modify the `response` object or create a new one. The function needs to return the `response`
+ * object directly, or as a promise containing the `response` or a new `response` object.
+ * * `responseError`: interceptor gets called when a previous interceptor threw an error or
+ * resolved with a rejection.
+ *
+ *
+ * ```js
+ * // register the interceptor as a service
+ * $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
+ * return {
+ * // optional method
+ * 'request': function(config) {
+ * // do something on success
+ * return config;
+ * },
+ *
+ * // optional method
+ * 'requestError': function(rejection) {
+ * // do something on error
+ * if (canRecover(rejection)) {
+ * return responseOrNewPromise
+ * }
+ * return $q.reject(rejection);
+ * },
+ *
+ *
+ *
+ * // optional method
+ * 'response': function(response) {
+ * // do something on success
+ * return response;
+ * },
+ *
+ * // optional method
+ * 'responseError': function(rejection) {
+ * // do something on error
+ * if (canRecover(rejection)) {
+ * return responseOrNewPromise
+ * }
+ * return $q.reject(rejection);
+ * }
+ * };
+ * });
+ *
+ * $httpProvider.interceptors.push('myHttpInterceptor');
+ *
+ *
+ * // alternatively, register the interceptor via an anonymous factory
+ * $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
+ * return {
+ * 'request': function(config) {
+ * // same as above
+ * },
+ *
+ * 'response': function(response) {
+ * // same as above
+ * }
+ * };
+ * });
+ * ```
+ *
+ * ## Security Considerations
+ *
+ * When designing web applications, consider security threats from:
+ *
+ * - [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)
+ * - [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery)
+ *
+ * Both server and the client must cooperate in order to eliminate these threats. Angular comes
+ * pre-configured with strategies that address these issues, but for this to work backend server
+ * cooperation is required.
+ *
+ * ### JSON Vulnerability Protection
+ *
+ * A [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)
+ * allows third party website to turn your JSON resource URL into
+ * [JSONP](http://en.wikipedia.org/wiki/JSONP) request under some conditions. To
+ * counter this your server can prefix all JSON requests with following string `")]}',\n"`.
+ * Angular will automatically strip the prefix before processing it as JSON.
+ *
+ * For example if your server needs to return:
+ * ```js
+ * ['one','two']
+ * ```
+ *
+ * which is vulnerable to attack, your server can return:
+ * ```js
+ * )]}',
+ * ['one','two']
+ * ```
+ *
+ * Angular will strip the prefix, before processing the JSON.
+ *
+ *
+ * ### Cross Site Request Forgery (XSRF) Protection
+ *
+ * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is a technique by which
+ * an unauthorized site can gain your user's private data. Angular provides a mechanism
+ * to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie
+ * (by default, `XSRF-TOKEN`) and sets it as an HTTP header (`X-XSRF-TOKEN`). Since only
+ * JavaScript that runs on your domain could read the cookie, your server can be assured that
+ * the XHR came from JavaScript running on your domain. The header will not be set for
+ * cross-domain requests.
+ *
+ * To take advantage of this, your server needs to set a token in a JavaScript readable session
+ * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the
+ * server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure
+ * that only JavaScript running on your domain could have sent the request. The token must be
+ * unique for each user and must be verifiable by the server (to prevent the JavaScript from
+ * making up its own tokens). We recommend that the token is a digest of your site's
+ * authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography))
+ * for added security.
+ *
+ * The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName
+ * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time,
+ * or the per-request config object.
+ *
+ * In order to prevent collisions in environments where multiple Angular apps share the
+ * same domain or subdomain, we recommend that each application uses unique cookie name.
+ *
+ * @param {object} config Object describing the request to be made and how it should be
+ * processed. The object has following properties:
+ *
+ * - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc)
+ * - **url** – `{string}` – Absolute or relative URL of the resource that is being requested.
+ * - **params** – `{Object.<string|Object>}` – Map of strings or objects which will be serialized
+ * with the `paramSerializer` and appended as GET parameters.
+ * - **data** – `{string|Object}` – Data to be sent as the request message data.
+ * - **headers** – `{Object}` – Map of strings or functions which return strings representing
+ * HTTP headers to send to the server. If the return value of a function is null, the
+ * header will not be sent. Functions accept a config object as an argument.
+ * - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token.
+ * - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token.
+ * - **transformRequest** –
+ * `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
+ * transform function or an array of such functions. The transform function takes the http
+ * request body and headers and returns its transformed (typically serialized) version.
+ * See {@link ng.$http#overriding-the-default-transformations-per-request
+ * Overriding the Default Transformations}
+ * - **transformResponse** –
+ * `{function(data, headersGetter, status)|Array.<function(data, headersGetter, status)>}` –
+ * transform function or an array of such functions. The transform function takes the http
+ * response body, headers and status and returns its transformed (typically deserialized) version.
+ * See {@link ng.$http#overriding-the-default-transformations-per-request
+ * Overriding the Default TransformationjqLiks}
+ * - **paramSerializer** - `{string|function(Object<string,string>):string}` - A function used to
+ * prepare the string representation of request parameters (specified as an object).
+ * If specified as string, it is interpreted as function registered with the
+ * {@link $injector $injector}, which means you can create your own serializer
+ * by registering it as a {@link auto.$provide#service service}.
+ * The default serializer is the {@link $httpParamSerializer $httpParamSerializer};
+ * alternatively, you can use the {@link $httpParamSerializerJQLike $httpParamSerializerJQLike}
+ * - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
+ * GET request, otherwise if a cache instance built with
+ * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
+ * caching.
+ * - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}
+ * that should abort the request when resolved.
+ * - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the
+ * XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)
+ * for more information.
+ * - **responseType** - `{string}` - see
+ * [XMLHttpRequest.responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#xmlhttprequest-responsetype).
+ *
+ * @returns {HttpPromise} Returns a {@link ng.$q `Promise}` that will be resolved to a response object
+ * when the request succeeds or fails.
+ *
+ *
+ * @property {Array.<Object>} pendingRequests Array of config objects for currently pending
+ * requests. This is primarily meant to be used for debugging purposes.
+ *
+ *
+ * @example
+<example module="httpExample">
+<file name="index.html">
+ <div ng-controller="FetchController">
+ <select ng-model="method" aria-label="Request method">
+ <option>GET</option>
+ <option>JSONP</option>
+ </select>
+ <input type="text" ng-model="url" size="80" aria-label="URL" />
+ <button id="fetchbtn" ng-click="fetch()">fetch</button><br>
+ <button id="samplegetbtn" ng-click="updateModel('GET', 'http-hello.html')">Sample GET</button>
+ <button id="samplejsonpbtn"
+ ng-click="updateModel('JSONP',
+ 'https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero')">
+ Sample JSONP
+ </button>
+ <button id="invalidjsonpbtn"
+ ng-click="updateModel('JSONP', 'https://angularjs.org/doesntexist&callback=JSON_CALLBACK')">
+ Invalid JSONP
+ </button>
+ <pre>http status code: {{status}}</pre>
+ <pre>http response data: {{data}}</pre>
+ </div>
+</file>
+<file name="script.js">
+ angular.module('httpExample', [])
+ .controller('FetchController', ['$scope', '$http', '$templateCache',
+ function($scope, $http, $templateCache) {
+ $scope.method = 'GET';
+ $scope.url = 'http-hello.html';
+
+ $scope.fetch = function() {
+ $scope.code = null;
+ $scope.response = null;
+
+ $http({method: $scope.method, url: $scope.url, cache: $templateCache}).
+ then(function(response) {
+ $scope.status = response.status;
+ $scope.data = response.data;
+ }, function(response) {
+ $scope.data = response.data || "Request failed";
+ $scope.status = response.status;
+ });
+ };
+
+ $scope.updateModel = function(method, url) {
+ $scope.method = method;
+ $scope.url = url;
+ };
+ }]);
+</file>
+<file name="http-hello.html">
+ Hello, $http!
+</file>
+<file name="protractor.js" type="protractor">
+ var status = element(by.binding('status'));
+ var data = element(by.binding('data'));
+ var fetchBtn = element(by.id('fetchbtn'));
+ var sampleGetBtn = element(by.id('samplegetbtn'));
+ var sampleJsonpBtn = element(by.id('samplejsonpbtn'));
+ var invalidJsonpBtn = element(by.id('invalidjsonpbtn'));
+
+ it('should make an xhr GET request', function() {
+ sampleGetBtn.click();
+ fetchBtn.click();
+ expect(status.getText()).toMatch('200');
+ expect(data.getText()).toMatch(/Hello, \$http!/);
+ });
+
+// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185
+// it('should make a JSONP request to angularjs.org', function() {
+// sampleJsonpBtn.click();
+// fetchBtn.click();
+// expect(status.getText()).toMatch('200');
+// expect(data.getText()).toMatch(/Super Hero!/);
+// });
+
+ it('should make JSONP request to invalid URL and invoke the error handler',
+ function() {
+ invalidJsonpBtn.click();
+ fetchBtn.click();
+ expect(status.getText()).toMatch('0');
+ expect(data.getText()).toMatch('Request failed');
+ });
+</file>
+</example>
+ */
+ function $http(requestConfig) {
+
+ if (!angular.isObject(requestConfig)) {
+ throw minErr('$http')('badreq', 'Http request configuration must be an object. Received: {0}', requestConfig);
+ }
+
+ var config = extend({
+ method: 'get',
+ transformRequest: defaults.transformRequest,
+ transformResponse: defaults.transformResponse,
+ paramSerializer: defaults.paramSerializer
+ }, requestConfig);
+
+ config.headers = mergeHeaders(requestConfig);
+ config.method = uppercase(config.method);
+ config.paramSerializer = isString(config.paramSerializer) ?
+ $injector.get(config.paramSerializer) : config.paramSerializer;
+
+ var serverRequest = function(config) {
+ var headers = config.headers;
+ var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest);
+
+ // strip content-type if data is undefined
+ if (isUndefined(reqData)) {
+ forEach(headers, function(value, header) {
+ if (lowercase(header) === 'content-type') {
+ delete headers[header];
+ }
+ });
+ }
+
+ if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) {
+ config.withCredentials = defaults.withCredentials;
+ }
+
+ // send request
+ return sendReq(config, reqData).then(transformResponse, transformResponse);
+ };
+
+ var chain = [serverRequest, undefined];
+ var promise = $q.when(config);
+
+ // apply interceptors
+ forEach(reversedInterceptors, function(interceptor) {
+ if (interceptor.request || interceptor.requestError) {
+ chain.unshift(interceptor.request, interceptor.requestError);
+ }
+ if (interceptor.response || interceptor.responseError) {
+ chain.push(interceptor.response, interceptor.responseError);
+ }
+ });
+
+ while (chain.length) {
+ var thenFn = chain.shift();
+ var rejectFn = chain.shift();
+
+ promise = promise.then(thenFn, rejectFn);
+ }
+
+ if (useLegacyPromise) {
+ promise.success = function(fn) {
+ assertArgFn(fn, 'fn');
+
+ promise.then(function(response) {
+ fn(response.data, response.status, response.headers, config);
+ });
+ return promise;
+ };
+
+ promise.error = function(fn) {
+ assertArgFn(fn, 'fn');
+
+ promise.then(null, function(response) {
+ fn(response.data, response.status, response.headers, config);
+ });
+ return promise;
+ };
+ } else {
+ promise.success = $httpMinErrLegacyFn('success');
+ promise.error = $httpMinErrLegacyFn('error');
+ }
+
+ return promise;
+
+ function transformResponse(response) {
+ // make a copy since the response must be cacheable
+ var resp = extend({}, response);
+ if (!response.data) {
+ resp.data = response.data;
+ } else {
+ resp.data = transformData(response.data, response.headers, response.status, config.transformResponse);
+ }
+ return (isSuccess(response.status))
+ ? resp
+ : $q.reject(resp);
+ }
+
+ function executeHeaderFns(headers, config) {
+ var headerContent, processedHeaders = {};
+
+ forEach(headers, function(headerFn, header) {
+ if (isFunction(headerFn)) {
+ headerContent = headerFn(config);
+ if (headerContent != null) {
+ processedHeaders[header] = headerContent;
+ }
+ } else {
+ processedHeaders[header] = headerFn;
+ }
+ });
+
+ return processedHeaders;
+ }
+
+ function mergeHeaders(config) {
+ var defHeaders = defaults.headers,
+ reqHeaders = extend({}, config.headers),
+ defHeaderName, lowercaseDefHeaderName, reqHeaderName;
+
+ defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]);
+
+ // using for-in instead of forEach to avoid unecessary iteration after header has been found
+ defaultHeadersIteration:
+ for (defHeaderName in defHeaders) {
+ lowercaseDefHeaderName = lowercase(defHeaderName);
+
+ for (reqHeaderName in reqHeaders) {
+ if (lowercase(reqHeaderName) === lowercaseDefHeaderName) {
+ continue defaultHeadersIteration;
+ }
+ }
+
+ reqHeaders[defHeaderName] = defHeaders[defHeaderName];
+ }
+
+ // execute if header value is a function for merged headers
+ return executeHeaderFns(reqHeaders, shallowCopy(config));
+ }
+ }
+
+ $http.pendingRequests = [];
+
+ /**
+ * @ngdoc method
+ * @name $http#get
+ *
+ * @description
+ * Shortcut method to perform `GET` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#delete
+ *
+ * @description
+ * Shortcut method to perform `DELETE` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#head
+ *
+ * @description
+ * Shortcut method to perform `HEAD` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#jsonp
+ *
+ * @description
+ * Shortcut method to perform `JSONP` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request.
+ * The name of the callback should be the string `JSON_CALLBACK`.
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+ createShortMethods('get', 'delete', 'head', 'jsonp');
+
+ /**
+ * @ngdoc method
+ * @name $http#post
+ *
+ * @description
+ * Shortcut method to perform `POST` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {*} data Request content
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#put
+ *
+ * @description
+ * Shortcut method to perform `PUT` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {*} data Request content
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+
+ /**
+ * @ngdoc method
+ * @name $http#patch
+ *
+ * @description
+ * Shortcut method to perform `PATCH` request.
+ *
+ * @param {string} url Relative or absolute URL specifying the destination of the request
+ * @param {*} data Request content
+ * @param {Object=} config Optional configuration object
+ * @returns {HttpPromise} Future object
+ */
+ createShortMethodsWithData('post', 'put', 'patch');
+
+ /**
+ * @ngdoc property
+ * @name $http#defaults
+ *
+ * @description
+ * Runtime equivalent of the `$httpProvider.defaults` property. Allows configuration of
+ * default headers, withCredentials as well as request and response transformations.
+ *
+ * See "Setting HTTP Headers" and "Transforming Requests and Responses" sections above.
+ */
+ $http.defaults = defaults;
+
+
+ return $http;
+
+
+ function createShortMethods(names) {
+ forEach(arguments, function(name) {
+ $http[name] = function(url, config) {
+ return $http(extend({}, config || {}, {
+ method: name,
+ url: url
+ }));
+ };
+ });
+ }
+
+
+ function createShortMethodsWithData(name) {
+ forEach(arguments, function(name) {
+ $http[name] = function(url, data, config) {
+ return $http(extend({}, config || {}, {
+ method: name,
+ url: url,
+ data: data
+ }));
+ };
+ });
+ }
+
+
+ /**
+ * Makes the request.
+ *
+ * !!! ACCESSES CLOSURE VARS:
+ * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests
+ */
+ function sendReq(config, reqData) {
+ var deferred = $q.defer(),
+ promise = deferred.promise,
+ cache,
+ cachedResp,
+ reqHeaders = config.headers,
+ url = buildUrl(config.url, config.paramSerializer(config.params));
+
+ $http.pendingRequests.push(config);
+ promise.then(removePendingReq, removePendingReq);
+
+
+ if ((config.cache || defaults.cache) && config.cache !== false &&
+ (config.method === 'GET' || config.method === 'JSONP')) {
+ cache = isObject(config.cache) ? config.cache
+ : isObject(defaults.cache) ? defaults.cache
+ : defaultCache;
+ }
+
+ if (cache) {
+ cachedResp = cache.get(url);
+ if (isDefined(cachedResp)) {
+ if (isPromiseLike(cachedResp)) {
+ // cached request has already been sent, but there is no response yet
+ cachedResp.then(resolvePromiseWithResult, resolvePromiseWithResult);
+ } else {
+ // serving from cache
+ if (isArray(cachedResp)) {
+ resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3]);
+ } else {
+ resolvePromise(cachedResp, 200, {}, 'OK');
+ }
+ }
+ } else {
+ // put the promise for the non-transformed response into cache as a placeholder
+ cache.put(url, promise);
+ }
+ }
+
+
+ // if we won't have the response in cache, set the xsrf headers and
+ // send the request to the backend
+ if (isUndefined(cachedResp)) {
+ var xsrfValue = urlIsSameOrigin(config.url)
+ ? $$cookieReader()[config.xsrfCookieName || defaults.xsrfCookieName]
+ : undefined;
+ if (xsrfValue) {
+ reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;
+ }
+
+ $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,
+ config.withCredentials, config.responseType);
+ }
+
+ return promise;
+
+
+ /**
+ * Callback registered to $httpBackend():
+ * - caches the response if desired
+ * - resolves the raw $http promise
+ * - calls $apply
+ */
+ function done(status, response, headersString, statusText) {
+ if (cache) {
+ if (isSuccess(status)) {
+ cache.put(url, [status, response, parseHeaders(headersString), statusText]);
+ } else {
+ // remove promise from the cache
+ cache.remove(url);
+ }
+ }
+
+ function resolveHttpPromise() {
+ resolvePromise(response, status, headersString, statusText);
+ }
+
+ if (useApplyAsync) {
+ $rootScope.$applyAsync(resolveHttpPromise);
+ } else {
+ resolveHttpPromise();
+ if (!$rootScope.$$phase) $rootScope.$apply();
+ }
+ }
+
+
+ /**
+ * Resolves the raw $http promise.
+ */
+ function resolvePromise(response, status, headers, statusText) {
+ // normalize internal statuses to 0
+ status = Math.max(status, 0);
+
+ (isSuccess(status) ? deferred.resolve : deferred.reject)({
+ data: response,
+ status: status,
+ headers: headersGetter(headers),
+ config: config,
+ statusText: statusText
+ });
+ }
+
+ function resolvePromiseWithResult(result) {
+ resolvePromise(result.data, result.status, shallowCopy(result.headers()), result.statusText);
+ }
+
+ function removePendingReq() {
+ var idx = $http.pendingRequests.indexOf(config);
+ if (idx !== -1) $http.pendingRequests.splice(idx, 1);
+ }
+ }
+
+
+ function buildUrl(url, serializedParams) {
+ if (serializedParams.length > 0) {
+ url += ((url.indexOf('?') == -1) ? '?' : '&') + serializedParams;
+ }
+ return url;
+ }
+ }];
+}
+
+function createXhr() {
+ return new window.XMLHttpRequest();
+}
+
+/**
+ * @ngdoc service
+ * @name $httpBackend
+ * @requires $window
+ * @requires $document
+ *
+ * @description
+ * HTTP backend used by the {@link ng.$http service} that delegates to
+ * XMLHttpRequest object or JSONP and deals with browser incompatibilities.
+ *
+ * You should never need to use this service directly, instead use the higher-level abstractions:
+ * {@link ng.$http $http} or {@link ngResource.$resource $resource}.
+ *
+ * During testing this implementation is swapped with {@link ngMock.$httpBackend mock
+ * $httpBackend} which can be trained with responses.
+ */
+function $HttpBackendProvider() {
+ this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {
+ return createHttpBackend($browser, createXhr, $browser.defer, $window.angular.callbacks, $document[0]);
+ }];
+}
+
+function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {
+ // TODO(vojta): fix the signature
+ return function(method, url, post, callback, headers, timeout, withCredentials, responseType) {
+ $browser.$$incOutstandingRequestCount();
+ url = url || $browser.url();
+
+ if (lowercase(method) == 'jsonp') {
+ var callbackId = '_' + (callbacks.counter++).toString(36);
+ callbacks[callbackId] = function(data) {
+ callbacks[callbackId].data = data;
+ callbacks[callbackId].called = true;
+ };
+
+ var jsonpDone = jsonpReq(url.replace('JSON_CALLBACK', 'angular.callbacks.' + callbackId),
+ callbackId, function(status, text) {
+ completeRequest(callback, status, callbacks[callbackId].data, "", text);
+ callbacks[callbackId] = noop;
+ });
+ } else {
+
+ var xhr = createXhr();
+
+ xhr.open(method, url, true);
+ forEach(headers, function(value, key) {
+ if (isDefined(value)) {
+ xhr.setRequestHeader(key, value);
+ }
+ });
+
+ xhr.onload = function requestLoaded() {
+ var statusText = xhr.statusText || '';
+
+ // responseText is the old-school way of retrieving response (supported by IE9)
+ // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)
+ var response = ('response' in xhr) ? xhr.response : xhr.responseText;
+
+ // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)
+ var status = xhr.status === 1223 ? 204 : xhr.status;
+
+ // fix status code when it is 0 (0 status is undocumented).
+ // Occurs when accessing file resources or on Android 4.1 stock browser
+ // while retrieving files from application cache.
+ if (status === 0) {
+ status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0;
+ }
+
+ completeRequest(callback,
+ status,
+ response,
+ xhr.getAllResponseHeaders(),
+ statusText);
+ };
+
+ var requestError = function() {
+ // The response is always empty
+ // See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error
+ completeRequest(callback, -1, null, null, '');
+ };
+
+ xhr.onerror = requestError;
+ xhr.onabort = requestError;
+
+ if (withCredentials) {
+ xhr.withCredentials = true;
+ }
+
+ if (responseType) {
+ try {
+ xhr.responseType = responseType;
+ } catch (e) {
+ // WebKit added support for the json responseType value on 09/03/2013
+ // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are
+ // known to throw when setting the value "json" as the response type. Other older
+ // browsers implementing the responseType
+ //
+ // The json response type can be ignored if not supported, because JSON payloads are
+ // parsed on the client-side regardless.
+ if (responseType !== 'json') {
+ throw e;
+ }
+ }
+ }
+
+ xhr.send(post);
+ }
+
+ if (timeout > 0) {
+ var timeoutId = $browserDefer(timeoutRequest, timeout);
+ } else if (isPromiseLike(timeout)) {
+ timeout.then(timeoutRequest);
+ }
+
+
+ function timeoutRequest() {
+ jsonpDone && jsonpDone();
+ xhr && xhr.abort();
+ }
+
+ function completeRequest(callback, status, response, headersString, statusText) {
+ // cancel timeout and subsequent timeout promise resolution
+ if (timeoutId !== undefined) {
+ $browserDefer.cancel(timeoutId);
+ }
+ jsonpDone = xhr = null;
+
+ callback(status, response, headersString, statusText);
+ $browser.$$completeOutstandingRequest(noop);
+ }
+ };
+
+ function jsonpReq(url, callbackId, done) {
+ // we can't use jQuery/jqLite here because jQuery does crazy stuff with script elements, e.g.:
+ // - fetches local scripts via XHR and evals them
+ // - adds and immediately removes script elements from the document
+ var script = rawDocument.createElement('script'), callback = null;
+ script.type = "text/javascript";
+ script.src = url;
+ script.async = true;
+
+ callback = function(event) {
+ removeEventListenerFn(script, "load", callback);
+ removeEventListenerFn(script, "error", callback);
+ rawDocument.body.removeChild(script);
+ script = null;
+ var status = -1;
+ var text = "unknown";
+
+ if (event) {
+ if (event.type === "load" && !callbacks[callbackId].called) {
+ event = { type: "error" };
+ }
+ text = event.type;
+ status = event.type === "error" ? 404 : 200;
+ }
+
+ if (done) {
+ done(status, text);
+ }
+ };
+
+ addEventListenerFn(script, "load", callback);
+ addEventListenerFn(script, "error", callback);
+ rawDocument.body.appendChild(script);
+ return callback;
+ }
+}
+
+var $interpolateMinErr = angular.$interpolateMinErr = minErr('$interpolate');
+$interpolateMinErr.throwNoconcat = function(text) {
+ throw $interpolateMinErr('noconcat',
+ "Error while interpolating: {0}\nStrict Contextual Escaping disallows " +
+ "interpolations that concatenate multiple expressions when a trusted value is " +
+ "required. See http://docs.angularjs.org/api/ng.$sce", text);
+};
+
+$interpolateMinErr.interr = function(text, err) {
+ return $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text, err.toString());
+};
+
+/**
+ * @ngdoc provider
+ * @name $interpolateProvider
+ *
+ * @description
+ *
+ * Used for configuring the interpolation markup. Defaults to `{{` and `}}`.
+ *
+ * @example
+<example module="customInterpolationApp">
+<file name="index.html">
+<script>
+ var customInterpolationApp = angular.module('customInterpolationApp', []);
+
+ customInterpolationApp.config(function($interpolateProvider) {
+ $interpolateProvider.startSymbol('//');
+ $interpolateProvider.endSymbol('//');
+ });
+
+
+ customInterpolationApp.controller('DemoController', function() {
+ this.label = "This binding is brought you by // interpolation symbols.";
+ });
+</script>
+<div ng-app="App" ng-controller="DemoController as demo">
+ //demo.label//
+</div>
+</file>
+<file name="protractor.js" type="protractor">
+ it('should interpolate binding with custom symbols', function() {
+ expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.');
+ });
+</file>
+</example>
+ */
+function $InterpolateProvider() {
+ var startSymbol = '{{';
+ var endSymbol = '}}';
+
+ /**
+ * @ngdoc method
+ * @name $interpolateProvider#startSymbol
+ * @description
+ * Symbol to denote start of expression in the interpolated string. Defaults to `{{`.
+ *
+ * @param {string=} value new value to set the starting symbol to.
+ * @returns {string|self} Returns the symbol when used as getter and self if used as setter.
+ */
+ this.startSymbol = function(value) {
+ if (value) {
+ startSymbol = value;
+ return this;
+ } else {
+ return startSymbol;
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $interpolateProvider#endSymbol
+ * @description
+ * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
+ *
+ * @param {string=} value new value to set the ending symbol to.
+ * @returns {string|self} Returns the symbol when used as getter and self if used as setter.
+ */
+ this.endSymbol = function(value) {
+ if (value) {
+ endSymbol = value;
+ return this;
+ } else {
+ return endSymbol;
+ }
+ };
+
+
+ this.$get = ['$parse', '$exceptionHandler', '$sce', function($parse, $exceptionHandler, $sce) {
+ var startSymbolLength = startSymbol.length,
+ endSymbolLength = endSymbol.length,
+ escapedStartRegexp = new RegExp(startSymbol.replace(/./g, escape), 'g'),
+ escapedEndRegexp = new RegExp(endSymbol.replace(/./g, escape), 'g');
+
+ function escape(ch) {
+ return '\\\\\\' + ch;
+ }
+
+ function unescapeText(text) {
+ return text.replace(escapedStartRegexp, startSymbol).
+ replace(escapedEndRegexp, endSymbol);
+ }
+
+ function stringify(value) {
+ if (value == null) { // null || undefined
+ return '';
+ }
+ switch (typeof value) {
+ case 'string':
+ break;
+ case 'number':
+ value = '' + value;
+ break;
+ default:
+ value = toJson(value);
+ }
+
+ return value;
+ }
+
+ /**
+ * @ngdoc service
+ * @name $interpolate
+ * @kind function
+ *
+ * @requires $parse
+ * @requires $sce
+ *
+ * @description
+ *
+ * Compiles a string with markup into an interpolation function. This service is used by the
+ * HTML {@link ng.$compile $compile} service for data binding. See
+ * {@link ng.$interpolateProvider $interpolateProvider} for configuring the
+ * interpolation markup.
+ *
+ *
+ * ```js
+ * var $interpolate = ...; // injected
+ * var exp = $interpolate('Hello {{name | uppercase}}!');
+ * expect(exp({name:'Angular'}).toEqual('Hello ANGULAR!');
+ * ```
+ *
+ * `$interpolate` takes an optional fourth argument, `allOrNothing`. If `allOrNothing` is
+ * `true`, the interpolation function will return `undefined` unless all embedded expressions
+ * evaluate to a value other than `undefined`.
+ *
+ * ```js
+ * var $interpolate = ...; // injected
+ * var context = {greeting: 'Hello', name: undefined };
+ *
+ * // default "forgiving" mode
+ * var exp = $interpolate('{{greeting}} {{name}}!');
+ * expect(exp(context)).toEqual('Hello !');
+ *
+ * // "allOrNothing" mode
+ * exp = $interpolate('{{greeting}} {{name}}!', false, null, true);
+ * expect(exp(context)).toBeUndefined();
+ * context.name = 'Angular';
+ * expect(exp(context)).toEqual('Hello Angular!');
+ * ```
+ *
+ * `allOrNothing` is useful for interpolating URLs. `ngSrc` and `ngSrcset` use this behavior.
+ *
+ * ####Escaped Interpolation
+ * $interpolate provides a mechanism for escaping interpolation markers. Start and end markers
+ * can be escaped by preceding each of their characters with a REVERSE SOLIDUS U+005C (backslash).
+ * It will be rendered as a regular start/end marker, and will not be interpreted as an expression
+ * or binding.
+ *
+ * This enables web-servers to prevent script injection attacks and defacing attacks, to some
+ * degree, while also enabling code examples to work without relying on the
+ * {@link ng.directive:ngNonBindable ngNonBindable} directive.
+ *
+ * **For security purposes, it is strongly encouraged that web servers escape user-supplied data,
+ * replacing angle brackets (<, >) with &lt; and &gt; respectively, and replacing all
+ * interpolation start/end markers with their escaped counterparts.**
+ *
+ * Escaped interpolation markers are only replaced with the actual interpolation markers in rendered
+ * output when the $interpolate service processes the text. So, for HTML elements interpolated
+ * by {@link ng.$compile $compile}, or otherwise interpolated with the `mustHaveExpression` parameter
+ * set to `true`, the interpolated text must contain an unescaped interpolation expression. As such,
+ * this is typically useful only when user-data is used in rendering a template from the server, or
+ * when otherwise untrusted data is used by a directive.
+ *
+ * <example>
+ * <file name="index.html">
+ * <div ng-init="username='A user'">
+ * <p ng-init="apptitle='Escaping demo'">{{apptitle}}: \{\{ username = "defaced value"; \}\}
+ * </p>
+ * <p><strong>{{username}}</strong> attempts to inject code which will deface the
+ * application, but fails to accomplish their task, because the server has correctly
+ * escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash)
+ * characters.</p>
+ * <p>Instead, the result of the attempted script injection is visible, and can be removed
+ * from the database by an administrator.</p>
+ * </div>
+ * </file>
+ * </example>
+ *
+ * @param {string} text The text with markup to interpolate.
+ * @param {boolean=} mustHaveExpression if set to true then the interpolation string must have
+ * embedded expression in order to return an interpolation function. Strings with no
+ * embedded expression will return null for the interpolation function.
+ * @param {string=} trustedContext when provided, the returned function passes the interpolated
+ * result through {@link ng.$sce#getTrusted $sce.getTrusted(interpolatedResult,
+ * trustedContext)} before returning it. Refer to the {@link ng.$sce $sce} service that
+ * provides Strict Contextual Escaping for details.
+ * @param {boolean=} allOrNothing if `true`, then the returned function returns undefined
+ * unless all embedded expressions evaluate to a value other than `undefined`.
+ * @returns {function(context)} an interpolation function which is used to compute the
+ * interpolated string. The function has these parameters:
+ *
+ * - `context`: evaluation context for all expressions embedded in the interpolated text
+ */
+ function $interpolate(text, mustHaveExpression, trustedContext, allOrNothing) {
+ allOrNothing = !!allOrNothing;
+ var startIndex,
+ endIndex,
+ index = 0,
+ expressions = [],
+ parseFns = [],
+ textLength = text.length,
+ exp,
+ concat = [],
+ expressionPositions = [];
+
+ while (index < textLength) {
+ if (((startIndex = text.indexOf(startSymbol, index)) != -1) &&
+ ((endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) != -1)) {
+ if (index !== startIndex) {
+ concat.push(unescapeText(text.substring(index, startIndex)));
+ }
+ exp = text.substring(startIndex + startSymbolLength, endIndex);
+ expressions.push(exp);
+ parseFns.push($parse(exp, parseStringifyInterceptor));
+ index = endIndex + endSymbolLength;
+ expressionPositions.push(concat.length);
+ concat.push('');
+ } else {
+ // we did not find an interpolation, so we have to add the remainder to the separators array
+ if (index !== textLength) {
+ concat.push(unescapeText(text.substring(index)));
+ }
+ break;
+ }
+ }
+
+ // Concatenating expressions makes it hard to reason about whether some combination of
+ // concatenated values are unsafe to use and could easily lead to XSS. By requiring that a
+ // single expression be used for iframe[src], object[src], etc., we ensure that the value
+ // that's used is assigned or constructed by some JS code somewhere that is more testable or
+ // make it obvious that you bound the value to some user controlled value. This helps reduce
+ // the load when auditing for XSS issues.
+ if (trustedContext && concat.length > 1) {
+ $interpolateMinErr.throwNoconcat(text);
+ }
+
+ if (!mustHaveExpression || expressions.length) {
+ var compute = function(values) {
+ for (var i = 0, ii = expressions.length; i < ii; i++) {
+ if (allOrNothing && isUndefined(values[i])) return;
+ concat[expressionPositions[i]] = values[i];
+ }
+ return concat.join('');
+ };
+
+ var getValue = function(value) {
+ return trustedContext ?
+ $sce.getTrusted(trustedContext, value) :
+ $sce.valueOf(value);
+ };
+
+ return extend(function interpolationFn(context) {
+ var i = 0;
+ var ii = expressions.length;
+ var values = new Array(ii);
+
+ try {
+ for (; i < ii; i++) {
+ values[i] = parseFns[i](context);
+ }
+
+ return compute(values);
+ } catch (err) {
+ $exceptionHandler($interpolateMinErr.interr(text, err));
+ }
+
+ }, {
+ // all of these properties are undocumented for now
+ exp: text, //just for compatibility with regular watchers created via $watch
+ expressions: expressions,
+ $$watchDelegate: function(scope, listener) {
+ var lastValue;
+ return scope.$watchGroup(parseFns, function interpolateFnWatcher(values, oldValues) {
+ var currValue = compute(values);
+ if (isFunction(listener)) {
+ listener.call(this, currValue, values !== oldValues ? lastValue : currValue, scope);
+ }
+ lastValue = currValue;
+ });
+ }
+ });
+ }
+
+ function parseStringifyInterceptor(value) {
+ try {
+ value = getValue(value);
+ return allOrNothing && !isDefined(value) ? value : stringify(value);
+ } catch (err) {
+ $exceptionHandler($interpolateMinErr.interr(text, err));
+ }
+ }
+ }
+
+
+ /**
+ * @ngdoc method
+ * @name $interpolate#startSymbol
+ * @description
+ * Symbol to denote the start of expression in the interpolated string. Defaults to `{{`.
+ *
+ * Use {@link ng.$interpolateProvider#startSymbol `$interpolateProvider.startSymbol`} to change
+ * the symbol.
+ *
+ * @returns {string} start symbol.
+ */
+ $interpolate.startSymbol = function() {
+ return startSymbol;
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name $interpolate#endSymbol
+ * @description
+ * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
+ *
+ * Use {@link ng.$interpolateProvider#endSymbol `$interpolateProvider.endSymbol`} to change
+ * the symbol.
+ *
+ * @returns {string} end symbol.
+ */
+ $interpolate.endSymbol = function() {
+ return endSymbol;
+ };
+
+ return $interpolate;
+ }];
+}
+
+function $IntervalProvider() {
+ this.$get = ['$rootScope', '$window', '$q', '$$q',
+ function($rootScope, $window, $q, $$q) {
+ var intervals = {};
+
+
+ /**
+ * @ngdoc service
+ * @name $interval
+ *
+ * @description
+ * Angular's wrapper for `window.setInterval`. The `fn` function is executed every `delay`
+ * milliseconds.
+ *
+ * The return value of registering an interval function is a promise. This promise will be
+ * notified upon each tick of the interval, and will be resolved after `count` iterations, or
+ * run indefinitely if `count` is not defined. The value of the notification will be the
+ * number of iterations that have run.
+ * To cancel an interval, call `$interval.cancel(promise)`.
+ *
+ * In tests you can use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
+ * move forward by `millis` milliseconds and trigger any functions scheduled to run in that
+ * time.
+ *
+ * <div class="alert alert-warning">
+ * **Note**: Intervals created by this service must be explicitly destroyed when you are finished
+ * with them. In particular they are not automatically destroyed when a controller's scope or a
+ * directive's element are destroyed.
+ * You should take this into consideration and make sure to always cancel the interval at the
+ * appropriate moment. See the example below for more details on how and when to do this.
+ * </div>
+ *
+ * @param {function()} fn A function that should be called repeatedly.
+ * @param {number} delay Number of milliseconds between each function call.
+ * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
+ * indefinitely.
+ * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
+ * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
+ * @param {...*=} Pass additional parameters to the executed function.
+ * @returns {promise} A promise which will be notified on each iteration.
+ *
+ * @example
+ * <example module="intervalExample">
+ * <file name="index.html">
+ * <script>
+ * angular.module('intervalExample', [])
+ * .controller('ExampleController', ['$scope', '$interval',
+ * function($scope, $interval) {
+ * $scope.format = 'M/d/yy h:mm:ss a';
+ * $scope.blood_1 = 100;
+ * $scope.blood_2 = 120;
+ *
+ * var stop;
+ * $scope.fight = function() {
+ * // Don't start a new fight if we are already fighting
+ * if ( angular.isDefined(stop) ) return;
+ *
+ * stop = $interval(function() {
+ * if ($scope.blood_1 > 0 && $scope.blood_2 > 0) {
+ * $scope.blood_1 = $scope.blood_1 - 3;
+ * $scope.blood_2 = $scope.blood_2 - 4;
+ * } else {
+ * $scope.stopFight();
+ * }
+ * }, 100);
+ * };
+ *
+ * $scope.stopFight = function() {
+ * if (angular.isDefined(stop)) {
+ * $interval.cancel(stop);
+ * stop = undefined;
+ * }
+ * };
+ *
+ * $scope.resetFight = function() {
+ * $scope.blood_1 = 100;
+ * $scope.blood_2 = 120;
+ * };
+ *
+ * $scope.$on('$destroy', function() {
+ * // Make sure that the interval is destroyed too
+ * $scope.stopFight();
+ * });
+ * }])
+ * // Register the 'myCurrentTime' directive factory method.
+ * // We inject $interval and dateFilter service since the factory method is DI.
+ * .directive('myCurrentTime', ['$interval', 'dateFilter',
+ * function($interval, dateFilter) {
+ * // return the directive link function. (compile function not needed)
+ * return function(scope, element, attrs) {
+ * var format, // date format
+ * stopTime; // so that we can cancel the time updates
+ *
+ * // used to update the UI
+ * function updateTime() {
+ * element.text(dateFilter(new Date(), format));
+ * }
+ *
+ * // watch the expression, and update the UI on change.
+ * scope.$watch(attrs.myCurrentTime, function(value) {
+ * format = value;
+ * updateTime();
+ * });
+ *
+ * stopTime = $interval(updateTime, 1000);
+ *
+ * // listen on DOM destroy (removal) event, and cancel the next UI update
+ * // to prevent updating time after the DOM element was removed.
+ * element.on('$destroy', function() {
+ * $interval.cancel(stopTime);
+ * });
+ * }
+ * }]);
+ * </script>
+ *
+ * <div>
+ * <div ng-controller="ExampleController">
+ * <label>Date format: <input ng-model="format"></label> <hr/>
+ * Current time is: <span my-current-time="format"></span>
+ * <hr/>
+ * Blood 1 : <font color='red'>{{blood_1}}</font>
+ * Blood 2 : <font color='red'>{{blood_2}}</font>
+ * <button type="button" data-ng-click="fight()">Fight</button>
+ * <button type="button" data-ng-click="stopFight()">StopFight</button>
+ * <button type="button" data-ng-click="resetFight()">resetFight</button>
+ * </div>
+ * </div>
+ *
+ * </file>
+ * </example>
+ */
+ function interval(fn, delay, count, invokeApply) {
+ var hasParams = arguments.length > 4,
+ args = hasParams ? sliceArgs(arguments, 4) : [],
+ setInterval = $window.setInterval,
+ clearInterval = $window.clearInterval,
+ iteration = 0,
+ skipApply = (isDefined(invokeApply) && !invokeApply),
+ deferred = (skipApply ? $$q : $q).defer(),
+ promise = deferred.promise;
+
+ count = isDefined(count) ? count : 0;
+
+ promise.then(null, null, (!hasParams) ? fn : function() {
+ fn.apply(null, args);
+ });
+
+ promise.$$intervalId = setInterval(function tick() {
+ deferred.notify(iteration++);
+
+ if (count > 0 && iteration >= count) {
+ deferred.resolve(iteration);
+ clearInterval(promise.$$intervalId);
+ delete intervals[promise.$$intervalId];
+ }
+
+ if (!skipApply) $rootScope.$apply();
+
+ }, delay);
+
+ intervals[promise.$$intervalId] = deferred;
+
+ return promise;
+ }
+
+
+ /**
+ * @ngdoc method
+ * @name $interval#cancel
+ *
+ * @description
+ * Cancels a task associated with the `promise`.
+ *
+ * @param {Promise=} promise returned by the `$interval` function.
+ * @returns {boolean} Returns `true` if the task was successfully canceled.
+ */
+ interval.cancel = function(promise) {
+ if (promise && promise.$$intervalId in intervals) {
+ intervals[promise.$$intervalId].reject('canceled');
+ $window.clearInterval(promise.$$intervalId);
+ delete intervals[promise.$$intervalId];
+ return true;
+ }
+ return false;
+ };
+
+ return interval;
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $locale
+ *
+ * @description
+ * $locale service provides localization rules for various Angular components. As of right now the
+ * only public api is:
+ *
+ * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`)
+ */
+
+var PATH_MATCH = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
+ DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};
+var $locationMinErr = minErr('$location');
+
+
+/**
+ * Encode path using encodeUriSegment, ignoring forward slashes
+ *
+ * @param {string} path Path to encode
+ * @returns {string}
+ */
+function encodePath(path) {
+ var segments = path.split('/'),
+ i = segments.length;
+
+ while (i--) {
+ segments[i] = encodeUriSegment(segments[i]);
+ }
+
+ return segments.join('/');
+}
+
+function parseAbsoluteUrl(absoluteUrl, locationObj) {
+ var parsedUrl = urlResolve(absoluteUrl);
+
+ locationObj.$$protocol = parsedUrl.protocol;
+ locationObj.$$host = parsedUrl.hostname;
+ locationObj.$$port = toInt(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;
+}
+
+
+function parseAppUrl(relativeUrl, locationObj) {
+ var prefixed = (relativeUrl.charAt(0) !== '/');
+ if (prefixed) {
+ relativeUrl = '/' + relativeUrl;
+ }
+ var match = urlResolve(relativeUrl);
+ locationObj.$$path = decodeURIComponent(prefixed && match.pathname.charAt(0) === '/' ?
+ match.pathname.substring(1) : match.pathname);
+ locationObj.$$search = parseKeyValue(match.search);
+ locationObj.$$hash = decodeURIComponent(match.hash);
+
+ // make sure path starts with '/';
+ if (locationObj.$$path && locationObj.$$path.charAt(0) != '/') {
+ locationObj.$$path = '/' + locationObj.$$path;
+ }
+}
+
+
+/**
+ *
+ * @param {string} begin
+ * @param {string} whole
+ * @returns {string} returns text from whole after begin or undefined if it does not begin with
+ * expected string.
+ */
+function beginsWith(begin, whole) {
+ if (whole.indexOf(begin) === 0) {
+ return whole.substr(begin.length);
+ }
+}
+
+
+function stripHash(url) {
+ var index = url.indexOf('#');
+ return index == -1 ? url : url.substr(0, index);
+}
+
+function trimEmptyHash(url) {
+ return url.replace(/(#.+)|#$/, '$1');
+}
+
+
+function stripFile(url) {
+ return url.substr(0, stripHash(url).lastIndexOf('/') + 1);
+}
+
+/* return the server only (scheme://host:port) */
+function serverBase(url) {
+ return url.substring(0, url.indexOf('/', url.indexOf('//') + 2));
+}
+
+
+/**
+ * LocationHtml5Url represents an url
+ * This object is exposed as $location service when HTML5 mode is enabled and supported
+ *
+ * @constructor
+ * @param {string} appBase application base URL
+ * @param {string} appBaseNoFile application base URL stripped of any filename
+ * @param {string} basePrefix url path prefix
+ */
+function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
+ this.$$html5 = true;
+ basePrefix = basePrefix || '';
+ parseAbsoluteUrl(appBase, this);
+
+
+ /**
+ * Parse given html5 (regular) url string into properties
+ * @param {string} url HTML5 url
+ * @private
+ */
+ this.$$parse = function(url) {
+ var pathUrl = beginsWith(appBaseNoFile, url);
+ if (!isString(pathUrl)) {
+ throw $locationMinErr('ipthprfx', 'Invalid url "{0}", missing path prefix "{1}".', url,
+ appBaseNoFile);
+ }
+
+ parseAppUrl(pathUrl, this);
+
+ if (!this.$$path) {
+ this.$$path = '/';
+ }
+
+ this.$$compose();
+ };
+
+ /**
+ * Compose url and update `absUrl` property
+ * @private
+ */
+ this.$$compose = function() {
+ var search = toKeyValue(this.$$search),
+ hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
+
+ this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
+ this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/'
+ };
+
+ this.$$parseLinkUrl = function(url, relHref) {
+ if (relHref && relHref[0] === '#') {
+ // special case for links to hash fragments:
+ // keep the old url and only replace the hash fragment
+ this.hash(relHref.slice(1));
+ return true;
+ }
+ var appUrl, prevAppUrl;
+ var rewrittenUrl;
+
+ if ((appUrl = beginsWith(appBase, url)) !== undefined) {
+ prevAppUrl = appUrl;
+ if ((appUrl = beginsWith(basePrefix, appUrl)) !== undefined) {
+ rewrittenUrl = appBaseNoFile + (beginsWith('/', appUrl) || appUrl);
+ } else {
+ rewrittenUrl = appBase + prevAppUrl;
+ }
+ } else if ((appUrl = beginsWith(appBaseNoFile, url)) !== undefined) {
+ rewrittenUrl = appBaseNoFile + appUrl;
+ } else if (appBaseNoFile == url + '/') {
+ rewrittenUrl = appBaseNoFile;
+ }
+ if (rewrittenUrl) {
+ this.$$parse(rewrittenUrl);
+ }
+ return !!rewrittenUrl;
+ };
+}
+
+
+/**
+ * LocationHashbangUrl represents url
+ * This object is exposed as $location service when developer doesn't opt into html5 mode.
+ * It also serves as the base class for html5 mode fallback on legacy browsers.
+ *
+ * @constructor
+ * @param {string} appBase application base URL
+ * @param {string} appBaseNoFile application base URL stripped of any filename
+ * @param {string} hashPrefix hashbang prefix
+ */
+function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {
+
+ parseAbsoluteUrl(appBase, this);
+
+
+ /**
+ * Parse given hashbang url into properties
+ * @param {string} url Hashbang url
+ * @private
+ */
+ this.$$parse = function(url) {
+ var withoutBaseUrl = beginsWith(appBase, url) || beginsWith(appBaseNoFile, url);
+ var withoutHashUrl;
+
+ if (!isUndefined(withoutBaseUrl) && withoutBaseUrl.charAt(0) === '#') {
+
+ // The rest of the url starts with a hash so we have
+ // got either a hashbang path or a plain hash fragment
+ withoutHashUrl = beginsWith(hashPrefix, withoutBaseUrl);
+ if (isUndefined(withoutHashUrl)) {
+ // There was no hashbang prefix so we just have a hash fragment
+ withoutHashUrl = withoutBaseUrl;
+ }
+
+ } else {
+ // There was no hashbang path nor hash fragment:
+ // If we are in HTML5 mode we use what is left as the path;
+ // Otherwise we ignore what is left
+ if (this.$$html5) {
+ withoutHashUrl = withoutBaseUrl;
+ } else {
+ withoutHashUrl = '';
+ if (isUndefined(withoutBaseUrl)) {
+ appBase = url;
+ this.replace();
+ }
+ }
+ }
+
+ parseAppUrl(withoutHashUrl, this);
+
+ this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase);
+
+ this.$$compose();
+
+ /*
+ * In Windows, on an anchor node on documents loaded from
+ * the filesystem, the browser will return a pathname
+ * prefixed with the drive name ('/C:/path') when a
+ * pathname without a drive is set:
+ * * a.setAttribute('href', '/foo')
+ * * a.pathname === '/C:/foo' //true
+ *
+ * Inside of Angular, we're always using pathnames that
+ * do not include drive names for routing.
+ */
+ function removeWindowsDriveName(path, url, base) {
+ /*
+ Matches paths for file protocol on windows,
+ such as /C:/foo/bar, and captures only /foo/bar.
+ */
+ var windowsFilePathExp = /^\/[A-Z]:(\/.*)/;
+
+ var firstPathSegmentMatch;
+
+ //Get the relative path from the input URL.
+ if (url.indexOf(base) === 0) {
+ url = url.replace(base, '');
+ }
+
+ // The input URL intentionally contains a first path segment that ends with a colon.
+ if (windowsFilePathExp.exec(url)) {
+ return path;
+ }
+
+ firstPathSegmentMatch = windowsFilePathExp.exec(path);
+ return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path;
+ }
+ };
+
+ /**
+ * Compose hashbang url and update `absUrl` property
+ * @private
+ */
+ this.$$compose = function() {
+ var search = toKeyValue(this.$$search),
+ hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
+
+ this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
+ this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : '');
+ };
+
+ this.$$parseLinkUrl = function(url, relHref) {
+ if (stripHash(appBase) == stripHash(url)) {
+ this.$$parse(url);
+ return true;
+ }
+ return false;
+ };
+}
+
+
+/**
+ * LocationHashbangUrl represents url
+ * This object is exposed as $location service when html5 history api is enabled but the browser
+ * does not support it.
+ *
+ * @constructor
+ * @param {string} appBase application base URL
+ * @param {string} appBaseNoFile application base URL stripped of any filename
+ * @param {string} hashPrefix hashbang prefix
+ */
+function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {
+ this.$$html5 = true;
+ LocationHashbangUrl.apply(this, arguments);
+
+ this.$$parseLinkUrl = function(url, relHref) {
+ if (relHref && relHref[0] === '#') {
+ // special case for links to hash fragments:
+ // keep the old url and only replace the hash fragment
+ this.hash(relHref.slice(1));
+ return true;
+ }
+
+ var rewrittenUrl;
+ var appUrl;
+
+ if (appBase == stripHash(url)) {
+ rewrittenUrl = url;
+ } else if ((appUrl = beginsWith(appBaseNoFile, url))) {
+ rewrittenUrl = appBase + hashPrefix + appUrl;
+ } else if (appBaseNoFile === url + '/') {
+ rewrittenUrl = appBaseNoFile;
+ }
+ if (rewrittenUrl) {
+ this.$$parse(rewrittenUrl);
+ }
+ return !!rewrittenUrl;
+ };
+
+ this.$$compose = function() {
+ var search = toKeyValue(this.$$search),
+ hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
+
+ this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
+ // include hashPrefix in $$absUrl when $$url is empty so IE9 does not reload page because of removal of '#'
+ this.$$absUrl = appBase + hashPrefix + this.$$url;
+ };
+
+}
+
+
+var locationPrototype = {
+
+ /**
+ * Are we in html5 mode?
+ * @private
+ */
+ $$html5: false,
+
+ /**
+ * Has any change been replacing?
+ * @private
+ */
+ $$replace: false,
+
+ /**
+ * @ngdoc method
+ * @name $location#absUrl
+ *
+ * @description
+ * This method is getter only.
+ *
+ * Return full url representation with all segments encoded according to rules specified in
+ * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var absUrl = $location.absUrl();
+ * // => "http://example.com/#/some/path?foo=bar&baz=xoxo"
+ * ```
+ *
+ * @return {string} full url
+ */
+ absUrl: locationGetter('$$absUrl'),
+
+ /**
+ * @ngdoc method
+ * @name $location#url
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return url (e.g. `/path?a=b#hash`) when called without any parameter.
+ *
+ * Change path, search and hash, when called with parameter and return `$location`.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var url = $location.url();
+ * // => "/some/path?foo=bar&baz=xoxo"
+ * ```
+ *
+ * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`)
+ * @return {string} url
+ */
+ url: function(url) {
+ if (isUndefined(url)) {
+ return this.$$url;
+ }
+
+ var match = PATH_MATCH.exec(url);
+ if (match[1] || url === '') this.path(decodeURIComponent(match[1]));
+ if (match[2] || match[1] || url === '') this.search(match[3] || '');
+ this.hash(match[5] || '');
+
+ return this;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $location#protocol
+ *
+ * @description
+ * This method is getter only.
+ *
+ * Return protocol of current url.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var protocol = $location.protocol();
+ * // => "http"
+ * ```
+ *
+ * @return {string} protocol of current url
+ */
+ protocol: locationGetter('$$protocol'),
+
+ /**
+ * @ngdoc method
+ * @name $location#host
+ *
+ * @description
+ * This method is getter only.
+ *
+ * Return host of current url.
+ *
+ * Note: compared to the non-angular version `location.host` which returns `hostname:port`, this returns the `hostname` portion only.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var host = $location.host();
+ * // => "example.com"
+ *
+ * // given url http://user:password@example.com:8080/#/some/path?foo=bar&baz=xoxo
+ * host = $location.host();
+ * // => "example.com"
+ * host = location.host;
+ * // => "example.com:8080"
+ * ```
+ *
+ * @return {string} host of current url.
+ */
+ host: locationGetter('$$host'),
+
+ /**
+ * @ngdoc method
+ * @name $location#port
+ *
+ * @description
+ * This method is getter only.
+ *
+ * Return port of current url.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var port = $location.port();
+ * // => 80
+ * ```
+ *
+ * @return {Number} port
+ */
+ port: locationGetter('$$port'),
+
+ /**
+ * @ngdoc method
+ * @name $location#path
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return path of current url when called without any parameter.
+ *
+ * Change path when called with parameter and return `$location`.
+ *
+ * Note: Path should always begin with forward slash (/), this method will add the forward slash
+ * if it is missing.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var path = $location.path();
+ * // => "/some/path"
+ * ```
+ *
+ * @param {(string|number)=} path New path
+ * @return {string} path
+ */
+ path: locationGetterSetter('$$path', function(path) {
+ path = path !== null ? path.toString() : '';
+ return path.charAt(0) == '/' ? path : '/' + path;
+ }),
+
+ /**
+ * @ngdoc method
+ * @name $location#search
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return search part (as object) of current url when called without any parameter.
+ *
+ * Change search part when called with parameter and return `$location`.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
+ * var searchObject = $location.search();
+ * // => {foo: 'bar', baz: 'xoxo'}
+ *
+ * // set foo to 'yipee'
+ * $location.search('foo', 'yipee');
+ * // $location.search() => {foo: 'yipee', baz: 'xoxo'}
+ * ```
+ *
+ * @param {string|Object.<string>|Object.<Array.<string>>} search New search params - string or
+ * hash object.
+ *
+ * When called with a single argument the method acts as a setter, setting the `search` component
+ * of `$location` to the specified value.
+ *
+ * If the argument is a hash object containing an array of values, these values will be encoded
+ * as duplicate search parameters in the url.
+ *
+ * @param {(string|Number|Array<string>|boolean)=} paramValue If `search` is a string or number, then `paramValue`
+ * will override only a single search property.
+ *
+ * If `paramValue` is an array, it will override the property of the `search` component of
+ * `$location` specified via the first argument.
+ *
+ * If `paramValue` is `null`, the property specified via the first argument will be deleted.
+ *
+ * If `paramValue` is `true`, the property specified via the first argument will be added with no
+ * value nor trailing equal sign.
+ *
+ * @return {Object} If called with no arguments returns the parsed `search` object. If called with
+ * one or more arguments returns `$location` object itself.
+ */
+ search: function(search, paramValue) {
+ switch (arguments.length) {
+ case 0:
+ return this.$$search;
+ case 1:
+ if (isString(search) || isNumber(search)) {
+ search = search.toString();
+ this.$$search = parseKeyValue(search);
+ } else if (isObject(search)) {
+ search = copy(search, {});
+ // remove object undefined or null properties
+ forEach(search, function(value, key) {
+ if (value == null) delete search[key];
+ });
+
+ this.$$search = search;
+ } else {
+ throw $locationMinErr('isrcharg',
+ 'The first argument of the `$location#search()` call must be a string or an object.');
+ }
+ break;
+ default:
+ if (isUndefined(paramValue) || paramValue === null) {
+ delete this.$$search[search];
+ } else {
+ this.$$search[search] = paramValue;
+ }
+ }
+
+ this.$$compose();
+ return this;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $location#hash
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return hash fragment when called without any parameter.
+ *
+ * Change hash fragment when called with parameter and return `$location`.
+ *
+ *
+ * ```js
+ * // given url http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue
+ * var hash = $location.hash();
+ * // => "hashValue"
+ * ```
+ *
+ * @param {(string|number)=} hash New hash fragment
+ * @return {string} hash
+ */
+ hash: locationGetterSetter('$$hash', function(hash) {
+ return hash !== null ? hash.toString() : '';
+ }),
+
+ /**
+ * @ngdoc method
+ * @name $location#replace
+ *
+ * @description
+ * If called, all changes to $location during current `$digest` will be replacing current history
+ * record, instead of adding new one.
+ */
+ replace: function() {
+ this.$$replace = true;
+ return this;
+ }
+};
+
+forEach([LocationHashbangInHtml5Url, LocationHashbangUrl, LocationHtml5Url], function(Location) {
+ Location.prototype = Object.create(locationPrototype);
+
+ /**
+ * @ngdoc method
+ * @name $location#state
+ *
+ * @description
+ * This method is getter / setter.
+ *
+ * Return the history state object when called without any parameter.
+ *
+ * Change the history state object when called with one parameter and return `$location`.
+ * The state object is later passed to `pushState` or `replaceState`.
+ *
+ * NOTE: This method is supported only in HTML5 mode and only in browsers supporting
+ * the HTML5 History API (i.e. methods `pushState` and `replaceState`). If you need to support
+ * older browsers (like IE9 or Android < 4.0), don't use this method.
+ *
+ * @param {object=} state State object for pushState or replaceState
+ * @return {object} state
+ */
+ Location.prototype.state = function(state) {
+ if (!arguments.length) {
+ return this.$$state;
+ }
+
+ if (Location !== LocationHtml5Url || !this.$$html5) {
+ throw $locationMinErr('nostate', 'History API state support is available only ' +
+ 'in HTML5 mode and only in browsers supporting HTML5 History API');
+ }
+ // The user might modify `stateObject` after invoking `$location.state(stateObject)`
+ // but we're changing the $$state reference to $browser.state() during the $digest
+ // so the modification window is narrow.
+ this.$$state = isUndefined(state) ? null : state;
+
+ return this;
+ };
+});
+
+
+function locationGetter(property) {
+ return function() {
+ return this[property];
+ };
+}
+
+
+function locationGetterSetter(property, preprocess) {
+ return function(value) {
+ if (isUndefined(value)) {
+ return this[property];
+ }
+
+ this[property] = preprocess(value);
+ this.$$compose();
+
+ return this;
+ };
+}
+
+
+/**
+ * @ngdoc service
+ * @name $location
+ *
+ * @requires $rootElement
+ *
+ * @description
+ * The $location service parses the URL in the browser address bar (based on the
+ * [window.location](https://developer.mozilla.org/en/window.location)) and makes the URL
+ * available to your application. Changes to the URL in the address bar are reflected into
+ * $location service and changes to $location are reflected into the browser address bar.
+ *
+ * **The $location service:**
+ *
+ * - Exposes the current URL in the browser address bar, so you can
+ * - Watch and observe the URL.
+ * - Change the URL.
+ * - Synchronizes the URL with the browser when the user
+ * - Changes the address bar.
+ * - Clicks the back or forward button (or clicks a History link).
+ * - Clicks on a link.
+ * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).
+ *
+ * For more information see {@link guide/$location Developer Guide: Using $location}
+ */
+
+/**
+ * @ngdoc provider
+ * @name $locationProvider
+ * @description
+ * Use the `$locationProvider` to configure how the application deep linking paths are stored.
+ */
+function $LocationProvider() {
+ var hashPrefix = '',
+ html5Mode = {
+ enabled: false,
+ requireBase: true,
+ rewriteLinks: true
+ };
+
+ /**
+ * @ngdoc method
+ * @name $locationProvider#hashPrefix
+ * @description
+ * @param {string=} prefix Prefix for hash part (containing path and search)
+ * @returns {*} current value if used as getter or itself (chaining) if used as setter
+ */
+ this.hashPrefix = function(prefix) {
+ if (isDefined(prefix)) {
+ hashPrefix = prefix;
+ return this;
+ } else {
+ return hashPrefix;
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $locationProvider#html5Mode
+ * @description
+ * @param {(boolean|Object)=} mode If boolean, sets `html5Mode.enabled` to value.
+ * If object, sets `enabled`, `requireBase` and `rewriteLinks` to respective values. Supported
+ * properties:
+ * - **enabled** – `{boolean}` – (default: false) If true, will rely on `history.pushState` to
+ * change urls where supported. Will fall back to hash-prefixed paths in browsers that do not
+ * support `pushState`.
+ * - **requireBase** - `{boolean}` - (default: `true`) When html5Mode is enabled, specifies
+ * whether or not a <base> tag is required to be present. If `enabled` and `requireBase` are
+ * true, and a base tag is not present, an error will be thrown when `$location` is injected.
+ * See the {@link guide/$location $location guide for more information}
+ * - **rewriteLinks** - `{boolean}` - (default: `true`) When html5Mode is enabled,
+ * enables/disables url rewriting for relative links.
+ *
+ * @returns {Object} html5Mode object if used as getter or itself (chaining) if used as setter
+ */
+ this.html5Mode = function(mode) {
+ if (isBoolean(mode)) {
+ html5Mode.enabled = mode;
+ return this;
+ } else if (isObject(mode)) {
+
+ if (isBoolean(mode.enabled)) {
+ html5Mode.enabled = mode.enabled;
+ }
+
+ if (isBoolean(mode.requireBase)) {
+ html5Mode.requireBase = mode.requireBase;
+ }
+
+ if (isBoolean(mode.rewriteLinks)) {
+ html5Mode.rewriteLinks = mode.rewriteLinks;
+ }
+
+ return this;
+ } else {
+ return html5Mode;
+ }
+ };
+
+ /**
+ * @ngdoc event
+ * @name $location#$locationChangeStart
+ * @eventType broadcast on root scope
+ * @description
+ * Broadcasted before a URL will change.
+ *
+ * This change can be prevented by calling
+ * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more
+ * details about event object. Upon successful change
+ * {@link ng.$location#$locationChangeSuccess $locationChangeSuccess} is fired.
+ *
+ * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when
+ * the browser supports the HTML5 History API.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {string} newUrl New URL
+ * @param {string=} oldUrl URL that was before it was changed.
+ * @param {string=} newState New history state object
+ * @param {string=} oldState History state object that was before it was changed.
+ */
+
+ /**
+ * @ngdoc event
+ * @name $location#$locationChangeSuccess
+ * @eventType broadcast on root scope
+ * @description
+ * Broadcasted after a URL was changed.
+ *
+ * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when
+ * the browser supports the HTML5 History API.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {string} newUrl New URL
+ * @param {string=} oldUrl URL that was before it was changed.
+ * @param {string=} newState New history state object
+ * @param {string=} oldState History state object that was before it was changed.
+ */
+
+ this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement', '$window',
+ function($rootScope, $browser, $sniffer, $rootElement, $window) {
+ var $location,
+ LocationMode,
+ baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to ''
+ initialUrl = $browser.url(),
+ appBase;
+
+ if (html5Mode.enabled) {
+ if (!baseHref && html5Mode.requireBase) {
+ throw $locationMinErr('nobase',
+ "$location in HTML5 mode requires a <base> tag to be present!");
+ }
+ appBase = serverBase(initialUrl) + (baseHref || '/');
+ LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url;
+ } else {
+ appBase = stripHash(initialUrl);
+ LocationMode = LocationHashbangUrl;
+ }
+ var appBaseNoFile = stripFile(appBase);
+
+ $location = new LocationMode(appBase, appBaseNoFile, '#' + hashPrefix);
+ $location.$$parseLinkUrl(initialUrl, initialUrl);
+
+ $location.$$state = $browser.state();
+
+ var IGNORE_URI_REGEXP = /^\s*(javascript|mailto):/i;
+
+ function setBrowserUrlWithFallback(url, replace, state) {
+ var oldUrl = $location.url();
+ var oldState = $location.$$state;
+ try {
+ $browser.url(url, replace, state);
+
+ // Make sure $location.state() returns referentially identical (not just deeply equal)
+ // state object; this makes possible quick checking if the state changed in the digest
+ // loop. Checking deep equality would be too expensive.
+ $location.$$state = $browser.state();
+ } catch (e) {
+ // Restore old values if pushState fails
+ $location.url(oldUrl);
+ $location.$$state = oldState;
+
+ throw e;
+ }
+ }
+
+ $rootElement.on('click', function(event) {
+ // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)
+ // currently we open nice url link and redirect then
+
+ if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.shiftKey || event.which == 2 || event.button == 2) return;
+
+ var elm = jqLite(event.target);
+
+ // traverse the DOM up to find first A tag
+ while (nodeName_(elm[0]) !== 'a') {
+ // ignore rewriting if no A tag (reached root element, or no parent - removed from document)
+ if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0]) return;
+ }
+
+ var absHref = elm.prop('href');
+ // get the actual href attribute - see
+ // http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx
+ var relHref = elm.attr('href') || elm.attr('xlink:href');
+
+ if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') {
+ // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during
+ // an animation.
+ absHref = urlResolve(absHref.animVal).href;
+ }
+
+ // Ignore when url is started with javascript: or mailto:
+ if (IGNORE_URI_REGEXP.test(absHref)) return;
+
+ if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) {
+ if ($location.$$parseLinkUrl(absHref, relHref)) {
+ // We do a preventDefault for all urls that are part of the angular application,
+ // in html5mode and also without, so that we are able to abort navigation without
+ // getting double entries in the location history.
+ event.preventDefault();
+ // update location manually
+ if ($location.absUrl() != $browser.url()) {
+ $rootScope.$apply();
+ // hack to work around FF6 bug 684208 when scenario runner clicks on links
+ $window.angular['ff-684208-preventDefault'] = true;
+ }
+ }
+ }
+ });
+
+
+ // rewrite hashbang url <> html5 url
+ if (trimEmptyHash($location.absUrl()) != trimEmptyHash(initialUrl)) {
+ $browser.url($location.absUrl(), true);
+ }
+
+ var initializing = true;
+
+ // update $location when $browser url changes
+ $browser.onUrlChange(function(newUrl, newState) {
+
+ if (isUndefined(beginsWith(appBaseNoFile, newUrl))) {
+ // If we are navigating outside of the app then force a reload
+ $window.location.href = newUrl;
+ return;
+ }
+
+ $rootScope.$evalAsync(function() {
+ var oldUrl = $location.absUrl();
+ var oldState = $location.$$state;
+ var defaultPrevented;
+
+ $location.$$parse(newUrl);
+ $location.$$state = newState;
+
+ defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
+ newState, oldState).defaultPrevented;
+
+ // if the location was changed by a `$locationChangeStart` handler then stop
+ // processing this location change
+ if ($location.absUrl() !== newUrl) return;
+
+ if (defaultPrevented) {
+ $location.$$parse(oldUrl);
+ $location.$$state = oldState;
+ setBrowserUrlWithFallback(oldUrl, false, oldState);
+ } else {
+ initializing = false;
+ afterLocationChange(oldUrl, oldState);
+ }
+ });
+ if (!$rootScope.$$phase) $rootScope.$digest();
+ });
+
+ // update browser
+ $rootScope.$watch(function $locationWatch() {
+ var oldUrl = trimEmptyHash($browser.url());
+ var newUrl = trimEmptyHash($location.absUrl());
+ var oldState = $browser.state();
+ var currentReplace = $location.$$replace;
+ var urlOrStateChanged = oldUrl !== newUrl ||
+ ($location.$$html5 && $sniffer.history && oldState !== $location.$$state);
+
+ if (initializing || urlOrStateChanged) {
+ initializing = false;
+
+ $rootScope.$evalAsync(function() {
+ var newUrl = $location.absUrl();
+ var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
+ $location.$$state, oldState).defaultPrevented;
+
+ // if the location was changed by a `$locationChangeStart` handler then stop
+ // processing this location change
+ if ($location.absUrl() !== newUrl) return;
+
+ if (defaultPrevented) {
+ $location.$$parse(oldUrl);
+ $location.$$state = oldState;
+ } else {
+ if (urlOrStateChanged) {
+ setBrowserUrlWithFallback(newUrl, currentReplace,
+ oldState === $location.$$state ? null : $location.$$state);
+ }
+ afterLocationChange(oldUrl, oldState);
+ }
+ });
+ }
+
+ $location.$$replace = false;
+
+ // we don't need to return anything because $evalAsync will make the digest loop dirty when
+ // there is a change
+ });
+
+ return $location;
+
+ function afterLocationChange(oldUrl, oldState) {
+ $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl,
+ $location.$$state, oldState);
+ }
+}];
+}
+
+/**
+ * @ngdoc service
+ * @name $log
+ * @requires $window
+ *
+ * @description
+ * Simple service for logging. Default implementation safely writes the message
+ * into the browser's console (if present).
+ *
+ * The main purpose of this service is to simplify debugging and troubleshooting.
+ *
+ * The default is to log `debug` messages. You can use
+ * {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this.
+ *
+ * @example
+ <example module="logExample">
+ <file name="script.js">
+ angular.module('logExample', [])
+ .controller('LogController', ['$scope', '$log', function($scope, $log) {
+ $scope.$log = $log;
+ $scope.message = 'Hello World!';
+ }]);
+ </file>
+ <file name="index.html">
+ <div ng-controller="LogController">
+ <p>Reload this page with open console, enter text and hit the log button...</p>
+ <label>Message:
+ <input type="text" ng-model="message" /></label>
+ <button ng-click="$log.log(message)">log</button>
+ <button ng-click="$log.warn(message)">warn</button>
+ <button ng-click="$log.info(message)">info</button>
+ <button ng-click="$log.error(message)">error</button>
+ <button ng-click="$log.debug(message)">debug</button>
+ </div>
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc provider
+ * @name $logProvider
+ * @description
+ * Use the `$logProvider` to configure how the application logs messages
+ */
+function $LogProvider() {
+ var debug = true,
+ self = this;
+
+ /**
+ * @ngdoc method
+ * @name $logProvider#debugEnabled
+ * @description
+ * @param {boolean=} flag enable or disable debug level messages
+ * @returns {*} current value if used as getter or itself (chaining) if used as setter
+ */
+ this.debugEnabled = function(flag) {
+ if (isDefined(flag)) {
+ debug = flag;
+ return this;
+ } else {
+ return debug;
+ }
+ };
+
+ this.$get = ['$window', function($window) {
+ return {
+ /**
+ * @ngdoc method
+ * @name $log#log
+ *
+ * @description
+ * Write a log message
+ */
+ log: consoleLog('log'),
+
+ /**
+ * @ngdoc method
+ * @name $log#info
+ *
+ * @description
+ * Write an information message
+ */
+ info: consoleLog('info'),
+
+ /**
+ * @ngdoc method
+ * @name $log#warn
+ *
+ * @description
+ * Write a warning message
+ */
+ warn: consoleLog('warn'),
+
+ /**
+ * @ngdoc method
+ * @name $log#error
+ *
+ * @description
+ * Write an error message
+ */
+ error: consoleLog('error'),
+
+ /**
+ * @ngdoc method
+ * @name $log#debug
+ *
+ * @description
+ * Write a debug message
+ */
+ debug: (function() {
+ var fn = consoleLog('debug');
+
+ return function() {
+ if (debug) {
+ fn.apply(self, arguments);
+ }
+ };
+ }())
+ };
+
+ function formatError(arg) {
+ if (arg instanceof Error) {
+ if (arg.stack) {
+ arg = (arg.message && arg.stack.indexOf(arg.message) === -1)
+ ? 'Error: ' + arg.message + '\n' + arg.stack
+ : arg.stack;
+ } else if (arg.sourceURL) {
+ arg = arg.message + '\n' + arg.sourceURL + ':' + arg.line;
+ }
+ }
+ return arg;
+ }
+
+ function consoleLog(type) {
+ var console = $window.console || {},
+ logFn = console[type] || console.log || noop,
+ hasApply = false;
+
+ // Note: reading logFn.apply throws an error in IE11 in IE8 document mode.
+ // The reason behind this is that console.log has type "object" in IE8...
+ try {
+ hasApply = !!logFn.apply;
+ } catch (e) {}
+
+ if (hasApply) {
+ return function() {
+ var args = [];
+ forEach(arguments, function(arg) {
+ args.push(formatError(arg));
+ });
+ return logFn.apply(console, args);
+ };
+ }
+
+ // we are IE which either doesn't have window.console => this is noop and we do nothing,
+ // or we are IE where console.log doesn't have apply so we log at least first 2 args
+ return function(arg1, arg2) {
+ logFn(arg1, arg2 == null ? '' : arg2);
+ };
+ }
+ }];
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Any commits to this file should be reviewed with security in mind. *
+ * Changes to this file can potentially create security vulnerabilities. *
+ * An approval from 2 Core members with history of modifying *
+ * this file is required. *
+ * *
+ * Does the change somehow allow for arbitrary javascript to be executed? *
+ * Or allows for someone to change the prototype of built-in objects? *
+ * Or gives undesired access to variables likes document or window? *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+var $parseMinErr = minErr('$parse');
+
+// Sandboxing Angular Expressions
+// ------------------------------
+// Angular expressions are generally considered safe because these expressions only have direct
+// access to `$scope` and locals. However, one can obtain the ability to execute arbitrary JS code by
+// obtaining a reference to native JS functions such as the Function constructor.
+//
+// As an example, consider the following Angular expression:
+//
+// {}.toString.constructor('alert("evil JS code")')
+//
+// This sandboxing technique is not perfect and doesn't aim to be. The goal is to prevent exploits
+// against the expression language, but not to prevent exploits that were enabled by exposing
+// sensitive JavaScript or browser APIs on Scope. Exposing such objects on a Scope is never a good
+// practice and therefore we are not even trying to protect against interaction with an object
+// explicitly exposed in this way.
+//
+// In general, it is not possible to access a Window object from an angular expression unless a
+// window or some DOM object that has a reference to window is published onto a Scope.
+// Similarly we prevent invocations of function known to be dangerous, as well as assignments to
+// native objects.
+//
+// See https://docs.angularjs.org/guide/security
+
+
+function ensureSafeMemberName(name, fullExpression) {
+ if (name === "__defineGetter__" || name === "__defineSetter__"
+ || name === "__lookupGetter__" || name === "__lookupSetter__"
+ || name === "__proto__") {
+ throw $parseMinErr('isecfld',
+ 'Attempting to access a disallowed field in Angular expressions! '
+ + 'Expression: {0}', fullExpression);
+ }
+ return name;
+}
+
+function ensureSafeObject(obj, fullExpression) {
+ // nifty check if obj is Function that is fast and works across iframes and other contexts
+ if (obj) {
+ if (obj.constructor === obj) {
+ throw $parseMinErr('isecfn',
+ 'Referencing Function in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ } else if (// isWindow(obj)
+ obj.window === obj) {
+ throw $parseMinErr('isecwindow',
+ 'Referencing the Window in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ } else if (// isElement(obj)
+ obj.children && (obj.nodeName || (obj.prop && obj.attr && obj.find))) {
+ throw $parseMinErr('isecdom',
+ 'Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ } else if (// block Object so that we can't get hold of dangerous Object.* methods
+ obj === Object) {
+ throw $parseMinErr('isecobj',
+ 'Referencing Object in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ }
+ }
+ return obj;
+}
+
+var CALL = Function.prototype.call;
+var APPLY = Function.prototype.apply;
+var BIND = Function.prototype.bind;
+
+function ensureSafeFunction(obj, fullExpression) {
+ if (obj) {
+ if (obj.constructor === obj) {
+ throw $parseMinErr('isecfn',
+ 'Referencing Function in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ } else if (obj === CALL || obj === APPLY || obj === BIND) {
+ throw $parseMinErr('isecff',
+ 'Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}',
+ fullExpression);
+ }
+ }
+}
+
+var OPERATORS = createMap();
+forEach('+ - * / % === !== == != < > <= >= && || ! = |'.split(' '), function(operator) { OPERATORS[operator] = true; });
+var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'};
+
+
+/////////////////////////////////////////
+
+
+/**
+ * @constructor
+ */
+var Lexer = function(options) {
+ this.options = options;
+};
+
+Lexer.prototype = {
+ constructor: Lexer,
+
+ lex: function(text) {
+ this.text = text;
+ this.index = 0;
+ this.tokens = [];
+
+ while (this.index < this.text.length) {
+ var ch = this.text.charAt(this.index);
+ if (ch === '"' || ch === "'") {
+ this.readString(ch);
+ } else if (this.isNumber(ch) || ch === '.' && this.isNumber(this.peek())) {
+ this.readNumber();
+ } else if (this.isIdent(ch)) {
+ this.readIdent();
+ } else if (this.is(ch, '(){}[].,;:?')) {
+ this.tokens.push({index: this.index, text: ch});
+ this.index++;
+ } else if (this.isWhitespace(ch)) {
+ this.index++;
+ } else {
+ var ch2 = ch + this.peek();
+ var ch3 = ch2 + this.peek(2);
+ var op1 = OPERATORS[ch];
+ var op2 = OPERATORS[ch2];
+ var op3 = OPERATORS[ch3];
+ if (op1 || op2 || op3) {
+ var token = op3 ? ch3 : (op2 ? ch2 : ch);
+ this.tokens.push({index: this.index, text: token, operator: true});
+ this.index += token.length;
+ } else {
+ this.throwError('Unexpected next character ', this.index, this.index + 1);
+ }
+ }
+ }
+ return this.tokens;
+ },
+
+ is: function(ch, chars) {
+ return chars.indexOf(ch) !== -1;
+ },
+
+ peek: function(i) {
+ var num = i || 1;
+ return (this.index + num < this.text.length) ? this.text.charAt(this.index + num) : false;
+ },
+
+ isNumber: function(ch) {
+ return ('0' <= ch && ch <= '9') && typeof ch === "string";
+ },
+
+ isWhitespace: function(ch) {
+ // IE treats non-breaking space as \u00A0
+ return (ch === ' ' || ch === '\r' || ch === '\t' ||
+ ch === '\n' || ch === '\v' || ch === '\u00A0');
+ },
+
+ isIdent: function(ch) {
+ return ('a' <= ch && ch <= 'z' ||
+ 'A' <= ch && ch <= 'Z' ||
+ '_' === ch || ch === '$');
+ },
+
+ isExpOperator: function(ch) {
+ return (ch === '-' || ch === '+' || this.isNumber(ch));
+ },
+
+ throwError: function(error, start, end) {
+ end = end || this.index;
+ var colStr = (isDefined(start)
+ ? 's ' + start + '-' + this.index + ' [' + this.text.substring(start, end) + ']'
+ : ' ' + end);
+ throw $parseMinErr('lexerr', 'Lexer Error: {0} at column{1} in expression [{2}].',
+ error, colStr, this.text);
+ },
+
+ readNumber: function() {
+ var number = '';
+ var start = this.index;
+ while (this.index < this.text.length) {
+ var ch = lowercase(this.text.charAt(this.index));
+ if (ch == '.' || this.isNumber(ch)) {
+ number += ch;
+ } else {
+ var peekCh = this.peek();
+ if (ch == 'e' && this.isExpOperator(peekCh)) {
+ number += ch;
+ } else if (this.isExpOperator(ch) &&
+ peekCh && this.isNumber(peekCh) &&
+ number.charAt(number.length - 1) == 'e') {
+ number += ch;
+ } else if (this.isExpOperator(ch) &&
+ (!peekCh || !this.isNumber(peekCh)) &&
+ number.charAt(number.length - 1) == 'e') {
+ this.throwError('Invalid exponent');
+ } else {
+ break;
+ }
+ }
+ this.index++;
+ }
+ this.tokens.push({
+ index: start,
+ text: number,
+ constant: true,
+ value: Number(number)
+ });
+ },
+
+ readIdent: function() {
+ var start = this.index;
+ while (this.index < this.text.length) {
+ var ch = this.text.charAt(this.index);
+ if (!(this.isIdent(ch) || this.isNumber(ch))) {
+ break;
+ }
+ this.index++;
+ }
+ this.tokens.push({
+ index: start,
+ text: this.text.slice(start, this.index),
+ identifier: true
+ });
+ },
+
+ readString: function(quote) {
+ var start = this.index;
+ this.index++;
+ var string = '';
+ var rawString = quote;
+ var escape = false;
+ while (this.index < this.text.length) {
+ var ch = this.text.charAt(this.index);
+ rawString += ch;
+ if (escape) {
+ if (ch === 'u') {
+ var hex = this.text.substring(this.index + 1, this.index + 5);
+ if (!hex.match(/[\da-f]{4}/i)) {
+ this.throwError('Invalid unicode escape [\\u' + hex + ']');
+ }
+ this.index += 4;
+ string += String.fromCharCode(parseInt(hex, 16));
+ } else {
+ var rep = ESCAPE[ch];
+ string = string + (rep || ch);
+ }
+ escape = false;
+ } else if (ch === '\\') {
+ escape = true;
+ } else if (ch === quote) {
+ this.index++;
+ this.tokens.push({
+ index: start,
+ text: rawString,
+ constant: true,
+ value: string
+ });
+ return;
+ } else {
+ string += ch;
+ }
+ this.index++;
+ }
+ this.throwError('Unterminated quote', start);
+ }
+};
+
+var AST = function(lexer, options) {
+ this.lexer = lexer;
+ this.options = options;
+};
+
+AST.Program = 'Program';
+AST.ExpressionStatement = 'ExpressionStatement';
+AST.AssignmentExpression = 'AssignmentExpression';
+AST.ConditionalExpression = 'ConditionalExpression';
+AST.LogicalExpression = 'LogicalExpression';
+AST.BinaryExpression = 'BinaryExpression';
+AST.UnaryExpression = 'UnaryExpression';
+AST.CallExpression = 'CallExpression';
+AST.MemberExpression = 'MemberExpression';
+AST.Identifier = 'Identifier';
+AST.Literal = 'Literal';
+AST.ArrayExpression = 'ArrayExpression';
+AST.Property = 'Property';
+AST.ObjectExpression = 'ObjectExpression';
+AST.ThisExpression = 'ThisExpression';
+
+// Internal use only
+AST.NGValueParameter = 'NGValueParameter';
+
+AST.prototype = {
+ ast: function(text) {
+ this.text = text;
+ this.tokens = this.lexer.lex(text);
+
+ var value = this.program();
+
+ if (this.tokens.length !== 0) {
+ this.throwError('is an unexpected token', this.tokens[0]);
+ }
+
+ return value;
+ },
+
+ program: function() {
+ var body = [];
+ while (true) {
+ if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']'))
+ body.push(this.expressionStatement());
+ if (!this.expect(';')) {
+ return { type: AST.Program, body: body};
+ }
+ }
+ },
+
+ expressionStatement: function() {
+ return { type: AST.ExpressionStatement, expression: this.filterChain() };
+ },
+
+ filterChain: function() {
+ var left = this.expression();
+ var token;
+ while ((token = this.expect('|'))) {
+ left = this.filter(left);
+ }
+ return left;
+ },
+
+ expression: function() {
+ return this.assignment();
+ },
+
+ assignment: function() {
+ var result = this.ternary();
+ if (this.expect('=')) {
+ result = { type: AST.AssignmentExpression, left: result, right: this.assignment(), operator: '='};
+ }
+ return result;
+ },
+
+ ternary: function() {
+ var test = this.logicalOR();
+ var alternate;
+ var consequent;
+ if (this.expect('?')) {
+ alternate = this.expression();
+ if (this.consume(':')) {
+ consequent = this.expression();
+ return { type: AST.ConditionalExpression, test: test, alternate: alternate, consequent: consequent};
+ }
+ }
+ return test;
+ },
+
+ logicalOR: function() {
+ var left = this.logicalAND();
+ while (this.expect('||')) {
+ left = { type: AST.LogicalExpression, operator: '||', left: left, right: this.logicalAND() };
+ }
+ return left;
+ },
+
+ logicalAND: function() {
+ var left = this.equality();
+ while (this.expect('&&')) {
+ left = { type: AST.LogicalExpression, operator: '&&', left: left, right: this.equality()};
+ }
+ return left;
+ },
+
+ equality: function() {
+ var left = this.relational();
+ var token;
+ while ((token = this.expect('==','!=','===','!=='))) {
+ left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.relational() };
+ }
+ return left;
+ },
+
+ relational: function() {
+ var left = this.additive();
+ var token;
+ while ((token = this.expect('<', '>', '<=', '>='))) {
+ left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.additive() };
+ }
+ return left;
+ },
+
+ additive: function() {
+ var left = this.multiplicative();
+ var token;
+ while ((token = this.expect('+','-'))) {
+ left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.multiplicative() };
+ }
+ return left;
+ },
+
+ multiplicative: function() {
+ var left = this.unary();
+ var token;
+ while ((token = this.expect('*','/','%'))) {
+ left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.unary() };
+ }
+ return left;
+ },
+
+ unary: function() {
+ var token;
+ if ((token = this.expect('+', '-', '!'))) {
+ return { type: AST.UnaryExpression, operator: token.text, prefix: true, argument: this.unary() };
+ } else {
+ return this.primary();
+ }
+ },
+
+ primary: function() {
+ var primary;
+ if (this.expect('(')) {
+ primary = this.filterChain();
+ this.consume(')');
+ } else if (this.expect('[')) {
+ primary = this.arrayDeclaration();
+ } else if (this.expect('{')) {
+ primary = this.object();
+ } else if (this.constants.hasOwnProperty(this.peek().text)) {
+ primary = copy(this.constants[this.consume().text]);
+ } else if (this.peek().identifier) {
+ primary = this.identifier();
+ } else if (this.peek().constant) {
+ primary = this.constant();
+ } else {
+ this.throwError('not a primary expression', this.peek());
+ }
+
+ var next;
+ while ((next = this.expect('(', '[', '.'))) {
+ if (next.text === '(') {
+ primary = {type: AST.CallExpression, callee: primary, arguments: this.parseArguments() };
+ this.consume(')');
+ } else if (next.text === '[') {
+ primary = { type: AST.MemberExpression, object: primary, property: this.expression(), computed: true };
+ this.consume(']');
+ } else if (next.text === '.') {
+ primary = { type: AST.MemberExpression, object: primary, property: this.identifier(), computed: false };
+ } else {
+ this.throwError('IMPOSSIBLE');
+ }
+ }
+ return primary;
+ },
+
+ filter: function(baseExpression) {
+ var args = [baseExpression];
+ var result = {type: AST.CallExpression, callee: this.identifier(), arguments: args, filter: true};
+
+ while (this.expect(':')) {
+ args.push(this.expression());
+ }
+
+ return result;
+ },
+
+ parseArguments: function() {
+ var args = [];
+ if (this.peekToken().text !== ')') {
+ do {
+ args.push(this.expression());
+ } while (this.expect(','));
+ }
+ return args;
+ },
+
+ identifier: function() {
+ var token = this.consume();
+ if (!token.identifier) {
+ this.throwError('is not a valid identifier', token);
+ }
+ return { type: AST.Identifier, name: token.text };
+ },
+
+ constant: function() {
+ // TODO check that it is a constant
+ return { type: AST.Literal, value: this.consume().value };
+ },
+
+ arrayDeclaration: function() {
+ var elements = [];
+ if (this.peekToken().text !== ']') {
+ do {
+ if (this.peek(']')) {
+ // Support trailing commas per ES5.1.
+ break;
+ }
+ elements.push(this.expression());
+ } while (this.expect(','));
+ }
+ this.consume(']');
+
+ return { type: AST.ArrayExpression, elements: elements };
+ },
+
+ object: function() {
+ var properties = [], property;
+ if (this.peekToken().text !== '}') {
+ do {
+ if (this.peek('}')) {
+ // Support trailing commas per ES5.1.
+ break;
+ }
+ property = {type: AST.Property, kind: 'init'};
+ if (this.peek().constant) {
+ property.key = this.constant();
+ } else if (this.peek().identifier) {
+ property.key = this.identifier();
+ } else {
+ this.throwError("invalid key", this.peek());
+ }
+ this.consume(':');
+ property.value = this.expression();
+ properties.push(property);
+ } while (this.expect(','));
+ }
+ this.consume('}');
+
+ return {type: AST.ObjectExpression, properties: properties };
+ },
+
+ throwError: function(msg, token) {
+ throw $parseMinErr('syntax',
+ 'Syntax Error: Token \'{0}\' {1} at column {2} of the expression [{3}] starting at [{4}].',
+ token.text, msg, (token.index + 1), this.text, this.text.substring(token.index));
+ },
+
+ consume: function(e1) {
+ if (this.tokens.length === 0) {
+ throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);
+ }
+
+ var token = this.expect(e1);
+ if (!token) {
+ this.throwError('is unexpected, expecting [' + e1 + ']', this.peek());
+ }
+ return token;
+ },
+
+ peekToken: function() {
+ if (this.tokens.length === 0) {
+ throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);
+ }
+ return this.tokens[0];
+ },
+
+ peek: function(e1, e2, e3, e4) {
+ return this.peekAhead(0, e1, e2, e3, e4);
+ },
+
+ peekAhead: function(i, e1, e2, e3, e4) {
+ if (this.tokens.length > i) {
+ var token = this.tokens[i];
+ var t = token.text;
+ if (t === e1 || t === e2 || t === e3 || t === e4 ||
+ (!e1 && !e2 && !e3 && !e4)) {
+ return token;
+ }
+ }
+ return false;
+ },
+
+ expect: function(e1, e2, e3, e4) {
+ var token = this.peek(e1, e2, e3, e4);
+ if (token) {
+ this.tokens.shift();
+ return token;
+ }
+ return false;
+ },
+
+
+ /* `undefined` is not a constant, it is an identifier,
+ * but using it as an identifier is not supported
+ */
+ constants: {
+ 'true': { type: AST.Literal, value: true },
+ 'false': { type: AST.Literal, value: false },
+ 'null': { type: AST.Literal, value: null },
+ 'undefined': {type: AST.Literal, value: undefined },
+ 'this': {type: AST.ThisExpression }
+ }
+};
+
+function ifDefined(v, d) {
+ return typeof v !== 'undefined' ? v : d;
+}
+
+function plusFn(l, r) {
+ if (typeof l === 'undefined') return r;
+ if (typeof r === 'undefined') return l;
+ return l + r;
+}
+
+function isStateless($filter, filterName) {
+ var fn = $filter(filterName);
+ return !fn.$stateful;
+}
+
+function findConstantAndWatchExpressions(ast, $filter) {
+ var allConstants;
+ var argsToWatch;
+ switch (ast.type) {
+ case AST.Program:
+ allConstants = true;
+ forEach(ast.body, function(expr) {
+ findConstantAndWatchExpressions(expr.expression, $filter);
+ allConstants = allConstants && expr.expression.constant;
+ });
+ ast.constant = allConstants;
+ break;
+ case AST.Literal:
+ ast.constant = true;
+ ast.toWatch = [];
+ break;
+ case AST.UnaryExpression:
+ findConstantAndWatchExpressions(ast.argument, $filter);
+ ast.constant = ast.argument.constant;
+ ast.toWatch = ast.argument.toWatch;
+ break;
+ case AST.BinaryExpression:
+ findConstantAndWatchExpressions(ast.left, $filter);
+ findConstantAndWatchExpressions(ast.right, $filter);
+ ast.constant = ast.left.constant && ast.right.constant;
+ ast.toWatch = ast.left.toWatch.concat(ast.right.toWatch);
+ break;
+ case AST.LogicalExpression:
+ findConstantAndWatchExpressions(ast.left, $filter);
+ findConstantAndWatchExpressions(ast.right, $filter);
+ ast.constant = ast.left.constant && ast.right.constant;
+ ast.toWatch = ast.constant ? [] : [ast];
+ break;
+ case AST.ConditionalExpression:
+ findConstantAndWatchExpressions(ast.test, $filter);
+ findConstantAndWatchExpressions(ast.alternate, $filter);
+ findConstantAndWatchExpressions(ast.consequent, $filter);
+ ast.constant = ast.test.constant && ast.alternate.constant && ast.consequent.constant;
+ ast.toWatch = ast.constant ? [] : [ast];
+ break;
+ case AST.Identifier:
+ ast.constant = false;
+ ast.toWatch = [ast];
+ break;
+ case AST.MemberExpression:
+ findConstantAndWatchExpressions(ast.object, $filter);
+ if (ast.computed) {
+ findConstantAndWatchExpressions(ast.property, $filter);
+ }
+ ast.constant = ast.object.constant && (!ast.computed || ast.property.constant);
+ ast.toWatch = [ast];
+ break;
+ case AST.CallExpression:
+ allConstants = ast.filter ? isStateless($filter, ast.callee.name) : false;
+ argsToWatch = [];
+ forEach(ast.arguments, function(expr) {
+ findConstantAndWatchExpressions(expr, $filter);
+ allConstants = allConstants && expr.constant;
+ if (!expr.constant) {
+ argsToWatch.push.apply(argsToWatch, expr.toWatch);
+ }
+ });
+ ast.constant = allConstants;
+ ast.toWatch = ast.filter && isStateless($filter, ast.callee.name) ? argsToWatch : [ast];
+ break;
+ case AST.AssignmentExpression:
+ findConstantAndWatchExpressions(ast.left, $filter);
+ findConstantAndWatchExpressions(ast.right, $filter);
+ ast.constant = ast.left.constant && ast.right.constant;
+ ast.toWatch = [ast];
+ break;
+ case AST.ArrayExpression:
+ allConstants = true;
+ argsToWatch = [];
+ forEach(ast.elements, function(expr) {
+ findConstantAndWatchExpressions(expr, $filter);
+ allConstants = allConstants && expr.constant;
+ if (!expr.constant) {
+ argsToWatch.push.apply(argsToWatch, expr.toWatch);
+ }
+ });
+ ast.constant = allConstants;
+ ast.toWatch = argsToWatch;
+ break;
+ case AST.ObjectExpression:
+ allConstants = true;
+ argsToWatch = [];
+ forEach(ast.properties, function(property) {
+ findConstantAndWatchExpressions(property.value, $filter);
+ allConstants = allConstants && property.value.constant;
+ if (!property.value.constant) {
+ argsToWatch.push.apply(argsToWatch, property.value.toWatch);
+ }
+ });
+ ast.constant = allConstants;
+ ast.toWatch = argsToWatch;
+ break;
+ case AST.ThisExpression:
+ ast.constant = false;
+ ast.toWatch = [];
+ break;
+ }
+}
+
+function getInputs(body) {
+ if (body.length != 1) return;
+ var lastExpression = body[0].expression;
+ var candidate = lastExpression.toWatch;
+ if (candidate.length !== 1) return candidate;
+ return candidate[0] !== lastExpression ? candidate : undefined;
+}
+
+function isAssignable(ast) {
+ return ast.type === AST.Identifier || ast.type === AST.MemberExpression;
+}
+
+function assignableAST(ast) {
+ if (ast.body.length === 1 && isAssignable(ast.body[0].expression)) {
+ return {type: AST.AssignmentExpression, left: ast.body[0].expression, right: {type: AST.NGValueParameter}, operator: '='};
+ }
+}
+
+function isLiteral(ast) {
+ return ast.body.length === 0 ||
+ ast.body.length === 1 && (
+ ast.body[0].expression.type === AST.Literal ||
+ ast.body[0].expression.type === AST.ArrayExpression ||
+ ast.body[0].expression.type === AST.ObjectExpression);
+}
+
+function isConstant(ast) {
+ return ast.constant;
+}
+
+function ASTCompiler(astBuilder, $filter) {
+ this.astBuilder = astBuilder;
+ this.$filter = $filter;
+}
+
+ASTCompiler.prototype = {
+ compile: function(expression, expensiveChecks) {
+ var self = this;
+ var ast = this.astBuilder.ast(expression);
+ this.state = {
+ nextId: 0,
+ filters: {},
+ expensiveChecks: expensiveChecks,
+ fn: {vars: [], body: [], own: {}},
+ assign: {vars: [], body: [], own: {}},
+ inputs: []
+ };
+ findConstantAndWatchExpressions(ast, self.$filter);
+ var extra = '';
+ var assignable;
+ this.stage = 'assign';
+ if ((assignable = assignableAST(ast))) {
+ this.state.computing = 'assign';
+ var result = this.nextId();
+ this.recurse(assignable, result);
+ extra = 'fn.assign=' + this.generateFunction('assign', 's,v,l');
+ }
+ var toWatch = getInputs(ast.body);
+ self.stage = 'inputs';
+ forEach(toWatch, function(watch, key) {
+ var fnKey = 'fn' + key;
+ self.state[fnKey] = {vars: [], body: [], own: {}};
+ self.state.computing = fnKey;
+ var intoId = self.nextId();
+ self.recurse(watch, intoId);
+ self.return_(intoId);
+ self.state.inputs.push(fnKey);
+ watch.watchId = key;
+ });
+ this.state.computing = 'fn';
+ this.stage = 'main';
+ this.recurse(ast);
+ var fnString =
+ // The build and minification steps remove the string "use strict" from the code, but this is done using a regex.
+ // This is a workaround for this until we do a better job at only removing the prefix only when we should.
+ '"' + this.USE + ' ' + this.STRICT + '";\n' +
+ this.filterPrefix() +
+ 'var fn=' + this.generateFunction('fn', 's,l,a,i') +
+ extra +
+ this.watchFns() +
+ 'return fn;';
+
+ /* jshint -W054 */
+ var fn = (new Function('$filter',
+ 'ensureSafeMemberName',
+ 'ensureSafeObject',
+ 'ensureSafeFunction',
+ 'ifDefined',
+ 'plus',
+ 'text',
+ fnString))(
+ this.$filter,
+ ensureSafeMemberName,
+ ensureSafeObject,
+ ensureSafeFunction,
+ ifDefined,
+ plusFn,
+ expression);
+ /* jshint +W054 */
+ this.state = this.stage = undefined;
+ fn.literal = isLiteral(ast);
+ fn.constant = isConstant(ast);
+ return fn;
+ },
+
+ USE: 'use',
+
+ STRICT: 'strict',
+
+ watchFns: function() {
+ var result = [];
+ var fns = this.state.inputs;
+ var self = this;
+ forEach(fns, function(name) {
+ result.push('var ' + name + '=' + self.generateFunction(name, 's'));
+ });
+ if (fns.length) {
+ result.push('fn.inputs=[' + fns.join(',') + '];');
+ }
+ return result.join('');
+ },
+
+ generateFunction: function(name, params) {
+ return 'function(' + params + '){' +
+ this.varsPrefix(name) +
+ this.body(name) +
+ '};';
+ },
+
+ filterPrefix: function() {
+ var parts = [];
+ var self = this;
+ forEach(this.state.filters, function(id, filter) {
+ parts.push(id + '=$filter(' + self.escape(filter) + ')');
+ });
+ if (parts.length) return 'var ' + parts.join(',') + ';';
+ return '';
+ },
+
+ varsPrefix: function(section) {
+ return this.state[section].vars.length ? 'var ' + this.state[section].vars.join(',') + ';' : '';
+ },
+
+ body: function(section) {
+ return this.state[section].body.join('');
+ },
+
+ recurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) {
+ var left, right, self = this, args, expression;
+ recursionFn = recursionFn || noop;
+ if (!skipWatchIdCheck && isDefined(ast.watchId)) {
+ intoId = intoId || this.nextId();
+ this.if_('i',
+ this.lazyAssign(intoId, this.computedMember('i', ast.watchId)),
+ this.lazyRecurse(ast, intoId, nameId, recursionFn, create, true)
+ );
+ return;
+ }
+ switch (ast.type) {
+ case AST.Program:
+ forEach(ast.body, function(expression, pos) {
+ self.recurse(expression.expression, undefined, undefined, function(expr) { right = expr; });
+ if (pos !== ast.body.length - 1) {
+ self.current().body.push(right, ';');
+ } else {
+ self.return_(right);
+ }
+ });
+ break;
+ case AST.Literal:
+ expression = this.escape(ast.value);
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.UnaryExpression:
+ this.recurse(ast.argument, undefined, undefined, function(expr) { right = expr; });
+ expression = ast.operator + '(' + this.ifDefined(right, 0) + ')';
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.BinaryExpression:
+ this.recurse(ast.left, undefined, undefined, function(expr) { left = expr; });
+ this.recurse(ast.right, undefined, undefined, function(expr) { right = expr; });
+ if (ast.operator === '+') {
+ expression = this.plus(left, right);
+ } else if (ast.operator === '-') {
+ expression = this.ifDefined(left, 0) + ast.operator + this.ifDefined(right, 0);
+ } else {
+ expression = '(' + left + ')' + ast.operator + '(' + right + ')';
+ }
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.LogicalExpression:
+ intoId = intoId || this.nextId();
+ self.recurse(ast.left, intoId);
+ self.if_(ast.operator === '&&' ? intoId : self.not(intoId), self.lazyRecurse(ast.right, intoId));
+ recursionFn(intoId);
+ break;
+ case AST.ConditionalExpression:
+ intoId = intoId || this.nextId();
+ self.recurse(ast.test, intoId);
+ self.if_(intoId, self.lazyRecurse(ast.alternate, intoId), self.lazyRecurse(ast.consequent, intoId));
+ recursionFn(intoId);
+ break;
+ case AST.Identifier:
+ intoId = intoId || this.nextId();
+ if (nameId) {
+ nameId.context = self.stage === 'inputs' ? 's' : this.assign(this.nextId(), this.getHasOwnProperty('l', ast.name) + '?l:s');
+ nameId.computed = false;
+ nameId.name = ast.name;
+ }
+ ensureSafeMemberName(ast.name);
+ self.if_(self.stage === 'inputs' || self.not(self.getHasOwnProperty('l', ast.name)),
+ function() {
+ self.if_(self.stage === 'inputs' || 's', function() {
+ if (create && create !== 1) {
+ self.if_(
+ self.not(self.nonComputedMember('s', ast.name)),
+ self.lazyAssign(self.nonComputedMember('s', ast.name), '{}'));
+ }
+ self.assign(intoId, self.nonComputedMember('s', ast.name));
+ });
+ }, intoId && self.lazyAssign(intoId, self.nonComputedMember('l', ast.name))
+ );
+ if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.name)) {
+ self.addEnsureSafeObject(intoId);
+ }
+ recursionFn(intoId);
+ break;
+ case AST.MemberExpression:
+ left = nameId && (nameId.context = this.nextId()) || this.nextId();
+ intoId = intoId || this.nextId();
+ self.recurse(ast.object, left, undefined, function() {
+ self.if_(self.notNull(left), function() {
+ if (ast.computed) {
+ right = self.nextId();
+ self.recurse(ast.property, right);
+ self.addEnsureSafeMemberName(right);
+ if (create && create !== 1) {
+ self.if_(self.not(self.computedMember(left, right)), self.lazyAssign(self.computedMember(left, right), '{}'));
+ }
+ expression = self.ensureSafeObject(self.computedMember(left, right));
+ self.assign(intoId, expression);
+ if (nameId) {
+ nameId.computed = true;
+ nameId.name = right;
+ }
+ } else {
+ ensureSafeMemberName(ast.property.name);
+ if (create && create !== 1) {
+ self.if_(self.not(self.nonComputedMember(left, ast.property.name)), self.lazyAssign(self.nonComputedMember(left, ast.property.name), '{}'));
+ }
+ expression = self.nonComputedMember(left, ast.property.name);
+ if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.property.name)) {
+ expression = self.ensureSafeObject(expression);
+ }
+ self.assign(intoId, expression);
+ if (nameId) {
+ nameId.computed = false;
+ nameId.name = ast.property.name;
+ }
+ }
+ }, function() {
+ self.assign(intoId, 'undefined');
+ });
+ recursionFn(intoId);
+ }, !!create);
+ break;
+ case AST.CallExpression:
+ intoId = intoId || this.nextId();
+ if (ast.filter) {
+ right = self.filter(ast.callee.name);
+ args = [];
+ forEach(ast.arguments, function(expr) {
+ var argument = self.nextId();
+ self.recurse(expr, argument);
+ args.push(argument);
+ });
+ expression = right + '(' + args.join(',') + ')';
+ self.assign(intoId, expression);
+ recursionFn(intoId);
+ } else {
+ right = self.nextId();
+ left = {};
+ args = [];
+ self.recurse(ast.callee, right, left, function() {
+ self.if_(self.notNull(right), function() {
+ self.addEnsureSafeFunction(right);
+ forEach(ast.arguments, function(expr) {
+ self.recurse(expr, self.nextId(), undefined, function(argument) {
+ args.push(self.ensureSafeObject(argument));
+ });
+ });
+ if (left.name) {
+ if (!self.state.expensiveChecks) {
+ self.addEnsureSafeObject(left.context);
+ }
+ expression = self.member(left.context, left.name, left.computed) + '(' + args.join(',') + ')';
+ } else {
+ expression = right + '(' + args.join(',') + ')';
+ }
+ expression = self.ensureSafeObject(expression);
+ self.assign(intoId, expression);
+ }, function() {
+ self.assign(intoId, 'undefined');
+ });
+ recursionFn(intoId);
+ });
+ }
+ break;
+ case AST.AssignmentExpression:
+ right = this.nextId();
+ left = {};
+ if (!isAssignable(ast.left)) {
+ throw $parseMinErr('lval', 'Trying to assing a value to a non l-value');
+ }
+ this.recurse(ast.left, undefined, left, function() {
+ self.if_(self.notNull(left.context), function() {
+ self.recurse(ast.right, right);
+ self.addEnsureSafeObject(self.member(left.context, left.name, left.computed));
+ expression = self.member(left.context, left.name, left.computed) + ast.operator + right;
+ self.assign(intoId, expression);
+ recursionFn(intoId || expression);
+ });
+ }, 1);
+ break;
+ case AST.ArrayExpression:
+ args = [];
+ forEach(ast.elements, function(expr) {
+ self.recurse(expr, self.nextId(), undefined, function(argument) {
+ args.push(argument);
+ });
+ });
+ expression = '[' + args.join(',') + ']';
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.ObjectExpression:
+ args = [];
+ forEach(ast.properties, function(property) {
+ self.recurse(property.value, self.nextId(), undefined, function(expr) {
+ args.push(self.escape(
+ property.key.type === AST.Identifier ? property.key.name :
+ ('' + property.key.value)) +
+ ':' + expr);
+ });
+ });
+ expression = '{' + args.join(',') + '}';
+ this.assign(intoId, expression);
+ recursionFn(expression);
+ break;
+ case AST.ThisExpression:
+ this.assign(intoId, 's');
+ recursionFn('s');
+ break;
+ case AST.NGValueParameter:
+ this.assign(intoId, 'v');
+ recursionFn('v');
+ break;
+ }
+ },
+
+ getHasOwnProperty: function(element, property) {
+ var key = element + '.' + property;
+ var own = this.current().own;
+ if (!own.hasOwnProperty(key)) {
+ own[key] = this.nextId(false, element + '&&(' + this.escape(property) + ' in ' + element + ')');
+ }
+ return own[key];
+ },
+
+ assign: function(id, value) {
+ if (!id) return;
+ this.current().body.push(id, '=', value, ';');
+ return id;
+ },
+
+ filter: function(filterName) {
+ if (!this.state.filters.hasOwnProperty(filterName)) {
+ this.state.filters[filterName] = this.nextId(true);
+ }
+ return this.state.filters[filterName];
+ },
+
+ ifDefined: function(id, defaultValue) {
+ return 'ifDefined(' + id + ',' + this.escape(defaultValue) + ')';
+ },
+
+ plus: function(left, right) {
+ return 'plus(' + left + ',' + right + ')';
+ },
+
+ return_: function(id) {
+ this.current().body.push('return ', id, ';');
+ },
+
+ if_: function(test, alternate, consequent) {
+ if (test === true) {
+ alternate();
+ } else {
+ var body = this.current().body;
+ body.push('if(', test, '){');
+ alternate();
+ body.push('}');
+ if (consequent) {
+ body.push('else{');
+ consequent();
+ body.push('}');
+ }
+ }
+ },
+
+ not: function(expression) {
+ return '!(' + expression + ')';
+ },
+
+ notNull: function(expression) {
+ return expression + '!=null';
+ },
+
+ nonComputedMember: function(left, right) {
+ return left + '.' + right;
+ },
+
+ computedMember: function(left, right) {
+ return left + '[' + right + ']';
+ },
+
+ member: function(left, right, computed) {
+ if (computed) return this.computedMember(left, right);
+ return this.nonComputedMember(left, right);
+ },
+
+ addEnsureSafeObject: function(item) {
+ this.current().body.push(this.ensureSafeObject(item), ';');
+ },
+
+ addEnsureSafeMemberName: function(item) {
+ this.current().body.push(this.ensureSafeMemberName(item), ';');
+ },
+
+ addEnsureSafeFunction: function(item) {
+ this.current().body.push(this.ensureSafeFunction(item), ';');
+ },
+
+ ensureSafeObject: function(item) {
+ return 'ensureSafeObject(' + item + ',text)';
+ },
+
+ ensureSafeMemberName: function(item) {
+ return 'ensureSafeMemberName(' + item + ',text)';
+ },
+
+ ensureSafeFunction: function(item) {
+ return 'ensureSafeFunction(' + item + ',text)';
+ },
+
+ lazyRecurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) {
+ var self = this;
+ return function() {
+ self.recurse(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck);
+ };
+ },
+
+ lazyAssign: function(id, value) {
+ var self = this;
+ return function() {
+ self.assign(id, value);
+ };
+ },
+
+ stringEscapeRegex: /[^ a-zA-Z0-9]/g,
+
+ stringEscapeFn: function(c) {
+ return '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4);
+ },
+
+ escape: function(value) {
+ if (isString(value)) return "'" + value.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
+ if (isNumber(value)) return value.toString();
+ if (value === true) return 'true';
+ if (value === false) return 'false';
+ if (value === null) return 'null';
+ if (typeof value === 'undefined') return 'undefined';
+
+ throw $parseMinErr('esc', 'IMPOSSIBLE');
+ },
+
+ nextId: function(skip, init) {
+ var id = 'v' + (this.state.nextId++);
+ if (!skip) {
+ this.current().vars.push(id + (init ? '=' + init : ''));
+ }
+ return id;
+ },
+
+ current: function() {
+ return this.state[this.state.computing];
+ }
+};
+
+
+function ASTInterpreter(astBuilder, $filter) {
+ this.astBuilder = astBuilder;
+ this.$filter = $filter;
+}
+
+ASTInterpreter.prototype = {
+ compile: function(expression, expensiveChecks) {
+ var self = this;
+ var ast = this.astBuilder.ast(expression);
+ this.expression = expression;
+ this.expensiveChecks = expensiveChecks;
+ findConstantAndWatchExpressions(ast, self.$filter);
+ var assignable;
+ var assign;
+ if ((assignable = assignableAST(ast))) {
+ assign = this.recurse(assignable);
+ }
+ var toWatch = getInputs(ast.body);
+ var inputs;
+ if (toWatch) {
+ inputs = [];
+ forEach(toWatch, function(watch, key) {
+ var input = self.recurse(watch);
+ watch.input = input;
+ inputs.push(input);
+ watch.watchId = key;
+ });
+ }
+ var expressions = [];
+ forEach(ast.body, function(expression) {
+ expressions.push(self.recurse(expression.expression));
+ });
+ var fn = ast.body.length === 0 ? function() {} :
+ ast.body.length === 1 ? expressions[0] :
+ function(scope, locals) {
+ var lastValue;
+ forEach(expressions, function(exp) {
+ lastValue = exp(scope, locals);
+ });
+ return lastValue;
+ };
+ if (assign) {
+ fn.assign = function(scope, value, locals) {
+ return assign(scope, locals, value);
+ };
+ }
+ if (inputs) {
+ fn.inputs = inputs;
+ }
+ fn.literal = isLiteral(ast);
+ fn.constant = isConstant(ast);
+ return fn;
+ },
+
+ recurse: function(ast, context, create) {
+ var left, right, self = this, args, expression;
+ if (ast.input) {
+ return this.inputs(ast.input, ast.watchId);
+ }
+ switch (ast.type) {
+ case AST.Literal:
+ return this.value(ast.value, context);
+ case AST.UnaryExpression:
+ right = this.recurse(ast.argument);
+ return this['unary' + ast.operator](right, context);
+ case AST.BinaryExpression:
+ left = this.recurse(ast.left);
+ right = this.recurse(ast.right);
+ return this['binary' + ast.operator](left, right, context);
+ case AST.LogicalExpression:
+ left = this.recurse(ast.left);
+ right = this.recurse(ast.right);
+ return this['binary' + ast.operator](left, right, context);
+ case AST.ConditionalExpression:
+ return this['ternary?:'](
+ this.recurse(ast.test),
+ this.recurse(ast.alternate),
+ this.recurse(ast.consequent),
+ context
+ );
+ case AST.Identifier:
+ ensureSafeMemberName(ast.name, self.expression);
+ return self.identifier(ast.name,
+ self.expensiveChecks || isPossiblyDangerousMemberName(ast.name),
+ context, create, self.expression);
+ case AST.MemberExpression:
+ left = this.recurse(ast.object, false, !!create);
+ if (!ast.computed) {
+ ensureSafeMemberName(ast.property.name, self.expression);
+ right = ast.property.name;
+ }
+ if (ast.computed) right = this.recurse(ast.property);
+ return ast.computed ?
+ this.computedMember(left, right, context, create, self.expression) :
+ this.nonComputedMember(left, right, self.expensiveChecks, context, create, self.expression);
+ case AST.CallExpression:
+ args = [];
+ forEach(ast.arguments, function(expr) {
+ args.push(self.recurse(expr));
+ });
+ if (ast.filter) right = this.$filter(ast.callee.name);
+ if (!ast.filter) right = this.recurse(ast.callee, true);
+ return ast.filter ?
+ function(scope, locals, assign, inputs) {
+ var values = [];
+ for (var i = 0; i < args.length; ++i) {
+ values.push(args[i](scope, locals, assign, inputs));
+ }
+ var value = right.apply(undefined, values, inputs);
+ return context ? {context: undefined, name: undefined, value: value} : value;
+ } :
+ function(scope, locals, assign, inputs) {
+ var rhs = right(scope, locals, assign, inputs);
+ var value;
+ if (rhs.value != null) {
+ ensureSafeObject(rhs.context, self.expression);
+ ensureSafeFunction(rhs.value, self.expression);
+ var values = [];
+ for (var i = 0; i < args.length; ++i) {
+ values.push(ensureSafeObject(args[i](scope, locals, assign, inputs), self.expression));
+ }
+ value = ensureSafeObject(rhs.value.apply(rhs.context, values), self.expression);
+ }
+ return context ? {value: value} : value;
+ };
+ case AST.AssignmentExpression:
+ left = this.recurse(ast.left, true, 1);
+ right = this.recurse(ast.right);
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ var rhs = right(scope, locals, assign, inputs);
+ ensureSafeObject(lhs.value, self.expression);
+ lhs.context[lhs.name] = rhs;
+ return context ? {value: rhs} : rhs;
+ };
+ case AST.ArrayExpression:
+ args = [];
+ forEach(ast.elements, function(expr) {
+ args.push(self.recurse(expr));
+ });
+ return function(scope, locals, assign, inputs) {
+ var value = [];
+ for (var i = 0; i < args.length; ++i) {
+ value.push(args[i](scope, locals, assign, inputs));
+ }
+ return context ? {value: value} : value;
+ };
+ case AST.ObjectExpression:
+ args = [];
+ forEach(ast.properties, function(property) {
+ args.push({key: property.key.type === AST.Identifier ?
+ property.key.name :
+ ('' + property.key.value),
+ value: self.recurse(property.value)
+ });
+ });
+ return function(scope, locals, assign, inputs) {
+ var value = {};
+ for (var i = 0; i < args.length; ++i) {
+ value[args[i].key] = args[i].value(scope, locals, assign, inputs);
+ }
+ return context ? {value: value} : value;
+ };
+ case AST.ThisExpression:
+ return function(scope) {
+ return context ? {value: scope} : scope;
+ };
+ case AST.NGValueParameter:
+ return function(scope, locals, assign, inputs) {
+ return context ? {value: assign} : assign;
+ };
+ }
+ },
+
+ 'unary+': function(argument, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = argument(scope, locals, assign, inputs);
+ if (isDefined(arg)) {
+ arg = +arg;
+ } else {
+ arg = 0;
+ }
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'unary-': function(argument, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = argument(scope, locals, assign, inputs);
+ if (isDefined(arg)) {
+ arg = -arg;
+ } else {
+ arg = 0;
+ }
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'unary!': function(argument, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = !argument(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary+': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ var rhs = right(scope, locals, assign, inputs);
+ var arg = plusFn(lhs, rhs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary-': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ var rhs = right(scope, locals, assign, inputs);
+ var arg = (isDefined(lhs) ? lhs : 0) - (isDefined(rhs) ? rhs : 0);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary*': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) * right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary/': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) / right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary%': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) % right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary===': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) === right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary!==': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) !== right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary==': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) == right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary!=': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) != right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary<': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) < right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary>': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) > right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary<=': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) <= right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary>=': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) >= right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary&&': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) && right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'binary||': function(left, right, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = left(scope, locals, assign, inputs) || right(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ 'ternary?:': function(test, alternate, consequent, context) {
+ return function(scope, locals, assign, inputs) {
+ var arg = test(scope, locals, assign, inputs) ? alternate(scope, locals, assign, inputs) : consequent(scope, locals, assign, inputs);
+ return context ? {value: arg} : arg;
+ };
+ },
+ value: function(value, context) {
+ return function() { return context ? {context: undefined, name: undefined, value: value} : value; };
+ },
+ identifier: function(name, expensiveChecks, context, create, expression) {
+ return function(scope, locals, assign, inputs) {
+ var base = locals && (name in locals) ? locals : scope;
+ if (create && create !== 1 && base && !(base[name])) {
+ base[name] = {};
+ }
+ var value = base ? base[name] : undefined;
+ if (expensiveChecks) {
+ ensureSafeObject(value, expression);
+ }
+ if (context) {
+ return {context: base, name: name, value: value};
+ } else {
+ return value;
+ }
+ };
+ },
+ computedMember: function(left, right, context, create, expression) {
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ var rhs;
+ var value;
+ if (lhs != null) {
+ rhs = right(scope, locals, assign, inputs);
+ ensureSafeMemberName(rhs, expression);
+ if (create && create !== 1 && lhs && !(lhs[rhs])) {
+ lhs[rhs] = {};
+ }
+ value = lhs[rhs];
+ ensureSafeObject(value, expression);
+ }
+ if (context) {
+ return {context: lhs, name: rhs, value: value};
+ } else {
+ return value;
+ }
+ };
+ },
+ nonComputedMember: function(left, right, expensiveChecks, context, create, expression) {
+ return function(scope, locals, assign, inputs) {
+ var lhs = left(scope, locals, assign, inputs);
+ if (create && create !== 1 && lhs && !(lhs[right])) {
+ lhs[right] = {};
+ }
+ var value = lhs != null ? lhs[right] : undefined;
+ if (expensiveChecks || isPossiblyDangerousMemberName(right)) {
+ ensureSafeObject(value, expression);
+ }
+ if (context) {
+ return {context: lhs, name: right, value: value};
+ } else {
+ return value;
+ }
+ };
+ },
+ inputs: function(input, watchId) {
+ return function(scope, value, locals, inputs) {
+ if (inputs) return inputs[watchId];
+ return input(scope, value, locals);
+ };
+ }
+};
+
+/**
+ * @constructor
+ */
+var Parser = function(lexer, $filter, options) {
+ this.lexer = lexer;
+ this.$filter = $filter;
+ this.options = options;
+ this.ast = new AST(this.lexer);
+ this.astCompiler = options.csp ? new ASTInterpreter(this.ast, $filter) :
+ new ASTCompiler(this.ast, $filter);
+};
+
+Parser.prototype = {
+ constructor: Parser,
+
+ parse: function(text) {
+ return this.astCompiler.compile(text, this.options.expensiveChecks);
+ }
+};
+
+var getterFnCacheDefault = createMap();
+var getterFnCacheExpensive = createMap();
+
+function isPossiblyDangerousMemberName(name) {
+ return name == 'constructor';
+}
+
+var objectValueOf = Object.prototype.valueOf;
+
+function getValueOf(value) {
+ return isFunction(value.valueOf) ? value.valueOf() : objectValueOf.call(value);
+}
+
+///////////////////////////////////
+
+/**
+ * @ngdoc service
+ * @name $parse
+ * @kind function
+ *
+ * @description
+ *
+ * Converts Angular {@link guide/expression expression} into a function.
+ *
+ * ```js
+ * var getter = $parse('user.name');
+ * var setter = getter.assign;
+ * var context = {user:{name:'angular'}};
+ * var locals = {user:{name:'local'}};
+ *
+ * expect(getter(context)).toEqual('angular');
+ * setter(context, 'newValue');
+ * expect(context.user.name).toEqual('newValue');
+ * expect(getter(context, locals)).toEqual('local');
+ * ```
+ *
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ *
+ * The returned function also has the following properties:
+ * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript
+ * literal.
+ * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript
+ * constant literals.
+ * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be
+ * set to a function to change its value on the given context.
+ *
+ */
+
+
+/**
+ * @ngdoc provider
+ * @name $parseProvider
+ *
+ * @description
+ * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}
+ * service.
+ */
+function $ParseProvider() {
+ var cacheDefault = createMap();
+ var cacheExpensive = createMap();
+
+ this.$get = ['$filter', function($filter) {
+ var noUnsafeEval = csp().noUnsafeEval;
+ var $parseOptions = {
+ csp: noUnsafeEval,
+ expensiveChecks: false
+ },
+ $parseOptionsExpensive = {
+ csp: noUnsafeEval,
+ expensiveChecks: true
+ };
+
+ return function $parse(exp, interceptorFn, expensiveChecks) {
+ var parsedExpression, oneTime, cacheKey;
+
+ switch (typeof exp) {
+ case 'string':
+ exp = exp.trim();
+ cacheKey = exp;
+
+ var cache = (expensiveChecks ? cacheExpensive : cacheDefault);
+ parsedExpression = cache[cacheKey];
+
+ if (!parsedExpression) {
+ if (exp.charAt(0) === ':' && exp.charAt(1) === ':') {
+ oneTime = true;
+ exp = exp.substring(2);
+ }
+ var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions;
+ var lexer = new Lexer(parseOptions);
+ var parser = new Parser(lexer, $filter, parseOptions);
+ parsedExpression = parser.parse(exp);
+ if (parsedExpression.constant) {
+ parsedExpression.$$watchDelegate = constantWatchDelegate;
+ } else if (oneTime) {
+ parsedExpression.$$watchDelegate = parsedExpression.literal ?
+ oneTimeLiteralWatchDelegate : oneTimeWatchDelegate;
+ } else if (parsedExpression.inputs) {
+ parsedExpression.$$watchDelegate = inputsWatchDelegate;
+ }
+ cache[cacheKey] = parsedExpression;
+ }
+ return addInterceptor(parsedExpression, interceptorFn);
+
+ case 'function':
+ return addInterceptor(exp, interceptorFn);
+
+ default:
+ return noop;
+ }
+ };
+
+ function expressionInputDirtyCheck(newValue, oldValueOfValue) {
+
+ if (newValue == null || oldValueOfValue == null) { // null/undefined
+ return newValue === oldValueOfValue;
+ }
+
+ if (typeof newValue === 'object') {
+
+ // attempt to convert the value to a primitive type
+ // TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can
+ // be cheaply dirty-checked
+ newValue = getValueOf(newValue);
+
+ if (typeof newValue === 'object') {
+ // objects/arrays are not supported - deep-watching them would be too expensive
+ return false;
+ }
+
+ // fall-through to the primitive equality check
+ }
+
+ //Primitive or NaN
+ return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue);
+ }
+
+ function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression, prettyPrintExpression) {
+ var inputExpressions = parsedExpression.inputs;
+ var lastResult;
+
+ if (inputExpressions.length === 1) {
+ var oldInputValueOf = expressionInputDirtyCheck; // init to something unique so that equals check fails
+ inputExpressions = inputExpressions[0];
+ return scope.$watch(function expressionInputWatch(scope) {
+ var newInputValue = inputExpressions(scope);
+ if (!expressionInputDirtyCheck(newInputValue, oldInputValueOf)) {
+ lastResult = parsedExpression(scope, undefined, undefined, [newInputValue]);
+ oldInputValueOf = newInputValue && getValueOf(newInputValue);
+ }
+ return lastResult;
+ }, listener, objectEquality, prettyPrintExpression);
+ }
+
+ var oldInputValueOfValues = [];
+ var oldInputValues = [];
+ for (var i = 0, ii = inputExpressions.length; i < ii; i++) {
+ oldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails
+ oldInputValues[i] = null;
+ }
+
+ return scope.$watch(function expressionInputsWatch(scope) {
+ var changed = false;
+
+ for (var i = 0, ii = inputExpressions.length; i < ii; i++) {
+ var newInputValue = inputExpressions[i](scope);
+ if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i]))) {
+ oldInputValues[i] = newInputValue;
+ oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue);
+ }
+ }
+
+ if (changed) {
+ lastResult = parsedExpression(scope, undefined, undefined, oldInputValues);
+ }
+
+ return lastResult;
+ }, listener, objectEquality, prettyPrintExpression);
+ }
+
+ function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression) {
+ var unwatch, lastValue;
+ return unwatch = scope.$watch(function oneTimeWatch(scope) {
+ return parsedExpression(scope);
+ }, function oneTimeListener(value, old, scope) {
+ lastValue = value;
+ if (isFunction(listener)) {
+ listener.apply(this, arguments);
+ }
+ if (isDefined(value)) {
+ scope.$$postDigest(function() {
+ if (isDefined(lastValue)) {
+ unwatch();
+ }
+ });
+ }
+ }, objectEquality);
+ }
+
+ function oneTimeLiteralWatchDelegate(scope, listener, objectEquality, parsedExpression) {
+ var unwatch, lastValue;
+ return unwatch = scope.$watch(function oneTimeWatch(scope) {
+ return parsedExpression(scope);
+ }, function oneTimeListener(value, old, scope) {
+ lastValue = value;
+ if (isFunction(listener)) {
+ listener.call(this, value, old, scope);
+ }
+ if (isAllDefined(value)) {
+ scope.$$postDigest(function() {
+ if (isAllDefined(lastValue)) unwatch();
+ });
+ }
+ }, objectEquality);
+
+ function isAllDefined(value) {
+ var allDefined = true;
+ forEach(value, function(val) {
+ if (!isDefined(val)) allDefined = false;
+ });
+ return allDefined;
+ }
+ }
+
+ function constantWatchDelegate(scope, listener, objectEquality, parsedExpression) {
+ var unwatch;
+ return unwatch = scope.$watch(function constantWatch(scope) {
+ return parsedExpression(scope);
+ }, function constantListener(value, old, scope) {
+ if (isFunction(listener)) {
+ listener.apply(this, arguments);
+ }
+ unwatch();
+ }, objectEquality);
+ }
+
+ function addInterceptor(parsedExpression, interceptorFn) {
+ if (!interceptorFn) return parsedExpression;
+ var watchDelegate = parsedExpression.$$watchDelegate;
+
+ var regularWatch =
+ watchDelegate !== oneTimeLiteralWatchDelegate &&
+ watchDelegate !== oneTimeWatchDelegate;
+
+ var fn = regularWatch ? function regularInterceptedExpression(scope, locals, assign, inputs) {
+ var value = parsedExpression(scope, locals, assign, inputs);
+ return interceptorFn(value, scope, locals);
+ } : function oneTimeInterceptedExpression(scope, locals, assign, inputs) {
+ var value = parsedExpression(scope, locals, assign, inputs);
+ var result = interceptorFn(value, scope, locals);
+ // we only return the interceptor's result if the
+ // initial value is defined (for bind-once)
+ return isDefined(value) ? result : value;
+ };
+
+ // Propagate $$watchDelegates other then inputsWatchDelegate
+ if (parsedExpression.$$watchDelegate &&
+ parsedExpression.$$watchDelegate !== inputsWatchDelegate) {
+ fn.$$watchDelegate = parsedExpression.$$watchDelegate;
+ } else if (!interceptorFn.$stateful) {
+ // If there is an interceptor, but no watchDelegate then treat the interceptor like
+ // we treat filters - it is assumed to be a pure function unless flagged with $stateful
+ fn.$$watchDelegate = inputsWatchDelegate;
+ fn.inputs = parsedExpression.inputs ? parsedExpression.inputs : [parsedExpression];
+ }
+
+ return fn;
+ }
+ }];
+}
+
+/**
+ * @ngdoc service
+ * @name $q
+ * @requires $rootScope
+ *
+ * @description
+ * A service that helps you run functions asynchronously, and use their return values (or exceptions)
+ * when they are done processing.
+ *
+ * This is an implementation of promises/deferred objects inspired by
+ * [Kris Kowal's Q](https://github.com/kriskowal/q).
+ *
+ * $q can be used in two fashions --- one which is more similar to Kris Kowal's Q or jQuery's Deferred
+ * implementations, and the other which resembles ES6 promises to some degree.
+ *
+ * # $q constructor
+ *
+ * The streamlined ES6 style promise is essentially just using $q as a constructor which takes a `resolver`
+ * function as the first argument. This is similar to the native Promise implementation from ES6 Harmony,
+ * see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).
+ *
+ * While the constructor-style use is supported, not all of the supporting methods from ES6 Harmony promises are
+ * available yet.
+ *
+ * It can be used like so:
+ *
+ * ```js
+ * // for the purpose of this example let's assume that variables `$q` and `okToGreet`
+ * // are available in the current lexical scope (they could have been injected or passed in).
+ *
+ * function asyncGreet(name) {
+ * // perform some asynchronous operation, resolve or reject the promise when appropriate.
+ * return $q(function(resolve, reject) {
+ * setTimeout(function() {
+ * if (okToGreet(name)) {
+ * resolve('Hello, ' + name + '!');
+ * } else {
+ * reject('Greeting ' + name + ' is not allowed.');
+ * }
+ * }, 1000);
+ * });
+ * }
+ *
+ * var promise = asyncGreet('Robin Hood');
+ * promise.then(function(greeting) {
+ * alert('Success: ' + greeting);
+ * }, function(reason) {
+ * alert('Failed: ' + reason);
+ * });
+ * ```
+ *
+ * Note: progress/notify callbacks are not currently supported via the ES6-style interface.
+ *
+ * However, the more traditional CommonJS-style usage is still available, and documented below.
+ *
+ * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an
+ * interface for interacting with an object that represents the result of an action that is
+ * performed asynchronously, and may or may not be finished at any given point in time.
+ *
+ * From the perspective of dealing with error handling, deferred and promise APIs are to
+ * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming.
+ *
+ * ```js
+ * // for the purpose of this example let's assume that variables `$q` and `okToGreet`
+ * // are available in the current lexical scope (they could have been injected or passed in).
+ *
+ * function asyncGreet(name) {
+ * var deferred = $q.defer();
+ *
+ * setTimeout(function() {
+ * deferred.notify('About to greet ' + name + '.');
+ *
+ * if (okToGreet(name)) {
+ * deferred.resolve('Hello, ' + name + '!');
+ * } else {
+ * deferred.reject('Greeting ' + name + ' is not allowed.');
+ * }
+ * }, 1000);
+ *
+ * return deferred.promise;
+ * }
+ *
+ * var promise = asyncGreet('Robin Hood');
+ * promise.then(function(greeting) {
+ * alert('Success: ' + greeting);
+ * }, function(reason) {
+ * alert('Failed: ' + reason);
+ * }, function(update) {
+ * alert('Got notification: ' + update);
+ * });
+ * ```
+ *
+ * At first it might not be obvious why this extra complexity is worth the trouble. The payoff
+ * comes in the way of guarantees that promise and deferred APIs make, see
+ * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md.
+ *
+ * Additionally the promise api allows for composition that is very hard to do with the
+ * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach.
+ * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the
+ * section on serial or parallel joining of promises.
+ *
+ * # The Deferred API
+ *
+ * A new instance of deferred is constructed by calling `$q.defer()`.
+ *
+ * The purpose of the deferred object is to expose the associated Promise instance as well as APIs
+ * that can be used for signaling the successful or unsuccessful completion, as well as the status
+ * of the task.
+ *
+ * **Methods**
+ *
+ * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection
+ * constructed via `$q.reject`, the promise will be rejected instead.
+ * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to
+ * resolving it with a rejection constructed via `$q.reject`.
+ * - `notify(value)` - provides updates on the status of the promise's execution. This may be called
+ * multiple times before the promise is either resolved or rejected.
+ *
+ * **Properties**
+ *
+ * - promise – `{Promise}` – promise object associated with this deferred.
+ *
+ *
+ * # The Promise API
+ *
+ * A new promise instance is created when a deferred instance is created and can be retrieved by
+ * calling `deferred.promise`.
+ *
+ * The purpose of the promise object is to allow for interested parties to get access to the result
+ * of the deferred task when it completes.
+ *
+ * **Methods**
+ *
+ * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or
+ * will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously
+ * as soon as the result is available. The callbacks are called with a single argument: the result
+ * or rejection reason. Additionally, the notify callback may be called zero or more times to
+ * provide a progress indication, before the promise is resolved or rejected.
+ *
+ * This method *returns a new promise* which is resolved or rejected via the return value of the
+ * `successCallback`, `errorCallback` (unless that value is a promise, in which case it is resolved
+ * with the value which is resolved in that promise using
+ * [promise chaining](http://www.html5rocks.com/en/tutorials/es6/promises/#toc-promises-queues)).
+ * It also notifies via the return value of the `notifyCallback` method. The promise cannot be
+ * resolved or rejected from the notifyCallback method.
+ *
+ * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`
+ *
+ * - `finally(callback, notifyCallback)` – allows you to observe either the fulfillment or rejection of a promise,
+ * but to do so without modifying the final value. This is useful to release resources or do some
+ * clean-up that needs to be done whether the promise was rejected or resolved. See the [full
+ * specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for
+ * more information.
+ *
+ * # Chaining promises
+ *
+ * Because calling the `then` method of a promise returns a new derived promise, it is easily
+ * possible to create a chain of promises:
+ *
+ * ```js
+ * promiseB = promiseA.then(function(result) {
+ * return result + 1;
+ * });
+ *
+ * // promiseB will be resolved immediately after promiseA is resolved and its value
+ * // will be the result of promiseA incremented by 1
+ * ```
+ *
+ * It is possible to create chains of any length and since a promise can be resolved with another
+ * promise (which will defer its resolution further), it is possible to pause/defer resolution of
+ * the promises at any point in the chain. This makes it possible to implement powerful APIs like
+ * $http's response interceptors.
+ *
+ *
+ * # Differences between Kris Kowal's Q and $q
+ *
+ * There are two main differences:
+ *
+ * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation
+ * mechanism in angular, which means faster propagation of resolution or rejection into your
+ * models and avoiding unnecessary browser repaints, which would result in flickering UI.
+ * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains
+ * all the important functionality needed for common async tasks.
+ *
+ * # Testing
+ *
+ * ```js
+ * it('should simulate promise', inject(function($q, $rootScope) {
+ * var deferred = $q.defer();
+ * var promise = deferred.promise;
+ * var resolvedValue;
+ *
+ * promise.then(function(value) { resolvedValue = value; });
+ * expect(resolvedValue).toBeUndefined();
+ *
+ * // Simulate resolving of promise
+ * deferred.resolve(123);
+ * // Note that the 'then' function does not get called synchronously.
+ * // This is because we want the promise API to always be async, whether or not
+ * // it got called synchronously or asynchronously.
+ * expect(resolvedValue).toBeUndefined();
+ *
+ * // Propagate promise resolution to 'then' functions using $apply().
+ * $rootScope.$apply();
+ * expect(resolvedValue).toEqual(123);
+ * }));
+ * ```
+ *
+ * @param {function(function, function)} resolver Function which is responsible for resolving or
+ * rejecting the newly created promise. The first parameter is a function which resolves the
+ * promise, the second parameter is a function which rejects the promise.
+ *
+ * @returns {Promise} The newly created promise.
+ */
+function $QProvider() {
+
+ this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {
+ return qFactory(function(callback) {
+ $rootScope.$evalAsync(callback);
+ }, $exceptionHandler);
+ }];
+}
+
+function $$QProvider() {
+ this.$get = ['$browser', '$exceptionHandler', function($browser, $exceptionHandler) {
+ return qFactory(function(callback) {
+ $browser.defer(callback);
+ }, $exceptionHandler);
+ }];
+}
+
+/**
+ * Constructs a promise manager.
+ *
+ * @param {function(function)} nextTick Function for executing functions in the next turn.
+ * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for
+ * debugging purposes.
+ * @returns {object} Promise manager.
+ */
+function qFactory(nextTick, exceptionHandler) {
+ var $qMinErr = minErr('$q', TypeError);
+ function callOnce(self, resolveFn, rejectFn) {
+ var called = false;
+ function wrap(fn) {
+ return function(value) {
+ if (called) return;
+ called = true;
+ fn.call(self, value);
+ };
+ }
+
+ return [wrap(resolveFn), wrap(rejectFn)];
+ }
+
+ /**
+ * @ngdoc method
+ * @name ng.$q#defer
+ * @kind function
+ *
+ * @description
+ * Creates a `Deferred` object which represents a task which will finish in the future.
+ *
+ * @returns {Deferred} Returns a new instance of deferred.
+ */
+ var defer = function() {
+ return new Deferred();
+ };
+
+ function Promise() {
+ this.$$state = { status: 0 };
+ }
+
+ extend(Promise.prototype, {
+ then: function(onFulfilled, onRejected, progressBack) {
+ if (isUndefined(onFulfilled) && isUndefined(onRejected) && isUndefined(progressBack)) {
+ return this;
+ }
+ var result = new Deferred();
+
+ this.$$state.pending = this.$$state.pending || [];
+ this.$$state.pending.push([result, onFulfilled, onRejected, progressBack]);
+ if (this.$$state.status > 0) scheduleProcessQueue(this.$$state);
+
+ return result.promise;
+ },
+
+ "catch": function(callback) {
+ return this.then(null, callback);
+ },
+
+ "finally": function(callback, progressBack) {
+ return this.then(function(value) {
+ return handleCallback(value, true, callback);
+ }, function(error) {
+ return handleCallback(error, false, callback);
+ }, progressBack);
+ }
+ });
+
+ //Faster, more basic than angular.bind http://jsperf.com/angular-bind-vs-custom-vs-native
+ function simpleBind(context, fn) {
+ return function(value) {
+ fn.call(context, value);
+ };
+ }
+
+ function processQueue(state) {
+ var fn, deferred, pending;
+
+ pending = state.pending;
+ state.processScheduled = false;
+ state.pending = undefined;
+ for (var i = 0, ii = pending.length; i < ii; ++i) {
+ deferred = pending[i][0];
+ fn = pending[i][state.status];
+ try {
+ if (isFunction(fn)) {
+ deferred.resolve(fn(state.value));
+ } else if (state.status === 1) {
+ deferred.resolve(state.value);
+ } else {
+ deferred.reject(state.value);
+ }
+ } catch (e) {
+ deferred.reject(e);
+ exceptionHandler(e);
+ }
+ }
+ }
+
+ function scheduleProcessQueue(state) {
+ if (state.processScheduled || !state.pending) return;
+ state.processScheduled = true;
+ nextTick(function() { processQueue(state); });
+ }
+
+ function Deferred() {
+ this.promise = new Promise();
+ //Necessary to support unbound execution :/
+ this.resolve = simpleBind(this, this.resolve);
+ this.reject = simpleBind(this, this.reject);
+ this.notify = simpleBind(this, this.notify);
+ }
+
+ extend(Deferred.prototype, {
+ resolve: function(val) {
+ if (this.promise.$$state.status) return;
+ if (val === this.promise) {
+ this.$$reject($qMinErr(
+ 'qcycle',
+ "Expected promise to be resolved with value other than itself '{0}'",
+ val));
+ } else {
+ this.$$resolve(val);
+ }
+
+ },
+
+ $$resolve: function(val) {
+ var then, fns;
+
+ fns = callOnce(this, this.$$resolve, this.$$reject);
+ try {
+ if ((isObject(val) || isFunction(val))) then = val && val.then;
+ if (isFunction(then)) {
+ this.promise.$$state.status = -1;
+ then.call(val, fns[0], fns[1], this.notify);
+ } else {
+ this.promise.$$state.value = val;
+ this.promise.$$state.status = 1;
+ scheduleProcessQueue(this.promise.$$state);
+ }
+ } catch (e) {
+ fns[1](e);
+ exceptionHandler(e);
+ }
+ },
+
+ reject: function(reason) {
+ if (this.promise.$$state.status) return;
+ this.$$reject(reason);
+ },
+
+ $$reject: function(reason) {
+ this.promise.$$state.value = reason;
+ this.promise.$$state.status = 2;
+ scheduleProcessQueue(this.promise.$$state);
+ },
+
+ notify: function(progress) {
+ var callbacks = this.promise.$$state.pending;
+
+ if ((this.promise.$$state.status <= 0) && callbacks && callbacks.length) {
+ nextTick(function() {
+ var callback, result;
+ for (var i = 0, ii = callbacks.length; i < ii; i++) {
+ result = callbacks[i][0];
+ callback = callbacks[i][3];
+ try {
+ result.notify(isFunction(callback) ? callback(progress) : progress);
+ } catch (e) {
+ exceptionHandler(e);
+ }
+ }
+ });
+ }
+ }
+ });
+
+ /**
+ * @ngdoc method
+ * @name $q#reject
+ * @kind function
+ *
+ * @description
+ * Creates a promise that is resolved as rejected with the specified `reason`. This api should be
+ * used to forward rejection in a chain of promises. If you are dealing with the last promise in
+ * a promise chain, you don't need to worry about it.
+ *
+ * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of
+ * `reject` as the `throw` keyword in JavaScript. This also means that if you "catch" an error via
+ * a promise error callback and you want to forward the error to the promise derived from the
+ * current promise, you have to "rethrow" the error by returning a rejection constructed via
+ * `reject`.
+ *
+ * ```js
+ * promiseB = promiseA.then(function(result) {
+ * // success: do something and resolve promiseB
+ * // with the old or a new result
+ * return result;
+ * }, function(reason) {
+ * // error: handle the error if possible and
+ * // resolve promiseB with newPromiseOrValue,
+ * // otherwise forward the rejection to promiseB
+ * if (canHandle(reason)) {
+ * // handle the error and recover
+ * return newPromiseOrValue;
+ * }
+ * return $q.reject(reason);
+ * });
+ * ```
+ *
+ * @param {*} reason Constant, message, exception or an object representing the rejection reason.
+ * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`.
+ */
+ var reject = function(reason) {
+ var result = new Deferred();
+ result.reject(reason);
+ return result.promise;
+ };
+
+ var makePromise = function makePromise(value, resolved) {
+ var result = new Deferred();
+ if (resolved) {
+ result.resolve(value);
+ } else {
+ result.reject(value);
+ }
+ return result.promise;
+ };
+
+ var handleCallback = function handleCallback(value, isResolved, callback) {
+ var callbackOutput = null;
+ try {
+ if (isFunction(callback)) callbackOutput = callback();
+ } catch (e) {
+ return makePromise(e, false);
+ }
+ if (isPromiseLike(callbackOutput)) {
+ return callbackOutput.then(function() {
+ return makePromise(value, isResolved);
+ }, function(error) {
+ return makePromise(error, false);
+ });
+ } else {
+ return makePromise(value, isResolved);
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $q#when
+ * @kind function
+ *
+ * @description
+ * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise.
+ * This is useful when you are dealing with an object that might or might not be a promise, or if
+ * the promise comes from a source that can't be trusted.
+ *
+ * @param {*} value Value or a promise
+ * @param {Function=} successCallback
+ * @param {Function=} errorCallback
+ * @param {Function=} progressCallback
+ * @returns {Promise} Returns a promise of the passed value or promise
+ */
+
+
+ var when = function(value, callback, errback, progressBack) {
+ var result = new Deferred();
+ result.resolve(value);
+ return result.promise.then(callback, errback, progressBack);
+ };
+
+ /**
+ * @ngdoc method
+ * @name $q#resolve
+ * @kind function
+ *
+ * @description
+ * Alias of {@link ng.$q#when when} to maintain naming consistency with ES6.
+ *
+ * @param {*} value Value or a promise
+ * @param {Function=} successCallback
+ * @param {Function=} errorCallback
+ * @param {Function=} progressCallback
+ * @returns {Promise} Returns a promise of the passed value or promise
+ */
+ var resolve = when;
+
+ /**
+ * @ngdoc method
+ * @name $q#all
+ * @kind function
+ *
+ * @description
+ * Combines multiple promises into a single promise that is resolved when all of the input
+ * promises are resolved.
+ *
+ * @param {Array.<Promise>|Object.<Promise>} promises An array or hash of promises.
+ * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values,
+ * each value corresponding to the promise at the same index/key in the `promises` array/hash.
+ * If any of the promises is resolved with a rejection, this resulting promise will be rejected
+ * with the same rejection value.
+ */
+
+ function all(promises) {
+ var deferred = new Deferred(),
+ counter = 0,
+ results = isArray(promises) ? [] : {};
+
+ forEach(promises, function(promise, key) {
+ counter++;
+ when(promise).then(function(value) {
+ if (results.hasOwnProperty(key)) return;
+ results[key] = value;
+ if (!(--counter)) deferred.resolve(results);
+ }, function(reason) {
+ if (results.hasOwnProperty(key)) return;
+ deferred.reject(reason);
+ });
+ });
+
+ if (counter === 0) {
+ deferred.resolve(results);
+ }
+
+ return deferred.promise;
+ }
+
+ var $Q = function Q(resolver) {
+ if (!isFunction(resolver)) {
+ throw $qMinErr('norslvr', "Expected resolverFn, got '{0}'", resolver);
+ }
+
+ if (!(this instanceof Q)) {
+ // More useful when $Q is the Promise itself.
+ return new Q(resolver);
+ }
+
+ var deferred = new Deferred();
+
+ function resolveFn(value) {
+ deferred.resolve(value);
+ }
+
+ function rejectFn(reason) {
+ deferred.reject(reason);
+ }
+
+ resolver(resolveFn, rejectFn);
+
+ return deferred.promise;
+ };
+
+ $Q.defer = defer;
+ $Q.reject = reject;
+ $Q.when = when;
+ $Q.resolve = resolve;
+ $Q.all = all;
+
+ return $Q;
+}
+
+function $$RAFProvider() { //rAF
+ this.$get = ['$window', '$timeout', function($window, $timeout) {
+ var requestAnimationFrame = $window.requestAnimationFrame ||
+ $window.webkitRequestAnimationFrame;
+
+ var cancelAnimationFrame = $window.cancelAnimationFrame ||
+ $window.webkitCancelAnimationFrame ||
+ $window.webkitCancelRequestAnimationFrame;
+
+ var rafSupported = !!requestAnimationFrame;
+ var rafFn = rafSupported
+ ? function(fn) {
+ var id = requestAnimationFrame(fn);
+ return function() {
+ cancelAnimationFrame(id);
+ };
+ }
+ : function(fn) {
+ var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666
+ return function() {
+ $timeout.cancel(timer);
+ };
+ };
+
+ queueFn.supported = rafSupported;
+
+ var cancelLastRAF;
+ var taskCount = 0;
+ var taskQueue = [];
+ return queueFn;
+
+ function flush() {
+ for (var i = 0; i < taskQueue.length; i++) {
+ var task = taskQueue[i];
+ if (task) {
+ taskQueue[i] = null;
+ task();
+ }
+ }
+ taskCount = taskQueue.length = 0;
+ }
+
+ function queueFn(asyncFn) {
+ var index = taskQueue.length;
+
+ taskCount++;
+ taskQueue.push(asyncFn);
+
+ if (index === 0) {
+ cancelLastRAF = rafFn(flush);
+ }
+
+ return function cancelQueueFn() {
+ if (index >= 0) {
+ taskQueue[index] = null;
+ index = null;
+
+ if (--taskCount === 0 && cancelLastRAF) {
+ cancelLastRAF();
+ cancelLastRAF = null;
+ taskQueue.length = 0;
+ }
+ }
+ };
+ }
+ }];
+}
+
+/**
+ * DESIGN NOTES
+ *
+ * The design decisions behind the scope are heavily favored for speed and memory consumption.
+ *
+ * The typical use of scope is to watch the expressions, which most of the time return the same
+ * value as last time so we optimize the operation.
+ *
+ * Closures construction is expensive in terms of speed as well as memory:
+ * - No closures, instead use prototypical inheritance for API
+ * - Internal state needs to be stored on scope directly, which means that private state is
+ * exposed as $$____ properties
+ *
+ * Loop operations are optimized by using while(count--) { ... }
+ * - this means that in order to keep the same order of execution as addition we have to add
+ * items to the array at the beginning (unshift) instead of at the end (push)
+ *
+ * Child scopes are created and removed often
+ * - Using an array would be slow since inserts in middle are expensive so we use linked list
+ *
+ * There are few watches then a lot of observers. This is why you don't want the observer to be
+ * implemented in the same way as watch. Watch requires return of initialization function which
+ * are expensive to construct.
+ */
+
+
+/**
+ * @ngdoc provider
+ * @name $rootScopeProvider
+ * @description
+ *
+ * Provider for the $rootScope service.
+ */
+
+/**
+ * @ngdoc method
+ * @name $rootScopeProvider#digestTtl
+ * @description
+ *
+ * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and
+ * assuming that the model is unstable.
+ *
+ * The current default is 10 iterations.
+ *
+ * In complex applications it's possible that the dependencies between `$watch`s will result in
+ * several digest iterations. However if an application needs more than the default 10 digest
+ * iterations for its model to stabilize then you should investigate what is causing the model to
+ * continuously change during the digest.
+ *
+ * Increasing the TTL could have performance implications, so you should not change it without
+ * proper justification.
+ *
+ * @param {number} limit The number of digest iterations.
+ */
+
+
+/**
+ * @ngdoc service
+ * @name $rootScope
+ * @description
+ *
+ * Every application has a single root {@link ng.$rootScope.Scope scope}.
+ * All other scopes are descendant scopes of the root scope. Scopes provide separation
+ * between the model and the view, via a mechanism for watching the model for changes.
+ * They also provide an event emission/broadcast and subscription facility. See the
+ * {@link guide/scope developer guide on scopes}.
+ */
+function $RootScopeProvider() {
+ var TTL = 10;
+ var $rootScopeMinErr = minErr('$rootScope');
+ var lastDirtyWatch = null;
+ var applyAsyncId = null;
+
+ this.digestTtl = function(value) {
+ if (arguments.length) {
+ TTL = value;
+ }
+ return TTL;
+ };
+
+ function createChildScopeClass(parent) {
+ function ChildScope() {
+ this.$$watchers = this.$$nextSibling =
+ this.$$childHead = this.$$childTail = null;
+ this.$$listeners = {};
+ this.$$listenerCount = {};
+ this.$$watchersCount = 0;
+ this.$id = nextUid();
+ this.$$ChildScope = null;
+ }
+ ChildScope.prototype = parent;
+ return ChildScope;
+ }
+
+ this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',
+ function($injector, $exceptionHandler, $parse, $browser) {
+
+ function destroyChildScope($event) {
+ $event.currentScope.$$destroyed = true;
+ }
+
+ /**
+ * @ngdoc type
+ * @name $rootScope.Scope
+ *
+ * @description
+ * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the
+ * {@link auto.$injector $injector}. Child scopes are created using the
+ * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when
+ * compiled HTML template is executed.) See also the {@link guide/scope Scopes guide} for
+ * an in-depth introduction and usage examples.
+ *
+ *
+ * # Inheritance
+ * A scope can inherit from a parent scope, as in this example:
+ * ```js
+ var parent = $rootScope;
+ var child = parent.$new();
+
+ parent.salutation = "Hello";
+ expect(child.salutation).toEqual('Hello');
+
+ child.salutation = "Welcome";
+ expect(child.salutation).toEqual('Welcome');
+ expect(parent.salutation).toEqual('Hello');
+ * ```
+ *
+ * When interacting with `Scope` in tests, additional helper methods are available on the
+ * instances of `Scope` type. See {@link ngMock.$rootScope.Scope ngMock Scope} for additional
+ * details.
+ *
+ *
+ * @param {Object.<string, function()>=} providers Map of service factory which need to be
+ * provided for the current scope. Defaults to {@link ng}.
+ * @param {Object.<string, *>=} instanceCache Provides pre-instantiated services which should
+ * append/override services provided by `providers`. This is handy
+ * when unit-testing and having the need to override a default
+ * service.
+ * @returns {Object} Newly created scope.
+ *
+ */
+ function Scope() {
+ this.$id = nextUid();
+ this.$$phase = this.$parent = this.$$watchers =
+ this.$$nextSibling = this.$$prevSibling =
+ this.$$childHead = this.$$childTail = null;
+ this.$root = this;
+ this.$$destroyed = false;
+ this.$$listeners = {};
+ this.$$listenerCount = {};
+ this.$$watchersCount = 0;
+ this.$$isolateBindings = null;
+ }
+
+ /**
+ * @ngdoc property
+ * @name $rootScope.Scope#$id
+ *
+ * @description
+ * Unique scope ID (monotonically increasing) useful for debugging.
+ */
+
+ /**
+ * @ngdoc property
+ * @name $rootScope.Scope#$parent
+ *
+ * @description
+ * Reference to the parent scope.
+ */
+
+ /**
+ * @ngdoc property
+ * @name $rootScope.Scope#$root
+ *
+ * @description
+ * Reference to the root scope.
+ */
+
+ Scope.prototype = {
+ constructor: Scope,
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$new
+ * @kind function
+ *
+ * @description
+ * Creates a new child {@link ng.$rootScope.Scope scope}.
+ *
+ * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event.
+ * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.
+ *
+ * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is
+ * desired for the scope and its child scopes to be permanently detached from the parent and
+ * thus stop participating in model change detection and listener notification by invoking.
+ *
+ * @param {boolean} isolate If true, then the scope does not prototypically inherit from the
+ * parent scope. The scope is isolated, as it can not see parent scope properties.
+ * When creating widgets, it is useful for the widget to not accidentally read parent
+ * state.
+ *
+ * @param {Scope} [parent=this] The {@link ng.$rootScope.Scope `Scope`} that will be the `$parent`
+ * of the newly created scope. Defaults to `this` scope if not provided.
+ * This is used when creating a transclude scope to correctly place it
+ * in the scope hierarchy while maintaining the correct prototypical
+ * inheritance.
+ *
+ * @returns {Object} The newly created child scope.
+ *
+ */
+ $new: function(isolate, parent) {
+ var child;
+
+ parent = parent || this;
+
+ if (isolate) {
+ child = new Scope();
+ child.$root = this.$root;
+ } else {
+ // Only create a child scope class if somebody asks for one,
+ // but cache it to allow the VM to optimize lookups.
+ if (!this.$$ChildScope) {
+ this.$$ChildScope = createChildScopeClass(this);
+ }
+ child = new this.$$ChildScope();
+ }
+ child.$parent = parent;
+ child.$$prevSibling = parent.$$childTail;
+ if (parent.$$childHead) {
+ parent.$$childTail.$$nextSibling = child;
+ parent.$$childTail = child;
+ } else {
+ parent.$$childHead = parent.$$childTail = child;
+ }
+
+ // When the new scope is not isolated or we inherit from `this`, and
+ // the parent scope is destroyed, the property `$$destroyed` is inherited
+ // prototypically. In all other cases, this property needs to be set
+ // when the parent scope is destroyed.
+ // The listener needs to be added after the parent is set
+ if (isolate || parent != this) child.$on('$destroy', destroyChildScope);
+
+ return child;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$watch
+ * @kind function
+ *
+ * @description
+ * Registers a `listener` callback to be executed whenever the `watchExpression` changes.
+ *
+ * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest
+ * $digest()} and should return the value that will be watched. (Since
+ * {@link ng.$rootScope.Scope#$digest $digest()} reruns when it detects changes the
+ * `watchExpression` can execute multiple times per
+ * {@link ng.$rootScope.Scope#$digest $digest()} and should be idempotent.)
+ * - The `listener` is called only when the value from the current `watchExpression` and the
+ * previous call to `watchExpression` are not equal (with the exception of the initial run,
+ * see below). Inequality is determined according to reference inequality,
+ * [strict comparison](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)
+ * via the `!==` Javascript operator, unless `objectEquality == true`
+ * (see next point)
+ * - When `objectEquality == true`, inequality of the `watchExpression` is determined
+ * according to the {@link angular.equals} function. To save the value of the object for
+ * later comparison, the {@link angular.copy} function is used. This therefore means that
+ * watching complex objects will have adverse memory and performance implications.
+ * - The watch `listener` may change the model, which may trigger other `listener`s to fire.
+ * This is achieved by rerunning the watchers until no changes are detected. The rerun
+ * iteration limit is 10 to prevent an infinite loop deadlock.
+ *
+ *
+ * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called,
+ * you can register a `watchExpression` function with no `listener`. (Be prepared for
+ * multiple calls to your `watchExpression` because it will execute multiple times in a
+ * single {@link ng.$rootScope.Scope#$digest $digest} cycle if a change is detected.)
+ *
+ * After a watcher is registered with the scope, the `listener` fn is called asynchronously
+ * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the
+ * watcher. In rare cases, this is undesirable because the listener is called when the result
+ * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you
+ * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the
+ * listener was called due to initialization.
+ *
+ *
+ *
+ * # Example
+ * ```js
+ // let's assume that scope was dependency injected as the $rootScope
+ var scope = $rootScope;
+ scope.name = 'misko';
+ scope.counter = 0;
+
+ expect(scope.counter).toEqual(0);
+ scope.$watch('name', function(newValue, oldValue) {
+ scope.counter = scope.counter + 1;
+ });
+ expect(scope.counter).toEqual(0);
+
+ scope.$digest();
+ // the listener is always called during the first $digest loop after it was registered
+ expect(scope.counter).toEqual(1);
+
+ scope.$digest();
+ // but now it will not be called unless the value changes
+ expect(scope.counter).toEqual(1);
+
+ scope.name = 'adam';
+ scope.$digest();
+ expect(scope.counter).toEqual(2);
+
+
+
+ // Using a function as a watchExpression
+ var food;
+ scope.foodCounter = 0;
+ expect(scope.foodCounter).toEqual(0);
+ scope.$watch(
+ // This function returns the value being watched. It is called for each turn of the $digest loop
+ function() { return food; },
+ // This is the change listener, called when the value returned from the above function changes
+ function(newValue, oldValue) {
+ if ( newValue !== oldValue ) {
+ // Only increment the counter if the value changed
+ scope.foodCounter = scope.foodCounter + 1;
+ }
+ }
+ );
+ // No digest has been run so the counter will be zero
+ expect(scope.foodCounter).toEqual(0);
+
+ // Run the digest but since food has not changed count will still be zero
+ scope.$digest();
+ expect(scope.foodCounter).toEqual(0);
+
+ // Update food and run digest. Now the counter will increment
+ food = 'cheeseburger';
+ scope.$digest();
+ expect(scope.foodCounter).toEqual(1);
+
+ * ```
+ *
+ *
+ *
+ * @param {(function()|string)} watchExpression Expression that is evaluated on each
+ * {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers
+ * a call to the `listener`.
+ *
+ * - `string`: Evaluated as {@link guide/expression expression}
+ * - `function(scope)`: called with current `scope` as a parameter.
+ * @param {function(newVal, oldVal, scope)} listener Callback called whenever the value
+ * of `watchExpression` changes.
+ *
+ * - `newVal` contains the current value of the `watchExpression`
+ * - `oldVal` contains the previous value of the `watchExpression`
+ * - `scope` refers to the current scope
+ * @param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of
+ * comparing for reference equality.
+ * @returns {function()} Returns a deregistration function for this listener.
+ */
+ $watch: function(watchExp, listener, objectEquality, prettyPrintExpression) {
+ var get = $parse(watchExp);
+
+ if (get.$$watchDelegate) {
+ return get.$$watchDelegate(this, listener, objectEquality, get, watchExp);
+ }
+ var scope = this,
+ array = scope.$$watchers,
+ watcher = {
+ fn: listener,
+ last: initWatchVal,
+ get: get,
+ exp: prettyPrintExpression || watchExp,
+ eq: !!objectEquality
+ };
+
+ lastDirtyWatch = null;
+
+ if (!isFunction(listener)) {
+ watcher.fn = noop;
+ }
+
+ if (!array) {
+ array = scope.$$watchers = [];
+ }
+ // we use unshift since we use a while loop in $digest for speed.
+ // the while loop reads in reverse order.
+ array.unshift(watcher);
+ incrementWatchersCount(this, 1);
+
+ return function deregisterWatch() {
+ if (arrayRemove(array, watcher) >= 0) {
+ incrementWatchersCount(scope, -1);
+ }
+ lastDirtyWatch = null;
+ };
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$watchGroup
+ * @kind function
+ *
+ * @description
+ * A variant of {@link ng.$rootScope.Scope#$watch $watch()} where it watches an array of `watchExpressions`.
+ * If any one expression in the collection changes the `listener` is executed.
+ *
+ * - The items in the `watchExpressions` array are observed via standard $watch operation and are examined on every
+ * call to $digest() to see if any items changes.
+ * - The `listener` is called whenever any expression in the `watchExpressions` array changes.
+ *
+ * @param {Array.<string|Function(scope)>} watchExpressions Array of expressions that will be individually
+ * watched using {@link ng.$rootScope.Scope#$watch $watch()}
+ *
+ * @param {function(newValues, oldValues, scope)} listener Callback called whenever the return value of any
+ * expression in `watchExpressions` changes
+ * The `newValues` array contains the current values of the `watchExpressions`, with the indexes matching
+ * those of `watchExpression`
+ * and the `oldValues` array contains the previous values of the `watchExpressions`, with the indexes matching
+ * those of `watchExpression`
+ * The `scope` refers to the current scope.
+ * @returns {function()} Returns a de-registration function for all listeners.
+ */
+ $watchGroup: function(watchExpressions, listener) {
+ var oldValues = new Array(watchExpressions.length);
+ var newValues = new Array(watchExpressions.length);
+ var deregisterFns = [];
+ var self = this;
+ var changeReactionScheduled = false;
+ var firstRun = true;
+
+ if (!watchExpressions.length) {
+ // No expressions means we call the listener ASAP
+ var shouldCall = true;
+ self.$evalAsync(function() {
+ if (shouldCall) listener(newValues, newValues, self);
+ });
+ return function deregisterWatchGroup() {
+ shouldCall = false;
+ };
+ }
+
+ if (watchExpressions.length === 1) {
+ // Special case size of one
+ return this.$watch(watchExpressions[0], function watchGroupAction(value, oldValue, scope) {
+ newValues[0] = value;
+ oldValues[0] = oldValue;
+ listener(newValues, (value === oldValue) ? newValues : oldValues, scope);
+ });
+ }
+
+ forEach(watchExpressions, function(expr, i) {
+ var unwatchFn = self.$watch(expr, function watchGroupSubAction(value, oldValue) {
+ newValues[i] = value;
+ oldValues[i] = oldValue;
+ if (!changeReactionScheduled) {
+ changeReactionScheduled = true;
+ self.$evalAsync(watchGroupAction);
+ }
+ });
+ deregisterFns.push(unwatchFn);
+ });
+
+ function watchGroupAction() {
+ changeReactionScheduled = false;
+
+ if (firstRun) {
+ firstRun = false;
+ listener(newValues, newValues, self);
+ } else {
+ listener(newValues, oldValues, self);
+ }
+ }
+
+ return function deregisterWatchGroup() {
+ while (deregisterFns.length) {
+ deregisterFns.shift()();
+ }
+ };
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$watchCollection
+ * @kind function
+ *
+ * @description
+ * Shallow watches the properties of an object and fires whenever any of the properties change
+ * (for arrays, this implies watching the array items; for object maps, this implies watching
+ * the properties). If a change is detected, the `listener` callback is fired.
+ *
+ * - The `obj` collection is observed via standard $watch operation and is examined on every
+ * call to $digest() to see if any items have been added, removed, or moved.
+ * - The `listener` is called whenever anything within the `obj` has changed. Examples include
+ * adding, removing, and moving items belonging to an object or array.
+ *
+ *
+ * # Example
+ * ```js
+ $scope.names = ['igor', 'matias', 'misko', 'james'];
+ $scope.dataCount = 4;
+
+ $scope.$watchCollection('names', function(newNames, oldNames) {
+ $scope.dataCount = newNames.length;
+ });
+
+ expect($scope.dataCount).toEqual(4);
+ $scope.$digest();
+
+ //still at 4 ... no changes
+ expect($scope.dataCount).toEqual(4);
+
+ $scope.names.pop();
+ $scope.$digest();
+
+ //now there's been a change
+ expect($scope.dataCount).toEqual(3);
+ * ```
+ *
+ *
+ * @param {string|function(scope)} obj Evaluated as {@link guide/expression expression}. The
+ * expression value should evaluate to an object or an array which is observed on each
+ * {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the
+ * collection will trigger a call to the `listener`.
+ *
+ * @param {function(newCollection, oldCollection, scope)} listener a callback function called
+ * when a change is detected.
+ * - The `newCollection` object is the newly modified data obtained from the `obj` expression
+ * - The `oldCollection` object is a copy of the former collection data.
+ * Due to performance considerations, the`oldCollection` value is computed only if the
+ * `listener` function declares two or more arguments.
+ * - The `scope` argument refers to the current scope.
+ *
+ * @returns {function()} Returns a de-registration function for this listener. When the
+ * de-registration function is executed, the internal watch operation is terminated.
+ */
+ $watchCollection: function(obj, listener) {
+ $watchCollectionInterceptor.$stateful = true;
+
+ var self = this;
+ // the current value, updated on each dirty-check run
+ var newValue;
+ // a shallow copy of the newValue from the last dirty-check run,
+ // updated to match newValue during dirty-check run
+ var oldValue;
+ // a shallow copy of the newValue from when the last change happened
+ var veryOldValue;
+ // only track veryOldValue if the listener is asking for it
+ var trackVeryOldValue = (listener.length > 1);
+ var changeDetected = 0;
+ var changeDetector = $parse(obj, $watchCollectionInterceptor);
+ var internalArray = [];
+ var internalObject = {};
+ var initRun = true;
+ var oldLength = 0;
+
+ function $watchCollectionInterceptor(_value) {
+ newValue = _value;
+ var newLength, key, bothNaN, newItem, oldItem;
+
+ // If the new value is undefined, then return undefined as the watch may be a one-time watch
+ if (isUndefined(newValue)) return;
+
+ if (!isObject(newValue)) { // if primitive
+ if (oldValue !== newValue) {
+ oldValue = newValue;
+ changeDetected++;
+ }
+ } else if (isArrayLike(newValue)) {
+ if (oldValue !== internalArray) {
+ // we are transitioning from something which was not an array into array.
+ oldValue = internalArray;
+ oldLength = oldValue.length = 0;
+ changeDetected++;
+ }
+
+ newLength = newValue.length;
+
+ if (oldLength !== newLength) {
+ // if lengths do not match we need to trigger change notification
+ changeDetected++;
+ oldValue.length = oldLength = newLength;
+ }
+ // copy the items to oldValue and look for changes.
+ for (var i = 0; i < newLength; i++) {
+ oldItem = oldValue[i];
+ newItem = newValue[i];
+
+ bothNaN = (oldItem !== oldItem) && (newItem !== newItem);
+ if (!bothNaN && (oldItem !== newItem)) {
+ changeDetected++;
+ oldValue[i] = newItem;
+ }
+ }
+ } else {
+ if (oldValue !== internalObject) {
+ // we are transitioning from something which was not an object into object.
+ oldValue = internalObject = {};
+ oldLength = 0;
+ changeDetected++;
+ }
+ // copy the items to oldValue and look for changes.
+ newLength = 0;
+ for (key in newValue) {
+ if (newValue.hasOwnProperty(key)) {
+ newLength++;
+ newItem = newValue[key];
+ oldItem = oldValue[key];
+
+ if (key in oldValue) {
+ bothNaN = (oldItem !== oldItem) && (newItem !== newItem);
+ if (!bothNaN && (oldItem !== newItem)) {
+ changeDetected++;
+ oldValue[key] = newItem;
+ }
+ } else {
+ oldLength++;
+ oldValue[key] = newItem;
+ changeDetected++;
+ }
+ }
+ }
+ if (oldLength > newLength) {
+ // we used to have more keys, need to find them and destroy them.
+ changeDetected++;
+ for (key in oldValue) {
+ if (!newValue.hasOwnProperty(key)) {
+ oldLength--;
+ delete oldValue[key];
+ }
+ }
+ }
+ }
+ return changeDetected;
+ }
+
+ function $watchCollectionAction() {
+ if (initRun) {
+ initRun = false;
+ listener(newValue, newValue, self);
+ } else {
+ listener(newValue, veryOldValue, self);
+ }
+
+ // make a copy for the next time a collection is changed
+ if (trackVeryOldValue) {
+ if (!isObject(newValue)) {
+ //primitive
+ veryOldValue = newValue;
+ } else if (isArrayLike(newValue)) {
+ veryOldValue = new Array(newValue.length);
+ for (var i = 0; i < newValue.length; i++) {
+ veryOldValue[i] = newValue[i];
+ }
+ } else { // if object
+ veryOldValue = {};
+ for (var key in newValue) {
+ if (hasOwnProperty.call(newValue, key)) {
+ veryOldValue[key] = newValue[key];
+ }
+ }
+ }
+ }
+ }
+
+ return this.$watch(changeDetector, $watchCollectionAction);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$digest
+ * @kind function
+ *
+ * @description
+ * Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and
+ * its children. Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change
+ * the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers}
+ * until no more listeners are firing. This means that it is possible to get into an infinite
+ * loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of
+ * iterations exceeds 10.
+ *
+ * Usually, you don't call `$digest()` directly in
+ * {@link ng.directive:ngController controllers} or in
+ * {@link ng.$compileProvider#directive directives}.
+ * Instead, you should call {@link ng.$rootScope.Scope#$apply $apply()} (typically from within
+ * a {@link ng.$compileProvider#directive directive}), which will force a `$digest()`.
+ *
+ * If you want to be notified whenever `$digest()` is called,
+ * you can register a `watchExpression` function with
+ * {@link ng.$rootScope.Scope#$watch $watch()} with no `listener`.
+ *
+ * In unit tests, you may need to call `$digest()` to simulate the scope life cycle.
+ *
+ * # Example
+ * ```js
+ var scope = ...;
+ scope.name = 'misko';
+ scope.counter = 0;
+
+ expect(scope.counter).toEqual(0);
+ scope.$watch('name', function(newValue, oldValue) {
+ scope.counter = scope.counter + 1;
+ });
+ expect(scope.counter).toEqual(0);
+
+ scope.$digest();
+ // the listener is always called during the first $digest loop after it was registered
+ expect(scope.counter).toEqual(1);
+
+ scope.$digest();
+ // but now it will not be called unless the value changes
+ expect(scope.counter).toEqual(1);
+
+ scope.name = 'adam';
+ scope.$digest();
+ expect(scope.counter).toEqual(2);
+ * ```
+ *
+ */
+ $digest: function() {
+ var watch, value, last,
+ watchers,
+ length,
+ dirty, ttl = TTL,
+ next, current, target = this,
+ watchLog = [],
+ logIdx, logMsg, asyncTask;
+
+ beginPhase('$digest');
+ // Check for changes to browser url that happened in sync before the call to $digest
+ $browser.$$checkUrlChange();
+
+ if (this === $rootScope && applyAsyncId !== null) {
+ // If this is the root scope, and $applyAsync has scheduled a deferred $apply(), then
+ // cancel the scheduled $apply and flush the queue of expressions to be evaluated.
+ $browser.defer.cancel(applyAsyncId);
+ flushApplyAsync();
+ }
+
+ lastDirtyWatch = null;
+
+ do { // "while dirty" loop
+ dirty = false;
+ current = target;
+
+ while (asyncQueue.length) {
+ try {
+ asyncTask = asyncQueue.shift();
+ asyncTask.scope.$eval(asyncTask.expression, asyncTask.locals);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ lastDirtyWatch = null;
+ }
+
+ traverseScopesLoop:
+ do { // "traverse the scopes" loop
+ if ((watchers = current.$$watchers)) {
+ // process our watches
+ length = watchers.length;
+ while (length--) {
+ try {
+ watch = watchers[length];
+ // Most common watches are on primitives, in which case we can short
+ // circuit it with === operator, only when === fails do we use .equals
+ if (watch) {
+ if ((value = watch.get(current)) !== (last = watch.last) &&
+ !(watch.eq
+ ? equals(value, last)
+ : (typeof value === 'number' && typeof last === 'number'
+ && isNaN(value) && isNaN(last)))) {
+ dirty = true;
+ lastDirtyWatch = watch;
+ watch.last = watch.eq ? copy(value, null) : value;
+ watch.fn(value, ((last === initWatchVal) ? value : last), current);
+ if (ttl < 5) {
+ logIdx = 4 - ttl;
+ if (!watchLog[logIdx]) watchLog[logIdx] = [];
+ watchLog[logIdx].push({
+ msg: isFunction(watch.exp) ? 'fn: ' + (watch.exp.name || watch.exp.toString()) : watch.exp,
+ newVal: value,
+ oldVal: last
+ });
+ }
+ } else if (watch === lastDirtyWatch) {
+ // If the most recently dirty watcher is now clean, short circuit since the remaining watchers
+ // have already been tested.
+ dirty = false;
+ break traverseScopesLoop;
+ }
+ }
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+ }
+
+ // Insanity Warning: scope depth-first traversal
+ // yes, this code is a bit crazy, but it works and we have tests to prove it!
+ // this piece should be kept in sync with the traversal in $broadcast
+ if (!(next = ((current.$$watchersCount && current.$$childHead) ||
+ (current !== target && current.$$nextSibling)))) {
+ while (current !== target && !(next = current.$$nextSibling)) {
+ current = current.$parent;
+ }
+ }
+ } while ((current = next));
+
+ // `break traverseScopesLoop;` takes us to here
+
+ if ((dirty || asyncQueue.length) && !(ttl--)) {
+ clearPhase();
+ throw $rootScopeMinErr('infdig',
+ '{0} $digest() iterations reached. Aborting!\n' +
+ 'Watchers fired in the last 5 iterations: {1}',
+ TTL, watchLog);
+ }
+
+ } while (dirty || asyncQueue.length);
+
+ clearPhase();
+
+ while (postDigestQueue.length) {
+ try {
+ postDigestQueue.shift()();
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+ },
+
+
+ /**
+ * @ngdoc event
+ * @name $rootScope.Scope#$destroy
+ * @eventType broadcast on scope being destroyed
+ *
+ * @description
+ * Broadcasted when a scope and its children are being destroyed.
+ *
+ * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
+ * clean up DOM bindings before an element is removed from the DOM.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$destroy
+ * @kind function
+ *
+ * @description
+ * Removes the current scope (and all of its children) from the parent scope. Removal implies
+ * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer
+ * propagate to the current scope and its children. Removal also implies that the current
+ * scope is eligible for garbage collection.
+ *
+ * The `$destroy()` is usually used by directives such as
+ * {@link ng.directive:ngRepeat ngRepeat} for managing the
+ * unrolling of the loop.
+ *
+ * Just before a scope is destroyed, a `$destroy` event is broadcasted on this scope.
+ * Application code can register a `$destroy` event handler that will give it a chance to
+ * perform any necessary cleanup.
+ *
+ * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
+ * clean up DOM bindings before an element is removed from the DOM.
+ */
+ $destroy: function() {
+ // We can't destroy a scope that has been already destroyed.
+ if (this.$$destroyed) return;
+ var parent = this.$parent;
+
+ this.$broadcast('$destroy');
+ this.$$destroyed = true;
+
+ if (this === $rootScope) {
+ //Remove handlers attached to window when $rootScope is removed
+ $browser.$$applicationDestroyed();
+ }
+
+ incrementWatchersCount(this, -this.$$watchersCount);
+ for (var eventName in this.$$listenerCount) {
+ decrementListenerCount(this, this.$$listenerCount[eventName], eventName);
+ }
+
+ // sever all the references to parent scopes (after this cleanup, the current scope should
+ // not be retained by any of our references and should be eligible for garbage collection)
+ if (parent && parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;
+ if (parent && parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;
+ if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;
+ if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling;
+
+ // Disable listeners, watchers and apply/digest methods
+ this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = noop;
+ this.$on = this.$watch = this.$watchGroup = function() { return noop; };
+ this.$$listeners = {};
+
+ // All of the code below is bogus code that works around V8's memory leak via optimized code
+ // and inline caches.
+ //
+ // see:
+ // - https://code.google.com/p/v8/issues/detail?id=2073#c26
+ // - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909
+ // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451
+
+ this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead =
+ this.$$childTail = this.$root = this.$$watchers = null;
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$eval
+ * @kind function
+ *
+ * @description
+ * Executes the `expression` on the current scope and returns the result. Any exceptions in
+ * the expression are propagated (uncaught). This is useful when evaluating Angular
+ * expressions.
+ *
+ * # Example
+ * ```js
+ var scope = ng.$rootScope.Scope();
+ scope.a = 1;
+ scope.b = 2;
+
+ expect(scope.$eval('a+b')).toEqual(3);
+ expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);
+ * ```
+ *
+ * @param {(string|function())=} expression An angular expression to be executed.
+ *
+ * - `string`: execute using the rules as defined in {@link guide/expression expression}.
+ * - `function(scope)`: execute the function with the current `scope` parameter.
+ *
+ * @param {(object)=} locals Local variables object, useful for overriding values in scope.
+ * @returns {*} The result of evaluating the expression.
+ */
+ $eval: function(expr, locals) {
+ return $parse(expr)(this, locals);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$evalAsync
+ * @kind function
+ *
+ * @description
+ * Executes the expression on the current scope at a later point in time.
+ *
+ * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only
+ * that:
+ *
+ * - it will execute after the function that scheduled the evaluation (preferably before DOM
+ * rendering).
+ * - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after
+ * `expression` execution.
+ *
+ * Any exceptions from the execution of the expression are forwarded to the
+ * {@link ng.$exceptionHandler $exceptionHandler} service.
+ *
+ * __Note:__ if this function is called outside of a `$digest` cycle, a new `$digest` cycle
+ * will be scheduled. However, it is encouraged to always call code that changes the model
+ * from within an `$apply` call. That includes code evaluated via `$evalAsync`.
+ *
+ * @param {(string|function())=} expression An angular expression to be executed.
+ *
+ * - `string`: execute using the rules as defined in {@link guide/expression expression}.
+ * - `function(scope)`: execute the function with the current `scope` parameter.
+ *
+ * @param {(object)=} locals Local variables object, useful for overriding values in scope.
+ */
+ $evalAsync: function(expr, locals) {
+ // if we are outside of an $digest loop and this is the first time we are scheduling async
+ // task also schedule async auto-flush
+ if (!$rootScope.$$phase && !asyncQueue.length) {
+ $browser.defer(function() {
+ if (asyncQueue.length) {
+ $rootScope.$digest();
+ }
+ });
+ }
+
+ asyncQueue.push({scope: this, expression: expr, locals: locals});
+ },
+
+ $$postDigest: function(fn) {
+ postDigestQueue.push(fn);
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$apply
+ * @kind function
+ *
+ * @description
+ * `$apply()` is used to execute an expression in angular from outside of the angular
+ * framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).
+ * Because we are calling into the angular framework we need to perform proper scope life
+ * cycle of {@link ng.$exceptionHandler exception handling},
+ * {@link ng.$rootScope.Scope#$digest executing watches}.
+ *
+ * ## Life cycle
+ *
+ * # Pseudo-Code of `$apply()`
+ * ```js
+ function $apply(expr) {
+ try {
+ return $eval(expr);
+ } catch (e) {
+ $exceptionHandler(e);
+ } finally {
+ $root.$digest();
+ }
+ }
+ * ```
+ *
+ *
+ * Scope's `$apply()` method transitions through the following stages:
+ *
+ * 1. The {@link guide/expression expression} is executed using the
+ * {@link ng.$rootScope.Scope#$eval $eval()} method.
+ * 2. Any exceptions from the execution of the expression are forwarded to the
+ * {@link ng.$exceptionHandler $exceptionHandler} service.
+ * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the
+ * expression was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method.
+ *
+ *
+ * @param {(string|function())=} exp An angular expression to be executed.
+ *
+ * - `string`: execute using the rules as defined in {@link guide/expression expression}.
+ * - `function(scope)`: execute the function with current `scope` parameter.
+ *
+ * @returns {*} The result of evaluating the expression.
+ */
+ $apply: function(expr) {
+ try {
+ beginPhase('$apply');
+ try {
+ return this.$eval(expr);
+ } finally {
+ clearPhase();
+ }
+ } catch (e) {
+ $exceptionHandler(e);
+ } finally {
+ try {
+ $rootScope.$digest();
+ } catch (e) {
+ $exceptionHandler(e);
+ throw e;
+ }
+ }
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$applyAsync
+ * @kind function
+ *
+ * @description
+ * Schedule the invocation of $apply to occur at a later time. The actual time difference
+ * varies across browsers, but is typically around ~10 milliseconds.
+ *
+ * This can be used to queue up multiple expressions which need to be evaluated in the same
+ * digest.
+ *
+ * @param {(string|function())=} exp An angular expression to be executed.
+ *
+ * - `string`: execute using the rules as defined in {@link guide/expression expression}.
+ * - `function(scope)`: execute the function with current `scope` parameter.
+ */
+ $applyAsync: function(expr) {
+ var scope = this;
+ expr && applyAsyncQueue.push($applyAsyncExpression);
+ scheduleApplyAsync();
+
+ function $applyAsyncExpression() {
+ scope.$eval(expr);
+ }
+ },
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$on
+ * @kind function
+ *
+ * @description
+ * Listens on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for
+ * discussion of event life cycle.
+ *
+ * The event listener function format is: `function(event, args...)`. The `event` object
+ * passed into the listener has the following attributes:
+ *
+ * - `targetScope` - `{Scope}`: the scope on which the event was `$emit`-ed or
+ * `$broadcast`-ed.
+ * - `currentScope` - `{Scope}`: the scope that is currently handling the event. Once the
+ * event propagates through the scope hierarchy, this property is set to null.
+ * - `name` - `{string}`: name of the event.
+ * - `stopPropagation` - `{function=}`: calling `stopPropagation` function will cancel
+ * further event propagation (available only for events that were `$emit`-ed).
+ * - `preventDefault` - `{function}`: calling `preventDefault` sets `defaultPrevented` flag
+ * to true.
+ * - `defaultPrevented` - `{boolean}`: true if `preventDefault` was called.
+ *
+ * @param {string} name Event name to listen on.
+ * @param {function(event, ...args)} listener Function to call when the event is emitted.
+ * @returns {function()} Returns a deregistration function for this listener.
+ */
+ $on: function(name, listener) {
+ var namedListeners = this.$$listeners[name];
+ if (!namedListeners) {
+ this.$$listeners[name] = namedListeners = [];
+ }
+ namedListeners.push(listener);
+
+ var current = this;
+ do {
+ if (!current.$$listenerCount[name]) {
+ current.$$listenerCount[name] = 0;
+ }
+ current.$$listenerCount[name]++;
+ } while ((current = current.$parent));
+
+ var self = this;
+ return function() {
+ var indexOfListener = namedListeners.indexOf(listener);
+ if (indexOfListener !== -1) {
+ namedListeners[indexOfListener] = null;
+ decrementListenerCount(self, 1, name);
+ }
+ };
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$emit
+ * @kind function
+ *
+ * @description
+ * Dispatches an event `name` upwards through the scope hierarchy notifying the
+ * registered {@link ng.$rootScope.Scope#$on} listeners.
+ *
+ * The event life cycle starts at the scope on which `$emit` was called. All
+ * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get
+ * notified. Afterwards, the event traverses upwards toward the root scope and calls all
+ * registered listeners along the way. The event will stop propagating if one of the listeners
+ * cancels it.
+ *
+ * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
+ * onto the {@link ng.$exceptionHandler $exceptionHandler} service.
+ *
+ * @param {string} name Event name to emit.
+ * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.
+ * @return {Object} Event object (see {@link ng.$rootScope.Scope#$on}).
+ */
+ $emit: function(name, args) {
+ var empty = [],
+ namedListeners,
+ scope = this,
+ stopPropagation = false,
+ event = {
+ name: name,
+ targetScope: scope,
+ stopPropagation: function() {stopPropagation = true;},
+ preventDefault: function() {
+ event.defaultPrevented = true;
+ },
+ defaultPrevented: false
+ },
+ listenerArgs = concat([event], arguments, 1),
+ i, length;
+
+ do {
+ namedListeners = scope.$$listeners[name] || empty;
+ event.currentScope = scope;
+ for (i = 0, length = namedListeners.length; i < length; i++) {
+
+ // if listeners were deregistered, defragment the array
+ if (!namedListeners[i]) {
+ namedListeners.splice(i, 1);
+ i--;
+ length--;
+ continue;
+ }
+ try {
+ //allow all listeners attached to the current scope to run
+ namedListeners[i].apply(null, listenerArgs);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+ //if any listener on the current scope stops propagation, prevent bubbling
+ if (stopPropagation) {
+ event.currentScope = null;
+ return event;
+ }
+ //traverse upwards
+ scope = scope.$parent;
+ } while (scope);
+
+ event.currentScope = null;
+
+ return event;
+ },
+
+
+ /**
+ * @ngdoc method
+ * @name $rootScope.Scope#$broadcast
+ * @kind function
+ *
+ * @description
+ * Dispatches an event `name` downwards to all child scopes (and their children) notifying the
+ * registered {@link ng.$rootScope.Scope#$on} listeners.
+ *
+ * The event life cycle starts at the scope on which `$broadcast` was called. All
+ * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get
+ * notified. Afterwards, the event propagates to all direct and indirect scopes of the current
+ * scope and calls all registered listeners along the way. The event cannot be canceled.
+ *
+ * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
+ * onto the {@link ng.$exceptionHandler $exceptionHandler} service.
+ *
+ * @param {string} name Event name to broadcast.
+ * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.
+ * @return {Object} Event object, see {@link ng.$rootScope.Scope#$on}
+ */
+ $broadcast: function(name, args) {
+ var target = this,
+ current = target,
+ next = target,
+ event = {
+ name: name,
+ targetScope: target,
+ preventDefault: function() {
+ event.defaultPrevented = true;
+ },
+ defaultPrevented: false
+ };
+
+ if (!target.$$listenerCount[name]) return event;
+
+ var listenerArgs = concat([event], arguments, 1),
+ listeners, i, length;
+
+ //down while you can, then up and next sibling or up and next sibling until back at root
+ while ((current = next)) {
+ event.currentScope = current;
+ listeners = current.$$listeners[name] || [];
+ for (i = 0, length = listeners.length; i < length; i++) {
+ // if listeners were deregistered, defragment the array
+ if (!listeners[i]) {
+ listeners.splice(i, 1);
+ i--;
+ length--;
+ continue;
+ }
+
+ try {
+ listeners[i].apply(null, listenerArgs);
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+
+ // Insanity Warning: scope depth-first traversal
+ // yes, this code is a bit crazy, but it works and we have tests to prove it!
+ // this piece should be kept in sync with the traversal in $digest
+ // (though it differs due to having the extra check for $$listenerCount)
+ if (!(next = ((current.$$listenerCount[name] && current.$$childHead) ||
+ (current !== target && current.$$nextSibling)))) {
+ while (current !== target && !(next = current.$$nextSibling)) {
+ current = current.$parent;
+ }
+ }
+ }
+
+ event.currentScope = null;
+ return event;
+ }
+ };
+
+ var $rootScope = new Scope();
+
+ //The internal queues. Expose them on the $rootScope for debugging/testing purposes.
+ var asyncQueue = $rootScope.$$asyncQueue = [];
+ var postDigestQueue = $rootScope.$$postDigestQueue = [];
+ var applyAsyncQueue = $rootScope.$$applyAsyncQueue = [];
+
+ return $rootScope;
+
+
+ function beginPhase(phase) {
+ if ($rootScope.$$phase) {
+ throw $rootScopeMinErr('inprog', '{0} already in progress', $rootScope.$$phase);
+ }
+
+ $rootScope.$$phase = phase;
+ }
+
+ function clearPhase() {
+ $rootScope.$$phase = null;
+ }
+
+ function incrementWatchersCount(current, count) {
+ do {
+ current.$$watchersCount += count;
+ } while ((current = current.$parent));
+ }
+
+ function decrementListenerCount(current, count, name) {
+ do {
+ current.$$listenerCount[name] -= count;
+
+ if (current.$$listenerCount[name] === 0) {
+ delete current.$$listenerCount[name];
+ }
+ } while ((current = current.$parent));
+ }
+
+ /**
+ * function used as an initial value for watchers.
+ * because it's unique we can easily tell it apart from other values
+ */
+ function initWatchVal() {}
+
+ function flushApplyAsync() {
+ while (applyAsyncQueue.length) {
+ try {
+ applyAsyncQueue.shift()();
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ }
+ applyAsyncId = null;
+ }
+
+ function scheduleApplyAsync() {
+ if (applyAsyncId === null) {
+ applyAsyncId = $browser.defer(function() {
+ $rootScope.$apply(flushApplyAsync);
+ });
+ }
+ }
+ }];
+}
+
+/**
+ * @description
+ * Private service to sanitize uris for links and images. Used by $compile and $sanitize.
+ */
+function $$SanitizeUriProvider() {
+ var aHrefSanitizationWhitelist = /^\s*(https?|ftp|mailto|tel|file):/,
+ imgSrcSanitizationWhitelist = /^\s*((https?|ftp|file|blob):|data:image\/)/;
+
+ /**
+ * @description
+ * Retrieves or overrides the default regular expression that is used for whitelisting of safe
+ * urls during a[href] sanitization.
+ *
+ * The sanitization is a security measure aimed at prevent XSS attacks via html links.
+ *
+ * Any url about to be assigned to a[href] via data-binding is first normalized and turned into
+ * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`
+ * regular expression. If a match is found, the original url is written into the dom. Otherwise,
+ * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
+ *
+ * @param {RegExp=} regexp New regexp to whitelist urls with.
+ * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
+ * chaining otherwise.
+ */
+ this.aHrefSanitizationWhitelist = function(regexp) {
+ if (isDefined(regexp)) {
+ aHrefSanitizationWhitelist = regexp;
+ return this;
+ }
+ return aHrefSanitizationWhitelist;
+ };
+
+
+ /**
+ * @description
+ * Retrieves or overrides the default regular expression that is used for whitelisting of safe
+ * urls during img[src] sanitization.
+ *
+ * The sanitization is a security measure aimed at prevent XSS attacks via html links.
+ *
+ * Any url about to be assigned to img[src] via data-binding is first normalized and turned into
+ * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`
+ * regular expression. If a match is found, the original url is written into the dom. Otherwise,
+ * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
+ *
+ * @param {RegExp=} regexp New regexp to whitelist urls with.
+ * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
+ * chaining otherwise.
+ */
+ this.imgSrcSanitizationWhitelist = function(regexp) {
+ if (isDefined(regexp)) {
+ imgSrcSanitizationWhitelist = regexp;
+ return this;
+ }
+ return imgSrcSanitizationWhitelist;
+ };
+
+ this.$get = function() {
+ return function sanitizeUri(uri, isImage) {
+ var regex = isImage ? imgSrcSanitizationWhitelist : aHrefSanitizationWhitelist;
+ var normalizedVal;
+ normalizedVal = urlResolve(uri).href;
+ if (normalizedVal !== '' && !normalizedVal.match(regex)) {
+ return 'unsafe:' + normalizedVal;
+ }
+ return uri;
+ };
+ };
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Any commits to this file should be reviewed with security in mind. *
+ * Changes to this file can potentially create security vulnerabilities. *
+ * An approval from 2 Core members with history of modifying *
+ * this file is required. *
+ * *
+ * Does the change somehow allow for arbitrary javascript to be executed? *
+ * Or allows for someone to change the prototype of built-in objects? *
+ * Or gives undesired access to variables likes document or window? *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+var $sceMinErr = minErr('$sce');
+
+var SCE_CONTEXTS = {
+ HTML: 'html',
+ CSS: 'css',
+ URL: 'url',
+ // RESOURCE_URL is a subtype of URL used in contexts where a privileged resource is sourced from a
+ // url. (e.g. ng-include, script src, templateUrl)
+ RESOURCE_URL: 'resourceUrl',
+ JS: 'js'
+};
+
+// Helper functions follow.
+
+function adjustMatcher(matcher) {
+ if (matcher === 'self') {
+ return matcher;
+ } else if (isString(matcher)) {
+ // Strings match exactly except for 2 wildcards - '*' and '**'.
+ // '*' matches any character except those from the set ':/.?&'.
+ // '**' matches any character (like .* in a RegExp).
+ // More than 2 *'s raises an error as it's ill defined.
+ if (matcher.indexOf('***') > -1) {
+ throw $sceMinErr('iwcard',
+ 'Illegal sequence *** in string matcher. String: {0}', matcher);
+ }
+ matcher = escapeForRegexp(matcher).
+ replace('\\*\\*', '.*').
+ replace('\\*', '[^:/.?&;]*');
+ return new RegExp('^' + matcher + '$');
+ } else if (isRegExp(matcher)) {
+ // The only other type of matcher allowed is a Regexp.
+ // Match entire URL / disallow partial matches.
+ // Flags are reset (i.e. no global, ignoreCase or multiline)
+ return new RegExp('^' + matcher.source + '$');
+ } else {
+ throw $sceMinErr('imatcher',
+ 'Matchers may only be "self", string patterns or RegExp objects');
+ }
+}
+
+
+function adjustMatchers(matchers) {
+ var adjustedMatchers = [];
+ if (isDefined(matchers)) {
+ forEach(matchers, function(matcher) {
+ adjustedMatchers.push(adjustMatcher(matcher));
+ });
+ }
+ return adjustedMatchers;
+}
+
+
+/**
+ * @ngdoc service
+ * @name $sceDelegate
+ * @kind function
+ *
+ * @description
+ *
+ * `$sceDelegate` is a service that is used by the `$sce` service to provide {@link ng.$sce Strict
+ * Contextual Escaping (SCE)} services to AngularJS.
+ *
+ * Typically, you would configure or override the {@link ng.$sceDelegate $sceDelegate} instead of
+ * the `$sce` service to customize the way Strict Contextual Escaping works in AngularJS. This is
+ * because, while the `$sce` provides numerous shorthand methods, etc., you really only need to
+ * override 3 core functions (`trustAs`, `getTrusted` and `valueOf`) to replace the way things
+ * work because `$sce` delegates to `$sceDelegate` for these operations.
+ *
+ * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} to configure this service.
+ *
+ * The default instance of `$sceDelegate` should work out of the box with little pain. While you
+ * can override it completely to change the behavior of `$sce`, the common case would
+ * involve configuring the {@link ng.$sceDelegateProvider $sceDelegateProvider} instead by setting
+ * your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as
+ * templates. Refer {@link ng.$sceDelegateProvider#resourceUrlWhitelist
+ * $sceDelegateProvider.resourceUrlWhitelist} and {@link
+ * ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}
+ */
+
+/**
+ * @ngdoc provider
+ * @name $sceDelegateProvider
+ * @description
+ *
+ * The `$sceDelegateProvider` provider allows developers to configure the {@link ng.$sceDelegate
+ * $sceDelegate} service. This allows one to get/set the whitelists and blacklists used to ensure
+ * that the URLs used for sourcing Angular templates are safe. Refer {@link
+ * ng.$sceDelegateProvider#resourceUrlWhitelist $sceDelegateProvider.resourceUrlWhitelist} and
+ * {@link ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}
+ *
+ * For the general details about this service in Angular, read the main page for {@link ng.$sce
+ * Strict Contextual Escaping (SCE)}.
+ *
+ * **Example**: Consider the following case. <a name="example"></a>
+ *
+ * - your app is hosted at url `http://myapp.example.com/`
+ * - but some of your templates are hosted on other domains you control such as
+ * `http://srv01.assets.example.com/`, `http://srv02.assets.example.com/`, etc.
+ * - and you have an open redirect at `http://myapp.example.com/clickThru?...`.
+ *
+ * Here is what a secure configuration for this scenario might look like:
+ *
+ * ```
+ * angular.module('myApp', []).config(function($sceDelegateProvider) {
+ * $sceDelegateProvider.resourceUrlWhitelist([
+ * // Allow same origin resource loads.
+ * 'self',
+ * // Allow loading from our assets domain. Notice the difference between * and **.
+ * 'http://srv*.assets.example.com/**'
+ * ]);
+ *
+ * // The blacklist overrides the whitelist so the open redirect here is blocked.
+ * $sceDelegateProvider.resourceUrlBlacklist([
+ * 'http://myapp.example.com/clickThru**'
+ * ]);
+ * });
+ * ```
+ */
+
+function $SceDelegateProvider() {
+ this.SCE_CONTEXTS = SCE_CONTEXTS;
+
+ // Resource URLs can also be trusted by policy.
+ var resourceUrlWhitelist = ['self'],
+ resourceUrlBlacklist = [];
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegateProvider#resourceUrlWhitelist
+ * @kind function
+ *
+ * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value
+ * provided. This must be an array or null. A snapshot of this array is used so further
+ * changes to the array are ignored.
+ *
+ * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items
+ * allowed in this array.
+ *
+ * Note: **an empty whitelist array will block all URLs**!
+ *
+ * @return {Array} the currently set whitelist array.
+ *
+ * The **default value** when no whitelist has been explicitly set is `['self']` allowing only
+ * same origin resource requests.
+ *
+ * @description
+ * Sets/Gets the whitelist of trusted resource URLs.
+ */
+ this.resourceUrlWhitelist = function(value) {
+ if (arguments.length) {
+ resourceUrlWhitelist = adjustMatchers(value);
+ }
+ return resourceUrlWhitelist;
+ };
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegateProvider#resourceUrlBlacklist
+ * @kind function
+ *
+ * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value
+ * provided. This must be an array or null. A snapshot of this array is used so further
+ * changes to the array are ignored.
+ *
+ * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items
+ * allowed in this array.
+ *
+ * The typical usage for the blacklist is to **block
+ * [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as
+ * these would otherwise be trusted but actually return content from the redirected domain.
+ *
+ * Finally, **the blacklist overrides the whitelist** and has the final say.
+ *
+ * @return {Array} the currently set blacklist array.
+ *
+ * The **default value** when no whitelist has been explicitly set is the empty array (i.e. there
+ * is no blacklist.)
+ *
+ * @description
+ * Sets/Gets the blacklist of trusted resource URLs.
+ */
+
+ this.resourceUrlBlacklist = function(value) {
+ if (arguments.length) {
+ resourceUrlBlacklist = adjustMatchers(value);
+ }
+ return resourceUrlBlacklist;
+ };
+
+ this.$get = ['$injector', function($injector) {
+
+ var htmlSanitizer = function htmlSanitizer(html) {
+ throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');
+ };
+
+ if ($injector.has('$sanitize')) {
+ htmlSanitizer = $injector.get('$sanitize');
+ }
+
+
+ function matchUrl(matcher, parsedUrl) {
+ if (matcher === 'self') {
+ return urlIsSameOrigin(parsedUrl);
+ } else {
+ // definitely a regex. See adjustMatchers()
+ return !!matcher.exec(parsedUrl.href);
+ }
+ }
+
+ function isResourceUrlAllowedByPolicy(url) {
+ var parsedUrl = urlResolve(url.toString());
+ var i, n, allowed = false;
+ // Ensure that at least one item from the whitelist allows this url.
+ for (i = 0, n = resourceUrlWhitelist.length; i < n; i++) {
+ if (matchUrl(resourceUrlWhitelist[i], parsedUrl)) {
+ allowed = true;
+ break;
+ }
+ }
+ if (allowed) {
+ // Ensure that no item from the blacklist blocked this url.
+ for (i = 0, n = resourceUrlBlacklist.length; i < n; i++) {
+ if (matchUrl(resourceUrlBlacklist[i], parsedUrl)) {
+ allowed = false;
+ break;
+ }
+ }
+ }
+ return allowed;
+ }
+
+ function generateHolderType(Base) {
+ var holderType = function TrustedValueHolderType(trustedValue) {
+ this.$$unwrapTrustedValue = function() {
+ return trustedValue;
+ };
+ };
+ if (Base) {
+ holderType.prototype = new Base();
+ }
+ holderType.prototype.valueOf = function sceValueOf() {
+ return this.$$unwrapTrustedValue();
+ };
+ holderType.prototype.toString = function sceToString() {
+ return this.$$unwrapTrustedValue().toString();
+ };
+ return holderType;
+ }
+
+ var trustedValueHolderBase = generateHolderType(),
+ byType = {};
+
+ byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase);
+ byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase);
+ byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase);
+ byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase);
+ byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]);
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegate#trustAs
+ *
+ * @description
+ * Returns an object that is trusted by angular for use in specified strict
+ * contextual escaping contexts (such as ng-bind-html, ng-include, any src
+ * attribute interpolation, any dom event binding attribute interpolation
+ * such as for onclick, etc.) that uses the provided value.
+ * See {@link ng.$sce $sce} for enabling strict contextual escaping.
+ *
+ * @param {string} type The kind of context in which this value is safe for use. e.g. url,
+ * resourceUrl, html, js and css.
+ * @param {*} value The value that that should be considered trusted/safe.
+ * @returns {*} A value that can be used to stand in for the provided `value` in places
+ * where Angular expects a $sce.trustAs() return value.
+ */
+ function trustAs(type, trustedValue) {
+ var Constructor = (byType.hasOwnProperty(type) ? byType[type] : null);
+ if (!Constructor) {
+ throw $sceMinErr('icontext',
+ 'Attempted to trust a value in invalid context. Context: {0}; Value: {1}',
+ type, trustedValue);
+ }
+ if (trustedValue === null || trustedValue === undefined || trustedValue === '') {
+ return trustedValue;
+ }
+ // All the current contexts in SCE_CONTEXTS happen to be strings. In order to avoid trusting
+ // mutable objects, we ensure here that the value passed in is actually a string.
+ if (typeof trustedValue !== 'string') {
+ throw $sceMinErr('itype',
+ 'Attempted to trust a non-string value in a content requiring a string: Context: {0}',
+ type);
+ }
+ return new Constructor(trustedValue);
+ }
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegate#valueOf
+ *
+ * @description
+ * If the passed parameter had been returned by a prior call to {@link ng.$sceDelegate#trustAs
+ * `$sceDelegate.trustAs`}, returns the value that had been passed to {@link
+ * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.
+ *
+ * If the passed parameter is not a value that had been returned by {@link
+ * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}, returns it as-is.
+ *
+ * @param {*} value The result of a prior {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}
+ * call or anything else.
+ * @returns {*} The `value` that was originally provided to {@link ng.$sceDelegate#trustAs
+ * `$sceDelegate.trustAs`} if `value` is the result of such a call. Otherwise, returns
+ * `value` unchanged.
+ */
+ function valueOf(maybeTrusted) {
+ if (maybeTrusted instanceof trustedValueHolderBase) {
+ return maybeTrusted.$$unwrapTrustedValue();
+ } else {
+ return maybeTrusted;
+ }
+ }
+
+ /**
+ * @ngdoc method
+ * @name $sceDelegate#getTrusted
+ *
+ * @description
+ * Takes the result of a {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call and
+ * returns the originally supplied value if the queried context type is a supertype of the
+ * created type. If this condition isn't satisfied, throws an exception.
+ *
+ * @param {string} type The kind of context in which this value is to be used.
+ * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs
+ * `$sceDelegate.trustAs`} call.
+ * @returns {*} The value the was originally provided to {@link ng.$sceDelegate#trustAs
+ * `$sceDelegate.trustAs`} if valid in this context. Otherwise, throws an exception.
+ */
+ function getTrusted(type, maybeTrusted) {
+ if (maybeTrusted === null || maybeTrusted === undefined || maybeTrusted === '') {
+ return maybeTrusted;
+ }
+ var constructor = (byType.hasOwnProperty(type) ? byType[type] : null);
+ if (constructor && maybeTrusted instanceof constructor) {
+ return maybeTrusted.$$unwrapTrustedValue();
+ }
+ // If we get here, then we may only take one of two actions.
+ // 1. sanitize the value for the requested type, or
+ // 2. throw an exception.
+ if (type === SCE_CONTEXTS.RESOURCE_URL) {
+ if (isResourceUrlAllowedByPolicy(maybeTrusted)) {
+ return maybeTrusted;
+ } else {
+ throw $sceMinErr('insecurl',
+ 'Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}',
+ maybeTrusted.toString());
+ }
+ } else if (type === SCE_CONTEXTS.HTML) {
+ return htmlSanitizer(maybeTrusted);
+ }
+ throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');
+ }
+
+ return { trustAs: trustAs,
+ getTrusted: getTrusted,
+ valueOf: valueOf };
+ }];
+}
+
+
+/**
+ * @ngdoc provider
+ * @name $sceProvider
+ * @description
+ *
+ * The $sceProvider provider allows developers to configure the {@link ng.$sce $sce} service.
+ * - enable/disable Strict Contextual Escaping (SCE) in a module
+ * - override the default implementation with a custom delegate
+ *
+ * Read more about {@link ng.$sce Strict Contextual Escaping (SCE)}.
+ */
+
+/* jshint maxlen: false*/
+
+/**
+ * @ngdoc service
+ * @name $sce
+ * @kind function
+ *
+ * @description
+ *
+ * `$sce` is a service that provides Strict Contextual Escaping services to AngularJS.
+ *
+ * # Strict Contextual Escaping
+ *
+ * Strict Contextual Escaping (SCE) is a mode in which AngularJS requires bindings in certain
+ * contexts to result in a value that is marked as safe to use for that context. One example of
+ * such a context is binding arbitrary html controlled by the user via `ng-bind-html`. We refer
+ * to these contexts as privileged or SCE contexts.
+ *
+ * As of version 1.2, Angular ships with SCE enabled by default.
+ *
+ * Note: When enabled (the default), IE<11 in quirks mode is not supported. In this mode, IE<11 allow
+ * one to execute arbitrary javascript by the use of the expression() syntax. Refer
+ * <http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx> to learn more about them.
+ * You can ensure your document is in standards mode and not quirks mode by adding `<!doctype html>`
+ * to the top of your HTML document.
+ *
+ * SCE assists in writing code in way that (a) is secure by default and (b) makes auditing for
+ * security vulnerabilities such as XSS, clickjacking, etc. a lot easier.
+ *
+ * Here's an example of a binding in a privileged context:
+ *
+ * ```
+ * <input ng-model="userHtml" aria-label="User input">
+ * <div ng-bind-html="userHtml"></div>
+ * ```
+ *
+ * Notice that `ng-bind-html` is bound to `userHtml` controlled by the user. With SCE
+ * disabled, this application allows the user to render arbitrary HTML into the DIV.
+ * In a more realistic example, one may be rendering user comments, blog articles, etc. via
+ * bindings. (HTML is just one example of a context where rendering user controlled input creates
+ * security vulnerabilities.)
+ *
+ * For the case of HTML, you might use a library, either on the client side, or on the server side,
+ * to sanitize unsafe HTML before binding to the value and rendering it in the document.
+ *
+ * How would you ensure that every place that used these types of bindings was bound to a value that
+ * was sanitized by your library (or returned as safe for rendering by your server?) How can you
+ * ensure that you didn't accidentally delete the line that sanitized the value, or renamed some
+ * properties/fields and forgot to update the binding to the sanitized value?
+ *
+ * To be secure by default, you want to ensure that any such bindings are disallowed unless you can
+ * determine that something explicitly says it's safe to use a value for binding in that
+ * context. You can then audit your code (a simple grep would do) to ensure that this is only done
+ * for those values that you can easily tell are safe - because they were received from your server,
+ * sanitized by your library, etc. You can organize your codebase to help with this - perhaps
+ * allowing only the files in a specific directory to do this. Ensuring that the internal API
+ * exposed by that code doesn't markup arbitrary values as safe then becomes a more manageable task.
+ *
+ * In the case of AngularJS' SCE service, one uses {@link ng.$sce#trustAs $sce.trustAs}
+ * (and shorthand methods such as {@link ng.$sce#trustAsHtml $sce.trustAsHtml}, etc.) to
+ * obtain values that will be accepted by SCE / privileged contexts.
+ *
+ *
+ * ## How does it work?
+ *
+ * In privileged contexts, directives and code will bind to the result of {@link ng.$sce#getTrusted
+ * $sce.getTrusted(context, value)} rather than to the value directly. Directives use {@link
+ * ng.$sce#parseAs $sce.parseAs} rather than `$parse` to watch attribute bindings, which performs the
+ * {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals.
+ *
+ * As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link
+ * ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly
+ * simplified):
+ *
+ * ```
+ * var ngBindHtmlDirective = ['$sce', function($sce) {
+ * return function(scope, element, attr) {
+ * scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) {
+ * element.html(value || '');
+ * });
+ * };
+ * }];
+ * ```
+ *
+ * ## Impact on loading templates
+ *
+ * This applies both to the {@link ng.directive:ngInclude `ng-include`} directive as well as
+ * `templateUrl`'s specified by {@link guide/directive directives}.
+ *
+ * By default, Angular only loads templates from the same domain and protocol as the application
+ * document. This is done by calling {@link ng.$sce#getTrustedResourceUrl
+ * $sce.getTrustedResourceUrl} on the template URL. To load templates from other domains and/or
+ * protocols, you may either either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist
+ * them} or {@link ng.$sce#trustAsResourceUrl wrap it} into a trusted value.
+ *
+ * *Please note*:
+ * The browser's
+ * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)
+ * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)
+ * policy apply in addition to this and may further restrict whether the template is successfully
+ * loaded. This means that without the right CORS policy, loading templates from a different domain
+ * won't work on all browsers. Also, loading templates from `file://` URL does not work on some
+ * browsers.
+ *
+ * ## This feels like too much overhead
+ *
+ * It's important to remember that SCE only applies to interpolation expressions.
+ *
+ * If your expressions are constant literals, they're automatically trusted and you don't need to
+ * call `$sce.trustAs` on them (remember to include the `ngSanitize` module) (e.g.
+ * `<div ng-bind-html="'<b>implicitly trusted</b>'"></div>`) just works.
+ *
+ * Additionally, `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them
+ * through {@link ng.$sce#getTrusted $sce.getTrusted}. SCE doesn't play a role here.
+ *
+ * The included {@link ng.$sceDelegate $sceDelegate} comes with sane defaults to allow you to load
+ * templates in `ng-include` from your application's domain without having to even know about SCE.
+ * It blocks loading templates from other domains or loading templates over http from an https
+ * served document. You can change these by setting your own custom {@link
+ * ng.$sceDelegateProvider#resourceUrlWhitelist whitelists} and {@link
+ * ng.$sceDelegateProvider#resourceUrlBlacklist blacklists} for matching such URLs.
+ *
+ * This significantly reduces the overhead. It is far easier to pay the small overhead and have an
+ * application that's secure and can be audited to verify that with much more ease than bolting
+ * security onto an application later.
+ *
+ * <a name="contexts"></a>
+ * ## What trusted context types are supported?
+ *
+ * | Context | Notes |
+ * |---------------------|----------------|
+ * | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered and the {@link ngSanitize $sanitize} module is present this will sanitize the value instead of throwing an error. |
+ * | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. |
+ * | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`<a href=` and `<img src=` sanitize their urls and don't constitute an SCE context. |
+ * | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose contents are also safe to include in your application. Examples include `ng-include`, `src` / `ngSrc` bindings for tags other than `IMG` (e.g. `IFRAME`, `OBJECT`, etc.) <br><br>Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |
+ * | `$sce.JS` | For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives. |
+ *
+ * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist} <a name="resourceUrlPatternItem"></a>
+ *
+ * Each element in these arrays must be one of the following:
+ *
+ * - **'self'**
+ * - The special **string**, `'self'`, can be used to match against all URLs of the **same
+ * domain** as the application document using the **same protocol**.
+ * - **String** (except the special value `'self'`)
+ * - The string is matched against the full *normalized / absolute URL* of the resource
+ * being tested (substring matches are not good enough.)
+ * - There are exactly **two wildcard sequences** - `*` and `**`. All other characters
+ * match themselves.
+ * - `*`: matches zero or more occurrences of any character other than one of the following 6
+ * characters: '`:`', '`/`', '`.`', '`?`', '`&`' and '`;`'. It's a useful wildcard for use
+ * in a whitelist.
+ * - `**`: matches zero or more occurrences of *any* character. As such, it's not
+ * appropriate for use in a scheme, domain, etc. as it would match too much. (e.g.
+ * http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might
+ * not have been the intention.) Its usage at the very end of the path is ok. (e.g.
+ * http://foo.example.com/templates/**).
+ * - **RegExp** (*see caveat below*)
+ * - *Caveat*: While regular expressions are powerful and offer great flexibility, their syntax
+ * (and all the inevitable escaping) makes them *harder to maintain*. It's easy to
+ * accidentally introduce a bug when one updates a complex expression (imho, all regexes should
+ * have good test coverage). For instance, the use of `.` in the regex is correct only in a
+ * small number of cases. A `.` character in the regex used when matching the scheme or a
+ * subdomain could be matched against a `:` or literal `.` that was likely not intended. It
+ * is highly recommended to use the string patterns and only fall back to regular expressions
+ * as a last resort.
+ * - The regular expression must be an instance of RegExp (i.e. not a string.) It is
+ * matched against the **entire** *normalized / absolute URL* of the resource being tested
+ * (even when the RegExp did not have the `^` and `$` codes.) In addition, any flags
+ * present on the RegExp (such as multiline, global, ignoreCase) are ignored.
+ * - If you are generating your JavaScript from some other templating engine (not
+ * recommended, e.g. in issue [#4006](https://github.com/angular/angular.js/issues/4006)),
+ * remember to escape your regular expression (and be aware that you might need more than
+ * one level of escaping depending on your templating engine and the way you interpolated
+ * the value.) Do make use of your platform's escaping mechanism as it might be good
+ * enough before coding your own. E.g. Ruby has
+ * [Regexp.escape(str)](http://www.ruby-doc.org/core-2.0.0/Regexp.html#method-c-escape)
+ * and Python has [re.escape](http://docs.python.org/library/re.html#re.escape).
+ * Javascript lacks a similar built in function for escaping. Take a look at Google
+ * Closure library's [goog.string.regExpEscape(s)](
+ * http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962).
+ *
+ * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} for an example.
+ *
+ * ## Show me an example using SCE.
+ *
+ * <example module="mySceApp" deps="angular-sanitize.js">
+ * <file name="index.html">
+ * <div ng-controller="AppController as myCtrl">
+ * <i ng-bind-html="myCtrl.explicitlyTrustedHtml" id="explicitlyTrustedHtml"></i><br><br>
+ * <b>User comments</b><br>
+ * By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when
+ * $sanitize is available. If $sanitize isn't available, this results in an error instead of an
+ * exploit.
+ * <div class="well">
+ * <div ng-repeat="userComment in myCtrl.userComments">
+ * <b>{{userComment.name}}</b>:
+ * <span ng-bind-html="userComment.htmlComment" class="htmlComment"></span>
+ * <br>
+ * </div>
+ * </div>
+ * </div>
+ * </file>
+ *
+ * <file name="script.js">
+ * angular.module('mySceApp', ['ngSanitize'])
+ * .controller('AppController', ['$http', '$templateCache', '$sce',
+ * function($http, $templateCache, $sce) {
+ * var self = this;
+ * $http.get("test_data.json", {cache: $templateCache}).success(function(userComments) {
+ * self.userComments = userComments;
+ * });
+ * self.explicitlyTrustedHtml = $sce.trustAsHtml(
+ * '<span onmouseover="this.textContent="Explicitly trusted HTML bypasses ' +
+ * 'sanitization."">Hover over this text.</span>');
+ * }]);
+ * </file>
+ *
+ * <file name="test_data.json">
+ * [
+ * { "name": "Alice",
+ * "htmlComment":
+ * "<span onmouseover='this.textContent=\"PWN3D!\"'>Is <i>anyone</i> reading this?</span>"
+ * },
+ * { "name": "Bob",
+ * "htmlComment": "<i>Yes!</i> Am I the only other one?"
+ * }
+ * ]
+ * </file>
+ *
+ * <file name="protractor.js" type="protractor">
+ * describe('SCE doc demo', function() {
+ * it('should sanitize untrusted values', function() {
+ * expect(element.all(by.css('.htmlComment')).first().getInnerHtml())
+ * .toBe('<span>Is <i>anyone</i> reading this?</span>');
+ * });
+ *
+ * it('should NOT sanitize explicitly trusted values', function() {
+ * expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe(
+ * '<span onmouseover="this.textContent="Explicitly trusted HTML bypasses ' +
+ * 'sanitization."">Hover over this text.</span>');
+ * });
+ * });
+ * </file>
+ * </example>
+ *
+ *
+ *
+ * ## Can I disable SCE completely?
+ *
+ * Yes, you can. However, this is strongly discouraged. SCE gives you a lot of security benefits
+ * for little coding overhead. It will be much harder to take an SCE disabled application and
+ * either secure it on your own or enable SCE at a later stage. It might make sense to disable SCE
+ * for cases where you have a lot of existing code that was written before SCE was introduced and
+ * you're migrating them a module at a time.
+ *
+ * That said, here's how you can completely disable SCE:
+ *
+ * ```
+ * angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {
+ * // Completely disable SCE. For demonstration purposes only!
+ * // Do not use in new projects.
+ * $sceProvider.enabled(false);
+ * });
+ * ```
+ *
+ */
+/* jshint maxlen: 100 */
+
+function $SceProvider() {
+ var enabled = true;
+
+ /**
+ * @ngdoc method
+ * @name $sceProvider#enabled
+ * @kind function
+ *
+ * @param {boolean=} value If provided, then enables/disables SCE.
+ * @return {boolean} true if SCE is enabled, false otherwise.
+ *
+ * @description
+ * Enables/disables SCE and returns the current value.
+ */
+ this.enabled = function(value) {
+ if (arguments.length) {
+ enabled = !!value;
+ }
+ return enabled;
+ };
+
+
+ /* Design notes on the default implementation for SCE.
+ *
+ * The API contract for the SCE delegate
+ * -------------------------------------
+ * The SCE delegate object must provide the following 3 methods:
+ *
+ * - trustAs(contextEnum, value)
+ * This method is used to tell the SCE service that the provided value is OK to use in the
+ * contexts specified by contextEnum. It must return an object that will be accepted by
+ * getTrusted() for a compatible contextEnum and return this value.
+ *
+ * - valueOf(value)
+ * For values that were not produced by trustAs(), return them as is. For values that were
+ * produced by trustAs(), return the corresponding input value to trustAs. Basically, if
+ * trustAs is wrapping the given values into some type, this operation unwraps it when given
+ * such a value.
+ *
+ * - getTrusted(contextEnum, value)
+ * This function should return the a value that is safe to use in the context specified by
+ * contextEnum or throw and exception otherwise.
+ *
+ * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be
+ * opaque or wrapped in some holder object. That happens to be an implementation detail. For
+ * instance, an implementation could maintain a registry of all trusted objects by context. In
+ * such a case, trustAs() would return the same object that was passed in. getTrusted() would
+ * return the same object passed in if it was found in the registry under a compatible context or
+ * throw an exception otherwise. An implementation might only wrap values some of the time based
+ * on some criteria. getTrusted() might return a value and not throw an exception for special
+ * constants or objects even if not wrapped. All such implementations fulfill this contract.
+ *
+ *
+ * A note on the inheritance model for SCE contexts
+ * ------------------------------------------------
+ * I've used inheritance and made RESOURCE_URL wrapped types a subtype of URL wrapped types. This
+ * is purely an implementation details.
+ *
+ * The contract is simply this:
+ *
+ * getTrusted($sce.RESOURCE_URL, value) succeeding implies that getTrusted($sce.URL, value)
+ * will also succeed.
+ *
+ * Inheritance happens to capture this in a natural way. In some future, we
+ * may not use inheritance anymore. That is OK because no code outside of
+ * sce.js and sceSpecs.js would need to be aware of this detail.
+ */
+
+ this.$get = ['$parse', '$sceDelegate', function(
+ $parse, $sceDelegate) {
+ // Prereq: Ensure that we're not running in IE<11 quirks mode. In that mode, IE < 11 allow
+ // the "expression(javascript expression)" syntax which is insecure.
+ if (enabled && msie < 8) {
+ throw $sceMinErr('iequirks',
+ 'Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks ' +
+ 'mode. You can fix this by adding the text <!doctype html> to the top of your HTML ' +
+ 'document. See http://docs.angularjs.org/api/ng.$sce for more information.');
+ }
+
+ var sce = shallowCopy(SCE_CONTEXTS);
+
+ /**
+ * @ngdoc method
+ * @name $sce#isEnabled
+ * @kind function
+ *
+ * @return {Boolean} true if SCE is enabled, false otherwise. If you want to set the value, you
+ * have to do it at module config time on {@link ng.$sceProvider $sceProvider}.
+ *
+ * @description
+ * Returns a boolean indicating if SCE is enabled.
+ */
+ sce.isEnabled = function() {
+ return enabled;
+ };
+ sce.trustAs = $sceDelegate.trustAs;
+ sce.getTrusted = $sceDelegate.getTrusted;
+ sce.valueOf = $sceDelegate.valueOf;
+
+ if (!enabled) {
+ sce.trustAs = sce.getTrusted = function(type, value) { return value; };
+ sce.valueOf = identity;
+ }
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAs
+ *
+ * @description
+ * Converts Angular {@link guide/expression expression} into a function. This is like {@link
+ * ng.$parse $parse} and is identical when the expression is a literal constant. Otherwise, it
+ * wraps the expression in a call to {@link ng.$sce#getTrusted $sce.getTrusted(*type*,
+ * *result*)}
+ *
+ * @param {string} type The kind of SCE context in which this result will be used.
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+ sce.parseAs = function sceParseAs(type, expr) {
+ var parsed = $parse(expr);
+ if (parsed.literal && parsed.constant) {
+ return parsed;
+ } else {
+ return $parse(expr, function(value) {
+ return sce.getTrusted(type, value);
+ });
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAs
+ *
+ * @description
+ * Delegates to {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}. As such,
+ * returns an object that is trusted by angular for use in specified strict contextual
+ * escaping contexts (such as ng-bind-html, ng-include, any src attribute
+ * interpolation, any dom event binding attribute interpolation such as for onclick, etc.)
+ * that uses the provided value. See * {@link ng.$sce $sce} for enabling strict contextual
+ * escaping.
+ *
+ * @param {string} type The kind of context in which this value is safe for use. e.g. url,
+ * resourceUrl, html, js and css.
+ * @param {*} value The value that that should be considered trusted/safe.
+ * @returns {*} A value that can be used to stand in for the provided `value` in places
+ * where Angular expects a $sce.trustAs() return value.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAsHtml
+ *
+ * @description
+ * Shorthand method. `$sce.trustAsHtml(value)` →
+ * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.HTML, value)`}
+ *
+ * @param {*} value The value to trustAs.
+ * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedHtml
+ * $sce.getTrustedHtml(value)} to obtain the original value. (privileged directives
+ * only accept expressions that are either literal constants or are the
+ * return value of {@link ng.$sce#trustAs $sce.trustAs}.)
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAsUrl
+ *
+ * @description
+ * Shorthand method. `$sce.trustAsUrl(value)` →
+ * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.URL, value)`}
+ *
+ * @param {*} value The value to trustAs.
+ * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedUrl
+ * $sce.getTrustedUrl(value)} to obtain the original value. (privileged directives
+ * only accept expressions that are either literal constants or are the
+ * return value of {@link ng.$sce#trustAs $sce.trustAs}.)
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAsResourceUrl
+ *
+ * @description
+ * Shorthand method. `$sce.trustAsResourceUrl(value)` →
+ * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.RESOURCE_URL, value)`}
+ *
+ * @param {*} value The value to trustAs.
+ * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedResourceUrl
+ * $sce.getTrustedResourceUrl(value)} to obtain the original value. (privileged directives
+ * only accept expressions that are either literal constants or are the return
+ * value of {@link ng.$sce#trustAs $sce.trustAs}.)
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#trustAsJs
+ *
+ * @description
+ * Shorthand method. `$sce.trustAsJs(value)` →
+ * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.JS, value)`}
+ *
+ * @param {*} value The value to trustAs.
+ * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedJs
+ * $sce.getTrustedJs(value)} to obtain the original value. (privileged directives
+ * only accept expressions that are either literal constants or are the
+ * return value of {@link ng.$sce#trustAs $sce.trustAs}.)
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrusted
+ *
+ * @description
+ * Delegates to {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted`}. As such,
+ * takes the result of a {@link ng.$sce#trustAs `$sce.trustAs`}() call and returns the
+ * originally supplied value if the queried context type is a supertype of the created type.
+ * If this condition isn't satisfied, throws an exception.
+ *
+ * @param {string} type The kind of context in which this value is to be used.
+ * @param {*} maybeTrusted The result of a prior {@link ng.$sce#trustAs `$sce.trustAs`}
+ * call.
+ * @returns {*} The value the was originally provided to
+ * {@link ng.$sce#trustAs `$sce.trustAs`} if valid in this context.
+ * Otherwise, throws an exception.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedHtml
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedHtml(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.HTML, value)`}
+ *
+ * @param {*} value The value to pass to `$sce.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.HTML, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedCss
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedCss(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.CSS, value)`}
+ *
+ * @param {*} value The value to pass to `$sce.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.CSS, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedUrl
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedUrl(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.URL, value)`}
+ *
+ * @param {*} value The value to pass to `$sce.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.URL, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedResourceUrl
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedResourceUrl(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.RESOURCE_URL, value)`}
+ *
+ * @param {*} value The value to pass to `$sceDelegate.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.RESOURCE_URL, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#getTrustedJs
+ *
+ * @description
+ * Shorthand method. `$sce.getTrustedJs(value)` →
+ * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.JS, value)`}
+ *
+ * @param {*} value The value to pass to `$sce.getTrusted`.
+ * @returns {*} The return value of `$sce.getTrusted($sce.JS, value)`
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsHtml
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsHtml(expression string)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.HTML, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsCss
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsCss(value)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.CSS, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsUrl
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsUrl(value)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.URL, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsResourceUrl
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsResourceUrl(value)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.RESOURCE_URL, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ /**
+ * @ngdoc method
+ * @name $sce#parseAsJs
+ *
+ * @description
+ * Shorthand method. `$sce.parseAsJs(value)` →
+ * {@link ng.$sce#parseAs `$sce.parseAs($sce.JS, value)`}
+ *
+ * @param {string} expression String expression to compile.
+ * @returns {function(context, locals)} a function which represents the compiled expression:
+ *
+ * * `context` – `{object}` – an object against which any expressions embedded in the strings
+ * are evaluated against (typically a scope object).
+ * * `locals` – `{object=}` – local variables context object, useful for overriding values in
+ * `context`.
+ */
+
+ // Shorthand delegations.
+ var parse = sce.parseAs,
+ getTrusted = sce.getTrusted,
+ trustAs = sce.trustAs;
+
+ forEach(SCE_CONTEXTS, function(enumValue, name) {
+ var lName = lowercase(name);
+ sce[camelCase("parse_as_" + lName)] = function(expr) {
+ return parse(enumValue, expr);
+ };
+ sce[camelCase("get_trusted_" + lName)] = function(value) {
+ return getTrusted(enumValue, value);
+ };
+ sce[camelCase("trust_as_" + lName)] = function(value) {
+ return trustAs(enumValue, value);
+ };
+ });
+
+ return sce;
+ }];
+}
+
+/**
+ * !!! This is an undocumented "private" service !!!
+ *
+ * @name $sniffer
+ * @requires $window
+ * @requires $document
+ *
+ * @property {boolean} history Does the browser support html5 history api ?
+ * @property {boolean} transitions Does the browser support CSS transition events ?
+ * @property {boolean} animations Does the browser support CSS animation events ?
+ *
+ * @description
+ * This is very simple implementation of testing browser's features.
+ */
+function $SnifferProvider() {
+ this.$get = ['$window', '$document', function($window, $document) {
+ var eventSupport = {},
+ android =
+ toInt((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),
+ boxee = /Boxee/i.test(($window.navigator || {}).userAgent),
+ document = $document[0] || {},
+ vendorPrefix,
+ vendorRegex = /^(Moz|webkit|ms)(?=[A-Z])/,
+ bodyStyle = document.body && document.body.style,
+ transitions = false,
+ animations = false,
+ match;
+
+ if (bodyStyle) {
+ for (var prop in bodyStyle) {
+ if (match = vendorRegex.exec(prop)) {
+ vendorPrefix = match[0];
+ vendorPrefix = vendorPrefix.substr(0, 1).toUpperCase() + vendorPrefix.substr(1);
+ break;
+ }
+ }
+
+ if (!vendorPrefix) {
+ vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit';
+ }
+
+ transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));
+ animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));
+
+ if (android && (!transitions || !animations)) {
+ transitions = isString(bodyStyle.webkitTransition);
+ animations = isString(bodyStyle.webkitAnimation);
+ }
+ }
+
+
+ return {
+ // Android has history.pushState, but it does not update location correctly
+ // so let's not use the history API at all.
+ // http://code.google.com/p/android/issues/detail?id=17471
+ // https://github.com/angular/angular.js/issues/904
+
+ // older webkit browser (533.9) on Boxee box has exactly the same problem as Android has
+ // so let's not use the history API also
+ // We are purposefully using `!(android < 4)` to cover the case when `android` is undefined
+ // jshint -W018
+ history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),
+ // jshint +W018
+ hasEvent: function(event) {
+ // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have
+ // it. In particular the event is not fired when backspace or delete key are pressed or
+ // when cut operation is performed.
+ // IE10+ implements 'input' event but it erroneously fires under various situations,
+ // e.g. when placeholder changes, or a form is focused.
+ if (event === 'input' && msie <= 11) return false;
+
+ if (isUndefined(eventSupport[event])) {
+ var divElm = document.createElement('div');
+ eventSupport[event] = 'on' + event in divElm;
+ }
+
+ return eventSupport[event];
+ },
+ csp: csp(),
+ vendorPrefix: vendorPrefix,
+ transitions: transitions,
+ animations: animations,
+ android: android
+ };
+ }];
+}
+
+var $compileMinErr = minErr('$compile');
+
+/**
+ * @ngdoc service
+ * @name $templateRequest
+ *
+ * @description
+ * The `$templateRequest` service runs security checks then downloads the provided template using
+ * `$http` and, upon success, stores the contents inside of `$templateCache`. If the HTTP request
+ * fails or the response data of the HTTP request is empty, a `$compile` error will be thrown (the
+ * exception can be thwarted by setting the 2nd parameter of the function to true). Note that the
+ * contents of `$templateCache` are trusted, so the call to `$sce.getTrustedUrl(tpl)` is omitted
+ * when `tpl` is of type string and `$templateCache` has the matching entry.
+ *
+ * @param {string|TrustedResourceUrl} tpl The HTTP request template URL
+ * @param {boolean=} ignoreRequestError Whether or not to ignore the exception when the request fails or the template is empty
+ *
+ * @return {Promise} a promise for the HTTP response data of the given URL.
+ *
+ * @property {number} totalPendingRequests total amount of pending template requests being downloaded.
+ */
+function $TemplateRequestProvider() {
+ this.$get = ['$templateCache', '$http', '$q', '$sce', function($templateCache, $http, $q, $sce) {
+ function handleRequestFn(tpl, ignoreRequestError) {
+ handleRequestFn.totalPendingRequests++;
+
+ // We consider the template cache holds only trusted templates, so
+ // there's no need to go through whitelisting again for keys that already
+ // are included in there. This also makes Angular accept any script
+ // directive, no matter its name. However, we still need to unwrap trusted
+ // types.
+ if (!isString(tpl) || !$templateCache.get(tpl)) {
+ tpl = $sce.getTrustedResourceUrl(tpl);
+ }
+
+ var transformResponse = $http.defaults && $http.defaults.transformResponse;
+
+ if (isArray(transformResponse)) {
+ transformResponse = transformResponse.filter(function(transformer) {
+ return transformer !== defaultHttpResponseTransform;
+ });
+ } else if (transformResponse === defaultHttpResponseTransform) {
+ transformResponse = null;
+ }
+
+ var httpOptions = {
+ cache: $templateCache,
+ transformResponse: transformResponse
+ };
+
+ return $http.get(tpl, httpOptions)
+ ['finally'](function() {
+ handleRequestFn.totalPendingRequests--;
+ })
+ .then(function(response) {
+ $templateCache.put(tpl, response.data);
+ return response.data;
+ }, handleError);
+
+ function handleError(resp) {
+ if (!ignoreRequestError) {
+ throw $compileMinErr('tpload', 'Failed to load template: {0} (HTTP status: {1} {2})',
+ tpl, resp.status, resp.statusText);
+ }
+ return $q.reject(resp);
+ }
+ }
+
+ handleRequestFn.totalPendingRequests = 0;
+
+ return handleRequestFn;
+ }];
+}
+
+function $$TestabilityProvider() {
+ this.$get = ['$rootScope', '$browser', '$location',
+ function($rootScope, $browser, $location) {
+
+ /**
+ * @name $testability
+ *
+ * @description
+ * The private $$testability service provides a collection of methods for use when debugging
+ * or by automated test and debugging tools.
+ */
+ var testability = {};
+
+ /**
+ * @name $$testability#findBindings
+ *
+ * @description
+ * Returns an array of elements that are bound (via ng-bind or {{}})
+ * to expressions matching the input.
+ *
+ * @param {Element} element The element root to search from.
+ * @param {string} expression The binding expression to match.
+ * @param {boolean} opt_exactMatch If true, only returns exact matches
+ * for the expression. Filters and whitespace are ignored.
+ */
+ testability.findBindings = function(element, expression, opt_exactMatch) {
+ var bindings = element.getElementsByClassName('ng-binding');
+ var matches = [];
+ forEach(bindings, function(binding) {
+ var dataBinding = angular.element(binding).data('$binding');
+ if (dataBinding) {
+ forEach(dataBinding, function(bindingName) {
+ if (opt_exactMatch) {
+ var matcher = new RegExp('(^|\\s)' + escapeForRegexp(expression) + '(\\s|\\||$)');
+ if (matcher.test(bindingName)) {
+ matches.push(binding);
+ }
+ } else {
+ if (bindingName.indexOf(expression) != -1) {
+ matches.push(binding);
+ }
+ }
+ });
+ }
+ });
+ return matches;
+ };
+
+ /**
+ * @name $$testability#findModels
+ *
+ * @description
+ * Returns an array of elements that are two-way found via ng-model to
+ * expressions matching the input.
+ *
+ * @param {Element} element The element root to search from.
+ * @param {string} expression The model expression to match.
+ * @param {boolean} opt_exactMatch If true, only returns exact matches
+ * for the expression.
+ */
+ testability.findModels = function(element, expression, opt_exactMatch) {
+ var prefixes = ['ng-', 'data-ng-', 'ng\\:'];
+ for (var p = 0; p < prefixes.length; ++p) {
+ var attributeEquals = opt_exactMatch ? '=' : '*=';
+ var selector = '[' + prefixes[p] + 'model' + attributeEquals + '"' + expression + '"]';
+ var elements = element.querySelectorAll(selector);
+ if (elements.length) {
+ return elements;
+ }
+ }
+ };
+
+ /**
+ * @name $$testability#getLocation
+ *
+ * @description
+ * Shortcut for getting the location in a browser agnostic way. Returns
+ * the path, search, and hash. (e.g. /path?a=b#hash)
+ */
+ testability.getLocation = function() {
+ return $location.url();
+ };
+
+ /**
+ * @name $$testability#setLocation
+ *
+ * @description
+ * Shortcut for navigating to a location without doing a full page reload.
+ *
+ * @param {string} url The location url (path, search and hash,
+ * e.g. /path?a=b#hash) to go to.
+ */
+ testability.setLocation = function(url) {
+ if (url !== $location.url()) {
+ $location.url(url);
+ $rootScope.$digest();
+ }
+ };
+
+ /**
+ * @name $$testability#whenStable
+ *
+ * @description
+ * Calls the callback when $timeout and $http requests are completed.
+ *
+ * @param {function} callback
+ */
+ testability.whenStable = function(callback) {
+ $browser.notifyWhenNoOutstandingRequests(callback);
+ };
+
+ return testability;
+ }];
+}
+
+function $TimeoutProvider() {
+ this.$get = ['$rootScope', '$browser', '$q', '$$q', '$exceptionHandler',
+ function($rootScope, $browser, $q, $$q, $exceptionHandler) {
+
+ var deferreds = {};
+
+
+ /**
+ * @ngdoc service
+ * @name $timeout
+ *
+ * @description
+ * Angular's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch
+ * block and delegates any exceptions to
+ * {@link ng.$exceptionHandler $exceptionHandler} service.
+ *
+ * The return value of calling `$timeout` is a promise, which will be resolved when
+ * the delay has passed and the timeout function, if provided, is executed.
+ *
+ * To cancel a timeout request, call `$timeout.cancel(promise)`.
+ *
+ * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to
+ * synchronously flush the queue of deferred functions.
+ *
+ * If you only want a promise that will be resolved after some specified delay
+ * then you can call `$timeout` without the `fn` function.
+ *
+ * @param {function()=} fn A function, whose execution should be delayed.
+ * @param {number=} [delay=0] Delay in milliseconds.
+ * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
+ * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
+ * @param {...*=} Pass additional parameters to the executed function.
+ * @returns {Promise} Promise that will be resolved when the timeout is reached. The value this
+ * promise will be resolved with is the return value of the `fn` function.
+ *
+ */
+ function timeout(fn, delay, invokeApply) {
+ if (!isFunction(fn)) {
+ invokeApply = delay;
+ delay = fn;
+ fn = noop;
+ }
+
+ var args = sliceArgs(arguments, 3),
+ skipApply = (isDefined(invokeApply) && !invokeApply),
+ deferred = (skipApply ? $$q : $q).defer(),
+ promise = deferred.promise,
+ timeoutId;
+
+ timeoutId = $browser.defer(function() {
+ try {
+ deferred.resolve(fn.apply(null, args));
+ } catch (e) {
+ deferred.reject(e);
+ $exceptionHandler(e);
+ }
+ finally {
+ delete deferreds[promise.$$timeoutId];
+ }
+
+ if (!skipApply) $rootScope.$apply();
+ }, delay);
+
+ promise.$$timeoutId = timeoutId;
+ deferreds[timeoutId] = deferred;
+
+ return promise;
+ }
+
+
+ /**
+ * @ngdoc method
+ * @name $timeout#cancel
+ *
+ * @description
+ * Cancels a task associated with the `promise`. As a result of this, the promise will be
+ * resolved with a rejection.
+ *
+ * @param {Promise=} promise Promise returned by the `$timeout` function.
+ * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully
+ * canceled.
+ */
+ timeout.cancel = function(promise) {
+ if (promise && promise.$$timeoutId in deferreds) {
+ deferreds[promise.$$timeoutId].reject('canceled');
+ delete deferreds[promise.$$timeoutId];
+ return $browser.defer.cancel(promise.$$timeoutId);
+ }
+ return false;
+ };
+
+ return timeout;
+ }];
+}
+
+// NOTE: The usage of window and document instead of $window and $document here is
+// deliberate. This service depends on the specific behavior of anchor nodes created by the
+// browser (resolving and parsing URLs) that is unlikely to be provided by mock objects and
+// cause us to break tests. In addition, when the browser resolves a URL for XHR, it
+// doesn't know about mocked locations and resolves URLs to the real document - which is
+// exactly the behavior needed here. There is little value is mocking these out for this
+// service.
+var urlParsingNode = document.createElement("a");
+var originUrl = urlResolve(window.location.href);
+
+
+/**
+ *
+ * Implementation Notes for non-IE browsers
+ * ----------------------------------------
+ * Assigning a URL to the href property of an anchor DOM node, even one attached to the DOM,
+ * results both in the normalizing and parsing of the URL. Normalizing means that a relative
+ * URL will be resolved into an absolute URL in the context of the application document.
+ * Parsing means that the anchor node's host, hostname, protocol, port, pathname and related
+ * properties are all populated to reflect the normalized URL. This approach has wide
+ * compatibility - Safari 1+, Mozilla 1+, Opera 7+,e etc. See
+ * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html
+ *
+ * Implementation Notes for IE
+ * ---------------------------
+ * IE <= 10 normalizes the URL when assigned to the anchor node similar to the other
+ * browsers. However, the parsed components will not be set if the URL assigned did not specify
+ * them. (e.g. if you assign a.href = "foo", then a.protocol, a.host, etc. will be empty.) We
+ * work around that by performing the parsing in a 2nd step by taking a previously normalized
+ * URL (e.g. by assigning to a.href) and assigning it a.href again. This correctly populates the
+ * properties such as protocol, hostname, port, etc.
+ *
+ * References:
+ * http://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement
+ * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html
+ * http://url.spec.whatwg.org/#urlutils
+ * https://github.com/angular/angular.js/pull/2902
+ * http://james.padolsey.com/javascript/parsing-urls-with-the-dom/
+ *
+ * @kind function
+ * @param {string} url The URL to be parsed.
+ * @description Normalizes and parses a URL.
+ * @returns {object} Returns the normalized URL as a dictionary.
+ *
+ * | member name | Description |
+ * |---------------|----------------|
+ * | href | A normalized version of the provided URL if it was not an absolute URL |
+ * | protocol | The protocol including the trailing colon |
+ * | host | The host and port (if the port is non-default) of the normalizedUrl |
+ * | search | The search params, minus the question mark |
+ * | hash | The hash string, minus the hash symbol
+ * | hostname | The hostname
+ * | port | The port, without ":"
+ * | pathname | The pathname, beginning with "/"
+ *
+ */
+function urlResolve(url) {
+ var href = url;
+
+ if (msie) {
+ // Normalize before parse. Refer Implementation Notes on why this is
+ // done in two steps on IE.
+ urlParsingNode.setAttribute("href", href);
+ href = urlParsingNode.href;
+ }
+
+ urlParsingNode.setAttribute('href', href);
+
+ // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
+ return {
+ href: urlParsingNode.href,
+ protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
+ host: urlParsingNode.host,
+ search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
+ hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
+ hostname: urlParsingNode.hostname,
+ port: urlParsingNode.port,
+ pathname: (urlParsingNode.pathname.charAt(0) === '/')
+ ? urlParsingNode.pathname
+ : '/' + urlParsingNode.pathname
+ };
+}
+
+/**
+ * Parse a request URL and determine whether this is a same-origin request as the application document.
+ *
+ * @param {string|object} requestUrl The url of the request as a string that will be resolved
+ * or a parsed URL object.
+ * @returns {boolean} Whether the request is for the same origin as the application document.
+ */
+function urlIsSameOrigin(requestUrl) {
+ var parsed = (isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;
+ return (parsed.protocol === originUrl.protocol &&
+ parsed.host === originUrl.host);
+}
+
+/**
+ * @ngdoc service
+ * @name $window
+ *
+ * @description
+ * A reference to the browser's `window` object. While `window`
+ * is globally available in JavaScript, it causes testability problems, because
+ * it is a global variable. In angular we always refer to it through the
+ * `$window` service, so it may be overridden, removed or mocked for testing.
+ *
+ * Expressions, like the one defined for the `ngClick` directive in the example
+ * below, are evaluated with respect to the current scope. Therefore, there is
+ * no risk of inadvertently coding in a dependency on a global value in such an
+ * expression.
+ *
+ * @example
+ <example module="windowExample">
+ <file name="index.html">
+ <script>
+ angular.module('windowExample', [])
+ .controller('ExampleController', ['$scope', '$window', function($scope, $window) {
+ $scope.greeting = 'Hello, World!';
+ $scope.doGreeting = function(greeting) {
+ $window.alert(greeting);
+ };
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <input type="text" ng-model="greeting" aria-label="greeting" />
+ <button ng-click="doGreeting(greeting)">ALERT</button>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should display the greeting in the input box', function() {
+ element(by.model('greeting')).sendKeys('Hello, E2E Tests');
+ // If we click the button it will block the test runner
+ // element(':button').click();
+ });
+ </file>
+ </example>
+ */
+function $WindowProvider() {
+ this.$get = valueFn(window);
+}
+
+/**
+ * @name $$cookieReader
+ * @requires $document
+ *
+ * @description
+ * This is a private service for reading cookies used by $http and ngCookies
+ *
+ * @return {Object} a key/value map of the current cookies
+ */
+function $$CookieReader($document) {
+ var rawDocument = $document[0] || {};
+ var lastCookies = {};
+ var lastCookieString = '';
+
+ function safeDecodeURIComponent(str) {
+ try {
+ return decodeURIComponent(str);
+ } catch (e) {
+ return str;
+ }
+ }
+
+ return function() {
+ var cookieArray, cookie, i, index, name;
+ var currentCookieString = rawDocument.cookie || '';
+
+ if (currentCookieString !== lastCookieString) {
+ lastCookieString = currentCookieString;
+ cookieArray = lastCookieString.split('; ');
+ lastCookies = {};
+
+ for (i = 0; i < cookieArray.length; i++) {
+ cookie = cookieArray[i];
+ index = cookie.indexOf('=');
+ if (index > 0) { //ignore nameless cookies
+ name = safeDecodeURIComponent(cookie.substring(0, index));
+ // the first value that is seen for a cookie is the most
+ // specific one. values for the same cookie name that
+ // follow are for less specific paths.
+ if (lastCookies[name] === undefined) {
+ lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1));
+ }
+ }
+ }
+ }
+ return lastCookies;
+ };
+}
+
+$$CookieReader.$inject = ['$document'];
+
+function $$CookieReaderProvider() {
+ this.$get = $$CookieReader;
+}
+
+/* global currencyFilter: true,
+ dateFilter: true,
+ filterFilter: true,
+ jsonFilter: true,
+ limitToFilter: true,
+ lowercaseFilter: true,
+ numberFilter: true,
+ orderByFilter: true,
+ uppercaseFilter: true,
+ */
+
+/**
+ * @ngdoc provider
+ * @name $filterProvider
+ * @description
+ *
+ * Filters are just functions which transform input to an output. However filters need to be
+ * Dependency Injected. To achieve this a filter definition consists of a factory function which is
+ * annotated with dependencies and is responsible for creating a filter function.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
+ * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
+ * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
+ * (`myapp_subsection_filterx`).
+ * </div>
+ *
+ * ```js
+ * // Filter registration
+ * function MyModule($provide, $filterProvider) {
+ * // create a service to demonstrate injection (not always needed)
+ * $provide.value('greet', function(name){
+ * return 'Hello ' + name + '!';
+ * });
+ *
+ * // register a filter factory which uses the
+ * // greet service to demonstrate DI.
+ * $filterProvider.register('greet', function(greet){
+ * // return the filter function which uses the greet service
+ * // to generate salutation
+ * return function(text) {
+ * // filters need to be forgiving so check input validity
+ * return text && greet(text) || text;
+ * };
+ * });
+ * }
+ * ```
+ *
+ * The filter function is registered with the `$injector` under the filter name suffix with
+ * `Filter`.
+ *
+ * ```js
+ * it('should be the same instance', inject(
+ * function($filterProvider) {
+ * $filterProvider.register('reverse', function(){
+ * return ...;
+ * });
+ * },
+ * function($filter, reverseFilter) {
+ * expect($filter('reverse')).toBe(reverseFilter);
+ * });
+ * ```
+ *
+ *
+ * For more information about how angular filters work, and how to create your own filters, see
+ * {@link guide/filter Filters} in the Angular Developer Guide.
+ */
+
+/**
+ * @ngdoc service
+ * @name $filter
+ * @kind function
+ * @description
+ * Filters are used for formatting data displayed to the user.
+ *
+ * The general syntax in templates is as follows:
+ *
+ * {{ expression [| filter_name[:parameter_value] ... ] }}
+ *
+ * @param {String} name Name of the filter function to retrieve
+ * @return {Function} the filter function
+ * @example
+ <example name="$filter" module="filterExample">
+ <file name="index.html">
+ <div ng-controller="MainCtrl">
+ <h3>{{ originalText }}</h3>
+ <h3>{{ filteredText }}</h3>
+ </div>
+ </file>
+
+ <file name="script.js">
+ angular.module('filterExample', [])
+ .controller('MainCtrl', function($scope, $filter) {
+ $scope.originalText = 'hello';
+ $scope.filteredText = $filter('uppercase')($scope.originalText);
+ });
+ </file>
+ </example>
+ */
+$FilterProvider.$inject = ['$provide'];
+function $FilterProvider($provide) {
+ var suffix = 'Filter';
+
+ /**
+ * @ngdoc method
+ * @name $filterProvider#register
+ * @param {string|Object} name Name of the filter function, or an object map of filters where
+ * the keys are the filter names and the values are the filter factories.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
+ * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
+ * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
+ * (`myapp_subsection_filterx`).
+ * </div>
+ * @param {Function} factory If the first argument was a string, a factory function for the filter to be registered.
+ * @returns {Object} Registered filter instance, or if a map of filters was provided then a map
+ * of the registered filter instances.
+ */
+ function register(name, factory) {
+ if (isObject(name)) {
+ var filters = {};
+ forEach(name, function(filter, key) {
+ filters[key] = register(key, filter);
+ });
+ return filters;
+ } else {
+ return $provide.factory(name + suffix, factory);
+ }
+ }
+ this.register = register;
+
+ this.$get = ['$injector', function($injector) {
+ return function(name) {
+ return $injector.get(name + suffix);
+ };
+ }];
+
+ ////////////////////////////////////////
+
+ /* global
+ currencyFilter: false,
+ dateFilter: false,
+ filterFilter: false,
+ jsonFilter: false,
+ limitToFilter: false,
+ lowercaseFilter: false,
+ numberFilter: false,
+ orderByFilter: false,
+ uppercaseFilter: false,
+ */
+
+ register('currency', currencyFilter);
+ register('date', dateFilter);
+ register('filter', filterFilter);
+ register('json', jsonFilter);
+ register('limitTo', limitToFilter);
+ register('lowercase', lowercaseFilter);
+ register('number', numberFilter);
+ register('orderBy', orderByFilter);
+ register('uppercase', uppercaseFilter);
+}
+
+/**
+ * @ngdoc filter
+ * @name filter
+ * @kind function
+ *
+ * @description
+ * Selects a subset of items from `array` and returns it as a new array.
+ *
+ * @param {Array} array The source array.
+ * @param {string|Object|function()} expression The predicate to be used for selecting items from
+ * `array`.
+ *
+ * Can be one of:
+ *
+ * - `string`: The string is used for matching against the contents of the `array`. All strings or
+ * objects with string properties in `array` that match this string will be returned. This also
+ * applies to nested object properties.
+ * The predicate can be negated by prefixing the string with `!`.
+ *
+ * - `Object`: A pattern object can be used to filter specific properties on objects contained
+ * by `array`. For example `{name:"M", phone:"1"}` predicate will return an array of items
+ * which have property `name` containing "M" and property `phone` containing "1". A special
+ * property name `$` can be used (as in `{$:"text"}`) to accept a match against any
+ * property of the object or its nested object properties. That's equivalent to the simple
+ * substring match with a `string` as described above. The predicate can be negated by prefixing
+ * the string with `!`.
+ * For example `{name: "!M"}` predicate will return an array of items which have property `name`
+ * not containing "M".
+ *
+ * Note that a named property will match properties on the same level only, while the special
+ * `$` property will match properties on the same level or deeper. E.g. an array item like
+ * `{name: {first: 'John', last: 'Doe'}}` will **not** be matched by `{name: 'John'}`, but
+ * **will** be matched by `{$: 'John'}`.
+ *
+ * - `function(value, index, array)`: A predicate function can be used to write arbitrary filters.
+ * The function is called for each element of the array, with the element, its index, and
+ * the entire array itself as arguments.
+ *
+ * The final result is an array of those elements that the predicate returned true for.
+ *
+ * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in
+ * determining if the expected value (from the filter expression) and actual value (from
+ * the object in the array) should be considered a match.
+ *
+ * Can be one of:
+ *
+ * - `function(actual, expected)`:
+ * The function will be given the object value and the predicate value to compare and
+ * should return true if both values should be considered equal.
+ *
+ * - `true`: A shorthand for `function(actual, expected) { return angular.equals(actual, expected)}`.
+ * This is essentially strict comparison of expected and actual.
+ *
+ * - `false|undefined`: A short hand for a function which will look for a substring match in case
+ * insensitive way.
+ *
+ * Primitive values are converted to strings. Objects are not compared against primitives,
+ * unless they have a custom `toString` method (e.g. `Date` objects).
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <div ng-init="friends = [{name:'John', phone:'555-1276'},
+ {name:'Mary', phone:'800-BIG-MARY'},
+ {name:'Mike', phone:'555-4321'},
+ {name:'Adam', phone:'555-5678'},
+ {name:'Julie', phone:'555-8765'},
+ {name:'Juliette', phone:'555-5678'}]"></div>
+
+ <label>Search: <input ng-model="searchText"></label>
+ <table id="searchTextResults">
+ <tr><th>Name</th><th>Phone</th></tr>
+ <tr ng-repeat="friend in friends | filter:searchText">
+ <td>{{friend.name}}</td>
+ <td>{{friend.phone}}</td>
+ </tr>
+ </table>
+ <hr>
+ <label>Any: <input ng-model="search.$"></label> <br>
+ <label>Name only <input ng-model="search.name"></label><br>
+ <label>Phone only <input ng-model="search.phone"></label><br>
+ <label>Equality <input type="checkbox" ng-model="strict"></label><br>
+ <table id="searchObjResults">
+ <tr><th>Name</th><th>Phone</th></tr>
+ <tr ng-repeat="friendObj in friends | filter:search:strict">
+ <td>{{friendObj.name}}</td>
+ <td>{{friendObj.phone}}</td>
+ </tr>
+ </table>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var expectFriendNames = function(expectedNames, key) {
+ element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) {
+ arr.forEach(function(wd, i) {
+ expect(wd.getText()).toMatch(expectedNames[i]);
+ });
+ });
+ };
+
+ it('should search across all fields when filtering with a string', function() {
+ var searchText = element(by.model('searchText'));
+ searchText.clear();
+ searchText.sendKeys('m');
+ expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend');
+
+ searchText.clear();
+ searchText.sendKeys('76');
+ expectFriendNames(['John', 'Julie'], 'friend');
+ });
+
+ it('should search in specific fields when filtering with a predicate object', function() {
+ var searchAny = element(by.model('search.$'));
+ searchAny.clear();
+ searchAny.sendKeys('i');
+ expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj');
+ });
+ it('should use a equal comparison when comparator is true', function() {
+ var searchName = element(by.model('search.name'));
+ var strict = element(by.model('strict'));
+ searchName.clear();
+ searchName.sendKeys('Julie');
+ strict.click();
+ expectFriendNames(['Julie'], 'friendObj');
+ });
+ </file>
+ </example>
+ */
+function filterFilter() {
+ return function(array, expression, comparator) {
+ if (!isArrayLike(array)) {
+ if (array == null) {
+ return array;
+ } else {
+ throw minErr('filter')('notarray', 'Expected array but received: {0}', array);
+ }
+ }
+
+ var expressionType = getTypeForFilter(expression);
+ var predicateFn;
+ var matchAgainstAnyProp;
+
+ switch (expressionType) {
+ case 'function':
+ predicateFn = expression;
+ break;
+ case 'boolean':
+ case 'null':
+ case 'number':
+ case 'string':
+ matchAgainstAnyProp = true;
+ //jshint -W086
+ case 'object':
+ //jshint +W086
+ predicateFn = createPredicateFn(expression, comparator, matchAgainstAnyProp);
+ break;
+ default:
+ return array;
+ }
+
+ return Array.prototype.filter.call(array, predicateFn);
+ };
+}
+
+// Helper functions for `filterFilter`
+function createPredicateFn(expression, comparator, matchAgainstAnyProp) {
+ var shouldMatchPrimitives = isObject(expression) && ('$' in expression);
+ var predicateFn;
+
+ if (comparator === true) {
+ comparator = equals;
+ } else if (!isFunction(comparator)) {
+ comparator = function(actual, expected) {
+ if (isUndefined(actual)) {
+ // No substring matching against `undefined`
+ return false;
+ }
+ if ((actual === null) || (expected === null)) {
+ // No substring matching against `null`; only match against `null`
+ return actual === expected;
+ }
+ if (isObject(expected) || (isObject(actual) && !hasCustomToString(actual))) {
+ // Should not compare primitives against objects, unless they have custom `toString` method
+ return false;
+ }
+
+ actual = lowercase('' + actual);
+ expected = lowercase('' + expected);
+ return actual.indexOf(expected) !== -1;
+ };
+ }
+
+ predicateFn = function(item) {
+ if (shouldMatchPrimitives && !isObject(item)) {
+ return deepCompare(item, expression.$, comparator, false);
+ }
+ return deepCompare(item, expression, comparator, matchAgainstAnyProp);
+ };
+
+ return predicateFn;
+}
+
+function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) {
+ var actualType = getTypeForFilter(actual);
+ var expectedType = getTypeForFilter(expected);
+
+ if ((expectedType === 'string') && (expected.charAt(0) === '!')) {
+ return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp);
+ } else if (isArray(actual)) {
+ // In case `actual` is an array, consider it a match
+ // if ANY of it's items matches `expected`
+ return actual.some(function(item) {
+ return deepCompare(item, expected, comparator, matchAgainstAnyProp);
+ });
+ }
+
+ switch (actualType) {
+ case 'object':
+ var key;
+ if (matchAgainstAnyProp) {
+ for (key in actual) {
+ if ((key.charAt(0) !== '$') && deepCompare(actual[key], expected, comparator, true)) {
+ return true;
+ }
+ }
+ return dontMatchWholeObject ? false : deepCompare(actual, expected, comparator, false);
+ } else if (expectedType === 'object') {
+ for (key in expected) {
+ var expectedVal = expected[key];
+ if (isFunction(expectedVal) || isUndefined(expectedVal)) {
+ continue;
+ }
+
+ var matchAnyProperty = key === '$';
+ var actualVal = matchAnyProperty ? actual : actual[key];
+ if (!deepCompare(actualVal, expectedVal, comparator, matchAnyProperty, matchAnyProperty)) {
+ return false;
+ }
+ }
+ return true;
+ } else {
+ return comparator(actual, expected);
+ }
+ break;
+ case 'function':
+ return false;
+ default:
+ return comparator(actual, expected);
+ }
+}
+
+// Used for easily differentiating between `null` and actual `object`
+function getTypeForFilter(val) {
+ return (val === null) ? 'null' : typeof val;
+}
+
+/**
+ * @ngdoc filter
+ * @name currency
+ * @kind function
+ *
+ * @description
+ * Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default
+ * symbol for current locale is used.
+ *
+ * @param {number} amount Input to filter.
+ * @param {string=} symbol Currency symbol or identifier to be displayed.
+ * @param {number=} fractionSize Number of decimal places to round the amount to, defaults to default max fraction size for current locale
+ * @returns {string} Formatted number.
+ *
+ *
+ * @example
+ <example module="currencyExample">
+ <file name="index.html">
+ <script>
+ angular.module('currencyExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.amount = 1234.56;
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <input type="number" ng-model="amount" aria-label="amount"> <br>
+ default currency symbol ($): <span id="currency-default">{{amount | currency}}</span><br>
+ custom currency identifier (USD$): <span id="currency-custom">{{amount | currency:"USD$"}}</span>
+ no fractions (0): <span id="currency-no-fractions">{{amount | currency:"USD$":0}}</span>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should init with 1234.56', function() {
+ expect(element(by.id('currency-default')).getText()).toBe('$1,234.56');
+ expect(element(by.id('currency-custom')).getText()).toBe('USD$1,234.56');
+ expect(element(by.id('currency-no-fractions')).getText()).toBe('USD$1,235');
+ });
+ it('should update', function() {
+ if (browser.params.browser == 'safari') {
+ // Safari does not understand the minus key. See
+ // https://github.com/angular/protractor/issues/481
+ return;
+ }
+ element(by.model('amount')).clear();
+ element(by.model('amount')).sendKeys('-1234');
+ expect(element(by.id('currency-default')).getText()).toBe('-$1,234.00');
+ expect(element(by.id('currency-custom')).getText()).toBe('-USD$1,234.00');
+ expect(element(by.id('currency-no-fractions')).getText()).toBe('-USD$1,234');
+ });
+ </file>
+ </example>
+ */
+currencyFilter.$inject = ['$locale'];
+function currencyFilter($locale) {
+ var formats = $locale.NUMBER_FORMATS;
+ return function(amount, currencySymbol, fractionSize) {
+ if (isUndefined(currencySymbol)) {
+ currencySymbol = formats.CURRENCY_SYM;
+ }
+
+ if (isUndefined(fractionSize)) {
+ fractionSize = formats.PATTERNS[1].maxFrac;
+ }
+
+ // if null or undefined pass it through
+ return (amount == null)
+ ? amount
+ : formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, fractionSize).
+ replace(/\u00A4/g, currencySymbol);
+ };
+}
+
+/**
+ * @ngdoc filter
+ * @name number
+ * @kind function
+ *
+ * @description
+ * Formats a number as text.
+ *
+ * If the input is null or undefined, it will just be returned.
+ * If the input is infinite (Infinity/-Infinity) the Infinity symbol '∞' is returned.
+ * If the input is not a number an empty string is returned.
+ *
+ *
+ * @param {number|string} number Number to format.
+ * @param {(number|string)=} fractionSize Number of decimal places to round the number to.
+ * If this is not provided then the fraction size is computed from the current locale's number
+ * formatting pattern. In the case of the default locale, it will be 3.
+ * @returns {string} Number rounded to decimalPlaces and places a “,” after each third digit.
+ *
+ * @example
+ <example module="numberFilterExample">
+ <file name="index.html">
+ <script>
+ angular.module('numberFilterExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.val = 1234.56789;
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>Enter number: <input ng-model='val'></label><br>
+ Default formatting: <span id='number-default'>{{val | number}}</span><br>
+ No fractions: <span>{{val | number:0}}</span><br>
+ Negative number: <span>{{-val | number:4}}</span>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should format numbers', function() {
+ expect(element(by.id('number-default')).getText()).toBe('1,234.568');
+ expect(element(by.binding('val | number:0')).getText()).toBe('1,235');
+ expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679');
+ });
+
+ it('should update', function() {
+ element(by.model('val')).clear();
+ element(by.model('val')).sendKeys('3374.333');
+ expect(element(by.id('number-default')).getText()).toBe('3,374.333');
+ expect(element(by.binding('val | number:0')).getText()).toBe('3,374');
+ expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330');
+ });
+ </file>
+ </example>
+ */
+
+
+numberFilter.$inject = ['$locale'];
+function numberFilter($locale) {
+ var formats = $locale.NUMBER_FORMATS;
+ return function(number, fractionSize) {
+
+ // if null or undefined pass it through
+ return (number == null)
+ ? number
+ : formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP,
+ fractionSize);
+ };
+}
+
+var DECIMAL_SEP = '.';
+function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
+ if (isObject(number)) return '';
+
+ var isNegative = number < 0;
+ number = Math.abs(number);
+
+ var isInfinity = number === Infinity;
+ if (!isInfinity && !isFinite(number)) return '';
+
+ var numStr = number + '',
+ formatedText = '',
+ hasExponent = false,
+ parts = [];
+
+ if (isInfinity) formatedText = '\u221e';
+
+ if (!isInfinity && numStr.indexOf('e') !== -1) {
+ var match = numStr.match(/([\d\.]+)e(-?)(\d+)/);
+ if (match && match[2] == '-' && match[3] > fractionSize + 1) {
+ number = 0;
+ } else {
+ formatedText = numStr;
+ hasExponent = true;
+ }
+ }
+
+ if (!isInfinity && !hasExponent) {
+ var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length;
+
+ // determine fractionSize if it is not specified
+ if (isUndefined(fractionSize)) {
+ fractionSize = Math.min(Math.max(pattern.minFrac, fractionLen), pattern.maxFrac);
+ }
+
+ // safely round numbers in JS without hitting imprecisions of floating-point arithmetics
+ // inspired by:
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
+ number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);
+
+ var fraction = ('' + number).split(DECIMAL_SEP);
+ var whole = fraction[0];
+ fraction = fraction[1] || '';
+
+ var i, pos = 0,
+ lgroup = pattern.lgSize,
+ group = pattern.gSize;
+
+ if (whole.length >= (lgroup + group)) {
+ pos = whole.length - lgroup;
+ for (i = 0; i < pos; i++) {
+ if ((pos - i) % group === 0 && i !== 0) {
+ formatedText += groupSep;
+ }
+ formatedText += whole.charAt(i);
+ }
+ }
+
+ for (i = pos; i < whole.length; i++) {
+ if ((whole.length - i) % lgroup === 0 && i !== 0) {
+ formatedText += groupSep;
+ }
+ formatedText += whole.charAt(i);
+ }
+
+ // format fraction part.
+ while (fraction.length < fractionSize) {
+ fraction += '0';
+ }
+
+ if (fractionSize && fractionSize !== "0") formatedText += decimalSep + fraction.substr(0, fractionSize);
+ } else {
+ if (fractionSize > 0 && number < 1) {
+ formatedText = number.toFixed(fractionSize);
+ number = parseFloat(formatedText);
+ }
+ }
+
+ if (number === 0) {
+ isNegative = false;
+ }
+
+ parts.push(isNegative ? pattern.negPre : pattern.posPre,
+ formatedText,
+ isNegative ? pattern.negSuf : pattern.posSuf);
+ return parts.join('');
+}
+
+function padNumber(num, digits, trim) {
+ var neg = '';
+ if (num < 0) {
+ neg = '-';
+ num = -num;
+ }
+ num = '' + num;
+ while (num.length < digits) num = '0' + num;
+ if (trim) {
+ num = num.substr(num.length - digits);
+ }
+ return neg + num;
+}
+
+
+function dateGetter(name, size, offset, trim) {
+ offset = offset || 0;
+ return function(date) {
+ var value = date['get' + name]();
+ if (offset > 0 || value > -offset) {
+ value += offset;
+ }
+ if (value === 0 && offset == -12) value = 12;
+ return padNumber(value, size, trim);
+ };
+}
+
+function dateStrGetter(name, shortForm) {
+ return function(date, formats) {
+ var value = date['get' + name]();
+ var get = uppercase(shortForm ? ('SHORT' + name) : name);
+
+ return formats[get][value];
+ };
+}
+
+function timeZoneGetter(date, formats, offset) {
+ var zone = -1 * offset;
+ var paddedZone = (zone >= 0) ? "+" : "";
+
+ paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) +
+ padNumber(Math.abs(zone % 60), 2);
+
+ return paddedZone;
+}
+
+function getFirstThursdayOfYear(year) {
+ // 0 = index of January
+ var dayOfWeekOnFirst = (new Date(year, 0, 1)).getDay();
+ // 4 = index of Thursday (+1 to account for 1st = 5)
+ // 11 = index of *next* Thursday (+1 account for 1st = 12)
+ return new Date(year, 0, ((dayOfWeekOnFirst <= 4) ? 5 : 12) - dayOfWeekOnFirst);
+}
+
+function getThursdayThisWeek(datetime) {
+ return new Date(datetime.getFullYear(), datetime.getMonth(),
+ // 4 = index of Thursday
+ datetime.getDate() + (4 - datetime.getDay()));
+}
+
+function weekGetter(size) {
+ return function(date) {
+ var firstThurs = getFirstThursdayOfYear(date.getFullYear()),
+ thisThurs = getThursdayThisWeek(date);
+
+ var diff = +thisThurs - +firstThurs,
+ result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week
+
+ return padNumber(result, size);
+ };
+}
+
+function ampmGetter(date, formats) {
+ return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];
+}
+
+function eraGetter(date, formats) {
+ return date.getFullYear() <= 0 ? formats.ERAS[0] : formats.ERAS[1];
+}
+
+function longEraGetter(date, formats) {
+ return date.getFullYear() <= 0 ? formats.ERANAMES[0] : formats.ERANAMES[1];
+}
+
+var DATE_FORMATS = {
+ yyyy: dateGetter('FullYear', 4),
+ yy: dateGetter('FullYear', 2, 0, true),
+ y: dateGetter('FullYear', 1),
+ MMMM: dateStrGetter('Month'),
+ MMM: dateStrGetter('Month', true),
+ MM: dateGetter('Month', 2, 1),
+ M: dateGetter('Month', 1, 1),
+ dd: dateGetter('Date', 2),
+ d: dateGetter('Date', 1),
+ HH: dateGetter('Hours', 2),
+ H: dateGetter('Hours', 1),
+ hh: dateGetter('Hours', 2, -12),
+ h: dateGetter('Hours', 1, -12),
+ mm: dateGetter('Minutes', 2),
+ m: dateGetter('Minutes', 1),
+ ss: dateGetter('Seconds', 2),
+ s: dateGetter('Seconds', 1),
+ // while ISO 8601 requires fractions to be prefixed with `.` or `,`
+ // we can be just safely rely on using `sss` since we currently don't support single or two digit fractions
+ sss: dateGetter('Milliseconds', 3),
+ EEEE: dateStrGetter('Day'),
+ EEE: dateStrGetter('Day', true),
+ a: ampmGetter,
+ Z: timeZoneGetter,
+ ww: weekGetter(2),
+ w: weekGetter(1),
+ G: eraGetter,
+ GG: eraGetter,
+ GGG: eraGetter,
+ GGGG: longEraGetter
+};
+
+var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,
+ NUMBER_STRING = /^\-?\d+$/;
+
+/**
+ * @ngdoc filter
+ * @name date
+ * @kind function
+ *
+ * @description
+ * Formats `date` to a string based on the requested `format`.
+ *
+ * `format` string can be composed of the following elements:
+ *
+ * * `'yyyy'`: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)
+ * * `'yy'`: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)
+ * * `'y'`: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)
+ * * `'MMMM'`: Month in year (January-December)
+ * * `'MMM'`: Month in year (Jan-Dec)
+ * * `'MM'`: Month in year, padded (01-12)
+ * * `'M'`: Month in year (1-12)
+ * * `'dd'`: Day in month, padded (01-31)
+ * * `'d'`: Day in month (1-31)
+ * * `'EEEE'`: Day in Week,(Sunday-Saturday)
+ * * `'EEE'`: Day in Week, (Sun-Sat)
+ * * `'HH'`: Hour in day, padded (00-23)
+ * * `'H'`: Hour in day (0-23)
+ * * `'hh'`: Hour in AM/PM, padded (01-12)
+ * * `'h'`: Hour in AM/PM, (1-12)
+ * * `'mm'`: Minute in hour, padded (00-59)
+ * * `'m'`: Minute in hour (0-59)
+ * * `'ss'`: Second in minute, padded (00-59)
+ * * `'s'`: Second in minute (0-59)
+ * * `'sss'`: Millisecond in second, padded (000-999)
+ * * `'a'`: AM/PM marker
+ * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)
+ * * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year
+ * * `'w'`: Week of year (0-53). Week 1 is the week with the first Thursday of the year
+ * * `'G'`, `'GG'`, `'GGG'`: The abbreviated form of the era string (e.g. 'AD')
+ * * `'GGGG'`: The long form of the era string (e.g. 'Anno Domini')
+ *
+ * `format` string can also be one of the following predefined
+ * {@link guide/i18n localizable formats}:
+ *
+ * * `'medium'`: equivalent to `'MMM d, y h:mm:ss a'` for en_US locale
+ * (e.g. Sep 3, 2010 12:05:08 PM)
+ * * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US locale (e.g. 9/3/10 12:05 PM)
+ * * `'fullDate'`: equivalent to `'EEEE, MMMM d, y'` for en_US locale
+ * (e.g. Friday, September 3, 2010)
+ * * `'longDate'`: equivalent to `'MMMM d, y'` for en_US locale (e.g. September 3, 2010)
+ * * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US locale (e.g. Sep 3, 2010)
+ * * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10)
+ * * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 PM)
+ * * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 PM)
+ *
+ * `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g.
+ * `"h 'in the morning'"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence
+ * (e.g. `"h 'o''clock'"`).
+ *
+ * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
+ * number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its
+ * shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is
+ * specified in the string input, the time is considered to be in the local timezone.
+ * @param {string=} format Formatting rules (see Description). If not specified,
+ * `mediumDate` is used.
+ * @param {string=} timezone Timezone to be used for formatting. It understands UTC/GMT and the
+ * continental US time zone abbreviations, but for general use, use a time zone offset, for
+ * example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian)
+ * If not specified, the timezone of the browser will be used.
+ * @returns {string} Formatted string or the input if input is not recognized as date/millis.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <span ng-non-bindable>{{1288323623006 | date:'medium'}}</span>:
+ <span>{{1288323623006 | date:'medium'}}</span><br>
+ <span ng-non-bindable>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span>:
+ <span>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span><br>
+ <span ng-non-bindable>{{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}</span>:
+ <span>{{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}</span><br>
+ <span ng-non-bindable>{{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}</span>:
+ <span>{{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}</span><br>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should format date', function() {
+ expect(element(by.binding("1288323623006 | date:'medium'")).getText()).
+ toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/);
+ expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()).
+ toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/);
+ expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()).
+ toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/);
+ expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()).
+ toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/);
+ });
+ </file>
+ </example>
+ */
+dateFilter.$inject = ['$locale'];
+function dateFilter($locale) {
+
+
+ var R_ISO8601_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
+ // 1 2 3 4 5 6 7 8 9 10 11
+ function jsonStringToDate(string) {
+ var match;
+ if (match = string.match(R_ISO8601_STR)) {
+ var date = new Date(0),
+ tzHour = 0,
+ tzMin = 0,
+ dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear,
+ timeSetter = match[8] ? date.setUTCHours : date.setHours;
+
+ if (match[9]) {
+ tzHour = toInt(match[9] + match[10]);
+ tzMin = toInt(match[9] + match[11]);
+ }
+ dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3]));
+ var h = toInt(match[4] || 0) - tzHour;
+ var m = toInt(match[5] || 0) - tzMin;
+ var s = toInt(match[6] || 0);
+ var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);
+ timeSetter.call(date, h, m, s, ms);
+ return date;
+ }
+ return string;
+ }
+
+
+ return function(date, format, timezone) {
+ var text = '',
+ parts = [],
+ fn, match;
+
+ format = format || 'mediumDate';
+ format = $locale.DATETIME_FORMATS[format] || format;
+ if (isString(date)) {
+ date = NUMBER_STRING.test(date) ? toInt(date) : jsonStringToDate(date);
+ }
+
+ if (isNumber(date)) {
+ date = new Date(date);
+ }
+
+ if (!isDate(date) || !isFinite(date.getTime())) {
+ return date;
+ }
+
+ while (format) {
+ match = DATE_FORMATS_SPLIT.exec(format);
+ if (match) {
+ parts = concat(parts, match, 1);
+ format = parts.pop();
+ } else {
+ parts.push(format);
+ format = null;
+ }
+ }
+
+ var dateTimezoneOffset = date.getTimezoneOffset();
+ if (timezone) {
+ dateTimezoneOffset = timezoneToOffset(timezone, date.getTimezoneOffset());
+ date = convertTimezoneToLocal(date, timezone, true);
+ }
+ forEach(parts, function(value) {
+ fn = DATE_FORMATS[value];
+ text += fn ? fn(date, $locale.DATETIME_FORMATS, dateTimezoneOffset)
+ : value.replace(/(^'|'$)/g, '').replace(/''/g, "'");
+ });
+
+ return text;
+ };
+}
+
+
+/**
+ * @ngdoc filter
+ * @name json
+ * @kind function
+ *
+ * @description
+ * Allows you to convert a JavaScript object into JSON string.
+ *
+ * This filter is mostly useful for debugging. When using the double curly {{value}} notation
+ * the binding is automatically converted to JSON.
+ *
+ * @param {*} object Any JavaScript object (including arrays and primitive types) to filter.
+ * @param {number=} spacing The number of spaces to use per indentation, defaults to 2.
+ * @returns {string} JSON string.
+ *
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <pre id="default-spacing">{{ {'name':'value'} | json }}</pre>
+ <pre id="custom-spacing">{{ {'name':'value'} | json:4 }}</pre>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should jsonify filtered objects', function() {
+ expect(element(by.id('default-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/);
+ expect(element(by.id('custom-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/);
+ });
+ </file>
+ </example>
+ *
+ */
+function jsonFilter() {
+ return function(object, spacing) {
+ if (isUndefined(spacing)) {
+ spacing = 2;
+ }
+ return toJson(object, spacing);
+ };
+}
+
+
+/**
+ * @ngdoc filter
+ * @name lowercase
+ * @kind function
+ * @description
+ * Converts string to lowercase.
+ * @see angular.lowercase
+ */
+var lowercaseFilter = valueFn(lowercase);
+
+
+/**
+ * @ngdoc filter
+ * @name uppercase
+ * @kind function
+ * @description
+ * Converts string to uppercase.
+ * @see angular.uppercase
+ */
+var uppercaseFilter = valueFn(uppercase);
+
+/**
+ * @ngdoc filter
+ * @name limitTo
+ * @kind function
+ *
+ * @description
+ * Creates a new array or string containing only a specified number of elements. The elements
+ * are taken from either the beginning or the end of the source array, string or number, as specified by
+ * the value and sign (positive or negative) of `limit`. If a number is used as input, it is
+ * converted to a string.
+ *
+ * @param {Array|string|number} input Source array, string or number to be limited.
+ * @param {string|number} limit The length of the returned array or string. If the `limit` number
+ * is positive, `limit` number of items from the beginning of the source array/string are copied.
+ * If the number is negative, `limit` number of items from the end of the source array/string
+ * are copied. The `limit` will be trimmed if it exceeds `array.length`. If `limit` is undefined,
+ * the input will be returned unchanged.
+ * @param {(string|number)=} begin Index at which to begin limitation. As a negative index, `begin`
+ * indicates an offset from the end of `input`. Defaults to `0`.
+ * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array
+ * had less than `limit` elements.
+ *
+ * @example
+ <example module="limitToExample">
+ <file name="index.html">
+ <script>
+ angular.module('limitToExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.numbers = [1,2,3,4,5,6,7,8,9];
+ $scope.letters = "abcdefghi";
+ $scope.longNumber = 2345432342;
+ $scope.numLimit = 3;
+ $scope.letterLimit = 3;
+ $scope.longNumberLimit = 3;
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>
+ Limit {{numbers}} to:
+ <input type="number" step="1" ng-model="numLimit">
+ </label>
+ <p>Output numbers: {{ numbers | limitTo:numLimit }}</p>
+ <label>
+ Limit {{letters}} to:
+ <input type="number" step="1" ng-model="letterLimit">
+ </label>
+ <p>Output letters: {{ letters | limitTo:letterLimit }}</p>
+ <label>
+ Limit {{longNumber}} to:
+ <input type="number" step="1" ng-model="longNumberLimit">
+ </label>
+ <p>Output long number: {{ longNumber | limitTo:longNumberLimit }}</p>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var numLimitInput = element(by.model('numLimit'));
+ var letterLimitInput = element(by.model('letterLimit'));
+ var longNumberLimitInput = element(by.model('longNumberLimit'));
+ var limitedNumbers = element(by.binding('numbers | limitTo:numLimit'));
+ var limitedLetters = element(by.binding('letters | limitTo:letterLimit'));
+ var limitedLongNumber = element(by.binding('longNumber | limitTo:longNumberLimit'));
+
+ it('should limit the number array to first three items', function() {
+ expect(numLimitInput.getAttribute('value')).toBe('3');
+ expect(letterLimitInput.getAttribute('value')).toBe('3');
+ expect(longNumberLimitInput.getAttribute('value')).toBe('3');
+ expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]');
+ expect(limitedLetters.getText()).toEqual('Output letters: abc');
+ expect(limitedLongNumber.getText()).toEqual('Output long number: 234');
+ });
+
+ // There is a bug in safari and protractor that doesn't like the minus key
+ // it('should update the output when -3 is entered', function() {
+ // numLimitInput.clear();
+ // numLimitInput.sendKeys('-3');
+ // letterLimitInput.clear();
+ // letterLimitInput.sendKeys('-3');
+ // longNumberLimitInput.clear();
+ // longNumberLimitInput.sendKeys('-3');
+ // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]');
+ // expect(limitedLetters.getText()).toEqual('Output letters: ghi');
+ // expect(limitedLongNumber.getText()).toEqual('Output long number: 342');
+ // });
+
+ it('should not exceed the maximum size of input array', function() {
+ numLimitInput.clear();
+ numLimitInput.sendKeys('100');
+ letterLimitInput.clear();
+ letterLimitInput.sendKeys('100');
+ longNumberLimitInput.clear();
+ longNumberLimitInput.sendKeys('100');
+ expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]');
+ expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi');
+ expect(limitedLongNumber.getText()).toEqual('Output long number: 2345432342');
+ });
+ </file>
+ </example>
+*/
+function limitToFilter() {
+ return function(input, limit, begin) {
+ if (Math.abs(Number(limit)) === Infinity) {
+ limit = Number(limit);
+ } else {
+ limit = toInt(limit);
+ }
+ if (isNaN(limit)) return input;
+
+ if (isNumber(input)) input = input.toString();
+ if (!isArray(input) && !isString(input)) return input;
+
+ begin = (!begin || isNaN(begin)) ? 0 : toInt(begin);
+ begin = (begin < 0 && begin >= -input.length) ? input.length + begin : begin;
+
+ if (limit >= 0) {
+ return input.slice(begin, begin + limit);
+ } else {
+ if (begin === 0) {
+ return input.slice(limit, input.length);
+ } else {
+ return input.slice(Math.max(0, begin + limit), begin);
+ }
+ }
+ };
+}
+
+/**
+ * @ngdoc filter
+ * @name orderBy
+ * @kind function
+ *
+ * @description
+ * Orders a specified `array` by the `expression` predicate. It is ordered alphabetically
+ * for strings and numerically for numbers. Note: if you notice numbers are not being sorted
+ * as expected, make sure they are actually being saved as numbers and not strings.
+ *
+ * @param {Array} array The array to sort.
+ * @param {function(*)|string|Array.<(function(*)|string)>=} expression A predicate to be
+ * used by the comparator to determine the order of elements.
+ *
+ * Can be one of:
+ *
+ * - `function`: Getter function. The result of this function will be sorted using the
+ * `<`, `===`, `>` operator.
+ * - `string`: An Angular expression. The result of this expression is used to compare elements
+ * (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by
+ * 3 first characters of a property called `name`). The result of a constant expression
+ * is interpreted as a property name to be used in comparisons (for example `"special name"`
+ * to sort object by the value of their `special name` property). An expression can be
+ * optionally prefixed with `+` or `-` to control ascending or descending sort order
+ * (for example, `+name` or `-name`). If no property is provided, (e.g. `'+'`) then the array
+ * element itself is used to compare where sorting.
+ * - `Array`: An array of function or string predicates. The first predicate in the array
+ * is used for sorting, but when two items are equivalent, the next predicate is used.
+ *
+ * If the predicate is missing or empty then it defaults to `'+'`.
+ *
+ * @param {boolean=} reverse Reverse the order of the array.
+ * @returns {Array} Sorted copy of the source array.
+ *
+ *
+ * @example
+ * The example below demonstrates a simple ngRepeat, where the data is sorted
+ * by age in descending order (predicate is set to `'-age'`).
+ * `reverse` is not set, which means it defaults to `false`.
+ <example module="orderByExample">
+ <file name="index.html">
+ <script>
+ angular.module('orderByExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.friends =
+ [{name:'John', phone:'555-1212', age:10},
+ {name:'Mary', phone:'555-9876', age:19},
+ {name:'Mike', phone:'555-4321', age:21},
+ {name:'Adam', phone:'555-5678', age:35},
+ {name:'Julie', phone:'555-8765', age:29}];
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <table class="friend">
+ <tr>
+ <th>Name</th>
+ <th>Phone Number</th>
+ <th>Age</th>
+ </tr>
+ <tr ng-repeat="friend in friends | orderBy:'-age'">
+ <td>{{friend.name}}</td>
+ <td>{{friend.phone}}</td>
+ <td>{{friend.age}}</td>
+ </tr>
+ </table>
+ </div>
+ </file>
+ </example>
+ *
+ * The predicate and reverse parameters can be controlled dynamically through scope properties,
+ * as shown in the next example.
+ * @example
+ <example module="orderByExample">
+ <file name="index.html">
+ <script>
+ angular.module('orderByExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.friends =
+ [{name:'John', phone:'555-1212', age:10},
+ {name:'Mary', phone:'555-9876', age:19},
+ {name:'Mike', phone:'555-4321', age:21},
+ {name:'Adam', phone:'555-5678', age:35},
+ {name:'Julie', phone:'555-8765', age:29}];
+ $scope.predicate = 'age';
+ $scope.reverse = true;
+ $scope.order = function(predicate) {
+ $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
+ $scope.predicate = predicate;
+ };
+ }]);
+ </script>
+ <style type="text/css">
+ .sortorder:after {
+ content: '\25b2';
+ }
+ .sortorder.reverse:after {
+ content: '\25bc';
+ }
+ </style>
+ <div ng-controller="ExampleController">
+ <pre>Sorting predicate = {{predicate}}; reverse = {{reverse}}</pre>
+ <hr/>
+ [ <a href="" ng-click="predicate=''">unsorted</a> ]
+ <table class="friend">
+ <tr>
+ <th>
+ <a href="" ng-click="order('name')">Name</a>
+ <span class="sortorder" ng-show="predicate === 'name'" ng-class="{reverse:reverse}"></span>
+ </th>
+ <th>
+ <a href="" ng-click="order('phone')">Phone Number</a>
+ <span class="sortorder" ng-show="predicate === 'phone'" ng-class="{reverse:reverse}"></span>
+ </th>
+ <th>
+ <a href="" ng-click="order('age')">Age</a>
+ <span class="sortorder" ng-show="predicate === 'age'" ng-class="{reverse:reverse}"></span>
+ </th>
+ </tr>
+ <tr ng-repeat="friend in friends | orderBy:predicate:reverse">
+ <td>{{friend.name}}</td>
+ <td>{{friend.phone}}</td>
+ <td>{{friend.age}}</td>
+ </tr>
+ </table>
+ </div>
+ </file>
+ </example>
+ *
+ * It's also possible to call the orderBy filter manually, by injecting `$filter`, retrieving the
+ * filter routine with `$filter('orderBy')`, and calling the returned filter routine with the
+ * desired parameters.
+ *
+ * Example:
+ *
+ * @example
+ <example module="orderByExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <table class="friend">
+ <tr>
+ <th><a href="" ng-click="reverse=false;order('name', false)">Name</a>
+ (<a href="" ng-click="order('-name',false)">^</a>)</th>
+ <th><a href="" ng-click="reverse=!reverse;order('phone', reverse)">Phone Number</a></th>
+ <th><a href="" ng-click="reverse=!reverse;order('age',reverse)">Age</a></th>
+ </tr>
+ <tr ng-repeat="friend in friends">
+ <td>{{friend.name}}</td>
+ <td>{{friend.phone}}</td>
+ <td>{{friend.age}}</td>
+ </tr>
+ </table>
+ </div>
+ </file>
+
+ <file name="script.js">
+ angular.module('orderByExample', [])
+ .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) {
+ var orderBy = $filter('orderBy');
+ $scope.friends = [
+ { name: 'John', phone: '555-1212', age: 10 },
+ { name: 'Mary', phone: '555-9876', age: 19 },
+ { name: 'Mike', phone: '555-4321', age: 21 },
+ { name: 'Adam', phone: '555-5678', age: 35 },
+ { name: 'Julie', phone: '555-8765', age: 29 }
+ ];
+ $scope.order = function(predicate, reverse) {
+ $scope.friends = orderBy($scope.friends, predicate, reverse);
+ };
+ $scope.order('-age',false);
+ }]);
+ </file>
+</example>
+ */
+orderByFilter.$inject = ['$parse'];
+function orderByFilter($parse) {
+ return function(array, sortPredicate, reverseOrder) {
+
+ if (!(isArrayLike(array))) return array;
+
+ if (!isArray(sortPredicate)) { sortPredicate = [sortPredicate]; }
+ if (sortPredicate.length === 0) { sortPredicate = ['+']; }
+
+ var predicates = processPredicates(sortPredicate, reverseOrder);
+ // Add a predicate at the end that evaluates to the element index. This makes the
+ // sort stable as it works as a tie-breaker when all the input predicates cannot
+ // distinguish between two elements.
+ predicates.push({ get: function() { return {}; }, descending: reverseOrder ? -1 : 1});
+
+ // The next three lines are a version of a Swartzian Transform idiom from Perl
+ // (sometimes called the Decorate-Sort-Undecorate idiom)
+ // See https://en.wikipedia.org/wiki/Schwartzian_transform
+ var compareValues = Array.prototype.map.call(array, getComparisonObject);
+ compareValues.sort(doComparison);
+ array = compareValues.map(function(item) { return item.value; });
+
+ return array;
+
+ function getComparisonObject(value, index) {
+ return {
+ value: value,
+ predicateValues: predicates.map(function(predicate) {
+ return getPredicateValue(predicate.get(value), index);
+ })
+ };
+ }
+
+ function doComparison(v1, v2) {
+ var result = 0;
+ for (var index=0, length = predicates.length; index < length; ++index) {
+ result = compare(v1.predicateValues[index], v2.predicateValues[index]) * predicates[index].descending;
+ if (result) break;
+ }
+ return result;
+ }
+ };
+
+ function processPredicates(sortPredicate, reverseOrder) {
+ reverseOrder = reverseOrder ? -1 : 1;
+ return sortPredicate.map(function(predicate) {
+ var descending = 1, get = identity;
+
+ if (isFunction(predicate)) {
+ get = predicate;
+ } else if (isString(predicate)) {
+ if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) {
+ descending = predicate.charAt(0) == '-' ? -1 : 1;
+ predicate = predicate.substring(1);
+ }
+ if (predicate !== '') {
+ get = $parse(predicate);
+ if (get.constant) {
+ var key = get();
+ get = function(value) { return value[key]; };
+ }
+ }
+ }
+ return { get: get, descending: descending * reverseOrder };
+ });
+ }
+
+ function isPrimitive(value) {
+ switch (typeof value) {
+ case 'number': /* falls through */
+ case 'boolean': /* falls through */
+ case 'string':
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ function objectValue(value, index) {
+ // If `valueOf` is a valid function use that
+ if (typeof value.valueOf === 'function') {
+ value = value.valueOf();
+ if (isPrimitive(value)) return value;
+ }
+ // If `toString` is a valid function and not the one from `Object.prototype` use that
+ if (hasCustomToString(value)) {
+ value = value.toString();
+ if (isPrimitive(value)) return value;
+ }
+ // We have a basic object so we use the position of the object in the collection
+ return index;
+ }
+
+ function getPredicateValue(value, index) {
+ var type = typeof value;
+ if (value === null) {
+ type = 'string';
+ value = 'null';
+ } else if (type === 'string') {
+ value = value.toLowerCase();
+ } else if (type === 'object') {
+ value = objectValue(value, index);
+ }
+ return { value: value, type: type };
+ }
+
+ function compare(v1, v2) {
+ var result = 0;
+ if (v1.type === v2.type) {
+ if (v1.value !== v2.value) {
+ result = v1.value < v2.value ? -1 : 1;
+ }
+ } else {
+ result = v1.type < v2.type ? -1 : 1;
+ }
+ return result;
+ }
+}
+
+function ngDirective(directive) {
+ if (isFunction(directive)) {
+ directive = {
+ link: directive
+ };
+ }
+ directive.restrict = directive.restrict || 'AC';
+ return valueFn(directive);
+}
+
+/**
+ * @ngdoc directive
+ * @name a
+ * @restrict E
+ *
+ * @description
+ * Modifies the default behavior of the html A tag so that the default action is prevented when
+ * the href attribute is empty.
+ *
+ * This change permits the easy creation of action links with the `ngClick` directive
+ * without changing the location or causing page reloads, e.g.:
+ * `<a href="" ng-click="list.addItem()">Add Item</a>`
+ */
+var htmlAnchorDirective = valueFn({
+ restrict: 'E',
+ compile: function(element, attr) {
+ if (!attr.href && !attr.xlinkHref) {
+ return function(scope, element) {
+ // If the linked element is not an anchor tag anymore, do nothing
+ if (element[0].nodeName.toLowerCase() !== 'a') return;
+
+ // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.
+ var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?
+ 'xlink:href' : 'href';
+ element.on('click', function(event) {
+ // if we have no href url, then don't navigate anywhere.
+ if (!element.attr(href)) {
+ event.preventDefault();
+ }
+ });
+ };
+ }
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name ngHref
+ * @restrict A
+ * @priority 99
+ *
+ * @description
+ * Using Angular markup like `{{hash}}` in an href attribute will
+ * make the link go to the wrong URL if the user clicks it before
+ * Angular has a chance to replace the `{{hash}}` markup with its
+ * value. Until Angular replaces the markup the link will be broken
+ * and will most likely return a 404 error. The `ngHref` directive
+ * solves this problem.
+ *
+ * The wrong way to write it:
+ * ```html
+ * <a href="http://www.gravatar.com/avatar/{{hash}}">link1</a>
+ * ```
+ *
+ * The correct way to write it:
+ * ```html
+ * <a ng-href="http://www.gravatar.com/avatar/{{hash}}">link1</a>
+ * ```
+ *
+ * @element A
+ * @param {template} ngHref any string which can contain `{{}}` markup.
+ *
+ * @example
+ * This example shows various combinations of `href`, `ng-href` and `ng-click` attributes
+ * in links and their different behaviors:
+ <example>
+ <file name="index.html">
+ <input ng-model="value" /><br />
+ <a id="link-1" href ng-click="value = 1">link 1</a> (link, don't reload)<br />
+ <a id="link-2" href="" ng-click="value = 2">link 2</a> (link, don't reload)<br />
+ <a id="link-3" ng-href="/{{'123'}}">link 3</a> (link, reload!)<br />
+ <a id="link-4" href="" name="xx" ng-click="value = 4">anchor</a> (link, don't reload)<br />
+ <a id="link-5" name="xxx" ng-click="value = 5">anchor</a> (no link)<br />
+ <a id="link-6" ng-href="{{value}}">link</a> (link, change location)
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should execute ng-click but not reload when href without value', function() {
+ element(by.id('link-1')).click();
+ expect(element(by.model('value')).getAttribute('value')).toEqual('1');
+ expect(element(by.id('link-1')).getAttribute('href')).toBe('');
+ });
+
+ it('should execute ng-click but not reload when href empty string', function() {
+ element(by.id('link-2')).click();
+ expect(element(by.model('value')).getAttribute('value')).toEqual('2');
+ expect(element(by.id('link-2')).getAttribute('href')).toBe('');
+ });
+
+ it('should execute ng-click and change url when ng-href specified', function() {
+ expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\/123$/);
+
+ element(by.id('link-3')).click();
+
+ // At this point, we navigate away from an Angular page, so we need
+ // to use browser.driver to get the base webdriver.
+
+ browser.wait(function() {
+ return browser.driver.getCurrentUrl().then(function(url) {
+ return url.match(/\/123$/);
+ });
+ }, 5000, 'page should navigate to /123');
+ });
+
+ it('should execute ng-click but not reload when href empty string and name specified', function() {
+ element(by.id('link-4')).click();
+ expect(element(by.model('value')).getAttribute('value')).toEqual('4');
+ expect(element(by.id('link-4')).getAttribute('href')).toBe('');
+ });
+
+ it('should execute ng-click but not reload when no href but name specified', function() {
+ element(by.id('link-5')).click();
+ expect(element(by.model('value')).getAttribute('value')).toEqual('5');
+ expect(element(by.id('link-5')).getAttribute('href')).toBe(null);
+ });
+
+ it('should only change url when only ng-href', function() {
+ element(by.model('value')).clear();
+ element(by.model('value')).sendKeys('6');
+ expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\/6$/);
+
+ element(by.id('link-6')).click();
+
+ // At this point, we navigate away from an Angular page, so we need
+ // to use browser.driver to get the base webdriver.
+ browser.wait(function() {
+ return browser.driver.getCurrentUrl().then(function(url) {
+ return url.match(/\/6$/);
+ });
+ }, 5000, 'page should navigate to /6');
+ });
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngSrc
+ * @restrict A
+ * @priority 99
+ *
+ * @description
+ * Using Angular markup like `{{hash}}` in a `src` attribute doesn't
+ * work right: The browser will fetch from the URL with the literal
+ * text `{{hash}}` until Angular replaces the expression inside
+ * `{{hash}}`. The `ngSrc` directive solves this problem.
+ *
+ * The buggy way to write it:
+ * ```html
+ * <img src="http://www.gravatar.com/avatar/{{hash}}" alt="Description"/>
+ * ```
+ *
+ * The correct way to write it:
+ * ```html
+ * <img ng-src="http://www.gravatar.com/avatar/{{hash}}" alt="Description" />
+ * ```
+ *
+ * @element IMG
+ * @param {template} ngSrc any string which can contain `{{}}` markup.
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngSrcset
+ * @restrict A
+ * @priority 99
+ *
+ * @description
+ * Using Angular markup like `{{hash}}` in a `srcset` attribute doesn't
+ * work right: The browser will fetch from the URL with the literal
+ * text `{{hash}}` until Angular replaces the expression inside
+ * `{{hash}}`. The `ngSrcset` directive solves this problem.
+ *
+ * The buggy way to write it:
+ * ```html
+ * <img srcset="http://www.gravatar.com/avatar/{{hash}} 2x" alt="Description"/>
+ * ```
+ *
+ * The correct way to write it:
+ * ```html
+ * <img ng-srcset="http://www.gravatar.com/avatar/{{hash}} 2x" alt="Description" />
+ * ```
+ *
+ * @element IMG
+ * @param {template} ngSrcset any string which can contain `{{}}` markup.
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngDisabled
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ *
+ * This directive sets the `disabled` attribute on the element if the
+ * {@link guide/expression expression} inside `ngDisabled` evaluates to truthy.
+ *
+ * A special directive is necessary because we cannot use interpolation inside the `disabled`
+ * attribute. The following example would make the button enabled on Chrome/Firefox
+ * but not on older IEs:
+ *
+ * ```html
+ * <!-- See below for an example of ng-disabled being used correctly -->
+ * <div ng-init="isDisabled = false">
+ * <button disabled="{{isDisabled}}">Disabled</button>
+ * </div>
+ * ```
+ *
+ * This is because the HTML specification does not require browsers to preserve the values of
+ * boolean attributes such as `disabled` (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Click me to toggle: <input type="checkbox" ng-model="checked"></label><br/>
+ <button ng-model="button" ng-disabled="checked">Button</button>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should toggle button', function() {
+ expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy();
+ element(by.model('checked')).click();
+ expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element INPUT
+ * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,
+ * then the `disabled` attribute will be set on the element
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngChecked
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ * Sets the `checked` attribute on the element, if the expression inside `ngChecked` is truthy.
+ *
+ * Note that this directive should not be used together with {@link ngModel `ngModel`},
+ * as this can lead to unexpected behavior.
+ *
+ * ### Why do we need `ngChecked`?
+ *
+ * The HTML specification does not require browsers to preserve the values of boolean attributes
+ * such as checked. (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ * The `ngChecked` directive solves this problem for the `checked` attribute.
+ * This complementary directive is not removed by the browser and so provides
+ * a permanent reliable place to store the binding information.
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Check me to check both: <input type="checkbox" ng-model="master"></label><br/>
+ <input id="checkSlave" type="checkbox" ng-checked="master" aria-label="Slave input">
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check both checkBoxes', function() {
+ expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy();
+ element(by.model('master')).click();
+ expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element INPUT
+ * @param {expression} ngChecked If the {@link guide/expression expression} is truthy,
+ * then the `checked` attribute will be set on the element
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngReadonly
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ * The HTML specification does not require browsers to preserve the values of boolean attributes
+ * such as readonly. (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ * The `ngReadonly` directive solves this problem for the `readonly` attribute.
+ * This complementary directive is not removed by the browser and so provides
+ * a permanent reliable place to store the binding information.
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Check me to make text readonly: <input type="checkbox" ng-model="checked"></label><br/>
+ <input type="text" ng-readonly="checked" value="I'm Angular" aria-label="Readonly field" />
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should toggle readonly attr', function() {
+ expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy();
+ element(by.model('checked')).click();
+ expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element INPUT
+ * @param {expression} ngReadonly If the {@link guide/expression expression} is truthy,
+ * then special attribute "readonly" will be set on the element
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngSelected
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ * The HTML specification does not require browsers to preserve the values of boolean attributes
+ * such as selected. (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ * The `ngSelected` directive solves this problem for the `selected` attribute.
+ * This complementary directive is not removed by the browser and so provides
+ * a permanent reliable place to store the binding information.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Check me to select: <input type="checkbox" ng-model="selected"></label><br/>
+ <select aria-label="ngSelected demo">
+ <option>Hello!</option>
+ <option id="greet" ng-selected="selected">Greetings!</option>
+ </select>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should select Greetings!', function() {
+ expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy();
+ element(by.model('selected')).click();
+ expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element OPTION
+ * @param {expression} ngSelected If the {@link guide/expression expression} is truthy,
+ * then special attribute "selected" will be set on the element
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngOpen
+ * @restrict A
+ * @priority 100
+ *
+ * @description
+ * The HTML specification does not require browsers to preserve the values of boolean attributes
+ * such as open. (Their presence means true and their absence means false.)
+ * If we put an Angular interpolation expression into such an attribute then the
+ * binding information would be lost when the browser removes the attribute.
+ * The `ngOpen` directive solves this problem for the `open` attribute.
+ * This complementary directive is not removed by the browser and so provides
+ * a permanent reliable place to store the binding information.
+ * @example
+ <example>
+ <file name="index.html">
+ <label>Check me check multiple: <input type="checkbox" ng-model="open"></label><br/>
+ <details id="details" ng-open="open">
+ <summary>Show/Hide me</summary>
+ </details>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should toggle open', function() {
+ expect(element(by.id('details')).getAttribute('open')).toBeFalsy();
+ element(by.model('open')).click();
+ expect(element(by.id('details')).getAttribute('open')).toBeTruthy();
+ });
+ </file>
+ </example>
+ *
+ * @element DETAILS
+ * @param {expression} ngOpen If the {@link guide/expression expression} is truthy,
+ * then special attribute "open" will be set on the element
+ */
+
+var ngAttributeAliasDirectives = {};
+
+// boolean attrs are evaluated
+forEach(BOOLEAN_ATTR, function(propName, attrName) {
+ // binding to multiple is not supported
+ if (propName == "multiple") return;
+
+ function defaultLinkFn(scope, element, attr) {
+ scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {
+ attr.$set(attrName, !!value);
+ });
+ }
+
+ var normalized = directiveNormalize('ng-' + attrName);
+ var linkFn = defaultLinkFn;
+
+ if (propName === 'checked') {
+ linkFn = function(scope, element, attr) {
+ // ensuring ngChecked doesn't interfere with ngModel when both are set on the same input
+ if (attr.ngModel !== attr[normalized]) {
+ defaultLinkFn(scope, element, attr);
+ }
+ };
+ }
+
+ ngAttributeAliasDirectives[normalized] = function() {
+ return {
+ restrict: 'A',
+ priority: 100,
+ link: linkFn
+ };
+ };
+});
+
+// aliased input attrs are evaluated
+forEach(ALIASED_ATTR, function(htmlAttr, ngAttr) {
+ ngAttributeAliasDirectives[ngAttr] = function() {
+ return {
+ priority: 100,
+ link: function(scope, element, attr) {
+ //special case ngPattern when a literal regular expression value
+ //is used as the expression (this way we don't have to watch anything).
+ if (ngAttr === "ngPattern" && attr.ngPattern.charAt(0) == "/") {
+ var match = attr.ngPattern.match(REGEX_STRING_REGEXP);
+ if (match) {
+ attr.$set("ngPattern", new RegExp(match[1], match[2]));
+ return;
+ }
+ }
+
+ scope.$watch(attr[ngAttr], function ngAttrAliasWatchAction(value) {
+ attr.$set(ngAttr, value);
+ });
+ }
+ };
+ };
+});
+
+// ng-src, ng-srcset, ng-href are interpolated
+forEach(['src', 'srcset', 'href'], function(attrName) {
+ var normalized = directiveNormalize('ng-' + attrName);
+ ngAttributeAliasDirectives[normalized] = function() {
+ return {
+ priority: 99, // it needs to run after the attributes are interpolated
+ link: function(scope, element, attr) {
+ var propName = attrName,
+ name = attrName;
+
+ if (attrName === 'href' &&
+ toString.call(element.prop('href')) === '[object SVGAnimatedString]') {
+ name = 'xlinkHref';
+ attr.$attr[name] = 'xlink:href';
+ propName = null;
+ }
+
+ attr.$observe(normalized, function(value) {
+ if (!value) {
+ if (attrName === 'href') {
+ attr.$set(name, null);
+ }
+ return;
+ }
+
+ attr.$set(name, value);
+
+ // on IE, if "ng:src" directive declaration is used and "src" attribute doesn't exist
+ // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need
+ // to set the property as well to achieve the desired effect.
+ // we use attr[attrName] value since $set can sanitize the url.
+ if (msie && propName) element.prop(propName, attr[name]);
+ });
+ }
+ };
+ };
+});
+
+/* global -nullFormCtrl, -SUBMITTED_CLASS, addSetValidityMethod: true
+ */
+var nullFormCtrl = {
+ $addControl: noop,
+ $$renameControl: nullFormRenameControl,
+ $removeControl: noop,
+ $setValidity: noop,
+ $setDirty: noop,
+ $setPristine: noop,
+ $setSubmitted: noop
+},
+SUBMITTED_CLASS = 'ng-submitted';
+
+function nullFormRenameControl(control, name) {
+ control.$name = name;
+}
+
+/**
+ * @ngdoc type
+ * @name form.FormController
+ *
+ * @property {boolean} $pristine True if user has not interacted with the form yet.
+ * @property {boolean} $dirty True if user has already interacted with the form.
+ * @property {boolean} $valid True if all of the containing forms and controls are valid.
+ * @property {boolean} $invalid True if at least one containing control or form is invalid.
+ * @property {boolean} $submitted True if user has submitted the form even if its invalid.
+ *
+ * @property {Object} $error Is an object hash, containing references to controls or
+ * forms with failing validators, where:
+ *
+ * - keys are validation tokens (error names),
+ * - values are arrays of controls or forms that have a failing validator for given error name.
+ *
+ * Built-in validation tokens:
+ *
+ * - `email`
+ * - `max`
+ * - `maxlength`
+ * - `min`
+ * - `minlength`
+ * - `number`
+ * - `pattern`
+ * - `required`
+ * - `url`
+ * - `date`
+ * - `datetimelocal`
+ * - `time`
+ * - `week`
+ * - `month`
+ *
+ * @description
+ * `FormController` keeps track of all its controls and nested forms as well as the state of them,
+ * such as being valid/invalid or dirty/pristine.
+ *
+ * Each {@link ng.directive:form form} directive creates an instance
+ * of `FormController`.
+ *
+ */
+//asks for $scope to fool the BC controller module
+FormController.$inject = ['$element', '$attrs', '$scope', '$animate', '$interpolate'];
+function FormController(element, attrs, $scope, $animate, $interpolate) {
+ var form = this,
+ controls = [];
+
+ var parentForm = form.$$parentForm = element.parent().controller('form') || nullFormCtrl;
+
+ // init state
+ form.$error = {};
+ form.$$success = {};
+ form.$pending = undefined;
+ form.$name = $interpolate(attrs.name || attrs.ngForm || '')($scope);
+ form.$dirty = false;
+ form.$pristine = true;
+ form.$valid = true;
+ form.$invalid = false;
+ form.$submitted = false;
+
+ parentForm.$addControl(form);
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$rollbackViewValue
+ *
+ * @description
+ * Rollback all form controls pending updates to the `$modelValue`.
+ *
+ * Updates may be pending by a debounced event or because the input is waiting for a some future
+ * event defined in `ng-model-options`. This method is typically needed by the reset button of
+ * a form that uses `ng-model-options` to pend updates.
+ */
+ form.$rollbackViewValue = function() {
+ forEach(controls, function(control) {
+ control.$rollbackViewValue();
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$commitViewValue
+ *
+ * @description
+ * Commit all form controls pending updates to the `$modelValue`.
+ *
+ * Updates may be pending by a debounced event or because the input is waiting for a some future
+ * event defined in `ng-model-options`. This method is rarely needed as `NgModelController`
+ * usually handles calling this in response to input events.
+ */
+ form.$commitViewValue = function() {
+ forEach(controls, function(control) {
+ control.$commitViewValue();
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$addControl
+ *
+ * @description
+ * Register a control with the form.
+ *
+ * Input elements using ngModelController do this automatically when they are linked.
+ */
+ form.$addControl = function(control) {
+ // Breaking change - before, inputs whose name was "hasOwnProperty" were quietly ignored
+ // and not added to the scope. Now we throw an error.
+ assertNotHasOwnProperty(control.$name, 'input');
+ controls.push(control);
+
+ if (control.$name) {
+ form[control.$name] = control;
+ }
+ };
+
+ // Private API: rename a form control
+ form.$$renameControl = function(control, newName) {
+ var oldName = control.$name;
+
+ if (form[oldName] === control) {
+ delete form[oldName];
+ }
+ form[newName] = control;
+ control.$name = newName;
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$removeControl
+ *
+ * @description
+ * Deregister a control from the form.
+ *
+ * Input elements using ngModelController do this automatically when they are destroyed.
+ */
+ form.$removeControl = function(control) {
+ if (control.$name && form[control.$name] === control) {
+ delete form[control.$name];
+ }
+ forEach(form.$pending, function(value, name) {
+ form.$setValidity(name, null, control);
+ });
+ forEach(form.$error, function(value, name) {
+ form.$setValidity(name, null, control);
+ });
+ forEach(form.$$success, function(value, name) {
+ form.$setValidity(name, null, control);
+ });
+
+ arrayRemove(controls, control);
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setValidity
+ *
+ * @description
+ * Sets the validity of a form control.
+ *
+ * This method will also propagate to parent forms.
+ */
+ addSetValidityMethod({
+ ctrl: this,
+ $element: element,
+ set: function(object, property, controller) {
+ var list = object[property];
+ if (!list) {
+ object[property] = [controller];
+ } else {
+ var index = list.indexOf(controller);
+ if (index === -1) {
+ list.push(controller);
+ }
+ }
+ },
+ unset: function(object, property, controller) {
+ var list = object[property];
+ if (!list) {
+ return;
+ }
+ arrayRemove(list, controller);
+ if (list.length === 0) {
+ delete object[property];
+ }
+ },
+ parentForm: parentForm,
+ $animate: $animate
+ });
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setDirty
+ *
+ * @description
+ * Sets the form to a dirty state.
+ *
+ * This method can be called to add the 'ng-dirty' class and set the form to a dirty
+ * state (ng-dirty class). This method will also propagate to parent forms.
+ */
+ form.$setDirty = function() {
+ $animate.removeClass(element, PRISTINE_CLASS);
+ $animate.addClass(element, DIRTY_CLASS);
+ form.$dirty = true;
+ form.$pristine = false;
+ parentForm.$setDirty();
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setPristine
+ *
+ * @description
+ * Sets the form to its pristine state.
+ *
+ * This method can be called to remove the 'ng-dirty' class and set the form to its pristine
+ * state (ng-pristine class). This method will also propagate to all the controls contained
+ * in this form.
+ *
+ * Setting a form back to a pristine state is often useful when we want to 'reuse' a form after
+ * saving or resetting it.
+ */
+ form.$setPristine = function() {
+ $animate.setClass(element, PRISTINE_CLASS, DIRTY_CLASS + ' ' + SUBMITTED_CLASS);
+ form.$dirty = false;
+ form.$pristine = true;
+ form.$submitted = false;
+ forEach(controls, function(control) {
+ control.$setPristine();
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setUntouched
+ *
+ * @description
+ * Sets the form to its untouched state.
+ *
+ * This method can be called to remove the 'ng-touched' class and set the form controls to their
+ * untouched state (ng-untouched class).
+ *
+ * Setting a form controls back to their untouched state is often useful when setting the form
+ * back to its pristine state.
+ */
+ form.$setUntouched = function() {
+ forEach(controls, function(control) {
+ control.$setUntouched();
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name form.FormController#$setSubmitted
+ *
+ * @description
+ * Sets the form to its submitted state.
+ */
+ form.$setSubmitted = function() {
+ $animate.addClass(element, SUBMITTED_CLASS);
+ form.$submitted = true;
+ parentForm.$setSubmitted();
+ };
+}
+
+/**
+ * @ngdoc directive
+ * @name ngForm
+ * @restrict EAC
+ *
+ * @description
+ * Nestable alias of {@link ng.directive:form `form`} directive. HTML
+ * does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a
+ * sub-group of controls needs to be determined.
+ *
+ * Note: the purpose of `ngForm` is to group controls,
+ * but not to be a replacement for the `<form>` tag with all of its capabilities
+ * (e.g. posting to the server, ...).
+ *
+ * @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into
+ * related scope, under this name.
+ *
+ */
+
+ /**
+ * @ngdoc directive
+ * @name form
+ * @restrict E
+ *
+ * @description
+ * Directive that instantiates
+ * {@link form.FormController FormController}.
+ *
+ * If the `name` attribute is specified, the form controller is published onto the current scope under
+ * this name.
+ *
+ * # Alias: {@link ng.directive:ngForm `ngForm`}
+ *
+ * In Angular, forms can be nested. This means that the outer form is valid when all of the child
+ * forms are valid as well. However, browsers do not allow nesting of `<form>` elements, so
+ * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to
+ * `<form>` but can be nested. This allows you to have nested forms, which is very useful when
+ * using Angular validation directives in forms that are dynamically generated using the
+ * {@link ng.directive:ngRepeat `ngRepeat`} directive. Since you cannot dynamically generate the `name`
+ * attribute of input elements using interpolation, you have to wrap each set of repeated inputs in an
+ * `ngForm` directive and nest these in an outer `form` element.
+ *
+ *
+ * # CSS classes
+ * - `ng-valid` is set if the form is valid.
+ * - `ng-invalid` is set if the form is invalid.
+ * - `ng-pristine` is set if the form is pristine.
+ * - `ng-dirty` is set if the form is dirty.
+ * - `ng-submitted` is set if the form was submitted.
+ *
+ * Keep in mind that ngAnimate can detect each of these classes when added and removed.
+ *
+ *
+ * # Submitting a form and preventing the default action
+ *
+ * Since the role of forms in client-side Angular applications is different than in classical
+ * roundtrip apps, it is desirable for the browser not to translate the form submission into a full
+ * page reload that sends the data to the server. Instead some javascript logic should be triggered
+ * to handle the form submission in an application-specific way.
+ *
+ * For this reason, Angular prevents the default action (form submission to the server) unless the
+ * `<form>` element has an `action` attribute specified.
+ *
+ * You can use one of the following two ways to specify what javascript method should be called when
+ * a form is submitted:
+ *
+ * - {@link ng.directive:ngSubmit ngSubmit} directive on the form element
+ * - {@link ng.directive:ngClick ngClick} directive on the first
+ * button or input field of type submit (input[type=submit])
+ *
+ * To prevent double execution of the handler, use only one of the {@link ng.directive:ngSubmit ngSubmit}
+ * or {@link ng.directive:ngClick ngClick} directives.
+ * This is because of the following form submission rules in the HTML specification:
+ *
+ * - If a form has only one input field then hitting enter in this field triggers form submit
+ * (`ngSubmit`)
+ * - if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter
+ * doesn't trigger submit
+ * - if a form has one or more input fields and one or more buttons or input[type=submit] then
+ * hitting enter in any of the input fields will trigger the click handler on the *first* button or
+ * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`)
+ *
+ * Any pending `ngModelOptions` changes will take place immediately when an enclosing form is
+ * submitted. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`
+ * to have access to the updated model.
+ *
+ * ## Animation Hooks
+ *
+ * Animations in ngForm are triggered when any of the associated CSS classes are added and removed.
+ * These classes are: `.ng-pristine`, `.ng-dirty`, `.ng-invalid` and `.ng-valid` as well as any
+ * other validations that are performed within the form. Animations in ngForm are similar to how
+ * they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well
+ * as JS animations.
+ *
+ * The following example shows a simple way to utilize CSS transitions to style a form element
+ * that has been rendered as invalid after it has been validated:
+ *
+ * <pre>
+ * //be sure to include ngAnimate as a module to hook into more
+ * //advanced animations
+ * .my-form {
+ * transition:0.5s linear all;
+ * background: white;
+ * }
+ * .my-form.ng-invalid {
+ * background: red;
+ * color:white;
+ * }
+ * </pre>
+ *
+ * @example
+ <example deps="angular-animate.js" animations="true" fixBase="true" module="formExample">
+ <file name="index.html">
+ <script>
+ angular.module('formExample', [])
+ .controller('FormController', ['$scope', function($scope) {
+ $scope.userType = 'guest';
+ }]);
+ </script>
+ <style>
+ .my-form {
+ -webkit-transition:all linear 0.5s;
+ transition:all linear 0.5s;
+ background: transparent;
+ }
+ .my-form.ng-invalid {
+ background: red;
+ }
+ </style>
+ <form name="myForm" ng-controller="FormController" class="my-form">
+ userType: <input name="input" ng-model="userType" required>
+ <span class="error" ng-show="myForm.input.$error.required">Required!</span><br>
+ <code>userType = {{userType}}</code><br>
+ <code>myForm.input.$valid = {{myForm.input.$valid}}</code><br>
+ <code>myForm.input.$error = {{myForm.input.$error}}</code><br>
+ <code>myForm.$valid = {{myForm.$valid}}</code><br>
+ <code>myForm.$error.required = {{!!myForm.$error.required}}</code><br>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should initialize to model', function() {
+ var userType = element(by.binding('userType'));
+ var valid = element(by.binding('myForm.input.$valid'));
+
+ expect(userType.getText()).toContain('guest');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ var userType = element(by.binding('userType'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var userInput = element(by.model('userType'));
+
+ userInput.clear();
+ userInput.sendKeys('');
+
+ expect(userType.getText()).toEqual('userType =');
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ *
+ * @param {string=} name Name of the form. If specified, the form controller will be published into
+ * related scope, under this name.
+ */
+var formDirectiveFactory = function(isNgForm) {
+ return ['$timeout', '$parse', function($timeout, $parse) {
+ var formDirective = {
+ name: 'form',
+ restrict: isNgForm ? 'EAC' : 'E',
+ controller: FormController,
+ compile: function ngFormCompile(formElement, attr) {
+ // Setup initial state of the control
+ formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS);
+
+ var nameAttr = attr.name ? 'name' : (isNgForm && attr.ngForm ? 'ngForm' : false);
+
+ return {
+ pre: function ngFormPreLink(scope, formElement, attr, controller) {
+ // if `action` attr is not present on the form, prevent the default action (submission)
+ if (!('action' in attr)) {
+ // we can't use jq events because if a form is destroyed during submission the default
+ // action is not prevented. see #1238
+ //
+ // IE 9 is not affected because it doesn't fire a submit event and try to do a full
+ // page reload if the form was destroyed by submission of the form via a click handler
+ // on a button in the form. Looks like an IE9 specific bug.
+ var handleFormSubmission = function(event) {
+ scope.$apply(function() {
+ controller.$commitViewValue();
+ controller.$setSubmitted();
+ });
+
+ event.preventDefault();
+ };
+
+ addEventListenerFn(formElement[0], 'submit', handleFormSubmission);
+
+ // unregister the preventDefault listener so that we don't not leak memory but in a
+ // way that will achieve the prevention of the default action.
+ formElement.on('$destroy', function() {
+ $timeout(function() {
+ removeEventListenerFn(formElement[0], 'submit', handleFormSubmission);
+ }, 0, false);
+ });
+ }
+
+ var parentFormCtrl = controller.$$parentForm;
+ var setter = nameAttr ? getSetter(controller.$name) : noop;
+
+ if (nameAttr) {
+ setter(scope, controller);
+ attr.$observe(nameAttr, function(newValue) {
+ if (controller.$name === newValue) return;
+ setter(scope, undefined);
+ parentFormCtrl.$$renameControl(controller, newValue);
+ setter = getSetter(controller.$name);
+ setter(scope, controller);
+ });
+ }
+ formElement.on('$destroy', function() {
+ parentFormCtrl.$removeControl(controller);
+ setter(scope, undefined);
+ extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards
+ });
+ }
+ };
+ }
+ };
+
+ return formDirective;
+
+ function getSetter(expression) {
+ if (expression === '') {
+ //create an assignable expression, so forms with an empty name can be renamed later
+ return $parse('this[""]').assign;
+ }
+ return $parse(expression).assign || noop;
+ }
+ }];
+};
+
+var formDirective = formDirectiveFactory();
+var ngFormDirective = formDirectiveFactory(true);
+
+/* global VALID_CLASS: false,
+ INVALID_CLASS: false,
+ PRISTINE_CLASS: false,
+ DIRTY_CLASS: false,
+ UNTOUCHED_CLASS: false,
+ TOUCHED_CLASS: false,
+ ngModelMinErr: false,
+*/
+
+// Regex code is obtained from SO: https://stackoverflow.com/questions/3143070/javascript-regex-iso-datetime#answer-3143231
+var ISO_DATE_REGEXP = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/;
+var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;
+var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
+var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/;
+var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/;
+var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
+var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/;
+var MONTH_REGEXP = /^(\d{4})-(\d\d)$/;
+var TIME_REGEXP = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
+
+var inputType = {
+
+ /**
+ * @ngdoc input
+ * @name input[text]
+ *
+ * @description
+ * Standard HTML text input with angular data binding, inherited by most of the `input` elements.
+ *
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Adds `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
+ * any length.
+ * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
+ * that contains the regular expression body that will be converted to a regular expression
+ * as in the ngPattern directive.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
+ * This parameter is ignored for input[type=password] controls, which will never trim the
+ * input.
+ *
+ * @example
+ <example name="text-input-directive" module="textInputExample">
+ <file name="index.html">
+ <script>
+ angular.module('textInputExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.example = {
+ text: 'guest',
+ word: /^\s*\w*\s*$/
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>Single word:
+ <input type="text" name="input" ng-model="example.text"
+ ng-pattern="example.word" required ng-trim="false">
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.pattern">
+ Single word only!</span>
+ </div>
+ <tt>text = {{example.text}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var text = element(by.binding('example.text'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.text'));
+
+ it('should initialize to model', function() {
+ expect(text.getText()).toContain('guest');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ input.clear();
+ input.sendKeys('');
+
+ expect(text.getText()).toEqual('text =');
+ expect(valid.getText()).toContain('false');
+ });
+
+ it('should be invalid if multi word', function() {
+ input.clear();
+ input.sendKeys('hello world');
+
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+ 'text': textInputType,
+
+ /**
+ * @ngdoc input
+ * @name input[date]
+ *
+ * @description
+ * Input with date validation and transformation. In browsers that do not yet support
+ * the HTML5 date input, a text element will be used. In that case, text must be entered in a valid ISO-8601
+ * date format (yyyy-MM-dd), for example: `2009-01-06`. Since many
+ * modern browsers do not yet support this input type, it is important to provide cues to users on the
+ * expected input format via a placeholder or label.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
+ * valid ISO date string (yyyy-MM-dd).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
+ * a valid ISO date string (yyyy-MM-dd).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="date-input-directive" module="dateInputExample">
+ <file name="index.html">
+ <script>
+ angular.module('dateInputExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(2013, 9, 22)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label for="exampleInput">Pick a date in 2013:</label>
+ <input type="date" id="exampleInput" name="input" ng-model="example.value"
+ placeholder="yyyy-MM-dd" min="2013-01-01" max="2013-12-31" required />
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.date">
+ Not a valid date!</span>
+ </div>
+ <tt>value = {{example.value | date: "yyyy-MM-dd"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "yyyy-MM-dd"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (see https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('2013-10-22');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('2015-01-01');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'date': createDateInputType('date', DATE_REGEXP,
+ createDateParser(DATE_REGEXP, ['yyyy', 'MM', 'dd']),
+ 'yyyy-MM-dd'),
+
+ /**
+ * @ngdoc input
+ * @name input[datetime-local]
+ *
+ * @description
+ * Input with datetime validation and transformation. In browsers that do not yet support
+ * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
+ * local datetime format (yyyy-MM-ddTHH:mm:ss), for example: `2010-12-28T14:57:00`.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
+ * valid ISO datetime format (yyyy-MM-ddTHH:mm:ss).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
+ * a valid ISO datetime format (yyyy-MM-ddTHH:mm:ss).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="datetimelocal-input-directive" module="dateExample">
+ <file name="index.html">
+ <script>
+ angular.module('dateExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(2010, 11, 28, 14, 57)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label for="exampleInput">Pick a date between in 2013:</label>
+ <input type="datetime-local" id="exampleInput" name="input" ng-model="example.value"
+ placeholder="yyyy-MM-ddTHH:mm:ss" min="2001-01-01T00:00:00" max="2013-12-31T00:00:00" required />
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.datetimelocal">
+ Not a valid date!</span>
+ </div>
+ <tt>value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "yyyy-MM-ddTHH:mm:ss"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('2010-12-28T14:57:00');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('2015-01-01T23:59:00');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'datetime-local': createDateInputType('datetimelocal', DATETIMELOCAL_REGEXP,
+ createDateParser(DATETIMELOCAL_REGEXP, ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss', 'sss']),
+ 'yyyy-MM-ddTHH:mm:ss.sss'),
+
+ /**
+ * @ngdoc input
+ * @name input[time]
+ *
+ * @description
+ * Input with time validation and transformation. In browsers that do not yet support
+ * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
+ * local time format (HH:mm:ss), for example: `14:57:00`. Model must be a Date object. This binding will always output a
+ * Date object to the model of January 1, 1970, or local date `new Date(1970, 0, 1, HH, mm, ss)`.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
+ * valid ISO time format (HH:mm:ss).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be a
+ * valid ISO time format (HH:mm:ss).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="time-input-directive" module="timeExample">
+ <file name="index.html">
+ <script>
+ angular.module('timeExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(1970, 0, 1, 14, 57, 0)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label for="exampleInput">Pick a between 8am and 5pm:</label>
+ <input type="time" id="exampleInput" name="input" ng-model="example.value"
+ placeholder="HH:mm:ss" min="08:00:00" max="17:00:00" required />
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.time">
+ Not a valid date!</span>
+ </div>
+ <tt>value = {{example.value | date: "HH:mm:ss"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "HH:mm:ss"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('14:57:00');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('23:59:00');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'time': createDateInputType('time', TIME_REGEXP,
+ createDateParser(TIME_REGEXP, ['HH', 'mm', 'ss', 'sss']),
+ 'HH:mm:ss.sss'),
+
+ /**
+ * @ngdoc input
+ * @name input[week]
+ *
+ * @description
+ * Input with week-of-the-year validation and transformation to Date. In browsers that do not yet support
+ * the HTML5 week input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
+ * week format (yyyy-W##), for example: `2013-W02`.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
+ * valid ISO week format (yyyy-W##).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
+ * a valid ISO week format (yyyy-W##).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="week-input-directive" module="weekExample">
+ <file name="index.html">
+ <script>
+ angular.module('weekExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(2013, 0, 3)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label>Pick a date between in 2013:
+ <input id="exampleInput" type="week" name="input" ng-model="example.value"
+ placeholder="YYYY-W##" min="2012-W32"
+ max="2013-W52" required />
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.week">
+ Not a valid date!</span>
+ </div>
+ <tt>value = {{example.value | date: "yyyy-Www"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "yyyy-Www"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('2013-W01');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('2015-W01');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'week': createDateInputType('week', WEEK_REGEXP, weekParser, 'yyyy-Www'),
+
+ /**
+ * @ngdoc input
+ * @name input[month]
+ *
+ * @description
+ * Input with month validation and transformation. In browsers that do not yet support
+ * the HTML5 month input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
+ * month format (yyyy-MM), for example: `2009-01`.
+ *
+ * The model must always be a Date object, otherwise Angular will throw an error.
+ * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
+ * If the model is not set to the first of the month, the next view to model update will set it
+ * to the first of the month.
+ *
+ * The timezone to be used to read/write the `Date` instance in the model can be defined using
+ * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be
+ * a valid ISO month format (yyyy-MM).
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must
+ * be a valid ISO month format (yyyy-MM).
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="month-input-directive" module="monthExample">
+ <file name="index.html">
+ <script>
+ angular.module('monthExample', [])
+ .controller('DateController', ['$scope', function($scope) {
+ $scope.example = {
+ value: new Date(2013, 9, 1)
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="DateController as dateCtrl">
+ <label for="exampleInput">Pick a month in 2013:</label>
+ <input id="exampleInput" type="month" name="input" ng-model="example.value"
+ placeholder="yyyy-MM" min="2013-01" max="2013-12" required />
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.month">
+ Not a valid month!</span>
+ </div>
+ <tt>value = {{example.value | date: "yyyy-MM"}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value | date: "yyyy-MM"'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ // currently protractor/webdriver does not support
+ // sending keys to all known HTML5 input controls
+ // for various browsers (https://github.com/angular/protractor/issues/562).
+ function setInput(val) {
+ // set the value of the element and force validation.
+ var scr = "var ipt = document.getElementById('exampleInput'); " +
+ "ipt.value = '" + val + "';" +
+ "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
+ browser.executeScript(scr);
+ }
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('2013-10');
+ expect(valid.getText()).toContain('myForm.input.$valid = true');
+ });
+
+ it('should be invalid if empty', function() {
+ setInput('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+
+ it('should be invalid if over max', function() {
+ setInput('2015-01');
+ expect(value.getText()).toContain('');
+ expect(valid.getText()).toContain('myForm.input.$valid = false');
+ });
+ </file>
+ </example>
+ */
+ 'month': createDateInputType('month', MONTH_REGEXP,
+ createDateParser(MONTH_REGEXP, ['yyyy', 'MM']),
+ 'yyyy-MM'),
+
+ /**
+ * @ngdoc input
+ * @name input[number]
+ *
+ * @description
+ * Text input with number validation and transformation. Sets the `number` validation
+ * error if not a valid number.
+ *
+ * <div class="alert alert-warning">
+ * The model must always be of type `number` otherwise Angular will throw an error.
+ * Be aware that a string containing a number is not enough. See the {@link ngModel:numfmt}
+ * error docs for more information and an example of how to convert your model if necessary.
+ * </div>
+ *
+ * ## Issues with HTML5 constraint validation
+ *
+ * In browsers that follow the
+ * [HTML5 specification](https://html.spec.whatwg.org/multipage/forms.html#number-state-%28type=number%29),
+ * `input[number]` does not work as expected with {@link ngModelOptions `ngModelOptions.allowInvalid`}.
+ * If a non-number is entered in the input, the browser will report the value as an empty string,
+ * which means the view / model values in `ngModel` and subsequently the scope value
+ * will also be an empty string.
+ *
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.
+ * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
+ * any length.
+ * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
+ * that contains the regular expression body that will be converted to a regular expression
+ * as in the ngPattern directive.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="number-input-directive" module="numberExample">
+ <file name="index.html">
+ <script>
+ angular.module('numberExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.example = {
+ value: 12
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>Number:
+ <input type="number" name="input" ng-model="example.value"
+ min="0" max="99" required>
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.number">
+ Not valid number!</span>
+ </div>
+ <tt>value = {{example.value}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var value = element(by.binding('example.value'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('example.value'));
+
+ it('should initialize to model', function() {
+ expect(value.getText()).toContain('12');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ input.clear();
+ input.sendKeys('');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('false');
+ });
+
+ it('should be invalid if over max', function() {
+ input.clear();
+ input.sendKeys('123');
+ expect(value.getText()).toEqual('value =');
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+ 'number': numberInputType,
+
+
+ /**
+ * @ngdoc input
+ * @name input[url]
+ *
+ * @description
+ * Text input with URL validation. Sets the `url` validation error key if the content is not a
+ * valid URL.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** `input[url]` uses a regex to validate urls that is derived from the regex
+ * used in Chromium. If you need stricter validation, you can use `ng-pattern` or modify
+ * the built-in validators (see the {@link guide/forms Forms guide})
+ * </div>
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
+ * any length.
+ * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
+ * that contains the regular expression body that will be converted to a regular expression
+ * as in the ngPattern directive.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="url-input-directive" module="urlExample">
+ <file name="index.html">
+ <script>
+ angular.module('urlExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.url = {
+ text: 'http://google.com'
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>URL:
+ <input type="url" name="input" ng-model="url.text" required>
+ <label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.url">
+ Not valid url!</span>
+ </div>
+ <tt>text = {{url.text}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ <tt>myForm.$error.url = {{!!myForm.$error.url}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var text = element(by.binding('url.text'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('url.text'));
+
+ it('should initialize to model', function() {
+ expect(text.getText()).toContain('http://google.com');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ input.clear();
+ input.sendKeys('');
+
+ expect(text.getText()).toEqual('text =');
+ expect(valid.getText()).toContain('false');
+ });
+
+ it('should be invalid if not url', function() {
+ input.clear();
+ input.sendKeys('box');
+
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+ 'url': urlInputType,
+
+
+ /**
+ * @ngdoc input
+ * @name input[email]
+ *
+ * @description
+ * Text input with email validation. Sets the `email` validation error key if not a valid email
+ * address.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** `input[email]` uses a regex to validate email addresses that is derived from the regex
+ * used in Chromium. If you need stricter validation (e.g. requiring a top-level domain), you can
+ * use `ng-pattern` or modify the built-in validators (see the {@link guide/forms Forms guide})
+ * </div>
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
+ * any length.
+ * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
+ * that contains the regular expression body that will be converted to a regular expression
+ * as in the ngPattern directive.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="email-input-directive" module="emailExample">
+ <file name="index.html">
+ <script>
+ angular.module('emailExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.email = {
+ text: 'me@example.com'
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>Email:
+ <input type="email" name="input" ng-model="email.text" required>
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.input.$error.required">
+ Required!</span>
+ <span class="error" ng-show="myForm.input.$error.email">
+ Not valid email!</span>
+ </div>
+ <tt>text = {{email.text}}</tt><br/>
+ <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
+ <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ <tt>myForm.$error.email = {{!!myForm.$error.email}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var text = element(by.binding('email.text'));
+ var valid = element(by.binding('myForm.input.$valid'));
+ var input = element(by.model('email.text'));
+
+ it('should initialize to model', function() {
+ expect(text.getText()).toContain('me@example.com');
+ expect(valid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty', function() {
+ input.clear();
+ input.sendKeys('');
+ expect(text.getText()).toEqual('text =');
+ expect(valid.getText()).toContain('false');
+ });
+
+ it('should be invalid if not email', function() {
+ input.clear();
+ input.sendKeys('xxx');
+
+ expect(valid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+ 'email': emailInputType,
+
+
+ /**
+ * @ngdoc input
+ * @name input[radio]
+ *
+ * @description
+ * HTML radio button.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string} value The value to which the `ngModel` expression should be set when selected.
+ * Note that `value` only supports `string` values, i.e. the scope model needs to be a string,
+ * too. Use `ngValue` if you need complex models (`number`, `object`, ...).
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ * @param {string} ngValue Angular expression to which `ngModel` will be be set when the radio
+ * is selected. Should be used instead of the `value` attribute if you need
+ * a non-string `ngModel` (`boolean`, `array`, ...).
+ *
+ * @example
+ <example name="radio-input-directive" module="radioExample">
+ <file name="index.html">
+ <script>
+ angular.module('radioExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.color = {
+ name: 'blue'
+ };
+ $scope.specialValue = {
+ "id": "12345",
+ "value": "green"
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>
+ <input type="radio" ng-model="color.name" value="red">
+ Red
+ </label><br/>
+ <label>
+ <input type="radio" ng-model="color.name" ng-value="specialValue">
+ Green
+ </label><br/>
+ <label>
+ <input type="radio" ng-model="color.name" value="blue">
+ Blue
+ </label><br/>
+ <tt>color = {{color.name | json}}</tt><br/>
+ </form>
+ Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`.
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should change state', function() {
+ var color = element(by.binding('color.name'));
+
+ expect(color.getText()).toContain('blue');
+
+ element.all(by.model('color.name')).get(0).click();
+
+ expect(color.getText()).toContain('red');
+ });
+ </file>
+ </example>
+ */
+ 'radio': radioInputType,
+
+
+ /**
+ * @ngdoc input
+ * @name input[checkbox]
+ *
+ * @description
+ * HTML checkbox.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {expression=} ngTrueValue The value to which the expression should be set when selected.
+ * @param {expression=} ngFalseValue The value to which the expression should be set when not selected.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ *
+ * @example
+ <example name="checkbox-input-directive" module="checkboxExample">
+ <file name="index.html">
+ <script>
+ angular.module('checkboxExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.checkboxModel = {
+ value1 : true,
+ value2 : 'YES'
+ };
+ }]);
+ </script>
+ <form name="myForm" ng-controller="ExampleController">
+ <label>Value1:
+ <input type="checkbox" ng-model="checkboxModel.value1">
+ </label><br/>
+ <label>Value2:
+ <input type="checkbox" ng-model="checkboxModel.value2"
+ ng-true-value="'YES'" ng-false-value="'NO'">
+ </label><br/>
+ <tt>value1 = {{checkboxModel.value1}}</tt><br/>
+ <tt>value2 = {{checkboxModel.value2}}</tt><br/>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should change state', function() {
+ var value1 = element(by.binding('checkboxModel.value1'));
+ var value2 = element(by.binding('checkboxModel.value2'));
+
+ expect(value1.getText()).toContain('true');
+ expect(value2.getText()).toContain('YES');
+
+ element(by.model('checkboxModel.value1')).click();
+ element(by.model('checkboxModel.value2')).click();
+
+ expect(value1.getText()).toContain('false');
+ expect(value2.getText()).toContain('NO');
+ });
+ </file>
+ </example>
+ */
+ 'checkbox': checkboxInputType,
+
+ 'hidden': noop,
+ 'button': noop,
+ 'submit': noop,
+ 'reset': noop,
+ 'file': noop
+};
+
+function stringBasedInputType(ctrl) {
+ ctrl.$formatters.push(function(value) {
+ return ctrl.$isEmpty(value) ? value : value.toString();
+ });
+}
+
+function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+ stringBasedInputType(ctrl);
+}
+
+function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ var type = lowercase(element[0].type);
+
+ // In composition mode, users are still inputing intermediate text buffer,
+ // hold the listener until composition is done.
+ // More about composition events: https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent
+ if (!$sniffer.android) {
+ var composing = false;
+
+ element.on('compositionstart', function(data) {
+ composing = true;
+ });
+
+ element.on('compositionend', function() {
+ composing = false;
+ listener();
+ });
+ }
+
+ var listener = function(ev) {
+ if (timeout) {
+ $browser.defer.cancel(timeout);
+ timeout = null;
+ }
+ if (composing) return;
+ var value = element.val(),
+ event = ev && ev.type;
+
+ // By default we will trim the value
+ // If the attribute ng-trim exists we will avoid trimming
+ // If input type is 'password', the value is never trimmed
+ if (type !== 'password' && (!attr.ngTrim || attr.ngTrim !== 'false')) {
+ value = trim(value);
+ }
+
+ // If a control is suffering from bad input (due to native validators), browsers discard its
+ // value, so it may be necessary to revalidate (by calling $setViewValue again) even if the
+ // control's value is the same empty value twice in a row.
+ if (ctrl.$viewValue !== value || (value === '' && ctrl.$$hasNativeValidators)) {
+ ctrl.$setViewValue(value, event);
+ }
+ };
+
+ // if the browser does support "input" event, we are fine - except on IE9 which doesn't fire the
+ // input event on backspace, delete or cut
+ if ($sniffer.hasEvent('input')) {
+ element.on('input', listener);
+ } else {
+ var timeout;
+
+ var deferListener = function(ev, input, origValue) {
+ if (!timeout) {
+ timeout = $browser.defer(function() {
+ timeout = null;
+ if (!input || input.value !== origValue) {
+ listener(ev);
+ }
+ });
+ }
+ };
+
+ element.on('keydown', function(event) {
+ var key = event.keyCode;
+
+ // ignore
+ // command modifiers arrows
+ if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return;
+
+ deferListener(event, this, this.value);
+ });
+
+ // if user modifies input value using context menu in IE, we need "paste" and "cut" events to catch it
+ if ($sniffer.hasEvent('paste')) {
+ element.on('paste cut', deferListener);
+ }
+ }
+
+ // if user paste into input using mouse on older browser
+ // or form autocomplete on newer browser, we need "change" event to catch it
+ element.on('change', listener);
+
+ ctrl.$render = function() {
+ // Workaround for Firefox validation #12102.
+ var value = ctrl.$isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue;
+ if (element.val() !== value) {
+ element.val(value);
+ }
+ };
+}
+
+function weekParser(isoWeek, existingDate) {
+ if (isDate(isoWeek)) {
+ return isoWeek;
+ }
+
+ if (isString(isoWeek)) {
+ WEEK_REGEXP.lastIndex = 0;
+ var parts = WEEK_REGEXP.exec(isoWeek);
+ if (parts) {
+ var year = +parts[1],
+ week = +parts[2],
+ hours = 0,
+ minutes = 0,
+ seconds = 0,
+ milliseconds = 0,
+ firstThurs = getFirstThursdayOfYear(year),
+ addDays = (week - 1) * 7;
+
+ if (existingDate) {
+ hours = existingDate.getHours();
+ minutes = existingDate.getMinutes();
+ seconds = existingDate.getSeconds();
+ milliseconds = existingDate.getMilliseconds();
+ }
+
+ return new Date(year, 0, firstThurs.getDate() + addDays, hours, minutes, seconds, milliseconds);
+ }
+ }
+
+ return NaN;
+}
+
+function createDateParser(regexp, mapping) {
+ return function(iso, date) {
+ var parts, map;
+
+ if (isDate(iso)) {
+ return iso;
+ }
+
+ if (isString(iso)) {
+ // When a date is JSON'ified to wraps itself inside of an extra
+ // set of double quotes. This makes the date parsing code unable
+ // to match the date string and parse it as a date.
+ if (iso.charAt(0) == '"' && iso.charAt(iso.length - 1) == '"') {
+ iso = iso.substring(1, iso.length - 1);
+ }
+ if (ISO_DATE_REGEXP.test(iso)) {
+ return new Date(iso);
+ }
+ regexp.lastIndex = 0;
+ parts = regexp.exec(iso);
+
+ if (parts) {
+ parts.shift();
+ if (date) {
+ map = {
+ yyyy: date.getFullYear(),
+ MM: date.getMonth() + 1,
+ dd: date.getDate(),
+ HH: date.getHours(),
+ mm: date.getMinutes(),
+ ss: date.getSeconds(),
+ sss: date.getMilliseconds() / 1000
+ };
+ } else {
+ map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 };
+ }
+
+ forEach(parts, function(part, index) {
+ if (index < mapping.length) {
+ map[mapping[index]] = +part;
+ }
+ });
+ return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss * 1000 || 0);
+ }
+ }
+
+ return NaN;
+ };
+}
+
+function createDateInputType(type, regexp, parseDate, format) {
+ return function dynamicDateInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter) {
+ badInputChecker(scope, element, attr, ctrl);
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+ var timezone = ctrl && ctrl.$options && ctrl.$options.timezone;
+ var previousDate;
+
+ ctrl.$$parserName = type;
+ ctrl.$parsers.push(function(value) {
+ if (ctrl.$isEmpty(value)) return null;
+ if (regexp.test(value)) {
+ // Note: We cannot read ctrl.$modelValue, as there might be a different
+ // parser/formatter in the processing chain so that the model
+ // contains some different data format!
+ var parsedDate = parseDate(value, previousDate);
+ if (timezone) {
+ parsedDate = convertTimezoneToLocal(parsedDate, timezone);
+ }
+ return parsedDate;
+ }
+ return undefined;
+ });
+
+ ctrl.$formatters.push(function(value) {
+ if (value && !isDate(value)) {
+ throw ngModelMinErr('datefmt', 'Expected `{0}` to be a date', value);
+ }
+ if (isValidDate(value)) {
+ previousDate = value;
+ if (previousDate && timezone) {
+ previousDate = convertTimezoneToLocal(previousDate, timezone, true);
+ }
+ return $filter('date')(value, format, timezone);
+ } else {
+ previousDate = null;
+ return '';
+ }
+ });
+
+ if (isDefined(attr.min) || attr.ngMin) {
+ var minVal;
+ ctrl.$validators.min = function(value) {
+ return !isValidDate(value) || isUndefined(minVal) || parseDate(value) >= minVal;
+ };
+ attr.$observe('min', function(val) {
+ minVal = parseObservedDateValue(val);
+ ctrl.$validate();
+ });
+ }
+
+ if (isDefined(attr.max) || attr.ngMax) {
+ var maxVal;
+ ctrl.$validators.max = function(value) {
+ return !isValidDate(value) || isUndefined(maxVal) || parseDate(value) <= maxVal;
+ };
+ attr.$observe('max', function(val) {
+ maxVal = parseObservedDateValue(val);
+ ctrl.$validate();
+ });
+ }
+
+ function isValidDate(value) {
+ // Invalid Date: getTime() returns NaN
+ return value && !(value.getTime && value.getTime() !== value.getTime());
+ }
+
+ function parseObservedDateValue(val) {
+ return isDefined(val) ? (isDate(val) ? val : parseDate(val)) : undefined;
+ }
+ };
+}
+
+function badInputChecker(scope, element, attr, ctrl) {
+ var node = element[0];
+ var nativeValidation = ctrl.$$hasNativeValidators = isObject(node.validity);
+ if (nativeValidation) {
+ ctrl.$parsers.push(function(value) {
+ var validity = element.prop(VALIDITY_STATE_PROPERTY) || {};
+ // Detect bug in FF35 for input[email] (https://bugzilla.mozilla.org/show_bug.cgi?id=1064430):
+ // - also sets validity.badInput (should only be validity.typeMismatch).
+ // - see http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#e-mail-state-(type=email)
+ // - can ignore this case as we can still read out the erroneous email...
+ return validity.badInput && !validity.typeMismatch ? undefined : value;
+ });
+ }
+}
+
+function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ badInputChecker(scope, element, attr, ctrl);
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+
+ ctrl.$$parserName = 'number';
+ ctrl.$parsers.push(function(value) {
+ if (ctrl.$isEmpty(value)) return null;
+ if (NUMBER_REGEXP.test(value)) return parseFloat(value);
+ return undefined;
+ });
+
+ ctrl.$formatters.push(function(value) {
+ if (!ctrl.$isEmpty(value)) {
+ if (!isNumber(value)) {
+ throw ngModelMinErr('numfmt', 'Expected `{0}` to be a number', value);
+ }
+ value = value.toString();
+ }
+ return value;
+ });
+
+ if (isDefined(attr.min) || attr.ngMin) {
+ var minVal;
+ ctrl.$validators.min = function(value) {
+ return ctrl.$isEmpty(value) || isUndefined(minVal) || value >= minVal;
+ };
+
+ attr.$observe('min', function(val) {
+ if (isDefined(val) && !isNumber(val)) {
+ val = parseFloat(val, 10);
+ }
+ minVal = isNumber(val) && !isNaN(val) ? val : undefined;
+ // TODO(matsko): implement validateLater to reduce number of validations
+ ctrl.$validate();
+ });
+ }
+
+ if (isDefined(attr.max) || attr.ngMax) {
+ var maxVal;
+ ctrl.$validators.max = function(value) {
+ return ctrl.$isEmpty(value) || isUndefined(maxVal) || value <= maxVal;
+ };
+
+ attr.$observe('max', function(val) {
+ if (isDefined(val) && !isNumber(val)) {
+ val = parseFloat(val, 10);
+ }
+ maxVal = isNumber(val) && !isNaN(val) ? val : undefined;
+ // TODO(matsko): implement validateLater to reduce number of validations
+ ctrl.$validate();
+ });
+ }
+}
+
+function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ // Note: no badInputChecker here by purpose as `url` is only a validation
+ // in browsers, i.e. we can always read out input.value even if it is not valid!
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+ stringBasedInputType(ctrl);
+
+ ctrl.$$parserName = 'url';
+ ctrl.$validators.url = function(modelValue, viewValue) {
+ var value = modelValue || viewValue;
+ return ctrl.$isEmpty(value) || URL_REGEXP.test(value);
+ };
+}
+
+function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
+ // Note: no badInputChecker here by purpose as `url` is only a validation
+ // in browsers, i.e. we can always read out input.value even if it is not valid!
+ baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
+ stringBasedInputType(ctrl);
+
+ ctrl.$$parserName = 'email';
+ ctrl.$validators.email = function(modelValue, viewValue) {
+ var value = modelValue || viewValue;
+ return ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value);
+ };
+}
+
+function radioInputType(scope, element, attr, ctrl) {
+ // make the name unique, if not defined
+ if (isUndefined(attr.name)) {
+ element.attr('name', nextUid());
+ }
+
+ var listener = function(ev) {
+ if (element[0].checked) {
+ ctrl.$setViewValue(attr.value, ev && ev.type);
+ }
+ };
+
+ element.on('click', listener);
+
+ ctrl.$render = function() {
+ var value = attr.value;
+ element[0].checked = (value == ctrl.$viewValue);
+ };
+
+ attr.$observe('value', ctrl.$render);
+}
+
+function parseConstantExpr($parse, context, name, expression, fallback) {
+ var parseFn;
+ if (isDefined(expression)) {
+ parseFn = $parse(expression);
+ if (!parseFn.constant) {
+ throw ngModelMinErr('constexpr', 'Expected constant expression for `{0}`, but saw ' +
+ '`{1}`.', name, expression);
+ }
+ return parseFn(context);
+ }
+ return fallback;
+}
+
+function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter, $parse) {
+ var trueValue = parseConstantExpr($parse, scope, 'ngTrueValue', attr.ngTrueValue, true);
+ var falseValue = parseConstantExpr($parse, scope, 'ngFalseValue', attr.ngFalseValue, false);
+
+ var listener = function(ev) {
+ ctrl.$setViewValue(element[0].checked, ev && ev.type);
+ };
+
+ element.on('click', listener);
+
+ ctrl.$render = function() {
+ element[0].checked = ctrl.$viewValue;
+ };
+
+ // Override the standard `$isEmpty` because the $viewValue of an empty checkbox is always set to `false`
+ // This is because of the parser below, which compares the `$modelValue` with `trueValue` to convert
+ // it to a boolean.
+ ctrl.$isEmpty = function(value) {
+ return value === false;
+ };
+
+ ctrl.$formatters.push(function(value) {
+ return equals(value, trueValue);
+ });
+
+ ctrl.$parsers.push(function(value) {
+ return value ? trueValue : falseValue;
+ });
+}
+
+
+/**
+ * @ngdoc directive
+ * @name textarea
+ * @restrict E
+ *
+ * @description
+ * HTML textarea element control with angular data-binding. The data-binding and validation
+ * properties of this element are exactly the same as those of the
+ * {@link ng.directive:input input element}.
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
+ * length.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name input
+ * @restrict E
+ *
+ * @description
+ * HTML input element control. When used together with {@link ngModel `ngModel`}, it provides data-binding,
+ * input state control, and validation.
+ * Input control follows HTML5 input types and polyfills the HTML5 validation behavior for older browsers.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Not every feature offered is available for all input types.
+ * Specifically, data binding and event handling via `ng-model` is unsupported for `input[file]`.
+ * </div>
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {boolean=} ngRequired Sets `required` attribute if set to true
+ * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
+ * minlength.
+ * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
+ * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
+ * length.
+ * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
+ * a RegExp found by evaluating the Angular expression given in the attribute value.
+ * If the expression evaluates to a RegExp object, then this is used directly.
+ * If the expression evaluates to a string, then it will be converted to a RegExp
+ * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to
+ * `new RegExp('^abc$')`.<br />
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ * @param {string=} ngChange Angular expression to be executed when input changes due to user
+ * interaction with the input element.
+ * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
+ * This parameter is ignored for input[type=password] controls, which will never trim the
+ * input.
+ *
+ * @example
+ <example name="input-directive" module="inputExample">
+ <file name="index.html">
+ <script>
+ angular.module('inputExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.user = {name: 'guest', last: 'visitor'};
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <form name="myForm">
+ <label>
+ User name:
+ <input type="text" name="userName" ng-model="user.name" required>
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.userName.$error.required">
+ Required!</span>
+ </div>
+ <label>
+ Last name:
+ <input type="text" name="lastName" ng-model="user.last"
+ ng-minlength="3" ng-maxlength="10">
+ </label>
+ <div role="alert">
+ <span class="error" ng-show="myForm.lastName.$error.minlength">
+ Too short!</span>
+ <span class="error" ng-show="myForm.lastName.$error.maxlength">
+ Too long!</span>
+ </div>
+ </form>
+ <hr>
+ <tt>user = {{user}}</tt><br/>
+ <tt>myForm.userName.$valid = {{myForm.userName.$valid}}</tt><br/>
+ <tt>myForm.userName.$error = {{myForm.userName.$error}}</tt><br/>
+ <tt>myForm.lastName.$valid = {{myForm.lastName.$valid}}</tt><br/>
+ <tt>myForm.lastName.$error = {{myForm.lastName.$error}}</tt><br/>
+ <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ <tt>myForm.$error.minlength = {{!!myForm.$error.minlength}}</tt><br/>
+ <tt>myForm.$error.maxlength = {{!!myForm.$error.maxlength}}</tt><br/>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var user = element(by.exactBinding('user'));
+ var userNameValid = element(by.binding('myForm.userName.$valid'));
+ var lastNameValid = element(by.binding('myForm.lastName.$valid'));
+ var lastNameError = element(by.binding('myForm.lastName.$error'));
+ var formValid = element(by.binding('myForm.$valid'));
+ var userNameInput = element(by.model('user.name'));
+ var userLastInput = element(by.model('user.last'));
+
+ it('should initialize to model', function() {
+ expect(user.getText()).toContain('{"name":"guest","last":"visitor"}');
+ expect(userNameValid.getText()).toContain('true');
+ expect(formValid.getText()).toContain('true');
+ });
+
+ it('should be invalid if empty when required', function() {
+ userNameInput.clear();
+ userNameInput.sendKeys('');
+
+ expect(user.getText()).toContain('{"last":"visitor"}');
+ expect(userNameValid.getText()).toContain('false');
+ expect(formValid.getText()).toContain('false');
+ });
+
+ it('should be valid if empty when min length is set', function() {
+ userLastInput.clear();
+ userLastInput.sendKeys('');
+
+ expect(user.getText()).toContain('{"name":"guest","last":""}');
+ expect(lastNameValid.getText()).toContain('true');
+ expect(formValid.getText()).toContain('true');
+ });
+
+ it('should be invalid if less than required min length', function() {
+ userLastInput.clear();
+ userLastInput.sendKeys('xx');
+
+ expect(user.getText()).toContain('{"name":"guest"}');
+ expect(lastNameValid.getText()).toContain('false');
+ expect(lastNameError.getText()).toContain('minlength');
+ expect(formValid.getText()).toContain('false');
+ });
+
+ it('should be invalid if longer than max length', function() {
+ userLastInput.clear();
+ userLastInput.sendKeys('some ridiculously long name');
+
+ expect(user.getText()).toContain('{"name":"guest"}');
+ expect(lastNameValid.getText()).toContain('false');
+ expect(lastNameError.getText()).toContain('maxlength');
+ expect(formValid.getText()).toContain('false');
+ });
+ </file>
+ </example>
+ */
+var inputDirective = ['$browser', '$sniffer', '$filter', '$parse',
+ function($browser, $sniffer, $filter, $parse) {
+ return {
+ restrict: 'E',
+ require: ['?ngModel'],
+ link: {
+ pre: function(scope, element, attr, ctrls) {
+ if (ctrls[0]) {
+ (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrls[0], $sniffer,
+ $browser, $filter, $parse);
+ }
+ }
+ }
+ };
+}];
+
+
+
+var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/;
+/**
+ * @ngdoc directive
+ * @name ngValue
+ *
+ * @description
+ * Binds the given expression to the value of `<option>` or {@link input[radio] `input[radio]`},
+ * so that when the element is selected, the {@link ngModel `ngModel`} of that element is set to
+ * the bound value.
+ *
+ * `ngValue` is useful when dynamically generating lists of radio buttons using
+ * {@link ngRepeat `ngRepeat`}, as shown below.
+ *
+ * Likewise, `ngValue` can be used to generate `<option>` elements for
+ * the {@link select `select`} element. In that case however, only strings are supported
+ * for the `value `attribute, so the resulting `ngModel` will always be a string.
+ * Support for `select` models with non-string values is available via `ngOptions`.
+ *
+ * @element input
+ * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute
+ * of the `input` element
+ *
+ * @example
+ <example name="ngValue-directive" module="valueExample">
+ <file name="index.html">
+ <script>
+ angular.module('valueExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.names = ['pizza', 'unicorns', 'robots'];
+ $scope.my = { favorite: 'unicorns' };
+ }]);
+ </script>
+ <form ng-controller="ExampleController">
+ <h2>Which is your favorite?</h2>
+ <label ng-repeat="name in names" for="{{name}}">
+ {{name}}
+ <input type="radio"
+ ng-model="my.favorite"
+ ng-value="name"
+ id="{{name}}"
+ name="favorite">
+ </label>
+ <div>You chose {{my.favorite}}</div>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ var favorite = element(by.binding('my.favorite'));
+
+ it('should initialize to model', function() {
+ expect(favorite.getText()).toContain('unicorns');
+ });
+ it('should bind the values to the inputs', function() {
+ element.all(by.model('my.favorite')).get(0).click();
+ expect(favorite.getText()).toContain('pizza');
+ });
+ </file>
+ </example>
+ */
+var ngValueDirective = function() {
+ return {
+ restrict: 'A',
+ priority: 100,
+ compile: function(tpl, tplAttr) {
+ if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {
+ return function ngValueConstantLink(scope, elm, attr) {
+ attr.$set('value', scope.$eval(attr.ngValue));
+ };
+ } else {
+ return function ngValueLink(scope, elm, attr) {
+ scope.$watch(attr.ngValue, function valueWatchAction(value) {
+ attr.$set('value', value);
+ });
+ };
+ }
+ }
+ };
+};
+
+/**
+ * @ngdoc directive
+ * @name ngBind
+ * @restrict AC
+ *
+ * @description
+ * The `ngBind` attribute tells Angular to replace the text content of the specified HTML element
+ * with the value of a given expression, and to update the text content when the value of that
+ * expression changes.
+ *
+ * Typically, you don't use `ngBind` directly, but instead you use the double curly markup like
+ * `{{ expression }}` which is similar but less verbose.
+ *
+ * It is preferable to use `ngBind` instead of `{{ expression }}` if a template is momentarily
+ * displayed by the browser in its raw state before Angular compiles it. Since `ngBind` is an
+ * element attribute, it makes the bindings invisible to the user while the page is loading.
+ *
+ * An alternative solution to this problem would be using the
+ * {@link ng.directive:ngCloak ngCloak} directive.
+ *
+ *
+ * @element ANY
+ * @param {expression} ngBind {@link guide/expression Expression} to evaluate.
+ *
+ * @example
+ * Enter a name in the Live Preview text box; the greeting below the text box changes instantly.
+ <example module="bindExample">
+ <file name="index.html">
+ <script>
+ angular.module('bindExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.name = 'Whirled';
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>Enter name: <input type="text" ng-model="name"></label><br>
+ Hello <span ng-bind="name"></span>!
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-bind', function() {
+ var nameInput = element(by.model('name'));
+
+ expect(element(by.binding('name')).getText()).toBe('Whirled');
+ nameInput.clear();
+ nameInput.sendKeys('world');
+ expect(element(by.binding('name')).getText()).toBe('world');
+ });
+ </file>
+ </example>
+ */
+var ngBindDirective = ['$compile', function($compile) {
+ return {
+ restrict: 'AC',
+ compile: function ngBindCompile(templateElement) {
+ $compile.$$addBindingClass(templateElement);
+ return function ngBindLink(scope, element, attr) {
+ $compile.$$addBindingInfo(element, attr.ngBind);
+ element = element[0];
+ scope.$watch(attr.ngBind, function ngBindWatchAction(value) {
+ element.textContent = value === undefined ? '' : value;
+ });
+ };
+ }
+ };
+}];
+
+
+/**
+ * @ngdoc directive
+ * @name ngBindTemplate
+ *
+ * @description
+ * The `ngBindTemplate` directive specifies that the element
+ * text content should be replaced with the interpolation of the template
+ * in the `ngBindTemplate` attribute.
+ * Unlike `ngBind`, the `ngBindTemplate` can contain multiple `{{` `}}`
+ * expressions. This directive is needed since some HTML elements
+ * (such as TITLE and OPTION) cannot contain SPAN elements.
+ *
+ * @element ANY
+ * @param {string} ngBindTemplate template of form
+ * <tt>{{</tt> <tt>expression</tt> <tt>}}</tt> to eval.
+ *
+ * @example
+ * Try it here: enter text in text box and watch the greeting change.
+ <example module="bindExample">
+ <file name="index.html">
+ <script>
+ angular.module('bindExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.salutation = 'Hello';
+ $scope.name = 'World';
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>Salutation: <input type="text" ng-model="salutation"></label><br>
+ <label>Name: <input type="text" ng-model="name"></label><br>
+ <pre ng-bind-template="{{salutation}} {{name}}!"></pre>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-bind', function() {
+ var salutationElem = element(by.binding('salutation'));
+ var salutationInput = element(by.model('salutation'));
+ var nameInput = element(by.model('name'));
+
+ expect(salutationElem.getText()).toBe('Hello World!');
+
+ salutationInput.clear();
+ salutationInput.sendKeys('Greetings');
+ nameInput.clear();
+ nameInput.sendKeys('user');
+
+ expect(salutationElem.getText()).toBe('Greetings user!');
+ });
+ </file>
+ </example>
+ */
+var ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate, $compile) {
+ return {
+ compile: function ngBindTemplateCompile(templateElement) {
+ $compile.$$addBindingClass(templateElement);
+ return function ngBindTemplateLink(scope, element, attr) {
+ var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate));
+ $compile.$$addBindingInfo(element, interpolateFn.expressions);
+ element = element[0];
+ attr.$observe('ngBindTemplate', function(value) {
+ element.textContent = value === undefined ? '' : value;
+ });
+ };
+ }
+ };
+}];
+
+
+/**
+ * @ngdoc directive
+ * @name ngBindHtml
+ *
+ * @description
+ * Evaluates the expression and inserts the resulting HTML into the element in a secure way. By default,
+ * the resulting HTML content will be sanitized using the {@link ngSanitize.$sanitize $sanitize} service.
+ * To utilize this functionality, ensure that `$sanitize` is available, for example, by including {@link
+ * ngSanitize} in your module's dependencies (not in core Angular). In order to use {@link ngSanitize}
+ * in your module's dependencies, you need to include "angular-sanitize.js" in your application.
+ *
+ * You may also bypass sanitization for values you know are safe. To do so, bind to
+ * an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}. See the example
+ * under {@link ng.$sce#show-me-an-example-using-sce- Strict Contextual Escaping (SCE)}.
+ *
+ * Note: If a `$sanitize` service is unavailable and the bound value isn't explicitly trusted, you
+ * will have an exception (instead of an exploit.)
+ *
+ * @element ANY
+ * @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.
+ *
+ * @example
+
+ <example module="bindHtmlExample" deps="angular-sanitize.js">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <p ng-bind-html="myHTML"></p>
+ </div>
+ </file>
+
+ <file name="script.js">
+ angular.module('bindHtmlExample', ['ngSanitize'])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.myHTML =
+ 'I am an <code>HTML</code>string with ' +
+ '<a href="#">links!</a> and other <em>stuff</em>';
+ }]);
+ </file>
+
+ <file name="protractor.js" type="protractor">
+ it('should check ng-bind-html', function() {
+ expect(element(by.binding('myHTML')).getText()).toBe(
+ 'I am an HTMLstring with links! and other stuff');
+ });
+ </file>
+ </example>
+ */
+var ngBindHtmlDirective = ['$sce', '$parse', '$compile', function($sce, $parse, $compile) {
+ return {
+ restrict: 'A',
+ compile: function ngBindHtmlCompile(tElement, tAttrs) {
+ var ngBindHtmlGetter = $parse(tAttrs.ngBindHtml);
+ var ngBindHtmlWatch = $parse(tAttrs.ngBindHtml, function getStringValue(value) {
+ return (value || '').toString();
+ });
+ $compile.$$addBindingClass(tElement);
+
+ return function ngBindHtmlLink(scope, element, attr) {
+ $compile.$$addBindingInfo(element, attr.ngBindHtml);
+
+ scope.$watch(ngBindHtmlWatch, function ngBindHtmlWatchAction() {
+ // we re-evaluate the expr because we want a TrustedValueHolderType
+ // for $sce, not a string
+ element.html($sce.getTrustedHtml(ngBindHtmlGetter(scope)) || '');
+ });
+ };
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngChange
+ *
+ * @description
+ * Evaluate the given expression when the user changes the input.
+ * The expression is evaluated immediately, unlike the JavaScript onchange event
+ * which only triggers at the end of a change (usually, when the user leaves the
+ * form element or presses the return key).
+ *
+ * The `ngChange` expression is only evaluated when a change in the input value causes
+ * a new value to be committed to the model.
+ *
+ * It will not be evaluated:
+ * * if the value returned from the `$parsers` transformation pipeline has not changed
+ * * if the input has continued to be invalid since the model will stay `null`
+ * * if the model is changed programmatically and not by a change to the input value
+ *
+ *
+ * Note, this directive requires `ngModel` to be present.
+ *
+ * @element input
+ * @param {expression} ngChange {@link guide/expression Expression} to evaluate upon change
+ * in input value.
+ *
+ * @example
+ * <example name="ngChange-directive" module="changeExample">
+ * <file name="index.html">
+ * <script>
+ * angular.module('changeExample', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.counter = 0;
+ * $scope.change = function() {
+ * $scope.counter++;
+ * };
+ * }]);
+ * </script>
+ * <div ng-controller="ExampleController">
+ * <input type="checkbox" ng-model="confirmed" ng-change="change()" id="ng-change-example1" />
+ * <input type="checkbox" ng-model="confirmed" id="ng-change-example2" />
+ * <label for="ng-change-example2">Confirmed</label><br />
+ * <tt>debug = {{confirmed}}</tt><br/>
+ * <tt>counter = {{counter}}</tt><br/>
+ * </div>
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * var counter = element(by.binding('counter'));
+ * var debug = element(by.binding('confirmed'));
+ *
+ * it('should evaluate the expression if changing from view', function() {
+ * expect(counter.getText()).toContain('0');
+ *
+ * element(by.id('ng-change-example1')).click();
+ *
+ * expect(counter.getText()).toContain('1');
+ * expect(debug.getText()).toContain('true');
+ * });
+ *
+ * it('should not evaluate the expression if changing from model', function() {
+ * element(by.id('ng-change-example2')).click();
+
+ * expect(counter.getText()).toContain('0');
+ * expect(debug.getText()).toContain('true');
+ * });
+ * </file>
+ * </example>
+ */
+var ngChangeDirective = valueFn({
+ restrict: 'A',
+ require: 'ngModel',
+ link: function(scope, element, attr, ctrl) {
+ ctrl.$viewChangeListeners.push(function() {
+ scope.$eval(attr.ngChange);
+ });
+ }
+});
+
+function classDirective(name, selector) {
+ name = 'ngClass' + name;
+ return ['$animate', function($animate) {
+ return {
+ restrict: 'AC',
+ link: function(scope, element, attr) {
+ var oldVal;
+
+ scope.$watch(attr[name], ngClassWatchAction, true);
+
+ attr.$observe('class', function(value) {
+ ngClassWatchAction(scope.$eval(attr[name]));
+ });
+
+
+ if (name !== 'ngClass') {
+ scope.$watch('$index', function($index, old$index) {
+ // jshint bitwise: false
+ var mod = $index & 1;
+ if (mod !== (old$index & 1)) {
+ var classes = arrayClasses(scope.$eval(attr[name]));
+ mod === selector ?
+ addClasses(classes) :
+ removeClasses(classes);
+ }
+ });
+ }
+
+ function addClasses(classes) {
+ var newClasses = digestClassCounts(classes, 1);
+ attr.$addClass(newClasses);
+ }
+
+ function removeClasses(classes) {
+ var newClasses = digestClassCounts(classes, -1);
+ attr.$removeClass(newClasses);
+ }
+
+ function digestClassCounts(classes, count) {
+ // Use createMap() to prevent class assumptions involving property
+ // names in Object.prototype
+ var classCounts = element.data('$classCounts') || createMap();
+ var classesToUpdate = [];
+ forEach(classes, function(className) {
+ if (count > 0 || classCounts[className]) {
+ classCounts[className] = (classCounts[className] || 0) + count;
+ if (classCounts[className] === +(count > 0)) {
+ classesToUpdate.push(className);
+ }
+ }
+ });
+ element.data('$classCounts', classCounts);
+ return classesToUpdate.join(' ');
+ }
+
+ function updateClasses(oldClasses, newClasses) {
+ var toAdd = arrayDifference(newClasses, oldClasses);
+ var toRemove = arrayDifference(oldClasses, newClasses);
+ toAdd = digestClassCounts(toAdd, 1);
+ toRemove = digestClassCounts(toRemove, -1);
+ if (toAdd && toAdd.length) {
+ $animate.addClass(element, toAdd);
+ }
+ if (toRemove && toRemove.length) {
+ $animate.removeClass(element, toRemove);
+ }
+ }
+
+ function ngClassWatchAction(newVal) {
+ if (selector === true || scope.$index % 2 === selector) {
+ var newClasses = arrayClasses(newVal || []);
+ if (!oldVal) {
+ addClasses(newClasses);
+ } else if (!equals(newVal,oldVal)) {
+ var oldClasses = arrayClasses(oldVal);
+ updateClasses(oldClasses, newClasses);
+ }
+ }
+ oldVal = shallowCopy(newVal);
+ }
+ }
+ };
+
+ function arrayDifference(tokens1, tokens2) {
+ var values = [];
+
+ outer:
+ for (var i = 0; i < tokens1.length; i++) {
+ var token = tokens1[i];
+ for (var j = 0; j < tokens2.length; j++) {
+ if (token == tokens2[j]) continue outer;
+ }
+ values.push(token);
+ }
+ return values;
+ }
+
+ function arrayClasses(classVal) {
+ var classes = [];
+ if (isArray(classVal)) {
+ forEach(classVal, function(v) {
+ classes = classes.concat(arrayClasses(v));
+ });
+ return classes;
+ } else if (isString(classVal)) {
+ return classVal.split(' ');
+ } else if (isObject(classVal)) {
+ forEach(classVal, function(v, k) {
+ if (v) {
+ classes = classes.concat(k.split(' '));
+ }
+ });
+ return classes;
+ }
+ return classVal;
+ }
+ }];
+}
+
+/**
+ * @ngdoc directive
+ * @name ngClass
+ * @restrict AC
+ *
+ * @description
+ * The `ngClass` directive allows you to dynamically set CSS classes on an HTML element by databinding
+ * an expression that represents all classes to be added.
+ *
+ * The directive operates in three different ways, depending on which of three types the expression
+ * evaluates to:
+ *
+ * 1. If the expression evaluates to a string, the string should be one or more space-delimited class
+ * names.
+ *
+ * 2. If the expression evaluates to an object, then for each key-value pair of the
+ * object with a truthy value the corresponding key is used as a class name.
+ *
+ * 3. If the expression evaluates to an array, each element of the array should either be a string as in
+ * type 1 or an object as in type 2. This means that you can mix strings and objects together in an array
+ * to give you more control over what CSS classes appear. See the code below for an example of this.
+ *
+ *
+ * The directive won't add duplicate classes if a particular class was already set.
+ *
+ * When the expression changes, the previously added classes are removed and only then are the
+ * new classes added.
+ *
+ * @animations
+ * **add** - happens just before the class is applied to the elements
+ *
+ * **remove** - happens just before the class is removed from the element
+ *
+ * @element ANY
+ * @param {expression} ngClass {@link guide/expression Expression} to eval. The result
+ * of the evaluation can be a string representing space delimited class
+ * names, an array, or a map of class names to boolean values. In the case of a map, the
+ * names of the properties whose values are truthy will be added as css classes to the
+ * element.
+ *
+ * @example Example that demonstrates basic bindings via ngClass directive.
+ <example>
+ <file name="index.html">
+ <p ng-class="{strike: deleted, bold: important, 'has-error': error}">Map Syntax Example</p>
+ <label>
+ <input type="checkbox" ng-model="deleted">
+ deleted (apply "strike" class)
+ </label><br>
+ <label>
+ <input type="checkbox" ng-model="important">
+ important (apply "bold" class)
+ </label><br>
+ <label>
+ <input type="checkbox" ng-model="error">
+ error (apply "has-error" class)
+ </label>
+ <hr>
+ <p ng-class="style">Using String Syntax</p>
+ <input type="text" ng-model="style"
+ placeholder="Type: bold strike red" aria-label="Type: bold strike red">
+ <hr>
+ <p ng-class="[style1, style2, style3]">Using Array Syntax</p>
+ <input ng-model="style1"
+ placeholder="Type: bold, strike or red" aria-label="Type: bold, strike or red"><br>
+ <input ng-model="style2"
+ placeholder="Type: bold, strike or red" aria-label="Type: bold, strike or red 2"><br>
+ <input ng-model="style3"
+ placeholder="Type: bold, strike or red" aria-label="Type: bold, strike or red 3"><br>
+ <hr>
+ <p ng-class="[style4, {orange: warning}]">Using Array and Map Syntax</p>
+ <input ng-model="style4" placeholder="Type: bold, strike" aria-label="Type: bold, strike"><br>
+ <label><input type="checkbox" ng-model="warning"> warning (apply "orange" class)</label>
+ </file>
+ <file name="style.css">
+ .strike {
+ text-decoration: line-through;
+ }
+ .bold {
+ font-weight: bold;
+ }
+ .red {
+ color: red;
+ }
+ .has-error {
+ color: red;
+ background-color: yellow;
+ }
+ .orange {
+ color: orange;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var ps = element.all(by.css('p'));
+
+ it('should let you toggle the class', function() {
+
+ expect(ps.first().getAttribute('class')).not.toMatch(/bold/);
+ expect(ps.first().getAttribute('class')).not.toMatch(/has-error/);
+
+ element(by.model('important')).click();
+ expect(ps.first().getAttribute('class')).toMatch(/bold/);
+
+ element(by.model('error')).click();
+ expect(ps.first().getAttribute('class')).toMatch(/has-error/);
+ });
+
+ it('should let you toggle string example', function() {
+ expect(ps.get(1).getAttribute('class')).toBe('');
+ element(by.model('style')).clear();
+ element(by.model('style')).sendKeys('red');
+ expect(ps.get(1).getAttribute('class')).toBe('red');
+ });
+
+ it('array example should have 3 classes', function() {
+ expect(ps.get(2).getAttribute('class')).toBe('');
+ element(by.model('style1')).sendKeys('bold');
+ element(by.model('style2')).sendKeys('strike');
+ element(by.model('style3')).sendKeys('red');
+ expect(ps.get(2).getAttribute('class')).toBe('bold strike red');
+ });
+
+ it('array with map example should have 2 classes', function() {
+ expect(ps.last().getAttribute('class')).toBe('');
+ element(by.model('style4')).sendKeys('bold');
+ element(by.model('warning')).click();
+ expect(ps.last().getAttribute('class')).toBe('bold orange');
+ });
+ </file>
+ </example>
+
+ ## Animations
+
+ The example below demonstrates how to perform animations using ngClass.
+
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <input id="setbtn" type="button" value="set" ng-click="myVar='my-class'">
+ <input id="clearbtn" type="button" value="clear" ng-click="myVar=''">
+ <br>
+ <span class="base-class" ng-class="myVar">Sample Text</span>
+ </file>
+ <file name="style.css">
+ .base-class {
+ -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ }
+
+ .base-class.my-class {
+ color: red;
+ font-size:3em;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-class', function() {
+ expect(element(by.css('.base-class')).getAttribute('class')).not.
+ toMatch(/my-class/);
+
+ element(by.id('setbtn')).click();
+
+ expect(element(by.css('.base-class')).getAttribute('class')).
+ toMatch(/my-class/);
+
+ element(by.id('clearbtn')).click();
+
+ expect(element(by.css('.base-class')).getAttribute('class')).not.
+ toMatch(/my-class/);
+ });
+ </file>
+ </example>
+
+
+ ## ngClass and pre-existing CSS3 Transitions/Animations
+ The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.
+ Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder
+ any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure
+ to view the step by step details of {@link $animate#addClass $animate.addClass} and
+ {@link $animate#removeClass $animate.removeClass}.
+ */
+var ngClassDirective = classDirective('', true);
+
+/**
+ * @ngdoc directive
+ * @name ngClassOdd
+ * @restrict AC
+ *
+ * @description
+ * The `ngClassOdd` and `ngClassEven` directives work exactly as
+ * {@link ng.directive:ngClass ngClass}, except they work in
+ * conjunction with `ngRepeat` and take effect only on odd (even) rows.
+ *
+ * This directive can be applied only within the scope of an
+ * {@link ng.directive:ngRepeat ngRepeat}.
+ *
+ * @element ANY
+ * @param {expression} ngClassOdd {@link guide/expression Expression} to eval. The result
+ * of the evaluation can be a string representing space delimited class names or an array.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
+ <li ng-repeat="name in names">
+ <span ng-class-odd="'odd'" ng-class-even="'even'">
+ {{name}}
+ </span>
+ </li>
+ </ol>
+ </file>
+ <file name="style.css">
+ .odd {
+ color: red;
+ }
+ .even {
+ color: blue;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-class-odd and ng-class-even', function() {
+ expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
+ toMatch(/odd/);
+ expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
+ toMatch(/even/);
+ });
+ </file>
+ </example>
+ */
+var ngClassOddDirective = classDirective('Odd', 0);
+
+/**
+ * @ngdoc directive
+ * @name ngClassEven
+ * @restrict AC
+ *
+ * @description
+ * The `ngClassOdd` and `ngClassEven` directives work exactly as
+ * {@link ng.directive:ngClass ngClass}, except they work in
+ * conjunction with `ngRepeat` and take effect only on odd (even) rows.
+ *
+ * This directive can be applied only within the scope of an
+ * {@link ng.directive:ngRepeat ngRepeat}.
+ *
+ * @element ANY
+ * @param {expression} ngClassEven {@link guide/expression Expression} to eval. The
+ * result of the evaluation can be a string representing space delimited class names or an array.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
+ <li ng-repeat="name in names">
+ <span ng-class-odd="'odd'" ng-class-even="'even'">
+ {{name}}
+ </span>
+ </li>
+ </ol>
+ </file>
+ <file name="style.css">
+ .odd {
+ color: red;
+ }
+ .even {
+ color: blue;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-class-odd and ng-class-even', function() {
+ expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
+ toMatch(/odd/);
+ expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
+ toMatch(/even/);
+ });
+ </file>
+ </example>
+ */
+var ngClassEvenDirective = classDirective('Even', 1);
+
+/**
+ * @ngdoc directive
+ * @name ngCloak
+ * @restrict AC
+ *
+ * @description
+ * The `ngCloak` directive is used to prevent the Angular html template from being briefly
+ * displayed by the browser in its raw (uncompiled) form while your application is loading. Use this
+ * directive to avoid the undesirable flicker effect caused by the html template display.
+ *
+ * The directive can be applied to the `<body>` element, but the preferred usage is to apply
+ * multiple `ngCloak` directives to small portions of the page to permit progressive rendering
+ * of the browser view.
+ *
+ * `ngCloak` works in cooperation with the following css rule embedded within `angular.js` and
+ * `angular.min.js`.
+ * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
+ *
+ * ```css
+ * [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
+ * display: none !important;
+ * }
+ * ```
+ *
+ * When this css rule is loaded by the browser, all html elements (including their children) that
+ * are tagged with the `ngCloak` directive are hidden. When Angular encounters this directive
+ * during the compilation of the template it deletes the `ngCloak` element attribute, making
+ * the compiled element visible.
+ *
+ * For the best result, the `angular.js` script must be loaded in the head section of the html
+ * document; alternatively, the css rule above must be included in the external stylesheet of the
+ * application.
+ *
+ * @element ANY
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <div id="template1" ng-cloak>{{ 'hello' }}</div>
+ <div id="template2" class="ng-cloak">{{ 'world' }}</div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should remove the template directive and css class', function() {
+ expect($('#template1').getAttribute('ng-cloak')).
+ toBeNull();
+ expect($('#template2').getAttribute('ng-cloak')).
+ toBeNull();
+ });
+ </file>
+ </example>
+ *
+ */
+var ngCloakDirective = ngDirective({
+ compile: function(element, attr) {
+ attr.$set('ngCloak', undefined);
+ element.removeClass('ng-cloak');
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name ngController
+ *
+ * @description
+ * The `ngController` directive attaches a controller class to the view. This is a key aspect of how angular
+ * supports the principles behind the Model-View-Controller design pattern.
+ *
+ * MVC components in angular:
+ *
+ * * Model — Models are the properties of a scope; scopes are attached to the DOM where scope properties
+ * are accessed through bindings.
+ * * View — The template (HTML with data bindings) that is rendered into the View.
+ * * Controller — The `ngController` directive specifies a Controller class; the class contains business
+ * logic behind the application to decorate the scope with functions and values
+ *
+ * Note that you can also attach controllers to the DOM by declaring it in a route definition
+ * via the {@link ngRoute.$route $route} service. A common mistake is to declare the controller
+ * again using `ng-controller` in the template itself. This will cause the controller to be attached
+ * and executed twice.
+ *
+ * @element ANY
+ * @scope
+ * @priority 500
+ * @param {expression} ngController Name of a constructor function registered with the current
+ * {@link ng.$controllerProvider $controllerProvider} or an {@link guide/expression expression}
+ * that on the current scope evaluates to a constructor function.
+ *
+ * The controller instance can be published into a scope property by specifying
+ * `ng-controller="as propertyName"`.
+ *
+ * If the current `$controllerProvider` is configured to use globals (via
+ * {@link ng.$controllerProvider#allowGlobals `$controllerProvider.allowGlobals()` }), this may
+ * also be the name of a globally accessible constructor function (not recommended).
+ *
+ * @example
+ * Here is a simple form for editing user contact information. Adding, removing, clearing, and
+ * greeting are methods declared on the controller (see source tab). These methods can
+ * easily be called from the angular markup. Any changes to the data are automatically reflected
+ * in the View without the need for a manual update.
+ *
+ * Two different declaration styles are included below:
+ *
+ * * one binds methods and properties directly onto the controller using `this`:
+ * `ng-controller="SettingsController1 as settings"`
+ * * one injects `$scope` into the controller:
+ * `ng-controller="SettingsController2"`
+ *
+ * The second option is more common in the Angular community, and is generally used in boilerplates
+ * and in this guide. However, there are advantages to binding properties directly to the controller
+ * and avoiding scope.
+ *
+ * * Using `controller as` makes it obvious which controller you are accessing in the template when
+ * multiple controllers apply to an element.
+ * * If you are writing your controllers as classes you have easier access to the properties and
+ * methods, which will appear on the scope, from inside the controller code.
+ * * Since there is always a `.` in the bindings, you don't have to worry about prototypal
+ * inheritance masking primitives.
+ *
+ * This example demonstrates the `controller as` syntax.
+ *
+ * <example name="ngControllerAs" module="controllerAsExample">
+ * <file name="index.html">
+ * <div id="ctrl-as-exmpl" ng-controller="SettingsController1 as settings">
+ * <label>Name: <input type="text" ng-model="settings.name"/></label>
+ * <button ng-click="settings.greet()">greet</button><br/>
+ * Contact:
+ * <ul>
+ * <li ng-repeat="contact in settings.contacts">
+ * <select ng-model="contact.type" aria-label="Contact method" id="select_{{$index}}">
+ * <option>phone</option>
+ * <option>email</option>
+ * </select>
+ * <input type="text" ng-model="contact.value" aria-labelledby="select_{{$index}}" />
+ * <button ng-click="settings.clearContact(contact)">clear</button>
+ * <button ng-click="settings.removeContact(contact)" aria-label="Remove">X</button>
+ * </li>
+ * <li><button ng-click="settings.addContact()">add</button></li>
+ * </ul>
+ * </div>
+ * </file>
+ * <file name="app.js">
+ * angular.module('controllerAsExample', [])
+ * .controller('SettingsController1', SettingsController1);
+ *
+ * function SettingsController1() {
+ * this.name = "John Smith";
+ * this.contacts = [
+ * {type: 'phone', value: '408 555 1212'},
+ * {type: 'email', value: 'john.smith@example.org'} ];
+ * }
+ *
+ * SettingsController1.prototype.greet = function() {
+ * alert(this.name);
+ * };
+ *
+ * SettingsController1.prototype.addContact = function() {
+ * this.contacts.push({type: 'email', value: 'yourname@example.org'});
+ * };
+ *
+ * SettingsController1.prototype.removeContact = function(contactToRemove) {
+ * var index = this.contacts.indexOf(contactToRemove);
+ * this.contacts.splice(index, 1);
+ * };
+ *
+ * SettingsController1.prototype.clearContact = function(contact) {
+ * contact.type = 'phone';
+ * contact.value = '';
+ * };
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * it('should check controller as', function() {
+ * var container = element(by.id('ctrl-as-exmpl'));
+ * expect(container.element(by.model('settings.name'))
+ * .getAttribute('value')).toBe('John Smith');
+ *
+ * var firstRepeat =
+ * container.element(by.repeater('contact in settings.contacts').row(0));
+ * var secondRepeat =
+ * container.element(by.repeater('contact in settings.contacts').row(1));
+ *
+ * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('408 555 1212');
+ *
+ * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('john.smith@example.org');
+ *
+ * firstRepeat.element(by.buttonText('clear')).click();
+ *
+ * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('');
+ *
+ * container.element(by.buttonText('add')).click();
+ *
+ * expect(container.element(by.repeater('contact in settings.contacts').row(2))
+ * .element(by.model('contact.value'))
+ * .getAttribute('value'))
+ * .toBe('yourname@example.org');
+ * });
+ * </file>
+ * </example>
+ *
+ * This example demonstrates the "attach to `$scope`" style of controller.
+ *
+ * <example name="ngController" module="controllerExample">
+ * <file name="index.html">
+ * <div id="ctrl-exmpl" ng-controller="SettingsController2">
+ * <label>Name: <input type="text" ng-model="name"/></label>
+ * <button ng-click="greet()">greet</button><br/>
+ * Contact:
+ * <ul>
+ * <li ng-repeat="contact in contacts">
+ * <select ng-model="contact.type" id="select_{{$index}}">
+ * <option>phone</option>
+ * <option>email</option>
+ * </select>
+ * <input type="text" ng-model="contact.value" aria-labelledby="select_{{$index}}" />
+ * <button ng-click="clearContact(contact)">clear</button>
+ * <button ng-click="removeContact(contact)">X</button>
+ * </li>
+ * <li>[ <button ng-click="addContact()">add</button> ]</li>
+ * </ul>
+ * </div>
+ * </file>
+ * <file name="app.js">
+ * angular.module('controllerExample', [])
+ * .controller('SettingsController2', ['$scope', SettingsController2]);
+ *
+ * function SettingsController2($scope) {
+ * $scope.name = "John Smith";
+ * $scope.contacts = [
+ * {type:'phone', value:'408 555 1212'},
+ * {type:'email', value:'john.smith@example.org'} ];
+ *
+ * $scope.greet = function() {
+ * alert($scope.name);
+ * };
+ *
+ * $scope.addContact = function() {
+ * $scope.contacts.push({type:'email', value:'yourname@example.org'});
+ * };
+ *
+ * $scope.removeContact = function(contactToRemove) {
+ * var index = $scope.contacts.indexOf(contactToRemove);
+ * $scope.contacts.splice(index, 1);
+ * };
+ *
+ * $scope.clearContact = function(contact) {
+ * contact.type = 'phone';
+ * contact.value = '';
+ * };
+ * }
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * it('should check controller', function() {
+ * var container = element(by.id('ctrl-exmpl'));
+ *
+ * expect(container.element(by.model('name'))
+ * .getAttribute('value')).toBe('John Smith');
+ *
+ * var firstRepeat =
+ * container.element(by.repeater('contact in contacts').row(0));
+ * var secondRepeat =
+ * container.element(by.repeater('contact in contacts').row(1));
+ *
+ * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('408 555 1212');
+ * expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('john.smith@example.org');
+ *
+ * firstRepeat.element(by.buttonText('clear')).click();
+ *
+ * expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
+ * .toBe('');
+ *
+ * container.element(by.buttonText('add')).click();
+ *
+ * expect(container.element(by.repeater('contact in contacts').row(2))
+ * .element(by.model('contact.value'))
+ * .getAttribute('value'))
+ * .toBe('yourname@example.org');
+ * });
+ * </file>
+ *</example>
+
+ */
+var ngControllerDirective = [function() {
+ return {
+ restrict: 'A',
+ scope: true,
+ controller: '@',
+ priority: 500
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngCsp
+ *
+ * @element html
+ * @description
+ *
+ * Angular has some features that can break certain
+ * [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) rules.
+ *
+ * If you intend to implement these rules then you must tell Angular not to use these features.
+ *
+ * This is necessary when developing things like Google Chrome Extensions or Universal Windows Apps.
+ *
+ *
+ * The following rules affect Angular:
+ *
+ * * `unsafe-eval`: this rule forbids apps to use `eval` or `Function(string)` generated functions
+ * (among other things). Angular makes use of this in the {@link $parse} service to provide a 30%
+ * increase in the speed of evaluating Angular expressions.
+ *
+ * * `unsafe-inline`: this rule forbids apps from inject custom styles into the document. Angular
+ * makes use of this to include some CSS rules (e.g. {@link ngCloak} and {@link ngHide}).
+ * To make these directives work when a CSP rule is blocking inline styles, you must link to the
+ * `angular-csp.css` in your HTML manually.
+ *
+ * If you do not provide `ngCsp` then Angular tries to autodetect if CSP is blocking unsafe-eval
+ * and automatically deactivates this feature in the {@link $parse} service. This autodetection,
+ * however, triggers a CSP error to be logged in the console:
+ *
+ * ```
+ * Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of
+ * script in the following Content Security Policy directive: "default-src 'self'". Note that
+ * 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
+ * ```
+ *
+ * This error is harmless but annoying. To prevent the error from showing up, put the `ngCsp`
+ * directive on an element of the HTML document that appears before the `<script>` tag that loads
+ * the `angular.js` file.
+ *
+ * *Note: This directive is only available in the `ng-csp` and `data-ng-csp` attribute form.*
+ *
+ * You can specify which of the CSP related Angular features should be deactivated by providing
+ * a value for the `ng-csp` attribute. The options are as follows:
+ *
+ * * no-inline-style: this stops Angular from injecting CSS styles into the DOM
+ *
+ * * no-unsafe-eval: this stops Angular from optimising $parse with unsafe eval of strings
+ *
+ * You can use these values in the following combinations:
+ *
+ *
+ * * No declaration means that Angular will assume that you can do inline styles, but it will do
+ * a runtime check for unsafe-eval. E.g. `<body>`. This is backwardly compatible with previous versions
+ * of Angular.
+ *
+ * * A simple `ng-csp` (or `data-ng-csp`) attribute will tell Angular to deactivate both inline
+ * styles and unsafe eval. E.g. `<body ng-csp>`. This is backwardly compatible with previous versions
+ * of Angular.
+ *
+ * * Specifying only `no-unsafe-eval` tells Angular that we must not use eval, but that we can inject
+ * inline styles. E.g. `<body ng-csp="no-unsafe-eval">`.
+ *
+ * * Specifying only `no-inline-style` tells Angular that we must not inject styles, but that we can
+ * run eval - no automcatic check for unsafe eval will occur. E.g. `<body ng-csp="no-inline-style">`
+ *
+ * * Specifying both `no-unsafe-eval` and `no-inline-style` tells Angular that we must not inject
+ * styles nor use eval, which is the same as an empty: ng-csp.
+ * E.g.`<body ng-csp="no-inline-style;no-unsafe-eval">`
+ *
+ * @example
+ * This example shows how to apply the `ngCsp` directive to the `html` tag.
+ ```html
+ <!doctype html>
+ <html ng-app ng-csp>
+ ...
+ ...
+ </html>
+ ```
+ * @example
+ // Note: the suffix `.csp` in the example name triggers
+ // csp mode in our http server!
+ <example name="example.csp" module="cspExample" ng-csp="true">
+ <file name="index.html">
+ <div ng-controller="MainController as ctrl">
+ <div>
+ <button ng-click="ctrl.inc()" id="inc">Increment</button>
+ <span id="counter">
+ {{ctrl.counter}}
+ </span>
+ </div>
+
+ <div>
+ <button ng-click="ctrl.evil()" id="evil">Evil</button>
+ <span id="evilError">
+ {{ctrl.evilError}}
+ </span>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('cspExample', [])
+ .controller('MainController', function() {
+ this.counter = 0;
+ this.inc = function() {
+ this.counter++;
+ };
+ this.evil = function() {
+ // jshint evil:true
+ try {
+ eval('1+2');
+ } catch (e) {
+ this.evilError = e.message;
+ }
+ };
+ });
+ </file>
+ <file name="protractor.js" type="protractor">
+ var util, webdriver;
+
+ var incBtn = element(by.id('inc'));
+ var counter = element(by.id('counter'));
+ var evilBtn = element(by.id('evil'));
+ var evilError = element(by.id('evilError'));
+
+ function getAndClearSevereErrors() {
+ return browser.manage().logs().get('browser').then(function(browserLog) {
+ return browserLog.filter(function(logEntry) {
+ return logEntry.level.value > webdriver.logging.Level.WARNING.value;
+ });
+ });
+ }
+
+ function clearErrors() {
+ getAndClearSevereErrors();
+ }
+
+ function expectNoErrors() {
+ getAndClearSevereErrors().then(function(filteredLog) {
+ expect(filteredLog.length).toEqual(0);
+ if (filteredLog.length) {
+ console.log('browser console errors: ' + util.inspect(filteredLog));
+ }
+ });
+ }
+
+ function expectError(regex) {
+ getAndClearSevereErrors().then(function(filteredLog) {
+ var found = false;
+ filteredLog.forEach(function(log) {
+ if (log.message.match(regex)) {
+ found = true;
+ }
+ });
+ if (!found) {
+ throw new Error('expected an error that matches ' + regex);
+ }
+ });
+ }
+
+ beforeEach(function() {
+ util = require('util');
+ webdriver = require('protractor/node_modules/selenium-webdriver');
+ });
+
+ // For now, we only test on Chrome,
+ // as Safari does not load the page with Protractor's injected scripts,
+ // and Firefox webdriver always disables content security policy (#6358)
+ if (browser.params.browser !== 'chrome') {
+ return;
+ }
+
+ it('should not report errors when the page is loaded', function() {
+ // clear errors so we are not dependent on previous tests
+ clearErrors();
+ // Need to reload the page as the page is already loaded when
+ // we come here
+ browser.driver.getCurrentUrl().then(function(url) {
+ browser.get(url);
+ });
+ expectNoErrors();
+ });
+
+ it('should evaluate expressions', function() {
+ expect(counter.getText()).toEqual('0');
+ incBtn.click();
+ expect(counter.getText()).toEqual('1');
+ expectNoErrors();
+ });
+
+ it('should throw and report an error when using "eval"', function() {
+ evilBtn.click();
+ expect(evilError.getText()).toMatch(/Content Security Policy/);
+ expectError(/Content Security Policy/);
+ });
+ </file>
+ </example>
+ */
+
+// ngCsp is not implemented as a proper directive any more, because we need it be processed while we
+// bootstrap the system (before $parse is instantiated), for this reason we just have
+// the csp() fn that looks for the `ng-csp` attribute anywhere in the current doc
+
+/**
+ * @ngdoc directive
+ * @name ngClick
+ *
+ * @description
+ * The ngClick directive allows you to specify custom behavior when
+ * an element is clicked.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon
+ * click. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-click="count = count + 1" ng-init="count=0">
+ Increment
+ </button>
+ <span>
+ count: {{count}}
+ </span>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-click', function() {
+ expect(element(by.binding('count')).getText()).toMatch('0');
+ element(by.css('button')).click();
+ expect(element(by.binding('count')).getText()).toMatch('1');
+ });
+ </file>
+ </example>
+ */
+/*
+ * A collection of directives that allows creation of custom event handlers that are defined as
+ * angular expressions and are compiled and executed within the current scope.
+ */
+var ngEventDirectives = {};
+
+// For events that might fire synchronously during DOM manipulation
+// we need to execute their event handlers asynchronously using $evalAsync,
+// so that they are not executed in an inconsistent state.
+var forceAsyncEvents = {
+ 'blur': true,
+ 'focus': true
+};
+forEach(
+ 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),
+ function(eventName) {
+ var directiveName = directiveNormalize('ng-' + eventName);
+ ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) {
+ return {
+ restrict: 'A',
+ compile: function($element, attr) {
+ // We expose the powerful $event object on the scope that provides access to the Window,
+ // etc. that isn't protected by the fast paths in $parse. We explicitly request better
+ // checks at the cost of speed since event handler expressions are not executed as
+ // frequently as regular change detection.
+ var fn = $parse(attr[directiveName], /* interceptorFn */ null, /* expensiveChecks */ true);
+ return function ngEventHandler(scope, element) {
+ element.on(eventName, function(event) {
+ var callback = function() {
+ fn(scope, {$event:event});
+ };
+ if (forceAsyncEvents[eventName] && $rootScope.$$phase) {
+ scope.$evalAsync(callback);
+ } else {
+ scope.$apply(callback);
+ }
+ });
+ };
+ }
+ };
+ }];
+ }
+);
+
+/**
+ * @ngdoc directive
+ * @name ngDblclick
+ *
+ * @description
+ * The `ngDblclick` directive allows you to specify custom behavior on a dblclick event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon
+ * a dblclick. (The Event object is available as `$event`)
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-dblclick="count = count + 1" ng-init="count=0">
+ Increment (on double click)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMousedown
+ *
+ * @description
+ * The ngMousedown directive allows you to specify custom behavior on mousedown event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon
+ * mousedown. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mousedown="count = count + 1" ng-init="count=0">
+ Increment (on mouse down)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMouseup
+ *
+ * @description
+ * Specify custom behavior on mouseup event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon
+ * mouseup. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mouseup="count = count + 1" ng-init="count=0">
+ Increment (on mouse up)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngMouseover
+ *
+ * @description
+ * Specify custom behavior on mouseover event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon
+ * mouseover. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mouseover="count = count + 1" ng-init="count=0">
+ Increment (when mouse is over)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMouseenter
+ *
+ * @description
+ * Specify custom behavior on mouseenter event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon
+ * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mouseenter="count = count + 1" ng-init="count=0">
+ Increment (when mouse enters)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMouseleave
+ *
+ * @description
+ * Specify custom behavior on mouseleave event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon
+ * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mouseleave="count = count + 1" ng-init="count=0">
+ Increment (when mouse leaves)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngMousemove
+ *
+ * @description
+ * Specify custom behavior on mousemove event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon
+ * mousemove. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <button ng-mousemove="count = count + 1" ng-init="count=0">
+ Increment (when mouse moves)
+ </button>
+ count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngKeydown
+ *
+ * @description
+ * Specify custom behavior on keydown event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon
+ * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-keydown="count = count + 1" ng-init="count=0">
+ key down count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngKeyup
+ *
+ * @description
+ * Specify custom behavior on keyup event.
+ *
+ * @element ANY
+ * @priority 0
+ * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon
+ * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <p>Typing in the input box below updates the key count</p>
+ <input ng-keyup="count = count + 1" ng-init="count=0"> key up count: {{count}}
+
+ <p>Typing in the input box below updates the keycode</p>
+ <input ng-keyup="event=$event">
+ <p>event keyCode: {{ event.keyCode }}</p>
+ <p>event altKey: {{ event.altKey }}</p>
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngKeypress
+ *
+ * @description
+ * Specify custom behavior on keypress event.
+ *
+ * @element ANY
+ * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
+ * keypress. ({@link guide/expression#-event- Event object is available as `$event`}
+ * and can be interrogated for keyCode, altKey, etc.)
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-keypress="count = count + 1" ng-init="count=0">
+ key press count: {{count}}
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc directive
+ * @name ngSubmit
+ *
+ * @description
+ * Enables binding angular expressions to onsubmit events.
+ *
+ * Additionally it prevents the default action (which for form means sending the request to the
+ * server and reloading the current page), but only if the form does not contain `action`,
+ * `data-action`, or `x-action` attributes.
+ *
+ * <div class="alert alert-warning">
+ * **Warning:** Be careful not to cause "double-submission" by using both the `ngClick` and
+ * `ngSubmit` handlers together. See the
+ * {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}
+ * for a detailed discussion of when `ngSubmit` may be triggered.
+ * </div>
+ *
+ * @element form
+ * @priority 0
+ * @param {expression} ngSubmit {@link guide/expression Expression} to eval.
+ * ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example module="submitExample">
+ <file name="index.html">
+ <script>
+ angular.module('submitExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.list = [];
+ $scope.text = 'hello';
+ $scope.submit = function() {
+ if ($scope.text) {
+ $scope.list.push(this.text);
+ $scope.text = '';
+ }
+ };
+ }]);
+ </script>
+ <form ng-submit="submit()" ng-controller="ExampleController">
+ Enter text and hit enter:
+ <input type="text" ng-model="text" name="text" />
+ <input type="submit" id="submit" value="Submit" />
+ <pre>list={{list}}</pre>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-submit', function() {
+ expect(element(by.binding('list')).getText()).toBe('list=[]');
+ element(by.css('#submit')).click();
+ expect(element(by.binding('list')).getText()).toContain('hello');
+ expect(element(by.model('text')).getAttribute('value')).toBe('');
+ });
+ it('should ignore empty strings', function() {
+ expect(element(by.binding('list')).getText()).toBe('list=[]');
+ element(by.css('#submit')).click();
+ element(by.css('#submit')).click();
+ expect(element(by.binding('list')).getText()).toContain('hello');
+ });
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngFocus
+ *
+ * @description
+ * Specify custom behavior on focus event.
+ *
+ * Note: As the `focus` event is executed synchronously when calling `input.focus()`
+ * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
+ * during an `$apply` to ensure a consistent state.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon
+ * focus. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ * See {@link ng.directive:ngClick ngClick}
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngBlur
+ *
+ * @description
+ * Specify custom behavior on blur event.
+ *
+ * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when
+ * an element has lost focus.
+ *
+ * Note: As the `blur` event is executed synchronously also during DOM manipulations
+ * (e.g. removing a focussed input),
+ * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
+ * during an `$apply` to ensure a consistent state.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon
+ * blur. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ * See {@link ng.directive:ngClick ngClick}
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngCopy
+ *
+ * @description
+ * Specify custom behavior on copy event.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon
+ * copy. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-copy="copied=true" ng-init="copied=false; value='copy me'" ng-model="value">
+ copied: {{copied}}
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngCut
+ *
+ * @description
+ * Specify custom behavior on cut event.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon
+ * cut. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-cut="cut=true" ng-init="cut=false; value='cut me'" ng-model="value">
+ cut: {{cut}}
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngPaste
+ *
+ * @description
+ * Specify custom behavior on paste event.
+ *
+ * @element window, input, select, textarea, a
+ * @priority 0
+ * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon
+ * paste. ({@link guide/expression#-event- Event object is available as `$event`})
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
+ pasted: {{paste}}
+ </file>
+ </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngIf
+ * @restrict A
+ * @multiElement
+ *
+ * @description
+ * The `ngIf` directive removes or recreates a portion of the DOM tree based on an
+ * {expression}. If the expression assigned to `ngIf` evaluates to a false
+ * value then the element is removed from the DOM, otherwise a clone of the
+ * element is reinserted into the DOM.
+ *
+ * `ngIf` differs from `ngShow` and `ngHide` in that `ngIf` completely removes and recreates the
+ * element in the DOM rather than changing its visibility via the `display` css property. A common
+ * case when this difference is significant is when using css selectors that rely on an element's
+ * position within the DOM, such as the `:first-child` or `:last-child` pseudo-classes.
+ *
+ * Note that when an element is removed using `ngIf` its scope is destroyed and a new scope
+ * is created when the element is restored. The scope created within `ngIf` inherits from
+ * its parent scope using
+ * [prototypal inheritance](https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance).
+ * An important implication of this is if `ngModel` is used within `ngIf` to bind to
+ * a javascript primitive defined in the parent scope. In this case any modifications made to the
+ * variable within the child scope will override (hide) the value in the parent scope.
+ *
+ * Also, `ngIf` recreates elements using their compiled state. An example of this behavior
+ * is if an element's class attribute is directly modified after it's compiled, using something like
+ * jQuery's `.addClass()` method, and the element is later removed. When `ngIf` recreates the element
+ * the added class will be lost because the original compiled state is used to regenerate the element.
+ *
+ * Additionally, you can provide animations via the `ngAnimate` module to animate the `enter`
+ * and `leave` effects.
+ *
+ * @animations
+ * enter - happens just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container
+ * leave - happens just before the `ngIf` contents are removed from the DOM
+ *
+ * @element ANY
+ * @scope
+ * @priority 600
+ * @param {expression} ngIf If the {@link guide/expression expression} is falsy then
+ * the element is removed from the DOM tree. If it is truthy a copy of the compiled
+ * element is added to the DOM tree.
+ *
+ * @example
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <label>Click me: <input type="checkbox" ng-model="checked" ng-init="checked=true" /></label><br/>
+ Show when checked:
+ <span ng-if="checked" class="animate-if">
+ This is removed when the checkbox is unchecked.
+ </span>
+ </file>
+ <file name="animations.css">
+ .animate-if {
+ background:white;
+ border:1px solid black;
+ padding:10px;
+ }
+
+ .animate-if.ng-enter, .animate-if.ng-leave {
+ -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ }
+
+ .animate-if.ng-enter,
+ .animate-if.ng-leave.ng-leave-active {
+ opacity:0;
+ }
+
+ .animate-if.ng-leave,
+ .animate-if.ng-enter.ng-enter-active {
+ opacity:1;
+ }
+ </file>
+ </example>
+ */
+var ngIfDirective = ['$animate', function($animate) {
+ return {
+ multiElement: true,
+ transclude: 'element',
+ priority: 600,
+ terminal: true,
+ restrict: 'A',
+ $$tlb: true,
+ link: function($scope, $element, $attr, ctrl, $transclude) {
+ var block, childScope, previousElements;
+ $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {
+
+ if (value) {
+ if (!childScope) {
+ $transclude(function(clone, newScope) {
+ childScope = newScope;
+ clone[clone.length++] = document.createComment(' end ngIf: ' + $attr.ngIf + ' ');
+ // Note: We only need the first/last node of the cloned nodes.
+ // However, we need to keep the reference to the jqlite wrapper as it might be changed later
+ // by a directive with templateUrl when its template arrives.
+ block = {
+ clone: clone
+ };
+ $animate.enter(clone, $element.parent(), $element);
+ });
+ }
+ } else {
+ if (previousElements) {
+ previousElements.remove();
+ previousElements = null;
+ }
+ if (childScope) {
+ childScope.$destroy();
+ childScope = null;
+ }
+ if (block) {
+ previousElements = getBlockNodes(block.clone);
+ $animate.leave(previousElements).then(function() {
+ previousElements = null;
+ });
+ block = null;
+ }
+ }
+ });
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngInclude
+ * @restrict ECA
+ *
+ * @description
+ * Fetches, compiles and includes an external HTML fragment.
+ *
+ * By default, the template URL is restricted to the same domain and protocol as the
+ * application document. This is done by calling {@link $sce#getTrustedResourceUrl
+ * $sce.getTrustedResourceUrl} on it. To load templates from other domains or protocols
+ * you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist them} or
+ * {@link $sce#trustAsResourceUrl wrap them} as trusted values. Refer to Angular's {@link
+ * ng.$sce Strict Contextual Escaping}.
+ *
+ * In addition, the browser's
+ * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)
+ * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)
+ * policy may further restrict whether the template is successfully loaded.
+ * For example, `ngInclude` won't work for cross-domain requests on all browsers and for `file://`
+ * access on some browsers.
+ *
+ * @animations
+ * enter - animation is used to bring new content into the browser.
+ * leave - animation is used to animate existing content away.
+ *
+ * The enter and leave animation occur concurrently.
+ *
+ * @scope
+ * @priority 400
+ *
+ * @param {string} ngInclude|src angular expression evaluating to URL. If the source is a string constant,
+ * make sure you wrap it in **single** quotes, e.g. `src="'myPartialTemplate.html'"`.
+ * @param {string=} onload Expression to evaluate when a new partial is loaded.
+ *
+ * @param {string=} autoscroll Whether `ngInclude` should call {@link ng.$anchorScroll
+ * $anchorScroll} to scroll the viewport after the content is loaded.
+ *
+ * - If the attribute is not set, disable scrolling.
+ * - If the attribute is set without value, enable scrolling.
+ * - Otherwise enable scrolling only if the expression evaluates to truthy value.
+ *
+ * @example
+ <example module="includeExample" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <select ng-model="template" ng-options="t.name for t in templates">
+ <option value="">(blank)</option>
+ </select>
+ url of the template: <code>{{template.url}}</code>
+ <hr/>
+ <div class="slide-animate-container">
+ <div class="slide-animate" ng-include="template.url"></div>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('includeExample', ['ngAnimate'])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.templates =
+ [ { name: 'template1.html', url: 'template1.html'},
+ { name: 'template2.html', url: 'template2.html'} ];
+ $scope.template = $scope.templates[0];
+ }]);
+ </file>
+ <file name="template1.html">
+ Content of template1.html
+ </file>
+ <file name="template2.html">
+ Content of template2.html
+ </file>
+ <file name="animations.css">
+ .slide-animate-container {
+ position:relative;
+ background:white;
+ border:1px solid black;
+ height:40px;
+ overflow:hidden;
+ }
+
+ .slide-animate {
+ padding:10px;
+ }
+
+ .slide-animate.ng-enter, .slide-animate.ng-leave {
+ -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+
+ position:absolute;
+ top:0;
+ left:0;
+ right:0;
+ bottom:0;
+ display:block;
+ padding:10px;
+ }
+
+ .slide-animate.ng-enter {
+ top:-50px;
+ }
+ .slide-animate.ng-enter.ng-enter-active {
+ top:0;
+ }
+
+ .slide-animate.ng-leave {
+ top:0;
+ }
+ .slide-animate.ng-leave.ng-leave-active {
+ top:50px;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var templateSelect = element(by.model('template'));
+ var includeElem = element(by.css('[ng-include]'));
+
+ it('should load template1.html', function() {
+ expect(includeElem.getText()).toMatch(/Content of template1.html/);
+ });
+
+ it('should load template2.html', function() {
+ if (browser.params.browser == 'firefox') {
+ // Firefox can't handle using selects
+ // See https://github.com/angular/protractor/issues/480
+ return;
+ }
+ templateSelect.click();
+ templateSelect.all(by.css('option')).get(2).click();
+ expect(includeElem.getText()).toMatch(/Content of template2.html/);
+ });
+
+ it('should change to blank', function() {
+ if (browser.params.browser == 'firefox') {
+ // Firefox can't handle using selects
+ return;
+ }
+ templateSelect.click();
+ templateSelect.all(by.css('option')).get(0).click();
+ expect(includeElem.isPresent()).toBe(false);
+ });
+ </file>
+ </example>
+ */
+
+
+/**
+ * @ngdoc event
+ * @name ngInclude#$includeContentRequested
+ * @eventType emit on the scope ngInclude was declared in
+ * @description
+ * Emitted every time the ngInclude content is requested.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {String} src URL of content to load.
+ */
+
+
+/**
+ * @ngdoc event
+ * @name ngInclude#$includeContentLoaded
+ * @eventType emit on the current ngInclude scope
+ * @description
+ * Emitted every time the ngInclude content is reloaded.
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {String} src URL of content to load.
+ */
+
+
+/**
+ * @ngdoc event
+ * @name ngInclude#$includeContentError
+ * @eventType emit on the scope ngInclude was declared in
+ * @description
+ * Emitted when a template HTTP request yields an erroneous response (status < 200 || status > 299)
+ *
+ * @param {Object} angularEvent Synthetic event object.
+ * @param {String} src URL of content to load.
+ */
+var ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate',
+ function($templateRequest, $anchorScroll, $animate) {
+ return {
+ restrict: 'ECA',
+ priority: 400,
+ terminal: true,
+ transclude: 'element',
+ controller: angular.noop,
+ compile: function(element, attr) {
+ var srcExp = attr.ngInclude || attr.src,
+ onloadExp = attr.onload || '',
+ autoScrollExp = attr.autoscroll;
+
+ return function(scope, $element, $attr, ctrl, $transclude) {
+ var changeCounter = 0,
+ currentScope,
+ previousElement,
+ currentElement;
+
+ var cleanupLastIncludeContent = function() {
+ if (previousElement) {
+ previousElement.remove();
+ previousElement = null;
+ }
+ if (currentScope) {
+ currentScope.$destroy();
+ currentScope = null;
+ }
+ if (currentElement) {
+ $animate.leave(currentElement).then(function() {
+ previousElement = null;
+ });
+ previousElement = currentElement;
+ currentElement = null;
+ }
+ };
+
+ scope.$watch(srcExp, function ngIncludeWatchAction(src) {
+ var afterAnimation = function() {
+ if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {
+ $anchorScroll();
+ }
+ };
+ var thisChangeId = ++changeCounter;
+
+ if (src) {
+ //set the 2nd param to true to ignore the template request error so that the inner
+ //contents and scope can be cleaned up.
+ $templateRequest(src, true).then(function(response) {
+ if (thisChangeId !== changeCounter) return;
+ var newScope = scope.$new();
+ ctrl.template = response;
+
+ // Note: This will also link all children of ng-include that were contained in the original
+ // html. If that content contains controllers, ... they could pollute/change the scope.
+ // However, using ng-include on an element with additional content does not make sense...
+ // Note: We can't remove them in the cloneAttchFn of $transclude as that
+ // function is called before linking the content, which would apply child
+ // directives to non existing elements.
+ var clone = $transclude(newScope, function(clone) {
+ cleanupLastIncludeContent();
+ $animate.enter(clone, null, $element).then(afterAnimation);
+ });
+
+ currentScope = newScope;
+ currentElement = clone;
+
+ currentScope.$emit('$includeContentLoaded', src);
+ scope.$eval(onloadExp);
+ }, function() {
+ if (thisChangeId === changeCounter) {
+ cleanupLastIncludeContent();
+ scope.$emit('$includeContentError', src);
+ }
+ });
+ scope.$emit('$includeContentRequested', src);
+ } else {
+ cleanupLastIncludeContent();
+ ctrl.template = null;
+ }
+ });
+ };
+ }
+ };
+}];
+
+// This directive is called during the $transclude call of the first `ngInclude` directive.
+// It will replace and compile the content of the element with the loaded template.
+// We need this directive so that the element content is already filled when
+// the link function of another directive on the same element as ngInclude
+// is called.
+var ngIncludeFillContentDirective = ['$compile',
+ function($compile) {
+ return {
+ restrict: 'ECA',
+ priority: -400,
+ require: 'ngInclude',
+ link: function(scope, $element, $attr, ctrl) {
+ if (/SVG/.test($element[0].toString())) {
+ // WebKit: https://bugs.webkit.org/show_bug.cgi?id=135698 --- SVG elements do not
+ // support innerHTML, so detect this here and try to generate the contents
+ // specially.
+ $element.empty();
+ $compile(jqLiteBuildFragment(ctrl.template, document).childNodes)(scope,
+ function namespaceAdaptedClone(clone) {
+ $element.append(clone);
+ }, {futureParentElement: $element});
+ return;
+ }
+
+ $element.html(ctrl.template);
+ $compile($element.contents())(scope);
+ }
+ };
+ }];
+
+/**
+ * @ngdoc directive
+ * @name ngInit
+ * @restrict AC
+ *
+ * @description
+ * The `ngInit` directive allows you to evaluate an expression in the
+ * current scope.
+ *
+ * <div class="alert alert-danger">
+ * The only appropriate use of `ngInit` is for aliasing special properties of
+ * {@link ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below. Besides this case, you
+ * should use {@link guide/controller controllers} rather than `ngInit`
+ * to initialize values on a scope.
+ * </div>
+ * <div class="alert alert-warning">
+ * **Note**: If you have assignment in `ngInit` along with {@link ng.$filter `$filter`}, make
+ * sure you have parenthesis for correct precedence:
+ * <pre class="prettyprint">
+ * `<div ng-init="test1 = (data | orderBy:'name')"></div>`
+ * </pre>
+ * </div>
+ *
+ * @priority 450
+ *
+ * @element ANY
+ * @param {expression} ngInit {@link guide/expression Expression} to eval.
+ *
+ * @example
+ <example module="initExample">
+ <file name="index.html">
+ <script>
+ angular.module('initExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.list = [['a', 'b'], ['c', 'd']];
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <div ng-repeat="innerList in list" ng-init="outerIndex = $index">
+ <div ng-repeat="value in innerList" ng-init="innerIndex = $index">
+ <span class="example-init">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span>
+ </div>
+ </div>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should alias index positions', function() {
+ var elements = element.all(by.css('.example-init'));
+ expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');
+ expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');
+ expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');
+ expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');
+ });
+ </file>
+ </example>
+ */
+var ngInitDirective = ngDirective({
+ priority: 450,
+ compile: function() {
+ return {
+ pre: function(scope, element, attrs) {
+ scope.$eval(attrs.ngInit);
+ }
+ };
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name ngList
+ *
+ * @description
+ * Text input that converts between a delimited string and an array of strings. The default
+ * delimiter is a comma followed by a space - equivalent to `ng-list=", "`. You can specify a custom
+ * delimiter as the value of the `ngList` attribute - for example, `ng-list=" | "`.
+ *
+ * The behaviour of the directive is affected by the use of the `ngTrim` attribute.
+ * * If `ngTrim` is set to `"false"` then whitespace around both the separator and each
+ * list item is respected. This implies that the user of the directive is responsible for
+ * dealing with whitespace but also allows you to use whitespace as a delimiter, such as a
+ * tab or newline character.
+ * * Otherwise whitespace around the delimiter is ignored when splitting (although it is respected
+ * when joining the list items back together) and whitespace around each list item is stripped
+ * before it is added to the model.
+ *
+ * ### Example with Validation
+ *
+ * <example name="ngList-directive" module="listExample">
+ * <file name="app.js">
+ * angular.module('listExample', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.names = ['morpheus', 'neo', 'trinity'];
+ * }]);
+ * </file>
+ * <file name="index.html">
+ * <form name="myForm" ng-controller="ExampleController">
+ * <label>List: <input name="namesInput" ng-model="names" ng-list required></label>
+ * <span role="alert">
+ * <span class="error" ng-show="myForm.namesInput.$error.required">
+ * Required!</span>
+ * </span>
+ * <br>
+ * <tt>names = {{names}}</tt><br/>
+ * <tt>myForm.namesInput.$valid = {{myForm.namesInput.$valid}}</tt><br/>
+ * <tt>myForm.namesInput.$error = {{myForm.namesInput.$error}}</tt><br/>
+ * <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
+ * <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
+ * </form>
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * var listInput = element(by.model('names'));
+ * var names = element(by.exactBinding('names'));
+ * var valid = element(by.binding('myForm.namesInput.$valid'));
+ * var error = element(by.css('span.error'));
+ *
+ * it('should initialize to model', function() {
+ * expect(names.getText()).toContain('["morpheus","neo","trinity"]');
+ * expect(valid.getText()).toContain('true');
+ * expect(error.getCssValue('display')).toBe('none');
+ * });
+ *
+ * it('should be invalid if empty', function() {
+ * listInput.clear();
+ * listInput.sendKeys('');
+ *
+ * expect(names.getText()).toContain('');
+ * expect(valid.getText()).toContain('false');
+ * expect(error.getCssValue('display')).not.toBe('none');
+ * });
+ * </file>
+ * </example>
+ *
+ * ### Example - splitting on whitespace
+ * <example name="ngList-directive-newlines">
+ * <file name="index.html">
+ * <textarea ng-model="list" ng-list=" " ng-trim="false"></textarea>
+ * <pre>{{ list | json }}</pre>
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * it("should split the text by newlines", function() {
+ * var listInput = element(by.model('list'));
+ * var output = element(by.binding('list | json'));
+ * listInput.sendKeys('abc\ndef\nghi');
+ * expect(output.getText()).toContain('[\n "abc",\n "def",\n "ghi"\n]');
+ * });
+ * </file>
+ * </example>
+ *
+ * @element input
+ * @param {string=} ngList optional delimiter that should be used to split the value.
+ */
+var ngListDirective = function() {
+ return {
+ restrict: 'A',
+ priority: 100,
+ require: 'ngModel',
+ link: function(scope, element, attr, ctrl) {
+ // We want to control whitespace trimming so we use this convoluted approach
+ // to access the ngList attribute, which doesn't pre-trim the attribute
+ var ngList = element.attr(attr.$attr.ngList) || ', ';
+ var trimValues = attr.ngTrim !== 'false';
+ var separator = trimValues ? trim(ngList) : ngList;
+
+ var parse = function(viewValue) {
+ // If the viewValue is invalid (say required but empty) it will be `undefined`
+ if (isUndefined(viewValue)) return;
+
+ var list = [];
+
+ if (viewValue) {
+ forEach(viewValue.split(separator), function(value) {
+ if (value) list.push(trimValues ? trim(value) : value);
+ });
+ }
+
+ return list;
+ };
+
+ ctrl.$parsers.push(parse);
+ ctrl.$formatters.push(function(value) {
+ if (isArray(value)) {
+ return value.join(ngList);
+ }
+
+ return undefined;
+ });
+
+ // Override the standard $isEmpty because an empty array means the input is empty.
+ ctrl.$isEmpty = function(value) {
+ return !value || !value.length;
+ };
+ }
+ };
+};
+
+/* global VALID_CLASS: true,
+ INVALID_CLASS: true,
+ PRISTINE_CLASS: true,
+ DIRTY_CLASS: true,
+ UNTOUCHED_CLASS: true,
+ TOUCHED_CLASS: true,
+*/
+
+var VALID_CLASS = 'ng-valid',
+ INVALID_CLASS = 'ng-invalid',
+ PRISTINE_CLASS = 'ng-pristine',
+ DIRTY_CLASS = 'ng-dirty',
+ UNTOUCHED_CLASS = 'ng-untouched',
+ TOUCHED_CLASS = 'ng-touched',
+ PENDING_CLASS = 'ng-pending';
+
+var ngModelMinErr = minErr('ngModel');
+
+/**
+ * @ngdoc type
+ * @name ngModel.NgModelController
+ *
+ * @property {string} $viewValue Actual string value in the view.
+ * @property {*} $modelValue The value in the model that the control is bound to.
+ * @property {Array.<Function>} $parsers Array of functions to execute, as a pipeline, whenever
+ the control reads value from the DOM. The functions are called in array order, each passing
+ its return value through to the next. The last return value is forwarded to the
+ {@link ngModel.NgModelController#$validators `$validators`} collection.
+
+Parsers are used to sanitize / convert the {@link ngModel.NgModelController#$viewValue
+`$viewValue`}.
+
+Returning `undefined` from a parser means a parse error occurred. In that case,
+no {@link ngModel.NgModelController#$validators `$validators`} will run and the `ngModel`
+will be set to `undefined` unless {@link ngModelOptions `ngModelOptions.allowInvalid`}
+is set to `true`. The parse error is stored in `ngModel.$error.parse`.
+
+ *
+ * @property {Array.<Function>} $formatters Array of functions to execute, as a pipeline, whenever
+ the model value changes. The functions are called in reverse array order, each passing the value through to the
+ next. The last return value is used as the actual DOM value.
+ Used to format / convert values for display in the control.
+ * ```js
+ * function formatter(value) {
+ * if (value) {
+ * return value.toUpperCase();
+ * }
+ * }
+ * ngModel.$formatters.push(formatter);
+ * ```
+ *
+ * @property {Object.<string, function>} $validators A collection of validators that are applied
+ * whenever the model value changes. The key value within the object refers to the name of the
+ * validator while the function refers to the validation operation. The validation operation is
+ * provided with the model value as an argument and must return a true or false value depending
+ * on the response of that validation.
+ *
+ * ```js
+ * ngModel.$validators.validCharacters = function(modelValue, viewValue) {
+ * var value = modelValue || viewValue;
+ * return /[0-9]+/.test(value) &&
+ * /[a-z]+/.test(value) &&
+ * /[A-Z]+/.test(value) &&
+ * /\W+/.test(value);
+ * };
+ * ```
+ *
+ * @property {Object.<string, function>} $asyncValidators A collection of validations that are expected to
+ * perform an asynchronous validation (e.g. a HTTP request). The validation function that is provided
+ * is expected to return a promise when it is run during the model validation process. Once the promise
+ * is delivered then the validation status will be set to true when fulfilled and false when rejected.
+ * When the asynchronous validators are triggered, each of the validators will run in parallel and the model
+ * value will only be updated once all validators have been fulfilled. As long as an asynchronous validator
+ * is unfulfilled, its key will be added to the controllers `$pending` property. Also, all asynchronous validators
+ * will only run once all synchronous validators have passed.
+ *
+ * Please note that if $http is used then it is important that the server returns a success HTTP response code
+ * in order to fulfill the validation and a status level of `4xx` in order to reject the validation.
+ *
+ * ```js
+ * ngModel.$asyncValidators.uniqueUsername = function(modelValue, viewValue) {
+ * var value = modelValue || viewValue;
+ *
+ * // Lookup user by username
+ * return $http.get('/api/users/' + value).
+ * then(function resolved() {
+ * //username exists, this means validation fails
+ * return $q.reject('exists');
+ * }, function rejected() {
+ * //username does not exist, therefore this validation passes
+ * return true;
+ * });
+ * };
+ * ```
+ *
+ * @property {Array.<Function>} $viewChangeListeners Array of functions to execute whenever the
+ * view value has changed. It is called with no arguments, and its return value is ignored.
+ * This can be used in place of additional $watches against the model value.
+ *
+ * @property {Object} $error An object hash with all failing validator ids as keys.
+ * @property {Object} $pending An object hash with all pending validator ids as keys.
+ *
+ * @property {boolean} $untouched True if control has not lost focus yet.
+ * @property {boolean} $touched True if control has lost focus.
+ * @property {boolean} $pristine True if user has not interacted with the control yet.
+ * @property {boolean} $dirty True if user has already interacted with the control.
+ * @property {boolean} $valid True if there is no error.
+ * @property {boolean} $invalid True if at least one error on the control.
+ * @property {string} $name The name attribute of the control.
+ *
+ * @description
+ *
+ * `NgModelController` provides API for the {@link ngModel `ngModel`} directive.
+ * The controller contains services for data-binding, validation, CSS updates, and value formatting
+ * and parsing. It purposefully does not contain any logic which deals with DOM rendering or
+ * listening to DOM events.
+ * Such DOM related logic should be provided by other directives which make use of
+ * `NgModelController` for data-binding to control elements.
+ * Angular provides this DOM logic for most {@link input `input`} elements.
+ * At the end of this page you can find a {@link ngModel.NgModelController#custom-control-example
+ * custom control example} that uses `ngModelController` to bind to `contenteditable` elements.
+ *
+ * @example
+ * ### Custom Control Example
+ * This example shows how to use `NgModelController` with a custom control to achieve
+ * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)
+ * collaborate together to achieve the desired result.
+ *
+ * `contenteditable` is an HTML5 attribute, which tells the browser to let the element
+ * contents be edited in place by the user.
+ *
+ * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize}
+ * module to automatically remove "bad" content like inline event listener (e.g. `<span onclick="...">`).
+ * However, as we are using `$sce` the model can still decide to provide unsafe content if it marks
+ * that content using the `$sce` service.
+ *
+ * <example name="NgModelController" module="customControl" deps="angular-sanitize.js">
+ <file name="style.css">
+ [contenteditable] {
+ border: 1px solid black;
+ background-color: white;
+ min-height: 20px;
+ }
+
+ .ng-invalid {
+ border: 1px solid red;
+ }
+
+ </file>
+ <file name="script.js">
+ angular.module('customControl', ['ngSanitize']).
+ directive('contenteditable', ['$sce', function($sce) {
+ return {
+ restrict: 'A', // only activate on element attribute
+ require: '?ngModel', // get a hold of NgModelController
+ link: function(scope, element, attrs, ngModel) {
+ if (!ngModel) return; // do nothing if no ng-model
+
+ // Specify how UI should be updated
+ ngModel.$render = function() {
+ element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));
+ };
+
+ // Listen for change events to enable binding
+ element.on('blur keyup change', function() {
+ scope.$evalAsync(read);
+ });
+ read(); // initialize
+
+ // Write data to the model
+ function read() {
+ var html = element.html();
+ // When we clear the content editable the browser leaves a <br> behind
+ // If strip-br attribute is provided then we strip this out
+ if ( attrs.stripBr && html == '<br>' ) {
+ html = '';
+ }
+ ngModel.$setViewValue(html);
+ }
+ }
+ };
+ }]);
+ </file>
+ <file name="index.html">
+ <form name="myForm">
+ <div contenteditable
+ name="myWidget" ng-model="userContent"
+ strip-br="true"
+ required>Change me!</div>
+ <span ng-show="myForm.myWidget.$error.required">Required!</span>
+ <hr>
+ <textarea ng-model="userContent" aria-label="Dynamic textarea"></textarea>
+ </form>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should data-bind and become invalid', function() {
+ if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') {
+ // SafariDriver can't handle contenteditable
+ // and Firefox driver can't clear contenteditables very well
+ return;
+ }
+ var contentEditable = element(by.css('[contenteditable]'));
+ var content = 'Change me!';
+
+ expect(contentEditable.getText()).toEqual(content);
+
+ contentEditable.clear();
+ contentEditable.sendKeys(protractor.Key.BACK_SPACE);
+ expect(contentEditable.getText()).toEqual('');
+ expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/);
+ });
+ </file>
+ * </example>
+ *
+ *
+ */
+var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate', '$timeout', '$rootScope', '$q', '$interpolate',
+ function($scope, $exceptionHandler, $attr, $element, $parse, $animate, $timeout, $rootScope, $q, $interpolate) {
+ this.$viewValue = Number.NaN;
+ this.$modelValue = Number.NaN;
+ this.$$rawModelValue = undefined; // stores the parsed modelValue / model set from scope regardless of validity.
+ this.$validators = {};
+ this.$asyncValidators = {};
+ this.$parsers = [];
+ this.$formatters = [];
+ this.$viewChangeListeners = [];
+ this.$untouched = true;
+ this.$touched = false;
+ this.$pristine = true;
+ this.$dirty = false;
+ this.$valid = true;
+ this.$invalid = false;
+ this.$error = {}; // keep invalid keys here
+ this.$$success = {}; // keep valid keys here
+ this.$pending = undefined; // keep pending keys here
+ this.$name = $interpolate($attr.name || '', false)($scope);
+
+
+ var parsedNgModel = $parse($attr.ngModel),
+ parsedNgModelAssign = parsedNgModel.assign,
+ ngModelGet = parsedNgModel,
+ ngModelSet = parsedNgModelAssign,
+ pendingDebounce = null,
+ parserValid,
+ ctrl = this;
+
+ this.$$setOptions = function(options) {
+ ctrl.$options = options;
+ if (options && options.getterSetter) {
+ var invokeModelGetter = $parse($attr.ngModel + '()'),
+ invokeModelSetter = $parse($attr.ngModel + '($$$p)');
+
+ ngModelGet = function($scope) {
+ var modelValue = parsedNgModel($scope);
+ if (isFunction(modelValue)) {
+ modelValue = invokeModelGetter($scope);
+ }
+ return modelValue;
+ };
+ ngModelSet = function($scope, newValue) {
+ if (isFunction(parsedNgModel($scope))) {
+ invokeModelSetter($scope, {$$$p: ctrl.$modelValue});
+ } else {
+ parsedNgModelAssign($scope, ctrl.$modelValue);
+ }
+ };
+ } else if (!parsedNgModel.assign) {
+ throw ngModelMinErr('nonassign', "Expression '{0}' is non-assignable. Element: {1}",
+ $attr.ngModel, startingTag($element));
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$render
+ *
+ * @description
+ * Called when the view needs to be updated. It is expected that the user of the ng-model
+ * directive will implement this method.
+ *
+ * The `$render()` method is invoked in the following situations:
+ *
+ * * `$rollbackViewValue()` is called. If we are rolling back the view value to the last
+ * committed value then `$render()` is called to update the input control.
+ * * The value referenced by `ng-model` is changed programmatically and both the `$modelValue` and
+ * the `$viewValue` are different from last time.
+ *
+ * Since `ng-model` does not do a deep watch, `$render()` is only invoked if the values of
+ * `$modelValue` and `$viewValue` are actually different from their previous value. If `$modelValue`
+ * or `$viewValue` are objects (rather than a string or number) then `$render()` will not be
+ * invoked if you only change a property on the objects.
+ */
+ this.$render = noop;
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$isEmpty
+ *
+ * @description
+ * This is called when we need to determine if the value of an input is empty.
+ *
+ * For instance, the required directive does this to work out if the input has data or not.
+ *
+ * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`.
+ *
+ * You can override this for input directives whose concept of being empty is different from the
+ * default. The `checkboxInputType` directive does this because in its case a value of `false`
+ * implies empty.
+ *
+ * @param {*} value The value of the input to check for emptiness.
+ * @returns {boolean} True if `value` is "empty".
+ */
+ this.$isEmpty = function(value) {
+ return isUndefined(value) || value === '' || value === null || value !== value;
+ };
+
+ var parentForm = $element.inheritedData('$formController') || nullFormCtrl,
+ currentValidationRunId = 0;
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setValidity
+ *
+ * @description
+ * Change the validity state, and notify the form.
+ *
+ * This method can be called within $parsers/$formatters or a custom validation implementation.
+ * However, in most cases it should be sufficient to use the `ngModel.$validators` and
+ * `ngModel.$asyncValidators` collections which will call `$setValidity` automatically.
+ *
+ * @param {string} validationErrorKey Name of the validator. The `validationErrorKey` will be assigned
+ * to either `$error[validationErrorKey]` or `$pending[validationErrorKey]`
+ * (for unfulfilled `$asyncValidators`), so that it is available for data-binding.
+ * The `validationErrorKey` should be in camelCase and will get converted into dash-case
+ * for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error`
+ * class and can be bound to as `{{someForm.someControl.$error.myError}}` .
+ * @param {boolean} isValid Whether the current state is valid (true), invalid (false), pending (undefined),
+ * or skipped (null). Pending is used for unfulfilled `$asyncValidators`.
+ * Skipped is used by Angular when validators do not run because of parse errors and
+ * when `$asyncValidators` do not run because any of the `$validators` failed.
+ */
+ addSetValidityMethod({
+ ctrl: this,
+ $element: $element,
+ set: function(object, property) {
+ object[property] = true;
+ },
+ unset: function(object, property) {
+ delete object[property];
+ },
+ parentForm: parentForm,
+ $animate: $animate
+ });
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setPristine
+ *
+ * @description
+ * Sets the control to its pristine state.
+ *
+ * This method can be called to remove the `ng-dirty` class and set the control to its pristine
+ * state (`ng-pristine` class). A model is considered to be pristine when the control
+ * has not been changed from when first compiled.
+ */
+ this.$setPristine = function() {
+ ctrl.$dirty = false;
+ ctrl.$pristine = true;
+ $animate.removeClass($element, DIRTY_CLASS);
+ $animate.addClass($element, PRISTINE_CLASS);
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setDirty
+ *
+ * @description
+ * Sets the control to its dirty state.
+ *
+ * This method can be called to remove the `ng-pristine` class and set the control to its dirty
+ * state (`ng-dirty` class). A model is considered to be dirty when the control has been changed
+ * from when first compiled.
+ */
+ this.$setDirty = function() {
+ ctrl.$dirty = true;
+ ctrl.$pristine = false;
+ $animate.removeClass($element, PRISTINE_CLASS);
+ $animate.addClass($element, DIRTY_CLASS);
+ parentForm.$setDirty();
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setUntouched
+ *
+ * @description
+ * Sets the control to its untouched state.
+ *
+ * This method can be called to remove the `ng-touched` class and set the control to its
+ * untouched state (`ng-untouched` class). Upon compilation, a model is set as untouched
+ * by default, however this function can be used to restore that state if the model has
+ * already been touched by the user.
+ */
+ this.$setUntouched = function() {
+ ctrl.$touched = false;
+ ctrl.$untouched = true;
+ $animate.setClass($element, UNTOUCHED_CLASS, TOUCHED_CLASS);
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setTouched
+ *
+ * @description
+ * Sets the control to its touched state.
+ *
+ * This method can be called to remove the `ng-untouched` class and set the control to its
+ * touched state (`ng-touched` class). A model is considered to be touched when the user has
+ * first focused the control element and then shifted focus away from the control (blur event).
+ */
+ this.$setTouched = function() {
+ ctrl.$touched = true;
+ ctrl.$untouched = false;
+ $animate.setClass($element, TOUCHED_CLASS, UNTOUCHED_CLASS);
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$rollbackViewValue
+ *
+ * @description
+ * Cancel an update and reset the input element's value to prevent an update to the `$modelValue`,
+ * which may be caused by a pending debounced event or because the input is waiting for a some
+ * future event.
+ *
+ * If you have an input that uses `ng-model-options` to set up debounced events or events such
+ * as blur you can have a situation where there is a period when the `$viewValue`
+ * is out of synch with the ngModel's `$modelValue`.
+ *
+ * In this case, you can run into difficulties if you try to update the ngModel's `$modelValue`
+ * programmatically before these debounced/future events have resolved/occurred, because Angular's
+ * dirty checking mechanism is not able to tell whether the model has actually changed or not.
+ *
+ * The `$rollbackViewValue()` method should be called before programmatically changing the model of an
+ * input which may have such events pending. This is important in order to make sure that the
+ * input field will be updated with the new model value and any pending operations are cancelled.
+ *
+ * <example name="ng-model-cancel-update" module="cancel-update-example">
+ * <file name="app.js">
+ * angular.module('cancel-update-example', [])
+ *
+ * .controller('CancelUpdateController', ['$scope', function($scope) {
+ * $scope.resetWithCancel = function(e) {
+ * if (e.keyCode == 27) {
+ * $scope.myForm.myInput1.$rollbackViewValue();
+ * $scope.myValue = '';
+ * }
+ * };
+ * $scope.resetWithoutCancel = function(e) {
+ * if (e.keyCode == 27) {
+ * $scope.myValue = '';
+ * }
+ * };
+ * }]);
+ * </file>
+ * <file name="index.html">
+ * <div ng-controller="CancelUpdateController">
+ * <p>Try typing something in each input. See that the model only updates when you
+ * blur off the input.
+ * </p>
+ * <p>Now see what happens if you start typing then press the Escape key</p>
+ *
+ * <form name="myForm" ng-model-options="{ updateOn: 'blur' }">
+ * <p id="inputDescription1">With $rollbackViewValue()</p>
+ * <input name="myInput1" aria-describedby="inputDescription1" ng-model="myValue"
+ * ng-keydown="resetWithCancel($event)"><br/>
+ * myValue: "{{ myValue }}"
+ *
+ * <p id="inputDescription2">Without $rollbackViewValue()</p>
+ * <input name="myInput2" aria-describedby="inputDescription2" ng-model="myValue"
+ * ng-keydown="resetWithoutCancel($event)"><br/>
+ * myValue: "{{ myValue }}"
+ * </form>
+ * </div>
+ * </file>
+ * </example>
+ */
+ this.$rollbackViewValue = function() {
+ $timeout.cancel(pendingDebounce);
+ ctrl.$viewValue = ctrl.$$lastCommittedViewValue;
+ ctrl.$render();
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$validate
+ *
+ * @description
+ * Runs each of the registered validators (first synchronous validators and then
+ * asynchronous validators).
+ * If the validity changes to invalid, the model will be set to `undefined`,
+ * unless {@link ngModelOptions `ngModelOptions.allowInvalid`} is `true`.
+ * If the validity changes to valid, it will set the model to the last available valid
+ * `$modelValue`, i.e. either the last parsed value or the last value set from the scope.
+ */
+ this.$validate = function() {
+ // ignore $validate before model is initialized
+ if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
+ return;
+ }
+
+ var viewValue = ctrl.$$lastCommittedViewValue;
+ // Note: we use the $$rawModelValue as $modelValue might have been
+ // set to undefined during a view -> model update that found validation
+ // errors. We can't parse the view here, since that could change
+ // the model although neither viewValue nor the model on the scope changed
+ var modelValue = ctrl.$$rawModelValue;
+
+ var prevValid = ctrl.$valid;
+ var prevModelValue = ctrl.$modelValue;
+
+ var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
+
+ ctrl.$$runValidators(modelValue, viewValue, function(allValid) {
+ // If there was no change in validity, don't update the model
+ // This prevents changing an invalid modelValue to undefined
+ if (!allowInvalid && prevValid !== allValid) {
+ // Note: Don't check ctrl.$valid here, as we could have
+ // external validators (e.g. calculated on the server),
+ // that just call $setValidity and need the model value
+ // to calculate their validity.
+ ctrl.$modelValue = allValid ? modelValue : undefined;
+
+ if (ctrl.$modelValue !== prevModelValue) {
+ ctrl.$$writeModelToScope();
+ }
+ }
+ });
+
+ };
+
+ this.$$runValidators = function(modelValue, viewValue, doneCallback) {
+ currentValidationRunId++;
+ var localValidationRunId = currentValidationRunId;
+
+ // check parser error
+ if (!processParseErrors()) {
+ validationDone(false);
+ return;
+ }
+ if (!processSyncValidators()) {
+ validationDone(false);
+ return;
+ }
+ processAsyncValidators();
+
+ function processParseErrors() {
+ var errorKey = ctrl.$$parserName || 'parse';
+ if (parserValid === undefined) {
+ setValidity(errorKey, null);
+ } else {
+ if (!parserValid) {
+ forEach(ctrl.$validators, function(v, name) {
+ setValidity(name, null);
+ });
+ forEach(ctrl.$asyncValidators, function(v, name) {
+ setValidity(name, null);
+ });
+ }
+ // Set the parse error last, to prevent unsetting it, should a $validators key == parserName
+ setValidity(errorKey, parserValid);
+ return parserValid;
+ }
+ return true;
+ }
+
+ function processSyncValidators() {
+ var syncValidatorsValid = true;
+ forEach(ctrl.$validators, function(validator, name) {
+ var result = validator(modelValue, viewValue);
+ syncValidatorsValid = syncValidatorsValid && result;
+ setValidity(name, result);
+ });
+ if (!syncValidatorsValid) {
+ forEach(ctrl.$asyncValidators, function(v, name) {
+ setValidity(name, null);
+ });
+ return false;
+ }
+ return true;
+ }
+
+ function processAsyncValidators() {
+ var validatorPromises = [];
+ var allValid = true;
+ forEach(ctrl.$asyncValidators, function(validator, name) {
+ var promise = validator(modelValue, viewValue);
+ if (!isPromiseLike(promise)) {
+ throw ngModelMinErr("$asyncValidators",
+ "Expected asynchronous validator to return a promise but got '{0}' instead.", promise);
+ }
+ setValidity(name, undefined);
+ validatorPromises.push(promise.then(function() {
+ setValidity(name, true);
+ }, function(error) {
+ allValid = false;
+ setValidity(name, false);
+ }));
+ });
+ if (!validatorPromises.length) {
+ validationDone(true);
+ } else {
+ $q.all(validatorPromises).then(function() {
+ validationDone(allValid);
+ }, noop);
+ }
+ }
+
+ function setValidity(name, isValid) {
+ if (localValidationRunId === currentValidationRunId) {
+ ctrl.$setValidity(name, isValid);
+ }
+ }
+
+ function validationDone(allValid) {
+ if (localValidationRunId === currentValidationRunId) {
+
+ doneCallback(allValid);
+ }
+ }
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$commitViewValue
+ *
+ * @description
+ * Commit a pending update to the `$modelValue`.
+ *
+ * Updates may be pending by a debounced event or because the input is waiting for a some future
+ * event defined in `ng-model-options`. this method is rarely needed as `NgModelController`
+ * usually handles calling this in response to input events.
+ */
+ this.$commitViewValue = function() {
+ var viewValue = ctrl.$viewValue;
+
+ $timeout.cancel(pendingDebounce);
+
+ // If the view value has not changed then we should just exit, except in the case where there is
+ // a native validator on the element. In this case the validation state may have changed even though
+ // the viewValue has stayed empty.
+ if (ctrl.$$lastCommittedViewValue === viewValue && (viewValue !== '' || !ctrl.$$hasNativeValidators)) {
+ return;
+ }
+ ctrl.$$lastCommittedViewValue = viewValue;
+
+ // change to dirty
+ if (ctrl.$pristine) {
+ this.$setDirty();
+ }
+ this.$$parseAndValidate();
+ };
+
+ this.$$parseAndValidate = function() {
+ var viewValue = ctrl.$$lastCommittedViewValue;
+ var modelValue = viewValue;
+ parserValid = isUndefined(modelValue) ? undefined : true;
+
+ if (parserValid) {
+ for (var i = 0; i < ctrl.$parsers.length; i++) {
+ modelValue = ctrl.$parsers[i](modelValue);
+ if (isUndefined(modelValue)) {
+ parserValid = false;
+ break;
+ }
+ }
+ }
+ if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
+ // ctrl.$modelValue has not been touched yet...
+ ctrl.$modelValue = ngModelGet($scope);
+ }
+ var prevModelValue = ctrl.$modelValue;
+ var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
+ ctrl.$$rawModelValue = modelValue;
+
+ if (allowInvalid) {
+ ctrl.$modelValue = modelValue;
+ writeToModelIfNeeded();
+ }
+
+ // Pass the $$lastCommittedViewValue here, because the cached viewValue might be out of date.
+ // This can happen if e.g. $setViewValue is called from inside a parser
+ ctrl.$$runValidators(modelValue, ctrl.$$lastCommittedViewValue, function(allValid) {
+ if (!allowInvalid) {
+ // Note: Don't check ctrl.$valid here, as we could have
+ // external validators (e.g. calculated on the server),
+ // that just call $setValidity and need the model value
+ // to calculate their validity.
+ ctrl.$modelValue = allValid ? modelValue : undefined;
+ writeToModelIfNeeded();
+ }
+ });
+
+ function writeToModelIfNeeded() {
+ if (ctrl.$modelValue !== prevModelValue) {
+ ctrl.$$writeModelToScope();
+ }
+ }
+ };
+
+ this.$$writeModelToScope = function() {
+ ngModelSet($scope, ctrl.$modelValue);
+ forEach(ctrl.$viewChangeListeners, function(listener) {
+ try {
+ listener();
+ } catch (e) {
+ $exceptionHandler(e);
+ }
+ });
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngModel.NgModelController#$setViewValue
+ *
+ * @description
+ * Update the view value.
+ *
+ * This method should be called when an input directive want to change the view value; typically,
+ * this is done from within a DOM event handler.
+ *
+ * For example {@link ng.directive:input input} calls it when the value of the input changes and
+ * {@link ng.directive:select select} calls it when an option is selected.
+ *
+ * If the new `value` is an object (rather than a string or a number), we should make a copy of the
+ * object before passing it to `$setViewValue`. This is because `ngModel` does not perform a deep
+ * watch of objects, it only looks for a change of identity. If you only change the property of
+ * the object then ngModel will not realise that the object has changed and will not invoke the
+ * `$parsers` and `$validators` pipelines.
+ *
+ * For this reason, you should not change properties of the copy once it has been passed to
+ * `$setViewValue`. Otherwise you may cause the model value on the scope to change incorrectly.
+ *
+ * When this method is called, the new `value` will be staged for committing through the `$parsers`
+ * and `$validators` pipelines. If there are no special {@link ngModelOptions} specified then the staged
+ * value sent directly for processing, finally to be applied to `$modelValue` and then the
+ * **expression** specified in the `ng-model` attribute.
+ *
+ * Lastly, all the registered change listeners, in the `$viewChangeListeners` list, are called.
+ *
+ * In case the {@link ng.directive:ngModelOptions ngModelOptions} directive is used with `updateOn`
+ * and the `default` trigger is not listed, all those actions will remain pending until one of the
+ * `updateOn` events is triggered on the DOM element.
+ * All these actions will be debounced if the {@link ng.directive:ngModelOptions ngModelOptions}
+ * directive is used with a custom debounce for this particular event.
+ *
+ * Note that calling this function does not trigger a `$digest`.
+ *
+ * @param {string} value Value from the view.
+ * @param {string} trigger Event that triggered the update.
+ */
+ this.$setViewValue = function(value, trigger) {
+ ctrl.$viewValue = value;
+ if (!ctrl.$options || ctrl.$options.updateOnDefault) {
+ ctrl.$$debounceViewValueCommit(trigger);
+ }
+ };
+
+ this.$$debounceViewValueCommit = function(trigger) {
+ var debounceDelay = 0,
+ options = ctrl.$options,
+ debounce;
+
+ if (options && isDefined(options.debounce)) {
+ debounce = options.debounce;
+ if (isNumber(debounce)) {
+ debounceDelay = debounce;
+ } else if (isNumber(debounce[trigger])) {
+ debounceDelay = debounce[trigger];
+ } else if (isNumber(debounce['default'])) {
+ debounceDelay = debounce['default'];
+ }
+ }
+
+ $timeout.cancel(pendingDebounce);
+ if (debounceDelay) {
+ pendingDebounce = $timeout(function() {
+ ctrl.$commitViewValue();
+ }, debounceDelay);
+ } else if ($rootScope.$$phase) {
+ ctrl.$commitViewValue();
+ } else {
+ $scope.$apply(function() {
+ ctrl.$commitViewValue();
+ });
+ }
+ };
+
+ // model -> value
+ // Note: we cannot use a normal scope.$watch as we want to detect the following:
+ // 1. scope value is 'a'
+ // 2. user enters 'b'
+ // 3. ng-change kicks in and reverts scope value to 'a'
+ // -> scope value did not change since the last digest as
+ // ng-change executes in apply phase
+ // 4. view should be changed back to 'a'
+ $scope.$watch(function ngModelWatch() {
+ var modelValue = ngModelGet($scope);
+
+ // if scope model value and ngModel value are out of sync
+ // TODO(perf): why not move this to the action fn?
+ if (modelValue !== ctrl.$modelValue &&
+ // checks for NaN is needed to allow setting the model to NaN when there's an asyncValidator
+ (ctrl.$modelValue === ctrl.$modelValue || modelValue === modelValue)
+ ) {
+ ctrl.$modelValue = ctrl.$$rawModelValue = modelValue;
+ parserValid = undefined;
+
+ var formatters = ctrl.$formatters,
+ idx = formatters.length;
+
+ var viewValue = modelValue;
+ while (idx--) {
+ viewValue = formatters[idx](viewValue);
+ }
+ if (ctrl.$viewValue !== viewValue) {
+ ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue;
+ ctrl.$render();
+
+ ctrl.$$runValidators(modelValue, viewValue, noop);
+ }
+ }
+
+ return modelValue;
+ });
+}];
+
+
+/**
+ * @ngdoc directive
+ * @name ngModel
+ *
+ * @element input
+ * @priority 1
+ *
+ * @description
+ * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a
+ * property on the scope using {@link ngModel.NgModelController NgModelController},
+ * which is created and exposed by this directive.
+ *
+ * `ngModel` is responsible for:
+ *
+ * - Binding the view into the model, which other directives such as `input`, `textarea` or `select`
+ * require.
+ * - Providing validation behavior (i.e. required, number, email, url).
+ * - Keeping the state of the control (valid/invalid, dirty/pristine, touched/untouched, validation errors).
+ * - Setting related css classes on the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`, `ng-touched`, `ng-untouched`) including animations.
+ * - Registering the control with its parent {@link ng.directive:form form}.
+ *
+ * Note: `ngModel` will try to bind to the property given by evaluating the expression on the
+ * current scope. If the property doesn't already exist on this scope, it will be created
+ * implicitly and added to the scope.
+ *
+ * For best practices on using `ngModel`, see:
+ *
+ * - [Understanding Scopes](https://github.com/angular/angular.js/wiki/Understanding-Scopes)
+ *
+ * For basic examples, how to use `ngModel`, see:
+ *
+ * - {@link ng.directive:input input}
+ * - {@link input[text] text}
+ * - {@link input[checkbox] checkbox}
+ * - {@link input[radio] radio}
+ * - {@link input[number] number}
+ * - {@link input[email] email}
+ * - {@link input[url] url}
+ * - {@link input[date] date}
+ * - {@link input[datetime-local] datetime-local}
+ * - {@link input[time] time}
+ * - {@link input[month] month}
+ * - {@link input[week] week}
+ * - {@link ng.directive:select select}
+ * - {@link ng.directive:textarea textarea}
+ *
+ * # CSS classes
+ * The following CSS classes are added and removed on the associated input/select/textarea element
+ * depending on the validity of the model.
+ *
+ * - `ng-valid`: the model is valid
+ * - `ng-invalid`: the model is invalid
+ * - `ng-valid-[key]`: for each valid key added by `$setValidity`
+ * - `ng-invalid-[key]`: for each invalid key added by `$setValidity`
+ * - `ng-pristine`: the control hasn't been interacted with yet
+ * - `ng-dirty`: the control has been interacted with
+ * - `ng-touched`: the control has been blurred
+ * - `ng-untouched`: the control hasn't been blurred
+ * - `ng-pending`: any `$asyncValidators` are unfulfilled
+ *
+ * Keep in mind that ngAnimate can detect each of these classes when added and removed.
+ *
+ * ## Animation Hooks
+ *
+ * Animations within models are triggered when any of the associated CSS classes are added and removed
+ * on the input element which is attached to the model. These classes are: `.ng-pristine`, `.ng-dirty`,
+ * `.ng-invalid` and `.ng-valid` as well as any other validations that are performed on the model itself.
+ * The animations that are triggered within ngModel are similar to how they work in ngClass and
+ * animations can be hooked into using CSS transitions, keyframes as well as JS animations.
+ *
+ * The following example shows a simple way to utilize CSS transitions to style an input element
+ * that has been rendered as invalid after it has been validated:
+ *
+ * <pre>
+ * //be sure to include ngAnimate as a module to hook into more
+ * //advanced animations
+ * .my-input {
+ * transition:0.5s linear all;
+ * background: white;
+ * }
+ * .my-input.ng-invalid {
+ * background: red;
+ * color:white;
+ * }
+ * </pre>
+ *
+ * @example
+ * <example deps="angular-animate.js" animations="true" fixBase="true" module="inputExample">
+ <file name="index.html">
+ <script>
+ angular.module('inputExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.val = '1';
+ }]);
+ </script>
+ <style>
+ .my-input {
+ -webkit-transition:all linear 0.5s;
+ transition:all linear 0.5s;
+ background: transparent;
+ }
+ .my-input.ng-invalid {
+ color:white;
+ background: red;
+ }
+ </style>
+ <p id="inputDescription">
+ Update input to see transitions when valid/invalid.
+ Integer is a valid value.
+ </p>
+ <form name="testForm" ng-controller="ExampleController">
+ <input ng-model="val" ng-pattern="/^\d+$/" name="anim" class="my-input"
+ aria-describedby="inputDescription" />
+ </form>
+ </file>
+ * </example>
+ *
+ * ## Binding to a getter/setter
+ *
+ * Sometimes it's helpful to bind `ngModel` to a getter/setter function. A getter/setter is a
+ * function that returns a representation of the model when called with zero arguments, and sets
+ * the internal state of a model when called with an argument. It's sometimes useful to use this
+ * for models that have an internal representation that's different from what the model exposes
+ * to the view.
+ *
+ * <div class="alert alert-success">
+ * **Best Practice:** It's best to keep getters fast because Angular is likely to call them more
+ * frequently than other parts of your code.
+ * </div>
+ *
+ * You use this behavior by adding `ng-model-options="{ getterSetter: true }"` to an element that
+ * has `ng-model` attached to it. You can also add `ng-model-options="{ getterSetter: true }"` to
+ * a `<form>`, which will enable this behavior for all `<input>`s within it. See
+ * {@link ng.directive:ngModelOptions `ngModelOptions`} for more.
+ *
+ * The following example shows how to use `ngModel` with a getter/setter:
+ *
+ * @example
+ * <example name="ngModel-getter-setter" module="getterSetterExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form name="userForm">
+ <label>Name:
+ <input type="text" name="userName"
+ ng-model="user.name"
+ ng-model-options="{ getterSetter: true }" />
+ </label>
+ </form>
+ <pre>user.name = <span ng-bind="user.name()"></span></pre>
+ </div>
+ </file>
+ <file name="app.js">
+ angular.module('getterSetterExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ var _name = 'Brian';
+ $scope.user = {
+ name: function(newName) {
+ // Note that newName can be undefined for two reasons:
+ // 1. Because it is called as a getter and thus called with no arguments
+ // 2. Because the property should actually be set to undefined. This happens e.g. if the
+ // input is invalid
+ return arguments.length ? (_name = newName) : _name;
+ }
+ };
+ }]);
+ </file>
+ * </example>
+ */
+var ngModelDirective = ['$rootScope', function($rootScope) {
+ return {
+ restrict: 'A',
+ require: ['ngModel', '^?form', '^?ngModelOptions'],
+ controller: NgModelController,
+ // Prelink needs to run before any input directive
+ // so that we can set the NgModelOptions in NgModelController
+ // before anyone else uses it.
+ priority: 1,
+ compile: function ngModelCompile(element) {
+ // Setup initial state of the control
+ element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS);
+
+ return {
+ pre: function ngModelPreLink(scope, element, attr, ctrls) {
+ var modelCtrl = ctrls[0],
+ formCtrl = ctrls[1] || nullFormCtrl;
+
+ modelCtrl.$$setOptions(ctrls[2] && ctrls[2].$options);
+
+ // notify others, especially parent forms
+ formCtrl.$addControl(modelCtrl);
+
+ attr.$observe('name', function(newValue) {
+ if (modelCtrl.$name !== newValue) {
+ formCtrl.$$renameControl(modelCtrl, newValue);
+ }
+ });
+
+ scope.$on('$destroy', function() {
+ formCtrl.$removeControl(modelCtrl);
+ });
+ },
+ post: function ngModelPostLink(scope, element, attr, ctrls) {
+ var modelCtrl = ctrls[0];
+ if (modelCtrl.$options && modelCtrl.$options.updateOn) {
+ element.on(modelCtrl.$options.updateOn, function(ev) {
+ modelCtrl.$$debounceViewValueCommit(ev && ev.type);
+ });
+ }
+
+ element.on('blur', function(ev) {
+ if (modelCtrl.$touched) return;
+
+ if ($rootScope.$$phase) {
+ scope.$evalAsync(modelCtrl.$setTouched);
+ } else {
+ scope.$apply(modelCtrl.$setTouched);
+ }
+ });
+ }
+ };
+ }
+ };
+}];
+
+var DEFAULT_REGEXP = /(\s+|^)default(\s+|$)/;
+
+/**
+ * @ngdoc directive
+ * @name ngModelOptions
+ *
+ * @description
+ * Allows tuning how model updates are done. Using `ngModelOptions` you can specify a custom list of
+ * events that will trigger a model update and/or a debouncing delay so that the actual update only
+ * takes place when a timer expires; this timer will be reset after another change takes place.
+ *
+ * Given the nature of `ngModelOptions`, the value displayed inside input fields in the view might
+ * be different from the value in the actual model. This means that if you update the model you
+ * should also invoke {@link ngModel.NgModelController `$rollbackViewValue`} on the relevant input field in
+ * order to make sure it is synchronized with the model and that any debounced action is canceled.
+ *
+ * The easiest way to reference the control's {@link ngModel.NgModelController `$rollbackViewValue`}
+ * method is by making sure the input is placed inside a form that has a `name` attribute. This is
+ * important because `form` controllers are published to the related scope under the name in their
+ * `name` attribute.
+ *
+ * Any pending changes will take place immediately when an enclosing form is submitted via the
+ * `submit` event. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`
+ * to have access to the updated model.
+ *
+ * `ngModelOptions` has an effect on the element it's declared on and its descendants.
+ *
+ * @param {Object} ngModelOptions options to apply to the current model. Valid keys are:
+ * - `updateOn`: string specifying which event should the input be bound to. You can set several
+ * events using an space delimited list. There is a special event called `default` that
+ * matches the default events belonging of the control.
+ * - `debounce`: integer value which contains the debounce model update value in milliseconds. A
+ * value of 0 triggers an immediate update. If an object is supplied instead, you can specify a
+ * custom value for each event. For example:
+ * `ng-model-options="{ updateOn: 'default blur', debounce: { 'default': 500, 'blur': 0 } }"`
+ * - `allowInvalid`: boolean value which indicates that the model can be set with values that did
+ * not validate correctly instead of the default behavior of setting the model to undefined.
+ * - `getterSetter`: boolean value which determines whether or not to treat functions bound to
+ `ngModel` as getters/setters.
+ * - `timezone`: Defines the timezone to be used to read/write the `Date` instance in the model for
+ * `<input type="date">`, `<input type="time">`, ... . It understands UTC/GMT and the
+ * continental US time zone abbreviations, but for general use, use a time zone offset, for
+ * example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian)
+ * If not specified, the timezone of the browser will be used.
+ *
+ * @example
+
+ The following example shows how to override immediate updates. Changes on the inputs within the
+ form will update the model only when the control loses focus (blur event). If `escape` key is
+ pressed while the input field is focused, the value is reset to the value in the current model.
+
+ <example name="ngModelOptions-directive-blur" module="optionsExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form name="userForm">
+ <label>Name:
+ <input type="text" name="userName"
+ ng-model="user.name"
+ ng-model-options="{ updateOn: 'blur' }"
+ ng-keyup="cancel($event)" />
+ </label><br />
+ <label>Other data:
+ <input type="text" ng-model="user.data" />
+ </label><br />
+ </form>
+ <pre>user.name = <span ng-bind="user.name"></span></pre>
+ </div>
+ </file>
+ <file name="app.js">
+ angular.module('optionsExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.user = { name: 'say', data: '' };
+
+ $scope.cancel = function(e) {
+ if (e.keyCode == 27) {
+ $scope.userForm.userName.$rollbackViewValue();
+ }
+ };
+ }]);
+ </file>
+ <file name="protractor.js" type="protractor">
+ var model = element(by.binding('user.name'));
+ var input = element(by.model('user.name'));
+ var other = element(by.model('user.data'));
+
+ it('should allow custom events', function() {
+ input.sendKeys(' hello');
+ input.click();
+ expect(model.getText()).toEqual('say');
+ other.click();
+ expect(model.getText()).toEqual('say hello');
+ });
+
+ it('should $rollbackViewValue when model changes', function() {
+ input.sendKeys(' hello');
+ expect(input.getAttribute('value')).toEqual('say hello');
+ input.sendKeys(protractor.Key.ESCAPE);
+ expect(input.getAttribute('value')).toEqual('say');
+ other.click();
+ expect(model.getText()).toEqual('say');
+ });
+ </file>
+ </example>
+
+ This one shows how to debounce model changes. Model will be updated only 1 sec after last change.
+ If the `Clear` button is pressed, any debounced action is canceled and the value becomes empty.
+
+ <example name="ngModelOptions-directive-debounce" module="optionsExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form name="userForm">
+ <label>Name:
+ <input type="text" name="userName"
+ ng-model="user.name"
+ ng-model-options="{ debounce: 1000 }" />
+ </label>
+ <button ng-click="userForm.userName.$rollbackViewValue(); user.name=''">Clear</button>
+ <br />
+ </form>
+ <pre>user.name = <span ng-bind="user.name"></span></pre>
+ </div>
+ </file>
+ <file name="app.js">
+ angular.module('optionsExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.user = { name: 'say' };
+ }]);
+ </file>
+ </example>
+
+ This one shows how to bind to getter/setters:
+
+ <example name="ngModelOptions-directive-getter-setter" module="getterSetterExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form name="userForm">
+ <label>Name:
+ <input type="text" name="userName"
+ ng-model="user.name"
+ ng-model-options="{ getterSetter: true }" />
+ </label>
+ </form>
+ <pre>user.name = <span ng-bind="user.name()"></span></pre>
+ </div>
+ </file>
+ <file name="app.js">
+ angular.module('getterSetterExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ var _name = 'Brian';
+ $scope.user = {
+ name: function(newName) {
+ // Note that newName can be undefined for two reasons:
+ // 1. Because it is called as a getter and thus called with no arguments
+ // 2. Because the property should actually be set to undefined. This happens e.g. if the
+ // input is invalid
+ return arguments.length ? (_name = newName) : _name;
+ }
+ };
+ }]);
+ </file>
+ </example>
+ */
+var ngModelOptionsDirective = function() {
+ return {
+ restrict: 'A',
+ controller: ['$scope', '$attrs', function($scope, $attrs) {
+ var that = this;
+ this.$options = copy($scope.$eval($attrs.ngModelOptions));
+ // Allow adding/overriding bound events
+ if (this.$options.updateOn !== undefined) {
+ this.$options.updateOnDefault = false;
+ // extract "default" pseudo-event from list of events that can trigger a model update
+ this.$options.updateOn = trim(this.$options.updateOn.replace(DEFAULT_REGEXP, function() {
+ that.$options.updateOnDefault = true;
+ return ' ';
+ }));
+ } else {
+ this.$options.updateOnDefault = true;
+ }
+ }]
+ };
+};
+
+
+
+// helper methods
+function addSetValidityMethod(context) {
+ var ctrl = context.ctrl,
+ $element = context.$element,
+ classCache = {},
+ set = context.set,
+ unset = context.unset,
+ parentForm = context.parentForm,
+ $animate = context.$animate;
+
+ classCache[INVALID_CLASS] = !(classCache[VALID_CLASS] = $element.hasClass(VALID_CLASS));
+
+ ctrl.$setValidity = setValidity;
+
+ function setValidity(validationErrorKey, state, controller) {
+ if (state === undefined) {
+ createAndSet('$pending', validationErrorKey, controller);
+ } else {
+ unsetAndCleanup('$pending', validationErrorKey, controller);
+ }
+ if (!isBoolean(state)) {
+ unset(ctrl.$error, validationErrorKey, controller);
+ unset(ctrl.$$success, validationErrorKey, controller);
+ } else {
+ if (state) {
+ unset(ctrl.$error, validationErrorKey, controller);
+ set(ctrl.$$success, validationErrorKey, controller);
+ } else {
+ set(ctrl.$error, validationErrorKey, controller);
+ unset(ctrl.$$success, validationErrorKey, controller);
+ }
+ }
+ if (ctrl.$pending) {
+ cachedToggleClass(PENDING_CLASS, true);
+ ctrl.$valid = ctrl.$invalid = undefined;
+ toggleValidationCss('', null);
+ } else {
+ cachedToggleClass(PENDING_CLASS, false);
+ ctrl.$valid = isObjectEmpty(ctrl.$error);
+ ctrl.$invalid = !ctrl.$valid;
+ toggleValidationCss('', ctrl.$valid);
+ }
+
+ // re-read the state as the set/unset methods could have
+ // combined state in ctrl.$error[validationError] (used for forms),
+ // where setting/unsetting only increments/decrements the value,
+ // and does not replace it.
+ var combinedState;
+ if (ctrl.$pending && ctrl.$pending[validationErrorKey]) {
+ combinedState = undefined;
+ } else if (ctrl.$error[validationErrorKey]) {
+ combinedState = false;
+ } else if (ctrl.$$success[validationErrorKey]) {
+ combinedState = true;
+ } else {
+ combinedState = null;
+ }
+
+ toggleValidationCss(validationErrorKey, combinedState);
+ parentForm.$setValidity(validationErrorKey, combinedState, ctrl);
+ }
+
+ function createAndSet(name, value, controller) {
+ if (!ctrl[name]) {
+ ctrl[name] = {};
+ }
+ set(ctrl[name], value, controller);
+ }
+
+ function unsetAndCleanup(name, value, controller) {
+ if (ctrl[name]) {
+ unset(ctrl[name], value, controller);
+ }
+ if (isObjectEmpty(ctrl[name])) {
+ ctrl[name] = undefined;
+ }
+ }
+
+ function cachedToggleClass(className, switchValue) {
+ if (switchValue && !classCache[className]) {
+ $animate.addClass($element, className);
+ classCache[className] = true;
+ } else if (!switchValue && classCache[className]) {
+ $animate.removeClass($element, className);
+ classCache[className] = false;
+ }
+ }
+
+ function toggleValidationCss(validationErrorKey, isValid) {
+ validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';
+
+ cachedToggleClass(VALID_CLASS + validationErrorKey, isValid === true);
+ cachedToggleClass(INVALID_CLASS + validationErrorKey, isValid === false);
+ }
+}
+
+function isObjectEmpty(obj) {
+ if (obj) {
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop)) {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+/**
+ * @ngdoc directive
+ * @name ngNonBindable
+ * @restrict AC
+ * @priority 1000
+ *
+ * @description
+ * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current
+ * DOM element. This is useful if the element contains what appears to be Angular directives and
+ * bindings but which should be ignored by Angular. This could be the case if you have a site that
+ * displays snippets of code, for instance.
+ *
+ * @element ANY
+ *
+ * @example
+ * In this example there are two locations where a simple interpolation binding (`{{}}`) is present,
+ * but the one wrapped in `ngNonBindable` is left alone.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <div>Normal: {{1 + 2}}</div>
+ <div ng-non-bindable>Ignored: {{1 + 2}}</div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-non-bindable', function() {
+ expect(element(by.binding('1 + 2')).getText()).toContain('3');
+ expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/);
+ });
+ </file>
+ </example>
+ */
+var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
+
+/* global jqLiteRemove */
+
+var ngOptionsMinErr = minErr('ngOptions');
+
+/**
+ * @ngdoc directive
+ * @name ngOptions
+ * @restrict A
+ *
+ * @description
+ *
+ * The `ngOptions` attribute can be used to dynamically generate a list of `<option>`
+ * elements for the `<select>` element using the array or object obtained by evaluating the
+ * `ngOptions` comprehension expression.
+ *
+ * In many cases, `ngRepeat` can be used on `<option>` elements instead of `ngOptions` to achieve a
+ * similar result. However, `ngOptions` provides some benefits such as reducing memory and
+ * increasing speed by not creating a new scope for each repeated instance, as well as providing
+ * more flexibility in how the `<select>`'s model is assigned via the `select` **`as`** part of the
+ * comprehension expression. `ngOptions` should be used when the `<select>` model needs to be bound
+ * to a non-string value. This is because an option element can only be bound to string values at
+ * present.
+ *
+ * When an item in the `<select>` menu is selected, the array element or object property
+ * represented by the selected option will be bound to the model identified by the `ngModel`
+ * directive.
+ *
+ * Optionally, a single hard-coded `<option>` element, with the value set to an empty string, can
+ * be nested into the `<select>` element. This element will then represent the `null` or "not selected"
+ * option. See example below for demonstration.
+ *
+ * ## Complex Models (objects or collections)
+ *
+ * **Note:** By default, `ngModel` watches the model by reference, not value. This is important when
+ * binding any input directive to a model that is an object or a collection.
+ *
+ * Since this is a common situation for `ngOptions` the directive additionally watches the model using
+ * `$watchCollection` when the select has the `multiple` attribute or when there is a `track by` clause in
+ * the options expression. This allows ngOptions to trigger a re-rendering of the options even if the actual
+ * object/collection has not changed identity but only a property on the object or an item in the collection
+ * changes.
+ *
+ * Note that `$watchCollection` does a shallow comparison of the properties of the object (or the items in the collection
+ * if the model is an array). This means that changing a property deeper inside the object/collection that the
+ * first level will not trigger a re-rendering.
+ *
+ *
+ * ## `select` **`as`**
+ *
+ * Using `select` **`as`** will bind the result of the `select` expression to the model, but
+ * the value of the `<select>` and `<option>` html elements will be either the index (for array data sources)
+ * or property name (for object data sources) of the value within the collection. If a **`track by`** expression
+ * is used, the result of that expression will be set as the value of the `option` and `select` elements.
+ *
+ *
+ * ### `select` **`as`** and **`track by`**
+ *
+ * <div class="alert alert-warning">
+ * Do not use `select` **`as`** and **`track by`** in the same expression. They are not designed to work together.
+ * </div>
+ *
+ * Consider the following example:
+ *
+ * ```html
+ * <select ng-options="item.subItem as item.label for item in values track by item.id" ng-model="selected"></select>
+ * ```
+ *
+ * ```js
+ * $scope.values = [{
+ * id: 1,
+ * label: 'aLabel',
+ * subItem: { name: 'aSubItem' }
+ * }, {
+ * id: 2,
+ * label: 'bLabel',
+ * subItem: { name: 'bSubItem' }
+ * }];
+ *
+ * $scope.selected = { name: 'aSubItem' };
+ * ```
+ *
+ * With the purpose of preserving the selection, the **`track by`** expression is always applied to the element
+ * of the data source (to `item` in this example). To calculate whether an element is selected, we do the
+ * following:
+ *
+ * 1. Apply **`track by`** to the elements in the array. In the example: `[1, 2]`
+ * 2. Apply **`track by`** to the already selected value in `ngModel`.
+ * In the example: this is not possible as **`track by`** refers to `item.id`, but the selected
+ * value from `ngModel` is `{name: 'aSubItem'}`, so the **`track by`** expression is applied to
+ * a wrong object, the selected element can't be found, `<select>` is always reset to the "not
+ * selected" option.
+ *
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required The control is considered valid only if value is entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {comprehension_expression=} ngOptions in one of the following forms:
+ *
+ * * for array data sources:
+ * * `label` **`for`** `value` **`in`** `array`
+ * * `select` **`as`** `label` **`for`** `value` **`in`** `array`
+ * * `label` **`group by`** `group` **`for`** `value` **`in`** `array`
+ * * `label` **`disable when`** `disable` **`for`** `value` **`in`** `array`
+ * * `label` **`group by`** `group` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`
+ * * `label` **`disable when`** `disable` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`
+ * * `label` **`for`** `value` **`in`** `array` | orderBy:`orderexpr` **`track by`** `trackexpr`
+ * (for including a filter with `track by`)
+ * * for object data sources:
+ * * `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
+ * * `select` **`as`** `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
+ * * `label` **`group by`** `group` **`for (`**`key`**`,`** `value`**`) in`** `object`
+ * * `label` **`disable when`** `disable` **`for (`**`key`**`,`** `value`**`) in`** `object`
+ * * `select` **`as`** `label` **`group by`** `group`
+ * **`for` `(`**`key`**`,`** `value`**`) in`** `object`
+ * * `select` **`as`** `label` **`disable when`** `disable`
+ * **`for` `(`**`key`**`,`** `value`**`) in`** `object`
+ *
+ * Where:
+ *
+ * * `array` / `object`: an expression which evaluates to an array / object to iterate over.
+ * * `value`: local variable which will refer to each item in the `array` or each property value
+ * of `object` during iteration.
+ * * `key`: local variable which will refer to a property name in `object` during iteration.
+ * * `label`: The result of this expression will be the label for `<option>` element. The
+ * `expression` will most likely refer to the `value` variable (e.g. `value.propertyName`).
+ * * `select`: The result of this expression will be bound to the model of the parent `<select>`
+ * element. If not specified, `select` expression will default to `value`.
+ * * `group`: The result of this expression will be used to group options using the `<optgroup>`
+ * DOM element.
+ * * `disable`: The result of this expression will be used to disable the rendered `<option>`
+ * element. Return `true` to disable.
+ * * `trackexpr`: Used when working with an array of objects. The result of this expression will be
+ * used to identify the objects in the array. The `trackexpr` will most likely refer to the
+ * `value` variable (e.g. `value.propertyName`). With this the selection is preserved
+ * even when the options are recreated (e.g. reloaded from the server).
+ *
+ * @example
+ <example module="selectExample">
+ <file name="index.html">
+ <script>
+ angular.module('selectExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.colors = [
+ {name:'black', shade:'dark'},
+ {name:'white', shade:'light', notAnOption: true},
+ {name:'red', shade:'dark'},
+ {name:'blue', shade:'dark', notAnOption: true},
+ {name:'yellow', shade:'light', notAnOption: false}
+ ];
+ $scope.myColor = $scope.colors[2]; // red
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <ul>
+ <li ng-repeat="color in colors">
+ <label>Name: <input ng-model="color.name"></label>
+ <label><input type="checkbox" ng-model="color.notAnOption"> Disabled?</label>
+ <button ng-click="colors.splice($index, 1)" aria-label="Remove">X</button>
+ </li>
+ <li>
+ <button ng-click="colors.push({})">add</button>
+ </li>
+ </ul>
+ <hr/>
+ <label>Color (null not allowed):
+ <select ng-model="myColor" ng-options="color.name for color in colors"></select>
+ </label><br/>
+ <label>Color (null allowed):
+ <span class="nullable">
+ <select ng-model="myColor" ng-options="color.name for color in colors">
+ <option value="">-- choose color --</option>
+ </select>
+ </span></label><br/>
+
+ <label>Color grouped by shade:
+ <select ng-model="myColor" ng-options="color.name group by color.shade for color in colors">
+ </select>
+ </label><br/>
+
+ <label>Color grouped by shade, with some disabled:
+ <select ng-model="myColor"
+ ng-options="color.name group by color.shade disable when color.notAnOption for color in colors">
+ </select>
+ </label><br/>
+
+
+
+ Select <button ng-click="myColor = { name:'not in list', shade: 'other' }">bogus</button>.
+ <br/>
+ <hr/>
+ Currently selected: {{ {selected_color:myColor} }}
+ <div style="border:solid 1px black; height:20px"
+ ng-style="{'background-color':myColor.name}">
+ </div>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should check ng-options', function() {
+ expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');
+ element.all(by.model('myColor')).first().click();
+ element.all(by.css('select[ng-model="myColor"] option')).first().click();
+ expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');
+ element(by.css('.nullable select[ng-model="myColor"]')).click();
+ element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click();
+ expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');
+ });
+ </file>
+ </example>
+ */
+
+// jshint maxlen: false
+// //00001111111111000000000002222222222000000000000000000000333333333300000000000000000000000004444444444400000000000005555555555555550000000006666666666666660000000777777777777777000000000000000888888888800000000000000000009999999999
+var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/;
+ // 1: value expression (valueFn)
+ // 2: label expression (displayFn)
+ // 3: group by expression (groupByFn)
+ // 4: disable when expression (disableWhenFn)
+ // 5: array item variable name
+ // 6: object item key variable name
+ // 7: object item value variable name
+ // 8: collection expression
+ // 9: track by expression
+// jshint maxlen: 100
+
+
+var ngOptionsDirective = ['$compile', '$parse', function($compile, $parse) {
+
+ function parseOptionsExpression(optionsExp, selectElement, scope) {
+
+ var match = optionsExp.match(NG_OPTIONS_REGEXP);
+ if (!(match)) {
+ throw ngOptionsMinErr('iexp',
+ "Expected expression in form of " +
+ "'_select_ (as _label_)? for (_key_,)?_value_ in _collection_'" +
+ " but got '{0}'. Element: {1}",
+ optionsExp, startingTag(selectElement));
+ }
+
+ // Extract the parts from the ngOptions expression
+
+ // The variable name for the value of the item in the collection
+ var valueName = match[5] || match[7];
+ // The variable name for the key of the item in the collection
+ var keyName = match[6];
+
+ // An expression that generates the viewValue for an option if there is a label expression
+ var selectAs = / as /.test(match[0]) && match[1];
+ // An expression that is used to track the id of each object in the options collection
+ var trackBy = match[9];
+ // An expression that generates the viewValue for an option if there is no label expression
+ var valueFn = $parse(match[2] ? match[1] : valueName);
+ var selectAsFn = selectAs && $parse(selectAs);
+ var viewValueFn = selectAsFn || valueFn;
+ var trackByFn = trackBy && $parse(trackBy);
+
+ // Get the value by which we are going to track the option
+ // if we have a trackFn then use that (passing scope and locals)
+ // otherwise just hash the given viewValue
+ var getTrackByValueFn = trackBy ?
+ function(value, locals) { return trackByFn(scope, locals); } :
+ function getHashOfValue(value) { return hashKey(value); };
+ var getTrackByValue = function(value, key) {
+ return getTrackByValueFn(value, getLocals(value, key));
+ };
+
+ var displayFn = $parse(match[2] || match[1]);
+ var groupByFn = $parse(match[3] || '');
+ var disableWhenFn = $parse(match[4] || '');
+ var valuesFn = $parse(match[8]);
+
+ var locals = {};
+ var getLocals = keyName ? function(value, key) {
+ locals[keyName] = key;
+ locals[valueName] = value;
+ return locals;
+ } : function(value) {
+ locals[valueName] = value;
+ return locals;
+ };
+
+
+ function Option(selectValue, viewValue, label, group, disabled) {
+ this.selectValue = selectValue;
+ this.viewValue = viewValue;
+ this.label = label;
+ this.group = group;
+ this.disabled = disabled;
+ }
+
+ function getOptionValuesKeys(optionValues) {
+ var optionValuesKeys;
+
+ if (!keyName && isArrayLike(optionValues)) {
+ optionValuesKeys = optionValues;
+ } else {
+ // if object, extract keys, in enumeration order, unsorted
+ optionValuesKeys = [];
+ for (var itemKey in optionValues) {
+ if (optionValues.hasOwnProperty(itemKey) && itemKey.charAt(0) !== '$') {
+ optionValuesKeys.push(itemKey);
+ }
+ }
+ }
+ return optionValuesKeys;
+ }
+
+ return {
+ trackBy: trackBy,
+ getTrackByValue: getTrackByValue,
+ getWatchables: $parse(valuesFn, function(optionValues) {
+ // Create a collection of things that we would like to watch (watchedArray)
+ // so that they can all be watched using a single $watchCollection
+ // that only runs the handler once if anything changes
+ var watchedArray = [];
+ optionValues = optionValues || [];
+
+ var optionValuesKeys = getOptionValuesKeys(optionValues);
+ var optionValuesLength = optionValuesKeys.length;
+ for (var index = 0; index < optionValuesLength; index++) {
+ var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index];
+ var value = optionValues[key];
+
+ var locals = getLocals(optionValues[key], key);
+ var selectValue = getTrackByValueFn(optionValues[key], locals);
+ watchedArray.push(selectValue);
+
+ // Only need to watch the displayFn if there is a specific label expression
+ if (match[2] || match[1]) {
+ var label = displayFn(scope, locals);
+ watchedArray.push(label);
+ }
+
+ // Only need to watch the disableWhenFn if there is a specific disable expression
+ if (match[4]) {
+ var disableWhen = disableWhenFn(scope, locals);
+ watchedArray.push(disableWhen);
+ }
+ }
+ return watchedArray;
+ }),
+
+ getOptions: function() {
+
+ var optionItems = [];
+ var selectValueMap = {};
+
+ // The option values were already computed in the `getWatchables` fn,
+ // which must have been called to trigger `getOptions`
+ var optionValues = valuesFn(scope) || [];
+ var optionValuesKeys = getOptionValuesKeys(optionValues);
+ var optionValuesLength = optionValuesKeys.length;
+
+ for (var index = 0; index < optionValuesLength; index++) {
+ var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index];
+ var value = optionValues[key];
+ var locals = getLocals(value, key);
+ var viewValue = viewValueFn(scope, locals);
+ var selectValue = getTrackByValueFn(viewValue, locals);
+ var label = displayFn(scope, locals);
+ var group = groupByFn(scope, locals);
+ var disabled = disableWhenFn(scope, locals);
+ var optionItem = new Option(selectValue, viewValue, label, group, disabled);
+
+ optionItems.push(optionItem);
+ selectValueMap[selectValue] = optionItem;
+ }
+
+ return {
+ items: optionItems,
+ selectValueMap: selectValueMap,
+ getOptionFromViewValue: function(value) {
+ return selectValueMap[getTrackByValue(value)];
+ },
+ getViewValueFromOption: function(option) {
+ // If the viewValue could be an object that may be mutated by the application,
+ // we need to make a copy and not return the reference to the value on the option.
+ return trackBy ? angular.copy(option.viewValue) : option.viewValue;
+ }
+ };
+ }
+ };
+ }
+
+
+ // we can't just jqLite('<option>') since jqLite is not smart enough
+ // to create it in <select> and IE barfs otherwise.
+ var optionTemplate = document.createElement('option'),
+ optGroupTemplate = document.createElement('optgroup');
+
+ return {
+ restrict: 'A',
+ terminal: true,
+ require: ['select', '?ngModel'],
+ link: function(scope, selectElement, attr, ctrls) {
+
+ // if ngModel is not defined, we don't need to do anything
+ var ngModelCtrl = ctrls[1];
+ if (!ngModelCtrl) return;
+
+ var selectCtrl = ctrls[0];
+ var multiple = attr.multiple;
+
+ // The emptyOption allows the application developer to provide their own custom "empty"
+ // option when the viewValue does not match any of the option values.
+ var emptyOption;
+ for (var i = 0, children = selectElement.children(), ii = children.length; i < ii; i++) {
+ if (children[i].value === '') {
+ emptyOption = children.eq(i);
+ break;
+ }
+ }
+
+ var providedEmptyOption = !!emptyOption;
+
+ var unknownOption = jqLite(optionTemplate.cloneNode(false));
+ unknownOption.val('?');
+
+ var options;
+ var ngOptions = parseOptionsExpression(attr.ngOptions, selectElement, scope);
+
+
+ var renderEmptyOption = function() {
+ if (!providedEmptyOption) {
+ selectElement.prepend(emptyOption);
+ }
+ selectElement.val('');
+ emptyOption.prop('selected', true); // needed for IE
+ emptyOption.attr('selected', true);
+ };
+
+ var removeEmptyOption = function() {
+ if (!providedEmptyOption) {
+ emptyOption.remove();
+ }
+ };
+
+
+ var renderUnknownOption = function() {
+ selectElement.prepend(unknownOption);
+ selectElement.val('?');
+ unknownOption.prop('selected', true); // needed for IE
+ unknownOption.attr('selected', true);
+ };
+
+ var removeUnknownOption = function() {
+ unknownOption.remove();
+ };
+
+
+ // Update the controller methods for multiple selectable options
+ if (!multiple) {
+
+ selectCtrl.writeValue = function writeNgOptionsValue(value) {
+ var option = options.getOptionFromViewValue(value);
+
+ if (option && !option.disabled) {
+ if (selectElement[0].value !== option.selectValue) {
+ removeUnknownOption();
+ removeEmptyOption();
+
+ selectElement[0].value = option.selectValue;
+ option.element.selected = true;
+ option.element.setAttribute('selected', 'selected');
+ }
+ } else {
+ if (value === null || providedEmptyOption) {
+ removeUnknownOption();
+ renderEmptyOption();
+ } else {
+ removeEmptyOption();
+ renderUnknownOption();
+ }
+ }
+ };
+
+ selectCtrl.readValue = function readNgOptionsValue() {
+
+ var selectedOption = options.selectValueMap[selectElement.val()];
+
+ if (selectedOption && !selectedOption.disabled) {
+ removeEmptyOption();
+ removeUnknownOption();
+ return options.getViewValueFromOption(selectedOption);
+ }
+ return null;
+ };
+
+ // If we are using `track by` then we must watch the tracked value on the model
+ // since ngModel only watches for object identity change
+ if (ngOptions.trackBy) {
+ scope.$watch(
+ function() { return ngOptions.getTrackByValue(ngModelCtrl.$viewValue); },
+ function() { ngModelCtrl.$render(); }
+ );
+ }
+
+ } else {
+
+ ngModelCtrl.$isEmpty = function(value) {
+ return !value || value.length === 0;
+ };
+
+
+ selectCtrl.writeValue = function writeNgOptionsMultiple(value) {
+ options.items.forEach(function(option) {
+ option.element.selected = false;
+ });
+
+ if (value) {
+ value.forEach(function(item) {
+ var option = options.getOptionFromViewValue(item);
+ if (option && !option.disabled) option.element.selected = true;
+ });
+ }
+ };
+
+
+ selectCtrl.readValue = function readNgOptionsMultiple() {
+ var selectedValues = selectElement.val() || [],
+ selections = [];
+
+ forEach(selectedValues, function(value) {
+ var option = options.selectValueMap[value];
+ if (option && !option.disabled) selections.push(options.getViewValueFromOption(option));
+ });
+
+ return selections;
+ };
+
+ // If we are using `track by` then we must watch these tracked values on the model
+ // since ngModel only watches for object identity change
+ if (ngOptions.trackBy) {
+
+ scope.$watchCollection(function() {
+ if (isArray(ngModelCtrl.$viewValue)) {
+ return ngModelCtrl.$viewValue.map(function(value) {
+ return ngOptions.getTrackByValue(value);
+ });
+ }
+ }, function() {
+ ngModelCtrl.$render();
+ });
+
+ }
+ }
+
+
+ if (providedEmptyOption) {
+
+ // we need to remove it before calling selectElement.empty() because otherwise IE will
+ // remove the label from the element. wtf?
+ emptyOption.remove();
+
+ // compile the element since there might be bindings in it
+ $compile(emptyOption)(scope);
+
+ // remove the class, which is added automatically because we recompile the element and it
+ // becomes the compilation root
+ emptyOption.removeClass('ng-scope');
+ } else {
+ emptyOption = jqLite(optionTemplate.cloneNode(false));
+ }
+
+ // We need to do this here to ensure that the options object is defined
+ // when we first hit it in writeNgOptionsValue
+ updateOptions();
+
+ // We will re-render the option elements if the option values or labels change
+ scope.$watchCollection(ngOptions.getWatchables, updateOptions);
+
+ // ------------------------------------------------------------------ //
+
+
+ function updateOptionElement(option, element) {
+ option.element = element;
+ element.disabled = option.disabled;
+ if (option.value !== element.value) element.value = option.selectValue;
+ if (option.label !== element.label) {
+ element.label = option.label;
+ element.textContent = option.label;
+ }
+ }
+
+ function addOrReuseElement(parent, current, type, templateElement) {
+ var element;
+ // Check whether we can reuse the next element
+ if (current && lowercase(current.nodeName) === type) {
+ // The next element is the right type so reuse it
+ element = current;
+ } else {
+ // The next element is not the right type so create a new one
+ element = templateElement.cloneNode(false);
+ if (!current) {
+ // There are no more elements so just append it to the select
+ parent.appendChild(element);
+ } else {
+ // The next element is not a group so insert the new one
+ parent.insertBefore(element, current);
+ }
+ }
+ return element;
+ }
+
+
+ function removeExcessElements(current) {
+ var next;
+ while (current) {
+ next = current.nextSibling;
+ jqLiteRemove(current);
+ current = next;
+ }
+ }
+
+
+ function skipEmptyAndUnknownOptions(current) {
+ var emptyOption_ = emptyOption && emptyOption[0];
+ var unknownOption_ = unknownOption && unknownOption[0];
+
+ if (emptyOption_ || unknownOption_) {
+ while (current &&
+ (current === emptyOption_ ||
+ current === unknownOption_)) {
+ current = current.nextSibling;
+ }
+ }
+ return current;
+ }
+
+
+ function updateOptions() {
+
+ var previousValue = options && selectCtrl.readValue();
+
+ options = ngOptions.getOptions();
+
+ var groupMap = {};
+ var currentElement = selectElement[0].firstChild;
+
+ // Ensure that the empty option is always there if it was explicitly provided
+ if (providedEmptyOption) {
+ selectElement.prepend(emptyOption);
+ }
+
+ currentElement = skipEmptyAndUnknownOptions(currentElement);
+
+ options.items.forEach(function updateOption(option) {
+ var group;
+ var groupElement;
+ var optionElement;
+
+ if (option.group) {
+
+ // This option is to live in a group
+ // See if we have already created this group
+ group = groupMap[option.group];
+
+ if (!group) {
+
+ // We have not already created this group
+ groupElement = addOrReuseElement(selectElement[0],
+ currentElement,
+ 'optgroup',
+ optGroupTemplate);
+ // Move to the next element
+ currentElement = groupElement.nextSibling;
+
+ // Update the label on the group element
+ groupElement.label = option.group;
+
+ // Store it for use later
+ group = groupMap[option.group] = {
+ groupElement: groupElement,
+ currentOptionElement: groupElement.firstChild
+ };
+
+ }
+
+ // So now we have a group for this option we add the option to the group
+ optionElement = addOrReuseElement(group.groupElement,
+ group.currentOptionElement,
+ 'option',
+ optionTemplate);
+ updateOptionElement(option, optionElement);
+ // Move to the next element
+ group.currentOptionElement = optionElement.nextSibling;
+
+ } else {
+
+ // This option is not in a group
+ optionElement = addOrReuseElement(selectElement[0],
+ currentElement,
+ 'option',
+ optionTemplate);
+ updateOptionElement(option, optionElement);
+ // Move to the next element
+ currentElement = optionElement.nextSibling;
+ }
+ });
+
+
+ // Now remove all excess options and group
+ Object.keys(groupMap).forEach(function(key) {
+ removeExcessElements(groupMap[key].currentOptionElement);
+ });
+ removeExcessElements(currentElement);
+
+ ngModelCtrl.$render();
+
+ // Check to see if the value has changed due to the update to the options
+ if (!ngModelCtrl.$isEmpty(previousValue)) {
+ var nextValue = selectCtrl.readValue();
+ if (ngOptions.trackBy ? !equals(previousValue, nextValue) : previousValue !== nextValue) {
+ ngModelCtrl.$setViewValue(nextValue);
+ ngModelCtrl.$render();
+ }
+ }
+
+ }
+
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngPluralize
+ * @restrict EA
+ *
+ * @description
+ * `ngPluralize` is a directive that displays messages according to en-US localization rules.
+ * These rules are bundled with angular.js, but can be overridden
+ * (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive
+ * by specifying the mappings between
+ * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
+ * and the strings to be displayed.
+ *
+ * # Plural categories and explicit number rules
+ * There are two
+ * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
+ * in Angular's default en-US locale: "one" and "other".
+ *
+ * While a plural category may match many numbers (for example, in en-US locale, "other" can match
+ * any number that is not 1), an explicit number rule can only match one number. For example, the
+ * explicit number rule for "3" matches the number 3. There are examples of plural categories
+ * and explicit number rules throughout the rest of this documentation.
+ *
+ * # Configuring ngPluralize
+ * You configure ngPluralize by providing 2 attributes: `count` and `when`.
+ * You can also provide an optional attribute, `offset`.
+ *
+ * The value of the `count` attribute can be either a string or an {@link guide/expression
+ * Angular expression}; these are evaluated on the current scope for its bound value.
+ *
+ * The `when` attribute specifies the mappings between plural categories and the actual
+ * string to be displayed. The value of the attribute should be a JSON object.
+ *
+ * The following example shows how to configure ngPluralize:
+ *
+ * ```html
+ * <ng-pluralize count="personCount"
+ when="{'0': 'Nobody is viewing.',
+ * 'one': '1 person is viewing.',
+ * 'other': '{} people are viewing.'}">
+ * </ng-pluralize>
+ *```
+ *
+ * In the example, `"0: Nobody is viewing."` is an explicit number rule. If you did not
+ * specify this rule, 0 would be matched to the "other" category and "0 people are viewing"
+ * would be shown instead of "Nobody is viewing". You can specify an explicit number rule for
+ * other numbers, for example 12, so that instead of showing "12 people are viewing", you can
+ * show "a dozen people are viewing".
+ *
+ * You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted
+ * into pluralized strings. In the previous example, Angular will replace `{}` with
+ * <span ng-non-bindable>`{{personCount}}`</span>. The closed braces `{}` is a placeholder
+ * for <span ng-non-bindable>{{numberExpression}}</span>.
+ *
+ * If no rule is defined for a category, then an empty string is displayed and a warning is generated.
+ * Note that some locales define more categories than `one` and `other`. For example, fr-fr defines `few` and `many`.
+ *
+ * # Configuring ngPluralize with offset
+ * The `offset` attribute allows further customization of pluralized text, which can result in
+ * a better user experience. For example, instead of the message "4 people are viewing this document",
+ * you might display "John, Kate and 2 others are viewing this document".
+ * The offset attribute allows you to offset a number by any desired value.
+ * Let's take a look at an example:
+ *
+ * ```html
+ * <ng-pluralize count="personCount" offset=2
+ * when="{'0': 'Nobody is viewing.',
+ * '1': '{{person1}} is viewing.',
+ * '2': '{{person1}} and {{person2}} are viewing.',
+ * 'one': '{{person1}}, {{person2}} and one other person are viewing.',
+ * 'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
+ * </ng-pluralize>
+ * ```
+ *
+ * Notice that we are still using two plural categories(one, other), but we added
+ * three explicit number rules 0, 1 and 2.
+ * When one person, perhaps John, views the document, "John is viewing" will be shown.
+ * When three people view the document, no explicit number rule is found, so
+ * an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category.
+ * In this case, plural category 'one' is matched and "John, Mary and one other person are viewing"
+ * is shown.
+ *
+ * Note that when you specify offsets, you must provide explicit number rules for
+ * numbers from 0 up to and including the offset. If you use an offset of 3, for example,
+ * you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for
+ * plural categories "one" and "other".
+ *
+ * @param {string|expression} count The variable to be bound to.
+ * @param {string} when The mapping between plural category to its corresponding strings.
+ * @param {number=} offset Offset to deduct from the total number.
+ *
+ * @example
+ <example module="pluralizeExample">
+ <file name="index.html">
+ <script>
+ angular.module('pluralizeExample', [])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.person1 = 'Igor';
+ $scope.person2 = 'Misko';
+ $scope.personCount = 1;
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <label>Person 1:<input type="text" ng-model="person1" value="Igor" /></label><br/>
+ <label>Person 2:<input type="text" ng-model="person2" value="Misko" /></label><br/>
+ <label>Number of People:<input type="text" ng-model="personCount" value="1" /></label><br/>
+
+ <!--- Example with simple pluralization rules for en locale --->
+ Without Offset:
+ <ng-pluralize count="personCount"
+ when="{'0': 'Nobody is viewing.',
+ 'one': '1 person is viewing.',
+ 'other': '{} people are viewing.'}">
+ </ng-pluralize><br>
+
+ <!--- Example with offset --->
+ With Offset(2):
+ <ng-pluralize count="personCount" offset=2
+ when="{'0': 'Nobody is viewing.',
+ '1': '{{person1}} is viewing.',
+ '2': '{{person1}} and {{person2}} are viewing.',
+ 'one': '{{person1}}, {{person2}} and one other person are viewing.',
+ 'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
+ </ng-pluralize>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should show correct pluralized string', function() {
+ var withoutOffset = element.all(by.css('ng-pluralize')).get(0);
+ var withOffset = element.all(by.css('ng-pluralize')).get(1);
+ var countInput = element(by.model('personCount'));
+
+ expect(withoutOffset.getText()).toEqual('1 person is viewing.');
+ expect(withOffset.getText()).toEqual('Igor is viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('0');
+
+ expect(withoutOffset.getText()).toEqual('Nobody is viewing.');
+ expect(withOffset.getText()).toEqual('Nobody is viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('2');
+
+ expect(withoutOffset.getText()).toEqual('2 people are viewing.');
+ expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('3');
+
+ expect(withoutOffset.getText()).toEqual('3 people are viewing.');
+ expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('4');
+
+ expect(withoutOffset.getText()).toEqual('4 people are viewing.');
+ expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');
+ });
+ it('should show data-bound names', function() {
+ var withOffset = element.all(by.css('ng-pluralize')).get(1);
+ var personCount = element(by.model('personCount'));
+ var person1 = element(by.model('person1'));
+ var person2 = element(by.model('person2'));
+ personCount.clear();
+ personCount.sendKeys('4');
+ person1.clear();
+ person1.sendKeys('Di');
+ person2.clear();
+ person2.sendKeys('Vojta');
+ expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');
+ });
+ </file>
+ </example>
+ */
+var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, $interpolate, $log) {
+ var BRACE = /{}/g,
+ IS_WHEN = /^when(Minus)?(.+)$/;
+
+ return {
+ link: function(scope, element, attr) {
+ var numberExp = attr.count,
+ whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs
+ offset = attr.offset || 0,
+ whens = scope.$eval(whenExp) || {},
+ whensExpFns = {},
+ startSymbol = $interpolate.startSymbol(),
+ endSymbol = $interpolate.endSymbol(),
+ braceReplacement = startSymbol + numberExp + '-' + offset + endSymbol,
+ watchRemover = angular.noop,
+ lastCount;
+
+ forEach(attr, function(expression, attributeName) {
+ var tmpMatch = IS_WHEN.exec(attributeName);
+ if (tmpMatch) {
+ var whenKey = (tmpMatch[1] ? '-' : '') + lowercase(tmpMatch[2]);
+ whens[whenKey] = element.attr(attr.$attr[attributeName]);
+ }
+ });
+ forEach(whens, function(expression, key) {
+ whensExpFns[key] = $interpolate(expression.replace(BRACE, braceReplacement));
+
+ });
+
+ scope.$watch(numberExp, function ngPluralizeWatchAction(newVal) {
+ var count = parseFloat(newVal);
+ var countIsNaN = isNaN(count);
+
+ if (!countIsNaN && !(count in whens)) {
+ // If an explicit number rule such as 1, 2, 3... is defined, just use it.
+ // Otherwise, check it against pluralization rules in $locale service.
+ count = $locale.pluralCat(count - offset);
+ }
+
+ // If both `count` and `lastCount` are NaN, we don't need to re-register a watch.
+ // In JS `NaN !== NaN`, so we have to exlicitly check.
+ if ((count !== lastCount) && !(countIsNaN && isNumber(lastCount) && isNaN(lastCount))) {
+ watchRemover();
+ var whenExpFn = whensExpFns[count];
+ if (isUndefined(whenExpFn)) {
+ if (newVal != null) {
+ $log.debug("ngPluralize: no rule defined for '" + count + "' in " + whenExp);
+ }
+ watchRemover = noop;
+ updateElementText();
+ } else {
+ watchRemover = scope.$watch(whenExpFn, updateElementText);
+ }
+ lastCount = count;
+ }
+ });
+
+ function updateElementText(newText) {
+ element.text(newText || '');
+ }
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngRepeat
+ * @multiElement
+ *
+ * @description
+ * The `ngRepeat` directive instantiates a template once per item from a collection. Each template
+ * instance gets its own scope, where the given loop variable is set to the current collection item,
+ * and `$index` is set to the item index or key.
+ *
+ * Special properties are exposed on the local scope of each template instance, including:
+ *
+ * | Variable | Type | Details |
+ * |-----------|-----------------|-----------------------------------------------------------------------------|
+ * | `$index` | {@type number} | iterator offset of the repeated element (0..length-1) |
+ * | `$first` | {@type boolean} | true if the repeated element is first in the iterator. |
+ * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. |
+ * | `$last` | {@type boolean} | true if the repeated element is last in the iterator. |
+ * | `$even` | {@type boolean} | true if the iterator position `$index` is even (otherwise false). |
+ * | `$odd` | {@type boolean} | true if the iterator position `$index` is odd (otherwise false). |
+ *
+ * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.
+ * This may be useful when, for instance, nesting ngRepeats.
+ *
+ *
+ * # Iterating over object properties
+ *
+ * It is possible to get `ngRepeat` to iterate over the properties of an object using the following
+ * syntax:
+ *
+ * ```js
+ * <div ng-repeat="(key, value) in myObj"> ... </div>
+ * ```
+ *
+ * You need to be aware that the JavaScript specification does not define the order of keys
+ * returned for an object. (To mitigate this in Angular 1.3 the `ngRepeat` directive
+ * used to sort the keys alphabetically.)
+ *
+ * Version 1.4 removed the alphabetic sorting. We now rely on the order returned by the browser
+ * when running `for key in myObj`. It seems that browsers generally follow the strategy of providing
+ * keys in the order in which they were defined, although there are exceptions when keys are deleted
+ * and reinstated. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_issues
+ *
+ * If this is not desired, the recommended workaround is to convert your object into an array
+ * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could
+ * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)
+ * or implement a `$watch` on the object yourself.
+ *
+ *
+ * # Tracking and Duplicates
+ *
+ * When the contents of the collection change, `ngRepeat` makes the corresponding changes to the DOM:
+ *
+ * * When an item is added, a new instance of the template is added to the DOM.
+ * * When an item is removed, its template instance is removed from the DOM.
+ * * When items are reordered, their respective templates are reordered in the DOM.
+ *
+ * By default, `ngRepeat` does not allow duplicate items in arrays. This is because when
+ * there are duplicates, it is not possible to maintain a one-to-one mapping between collection
+ * items and DOM elements.
+ *
+ * If you do need to repeat duplicate items, you can substitute the default tracking behavior
+ * with your own using the `track by` expression.
+ *
+ * For example, you may track items by the index of each item in the collection, using the
+ * special scope property `$index`:
+ * ```html
+ * <div ng-repeat="n in [42, 42, 43, 43] track by $index">
+ * {{n}}
+ * </div>
+ * ```
+ *
+ * You may use arbitrary expressions in `track by`, including references to custom functions
+ * on the scope:
+ * ```html
+ * <div ng-repeat="n in [42, 42, 43, 43] track by myTrackingFunction(n)">
+ * {{n}}
+ * </div>
+ * ```
+ *
+ * If you are working with objects that have an identifier property, you can track
+ * by the identifier instead of the whole object. Should you reload your data later, `ngRepeat`
+ * will not have to rebuild the DOM elements for items it has already rendered, even if the
+ * JavaScript objects in the collection have been substituted for new ones:
+ * ```html
+ * <div ng-repeat="model in collection track by model.id">
+ * {{model.name}}
+ * </div>
+ * ```
+ *
+ * When no `track by` expression is provided, it is equivalent to tracking by the built-in
+ * `$id` function, which tracks items by their identity:
+ * ```html
+ * <div ng-repeat="obj in collection track by $id(obj)">
+ * {{obj.prop}}
+ * </div>
+ * ```
+ *
+ * <div class="alert alert-warning">
+ * **Note:** `track by` must always be the last expression:
+ * </div>
+ * ```
+ * <div ng-repeat="model in collection | orderBy: 'id' as filtered_result track by model.id">
+ * {{model.name}}
+ * </div>
+ * ```
+ *
+ * # Special repeat start and end points
+ * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
+ * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
+ * The **ng-repeat-start** directive works the same as **ng-repeat**, but will repeat all the HTML code (including the tag it's defined on)
+ * up to and including the ending HTML tag where **ng-repeat-end** is placed.
+ *
+ * The example below makes use of this feature:
+ * ```html
+ * <header ng-repeat-start="item in items">
+ * Header {{ item }}
+ * </header>
+ * <div class="body">
+ * Body {{ item }}
+ * </div>
+ * <footer ng-repeat-end>
+ * Footer {{ item }}
+ * </footer>
+ * ```
+ *
+ * And with an input of {@type ['A','B']} for the items variable in the example above, the output will evaluate to:
+ * ```html
+ * <header>
+ * Header A
+ * </header>
+ * <div class="body">
+ * Body A
+ * </div>
+ * <footer>
+ * Footer A
+ * </footer>
+ * <header>
+ * Header B
+ * </header>
+ * <div class="body">
+ * Body B
+ * </div>
+ * <footer>
+ * Footer B
+ * </footer>
+ * ```
+ *
+ * The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such
+ * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**).
+ *
+ * @animations
+ * **.enter** - when a new item is added to the list or when an item is revealed after a filter
+ *
+ * **.leave** - when an item is removed from the list or when an item is filtered out
+ *
+ * **.move** - when an adjacent item is filtered out causing a reorder or when the item contents are reordered
+ *
+ * @element ANY
+ * @scope
+ * @priority 1000
+ * @param {repeat_expression} ngRepeat The expression indicating how to enumerate a collection. These
+ * formats are currently supported:
+ *
+ * * `variable in expression` – where variable is the user defined loop variable and `expression`
+ * is a scope expression giving the collection to enumerate.
+ *
+ * For example: `album in artist.albums`.
+ *
+ * * `(key, value) in expression` – where `key` and `value` can be any user defined identifiers,
+ * and `expression` is the scope expression giving the collection to enumerate.
+ *
+ * For example: `(name, age) in {'adam':10, 'amalie':12}`.
+ *
+ * * `variable in expression track by tracking_expression` – You can also provide an optional tracking expression
+ * which can be used to associate the objects in the collection with the DOM elements. If no tracking expression
+ * is specified, ng-repeat associates elements by identity. It is an error to have
+ * more than one tracking expression value resolve to the same key. (This would mean that two distinct objects are
+ * mapped to the same DOM element, which is not possible.)
+ *
+ * Note that the tracking expression must come last, after any filters, and the alias expression.
+ *
+ * For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements
+ * will be associated by item identity in the array.
+ *
+ * For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique
+ * `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements
+ * with the corresponding item in the array by identity. Moving the same object in array would move the DOM
+ * element in the same way in the DOM.
+ *
+ * For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this
+ * case the object identity does not matter. Two objects are considered equivalent as long as their `id`
+ * property is same.
+ *
+ * For example: `item in items | filter:searchText track by item.id` is a pattern that might be used to apply a filter
+ * to items in conjunction with a tracking expression.
+ *
+ * * `variable in expression as alias_expression` – You can also provide an optional alias expression which will then store the
+ * intermediate results of the repeater after the filters have been applied. Typically this is used to render a special message
+ * when a filter is active on the repeater, but the filtered result set is empty.
+ *
+ * For example: `item in items | filter:x as results` will store the fragment of the repeated items as `results`, but only after
+ * the items have been processed through the filter.
+ *
+ * Please note that `as [variable name] is not an operator but rather a part of ngRepeat micro-syntax so it can be used only at the end
+ * (and not as operator, inside an expression).
+ *
+ * For example: `item in items | filter : x | orderBy : order | limitTo : limit as results` .
+ *
+ * @example
+ * This example initializes the scope to a list of names and
+ * then uses `ngRepeat` to display every person:
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <div ng-init="friends = [
+ {name:'John', age:25, gender:'boy'},
+ {name:'Jessie', age:30, gender:'girl'},
+ {name:'Johanna', age:28, gender:'girl'},
+ {name:'Joy', age:15, gender:'girl'},
+ {name:'Mary', age:28, gender:'girl'},
+ {name:'Peter', age:95, gender:'boy'},
+ {name:'Sebastian', age:50, gender:'boy'},
+ {name:'Erika', age:27, gender:'girl'},
+ {name:'Patrick', age:40, gender:'boy'},
+ {name:'Samantha', age:60, gender:'girl'}
+ ]">
+ I have {{friends.length}} friends. They are:
+ <input type="search" ng-model="q" placeholder="filter friends..." aria-label="filter friends" />
+ <ul class="example-animate-container">
+ <li class="animate-repeat" ng-repeat="friend in friends | filter:q as results">
+ [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
+ </li>
+ <li class="animate-repeat" ng-if="results.length == 0">
+ <strong>No results found...</strong>
+ </li>
+ </ul>
+ </div>
+ </file>
+ <file name="animations.css">
+ .example-animate-container {
+ background:white;
+ border:1px solid black;
+ list-style:none;
+ margin:0;
+ padding:0 10px;
+ }
+
+ .animate-repeat {
+ line-height:40px;
+ list-style:none;
+ box-sizing:border-box;
+ }
+
+ .animate-repeat.ng-move,
+ .animate-repeat.ng-enter,
+ .animate-repeat.ng-leave {
+ -webkit-transition:all linear 0.5s;
+ transition:all linear 0.5s;
+ }
+
+ .animate-repeat.ng-leave.ng-leave-active,
+ .animate-repeat.ng-move,
+ .animate-repeat.ng-enter {
+ opacity:0;
+ max-height:0;
+ }
+
+ .animate-repeat.ng-leave,
+ .animate-repeat.ng-move.ng-move-active,
+ .animate-repeat.ng-enter.ng-enter-active {
+ opacity:1;
+ max-height:40px;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var friends = element.all(by.repeater('friend in friends'));
+
+ it('should render initial data set', function() {
+ expect(friends.count()).toBe(10);
+ expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');
+ expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');
+ expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');
+ expect(element(by.binding('friends.length')).getText())
+ .toMatch("I have 10 friends. They are:");
+ });
+
+ it('should update repeater when filter predicate changes', function() {
+ expect(friends.count()).toBe(10);
+
+ element(by.model('q')).sendKeys('ma');
+
+ expect(friends.count()).toBe(2);
+ expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');
+ expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');
+ });
+ </file>
+ </example>
+ */
+var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
+ var NG_REMOVED = '$$NG_REMOVED';
+ var ngRepeatMinErr = minErr('ngRepeat');
+
+ var updateScope = function(scope, index, valueIdentifier, value, keyIdentifier, key, arrayLength) {
+ // TODO(perf): generate setters to shave off ~40ms or 1-1.5%
+ scope[valueIdentifier] = value;
+ if (keyIdentifier) scope[keyIdentifier] = key;
+ scope.$index = index;
+ scope.$first = (index === 0);
+ scope.$last = (index === (arrayLength - 1));
+ scope.$middle = !(scope.$first || scope.$last);
+ // jshint bitwise: false
+ scope.$odd = !(scope.$even = (index&1) === 0);
+ // jshint bitwise: true
+ };
+
+ var getBlockStart = function(block) {
+ return block.clone[0];
+ };
+
+ var getBlockEnd = function(block) {
+ return block.clone[block.clone.length - 1];
+ };
+
+
+ return {
+ restrict: 'A',
+ multiElement: true,
+ transclude: 'element',
+ priority: 1000,
+ terminal: true,
+ $$tlb: true,
+ compile: function ngRepeatCompile($element, $attr) {
+ var expression = $attr.ngRepeat;
+ var ngRepeatEndComment = document.createComment(' end ngRepeat: ' + expression + ' ');
+
+ var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
+
+ if (!match) {
+ throw ngRepeatMinErr('iexp', "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",
+ expression);
+ }
+
+ var lhs = match[1];
+ var rhs = match[2];
+ var aliasAs = match[3];
+ var trackByExp = match[4];
+
+ match = lhs.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);
+
+ if (!match) {
+ throw ngRepeatMinErr('iidexp', "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",
+ lhs);
+ }
+ var valueIdentifier = match[3] || match[1];
+ var keyIdentifier = match[2];
+
+ if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||
+ /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
+ throw ngRepeatMinErr('badident', "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
+ aliasAs);
+ }
+
+ var trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn;
+ var hashFnLocals = {$id: hashKey};
+
+ if (trackByExp) {
+ trackByExpGetter = $parse(trackByExp);
+ } else {
+ trackByIdArrayFn = function(key, value) {
+ return hashKey(value);
+ };
+ trackByIdObjFn = function(key) {
+ return key;
+ };
+ }
+
+ return function ngRepeatLink($scope, $element, $attr, ctrl, $transclude) {
+
+ if (trackByExpGetter) {
+ trackByIdExpFn = function(key, value, index) {
+ // assign key, value, and $index to the locals so that they can be used in hash functions
+ if (keyIdentifier) hashFnLocals[keyIdentifier] = key;
+ hashFnLocals[valueIdentifier] = value;
+ hashFnLocals.$index = index;
+ return trackByExpGetter($scope, hashFnLocals);
+ };
+ }
+
+ // Store a list of elements from previous run. This is a hash where key is the item from the
+ // iterator, and the value is objects with following properties.
+ // - scope: bound scope
+ // - element: previous element.
+ // - index: position
+ //
+ // We are using no-proto object so that we don't need to guard against inherited props via
+ // hasOwnProperty.
+ var lastBlockMap = createMap();
+
+ //watch props
+ $scope.$watchCollection(rhs, function ngRepeatAction(collection) {
+ var index, length,
+ previousNode = $element[0], // node that cloned nodes should be inserted after
+ // initialized to the comment node anchor
+ nextNode,
+ // Same as lastBlockMap but it has the current state. It will become the
+ // lastBlockMap on the next iteration.
+ nextBlockMap = createMap(),
+ collectionLength,
+ key, value, // key/value of iteration
+ trackById,
+ trackByIdFn,
+ collectionKeys,
+ block, // last object information {scope, element, id}
+ nextBlockOrder,
+ elementsToRemove;
+
+ if (aliasAs) {
+ $scope[aliasAs] = collection;
+ }
+
+ if (isArrayLike(collection)) {
+ collectionKeys = collection;
+ trackByIdFn = trackByIdExpFn || trackByIdArrayFn;
+ } else {
+ trackByIdFn = trackByIdExpFn || trackByIdObjFn;
+ // if object, extract keys, in enumeration order, unsorted
+ collectionKeys = [];
+ for (var itemKey in collection) {
+ if (collection.hasOwnProperty(itemKey) && itemKey.charAt(0) !== '$') {
+ collectionKeys.push(itemKey);
+ }
+ }
+ }
+
+ collectionLength = collectionKeys.length;
+ nextBlockOrder = new Array(collectionLength);
+
+ // locate existing items
+ for (index = 0; index < collectionLength; index++) {
+ key = (collection === collectionKeys) ? index : collectionKeys[index];
+ value = collection[key];
+ trackById = trackByIdFn(key, value, index);
+ if (lastBlockMap[trackById]) {
+ // found previously seen block
+ block = lastBlockMap[trackById];
+ delete lastBlockMap[trackById];
+ nextBlockMap[trackById] = block;
+ nextBlockOrder[index] = block;
+ } else if (nextBlockMap[trackById]) {
+ // if collision detected. restore lastBlockMap and throw an error
+ forEach(nextBlockOrder, function(block) {
+ if (block && block.scope) lastBlockMap[block.id] = block;
+ });
+ throw ngRepeatMinErr('dupes',
+ "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",
+ expression, trackById, value);
+ } else {
+ // new never before seen block
+ nextBlockOrder[index] = {id: trackById, scope: undefined, clone: undefined};
+ nextBlockMap[trackById] = true;
+ }
+ }
+
+ // remove leftover items
+ for (var blockKey in lastBlockMap) {
+ block = lastBlockMap[blockKey];
+ elementsToRemove = getBlockNodes(block.clone);
+ $animate.leave(elementsToRemove);
+ if (elementsToRemove[0].parentNode) {
+ // if the element was not removed yet because of pending animation, mark it as deleted
+ // so that we can ignore it later
+ for (index = 0, length = elementsToRemove.length; index < length; index++) {
+ elementsToRemove[index][NG_REMOVED] = true;
+ }
+ }
+ block.scope.$destroy();
+ }
+
+ // we are not using forEach for perf reasons (trying to avoid #call)
+ for (index = 0; index < collectionLength; index++) {
+ key = (collection === collectionKeys) ? index : collectionKeys[index];
+ value = collection[key];
+ block = nextBlockOrder[index];
+
+ if (block.scope) {
+ // if we have already seen this object, then we need to reuse the
+ // associated scope/element
+
+ nextNode = previousNode;
+
+ // skip nodes that are already pending removal via leave animation
+ do {
+ nextNode = nextNode.nextSibling;
+ } while (nextNode && nextNode[NG_REMOVED]);
+
+ if (getBlockStart(block) != nextNode) {
+ // existing item which got moved
+ $animate.move(getBlockNodes(block.clone), null, jqLite(previousNode));
+ }
+ previousNode = getBlockEnd(block);
+ updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
+ } else {
+ // new item which we don't know about
+ $transclude(function ngRepeatTransclude(clone, scope) {
+ block.scope = scope;
+ // http://jsperf.com/clone-vs-createcomment
+ var endNode = ngRepeatEndComment.cloneNode(false);
+ clone[clone.length++] = endNode;
+
+ // TODO(perf): support naked previousNode in `enter` to avoid creation of jqLite wrapper?
+ $animate.enter(clone, null, jqLite(previousNode));
+ previousNode = endNode;
+ // Note: We only need the first/last node of the cloned nodes.
+ // However, we need to keep the reference to the jqlite wrapper as it might be changed later
+ // by a directive with templateUrl when its template arrives.
+ block.clone = clone;
+ nextBlockMap[block.id] = block;
+ updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
+ });
+ }
+ }
+ lastBlockMap = nextBlockMap;
+ });
+ };
+ }
+ };
+}];
+
+var NG_HIDE_CLASS = 'ng-hide';
+var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate';
+/**
+ * @ngdoc directive
+ * @name ngShow
+ * @multiElement
+ *
+ * @description
+ * The `ngShow` directive shows or hides the given HTML element based on the expression
+ * provided to the `ngShow` attribute. The element is shown or hidden by removing or adding
+ * the `.ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined
+ * in AngularJS and sets the display style to none (using an !important flag).
+ * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
+ *
+ * ```html
+ * <!-- when $scope.myValue is truthy (element is visible) -->
+ * <div ng-show="myValue"></div>
+ *
+ * <!-- when $scope.myValue is falsy (element is hidden) -->
+ * <div ng-show="myValue" class="ng-hide"></div>
+ * ```
+ *
+ * When the `ngShow` expression evaluates to a falsy value then the `.ng-hide` CSS class is added to the class
+ * attribute on the element causing it to become hidden. When truthy, the `.ng-hide` CSS class is removed
+ * from the element causing the element not to appear hidden.
+ *
+ * ## Why is !important used?
+ *
+ * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector
+ * can be easily overridden by heavier selectors. For example, something as simple
+ * as changing the display style on a HTML list item would make hidden elements appear visible.
+ * This also becomes a bigger issue when dealing with CSS frameworks.
+ *
+ * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector
+ * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the
+ * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.
+ *
+ * ### Overriding `.ng-hide`
+ *
+ * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
+ * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
+ * class CSS. Note that the selector that needs to be used is actually `.ng-hide:not(.ng-hide-animate)` to cope
+ * with extra animation classes that can be added.
+ *
+ * ```css
+ * .ng-hide:not(.ng-hide-animate) {
+ * /* this is just another form of hiding an element */
+ * display: block!important;
+ * position: absolute;
+ * top: -9999px;
+ * left: -9999px;
+ * }
+ * ```
+ *
+ * By default you don't need to override in CSS anything and the animations will work around the display style.
+ *
+ * ## A note about animations with `ngShow`
+ *
+ * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression
+ * is true and false. This system works like the animation system present with ngClass except that
+ * you must also include the !important flag to override the display property
+ * so that you can perform an animation when the element is hidden during the time of the animation.
+ *
+ * ```css
+ * //
+ * //a working example can be found at the bottom of this page
+ * //
+ * .my-element.ng-hide-add, .my-element.ng-hide-remove {
+ * /* this is required as of 1.3x to properly
+ * apply all styling in a show/hide animation */
+ * transition: 0s linear all;
+ * }
+ *
+ * .my-element.ng-hide-add-active,
+ * .my-element.ng-hide-remove-active {
+ * /* the transition is defined in the active class */
+ * transition: 1s linear all;
+ * }
+ *
+ * .my-element.ng-hide-add { ... }
+ * .my-element.ng-hide-add.ng-hide-add-active { ... }
+ * .my-element.ng-hide-remove { ... }
+ * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
+ * ```
+ *
+ * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display
+ * property to block during animation states--ngAnimate will handle the style toggling automatically for you.
+ *
+ * @animations
+ * addClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a truthy value and the just before contents are set to visible
+ * removeClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden
+ *
+ * @element ANY
+ * @param {expression} ngShow If the {@link guide/expression expression} is truthy
+ * then the element is shown or hidden respectively.
+ *
+ * @example
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ Click me: <input type="checkbox" ng-model="checked" aria-label="Toggle ngHide"><br/>
+ <div>
+ Show:
+ <div class="check-element animate-show" ng-show="checked">
+ <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
+ </div>
+ </div>
+ <div>
+ Hide:
+ <div class="check-element animate-show" ng-hide="checked">
+ <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
+ </div>
+ </div>
+ </file>
+ <file name="glyphicons.css">
+ @import url(../../components/bootstrap-3.1.1/css/bootstrap.css);
+ </file>
+ <file name="animations.css">
+ .animate-show {
+ line-height: 20px;
+ opacity: 1;
+ padding: 10px;
+ border: 1px solid black;
+ background: white;
+ }
+
+ .animate-show.ng-hide-add.ng-hide-add-active,
+ .animate-show.ng-hide-remove.ng-hide-remove-active {
+ -webkit-transition: all linear 0.5s;
+ transition: all linear 0.5s;
+ }
+
+ .animate-show.ng-hide {
+ line-height: 0;
+ opacity: 0;
+ padding: 0 10px;
+ }
+
+ .check-element {
+ padding: 10px;
+ border: 1px solid black;
+ background: white;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
+ var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
+
+ it('should check ng-show / ng-hide', function() {
+ expect(thumbsUp.isDisplayed()).toBeFalsy();
+ expect(thumbsDown.isDisplayed()).toBeTruthy();
+
+ element(by.model('checked')).click();
+
+ expect(thumbsUp.isDisplayed()).toBeTruthy();
+ expect(thumbsDown.isDisplayed()).toBeFalsy();
+ });
+ </file>
+ </example>
+ */
+var ngShowDirective = ['$animate', function($animate) {
+ return {
+ restrict: 'A',
+ multiElement: true,
+ link: function(scope, element, attr) {
+ scope.$watch(attr.ngShow, function ngShowWatchAction(value) {
+ // we're adding a temporary, animation-specific class for ng-hide since this way
+ // we can control when the element is actually displayed on screen without having
+ // to have a global/greedy CSS selector that breaks when other animations are run.
+ // Read: https://github.com/angular/angular.js/issues/9103#issuecomment-58335845
+ $animate[value ? 'removeClass' : 'addClass'](element, NG_HIDE_CLASS, {
+ tempClasses: NG_HIDE_IN_PROGRESS_CLASS
+ });
+ });
+ }
+ };
+}];
+
+
+/**
+ * @ngdoc directive
+ * @name ngHide
+ * @multiElement
+ *
+ * @description
+ * The `ngHide` directive shows or hides the given HTML element based on the expression
+ * provided to the `ngHide` attribute. The element is shown or hidden by removing or adding
+ * the `ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined
+ * in AngularJS and sets the display style to none (using an !important flag).
+ * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
+ *
+ * ```html
+ * <!-- when $scope.myValue is truthy (element is hidden) -->
+ * <div ng-hide="myValue" class="ng-hide"></div>
+ *
+ * <!-- when $scope.myValue is falsy (element is visible) -->
+ * <div ng-hide="myValue"></div>
+ * ```
+ *
+ * When the `ngHide` expression evaluates to a truthy value then the `.ng-hide` CSS class is added to the class
+ * attribute on the element causing it to become hidden. When falsy, the `.ng-hide` CSS class is removed
+ * from the element causing the element not to appear hidden.
+ *
+ * ## Why is !important used?
+ *
+ * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector
+ * can be easily overridden by heavier selectors. For example, something as simple
+ * as changing the display style on a HTML list item would make hidden elements appear visible.
+ * This also becomes a bigger issue when dealing with CSS frameworks.
+ *
+ * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector
+ * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the
+ * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.
+ *
+ * ### Overriding `.ng-hide`
+ *
+ * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
+ * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
+ * class in CSS:
+ *
+ * ```css
+ * .ng-hide {
+ * /* this is just another form of hiding an element */
+ * display: block!important;
+ * position: absolute;
+ * top: -9999px;
+ * left: -9999px;
+ * }
+ * ```
+ *
+ * By default you don't need to override in CSS anything and the animations will work around the display style.
+ *
+ * ## A note about animations with `ngHide`
+ *
+ * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression
+ * is true and false. This system works like the animation system present with ngClass, except that the `.ng-hide`
+ * CSS class is added and removed for you instead of your own CSS class.
+ *
+ * ```css
+ * //
+ * //a working example can be found at the bottom of this page
+ * //
+ * .my-element.ng-hide-add, .my-element.ng-hide-remove {
+ * transition: 0.5s linear all;
+ * }
+ *
+ * .my-element.ng-hide-add { ... }
+ * .my-element.ng-hide-add.ng-hide-add-active { ... }
+ * .my-element.ng-hide-remove { ... }
+ * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
+ * ```
+ *
+ * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display
+ * property to block during animation states--ngAnimate will handle the style toggling automatically for you.
+ *
+ * @animations
+ * removeClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden
+ * addClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a non truthy value and just before the contents are set to visible
+ *
+ * @element ANY
+ * @param {expression} ngHide If the {@link guide/expression expression} is truthy then
+ * the element is shown or hidden respectively.
+ *
+ * @example
+ <example module="ngAnimate" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ Click me: <input type="checkbox" ng-model="checked" aria-label="Toggle ngShow"><br/>
+ <div>
+ Show:
+ <div class="check-element animate-hide" ng-show="checked">
+ <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
+ </div>
+ </div>
+ <div>
+ Hide:
+ <div class="check-element animate-hide" ng-hide="checked">
+ <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
+ </div>
+ </div>
+ </file>
+ <file name="glyphicons.css">
+ @import url(../../components/bootstrap-3.1.1/css/bootstrap.css);
+ </file>
+ <file name="animations.css">
+ .animate-hide {
+ -webkit-transition: all linear 0.5s;
+ transition: all linear 0.5s;
+ line-height: 20px;
+ opacity: 1;
+ padding: 10px;
+ border: 1px solid black;
+ background: white;
+ }
+
+ .animate-hide.ng-hide {
+ line-height: 0;
+ opacity: 0;
+ padding: 0 10px;
+ }
+
+ .check-element {
+ padding: 10px;
+ border: 1px solid black;
+ background: white;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
+ var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
+
+ it('should check ng-show / ng-hide', function() {
+ expect(thumbsUp.isDisplayed()).toBeFalsy();
+ expect(thumbsDown.isDisplayed()).toBeTruthy();
+
+ element(by.model('checked')).click();
+
+ expect(thumbsUp.isDisplayed()).toBeTruthy();
+ expect(thumbsDown.isDisplayed()).toBeFalsy();
+ });
+ </file>
+ </example>
+ */
+var ngHideDirective = ['$animate', function($animate) {
+ return {
+ restrict: 'A',
+ multiElement: true,
+ link: function(scope, element, attr) {
+ scope.$watch(attr.ngHide, function ngHideWatchAction(value) {
+ // The comment inside of the ngShowDirective explains why we add and
+ // remove a temporary class for the show/hide animation
+ $animate[value ? 'addClass' : 'removeClass'](element,NG_HIDE_CLASS, {
+ tempClasses: NG_HIDE_IN_PROGRESS_CLASS
+ });
+ });
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngStyle
+ * @restrict AC
+ *
+ * @description
+ * The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.
+ *
+ * @element ANY
+ * @param {expression} ngStyle
+ *
+ * {@link guide/expression Expression} which evals to an
+ * object whose keys are CSS style names and values are corresponding values for those CSS
+ * keys.
+ *
+ * Since some CSS style names are not valid keys for an object, they must be quoted.
+ * See the 'background-color' style in the example below.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <input type="button" value="set color" ng-click="myStyle={color:'red'}">
+ <input type="button" value="set background" ng-click="myStyle={'background-color':'blue'}">
+ <input type="button" value="clear" ng-click="myStyle={}">
+ <br/>
+ <span ng-style="myStyle">Sample Text</span>
+ <pre>myStyle={{myStyle}}</pre>
+ </file>
+ <file name="style.css">
+ span {
+ color: black;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var colorSpan = element(by.css('span'));
+
+ it('should check ng-style', function() {
+ expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
+ element(by.css('input[value=\'set color\']')).click();
+ expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');
+ element(by.css('input[value=clear]')).click();
+ expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
+ });
+ </file>
+ </example>
+ */
+var ngStyleDirective = ngDirective(function(scope, element, attr) {
+ scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {
+ if (oldStyles && (newStyles !== oldStyles)) {
+ forEach(oldStyles, function(val, style) { element.css(style, '');});
+ }
+ if (newStyles) element.css(newStyles);
+ }, true);
+});
+
+/**
+ * @ngdoc directive
+ * @name ngSwitch
+ * @restrict EA
+ *
+ * @description
+ * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.
+ * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location
+ * as specified in the template.
+ *
+ * The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it
+ * from the template cache), `ngSwitch` simply chooses one of the nested elements and makes it visible based on which element
+ * matches the value obtained from the evaluated expression. In other words, you define a container element
+ * (where you place the directive), place an expression on the **`on="..."` attribute**
+ * (or the **`ng-switch="..."` attribute**), define any inner elements inside of the directive and place
+ * a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on
+ * expression is evaluated. If a matching expression is not found via a when attribute then an element with the default
+ * attribute is displayed.
+ *
+ * <div class="alert alert-info">
+ * Be aware that the attribute values to match against cannot be expressions. They are interpreted
+ * as literal string values to match against.
+ * For example, **`ng-switch-when="someVal"`** will match against the string `"someVal"` not against the
+ * value of the expression `$scope.someVal`.
+ * </div>
+
+ * @animations
+ * enter - happens after the ngSwitch contents change and the matched child element is placed inside the container
+ * leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM
+ *
+ * @usage
+ *
+ * ```
+ * <ANY ng-switch="expression">
+ * <ANY ng-switch-when="matchValue1">...</ANY>
+ * <ANY ng-switch-when="matchValue2">...</ANY>
+ * <ANY ng-switch-default>...</ANY>
+ * </ANY>
+ * ```
+ *
+ *
+ * @scope
+ * @priority 1200
+ * @param {*} ngSwitch|on expression to match against <code>ng-switch-when</code>.
+ * On child elements add:
+ *
+ * * `ngSwitchWhen`: the case statement to match against. If match then this
+ * case will be displayed. If the same match appears multiple times, all the
+ * elements will be displayed.
+ * * `ngSwitchDefault`: the default case when no other case match. If there
+ * are multiple default cases, all of them will be displayed when no other
+ * case match.
+ *
+ *
+ * @example
+ <example module="switchExample" deps="angular-animate.js" animations="true">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <select ng-model="selection" ng-options="item for item in items">
+ </select>
+ <code>selection={{selection}}</code>
+ <hr/>
+ <div class="animate-switch-container"
+ ng-switch on="selection">
+ <div class="animate-switch" ng-switch-when="settings">Settings Div</div>
+ <div class="animate-switch" ng-switch-when="home">Home Span</div>
+ <div class="animate-switch" ng-switch-default>default</div>
+ </div>
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('switchExample', ['ngAnimate'])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.items = ['settings', 'home', 'other'];
+ $scope.selection = $scope.items[0];
+ }]);
+ </file>
+ <file name="animations.css">
+ .animate-switch-container {
+ position:relative;
+ background:white;
+ border:1px solid black;
+ height:40px;
+ overflow:hidden;
+ }
+
+ .animate-switch {
+ padding:10px;
+ }
+
+ .animate-switch.ng-animate {
+ -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+
+ position:absolute;
+ top:0;
+ left:0;
+ right:0;
+ bottom:0;
+ }
+
+ .animate-switch.ng-leave.ng-leave-active,
+ .animate-switch.ng-enter {
+ top:-50px;
+ }
+ .animate-switch.ng-leave,
+ .animate-switch.ng-enter.ng-enter-active {
+ top:0;
+ }
+ </file>
+ <file name="protractor.js" type="protractor">
+ var switchElem = element(by.css('[ng-switch]'));
+ var select = element(by.model('selection'));
+
+ it('should start in settings', function() {
+ expect(switchElem.getText()).toMatch(/Settings Div/);
+ });
+ it('should change to home', function() {
+ select.all(by.css('option')).get(1).click();
+ expect(switchElem.getText()).toMatch(/Home Span/);
+ });
+ it('should select default', function() {
+ select.all(by.css('option')).get(2).click();
+ expect(switchElem.getText()).toMatch(/default/);
+ });
+ </file>
+ </example>
+ */
+var ngSwitchDirective = ['$animate', function($animate) {
+ return {
+ require: 'ngSwitch',
+
+ // asks for $scope to fool the BC controller module
+ controller: ['$scope', function ngSwitchController() {
+ this.cases = {};
+ }],
+ link: function(scope, element, attr, ngSwitchController) {
+ var watchExpr = attr.ngSwitch || attr.on,
+ selectedTranscludes = [],
+ selectedElements = [],
+ previousLeaveAnimations = [],
+ selectedScopes = [];
+
+ var spliceFactory = function(array, index) {
+ return function() { array.splice(index, 1); };
+ };
+
+ scope.$watch(watchExpr, function ngSwitchWatchAction(value) {
+ var i, ii;
+ for (i = 0, ii = previousLeaveAnimations.length; i < ii; ++i) {
+ $animate.cancel(previousLeaveAnimations[i]);
+ }
+ previousLeaveAnimations.length = 0;
+
+ for (i = 0, ii = selectedScopes.length; i < ii; ++i) {
+ var selected = getBlockNodes(selectedElements[i].clone);
+ selectedScopes[i].$destroy();
+ var promise = previousLeaveAnimations[i] = $animate.leave(selected);
+ promise.then(spliceFactory(previousLeaveAnimations, i));
+ }
+
+ selectedElements.length = 0;
+ selectedScopes.length = 0;
+
+ if ((selectedTranscludes = ngSwitchController.cases['!' + value] || ngSwitchController.cases['?'])) {
+ forEach(selectedTranscludes, function(selectedTransclude) {
+ selectedTransclude.transclude(function(caseElement, selectedScope) {
+ selectedScopes.push(selectedScope);
+ var anchor = selectedTransclude.element;
+ caseElement[caseElement.length++] = document.createComment(' end ngSwitchWhen: ');
+ var block = { clone: caseElement };
+
+ selectedElements.push(block);
+ $animate.enter(caseElement, anchor.parent(), anchor);
+ });
+ });
+ }
+ });
+ }
+ };
+}];
+
+var ngSwitchWhenDirective = ngDirective({
+ transclude: 'element',
+ priority: 1200,
+ require: '^ngSwitch',
+ multiElement: true,
+ link: function(scope, element, attrs, ctrl, $transclude) {
+ ctrl.cases['!' + attrs.ngSwitchWhen] = (ctrl.cases['!' + attrs.ngSwitchWhen] || []);
+ ctrl.cases['!' + attrs.ngSwitchWhen].push({ transclude: $transclude, element: element });
+ }
+});
+
+var ngSwitchDefaultDirective = ngDirective({
+ transclude: 'element',
+ priority: 1200,
+ require: '^ngSwitch',
+ multiElement: true,
+ link: function(scope, element, attr, ctrl, $transclude) {
+ ctrl.cases['?'] = (ctrl.cases['?'] || []);
+ ctrl.cases['?'].push({ transclude: $transclude, element: element });
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name ngTransclude
+ * @restrict EAC
+ *
+ * @description
+ * Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.
+ *
+ * Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.
+ *
+ * @element ANY
+ *
+ * @example
+ <example module="transcludeExample">
+ <file name="index.html">
+ <script>
+ angular.module('transcludeExample', [])
+ .directive('pane', function(){
+ return {
+ restrict: 'E',
+ transclude: true,
+ scope: { title:'@' },
+ template: '<div style="border: 1px solid black;">' +
+ '<div style="background-color: gray">{{title}}</div>' +
+ '<ng-transclude></ng-transclude>' +
+ '</div>'
+ };
+ })
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.title = 'Lorem Ipsum';
+ $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';
+ }]);
+ </script>
+ <div ng-controller="ExampleController">
+ <input ng-model="title" aria-label="title"> <br/>
+ <textarea ng-model="text" aria-label="text"></textarea> <br/>
+ <pane title="{{title}}">{{text}}</pane>
+ </div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should have transcluded', function() {
+ var titleElement = element(by.model('title'));
+ titleElement.clear();
+ titleElement.sendKeys('TITLE');
+ var textElement = element(by.model('text'));
+ textElement.clear();
+ textElement.sendKeys('TEXT');
+ expect(element(by.binding('title')).getText()).toEqual('TITLE');
+ expect(element(by.binding('text')).getText()).toEqual('TEXT');
+ });
+ </file>
+ </example>
+ *
+ */
+var ngTranscludeDirective = ngDirective({
+ restrict: 'EAC',
+ link: function($scope, $element, $attrs, controller, $transclude) {
+ if (!$transclude) {
+ throw minErr('ngTransclude')('orphan',
+ 'Illegal use of ngTransclude directive in the template! ' +
+ 'No parent directive that requires a transclusion found. ' +
+ 'Element: {0}',
+ startingTag($element));
+ }
+
+ $transclude(function(clone) {
+ $element.empty();
+ $element.append(clone);
+ });
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name script
+ * @restrict E
+ *
+ * @description
+ * Load the content of a `<script>` element into {@link ng.$templateCache `$templateCache`}, so that the
+ * template can be used by {@link ng.directive:ngInclude `ngInclude`},
+ * {@link ngRoute.directive:ngView `ngView`}, or {@link guide/directive directives}. The type of the
+ * `<script>` element must be specified as `text/ng-template`, and a cache name for the template must be
+ * assigned through the element's `id`, which can then be used as a directive's `templateUrl`.
+ *
+ * @param {string} type Must be set to `'text/ng-template'`.
+ * @param {string} id Cache name of the template.
+ *
+ * @example
+ <example>
+ <file name="index.html">
+ <script type="text/ng-template" id="/tpl.html">
+ Content of the template.
+ </script>
+
+ <a ng-click="currentTpl='/tpl.html'" id="tpl-link">Load inlined template</a>
+ <div id="tpl-content" ng-include src="currentTpl"></div>
+ </file>
+ <file name="protractor.js" type="protractor">
+ it('should load template defined inside script tag', function() {
+ element(by.css('#tpl-link')).click();
+ expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);
+ });
+ </file>
+ </example>
+ */
+var scriptDirective = ['$templateCache', function($templateCache) {
+ return {
+ restrict: 'E',
+ terminal: true,
+ compile: function(element, attr) {
+ if (attr.type == 'text/ng-template') {
+ var templateUrl = attr.id,
+ text = element[0].text;
+
+ $templateCache.put(templateUrl, text);
+ }
+ }
+ };
+}];
+
+var noopNgModelController = { $setViewValue: noop, $render: noop };
+
+/**
+ * @ngdoc type
+ * @name select.SelectController
+ * @description
+ * The controller for the `<select>` directive. This provides support for reading
+ * and writing the selected value(s) of the control and also coordinates dynamically
+ * added `<option>` elements, perhaps by an `ngRepeat` directive.
+ */
+var SelectController =
+ ['$element', '$scope', '$attrs', function($element, $scope, $attrs) {
+
+ var self = this,
+ optionsMap = new HashMap();
+
+ // If the ngModel doesn't get provided then provide a dummy noop version to prevent errors
+ self.ngModelCtrl = noopNgModelController;
+
+ // The "unknown" option is one that is prepended to the list if the viewValue
+ // does not match any of the options. When it is rendered the value of the unknown
+ // option is '? XXX ?' where XXX is the hashKey of the value that is not known.
+ //
+ // We can't just jqLite('<option>') since jqLite is not smart enough
+ // to create it in <select> and IE barfs otherwise.
+ self.unknownOption = jqLite(document.createElement('option'));
+ self.renderUnknownOption = function(val) {
+ var unknownVal = '? ' + hashKey(val) + ' ?';
+ self.unknownOption.val(unknownVal);
+ $element.prepend(self.unknownOption);
+ $element.val(unknownVal);
+ };
+
+ $scope.$on('$destroy', function() {
+ // disable unknown option so that we don't do work when the whole select is being destroyed
+ self.renderUnknownOption = noop;
+ });
+
+ self.removeUnknownOption = function() {
+ if (self.unknownOption.parent()) self.unknownOption.remove();
+ };
+
+
+ // Read the value of the select control, the implementation of this changes depending
+ // upon whether the select can have multiple values and whether ngOptions is at work.
+ self.readValue = function readSingleValue() {
+ self.removeUnknownOption();
+ return $element.val();
+ };
+
+
+ // Write the value to the select control, the implementation of this changes depending
+ // upon whether the select can have multiple values and whether ngOptions is at work.
+ self.writeValue = function writeSingleValue(value) {
+ if (self.hasOption(value)) {
+ self.removeUnknownOption();
+ $element.val(value);
+ if (value === '') self.emptyOption.prop('selected', true); // to make IE9 happy
+ } else {
+ if (value == null && self.emptyOption) {
+ self.removeUnknownOption();
+ $element.val('');
+ } else {
+ self.renderUnknownOption(value);
+ }
+ }
+ };
+
+
+ // Tell the select control that an option, with the given value, has been added
+ self.addOption = function(value, element) {
+ assertNotHasOwnProperty(value, '"option value"');
+ if (value === '') {
+ self.emptyOption = element;
+ }
+ var count = optionsMap.get(value) || 0;
+ optionsMap.put(value, count + 1);
+ };
+
+ // Tell the select control that an option, with the given value, has been removed
+ self.removeOption = function(value) {
+ var count = optionsMap.get(value);
+ if (count) {
+ if (count === 1) {
+ optionsMap.remove(value);
+ if (value === '') {
+ self.emptyOption = undefined;
+ }
+ } else {
+ optionsMap.put(value, count - 1);
+ }
+ }
+ };
+
+ // Check whether the select control has an option matching the given value
+ self.hasOption = function(value) {
+ return !!optionsMap.get(value);
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name select
+ * @restrict E
+ *
+ * @description
+ * HTML `SELECT` element with angular data-binding.
+ *
+ * In many cases, `ngRepeat` can be used on `<option>` elements instead of {@link ng.directive:ngOptions
+ * ngOptions} to achieve a similar result. However, `ngOptions` provides some benefits such as reducing
+ * memory and increasing speed by not creating a new scope for each repeated instance, as well as providing
+ * more flexibility in how the `<select>`'s model is assigned via the `select` **`as`** part of the
+ * comprehension expression.
+ *
+ * When an item in the `<select>` menu is selected, the array element or object property
+ * represented by the selected option will be bound to the model identified by the `ngModel`
+ * directive.
+ *
+ * If the viewValue contains a value that doesn't match any of the options then the control
+ * will automatically add an "unknown" option, which it then removes when this is resolved.
+ *
+ * Optionally, a single hard-coded `<option>` element, with the value set to an empty string, can
+ * be nested into the `<select>` element. This element will then represent the `null` or "not selected"
+ * option. See example below for demonstration.
+ *
+ * <div class="alert alert-info">
+ * The value of a `select` directive used without `ngOptions` is always a string.
+ * When the model needs to be bound to a non-string value, you must either explictly convert it
+ * using a directive (see example below) or use `ngOptions` to specify the set of options.
+ * This is because an option element can only be bound to string values at present.
+ * </div>
+ *
+ * ### Example (binding `select` to a non-string value)
+ *
+ * <example name="select-with-non-string-options" module="nonStringSelect">
+ * <file name="index.html">
+ * <select ng-model="model.id" convert-to-number>
+ * <option value="0">Zero</option>
+ * <option value="1">One</option>
+ * <option value="2">Two</option>
+ * </select>
+ * {{ model }}
+ * </file>
+ * <file name="app.js">
+ * angular.module('nonStringSelect', [])
+ * .run(function($rootScope) {
+ * $rootScope.model = { id: 2 };
+ * })
+ * .directive('convertToNumber', function() {
+ * return {
+ * require: 'ngModel',
+ * link: function(scope, element, attrs, ngModel) {
+ * ngModel.$parsers.push(function(val) {
+ * return parseInt(val, 10);
+ * });
+ * ngModel.$formatters.push(function(val) {
+ * return '' + val;
+ * });
+ * }
+ * };
+ * });
+ * </file>
+ * <file name="protractor.js" type="protractor">
+ * it('should initialize to model', function() {
+ * var select = element(by.css('select'));
+ * expect(element(by.model('model.id')).$('option:checked').getText()).toEqual('Two');
+ * });
+ * </file>
+ * </example>
+ *
+ */
+var selectDirective = function() {
+
+ return {
+ restrict: 'E',
+ require: ['select', '?ngModel'],
+ controller: SelectController,
+ link: function(scope, element, attr, ctrls) {
+
+ // if ngModel is not defined, we don't need to do anything
+ var ngModelCtrl = ctrls[1];
+ if (!ngModelCtrl) return;
+
+ var selectCtrl = ctrls[0];
+
+ selectCtrl.ngModelCtrl = ngModelCtrl;
+
+ // We delegate rendering to the `writeValue` method, which can be changed
+ // if the select can have multiple selected values or if the options are being
+ // generated by `ngOptions`
+ ngModelCtrl.$render = function() {
+ selectCtrl.writeValue(ngModelCtrl.$viewValue);
+ };
+
+ // When the selected item(s) changes we delegate getting the value of the select control
+ // to the `readValue` method, which can be changed if the select can have multiple
+ // selected values or if the options are being generated by `ngOptions`
+ element.on('change', function() {
+ scope.$apply(function() {
+ ngModelCtrl.$setViewValue(selectCtrl.readValue());
+ });
+ });
+
+ // If the select allows multiple values then we need to modify how we read and write
+ // values from and to the control; also what it means for the value to be empty and
+ // we have to add an extra watch since ngModel doesn't work well with arrays - it
+ // doesn't trigger rendering if only an item in the array changes.
+ if (attr.multiple) {
+
+ // Read value now needs to check each option to see if it is selected
+ selectCtrl.readValue = function readMultipleValue() {
+ var array = [];
+ forEach(element.find('option'), function(option) {
+ if (option.selected) {
+ array.push(option.value);
+ }
+ });
+ return array;
+ };
+
+ // Write value now needs to set the selected property of each matching option
+ selectCtrl.writeValue = function writeMultipleValue(value) {
+ var items = new HashMap(value);
+ forEach(element.find('option'), function(option) {
+ option.selected = isDefined(items.get(option.value));
+ });
+ };
+
+ // we have to do it on each watch since ngModel watches reference, but
+ // we need to work of an array, so we need to see if anything was inserted/removed
+ var lastView, lastViewRef = NaN;
+ scope.$watch(function selectMultipleWatch() {
+ if (lastViewRef === ngModelCtrl.$viewValue && !equals(lastView, ngModelCtrl.$viewValue)) {
+ lastView = shallowCopy(ngModelCtrl.$viewValue);
+ ngModelCtrl.$render();
+ }
+ lastViewRef = ngModelCtrl.$viewValue;
+ });
+
+ // If we are a multiple select then value is now a collection
+ // so the meaning of $isEmpty changes
+ ngModelCtrl.$isEmpty = function(value) {
+ return !value || value.length === 0;
+ };
+
+ }
+ }
+ };
+};
+
+
+// The option directive is purely designed to communicate the existence (or lack of)
+// of dynamically created (and destroyed) option elements to their containing select
+// directive via its controller.
+var optionDirective = ['$interpolate', function($interpolate) {
+
+ function chromeHack(optionElement) {
+ // Workaround for https://code.google.com/p/chromium/issues/detail?id=381459
+ // Adding an <option selected="selected"> element to a <select required="required"> should
+ // automatically select the new element
+ if (optionElement[0].hasAttribute('selected')) {
+ optionElement[0].selected = true;
+ }
+ }
+
+ return {
+ restrict: 'E',
+ priority: 100,
+ compile: function(element, attr) {
+
+ // If the value attribute is not defined then we fall back to the
+ // text content of the option element, which may be interpolated
+ if (isUndefined(attr.value)) {
+ var interpolateFn = $interpolate(element.text(), true);
+ if (!interpolateFn) {
+ attr.$set('value', element.text());
+ }
+ }
+
+ return function(scope, element, attr) {
+
+ // This is an optimization over using ^^ since we don't want to have to search
+ // all the way to the root of the DOM for every single option element
+ var selectCtrlName = '$selectController',
+ parent = element.parent(),
+ selectCtrl = parent.data(selectCtrlName) ||
+ parent.parent().data(selectCtrlName); // in case we are in optgroup
+
+ // Only update trigger option updates if this is an option within a `select`
+ // that also has `ngModel` attached
+ if (selectCtrl && selectCtrl.ngModelCtrl) {
+
+ if (interpolateFn) {
+ scope.$watch(interpolateFn, function interpolateWatchAction(newVal, oldVal) {
+ attr.$set('value', newVal);
+ if (oldVal !== newVal) {
+ selectCtrl.removeOption(oldVal);
+ }
+ selectCtrl.addOption(newVal, element);
+ selectCtrl.ngModelCtrl.$render();
+ chromeHack(element);
+ });
+ } else {
+ selectCtrl.addOption(attr.value, element);
+ selectCtrl.ngModelCtrl.$render();
+ chromeHack(element);
+ }
+
+ element.on('$destroy', function() {
+ selectCtrl.removeOption(attr.value);
+ selectCtrl.ngModelCtrl.$render();
+ });
+ }
+ };
+ }
+ };
+}];
+
+var styleDirective = valueFn({
+ restrict: 'E',
+ terminal: false
+});
+
+var requiredDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+ attr.required = true; // force truthy in case we are on non input element
+
+ ctrl.$validators.required = function(modelValue, viewValue) {
+ return !attr.required || !ctrl.$isEmpty(viewValue);
+ };
+
+ attr.$observe('required', function() {
+ ctrl.$validate();
+ });
+ }
+ };
+};
+
+
+var patternDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+
+ var regexp, patternExp = attr.ngPattern || attr.pattern;
+ attr.$observe('pattern', function(regex) {
+ if (isString(regex) && regex.length > 0) {
+ regex = new RegExp('^' + regex + '$');
+ }
+
+ if (regex && !regex.test) {
+ throw minErr('ngPattern')('noregexp',
+ 'Expected {0} to be a RegExp but was {1}. Element: {2}', patternExp,
+ regex, startingTag(elm));
+ }
+
+ regexp = regex || undefined;
+ ctrl.$validate();
+ });
+
+ ctrl.$validators.pattern = function(value) {
+ return ctrl.$isEmpty(value) || isUndefined(regexp) || regexp.test(value);
+ };
+ }
+ };
+};
+
+
+var maxlengthDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+
+ var maxlength = -1;
+ attr.$observe('maxlength', function(value) {
+ var intVal = toInt(value);
+ maxlength = isNaN(intVal) ? -1 : intVal;
+ ctrl.$validate();
+ });
+ ctrl.$validators.maxlength = function(modelValue, viewValue) {
+ return (maxlength < 0) || ctrl.$isEmpty(viewValue) || (viewValue.length <= maxlength);
+ };
+ }
+ };
+};
+
+var minlengthDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+
+ var minlength = 0;
+ attr.$observe('minlength', function(value) {
+ minlength = toInt(value) || 0;
+ ctrl.$validate();
+ });
+ ctrl.$validators.minlength = function(modelValue, viewValue) {
+ return ctrl.$isEmpty(viewValue) || viewValue.length >= minlength;
+ };
+ }
+ };
+};
+
+if (window.angular.bootstrap) {
+ //AngularJS is already loaded, so we can return here...
+ console.log('WARNING: Tried to load angular more than once.');
+ return;
+}
+
+//try to bind to jquery now so that one can write jqLite(document).ready()
+//but we will rebind on bootstrap again.
+bindJQuery();
+
+publishExternalAPI(angular);
+
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+ n = n + '';
+ var i = n.indexOf('.');
+ return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+ var v = opt_precision;
+
+ if (undefined === v) {
+ v = Math.min(getDecimals(n), 3);
+ }
+
+ var base = Math.pow(10, v);
+ var f = ((n * base) | 0) % base;
+ return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "ERANAMES": [
+ "Before Christ",
+ "Anno Domini"
+ ],
+ "ERAS": [
+ "BC",
+ "AD"
+ ],
+ "FIRSTDAYOFWEEK": 6,
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "WEEKENDRANGE": [
+ 5,
+ 6
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-\u00a4",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-us",
+ "pluralCat": function(n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
+
+/**
+ * Setup file for the Scenario.
+ * Must be first in the compilation/bootstrap list.
+ */
+
+// Public namespace
+angular.scenario = angular.scenario || {};
+
+/**
+ * Expose jQuery (e.g. for custom dsl extensions).
+ */
+angular.scenario.jQuery = _jQuery;
+
+/**
+ * Defines a new output format.
+ *
+ * @param {string} name the name of the new output format
+ * @param {function()} fn function(context, runner) that generates the output
+ */
+angular.scenario.output = angular.scenario.output || function(name, fn) {
+ angular.scenario.output[name] = fn;
+};
+
+/**
+ * Defines a new DSL statement. If your factory function returns a Future
+ * it's returned, otherwise the result is assumed to be a map of functions
+ * for chaining. Chained functions are subject to the same rules.
+ *
+ * Note: All functions on the chain are bound to the chain scope so values
+ * set on "this" in your statement function are available in the chained
+ * functions.
+ *
+ * @param {string} name The name of the statement
+ * @param {function()} fn Factory function(), return a function for
+ * the statement.
+ */
+angular.scenario.dsl = angular.scenario.dsl || function(name, fn) {
+ angular.scenario.dsl[name] = function() {
+ /* jshint -W040 *//* The dsl binds `this` for us when calling chained functions */
+ function executeStatement(statement, args) {
+ var result = statement.apply(this, args);
+ if (angular.isFunction(result) || result instanceof angular.scenario.Future) {
+ return result;
+ }
+ var self = this;
+ var chain = angular.extend({}, result);
+ angular.forEach(chain, function(value, name) {
+ if (angular.isFunction(value)) {
+ chain[name] = function() {
+ return executeStatement.call(self, value, arguments);
+ };
+ } else {
+ chain[name] = value;
+ }
+ });
+ return chain;
+ }
+ var statement = fn.apply(this, arguments);
+ return function() {
+ return executeStatement.call(this, statement, arguments);
+ };
+ };
+};
+
+/**
+ * Defines a new matcher for use with the expects() statement. The value
+ * this.actual (like in Jasmine) is available in your matcher to compare
+ * against. Your function should return a boolean. The future is automatically
+ * created for you.
+ *
+ * @param {string} name The name of the matcher
+ * @param {function()} fn The matching function(expected).
+ */
+angular.scenario.matcher = angular.scenario.matcher || function(name, fn) {
+ angular.scenario.matcher[name] = function(expected) {
+ var description = this.future.name +
+ (this.inverse ? ' not ' : ' ') + name +
+ ' ' + angular.toJson(expected);
+ var self = this;
+ this.addFuture('expect ' + description,
+ function(done) {
+ var error;
+ self.actual = self.future.value;
+ if ((self.inverse && fn.call(self, expected)) ||
+ (!self.inverse && !fn.call(self, expected))) {
+ error = 'expected ' + description +
+ ' but was ' + angular.toJson(self.actual);
+ }
+ done(error);
+ });
+ };
+};
+
+/**
+ * Initialize the scenario runner and run !
+ *
+ * Access global window and document object
+ * Access $runner through closure
+ *
+ * @param {Object=} config Config options
+ */
+angular.scenario.setUpAndRun = function(config) {
+ var href = window.location.href;
+ var body = _jQuery(document.body);
+ var output = [];
+ var objModel = new angular.scenario.ObjectModel($runner);
+
+ if (config && config.scenario_output) {
+ output = config.scenario_output.split(',');
+ }
+
+ angular.forEach(angular.scenario.output, function(fn, name) {
+ if (!output.length || output.indexOf(name) != -1) {
+ var context = body.append('<div></div>').find('div:last');
+ context.attr('id', name);
+ fn.call({}, context, $runner, objModel);
+ }
+ });
+
+ if (!/^http/.test(href) && !/^https/.test(href)) {
+ body.append('<p id="system-error"></p>');
+ body.find('#system-error').text(
+ 'Scenario runner must be run using http or https. The protocol ' +
+ href.split(':')[0] + ':// is not supported.'
+ );
+ return;
+ }
+
+ var appFrame = body.append('<div id="application"></div>').find('#application');
+ var application = new angular.scenario.Application(appFrame);
+
+ $runner.on('RunnerEnd', function() {
+ appFrame.css('display', 'none');
+ appFrame.find('iframe').attr('src', 'about:blank');
+ });
+
+ $runner.on('RunnerError', function(error) {
+ if (window.console) {
+ console.log(formatException(error));
+ } else {
+ // Do something for IE
+ alert(error);
+ }
+ });
+
+ $runner.run(application);
+};
+
+/**
+ * Iterates through list with iterator function that must call the
+ * continueFunction to continue iterating.
+ *
+ * @param {Array} list list to iterate over
+ * @param {function()} iterator Callback function(value, continueFunction)
+ * @param {function()} done Callback function(error, result) called when
+ * iteration finishes or an error occurs.
+ */
+function asyncForEach(list, iterator, done) {
+ var i = 0;
+ function loop(error, index) {
+ if (index && index > i) {
+ i = index;
+ }
+ if (error || i >= list.length) {
+ done(error);
+ } else {
+ try {
+ iterator(list[i++], loop);
+ } catch (e) {
+ done(e);
+ }
+ }
+ }
+ loop();
+}
+
+/**
+ * Formats an exception into a string with the stack trace, but limits
+ * to a specific line length.
+ *
+ * @param {Object} error The exception to format, can be anything throwable
+ * @param {Number=} [maxStackLines=5] max lines of the stack trace to include
+ * default is 5.
+ */
+function formatException(error, maxStackLines) {
+ maxStackLines = maxStackLines || 5;
+ var message = error.toString();
+ if (error.stack) {
+ var stack = error.stack.split('\n');
+ if (stack[0].indexOf(message) === -1) {
+ maxStackLines++;
+ stack.unshift(error.message);
+ }
+ message = stack.slice(0, maxStackLines).join('\n');
+ }
+ return message;
+}
+
+/**
+ * Returns a function that gets the file name and line number from a
+ * location in the stack if available based on the call site.
+ *
+ * Note: this returns another function because accessing .stack is very
+ * expensive in Chrome.
+ *
+ * @param {Number} offset Number of stack lines to skip
+ */
+function callerFile(offset) {
+ var error = new Error();
+
+ return function() {
+ var line = (error.stack || '').split('\n')[offset];
+
+ // Clean up the stack trace line
+ if (line) {
+ if (line.indexOf('@') !== -1) {
+ // Firefox
+ line = line.substring(line.indexOf('@') + 1);
+ } else {
+ // Chrome
+ line = line.substring(line.indexOf('(') + 1).replace(')', '');
+ }
+ }
+
+ return line || '';
+ };
+}
+
+
+/**
+ * Don't use the jQuery trigger method since it works incorrectly.
+ *
+ * jQuery notifies listeners and then changes the state of a checkbox and
+ * does not create a real browser event. A real click changes the state of
+ * the checkbox and then notifies listeners.
+ *
+ * To work around this we instead use our own handler that fires a real event.
+ */
+(function(fn) {
+ // We need a handle to the original trigger function for input tests.
+ var parentTrigger = fn._originalTrigger = fn.trigger;
+ fn.trigger = function(type) {
+ if (/(click|change|keydown|blur|input|mousedown|mouseup)/.test(type)) {
+ var processDefaults = [];
+ this.each(function(index, node) {
+ processDefaults.push(browserTrigger(node, type));
+ });
+
+ // this is not compatible with jQuery - we return an array of returned values,
+ // so that scenario runner know whether JS code has preventDefault() of the event or not...
+ return processDefaults;
+ }
+ return parentTrigger.apply(this, arguments);
+ };
+})(_jQuery.fn);
+
+/**
+ * Finds all bindings with the substring match of name and returns an
+ * array of their values.
+ *
+ * @param {string} bindExp The name to match
+ * @return {Array.<string>} String of binding values
+ */
+_jQuery.fn.bindings = function(windowJquery, bindExp) {
+ var result = [], match,
+ bindSelector = '.ng-binding:visible';
+ if (angular.isString(bindExp)) {
+ bindExp = bindExp.replace(/\s/g, '');
+ match = function(actualExp) {
+ if (actualExp) {
+ actualExp = actualExp.replace(/\s/g, '');
+ if (actualExp == bindExp) return true;
+ if (actualExp.indexOf(bindExp) === 0) {
+ return actualExp.charAt(bindExp.length) == '|';
+ }
+ }
+ };
+ } else if (bindExp) {
+ match = function(actualExp) {
+ return actualExp && bindExp.exec(actualExp);
+ };
+ } else {
+ match = function(actualExp) {
+ return !!actualExp;
+ };
+ }
+ var selection = this.find(bindSelector);
+ if (this.is(bindSelector)) {
+ selection = selection.add(this);
+ }
+
+ function push(value) {
+ if (value === undefined) {
+ value = '';
+ } else if (typeof value !== 'string') {
+ value = angular.toJson(value);
+ }
+ result.push('' + value);
+ }
+
+ selection.each(function() {
+ var element = windowJquery(this),
+ bindings;
+ if (bindings = element.data('$binding')) {
+ for (var expressions = [], binding, j=0, jj=bindings.length; j < jj; j++) {
+ binding = bindings[j];
+
+ if (binding.expressions) {
+ expressions = binding.expressions;
+ } else {
+ expressions = [binding];
+ }
+ for (var scope, expression, i = 0, ii = expressions.length; i < ii; i++) {
+ expression = expressions[i];
+ if (match(expression)) {
+ scope = scope || element.scope();
+ push(scope.$eval(expression));
+ }
+ }
+ }
+ }
+ });
+ return result;
+};
+
+(function() {
+ /**
+ * Triggers a browser event. Attempts to choose the right event if one is
+ * not specified.
+ *
+ * @param {Object} element Either a wrapped jQuery/jqLite node or a DOMElement
+ * @param {string} eventType Optional event type
+ * @param {Object=} eventData An optional object which contains additional event data (such as x,y
+ * coordinates, keys, etc...) that are passed into the event when triggered
+ */
+ window.browserTrigger = function browserTrigger(element, eventType, eventData) {
+ if (element && !element.nodeName) element = element[0];
+ if (!element) return;
+
+ eventData = eventData || {};
+ var keys = eventData.keys;
+ var x = eventData.x;
+ var y = eventData.y;
+
+ var inputType = (element.type) ? element.type.toLowerCase() : null,
+ nodeName = element.nodeName.toLowerCase();
+ if (!eventType) {
+ eventType = {
+ 'text': 'change',
+ 'textarea': 'change',
+ 'hidden': 'change',
+ 'password': 'change',
+ 'button': 'click',
+ 'submit': 'click',
+ 'reset': 'click',
+ 'image': 'click',
+ 'checkbox': 'click',
+ 'radio': 'click',
+ 'select-one': 'change',
+ 'select-multiple': 'change',
+ '_default_': 'click'
+ }[inputType || '_default_'];
+ }
+
+ if (nodeName == 'option') {
+ element.parentNode.value = element.value;
+ element = element.parentNode;
+ eventType = 'change';
+ }
+
+ keys = keys || [];
+ function pressed(key) {
+ return keys.indexOf(key) !== -1;
+ }
+
+ var evnt;
+ if (/transitionend/.test(eventType)) {
+ if (window.WebKitTransitionEvent) {
+ evnt = new WebKitTransitionEvent(eventType, eventData);
+ evnt.initEvent(eventType, false, true);
+ } else {
+ try {
+ evnt = new TransitionEvent(eventType, eventData);
+ }
+ catch (e) {
+ evnt = document.createEvent('TransitionEvent');
+ evnt.initTransitionEvent(eventType, null, null, null, eventData.elapsedTime || 0);
+ }
+ }
+ } else if (/animationend/.test(eventType)) {
+ if (window.WebKitAnimationEvent) {
+ evnt = new WebKitAnimationEvent(eventType, eventData);
+ evnt.initEvent(eventType, false, true);
+ } else {
+ try {
+ evnt = new AnimationEvent(eventType, eventData);
+ }
+ catch (e) {
+ evnt = document.createEvent('AnimationEvent');
+ evnt.initAnimationEvent(eventType, null, null, null, eventData.elapsedTime || 0);
+ }
+ }
+ } else if (/touch/.test(eventType) && supportsTouchEvents()) {
+ evnt = createTouchEvent(element, eventType, x, y);
+ } else {
+ evnt = document.createEvent('MouseEvents');
+ x = x || 0;
+ y = y || 0;
+ evnt.initMouseEvent(eventType, true, true, window, 0, x, y, x, y, pressed('ctrl'),
+ pressed('alt'), pressed('shift'), pressed('meta'), 0, element);
+ }
+
+ /* we're unable to change the timeStamp value directly so this
+ * is only here to allow for testing where the timeStamp value is
+ * read */
+ evnt.$manualTimeStamp = eventData.timeStamp;
+
+ if (!evnt) return;
+
+ var originalPreventDefault = evnt.preventDefault,
+ appWindow = element.ownerDocument.defaultView,
+ fakeProcessDefault = true,
+ finalProcessDefault,
+ angular = appWindow.angular || {};
+
+ // igor: temporary fix for https://bugzilla.mozilla.org/show_bug.cgi?id=684208
+ angular['ff-684208-preventDefault'] = false;
+ evnt.preventDefault = function() {
+ fakeProcessDefault = false;
+ return originalPreventDefault.apply(evnt, arguments);
+ };
+
+ element.dispatchEvent(evnt);
+ finalProcessDefault = !(angular['ff-684208-preventDefault'] || !fakeProcessDefault);
+
+ delete angular['ff-684208-preventDefault'];
+
+ return finalProcessDefault;
+ };
+
+ function supportsTouchEvents() {
+ if ('_cached' in supportsTouchEvents) {
+ return supportsTouchEvents._cached;
+ }
+ if (!document.createTouch || !document.createTouchList) {
+ supportsTouchEvents._cached = false;
+ return false;
+ }
+ try {
+ document.createEvent('TouchEvent');
+ } catch (e) {
+ supportsTouchEvents._cached = false;
+ return false;
+ }
+ supportsTouchEvents._cached = true;
+ return true;
+ }
+
+ function createTouchEvent(element, eventType, x, y) {
+ var evnt = new Event(eventType);
+ x = x || 0;
+ y = y || 0;
+
+ var touch = document.createTouch(window, element, Date.now(), x, y, x, y);
+ var touches = document.createTouchList(touch);
+
+ evnt.touches = touches;
+
+ return evnt;
+ }
+}());
+
+/**
+ * Represents the application currently being tested and abstracts usage
+ * of iframes or separate windows.
+ *
+ * @param {Object} context jQuery wrapper around HTML context.
+ */
+angular.scenario.Application = function(context) {
+ this.context = context;
+ context.append(
+ '<h2>Current URL: <a href="about:blank">None</a></h2>' +
+ '<div id="test-frames"></div>'
+ );
+};
+
+/**
+ * Gets the jQuery collection of frames. Don't use this directly because
+ * frames may go stale.
+ *
+ * @private
+ * @return {Object} jQuery collection
+ */
+angular.scenario.Application.prototype.getFrame_ = function() {
+ return this.context.find('#test-frames iframe:last');
+};
+
+/**
+ * Gets the window of the test runner frame. Always favor executeAction()
+ * instead of this method since it prevents you from getting a stale window.
+ *
+ * @private
+ * @return {Object} the window of the frame
+ */
+angular.scenario.Application.prototype.getWindow_ = function() {
+ var contentWindow = this.getFrame_().prop('contentWindow');
+ if (!contentWindow) {
+ throw 'Frame window is not accessible.';
+ }
+ return contentWindow;
+};
+
+/**
+ * Changes the location of the frame.
+ *
+ * @param {string} url The URL. If it begins with a # then only the
+ * hash of the page is changed.
+ * @param {function()} loadFn function($window, $document) Called when frame loads.
+ * @param {function()} errorFn function(error) Called if any error when loading.
+ */
+angular.scenario.Application.prototype.navigateTo = function(url, loadFn, errorFn) {
+ var self = this;
+ var frame = self.getFrame_();
+ //TODO(esprehn): Refactor to use rethrow()
+ errorFn = errorFn || function(e) { throw e; };
+ if (url === 'about:blank') {
+ errorFn('Sandbox Error: Navigating to about:blank is not allowed.');
+ } else if (url.charAt(0) === '#') {
+ url = frame.attr('src').split('#')[0] + url;
+ frame.attr('src', url);
+ self.executeAction(loadFn);
+ } else {
+ frame.remove();
+ self.context.find('#test-frames').append('<iframe>');
+ frame = self.getFrame_();
+
+ frame.load(function() {
+ frame.off();
+ try {
+ var $window = self.getWindow_();
+
+ if (!$window.angular) {
+ self.executeAction(loadFn);
+ return;
+ }
+
+ if (!$window.angular.resumeBootstrap) {
+ $window.angular.resumeDeferredBootstrap = resumeDeferredBootstrap;
+ } else {
+ resumeDeferredBootstrap();
+ }
+
+ } catch (e) {
+ errorFn(e);
+ }
+
+ function resumeDeferredBootstrap() {
+ // Disable animations
+ var $injector = $window.angular.resumeBootstrap([['$provide', function($provide) {
+ return ['$animate', function($animate) {
+ $animate.enabled(false);
+ }];
+ }]]);
+ self.rootElement = $injector.get('$rootElement')[0];
+ self.executeAction(loadFn);
+ }
+ }).attr('src', url);
+
+ // for IE compatibility set the name *after* setting the frame url
+ frame[0].contentWindow.name = "NG_DEFER_BOOTSTRAP!";
+ }
+ self.context.find('> h2 a').attr('href', url).text(url);
+};
+
+/**
+ * Executes a function in the context of the tested application. Will wait
+ * for all pending angular xhr requests before executing.
+ *
+ * @param {function()} action The callback to execute. function($window, $document)
+ * $document is a jQuery wrapped document.
+ */
+angular.scenario.Application.prototype.executeAction = function(action) {
+ var self = this;
+ var $window = this.getWindow_();
+ if (!$window.document) {
+ throw 'Sandbox Error: Application document not accessible.';
+ }
+ if (!$window.angular) {
+ return action.call(this, $window, _jQuery($window.document));
+ }
+
+ if (!!this.rootElement) {
+ executeWithElement(this.rootElement);
+ } else {
+ angularInit($window.document, angular.bind(this, executeWithElement));
+ }
+
+ function executeWithElement(element) {
+ var $injector = $window.angular.element(element).injector();
+ var $element = _jQuery(element);
+
+ $element.injector = function() {
+ return $injector;
+ };
+
+ $injector.invoke(function($browser) {
+ $browser.notifyWhenNoOutstandingRequests(function() {
+ action.call(self, $window, $element);
+ });
+ });
+ }
+};
+
+/**
+ * The representation of define blocks. Don't used directly, instead use
+ * define() in your tests.
+ *
+ * @param {string} descName Name of the block
+ * @param {Object} parent describe or undefined if the root.
+ */
+angular.scenario.Describe = function(descName, parent) {
+ this.only = parent && parent.only;
+ this.beforeEachFns = [];
+ this.afterEachFns = [];
+ this.its = [];
+ this.children = [];
+ this.name = descName;
+ this.parent = parent;
+ this.id = angular.scenario.Describe.id++;
+
+ /**
+ * Calls all before functions.
+ */
+ var beforeEachFns = this.beforeEachFns;
+ this.setupBefore = function() {
+ if (parent) parent.setupBefore.call(this);
+ angular.forEach(beforeEachFns, function(fn) { fn.call(this); }, this);
+ };
+
+ /**
+ * Calls all after functions.
+ */
+ var afterEachFns = this.afterEachFns;
+ this.setupAfter = function() {
+ angular.forEach(afterEachFns, function(fn) { fn.call(this); }, this);
+ if (parent) parent.setupAfter.call(this);
+ };
+};
+
+// Shared Unique ID generator for every describe block
+angular.scenario.Describe.id = 0;
+
+// Shared Unique ID generator for every it (spec)
+angular.scenario.Describe.specId = 0;
+
+/**
+ * Defines a block to execute before each it or nested describe.
+ *
+ * @param {function()} body Body of the block.
+ */
+angular.scenario.Describe.prototype.beforeEach = function(body) {
+ this.beforeEachFns.push(body);
+};
+
+/**
+ * Defines a block to execute after each it or nested describe.
+ *
+ * @param {function()} body Body of the block.
+ */
+angular.scenario.Describe.prototype.afterEach = function(body) {
+ this.afterEachFns.push(body);
+};
+
+/**
+ * Creates a new describe block that's a child of this one.
+ *
+ * @param {string} name Name of the block. Appended to the parent block's name.
+ * @param {function()} body Body of the block.
+ */
+angular.scenario.Describe.prototype.describe = function(name, body) {
+ var child = new angular.scenario.Describe(name, this);
+ this.children.push(child);
+ body.call(child);
+};
+
+/**
+ * Same as describe() but makes ddescribe blocks the only to run.
+ *
+ * @param {string} name Name of the test.
+ * @param {function()} body Body of the block.
+ */
+angular.scenario.Describe.prototype.ddescribe = function(name, body) {
+ var child = new angular.scenario.Describe(name, this);
+ child.only = true;
+ this.children.push(child);
+ body.call(child);
+};
+
+/**
+ * Use to disable a describe block.
+ */
+angular.scenario.Describe.prototype.xdescribe = angular.noop;
+
+/**
+ * Defines a test.
+ *
+ * @param {string} name Name of the test.
+ * @param {function()} body Body of the block.
+ */
+angular.scenario.Describe.prototype.it = function(name, body) {
+ this.its.push({
+ id: angular.scenario.Describe.specId++,
+ definition: this,
+ only: this.only,
+ name: name,
+ before: this.setupBefore,
+ body: body,
+ after: this.setupAfter
+ });
+};
+
+/**
+ * Same as it() but makes iit tests the only test to run.
+ *
+ * @param {string} name Name of the test.
+ * @param {function()} body Body of the block.
+ */
+angular.scenario.Describe.prototype.iit = function(name, body) {
+ this.it.apply(this, arguments);
+ this.its[this.its.length - 1].only = true;
+};
+
+/**
+ * Use to disable a test block.
+ */
+angular.scenario.Describe.prototype.xit = angular.noop;
+
+/**
+ * Gets an array of functions representing all the tests (recursively).
+ * that can be executed with SpecRunner's.
+ *
+ * @return {Array<Object>} Array of it blocks {
+ * definition : Object // parent Describe
+ * only: boolean
+ * name: string
+ * before: Function
+ * body: Function
+ * after: Function
+ * }
+ */
+angular.scenario.Describe.prototype.getSpecs = function() {
+ var specs = arguments[0] || [];
+ angular.forEach(this.children, function(child) {
+ child.getSpecs(specs);
+ });
+ angular.forEach(this.its, function(it) {
+ specs.push(it);
+ });
+ var only = [];
+ angular.forEach(specs, function(it) {
+ if (it.only) {
+ only.push(it);
+ }
+ });
+ return (only.length && only) || specs;
+};
+
+/**
+ * A future action in a spec.
+ *
+ * @param {string} name name of the future action
+ * @param {function()} behavior future callback(error, result)
+ * @param {function()} line Optional. function that returns the file/line number.
+ */
+angular.scenario.Future = function(name, behavior, line) {
+ this.name = name;
+ this.behavior = behavior;
+ this.fulfilled = false;
+ this.value = undefined;
+ this.parser = angular.identity;
+ this.line = line || function() { return ''; };
+};
+
+/**
+ * Executes the behavior of the closure.
+ *
+ * @param {function()} doneFn Callback function(error, result)
+ */
+angular.scenario.Future.prototype.execute = function(doneFn) {
+ var self = this;
+ this.behavior(function(error, result) {
+ self.fulfilled = true;
+ if (result) {
+ try {
+ result = self.parser(result);
+ } catch (e) {
+ error = e;
+ }
+ }
+ self.value = error || result;
+ doneFn(error, result);
+ });
+};
+
+/**
+ * Configures the future to convert its final with a function fn(value)
+ *
+ * @param {function()} fn function(value) that returns the parsed value
+ */
+angular.scenario.Future.prototype.parsedWith = function(fn) {
+ this.parser = fn;
+ return this;
+};
+
+/**
+ * Configures the future to parse its final value from JSON
+ * into objects.
+ */
+angular.scenario.Future.prototype.fromJson = function() {
+ return this.parsedWith(angular.fromJson);
+};
+
+/**
+ * Configures the future to convert its final value from objects
+ * into JSON.
+ */
+angular.scenario.Future.prototype.toJson = function() {
+ return this.parsedWith(angular.toJson);
+};
+
+/**
+ * Maintains an object tree from the runner events.
+ *
+ * @param {Object} runner The scenario Runner instance to connect to.
+ *
+ * TODO(esprehn): Every output type creates one of these, but we probably
+ * want one global shared instance. Need to handle events better too
+ * so the HTML output doesn't need to do spec model.getSpec(spec.id)
+ * silliness.
+ *
+ * TODO(vojta) refactor on, emit methods (from all objects) - use inheritance
+ */
+angular.scenario.ObjectModel = function(runner) {
+ var self = this;
+
+ this.specMap = {};
+ this.listeners = [];
+ this.value = {
+ name: '',
+ children: {}
+ };
+
+ runner.on('SpecBegin', function(spec) {
+ var block = self.value,
+ definitions = [];
+
+ angular.forEach(self.getDefinitionPath(spec), function(def) {
+ if (!block.children[def.name]) {
+ block.children[def.name] = {
+ id: def.id,
+ name: def.name,
+ children: {},
+ specs: {}
+ };
+ }
+ block = block.children[def.name];
+ definitions.push(def.name);
+ });
+
+ var it = self.specMap[spec.id] =
+ block.specs[spec.name] =
+ new angular.scenario.ObjectModel.Spec(spec.id, spec.name, definitions);
+
+ // forward the event
+ self.emit('SpecBegin', it);
+ });
+
+ runner.on('SpecError', function(spec, error) {
+ var it = self.getSpec(spec.id);
+ it.status = 'error';
+ it.error = error;
+
+ // forward the event
+ self.emit('SpecError', it, error);
+ });
+
+ runner.on('SpecEnd', function(spec) {
+ var it = self.getSpec(spec.id);
+ complete(it);
+
+ // forward the event
+ self.emit('SpecEnd', it);
+ });
+
+ runner.on('StepBegin', function(spec, step) {
+ var it = self.getSpec(spec.id);
+ step = new angular.scenario.ObjectModel.Step(step.name);
+ it.steps.push(step);
+
+ // forward the event
+ self.emit('StepBegin', it, step);
+ });
+
+ runner.on('StepEnd', function(spec) {
+ var it = self.getSpec(spec.id);
+ var step = it.getLastStep();
+ if (step.name !== step.name) {
+ throw 'Events fired in the wrong order. Step names don\'t match.';
+ }
+ complete(step);
+
+ // forward the event
+ self.emit('StepEnd', it, step);
+ });
+
+ runner.on('StepFailure', function(spec, step, error) {
+ var it = self.getSpec(spec.id),
+ modelStep = it.getLastStep();
+
+ modelStep.setErrorStatus('failure', error, step.line());
+ it.setStatusFromStep(modelStep);
+
+ // forward the event
+ self.emit('StepFailure', it, modelStep, error);
+ });
+
+ runner.on('StepError', function(spec, step, error) {
+ var it = self.getSpec(spec.id),
+ modelStep = it.getLastStep();
+
+ modelStep.setErrorStatus('error', error, step.line());
+ it.setStatusFromStep(modelStep);
+
+ // forward the event
+ self.emit('StepError', it, modelStep, error);
+ });
+
+ runner.on('RunnerBegin', function() {
+ self.emit('RunnerBegin');
+ });
+ runner.on('RunnerEnd', function() {
+ self.emit('RunnerEnd');
+ });
+
+ function complete(item) {
+ item.endTime = Date.now();
+ item.duration = item.endTime - item.startTime;
+ item.status = item.status || 'success';
+ }
+};
+
+/**
+ * Adds a listener for an event.
+ *
+ * @param {string} eventName Name of the event to add a handler for
+ * @param {function()} listener Function that will be called when event is fired
+ */
+angular.scenario.ObjectModel.prototype.on = function(eventName, listener) {
+ eventName = eventName.toLowerCase();
+ this.listeners[eventName] = this.listeners[eventName] || [];
+ this.listeners[eventName].push(listener);
+};
+
+/**
+ * Emits an event which notifies listeners and passes extra
+ * arguments.
+ *
+ * @param {string} eventName Name of the event to fire.
+ */
+angular.scenario.ObjectModel.prototype.emit = function(eventName) {
+ var self = this,
+ args = Array.prototype.slice.call(arguments, 1);
+
+ eventName = eventName.toLowerCase();
+
+ if (this.listeners[eventName]) {
+ angular.forEach(this.listeners[eventName], function(listener) {
+ listener.apply(self, args);
+ });
+ }
+};
+
+/**
+ * Computes the path of definition describe blocks that wrap around
+ * this spec.
+ *
+ * @param spec Spec to compute the path for.
+ * @return {Array<Describe>} The describe block path
+ */
+angular.scenario.ObjectModel.prototype.getDefinitionPath = function(spec) {
+ var path = [];
+ var currentDefinition = spec.definition;
+ while (currentDefinition && currentDefinition.name) {
+ path.unshift(currentDefinition);
+ currentDefinition = currentDefinition.parent;
+ }
+ return path;
+};
+
+/**
+ * Gets a spec by id.
+ *
+ * @param {string} id The id of the spec to get the object for.
+ * @return {Object} the Spec instance
+ */
+angular.scenario.ObjectModel.prototype.getSpec = function(id) {
+ return this.specMap[id];
+};
+
+/**
+ * A single it block.
+ *
+ * @param {string} id Id of the spec
+ * @param {string} name Name of the spec
+ * @param {Array<string>=} definitionNames List of all describe block names that wrap this spec
+ */
+angular.scenario.ObjectModel.Spec = function(id, name, definitionNames) {
+ this.id = id;
+ this.name = name;
+ this.startTime = Date.now();
+ this.steps = [];
+ this.fullDefinitionName = (definitionNames || []).join(' ');
+};
+
+/**
+ * Adds a new step to the Spec.
+ *
+ * @param {string} name Name of the step (really name of the future)
+ * @return {Object} the added step
+ */
+angular.scenario.ObjectModel.Spec.prototype.addStep = function(name) {
+ var step = new angular.scenario.ObjectModel.Step(name);
+ this.steps.push(step);
+ return step;
+};
+
+/**
+ * Gets the most recent step.
+ *
+ * @return {Object} the step
+ */
+angular.scenario.ObjectModel.Spec.prototype.getLastStep = function() {
+ return this.steps[this.steps.length - 1];
+};
+
+/**
+ * Set status of the Spec from given Step
+ *
+ * @param {angular.scenario.ObjectModel.Step} step
+ */
+angular.scenario.ObjectModel.Spec.prototype.setStatusFromStep = function(step) {
+ if (!this.status || step.status == 'error') {
+ this.status = step.status;
+ this.error = step.error;
+ this.line = step.line;
+ }
+};
+
+/**
+ * A single step inside a Spec.
+ *
+ * @param {string} name Name of the step
+ */
+angular.scenario.ObjectModel.Step = function(name) {
+ this.name = name;
+ this.startTime = Date.now();
+};
+
+/**
+ * Helper method for setting all error status related properties
+ *
+ * @param {string} status
+ * @param {string} error
+ * @param {string} line
+ */
+angular.scenario.ObjectModel.Step.prototype.setErrorStatus = function(status, error, line) {
+ this.status = status;
+ this.error = error;
+ this.line = line;
+};
+
+/**
+ * Runner for scenarios
+ *
+ * Has to be initialized before any test is loaded,
+ * because it publishes the API into window (global space).
+ */
+angular.scenario.Runner = function($window) {
+ this.listeners = [];
+ this.$window = $window;
+ this.rootDescribe = new angular.scenario.Describe();
+ this.currentDescribe = this.rootDescribe;
+ this.api = {
+ it: this.it,
+ iit: this.iit,
+ xit: angular.noop,
+ describe: this.describe,
+ ddescribe: this.ddescribe,
+ xdescribe: angular.noop,
+ beforeEach: this.beforeEach,
+ afterEach: this.afterEach
+ };
+ angular.forEach(this.api, angular.bind(this, function(fn, key) {
+ this.$window[key] = angular.bind(this, fn);
+ }));
+};
+
+/**
+ * Emits an event which notifies listeners and passes extra
+ * arguments.
+ *
+ * @param {string} eventName Name of the event to fire.
+ */
+angular.scenario.Runner.prototype.emit = function(eventName) {
+ var self = this;
+ var args = Array.prototype.slice.call(arguments, 1);
+ eventName = eventName.toLowerCase();
+ if (!this.listeners[eventName]) {
+ return;
+ }
+ angular.forEach(this.listeners[eventName], function(listener) {
+ listener.apply(self, args);
+ });
+};
+
+/**
+ * Adds a listener for an event.
+ *
+ * @param {string} eventName The name of the event to add a handler for
+ * @param {string} listener The fn(...) that takes the extra arguments from emit()
+ */
+angular.scenario.Runner.prototype.on = function(eventName, listener) {
+ eventName = eventName.toLowerCase();
+ this.listeners[eventName] = this.listeners[eventName] || [];
+ this.listeners[eventName].push(listener);
+};
+
+/**
+ * Defines a describe block of a spec.
+ *
+ * @see Describe.js
+ *
+ * @param {string} name Name of the block
+ * @param {function()} body Body of the block
+ */
+angular.scenario.Runner.prototype.describe = function(name, body) {
+ var self = this;
+ this.currentDescribe.describe(name, function() {
+ var parentDescribe = self.currentDescribe;
+ self.currentDescribe = this;
+ try {
+ body.call(this);
+ } finally {
+ self.currentDescribe = parentDescribe;
+ }
+ });
+};
+
+/**
+ * Same as describe, but makes ddescribe the only blocks to run.
+ *
+ * @see Describe.js
+ *
+ * @param {string} name Name of the block
+ * @param {function()} body Body of the block
+ */
+angular.scenario.Runner.prototype.ddescribe = function(name, body) {
+ var self = this;
+ this.currentDescribe.ddescribe(name, function() {
+ var parentDescribe = self.currentDescribe;
+ self.currentDescribe = this;
+ try {
+ body.call(this);
+ } finally {
+ self.currentDescribe = parentDescribe;
+ }
+ });
+};
+
+/**
+ * Defines a test in a describe block of a spec.
+ *
+ * @see Describe.js
+ *
+ * @param {string} name Name of the block
+ * @param {function()} body Body of the block
+ */
+angular.scenario.Runner.prototype.it = function(name, body) {
+ this.currentDescribe.it(name, body);
+};
+
+/**
+ * Same as it, but makes iit tests the only tests to run.
+ *
+ * @see Describe.js
+ *
+ * @param {string} name Name of the block
+ * @param {function()} body Body of the block
+ */
+angular.scenario.Runner.prototype.iit = function(name, body) {
+ this.currentDescribe.iit(name, body);
+};
+
+/**
+ * Defines a function to be called before each it block in the describe
+ * (and before all nested describes).
+ *
+ * @see Describe.js
+ *
+ * @param {function()} Callback to execute
+ */
+angular.scenario.Runner.prototype.beforeEach = function(body) {
+ this.currentDescribe.beforeEach(body);
+};
+
+/**
+ * Defines a function to be called after each it block in the describe
+ * (and before all nested describes).
+ *
+ * @see Describe.js
+ *
+ * @param {function()} Callback to execute
+ */
+angular.scenario.Runner.prototype.afterEach = function(body) {
+ this.currentDescribe.afterEach(body);
+};
+
+/**
+ * Creates a new spec runner.
+ *
+ * @private
+ * @param {Object} scope parent scope
+ */
+angular.scenario.Runner.prototype.createSpecRunner_ = function(scope) {
+ var child = scope.$new();
+ var Cls = angular.scenario.SpecRunner;
+
+ // Export all the methods to child scope manually as now we don't mess controllers with scopes
+ // TODO(vojta): refactor scenario runner so that these objects are not tightly coupled as current
+ for (var name in Cls.prototype) {
+ child[name] = angular.bind(child, Cls.prototype[name]);
+ }
+
+ Cls.call(child);
+ return child;
+};
+
+/**
+ * Runs all the loaded tests with the specified runner class on the
+ * provided application.
+ *
+ * @param {angular.scenario.Application} application App to remote control.
+ */
+angular.scenario.Runner.prototype.run = function(application) {
+ var self = this;
+ var $root = angular.injector(['ng']).get('$rootScope');
+ angular.extend($root, this);
+ angular.forEach(angular.scenario.Runner.prototype, function(fn, name) {
+ $root[name] = angular.bind(self, fn);
+ });
+ $root.application = application;
+ $root.emit('RunnerBegin');
+ asyncForEach(this.rootDescribe.getSpecs(), function(spec, specDone) {
+ var dslCache = {};
+ var runner = self.createSpecRunner_($root);
+ angular.forEach(angular.scenario.dsl, function(fn, key) {
+ dslCache[key] = fn.call($root);
+ });
+ angular.forEach(angular.scenario.dsl, function(fn, key) {
+ self.$window[key] = function() {
+ var line = callerFile(3);
+ var scope = runner.$new();
+
+ // Make the dsl accessible on the current chain
+ scope.dsl = {};
+ angular.forEach(dslCache, function(fn, key) {
+ scope.dsl[key] = function() {
+ return dslCache[key].apply(scope, arguments);
+ };
+ });
+
+ // Make these methods work on the current chain
+ scope.addFuture = function() {
+ Array.prototype.push.call(arguments, line);
+ return angular.scenario.SpecRunner.
+ prototype.addFuture.apply(scope, arguments);
+ };
+ scope.addFutureAction = function() {
+ Array.prototype.push.call(arguments, line);
+ return angular.scenario.SpecRunner.
+ prototype.addFutureAction.apply(scope, arguments);
+ };
+
+ return scope.dsl[key].apply(scope, arguments);
+ };
+ });
+ runner.run(spec, function() {
+ runner.$destroy();
+ specDone.apply(this, arguments);
+ });
+ },
+ function(error) {
+ if (error) {
+ self.emit('RunnerError', error);
+ }
+ self.emit('RunnerEnd');
+ });
+};
+
+/**
+ * This class is the "this" of the it/beforeEach/afterEach method.
+ * Responsibilities:
+ * - "this" for it/beforeEach/afterEach
+ * - keep state for single it/beforeEach/afterEach execution
+ * - keep track of all of the futures to execute
+ * - run single spec (execute each future)
+ */
+angular.scenario.SpecRunner = function() {
+ this.futures = [];
+ this.afterIndex = 0;
+};
+
+/**
+ * Executes a spec which is an it block with associated before/after functions
+ * based on the describe nesting.
+ *
+ * @param {Object} spec A spec object
+ * @param {function()} specDone function that is called when the spec finishes,
+ * of the form `Function(error, index)`
+ */
+angular.scenario.SpecRunner.prototype.run = function(spec, specDone) {
+ var self = this;
+ this.spec = spec;
+
+ this.emit('SpecBegin', spec);
+
+ try {
+ spec.before.call(this);
+ spec.body.call(this);
+ this.afterIndex = this.futures.length;
+ spec.after.call(this);
+ } catch (e) {
+ this.emit('SpecError', spec, e);
+ this.emit('SpecEnd', spec);
+ specDone();
+ return;
+ }
+
+ var handleError = function(error, done) {
+ if (self.error) {
+ return done();
+ }
+ self.error = true;
+ done(null, self.afterIndex);
+ };
+
+ asyncForEach(
+ this.futures,
+ function(future, futureDone) {
+ self.step = future;
+ self.emit('StepBegin', spec, future);
+ try {
+ future.execute(function(error) {
+ if (error) {
+ self.emit('StepFailure', spec, future, error);
+ self.emit('StepEnd', spec, future);
+ return handleError(error, futureDone);
+ }
+ self.emit('StepEnd', spec, future);
+ self.$window.setTimeout(function() { futureDone(); }, 0);
+ });
+ } catch (e) {
+ self.emit('StepError', spec, future, e);
+ self.emit('StepEnd', spec, future);
+ handleError(e, futureDone);
+ }
+ },
+ function(e) {
+ if (e) {
+ self.emit('SpecError', spec, e);
+ }
+ self.emit('SpecEnd', spec);
+ // Call done in a timeout so exceptions don't recursively
+ // call this function
+ self.$window.setTimeout(function() { specDone(); }, 0);
+ }
+ );
+};
+
+/**
+ * Adds a new future action.
+ *
+ * Note: Do not pass line manually. It happens automatically.
+ *
+ * @param {string} name Name of the future
+ * @param {function()} behavior Behavior of the future
+ * @param {function()} line fn() that returns file/line number
+ */
+angular.scenario.SpecRunner.prototype.addFuture = function(name, behavior, line) {
+ var future = new angular.scenario.Future(name, angular.bind(this, behavior), line);
+ this.futures.push(future);
+ return future;
+};
+
+/**
+ * Adds a new future action to be executed on the application window.
+ *
+ * Note: Do not pass line manually. It happens automatically.
+ *
+ * @param {string} name Name of the future
+ * @param {function()} behavior Behavior of the future
+ * @param {function()} line fn() that returns file/line number
+ */
+angular.scenario.SpecRunner.prototype.addFutureAction = function(name, behavior, line) {
+ var self = this;
+ var NG = /\[ng\\\:/;
+ return this.addFuture(name, function(done) {
+ this.application.executeAction(function($window, $document) {
+
+ //TODO(esprehn): Refactor this so it doesn't need to be in here.
+ $document.elements = function(selector) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ selector = (self.selector || '') + ' ' + (selector || '');
+ selector = _jQuery.trim(selector) || '*';
+ angular.forEach(args, function(value, index) {
+ selector = selector.replace('$' + (index + 1), value);
+ });
+ var result = $document.find(selector);
+ if (selector.match(NG)) {
+ angular.forEach(['[ng-','[data-ng-','[x-ng-'], function(value, index) {
+ result = result.add(selector.replace(NG, value), $document);
+ });
+ }
+ if (!result.length) {
+ throw {
+ type: 'selector',
+ message: 'Selector ' + selector + ' did not match any elements.'
+ };
+ }
+
+ return result;
+ };
+
+ try {
+ behavior.call(self, $window, $document, done);
+ } catch (e) {
+ if (e.type && e.type === 'selector') {
+ done(e.message);
+ } else {
+ throw e;
+ }
+ }
+ });
+ }, line);
+};
+
+/**
+ * Shared DSL statements that are useful to all scenarios.
+ */
+
+ /**
+ * Usage:
+ * pause() pauses until you call resume() in the console
+ */
+angular.scenario.dsl('pause', function() {
+ return function() {
+ return this.addFuture('pausing for you to resume', function(done) {
+ this.emit('InteractivePause', this.spec, this.step);
+ this.$window.resume = function() { done(); };
+ });
+ };
+});
+
+/**
+ * Usage:
+ * sleep(seconds) pauses the test for specified number of seconds
+ */
+angular.scenario.dsl('sleep', function() {
+ return function(time) {
+ return this.addFuture('sleep for ' + time + ' seconds', function(done) {
+ this.$window.setTimeout(function() { done(null, time * 1000); }, time * 1000);
+ });
+ };
+});
+
+/**
+ * Usage:
+ * browser().navigateTo(url) Loads the url into the frame
+ * browser().navigateTo(url, fn) where fn(url) is called and returns the URL to navigate to
+ * browser().reload() refresh the page (reload the same URL)
+ * browser().window.href() window.location.href
+ * browser().window.path() window.location.pathname
+ * browser().window.search() window.location.search
+ * browser().window.hash() window.location.hash without # prefix
+ * browser().location().url() see ng.$location#url
+ * browser().location().path() see ng.$location#path
+ * browser().location().search() see ng.$location#search
+ * browser().location().hash() see ng.$location#hash
+ */
+angular.scenario.dsl('browser', function() {
+ var chain = {};
+
+ chain.navigateTo = function(url, delegate) {
+ var application = this.application;
+ return this.addFuture("browser navigate to '" + url + "'", function(done) {
+ if (delegate) {
+ url = delegate.call(this, url);
+ }
+ application.navigateTo(url, function() {
+ done(null, url);
+ }, done);
+ });
+ };
+
+ chain.reload = function() {
+ var application = this.application;
+ return this.addFutureAction('browser reload', function($window, $document, done) {
+ var href = $window.location.href;
+ application.navigateTo(href, function() {
+ done(null, href);
+ }, done);
+ });
+ };
+
+ chain.window = function() {
+ var api = {};
+
+ api.href = function() {
+ return this.addFutureAction('window.location.href', function($window, $document, done) {
+ done(null, $window.location.href);
+ });
+ };
+
+ api.path = function() {
+ return this.addFutureAction('window.location.path', function($window, $document, done) {
+ done(null, $window.location.pathname);
+ });
+ };
+
+ api.search = function() {
+ return this.addFutureAction('window.location.search', function($window, $document, done) {
+ done(null, $window.location.search);
+ });
+ };
+
+ api.hash = function() {
+ return this.addFutureAction('window.location.hash', function($window, $document, done) {
+ done(null, $window.location.hash.replace('#', ''));
+ });
+ };
+
+ return api;
+ };
+
+ chain.location = function() {
+ var api = {};
+
+ api.url = function() {
+ return this.addFutureAction('$location.url()', function($window, $document, done) {
+ done(null, $document.injector().get('$location').url());
+ });
+ };
+
+ api.path = function() {
+ return this.addFutureAction('$location.path()', function($window, $document, done) {
+ done(null, $document.injector().get('$location').path());
+ });
+ };
+
+ api.search = function() {
+ return this.addFutureAction('$location.search()', function($window, $document, done) {
+ done(null, $document.injector().get('$location').search());
+ });
+ };
+
+ api.hash = function() {
+ return this.addFutureAction('$location.hash()', function($window, $document, done) {
+ done(null, $document.injector().get('$location').hash());
+ });
+ };
+
+ return api;
+ };
+
+ return function() {
+ return chain;
+ };
+});
+
+/**
+ * Usage:
+ * expect(future).{matcher} where matcher is one of the matchers defined
+ * with angular.scenario.matcher
+ *
+ * ex. expect(binding("name")).toEqual("Elliott")
+ */
+angular.scenario.dsl('expect', function() {
+ var chain = angular.extend({}, angular.scenario.matcher);
+
+ chain.not = function() {
+ this.inverse = true;
+ return chain;
+ };
+
+ return function(future) {
+ this.future = future;
+ return chain;
+ };
+});
+
+/**
+ * Usage:
+ * using(selector, label) scopes the next DSL element selection
+ *
+ * ex.
+ * using('#foo', "'Foo' text field").input('bar')
+ */
+angular.scenario.dsl('using', function() {
+ return function(selector, label) {
+ this.selector = _jQuery.trim((this.selector || '') + ' ' + selector);
+ if (angular.isString(label) && label.length) {
+ this.label = label + ' ( ' + this.selector + ' )';
+ } else {
+ this.label = this.selector;
+ }
+ return this.dsl;
+ };
+});
+
+/**
+ * Usage:
+ * binding(name) returns the value of the first matching binding
+ */
+angular.scenario.dsl('binding', function() {
+ return function(name) {
+ return this.addFutureAction("select binding '" + name + "'",
+ function($window, $document, done) {
+ var values = $document.elements().bindings($window.angular.element, name);
+ if (!values.length) {
+ return done("Binding selector '" + name + "' did not match.");
+ }
+ done(null, values[0]);
+ });
+ };
+});
+
+/**
+ * Usage:
+ * input(name).enter(value) enters value in input with specified name
+ * input(name).check() checks checkbox
+ * input(name).select(value) selects the radio button with specified name/value
+ * input(name).val() returns the value of the input.
+ */
+angular.scenario.dsl('input', function() {
+ var chain = {};
+ var supportInputEvent = 'oninput' in document.createElement('div') && !(msie && msie <= 11);
+
+ chain.enter = function(value, event) {
+ return this.addFutureAction("input '" + this.name + "' enter '" + value + "'",
+ function($window, $document, done) {
+ var input = $document.elements('[ng\\:model="$1"]', this.name).filter(':input');
+ input.val(value);
+ input.trigger(event || (supportInputEvent ? 'input' : 'change'));
+ done();
+ });
+ };
+
+ chain.check = function() {
+ return this.addFutureAction("checkbox '" + this.name + "' toggle",
+ function($window, $document, done) {
+ var input = $document.elements('[ng\\:model="$1"]', this.name).filter(':checkbox');
+ input.trigger('click');
+ done();
+ });
+ };
+
+ chain.select = function(value) {
+ return this.addFutureAction("radio button '" + this.name + "' toggle '" + value + "'",
+ function($window, $document, done) {
+ var input = $document.
+ elements('[ng\\:model="$1"][value="$2"]', this.name, value).filter(':radio');
+ input.trigger('click');
+ done();
+ });
+ };
+
+ chain.val = function() {
+ return this.addFutureAction("return input val", function($window, $document, done) {
+ var input = $document.elements('[ng\\:model="$1"]', this.name).filter(':input');
+ done(null,input.val());
+ });
+ };
+
+ return function(name) {
+ this.name = name;
+ return chain;
+ };
+});
+
+
+/**
+ * Usage:
+ * repeater('#products table', 'Product List').count() number of rows
+ * repeater('#products table', 'Product List').row(1) all bindings in row as an array
+ * repeater('#products table', 'Product List').column('product.name') all values across all rows
+ * in an array
+ */
+angular.scenario.dsl('repeater', function() {
+ var chain = {};
+
+ chain.count = function() {
+ return this.addFutureAction("repeater '" + this.label + "' count",
+ function($window, $document, done) {
+ try {
+ done(null, $document.elements().length);
+ } catch (e) {
+ done(null, 0);
+ }
+ });
+ };
+
+ chain.column = function(binding) {
+ return this.addFutureAction("repeater '" + this.label + "' column '" + binding + "'",
+ function($window, $document, done) {
+ done(null, $document.elements().bindings($window.angular.element, binding));
+ });
+ };
+
+ chain.row = function(index) {
+ return this.addFutureAction("repeater '" + this.label + "' row '" + index + "'",
+ function($window, $document, done) {
+ var matches = $document.elements().slice(index, index + 1);
+ if (!matches.length) {
+ return done('row ' + index + ' out of bounds');
+ }
+ done(null, matches.bindings($window.angular.element));
+ });
+ };
+
+ return function(selector, label) {
+ this.dsl.using(selector, label);
+ return chain;
+ };
+});
+
+/**
+ * Usage:
+ * select(name).option('value') select one option
+ * select(name).options('value1', 'value2', ...) select options from a multi select
+ */
+angular.scenario.dsl('select', function() {
+ var chain = {};
+
+ chain.option = function(value) {
+ return this.addFutureAction("select '" + this.name + "' option '" + value + "'",
+ function($window, $document, done) {
+ var select = $document.elements('select[ng\\:model="$1"]', this.name);
+ var option = select.find('option[value="' + value + '"]');
+ if (option.length) {
+ select.val(value);
+ } else {
+ option = select.find('option').filter(function() {
+ return _jQuery(this).text() === value;
+ });
+ if (!option.length) {
+ option = select.find('option:contains("' + value + '")');
+ }
+ if (option.length) {
+ select.val(option.val());
+ } else {
+ return done("option '" + value + "' not found");
+ }
+ }
+ select.trigger('change');
+ done();
+ });
+ };
+
+ chain.options = function() {
+ var values = arguments;
+ return this.addFutureAction("select '" + this.name + "' options '" + values + "'",
+ function($window, $document, done) {
+ var select = $document.elements('select[multiple][ng\\:model="$1"]', this.name);
+ select.val(values);
+ select.trigger('change');
+ done();
+ });
+ };
+
+ return function(name) {
+ this.name = name;
+ return chain;
+ };
+});
+
+/**
+ * Usage:
+ * element(selector, label).count() get the number of elements that match selector
+ * element(selector, label).click() clicks an element
+ * element(selector, label).mouseover() mouseover an element
+ * element(selector, label).mousedown() mousedown an element
+ * element(selector, label).mouseup() mouseup an element
+ * element(selector, label).query(fn) executes fn(selectedElements, done)
+ * element(selector, label).{method}() gets the value (as defined by jQuery, ex. val)
+ * element(selector, label).{method}(value) sets the value (as defined by jQuery, ex. val)
+ * element(selector, label).{method}(key) gets the value (as defined by jQuery, ex. attr)
+ * element(selector, label).{method}(key, value) sets the value (as defined by jQuery, ex. attr)
+ */
+angular.scenario.dsl('element', function() {
+ var KEY_VALUE_METHODS = ['attr', 'css', 'prop'];
+ var VALUE_METHODS = [
+ 'val', 'text', 'html', 'height', 'innerHeight', 'outerHeight', 'width',
+ 'innerWidth', 'outerWidth', 'position', 'scrollLeft', 'scrollTop', 'offset'
+ ];
+ var chain = {};
+
+ chain.count = function() {
+ return this.addFutureAction("element '" + this.label + "' count",
+ function($window, $document, done) {
+ try {
+ done(null, $document.elements().length);
+ } catch (e) {
+ done(null, 0);
+ }
+ });
+ };
+
+ chain.click = function() {
+ return this.addFutureAction("element '" + this.label + "' click",
+ function($window, $document, done) {
+ var elements = $document.elements();
+ var href = elements.attr('href');
+ var eventProcessDefault = elements.trigger('click')[0];
+
+ if (href && elements[0].nodeName.toLowerCase() === 'a' && eventProcessDefault) {
+ this.application.navigateTo(href, function() {
+ done();
+ }, done);
+ } else {
+ done();
+ }
+ });
+ };
+
+ chain.dblclick = function() {
+ return this.addFutureAction("element '" + this.label + "' dblclick",
+ function($window, $document, done) {
+ var elements = $document.elements();
+ var href = elements.attr('href');
+ var eventProcessDefault = elements.trigger('dblclick')[0];
+
+ if (href && elements[0].nodeName.toLowerCase() === 'a' && eventProcessDefault) {
+ this.application.navigateTo(href, function() {
+ done();
+ }, done);
+ } else {
+ done();
+ }
+ });
+ };
+
+ chain.mouseover = function() {
+ return this.addFutureAction("element '" + this.label + "' mouseover",
+ function($window, $document, done) {
+ var elements = $document.elements();
+ elements.trigger('mouseover');
+ done();
+ });
+ };
+
+ chain.mousedown = function() {
+ return this.addFutureAction("element '" + this.label + "' mousedown",
+ function($window, $document, done) {
+ var elements = $document.elements();
+ elements.trigger('mousedown');
+ done();
+ });
+ };
+
+ chain.mouseup = function() {
+ return this.addFutureAction("element '" + this.label + "' mouseup",
+ function($window, $document, done) {
+ var elements = $document.elements();
+ elements.trigger('mouseup');
+ done();
+ });
+ };
+
+ chain.query = function(fn) {
+ return this.addFutureAction('element ' + this.label + ' custom query',
+ function($window, $document, done) {
+ fn.call(this, $document.elements(), done);
+ });
+ };
+
+ angular.forEach(KEY_VALUE_METHODS, function(methodName) {
+ chain[methodName] = function(name, value) {
+ var args = arguments,
+ futureName = (args.length == 1)
+ ? "element '" + this.label + "' get " + methodName + " '" + name + "'"
+ : "element '" + this.label + "' set " + methodName + " '" + name + "' to " + "'" +
+ value + "'";
+
+ return this.addFutureAction(futureName, function($window, $document, done) {
+ var element = $document.elements();
+ done(null, element[methodName].apply(element, args));
+ });
+ };
+ });
+
+ angular.forEach(VALUE_METHODS, function(methodName) {
+ chain[methodName] = function(value) {
+ var args = arguments,
+ futureName = (args.length === 0)
+ ? "element '" + this.label + "' " + methodName
+ : "element '" + this.label + "' set " + methodName + " to '" + value + "'";
+
+ return this.addFutureAction(futureName, function($window, $document, done) {
+ var element = $document.elements();
+ done(null, element[methodName].apply(element, args));
+ });
+ };
+ });
+
+ return function(selector, label) {
+ this.dsl.using(selector, label);
+ return chain;
+ };
+});
+
+/**
+ * Matchers for implementing specs. Follows the Jasmine spec conventions.
+ */
+
+angular.scenario.matcher('toEqual', function(expected) {
+ return angular.equals(this.actual, expected);
+});
+
+angular.scenario.matcher('toBe', function(expected) {
+ return this.actual === expected;
+});
+
+angular.scenario.matcher('toBeDefined', function() {
+ return angular.isDefined(this.actual);
+});
+
+angular.scenario.matcher('toBeTruthy', function() {
+ return this.actual;
+});
+
+angular.scenario.matcher('toBeFalsy', function() {
+ return !this.actual;
+});
+
+angular.scenario.matcher('toMatch', function(expected) {
+ return new RegExp(expected).test(this.actual);
+});
+
+angular.scenario.matcher('toBeNull', function() {
+ return this.actual === null;
+});
+
+angular.scenario.matcher('toContain', function(expected) {
+ return includes(this.actual, expected);
+});
+
+angular.scenario.matcher('toBeLessThan', function(expected) {
+ return this.actual < expected;
+});
+
+angular.scenario.matcher('toBeGreaterThan', function(expected) {
+ return this.actual > expected;
+});
+
+/**
+ * User Interface for the Scenario Runner.
+ *
+ * TODO(esprehn): This should be refactored now that ObjectModel exists
+ * to use angular bindings for the UI.
+ */
+angular.scenario.output('html', function(context, runner, model) {
+ var specUiMap = {},
+ lastStepUiMap = {};
+
+ context.append(
+ '<div id="header">' +
+ ' <h1><span class="angular">AngularJS</span>: Scenario Test Runner</h1>' +
+ ' <ul id="status-legend" class="status-display">' +
+ ' <li class="status-error">0 Errors</li>' +
+ ' <li class="status-failure">0 Failures</li>' +
+ ' <li class="status-success">0 Passed</li>' +
+ ' </ul>' +
+ '</div>' +
+ '<div id="specs">' +
+ ' <div class="test-children"></div>' +
+ '</div>'
+ );
+
+ runner.on('InteractivePause', function(spec) {
+ var ui = lastStepUiMap[spec.id];
+ ui.find('.test-title').
+ html('paused... <a href="javascript:resume()">resume</a> when ready.');
+ });
+
+ runner.on('SpecBegin', function(spec) {
+ var ui = findContext(spec);
+ ui.find('> .tests').append(
+ '<li class="status-pending test-it"></li>'
+ );
+ ui = ui.find('> .tests li:last');
+ ui.append(
+ '<div class="test-info">' +
+ ' <p class="test-title">' +
+ ' <span class="timer-result"></span>' +
+ ' <span class="test-name"></span>' +
+ ' </p>' +
+ '</div>' +
+ '<div class="scrollpane">' +
+ ' <ol class="test-actions"></ol>' +
+ '</div>'
+ );
+ ui.find('> .test-info .test-name').text(spec.name);
+ ui.find('> .test-info').click(function() {
+ var scrollpane = ui.find('> .scrollpane');
+ var actions = scrollpane.find('> .test-actions');
+ var name = context.find('> .test-info .test-name');
+ if (actions.find(':visible').length) {
+ actions.hide();
+ name.removeClass('open').addClass('closed');
+ } else {
+ actions.show();
+ scrollpane.attr('scrollTop', scrollpane.attr('scrollHeight'));
+ name.removeClass('closed').addClass('open');
+ }
+ });
+
+ specUiMap[spec.id] = ui;
+ });
+
+ runner.on('SpecError', function(spec, error) {
+ var ui = specUiMap[spec.id];
+ ui.append('<pre></pre>');
+ ui.find('> pre').text(formatException(error));
+ });
+
+ runner.on('SpecEnd', function(spec) {
+ var ui = specUiMap[spec.id];
+ spec = model.getSpec(spec.id);
+ ui.removeClass('status-pending');
+ ui.addClass('status-' + spec.status);
+ ui.find("> .test-info .timer-result").text(spec.duration + "ms");
+ if (spec.status === 'success') {
+ ui.find('> .test-info .test-name').addClass('closed');
+ ui.find('> .scrollpane .test-actions').hide();
+ }
+ updateTotals(spec.status);
+ });
+
+ runner.on('StepBegin', function(spec, step) {
+ var ui = specUiMap[spec.id];
+ spec = model.getSpec(spec.id);
+ step = spec.getLastStep();
+ ui.find('> .scrollpane .test-actions').append('<li class="status-pending"></li>');
+ var stepUi = lastStepUiMap[spec.id] = ui.find('> .scrollpane .test-actions li:last');
+ stepUi.append(
+ '<div class="timer-result"></div>' +
+ '<div class="test-title"></div>'
+ );
+ stepUi.find('> .test-title').text(step.name);
+ var scrollpane = stepUi.parents('.scrollpane');
+ scrollpane.attr('scrollTop', scrollpane.attr('scrollHeight'));
+ });
+
+ runner.on('StepFailure', function(spec, step, error) {
+ var ui = lastStepUiMap[spec.id];
+ addError(ui, step.line, error);
+ });
+
+ runner.on('StepError', function(spec, step, error) {
+ var ui = lastStepUiMap[spec.id];
+ addError(ui, step.line, error);
+ });
+
+ runner.on('StepEnd', function(spec, step) {
+ var stepUi = lastStepUiMap[spec.id];
+ spec = model.getSpec(spec.id);
+ step = spec.getLastStep();
+ stepUi.find('.timer-result').text(step.duration + 'ms');
+ stepUi.removeClass('status-pending');
+ stepUi.addClass('status-' + step.status);
+ var scrollpane = specUiMap[spec.id].find('> .scrollpane');
+ scrollpane.attr('scrollTop', scrollpane.attr('scrollHeight'));
+ });
+
+ /**
+ * Finds the context of a spec block defined by the passed definition.
+ *
+ * @param {Object} The definition created by the Describe object.
+ */
+ function findContext(spec) {
+ var currentContext = context.find('#specs');
+ angular.forEach(model.getDefinitionPath(spec), function(defn) {
+ var id = 'describe-' + defn.id;
+ if (!context.find('#' + id).length) {
+ currentContext.find('> .test-children').append(
+ '<div class="test-describe" id="' + id + '">' +
+ ' <h2></h2>' +
+ ' <div class="test-children"></div>' +
+ ' <ul class="tests"></ul>' +
+ '</div>'
+ );
+ context.find('#' + id).find('> h2').text('describe: ' + defn.name);
+ }
+ currentContext = context.find('#' + id);
+ });
+ return context.find('#describe-' + spec.definition.id);
+ }
+
+ /**
+ * Updates the test counter for the status.
+ *
+ * @param {string} the status.
+ */
+ function updateTotals(status) {
+ var legend = context.find('#status-legend .status-' + status);
+ var parts = legend.text().split(' ');
+ var value = (parts[0] * 1) + 1;
+ legend.text(value + ' ' + parts[1]);
+ }
+
+ /**
+ * Add an error to a step.
+ *
+ * @param {Object} The JQuery wrapped context
+ * @param {function()} fn() that should return the file/line number of the error
+ * @param {Object} the error.
+ */
+ function addError(context, line, error) {
+ context.find('.test-title').append('<pre></pre>');
+ var message = _jQuery.trim(line() + '\n\n' + formatException(error));
+ context.find('.test-title pre:last').text(message);
+ }
+});
+
+/**
+ * Generates JSON output into a context.
+ */
+angular.scenario.output('json', function(context, runner, model) {
+ model.on('RunnerEnd', function() {
+ context.text(angular.toJson(model.value));
+ });
+});
+
+/**
+ * Generates XML output into a context.
+ */
+angular.scenario.output('xml', function(context, runner, model) {
+ var $ = function(args) {return new context.init(args);};
+ model.on('RunnerEnd', function() {
+ var scenario = $('<scenario></scenario>');
+ context.append(scenario);
+ serializeXml(scenario, model.value);
+ });
+
+ /**
+ * Convert the tree into XML.
+ *
+ * @param {Object} context jQuery context to add the XML to.
+ * @param {Object} tree node to serialize
+ */
+ function serializeXml(context, tree) {
+ angular.forEach(tree.children, function(child) {
+ var describeContext = $('<describe></describe>');
+ describeContext.attr('id', child.id);
+ describeContext.attr('name', child.name);
+ context.append(describeContext);
+ serializeXml(describeContext, child);
+ });
+ var its = $('<its></its>');
+ context.append(its);
+ angular.forEach(tree.specs, function(spec) {
+ var it = $('<it></it>');
+ it.attr('id', spec.id);
+ it.attr('name', spec.name);
+ it.attr('duration', spec.duration);
+ it.attr('status', spec.status);
+ its.append(it);
+ angular.forEach(spec.steps, function(step) {
+ var stepContext = $('<step></step>');
+ stepContext.attr('name', step.name);
+ stepContext.attr('duration', step.duration);
+ stepContext.attr('status', step.status);
+ it.append(stepContext);
+ if (step.error) {
+ var error = $('<error></error>');
+ stepContext.append(error);
+ error.text(formatException(step.error));
+ }
+ });
+ });
+ }
+});
+
+/**
+ * Creates a global value $result with the result of the runner.
+ */
+angular.scenario.output('object', function(context, runner, model) {
+ runner.$window.$result = model.value;
+});
+
+bindJQuery();
+publishExternalAPI(angular);
+
+var $runner = new angular.scenario.Runner(window),
+ scripts = document.getElementsByTagName('script'),
+ script = scripts[scripts.length - 1],
+ config = {};
+
+angular.forEach(script.attributes, function(attr) {
+ var match = attr.name.match(/ng[:\-](.*)/);
+ if (match) {
+ config[match[1]] = attr.value || true;
+ }
+});
+
+if (config.autotest) {
+ JQLite(document).ready(function() {
+ angular.scenario.setUpAndRun(config);
+ });
+}
+})(window, document);
+
+
+!window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";\n\n[ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],\n.ng-cloak, .x-ng-cloak,\n.ng-hide:not(.ng-hide-animate) {\n display: none !important;\n}\n\nng\\:form {\n display: block;\n}\n\n.ng-animate-shim {\n visibility:hidden;\n}\n\n.ng-anchor {\n position:absolute;\n}\n</style>');
+!window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";\n/* CSS Document */\n\n/** Structure */\nbody {\n font-family: Arial, sans-serif;\n margin: 0;\n font-size: 14px;\n}\n\n#system-error {\n font-size: 1.5em;\n text-align: center;\n}\n\n#json, #xml {\n display: none;\n}\n\n#header {\n position: fixed;\n width: 100%;\n}\n\n#specs {\n padding-top: 50px;\n}\n\n#header .angular {\n font-family: Courier New, monospace;\n font-weight: bold;\n}\n\n#header h1 {\n font-weight: normal;\n float: left;\n font-size: 30px;\n line-height: 30px;\n margin: 0;\n padding: 10px 10px;\n height: 30px;\n}\n\n#application h2,\n#specs h2 {\n margin: 0;\n padding: 0.5em;\n font-size: 1.1em;\n}\n\n#status-legend {\n margin-top: 10px;\n margin-right: 10px;\n}\n\n#header,\n#application,\n.test-info,\n.test-actions li {\n overflow: hidden;\n}\n\n#application {\n margin: 10px;\n}\n\n#application iframe {\n width: 100%;\n height: 758px;\n}\n\n#application .popout {\n float: right;\n}\n\n#application iframe {\n border: none;\n}\n\n.tests li,\n.test-actions li,\n.test-it li,\n.test-it ol,\n.status-display {\n list-style-type: none;\n}\n\n.tests,\n.test-it ol,\n.status-display {\n margin: 0;\n padding: 0;\n}\n\n.test-info {\n margin-left: 1em;\n margin-top: 0.5em;\n border-radius: 8px 0 0 8px;\n -webkit-border-radius: 8px 0 0 8px;\n -moz-border-radius: 8px 0 0 8px;\n cursor: pointer;\n}\n\n.test-info:hover .test-name {\n text-decoration: underline;\n}\n\n.test-info .closed:before {\n content: \'\\25b8\\00A0\';\n}\n\n.test-info .open:before {\n content: \'\\25be\\00A0\';\n font-weight: bold;\n}\n\n.test-it ol {\n margin-left: 2.5em;\n}\n\n.status-display,\n.status-display li {\n float: right;\n}\n\n.status-display li {\n padding: 5px 10px;\n}\n\n.timer-result,\n.test-title {\n display: inline-block;\n margin: 0;\n padding: 4px;\n}\n\n.test-actions .test-title,\n.test-actions .test-result {\n display: table-cell;\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n\n.test-actions {\n display: table;\n}\n\n.test-actions li {\n display: table-row;\n}\n\n.timer-result {\n width: 4em;\n padding: 0 10px;\n text-align: right;\n font-family: monospace;\n}\n\n.test-it pre,\n.test-actions pre {\n clear: left;\n color: black;\n margin-left: 6em;\n}\n\n.test-describe {\n padding-bottom: 0.5em;\n}\n\n.test-describe .test-describe {\n margin: 5px 5px 10px 2em;\n}\n\n.test-actions .status-pending .test-title:before {\n content: \'\\00bb\\00A0\';\n}\n\n.scrollpane {\n max-height: 20em;\n overflow: auto;\n}\n\n/** Colors */\n\n#header {\n background-color: #F2C200;\n}\n\n#specs h2 {\n border-top: 2px solid #BABAD1;\n}\n\n#specs h2,\n#application h2 {\n background-color: #efefef;\n}\n\n#application {\n border: 1px solid #BABAD1;\n}\n\n.test-describe .test-describe {\n border-left: 1px solid #BABAD1;\n border-right: 1px solid #BABAD1;\n border-bottom: 1px solid #BABAD1;\n}\n\n.status-display {\n border: 1px solid #777;\n}\n\n.status-display .status-pending,\n.status-pending .test-info {\n background-color: #F9EEBC;\n}\n\n.status-display .status-success,\n.status-success .test-info {\n background-color: #B1D7A1;\n}\n\n.status-display .status-failure,\n.status-failure .test-info {\n background-color: #FF8286;\n}\n\n.status-display .status-error,\n.status-error .test-info {\n background-color: black;\n color: white;\n}\n\n.test-actions .status-success .test-title {\n color: #30B30A;\n}\n\n.test-actions .status-failure .test-title {\n color: #DF0000;\n}\n\n.test-actions .status-error .test-title {\n color: black;\n}\n\n.test-actions .timer-result {\n color: #888;\n}\n</style>');
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate.js
new file mode 100644
index 0000000..e7183a0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate.js
@@ -0,0 +1,2904 @@
+/*!
+ * angular-translate - v2.7.2 - 2015-06-01
+ * http://github.com/angular-translate/angular-translate
+ * Copyright (c) 2015 ; Licensed MIT
+ */
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define([], function () {
+ return (factory());
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory();
+ } else {
+ factory();
+ }
+}(this, function () {
+
+/**
+ * @ngdoc overview
+ * @name pascalprecht.translate
+ *
+ * @description
+ * The main module which holds everything together.
+ */
+angular.module('pascalprecht.translate', ['ng'])
+ .run(runTranslate);
+
+function runTranslate($translate) {
+
+ 'use strict';
+
+ var key = $translate.storageKey(),
+ storage = $translate.storage();
+
+ var fallbackFromIncorrectStorageValue = function () {
+ var preferred = $translate.preferredLanguage();
+ if (angular.isString(preferred)) {
+ $translate.use(preferred);
+ // $translate.use() will also remember the language.
+ // So, we don't need to call storage.put() here.
+ } else {
+ storage.put(key, $translate.use());
+ }
+ };
+
+ fallbackFromIncorrectStorageValue.displayName = 'fallbackFromIncorrectStorageValue';
+
+ if (storage) {
+ if (!storage.get(key)) {
+ fallbackFromIncorrectStorageValue();
+ } else {
+ $translate.use(storage.get(key))['catch'](fallbackFromIncorrectStorageValue);
+ }
+ } else if (angular.isString($translate.preferredLanguage())) {
+ $translate.use($translate.preferredLanguage());
+ }
+}
+runTranslate.$inject = ['$translate'];
+
+runTranslate.displayName = 'runTranslate';
+
+/**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translateSanitizationProvider
+ *
+ * @description
+ *
+ * Configurations for $translateSanitization
+ */
+angular.module('pascalprecht.translate').provider('$translateSanitization', $translateSanitizationProvider);
+
+function $translateSanitizationProvider () {
+
+ 'use strict';
+
+ var $sanitize,
+ currentStrategy = null, // TODO change to either 'sanitize', 'escape' or ['sanitize', 'escapeParameters'] in 3.0.
+ hasConfiguredStrategy = false,
+ hasShownNoStrategyConfiguredWarning = false,
+ strategies;
+
+ /**
+ * Definition of a sanitization strategy function
+ * @callback StrategyFunction
+ * @param {string|object} value - value to be sanitized (either a string or an interpolated value map)
+ * @param {string} mode - either 'text' for a string (translation) or 'params' for the interpolated params
+ * @return {string|object}
+ */
+
+ /**
+ * @ngdoc property
+ * @name strategies
+ * @propertyOf pascalprecht.translate.$translateSanitizationProvider
+ *
+ * @description
+ * Following strategies are built-in:
+ * <dl>
+ * <dt>sanitize</dt>
+ * <dd>Sanitizes HTML in the translation text using $sanitize</dd>
+ * <dt>escape</dt>
+ * <dd>Escapes HTML in the translation</dd>
+ * <dt>sanitizeParameters</dt>
+ * <dd>Sanitizes HTML in the values of the interpolation parameters using $sanitize</dd>
+ * <dt>escapeParameters</dt>
+ * <dd>Escapes HTML in the values of the interpolation parameters</dd>
+ * <dt>escaped</dt>
+ * <dd>Support legacy strategy name 'escaped' for backwards compatibility (will be removed in 3.0)</dd>
+ * </dl>
+ *
+ */
+
+ strategies = {
+ sanitize: function (value, mode) {
+ if (mode === 'text') {
+ value = htmlSanitizeValue(value);
+ }
+ return value;
+ },
+ escape: function (value, mode) {
+ if (mode === 'text') {
+ value = htmlEscapeValue(value);
+ }
+ return value;
+ },
+ sanitizeParameters: function (value, mode) {
+ if (mode === 'params') {
+ value = mapInterpolationParameters(value, htmlSanitizeValue);
+ }
+ return value;
+ },
+ escapeParameters: function (value, mode) {
+ if (mode === 'params') {
+ value = mapInterpolationParameters(value, htmlEscapeValue);
+ }
+ return value;
+ }
+ };
+ // Support legacy strategy name 'escaped' for backwards compatibility.
+ // TODO should be removed in 3.0
+ strategies.escaped = strategies.escapeParameters;
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateSanitizationProvider#addStrategy
+ * @methodOf pascalprecht.translate.$translateSanitizationProvider
+ *
+ * @description
+ * Adds a sanitization strategy to the list of known strategies.
+ *
+ * @param {string} strategyName - unique key for a strategy
+ * @param {StrategyFunction} strategyFunction - strategy function
+ * @returns {object} this
+ */
+ this.addStrategy = function (strategyName, strategyFunction) {
+ strategies[strategyName] = strategyFunction;
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateSanitizationProvider#removeStrategy
+ * @methodOf pascalprecht.translate.$translateSanitizationProvider
+ *
+ * @description
+ * Removes a sanitization strategy from the list of known strategies.
+ *
+ * @param {string} strategyName - unique key for a strategy
+ * @returns {object} this
+ */
+ this.removeStrategy = function (strategyName) {
+ delete strategies[strategyName];
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateSanitizationProvider#useStrategy
+ * @methodOf pascalprecht.translate.$translateSanitizationProvider
+ *
+ * @description
+ * Selects a sanitization strategy. When an array is provided the strategies will be executed in order.
+ *
+ * @param {string|StrategyFunction|array} strategy The sanitization strategy / strategies which should be used. Either a name of an existing strategy, a custom strategy function, or an array consisting of multiple names and / or custom functions.
+ * @returns {object} this
+ */
+ this.useStrategy = function (strategy) {
+ hasConfiguredStrategy = true;
+ currentStrategy = strategy;
+ return this;
+ };
+
+ /**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translateSanitization
+ * @requires $injector
+ * @requires $log
+ *
+ * @description
+ * Sanitizes interpolation parameters and translated texts.
+ *
+ */
+ this.$get = ['$injector', '$log', function ($injector, $log) {
+
+ var applyStrategies = function (value, mode, selectedStrategies) {
+ angular.forEach(selectedStrategies, function (selectedStrategy) {
+ if (angular.isFunction(selectedStrategy)) {
+ value = selectedStrategy(value, mode);
+ } else if (angular.isFunction(strategies[selectedStrategy])) {
+ value = strategies[selectedStrategy](value, mode);
+ } else {
+ throw new Error('pascalprecht.translate.$translateSanitization: Unknown sanitization strategy: \'' + selectedStrategy + '\'');
+ }
+ });
+ return value;
+ };
+
+ // TODO: should be removed in 3.0
+ var showNoStrategyConfiguredWarning = function () {
+ if (!hasConfiguredStrategy && !hasShownNoStrategyConfiguredWarning) {
+ $log.warn('pascalprecht.translate.$translateSanitization: No sanitization strategy has been configured. This can have serious security implications. See http://angular-translate.github.io/docs/#/guide/19_security for details.');
+ hasShownNoStrategyConfiguredWarning = true;
+ }
+ };
+
+ if ($injector.has('$sanitize')) {
+ $sanitize = $injector.get('$sanitize');
+ }
+
+ return {
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateSanitization#useStrategy
+ * @methodOf pascalprecht.translate.$translateSanitization
+ *
+ * @description
+ * Selects a sanitization strategy. When an array is provided the strategies will be executed in order.
+ *
+ * @param {string|StrategyFunction|array} strategy The sanitization strategy / strategies which should be used. Either a name of an existing strategy, a custom strategy function, or an array consisting of multiple names and / or custom functions.
+ */
+ useStrategy: (function (self) {
+ return function (strategy) {
+ self.useStrategy(strategy);
+ };
+ })(this),
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateSanitization#sanitize
+ * @methodOf pascalprecht.translate.$translateSanitization
+ *
+ * @description
+ * Sanitizes a value.
+ *
+ * @param {string|object} value The value which should be sanitized.
+ * @param {string} mode The current sanitization mode, either 'params' or 'text'.
+ * @param {string|StrategyFunction|array} [strategy] Optional custom strategy which should be used instead of the currently selected strategy.
+ * @returns {string|object} sanitized value
+ */
+ sanitize: function (value, mode, strategy) {
+ if (!currentStrategy) {
+ showNoStrategyConfiguredWarning();
+ }
+
+ if (arguments.length < 3) {
+ strategy = currentStrategy;
+ }
+
+ if (!strategy) {
+ return value;
+ }
+
+ var selectedStrategies = angular.isArray(strategy) ? strategy : [strategy];
+ return applyStrategies(value, mode, selectedStrategies);
+ }
+ };
+ }];
+
+ var htmlEscapeValue = function (value) {
+ var element = angular.element('<div></div>');
+ element.text(value); // not chainable, see #1044
+ return element.html();
+ };
+
+ var htmlSanitizeValue = function (value) {
+ if (!$sanitize) {
+ throw new Error('pascalprecht.translate.$translateSanitization: Error cannot find $sanitize service. Either include the ngSanitize module (https://docs.angularjs.org/api/ngSanitize) or use a sanitization strategy which does not depend on $sanitize, such as \'escape\'.');
+ }
+ return $sanitize(value);
+ };
+
+ var mapInterpolationParameters = function (value, iteratee) {
+ if (angular.isObject(value)) {
+ var result = angular.isArray(value) ? [] : {};
+
+ angular.forEach(value, function (propertyValue, propertyKey) {
+ result[propertyKey] = mapInterpolationParameters(propertyValue, iteratee);
+ });
+
+ return result;
+ } else if (angular.isNumber(value)) {
+ return value;
+ } else {
+ return iteratee(value);
+ }
+ };
+}
+
+/**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translateProvider
+ * @description
+ *
+ * $translateProvider allows developers to register translation-tables, asynchronous loaders
+ * and similar to configure translation behavior directly inside of a module.
+ *
+ */
+angular.module('pascalprecht.translate')
+.constant('pascalprechtTranslateOverrider', {})
+.provider('$translate', $translate);
+
+function $translate($STORAGE_KEY, $windowProvider, $translateSanitizationProvider, pascalprechtTranslateOverrider) {
+
+ 'use strict';
+
+ var $translationTable = {},
+ $preferredLanguage,
+ $availableLanguageKeys = [],
+ $languageKeyAliases,
+ $fallbackLanguage,
+ $fallbackWasString,
+ $uses,
+ $nextLang,
+ $storageFactory,
+ $storageKey = $STORAGE_KEY,
+ $storagePrefix,
+ $missingTranslationHandlerFactory,
+ $interpolationFactory,
+ $interpolatorFactories = [],
+ $loaderFactory,
+ $cloakClassName = 'translate-cloak',
+ $loaderOptions,
+ $notFoundIndicatorLeft,
+ $notFoundIndicatorRight,
+ $postCompilingEnabled = false,
+ $forceAsyncReloadEnabled = false,
+ NESTED_OBJECT_DELIMITER = '.',
+ loaderCache,
+ directivePriority = 0,
+ statefulFilter = true,
+ uniformLanguageTagResolver = 'default',
+ languageTagResolver = {
+ 'default': function (tag) {
+ return (tag || '').split('-').join('_');
+ },
+ java: function (tag) {
+ var temp = (tag || '').split('-').join('_');
+ var parts = temp.split('_');
+ return parts.length > 1 ? (parts[0].toLowerCase() + '_' + parts[1].toUpperCase()) : temp;
+ },
+ bcp47: function (tag) {
+ var temp = (tag || '').split('_').join('-');
+ var parts = temp.split('-');
+ return parts.length > 1 ? (parts[0].toLowerCase() + '-' + parts[1].toUpperCase()) : temp;
+ }
+ };
+
+ var version = '2.7.2';
+
+ // tries to determine the browsers language
+ var getFirstBrowserLanguage = function () {
+
+ // internal purpose only
+ if (angular.isFunction(pascalprechtTranslateOverrider.getLocale)) {
+ return pascalprechtTranslateOverrider.getLocale();
+ }
+
+ var nav = $windowProvider.$get().navigator,
+ browserLanguagePropertyKeys = ['language', 'browserLanguage', 'systemLanguage', 'userLanguage'],
+ i,
+ language;
+
+ // support for HTML 5.1 "navigator.languages"
+ if (angular.isArray(nav.languages)) {
+ for (i = 0; i < nav.languages.length; i++) {
+ language = nav.languages[i];
+ if (language && language.length) {
+ return language;
+ }
+ }
+ }
+
+ // support for other well known properties in browsers
+ for (i = 0; i < browserLanguagePropertyKeys.length; i++) {
+ language = nav[browserLanguagePropertyKeys[i]];
+ if (language && language.length) {
+ return language;
+ }
+ }
+
+ return null;
+ };
+ getFirstBrowserLanguage.displayName = 'angular-translate/service: getFirstBrowserLanguage';
+
+ // tries to determine the browsers locale
+ var getLocale = function () {
+ var locale = getFirstBrowserLanguage() || '';
+ if (languageTagResolver[uniformLanguageTagResolver]) {
+ locale = languageTagResolver[uniformLanguageTagResolver](locale);
+ }
+ return locale;
+ };
+ getLocale.displayName = 'angular-translate/service: getLocale';
+
+ /**
+ * @name indexOf
+ * @private
+ *
+ * @description
+ * indexOf polyfill. Kinda sorta.
+ *
+ * @param {array} array Array to search in.
+ * @param {string} searchElement Element to search for.
+ *
+ * @returns {int} Index of search element.
+ */
+ var indexOf = function(array, searchElement) {
+ for (var i = 0, len = array.length; i < len; i++) {
+ if (array[i] === searchElement) {
+ return i;
+ }
+ }
+ return -1;
+ };
+
+ /**
+ * @name trim
+ * @private
+ *
+ * @description
+ * trim polyfill
+ *
+ * @returns {string} The string stripped of whitespace from both ends
+ */
+ var trim = function() {
+ return this.toString().replace(/^\s+|\s+$/g, '');
+ };
+
+ var negotiateLocale = function (preferred) {
+
+ var avail = [],
+ locale = angular.lowercase(preferred),
+ i = 0,
+ n = $availableLanguageKeys.length;
+
+ for (; i < n; i++) {
+ avail.push(angular.lowercase($availableLanguageKeys[i]));
+ }
+
+ if (indexOf(avail, locale) > -1) {
+ return preferred;
+ }
+
+ if ($languageKeyAliases) {
+ var alias;
+ for (var langKeyAlias in $languageKeyAliases) {
+ var hasWildcardKey = false;
+ var hasExactKey = Object.prototype.hasOwnProperty.call($languageKeyAliases, langKeyAlias) &&
+ angular.lowercase(langKeyAlias) === angular.lowercase(preferred);
+
+ if (langKeyAlias.slice(-1) === '*') {
+ hasWildcardKey = langKeyAlias.slice(0, -1) === preferred.slice(0, langKeyAlias.length-1);
+ }
+ if (hasExactKey || hasWildcardKey) {
+ alias = $languageKeyAliases[langKeyAlias];
+ if (indexOf(avail, angular.lowercase(alias)) > -1) {
+ return alias;
+ }
+ }
+ }
+ }
+
+ if (preferred) {
+ var parts = preferred.split('_');
+
+ if (parts.length > 1 && indexOf(avail, angular.lowercase(parts[0])) > -1) {
+ return parts[0];
+ }
+ }
+
+ // If everything fails, just return the preferred, unchanged.
+ return preferred;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#translations
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Registers a new translation table for specific language key.
+ *
+ * To register a translation table for specific language, pass a defined language
+ * key as first parameter.
+ *
+ * <pre>
+ * // register translation table for language: 'de_DE'
+ * $translateProvider.translations('de_DE', {
+ * 'GREETING': 'Hallo Welt!'
+ * });
+ *
+ * // register another one
+ * $translateProvider.translations('en_US', {
+ * 'GREETING': 'Hello world!'
+ * });
+ * </pre>
+ *
+ * When registering multiple translation tables for for the same language key,
+ * the actual translation table gets extended. This allows you to define module
+ * specific translation which only get added, once a specific module is loaded in
+ * your app.
+ *
+ * Invoking this method with no arguments returns the translation table which was
+ * registered with no language key. Invoking it with a language key returns the
+ * related translation table.
+ *
+ * @param {string} key A language key.
+ * @param {object} translationTable A plain old JavaScript object that represents a translation table.
+ *
+ */
+ var translations = function (langKey, translationTable) {
+
+ if (!langKey && !translationTable) {
+ return $translationTable;
+ }
+
+ if (langKey && !translationTable) {
+ if (angular.isString(langKey)) {
+ return $translationTable[langKey];
+ }
+ } else {
+ if (!angular.isObject($translationTable[langKey])) {
+ $translationTable[langKey] = {};
+ }
+ angular.extend($translationTable[langKey], flatObject(translationTable));
+ }
+ return this;
+ };
+
+ this.translations = translations;
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#cloakClassName
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ *
+ * Let's you change the class name for `translate-cloak` directive.
+ * Default class name is `translate-cloak`.
+ *
+ * @param {string} name translate-cloak class name
+ */
+ this.cloakClassName = function (name) {
+ if (!name) {
+ return $cloakClassName;
+ }
+ $cloakClassName = name;
+ return this;
+ };
+
+ /**
+ * @name flatObject
+ * @private
+ *
+ * @description
+ * Flats an object. This function is used to flatten given translation data with
+ * namespaces, so they are later accessible via dot notation.
+ */
+ var flatObject = function (data, path, result, prevKey) {
+ var key, keyWithPath, keyWithShortPath, val;
+
+ if (!path) {
+ path = [];
+ }
+ if (!result) {
+ result = {};
+ }
+ for (key in data) {
+ if (!Object.prototype.hasOwnProperty.call(data, key)) {
+ continue;
+ }
+ val = data[key];
+ if (angular.isObject(val)) {
+ flatObject(val, path.concat(key), result, key);
+ } else {
+ keyWithPath = path.length ? ('' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key) : key;
+ if(path.length && key === prevKey){
+ // Create shortcut path (foo.bar == foo.bar.bar)
+ keyWithShortPath = '' + path.join(NESTED_OBJECT_DELIMITER);
+ // Link it to original path
+ result[keyWithShortPath] = '@:' + keyWithPath;
+ }
+ result[keyWithPath] = val;
+ }
+ }
+ return result;
+ };
+ flatObject.displayName = 'flatObject';
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#addInterpolation
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Adds interpolation services to angular-translate, so it can manage them.
+ *
+ * @param {object} factory Interpolation service factory
+ */
+ this.addInterpolation = function (factory) {
+ $interpolatorFactories.push(factory);
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useMessageFormatInterpolation
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate to use interpolation functionality of messageformat.js.
+ * This is useful when having high level pluralization and gender selection.
+ */
+ this.useMessageFormatInterpolation = function () {
+ return this.useInterpolation('$translateMessageFormatInterpolation');
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useInterpolation
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate which interpolation style to use as default, application-wide.
+ * Simply pass a factory/service name. The interpolation service has to implement
+ * the correct interface.
+ *
+ * @param {string} factory Interpolation service name.
+ */
+ this.useInterpolation = function (factory) {
+ $interpolationFactory = factory;
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useSanitizeStrategy
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Simply sets a sanitation strategy type.
+ *
+ * @param {string} value Strategy type.
+ */
+ this.useSanitizeValueStrategy = function (value) {
+ $translateSanitizationProvider.useStrategy(value);
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#preferredLanguage
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells the module which of the registered translation tables to use for translation
+ * at initial startup by passing a language key. Similar to `$translateProvider#use`
+ * only that it says which language to **prefer**.
+ *
+ * @param {string} langKey A language key.
+ *
+ */
+ this.preferredLanguage = function(langKey) {
+ setupPreferredLanguage(langKey);
+ return this;
+
+ };
+ var setupPreferredLanguage = function (langKey) {
+ if (langKey) {
+ $preferredLanguage = langKey;
+ }
+ return $preferredLanguage;
+ };
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#translationNotFoundIndicator
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Sets an indicator which is used when a translation isn't found. E.g. when
+ * setting the indicator as 'X' and one tries to translate a translation id
+ * called `NOT_FOUND`, this will result in `X NOT_FOUND X`.
+ *
+ * Internally this methods sets a left indicator and a right indicator using
+ * `$translateProvider.translationNotFoundIndicatorLeft()` and
+ * `$translateProvider.translationNotFoundIndicatorRight()`.
+ *
+ * **Note**: These methods automatically add a whitespace between the indicators
+ * and the translation id.
+ *
+ * @param {string} indicator An indicator, could be any string.
+ */
+ this.translationNotFoundIndicator = function (indicator) {
+ this.translationNotFoundIndicatorLeft(indicator);
+ this.translationNotFoundIndicatorRight(indicator);
+ return this;
+ };
+
+ /**
+ * ngdoc function
+ * @name pascalprecht.translate.$translateProvider#translationNotFoundIndicatorLeft
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Sets an indicator which is used when a translation isn't found left to the
+ * translation id.
+ *
+ * @param {string} indicator An indicator.
+ */
+ this.translationNotFoundIndicatorLeft = function (indicator) {
+ if (!indicator) {
+ return $notFoundIndicatorLeft;
+ }
+ $notFoundIndicatorLeft = indicator;
+ return this;
+ };
+
+ /**
+ * ngdoc function
+ * @name pascalprecht.translate.$translateProvider#translationNotFoundIndicatorLeft
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Sets an indicator which is used when a translation isn't found right to the
+ * translation id.
+ *
+ * @param {string} indicator An indicator.
+ */
+ this.translationNotFoundIndicatorRight = function (indicator) {
+ if (!indicator) {
+ return $notFoundIndicatorRight;
+ }
+ $notFoundIndicatorRight = indicator;
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#fallbackLanguage
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells the module which of the registered translation tables to use when missing translations
+ * at initial startup by passing a language key. Similar to `$translateProvider#use`
+ * only that it says which language to **fallback**.
+ *
+ * @param {string||array} langKey A language key.
+ *
+ */
+ this.fallbackLanguage = function (langKey) {
+ fallbackStack(langKey);
+ return this;
+ };
+
+ var fallbackStack = function (langKey) {
+ if (langKey) {
+ if (angular.isString(langKey)) {
+ $fallbackWasString = true;
+ $fallbackLanguage = [ langKey ];
+ } else if (angular.isArray(langKey)) {
+ $fallbackWasString = false;
+ $fallbackLanguage = langKey;
+ }
+ if (angular.isString($preferredLanguage) && indexOf($fallbackLanguage, $preferredLanguage) < 0) {
+ $fallbackLanguage.push($preferredLanguage);
+ }
+
+ return this;
+ } else {
+ if ($fallbackWasString) {
+ return $fallbackLanguage[0];
+ } else {
+ return $fallbackLanguage;
+ }
+ }
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#use
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Set which translation table to use for translation by given language key. When
+ * trying to 'use' a language which isn't provided, it'll throw an error.
+ *
+ * You actually don't have to use this method since `$translateProvider#preferredLanguage`
+ * does the job too.
+ *
+ * @param {string} langKey A language key.
+ */
+ this.use = function (langKey) {
+ if (langKey) {
+ if (!$translationTable[langKey] && (!$loaderFactory)) {
+ // only throw an error, when not loading translation data asynchronously
+ throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\'');
+ }
+ $uses = langKey;
+ return this;
+ }
+ return $uses;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#storageKey
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells the module which key must represent the choosed language by a user in the storage.
+ *
+ * @param {string} key A key for the storage.
+ */
+ var storageKey = function(key) {
+ if (!key) {
+ if ($storagePrefix) {
+ return $storagePrefix + $storageKey;
+ }
+ return $storageKey;
+ }
+ $storageKey = key;
+ return this;
+ };
+
+ this.storageKey = storageKey;
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useUrlLoader
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate to use `$translateUrlLoader` extension service as loader.
+ *
+ * @param {string} url Url
+ * @param {Object=} options Optional configuration object
+ */
+ this.useUrlLoader = function (url, options) {
+ return this.useLoader('$translateUrlLoader', angular.extend({ url: url }, options));
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useStaticFilesLoader
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate to use `$translateStaticFilesLoader` extension service as loader.
+ *
+ * @param {Object=} options Optional configuration object
+ */
+ this.useStaticFilesLoader = function (options) {
+ return this.useLoader('$translateStaticFilesLoader', options);
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useLoader
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate to use any other service as loader.
+ *
+ * @param {string} loaderFactory Factory name to use
+ * @param {Object=} options Optional configuration object
+ */
+ this.useLoader = function (loaderFactory, options) {
+ $loaderFactory = loaderFactory;
+ $loaderOptions = options || {};
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useLocalStorage
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate to use `$translateLocalStorage` service as storage layer.
+ *
+ */
+ this.useLocalStorage = function () {
+ return this.useStorage('$translateLocalStorage');
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useCookieStorage
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate to use `$translateCookieStorage` service as storage layer.
+ */
+ this.useCookieStorage = function () {
+ return this.useStorage('$translateCookieStorage');
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useStorage
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate to use custom service as storage layer.
+ */
+ this.useStorage = function (storageFactory) {
+ $storageFactory = storageFactory;
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#storagePrefix
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Sets prefix for storage key.
+ *
+ * @param {string} prefix Storage key prefix
+ */
+ this.storagePrefix = function (prefix) {
+ if (!prefix) {
+ return prefix;
+ }
+ $storagePrefix = prefix;
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useMissingTranslationHandlerLog
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate to use built-in log handler when trying to translate
+ * a translation Id which doesn't exist.
+ *
+ * This is actually a shortcut method for `useMissingTranslationHandler()`.
+ *
+ */
+ this.useMissingTranslationHandlerLog = function () {
+ return this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog');
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useMissingTranslationHandler
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Expects a factory name which later gets instantiated with `$injector`.
+ * This method can be used to tell angular-translate to use a custom
+ * missingTranslationHandler. Just build a factory which returns a function
+ * and expects a translation id as argument.
+ *
+ * Example:
+ * <pre>
+ * app.config(function ($translateProvider) {
+ * $translateProvider.useMissingTranslationHandler('customHandler');
+ * });
+ *
+ * app.factory('customHandler', function (dep1, dep2) {
+ * return function (translationId) {
+ * // something with translationId and dep1 and dep2
+ * };
+ * });
+ * </pre>
+ *
+ * @param {string} factory Factory name
+ */
+ this.useMissingTranslationHandler = function (factory) {
+ $missingTranslationHandlerFactory = factory;
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#usePostCompiling
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * If post compiling is enabled, all translated values will be processed
+ * again with AngularJS' $compile.
+ *
+ * Example:
+ * <pre>
+ * app.config(function ($translateProvider) {
+ * $translateProvider.usePostCompiling(true);
+ * });
+ * </pre>
+ *
+ * @param {string} factory Factory name
+ */
+ this.usePostCompiling = function (value) {
+ $postCompilingEnabled = !(!value);
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#forceAsyncReload
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * If force async reload is enabled, async loader will always be called
+ * even if $translationTable already contains the language key, adding
+ * possible new entries to the $translationTable.
+ *
+ * Example:
+ * <pre>
+ * app.config(function ($translateProvider) {
+ * $translateProvider.forceAsyncReload(true);
+ * });
+ * </pre>
+ *
+ * @param {boolean} value - valid values are true or false
+ */
+ this.forceAsyncReload = function (value) {
+ $forceAsyncReloadEnabled = !(!value);
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#uniformLanguageTag
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate which language tag should be used as a result when determining
+ * the current browser language.
+ *
+ * This setting must be set before invoking {@link pascalprecht.translate.$translateProvider#methods_determinePreferredLanguage determinePreferredLanguage()}.
+ *
+ * <pre>
+ * $translateProvider
+ * .uniformLanguageTag('bcp47')
+ * .determinePreferredLanguage()
+ * </pre>
+ *
+ * The resolver currently supports:
+ * * default
+ * (traditionally: hyphens will be converted into underscores, i.e. en-US => en_US)
+ * en-US => en_US
+ * en_US => en_US
+ * en-us => en_us
+ * * java
+ * like default, but the second part will be always in uppercase
+ * en-US => en_US
+ * en_US => en_US
+ * en-us => en_US
+ * * BCP 47 (RFC 4646 & 4647)
+ * en-US => en-US
+ * en_US => en-US
+ * en-us => en-US
+ *
+ * See also:
+ * * http://en.wikipedia.org/wiki/IETF_language_tag
+ * * http://www.w3.org/International/core/langtags/
+ * * http://tools.ietf.org/html/bcp47
+ *
+ * @param {string|object} options - options (or standard)
+ * @param {string} options.standard - valid values are 'default', 'bcp47', 'java'
+ */
+ this.uniformLanguageTag = function (options) {
+
+ if (!options) {
+ options = {};
+ } else if (angular.isString(options)) {
+ options = {
+ standard: options
+ };
+ }
+
+ uniformLanguageTagResolver = options.standard;
+
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#determinePreferredLanguage
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Tells angular-translate to try to determine on its own which language key
+ * to set as preferred language. When `fn` is given, angular-translate uses it
+ * to determine a language key, otherwise it uses the built-in `getLocale()`
+ * method.
+ *
+ * The `getLocale()` returns a language key in the format `[lang]_[country]` or
+ * `[lang]` depending on what the browser provides.
+ *
+ * Use this method at your own risk, since not all browsers return a valid
+ * locale (see {@link pascalprecht.translate.$translateProvider#methods_uniformLanguageTag uniformLanguageTag()}).
+ *
+ * @param {Function=} fn Function to determine a browser's locale
+ */
+ this.determinePreferredLanguage = function (fn) {
+
+ var locale = (fn && angular.isFunction(fn)) ? fn() : getLocale();
+
+ if (!$availableLanguageKeys.length) {
+ $preferredLanguage = locale;
+ } else {
+ $preferredLanguage = negotiateLocale(locale);
+ }
+
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#registerAvailableLanguageKeys
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Registers a set of language keys the app will work with. Use this method in
+ * combination with
+ * {@link pascalprecht.translate.$translateProvider#determinePreferredLanguage determinePreferredLanguage}.
+ * When available languages keys are registered, angular-translate
+ * tries to find the best fitting language key depending on the browsers locale,
+ * considering your language key convention.
+ *
+ * @param {object} languageKeys Array of language keys the your app will use
+ * @param {object=} aliases Alias map.
+ */
+ this.registerAvailableLanguageKeys = function (languageKeys, aliases) {
+ if (languageKeys) {
+ $availableLanguageKeys = languageKeys;
+ if (aliases) {
+ $languageKeyAliases = aliases;
+ }
+ return this;
+ }
+ return $availableLanguageKeys;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#useLoaderCache
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Registers a cache for internal $http based loaders.
+ * {@link pascalprecht.translate.$translateProvider#determinePreferredLanguage determinePreferredLanguage}.
+ * When false the cache will be disabled (default). When true or undefined
+ * the cache will be a default (see $cacheFactory). When an object it will
+ * be treat as a cache object itself: the usage is $http({cache: cache})
+ *
+ * @param {object} cache boolean, string or cache-object
+ */
+ this.useLoaderCache = function (cache) {
+ if (cache === false) {
+ // disable cache
+ loaderCache = undefined;
+ } else if (cache === true) {
+ // enable cache using AJS defaults
+ loaderCache = true;
+ } else if (typeof(cache) === 'undefined') {
+ // enable cache using default
+ loaderCache = '$translationCache';
+ } else if (cache) {
+ // enable cache using given one (see $cacheFactory)
+ loaderCache = cache;
+ }
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#directivePriority
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Sets the default priority of the translate directive. The standard value is `0`.
+ * Calling this function without an argument will return the current value.
+ *
+ * @param {number} priority for the translate-directive
+ */
+ this.directivePriority = function (priority) {
+ if (priority === undefined) {
+ // getter
+ return directivePriority;
+ } else {
+ // setter with chaining
+ directivePriority = priority;
+ return this;
+ }
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateProvider#statefulFilter
+ * @methodOf pascalprecht.translate.$translateProvider
+ *
+ * @description
+ * Since AngularJS 1.3, filters which are not stateless (depending at the scope)
+ * have to explicit define this behavior.
+ * Sets whether the translate filter should be stateful or stateless. The standard value is `true`
+ * meaning being stateful.
+ * Calling this function without an argument will return the current value.
+ *
+ * @param {boolean} state - defines the state of the filter
+ */
+ this.statefulFilter = function (state) {
+ if (state === undefined) {
+ // getter
+ return statefulFilter;
+ } else {
+ // setter with chaining
+ statefulFilter = state;
+ return this;
+ }
+ };
+
+ /**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translate
+ * @requires $interpolate
+ * @requires $log
+ * @requires $rootScope
+ * @requires $q
+ *
+ * @description
+ * The `$translate` service is the actual core of angular-translate. It expects a translation id
+ * and optional interpolate parameters to translate contents.
+ *
+ * <pre>
+ * $translate('HEADLINE_TEXT').then(function (translation) {
+ * $scope.translatedText = translation;
+ * });
+ * </pre>
+ *
+ * @param {string|array} translationId A token which represents a translation id
+ * This can be optionally an array of translation ids which
+ * results that the function returns an object where each key
+ * is the translation id and the value the translation.
+ * @param {object=} interpolateParams An object hash for dynamic values
+ * @param {string} interpolationId The id of the interpolation to use
+ * @returns {object} promise
+ */
+ this.$get = [
+ '$log',
+ '$injector',
+ '$rootScope',
+ '$q',
+ function ($log, $injector, $rootScope, $q) {
+
+ var Storage,
+ defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'),
+ pendingLoader = false,
+ interpolatorHashMap = {},
+ langPromises = {},
+ fallbackIndex,
+ startFallbackIteration;
+
+ var $translate = function (translationId, interpolateParams, interpolationId, defaultTranslationText) {
+
+ // Duck detection: If the first argument is an array, a bunch of translations was requested.
+ // The result is an object.
+ if (angular.isArray(translationId)) {
+ // Inspired by Q.allSettled by Kris Kowal
+ // https://github.com/kriskowal/q/blob/b0fa72980717dc202ffc3cbf03b936e10ebbb9d7/q.js#L1553-1563
+ // This transforms all promises regardless resolved or rejected
+ var translateAll = function (translationIds) {
+ var results = {}; // storing the actual results
+ var promises = []; // promises to wait for
+ // Wraps the promise a) being always resolved and b) storing the link id->value
+ var translate = function (translationId) {
+ var deferred = $q.defer();
+ var regardless = function (value) {
+ results[translationId] = value;
+ deferred.resolve([translationId, value]);
+ };
+ // we don't care whether the promise was resolved or rejected; just store the values
+ $translate(translationId, interpolateParams, interpolationId, defaultTranslationText).then(regardless, regardless);
+ return deferred.promise;
+ };
+ for (var i = 0, c = translationIds.length; i < c; i++) {
+ promises.push(translate(translationIds[i]));
+ }
+ // wait for all (including storing to results)
+ return $q.all(promises).then(function () {
+ // return the results
+ return results;
+ });
+ };
+ return translateAll(translationId);
+ }
+
+ var deferred = $q.defer();
+
+ // trim off any whitespace
+ if (translationId) {
+ translationId = trim.apply(translationId);
+ }
+
+ var promiseToWaitFor = (function () {
+ var promise = $preferredLanguage ?
+ langPromises[$preferredLanguage] :
+ langPromises[$uses];
+
+ fallbackIndex = 0;
+
+ if ($storageFactory && !promise) {
+ // looks like there's no pending promise for $preferredLanguage or
+ // $uses. Maybe there's one pending for a language that comes from
+ // storage.
+ var langKey = Storage.get($storageKey);
+ promise = langPromises[langKey];
+
+ if ($fallbackLanguage && $fallbackLanguage.length) {
+ var index = indexOf($fallbackLanguage, langKey);
+ // maybe the language from storage is also defined as fallback language
+ // we increase the fallback language index to not search in that language
+ // as fallback, since it's probably the first used language
+ // in that case the index starts after the first element
+ fallbackIndex = (index === 0) ? 1 : 0;
+
+ // but we can make sure to ALWAYS fallback to preferred language at least
+ if (indexOf($fallbackLanguage, $preferredLanguage) < 0) {
+ $fallbackLanguage.push($preferredLanguage);
+ }
+ }
+ }
+ return promise;
+ }());
+
+ if (!promiseToWaitFor) {
+ // no promise to wait for? okay. Then there's no loader registered
+ // nor is a one pending for language that comes from storage.
+ // We can just translate.
+ determineTranslation(translationId, interpolateParams, interpolationId, defaultTranslationText).then(deferred.resolve, deferred.reject);
+ } else {
+ var promiseResolved = function () {
+ determineTranslation(translationId, interpolateParams, interpolationId, defaultTranslationText).then(deferred.resolve, deferred.reject);
+ };
+ promiseResolved.displayName = 'promiseResolved';
+
+ promiseToWaitFor['finally'](promiseResolved, deferred.reject);
+ }
+ return deferred.promise;
+ };
+
+ /**
+ * @name applyNotFoundIndicators
+ * @private
+ *
+ * @description
+ * Applies not fount indicators to given translation id, if needed.
+ * This function gets only executed, if a translation id doesn't exist,
+ * which is why a translation id is expected as argument.
+ *
+ * @param {string} translationId Translation id.
+ * @returns {string} Same as given translation id but applied with not found
+ * indicators.
+ */
+ var applyNotFoundIndicators = function (translationId) {
+ // applying notFoundIndicators
+ if ($notFoundIndicatorLeft) {
+ translationId = [$notFoundIndicatorLeft, translationId].join(' ');
+ }
+ if ($notFoundIndicatorRight) {
+ translationId = [translationId, $notFoundIndicatorRight].join(' ');
+ }
+ return translationId;
+ };
+
+ /**
+ * @name useLanguage
+ * @private
+ *
+ * @description
+ * Makes actual use of a language by setting a given language key as used
+ * language and informs registered interpolators to also use the given
+ * key as locale.
+ *
+ * @param {key} Locale key.
+ */
+ var useLanguage = function (key) {
+ $uses = key;
+ $rootScope.$emit('$translateChangeSuccess', {language: key});
+
+ if ($storageFactory) {
+ Storage.put($translate.storageKey(), $uses);
+ }
+ // inform default interpolator
+ defaultInterpolator.setLocale($uses);
+
+ var eachInterpolator = function (interpolator, id) {
+ interpolatorHashMap[id].setLocale($uses);
+ };
+ eachInterpolator.displayName = 'eachInterpolatorLocaleSetter';
+
+ // inform all others too!
+ angular.forEach(interpolatorHashMap, eachInterpolator);
+ $rootScope.$emit('$translateChangeEnd', {language: key});
+ };
+
+ /**
+ * @name loadAsync
+ * @private
+ *
+ * @description
+ * Kicks of registered async loader using `$injector` and applies existing
+ * loader options. When resolved, it updates translation tables accordingly
+ * or rejects with given language key.
+ *
+ * @param {string} key Language key.
+ * @return {Promise} A promise.
+ */
+ var loadAsync = function (key) {
+ if (!key) {
+ throw 'No language key specified for loading.';
+ }
+
+ var deferred = $q.defer();
+
+ $rootScope.$emit('$translateLoadingStart', {language: key});
+ pendingLoader = true;
+
+ var cache = loaderCache;
+ if (typeof(cache) === 'string') {
+ // getting on-demand instance of loader
+ cache = $injector.get(cache);
+ }
+
+ var loaderOptions = angular.extend({}, $loaderOptions, {
+ key: key,
+ $http: angular.extend({}, {
+ cache: cache
+ }, $loaderOptions.$http)
+ });
+
+ var onLoaderSuccess = function (data) {
+ var translationTable = {};
+ $rootScope.$emit('$translateLoadingSuccess', {language: key});
+
+ if (angular.isArray(data)) {
+ angular.forEach(data, function (table) {
+ angular.extend(translationTable, flatObject(table));
+ });
+ } else {
+ angular.extend(translationTable, flatObject(data));
+ }
+ pendingLoader = false;
+ deferred.resolve({
+ key: key,
+ table: translationTable
+ });
+ $rootScope.$emit('$translateLoadingEnd', {language: key});
+ };
+ onLoaderSuccess.displayName = 'onLoaderSuccess';
+
+ var onLoaderError = function (key) {
+ $rootScope.$emit('$translateLoadingError', {language: key});
+ deferred.reject(key);
+ $rootScope.$emit('$translateLoadingEnd', {language: key});
+ };
+ onLoaderError.displayName = 'onLoaderError';
+
+ $injector.get($loaderFactory)(loaderOptions)
+ .then(onLoaderSuccess, onLoaderError);
+
+ return deferred.promise;
+ };
+
+ if ($storageFactory) {
+ Storage = $injector.get($storageFactory);
+
+ if (!Storage.get || !Storage.put) {
+ throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or put() method!');
+ }
+ }
+
+ // if we have additional interpolations that were added via
+ // $translateProvider.addInterpolation(), we have to map'em
+ if ($interpolatorFactories.length) {
+ var eachInterpolationFactory = function (interpolatorFactory) {
+ var interpolator = $injector.get(interpolatorFactory);
+ // setting initial locale for each interpolation service
+ interpolator.setLocale($preferredLanguage || $uses);
+ // make'em recognizable through id
+ interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator;
+ };
+ eachInterpolationFactory.displayName = 'interpolationFactoryAdder';
+
+ angular.forEach($interpolatorFactories, eachInterpolationFactory);
+ }
+
+ /**
+ * @name getTranslationTable
+ * @private
+ *
+ * @description
+ * Returns a promise that resolves to the translation table
+ * or is rejected if an error occurred.
+ *
+ * @param langKey
+ * @returns {Q.promise}
+ */
+ var getTranslationTable = function (langKey) {
+ var deferred = $q.defer();
+ if (Object.prototype.hasOwnProperty.call($translationTable, langKey)) {
+ deferred.resolve($translationTable[langKey]);
+ } else if (langPromises[langKey]) {
+ var onResolve = function (data) {
+ translations(data.key, data.table);
+ deferred.resolve(data.table);
+ };
+ onResolve.displayName = 'translationTableResolver';
+ langPromises[langKey].then(onResolve, deferred.reject);
+ } else {
+ deferred.reject();
+ }
+ return deferred.promise;
+ };
+
+ /**
+ * @name getFallbackTranslation
+ * @private
+ *
+ * @description
+ * Returns a promise that will resolve to the translation
+ * or be rejected if no translation was found for the language.
+ * This function is currently only used for fallback language translation.
+ *
+ * @param langKey The language to translate to.
+ * @param translationId
+ * @param interpolateParams
+ * @param Interpolator
+ * @returns {Q.promise}
+ */
+ var getFallbackTranslation = function (langKey, translationId, interpolateParams, Interpolator) {
+ var deferred = $q.defer();
+
+ var onResolve = function (translationTable) {
+ if (Object.prototype.hasOwnProperty.call(translationTable, translationId)) {
+ Interpolator.setLocale(langKey);
+ var translation = translationTable[translationId];
+ if (translation.substr(0, 2) === '@:') {
+ getFallbackTranslation(langKey, translation.substr(2), interpolateParams, Interpolator)
+ .then(deferred.resolve, deferred.reject);
+ } else {
+ deferred.resolve(Interpolator.interpolate(translationTable[translationId], interpolateParams));
+ }
+ Interpolator.setLocale($uses);
+ } else {
+ deferred.reject();
+ }
+ };
+ onResolve.displayName = 'fallbackTranslationResolver';
+
+ getTranslationTable(langKey).then(onResolve, deferred.reject);
+
+ return deferred.promise;
+ };
+
+ /**
+ * @name getFallbackTranslationInstant
+ * @private
+ *
+ * @description
+ * Returns a translation
+ * This function is currently only used for fallback language translation.
+ *
+ * @param langKey The language to translate to.
+ * @param translationId
+ * @param interpolateParams
+ * @param Interpolator
+ * @returns {string} translation
+ */
+ var getFallbackTranslationInstant = function (langKey, translationId, interpolateParams, Interpolator) {
+ var result, translationTable = $translationTable[langKey];
+
+ if (translationTable && Object.prototype.hasOwnProperty.call(translationTable, translationId)) {
+ Interpolator.setLocale(langKey);
+ result = Interpolator.interpolate(translationTable[translationId], interpolateParams);
+ if (result.substr(0, 2) === '@:') {
+ return getFallbackTranslationInstant(langKey, result.substr(2), interpolateParams, Interpolator);
+ }
+ Interpolator.setLocale($uses);
+ }
+
+ return result;
+ };
+
+
+ /**
+ * @name translateByHandler
+ * @private
+ *
+ * Translate by missing translation handler.
+ *
+ * @param translationId
+ * @returns translation created by $missingTranslationHandler or translationId is $missingTranslationHandler is
+ * absent
+ */
+ var translateByHandler = function (translationId, interpolateParams) {
+ // If we have a handler factory - we might also call it here to determine if it provides
+ // a default text for a translationid that can't be found anywhere in our tables
+ if ($missingTranslationHandlerFactory) {
+ var resultString = $injector.get($missingTranslationHandlerFactory)(translationId, $uses, interpolateParams);
+ if (resultString !== undefined) {
+ return resultString;
+ } else {
+ return translationId;
+ }
+ } else {
+ return translationId;
+ }
+ };
+
+ /**
+ * @name resolveForFallbackLanguage
+ * @private
+ *
+ * Recursive helper function for fallbackTranslation that will sequentially look
+ * for a translation in the fallbackLanguages starting with fallbackLanguageIndex.
+ *
+ * @param fallbackLanguageIndex
+ * @param translationId
+ * @param interpolateParams
+ * @param Interpolator
+ * @returns {Q.promise} Promise that will resolve to the translation.
+ */
+ var resolveForFallbackLanguage = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator, defaultTranslationText) {
+ var deferred = $q.defer();
+
+ if (fallbackLanguageIndex < $fallbackLanguage.length) {
+ var langKey = $fallbackLanguage[fallbackLanguageIndex];
+ getFallbackTranslation(langKey, translationId, interpolateParams, Interpolator).then(
+ deferred.resolve,
+ function () {
+ // Look in the next fallback language for a translation.
+ // It delays the resolving by passing another promise to resolve.
+ resolveForFallbackLanguage(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator, defaultTranslationText).then(deferred.resolve);
+ }
+ );
+ } else {
+ // No translation found in any fallback language
+ // if a default translation text is set in the directive, then return this as a result
+ if (defaultTranslationText) {
+ deferred.resolve(defaultTranslationText);
+ } else {
+ // if no default translation is set and an error handler is defined, send it to the handler
+ // and then return the result
+ deferred.resolve(translateByHandler(translationId, interpolateParams));
+ }
+ }
+ return deferred.promise;
+ };
+
+ /**
+ * @name resolveForFallbackLanguageInstant
+ * @private
+ *
+ * Recursive helper function for fallbackTranslation that will sequentially look
+ * for a translation in the fallbackLanguages starting with fallbackLanguageIndex.
+ *
+ * @param fallbackLanguageIndex
+ * @param translationId
+ * @param interpolateParams
+ * @param Interpolator
+ * @returns {string} translation
+ */
+ var resolveForFallbackLanguageInstant = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) {
+ var result;
+
+ if (fallbackLanguageIndex < $fallbackLanguage.length) {
+ var langKey = $fallbackLanguage[fallbackLanguageIndex];
+ result = getFallbackTranslationInstant(langKey, translationId, interpolateParams, Interpolator);
+ if (!result) {
+ result = resolveForFallbackLanguageInstant(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator);
+ }
+ }
+ return result;
+ };
+
+ /**
+ * Translates with the usage of the fallback languages.
+ *
+ * @param translationId
+ * @param interpolateParams
+ * @param Interpolator
+ * @returns {Q.promise} Promise, that resolves to the translation.
+ */
+ var fallbackTranslation = function (translationId, interpolateParams, Interpolator, defaultTranslationText) {
+ // Start with the fallbackLanguage with index 0
+ return resolveForFallbackLanguage((startFallbackIteration>0 ? startFallbackIteration : fallbackIndex), translationId, interpolateParams, Interpolator, defaultTranslationText);
+ };
+
+ /**
+ * Translates with the usage of the fallback languages.
+ *
+ * @param translationId
+ * @param interpolateParams
+ * @param Interpolator
+ * @returns {String} translation
+ */
+ var fallbackTranslationInstant = function (translationId, interpolateParams, Interpolator) {
+ // Start with the fallbackLanguage with index 0
+ return resolveForFallbackLanguageInstant((startFallbackIteration>0 ? startFallbackIteration : fallbackIndex), translationId, interpolateParams, Interpolator);
+ };
+
+ var determineTranslation = function (translationId, interpolateParams, interpolationId, defaultTranslationText) {
+
+ var deferred = $q.defer();
+
+ var table = $uses ? $translationTable[$uses] : $translationTable,
+ Interpolator = (interpolationId) ? interpolatorHashMap[interpolationId] : defaultInterpolator;
+
+ // if the translation id exists, we can just interpolate it
+ if (table && Object.prototype.hasOwnProperty.call(table, translationId)) {
+ var translation = table[translationId];
+
+ // If using link, rerun $translate with linked translationId and return it
+ if (translation.substr(0, 2) === '@:') {
+
+ $translate(translation.substr(2), interpolateParams, interpolationId, defaultTranslationText)
+ .then(deferred.resolve, deferred.reject);
+ } else {
+ deferred.resolve(Interpolator.interpolate(translation, interpolateParams));
+ }
+ } else {
+ var missingTranslationHandlerTranslation;
+ // for logging purposes only (as in $translateMissingTranslationHandlerLog), value is not returned to promise
+ if ($missingTranslationHandlerFactory && !pendingLoader) {
+ missingTranslationHandlerTranslation = translateByHandler(translationId, interpolateParams);
+ }
+
+ // since we couldn't translate the inital requested translation id,
+ // we try it now with one or more fallback languages, if fallback language(s) is
+ // configured.
+ if ($uses && $fallbackLanguage && $fallbackLanguage.length) {
+ fallbackTranslation(translationId, interpolateParams, Interpolator, defaultTranslationText)
+ .then(function (translation) {
+ deferred.resolve(translation);
+ }, function (_translationId) {
+ deferred.reject(applyNotFoundIndicators(_translationId));
+ });
+ } else if ($missingTranslationHandlerFactory && !pendingLoader && missingTranslationHandlerTranslation) {
+ // looks like the requested translation id doesn't exists.
+ // Now, if there is a registered handler for missing translations and no
+ // asyncLoader is pending, we execute the handler
+ if (defaultTranslationText) {
+ deferred.resolve(defaultTranslationText);
+ } else {
+ deferred.resolve(missingTranslationHandlerTranslation);
+ }
+ } else {
+ if (defaultTranslationText) {
+ deferred.resolve(defaultTranslationText);
+ } else {
+ deferred.reject(applyNotFoundIndicators(translationId));
+ }
+ }
+ }
+ return deferred.promise;
+ };
+
+ var determineTranslationInstant = function (translationId, interpolateParams, interpolationId) {
+
+ var result, table = $uses ? $translationTable[$uses] : $translationTable,
+ Interpolator = defaultInterpolator;
+
+ // if the interpolation id exists use custom interpolator
+ if (interpolatorHashMap && Object.prototype.hasOwnProperty.call(interpolatorHashMap, interpolationId)) {
+ Interpolator = interpolatorHashMap[interpolationId];
+ }
+
+ // if the translation id exists, we can just interpolate it
+ if (table && Object.prototype.hasOwnProperty.call(table, translationId)) {
+ var translation = table[translationId];
+
+ // If using link, rerun $translate with linked translationId and return it
+ if (translation.substr(0, 2) === '@:') {
+ result = determineTranslationInstant(translation.substr(2), interpolateParams, interpolationId);
+ } else {
+ result = Interpolator.interpolate(translation, interpolateParams);
+ }
+ } else {
+ var missingTranslationHandlerTranslation;
+ // for logging purposes only (as in $translateMissingTranslationHandlerLog), value is not returned to promise
+ if ($missingTranslationHandlerFactory && !pendingLoader) {
+ missingTranslationHandlerTranslation = translateByHandler(translationId, interpolateParams);
+ }
+
+ // since we couldn't translate the inital requested translation id,
+ // we try it now with one or more fallback languages, if fallback language(s) is
+ // configured.
+ if ($uses && $fallbackLanguage && $fallbackLanguage.length) {
+ fallbackIndex = 0;
+ result = fallbackTranslationInstant(translationId, interpolateParams, Interpolator);
+ } else if ($missingTranslationHandlerFactory && !pendingLoader && missingTranslationHandlerTranslation) {
+ // looks like the requested translation id doesn't exists.
+ // Now, if there is a registered handler for missing translations and no
+ // asyncLoader is pending, we execute the handler
+ result = missingTranslationHandlerTranslation;
+ } else {
+ result = applyNotFoundIndicators(translationId);
+ }
+ }
+
+ return result;
+ };
+
+ var clearNextLangAndPromise = function(key) {
+ if ($nextLang === key) {
+ $nextLang = undefined;
+ }
+ langPromises[key] = undefined;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#preferredLanguage
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns the language key for the preferred language.
+ *
+ * @param {string} langKey language String or Array to be used as preferredLanguage (changing at runtime)
+ *
+ * @return {string} preferred language key
+ */
+ $translate.preferredLanguage = function (langKey) {
+ if(langKey) {
+ setupPreferredLanguage(langKey);
+ }
+ return $preferredLanguage;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#cloakClassName
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns the configured class name for `translate-cloak` directive.
+ *
+ * @return {string} cloakClassName
+ */
+ $translate.cloakClassName = function () {
+ return $cloakClassName;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#fallbackLanguage
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns the language key for the fallback languages or sets a new fallback stack.
+ *
+ * @param {string=} langKey language String or Array of fallback languages to be used (to change stack at runtime)
+ *
+ * @return {string||array} fallback language key
+ */
+ $translate.fallbackLanguage = function (langKey) {
+ if (langKey !== undefined && langKey !== null) {
+ fallbackStack(langKey);
+
+ // as we might have an async loader initiated and a new translation language might have been defined
+ // we need to add the promise to the stack also. So - iterate.
+ if ($loaderFactory) {
+ if ($fallbackLanguage && $fallbackLanguage.length) {
+ for (var i = 0, len = $fallbackLanguage.length; i < len; i++) {
+ if (!langPromises[$fallbackLanguage[i]]) {
+ langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]);
+ }
+ }
+ }
+ }
+ $translate.use($translate.use());
+ }
+ if ($fallbackWasString) {
+ return $fallbackLanguage[0];
+ } else {
+ return $fallbackLanguage;
+ }
+
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#useFallbackLanguage
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Sets the first key of the fallback language stack to be used for translation.
+ * Therefore all languages in the fallback array BEFORE this key will be skipped!
+ *
+ * @param {string=} langKey Contains the langKey the iteration shall start with. Set to false if you want to
+ * get back to the whole stack
+ */
+ $translate.useFallbackLanguage = function (langKey) {
+ if (langKey !== undefined && langKey !== null) {
+ if (!langKey) {
+ startFallbackIteration = 0;
+ } else {
+ var langKeyPosition = indexOf($fallbackLanguage, langKey);
+ if (langKeyPosition > -1) {
+ startFallbackIteration = langKeyPosition;
+ }
+ }
+
+ }
+
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#proposedLanguage
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns the language key of language that is currently loaded asynchronously.
+ *
+ * @return {string} language key
+ */
+ $translate.proposedLanguage = function () {
+ return $nextLang;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#storage
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns registered storage.
+ *
+ * @return {object} Storage
+ */
+ $translate.storage = function () {
+ return Storage;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#use
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Tells angular-translate which language to use by given language key. This method is
+ * used to change language at runtime. It also takes care of storing the language
+ * key in a configured store to let your app remember the choosed language.
+ *
+ * When trying to 'use' a language which isn't available it tries to load it
+ * asynchronously with registered loaders.
+ *
+ * Returns promise object with loaded language file data
+ * @example
+ * $translate.use("en_US").then(function(data){
+ * $scope.text = $translate("HELLO");
+ * });
+ *
+ * @param {string} key Language key
+ * @return {string} Language key
+ */
+ $translate.use = function (key) {
+ if (!key) {
+ return $uses;
+ }
+
+ var deferred = $q.defer();
+
+ $rootScope.$emit('$translateChangeStart', {language: key});
+
+ // Try to get the aliased language key
+ var aliasedKey = negotiateLocale(key);
+ if (aliasedKey) {
+ key = aliasedKey;
+ }
+
+ // if there isn't a translation table for the language we've requested,
+ // we load it asynchronously
+ if (($forceAsyncReloadEnabled || !$translationTable[key]) && $loaderFactory && !langPromises[key]) {
+ $nextLang = key;
+ langPromises[key] = loadAsync(key).then(function (translation) {
+ translations(translation.key, translation.table);
+ deferred.resolve(translation.key);
+ useLanguage(translation.key);
+ return translation;
+ }, function (key) {
+ $rootScope.$emit('$translateChangeError', {language: key});
+ deferred.reject(key);
+ $rootScope.$emit('$translateChangeEnd', {language: key});
+ return $q.reject(key);
+ });
+ langPromises[key]['finally'](function () {
+ clearNextLangAndPromise(key);
+ });
+ } else if ($nextLang === key && langPromises[key]) {
+ // we are already loading this asynchronously
+ // resolve our new deferred when the old langPromise is resolved
+ langPromises[key].then(function (translation) {
+ deferred.resolve(translation.key);
+ return translation;
+ }, function (key) {
+ deferred.reject(key);
+ return $q.reject(key);
+ });
+ } else {
+ deferred.resolve(key);
+ useLanguage(key);
+ }
+
+ return deferred.promise;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#storageKey
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns the key for the storage.
+ *
+ * @return {string} storage key
+ */
+ $translate.storageKey = function () {
+ return storageKey();
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#isPostCompilingEnabled
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns whether post compiling is enabled or not
+ *
+ * @return {bool} storage key
+ */
+ $translate.isPostCompilingEnabled = function () {
+ return $postCompilingEnabled;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#isForceAsyncReloadEnabled
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns whether force async reload is enabled or not
+ *
+ * @return {boolean} forceAsyncReload value
+ */
+ $translate.isForceAsyncReloadEnabled = function () {
+ return $forceAsyncReloadEnabled;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#refresh
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Refreshes a translation table pointed by the given langKey. If langKey is not specified,
+ * the module will drop all existent translation tables and load new version of those which
+ * are currently in use.
+ *
+ * Refresh means that the module will drop target translation table and try to load it again.
+ *
+ * In case there are no loaders registered the refresh() method will throw an Error.
+ *
+ * If the module is able to refresh translation tables refresh() method will broadcast
+ * $translateRefreshStart and $translateRefreshEnd events.
+ *
+ * @example
+ * // this will drop all currently existent translation tables and reload those which are
+ * // currently in use
+ * $translate.refresh();
+ * // this will refresh a translation table for the en_US language
+ * $translate.refresh('en_US');
+ *
+ * @param {string} langKey A language key of the table, which has to be refreshed
+ *
+ * @return {promise} Promise, which will be resolved in case a translation tables refreshing
+ * process is finished successfully, and reject if not.
+ */
+ $translate.refresh = function (langKey) {
+ if (!$loaderFactory) {
+ throw new Error('Couldn\'t refresh translation table, no loader registered!');
+ }
+
+ var deferred = $q.defer();
+
+ function resolve() {
+ deferred.resolve();
+ $rootScope.$emit('$translateRefreshEnd', {language: langKey});
+ }
+
+ function reject() {
+ deferred.reject();
+ $rootScope.$emit('$translateRefreshEnd', {language: langKey});
+ }
+
+ $rootScope.$emit('$translateRefreshStart', {language: langKey});
+
+ if (!langKey) {
+ // if there's no language key specified we refresh ALL THE THINGS!
+ var tables = [], loadingKeys = {};
+
+ // reload registered fallback languages
+ if ($fallbackLanguage && $fallbackLanguage.length) {
+ for (var i = 0, len = $fallbackLanguage.length; i < len; i++) {
+ tables.push(loadAsync($fallbackLanguage[i]));
+ loadingKeys[$fallbackLanguage[i]] = true;
+ }
+ }
+
+ // reload currently used language
+ if ($uses && !loadingKeys[$uses]) {
+ tables.push(loadAsync($uses));
+ }
+
+ var allTranslationsLoaded = function (tableData) {
+ $translationTable = {};
+ angular.forEach(tableData, function (data) {
+ translations(data.key, data.table);
+ });
+ if ($uses) {
+ useLanguage($uses);
+ }
+ resolve();
+ };
+ allTranslationsLoaded.displayName = 'refreshPostProcessor';
+
+ $q.all(tables).then(allTranslationsLoaded, reject);
+
+ } else if ($translationTable[langKey]) {
+
+ var oneTranslationsLoaded = function (data) {
+ translations(data.key, data.table);
+ if (langKey === $uses) {
+ useLanguage($uses);
+ }
+ resolve();
+ };
+ oneTranslationsLoaded.displayName = 'refreshPostProcessor';
+
+ loadAsync(langKey).then(oneTranslationsLoaded, reject);
+
+ } else {
+ reject();
+ }
+ return deferred.promise;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#instant
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns a translation instantly from the internal state of loaded translation. All rules
+ * regarding the current language, the preferred language of even fallback languages will be
+ * used except any promise handling. If a language was not found, an asynchronous loading
+ * will be invoked in the background.
+ *
+ * @param {string|array} translationId A token which represents a translation id
+ * This can be optionally an array of translation ids which
+ * results that the function's promise returns an object where
+ * each key is the translation id and the value the translation.
+ * @param {object} interpolateParams Params
+ * @param {string} interpolationId The id of the interpolation to use
+ *
+ * @return {string|object} translation
+ */
+ $translate.instant = function (translationId, interpolateParams, interpolationId) {
+
+ // Detect undefined and null values to shorten the execution and prevent exceptions
+ if (translationId === null || angular.isUndefined(translationId)) {
+ return translationId;
+ }
+
+ // Duck detection: If the first argument is an array, a bunch of translations was requested.
+ // The result is an object.
+ if (angular.isArray(translationId)) {
+ var results = {};
+ for (var i = 0, c = translationId.length; i < c; i++) {
+ results[translationId[i]] = $translate.instant(translationId[i], interpolateParams, interpolationId);
+ }
+ return results;
+ }
+
+ // We discarded unacceptable values. So we just need to verify if translationId is empty String
+ if (angular.isString(translationId) && translationId.length < 1) {
+ return translationId;
+ }
+
+ // trim off any whitespace
+ if (translationId) {
+ translationId = trim.apply(translationId);
+ }
+
+ var result, possibleLangKeys = [];
+ if ($preferredLanguage) {
+ possibleLangKeys.push($preferredLanguage);
+ }
+ if ($uses) {
+ possibleLangKeys.push($uses);
+ }
+ if ($fallbackLanguage && $fallbackLanguage.length) {
+ possibleLangKeys = possibleLangKeys.concat($fallbackLanguage);
+ }
+ for (var j = 0, d = possibleLangKeys.length; j < d; j++) {
+ var possibleLangKey = possibleLangKeys[j];
+ if ($translationTable[possibleLangKey]) {
+ if (typeof $translationTable[possibleLangKey][translationId] !== 'undefined') {
+ result = determineTranslationInstant(translationId, interpolateParams, interpolationId);
+ } else if ($notFoundIndicatorLeft || $notFoundIndicatorRight) {
+ result = applyNotFoundIndicators(translationId);
+ }
+ }
+ if (typeof result !== 'undefined') {
+ break;
+ }
+ }
+
+ if (!result && result !== '') {
+ // Return translation of default interpolator if not found anything.
+ result = defaultInterpolator.interpolate(translationId, interpolateParams);
+ if ($missingTranslationHandlerFactory && !pendingLoader) {
+ result = translateByHandler(translationId, interpolateParams);
+ }
+ }
+
+ return result;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#versionInfo
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns the current version information for the angular-translate library
+ *
+ * @return {string} angular-translate version
+ */
+ $translate.versionInfo = function () {
+ return version;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translate#loaderCache
+ * @methodOf pascalprecht.translate.$translate
+ *
+ * @description
+ * Returns the defined loaderCache.
+ *
+ * @return {boolean|string|object} current value of loaderCache
+ */
+ $translate.loaderCache = function () {
+ return loaderCache;
+ };
+
+ // internal purpose only
+ $translate.directivePriority = function () {
+ return directivePriority;
+ };
+
+ // internal purpose only
+ $translate.statefulFilter = function () {
+ return statefulFilter;
+ };
+
+ if ($loaderFactory) {
+
+ // If at least one async loader is defined and there are no
+ // (default) translations available we should try to load them.
+ if (angular.equals($translationTable, {})) {
+ $translate.use($translate.use());
+ }
+
+ // Also, if there are any fallback language registered, we start
+ // loading them asynchronously as soon as we can.
+ if ($fallbackLanguage && $fallbackLanguage.length) {
+ var processAsyncResult = function (translation) {
+ translations(translation.key, translation.table);
+ $rootScope.$emit('$translateChangeEnd', { language: translation.key });
+ return translation;
+ };
+ for (var i = 0, len = $fallbackLanguage.length; i < len; i++) {
+ var fallbackLanguageId = $fallbackLanguage[i];
+ if ($forceAsyncReloadEnabled || !$translationTable[fallbackLanguageId]) {
+ langPromises[fallbackLanguageId] = loadAsync(fallbackLanguageId).then(processAsyncResult);
+ }
+ }
+ }
+ }
+
+ return $translate;
+ }
+ ];
+}
+$translate.$inject = ['$STORAGE_KEY', '$windowProvider', '$translateSanitizationProvider', 'pascalprechtTranslateOverrider'];
+
+$translate.displayName = 'displayName';
+
+/**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translateDefaultInterpolation
+ * @requires $interpolate
+ *
+ * @description
+ * Uses angular's `$interpolate` services to interpolate strings against some values.
+ *
+ * Be aware to configure a proper sanitization strategy.
+ *
+ * See also:
+ * * {@link pascalprecht.translate.$translateSanitization}
+ *
+ * @return {object} $translateDefaultInterpolation Interpolator service
+ */
+angular.module('pascalprecht.translate').factory('$translateDefaultInterpolation', $translateDefaultInterpolation);
+
+function $translateDefaultInterpolation ($interpolate, $translateSanitization) {
+
+ 'use strict';
+
+ var $translateInterpolator = {},
+ $locale,
+ $identifier = 'default';
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateDefaultInterpolation#setLocale
+ * @methodOf pascalprecht.translate.$translateDefaultInterpolation
+ *
+ * @description
+ * Sets current locale (this is currently not use in this interpolation).
+ *
+ * @param {string} locale Language key or locale.
+ */
+ $translateInterpolator.setLocale = function (locale) {
+ $locale = locale;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateDefaultInterpolation#getInterpolationIdentifier
+ * @methodOf pascalprecht.translate.$translateDefaultInterpolation
+ *
+ * @description
+ * Returns an identifier for this interpolation service.
+ *
+ * @returns {string} $identifier
+ */
+ $translateInterpolator.getInterpolationIdentifier = function () {
+ return $identifier;
+ };
+
+ /**
+ * @deprecated will be removed in 3.0
+ * @see {@link pascalprecht.translate.$translateSanitization}
+ */
+ $translateInterpolator.useSanitizeValueStrategy = function (value) {
+ $translateSanitization.useStrategy(value);
+ return this;
+ };
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateDefaultInterpolation#interpolate
+ * @methodOf pascalprecht.translate.$translateDefaultInterpolation
+ *
+ * @description
+ * Interpolates given string agains given interpolate params using angulars
+ * `$interpolate` service.
+ *
+ * @returns {string} interpolated string.
+ */
+ $translateInterpolator.interpolate = function (string, interpolationParams) {
+ interpolationParams = interpolationParams || {};
+ interpolationParams = $translateSanitization.sanitize(interpolationParams, 'params');
+
+ var interpolatedText = $interpolate(string)(interpolationParams);
+ interpolatedText = $translateSanitization.sanitize(interpolatedText, 'text');
+
+ return interpolatedText;
+ };
+
+ return $translateInterpolator;
+}
+$translateDefaultInterpolation.$inject = ['$interpolate', '$translateSanitization'];
+
+$translateDefaultInterpolation.displayName = '$translateDefaultInterpolation';
+
+angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY');
+
+angular.module('pascalprecht.translate')
+/**
+ * @ngdoc directive
+ * @name pascalprecht.translate.directive:translate
+ * @requires $compile
+ * @requires $filter
+ * @requires $interpolate
+ * @restrict A
+ *
+ * @description
+ * Translates given translation id either through attribute or DOM content.
+ * Internally it uses `translate` filter to translate translation id. It possible to
+ * pass an optional `translate-values` object literal as string into translation id.
+ *
+ * @param {string=} translate Translation id which could be either string or interpolated string.
+ * @param {string=} translate-values Values to pass into translation id. Can be passed as object literal string or interpolated object.
+ * @param {string=} translate-attr-ATTR translate Translation id and put it into ATTR attribute.
+ * @param {string=} translate-default will be used unless translation was successful
+ * @param {boolean=} translate-compile (default true if present) defines locally activation of {@link pascalprecht.translate.$translateProvider#methods_usePostCompiling}
+ *
+ * @example
+ <example module="ngView">
+ <file name="index.html">
+ <div ng-controller="TranslateCtrl">
+
+ <pre translate="TRANSLATION_ID"></pre>
+ <pre translate>TRANSLATION_ID</pre>
+ <pre translate translate-attr-title="TRANSLATION_ID"></pre>
+ <pre translate="{{translationId}}"></pre>
+ <pre translate>{{translationId}}</pre>
+ <pre translate="WITH_VALUES" translate-values="{value: 5}"></pre>
+ <pre translate translate-values="{value: 5}">WITH_VALUES</pre>
+ <pre translate="WITH_VALUES" translate-values="{{values}}"></pre>
+ <pre translate translate-values="{{values}}">WITH_VALUES</pre>
+ <pre translate translate-attr-title="WITH_VALUES" translate-values="{{values}}"></pre>
+
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('ngView', ['pascalprecht.translate'])
+
+ .config(function ($translateProvider) {
+
+ $translateProvider.translations('en',{
+ 'TRANSLATION_ID': 'Hello there!',
+ 'WITH_VALUES': 'The following value is dynamic: {{value}}'
+ }).preferredLanguage('en');
+
+ });
+
+ angular.module('ngView').controller('TranslateCtrl', function ($scope) {
+ $scope.translationId = 'TRANSLATION_ID';
+
+ $scope.values = {
+ value: 78
+ };
+ });
+ </file>
+ <file name="scenario.js">
+ it('should translate', function () {
+ inject(function ($rootScope, $compile) {
+ $rootScope.translationId = 'TRANSLATION_ID';
+
+ element = $compile('<p translate="TRANSLATION_ID"></p>')($rootScope);
+ $rootScope.$digest();
+ expect(element.text()).toBe('Hello there!');
+
+ element = $compile('<p translate="{{translationId}}"></p>')($rootScope);
+ $rootScope.$digest();
+ expect(element.text()).toBe('Hello there!');
+
+ element = $compile('<p translate>TRANSLATION_ID</p>')($rootScope);
+ $rootScope.$digest();
+ expect(element.text()).toBe('Hello there!');
+
+ element = $compile('<p translate>{{translationId}}</p>')($rootScope);
+ $rootScope.$digest();
+ expect(element.text()).toBe('Hello there!');
+
+ element = $compile('<p translate translate-attr-title="TRANSLATION_ID"></p>')($rootScope);
+ $rootScope.$digest();
+ expect(element.attr('title')).toBe('Hello there!');
+ });
+ });
+ </file>
+ </example>
+ */
+.directive('translate', translateDirective);
+function translateDirective($translate, $q, $interpolate, $compile, $parse, $rootScope) {
+
+ 'use strict';
+
+ /**
+ * @name trim
+ * @private
+ *
+ * @description
+ * trim polyfill
+ *
+ * @returns {string} The string stripped of whitespace from both ends
+ */
+ var trim = function() {
+ return this.toString().replace(/^\s+|\s+$/g, '');
+ };
+
+ return {
+ restrict: 'AE',
+ scope: true,
+ priority: $translate.directivePriority(),
+ compile: function (tElement, tAttr) {
+
+ var translateValuesExist = (tAttr.translateValues) ?
+ tAttr.translateValues : undefined;
+
+ var translateInterpolation = (tAttr.translateInterpolation) ?
+ tAttr.translateInterpolation : undefined;
+
+ var translateValueExist = tElement[0].outerHTML.match(/translate-value-+/i);
+
+ var interpolateRegExp = '^(.*)(' + $interpolate.startSymbol() + '.*' + $interpolate.endSymbol() + ')(.*)',
+ watcherRegExp = '^(.*)' + $interpolate.startSymbol() + '(.*)' + $interpolate.endSymbol() + '(.*)';
+
+ return function linkFn(scope, iElement, iAttr) {
+
+ scope.interpolateParams = {};
+ scope.preText = '';
+ scope.postText = '';
+ var translationIds = {};
+
+ var initInterpolationParams = function (interpolateParams, iAttr, tAttr) {
+ // initial setup
+ if (iAttr.translateValues) {
+ angular.extend(interpolateParams, $parse(iAttr.translateValues)(scope.$parent));
+ }
+ // initially fetch all attributes if existing and fill the params
+ if (translateValueExist) {
+ for (var attr in tAttr) {
+ if (Object.prototype.hasOwnProperty.call(iAttr, attr) && attr.substr(0, 14) === 'translateValue' && attr !== 'translateValues') {
+ var attributeName = angular.lowercase(attr.substr(14, 1)) + attr.substr(15);
+ interpolateParams[attributeName] = tAttr[attr];
+ }
+ }
+ }
+ };
+
+ // Ensures any change of the attribute "translate" containing the id will
+ // be re-stored to the scope's "translationId".
+ // If the attribute has no content, the element's text value (white spaces trimmed off) will be used.
+ var observeElementTranslation = function (translationId) {
+
+ // Remove any old watcher
+ if (angular.isFunction(observeElementTranslation._unwatchOld)) {
+ observeElementTranslation._unwatchOld();
+ observeElementTranslation._unwatchOld = undefined;
+ }
+
+ if (angular.equals(translationId , '') || !angular.isDefined(translationId)) {
+ // Resolve translation id by inner html if required
+ var interpolateMatches = trim.apply(iElement.text()).match(interpolateRegExp);
+ // Interpolate translation id if required
+ if (angular.isArray(interpolateMatches)) {
+ scope.preText = interpolateMatches[1];
+ scope.postText = interpolateMatches[3];
+ translationIds.translate = $interpolate(interpolateMatches[2])(scope.$parent);
+ var watcherMatches = iElement.text().match(watcherRegExp);
+ if (angular.isArray(watcherMatches) && watcherMatches[2] && watcherMatches[2].length) {
+ observeElementTranslation._unwatchOld = scope.$watch(watcherMatches[2], function (newValue) {
+ translationIds.translate = newValue;
+ updateTranslations();
+ });
+ }
+ } else {
+ translationIds.translate = iElement.text().replace(/^\s+|\s+$/g,'');
+ }
+ } else {
+ translationIds.translate = translationId;
+ }
+ updateTranslations();
+ };
+
+ var observeAttributeTranslation = function (translateAttr) {
+ iAttr.$observe(translateAttr, function (translationId) {
+ translationIds[translateAttr] = translationId;
+ updateTranslations();
+ });
+ };
+
+ // initial setup with values
+ initInterpolationParams(scope.interpolateParams, iAttr, tAttr);
+
+ var firstAttributeChangedEvent = true;
+ iAttr.$observe('translate', function (translationId) {
+ if (typeof translationId === 'undefined') {
+ // case of element "<translate>xyz</translate>"
+ observeElementTranslation('');
+ } else {
+ // case of regular attribute
+ if (translationId !== '' || !firstAttributeChangedEvent) {
+ translationIds.translate = translationId;
+ updateTranslations();
+ }
+ }
+ firstAttributeChangedEvent = false;
+ });
+
+ for (var translateAttr in iAttr) {
+ if (iAttr.hasOwnProperty(translateAttr) && translateAttr.substr(0, 13) === 'translateAttr') {
+ observeAttributeTranslation(translateAttr);
+ }
+ }
+
+ iAttr.$observe('translateDefault', function (value) {
+ scope.defaultText = value;
+ });
+
+ if (translateValuesExist) {
+ iAttr.$observe('translateValues', function (interpolateParams) {
+ if (interpolateParams) {
+ scope.$parent.$watch(function () {
+ angular.extend(scope.interpolateParams, $parse(interpolateParams)(scope.$parent));
+ });
+ }
+ });
+ }
+
+ if (translateValueExist) {
+ var observeValueAttribute = function (attrName) {
+ iAttr.$observe(attrName, function (value) {
+ var attributeName = angular.lowercase(attrName.substr(14, 1)) + attrName.substr(15);
+ scope.interpolateParams[attributeName] = value;
+ });
+ };
+ for (var attr in iAttr) {
+ if (Object.prototype.hasOwnProperty.call(iAttr, attr) && attr.substr(0, 14) === 'translateValue' && attr !== 'translateValues') {
+ observeValueAttribute(attr);
+ }
+ }
+ }
+
+ // Master update function
+ var updateTranslations = function () {
+ for (var key in translationIds) {
+
+ if (translationIds.hasOwnProperty(key) && translationIds[key] !== undefined) {
+ updateTranslation(key, translationIds[key], scope, scope.interpolateParams, scope.defaultText);
+ }
+ }
+ };
+
+ // Put translation processing function outside loop
+ var updateTranslation = function(translateAttr, translationId, scope, interpolateParams, defaultTranslationText) {
+ if (translationId) {
+ $translate(translationId, interpolateParams, translateInterpolation, defaultTranslationText)
+ .then(function (translation) {
+ applyTranslation(translation, scope, true, translateAttr);
+ }, function (translationId) {
+ applyTranslation(translationId, scope, false, translateAttr);
+ });
+ } else {
+ // as an empty string cannot be translated, we can solve this using successful=false
+ applyTranslation(translationId, scope, false, translateAttr);
+ }
+ };
+
+ var applyTranslation = function (value, scope, successful, translateAttr) {
+ if (translateAttr === 'translate') {
+ // default translate into innerHTML
+ if (!successful && typeof scope.defaultText !== 'undefined') {
+ value = scope.defaultText;
+ }
+ iElement.html(scope.preText + value + scope.postText);
+ var globallyEnabled = $translate.isPostCompilingEnabled();
+ var locallyDefined = typeof tAttr.translateCompile !== 'undefined';
+ var locallyEnabled = locallyDefined && tAttr.translateCompile !== 'false';
+ if ((globallyEnabled && !locallyDefined) || locallyEnabled) {
+ $compile(iElement.contents())(scope);
+ }
+ } else {
+ // translate attribute
+ if (!successful && typeof scope.defaultText !== 'undefined') {
+ value = scope.defaultText;
+ }
+ var attributeName = iAttr.$attr[translateAttr];
+ if (attributeName.substr(0, 5) === 'data-') {
+ // ensure html5 data prefix is stripped
+ attributeName = attributeName.substr(5);
+ }
+ attributeName = attributeName.substr(15);
+ iElement.attr(attributeName, value);
+ }
+ };
+
+ if (translateValuesExist || translateValueExist || iAttr.translateDefault) {
+ scope.$watch('interpolateParams', updateTranslations, true);
+ }
+
+ // Ensures the text will be refreshed after the current language was changed
+ // w/ $translate.use(...)
+ var unbind = $rootScope.$on('$translateChangeSuccess', updateTranslations);
+
+ // ensure translation will be looked up at least one
+ if (iElement.text().length) {
+ if (iAttr.translate) {
+ observeElementTranslation(iAttr.translate);
+ } else {
+ observeElementTranslation('');
+ }
+ } else if (iAttr.translate) {
+ // ensure attribute will be not skipped
+ observeElementTranslation(iAttr.translate);
+ }
+ updateTranslations();
+ scope.$on('$destroy', unbind);
+ };
+ }
+ };
+}
+translateDirective.$inject = ['$translate', '$q', '$interpolate', '$compile', '$parse', '$rootScope'];
+
+translateDirective.displayName = 'translateDirective';
+
+angular.module('pascalprecht.translate')
+/**
+ * @ngdoc directive
+ * @name pascalprecht.translate.directive:translateCloak
+ * @requires $rootScope
+ * @requires $translate
+ * @restrict A
+ *
+ * $description
+ * Adds a `translate-cloak` class name to the given element where this directive
+ * is applied initially and removes it, once a loader has finished loading.
+ *
+ * This directive can be used to prevent initial flickering when loading translation
+ * data asynchronously.
+ *
+ * The class name is defined in
+ * {@link pascalprecht.translate.$translateProvider#cloakClassName $translate.cloakClassName()}.
+ *
+ * @param {string=} translate-cloak If a translationId is provided, it will be used for showing
+ * or hiding the cloak. Basically it relies on the translation
+ * resolve.
+ */
+.directive('translateCloak', translateCloakDirective);
+
+function translateCloakDirective($rootScope, $translate) {
+
+ 'use strict';
+
+ return {
+ compile: function (tElement) {
+ var applyCloak = function () {
+ tElement.addClass($translate.cloakClassName());
+ },
+ removeCloak = function () {
+ tElement.removeClass($translate.cloakClassName());
+ },
+ removeListener = $rootScope.$on('$translateChangeEnd', function () {
+ removeCloak();
+ removeListener();
+ removeListener = null;
+ });
+ applyCloak();
+
+ return function linkFn(scope, iElement, iAttr) {
+ // Register a watcher for the defined translation allowing a fine tuned cloak
+ if (iAttr.translateCloak && iAttr.translateCloak.length) {
+ iAttr.$observe('translateCloak', function (translationId) {
+ $translate(translationId).then(removeCloak, applyCloak);
+ });
+ }
+ };
+ }
+ };
+}
+translateCloakDirective.$inject = ['$rootScope', '$translate'];
+
+translateCloakDirective.displayName = 'translateCloakDirective';
+
+angular.module('pascalprecht.translate')
+/**
+ * @ngdoc filter
+ * @name pascalprecht.translate.filter:translate
+ * @requires $parse
+ * @requires pascalprecht.translate.$translate
+ * @function
+ *
+ * @description
+ * Uses `$translate` service to translate contents. Accepts interpolate parameters
+ * to pass dynamized values though translation.
+ *
+ * @param {string} translationId A translation id to be translated.
+ * @param {*=} interpolateParams Optional object literal (as hash or string) to pass values into translation.
+ *
+ * @returns {string} Translated text.
+ *
+ * @example
+ <example module="ngView">
+ <file name="index.html">
+ <div ng-controller="TranslateCtrl">
+
+ <pre>{{ 'TRANSLATION_ID' | translate }}</pre>
+ <pre>{{ translationId | translate }}</pre>
+ <pre>{{ 'WITH_VALUES' | translate:'{value: 5}' }}</pre>
+ <pre>{{ 'WITH_VALUES' | translate:values }}</pre>
+
+ </div>
+ </file>
+ <file name="script.js">
+ angular.module('ngView', ['pascalprecht.translate'])
+
+ .config(function ($translateProvider) {
+
+ $translateProvider.translations('en', {
+ 'TRANSLATION_ID': 'Hello there!',
+ 'WITH_VALUES': 'The following value is dynamic: {{value}}'
+ });
+ $translateProvider.preferredLanguage('en');
+
+ });
+
+ angular.module('ngView').controller('TranslateCtrl', function ($scope) {
+ $scope.translationId = 'TRANSLATION_ID';
+
+ $scope.values = {
+ value: 78
+ };
+ });
+ </file>
+ </example>
+ */
+.filter('translate', translateFilterFactory);
+
+function translateFilterFactory($parse, $translate) {
+
+ 'use strict';
+
+ var translateFilter = function (translationId, interpolateParams, interpolation) {
+
+ if (!angular.isObject(interpolateParams)) {
+ interpolateParams = $parse(interpolateParams)(this);
+ }
+
+ return $translate.instant(translationId, interpolateParams, interpolation);
+ };
+
+ if ($translate.statefulFilter()) {
+ translateFilter.$stateful = true;
+ }
+
+ return translateFilter;
+}
+translateFilterFactory.$inject = ['$parse', '$translate'];
+
+translateFilterFactory.displayName = 'translateFilterFactory';
+
+angular.module('pascalprecht.translate')
+
+/**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translationCache
+ * @requires $cacheFactory
+ *
+ * @description
+ * The first time a translation table is used, it is loaded in the translation cache for quick retrieval. You
+ * can load translation tables directly into the cache by consuming the
+ * `$translationCache` service directly.
+ *
+ * @return {object} $cacheFactory object.
+ */
+ .factory('$translationCache', $translationCache);
+
+function $translationCache($cacheFactory) {
+
+ 'use strict';
+
+ return $cacheFactory('translations');
+}
+$translationCache.$inject = ['$cacheFactory'];
+
+$translationCache.displayName = '$translationCache';
+return 'pascalprecht.translate';
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate-loader-url.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate-loader-url.js
new file mode 100644
index 0000000..619a819
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate-loader-url.js
@@ -0,0 +1,75 @@
+/*!
+ * angular-translate - v2.7.2 - 2015-06-01
+ * http://github.com/angular-translate/angular-translate
+ * Copyright (c) 2015 ; Licensed MIT
+ */
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define([], function () {
+ return (factory());
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory();
+ } else {
+ factory();
+ }
+}(this, function () {
+
+angular.module('pascalprecht.translate')
+/**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translateUrlLoader
+ * @requires $q
+ * @requires $http
+ *
+ * @description
+ * Creates a loading function for a typical dynamic url pattern:
+ * "locale.php?lang=en_US", "locale.php?lang=de_DE", "locale.php?language=nl_NL" etc.
+ * Prefixing the specified url, the current requested, language id will be applied
+ * with "?{queryParameter}={key}".
+ * Using this service, the response of these urls must be an object of
+ * key-value pairs.
+ *
+ * @param {object} options Options object, which gets the url, key and
+ * optional queryParameter ('lang' is used by default).
+ */
+.factory('$translateUrlLoader', $translateUrlLoader);
+
+function $translateUrlLoader($q, $http) {
+
+ 'use strict';
+
+ return function (options) {
+
+ if (!options || !options.url) {
+ throw new Error('Couldn\'t use urlLoader since no url is given!');
+ }
+
+ var deferred = $q.defer(),
+ requestParams = {};
+
+ requestParams[options.queryParameter || 'lang'] = options.key;
+
+ $http(angular.extend({
+ url: options.url,
+ params: requestParams,
+ method: 'GET'
+ }, options.$http)).success(function (data) {
+ deferred.resolve(data);
+ }).error(function () {
+ deferred.reject(options.key);
+ });
+
+ return deferred.promise;
+ };
+}
+$translateUrlLoader.$inject = ['$q', '$http'];
+
+$translateUrlLoader.displayName = '$translateUrlLoader';
+return 'pascalprecht.translate';
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate-storage-cookie.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate-storage-cookie.js
new file mode 100644
index 0000000..3ac4060
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/angular-translate-storage-cookie.js
@@ -0,0 +1,71 @@
+/*!
+ * angular-translate - v2.6.1 - 2015-03-01
+ * http://github.com/angular-translate/angular-translate
+ * Copyright (c) 2015 ; Licensed MIT
+ */
+angular.module('pascalprecht.translate')
+
+/**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translateCookieStorage
+ * @requires $cookieStore
+ *
+ * @description
+ * Abstraction layer for cookieStore. This service is used when telling angular-translate
+ * to use cookieStore as storage.
+ *
+ */
+.factory('$translateCookieStorage', ['$cookieStore', function ($cookieStore) {
+
+ var $translateCookieStorage = {
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateCookieStorage#get
+ * @methodOf pascalprecht.translate.$translateCookieStorage
+ *
+ * @description
+ * Returns an item from cookieStorage by given name.
+ *
+ * @param {string} name Item name
+ * @return {string} Value of item name
+ */
+ get: function (name) {
+ return $cookieStore.get(name);
+ },
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateCookieStorage#set
+ * @methodOf pascalprecht.translate.$translateCookieStorage
+ *
+ * @description
+ * Sets an item in cookieStorage by given name.
+ *
+ * @deprecated use #put
+ *
+ * @param {string} name Item name
+ * @param {string} value Item value
+ */
+ set: function (name, value) {
+ $cookieStore.put(name, value);
+ },
+
+ /**
+ * @ngdoc function
+ * @name pascalprecht.translate.$translateCookieStorage#put
+ * @methodOf pascalprecht.translate.$translateCookieStorage
+ *
+ * @description
+ * Sets an item in cookieStorage by given name.
+ *
+ * @param {string} name Item name
+ * @param {string} value Item value
+ */
+ put: function (name, value) {
+ $cookieStore.put(name, value);
+ }
+ };
+
+ return $translateCookieStorage;
+}]);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/errors.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/errors.json
new file mode 100644
index 0000000..0fe7286
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/errors.json
@@ -0,0 +1 @@
+{"id":"ng","generated":"Thu Aug 13 2015 11:47:38 GMT-0700 (PDT)","errors":{"ng":{"areq":"Argument '{0}' is {1}","cpta":"Can't copy! TypedArray destination cannot be mutated.","test":"no injector found for element argument to getTestability","cpws":"Can't copy! Making copies of Window or Scope instances is not supported.","btstrpd":"App Already Bootstrapped with this Element '{0}'","cpi":"Can't copy! Source and destination are identical.","badname":"hasOwnProperty is not a valid {0} name"},"$http":{"legacy":"The method `{0}` on the promise returned from `$http` has been disabled.","badreq":"Http request configuration must be an object. Received: {0}"},"ngRepeat":{"badident":"alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.","iexp":"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.","dupes":"Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}","iidexp":"'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'."},"$sce":{"imatcher":"Matchers may only be \"self\", string patterns or RegExp objects","icontext":"Attempted to trust a value in invalid context. Context: {0}; Value: {1}","iwcard":"Illegal sequence *** in string matcher. String: {0}","insecurl":"Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}","iequirks":"Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.","unsafe":"Attempting to use an unsafe value in a safe context.","itype":"Attempted to trust a non-string value in a content requiring a string: Context: {0}"},"ngPattern":{"noregexp":"Expected {0} to be a RegExp but was {1}. Element: {2}"},"$controller":{"ctrlfmt":"Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.","noscp":"Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`."},"$parse":{"isecfn":"Referencing Function in Angular expressions is disallowed! Expression: {0}","isecwindow":"Referencing the Window in Angular expressions is disallowed! Expression: {0}","ueoe":"Unexpected end of expression: {0}","isecdom":"Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}","lexerr":"Lexer Error: {0} at column{1} in expression [{2}].","esc":"IMPOSSIBLE","isecobj":"Referencing Object in Angular expressions is disallowed! Expression: {0}","lval":"Trying to assing a value to a non l-value","isecff":"Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}","syntax":"Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].","isecfld":"Attempting to access a disallowed field in Angular expressions! Expression: {0}"},"jqLite":{"offargs":"jqLite#off() does not support the `selector` argument","onargs":"jqLite#on() does not support the `selector` or `eventData` parameters","nosel":"Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element"},"$animate":{"notcsel":"Expecting class selector starting with '.' got '{0}'.","nongcls":"$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the \"{0}\" CSS class."},"$q":{"norslvr":"Expected resolverFn, got '{0}'","qcycle":"Expected promise to be resolved with value other than itself '{0}'"},"$injector":{"pget":"Provider '{0}' must define $get factory method.","cdep":"Circular dependency found: {0}","nomod":"Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.","strictdi":"{0} is not using explicit annotation and cannot be invoked in strict mode","modulerr":"Failed to instantiate module {0} due to:\n{1}","undef":"Provider '{0}' must return a value from $get factory method.","unpr":"Unknown provider: {0}","itkn":"Incorrect injection token! Expected service name as string, got {0}"},"filter":{"notarray":"Expected array but received: {0}"},"ngTransclude":{"orphan":"Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}"},"ngModel":{"nonassign":"Expression '{0}' is non-assignable. Element: {1}","datefmt":"Expected `{0}` to be a date","$asyncValidators":"Expected asynchronous validator to return a promise but got '{0}' instead.","constexpr":"Expected constant expression for `{0}`, but saw `{1}`.","numfmt":"Expected `{0}` to be a number"},"$location":{"nostate":"History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API","ipthprfx":"Invalid url \"{0}\", missing path prefix \"{1}\".","isrcharg":"The first argument of the `$location#search()` call must be a string or an object.","nobase":"$location in HTML5 mode requires a <base> tag to be present!"},"$cacheFactory":{"iid":"CacheId '{0}' is already taken!"},"$interpolate":{"noconcat":"Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce","interr":"Can't interpolate: {0}\n{1}","nochgmustache":"angular-message-format.js currently does not allow you to use custom start and end symbols for interpolation.","reqcomma":"Expected a comma after the keyword “{0}” at line {1}, column {2} of text “{3}”","untermstr":"The string beginning at line {0}, column {1} is unterminated in text “{2}”","badexpr":"Unexpected operator “{0}” at line {1}, column {2} in text. Was expecting “{3}”. Text: “{4}”","dupvalue":"The choice “{0}” is specified more than once. Duplicate key is at line {1}, column {2} in text “{3}”","unsafe":"Use of select/plural MessageFormat syntax is currently disallowed in a secure context ({0}). At line {1}, column {2} of text “{3}”","reqother":"“other” is a required option.","reqendinterp":"Expecting end of interpolation symbol, “{0}”, at line {1}, column {2} in text “{3}”","reqarg":"Expected one of “plural” or “select” at line {0}, column {1} of text “{2}”","wantstring":"Expected the beginning of a string at line {0}, column {1} in text “{2}”","logicbug":"The messageformat parser has encountered an internal error. Please file a github issue against the AngularJS project and provide this message text that triggers the bug. Text: “{0}”","reqopenbrace":"The plural choice “{0}” must be followed by a message in braces at line {1}, column {2} in text “{3}”","unknarg":"Unsupported keyword “{0}” at line {0}, column {1}. Only “plural” and “select” are currently supported. Text: “{3}”","reqendbrace":"The plural/select choice “{0}” message starting at line {1}, column {2} does not have an ending closing brace. Text “{3}”"},"ngOptions":{"iexp":"Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}"},"$rootScope":{"inprog":"{0} already in progress","infdig":"{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}"},"$compile":{"noident":"Cannot bind to controller without identifier for directive '{0}'.","selmulti":"Binding to the 'multiple' attribute is not supported. Element: {0}","nodomevents":"Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.","ctreq":"Controller '{0}', required by directive '{1}', can't be found!","nonassign":"Expression '{0}' used with directive '{1}' is non-assignable!","tplrt":"Template for directive '{0}' must have exactly one root element. {1}","iscp":"Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}","baddir":"Directive name '{0}' is invalid. The name should not contain leading or trailing whitespaces","noctrl":"Cannot bind to controller without directive '{0}'s controller.","multidir":"Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}","tpload":"Failed to load template: {0} (HTTP status: {1} {2})","uterdir":"Unterminated attribute, found '{0}' but no matching '{1}' found."},"$resource":{"badargs":"Expected up to 4 arguments [params, data, success, error], got {0} arguments","badmember":"Dotted member path \"@{0}\" is invalid.","badname":"hasOwnProperty is not a valid parameter name.","badcfg":"Error in resource configuration for action `{0}`. Expected response to contain an {1} but got an {2} (Request: {3} {4})"},"$route":{"norout":"Tried updating route when with no current route"},"$sanitize":{"badparse":"The sanitizer was unable to parse the following block of html: {0}"}}}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/jstd-scenario-adapter.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/jstd-scenario-adapter.js
new file mode 100755
index 0000000..2f80b21
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/jstd-scenario-adapter.js
@@ -0,0 +1,185 @@
+/**
+ * @license AngularJS v1.0.5
+ * (c) 2010-2012 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window) {
+'use strict';
+
+/**
+ * JSTestDriver adapter for angular scenario tests
+ *
+ * Example of jsTestDriver.conf for running scenario tests with JSTD:
+ <pre>
+ server: http://localhost:9877
+
+ load:
+ - lib/angular-scenario.js
+ - lib/jstd-scenario-adapter-config.js
+ - lib/jstd-scenario-adapter.js
+ # your test files go here #
+
+ proxy:
+ - {matcher: "/your-prefix/*", server: "http://localhost:8000/"}
+ </pre>
+ *
+ * For more information on how to configure jstd proxy, see {@link http://code.google.com/p/js-test-driver/wiki/Proxy}
+ * Note the order of files - it's important !
+ *
+ * Example of jstd-scenario-adapter-config.js
+ <pre>
+ var jstdScenarioAdapter = {
+ relativeUrlPrefix: '/your-prefix/'
+ };
+ </pre>
+ *
+ * Whenever you use <code>browser().navigateTo('relativeUrl')</code> in your scenario test, the relativeUrlPrefix will be prepended.
+ * You have to configure this to work together with JSTD proxy.
+ *
+ * Let's assume you are using the above configuration (jsTestDriver.conf and jstd-scenario-adapter-config.js):
+ * Now, when you call <code>browser().navigateTo('index.html')</code> in your scenario test, the browser will open /your-prefix/index.html.
+ * That matches the proxy, so JSTD will proxy this request to http://localhost:8000/index.html.
+ */
+
+/**
+ * Custom type of test case
+ *
+ * @const
+ * @see jstestdriver.TestCaseInfo
+ */
+var SCENARIO_TYPE = 'scenario';
+
+/**
+ * Plugin for JSTestDriver
+ * Connection point between scenario's jstd output and jstestdriver.
+ *
+ * @see jstestdriver.PluginRegistrar
+ */
+function JstdPlugin() {
+ var nop = function() {};
+
+ this.reportResult = nop;
+ this.reportEnd = nop;
+ this.runScenario = nop;
+
+ this.name = 'Angular Scenario Adapter';
+
+ /**
+ * Called for each JSTD TestCase
+ *
+ * Handles only SCENARIO_TYPE test cases. There should be only one fake TestCase.
+ * Runs all scenario tests (under one fake TestCase) and report all results to JSTD.
+ *
+ * @param {jstestdriver.TestRunConfiguration} configuration
+ * @param {Function} onTestDone
+ * @param {Function} onAllTestsComplete
+ * @returns {boolean} True if this type of test is handled by this plugin, false otherwise
+ */
+ this.runTestConfiguration = function(configuration, onTestDone, onAllTestsComplete) {
+ if (configuration.getTestCaseInfo().getType() != SCENARIO_TYPE) return false;
+
+ this.reportResult = onTestDone;
+ this.reportEnd = onAllTestsComplete;
+ this.runScenario();
+
+ return true;
+ };
+
+ this.getTestRunsConfigurationFor = function(testCaseInfos, expressions, testRunsConfiguration) {
+ testRunsConfiguration.push(
+ new jstestdriver.TestRunConfiguration(
+ new jstestdriver.TestCaseInfo(
+ 'Angular Scenario Tests', function() {}, SCENARIO_TYPE), []));
+
+ return true;
+ };
+}
+
+/**
+ * Singleton instance of the plugin
+ * Accessed using closure by:
+ * - jstd output (reports to this plugin)
+ * - initScenarioAdapter (register the plugin to jstd)
+ */
+var plugin = new JstdPlugin();
+
+/**
+ * Initialise scenario jstd-adapter
+ * (only if jstestdriver is defined)
+ *
+ * @param {Object} jstestdriver Undefined when run from browser (without jstd)
+ * @param {Function} initScenarioAndRun Function that inits scenario and runs all the tests
+ * @param {Object=} config Configuration object, supported properties:
+ * - relativeUrlPrefix: prefix for all relative links when navigateTo()
+ */
+function initScenarioAdapter(jstestdriver, initScenarioAndRun, config) {
+ if (jstestdriver) {
+ // create and register ScenarioPlugin
+ jstestdriver.pluginRegistrar.register(plugin);
+ plugin.runScenario = initScenarioAndRun;
+
+ /**
+ * HACK (angular.scenario.Application.navigateTo)
+ *
+ * We need to navigate to relative urls when running from browser (without JSTD),
+ * because we want to allow running scenario tests without creating its own virtual host.
+ * For example: http://angular.local/build/docs/docs-scenario.html
+ *
+ * On the other hand, when running with JSTD, we need to navigate to absolute urls,
+ * because of JSTD proxy. (proxy, because of same domain policy)
+ *
+ * So this hack is applied only if running with JSTD and change all relative urls to absolute.
+ */
+ var appProto = angular.scenario.Application.prototype,
+ navigateTo = appProto.navigateTo,
+ relativeUrlPrefix = config && config.relativeUrlPrefix || '/';
+
+ appProto.navigateTo = function(url, loadFn, errorFn) {
+ if (url.charAt(0) != '/' && url.charAt(0) != '#' &&
+ url != 'about:blank' && !url.match(/^https?/)) {
+ url = relativeUrlPrefix + url;
+ }
+
+ return navigateTo.call(this, url, loadFn, errorFn);
+ };
+ }
+}
+
+/**
+ * Builds proper TestResult object from given model spec
+ *
+ * TODO(vojta) report error details
+ *
+ * @param {angular.scenario.ObjectModel.Spec} spec
+ * @returns {jstestdriver.TestResult}
+ */
+function createTestResultFromSpec(spec) {
+ var map = {
+ success: 'PASSED',
+ error: 'ERROR',
+ failure: 'FAILED'
+ };
+
+ return new jstestdriver.TestResult(
+ spec.fullDefinitionName,
+ spec.name,
+ jstestdriver.TestResult.RESULT[map[spec.status]],
+ spec.error || '',
+ spec.line || '',
+ spec.duration);
+}
+
+/**
+ * Generates JSTD output (jstestdriver.TestResult)
+ */
+angular.scenario.output('jstd', function(context, runner, model) {
+ model.on('SpecEnd', function(spec) {
+ plugin.reportResult(createTestResultFromSpec(spec));
+ });
+
+ model.on('RunnerEnd', function() {
+ plugin.reportEnd();
+ });
+});
+initScenarioAdapter(window.jstestdriver, angular.scenario.setUpAndRun, window.jstdScenarioAdapter);
+})(window);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/jstd-scenario-adapter-config.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/jstd-scenario-adapter-config.js
new file mode 100755
index 0000000..212dd14
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/jstd-scenario-adapter-config.js
@@ -0,0 +1,6 @@
+/**
+ * Configuration for jstd scenario adapter
+ */
+var jstdScenarioAdapter = {
+ relativeUrlPrefix: '/build/docs/'
+};
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/select2.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/select2.js
new file mode 100755
index 0000000..828032d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/select2.js
@@ -0,0 +1,222 @@
+/**
+ * Enhanced Select2 Dropmenus
+ *
+ * @AJAX Mode - When in this mode, your value will be an object (or array of objects) of the data used by Select2
+ * This change is so that you do not have to do an additional query yourself on top of Select2's own query
+ * @params [options] {object} The configuration options passed to $.fn.select2(). Refer to the documentation
+ */
+angular.module('ui.select2', []).value('uiSelect2Config', {}).directive('uiSelect2', ['uiSelect2Config', '$timeout', function (uiSelect2Config, $timeout) {
+ var options = {};
+ if (uiSelect2Config) {
+ angular.extend(options, uiSelect2Config);
+ }
+ return {
+ require: 'ngModel',
+ priority: 1,
+ compile: function (tElm, tAttrs) {
+ var watch,
+ repeatOption,
+ repeatAttr,
+ isSelect = tElm.is('select'),
+ isMultiple = angular.isDefined(tAttrs.multiple);
+
+ // Enable watching of the options dataset if in use
+ if (tElm.is('select')) {
+ repeatOption = tElm.find( 'optgroup[ng-repeat], optgroup[data-ng-repeat], option[ng-repeat], option[data-ng-repeat]');
+
+ if (repeatOption.length) {
+ repeatAttr = repeatOption.attr('ng-repeat') || repeatOption.attr('data-ng-repeat');
+ watch = jQuery.trim(repeatAttr.split('|')[0]).split(' ').pop();
+ }
+ }
+
+ return function (scope, elm, attrs, controller) {
+ // instance-specific options
+ var opts = angular.extend({}, options, scope.$eval(attrs.uiSelect2));
+
+ /*
+ Convert from Select2 view-model to Angular view-model.
+ */
+ var convertToAngularModel = function(select2_data) {
+ var model;
+ if (opts.simple_tags) {
+ model = [];
+ angular.forEach(select2_data, function(value, index) {
+ model.push(value.id);
+ });
+ } else {
+ model = select2_data;
+ }
+ return model;
+ };
+
+ /*
+ Convert from Angular view-model to Select2 view-model.
+ */
+ var convertToSelect2Model = function(angular_data) {
+ var model = [];
+ if (!angular_data) {
+ return model;
+ }
+
+ if (opts.simple_tags) {
+ model = [];
+ angular.forEach(
+ angular_data,
+ function(value, index) {
+ model.push({'id': value, 'text': value});
+ });
+ } else {
+ model = angular_data;
+ }
+ return model;
+ };
+
+ if (isSelect) {
+ // Use <select multiple> instead
+ delete opts.multiple;
+ delete opts.initSelection;
+ } else if (isMultiple) {
+ opts.multiple = true;
+ }
+
+ if (controller) {
+ // Watch the model for programmatic changes
+ scope.$watch(tAttrs.ngModel, function(current, old) {
+ if (!current) {
+ return;
+ }
+ if (current === old) {
+ return;
+ }
+ controller.$render();
+ }, true);
+ controller.$render = function () {
+ if (isSelect) {
+ elm.select2('val', controller.$viewValue);
+ } else {
+ if (opts.multiple) {
+ var viewValue = controller.$viewValue;
+ if (angular.isString(viewValue)) {
+ viewValue = viewValue.split(',');
+ }
+ elm.select2(
+ 'data', convertToSelect2Model(viewValue));
+ } else {
+ if (angular.isObject(controller.$viewValue)) {
+ elm.select2('data', controller.$viewValue);
+ } else if (!controller.$viewValue) {
+ elm.select2('data', null);
+ } else {
+ elm.select2('val', controller.$viewValue);
+ }
+ }
+ }
+ };
+
+ // Watch the options dataset for changes
+ if (watch) {
+ scope.$watch(watch, function (newVal, oldVal, scope) {
+ if (angular.equals(newVal, oldVal)) {
+ return;
+ }
+ // Delayed so that the options have time to be rendered
+ $timeout(function () {
+ elm.select2('val', controller.$viewValue);
+ // Refresh angular to remove the superfluous option
+ elm.trigger('change');
+ if(newVal && !oldVal && controller.$setPristine) {
+ controller.$setPristine(true);
+ }
+ });
+ });
+ }
+
+ // Update valid and dirty statuses
+ controller.$parsers.push(function (value) {
+ var div = elm.prev();
+ div
+ .toggleClass('ng-invalid', !controller.$valid)
+ .toggleClass('ng-valid', controller.$valid)
+ .toggleClass('ng-invalid-required', !controller.$valid)
+ .toggleClass('ng-valid-required', controller.$valid)
+ .toggleClass('ng-dirty', controller.$dirty)
+ .toggleClass('ng-pristine', controller.$pristine);
+ return value;
+ });
+
+ if (!isSelect) {
+ // Set the view and model value and update the angular template manually for the ajax/multiple select2.
+ elm.bind("change", function (e) {
+ e.stopImmediatePropagation();
+
+ if (scope.$$phase || scope.$root.$$phase) {
+ return;
+ }
+ scope.$apply(function () {
+ controller.$setViewValue(
+ convertToAngularModel(elm.select2('data')));
+ });
+ });
+
+ if (opts.initSelection) {
+ var initSelection = opts.initSelection;
+ opts.initSelection = function (element, callback) {
+ initSelection(element, function (value) {
+ var isPristine = controller.$pristine;
+ controller.$setViewValue(convertToAngularModel(value));
+ callback(value);
+ if (isPristine) {
+ controller.$setPristine();
+ }
+ elm.prev().toggleClass('ng-pristine', controller.$pristine);
+ });
+ };
+ }
+ }
+ }
+
+ elm.bind("$destroy", function() {
+ elm.select2("destroy");
+ });
+
+ attrs.$observe('disabled', function (value) {
+ elm.select2('enable', !value);
+ });
+
+ attrs.$observe('readonly', function (value) {
+ elm.select2('readonly', !!value);
+ });
+
+ if (attrs.ngMultiple) {
+ scope.$watch(attrs.ngMultiple, function(newVal) {
+ attrs.$set('multiple', !!newVal);
+ elm.select2(opts);
+ });
+ }
+
+ // Initialize the plugin late so that the injected DOM does not disrupt the template compiler
+ $timeout(function () {
+ elm.select2(opts);
+
+ // Set initial value - I'm not sure about this but it seems to need to be there
+ elm.select2('data', controller.$modelValue);
+ // important!
+ controller.$render();
+
+ // Not sure if I should just check for !isSelect OR if I should check for 'tags' key
+ if (!opts.initSelection && !isSelect) {
+ var isPristine = controller.$pristine;
+ controller.$setViewValue(
+ convertToAngularModel(elm.select2('data'))
+ );
+ if (isPristine) {
+ controller.$setPristine();
+ }
+ elm.prev().toggleClass('ng-pristine', controller.$pristine);
+ }
+ });
+ };
+ }
+ };
+}]);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/angular.treeview.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/angular.treeview.js
new file mode 100755
index 0000000..0e6512a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/angular.treeview.js
@@ -0,0 +1,97 @@
+/*
+ @license Angular Treeview version 0.1.6
+ ⓒ 2013 AHN JAE-HA http://github.com/eu81273/angular.treeview
+ License: MIT
+
+
+ [TREE attribute]
+ angular-treeview: the treeview directive
+ tree-id : each tree's unique id.
+ tree-model : the tree model on $scope.
+ node-id : each node's id
+ node-label : each node's label
+ node-children: each node's children
+
+ <div
+ data-angular-treeview="true"
+ data-tree-id="tree"
+ data-tree-model="roleList"
+ data-node-id="roleId"
+ data-node-label="roleName"
+ data-node-children="children" >
+ </div>
+*/
+
+(function ( angular ) {
+ 'use strict';
+
+ angular.module( 'angularTreeview', [] ).directive( 'treeModel', ['$compile', function( $compile ) {
+ return {
+ restrict: 'A',
+ link: function ( scope, element, attrs ) {
+ //tree id
+ var treeId = attrs.treeId;
+
+ //tree model
+ var treeModel = attrs.treeModel;
+
+ //node id
+ var nodeId = attrs.nodeId || 'id';
+
+ //node label
+ var nodeLabel = attrs.nodeLabel || 'label';
+
+ //children
+ var nodeChildren = attrs.nodeChildren || 'children';
+
+ //tree template
+
+ var template =
+ '<ul>' +
+ '<li data-ng-repeat="node in ' + treeModel + '">' +
+ '<i ng-class="getGroupClass(node)" data-ng-click="' + treeId + '.selectNodeHead(node)"></i>' +
+ '<span data-ng-class="getSelectedClass(node)" ng-dblclick="edit(node)" data-ng-click="' + treeId + '.selectNodeLabel(node)">{{node.' + nodeLabel + '}}</span>' +
+ '<div data-ng-hide="node.collapsed" data-tree-id="' + treeId + '" data-tree-model="node.' + nodeChildren + '" data-node-id=' + nodeId + ' data-node-label=' + nodeLabel + ' data-node-children=' + nodeChildren + '></div>' +
+ '</li>' +
+ '</ul>';
+
+
+ //check tree id, tree model
+ if( treeId && treeModel ) {
+ //root node
+ if( attrs.angularTreeview ) {
+
+ //create tree object if not exists
+ scope[treeId] = scope[treeId] || {};
+
+ //if node head clicks,
+ scope[treeId].selectNodeHead = scope[treeId].selectNodeHead || function( selectedNode ){
+
+ //Collapse or Expand
+ selectedNode.collapsed = !selectedNode.collapsed;
+ scope[treeId].selectNodeLabel(selectedNode);
+ };
+
+ //if node label clicks,
+ scope[treeId].selectNodeLabel = scope[treeId].selectNodeLabel || function( selectedNode ){
+
+ //remove highlight from previous node
+ if( scope[treeId].currentNode && scope[treeId].currentNode.selected ) {
+ scope[treeId].currentNode.selected = undefined;
+ }
+
+ //set highlight to selected node
+ selectedNode.selected = 'selected';
+
+ //set currentNode
+ scope[treeId].currentNode = selectedNode;
+ };
+ }
+
+ //Rendering template.
+ element.html('').append( $compile( template )( scope ) );
+ }
+ }
+ };
+ }]);
+})( angular );
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/angular.treeview.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/angular.treeview.min.js
new file mode 100644
index 0000000..e02a85b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/angular.treeview.min.js
@@ -0,0 +1,9 @@
+/*
+ @license Angular Treeview version 0.1.6
+ ⓒ 2013 AHN JAE-HA http://github.com/eu81273/angular.treeview
+ License: MIT
+*/
+
+(function(f){f.module("angularTreeview",[]).directive("treeModel",function($compile){return{restrict:"A",link:function(b,h,c){var a=c.treeId,g=c.treeModel,e=c.nodeLabel||"label",d=c.nodeChildren||"children",e='<ul><li data-ng-repeat="node in '+g+'"><i class="collapsed" data-ng-show="node.'+d+'.length && node.collapsed" data-ng-click="'+a+'.selectNodeHead(node)"></i><i class="expanded" data-ng-show="node.'+d+'.length && !node.collapsed" data-ng-click="'+a+'.selectNodeHead(node)"></i><i class="normal" data-ng-hide="node.'+
+d+'.length"></i> <span data-ng-class="node.selected" data-ng-click="'+a+'.selectNodeLabel(node)">{{node.'+e+'}}</span><div data-ng-hide="node.collapsed" data-tree-id="'+a+'" data-tree-model="node.'+d+'" data-node-id='+(c.nodeId||"id")+" data-node-label="+e+" data-node-children="+d+"></div></li></ul>";a&&g&&(c.angularTreeview&&(b[a]=b[a]||{},b[a].selectNodeHead=b[a].selectNodeHead||function(a){a.collapsed=!a.collapsed},b[a].selectNodeLabel=b[a].selectNodeLabel||function(c){b[a].currentNode&&b[a].currentNode.selected&&
+(b[a].currentNode.selected=void 0);c.selected="selected";b[a].currentNode=c}),h.html('').append($compile(e)(b)))}}})})(angular);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/css/angular.treeview.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/css/angular.treeview.css
new file mode 100755
index 0000000..d0986e7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/css/angular.treeview.css
@@ -0,0 +1,99 @@
+div[angular-treeview] {
+ /* prevent user selection */
+ -moz-user-select: -moz-none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+ /* default */
+ font-family: Tahoma;
+ font-size:13px;
+ color: #555;
+ text-decoration: none;
+}
+
+div[tree-model] ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ border: none;
+ overflow: hidden;
+}
+
+div[tree-model] li {
+ position: relative;
+ padding: 0 0 0 20px;
+ line-height: 20px;
+}
+
+div[tree-model] li .expanded {
+ padding: 1px 10px;
+ background-image: url("../img/folder.png");
+ background-repeat: no-repeat;
+}
+
+div[tree-model] li .collapsed {
+ padding: 1px 10px;
+ background-image: url("../img/folder-closed.png");
+ background-repeat: no-repeat;
+}
+
+div[tree-model] li .normal {
+ padding: 1px 10px;
+ background-image: url("../img/file.png");
+ background-repeat: no-repeat;
+}
+
+div[tree-model] li i, div[tree-model] li span {
+ cursor: pointer;
+}
+
+div[tree-model] li .selected {
+ background-color: #aaddff;
+ font-weight: bold;
+ padding: 1px 5px;
+}
+
+div[tree-model] li .cut {
+ font-weight: bold;
+ color: gray
+}
+
+/*
+.angular-ui-tree-handle {
+ cursor: grab;
+ text-decoration: none;
+ font-weight: bold;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ min-height: 20px;
+ line-height: 20px;
+}
+*/
+
+.angular-ui-tree-handle {
+ /* background: #f8faff; */
+ /*
+ color: #7c9eb2; */
+ border: 1px solid #dae2ea;
+ padding: 10px 10px;
+ cursor: pointer;
+}
+
+.expanded-folder {
+ padding: 1px 10px;
+ background-image: url("../img/folder.png");
+ background-repeat: no-repeat;
+ cursor: pointer;
+}
+
+.collapsed-folder {
+ padding: 1px 10px;
+ background-image: url("../img/folder-closed.png");
+ background-repeat: no-repeat;
+ cursor: pointer;
+}
+
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/file.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/file.png
new file mode 100644
index 0000000..ffd22db
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/file.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/folder.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/folder.png
new file mode 100644
index 0000000..fdad546
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/folder.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/folder-closed.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/folder-closed.png
new file mode 100644
index 0000000..9c8489c
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/img/folder-closed.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/LICENSE b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/LICENSE
new file mode 100644
index 0000000..514acd3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Steve
+
+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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/README.md
new file mode 100644
index 0000000..3c2a7b5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/treeview/README.md
@@ -0,0 +1,122 @@
+Angular Treeview
+================
+
+Pure [AngularJS](http://www.angularjs.org) based tree menu directive.
+
+[](http://jsfiddle.net/eu81273/8LWUc/)
+
+## Installation
+
+Copy the script and css into your project and add a script and link tag to your page.
+
+```html
+<script type="text/javascript" src="/angular.treeview.js"></script>
+<link rel="stylesheet" type="text/css" href="css/angular.treeview.css">
+```
+
+Add a dependency to your application module.
+
+```javascript
+angular.module('myApp', ['angularTreeview']);
+```
+
+Add a tree to your application. See [Usage](#usage).
+
+## Usage
+
+Attributes of angular treeview are below.
+
+- angular-treeview: the treeview directive.
+- tree-id : each tree's unique id.
+- tree-model : the tree model on $scope.
+- node-id : each node's id.
+- node-label : each node's label.
+- node-children: each node's children.
+
+Here is a simple example.
+
+
+```html
+<div
+ data-angular-treeview="true"
+ data-tree-id="abc"
+ data-tree-model="treedata"
+ data-node-id="id"
+ data-node-label="label"
+ data-node-children="children" >
+</div>
+```
+
+Example model:
+
+```javascript
+$scope.treedata =
+[
+ { "label" : "User", "id" : "role1", "children" : [
+ { "label" : "subUser1", "id" : "role11", "children" : [] },
+ { "label" : "subUser2", "id" : "role12", "children" : [
+ { "label" : "subUser2-1", "id" : "role121", "children" : [
+ { "label" : "subUser2-1-1", "id" : "role1211", "children" : [] },
+ { "label" : "subUser2-1-2", "id" : "role1212", "children" : [] }
+ ]}
+ ]}
+ ]},
+ { "label" : "Admin", "id" : "role2", "children" : [] },
+ { "label" : "Guest", "id" : "role3", "children" : [] }
+];
+```
+
+## Selection
+
+If tree node is selected, then that selected tree node is saved to $scope."TREE ID".currentNode. By using $watch, the controller can recognize the tree selection.
+
+
+```javascript
+$scope.$watch( 'abc.currentNode', function( newObj, oldObj ) {
+ if( $scope.abc && angular.isObject($scope.abc.currentNode) ) {
+ console.log( 'Node Selected!!' );
+ console.log( $scope.abc.currentNode );
+ }
+}, false);
+```
+
+## Examples
+
+#### Basic example
+[](http://jsfiddle.net/eu81273/8LWUc/)
+
+[jsFiddle - http://jsfiddle.net/eu81273/8LWUc/](http://jsfiddle.net/eu81273/8LWUc/)
+
+#### Multiple treeview example
+[](http://jsfiddle.net/eu81273/b9Pnw/)
+
+[jsFiddle - http://jsfiddle.net/eu81273/b9Pnw/](http://jsfiddle.net/eu81273/b9Pnw/)
+
+## Browser Compatibility
+
+Same with AngularJS. Safari, Chrome, Firefox, Opera, IE8, IE9 and mobile browsers (Android, Chrome Mobile, iOS Safari).
+
+## Changelogs
+
+#### version 0.1.6
+- Fixed the bug that 'null' string appears before each 'div' generated. (Thanks to Iaac)
+
+#### version 0.1.5
+- support multiple treeview. (Thanks to Axel Pesme)
+
+#### version 0.1.4
+- prevented memory leaks.
+
+#### version 0.1.3
+- removed unnecessary codes.
+
+#### version 0.1.2
+- removed some jQuery dependency. (Issue #2)
+
+## License
+
+The MIT License.
+
+Copyright ⓒ 2013 AHN JAE-HA.
+
+See [LICENSE](https://github.com/eu81273/angular.treeview/blob/master/LICENSE)
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/ui-bootstrap-tpls-0.11.0.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/ui-bootstrap-tpls-0.11.0.js
new file mode 100644
index 0000000..bcca1cd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/ui-bootstrap-tpls-0.11.0.js
@@ -0,0 +1,4116 @@
+/*
+ * angular-ui-bootstrap
+ * http://angular-ui.github.io/bootstrap/
+
+ * Version: 0.11.0 - 2014-05-01
+ * License: MIT
+ */
+angular.module("ui.bootstrap", ["ui.bootstrap.tpls", "ui.bootstrap.transition","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.bindHtml","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdown","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]);
+angular.module("ui.bootstrap.tpls", ["template/accordion/accordion-group.html","template/accordion/accordion.html","template/alert/alert.html","template/carousel/carousel.html","template/carousel/slide.html","template/datepicker/datepicker.html","template/datepicker/day.html","template/datepicker/month.html","template/datepicker/popup.html","template/datepicker/year.html","template/modal/backdrop.html","template/modal/window.html","template/pagination/pager.html","template/pagination/pagination.html","template/tooltip/tooltip-html-unsafe-popup.html","template/tooltip/tooltip-popup.html","template/popover/popover.html","template/progressbar/bar.html","template/progressbar/progress.html","template/progressbar/progressbar.html","template/rating/rating.html","template/tabs/tab.html","template/tabs/tabset.html","template/timepicker/timepicker.html","template/typeahead/typeahead-match.html","template/typeahead/typeahead-popup.html"]);
+angular.module('ui.bootstrap.transition', [])
+
+/**
+ * $transition service provides a consistent interface to trigger CSS 3 transitions and to be informed when they complete.
+ * @param {DOMElement} element The DOMElement that will be animated.
+ * @param {string|object|function} trigger The thing that will cause the transition to start:
+ * - As a string, it represents the css class to be added to the element.
+ * - As an object, it represents a hash of style attributes to be applied to the element.
+ * - As a function, it represents a function to be called that will cause the transition to occur.
+ * @return {Promise} A promise that is resolved when the transition finishes.
+ */
+.factory('$transition', ['$q', '$timeout', '$rootScope', function($q, $timeout, $rootScope) {
+
+ var $transition = function(element, trigger, options) {
+ options = options || {};
+ var deferred = $q.defer();
+ var endEventName = $transition[options.animation ? 'animationEndEventName' : 'transitionEndEventName'];
+
+ var transitionEndHandler = function(event) {
+ $rootScope.$apply(function() {
+ element.unbind(endEventName, transitionEndHandler);
+ deferred.resolve(element);
+ });
+ };
+
+ if (endEventName) {
+ element.bind(endEventName, transitionEndHandler);
+ }
+
+ // Wrap in a timeout to allow the browser time to update the DOM before the transition is to occur
+ $timeout(function() {
+ if ( angular.isString(trigger) ) {
+ element.addClass(trigger);
+ } else if ( angular.isFunction(trigger) ) {
+ trigger(element);
+ } else if ( angular.isObject(trigger) ) {
+ element.css(trigger);
+ }
+ //If browser does not support transitions, instantly resolve
+ if ( !endEventName ) {
+ deferred.resolve(element);
+ }
+ });
+
+ // Add our custom cancel function to the promise that is returned
+ // We can call this if we are about to run a new transition, which we know will prevent this transition from ending,
+ // i.e. it will therefore never raise a transitionEnd event for that transition
+ deferred.promise.cancel = function() {
+ if ( endEventName ) {
+ element.unbind(endEventName, transitionEndHandler);
+ }
+ deferred.reject('Transition cancelled');
+ };
+
+ return deferred.promise;
+ };
+
+ // Work out the name of the transitionEnd event
+ var transElement = document.createElement('trans');
+ var transitionEndEventNames = {
+ 'WebkitTransition': 'webkitTransitionEnd',
+ 'MozTransition': 'transitionend',
+ 'OTransition': 'oTransitionEnd',
+ 'transition': 'transitionend'
+ };
+ var animationEndEventNames = {
+ 'WebkitTransition': 'webkitAnimationEnd',
+ 'MozTransition': 'animationend',
+ 'OTransition': 'oAnimationEnd',
+ 'transition': 'animationend'
+ };
+ function findEndEventName(endEventNames) {
+ for (var name in endEventNames){
+ if (transElement.style[name] !== undefined) {
+ return endEventNames[name];
+ }
+ }
+ }
+ $transition.transitionEndEventName = findEndEventName(transitionEndEventNames);
+ $transition.animationEndEventName = findEndEventName(animationEndEventNames);
+ return $transition;
+}]);
+
+angular.module('ui.bootstrap.collapse', ['ui.bootstrap.transition'])
+
+ .directive('collapse', ['$transition', function ($transition) {
+
+ return {
+ link: function (scope, element, attrs) {
+
+ var initialAnimSkip = true;
+ var currentTransition;
+
+ function doTransition(change) {
+ var newTransition = $transition(element, change);
+ if (currentTransition) {
+ currentTransition.cancel();
+ }
+ currentTransition = newTransition;
+ newTransition.then(newTransitionDone, newTransitionDone);
+ return newTransition;
+
+ function newTransitionDone() {
+ // Make sure it's this transition, otherwise, leave it alone.
+ if (currentTransition === newTransition) {
+ currentTransition = undefined;
+ }
+ }
+ }
+
+ function expand() {
+ if (initialAnimSkip) {
+ initialAnimSkip = false;
+ expandDone();
+ } else {
+ element.removeClass('collapse').addClass('collapsing');
+ doTransition({ height: element[0].scrollHeight + 'px' }).then(expandDone);
+ }
+ }
+
+ function expandDone() {
+ element.removeClass('collapsing');
+ element.addClass('collapse in');
+ element.css({height: 'auto'});
+ }
+
+ function collapse() {
+ if (initialAnimSkip) {
+ initialAnimSkip = false;
+ collapseDone();
+ element.css({height: 0});
+ } else {
+ // CSS transitions don't work with height: auto, so we have to manually change the height to a specific value
+ element.css({ height: element[0].scrollHeight + 'px' });
+ //trigger reflow so a browser realizes that height was updated from auto to a specific value
+ var x = element[0].offsetWidth;
+
+ element.removeClass('collapse in').addClass('collapsing');
+
+ doTransition({ height: 0 }).then(collapseDone);
+ }
+ }
+
+ function collapseDone() {
+ element.removeClass('collapsing');
+ element.addClass('collapse');
+ }
+
+ scope.$watch(attrs.collapse, function (shouldCollapse) {
+ if (shouldCollapse) {
+ collapse();
+ } else {
+ expand();
+ }
+ });
+ }
+ };
+ }]);
+
+angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse'])
+
+.constant('accordionConfig', {
+ closeOthers: true
+})
+
+.controller('AccordionController', ['$scope', '$attrs', 'accordionConfig', function ($scope, $attrs, accordionConfig) {
+
+ // This array keeps track of the accordion groups
+ this.groups = [];
+
+ // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to
+ this.closeOthers = function(openGroup) {
+ var closeOthers = angular.isDefined($attrs.closeOthers) ? $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;
+ if ( closeOthers ) {
+ angular.forEach(this.groups, function (group) {
+ if ( group !== openGroup ) {
+ group.isOpen = false;
+ }
+ });
+ }
+ };
+
+ // This is called from the accordion-group directive to add itself to the accordion
+ this.addGroup = function(groupScope) {
+ var that = this;
+ this.groups.push(groupScope);
+
+ groupScope.$on('$destroy', function (event) {
+ that.removeGroup(groupScope);
+ });
+ };
+
+ // This is called from the accordion-group directive when to remove itself
+ this.removeGroup = function(group) {
+ var index = this.groups.indexOf(group);
+ if ( index !== -1 ) {
+ this.groups.splice(index, 1);
+ }
+ };
+
+}])
+
+// The accordion directive simply sets up the directive controller
+// and adds an accordion CSS class to itself element.
+.directive('accordion', function () {
+ return {
+ restrict:'EA',
+ controller:'AccordionController',
+ transclude: true,
+ replace: false,
+ templateUrl: 'template/accordion/accordion.html'
+ };
+})
+
+// The accordion-group directive indicates a block of html that will expand and collapse in an accordion
+.directive('accordionGroup', function() {
+ return {
+ require:'^accordion', // We need this directive to be inside an accordion
+ restrict:'EA',
+ transclude:true, // It transcludes the contents of the directive into the template
+ replace: true, // The element containing the directive will be replaced with the template
+ templateUrl:'template/accordion/accordion-group.html',
+ scope: {
+ heading: '@', // Interpolate the heading attribute onto this scope
+ isOpen: '=?',
+ isDisabled: '=?'
+ },
+ controller: function() {
+ this.setHeading = function(element) {
+ this.heading = element;
+ };
+ },
+ link: function(scope, element, attrs, accordionCtrl) {
+ accordionCtrl.addGroup(scope);
+
+ scope.$watch('isOpen', function(value) {
+ if ( value ) {
+ accordionCtrl.closeOthers(scope);
+ }
+ });
+
+ scope.toggleOpen = function() {
+ if ( !scope.isDisabled ) {
+ scope.isOpen = !scope.isOpen;
+ }
+ };
+ }
+ };
+})
+
+// Use accordion-heading below an accordion-group to provide a heading containing HTML
+// <accordion-group>
+// <accordion-heading>Heading containing HTML - <img src="..."></accordion-heading>
+// </accordion-group>
+.directive('accordionHeading', function() {
+ return {
+ restrict: 'EA',
+ transclude: true, // Grab the contents to be used as the heading
+ template: '', // In effect remove this element!
+ replace: true,
+ require: '^accordionGroup',
+ link: function(scope, element, attr, accordionGroupCtrl, transclude) {
+ // Pass the heading to the accordion-group controller
+ // so that it can be transcluded into the right place in the template
+ // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat]
+ accordionGroupCtrl.setHeading(transclude(scope, function() {}));
+ }
+ };
+})
+
+// Use in the accordion-group template to indicate where you want the heading to be transcluded
+// You must provide the property on the accordion-group controller that will hold the transcluded element
+// <div class="accordion-group">
+// <div class="accordion-heading" ><a ... accordion-transclude="heading">...</a></div>
+// ...
+// </div>
+.directive('accordionTransclude', function() {
+ return {
+ require: '^accordionGroup',
+ link: function(scope, element, attr, controller) {
+ scope.$watch(function() { return controller[attr.accordionTransclude]; }, function(heading) {
+ if ( heading ) {
+ element.html('');
+ element.append(heading);
+ }
+ });
+ }
+ };
+});
+
+angular.module('ui.bootstrap.alert', [])
+
+.controller('AlertController', ['$scope', '$attrs', function ($scope, $attrs) {
+ $scope.closeable = 'close' in $attrs;
+}])
+
+.directive('alert', function () {
+ return {
+ restrict:'EA',
+ controller:'AlertController',
+ templateUrl:'template/alert/alert.html',
+ transclude:true,
+ replace:true,
+ scope: {
+ type: '@',
+ close: '&'
+ }
+ };
+});
+
+angular.module('ui.bootstrap.bindHtml', [])
+
+ .directive('bindHtmlUnsafe', function () {
+ return function (scope, element, attr) {
+ element.addClass('ng-binding').data('$binding', attr.bindHtmlUnsafe);
+ scope.$watch(attr.bindHtmlUnsafe, function bindHtmlUnsafeWatchAction(value) {
+ element.html(value || '');
+ });
+ };
+ });
+angular.module('ui.bootstrap.buttons', [])
+
+.constant('buttonConfig', {
+ activeClass: 'active',
+ toggleEvent: 'click'
+})
+
+.controller('ButtonsController', ['buttonConfig', function(buttonConfig) {
+ this.activeClass = buttonConfig.activeClass || 'active';
+ this.toggleEvent = buttonConfig.toggleEvent || 'click';
+}])
+
+.directive('btnRadio', function () {
+ return {
+ require: ['btnRadio', 'ngModel'],
+ controller: 'ButtonsController',
+ link: function (scope, element, attrs, ctrls) {
+ var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ //model -> UI
+ ngModelCtrl.$render = function () {
+ element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.btnRadio)));
+ };
+
+ //ui->model
+ element.bind(buttonsCtrl.toggleEvent, function () {
+ var isActive = element.hasClass(buttonsCtrl.activeClass);
+
+ if (!isActive || angular.isDefined(attrs.uncheckable)) {
+ scope.$apply(function () {
+ ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.btnRadio));
+ ngModelCtrl.$render();
+ });
+ }
+ });
+ }
+ };
+})
+
+.directive('btnCheckbox', function () {
+ return {
+ require: ['btnCheckbox', 'ngModel'],
+ controller: 'ButtonsController',
+ link: function (scope, element, attrs, ctrls) {
+ var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ function getTrueValue() {
+ return getCheckboxValue(attrs.btnCheckboxTrue, true);
+ }
+
+ function getFalseValue() {
+ return getCheckboxValue(attrs.btnCheckboxFalse, false);
+ }
+
+ function getCheckboxValue(attributeValue, defaultValue) {
+ var val = scope.$eval(attributeValue);
+ return angular.isDefined(val) ? val : defaultValue;
+ }
+
+ //model -> UI
+ ngModelCtrl.$render = function () {
+ element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));
+ };
+
+ //ui->model
+ element.bind(buttonsCtrl.toggleEvent, function () {
+ scope.$apply(function () {
+ ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());
+ ngModelCtrl.$render();
+ });
+ });
+ }
+ };
+});
+
+/**
+* @ngdoc overview
+* @name ui.bootstrap.carousel
+*
+* @description
+* AngularJS version of an image carousel.
+*
+*/
+angular.module('ui.bootstrap.carousel', ['ui.bootstrap.transition'])
+.controller('CarouselController', ['$scope', '$timeout', '$transition', function ($scope, $timeout, $transition) {
+ var self = this,
+ slides = self.slides = $scope.slides = [],
+ currentIndex = -1,
+ currentTimeout, isPlaying;
+ self.currentSlide = null;
+
+ var destroyed = false;
+ /* direction: "prev" or "next" */
+ self.select = $scope.select = function(nextSlide, direction) {
+ var nextIndex = slides.indexOf(nextSlide);
+ //Decide direction if it's not given
+ if (direction === undefined) {
+ direction = nextIndex > currentIndex ? 'next' : 'prev';
+ }
+ if (nextSlide && nextSlide !== self.currentSlide) {
+ if ($scope.$currentTransition) {
+ $scope.$currentTransition.cancel();
+ //Timeout so ng-class in template has time to fix classes for finished slide
+ $timeout(goNext);
+ } else {
+ goNext();
+ }
+ }
+ function goNext() {
+ // Scope has been destroyed, stop here.
+ if (destroyed) { return; }
+ //If we have a slide to transition from and we have a transition type and we're allowed, go
+ if (self.currentSlide && angular.isString(direction) && !$scope.noTransition && nextSlide.$element) {
+ //We shouldn't do class manip in here, but it's the same weird thing bootstrap does. need to fix sometime
+ nextSlide.$element.addClass(direction);
+ var reflow = nextSlide.$element[0].offsetWidth; //force reflow
+
+ //Set all other slides to stop doing their stuff for the new transition
+ angular.forEach(slides, function(slide) {
+ angular.extend(slide, {direction: '', entering: false, leaving: false, active: false});
+ });
+ angular.extend(nextSlide, {direction: direction, active: true, entering: true});
+ angular.extend(self.currentSlide||{}, {direction: direction, leaving: true});
+
+ $scope.$currentTransition = $transition(nextSlide.$element, {});
+ //We have to create new pointers inside a closure since next & current will change
+ (function(next,current) {
+ $scope.$currentTransition.then(
+ function(){ transitionDone(next, current); },
+ function(){ transitionDone(next, current); }
+ );
+ }(nextSlide, self.currentSlide));
+ } else {
+ transitionDone(nextSlide, self.currentSlide);
+ }
+ self.currentSlide = nextSlide;
+ currentIndex = nextIndex;
+ //every time you change slides, reset the timer
+ restartTimer();
+ }
+ function transitionDone(next, current) {
+ angular.extend(next, {direction: '', active: true, leaving: false, entering: false});
+ angular.extend(current||{}, {direction: '', active: false, leaving: false, entering: false});
+ $scope.$currentTransition = null;
+ }
+ };
+ $scope.$on('$destroy', function () {
+ destroyed = true;
+ });
+
+ /* Allow outside people to call indexOf on slides array */
+ self.indexOfSlide = function(slide) {
+ return slides.indexOf(slide);
+ };
+
+ $scope.next = function() {
+ var newIndex = (currentIndex + 1) % slides.length;
+
+ //Prevent this user-triggered transition from occurring if there is already one in progress
+ if (!$scope.$currentTransition) {
+ return self.select(slides[newIndex], 'next');
+ }
+ };
+
+ $scope.prev = function() {
+ var newIndex = currentIndex - 1 < 0 ? slides.length - 1 : currentIndex - 1;
+
+ //Prevent this user-triggered transition from occurring if there is already one in progress
+ if (!$scope.$currentTransition) {
+ return self.select(slides[newIndex], 'prev');
+ }
+ };
+
+ $scope.isActive = function(slide) {
+ return self.currentSlide === slide;
+ };
+
+ $scope.$watch('interval', restartTimer);
+ $scope.$on('$destroy', resetTimer);
+
+ function restartTimer() {
+ resetTimer();
+ var interval = +$scope.interval;
+ if (!isNaN(interval) && interval>=0) {
+ currentTimeout = $timeout(timerFn, interval);
+ }
+ }
+
+ function resetTimer() {
+ if (currentTimeout) {
+ $timeout.cancel(currentTimeout);
+ currentTimeout = null;
+ }
+ }
+
+ function timerFn() {
+ if (isPlaying) {
+ $scope.next();
+ restartTimer();
+ } else {
+ $scope.pause();
+ }
+ }
+
+ $scope.play = function() {
+ if (!isPlaying) {
+ isPlaying = true;
+ restartTimer();
+ }
+ };
+ $scope.pause = function() {
+ if (!$scope.noPause) {
+ isPlaying = false;
+ resetTimer();
+ }
+ };
+
+ self.addSlide = function(slide, element) {
+ slide.$element = element;
+ slides.push(slide);
+ //if this is the first slide or the slide is set to active, select it
+ if(slides.length === 1 || slide.active) {
+ self.select(slides[slides.length-1]);
+ if (slides.length == 1) {
+ $scope.play();
+ }
+ } else {
+ slide.active = false;
+ }
+ };
+
+ self.removeSlide = function(slide) {
+ //get the index of the slide inside the carousel
+ var index = slides.indexOf(slide);
+ slides.splice(index, 1);
+ if (slides.length > 0 && slide.active) {
+ if (index >= slides.length) {
+ self.select(slides[index-1]);
+ } else {
+ self.select(slides[index]);
+ }
+ } else if (currentIndex > index) {
+ currentIndex--;
+ }
+ };
+
+}])
+
+/**
+ * @ngdoc directive
+ * @name ui.bootstrap.carousel.directive:carousel
+ * @restrict EA
+ *
+ * @description
+ * Carousel is the outer container for a set of image 'slides' to showcase.
+ *
+ * @param {number=} interval The time, in milliseconds, that it will take the carousel to go to the next slide.
+ * @param {boolean=} noTransition Whether to disable transitions on the carousel.
+ * @param {boolean=} noPause Whether to disable pausing on the carousel (by default, the carousel interval pauses on hover).
+ *
+ * @example
+<example module="ui.bootstrap">
+ <file name="index.html">
+ <carousel>
+ <slide>
+ <img src="http://placekitten.com/150/150" style="margin:auto;">
+ <div class="carousel-caption">
+ <p>Beautiful!</p>
+ </div>
+ </slide>
+ <slide>
+ <img src="http://placekitten.com/100/150" style="margin:auto;">
+ <div class="carousel-caption">
+ <p>D'aww!</p>
+ </div>
+ </slide>
+ </carousel>
+ </file>
+ <file name="demo.css">
+ .carousel-indicators {
+ top: auto;
+ bottom: 15px;
+ }
+ </file>
+</example>
+ */
+.directive('carousel', [function() {
+ return {
+ restrict: 'EA',
+ transclude: true,
+ replace: true,
+ controller: 'CarouselController',
+ require: 'carousel',
+ templateUrl: 'template/carousel/carousel.html',
+ scope: {
+ interval: '=',
+ noTransition: '=',
+ noPause: '='
+ }
+ };
+}])
+
+/**
+ * @ngdoc directive
+ * @name ui.bootstrap.carousel.directive:slide
+ * @restrict EA
+ *
+ * @description
+ * Creates a slide inside a {@link ui.bootstrap.carousel.directive:carousel carousel}. Must be placed as a child of a carousel element.
+ *
+ * @param {boolean=} active Model binding, whether or not this slide is currently active.
+ *
+ * @example
+<example module="ui.bootstrap">
+ <file name="index.html">
+<div ng-controller="CarouselDemoCtrl">
+ <carousel>
+ <slide ng-repeat="slide in slides" active="slide.active">
+ <img ng-src="{{slide.image}}" style="margin:auto;">
+ <div class="carousel-caption">
+ <h4>Slide {{$index}}</h4>
+ <p>{{slide.text}}</p>
+ </div>
+ </slide>
+ </carousel>
+ Interval, in milliseconds: <input type="number" ng-model="myInterval">
+ <br />Enter a negative number to stop the interval.
+</div>
+ </file>
+ <file name="script.js">
+function CarouselDemoCtrl($scope) {
+ $scope.myInterval = 5000;
+}
+ </file>
+ <file name="demo.css">
+ .carousel-indicators {
+ top: auto;
+ bottom: 15px;
+ }
+ </file>
+</example>
+*/
+
+.directive('slide', function() {
+ return {
+ require: '^carousel',
+ restrict: 'EA',
+ transclude: true,
+ replace: true,
+ templateUrl: 'template/carousel/slide.html',
+ scope: {
+ active: '=?'
+ },
+ link: function (scope, element, attrs, carouselCtrl) {
+ carouselCtrl.addSlide(scope, element);
+ //when the scope is destroyed then remove the slide from the current slides array
+ scope.$on('$destroy', function() {
+ carouselCtrl.removeSlide(scope);
+ });
+
+ scope.$watch('active', function(active) {
+ if (active) {
+ carouselCtrl.select(scope);
+ }
+ });
+ }
+ };
+});
+
+angular.module('ui.bootstrap.dateparser', [])
+
+.service('dateParser', ['$locale', 'orderByFilter', function($locale, orderByFilter) {
+
+ this.parsers = {};
+
+ var formatCodeToRegex = {
+ 'yyyy': {
+ regex: '\\d{4}',
+ apply: function(value) { this.year = +value; }
+ },
+ 'yy': {
+ regex: '\\d{2}',
+ apply: function(value) { this.year = +value + 2000; }
+ },
+ 'y': {
+ regex: '\\d{1,4}',
+ apply: function(value) { this.year = +value; }
+ },
+ 'MMMM': {
+ regex: $locale.DATETIME_FORMATS.MONTH.join('|'),
+ apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); }
+ },
+ 'MMM': {
+ regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),
+ apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); }
+ },
+ 'MM': {
+ regex: '0[1-9]|1[0-2]',
+ apply: function(value) { this.month = value - 1; }
+ },
+ 'M': {
+ regex: '[1-9]|1[0-2]',
+ apply: function(value) { this.month = value - 1; }
+ },
+ 'dd': {
+ regex: '[0-2][0-9]{1}|3[0-1]{1}',
+ apply: function(value) { this.date = +value; }
+ },
+ 'd': {
+ regex: '[1-2]?[0-9]{1}|3[0-1]{1}',
+ apply: function(value) { this.date = +value; }
+ },
+ 'EEEE': {
+ regex: $locale.DATETIME_FORMATS.DAY.join('|')
+ },
+ 'EEE': {
+ regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|')
+ }
+ };
+
+ this.createParser = function(format) {
+ var map = [], regex = format.split('');
+
+ angular.forEach(formatCodeToRegex, function(data, code) {
+ var index = format.indexOf(code);
+
+ if (index > -1) {
+ format = format.split('');
+
+ regex[index] = '(' + data.regex + ')';
+ format[index] = '$'; // Custom symbol to define consumed part of format
+ for (var i = index + 1, n = index + code.length; i < n; i++) {
+ regex[i] = '';
+ format[i] = '$';
+ }
+ format = format.join('');
+
+ map.push({ index: index, apply: data.apply });
+ }
+ });
+
+ return {
+ regex: new RegExp('^' + regex.join('') + '$'),
+ map: orderByFilter(map, 'index')
+ };
+ };
+
+ this.parse = function(input, format) {
+ if ( !angular.isString(input) ) {
+ return input;
+ }
+
+ format = $locale.DATETIME_FORMATS[format] || format;
+
+ if ( !this.parsers[format] ) {
+ this.parsers[format] = this.createParser(format);
+ }
+
+ var parser = this.parsers[format],
+ regex = parser.regex,
+ map = parser.map,
+ results = input.match(regex);
+
+ if ( results && results.length ) {
+ var fields = { year: 1900, month: 0, date: 1, hours: 0 }, dt;
+
+ for( var i = 1, n = results.length; i < n; i++ ) {
+ var mapper = map[i-1];
+ if ( mapper.apply ) {
+ mapper.apply.call(fields, results[i]);
+ }
+ }
+
+ if ( isValid(fields.year, fields.month, fields.date) ) {
+ dt = new Date( fields.year, fields.month, fields.date, fields.hours);
+ }
+
+ return dt;
+ }
+ };
+
+ // Check if date is valid for specific month (and year for February).
+ // Month: 0 = Jan, 1 = Feb, etc
+ function isValid(year, month, date) {
+ if ( month === 1 && date > 28) {
+ return date === 29 && ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);
+ }
+
+ if ( month === 3 || month === 5 || month === 8 || month === 10) {
+ return date < 31;
+ }
+
+ return true;
+ }
+}]);
+
+angular.module('ui.bootstrap.position', [])
+
+/**
+ * A set of utility methods that can be use to retrieve position of DOM elements.
+ * It is meant to be used where we need to absolute-position DOM elements in
+ * relation to other, existing elements (this is the case for tooltips, popovers,
+ * typeahead suggestions etc.).
+ */
+ .factory('$position', ['$document', '$window', function ($document, $window) {
+
+ function getStyle(el, cssprop) {
+ if (el.currentStyle) { //IE
+ return el.currentStyle[cssprop];
+ } else if ($window.getComputedStyle) {
+ return $window.getComputedStyle(el)[cssprop];
+ }
+ // finally try and get inline style
+ return el.style[cssprop];
+ }
+
+ /**
+ * Checks if a given element is statically positioned
+ * @param element - raw DOM element
+ */
+ function isStaticPositioned(element) {
+ return (getStyle(element, 'position') || 'static' ) === 'static';
+ }
+
+ /**
+ * returns the closest, non-statically positioned parentOffset of a given element
+ * @param element
+ */
+ var parentOffsetEl = function (element) {
+ var docDomEl = $document[0];
+ var offsetParent = element.offsetParent || docDomEl;
+ while (offsetParent && offsetParent !== docDomEl && isStaticPositioned(offsetParent) ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent || docDomEl;
+ };
+
+ return {
+ /**
+ * Provides read-only equivalent of jQuery's position function:
+ * http://api.jquery.com/position/
+ */
+ position: function (element) {
+ var elBCR = this.offset(element);
+ var offsetParentBCR = { top: 0, left: 0 };
+ var offsetParentEl = parentOffsetEl(element[0]);
+ if (offsetParentEl != $document[0]) {
+ offsetParentBCR = this.offset(angular.element(offsetParentEl));
+ offsetParentBCR.top += offsetParentEl.clientTop - offsetParentEl.scrollTop;
+ offsetParentBCR.left += offsetParentEl.clientLeft - offsetParentEl.scrollLeft;
+ }
+
+ var boundingClientRect = element[0].getBoundingClientRect();
+ return {
+ width: boundingClientRect.width || element.prop('offsetWidth'),
+ height: boundingClientRect.height || element.prop('offsetHeight'),
+ top: elBCR.top - offsetParentBCR.top,
+ left: elBCR.left - offsetParentBCR.left
+ };
+ },
+
+ /**
+ * Provides read-only equivalent of jQuery's offset function:
+ * http://api.jquery.com/offset/
+ */
+ offset: function (element) {
+ var boundingClientRect = element[0].getBoundingClientRect();
+ return {
+ width: boundingClientRect.width || element.prop('offsetWidth'),
+ height: boundingClientRect.height || element.prop('offsetHeight'),
+ top: boundingClientRect.top + ($window.pageYOffset || $document[0].documentElement.scrollTop),
+ left: boundingClientRect.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft)
+ };
+ },
+
+ /**
+ * Provides coordinates for the targetEl in relation to hostEl
+ */
+ positionElements: function (hostEl, targetEl, positionStr, appendToBody) {
+
+ var positionStrParts = positionStr.split('-');
+ var pos0 = positionStrParts[0], pos1 = positionStrParts[1] || 'center';
+
+ var hostElPos,
+ targetElWidth,
+ targetElHeight,
+ targetElPos;
+
+ hostElPos = appendToBody ? this.offset(hostEl) : this.position(hostEl);
+
+ targetElWidth = targetEl.prop('offsetWidth');
+ targetElHeight = targetEl.prop('offsetHeight');
+
+ var shiftWidth = {
+ center: function () {
+ return hostElPos.left + hostElPos.width / 2 - targetElWidth / 2;
+ },
+ left: function () {
+ return hostElPos.left;
+ },
+ right: function () {
+ return hostElPos.left + hostElPos.width;
+ }
+ };
+
+ var shiftHeight = {
+ center: function () {
+ return hostElPos.top + hostElPos.height / 2 - targetElHeight / 2;
+ },
+ top: function () {
+ return hostElPos.top;
+ },
+ bottom: function () {
+ return hostElPos.top + hostElPos.height;
+ }
+ };
+
+ switch (pos0) {
+ case 'right':
+ targetElPos = {
+ top: shiftHeight[pos1](),
+ left: shiftWidth[pos0]()
+ };
+ break;
+ case 'left':
+ targetElPos = {
+ top: shiftHeight[pos1](),
+ left: hostElPos.left - targetElWidth
+ };
+ break;
+ case 'bottom':
+ targetElPos = {
+ top: shiftHeight[pos0](),
+ left: shiftWidth[pos1]()
+ };
+ break;
+ default:
+ targetElPos = {
+ top: hostElPos.top - targetElHeight,
+ left: shiftWidth[pos1]()
+ };
+ break;
+ }
+
+ return targetElPos;
+ }
+ };
+ }]);
+
+angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.position'])
+
+.constant('datepickerConfig', {
+ formatDay: 'dd',
+ formatMonth: 'MMMM',
+ formatYear: 'yyyy',
+ formatDayHeader: 'EEE',
+ formatDayTitle: 'MMMM yyyy',
+ formatMonthTitle: 'yyyy',
+ datepickerMode: 'day',
+ minMode: 'day',
+ maxMode: 'year',
+ showWeeks: true,
+ startingDay: 0,
+ yearRange: 20,
+ minDate: null,
+ maxDate: null
+})
+
+.controller('DatepickerController', ['$scope', '$attrs', '$parse', '$interpolate', '$timeout', '$log', 'dateFilter', 'datepickerConfig', function($scope, $attrs, $parse, $interpolate, $timeout, $log, dateFilter, datepickerConfig) {
+ var self = this,
+ ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl;
+
+ // Modes chain
+ this.modes = ['day', 'month', 'year'];
+
+ // Configuration attributes
+ angular.forEach(['formatDay', 'formatMonth', 'formatYear', 'formatDayHeader', 'formatDayTitle', 'formatMonthTitle',
+ 'minMode', 'maxMode', 'showWeeks', 'startingDay', 'yearRange'], function( key, index ) {
+ self[key] = angular.isDefined($attrs[key]) ? (index < 8 ? $interpolate($attrs[key])($scope.$parent) : $scope.$parent.$eval($attrs[key])) : datepickerConfig[key];
+ });
+
+ // Watchable attributes
+ angular.forEach(['minDate', 'maxDate'], function( key ) {
+ if ( $attrs[key] ) {
+ $scope.$parent.$watch($parse($attrs[key]), function(value) {
+ self[key] = value ? new Date(value) : null;
+ self.refreshView();
+ });
+ } else {
+ self[key] = datepickerConfig[key] ? new Date(datepickerConfig[key]) : null;
+ }
+ });
+
+ $scope.datepickerMode = $scope.datepickerMode || datepickerConfig.datepickerMode;
+ $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000);
+ this.activeDate = angular.isDefined($attrs.initDate) ? $scope.$parent.$eval($attrs.initDate) : new Date();
+
+ $scope.isActive = function(dateObject) {
+ if (self.compare(dateObject.date, self.activeDate) === 0) {
+ $scope.activeDateId = dateObject.uid;
+ return true;
+ }
+ return false;
+ };
+
+ this.init = function( ngModelCtrl_ ) {
+ ngModelCtrl = ngModelCtrl_;
+
+ ngModelCtrl.$render = function() {
+ self.render();
+ };
+ };
+
+ this.render = function() {
+ if ( ngModelCtrl.$modelValue ) {
+ var date = new Date( ngModelCtrl.$modelValue ),
+ isValid = !isNaN(date);
+
+ if ( isValid ) {
+ this.activeDate = date;
+ } else {
+ $log.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');
+ }
+ ngModelCtrl.$setValidity('date', isValid);
+ }
+ this.refreshView();
+ };
+
+ this.refreshView = function() {
+ if ( this.element ) {
+ this._refreshView();
+
+ var date = ngModelCtrl.$modelValue ? new Date(ngModelCtrl.$modelValue) : null;
+ ngModelCtrl.$setValidity('date-disabled', !date || (this.element && !this.isDisabled(date)));
+ }
+ };
+
+ this.createDateObject = function(date, format) {
+ var model = ngModelCtrl.$modelValue ? new Date(ngModelCtrl.$modelValue) : null;
+ return {
+ date: date,
+ label: dateFilter(date, format),
+ selected: model && this.compare(date, model) === 0,
+ disabled: this.isDisabled(date),
+ current: this.compare(date, new Date()) === 0
+ };
+ };
+
+ this.isDisabled = function( date ) {
+ return ((this.minDate && this.compare(date, this.minDate) < 0) || (this.maxDate && this.compare(date, this.maxDate) > 0) || ($attrs.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode})));
+ };
+
+ // Split array into smaller arrays
+ this.split = function(arr, size) {
+ var arrays = [];
+ while (arr.length > 0) {
+ arrays.push(arr.splice(0, size));
+ }
+ return arrays;
+ };
+
+ $scope.select = function( date ) {
+ if ( $scope.datepickerMode === self.minMode ) {
+ var dt = ngModelCtrl.$modelValue ? new Date( ngModelCtrl.$modelValue ) : new Date(0, 0, 0, 0, 0, 0, 0);
+ dt.setFullYear( date.getFullYear(), date.getMonth(), date.getDate() );
+ ngModelCtrl.$setViewValue( dt );
+ ngModelCtrl.$render();
+ } else {
+ self.activeDate = date;
+ $scope.datepickerMode = self.modes[ self.modes.indexOf( $scope.datepickerMode ) - 1 ];
+ }
+ };
+
+ $scope.move = function( direction ) {
+ var year = self.activeDate.getFullYear() + direction * (self.step.years || 0),
+ month = self.activeDate.getMonth() + direction * (self.step.months || 0);
+ self.activeDate.setFullYear(year, month, 1);
+ self.refreshView();
+ };
+
+ $scope.toggleMode = function( direction ) {
+ direction = direction || 1;
+
+ if (($scope.datepickerMode === self.maxMode && direction === 1) || ($scope.datepickerMode === self.minMode && direction === -1)) {
+ return;
+ }
+
+ $scope.datepickerMode = self.modes[ self.modes.indexOf( $scope.datepickerMode ) + direction ];
+ };
+
+ // Key event mapper
+ $scope.keys = { 13:'enter', 32:'space', 33:'pageup', 34:'pagedown', 35:'end', 36:'home', 37:'left', 38:'up', 39:'right', 40:'down' };
+
+ var focusElement = function() {
+ $timeout(function() {
+ self.element[0].focus();
+ }, 0 , false);
+ };
+
+ // Listen for focus requests from popup directive
+ $scope.$on('datepicker.focus', focusElement);
+
+ $scope.keydown = function( evt ) {
+ var key = $scope.keys[evt.which];
+
+ if ( !key || evt.shiftKey || evt.altKey ) {
+ return;
+ }
+
+ evt.preventDefault();
+ evt.stopPropagation();
+
+ if (key === 'enter' || key === 'space') {
+ if ( self.isDisabled(self.activeDate)) {
+ return; // do nothing
+ }
+ $scope.select(self.activeDate);
+ focusElement();
+ } else if (evt.ctrlKey && (key === 'up' || key === 'down')) {
+ $scope.toggleMode(key === 'up' ? 1 : -1);
+ focusElement();
+ } else {
+ self.handleKeyDown(key, evt);
+ self.refreshView();
+ }
+ };
+}])
+
+.directive( 'datepicker', function () {
+ return {
+ restrict: 'EA',
+ replace: true,
+ templateUrl: 'template/datepicker/datepicker.html',
+ scope: {
+ datepickerMode: '=?',
+ dateDisabled: '&'
+ },
+ require: ['datepicker', '?^ngModel'],
+ controller: 'DatepickerController',
+ link: function(scope, element, attrs, ctrls) {
+ var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ if ( ngModelCtrl ) {
+ datepickerCtrl.init( ngModelCtrl );
+ }
+ }
+ };
+})
+
+.directive('daypicker', ['dateFilter', function (dateFilter) {
+ return {
+ restrict: 'EA',
+ replace: true,
+ templateUrl: 'template/datepicker/day.html',
+ require: '^datepicker',
+ link: function(scope, element, attrs, ctrl) {
+ scope.showWeeks = ctrl.showWeeks;
+
+ ctrl.step = { months: 1 };
+ ctrl.element = element;
+
+ var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
+ function getDaysInMonth( year, month ) {
+ return ((month === 1) && (year % 4 === 0) && ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];
+ }
+
+ function getDates(startDate, n) {
+ var dates = new Array(n), current = new Date(startDate), i = 0;
+ current.setHours(12); // Prevent repeated dates because of timezone bug
+ while ( i < n ) {
+ dates[i++] = new Date(current);
+ current.setDate( current.getDate() + 1 );
+ }
+ return dates;
+ }
+
+ ctrl._refreshView = function() {
+ var year = ctrl.activeDate.getFullYear(),
+ month = ctrl.activeDate.getMonth(),
+ firstDayOfMonth = new Date(year, month, 1),
+ difference = ctrl.startingDay - firstDayOfMonth.getDay(),
+ numDisplayedFromPreviousMonth = (difference > 0) ? 7 - difference : - difference,
+ firstDate = new Date(firstDayOfMonth);
+
+ if ( numDisplayedFromPreviousMonth > 0 ) {
+ firstDate.setDate( - numDisplayedFromPreviousMonth + 1 );
+ }
+
+ // 42 is the number of days on a six-month calendar
+ var days = getDates(firstDate, 42);
+ for (var i = 0; i < 42; i ++) {
+ days[i] = angular.extend(ctrl.createDateObject(days[i], ctrl.formatDay), {
+ secondary: days[i].getMonth() !== month,
+ uid: scope.uniqueId + '-' + i
+ });
+ }
+
+ scope.labels = new Array(7);
+ for (var j = 0; j < 7; j++) {
+ scope.labels[j] = {
+ abbr: dateFilter(days[j].date, ctrl.formatDayHeader),
+ full: dateFilter(days[j].date, 'EEEE')
+ };
+ }
+
+ scope.title = dateFilter(ctrl.activeDate, ctrl.formatDayTitle);
+ scope.rows = ctrl.split(days, 7);
+
+ if ( scope.showWeeks ) {
+ scope.weekNumbers = [];
+ var weekNumber = getISO8601WeekNumber( scope.rows[0][0].date ),
+ numWeeks = scope.rows.length;
+ while( scope.weekNumbers.push(weekNumber++) < numWeeks ) {}
+ }
+ };
+
+ ctrl.compare = function(date1, date2) {
+ return (new Date( date1.getFullYear(), date1.getMonth(), date1.getDate() ) - new Date( date2.getFullYear(), date2.getMonth(), date2.getDate() ) );
+ };
+
+ function getISO8601WeekNumber(date) {
+ var checkDate = new Date(date);
+ checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday
+ var time = checkDate.getTime();
+ checkDate.setMonth(0); // Compare with Jan 1
+ checkDate.setDate(1);
+ return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
+ }
+
+ ctrl.handleKeyDown = function( key, evt ) {
+ var date = ctrl.activeDate.getDate();
+
+ if (key === 'left') {
+ date = date - 1; // up
+ } else if (key === 'up') {
+ date = date - 7; // down
+ } else if (key === 'right') {
+ date = date + 1; // down
+ } else if (key === 'down') {
+ date = date + 7;
+ } else if (key === 'pageup' || key === 'pagedown') {
+ var month = ctrl.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1);
+ ctrl.activeDate.setMonth(month, 1);
+ date = Math.min(getDaysInMonth(ctrl.activeDate.getFullYear(), ctrl.activeDate.getMonth()), date);
+ } else if (key === 'home') {
+ date = 1;
+ } else if (key === 'end') {
+ date = getDaysInMonth(ctrl.activeDate.getFullYear(), ctrl.activeDate.getMonth());
+ }
+ ctrl.activeDate.setDate(date);
+ };
+
+ ctrl.refreshView();
+ }
+ };
+}])
+
+.directive('monthpicker', ['dateFilter', function (dateFilter) {
+ return {
+ restrict: 'EA',
+ replace: true,
+ templateUrl: 'template/datepicker/month.html',
+ require: '^datepicker',
+ link: function(scope, element, attrs, ctrl) {
+ ctrl.step = { years: 1 };
+ ctrl.element = element;
+
+ ctrl._refreshView = function() {
+ var months = new Array(12),
+ year = ctrl.activeDate.getFullYear();
+
+ for ( var i = 0; i < 12; i++ ) {
+ months[i] = angular.extend(ctrl.createDateObject(new Date(year, i, 1), ctrl.formatMonth), {
+ uid: scope.uniqueId + '-' + i
+ });
+ }
+
+ scope.title = dateFilter(ctrl.activeDate, ctrl.formatMonthTitle);
+ scope.rows = ctrl.split(months, 3);
+ };
+
+ ctrl.compare = function(date1, date2) {
+ return new Date( date1.getFullYear(), date1.getMonth() ) - new Date( date2.getFullYear(), date2.getMonth() );
+ };
+
+ ctrl.handleKeyDown = function( key, evt ) {
+ var date = ctrl.activeDate.getMonth();
+
+ if (key === 'left') {
+ date = date - 1; // up
+ } else if (key === 'up') {
+ date = date - 3; // down
+ } else if (key === 'right') {
+ date = date + 1; // down
+ } else if (key === 'down') {
+ date = date + 3;
+ } else if (key === 'pageup' || key === 'pagedown') {
+ var year = ctrl.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1);
+ ctrl.activeDate.setFullYear(year);
+ } else if (key === 'home') {
+ date = 0;
+ } else if (key === 'end') {
+ date = 11;
+ }
+ ctrl.activeDate.setMonth(date);
+ };
+
+ ctrl.refreshView();
+ }
+ };
+}])
+
+.directive('yearpicker', ['dateFilter', function (dateFilter) {
+ return {
+ restrict: 'EA',
+ replace: true,
+ templateUrl: 'template/datepicker/year.html',
+ require: '^datepicker',
+ link: function(scope, element, attrs, ctrl) {
+ var range = ctrl.yearRange;
+
+ ctrl.step = { years: range };
+ ctrl.element = element;
+
+ function getStartingYear( year ) {
+ return parseInt((year - 1) / range, 10) * range + 1;
+ }
+
+ ctrl._refreshView = function() {
+ var years = new Array(range);
+
+ for ( var i = 0, start = getStartingYear(ctrl.activeDate.getFullYear()); i < range; i++ ) {
+ years[i] = angular.extend(ctrl.createDateObject(new Date(start + i, 0, 1), ctrl.formatYear), {
+ uid: scope.uniqueId + '-' + i
+ });
+ }
+
+ scope.title = [years[0].label, years[range - 1].label].join(' - ');
+ scope.rows = ctrl.split(years, 5);
+ };
+
+ ctrl.compare = function(date1, date2) {
+ return date1.getFullYear() - date2.getFullYear();
+ };
+
+ ctrl.handleKeyDown = function( key, evt ) {
+ var date = ctrl.activeDate.getFullYear();
+
+ if (key === 'left') {
+ date = date - 1; // up
+ } else if (key === 'up') {
+ date = date - 5; // down
+ } else if (key === 'right') {
+ date = date + 1; // down
+ } else if (key === 'down') {
+ date = date + 5;
+ } else if (key === 'pageup' || key === 'pagedown') {
+ date += (key === 'pageup' ? - 1 : 1) * ctrl.step.years;
+ } else if (key === 'home') {
+ date = getStartingYear( ctrl.activeDate.getFullYear() );
+ } else if (key === 'end') {
+ date = getStartingYear( ctrl.activeDate.getFullYear() ) + range - 1;
+ }
+ ctrl.activeDate.setFullYear(date);
+ };
+
+ ctrl.refreshView();
+ }
+ };
+}])
+
+.constant('datepickerPopupConfig', {
+ datepickerPopup: 'yyyy-MM-dd',
+ currentText: 'Today',
+ clearText: 'Clear',
+ closeText: 'Done',
+ closeOnDateSelection: true,
+ appendToBody: false,
+ showButtonBar: true
+})
+
+.directive('datepickerPopup', ['$compile', '$parse', '$document', '$position', 'dateFilter', 'dateParser', 'datepickerPopupConfig',
+function ($compile, $parse, $document, $position, dateFilter, dateParser, datepickerPopupConfig) {
+ return {
+ restrict: 'EA',
+ require: 'ngModel',
+ scope: {
+ isOpen: '=?',
+ currentText: '@',
+ clearText: '@',
+ closeText: '@',
+ dateDisabled: '&'
+ },
+ link: function(scope, element, attrs, ngModel) {
+ var dateFormat,
+ closeOnDateSelection = angular.isDefined(attrs.closeOnDateSelection) ? scope.$parent.$eval(attrs.closeOnDateSelection) : datepickerPopupConfig.closeOnDateSelection,
+ appendToBody = angular.isDefined(attrs.datepickerAppendToBody) ? scope.$parent.$eval(attrs.datepickerAppendToBody) : datepickerPopupConfig.appendToBody;
+
+ scope.showButtonBar = angular.isDefined(attrs.showButtonBar) ? scope.$parent.$eval(attrs.showButtonBar) : datepickerPopupConfig.showButtonBar;
+
+ scope.getText = function( key ) {
+ return scope[key + 'Text'] || datepickerPopupConfig[key + 'Text'];
+ };
+
+ attrs.$observe('datepickerPopup', function(value) {
+ dateFormat = value || datepickerPopupConfig.datepickerPopup;
+ ngModel.$render();
+ });
+
+ // popup element used to display calendar
+ var popupEl = angular.element('<div datepicker-popup-wrap><div datepicker></div></div>');
+ popupEl.attr({
+ 'ng-model': 'date',
+ 'ng-change': 'dateSelection()'
+ });
+
+ function cameltoDash( string ){
+ return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); });
+ }
+
+ // datepicker element
+ var datepickerEl = angular.element(popupEl.children()[0]);
+ if ( attrs.datepickerOptions ) {
+ angular.forEach(scope.$parent.$eval(attrs.datepickerOptions), function( value, option ) {
+ datepickerEl.attr( cameltoDash(option), value );
+ });
+ }
+
+ angular.forEach(['minDate', 'maxDate'], function( key ) {
+ if ( attrs[key] ) {
+ scope.$parent.$watch($parse(attrs[key]), function(value){
+ scope[key] = value;
+ });
+ datepickerEl.attr(cameltoDash(key), key);
+ }
+ });
+ if (attrs.dateDisabled) {
+ datepickerEl.attr('date-disabled', 'dateDisabled({ date: date, mode: mode })');
+ }
+
+ function parseDate(viewValue) {
+ if (!viewValue) {
+ ngModel.$setValidity('date', true);
+ return null;
+ } else if (angular.isDate(viewValue) && !isNaN(viewValue)) {
+ ngModel.$setValidity('date', true);
+ return viewValue;
+ } else if (angular.isString(viewValue)) {
+ var date = dateParser.parse(viewValue, dateFormat) || new Date(viewValue);
+ if (isNaN(date)) {
+ ngModel.$setValidity('date', false);
+ return undefined;
+ } else {
+ ngModel.$setValidity('date', true);
+ return date;
+ }
+ } else {
+ ngModel.$setValidity('date', false);
+ return undefined;
+ }
+ }
+ ngModel.$parsers.unshift(parseDate);
+
+ // Inner change
+ scope.dateSelection = function(dt) {
+ if (angular.isDefined(dt)) {
+ scope.date = dt;
+ }
+ ngModel.$setViewValue(scope.date);
+ ngModel.$render();
+
+ if ( closeOnDateSelection ) {
+ scope.isOpen = false;
+ element[0].focus();
+ }
+ };
+
+ element.bind('input change keyup', function() {
+ scope.$apply(function() {
+ scope.date = ngModel.$modelValue;
+ });
+ });
+
+ // Outter change
+ ngModel.$render = function() {
+ var date = ngModel.$viewValue ? dateFilter(ngModel.$viewValue, dateFormat) : '';
+ element.val(date);
+ scope.date = parseDate( ngModel.$modelValue );
+ };
+
+ var documentClickBind = function(event) {
+ if (scope.isOpen && event.target !== element[0]) {
+ scope.$apply(function() {
+ scope.isOpen = false;
+ });
+ }
+ };
+
+ var keydown = function(evt, noApply) {
+ scope.keydown(evt);
+ };
+ element.bind('keydown', keydown);
+
+ scope.keydown = function(evt) {
+ if (evt.which === 27) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ scope.close();
+ } else if (evt.which === 40 && !scope.isOpen) {
+ scope.isOpen = true;
+ }
+ };
+
+ scope.$watch('isOpen', function(value) {
+ if (value) {
+ scope.$broadcast('datepicker.focus');
+ scope.position = appendToBody ? $position.offset(element) : $position.position(element);
+ scope.position.top = scope.position.top + element.prop('offsetHeight');
+
+ $document.bind('click', documentClickBind);
+ } else {
+ $document.unbind('click', documentClickBind);
+ }
+ });
+
+ scope.select = function( date ) {
+ if (date === 'today') {
+ var today = new Date();
+ if (angular.isDate(ngModel.$modelValue)) {
+ date = new Date(ngModel.$modelValue);
+ date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());
+ } else {
+ date = new Date(today.setHours(0, 0, 0, 0));
+ }
+ }
+ scope.dateSelection( date );
+ };
+
+ scope.close = function() {
+ scope.isOpen = false;
+ element[0].focus();
+ };
+
+ var $popup = $compile(popupEl)(scope);
+ if ( appendToBody ) {
+ $document.find('body').append($popup);
+ } else {
+ element.after($popup);
+ }
+
+ scope.$on('$destroy', function() {
+ $popup.remove();
+ element.unbind('keydown', keydown);
+ $document.unbind('click', documentClickBind);
+ });
+ }
+ };
+}])
+
+.directive('datepickerPopupWrap', function() {
+ return {
+ restrict:'EA',
+ replace: true,
+ transclude: true,
+ templateUrl: 'template/datepicker/popup.html',
+ link:function (scope, element, attrs) {
+ element.bind('click', function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ });
+ }
+ };
+});
+
+angular.module('ui.bootstrap.dropdown', [])
+
+.constant('dropdownConfig', {
+ openClass: 'open'
+})
+
+.service('dropdownService', ['$document', function($document) {
+ var openScope = null;
+
+ this.open = function( dropdownScope ) {
+ if ( !openScope ) {
+ $document.bind('click', closeDropdown);
+ $document.bind('keydown', escapeKeyBind);
+ }
+
+ if ( openScope && openScope !== dropdownScope ) {
+ openScope.isOpen = false;
+ }
+
+ openScope = dropdownScope;
+ };
+
+ this.close = function( dropdownScope ) {
+ if ( openScope === dropdownScope ) {
+ openScope = null;
+ $document.unbind('click', closeDropdown);
+ $document.unbind('keydown', escapeKeyBind);
+ }
+ };
+
+ var closeDropdown = function( evt ) {
+ if (evt && evt.isDefaultPrevented()) {
+ return;
+ }
+
+ openScope.$apply(function() {
+ openScope.isOpen = false;
+ });
+ };
+
+ var escapeKeyBind = function( evt ) {
+ if ( evt.which === 27 ) {
+ openScope.focusToggleElement();
+ closeDropdown();
+ }
+ };
+}])
+
+.controller('DropdownController', ['$scope', '$attrs', '$parse', 'dropdownConfig', 'dropdownService', '$animate', function($scope, $attrs, $parse, dropdownConfig, dropdownService, $animate) {
+ var self = this,
+ scope = $scope.$new(), // create a child scope so we are not polluting original one
+ openClass = dropdownConfig.openClass,
+ getIsOpen,
+ setIsOpen = angular.noop,
+ toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop;
+
+ this.init = function( element ) {
+ self.$element = element;
+
+ if ( $attrs.isOpen ) {
+ getIsOpen = $parse($attrs.isOpen);
+ setIsOpen = getIsOpen.assign;
+
+ $scope.$watch(getIsOpen, function(value) {
+ scope.isOpen = !!value;
+ });
+ }
+ };
+
+ this.toggle = function( open ) {
+ return scope.isOpen = arguments.length ? !!open : !scope.isOpen;
+ };
+
+ // Allow other directives to watch status
+ this.isOpen = function() {
+ return scope.isOpen;
+ };
+
+ scope.focusToggleElement = function() {
+ if ( self.toggleElement ) {
+ self.toggleElement[0].focus();
+ }
+ };
+
+ scope.$watch('isOpen', function( isOpen, wasOpen ) {
+ $animate[isOpen ? 'addClass' : 'removeClass'](self.$element, openClass);
+
+ if ( isOpen ) {
+ scope.focusToggleElement();
+ dropdownService.open( scope );
+ } else {
+ dropdownService.close( scope );
+ }
+
+ setIsOpen($scope, isOpen);
+ if (angular.isDefined(isOpen) && isOpen !== wasOpen) {
+ toggleInvoker($scope, { open: !!isOpen });
+ }
+ });
+
+ $scope.$on('$locationChangeSuccess', function() {
+ scope.isOpen = false;
+ });
+
+ $scope.$on('$destroy', function() {
+ scope.$destroy();
+ });
+}])
+
+.directive('dropdown', function() {
+ return {
+ restrict: 'CA',
+ controller: 'DropdownController',
+ link: function(scope, element, attrs, dropdownCtrl) {
+ dropdownCtrl.init( element );
+ }
+ };
+})
+
+.directive('dropdownToggle', function() {
+ return {
+ restrict: 'CA',
+ require: '?^dropdown',
+ link: function(scope, element, attrs, dropdownCtrl) {
+ if ( !dropdownCtrl ) {
+ return;
+ }
+
+ dropdownCtrl.toggleElement = element;
+
+ var toggleDropdown = function(event) {
+ event.preventDefault();
+
+ if ( !element.hasClass('disabled') && !attrs.disabled ) {
+ scope.$apply(function() {
+ dropdownCtrl.toggle();
+ });
+ }
+ };
+
+ element.bind('click', toggleDropdown);
+
+ // WAI-ARIA
+ element.attr({ 'aria-haspopup': true, 'aria-expanded': false });
+ scope.$watch(dropdownCtrl.isOpen, function( isOpen ) {
+ element.attr('aria-expanded', !!isOpen);
+ });
+
+ scope.$on('$destroy', function() {
+ element.unbind('click', toggleDropdown);
+ });
+ }
+ };
+});
+
+angular.module('ui.bootstrap.modal', ['ui.bootstrap.transition'])
+
+/**
+ * A helper, internal data structure that acts as a map but also allows getting / removing
+ * elements in the LIFO order
+ */
+ .factory('$$stackedMap', function () {
+ return {
+ createNew: function () {
+ var stack = [];
+
+ return {
+ add: function (key, value) {
+ stack.push({
+ key: key,
+ value: value
+ });
+ },
+ get: function (key) {
+ for (var i = 0; i < stack.length; i++) {
+ if (key == stack[i].key) {
+ return stack[i];
+ }
+ }
+ },
+ keys: function() {
+ var keys = [];
+ for (var i = 0; i < stack.length; i++) {
+ keys.push(stack[i].key);
+ }
+ return keys;
+ },
+ top: function () {
+ return stack[stack.length - 1];
+ },
+ remove: function (key) {
+ var idx = -1;
+ for (var i = 0; i < stack.length; i++) {
+ if (key == stack[i].key) {
+ idx = i;
+ break;
+ }
+ }
+ return stack.splice(idx, 1)[0];
+ },
+ removeTop: function () {
+ return stack.splice(stack.length - 1, 1)[0];
+ },
+ length: function () {
+ return stack.length;
+ }
+ };
+ }
+ };
+ })
+
+/**
+ * A helper directive for the $modal service. It creates a backdrop element.
+ */
+ .directive('modalBackdrop', ['$timeout', function ($timeout) {
+ return {
+ restrict: 'EA',
+ replace: true,
+ templateUrl: 'template/modal/backdrop.html',
+ link: function (scope) {
+
+ scope.animate = false;
+
+ //trigger CSS transitions
+ $timeout(function () {
+ scope.animate = true;
+ });
+ }
+ };
+ }])
+
+ .directive('modalWindow', ['$modalStack', '$timeout', function ($modalStack, $timeout) {
+ return {
+ restrict: 'EA',
+ scope: {
+ index: '@',
+ animate: '='
+ },
+ replace: true,
+ transclude: true,
+ templateUrl: function(tElement, tAttrs) {
+ return tAttrs.templateUrl || 'template/modal/window.html';
+ },
+ link: function (scope, element, attrs) {
+ element.addClass(attrs.windowClass || '');
+ scope.size = attrs.size;
+
+ $timeout(function () {
+ // trigger CSS transitions
+ scope.animate = true;
+ // focus a freshly-opened modal
+ element[0].focus();
+ });
+
+ scope.close = function (evt) {
+ var modal = $modalStack.getTop();
+ if (modal && modal.value.backdrop && modal.value.backdrop != 'static' && (evt.target === evt.currentTarget)) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ $modalStack.dismiss(modal.key, 'backdrop click');
+ }
+ };
+ }
+ };
+ }])
+
+ .factory('$modalStack', ['$transition', '$timeout', '$document', '$compile', '$rootScope', '$$stackedMap',
+ function ($transition, $timeout, $document, $compile, $rootScope, $$stackedMap) {
+
+ var OPENED_MODAL_CLASS = 'modal-open';
+
+ var backdropDomEl, backdropScope;
+ var openedWindows = $$stackedMap.createNew();
+ var $modalStack = {};
+
+ function backdropIndex() {
+ var topBackdropIndex = -1;
+ var opened = openedWindows.keys();
+ for (var i = 0; i < opened.length; i++) {
+ if (openedWindows.get(opened[i]).value.backdrop) {
+ topBackdropIndex = i;
+ }
+ }
+ return topBackdropIndex;
+ }
+
+ $rootScope.$watch(backdropIndex, function(newBackdropIndex){
+ if (backdropScope) {
+ backdropScope.index = newBackdropIndex;
+ }
+ });
+
+ function removeModalWindow(modalInstance) {
+
+ var body = $document.find('body').eq(0);
+ var modalWindow = openedWindows.get(modalInstance).value;
+
+ //clean up the stack
+ openedWindows.remove(modalInstance);
+
+ //remove window DOM element
+ removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, 300, function() {
+ modalWindow.modalScope.$destroy();
+ body.toggleClass(OPENED_MODAL_CLASS, openedWindows.length() > 0);
+ checkRemoveBackdrop();
+ });
+ }
+
+ function checkRemoveBackdrop() {
+ //remove backdrop if no longer needed
+ if (backdropDomEl && backdropIndex() == -1) {
+ var backdropScopeRef = backdropScope;
+ removeAfterAnimate(backdropDomEl, backdropScope, 150, function () {
+ backdropScopeRef.$destroy();
+ backdropScopeRef = null;
+ });
+ backdropDomEl = undefined;
+ backdropScope = undefined;
+ }
+ }
+
+ function removeAfterAnimate(domEl, scope, emulateTime, done) {
+ // Closing animation
+ scope.animate = false;
+
+ var transitionEndEventName = $transition.transitionEndEventName;
+ if (transitionEndEventName) {
+ // transition out
+ var timeout = $timeout(afterAnimating, emulateTime);
+
+ domEl.bind(transitionEndEventName, function () {
+ $timeout.cancel(timeout);
+ afterAnimating();
+ scope.$apply();
+ });
+ } else {
+ // Ensure this call is async
+ $timeout(afterAnimating, 0);
+ }
+
+ function afterAnimating() {
+ if (afterAnimating.done) {
+ return;
+ }
+ afterAnimating.done = true;
+
+ domEl.remove();
+ if (done) {
+ done();
+ }
+ }
+ }
+
+ $document.bind('keydown', function (evt) {
+ var modal;
+
+ if (evt.which === 27) {
+ modal = openedWindows.top();
+ if (modal && modal.value.keyboard) {
+ evt.preventDefault();
+ $rootScope.$apply(function () {
+ $modalStack.dismiss(modal.key, 'escape key press');
+ });
+ }
+ }
+ });
+
+ $modalStack.open = function (modalInstance, modal) {
+
+ openedWindows.add(modalInstance, {
+ deferred: modal.deferred,
+ modalScope: modal.scope,
+ backdrop: modal.backdrop,
+ keyboard: modal.keyboard
+ });
+
+ var body = $document.find('body').eq(0),
+ currBackdropIndex = backdropIndex();
+
+ if (currBackdropIndex >= 0 && !backdropDomEl) {
+ backdropScope = $rootScope.$new(true);
+ backdropScope.index = currBackdropIndex;
+ backdropDomEl = $compile('<div modal-backdrop></div>')(backdropScope);
+ body.append(backdropDomEl);
+ }
+
+ var angularDomEl = angular.element('<div modal-window></div>');
+ angularDomEl.attr({
+ 'template-url': modal.windowTemplateUrl,
+ 'window-class': modal.windowClass,
+ 'size': modal.size,
+ 'index': openedWindows.length() - 1,
+ 'animate': 'animate'
+ }).html(modal.content);
+
+ var modalDomEl = $compile(angularDomEl)(modal.scope);
+ openedWindows.top().value.modalDomEl = modalDomEl;
+ body.append(modalDomEl);
+ body.addClass(OPENED_MODAL_CLASS);
+ };
+
+ $modalStack.close = function (modalInstance, result) {
+ var modalWindow = openedWindows.get(modalInstance).value;
+ if (modalWindow) {
+ modalWindow.deferred.resolve(result);
+ removeModalWindow(modalInstance);
+ }
+ };
+
+ $modalStack.dismiss = function (modalInstance, reason) {
+ var modalWindow = openedWindows.get(modalInstance).value;
+ if (modalWindow) {
+ modalWindow.deferred.reject(reason);
+ removeModalWindow(modalInstance);
+ }
+ };
+
+ $modalStack.dismissAll = function (reason) {
+ var topModal = this.getTop();
+ while (topModal) {
+ this.dismiss(topModal.key, reason);
+ topModal = this.getTop();
+ }
+ };
+
+ $modalStack.getTop = function () {
+ return openedWindows.top();
+ };
+
+ return $modalStack;
+ }])
+
+ .provider('$modal', function () {
+
+ var $modalProvider = {
+ options: {
+ backdrop: true, //can be also false or 'static'
+ keyboard: true
+ },
+ $get: ['$injector', '$rootScope', '$q', '$http', '$templateCache', '$controller', '$modalStack',
+ function ($injector, $rootScope, $q, $http, $templateCache, $controller, $modalStack) {
+
+ var $modal = {};
+
+ function getTemplatePromise(options) {
+ return options.template ? $q.when(options.template) :
+ $http.get(options.templateUrl, {cache: $templateCache}).then(function (result) {
+ return result.data;
+ });
+ }
+
+ function getResolvePromises(resolves) {
+ var promisesArr = [];
+ angular.forEach(resolves, function (value, key) {
+ if (angular.isFunction(value) || angular.isArray(value)) {
+ promisesArr.push($q.when($injector.invoke(value)));
+ }
+ });
+ return promisesArr;
+ }
+
+ $modal.open = function (modalOptions) {
+
+ var modalResultDeferred = $q.defer();
+ var modalOpenedDeferred = $q.defer();
+
+ //prepare an instance of a modal to be injected into controllers and returned to a caller
+ var modalInstance = {
+ result: modalResultDeferred.promise,
+ opened: modalOpenedDeferred.promise,
+ close: function (result) {
+ $modalStack.close(modalInstance, result);
+ },
+ dismiss: function (reason) {
+ $modalStack.dismiss(modalInstance, reason);
+ }
+ };
+
+ //merge and clean up options
+ modalOptions = angular.extend({}, $modalProvider.options, modalOptions);
+ modalOptions.resolve = modalOptions.resolve || {};
+
+ //verify options
+ if (!modalOptions.template && !modalOptions.templateUrl) {
+ throw new Error('One of template or templateUrl options is required.');
+ }
+
+ var templateAndResolvePromise =
+ $q.all([getTemplatePromise(modalOptions)].concat(getResolvePromises(modalOptions.resolve)));
+
+
+ templateAndResolvePromise.then(function resolveSuccess(tplAndVars) {
+
+ var modalScope = (modalOptions.scope || $rootScope).$new();
+ modalScope.$close = modalInstance.close;
+ modalScope.$dismiss = modalInstance.dismiss;
+
+ var ctrlInstance, ctrlLocals = {};
+ var resolveIter = 1;
+
+ //controllers
+ if (modalOptions.controller) {
+ ctrlLocals.$scope = modalScope;
+ ctrlLocals.$modalInstance = modalInstance;
+ angular.forEach(modalOptions.resolve, function (value, key) {
+ ctrlLocals[key] = tplAndVars[resolveIter++];
+ });
+
+ ctrlInstance = $controller(modalOptions.controller, ctrlLocals);
+ }
+
+ $modalStack.open(modalInstance, {
+ scope: modalScope,
+ deferred: modalResultDeferred,
+ content: tplAndVars[0],
+ backdrop: modalOptions.backdrop,
+ keyboard: modalOptions.keyboard,
+ windowClass: modalOptions.windowClass,
+ windowTemplateUrl: modalOptions.windowTemplateUrl,
+ size: modalOptions.size
+ });
+
+ }, function resolveError(reason) {
+ modalResultDeferred.reject(reason);
+ });
+
+ templateAndResolvePromise.then(function () {
+ modalOpenedDeferred.resolve(true);
+ }, function () {
+ modalOpenedDeferred.reject(false);
+ });
+
+ return modalInstance;
+ };
+
+ return $modal;
+ }]
+ };
+
+ return $modalProvider;
+ });
+
+angular.module('ui.bootstrap.pagination', [])
+
+.controller('PaginationController', ['$scope', '$attrs', '$parse', function ($scope, $attrs, $parse) {
+ var self = this,
+ ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl
+ setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop;
+
+ this.init = function(ngModelCtrl_, config) {
+ ngModelCtrl = ngModelCtrl_;
+ this.config = config;
+
+ ngModelCtrl.$render = function() {
+ self.render();
+ };
+
+ if ($attrs.itemsPerPage) {
+ $scope.$parent.$watch($parse($attrs.itemsPerPage), function(value) {
+ self.itemsPerPage = parseInt(value, 10);
+ $scope.totalPages = self.calculateTotalPages();
+ });
+ } else {
+ this.itemsPerPage = config.itemsPerPage;
+ }
+ };
+
+ this.calculateTotalPages = function() {
+ var totalPages = this.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / this.itemsPerPage);
+ return Math.max(totalPages || 0, 1);
+ };
+
+ this.render = function() {
+ $scope.page = parseInt(ngModelCtrl.$viewValue, 10) || 1;
+ };
+
+ $scope.selectPage = function(page) {
+ if ( $scope.page !== page && page > 0 && page <= $scope.totalPages) {
+ ngModelCtrl.$setViewValue(page);
+ ngModelCtrl.$render();
+ }
+ };
+
+ $scope.getText = function( key ) {
+ return $scope[key + 'Text'] || self.config[key + 'Text'];
+ };
+ $scope.noPrevious = function() {
+ return $scope.page === 1;
+ };
+ $scope.noNext = function() {
+ return $scope.page === $scope.totalPages;
+ };
+
+ $scope.$watch('totalItems', function() {
+ $scope.totalPages = self.calculateTotalPages();
+ });
+
+ $scope.$watch('totalPages', function(value) {
+ setNumPages($scope.$parent, value); // Readonly variable
+
+ if ( $scope.page > value ) {
+ $scope.selectPage(value);
+ } else {
+ ngModelCtrl.$render();
+ }
+ });
+}])
+
+.constant('paginationConfig', {
+ itemsPerPage: 10,
+ boundaryLinks: false,
+ directionLinks: true,
+ firstText: 'First',
+ previousText: 'Previous',
+ nextText: 'Next',
+ lastText: 'Last',
+ rotate: true
+})
+
+.directive('pagination', ['$parse', 'paginationConfig', function($parse, paginationConfig) {
+ return {
+ restrict: 'EA',
+ scope: {
+ totalItems: '=',
+ firstText: '@',
+ previousText: '@',
+ nextText: '@',
+ lastText: '@'
+ },
+ require: ['pagination', '?ngModel'],
+ controller: 'PaginationController',
+ templateUrl: 'template/pagination/pagination.html',
+ replace: true,
+ link: function(scope, element, attrs, ctrls) {
+ var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ if (!ngModelCtrl) {
+ return; // do nothing if no ng-model
+ }
+
+ // Setup configuration parameters
+ var maxSize = angular.isDefined(attrs.maxSize) ? scope.$parent.$eval(attrs.maxSize) : paginationConfig.maxSize,
+ rotate = angular.isDefined(attrs.rotate) ? scope.$parent.$eval(attrs.rotate) : paginationConfig.rotate;
+ scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : paginationConfig.boundaryLinks;
+ scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : paginationConfig.directionLinks;
+
+ paginationCtrl.init(ngModelCtrl, paginationConfig);
+
+ if (attrs.maxSize) {
+ scope.$parent.$watch($parse(attrs.maxSize), function(value) {
+ maxSize = parseInt(value, 10);
+ paginationCtrl.render();
+ });
+ }
+
+ // Create page object used in template
+ function makePage(number, text, isActive) {
+ return {
+ number: number,
+ text: text,
+ active: isActive
+ };
+ }
+
+ function getPages(currentPage, totalPages) {
+ var pages = [];
+
+ // Default page limits
+ var startPage = 1, endPage = totalPages;
+ var isMaxSized = ( angular.isDefined(maxSize) && maxSize < totalPages );
+
+ // recompute if maxSize
+ if ( isMaxSized ) {
+ if ( rotate ) {
+ // Current page is displayed in the middle of the visible ones
+ startPage = Math.max(currentPage - Math.floor(maxSize/2), 1);
+ endPage = startPage + maxSize - 1;
+
+ // Adjust if limit is exceeded
+ if (endPage > totalPages) {
+ endPage = totalPages;
+ startPage = endPage - maxSize + 1;
+ }
+ } else {
+ // Visible pages are paginated with maxSize
+ startPage = ((Math.ceil(currentPage / maxSize) - 1) * maxSize) + 1;
+
+ // Adjust last page if limit is exceeded
+ endPage = Math.min(startPage + maxSize - 1, totalPages);
+ }
+ }
+
+ // Add page number links
+ for (var number = startPage; number <= endPage; number++) {
+ var page = makePage(number, number, number === currentPage);
+ pages.push(page);
+ }
+
+ // Add links to move between page sets
+ if ( isMaxSized && ! rotate ) {
+ if ( startPage > 1 ) {
+ var previousPageSet = makePage(startPage - 1, '...', false);
+ pages.unshift(previousPageSet);
+ }
+
+ if ( endPage < totalPages ) {
+ var nextPageSet = makePage(endPage + 1, '...', false);
+ pages.push(nextPageSet);
+ }
+ }
+
+ return pages;
+ }
+
+ var originalRender = paginationCtrl.render;
+ paginationCtrl.render = function() {
+ originalRender();
+ if (scope.page > 0 && scope.page <= scope.totalPages) {
+ scope.pages = getPages(scope.page, scope.totalPages);
+ }
+ };
+ }
+ };
+}])
+
+.constant('pagerConfig', {
+ itemsPerPage: 10,
+ previousText: '« Previous',
+ nextText: 'Next »',
+ align: true
+})
+
+.directive('pager', ['pagerConfig', function(pagerConfig) {
+ return {
+ restrict: 'EA',
+ scope: {
+ totalItems: '=',
+ previousText: '@',
+ nextText: '@'
+ },
+ require: ['pager', '?ngModel'],
+ controller: 'PaginationController',
+ templateUrl: 'template/pagination/pager.html',
+ replace: true,
+ link: function(scope, element, attrs, ctrls) {
+ var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ if (!ngModelCtrl) {
+ return; // do nothing if no ng-model
+ }
+
+ scope.align = angular.isDefined(attrs.align) ? scope.$parent.$eval(attrs.align) : pagerConfig.align;
+ paginationCtrl.init(ngModelCtrl, pagerConfig);
+ }
+ };
+}]);
+
+/**
+ * The following features are still outstanding: animation as a
+ * function, placement as a function, inside, support for more triggers than
+ * just mouse enter/leave, html tooltips, and selector delegation.
+ */
+angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap.bindHtml' ] )
+
+/**
+ * The $tooltip service creates tooltip- and popover-like directives as well as
+ * houses global options for them.
+ */
+.provider( '$tooltip', function () {
+ // The default options tooltip and popover.
+ var defaultOptions = {
+ placement: 'top',
+ animation: true,
+ popupDelay: 0
+ };
+
+ // Default hide triggers for each show trigger
+ var triggerMap = {
+ 'mouseenter': 'mouseleave',
+ 'click': 'click',
+ 'focus': 'blur'
+ };
+
+ // The options specified to the provider globally.
+ var globalOptions = {};
+
+ /**
+ * `options({})` allows global configuration of all tooltips in the
+ * application.
+ *
+ * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {
+ * // place tooltips left instead of top by default
+ * $tooltipProvider.options( { placement: 'left' } );
+ * });
+ */
+ this.options = function( value ) {
+ angular.extend( globalOptions, value );
+ };
+
+ /**
+ * This allows you to extend the set of trigger mappings available. E.g.:
+ *
+ * $tooltipProvider.setTriggers( 'openTrigger': 'closeTrigger' );
+ */
+ this.setTriggers = function setTriggers ( triggers ) {
+ angular.extend( triggerMap, triggers );
+ };
+
+ /**
+ * This is a helper function for translating camel-case to snake-case.
+ */
+ function snake_case(name){
+ var regexp = /[A-Z]/g;
+ var separator = '-';
+ return name.replace(regexp, function(letter, pos) {
+ return (pos ? separator : '') + letter.toLowerCase();
+ });
+ }
+
+ /**
+ * Returns the actual instance of the $tooltip service.
+ * TODO support multiple triggers
+ */
+ this.$get = [ '$window', '$compile', '$timeout', '$parse', '$document', '$position', '$interpolate', function ( $window, $compile, $timeout, $parse, $document, $position, $interpolate ) {
+ return function $tooltip ( type, prefix, defaultTriggerShow ) {
+ var options = angular.extend( {}, defaultOptions, globalOptions );
+
+ /**
+ * Returns an object of show and hide triggers.
+ *
+ * If a trigger is supplied,
+ * it is used to show the tooltip; otherwise, it will use the `trigger`
+ * option passed to the `$tooltipProvider.options` method; else it will
+ * default to the trigger supplied to this directive factory.
+ *
+ * The hide trigger is based on the show trigger. If the `trigger` option
+ * was passed to the `$tooltipProvider.options` method, it will use the
+ * mapped trigger from `triggerMap` or the passed trigger if the map is
+ * undefined; otherwise, it uses the `triggerMap` value of the show
+ * trigger; else it will just use the show trigger.
+ */
+ function getTriggers ( trigger ) {
+ var show = trigger || options.trigger || defaultTriggerShow;
+ var hide = triggerMap[show] || show;
+ return {
+ show: show,
+ hide: hide
+ };
+ }
+
+ var directiveName = snake_case( type );
+
+ var startSym = $interpolate.startSymbol();
+ var endSym = $interpolate.endSymbol();
+ var template =
+ '<div '+ directiveName +'-popup '+
+ 'title="'+startSym+'tt_title'+endSym+'" '+
+ 'content="'+startSym+'tt_content'+endSym+'" '+
+ 'placement="'+startSym+'tt_placement'+endSym+'" '+
+ 'animation="tt_animation" '+
+ 'is-open="tt_isOpen"'+
+ '>'+
+ '</div>';
+
+ return {
+ restrict: 'EA',
+ scope: true,
+ compile: function (tElem, tAttrs) {
+ var tooltipLinker = $compile( template );
+
+ return function link ( scope, element, attrs ) {
+ var tooltip;
+ var transitionTimeout;
+ var popupTimeout;
+ var appendToBody = angular.isDefined( options.appendToBody ) ? options.appendToBody : false;
+ var triggers = getTriggers( undefined );
+ var hasEnableExp = angular.isDefined(attrs[prefix+'Enable']);
+
+ var positionTooltip = function () {
+
+ var ttPosition = $position.positionElements(element, tooltip, scope.tt_placement, appendToBody);
+ ttPosition.top += 'px';
+ ttPosition.left += 'px';
+
+ // Now set the calculated positioning.
+ tooltip.css( ttPosition );
+ };
+
+ // By default, the tooltip is not open.
+ // TODO add ability to start tooltip opened
+ scope.tt_isOpen = false;
+
+ function toggleTooltipBind () {
+ if ( ! scope.tt_isOpen ) {
+ showTooltipBind();
+ } else {
+ hideTooltipBind();
+ }
+ }
+
+ // Show the tooltip with delay if specified, otherwise show it immediately
+ function showTooltipBind() {
+ if(hasEnableExp && !scope.$eval(attrs[prefix+'Enable'])) {
+ return;
+ }
+ if ( scope.tt_popupDelay ) {
+ // Do nothing if the tooltip was already scheduled to pop-up.
+ // This happens if show is triggered multiple times before any hide is triggered.
+ if (!popupTimeout) {
+ popupTimeout = $timeout( show, scope.tt_popupDelay, false );
+ popupTimeout.then(function(reposition){reposition();});
+ }
+ } else {
+ show()();
+ }
+ }
+
+ function hideTooltipBind () {
+ scope.$apply(function () {
+ hide();
+ });
+ }
+
+ // Show the tooltip popup element.
+ function show() {
+
+ popupTimeout = null;
+
+ // If there is a pending remove transition, we must cancel it, lest the
+ // tooltip be mysteriously removed.
+ if ( transitionTimeout ) {
+ $timeout.cancel( transitionTimeout );
+ transitionTimeout = null;
+ }
+
+ // Don't show empty tooltips.
+ if ( ! scope.tt_content ) {
+ return angular.noop;
+ }
+
+ createTooltip();
+
+ // Set the initial positioning.
+ tooltip.css({ top: 0, left: 0, display: 'block' });
+
+ // Now we add it to the DOM because need some info about it. But it's not
+ // visible yet anyway.
+ if ( appendToBody ) {
+ $document.find( 'body' ).append( tooltip );
+ } else {
+ element.after( tooltip );
+ }
+
+ positionTooltip();
+
+ // And show the tooltip.
+ scope.tt_isOpen = true;
+ scope.$digest(); // digest required as $apply is not called
+
+ // Return positioning function as promise callback for correct
+ // positioning after draw.
+ return positionTooltip;
+ }
+
+ // Hide the tooltip popup element.
+ function hide() {
+ // First things first: we don't show it anymore.
+ scope.tt_isOpen = false;
+
+ //if tooltip is going to be shown after delay, we must cancel this
+ $timeout.cancel( popupTimeout );
+ popupTimeout = null;
+
+ // And now we remove it from the DOM. However, if we have animation, we
+ // need to wait for it to expire beforehand.
+ // FIXME: this is a placeholder for a port of the transitions library.
+ if ( scope.tt_animation ) {
+ if (!transitionTimeout) {
+ transitionTimeout = $timeout(removeTooltip, 500);
+ }
+ } else {
+ removeTooltip();
+ }
+ }
+
+ function createTooltip() {
+ // There can only be one tooltip element per directive shown at once.
+ if (tooltip) {
+ removeTooltip();
+ }
+ tooltip = tooltipLinker(scope, function () {});
+
+ // Get contents rendered into the tooltip
+ scope.$digest();
+ }
+
+ function removeTooltip() {
+ transitionTimeout = null;
+ if (tooltip) {
+ tooltip.remove();
+ tooltip = null;
+ }
+ }
+
+ /**
+ * Observe the relevant attributes.
+ */
+ attrs.$observe( type, function ( val ) {
+ scope.tt_content = val;
+
+ if (!val && scope.tt_isOpen ) {
+ hide();
+ }
+ });
+
+ attrs.$observe( prefix+'Title', function ( val ) {
+ scope.tt_title = val;
+ });
+
+ attrs.$observe( prefix+'Placement', function ( val ) {
+ scope.tt_placement = angular.isDefined( val ) ? val : options.placement;
+ });
+
+ attrs.$observe( prefix+'PopupDelay', function ( val ) {
+ var delay = parseInt( val, 10 );
+ scope.tt_popupDelay = ! isNaN(delay) ? delay : options.popupDelay;
+ });
+
+ var unregisterTriggers = function () {
+ element.unbind(triggers.show, showTooltipBind);
+ element.unbind(triggers.hide, hideTooltipBind);
+ };
+
+ attrs.$observe( prefix+'Trigger', function ( val ) {
+ unregisterTriggers();
+
+ triggers = getTriggers( val );
+
+ if ( triggers.show === triggers.hide ) {
+ element.bind( triggers.show, toggleTooltipBind );
+ } else {
+ element.bind( triggers.show, showTooltipBind );
+ element.bind( triggers.hide, hideTooltipBind );
+ }
+ });
+
+ var animation = scope.$eval(attrs[prefix + 'Animation']);
+ scope.tt_animation = angular.isDefined(animation) ? !!animation : options.animation;
+
+ attrs.$observe( prefix+'AppendToBody', function ( val ) {
+ appendToBody = angular.isDefined( val ) ? $parse( val )( scope ) : appendToBody;
+ });
+
+ // if a tooltip is attached to <body> we need to remove it on
+ // location change as its parent scope will probably not be destroyed
+ // by the change.
+ if ( appendToBody ) {
+ scope.$on('$locationChangeSuccess', function closeTooltipOnLocationChangeSuccess () {
+ if ( scope.tt_isOpen ) {
+ hide();
+ }
+ });
+ }
+
+ // Make sure tooltip is destroyed and removed.
+ scope.$on('$destroy', function onDestroyTooltip() {
+ $timeout.cancel( transitionTimeout );
+ $timeout.cancel( popupTimeout );
+ unregisterTriggers();
+ removeTooltip();
+ });
+ };
+ }
+ };
+ };
+ }];
+})
+
+.directive( 'tooltipPopup', function () {
+ return {
+ restrict: 'EA',
+ replace: true,
+ scope: { content: '@', placement: '@', animation: '&', isOpen: '&' },
+ templateUrl: 'template/tooltip/tooltip-popup.html'
+ };
+})
+
+.directive( 'tooltip', [ '$tooltip', function ( $tooltip ) {
+ return $tooltip( 'tooltip', 'tooltip', 'mouseenter' );
+}])
+
+.directive( 'tooltipHtmlUnsafePopup', function () {
+ return {
+ restrict: 'EA',
+ replace: true,
+ scope: { content: '@', placement: '@', animation: '&', isOpen: '&' },
+ templateUrl: 'template/tooltip/tooltip-html-unsafe-popup.html'
+ };
+})
+
+.directive( 'tooltipHtmlUnsafe', [ '$tooltip', function ( $tooltip ) {
+ return $tooltip( 'tooltipHtmlUnsafe', 'tooltip', 'mouseenter' );
+}]);
+
+/**
+ * The following features are still outstanding: popup delay, animation as a
+ * function, placement as a function, inside, support for more triggers than
+ * just mouse enter/leave, html popovers, and selector delegatation.
+ */
+angular.module( 'ui.bootstrap.popover', [ 'ui.bootstrap.tooltip' ] )
+
+.directive( 'popoverPopup', function () {
+ return {
+ restrict: 'EA',
+ replace: true,
+ scope: { title: '@', content: '@', placement: '@', animation: '&', isOpen: '&' },
+ templateUrl: 'template/popover/popover.html'
+ };
+})
+
+.directive( 'popover', [ '$tooltip', function ( $tooltip ) {
+ return $tooltip( 'popover', 'popover', 'click' );
+}]);
+
+angular.module('ui.bootstrap.progressbar', [])
+
+.constant('progressConfig', {
+ animate: true,
+ max: 100
+})
+
+.controller('ProgressController', ['$scope', '$attrs', 'progressConfig', function($scope, $attrs, progressConfig) {
+ var self = this,
+ animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate;
+
+ this.bars = [];
+ $scope.max = angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : progressConfig.max;
+
+ this.addBar = function(bar, element) {
+ if ( !animate ) {
+ element.css({'transition': 'none'});
+ }
+
+ this.bars.push(bar);
+
+ bar.$watch('value', function( value ) {
+ bar.percent = +(100 * value / $scope.max).toFixed(2);
+ });
+
+ bar.$on('$destroy', function() {
+ element = null;
+ self.removeBar(bar);
+ });
+ };
+
+ this.removeBar = function(bar) {
+ this.bars.splice(this.bars.indexOf(bar), 1);
+ };
+}])
+
+.directive('progress', function() {
+ return {
+ restrict: 'EA',
+ replace: true,
+ transclude: true,
+ controller: 'ProgressController',
+ require: 'progress',
+ scope: {},
+ templateUrl: 'template/progressbar/progress.html'
+ };
+})
+
+.directive('bar', function() {
+ return {
+ restrict: 'EA',
+ replace: true,
+ transclude: true,
+ require: '^progress',
+ scope: {
+ value: '=',
+ type: '@'
+ },
+ templateUrl: 'template/progressbar/bar.html',
+ link: function(scope, element, attrs, progressCtrl) {
+ progressCtrl.addBar(scope, element);
+ }
+ };
+})
+
+.directive('progressbar', function() {
+ return {
+ restrict: 'EA',
+ replace: true,
+ transclude: true,
+ controller: 'ProgressController',
+ scope: {
+ value: '=',
+ type: '@'
+ },
+ templateUrl: 'template/progressbar/progressbar.html',
+ link: function(scope, element, attrs, progressCtrl) {
+ progressCtrl.addBar(scope, angular.element(element.children()[0]));
+ }
+ };
+});
+angular.module('ui.bootstrap.rating', [])
+
+.constant('ratingConfig', {
+ max: 5,
+ stateOn: null,
+ stateOff: null
+})
+
+.controller('RatingController', ['$scope', '$attrs', 'ratingConfig', function($scope, $attrs, ratingConfig) {
+ var ngModelCtrl = { $setViewValue: angular.noop };
+
+ this.init = function(ngModelCtrl_) {
+ ngModelCtrl = ngModelCtrl_;
+ ngModelCtrl.$render = this.render;
+
+ this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn;
+ this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff;
+
+ var ratingStates = angular.isDefined($attrs.ratingStates) ? $scope.$parent.$eval($attrs.ratingStates) :
+ new Array( angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max );
+ $scope.range = this.buildTemplateObjects(ratingStates);
+ };
+
+ this.buildTemplateObjects = function(states) {
+ for (var i = 0, n = states.length; i < n; i++) {
+ states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff }, states[i]);
+ }
+ return states;
+ };
+
+ $scope.rate = function(value) {
+ if ( !$scope.readonly && value >= 0 && value <= $scope.range.length ) {
+ ngModelCtrl.$setViewValue(value);
+ ngModelCtrl.$render();
+ }
+ };
+
+ $scope.enter = function(value) {
+ if ( !$scope.readonly ) {
+ $scope.value = value;
+ }
+ $scope.onHover({value: value});
+ };
+
+ $scope.reset = function() {
+ $scope.value = ngModelCtrl.$viewValue;
+ $scope.onLeave();
+ };
+
+ $scope.onKeydown = function(evt) {
+ if (/(37|38|39|40)/.test(evt.which)) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ $scope.rate( $scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1) );
+ }
+ };
+
+ this.render = function() {
+ $scope.value = ngModelCtrl.$viewValue;
+ };
+}])
+
+.directive('rating', function() {
+ return {
+ restrict: 'EA',
+ require: ['rating', 'ngModel'],
+ scope: {
+ readonly: '=?',
+ onHover: '&',
+ onLeave: '&'
+ },
+ controller: 'RatingController',
+ templateUrl: 'template/rating/rating.html',
+ replace: true,
+ link: function(scope, element, attrs, ctrls) {
+ var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ if ( ngModelCtrl ) {
+ ratingCtrl.init( ngModelCtrl );
+ }
+ }
+ };
+});
+
+/**
+ * @ngdoc overview
+ * @name ui.bootstrap.tabs
+ *
+ * @description
+ * AngularJS version of the tabs directive.
+ */
+
+angular.module('ui.bootstrap.tabs', [])
+
+.controller('TabsetController', ['$scope', function TabsetCtrl($scope) {
+ var ctrl = this,
+ tabs = ctrl.tabs = $scope.tabs = [];
+
+ ctrl.select = function(selectedTab) {
+ angular.forEach(tabs, function(tab) {
+ if (tab.active && tab !== selectedTab) {
+ tab.active = false;
+ tab.onDeselect();
+ }
+ });
+ selectedTab.active = true;
+ selectedTab.onSelect();
+ };
+
+ ctrl.addTab = function addTab(tab) {
+ tabs.push(tab);
+ // we can't run the select function on the first tab
+ // since that would select it twice
+ if (tabs.length === 1) {
+ tab.active = true;
+ } else if (tab.active) {
+ ctrl.select(tab);
+ }
+ };
+
+ ctrl.removeTab = function removeTab(tab) {
+ var index = tabs.indexOf(tab);
+ //Select a new tab if the tab to be removed is selected
+ if (tab.active && tabs.length > 1) {
+ //If this is the last tab, select the previous tab. else, the next tab.
+ var newActiveIndex = index == tabs.length - 1 ? index - 1 : index + 1;
+ ctrl.select(tabs[newActiveIndex]);
+ }
+ tabs.splice(index, 1);
+ };
+}])
+
+/**
+ * @ngdoc directive
+ * @name ui.bootstrap.tabs.directive:tabset
+ * @restrict EA
+ *
+ * @description
+ * Tabset is the outer container for the tabs directive
+ *
+ * @param {boolean=} vertical Whether or not to use vertical styling for the tabs.
+ * @param {boolean=} justified Whether or not to use justified styling for the tabs.
+ *
+ * @example
+<example module="ui.bootstrap">
+ <file name="index.html">
+ <tabset>
+ <tab heading="Tab 1"><b>First</b> Content!</tab>
+ <tab heading="Tab 2"><i>Second</i> Content!</tab>
+ </tabset>
+ <hr />
+ <tabset vertical="true">
+ <tab heading="Vertical Tab 1"><b>First</b> Vertical Content!</tab>
+ <tab heading="Vertical Tab 2"><i>Second</i> Vertical Content!</tab>
+ </tabset>
+ <tabset justified="true">
+ <tab heading="Justified Tab 1"><b>First</b> Justified Content!</tab>
+ <tab heading="Justified Tab 2"><i>Second</i> Justified Content!</tab>
+ </tabset>
+ </file>
+</example>
+ */
+.directive('tabset', function() {
+ return {
+ restrict: 'EA',
+ transclude: true,
+ replace: true,
+ scope: {
+ type: '@'
+ },
+ controller: 'TabsetController',
+ templateUrl: 'template/tabs/tabset.html',
+ link: function(scope, element, attrs) {
+ scope.vertical = angular.isDefined(attrs.vertical) ? scope.$parent.$eval(attrs.vertical) : false;
+ scope.justified = angular.isDefined(attrs.justified) ? scope.$parent.$eval(attrs.justified) : false;
+ }
+ };
+})
+
+/**
+ * @ngdoc directive
+ * @name ui.bootstrap.tabs.directive:tab
+ * @restrict EA
+ *
+ * @param {string=} heading The visible heading, or title, of the tab. Set HTML headings with {@link ui.bootstrap.tabs.directive:tabHeading tabHeading}.
+ * @param {string=} select An expression to evaluate when the tab is selected.
+ * @param {boolean=} active A binding, telling whether or not this tab is selected.
+ * @param {boolean=} disabled A binding, telling whether or not this tab is disabled.
+ *
+ * @description
+ * Creates a tab with a heading and content. Must be placed within a {@link ui.bootstrap.tabs.directive:tabset tabset}.
+ *
+ * @example
+<example module="ui.bootstrap">
+ <file name="index.html">
+ <div ng-controller="TabsDemoCtrl">
+ <button class="btn btn-small" ng-click="items[0].active = true">
+ Select item 1, using active binding
+ </button>
+ <button class="btn btn-small" ng-click="items[1].disabled = !items[1].disabled">
+ Enable/disable item 2, using disabled binding
+ </button>
+ <br />
+ <tabset>
+ <tab heading="Tab 1">First Tab</tab>
+ <tab select="alertMe()">
+ <tab-heading><i class="icon-bell"></i> Alert me!</tab-heading>
+ Second Tab, with alert callback and html heading!
+ </tab>
+ <tab ng-repeat="item in items"
+ heading="{{item.title}}"
+ disabled="item.disabled"
+ active="item.active">
+ {{item.content}}
+ </tab>
+ </tabset>
+ </div>
+ </file>
+ <file name="script.js">
+ function TabsDemoCtrl($scope) {
+ $scope.items = [
+ { title:"Dynamic Title 1", content:"Dynamic Item 0" },
+ { title:"Dynamic Title 2", content:"Dynamic Item 1", disabled: true }
+ ];
+
+ $scope.alertMe = function() {
+ setTimeout(function() {
+ alert("You've selected the alert tab!");
+ });
+ };
+ };
+ </file>
+</example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ui.bootstrap.tabs.directive:tabHeading
+ * @restrict EA
+ *
+ * @description
+ * Creates an HTML heading for a {@link ui.bootstrap.tabs.directive:tab tab}. Must be placed as a child of a tab element.
+ *
+ * @example
+<example module="ui.bootstrap">
+ <file name="index.html">
+ <tabset>
+ <tab>
+ <tab-heading><b>HTML</b> in my titles?!</tab-heading>
+ And some content, too!
+ </tab>
+ <tab>
+ <tab-heading><i class="icon-heart"></i> Icon heading?!?</tab-heading>
+ That's right.
+ </tab>
+ </tabset>
+ </file>
+</example>
+ */
+.directive('tab', ['$parse', function($parse) {
+ return {
+ require: '^tabset',
+ restrict: 'EA',
+ replace: true,
+ templateUrl: 'template/tabs/tab.html',
+ transclude: true,
+ scope: {
+ active: '=?',
+ heading: '@',
+ onSelect: '&select', //This callback is called in contentHeadingTransclude
+ //once it inserts the tab's content into the dom
+ onDeselect: '&deselect'
+ },
+ controller: function() {
+ //Empty controller so other directives can require being 'under' a tab
+ },
+ compile: function(elm, attrs, transclude) {
+ return function postLink(scope, elm, attrs, tabsetCtrl) {
+ scope.$watch('active', function(active) {
+ if (active) {
+ tabsetCtrl.select(scope);
+ }
+ });
+
+ scope.disabled = false;
+ if ( attrs.disabled ) {
+ scope.$parent.$watch($parse(attrs.disabled), function(value) {
+ scope.disabled = !! value;
+ });
+ }
+
+ scope.select = function() {
+ if ( !scope.disabled ) {
+ scope.active = true;
+ }
+ };
+
+ tabsetCtrl.addTab(scope);
+ scope.$on('$destroy', function() {
+ tabsetCtrl.removeTab(scope);
+ });
+
+ //We need to transclude later, once the content container is ready.
+ //when this link happens, we're inside a tab heading.
+ scope.$transcludeFn = transclude;
+ };
+ }
+ };
+}])
+
+.directive('tabHeadingTransclude', [function() {
+ return {
+ restrict: 'A',
+ require: '^tab',
+ link: function(scope, elm, attrs, tabCtrl) {
+ scope.$watch('headingElement', function updateHeadingElement(heading) {
+ if (heading) {
+ elm.html('');
+ elm.append(heading);
+ }
+ });
+ }
+ };
+}])
+
+.directive('tabContentTransclude', function() {
+ return {
+ restrict: 'A',
+ require: '^tabset',
+ link: function(scope, elm, attrs) {
+ var tab = scope.$eval(attrs.tabContentTransclude);
+
+ //Now our tab is ready to be transcluded: both the tab heading area
+ //and the tab content area are loaded. Transclude 'em both.
+ tab.$transcludeFn(tab.$parent, function(contents) {
+ angular.forEach(contents, function(node) {
+ if (isTabHeading(node)) {
+ //Let tabHeadingTransclude know.
+ tab.headingElement = node;
+ } else {
+ elm.append(node);
+ }
+ });
+ });
+ }
+ };
+ function isTabHeading(node) {
+ return node.tagName && (
+ node.hasAttribute('tab-heading') ||
+ node.hasAttribute('data-tab-heading') ||
+ node.tagName.toLowerCase() === 'tab-heading' ||
+ node.tagName.toLowerCase() === 'data-tab-heading'
+ );
+ }
+})
+
+;
+
+angular.module('ui.bootstrap.timepicker', [])
+
+.constant('timepickerConfig', {
+ hourStep: 1,
+ minuteStep: 1,
+ showMeridian: true,
+ meridians: null,
+ readonlyInput: false,
+ mousewheel: true
+})
+
+.controller('TimepickerController', ['$scope', '$attrs', '$parse', '$log', '$locale', 'timepickerConfig', function($scope, $attrs, $parse, $log, $locale, timepickerConfig) {
+ var selected = new Date(),
+ ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl
+ meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS;
+
+ this.init = function( ngModelCtrl_, inputs ) {
+ ngModelCtrl = ngModelCtrl_;
+ ngModelCtrl.$render = this.render;
+
+ var hoursInputEl = inputs.eq(0),
+ minutesInputEl = inputs.eq(1);
+
+ var mousewheel = angular.isDefined($attrs.mousewheel) ? $scope.$parent.$eval($attrs.mousewheel) : timepickerConfig.mousewheel;
+ if ( mousewheel ) {
+ this.setupMousewheelEvents( hoursInputEl, minutesInputEl );
+ }
+
+ $scope.readonlyInput = angular.isDefined($attrs.readonlyInput) ? $scope.$parent.$eval($attrs.readonlyInput) : timepickerConfig.readonlyInput;
+ this.setupInputEvents( hoursInputEl, minutesInputEl );
+ };
+
+ var hourStep = timepickerConfig.hourStep;
+ if ($attrs.hourStep) {
+ $scope.$parent.$watch($parse($attrs.hourStep), function(value) {
+ hourStep = parseInt(value, 10);
+ });
+ }
+
+ var minuteStep = timepickerConfig.minuteStep;
+ if ($attrs.minuteStep) {
+ $scope.$parent.$watch($parse($attrs.minuteStep), function(value) {
+ minuteStep = parseInt(value, 10);
+ });
+ }
+
+ // 12H / 24H mode
+ $scope.showMeridian = timepickerConfig.showMeridian;
+ if ($attrs.showMeridian) {
+ $scope.$parent.$watch($parse($attrs.showMeridian), function(value) {
+ $scope.showMeridian = !!value;
+
+ if ( ngModelCtrl.$error.time ) {
+ // Evaluate from template
+ var hours = getHoursFromTemplate(), minutes = getMinutesFromTemplate();
+ if (angular.isDefined( hours ) && angular.isDefined( minutes )) {
+ selected.setHours( hours );
+ refresh();
+ }
+ } else {
+ updateTemplate();
+ }
+ });
+ }
+
+ // Get $scope.hours in 24H mode if valid
+ function getHoursFromTemplate ( ) {
+ var hours = parseInt( $scope.hours, 10 );
+ var valid = ( $scope.showMeridian ) ? (hours > 0 && hours < 13) : (hours >= 0 && hours < 24);
+ if ( !valid ) {
+ return undefined;
+ }
+
+ if ( $scope.showMeridian ) {
+ if ( hours === 12 ) {
+ hours = 0;
+ }
+ if ( $scope.meridian === meridians[1] ) {
+ hours = hours + 12;
+ }
+ }
+ return hours;
+ }
+
+ function getMinutesFromTemplate() {
+ var minutes = parseInt($scope.minutes, 10);
+ return ( minutes >= 0 && minutes < 60 ) ? minutes : undefined;
+ }
+
+ function pad( value ) {
+ return ( angular.isDefined(value) && value.toString().length < 2 ) ? '0' + value : value;
+ }
+
+ // Respond on mousewheel spin
+ this.setupMousewheelEvents = function( hoursInputEl, minutesInputEl ) {
+ var isScrollingUp = function(e) {
+ if (e.originalEvent) {
+ e = e.originalEvent;
+ }
+ //pick correct delta variable depending on event
+ var delta = (e.wheelDelta) ? e.wheelDelta : -e.deltaY;
+ return (e.detail || delta > 0);
+ };
+
+ hoursInputEl.bind('mousewheel wheel', function(e) {
+ $scope.$apply( (isScrollingUp(e)) ? $scope.incrementHours() : $scope.decrementHours() );
+ e.preventDefault();
+ });
+
+ minutesInputEl.bind('mousewheel wheel', function(e) {
+ $scope.$apply( (isScrollingUp(e)) ? $scope.incrementMinutes() : $scope.decrementMinutes() );
+ e.preventDefault();
+ });
+
+ };
+
+ this.setupInputEvents = function( hoursInputEl, minutesInputEl ) {
+ if ( $scope.readonlyInput ) {
+ $scope.updateHours = angular.noop;
+ $scope.updateMinutes = angular.noop;
+ return;
+ }
+
+ var invalidate = function(invalidHours, invalidMinutes) {
+ ngModelCtrl.$setViewValue( null );
+ ngModelCtrl.$setValidity('time', false);
+ if (angular.isDefined(invalidHours)) {
+ $scope.invalidHours = invalidHours;
+ }
+ if (angular.isDefined(invalidMinutes)) {
+ $scope.invalidMinutes = invalidMinutes;
+ }
+ };
+
+ $scope.updateHours = function() {
+ var hours = getHoursFromTemplate();
+
+ if ( angular.isDefined(hours) ) {
+ selected.setHours( hours );
+ refresh( 'h' );
+ } else {
+ invalidate(true);
+ }
+ };
+
+ hoursInputEl.bind('blur', function(e) {
+ if ( !$scope.invalidHours && $scope.hours < 10) {
+ $scope.$apply( function() {
+ $scope.hours = pad( $scope.hours );
+ });
+ }
+ });
+
+ $scope.updateMinutes = function() {
+ var minutes = getMinutesFromTemplate();
+
+ if ( angular.isDefined(minutes) ) {
+ selected.setMinutes( minutes );
+ refresh( 'm' );
+ } else {
+ invalidate(undefined, true);
+ }
+ };
+
+ minutesInputEl.bind('blur', function(e) {
+ if ( !$scope.invalidMinutes && $scope.minutes < 10 ) {
+ $scope.$apply( function() {
+ $scope.minutes = pad( $scope.minutes );
+ });
+ }
+ });
+
+ };
+
+ this.render = function() {
+ var date = ngModelCtrl.$modelValue ? new Date( ngModelCtrl.$modelValue ) : null;
+
+ if ( isNaN(date) ) {
+ ngModelCtrl.$setValidity('time', false);
+ $log.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');
+ } else {
+ if ( date ) {
+ selected = date;
+ }
+ makeValid();
+ updateTemplate();
+ }
+ };
+
+ // Call internally when we know that model is valid.
+ function refresh( keyboardChange ) {
+ makeValid();
+ ngModelCtrl.$setViewValue( new Date(selected) );
+ updateTemplate( keyboardChange );
+ }
+
+ function makeValid() {
+ ngModelCtrl.$setValidity('time', true);
+ $scope.invalidHours = false;
+ $scope.invalidMinutes = false;
+ }
+
+ function updateTemplate( keyboardChange ) {
+ var hours = selected.getHours(), minutes = selected.getMinutes();
+
+ if ( $scope.showMeridian ) {
+ hours = ( hours === 0 || hours === 12 ) ? 12 : hours % 12; // Convert 24 to 12 hour system
+ }
+
+ $scope.hours = keyboardChange === 'h' ? hours : pad(hours);
+ $scope.minutes = keyboardChange === 'm' ? minutes : pad(minutes);
+ $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];
+ }
+
+ function addMinutes( minutes ) {
+ var dt = new Date( selected.getTime() + minutes * 60000 );
+ selected.setHours( dt.getHours(), dt.getMinutes() );
+ refresh();
+ }
+
+ $scope.incrementHours = function() {
+ addMinutes( hourStep * 60 );
+ };
+ $scope.decrementHours = function() {
+ addMinutes( - hourStep * 60 );
+ };
+ $scope.incrementMinutes = function() {
+ addMinutes( minuteStep );
+ };
+ $scope.decrementMinutes = function() {
+ addMinutes( - minuteStep );
+ };
+ $scope.toggleMeridian = function() {
+ addMinutes( 12 * 60 * (( selected.getHours() < 12 ) ? 1 : -1) );
+ };
+}])
+
+.directive('timepicker', function () {
+ return {
+ restrict: 'EA',
+ require: ['timepicker', '?^ngModel'],
+ controller:'TimepickerController',
+ replace: true,
+ scope: {},
+ templateUrl: 'template/timepicker/timepicker.html',
+ link: function(scope, element, attrs, ctrls) {
+ var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ if ( ngModelCtrl ) {
+ timepickerCtrl.init( ngModelCtrl, element.find('input') );
+ }
+ }
+ };
+});
+
+angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position', 'ui.bootstrap.bindHtml'])
+
+/**
+ * A helper service that can parse typeahead's syntax (string provided by users)
+ * Extracted to a separate service for ease of unit testing
+ */
+ .factory('typeaheadParser', ['$parse', function ($parse) {
+
+ // 00000111000000000000022200000000000000003333333333333330000000000044000
+ var TYPEAHEAD_REGEXP = /^\s*(.*?)(?:\s+as\s+(.*?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+(.*)$/;
+
+ return {
+ parse:function (input) {
+
+ var match = input.match(TYPEAHEAD_REGEXP);
+ if (!match) {
+ throw new Error(
+ 'Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_"' +
+ ' but got "' + input + '".');
+ }
+
+ return {
+ itemName:match[3],
+ source:$parse(match[4]),
+ viewMapper:$parse(match[2] || match[1]),
+ modelMapper:$parse(match[1])
+ };
+ }
+ };
+}])
+
+ .directive('typeahead', ['$compile', '$parse', '$q', '$timeout', '$document', '$position', 'typeaheadParser',
+ function ($compile, $parse, $q, $timeout, $document, $position, typeaheadParser) {
+
+ var HOT_KEYS = [9, 13, 27, 38, 40];
+
+ return {
+ require:'ngModel',
+ link:function (originalScope, element, attrs, modelCtrl) {
+
+ //SUPPORTED ATTRIBUTES (OPTIONS)
+
+ //minimal no of characters that needs to be entered before typeahead kicks-in
+ var minSearch = originalScope.$eval(attrs.typeaheadMinLength) || 1;
+
+ //minimal wait time after last character typed before typehead kicks-in
+ var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0;
+
+ //should it restrict model values to the ones selected from the popup only?
+ var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false;
+
+ //binding to a variable that indicates if matches are being retrieved asynchronously
+ var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop;
+
+ //a callback executed when a match is selected
+ var onSelectCallback = $parse(attrs.typeaheadOnSelect);
+
+ var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined;
+
+ var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false;
+
+ //INTERNAL VARIABLES
+
+ //model setter executed upon match selection
+ var $setModelValue = $parse(attrs.ngModel).assign;
+
+ //expressions used by typeahead
+ var parserResult = typeaheadParser.parse(attrs.typeahead);
+
+ var hasFocus;
+
+ //create a child scope for the typeahead directive so we are not polluting original scope
+ //with typeahead-specific data (matches, query etc.)
+ var scope = originalScope.$new();
+ originalScope.$on('$destroy', function(){
+ scope.$destroy();
+ });
+
+ // WAI-ARIA
+ var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000);
+ element.attr({
+ 'aria-autocomplete': 'list',
+ 'aria-expanded': false,
+ 'aria-owns': popupId
+ });
+
+ //pop-up element used to display matches
+ var popUpEl = angular.element('<div typeahead-popup></div>');
+ popUpEl.attr({
+ id: popupId,
+ matches: 'matches',
+ active: 'activeIdx',
+ select: 'select(activeIdx)',
+ query: 'query',
+ position: 'position'
+ });
+ //custom item template
+ if (angular.isDefined(attrs.typeaheadTemplateUrl)) {
+ popUpEl.attr('template-url', attrs.typeaheadTemplateUrl);
+ }
+
+ var resetMatches = function() {
+ scope.matches = [];
+ scope.activeIdx = -1;
+ element.attr('aria-expanded', false);
+ };
+
+ var getMatchId = function(index) {
+ return popupId + '-option-' + index;
+ };
+
+ // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead.
+ // This attribute is added or removed automatically when the `activeIdx` changes.
+ scope.$watch('activeIdx', function(index) {
+ if (index < 0) {
+ element.removeAttr('aria-activedescendant');
+ } else {
+ element.attr('aria-activedescendant', getMatchId(index));
+ }
+ });
+
+ var getMatchesAsync = function(inputValue) {
+
+ var locals = {$viewValue: inputValue};
+ isLoadingSetter(originalScope, true);
+ $q.when(parserResult.source(originalScope, locals)).then(function(matches) {
+
+ //it might happen that several async queries were in progress if a user were typing fast
+ //but we are interested only in responses that correspond to the current view value
+ var onCurrentRequest = (inputValue === modelCtrl.$viewValue);
+ if (onCurrentRequest && hasFocus) {
+ if (matches.length > 0) {
+
+ scope.activeIdx = 0;
+ scope.matches.length = 0;
+
+ //transform labels
+ for(var i=0; i<matches.length; i++) {
+ locals[parserResult.itemName] = matches[i];
+ scope.matches.push({
+ id: getMatchId(i),
+ label: parserResult.viewMapper(scope, locals),
+ model: matches[i]
+ });
+ }
+
+ scope.query = inputValue;
+ //position pop-up with matches - we need to re-calculate its position each time we are opening a window
+ //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page
+ //due to other elements being rendered
+ scope.position = appendToBody ? $position.offset(element) : $position.position(element);
+ scope.position.top = scope.position.top + element.prop('offsetHeight');
+
+ element.attr('aria-expanded', true);
+ } else {
+ resetMatches();
+ }
+ }
+ if (onCurrentRequest) {
+ isLoadingSetter(originalScope, false);
+ }
+ }, function(){
+ resetMatches();
+ isLoadingSetter(originalScope, false);
+ });
+ };
+
+ resetMatches();
+
+ //we need to propagate user's query so we can higlight matches
+ scope.query = undefined;
+
+ //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later
+ var timeoutPromise;
+
+ //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM
+ //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue
+ modelCtrl.$parsers.unshift(function (inputValue) {
+
+ hasFocus = true;
+
+ if (inputValue && inputValue.length >= minSearch) {
+ if (waitTime > 0) {
+ if (timeoutPromise) {
+ $timeout.cancel(timeoutPromise);//cancel previous timeout
+ }
+ timeoutPromise = $timeout(function () {
+ getMatchesAsync(inputValue);
+ }, waitTime);
+ } else {
+ getMatchesAsync(inputValue);
+ }
+ } else {
+ isLoadingSetter(originalScope, false);
+ resetMatches();
+ }
+
+ if (isEditable) {
+ return inputValue;
+ } else {
+ if (!inputValue) {
+ // Reset in case user had typed something previously.
+ modelCtrl.$setValidity('editable', true);
+ return inputValue;
+ } else {
+ modelCtrl.$setValidity('editable', false);
+ return undefined;
+ }
+ }
+ });
+
+ modelCtrl.$formatters.push(function (modelValue) {
+
+ var candidateViewValue, emptyViewValue;
+ var locals = {};
+
+ if (inputFormatter) {
+
+ locals['$model'] = modelValue;
+ return inputFormatter(originalScope, locals);
+
+ } else {
+
+ //it might happen that we don't have enough info to properly render input value
+ //we need to check for this situation and simply return model value if we can't apply custom formatting
+ locals[parserResult.itemName] = modelValue;
+ candidateViewValue = parserResult.viewMapper(originalScope, locals);
+ locals[parserResult.itemName] = undefined;
+ emptyViewValue = parserResult.viewMapper(originalScope, locals);
+
+ return candidateViewValue!== emptyViewValue ? candidateViewValue : modelValue;
+ }
+ });
+
+ scope.select = function (activeIdx) {
+ //called from within the $digest() cycle
+ var locals = {};
+ var model, item;
+
+ locals[parserResult.itemName] = item = scope.matches[activeIdx].model;
+ model = parserResult.modelMapper(originalScope, locals);
+ $setModelValue(originalScope, model);
+ modelCtrl.$setValidity('editable', true);
+
+ onSelectCallback(originalScope, {
+ $item: item,
+ $model: model,
+ $label: parserResult.viewMapper(originalScope, locals)
+ });
+
+ resetMatches();
+
+ //return focus to the input element if a match was selected via a mouse click event
+ // use timeout to avoid $rootScope:inprog error
+ $timeout(function() { element[0].focus(); }, 0, false);
+ };
+
+ //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27)
+ element.bind('keydown', function (evt) {
+
+ //typeahead is open and an "interesting" key was pressed
+ if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) {
+ return;
+ }
+
+ evt.preventDefault();
+
+ if (evt.which === 40) {
+ scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length;
+ scope.$digest();
+
+ } else if (evt.which === 38) {
+ scope.activeIdx = (scope.activeIdx ? scope.activeIdx : scope.matches.length) - 1;
+ scope.$digest();
+
+ } else if (evt.which === 13 || evt.which === 9) {
+ scope.$apply(function () {
+ scope.select(scope.activeIdx);
+ });
+
+ } else if (evt.which === 27) {
+ evt.stopPropagation();
+
+ resetMatches();
+ scope.$digest();
+ }
+ });
+
+ element.bind('blur', function (evt) {
+ hasFocus = false;
+ });
+
+ // Keep reference to click handler to unbind it.
+ var dismissClickHandler = function (evt) {
+ if (element[0] !== evt.target) {
+ resetMatches();
+ scope.$digest();
+ }
+ };
+
+ $document.bind('click', dismissClickHandler);
+
+ originalScope.$on('$destroy', function(){
+ $document.unbind('click', dismissClickHandler);
+ });
+
+ var $popup = $compile(popUpEl)(scope);
+ if ( appendToBody ) {
+ $document.find('body').append($popup);
+ } else {
+ element.after($popup);
+ }
+ }
+ };
+
+}])
+
+ .directive('typeaheadPopup', function () {
+ return {
+ restrict:'EA',
+ scope:{
+ matches:'=',
+ query:'=',
+ active:'=',
+ position:'=',
+ select:'&'
+ },
+ replace:true,
+ templateUrl:'template/typeahead/typeahead-popup.html',
+ link:function (scope, element, attrs) {
+
+ scope.templateUrl = attrs.templateUrl;
+
+ scope.isOpen = function () {
+ return scope.matches.length > 0;
+ };
+
+ scope.isActive = function (matchIdx) {
+ return scope.active == matchIdx;
+ };
+
+ scope.selectActive = function (matchIdx) {
+ scope.active = matchIdx;
+ };
+
+ scope.selectMatch = function (activeIdx) {
+ scope.select({activeIdx:activeIdx});
+ };
+ }
+ };
+ })
+
+ .directive('typeaheadMatch', ['$http', '$templateCache', '$compile', '$parse', function ($http, $templateCache, $compile, $parse) {
+ return {
+ restrict:'EA',
+ scope:{
+ index:'=',
+ match:'=',
+ query:'='
+ },
+ link:function (scope, element, attrs) {
+ var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'template/typeahead/typeahead-match.html';
+ $http.get(tplUrl, {cache: $templateCache}).success(function(tplContent){
+ element.replaceWith($compile(tplContent.trim())(scope));
+ });
+ }
+ };
+ }])
+
+ .filter('typeaheadHighlight', function() {
+
+ function escapeRegexp(queryToEscape) {
+ return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
+ }
+
+ return function(matchItem, query) {
+ return query ? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '<strong>$&</strong>') : matchItem;
+ };
+ });
+
+angular.module("template/accordion/accordion-group.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/accordion/accordion-group.html",
+ "<div class=\"panel panel-default\">\n" +
+ " <div class=\"panel-heading\">\n" +
+ " <h4 class=\"panel-title\">\n" +
+ " <a class=\"accordion-toggle\" ng-click=\"toggleOpen()\" accordion-transclude=\"heading\"><span ng-class=\"{'text-muted': isDisabled}\">{{heading}}</span></a>\n" +
+ " </h4>\n" +
+ " </div>\n" +
+ " <div class=\"panel-collapse\" collapse=\"!isOpen\">\n" +
+ " <div class=\"panel-body\" ng-transclude></div>\n" +
+ " </div>\n" +
+ "</div>");
+}]);
+
+angular.module("template/accordion/accordion.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/accordion/accordion.html",
+ "<div class=\"panel-group\" ng-transclude></div>");
+}]);
+
+angular.module("template/alert/alert.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/alert/alert.html",
+ "<div class=\"alert\" ng-class=\"{'alert-{{type || 'warning'}}': true, 'alert-dismissable': closeable}\" role=\"alert\">\n" +
+ " <button ng-show=\"closeable\" type=\"button\" class=\"close\" ng-click=\"close()\">\n" +
+ " <span aria-hidden=\"true\">×</span>\n" +
+ " <span class=\"sr-only\">Close</span>\n" +
+ " </button>\n" +
+ " <div ng-transclude></div>\n" +
+ "</div>\n" +
+ "");
+}]);
+
+angular.module("template/carousel/carousel.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/carousel/carousel.html",
+ "<div ng-mouseenter=\"pause()\" ng-mouseleave=\"play()\" class=\"carousel\" ng-swipe-right=\"prev()\" ng-swipe-left=\"next()\">\n" +
+ " <ol class=\"carousel-indicators\" ng-show=\"slides.length > 1\">\n" +
+ " <li ng-repeat=\"slide in slides track by $index\" ng-class=\"{active: isActive(slide)}\" ng-click=\"select(slide)\"></li>\n" +
+ " </ol>\n" +
+ " <div class=\"carousel-inner\" ng-transclude></div>\n" +
+ " <a class=\"left carousel-control\" ng-click=\"prev()\" ng-show=\"slides.length > 1\"><span class=\"glyphicon glyphicon-chevron-left\"></span></a>\n" +
+ " <a class=\"right carousel-control\" ng-click=\"next()\" ng-show=\"slides.length > 1\"><span class=\"glyphicon glyphicon-chevron-right\"></span></a>\n" +
+ "</div>\n" +
+ "");
+}]);
+
+angular.module("template/carousel/slide.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/carousel/slide.html",
+ "<div ng-class=\"{\n" +
+ " 'active': leaving || (active && !entering),\n" +
+ " 'prev': (next || active) && direction=='prev',\n" +
+ " 'next': (next || active) && direction=='next',\n" +
+ " 'right': direction=='prev',\n" +
+ " 'left': direction=='next'\n" +
+ " }\" class=\"item text-center\" ng-transclude></div>\n" +
+ "");
+}]);
+
+angular.module("template/datepicker/datepicker.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/datepicker/datepicker.html",
+ "<div ng-switch=\"datepickerMode\" role=\"application\" ng-keydown=\"keydown($event)\">\n" +
+ " <daypicker ng-switch-when=\"day\" tabindex=\"0\"></daypicker>\n" +
+ " <monthpicker ng-switch-when=\"month\" tabindex=\"0\"></monthpicker>\n" +
+ " <yearpicker ng-switch-when=\"year\" tabindex=\"0\"></yearpicker>\n" +
+ "</div>");
+}]);
+
+angular.module("template/datepicker/day.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/datepicker/day.html",
+ "<table role=\"grid\" aria-labelledby=\"{{uniqueId}}-title\" aria-activedescendant=\"{{activeDateId}}\">\n" +
+ " <thead>\n" +
+ " <tr>\n" +
+ " <th><button type=\"button\" class=\"btn btn-default btn-sm pull-left\" ng-click=\"move(-1)\" tabindex=\"-1\"><i class=\"glyphicon glyphicon-chevron-left\"></i></button></th>\n" +
+ " <th colspan=\"{{5 + showWeeks}}\"><button id=\"{{uniqueId}}-title\" role=\"heading\" aria-live=\"assertive\" aria-atomic=\"true\" type=\"button\" class=\"btn btn-default btn-sm\" ng-click=\"toggleMode()\" tabindex=\"-1\" style=\"width:100%;\"><strong>{{title}}</strong></button></th>\n" +
+ " <th><button type=\"button\" class=\"btn btn-default btn-sm pull-right\" ng-click=\"move(1)\" tabindex=\"-1\"><i class=\"glyphicon glyphicon-chevron-right\"></i></button></th>\n" +
+ " </tr>\n" +
+ " <tr>\n" +
+ " <th ng-show=\"showWeeks\" class=\"text-center\"></th>\n" +
+ " <th ng-repeat=\"label in labels track by $index\" class=\"text-center\"><small aria-label=\"{{label.full}}\">{{label.abbr}}</small></th>\n" +
+ " </tr>\n" +
+ " </thead>\n" +
+ " <tbody>\n" +
+ " <tr ng-repeat=\"row in rows track by $index\">\n" +
+ " <td ng-show=\"showWeeks\" class=\"text-center h6\"><em>{{ weekNumbers[$index] }}</em></td>\n" +
+ " <td ng-repeat=\"dt in row track by dt.date\" class=\"text-center\" role=\"gridcell\" id=\"{{dt.uid}}\" aria-disabled=\"{{!!dt.disabled}}\">\n" +
+ " <button type=\"button\" style=\"width:100%;\" class=\"btn btn-default btn-sm\" ng-class=\"{'btn-info': dt.selected, active: isActive(dt)}\" ng-click=\"select(dt.date)\" ng-disabled=\"dt.disabled\" tabindex=\"-1\"><span ng-class=\"{'text-muted': dt.secondary, 'text-info': dt.current}\">{{dt.label}}</span></button>\n" +
+ " </td>\n" +
+ " </tr>\n" +
+ " </tbody>\n" +
+ "</table>\n" +
+ "");
+}]);
+
+angular.module("template/datepicker/month.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/datepicker/month.html",
+ "<table role=\"grid\" aria-labelledby=\"{{uniqueId}}-title\" aria-activedescendant=\"{{activeDateId}}\">\n" +
+ " <thead>\n" +
+ " <tr>\n" +
+ " <th><button type=\"button\" class=\"btn btn-default btn-sm pull-left\" ng-click=\"move(-1)\" tabindex=\"-1\"><i class=\"glyphicon glyphicon-chevron-left\"></i></button></th>\n" +
+ " <th><button id=\"{{uniqueId}}-title\" role=\"heading\" aria-live=\"assertive\" aria-atomic=\"true\" type=\"button\" class=\"btn btn-default btn-sm\" ng-click=\"toggleMode()\" tabindex=\"-1\" style=\"width:100%;\"><strong>{{title}}</strong></button></th>\n" +
+ " <th><button type=\"button\" class=\"btn btn-default btn-sm pull-right\" ng-click=\"move(1)\" tabindex=\"-1\"><i class=\"glyphicon glyphicon-chevron-right\"></i></button></th>\n" +
+ " </tr>\n" +
+ " </thead>\n" +
+ " <tbody>\n" +
+ " <tr ng-repeat=\"row in rows track by $index\">\n" +
+ " <td ng-repeat=\"dt in row track by dt.date\" class=\"text-center\" role=\"gridcell\" id=\"{{dt.uid}}\" aria-disabled=\"{{!!dt.disabled}}\">\n" +
+ " <button type=\"button\" style=\"width:100%;\" class=\"btn btn-default\" ng-class=\"{'btn-info': dt.selected, active: isActive(dt)}\" ng-click=\"select(dt.date)\" ng-disabled=\"dt.disabled\" tabindex=\"-1\"><span ng-class=\"{'text-info': dt.current}\">{{dt.label}}</span></button>\n" +
+ " </td>\n" +
+ " </tr>\n" +
+ " </tbody>\n" +
+ "</table>\n" +
+ "");
+}]);
+
+angular.module("template/datepicker/popup.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/datepicker/popup.html",
+ "<ul class=\"dropdown-menu\" ng-style=\"{display: (isOpen && 'block') || 'none', top: position.top+'px', left: position.left+'px'}\" ng-keydown=\"keydown($event)\">\n" +
+ " <li ng-transclude></li>\n" +
+ " <li ng-if=\"showButtonBar\" style=\"padding:10px 9px 2px\">\n" +
+ " <span class=\"btn-group\">\n" +
+ " <button type=\"button\" class=\"btn btn-sm btn-info\" ng-click=\"select('today')\">{{ getText('current') }}</button>\n" +
+ " <button type=\"button\" class=\"btn btn-sm btn-danger\" ng-click=\"select(null)\">{{ getText('clear') }}</button>\n" +
+ " </span>\n" +
+ " <button type=\"button\" class=\"btn btn-sm btn-success pull-right\" ng-click=\"close()\">{{ getText('close') }}</button>\n" +
+ " </li>\n" +
+ "</ul>\n" +
+ "");
+}]);
+
+angular.module("template/datepicker/year.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/datepicker/year.html",
+ "<table role=\"grid\" aria-labelledby=\"{{uniqueId}}-title\" aria-activedescendant=\"{{activeDateId}}\">\n" +
+ " <thead>\n" +
+ " <tr>\n" +
+ " <th><button type=\"button\" class=\"btn btn-default btn-sm pull-left\" ng-click=\"move(-1)\" tabindex=\"-1\"><i class=\"glyphicon glyphicon-chevron-left\"></i></button></th>\n" +
+ " <th colspan=\"3\"><button id=\"{{uniqueId}}-title\" role=\"heading\" aria-live=\"assertive\" aria-atomic=\"true\" type=\"button\" class=\"btn btn-default btn-sm\" ng-click=\"toggleMode()\" tabindex=\"-1\" style=\"width:100%;\"><strong>{{title}}</strong></button></th>\n" +
+ " <th><button type=\"button\" class=\"btn btn-default btn-sm pull-right\" ng-click=\"move(1)\" tabindex=\"-1\"><i class=\"glyphicon glyphicon-chevron-right\"></i></button></th>\n" +
+ " </tr>\n" +
+ " </thead>\n" +
+ " <tbody>\n" +
+ " <tr ng-repeat=\"row in rows track by $index\">\n" +
+ " <td ng-repeat=\"dt in row track by dt.date\" class=\"text-center\" role=\"gridcell\" id=\"{{dt.uid}}\" aria-disabled=\"{{!!dt.disabled}}\">\n" +
+ " <button type=\"button\" style=\"width:100%;\" class=\"btn btn-default\" ng-class=\"{'btn-info': dt.selected, active: isActive(dt)}\" ng-click=\"select(dt.date)\" ng-disabled=\"dt.disabled\" tabindex=\"-1\"><span ng-class=\"{'text-info': dt.current}\">{{dt.label}}</span></button>\n" +
+ " </td>\n" +
+ " </tr>\n" +
+ " </tbody>\n" +
+ "</table>\n" +
+ "");
+}]);
+
+angular.module("template/modal/backdrop.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/modal/backdrop.html",
+ "<div class=\"modal-backdrop fade\"\n" +
+ " ng-class=\"{in: animate}\"\n" +
+ " ng-style=\"{'z-index': 1040 + (index && 1 || 0) + index*10}\"\n" +
+ "></div>\n" +
+ "");
+}]);
+
+angular.module("template/modal/window.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/modal/window.html",
+ "<div tabindex=\"-1\" role=\"dialog\" class=\"modal fade\" ng-class=\"{in: animate}\" ng-style=\"{'z-index': 1050 + index*10, display: 'block'}\" ng-click=\"close($event)\">\n" +
+ " <div class=\"modal-dialog\" ng-class=\"{'modal-sm': size == 'sm', 'modal-lg': size == 'lg'}\"><div class=\"modal-content\" ng-transclude></div></div>\n" +
+ "</div>");
+}]);
+
+angular.module("template/pagination/pager.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/pagination/pager.html",
+ "<ul class=\"pager\">\n" +
+ " <li ng-class=\"{disabled: noPrevious(), previous: align}\"><a href ng-click=\"selectPage(page - 1)\">{{getText('previous')}}</a></li>\n" +
+ " <li ng-class=\"{disabled: noNext(), next: align}\"><a href ng-click=\"selectPage(page + 1)\">{{getText('next')}}</a></li>\n" +
+ "</ul>");
+}]);
+
+angular.module("template/pagination/pagination.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/pagination/pagination.html",
+ "<ul class=\"pagination\">\n" +
+ " <li ng-if=\"boundaryLinks\" ng-class=\"{disabled: noPrevious()}\"><a href ng-click=\"selectPage(1)\">{{getText('first')}}</a></li>\n" +
+ " <li ng-if=\"directionLinks\" ng-class=\"{disabled: noPrevious()}\"><a href ng-click=\"selectPage(page - 1)\">{{getText('previous')}}</a></li>\n" +
+ " <li ng-repeat=\"page in pages track by $index\" ng-class=\"{active: page.active}\"><a href ng-click=\"selectPage(page.number)\">{{page.text}}</a></li>\n" +
+ " <li ng-if=\"directionLinks\" ng-class=\"{disabled: noNext()}\"><a href ng-click=\"selectPage(page + 1)\">{{getText('next')}}</a></li>\n" +
+ " <li ng-if=\"boundaryLinks\" ng-class=\"{disabled: noNext()}\"><a href ng-click=\"selectPage(totalPages)\">{{getText('last')}}</a></li>\n" +
+ "</ul>");
+}]);
+
+angular.module("template/tooltip/tooltip-html-unsafe-popup.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/tooltip/tooltip-html-unsafe-popup.html",
+ "<div class=\"tooltip {{placement}}\" ng-class=\"{ in: isOpen(), fade: animation() }\">\n" +
+ " <div class=\"tooltip-arrow\"></div>\n" +
+ " <div class=\"tooltip-inner\" bind-html-unsafe=\"content\"></div>\n" +
+ "</div>\n" +
+ "");
+}]);
+
+angular.module("template/tooltip/tooltip-popup.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/tooltip/tooltip-popup.html",
+ "<div class=\"tooltip {{placement}}\" ng-class=\"{ in: isOpen(), fade: animation() }\">\n" +
+ " <div class=\"tooltip-arrow\"></div>\n" +
+ " <div class=\"tooltip-inner\" ng-bind=\"content\"></div>\n" +
+ "</div>\n" +
+ "");
+}]);
+
+angular.module("template/popover/popover.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/popover/popover.html",
+ "<div class=\"popover {{placement}}\" ng-class=\"{ in: isOpen(), fade: animation() }\">\n" +
+ " <div class=\"arrow\"></div>\n" +
+ "\n" +
+ " <div class=\"popover-inner\">\n" +
+ " <h3 class=\"popover-title\" ng-bind=\"title\" ng-show=\"title\"></h3>\n" +
+ " <div class=\"popover-content\" ng-bind=\"content\"></div>\n" +
+ " </div>\n" +
+ "</div>\n" +
+ "");
+}]);
+
+angular.module("template/progressbar/bar.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/progressbar/bar.html",
+ "<div class=\"progress-bar\" ng-class=\"type && 'progress-bar-' + type\" role=\"progressbar\" aria-valuenow=\"{{value}}\" aria-valuemin=\"0\" aria-valuemax=\"{{max}}\" ng-style=\"{width: percent + '%'}\" aria-valuetext=\"{{percent | number:0}}%\" ng-transclude></div>");
+}]);
+
+angular.module("template/progressbar/progress.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/progressbar/progress.html",
+ "<div class=\"progress\" ng-transclude></div>");
+}]);
+
+angular.module("template/progressbar/progressbar.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/progressbar/progressbar.html",
+ "<div class=\"progress\">\n" +
+ " <div class=\"progress-bar\" ng-class=\"type && 'progress-bar-' + type\" role=\"progressbar\" aria-valuenow=\"{{value}}\" aria-valuemin=\"0\" aria-valuemax=\"{{max}}\" ng-style=\"{width: percent + '%'}\" aria-valuetext=\"{{percent | number:0}}%\" ng-transclude></div>\n" +
+ "</div>");
+}]);
+
+angular.module("template/rating/rating.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/rating/rating.html",
+ "<span ng-mouseleave=\"reset()\" ng-keydown=\"onKeydown($event)\" tabindex=\"0\" role=\"slider\" aria-valuemin=\"0\" aria-valuemax=\"{{range.length}}\" aria-valuenow=\"{{value}}\">\n" +
+ " <i ng-repeat=\"r in range track by $index\" ng-mouseenter=\"enter($index + 1)\" ng-click=\"rate($index + 1)\" class=\"glyphicon\" ng-class=\"$index < value && (r.stateOn || 'glyphicon-star') || (r.stateOff || 'glyphicon-star-empty')\">\n" +
+ " <span class=\"sr-only\">({{ $index < value ? '*' : ' ' }})</span>\n" +
+ " </i>\n" +
+ "</span>");
+}]);
+
+angular.module("template/tabs/tab.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/tabs/tab.html",
+ "<li ng-class=\"{active: active, disabled: disabled}\">\n" +
+ " <a ng-click=\"select()\" tab-heading-transclude>{{heading}}</a>\n" +
+ "</li>\n" +
+ "");
+}]);
+
+angular.module("template/tabs/tabset-titles.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/tabs/tabset-titles.html",
+ "<ul class=\"nav {{type && 'nav-' + type}}\" ng-class=\"{'nav-stacked': vertical}\">\n" +
+ "</ul>\n" +
+ "");
+}]);
+
+angular.module("template/tabs/tabset.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/tabs/tabset.html",
+ "\n" +
+ "<div>\n" +
+ " <ul class=\"nav nav-{{type || 'tabs'}}\" ng-class=\"{'nav-stacked': vertical, 'nav-justified': justified}\" ng-transclude></ul>\n" +
+ " <div class=\"tab-content\">\n" +
+ " <div class=\"tab-pane\" \n" +
+ " ng-repeat=\"tab in tabs\" \n" +
+ " ng-class=\"{active: tab.active}\"\n" +
+ " tab-content-transclude=\"tab\">\n" +
+ " </div>\n" +
+ " </div>\n" +
+ "</div>\n" +
+ "");
+}]);
+
+angular.module("template/timepicker/timepicker.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/timepicker/timepicker.html",
+ "<table>\n" +
+ " <tbody>\n" +
+ " <tr class=\"text-center\">\n" +
+ " <td><a ng-click=\"incrementHours()\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-up\"></span></a></td>\n" +
+ " <td> </td>\n" +
+ " <td><a ng-click=\"incrementMinutes()\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-up\"></span></a></td>\n" +
+ " <td ng-show=\"showMeridian\"></td>\n" +
+ " </tr>\n" +
+ " <tr>\n" +
+ " <td style=\"width:50px;\" class=\"form-group\" ng-class=\"{'has-error': invalidHours}\">\n" +
+ " <input type=\"text\" ng-model=\"hours\" ng-change=\"updateHours()\" class=\"form-control text-center\" ng-mousewheel=\"incrementHours()\" ng-readonly=\"readonlyInput\" maxlength=\"2\">\n" +
+ " </td>\n" +
+ " <td>:</td>\n" +
+ " <td style=\"width:50px;\" class=\"form-group\" ng-class=\"{'has-error': invalidMinutes}\">\n" +
+ " <input type=\"text\" ng-model=\"minutes\" ng-change=\"updateMinutes()\" class=\"form-control text-center\" ng-readonly=\"readonlyInput\" maxlength=\"2\">\n" +
+ " </td>\n" +
+ " <td ng-show=\"showMeridian\"><button type=\"button\" class=\"btn btn-default text-center\" ng-click=\"toggleMeridian()\">{{meridian}}</button></td>\n" +
+ " </tr>\n" +
+ " <tr class=\"text-center\">\n" +
+ " <td><a ng-click=\"decrementHours()\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-down\"></span></a></td>\n" +
+ " <td> </td>\n" +
+ " <td><a ng-click=\"decrementMinutes()\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-down\"></span></a></td>\n" +
+ " <td ng-show=\"showMeridian\"></td>\n" +
+ " </tr>\n" +
+ " </tbody>\n" +
+ "</table>\n" +
+ "");
+}]);
+
+angular.module("template/typeahead/typeahead-match.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/typeahead/typeahead-match.html",
+ "<a tabindex=\"-1\" bind-html-unsafe=\"match.label | typeaheadHighlight:query\"></a>");
+}]);
+
+angular.module("template/typeahead/typeahead-popup.html", []).run(["$templateCache", function($templateCache) {
+ $templateCache.put("template/typeahead/typeahead-popup.html",
+ "<ul class=\"dropdown-menu\" ng-if=\"isOpen()\" ng-style=\"{top: position.top+'px', left: position.left+'px'}\" style=\"display: block;\" role=\"listbox\" aria-hidden=\"{{!isOpen()}}\">\n" +
+ " <li ng-repeat=\"match in matches track by $index\" ng-class=\"{active: isActive($index) }\" ng-mouseenter=\"selectActive($index)\" ng-click=\"selectMatch($index)\" role=\"option\" id=\"{{match.id}}\">\n" +
+ " <div typeahead-match index=\"$index\" match=\"match\" query=\"query\" template-url=\"templateUrl\"></div>\n" +
+ " </li>\n" +
+ "</ul>");
+}]);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/version.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/version.json
new file mode 100755
index 0000000..7325f62
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/version.json
@@ -0,0 +1 @@
+{"raw":"v1.4.4","major":1,"minor":4,"patch":4,"prerelease":[],"build":[],"version":"1.4.4","codeName":"pylon-requirement","full":"1.4.4","branch":"v1.4.x","cdn":{"raw":"v1.4.3","major":1,"minor":4,"patch":3,"prerelease":[],"build":[],"version":"1.4.3","docsUrl":"http://code.angularjs.org/1.4.3/docs"}}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/version.txt b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/version.txt
new file mode 100755
index 0000000..e1df5de
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/angular/version.txt
@@ -0,0 +1 @@
+1.4.4
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..b93a495
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode=" " />
+<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode=" " horiz-adv-x="650" />
+<glyph unicode=" " horiz-adv-x="1300" />
+<glyph unicode=" " horiz-adv-x="650" />
+<glyph unicode=" " horiz-adv-x="1300" />
+<glyph unicode=" " horiz-adv-x="433" />
+<glyph unicode=" " horiz-adv-x="325" />
+<glyph unicode=" " horiz-adv-x="216" />
+<glyph unicode=" " horiz-adv-x="216" />
+<glyph unicode=" " horiz-adv-x="162" />
+<glyph unicode=" " horiz-adv-x="260" />
+<glyph unicode=" " horiz-adv-x="72" />
+<glyph unicode=" " horiz-adv-x="260" />
+<glyph unicode=" " horiz-adv-x="325" />
+<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..1413fc6
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..9e61285
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/FontAwesome.otf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/FontAwesome.otf
new file mode 100644
index 0000000..f7936cc
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/FontAwesome.otf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.eot
new file mode 100644
index 0000000..33b2bb8
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.svg
new file mode 100644
index 0000000..1ee89d4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.svg
@@ -0,0 +1,565 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
+<metadata></metadata>
+<defs>
+<font id="fontawesomeregular" horiz-adv-x="1536" >
+<font-face units-per-em="1792" ascent="1536" descent="-256" />
+<missing-glyph horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" />
+<glyph unicode="	" horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" />
+<glyph unicode="¨" horiz-adv-x="1792" />
+<glyph unicode="©" horiz-adv-x="1792" />
+<glyph unicode="®" horiz-adv-x="1792" />
+<glyph unicode="´" horiz-adv-x="1792" />
+<glyph unicode="Æ" horiz-adv-x="1792" />
+<glyph unicode="Ø" horiz-adv-x="1792" />
+<glyph unicode=" " horiz-adv-x="768" />
+<glyph unicode=" " horiz-adv-x="1537" />
+<glyph unicode=" " horiz-adv-x="768" />
+<glyph unicode=" " horiz-adv-x="1537" />
+<glyph unicode=" " horiz-adv-x="512" />
+<glyph unicode=" " horiz-adv-x="384" />
+<glyph unicode=" " horiz-adv-x="256" />
+<glyph unicode=" " horiz-adv-x="256" />
+<glyph unicode=" " horiz-adv-x="192" />
+<glyph unicode=" " horiz-adv-x="307" />
+<glyph unicode=" " horiz-adv-x="85" />
+<glyph unicode=" " horiz-adv-x="307" />
+<glyph unicode=" " horiz-adv-x="384" />
+<glyph unicode="™" horiz-adv-x="1792" />
+<glyph unicode="∞" horiz-adv-x="1792" />
+<glyph unicode="≠" horiz-adv-x="1792" />
+<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
+<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
+<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
+<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
+<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
+<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
+<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
+<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
+<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
+<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
+<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
+<glyph unicode="" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
+<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
+<glyph unicode="" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
+<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
+<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
+<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
+<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
+<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
+<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
+<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
+<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
+<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
+<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
+<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
+<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
+<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
+<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
+<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
+<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
+<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
+<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
+<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
+<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
+<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
+<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
+<glyph unicode="" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
+<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
+<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
+<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
+<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
+<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
+<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
+<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
+<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
+<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
+<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
+<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
+<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
+<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
+<glyph unicode="" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" />
+<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
+<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
+<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
+<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
+<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
+<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
+<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
+<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
+<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
+<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
+<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
+<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
+<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
+<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
+<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
+<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
+<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
+<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
+<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
+<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
+<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
+<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
+<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
+<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
+<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
+<glyph unicode="" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
+<glyph unicode="" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
+<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
+<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
+<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
+<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
+<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
+<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
+<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
+<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
+<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
+<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
+<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" />
+<glyph unicode="" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
+<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
+<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
+<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
+<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
+<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
+<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
+<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
+<glyph unicode="" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
+<glyph unicode="" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
+<glyph unicode="" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
+<glyph unicode="" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
+<glyph unicode="" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
+<glyph unicode="" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
+<glyph unicode="" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
+<glyph unicode="" horiz-adv-x="2304" d="M1509 107q0 -14 -12 -29q-52 -59 -147.5 -83t-196.5 -24q-252 0 -346 107q-12 15 -12 29q0 17 12 29.5t29 12.5q15 0 30 -12q58 -49 125.5 -66t159.5 -17t160 17t127 66q15 12 30 12q17 0 29 -12.5t12 -29.5zM978 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5 t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM1622 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM415 793q-39 27 -88 27q-66 0 -113 -47t-47 -113q0 -72 54 -121q53 141 194 254zM2020 382q0 222 -249 387 q-128 85 -291.5 126.5t-331.5 41.5t-331.5 -41.5t-292.5 -126.5q-249 -165 -249 -387t249 -387q129 -85 292.5 -126.5t331.5 -41.5t331.5 41.5t291.5 126.5q249 165 249 387zM2137 660q0 66 -47 113t-113 47q-50 0 -93 -30q140 -114 192 -256q61 48 61 126zM1993 1335 q0 49 -34.5 83.5t-82.5 34.5q-49 0 -83.5 -34.5t-34.5 -83.5q0 -48 34.5 -82.5t83.5 -34.5q48 0 82.5 34.5t34.5 82.5zM2220 660q0 -65 -33 -122t-89 -90q5 -35 5 -66q0 -139 -79 -255.5t-208 -201.5q-140 -92 -313.5 -136.5t-354.5 -44.5t-355 44.5t-314 136.5 q-129 85 -208 201.5t-79 255.5q0 36 6 71q-53 33 -83.5 88.5t-30.5 118.5q0 100 71 171.5t172 71.5q91 0 159 -60q265 170 638 177l144 456q10 29 40 29q24 0 384 -90q24 55 74 88t110 33q82 0 141 -59t59 -142t-59 -141.5t-141 -58.5q-83 0 -141.5 58.5t-59.5 140.5 l-339 80l-125 -395q349 -15 603 -179q71 63 163 63q101 0 172 -71.5t71 -171.5z" />
+<glyph unicode="" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
+<glyph unicode="" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
+<glyph unicode="" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" />
+<glyph unicode="" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
+<glyph unicode="" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
+<glyph unicode="" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" />
+<glyph unicode="" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" />
+<glyph unicode="" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
+<glyph unicode="" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" />
+<glyph unicode="" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " />
+<glyph unicode="" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
+<glyph unicode="" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " />
+<glyph unicode="" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
+<glyph unicode="" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
+<glyph unicode="" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
+<glyph unicode="" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
+<glyph unicode="" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
+<glyph unicode="" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
+<glyph unicode="" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
+<glyph unicode="" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
+<glyph unicode="" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
+<glyph unicode="" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+<glyph unicode="" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
+<glyph unicode="" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
+<glyph unicode="" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" />
+<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
+<glyph unicode="" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
+<glyph unicode="" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
+<glyph unicode="" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
+<glyph unicode="" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
+<glyph unicode="" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" />
+<glyph unicode="" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
+<glyph unicode="" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" />
+<glyph unicode="" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
+<glyph unicode="" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
+<glyph unicode="" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
+<glyph unicode="" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
+<glyph unicode="" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
+<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
+<glyph unicode="" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
+<glyph unicode="" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
+<glyph unicode="" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
+<glyph unicode="" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
+<glyph unicode="" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
+<glyph unicode="" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
+<glyph unicode="" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
+<glyph unicode="" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
+<glyph unicode="" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
+<glyph unicode="" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
+<glyph unicode="" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
+<glyph unicode="" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
+<glyph unicode="" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
+<glyph unicode="" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h416q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-419 -420q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5 t431 200.5q144 12 276.5 -30.5t236.5 -129.5l419 419h-261q-14 0 -23 9t-9 23v64zM704 -128q117 0 223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123 t223.5 -45.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1728 1536q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-229 -230l156 -156q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-156 157l-99 -100q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5 t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5t431 200.5q144 12 276.5 -30.5t236.5 -129.5l99 99l-156 156q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l156 -156l229 229h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM1280 448q0 117 -45.5 223.5t-123 184t-184 123 t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M2029 685q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-131q-12 -119 -67 -226t-139 -183.5t-196.5 -121.5t-234.5 -45q-180 0 -330.5 91t-234.5 247 t-74 337q8 162 94 300t226.5 219.5t302.5 85.5q166 4 310.5 -71.5t235.5 -208.5t107 -296h131v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM640 128q104 0 198.5 40.5t163.5 109.5t109.5 163.5 t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
+<glyph unicode="" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
+<glyph unicode="" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
+<glyph unicode="" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
+<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
+<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
+<glyph unicode="" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
+<glyph unicode="" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
+<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
+<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.ttf
new file mode 100644
index 0000000..ed9372f
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.woff
new file mode 100644
index 0000000..8b280b9
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.woff2 b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.woff2
new file mode 100644
index 0000000..3311d58
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/font-awesome/fonts/fontawesome-webfont.woff2 differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/.bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/.bower.json
new file mode 100644
index 0000000..cd5561d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/.bower.json
@@ -0,0 +1,48 @@
+{
+ "name": "patternfly",
+ "version": "2.0.0",
+ "authors": "Red Hat",
+ "license": "Apache-2.0",
+ "homepage": "https://www.patternfly.org",
+ "main": [
+ "dist/js/patternfly.js",
+ "dist/css/patternfly.css"
+ ],
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "app/components",
+ "test",
+ "tests",
+ "package.json",
+ "Gruntfile.js",
+ "PatternFlyIcons-webfont.json",
+ "Makefile",
+ "patternfly.spec.in"
+ ],
+ "devDependencies": {
+ "bootstrap": "~3.3.5",
+ "bootstrap-combobox": "~1.1.6",
+ "bootstrap-datepicker": "~1.4.0",
+ "bootstrap-select": "~1.7.3",
+ "bootstrap-treeview": "~1.2.0",
+ "c3": "~0.4.10",
+ "datatables": "~1.10.7",
+ "datatables-colreorder": "~1.1.3",
+ "datatables-colvis": "~1.1.2",
+ "font-awesome": "~4.3.0",
+ "google-code-prettify": "~1.0.4",
+ "jquery": "~2.1.4",
+ "matchHeight": "~0.6.0"
+ },
+ "_release": "2.0.0",
+ "_resolution": {
+ "type": "version",
+ "tag": "v2.0.0",
+ "commit": "bf1749e83367af53dcdd880668643171c844bc58"
+ },
+ "_source": "git://github.com/patternfly/patternfly.git",
+ "_target": "~2.0.0",
+ "_originalSource": "patternfly"
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/bower.json
new file mode 100644
index 0000000..03c2ebd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/bower.json
@@ -0,0 +1,39 @@
+{
+ "name": "patternfly",
+ "version": "2.0.0",
+ "authors": "Red Hat",
+ "license": "Apache-2.0",
+ "homepage": "https://www.patternfly.org",
+ "main": [
+ "dist/js/patternfly.js",
+ "dist/css/patternfly.css"
+ ],
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "app/components",
+ "test",
+ "tests",
+ "package.json",
+ "Gruntfile.js",
+ "PatternFlyIcons-webfont.json",
+ "Makefile",
+ "patternfly.spec.in"
+ ],
+ "devDependencies": {
+ "bootstrap": "~3.3.5",
+ "bootstrap-combobox": "~1.1.6",
+ "bootstrap-datepicker": "~1.4.0",
+ "bootstrap-select": "~1.7.3",
+ "bootstrap-treeview": "~1.2.0",
+ "c3": "~0.4.10",
+ "datatables": "~1.10.7",
+ "datatables-colreorder": "~1.1.3",
+ "datatables-colvis": "~1.1.2",
+ "font-awesome": "~4.3.0",
+ "google-code-prettify": "~1.0.4",
+ "jquery": "~2.1.4",
+ "matchHeight": "~0.6.0"
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/bower.json
new file mode 100644
index 0000000..686bcf1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/bower.json
@@ -0,0 +1,34 @@
+{
+ "name": "bootstrap",
+ "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+ "keywords": [
+ "css",
+ "js",
+ "less",
+ "mobile-first",
+ "responsive",
+ "front-end",
+ "framework",
+ "web"
+ ],
+ "homepage": "http://getbootstrap.com",
+ "license": "MIT",
+ "moduleType": "globals",
+ "main": [
+ "less/bootstrap.less",
+ "dist/js/bootstrap.js"
+ ],
+ "ignore": [
+ "/.*",
+ "_config.yml",
+ "CNAME",
+ "composer.json",
+ "CONTRIBUTING.md",
+ "docs",
+ "js/tests",
+ "test-infra"
+ ],
+ "dependencies": {
+ "jquery": ">= 1.9.1"
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.css
new file mode 100644
index 0000000..680e768
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.css
@@ -0,0 +1,6800 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+ font-family: sans-serif;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+body {
+ margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ vertical-align: baseline;
+}
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+[hidden],
+template {
+ display: none;
+}
+a {
+ background-color: transparent;
+}
+a:active,
+a:hover {
+ outline: 0;
+}
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+b,
+strong {
+ font-weight: bold;
+}
+dfn {
+ font-style: italic;
+}
+h1 {
+ margin: .67em 0;
+ font-size: 2em;
+}
+mark {
+ color: #000;
+ background: #ff0;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+sup {
+ top: -.5em;
+}
+sub {
+ bottom: -.25em;
+}
+img {
+ border: 0;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+figure {
+ margin: 1em 40px;
+}
+hr {
+ height: 0;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+pre {
+ overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0;
+ font: inherit;
+ color: inherit;
+}
+button {
+ overflow: visible;
+}
+button,
+select {
+ text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+input {
+ line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+fieldset {
+ padding: .35em .625em .75em;
+ margin: 0 2px;
+ border: 1px solid #c0c0c0;
+}
+legend {
+ padding: 0;
+ border: 0;
+}
+textarea {
+ overflow: auto;
+}
+optgroup {
+ font-weight: bold;
+}
+table {
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+td,
+th {
+ padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+ *,
+ *:before,
+ *:after {
+ color: #000 !important;
+ text-shadow: none !important;
+ background: transparent !important;
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ .navbar {
+ display: none;
+ }
+ .btn > .caret,
+ .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+ }
+ .label {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #ddd !important;
+ }
+}
+@font-face {
+ font-family: 'Glyphicons Halflings';
+
+ src: url('../fonts/glyphicons-halflings-regular.eot');
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+ content: "\2a";
+}
+.glyphicon-plus:before {
+ content: "\2b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
+}
+.glyphicon-minus:before {
+ content: "\2212";
+}
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+.glyphicon-glass:before {
+ content: "\e001";
+}
+.glyphicon-music:before {
+ content: "\e002";
+}
+.glyphicon-search:before {
+ content: "\e003";
+}
+.glyphicon-heart:before {
+ content: "\e005";
+}
+.glyphicon-star:before {
+ content: "\e006";
+}
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+.glyphicon-user:before {
+ content: "\e008";
+}
+.glyphicon-film:before {
+ content: "\e009";
+}
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+.glyphicon-th:before {
+ content: "\e011";
+}
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+.glyphicon-ok:before {
+ content: "\e013";
+}
+.glyphicon-remove:before {
+ content: "\e014";
+}
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+.glyphicon-off:before {
+ content: "\e017";
+}
+.glyphicon-signal:before {
+ content: "\e018";
+}
+.glyphicon-cog:before {
+ content: "\e019";
+}
+.glyphicon-trash:before {
+ content: "\e020";
+}
+.glyphicon-home:before {
+ content: "\e021";
+}
+.glyphicon-file:before {
+ content: "\e022";
+}
+.glyphicon-time:before {
+ content: "\e023";
+}
+.glyphicon-road:before {
+ content: "\e024";
+}
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+.glyphicon-download:before {
+ content: "\e026";
+}
+.glyphicon-upload:before {
+ content: "\e027";
+}
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+.glyphicon-lock:before {
+ content: "\e033";
+}
+.glyphicon-flag:before {
+ content: "\e034";
+}
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+.glyphicon-tag:before {
+ content: "\e041";
+}
+.glyphicon-tags:before {
+ content: "\e042";
+}
+.glyphicon-book:before {
+ content: "\e043";
+}
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+.glyphicon-print:before {
+ content: "\e045";
+}
+.glyphicon-camera:before {
+ content: "\e046";
+}
+.glyphicon-font:before {
+ content: "\e047";
+}
+.glyphicon-bold:before {
+ content: "\e048";
+}
+.glyphicon-italic:before {
+ content: "\e049";
+}
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+.glyphicon-list:before {
+ content: "\e056";
+}
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+.glyphicon-picture:before {
+ content: "\e060";
+}
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+.glyphicon-tint:before {
+ content: "\e064";
+}
+.glyphicon-edit:before {
+ content: "\e065";
+}
+.glyphicon-share:before {
+ content: "\e066";
+}
+.glyphicon-check:before {
+ content: "\e067";
+}
+.glyphicon-move:before {
+ content: "\e068";
+}
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+.glyphicon-backward:before {
+ content: "\e071";
+}
+.glyphicon-play:before {
+ content: "\e072";
+}
+.glyphicon-pause:before {
+ content: "\e073";
+}
+.glyphicon-stop:before {
+ content: "\e074";
+}
+.glyphicon-forward:before {
+ content: "\e075";
+}
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+.glyphicon-eject:before {
+ content: "\e078";
+}
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+.glyphicon-gift:before {
+ content: "\e102";
+}
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+.glyphicon-fire:before {
+ content: "\e104";
+}
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+.glyphicon-plane:before {
+ content: "\e108";
+}
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+.glyphicon-random:before {
+ content: "\e110";
+}
+.glyphicon-comment:before {
+ content: "\e111";
+}
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+.glyphicon-bell:before {
+ content: "\e123";
+}
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+.glyphicon-globe:before {
+ content: "\e135";
+}
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+.glyphicon-filter:before {
+ content: "\e138";
+}
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+.glyphicon-link:before {
+ content: "\e144";
+}
+.glyphicon-phone:before {
+ content: "\e145";
+}
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+.glyphicon-usd:before {
+ content: "\e148";
+}
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+.glyphicon-sort:before {
+ content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+.glyphicon-expand:before {
+ content: "\e158";
+}
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+.glyphicon-flash:before {
+ content: "\e162";
+}
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+.glyphicon-record:before {
+ content: "\e165";
+}
+.glyphicon-save:before {
+ content: "\e166";
+}
+.glyphicon-open:before {
+ content: "\e167";
+}
+.glyphicon-saved:before {
+ content: "\e168";
+}
+.glyphicon-import:before {
+ content: "\e169";
+}
+.glyphicon-export:before {
+ content: "\e170";
+}
+.glyphicon-send:before {
+ content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+.glyphicon-header:before {
+ content: "\e180";
+}
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+.glyphicon-tower:before {
+ content: "\e184";
+}
+.glyphicon-stats:before {
+ content: "\e185";
+}
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+.glyphicon-cd:before {
+ content: "\e201";
+}
+.glyphicon-save-file:before {
+ content: "\e202";
+}
+.glyphicon-open-file:before {
+ content: "\e203";
+}
+.glyphicon-level-up:before {
+ content: "\e204";
+}
+.glyphicon-copy:before {
+ content: "\e205";
+}
+.glyphicon-paste:before {
+ content: "\e206";
+}
+.glyphicon-alert:before {
+ content: "\e209";
+}
+.glyphicon-equalizer:before {
+ content: "\e210";
+}
+.glyphicon-king:before {
+ content: "\e211";
+}
+.glyphicon-queen:before {
+ content: "\e212";
+}
+.glyphicon-pawn:before {
+ content: "\e213";
+}
+.glyphicon-bishop:before {
+ content: "\e214";
+}
+.glyphicon-knight:before {
+ content: "\e215";
+}
+.glyphicon-baby-formula:before {
+ content: "\e216";
+}
+.glyphicon-tent:before {
+ content: "\26fa";
+}
+.glyphicon-blackboard:before {
+ content: "\e218";
+}
+.glyphicon-bed:before {
+ content: "\e219";
+}
+.glyphicon-apple:before {
+ content: "\f8ff";
+}
+.glyphicon-erase:before {
+ content: "\e221";
+}
+.glyphicon-hourglass:before {
+ content: "\231b";
+}
+.glyphicon-lamp:before {
+ content: "\e223";
+}
+.glyphicon-duplicate:before {
+ content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+ content: "\e225";
+}
+.glyphicon-scissors:before {
+ content: "\e226";
+}
+.glyphicon-bitcoin:before {
+ content: "\e227";
+}
+.glyphicon-btc:before {
+ content: "\e227";
+}
+.glyphicon-xbt:before {
+ content: "\e227";
+}
+.glyphicon-yen:before {
+ content: "\00a5";
+}
+.glyphicon-jpy:before {
+ content: "\00a5";
+}
+.glyphicon-ruble:before {
+ content: "\20bd";
+}
+.glyphicon-rub:before {
+ content: "\20bd";
+}
+.glyphicon-scale:before {
+ content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+ content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+ content: "\e232";
+}
+.glyphicon-education:before {
+ content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+ content: "\e234";
+}
+.glyphicon-option-vertical:before {
+ content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+ content: "\e236";
+}
+.glyphicon-modal-window:before {
+ content: "\e237";
+}
+.glyphicon-oil:before {
+ content: "\e238";
+}
+.glyphicon-grain:before {
+ content: "\e239";
+}
+.glyphicon-sunglasses:before {
+ content: "\e240";
+}
+.glyphicon-text-size:before {
+ content: "\e241";
+}
+.glyphicon-text-color:before {
+ content: "\e242";
+}
+.glyphicon-text-background:before {
+ content: "\e243";
+}
+.glyphicon-object-align-top:before {
+ content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+ content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+ content: "\e246";
+}
+.glyphicon-object-align-left:before {
+ content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+ content: "\e248";
+}
+.glyphicon-object-align-right:before {
+ content: "\e249";
+}
+.glyphicon-triangle-right:before {
+ content: "\e250";
+}
+.glyphicon-triangle-left:before {
+ content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+ content: "\e252";
+}
+.glyphicon-triangle-top:before {
+ content: "\e253";
+}
+.glyphicon-console:before {
+ content: "\e254";
+}
+.glyphicon-superscript:before {
+ content: "\e255";
+}
+.glyphicon-subscript:before {
+ content: "\e256";
+}
+.glyphicon-menu-left:before {
+ content: "\e257";
+}
+.glyphicon-menu-right:before {
+ content: "\e258";
+}
+.glyphicon-menu-down:before {
+ content: "\e259";
+}
+.glyphicon-menu-up:before {
+ content: "\e260";
+}
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+html {
+ font-size: 10px;
+
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #333;
+ background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+a {
+ color: #337ab7;
+ text-decoration: none;
+}
+a:hover,
+a:focus {
+ color: #23527c;
+ text-decoration: underline;
+}
+a:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+figure {
+ margin: 0;
+}
+img {
+ vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+}
+.img-rounded {
+ border-radius: 6px;
+}
+.img-thumbnail {
+ display: inline-block;
+ max-width: 100%;
+ height: auto;
+ padding: 4px;
+ line-height: 1.42857143;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ -webkit-transition: all .2s ease-in-out;
+ -o-transition: all .2s ease-in-out;
+ transition: all .2s ease-in-out;
+}
+.img-circle {
+ border-radius: 50%;
+}
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ border-top: 1px solid #eee;
+}
+.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;
+}
+[role="button"] {
+ cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.1;
+ color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+ font-weight: normal;
+ line-height: 1;
+ color: #777;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+ font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+ font-size: 75%;
+}
+h1,
+.h1 {
+ font-size: 36px;
+}
+h2,
+.h2 {
+ font-size: 30px;
+}
+h3,
+.h3 {
+ font-size: 24px;
+}
+h4,
+.h4 {
+ font-size: 18px;
+}
+h5,
+.h5 {
+ font-size: 14px;
+}
+h6,
+.h6 {
+ font-size: 12px;
+}
+p {
+ margin: 0 0 10px;
+}
+.lead {
+ margin-bottom: 20px;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .lead {
+ font-size: 21px;
+ }
+}
+small,
+.small {
+ font-size: 85%;
+}
+mark,
+.mark {
+ padding: .2em;
+ background-color: #fcf8e3;
+}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+.text-center {
+ text-align: center;
+}
+.text-justify {
+ text-align: justify;
+}
+.text-nowrap {
+ white-space: nowrap;
+}
+.text-lowercase {
+ text-transform: lowercase;
+}
+.text-uppercase {
+ text-transform: uppercase;
+}
+.text-capitalize {
+ text-transform: capitalize;
+}
+.text-muted {
+ color: #777;
+}
+.text-primary {
+ color: #337ab7;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+ color: #286090;
+}
+.text-success {
+ color: #3c763d;
+}
+a.text-success:hover,
+a.text-success:focus {
+ color: #2b542c;
+}
+.text-info {
+ color: #31708f;
+}
+a.text-info:hover,
+a.text-info:focus {
+ color: #245269;
+}
+.text-warning {
+ color: #8a6d3b;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+ color: #66512c;
+}
+.text-danger {
+ color: #a94442;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+ color: #843534;
+}
+.bg-primary {
+ color: #fff;
+ background-color: #337ab7;
+}
+a.bg-primary:hover,
+a.bg-primary:focus {
+ background-color: #286090;
+}
+.bg-success {
+ background-color: #dff0d8;
+}
+a.bg-success:hover,
+a.bg-success:focus {
+ background-color: #c1e2b3;
+}
+.bg-info {
+ background-color: #d9edf7;
+}
+a.bg-info:hover,
+a.bg-info:focus {
+ background-color: #afd9ee;
+}
+.bg-warning {
+ background-color: #fcf8e3;
+}
+a.bg-warning:hover,
+a.bg-warning:focus {
+ background-color: #f7ecb5;
+}
+.bg-danger {
+ background-color: #f2dede;
+}
+a.bg-danger:hover,
+a.bg-danger:focus {
+ background-color: #e4b9b9;
+}
+.page-header {
+ padding-bottom: 9px;
+ margin: 40px 0 20px;
+ border-bottom: 1px solid #eee;
+}
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline {
+ padding-left: 0;
+ margin-left: -5px;
+ list-style: none;
+}
+.list-inline > li {
+ display: inline-block;
+ padding-right: 5px;
+ padding-left: 5px;
+}
+dl {
+ margin-top: 0;
+ margin-bottom: 20px;
+}
+dt,
+dd {
+ line-height: 1.42857143;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ overflow: hidden;
+ clear: left;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+}
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #777;
+}
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ font-size: 17.5px;
+ border-left: 5px solid #eee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+ margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+ display: block;
+ font-size: 80%;
+ line-height: 1.42857143;
+ color: #777;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ text-align: right;
+ border-right: 5px solid #eee;
+ border-left: 0;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+ content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+ content: '\00A0 \2014';
+}
+address {
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 1.42857143;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ background-color: #f9f2f4;
+ border-radius: 4px;
+}
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #fff;
+ background-color: #333;
+ border-radius: 3px;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 1.42857143;
+ color: #333;
+ word-break: break-all;
+ word-wrap: break-word;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.container {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-right: auto;
+ margin-left: auto;
+}
+@media (min-width: 768px) {
+ .container {
+ width: 750px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 970px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ width: 1170px;
+ }
+}
+.container-fluid {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-right: auto;
+ margin-left: auto;
+}
+.row {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+ float: left;
+}
+.col-xs-12 {
+ width: 100%;
+}
+.col-xs-11 {
+ width: 91.66666667%;
+}
+.col-xs-10 {
+ width: 83.33333333%;
+}
+.col-xs-9 {
+ width: 75%;
+}
+.col-xs-8 {
+ width: 66.66666667%;
+}
+.col-xs-7 {
+ width: 58.33333333%;
+}
+.col-xs-6 {
+ width: 50%;
+}
+.col-xs-5 {
+ width: 41.66666667%;
+}
+.col-xs-4 {
+ width: 33.33333333%;
+}
+.col-xs-3 {
+ width: 25%;
+}
+.col-xs-2 {
+ width: 16.66666667%;
+}
+.col-xs-1 {
+ width: 8.33333333%;
+}
+.col-xs-pull-12 {
+ right: 100%;
+}
+.col-xs-pull-11 {
+ right: 91.66666667%;
+}
+.col-xs-pull-10 {
+ right: 83.33333333%;
+}
+.col-xs-pull-9 {
+ right: 75%;
+}
+.col-xs-pull-8 {
+ right: 66.66666667%;
+}
+.col-xs-pull-7 {
+ right: 58.33333333%;
+}
+.col-xs-pull-6 {
+ right: 50%;
+}
+.col-xs-pull-5 {
+ right: 41.66666667%;
+}
+.col-xs-pull-4 {
+ right: 33.33333333%;
+}
+.col-xs-pull-3 {
+ right: 25%;
+}
+.col-xs-pull-2 {
+ right: 16.66666667%;
+}
+.col-xs-pull-1 {
+ right: 8.33333333%;
+}
+.col-xs-pull-0 {
+ right: auto;
+}
+.col-xs-push-12 {
+ left: 100%;
+}
+.col-xs-push-11 {
+ left: 91.66666667%;
+}
+.col-xs-push-10 {
+ left: 83.33333333%;
+}
+.col-xs-push-9 {
+ left: 75%;
+}
+.col-xs-push-8 {
+ left: 66.66666667%;
+}
+.col-xs-push-7 {
+ left: 58.33333333%;
+}
+.col-xs-push-6 {
+ left: 50%;
+}
+.col-xs-push-5 {
+ left: 41.66666667%;
+}
+.col-xs-push-4 {
+ left: 33.33333333%;
+}
+.col-xs-push-3 {
+ left: 25%;
+}
+.col-xs-push-2 {
+ left: 16.66666667%;
+}
+.col-xs-push-1 {
+ left: 8.33333333%;
+}
+.col-xs-push-0 {
+ left: auto;
+}
+.col-xs-offset-12 {
+ margin-left: 100%;
+}
+.col-xs-offset-11 {
+ margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+ margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+ margin-left: 75%;
+}
+.col-xs-offset-8 {
+ margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+ margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+ margin-left: 50%;
+}
+.col-xs-offset-5 {
+ margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+ margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+ margin-left: 25%;
+}
+.col-xs-offset-2 {
+ margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+ margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ float: left;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666667%;
+ }
+ .col-sm-10 {
+ width: 83.33333333%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666667%;
+ }
+ .col-sm-7 {
+ width: 58.33333333%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.66666667%;
+ }
+ .col-sm-1 {
+ width: 8.33333333%;
+ }
+ .col-sm-pull-12 {
+ right: 100%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-sm-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-sm-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-sm-pull-0 {
+ right: auto;
+ }
+ .col-sm-push-12 {
+ left: 100%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666667%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666667%;
+ }
+ .col-sm-push-7 {
+ left: 58.33333333%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666667%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-2 {
+ left: 16.66666667%;
+ }
+ .col-sm-push-1 {
+ left: 8.33333333%;
+ }
+ .col-sm-push-0 {
+ left: auto;
+ }
+ .col-sm-offset-12 {
+ margin-left: 100%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-sm-offset-0 {
+ margin-left: 0;
+ }
+}
+@media (min-width: 992px) {
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ float: left;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666667%;
+ }
+ .col-md-10 {
+ width: 83.33333333%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666667%;
+ }
+ .col-md-7 {
+ width: 58.33333333%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.66666667%;
+ }
+ .col-md-1 {
+ width: 8.33333333%;
+ }
+ .col-md-pull-12 {
+ right: 100%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-md-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-md-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-md-pull-0 {
+ right: auto;
+ }
+ .col-md-push-12 {
+ left: 100%;
+ }
+ .col-md-push-11 {
+ left: 91.66666667%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-8 {
+ left: 66.66666667%;
+ }
+ .col-md-push-7 {
+ left: 58.33333333%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-5 {
+ left: 41.66666667%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-2 {
+ left: 16.66666667%;
+ }
+ .col-md-push-1 {
+ left: 8.33333333%;
+ }
+ .col-md-push-0 {
+ left: auto;
+ }
+ .col-md-offset-12 {
+ margin-left: 100%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0;
+ }
+}
+@media (min-width: 1200px) {
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ float: left;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666667%;
+ }
+ .col-lg-10 {
+ width: 83.33333333%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666667%;
+ }
+ .col-lg-7 {
+ width: 58.33333333%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.66666667%;
+ }
+ .col-lg-1 {
+ width: 8.33333333%;
+ }
+ .col-lg-pull-12 {
+ right: 100%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-lg-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-lg-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-lg-pull-0 {
+ right: auto;
+ }
+ .col-lg-push-12 {
+ left: 100%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666667%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666667%;
+ }
+ .col-lg-push-7 {
+ left: 58.33333333%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666667%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-2 {
+ left: 16.66666667%;
+ }
+ .col-lg-push-1 {
+ left: 8.33333333%;
+ }
+ .col-lg-push-0 {
+ left: auto;
+ }
+ .col-lg-offset-12 {
+ margin-left: 100%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0;
+ }
+}
+table {
+ background-color: transparent;
+}
+caption {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ color: #777;
+ text-align: left;
+}
+th {
+ text-align: left;
+}
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 8px;
+ line-height: 1.42857143;
+ vertical-align: top;
+ border-top: 1px solid #ddd;
+}
+.table > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #ddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+ border-top: 0;
+}
+.table > tbody + tbody {
+ border-top: 2px solid #ddd;
+}
+.table .table {
+ background-color: #fff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+ padding: 5px;
+}
+.table-bordered {
+ border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover {
+ background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+ position: static;
+ display: table-column;
+ float: none;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+ position: static;
+ display: table-cell;
+ float: none;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+ background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+ background-color: #e8e8e8;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+ background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+ background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+ background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+ background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+ background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+ background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+ background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+ background-color: #ebcccc;
+}
+.table-responsive {
+ min-height: .01%;
+ overflow-x: auto;
+}
+@media screen and (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid #ddd;
+ }
+ .table-responsive > .table {
+ margin-bottom: 0;
+ }
+ .table-responsive > .table > thead > tr > th,
+ .table-responsive > .table > tbody > tr > th,
+ .table-responsive > .table > tfoot > tr > th,
+ .table-responsive > .table > thead > tr > td,
+ .table-responsive > .table > tbody > tr > td,
+ .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+ }
+ .table-responsive > .table-bordered {
+ border: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+ }
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+ }
+}
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: inherit;
+ color: #333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+label {
+ display: inline-block;
+ max-width: 100%;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ line-height: normal;
+}
+input[type="file"] {
+ display: block;
+}
+input[type="range"] {
+ display: block;
+ width: 100%;
+}
+select[multiple],
+select[size] {
+ height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+output {
+ display: block;
+ padding-top: 7px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555;
+}
+.form-control {
+ display: block;
+ width: 100%;
+ height: 34px;
+ padding: 6px 12px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+}
+.form-control::-moz-placeholder {
+ color: #999;
+ opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+ color: #999;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ background-color: #eee;
+ opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+}
+textarea.form-control {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ input[type="date"].form-control,
+ input[type="time"].form-control,
+ input[type="datetime-local"].form-control,
+ input[type="month"].form-control {
+ line-height: 34px;
+ }
+ input[type="date"].input-sm,
+ input[type="time"].input-sm,
+ input[type="datetime-local"].input-sm,
+ input[type="month"].input-sm,
+ .input-group-sm input[type="date"],
+ .input-group-sm input[type="time"],
+ .input-group-sm input[type="datetime-local"],
+ .input-group-sm input[type="month"] {
+ line-height: 30px;
+ }
+ input[type="date"].input-lg,
+ input[type="time"].input-lg,
+ input[type="datetime-local"].input-lg,
+ input[type="month"].input-lg,
+ .input-group-lg input[type="date"],
+ .input-group-lg input[type="time"],
+ .input-group-lg input[type="datetime-local"],
+ .input-group-lg input[type="month"] {
+ line-height: 46px;
+ }
+}
+.form-group {
+ margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ position: absolute;
+ margin-top: 4px \9;
+ margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+ position: relative;
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ vertical-align: middle;
+ cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
+}
+.form-control-static {
+ min-height: 34px;
+ padding-top: 7px;
+ padding-bottom: 7px;
+ margin-bottom: 0;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-right: 0;
+ padding-left: 0;
+}
+.input-sm {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+select.input-sm {
+ height: 30px;
+ line-height: 30px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+ height: auto;
+}
+.form-group-sm .form-control {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.form-group-sm select.form-control {
+ height: 30px;
+ line-height: 30px;
+}
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+ height: auto;
+}
+.form-group-sm .form-control-static {
+ height: 30px;
+ min-height: 32px;
+ padding: 6px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+}
+.input-lg {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+select.input-lg {
+ height: 46px;
+ line-height: 46px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+ height: auto;
+}
+.form-group-lg .form-control {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+.form-group-lg select.form-control {
+ height: 46px;
+ line-height: 46px;
+}
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+ height: auto;
+}
+.form-group-lg .form-control-static {
+ height: 46px;
+ min-height: 38px;
+ padding: 11px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+}
+.has-feedback {
+ position: relative;
+}
+.has-feedback .form-control {
+ padding-right: 42.5px;
+}
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 34px;
+ height: 34px;
+ line-height: 34px;
+ text-align: center;
+ pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+ color: #3c763d;
+}
+.has-success .form-control {
+ border-color: #3c763d;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #3c763d;
+}
+.has-success .form-control-feedback {
+ color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+ color: #8a6d3b;
+}
+.has-warning .form-control {
+ border-color: #8a6d3b;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-warning .form-control:focus {
+ border-color: #66512c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+ color: #8a6d3b;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+ color: #a94442;
+}
+.has-error .form-control {
+ border-color: #a94442;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-error .form-control:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #a94442;
+}
+.has-error .form-control-feedback {
+ color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+ top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+ top: 0;
+}
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
+}
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .form-inline .form-control-static {
+ display: inline-block;
+ }
+ .form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .form-inline .input-group .input-group-addon,
+ .form-inline .input-group .input-group-btn,
+ .form-inline .input-group .form-control {
+ width: auto;
+ }
+ .form-inline .input-group > .form-control {
+ width: 100%;
+ }
+ .form-inline .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio label,
+ .form-inline .checkbox label {
+ padding-left: 0;
+ }
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .form-inline .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ padding-top: 7px;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 27px;
+}
+.form-horizontal .form-group {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ padding-top: 7px;
+ margin-bottom: 0;
+ text-align: right;
+ }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+ right: 15px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-lg .control-label {
+ padding-top: 14.333333px;
+ font-size: 18px;
+ }
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 6px;
+ font-size: 12px;
+ }
+}
+.btn {
+ display: inline-block;
+ padding: 6px 12px;
+ margin-bottom: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+ color: #333;
+ text-decoration: none;
+}
+.btn:active,
+.btn.active {
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ cursor: not-allowed;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ opacity: .65;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+ pointer-events: none;
+}
+.btn-default {
+ color: #333;
+ background-color: #fff;
+ border-color: #ccc;
+}
+.btn-default:focus,
+.btn-default.focus {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #8c8c8c;
+}
+.btn-default:hover {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+ color: #333;
+ background-color: #d4d4d4;
+ border-color: #8c8c8c;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #fff;
+ border-color: #ccc;
+}
+.btn-default .badge {
+ color: #fff;
+ background-color: #333;
+}
+.btn-primary {
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #2e6da4;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+ color: #fff;
+ background-color: #286090;
+ border-color: #122b40;
+}
+.btn-primary:hover {
+ color: #fff;
+ background-color: #286090;
+ border-color: #204d74;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ color: #fff;
+ background-color: #286090;
+ border-color: #204d74;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+ color: #fff;
+ background-color: #204d74;
+ border-color: #122b40;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #337ab7;
+ border-color: #2e6da4;
+}
+.btn-primary .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.btn-success {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+.btn-success:focus,
+.btn-success.focus {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #255625;
+}
+.btn-success:hover {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #398439;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+ color: #fff;
+ background-color: #398439;
+ border-color: #255625;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ background-image: none;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+.btn-success .badge {
+ color: #5cb85c;
+ background-color: #fff;
+}
+.btn-info {
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+.btn-info:focus,
+.btn-info.focus {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #1b6d85;
+}
+.btn-info:hover {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #269abc;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+ color: #fff;
+ background-color: #269abc;
+ border-color: #1b6d85;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ background-image: none;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+.btn-info .badge {
+ color: #5bc0de;
+ background-color: #fff;
+}
+.btn-warning {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #985f0d;
+}
+.btn-warning:hover {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #d58512;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+ color: #fff;
+ background-color: #d58512;
+ border-color: #985f0d;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ background-image: none;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.btn-warning .badge {
+ color: #f0ad4e;
+ background-color: #fff;
+}
+.btn-danger {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #761c19;
+}
+.btn-danger:hover {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #ac2925;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+ color: #fff;
+ background-color: #ac2925;
+ border-color: #761c19;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+.btn-danger .badge {
+ color: #d9534f;
+ background-color: #fff;
+}
+.btn-link {
+ font-weight: normal;
+ color: #337ab7;
+ border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+ color: #23527c;
+ text-decoration: underline;
+ background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #777;
+ text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+ padding: 1px 5px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity .15s linear;
+ -o-transition: opacity .15s linear;
+ transition: opacity .15s linear;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ display: none;
+}
+.collapse.in {
+ display: block;
+}
+tr.collapse.in {
+ display: table-row;
+}
+tbody.collapse.in {
+ display: table-row-group;
+}
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition-timing-function: ease;
+ -o-transition-timing-function: ease;
+ transition-timing-function: ease;
+ -webkit-transition-duration: .35s;
+ -o-transition-duration: .35s;
+ transition-duration: .35s;
+ -webkit-transition-property: height, visibility;
+ -o-transition-property: height, visibility;
+ transition-property: height, visibility;
+}
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 4px dashed;
+ border-top: 4px solid \9;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+}
+.dropup,
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle:focus {
+ outline: 0;
+}
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ font-size: 14px;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-radius: 4px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.42857143;
+ color: #333;
+ white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ color: #262626;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #fff;
+ text-decoration: none;
+ background-color: #337ab7;
+ outline: 0;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #777;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.open > a {
+ outline: 0;
+}
+.dropdown-menu-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu-left {
+ right: auto;
+ left: 0;
+}
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 12px;
+ line-height: 1.42857143;
+ color: #777;
+ white-space: nowrap;
+}
+.dropdown-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 990;
+}
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ content: "";
+ border-top: 0;
+ border-bottom: 4px dashed;
+ border-bottom: 4px solid \9;
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+ .navbar-right .dropdown-menu {
+ right: 0;
+ left: auto;
+ }
+ .navbar-right .dropdown-menu-left {
+ right: auto;
+ left: 0;
+ }
+}
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+ margin-left: -1px;
+}
+.btn-toolbar {
+ margin-left: -5px;
+}
+.btn-toolbar .btn,
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+ float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+ margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-right: 8px;
+ padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-right: 12px;
+ padding-left: 12px;
+}
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn .caret {
+ margin-left: 0;
+}
+.btn-lg .caret {
+ border-width: 5px 5px 0;
+ border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+ border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+ display: table-cell;
+ float: none;
+ width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+ width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+ left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+.input-group {
+ position: relative;
+ display: table;
+ border-collapse: separate;
+}
+.input-group[class*="col-"] {
+ float: none;
+ padding-right: 0;
+ padding-left: 0;
+}
+.input-group .form-control {
+ position: relative;
+ z-index: 2;
+ float: left;
+ width: 100%;
+ margin-bottom: 0;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+ height: 46px;
+ line-height: 46px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+ height: 30px;
+ line-height: 30px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+.input-group-addon {
+ padding: 6px 12px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1;
+ color: #555;
+ text-align: center;
+ background-color: #eee;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+.input-group-addon.input-sm {
+ padding: 5px 10px;
+ font-size: 12px;
+ border-radius: 3px;
+}
+.input-group-addon.input-lg {
+ padding: 10px 16px;
+ font-size: 18px;
+ border-radius: 6px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group-addon:first-child {
+ border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.input-group-addon:last-child {
+ border-left: 0;
+}
+.input-group-btn {
+ position: relative;
+ font-size: 0;
+ white-space: nowrap;
+}
+.input-group-btn > .btn {
+ position: relative;
+}
+.input-group-btn > .btn + .btn {
+ margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+ z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+ margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+ z-index: 2;
+ margin-left: -1px;
+}
+.nav {
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+.nav > li {
+ position: relative;
+ display: block;
+}
+.nav > li > a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eee;
+}
+.nav > li.disabled > a {
+ color: #777;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #777;
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #eee;
+ border-color: #337ab7;
+}
+.nav .nav-divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+.nav > li > a > img {
+ max-width: none;
+}
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ margin-right: 2px;
+ line-height: 1.42857143;
+ border: 1px solid transparent;
+ border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #555;
+ cursor: default;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+}
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-tabs.nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs.nav-justified > li > a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+ border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li > a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+ }
+ .nav-tabs.nav-justified > .active > a,
+ .nav-tabs.nav-justified > .active > a:hover,
+ .nav-tabs.nav-justified > .active > a:focus {
+ border-bottom-color: #fff;
+ }
+}
+.nav-pills > li {
+ float: left;
+}
+.nav-pills > li > a {
+ border-radius: 4px;
+}
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ color: #fff;
+ background-color: #337ab7;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li + li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+.nav-justified {
+ width: 100%;
+}
+.nav-justified > li {
+ float: none;
+}
+.nav-justified > li > a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+ border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs-justified > li > a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+ }
+ .nav-tabs-justified > .active > a,
+ .nav-tabs-justified > .active > a:hover,
+ .nav-tabs-justified > .active > a:focus {
+ border-bottom-color: #fff;
+ }
+}
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.navbar {
+ position: relative;
+ min-height: 50px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 4px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+.navbar-collapse {
+ padding-right: 15px;
+ padding-left: 15px;
+ overflow-x: visible;
+ -webkit-overflow-scrolling: touch;
+ border-top: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+ }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+@media (min-width: 768px) {
+ .container > .navbar-header,
+ .container-fluid > .navbar-header,
+ .container > .navbar-collapse,
+ .container-fluid > .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+.navbar-static-top {
+ z-index: 1000;
+ border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+@media (min-width: 768px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0;
+ border-width: 1px 0 0;
+}
+.navbar-brand {
+ float: left;
+ height: 50px;
+ padding: 15px 15px;
+ font-size: 18px;
+ line-height: 20px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
+}
+.navbar-brand > img {
+ display: block;
+}
+@media (min-width: 768px) {
+ .navbar > .container .navbar-brand,
+ .navbar > .container-fluid .navbar-brand {
+ margin-left: -15px;
+ }
+}
+.navbar-toggle {
+ position: relative;
+ float: right;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-right: 15px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+.navbar-toggle:focus {
+ outline: 0;
+}
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+.navbar-nav {
+ margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 20px;
+}
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ }
+}
+.navbar-form {
+ padding: 10px 15px;
+ margin-top: 8px;
+ margin-right: -15px;
+ margin-bottom: 8px;
+ margin-left: -15px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control-static {
+ display: inline-block;
+ }
+ .navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .navbar-form .input-group .input-group-addon,
+ .navbar-form .input-group .input-group-btn,
+ .navbar-form .input-group .form-control {
+ width: auto;
+ }
+ .navbar-form .input-group > .form-control {
+ width: 100%;
+ }
+ .navbar-form .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio label,
+ .navbar-form .checkbox label {
+ padding-left: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .navbar-form .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+@media (max-width: 767px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+ .navbar-form .form-group:last-child {
+ margin-bottom: 0;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-form {
+ width: auto;
+ padding-top: 0;
+ padding-bottom: 0;
+ margin-right: 0;
+ margin-left: 0;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+}
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ margin-bottom: 0;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.navbar-btn {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+.navbar-btn.btn-sm {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.navbar-btn.btn-xs {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-text {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+ .navbar-text {
+ float: left;
+ margin-right: 15px;
+ margin-left: 15px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-left {
+ float: left !important;
+ }
+ .navbar-right {
+ float: right !important;
+ margin-right: -15px;
+ }
+ .navbar-right ~ .navbar-right {
+ margin-right: 0;
+ }
+}
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+ color: #777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
+}
+.navbar-default .navbar-text {
+ color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+ color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+ color: #333;
+ background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+ color: #ccc;
+ background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+ border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+}
+@media (max-width: 767px) {
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #333;
+ background-color: transparent;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #ccc;
+ background-color: transparent;
+ }
+}
+.navbar-default .navbar-link {
+ color: #777;
+}
+.navbar-default .navbar-link:hover {
+ color: #333;
+}
+.navbar-default .btn-link {
+ color: #777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+ color: #333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #ccc;
+}
+.navbar-inverse {
+ background-color: #222;
+ border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #fff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+ color: #fff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+ color: #fff;
+ background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+ color: #444;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+ border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #fff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+ color: #fff;
+ background-color: #080808;
+}
+@media (max-width: 767px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #9d9d9d;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #fff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #fff;
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #444;
+ background-color: transparent;
+ }
+}
+.navbar-inverse .navbar-link {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-link:hover {
+ color: #fff;
+}
+.navbar-inverse .btn-link {
+ color: #9d9d9d;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+ color: #fff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444;
+}
+.breadcrumb {
+ padding: 8px 15px;
+ margin-bottom: 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+}
+.breadcrumb > li {
+ display: inline-block;
+}
+.breadcrumb > li + li:before {
+ padding: 0 5px;
+ color: #ccc;
+ content: "/\00a0";
+}
+.breadcrumb > .active {
+ color: #777;
+}
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 4px;
+}
+.pagination > li {
+ display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ margin-left: -1px;
+ line-height: 1.42857143;
+ color: #337ab7;
+ text-decoration: none;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ z-index: 3;
+ color: #23527c;
+ background-color: #eee;
+ border-color: #ddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ z-index: 2;
+ color: #fff;
+ cursor: default;
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #fff;
+ border-color: #ddd;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-top-left-radius: 6px;
+ border-bottom-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-top-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+}
+.pager {
+ padding-left: 0;
+ margin: 20px 0;
+ text-align: center;
+ list-style: none;
+}
+.pager li {
+ display: inline;
+}
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 15px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #eee;
+}
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #fff;
+}
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.label:empty {
+ display: none;
+}
+.btn .label {
+ position: relative;
+ top: -1px;
+}
+.label-default {
+ background-color: #777;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #5e5e5e;
+}
+.label-primary {
+ background-color: #337ab7;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #286090;
+}
+.label-success {
+ background-color: #5cb85c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #449d44;
+}
+.label-info {
+ background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #31b0d5;
+}
+.label-warning {
+ background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #ec971f;
+}
+.label-danger {
+ background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #c9302c;
+}
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 12px;
+ font-weight: bold;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ background-color: #777;
+ border-radius: 10px;
+}
+.badge:empty {
+ display: none;
+}
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+ top: 0;
+ padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.list-group-item > .badge {
+ float: right;
+}
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
+}
+.jumbotron {
+ padding-top: 30px;
+ padding-bottom: 30px;
+ margin-bottom: 30px;
+ color: inherit;
+ background-color: #eee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+ color: inherit;
+}
+.jumbotron p {
+ margin-bottom: 15px;
+ font-size: 21px;
+ font-weight: 200;
+}
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+ border-radius: 6px;
+}
+.jumbotron .container {
+ max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding-top: 48px;
+ padding-bottom: 48px;
+ }
+ .container .jumbotron,
+ .container-fluid .jumbotron {
+ padding-right: 60px;
+ padding-left: 60px;
+ }
+ .jumbotron h1,
+ .jumbotron .h1 {
+ font-size: 63px;
+ }
+}
+.thumbnail {
+ display: block;
+ padding: 4px;
+ margin-bottom: 20px;
+ line-height: 1.42857143;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ -webkit-transition: border .2s ease-in-out;
+ -o-transition: border .2s ease-in-out;
+ transition: border .2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+ margin-right: auto;
+ margin-left: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+ border-color: #337ab7;
+}
+.thumbnail .caption {
+ padding: 9px;
+ color: #333;
+}
+.alert {
+ padding: 15px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+.alert h4 {
+ margin-top: 0;
+ color: inherit;
+}
+.alert .alert-link {
+ font-weight: bold;
+}
+.alert > p,
+.alert > ul {
+ margin-bottom: 0;
+}
+.alert > p + p {
+ margin-top: 5px;
+}
+.alert-dismissable,
+.alert-dismissible {
+ padding-right: 35px;
+}
+.alert-dismissable .close,
+.alert-dismissible .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
+}
+.alert-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+.alert-success hr {
+ border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+ color: #2b542c;
+}
+.alert-info {
+ color: #31708f;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+.alert-info hr {
+ border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+ color: #245269;
+}
+.alert-warning {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+}
+.alert-warning hr {
+ border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+ color: #66512c;
+}
+.alert-danger {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1;
+}
+.alert-danger hr {
+ border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+ color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+.progress {
+ height: 20px;
+ margin-bottom: 20px;
+ overflow: hidden;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+}
+.progress-bar {
+ float: left;
+ width: 0;
+ height: 100%;
+ font-size: 12px;
+ line-height: 20px;
+ color: #fff;
+ text-align: center;
+ background-color: #337ab7;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+ -webkit-transition: width .6s ease;
+ -o-transition: width .6s ease;
+ transition: width .6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+ background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+ background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+ background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+ background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.media {
+ margin-top: 15px;
+}
+.media:first-child {
+ margin-top: 0;
+}
+.media,
+.media-body {
+ overflow: hidden;
+ zoom: 1;
+}
+.media-body {
+ width: 10000px;
+}
+.media-object {
+ display: block;
+}
+.media-object.img-thumbnail {
+ max-width: none;
+}
+.media-right,
+.media > .pull-right {
+ padding-left: 10px;
+}
+.media-left,
+.media > .pull-left {
+ padding-right: 10px;
+}
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+.media-middle {
+ vertical-align: middle;
+}
+.media-bottom {
+ vertical-align: bottom;
+}
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
+.list-group {
+ padding-left: 0;
+ margin-bottom: 20px;
+}
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+.list-group-item:first-child {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+a.list-group-item,
+button.list-group-item {
+ color: #555;
+}
+a.list-group-item .list-group-item-heading,
+button.list-group-item .list-group-item-heading {
+ color: #333;
+}
+a.list-group-item:hover,
+button.list-group-item:hover,
+a.list-group-item:focus,
+button.list-group-item:focus {
+ color: #555;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+button.list-group-item {
+ width: 100%;
+ text-align: left;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #eee;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+ color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+ color: #777;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ z-index: 2;
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+ color: inherit;
+}
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+ color: #c7ddef;
+}
+.list-group-item-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+}
+a.list-group-item-success,
+button.list-group-item-success {
+ color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-success:hover,
+button.list-group-item-success:hover,
+a.list-group-item-success:focus,
+button.list-group-item-success:focus {
+ color: #3c763d;
+ background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+button.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+button.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus,
+button.list-group-item-success.active:focus {
+ color: #fff;
+ background-color: #3c763d;
+ border-color: #3c763d;
+}
+.list-group-item-info {
+ color: #31708f;
+ background-color: #d9edf7;
+}
+a.list-group-item-info,
+button.list-group-item-info {
+ color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-info:hover,
+button.list-group-item-info:hover,
+a.list-group-item-info:focus,
+button.list-group-item-info:focus {
+ color: #31708f;
+ background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+button.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+button.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus,
+button.list-group-item-info.active:focus {
+ color: #fff;
+ background-color: #31708f;
+ border-color: #31708f;
+}
+.list-group-item-warning {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+}
+a.list-group-item-warning,
+button.list-group-item-warning {
+ color: #8a6d3b;
+}
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-warning:hover,
+button.list-group-item-warning:hover,
+a.list-group-item-warning:focus,
+button.list-group-item-warning:focus {
+ color: #8a6d3b;
+ background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+button.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+button.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus,
+button.list-group-item-warning.active:focus {
+ color: #fff;
+ background-color: #8a6d3b;
+ border-color: #8a6d3b;
+}
+.list-group-item-danger {
+ color: #a94442;
+ background-color: #f2dede;
+}
+a.list-group-item-danger,
+button.list-group-item-danger {
+ color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-danger:hover,
+button.list-group-item-danger:hover,
+a.list-group-item-danger:focus,
+button.list-group-item-danger:focus {
+ color: #a94442;
+ background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+button.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+button.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus,
+button.list-group-item-danger.active:focus {
+ color: #fff;
+ background-color: #a94442;
+ border-color: #a94442;
+}
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+.panel {
+ margin-bottom: 20px;
+ background-color: #fff;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 16px;
+ color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+ color: inherit;
+}
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #ddd;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+ margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+ border-width: 1px 0;
+ border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+ border-top: 0;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+ border-bottom: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+.list-group + .panel-footer {
+ border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+ margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+ padding-right: 15px;
+ padding-left: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+ border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+ border-top-right-radius: 3px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+ border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+ border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+ border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+ border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+ border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+ border-bottom: 0;
+}
+.panel > .table-responsive {
+ margin-bottom: 0;
+ border: 0;
+}
+.panel-group {
+ margin-bottom: 20px;
+}
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 4px;
+}
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+.panel-group .panel-heading {
+ border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+ border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+ border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #ddd;
+}
+.panel-default {
+ border-color: #ddd;
+}
+.panel-default > .panel-heading {
+ color: #333;
+ background-color: #f5f5f5;
+ border-color: #ddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ddd;
+}
+.panel-default > .panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ddd;
+}
+.panel-primary {
+ border-color: #337ab7;
+}
+.panel-primary > .panel-heading {
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #337ab7;
+}
+.panel-primary > .panel-heading .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #337ab7;
+}
+.panel-success {
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #d6e9c6;
+}
+.panel-success > .panel-heading .badge {
+ color: #dff0d8;
+ background-color: #3c763d;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #d6e9c6;
+}
+.panel-info {
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+ color: #31708f;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #bce8f1;
+}
+.panel-info > .panel-heading .badge {
+ color: #d9edf7;
+ background-color: #31708f;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #bce8f1;
+}
+.panel-warning {
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #faebcc;
+}
+.panel-warning > .panel-heading .badge {
+ color: #fcf8e3;
+ background-color: #8a6d3b;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #faebcc;
+}
+.panel-danger {
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ebccd1;
+}
+.panel-danger > .panel-heading .badge {
+ color: #f2dede;
+ background-color: #a94442;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ebccd1;
+}
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
+ overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 0;
+}
+.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+}
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, .15);
+}
+.well-lg {
+ padding: 24px;
+ border-radius: 6px;
+}
+.well-sm {
+ padding: 9px;
+ border-radius: 3px;
+}
+.close {
+ float: right;
+ font-size: 21px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000;
+ text-shadow: 0 1px 0 #fff;
+ filter: alpha(opacity=20);
+ opacity: .2;
+}
+.close:hover,
+.close:focus {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+button.close {
+ -webkit-appearance: none;
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+}
+.modal-open {
+ overflow: hidden;
+}
+.modal {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1050;
+ display: none;
+ overflow: hidden;
+ -webkit-overflow-scrolling: touch;
+ outline: 0;
+}
+.modal.fade .modal-dialog {
+ -webkit-transition: -webkit-transform .3s ease-out;
+ -o-transition: -o-transform .3s ease-out;
+ transition: transform .3s ease-out;
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+}
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px;
+}
+.modal-content {
+ position: relative;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #999;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: 6px;
+ outline: 0;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+}
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000;
+}
+.modal-backdrop.fade {
+ filter: alpha(opacity=0);
+ opacity: 0;
+}
+.modal-backdrop.in {
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+.modal-header {
+ min-height: 16.42857143px;
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+}
+.modal-header .close {
+ margin-top: -2px;
+}
+.modal-title {
+ margin: 0;
+ line-height: 1.42857143;
+}
+.modal-body {
+ position: relative;
+ padding: 15px;
+}
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+ margin-bottom: 0;
+ margin-left: 5px;
+}
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
+}
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+@media (min-width: 768px) {
+ .modal-dialog {
+ width: 600px;
+ margin: 30px auto;
+ }
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ }
+ .modal-sm {
+ width: 300px;
+ }
+}
+@media (min-width: 992px) {
+ .modal-lg {
+ width: 900px;
+ }
+}
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ white-space: normal;
+ filter: alpha(opacity=0);
+ opacity: 0;
+
+ line-break: auto;
+}
+.tooltip.in {
+ filter: alpha(opacity=90);
+ opacity: .9;
+}
+.tooltip.top {
+ padding: 5px 0;
+ margin-top: -3px;
+}
+.tooltip.right {
+ padding: 0 5px;
+ margin-left: 3px;
+}
+.tooltip.bottom {
+ padding: 5px 0;
+ margin-top: 3px;
+}
+.tooltip.left {
+ padding: 0 5px;
+ margin-left: -3px;
+}
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #fff;
+ text-align: center;
+ background-color: #000;
+ border-radius: 4px;
+}
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+.tooltip.top-left .tooltip-arrow {
+ right: 5px;
+ bottom: 0;
+ margin-bottom: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+.tooltip.top-right .tooltip-arrow {
+ bottom: 0;
+ left: 5px;
+ margin-bottom: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-width: 5px 5px 5px 0;
+ border-right-color: #000;
+}
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #000;
+}
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ right: 5px;
+ margin-top: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ left: 5px;
+ margin-top: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ max-width: 276px;
+ padding: 1px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ white-space: normal;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+
+ line-break: auto;
+}
+.popover.top {
+ margin-top: -10px;
+}
+.popover.right {
+ margin-left: 10px;
+}
+.popover.bottom {
+ margin-top: 10px;
+}
+.popover.left {
+ margin-left: -10px;
+}
+.popover-title {
+ padding: 8px 14px;
+ margin: 0;
+ font-size: 14px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0;
+}
+.popover-content {
+ padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.popover > .arrow {
+ border-width: 11px;
+}
+.popover > .arrow:after {
+ content: "";
+ border-width: 10px;
+}
+.popover.top > .arrow {
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-color: #999;
+ border-top-color: rgba(0, 0, 0, .25);
+ border-bottom-width: 0;
+}
+.popover.top > .arrow:after {
+ bottom: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-color: #fff;
+ border-bottom-width: 0;
+}
+.popover.right > .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-right-color: #999;
+ border-right-color: rgba(0, 0, 0, .25);
+ border-left-width: 0;
+}
+.popover.right > .arrow:after {
+ bottom: -10px;
+ left: 1px;
+ content: " ";
+ border-right-color: #fff;
+ border-left-width: 0;
+}
+.popover.bottom > .arrow {
+ top: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999;
+ border-bottom-color: rgba(0, 0, 0, .25);
+}
+.popover.bottom > .arrow:after {
+ top: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-width: 0;
+ border-bottom-color: #fff;
+}
+.popover.left > .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999;
+ border-left-color: rgba(0, 0, 0, .25);
+}
+.popover.left > .arrow:after {
+ right: 1px;
+ bottom: -10px;
+ content: " ";
+ border-right-width: 0;
+ border-left-color: #fff;
+}
+.carousel {
+ position: relative;
+}
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+.carousel-inner > .item {
+ position: relative;
+ display: none;
+ -webkit-transition: .6s ease-in-out left;
+ -o-transition: .6s ease-in-out left;
+ transition: .6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ line-height: 1;
+}
+@media all and (transform-3d), (-webkit-transform-3d) {
+ .carousel-inner > .item {
+ -webkit-transition: -webkit-transform .6s ease-in-out;
+ -o-transition: -o-transform .6s ease-in-out;
+ transition: transform .6s ease-in-out;
+
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000px;
+ perspective: 1000px;
+ }
+ .carousel-inner > .item.next,
+ .carousel-inner > .item.active.right {
+ left: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+ .carousel-inner > .item.prev,
+ .carousel-inner > .item.active.left {
+ left: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+ .carousel-inner > .item.next.left,
+ .carousel-inner > .item.prev.right,
+ .carousel-inner > .item.active {
+ left: 0;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ display: block;
+}
+.carousel-inner > .active {
+ left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.carousel-inner > .next {
+ left: 100%;
+}
+.carousel-inner > .prev {
+ left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+ left: 0;
+}
+.carousel-inner > .active.left {
+ left: -100%;
+}
+.carousel-inner > .active.right {
+ left: 100%;
+}
+.carousel-control {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 15%;
+ font-size: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+ background-repeat: repeat-x;
+}
+.carousel-control.right {
+ right: 0;
+ left: auto;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+ background-repeat: repeat-x;
+}
+.carousel-control:hover,
+.carousel-control:focus {
+ color: #fff;
+ text-decoration: none;
+ filter: alpha(opacity=90);
+ outline: 0;
+ opacity: .9;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block;
+ margin-top: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+ left: 50%;
+ margin-left: -10px;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+ right: 50%;
+ margin-right: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ font-family: serif;
+ line-height: 1;
+}
+.carousel-control .icon-prev:before {
+ content: '\2039';
+}
+.carousel-control .icon-next:before {
+ content: '\203a';
+}
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ padding-left: 0;
+ margin-left: -30%;
+ text-align: center;
+ list-style: none;
+}
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
+ border: 1px solid #fff;
+ border-radius: 10px;
+}
+.carousel-indicators .active {
+ width: 12px;
+ height: 12px;
+ margin: 0;
+ background-color: #fff;
+}
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 20px;
+ left: 15%;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+}
+.carousel-caption .btn {
+ text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ font-size: 30px;
+ }
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .icon-prev {
+ margin-left: -15px;
+ }
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-next {
+ margin-right: -15px;
+ }
+ .carousel-caption {
+ right: 20%;
+ left: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-footer:before,
+.modal-footer:after {
+ display: table;
+ content: " ";
+}
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-footer:after {
+ clear: both;
+}
+.center-block {
+ display: block;
+ margin-right: auto;
+ margin-left: auto;
+}
+.pull-right {
+ float: right !important;
+}
+.pull-left {
+ float: left !important;
+}
+.hide {
+ display: none !important;
+}
+.show {
+ display: block !important;
+}
+.invisible {
+ visibility: hidden;
+}
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+.hidden {
+ display: none !important;
+}
+.affix {
+ position: fixed;
+}
+@-ms-viewport {
+ width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+ display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ table.visible-xs {
+ display: table !important;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-block {
+ display: block !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline {
+ display: inline !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ table.visible-sm {
+ display: table !important;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-block {
+ display: block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ table.visible-md {
+ display: table !important;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-block {
+ display: block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ table.visible-lg {
+ display: table !important;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-block {
+ display: block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+}
+.visible-print {
+ display: none !important;
+}
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ table.visible-print {
+ display: table !important;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
+}
+.visible-print-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-block {
+ display: block !important;
+ }
+}
+.visible-print-inline {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline {
+ display: inline !important;
+ }
+}
+.visible-print-inline-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline-block {
+ display: inline-block !important;
+ }
+}
+@media print {
+ .hidden-print {
+ display: none !important;
+ }
+}
+/*# sourceMappingURL=bootstrap.css.map */
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.css.map
new file mode 100644
index 0000000..9f60ed2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;EA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DH;AezkDC;EACE,oBAAA;Cf2kDH;Ae5kDC;EACE,WAAA;Cf8kDH;Ae/kDC;EACE,oBAAA;CfilDH;AellDC;EACE,mBAAA;CfolDH;AehlDC;EACE,YAAA;CfklDH;AelmDC;EACE,WAAA;CfomDH;AermDC;EACE,mBAAA;CfumDH;AexmDC;EACE,mBAAA;Cf0mDH;Ae3mDC;EACE,UAAA;Cf6mDH;Ae9mDC;EACE,mBAAA;CfgnDH;AejnDC;EACE,mBAAA;CfmnDH;AepnDC;EACE,UAAA;CfsnDH;AevnDC;EACE,mBAAA;CfynDH;Ae1nDC;EACE,mBAAA;Cf4nDH;Ae7nDC;EACE,UAAA;Cf+nDH;AehoDC;EACE,mBAAA;CfkoDH;AenoDC;EACE,kBAAA;CfqoDH;AejoDC;EACE,WAAA;CfmoDH;AernDC;EACE,kBAAA;CfunDH;AexnDC;EACE,0BAAA;Cf0nDH;Ae3nDC;EACE,0BAAA;Cf6nDH;Ae9nDC;EACE,iBAAA;CfgoDH;AejoDC;EACE,0BAAA;CfmoDH;AepoDC;EACE,0BAAA;CfsoDH;AevoDC;EACE,iBAAA;CfyoDH;Ae1oDC;EACE,0BAAA;Cf4oDH;Ae7oDC;EACE,0BAAA;Cf+oDH;AehpDC;EACE,iBAAA;CfkpDH;AenpDC;EACE,0BAAA;CfqpDH;AetpDC;EACE,yBAAA;CfwpDH;AezpDC;EACE,gBAAA;Cf2pDH;Aa3pDD;EElCI;IACE,YAAA;GfgsDH;EezrDD;IACE,YAAA;Gf2rDD;Ee5rDD;IACE,oBAAA;Gf8rDD;Ee/rDD;IACE,oBAAA;GfisDD;EelsDD;IACE,WAAA;GfosDD;EersDD;IACE,oBAAA;GfusDD;EexsDD;IACE,oBAAA;Gf0sDD;Ee3sDD;IACE,WAAA;Gf6sDD;Ee9sDD;IACE,oBAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,WAAA;GfstDD;EevtDD;IACE,oBAAA;GfytDD;Ee1tDD;IACE,mBAAA;Gf4tDD;Ee9sDD;IACE,YAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,oBAAA;GfstDD;EevtDD;IACE,WAAA;GfytDD;Ee1tDD;IACE,oBAAA;Gf4tDD;Ee7tDD;IACE,oBAAA;Gf+tDD;EehuDD;IACE,WAAA;GfkuDD;EenuDD;IACE,oBAAA;GfquDD;EetuDD;IACE,oBAAA;GfwuDD;EezuDD;IACE,WAAA;Gf2uDD;Ee5uDD;IACE,oBAAA;Gf8uDD;Ee/uDD;IACE,mBAAA;GfivDD;Ee7uDD;IACE,YAAA;Gf+uDD;Ee/vDD;IACE,WAAA;GfiwDD;EelwDD;IACE,mBAAA;GfowDD;EerwDD;IACE,mBAAA;GfuwDD;EexwDD;IACE,UAAA;Gf0wDD;Ee3wDD;IACE,mBAAA;Gf6wDD;Ee9wDD;IACE,mBAAA;GfgxDD;EejxDD;IACE,UAAA;GfmxDD;EepxDD;IACE,mBAAA;GfsxDD;EevxDD;IACE,mBAAA;GfyxDD;Ee1xDD;IACE,UAAA;Gf4xDD;Ee7xDD;IACE,mBAAA;Gf+xDD;EehyDD;IACE,kBAAA;GfkyDD;Ee9xDD;IACE,WAAA;GfgyDD;EelxDD;IACE,kBAAA;GfoxDD;EerxDD;IACE,0BAAA;GfuxDD;EexxDD;IACE,0BAAA;Gf0xDD;Ee3xDD;IACE,iBAAA;Gf6xDD;Ee9xDD;IACE,0BAAA;GfgyDD;EejyDD;IACE,0BAAA;GfmyDD;EepyDD;IACE,iBAAA;GfsyDD;EevyDD;IACE,0BAAA;GfyyDD;Ee1yDD;IACE,0BAAA;Gf4yDD;Ee7yDD;IACE,iBAAA;Gf+yDD;EehzDD;IACE,0BAAA;GfkzDD;EenzDD;IACE,yBAAA;GfqzDD;EetzDD;IACE,gBAAA;GfwzDD;CACF;AahzDD;EE3CI;IACE,YAAA;Gf81DH;Eev1DD;IACE,YAAA;Gfy1DD;Ee11DD;IACE,oBAAA;Gf41DD;Ee71DD;IACE,oBAAA;Gf+1DD;Eeh2DD;IACE,WAAA;Gfk2DD;Een2DD;IACE,oBAAA;Gfq2DD;Eet2DD;IACE,oBAAA;Gfw2DD;Eez2DD;IACE,WAAA;Gf22DD;Ee52DD;IACE,oBAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,WAAA;Gfo3DD;Eer3DD;IACE,oBAAA;Gfu3DD;Eex3DD;IACE,mBAAA;Gf03DD;Ee52DD;IACE,YAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,oBAAA;Gfo3DD;Eer3DD;IACE,WAAA;Gfu3DD;Eex3DD;IACE,oBAAA;Gf03DD;Ee33DD;IACE,oBAAA;Gf63DD;Ee93DD;IACE,WAAA;Gfg4DD;Eej4DD;IACE,oBAAA;Gfm4DD;Eep4DD;IACE,oBAAA;Gfs4DD;Eev4DD;IACE,WAAA;Gfy4DD;Ee14DD;IACE,oBAAA;Gf44DD;Ee74DD;IACE,mBAAA;Gf+4DD;Ee34DD;IACE,YAAA;Gf64DD;Ee75DD;IACE,WAAA;Gf+5DD;Eeh6DD;IACE,mBAAA;Gfk6DD;Een6DD;IACE,mBAAA;Gfq6DD;Eet6DD;IACE,UAAA;Gfw6DD;Eez6DD;IACE,mBAAA;Gf26DD;Ee56DD;IACE,mBAAA;Gf86DD;Ee/6DD;IACE,UAAA;Gfi7DD;Eel7DD;IACE,mBAAA;Gfo7DD;Eer7DD;IACE,mBAAA;Gfu7DD;Eex7DD;IACE,UAAA;Gf07DD;Ee37DD;IACE,mBAAA;Gf67DD;Ee97DD;IACE,kBAAA;Gfg8DD;Ee57DD;IACE,WAAA;Gf87DD;Eeh7DD;IACE,kBAAA;Gfk7DD;Een7DD;IACE,0BAAA;Gfq7DD;Eet7DD;IACE,0BAAA;Gfw7DD;Eez7DD;IACE,iBAAA;Gf27DD;Ee57DD;IACE,0BAAA;Gf87DD;Ee/7DD;IACE,0BAAA;Gfi8DD;Eel8DD;IACE,iBAAA;Gfo8DD;Eer8DD;IACE,0BAAA;Gfu8DD;Eex8DD;IACE,0BAAA;Gf08DD;Ee38DD;IACE,iBAAA;Gf68DD;Ee98DD;IACE,0BAAA;Gfg9DD;Eej9DD;IACE,yBAAA;Gfm9DD;Eep9DD;IACE,gBAAA;Gfs9DD;CACF;Aa38DD;EE9CI;IACE,YAAA;Gf4/DH;Eer/DD;IACE,YAAA;Gfu/DD;Eex/DD;IACE,oBAAA;Gf0/DD;Ee3/DD;IACE,oBAAA;Gf6/DD;Ee9/DD;IACE,WAAA;GfggED;EejgED;IACE,oBAAA;GfmgED;EepgED;IACE,oBAAA;GfsgED;EevgED;IACE,WAAA;GfygED;Ee1gED;IACE,oBAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,WAAA;GfkhED;EenhED;IACE,oBAAA;GfqhED;EethED;IACE,mBAAA;GfwhED;Ee1gED;IACE,YAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,oBAAA;GfkhED;EenhED;IACE,WAAA;GfqhED;EethED;IACE,oBAAA;GfwhED;EezhED;IACE,oBAAA;Gf2hED;Ee5hED;IACE,WAAA;Gf8hED;Ee/hED;IACE,oBAAA;GfiiED;EeliED;IACE,oBAAA;GfoiED;EeriED;IACE,WAAA;GfuiED;EexiED;IACE,oBAAA;Gf0iED;Ee3iED;IACE,mBAAA;Gf6iED;EeziED;IACE,YAAA;Gf2iED;Ee3jED;IACE,WAAA;Gf6jED;Ee9jED;IACE,mBAAA;GfgkED;EejkED;IACE,mBAAA;GfmkED;EepkED;IACE,UAAA;GfskED;EevkED;IACE,mBAAA;GfykED;Ee1kED;IACE,mBAAA;Gf4kED;Ee7kED;IACE,UAAA;Gf+kED;EehlED;IACE,mBAAA;GfklED;EenlED;IACE,mBAAA;GfqlED;EetlED;IACE,UAAA;GfwlED;EezlED;IACE,mBAAA;Gf2lED;Ee5lED;IACE,kBAAA;Gf8lED;Ee1lED;IACE,WAAA;Gf4lED;Ee9kED;IACE,kBAAA;GfglED;EejlED;IACE,0BAAA;GfmlED;EeplED;IACE,0BAAA;GfslED;EevlED;IACE,iBAAA;GfylED;Ee1lED;IACE,0BAAA;Gf4lED;Ee7lED;IACE,0BAAA;Gf+lED;EehmED;IACE,iBAAA;GfkmED;EenmED;IACE,0BAAA;GfqmED;EetmED;IACE,0BAAA;GfwmED;EezmED;IACE,iBAAA;Gf2mED;Ee5mED;IACE,0BAAA;Gf8mED;Ee/mED;IACE,yBAAA;GfinED;EelnED;IACE,gBAAA;GfonED;CACF;AgBxrED;EACE,8BAAA;ChB0rED;AgBxrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChB0rED;AgBxrED;EACE,iBAAA;ChB0rED;AgBprED;EACE,YAAA;EACA,gBAAA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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #ffffff;\n background-color: #333333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #dddddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #dddddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #dddddd;\n}\n.table .table {\n background-color: #ffffff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #dddddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #ffffff;\n background-image: none;\n border: 1px solid #cccccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333333;\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default .badge {\n color: #ffffff;\n background-color: #333333;\n}\n.btn-primary {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #ffffff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #ffffff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.btn-success {\n color: #ffffff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #ffffff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #ffffff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #ffffff;\n}\n.btn-info {\n color: #ffffff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #ffffff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #ffffff;\n}\n.btn-warning {\n color: #ffffff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #ffffff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #ffffff;\n}\n.btn-danger {\n color: #ffffff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #ffffff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #ffffff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #ffffff;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #ffffff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #ffffff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777777;\n}\n.navbar-default .navbar-link:hover {\n color: #333333;\n}\n.navbar-default .btn-link {\n color: #777777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #cccccc;\n}\n.navbar-inverse {\n background-color: #222222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #ffffff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #ffffff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #ffffff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #cccccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 3;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #dddddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #ffffff;\n border-color: #dddddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #ffffff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #ffffff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #ffffff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #ffffff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #ffffff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #dddddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #dddddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #dddddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #dddddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000000;\n text-shadow: 0 1px 0 #ffffff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #ffffff;\n border: 1px solid #999999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n min-height: 16.42857143px;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #ffffff;\n text-align: center;\n background-color: #000000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #ffffff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #ffffff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #ffffff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #ffffff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #ffffff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #ffffff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #ffffff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 8.3, iOS doesn't support `datetime` or `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n &.form-control {\n line-height: @input-height-base;\n }\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n min-height: (@line-height-computed + @font-size-base);\n\n &.input-lg,\n &.input-sm {\n padding-left: 0;\n padding-right: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n .form-control {\n height: @input-height-small;\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n border-radius: @input-border-radius-small;\n }\n select.form-control {\n height: @input-height-small;\n line-height: @input-height-small;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-small;\n min-height: (@line-height-computed + @font-size-small);\n padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n }\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n .form-control {\n height: @input-height-large;\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n border-radius: @input-border-radius-large;\n }\n select.form-control {\n height: @input-height-large;\n line-height: @input-height-large;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-large;\n min-height: (@line-height-computed + @font-size-large);\n padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: floor((@grid-gutter-width / 2));\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: ((@padding-large-vertical * @line-height-large) + 1);\n font-size: @font-size-large;\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n font-size: @font-size-small;\n }\n }\n }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @btn-border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @btn-border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a&,\n button& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n > .panel-heading + .panel-collapse > .list-group {\n .list-group-item:first-child {\n .border-top-radius(0);\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-small;\n\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n",".reset-text() {\n font-family: @font-family-base;\n // We deliberately do NOT reset font-size.\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: @line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-base;\n\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n .transition-transform(~'0.6s ease-in-out');\n .backface-visibility(~'hidden');\n .perspective(1000px);\n\n &.next,\n &.active.right {\n .translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n .translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n .translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table !important; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n"]}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.min.css
new file mode 100644
index 0000000..d65c66b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.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}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.css
new file mode 100644
index 0000000..c19cd5c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.css
@@ -0,0 +1,587 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+}
+.btn-default:active,
+.btn-primary:active,
+.btn-success:active,
+.btn-info:active,
+.btn-warning:active,
+.btn-danger:active,
+.btn-default.active,
+.btn-primary.active,
+.btn-success.active,
+.btn-info.active,
+.btn-warning.active,
+.btn-danger.active {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-default.disabled,
+.btn-primary.disabled,
+.btn-success.disabled,
+.btn-info.disabled,
+.btn-warning.disabled,
+.btn-danger.disabled,
+.btn-default[disabled],
+.btn-primary[disabled],
+.btn-success[disabled],
+.btn-info[disabled],
+.btn-warning[disabled],
+.btn-danger[disabled],
+fieldset[disabled] .btn-default,
+fieldset[disabled] .btn-primary,
+fieldset[disabled] .btn-success,
+fieldset[disabled] .btn-info,
+fieldset[disabled] .btn-warning,
+fieldset[disabled] .btn-danger {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-default .badge,
+.btn-primary .badge,
+.btn-success .badge,
+.btn-info .badge,
+.btn-warning .badge,
+.btn-danger .badge {
+ text-shadow: none;
+}
+.btn:active,
+.btn.active {
+ background-image: none;
+}
+.btn-default {
+ text-shadow: 0 1px 0 #fff;
+ background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+ background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
+ background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #dbdbdb;
+ border-color: #ccc;
+}
+.btn-default:hover,
+.btn-default:focus {
+ background-color: #e0e0e0;
+ background-position: 0 -15px;
+}
+.btn-default:active,
+.btn-default.active {
+ background-color: #e0e0e0;
+ border-color: #dbdbdb;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #e0e0e0;
+ background-image: none;
+}
+.btn-primary {
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #245580;
+}
+.btn-primary:hover,
+.btn-primary:focus {
+ background-color: #265a88;
+ background-position: 0 -15px;
+}
+.btn-primary:active,
+.btn-primary.active {
+ background-color: #265a88;
+ border-color: #245580;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #265a88;
+ background-image: none;
+}
+.btn-success {
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #3e8f3e;
+}
+.btn-success:hover,
+.btn-success:focus {
+ background-color: #419641;
+ background-position: 0 -15px;
+}
+.btn-success:active,
+.btn-success.active {
+ background-color: #419641;
+ border-color: #3e8f3e;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #419641;
+ background-image: none;
+}
+.btn-info {
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #28a4c9;
+}
+.btn-info:hover,
+.btn-info:focus {
+ background-color: #2aabd2;
+ background-position: 0 -15px;
+}
+.btn-info:active,
+.btn-info.active {
+ background-color: #2aabd2;
+ border-color: #28a4c9;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #2aabd2;
+ background-image: none;
+}
+.btn-warning {
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #e38d13;
+}
+.btn-warning:hover,
+.btn-warning:focus {
+ background-color: #eb9316;
+ background-position: 0 -15px;
+}
+.btn-warning:active,
+.btn-warning.active {
+ background-color: #eb9316;
+ border-color: #e38d13;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #eb9316;
+ background-image: none;
+}
+.btn-danger {
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #b92c28;
+}
+.btn-danger:hover,
+.btn-danger:focus {
+ background-color: #c12e2a;
+ background-position: 0 -15px;
+}
+.btn-danger:active,
+.btn-danger.active {
+ background-color: #c12e2a;
+ border-color: #b92c28;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #c12e2a;
+ background-image: none;
+}
+.thumbnail,
+.img-thumbnail {
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ background-color: #e8e8e8;
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+ background-repeat: repeat-x;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ background-color: #2e6da4;
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+ background-repeat: repeat-x;
+}
+.navbar-default {
+ background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+ background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
+ background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .active > a {
+ background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+ background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
+ background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
+ background-repeat: repeat-x;
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+}
+.navbar-brand,
+.navbar-nav > li > a {
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
+}
+.navbar-inverse {
+ background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
+ background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
+ background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-radius: 4px;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .active > a {
+ background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+ background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
+ background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
+ background-repeat: repeat-x;
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+}
+.navbar-inverse .navbar-brand,
+.navbar-inverse .navbar-nav > li > a {
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+}
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ border-radius: 0;
+}
+@media (max-width: 767px) {
+ .navbar .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #fff;
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+ background-repeat: repeat-x;
+ }
+}
+.alert {
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+}
+.alert-success {
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #b2dba1;
+}
+.alert-info {
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #9acfea;
+}
+.alert-warning {
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #f5e79e;
+}
+.alert-danger {
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+ background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
+ background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #dca7a7;
+}
+.progress {
+ background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+ background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
+ background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar {
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-success {
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-info {
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-warning {
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-danger {
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.list-group {
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ text-shadow: 0 -1px 0 #286090;
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #2b669a;
+}
+.list-group-item.active .badge,
+.list-group-item.active:hover .badge,
+.list-group-item.active:focus .badge {
+ text-shadow: none;
+}
+.panel {
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+}
+.panel-default > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-primary > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-success > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-info > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-warning > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-danger > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+ background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
+ background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
+ background-repeat: repeat-x;
+}
+.well {
+ background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+ background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
+ background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #dcdcdc;
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+}
+/*# sourceMappingURL=bootstrap-theme.css.map */
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.css.map
new file mode 100644
index 0000000..7535311
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.min.css
new file mode 100644
index 0000000..61358b1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/css/bootstrap-theme.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..b93a495
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode=" " />
+<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode=" " horiz-adv-x="650" />
+<glyph unicode=" " horiz-adv-x="1300" />
+<glyph unicode=" " horiz-adv-x="650" />
+<glyph unicode=" " horiz-adv-x="1300" />
+<glyph unicode=" " horiz-adv-x="433" />
+<glyph unicode=" " horiz-adv-x="325" />
+<glyph unicode=" " horiz-adv-x="216" />
+<glyph unicode=" " horiz-adv-x="216" />
+<glyph unicode=" " horiz-adv-x="162" />
+<glyph unicode=" " horiz-adv-x="260" />
+<glyph unicode=" " horiz-adv-x="72" />
+<glyph unicode=" " horiz-adv-x="260" />
+<glyph unicode=" " horiz-adv-x="325" />
+<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..1413fc6
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..9e61285
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/bootstrap.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/bootstrap.js
new file mode 100644
index 0000000..5debfd7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/bootstrap.js
@@ -0,0 +1,2363 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+
+if (typeof jQuery === 'undefined') {
+ throw new Error('Bootstrap\'s JavaScript requires jQuery')
+}
+
++function ($) {
+ 'use strict';
+ var version = $.fn.jquery.split(' ')[0].split('.')
+ if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
+ throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
+ }
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.3.5
+ * http://getbootstrap.com/javascript/#transitions
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
+ // ============================================================
+
+ function transitionEnd() {
+ var el = document.createElement('bootstrap')
+
+ var transEndEventNames = {
+ WebkitTransition : 'webkitTransitionEnd',
+ MozTransition : 'transitionend',
+ OTransition : 'oTransitionEnd otransitionend',
+ transition : 'transitionend'
+ }
+
+ for (var name in transEndEventNames) {
+ if (el.style[name] !== undefined) {
+ return { end: transEndEventNames[name] }
+ }
+ }
+
+ return false // explicit for ie8 ( ._.)
+ }
+
+ // http://blog.alexmaccaw.com/css-transitions
+ $.fn.emulateTransitionEnd = function (duration) {
+ var called = false
+ var $el = this
+ $(this).one('bsTransitionEnd', function () { called = true })
+ var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+ setTimeout(callback, duration)
+ return this
+ }
+
+ $(function () {
+ $.support.transition = transitionEnd()
+
+ if (!$.support.transition) return
+
+ $.event.special.bsTransitionEnd = {
+ bindType: $.support.transition.end,
+ delegateType: $.support.transition.end,
+ handle: function (e) {
+ if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
+ }
+ }
+ })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.3.5
+ * http://getbootstrap.com/javascript/#alerts
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // ALERT CLASS DEFINITION
+ // ======================
+
+ var dismiss = '[data-dismiss="alert"]'
+ var Alert = function (el) {
+ $(el).on('click', dismiss, this.close)
+ }
+
+ Alert.VERSION = '3.3.5'
+
+ Alert.TRANSITION_DURATION = 150
+
+ Alert.prototype.close = function (e) {
+ var $this = $(this)
+ var selector = $this.attr('data-target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+ }
+
+ var $parent = $(selector)
+
+ if (e) e.preventDefault()
+
+ if (!$parent.length) {
+ $parent = $this.closest('.alert')
+ }
+
+ $parent.trigger(e = $.Event('close.bs.alert'))
+
+ if (e.isDefaultPrevented()) return
+
+ $parent.removeClass('in')
+
+ function removeElement() {
+ // detach from parent, fire event then clean up data
+ $parent.detach().trigger('closed.bs.alert').remove()
+ }
+
+ $.support.transition && $parent.hasClass('fade') ?
+ $parent
+ .one('bsTransitionEnd', removeElement)
+ .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
+ removeElement()
+ }
+
+
+ // ALERT PLUGIN DEFINITION
+ // =======================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.alert')
+
+ if (!data) $this.data('bs.alert', (data = new Alert(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ var old = $.fn.alert
+
+ $.fn.alert = Plugin
+ $.fn.alert.Constructor = Alert
+
+
+ // ALERT NO CONFLICT
+ // =================
+
+ $.fn.alert.noConflict = function () {
+ $.fn.alert = old
+ return this
+ }
+
+
+ // ALERT DATA-API
+ // ==============
+
+ $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.3.5
+ * http://getbootstrap.com/javascript/#buttons
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // BUTTON PUBLIC CLASS DEFINITION
+ // ==============================
+
+ var Button = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, Button.DEFAULTS, options)
+ this.isLoading = false
+ }
+
+ Button.VERSION = '3.3.5'
+
+ Button.DEFAULTS = {
+ loadingText: 'loading...'
+ }
+
+ Button.prototype.setState = function (state) {
+ var d = 'disabled'
+ var $el = this.$element
+ var val = $el.is('input') ? 'val' : 'html'
+ var data = $el.data()
+
+ state += 'Text'
+
+ if (data.resetText == null) $el.data('resetText', $el[val]())
+
+ // push to event loop to allow forms to submit
+ setTimeout($.proxy(function () {
+ $el[val](data[state] == null ? this.options[state] : data[state])
+
+ if (state == 'loadingText') {
+ this.isLoading = true
+ $el.addClass(d).attr(d, d)
+ } else if (this.isLoading) {
+ this.isLoading = false
+ $el.removeClass(d).removeAttr(d)
+ }
+ }, this), 0)
+ }
+
+ Button.prototype.toggle = function () {
+ var changed = true
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+ if ($parent.length) {
+ var $input = this.$element.find('input')
+ if ($input.prop('type') == 'radio') {
+ if ($input.prop('checked')) changed = false
+ $parent.find('.active').removeClass('active')
+ this.$element.addClass('active')
+ } else if ($input.prop('type') == 'checkbox') {
+ if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
+ this.$element.toggleClass('active')
+ }
+ $input.prop('checked', this.$element.hasClass('active'))
+ if (changed) $input.trigger('change')
+ } else {
+ this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
+ this.$element.toggleClass('active')
+ }
+ }
+
+
+ // BUTTON PLUGIN DEFINITION
+ // ========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.button')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
+
+ var old = $.fn.button
+
+ $.fn.button = Plugin
+ $.fn.button.Constructor = Button
+
+
+ // BUTTON NO CONFLICT
+ // ==================
+
+ $.fn.button.noConflict = function () {
+ $.fn.button = old
+ return this
+ }
+
+
+ // BUTTON DATA-API
+ // ===============
+
+ $(document)
+ .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ Plugin.call($btn, 'toggle')
+ if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
+ })
+ .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+ $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
+ })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.3.5
+ * http://getbootstrap.com/javascript/#carousel
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // CAROUSEL CLASS DEFINITION
+ // =========================
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.$indicators = this.$element.find('.carousel-indicators')
+ this.options = options
+ this.paused = null
+ this.sliding = null
+ this.interval = null
+ this.$active = null
+ this.$items = null
+
+ this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
+
+ this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
+ .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
+ .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
+ }
+
+ Carousel.VERSION = '3.3.5'
+
+ Carousel.TRANSITION_DURATION = 600
+
+ Carousel.DEFAULTS = {
+ interval: 5000,
+ pause: 'hover',
+ wrap: true,
+ keyboard: true
+ }
+
+ Carousel.prototype.keydown = function (e) {
+ if (/input|textarea/i.test(e.target.tagName)) return
+ switch (e.which) {
+ case 37: this.prev(); break
+ case 39: this.next(); break
+ default: return
+ }
+
+ e.preventDefault()
+ }
+
+ Carousel.prototype.cycle = function (e) {
+ e || (this.paused = false)
+
+ this.interval && clearInterval(this.interval)
+
+ this.options.interval
+ && !this.paused
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+ return this
+ }
+
+ Carousel.prototype.getItemIndex = function (item) {
+ this.$items = item.parent().children('.item')
+ return this.$items.index(item || this.$active)
+ }
+
+ Carousel.prototype.getItemForDirection = function (direction, active) {
+ var activeIndex = this.getItemIndex(active)
+ var willWrap = (direction == 'prev' && activeIndex === 0)
+ || (direction == 'next' && activeIndex == (this.$items.length - 1))
+ if (willWrap && !this.options.wrap) return active
+ var delta = direction == 'prev' ? -1 : 1
+ var itemIndex = (activeIndex + delta) % this.$items.length
+ return this.$items.eq(itemIndex)
+ }
+
+ Carousel.prototype.to = function (pos) {
+ var that = this
+ var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
+
+ if (pos > (this.$items.length - 1) || pos < 0) return
+
+ if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
+ if (activeIndex == pos) return this.pause().cycle()
+
+ return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
+ }
+
+ Carousel.prototype.pause = function (e) {
+ e || (this.paused = true)
+
+ if (this.$element.find('.next, .prev').length && $.support.transition) {
+ this.$element.trigger($.support.transition.end)
+ this.cycle(true)
+ }
+
+ this.interval = clearInterval(this.interval)
+
+ return this
+ }
+
+ Carousel.prototype.next = function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ Carousel.prototype.prev = function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ Carousel.prototype.slide = function (type, next) {
+ var $active = this.$element.find('.item.active')
+ var $next = next || this.getItemForDirection(type, $active)
+ var isCycling = this.interval
+ var direction = type == 'next' ? 'left' : 'right'
+ var that = this
+
+ if ($next.hasClass('active')) return (this.sliding = false)
+
+ var relatedTarget = $next[0]
+ var slideEvent = $.Event('slide.bs.carousel', {
+ relatedTarget: relatedTarget,
+ direction: direction
+ })
+ this.$element.trigger(slideEvent)
+ if (slideEvent.isDefaultPrevented()) return
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ if (this.$indicators.length) {
+ this.$indicators.find('.active').removeClass('active')
+ var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
+ $nextIndicator && $nextIndicator.addClass('active')
+ }
+
+ var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
+ if ($.support.transition && this.$element.hasClass('slide')) {
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ $active
+ .one('bsTransitionEnd', function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () {
+ that.$element.trigger(slidEvent)
+ }, 0)
+ })
+ .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
+ } else {
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger(slidEvent)
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+
+ // CAROUSEL PLUGIN DEFINITION
+ // ==========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.carousel')
+ var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+ var action = typeof option == 'string' ? option : options.slide
+
+ if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (action) data[action]()
+ else if (options.interval) data.pause().cycle()
+ })
+ }
+
+ var old = $.fn.carousel
+
+ $.fn.carousel = Plugin
+ $.fn.carousel.Constructor = Carousel
+
+
+ // CAROUSEL NO CONFLICT
+ // ====================
+
+ $.fn.carousel.noConflict = function () {
+ $.fn.carousel = old
+ return this
+ }
+
+
+ // CAROUSEL DATA-API
+ // =================
+
+ var clickHandler = function (e) {
+ var href
+ var $this = $(this)
+ var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
+ if (!$target.hasClass('carousel')) return
+ var options = $.extend({}, $target.data(), $this.data())
+ var slideIndex = $this.attr('data-slide-to')
+ if (slideIndex) options.interval = false
+
+ Plugin.call($target, options)
+
+ if (slideIndex) {
+ $target.data('bs.carousel').to(slideIndex)
+ }
+
+ e.preventDefault()
+ }
+
+ $(document)
+ .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
+ .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
+
+ $(window).on('load', function () {
+ $('[data-ride="carousel"]').each(function () {
+ var $carousel = $(this)
+ Plugin.call($carousel, $carousel.data())
+ })
+ })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.3.5
+ * http://getbootstrap.com/javascript/#collapse
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // COLLAPSE PUBLIC CLASS DEFINITION
+ // ================================
+
+ var Collapse = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, Collapse.DEFAULTS, options)
+ this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
+ '[data-toggle="collapse"][data-target="#' + element.id + '"]')
+ this.transitioning = null
+
+ if (this.options.parent) {
+ this.$parent = this.getParent()
+ } else {
+ this.addAriaAndCollapsedClass(this.$element, this.$trigger)
+ }
+
+ if (this.options.toggle) this.toggle()
+ }
+
+ Collapse.VERSION = '3.3.5'
+
+ Collapse.TRANSITION_DURATION = 350
+
+ Collapse.DEFAULTS = {
+ toggle: true
+ }
+
+ Collapse.prototype.dimension = function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ Collapse.prototype.show = function () {
+ if (this.transitioning || this.$element.hasClass('in')) return
+
+ var activesData
+ var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
+
+ if (actives && actives.length) {
+ activesData = actives.data('bs.collapse')
+ if (activesData && activesData.transitioning) return
+ }
+
+ var startEvent = $.Event('show.bs.collapse')
+ this.$element.trigger(startEvent)
+ if (startEvent.isDefaultPrevented()) return
+
+ if (actives && actives.length) {
+ Plugin.call(actives, 'hide')
+ activesData || actives.data('bs.collapse', null)
+ }
+
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ .addClass('collapsing')[dimension](0)
+ .attr('aria-expanded', true)
+
+ this.$trigger
+ .removeClass('collapsed')
+ .attr('aria-expanded', true)
+
+ this.transitioning = 1
+
+ var complete = function () {
+ this.$element
+ .removeClass('collapsing')
+ .addClass('collapse in')[dimension]('')
+ this.transitioning = 0
+ this.$element
+ .trigger('shown.bs.collapse')
+ }
+
+ if (!$.support.transition) return complete.call(this)
+
+ var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+ this.$element
+ .one('bsTransitionEnd', $.proxy(complete, this))
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
+ }
+
+ Collapse.prototype.hide = function () {
+ if (this.transitioning || !this.$element.hasClass('in')) return
+
+ var startEvent = $.Event('hide.bs.collapse')
+ this.$element.trigger(startEvent)
+ if (startEvent.isDefaultPrevented()) return
+
+ var dimension = this.dimension()
+
+ this.$element[dimension](this.$element[dimension]())[0].offsetHeight
+
+ this.$element
+ .addClass('collapsing')
+ .removeClass('collapse in')
+ .attr('aria-expanded', false)
+
+ this.$trigger
+ .addClass('collapsed')
+ .attr('aria-expanded', false)
+
+ this.transitioning = 1
+
+ var complete = function () {
+ this.transitioning = 0
+ this.$element
+ .removeClass('collapsing')
+ .addClass('collapse')
+ .trigger('hidden.bs.collapse')
+ }
+
+ if (!$.support.transition) return complete.call(this)
+
+ this.$element
+ [dimension](0)
+ .one('bsTransitionEnd', $.proxy(complete, this))
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
+ }
+
+ Collapse.prototype.toggle = function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+ Collapse.prototype.getParent = function () {
+ return $(this.options.parent)
+ .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
+ .each($.proxy(function (i, element) {
+ var $element = $(element)
+ this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
+ }, this))
+ .end()
+ }
+
+ Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
+ var isOpen = $element.hasClass('in')
+
+ $element.attr('aria-expanded', isOpen)
+ $trigger
+ .toggleClass('collapsed', !isOpen)
+ .attr('aria-expanded', isOpen)
+ }
+
+ function getTargetFromTrigger($trigger) {
+ var href
+ var target = $trigger.attr('data-target')
+ || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+
+ return $(target)
+ }
+
+
+ // COLLAPSE PLUGIN DEFINITION
+ // ==========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.collapse')
+ var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+ if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
+ if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.collapse
+
+ $.fn.collapse = Plugin
+ $.fn.collapse.Constructor = Collapse
+
+
+ // COLLAPSE NO CONFLICT
+ // ====================
+
+ $.fn.collapse.noConflict = function () {
+ $.fn.collapse = old
+ return this
+ }
+
+
+ // COLLAPSE DATA-API
+ // =================
+
+ $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
+ var $this = $(this)
+
+ if (!$this.attr('data-target')) e.preventDefault()
+
+ var $target = getTargetFromTrigger($this)
+ var data = $target.data('bs.collapse')
+ var option = data ? 'toggle' : $this.data()
+
+ Plugin.call($target, option)
+ })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.3.5
+ * http://getbootstrap.com/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // DROPDOWN CLASS DEFINITION
+ // =========================
+
+ var backdrop = '.dropdown-backdrop'
+ var toggle = '[data-toggle="dropdown"]'
+ var Dropdown = function (element) {
+ $(element).on('click.bs.dropdown', this.toggle)
+ }
+
+ Dropdown.VERSION = '3.3.5'
+
+ function getParent($this) {
+ var selector = $this.attr('data-target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+ }
+
+ var $parent = selector && $(selector)
+
+ return $parent && $parent.length ? $parent : $this.parent()
+ }
+
+ function clearMenus(e) {
+ if (e && e.which === 3) return
+ $(backdrop).remove()
+ $(toggle).each(function () {
+ var $this = $(this)
+ var $parent = getParent($this)
+ var relatedTarget = { relatedTarget: this }
+
+ if (!$parent.hasClass('open')) return
+
+ if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
+
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+
+ if (e.isDefaultPrevented()) return
+
+ $this.attr('aria-expanded', 'false')
+ $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
+ })
+ }
+
+ Dropdown.prototype.toggle = function (e) {
+ var $this = $(this)
+
+ if ($this.is('.disabled, :disabled')) return
+
+ var $parent = getParent($this)
+ var isActive = $parent.hasClass('open')
+
+ clearMenus()
+
+ if (!isActive) {
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+ // if mobile we use a backdrop because click events don't delegate
+ $(document.createElement('div'))
+ .addClass('dropdown-backdrop')
+ .insertAfter($(this))
+ .on('click', clearMenus)
+ }
+
+ var relatedTarget = { relatedTarget: this }
+ $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
+
+ if (e.isDefaultPrevented()) return
+
+ $this
+ .trigger('focus')
+ .attr('aria-expanded', 'true')
+
+ $parent
+ .toggleClass('open')
+ .trigger('shown.bs.dropdown', relatedTarget)
+ }
+
+ return false
+ }
+
+ Dropdown.prototype.keydown = function (e) {
+ if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
+
+ var $this = $(this)
+
+ e.preventDefault()
+ e.stopPropagation()
+
+ if ($this.is('.disabled, :disabled')) return
+
+ var $parent = getParent($this)
+ var isActive = $parent.hasClass('open')
+
+ if (!isActive && e.which != 27 || isActive && e.which == 27) {
+ if (e.which == 27) $parent.find(toggle).trigger('focus')
+ return $this.trigger('click')
+ }
+
+ var desc = ' li:not(.disabled):visible a'
+ var $items = $parent.find('.dropdown-menu' + desc)
+
+ if (!$items.length) return
+
+ var index = $items.index(e.target)
+
+ if (e.which == 38 && index > 0) index-- // up
+ if (e.which == 40 && index < $items.length - 1) index++ // down
+ if (!~index) index = 0
+
+ $items.eq(index).trigger('focus')
+ }
+
+
+ // DROPDOWN PLUGIN DEFINITION
+ // ==========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.dropdown')
+
+ if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ var old = $.fn.dropdown
+
+ $.fn.dropdown = Plugin
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ // DROPDOWN NO CONFLICT
+ // ====================
+
+ $.fn.dropdown.noConflict = function () {
+ $.fn.dropdown = old
+ return this
+ }
+
+
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
+ // ===================================
+
+ $(document)
+ .on('click.bs.dropdown.data-api', clearMenus)
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+ .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
+ .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.3.5
+ * http://getbootstrap.com/javascript/#modals
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // MODAL CLASS DEFINITION
+ // ======================
+
+ var Modal = function (element, options) {
+ this.options = options
+ this.$body = $(document.body)
+ this.$element = $(element)
+ this.$dialog = this.$element.find('.modal-dialog')
+ this.$backdrop = null
+ this.isShown = null
+ this.originalBodyPad = null
+ this.scrollbarWidth = 0
+ this.ignoreBackdropClick = false
+
+ if (this.options.remote) {
+ this.$element
+ .find('.modal-content')
+ .load(this.options.remote, $.proxy(function () {
+ this.$element.trigger('loaded.bs.modal')
+ }, this))
+ }
+ }
+
+ Modal.VERSION = '3.3.5'
+
+ Modal.TRANSITION_DURATION = 300
+ Modal.BACKDROP_TRANSITION_DURATION = 150
+
+ Modal.DEFAULTS = {
+ backdrop: true,
+ keyboard: true,
+ show: true
+ }
+
+ Modal.prototype.toggle = function (_relatedTarget) {
+ return this.isShown ? this.hide() : this.show(_relatedTarget)
+ }
+
+ Modal.prototype.show = function (_relatedTarget) {
+ var that = this
+ var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+ this.$element.trigger(e)
+
+ if (this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = true
+
+ this.checkScrollbar()
+ this.setScrollbar()
+ this.$body.addClass('modal-open')
+
+ this.escape()
+ this.resize()
+
+ this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+ this.$dialog.on('mousedown.dismiss.bs.modal', function () {
+ that.$element.one('mouseup.dismiss.bs.modal', function (e) {
+ if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
+ })
+ })
+
+ this.backdrop(function () {
+ var transition = $.support.transition && that.$element.hasClass('fade')
+
+ if (!that.$element.parent().length) {
+ that.$element.appendTo(that.$body) // don't move modals dom position
+ }
+
+ that.$element
+ .show()
+ .scrollTop(0)
+
+ that.adjustDialog()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element.addClass('in')
+
+ that.enforceFocus()
+
+ var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+ transition ?
+ that.$dialog // wait for modal to slide in
+ .one('bsTransitionEnd', function () {
+ that.$element.trigger('focus').trigger(e)
+ })
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+ that.$element.trigger('focus').trigger(e)
+ })
+ }
+
+ Modal.prototype.hide = function (e) {
+ if (e) e.preventDefault()
+
+ e = $.Event('hide.bs.modal')
+
+ this.$element.trigger(e)
+
+ if (!this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = false
+
+ this.escape()
+ this.resize()
+
+ $(document).off('focusin.bs.modal')
+
+ this.$element
+ .removeClass('in')
+ .off('click.dismiss.bs.modal')
+ .off('mouseup.dismiss.bs.modal')
+
+ this.$dialog.off('mousedown.dismiss.bs.modal')
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ this.$element
+ .one('bsTransitionEnd', $.proxy(this.hideModal, this))
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+ this.hideModal()
+ }
+
+ Modal.prototype.enforceFocus = function () {
+ $(document)
+ .off('focusin.bs.modal') // guard against infinite focus loop
+ .on('focusin.bs.modal', $.proxy(function (e) {
+ if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
+ this.$element.trigger('focus')
+ }
+ }, this))
+ }
+
+ Modal.prototype.escape = function () {
+ if (this.isShown && this.options.keyboard) {
+ this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
+ e.which == 27 && this.hide()
+ }, this))
+ } else if (!this.isShown) {
+ this.$element.off('keydown.dismiss.bs.modal')
+ }
+ }
+
+ Modal.prototype.resize = function () {
+ if (this.isShown) {
+ $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
+ } else {
+ $(window).off('resize.bs.modal')
+ }
+ }
+
+ Modal.prototype.hideModal = function () {
+ var that = this
+ this.$element.hide()
+ this.backdrop(function () {
+ that.$body.removeClass('modal-open')
+ that.resetAdjustments()
+ that.resetScrollbar()
+ that.$element.trigger('hidden.bs.modal')
+ })
+ }
+
+ Modal.prototype.removeBackdrop = function () {
+ this.$backdrop && this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ Modal.prototype.backdrop = function (callback) {
+ var that = this
+ var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $(document.createElement('div'))
+ .addClass('modal-backdrop ' + animate)
+ .appendTo(this.$body)
+
+ this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
+ if (this.ignoreBackdropClick) {
+ this.ignoreBackdropClick = false
+ return
+ }
+ if (e.target !== e.currentTarget) return
+ this.options.backdrop == 'static'
+ ? this.$element[0].focus()
+ : this.hide()
+ }, this))
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ if (!callback) return
+
+ doAnimate ?
+ this.$backdrop
+ .one('bsTransitionEnd', callback)
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ var callbackRemove = function () {
+ that.removeBackdrop()
+ callback && callback()
+ }
+ $.support.transition && this.$element.hasClass('fade') ?
+ this.$backdrop
+ .one('bsTransitionEnd', callbackRemove)
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+ callbackRemove()
+
+ } else if (callback) {
+ callback()
+ }
+ }
+
+ // these following methods are used to handle overflowing modals
+
+ Modal.prototype.handleUpdate = function () {
+ this.adjustDialog()
+ }
+
+ Modal.prototype.adjustDialog = function () {
+ var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
+
+ this.$element.css({
+ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
+ paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
+ })
+ }
+
+ Modal.prototype.resetAdjustments = function () {
+ this.$element.css({
+ paddingLeft: '',
+ paddingRight: ''
+ })
+ }
+
+ Modal.prototype.checkScrollbar = function () {
+ var fullWindowWidth = window.innerWidth
+ if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
+ var documentElementRect = document.documentElement.getBoundingClientRect()
+ fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
+ }
+ this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
+ this.scrollbarWidth = this.measureScrollbar()
+ }
+
+ Modal.prototype.setScrollbar = function () {
+ var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
+ this.originalBodyPad = document.body.style.paddingRight || ''
+ if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
+ }
+
+ Modal.prototype.resetScrollbar = function () {
+ this.$body.css('padding-right', this.originalBodyPad)
+ }
+
+ Modal.prototype.measureScrollbar = function () { // thx walsh
+ var scrollDiv = document.createElement('div')
+ scrollDiv.className = 'modal-scrollbar-measure'
+ this.$body.append(scrollDiv)
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
+ this.$body[0].removeChild(scrollDiv)
+ return scrollbarWidth
+ }
+
+
+ // MODAL PLUGIN DEFINITION
+ // =======================
+
+ function Plugin(option, _relatedTarget) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.modal')
+ var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+ if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option](_relatedTarget)
+ else if (options.show) data.show(_relatedTarget)
+ })
+ }
+
+ var old = $.fn.modal
+
+ $.fn.modal = Plugin
+ $.fn.modal.Constructor = Modal
+
+
+ // MODAL NO CONFLICT
+ // =================
+
+ $.fn.modal.noConflict = function () {
+ $.fn.modal = old
+ return this
+ }
+
+
+ // MODAL DATA-API
+ // ==============
+
+ $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+ var $this = $(this)
+ var href = $this.attr('href')
+ var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
+ var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+ if ($this.is('a')) e.preventDefault()
+
+ $target.one('show.bs.modal', function (showEvent) {
+ if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
+ $target.one('hidden.bs.modal', function () {
+ $this.is(':visible') && $this.trigger('focus')
+ })
+ })
+ Plugin.call($target, option, this)
+ })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.3.5
+ * http://getbootstrap.com/javascript/#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // TOOLTIP PUBLIC CLASS DEFINITION
+ // ===============================
+
+ var Tooltip = function (element, options) {
+ this.type = null
+ this.options = null
+ this.enabled = null
+ this.timeout = null
+ this.hoverState = null
+ this.$element = null
+ this.inState = null
+
+ this.init('tooltip', element, options)
+ }
+
+ Tooltip.VERSION = '3.3.5'
+
+ Tooltip.TRANSITION_DURATION = 150
+
+ Tooltip.DEFAULTS = {
+ animation: true,
+ placement: 'top',
+ selector: false,
+ template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+ trigger: 'hover focus',
+ title: '',
+ delay: 0,
+ html: false,
+ container: false,
+ viewport: {
+ selector: 'body',
+ padding: 0
+ }
+ }
+
+ Tooltip.prototype.init = function (type, element, options) {
+ this.enabled = true
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+ this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
+ this.inState = { click: false, hover: false, focus: false }
+
+ if (this.$element[0] instanceof document.constructor && !this.options.selector) {
+ throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
+ }
+
+ var triggers = this.options.trigger.split(' ')
+
+ for (var i = triggers.length; i--;) {
+ var trigger = triggers[i]
+
+ if (trigger == 'click') {
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+ } else if (trigger != 'manual') {
+ var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
+ var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+ }
+ }
+
+ this.options.selector ?
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+ this.fixTitle()
+ }
+
+ Tooltip.prototype.getDefaults = function () {
+ return Tooltip.DEFAULTS
+ }
+
+ Tooltip.prototype.getOptions = function (options) {
+ options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+ if (options.delay && typeof options.delay == 'number') {
+ options.delay = {
+ show: options.delay,
+ hide: options.delay
+ }
+ }
+
+ return options
+ }
+
+ Tooltip.prototype.getDelegateOptions = function () {
+ var options = {}
+ var defaults = this.getDefaults()
+
+ this._options && $.each(this._options, function (key, value) {
+ if (defaults[key] != value) options[key] = value
+ })
+
+ return options
+ }
+
+ Tooltip.prototype.enter = function (obj) {
+ var self = obj instanceof this.constructor ?
+ obj : $(obj.currentTarget).data('bs.' + this.type)
+
+ if (!self) {
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+ $(obj.currentTarget).data('bs.' + this.type, self)
+ }
+
+ if (obj instanceof $.Event) {
+ self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
+ }
+
+ if (self.tip().hasClass('in') || self.hoverState == 'in') {
+ self.hoverState = 'in'
+ return
+ }
+
+ clearTimeout(self.timeout)
+
+ self.hoverState = 'in'
+
+ if (!self.options.delay || !self.options.delay.show) return self.show()
+
+ self.timeout = setTimeout(function () {
+ if (self.hoverState == 'in') self.show()
+ }, self.options.delay.show)
+ }
+
+ Tooltip.prototype.isInStateTrue = function () {
+ for (var key in this.inState) {
+ if (this.inState[key]) return true
+ }
+
+ return false
+ }
+
+ Tooltip.prototype.leave = function (obj) {
+ var self = obj instanceof this.constructor ?
+ obj : $(obj.currentTarget).data('bs.' + this.type)
+
+ if (!self) {
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+ $(obj.currentTarget).data('bs.' + this.type, self)
+ }
+
+ if (obj instanceof $.Event) {
+ self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
+ }
+
+ if (self.isInStateTrue()) return
+
+ clearTimeout(self.timeout)
+
+ self.hoverState = 'out'
+
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+ self.timeout = setTimeout(function () {
+ if (self.hoverState == 'out') self.hide()
+ }, self.options.delay.hide)
+ }
+
+ Tooltip.prototype.show = function () {
+ var e = $.Event('show.bs.' + this.type)
+
+ if (this.hasContent() && this.enabled) {
+ this.$element.trigger(e)
+
+ var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
+ if (e.isDefaultPrevented() || !inDom) return
+ var that = this
+
+ var $tip = this.tip()
+
+ var tipId = this.getUID(this.type)
+
+ this.setContent()
+ $tip.attr('id', tipId)
+ this.$element.attr('aria-describedby', tipId)
+
+ if (this.options.animation) $tip.addClass('fade')
+
+ var placement = typeof this.options.placement == 'function' ?
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
+ this.options.placement
+
+ var autoToken = /\s?auto?\s?/i
+ var autoPlace = autoToken.test(placement)
+ if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+ $tip
+ .detach()
+ .css({ top: 0, left: 0, display: 'block' })
+ .addClass(placement)
+ .data('bs.' + this.type, this)
+
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+ this.$element.trigger('inserted.bs.' + this.type)
+
+ var pos = this.getPosition()
+ var actualWidth = $tip[0].offsetWidth
+ var actualHeight = $tip[0].offsetHeight
+
+ if (autoPlace) {
+ var orgPlacement = placement
+ var viewportDim = this.getPosition(this.$viewport)
+
+ placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
+ placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
+ placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
+ placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
+ placement
+
+ $tip
+ .removeClass(orgPlacement)
+ .addClass(placement)
+ }
+
+ var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+ this.applyPlacement(calculatedOffset, placement)
+
+ var complete = function () {
+ var prevHoverState = that.hoverState
+ that.$element.trigger('shown.bs.' + that.type)
+ that.hoverState = null
+
+ if (prevHoverState == 'out') that.leave(that)
+ }
+
+ $.support.transition && this.$tip.hasClass('fade') ?
+ $tip
+ .one('bsTransitionEnd', complete)
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+ complete()
+ }
+ }
+
+ Tooltip.prototype.applyPlacement = function (offset, placement) {
+ var $tip = this.tip()
+ var width = $tip[0].offsetWidth
+ var height = $tip[0].offsetHeight
+
+ // manually read margins because getBoundingClientRect includes difference
+ var marginTop = parseInt($tip.css('margin-top'), 10)
+ var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+ // we must check for NaN for ie 8/9
+ if (isNaN(marginTop)) marginTop = 0
+ if (isNaN(marginLeft)) marginLeft = 0
+
+ offset.top += marginTop
+ offset.left += marginLeft
+
+ // $.fn.offset doesn't round pixel values
+ // so we use setOffset directly with our own function B-0
+ $.offset.setOffset($tip[0], $.extend({
+ using: function (props) {
+ $tip.css({
+ top: Math.round(props.top),
+ left: Math.round(props.left)
+ })
+ }
+ }, offset), 0)
+
+ $tip.addClass('in')
+
+ // check to see if placing tip in new offset caused the tip to resize itself
+ var actualWidth = $tip[0].offsetWidth
+ var actualHeight = $tip[0].offsetHeight
+
+ if (placement == 'top' && actualHeight != height) {
+ offset.top = offset.top + height - actualHeight
+ }
+
+ var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
+
+ if (delta.left) offset.left += delta.left
+ else offset.top += delta.top
+
+ var isVertical = /top|bottom/.test(placement)
+ var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
+ var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
+
+ $tip.offset(offset)
+ this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
+ }
+
+ Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
+ this.arrow()
+ .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
+ .css(isVertical ? 'top' : 'left', '')
+ }
+
+ Tooltip.prototype.setContent = function () {
+ var $tip = this.tip()
+ var title = this.getTitle()
+
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+ $tip.removeClass('fade in top bottom left right')
+ }
+
+ Tooltip.prototype.hide = function (callback) {
+ var that = this
+ var $tip = $(this.$tip)
+ var e = $.Event('hide.bs.' + this.type)
+
+ function complete() {
+ if (that.hoverState != 'in') $tip.detach()
+ that.$element
+ .removeAttr('aria-describedby')
+ .trigger('hidden.bs.' + that.type)
+ callback && callback()
+ }
+
+ this.$element.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ $tip.removeClass('in')
+
+ $.support.transition && $tip.hasClass('fade') ?
+ $tip
+ .one('bsTransitionEnd', complete)
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+ complete()
+
+ this.hoverState = null
+
+ return this
+ }
+
+ Tooltip.prototype.fixTitle = function () {
+ var $e = this.$element
+ if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+ }
+ }
+
+ Tooltip.prototype.hasContent = function () {
+ return this.getTitle()
+ }
+
+ Tooltip.prototype.getPosition = function ($element) {
+ $element = $element || this.$element
+
+ var el = $element[0]
+ var isBody = el.tagName == 'BODY'
+
+ var elRect = el.getBoundingClientRect()
+ if (elRect.width == null) {
+ // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
+ elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
+ }
+ var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
+ var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
+ var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
+
+ return $.extend({}, elRect, scroll, outerDims, elOffset)
+ }
+
+ Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+ return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+ placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+ placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+ /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+
+ }
+
+ Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
+ var delta = { top: 0, left: 0 }
+ if (!this.$viewport) return delta
+
+ var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
+ var viewportDimensions = this.getPosition(this.$viewport)
+
+ if (/right|left/.test(placement)) {
+ var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
+ var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
+ if (topEdgeOffset < viewportDimensions.top) { // top overflow
+ delta.top = viewportDimensions.top - topEdgeOffset
+ } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
+ delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
+ }
+ } else {
+ var leftEdgeOffset = pos.left - viewportPadding
+ var rightEdgeOffset = pos.left + viewportPadding + actualWidth
+ if (leftEdgeOffset < viewportDimensions.left) { // left overflow
+ delta.left = viewportDimensions.left - leftEdgeOffset
+ } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
+ delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
+ }
+ }
+
+ return delta
+ }
+
+ Tooltip.prototype.getTitle = function () {
+ var title
+ var $e = this.$element
+ var o = this.options
+
+ title = $e.attr('data-original-title')
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
+
+ return title
+ }
+
+ Tooltip.prototype.getUID = function (prefix) {
+ do prefix += ~~(Math.random() * 1000000)
+ while (document.getElementById(prefix))
+ return prefix
+ }
+
+ Tooltip.prototype.tip = function () {
+ if (!this.$tip) {
+ this.$tip = $(this.options.template)
+ if (this.$tip.length != 1) {
+ throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
+ }
+ }
+ return this.$tip
+ }
+
+ Tooltip.prototype.arrow = function () {
+ return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
+ }
+
+ Tooltip.prototype.enable = function () {
+ this.enabled = true
+ }
+
+ Tooltip.prototype.disable = function () {
+ this.enabled = false
+ }
+
+ Tooltip.prototype.toggleEnabled = function () {
+ this.enabled = !this.enabled
+ }
+
+ Tooltip.prototype.toggle = function (e) {
+ var self = this
+ if (e) {
+ self = $(e.currentTarget).data('bs.' + this.type)
+ if (!self) {
+ self = new this.constructor(e.currentTarget, this.getDelegateOptions())
+ $(e.currentTarget).data('bs.' + this.type, self)
+ }
+ }
+
+ if (e) {
+ self.inState.click = !self.inState.click
+ if (self.isInStateTrue()) self.enter(self)
+ else self.leave(self)
+ } else {
+ self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+ }
+ }
+
+ Tooltip.prototype.destroy = function () {
+ var that = this
+ clearTimeout(this.timeout)
+ this.hide(function () {
+ that.$element.off('.' + that.type).removeData('bs.' + that.type)
+ if (that.$tip) {
+ that.$tip.detach()
+ }
+ that.$tip = null
+ that.$arrow = null
+ that.$viewport = null
+ })
+ }
+
+
+ // TOOLTIP PLUGIN DEFINITION
+ // =========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.tooltip')
+ var options = typeof option == 'object' && option
+
+ if (!data && /destroy|hide/.test(option)) return
+ if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.tooltip
+
+ $.fn.tooltip = Plugin
+ $.fn.tooltip.Constructor = Tooltip
+
+
+ // TOOLTIP NO CONFLICT
+ // ===================
+
+ $.fn.tooltip.noConflict = function () {
+ $.fn.tooltip = old
+ return this
+ }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.3.5
+ * http://getbootstrap.com/javascript/#popovers
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // POPOVER PUBLIC CLASS DEFINITION
+ // ===============================
+
+ var Popover = function (element, options) {
+ this.init('popover', element, options)
+ }
+
+ if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+ Popover.VERSION = '3.3.5'
+
+ Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
+ placement: 'right',
+ trigger: 'click',
+ content: '',
+ template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+ })
+
+
+ // NOTE: POPOVER EXTENDS tooltip.js
+ // ================================
+
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+ Popover.prototype.constructor = Popover
+
+ Popover.prototype.getDefaults = function () {
+ return Popover.DEFAULTS
+ }
+
+ Popover.prototype.setContent = function () {
+ var $tip = this.tip()
+ var title = this.getTitle()
+ var content = this.getContent()
+
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+ $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
+ this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
+ ](content)
+
+ $tip.removeClass('fade top bottom left right in')
+
+ // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+ // this manually by checking the contents.
+ if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+ }
+
+ Popover.prototype.hasContent = function () {
+ return this.getTitle() || this.getContent()
+ }
+
+ Popover.prototype.getContent = function () {
+ var $e = this.$element
+ var o = this.options
+
+ return $e.attr('data-content')
+ || (typeof o.content == 'function' ?
+ o.content.call($e[0]) :
+ o.content)
+ }
+
+ Popover.prototype.arrow = function () {
+ return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
+ }
+
+
+ // POPOVER PLUGIN DEFINITION
+ // =========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.popover')
+ var options = typeof option == 'object' && option
+
+ if (!data && /destroy|hide/.test(option)) return
+ if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.popover
+
+ $.fn.popover = Plugin
+ $.fn.popover.Constructor = Popover
+
+
+ // POPOVER NO CONFLICT
+ // ===================
+
+ $.fn.popover.noConflict = function () {
+ $.fn.popover = old
+ return this
+ }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.3.5
+ * http://getbootstrap.com/javascript/#scrollspy
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // SCROLLSPY CLASS DEFINITION
+ // ==========================
+
+ function ScrollSpy(element, options) {
+ this.$body = $(document.body)
+ this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
+ this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
+ this.selector = (this.options.target || '') + ' .nav li > a'
+ this.offsets = []
+ this.targets = []
+ this.activeTarget = null
+ this.scrollHeight = 0
+
+ this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
+ this.refresh()
+ this.process()
+ }
+
+ ScrollSpy.VERSION = '3.3.5'
+
+ ScrollSpy.DEFAULTS = {
+ offset: 10
+ }
+
+ ScrollSpy.prototype.getScrollHeight = function () {
+ return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
+ }
+
+ ScrollSpy.prototype.refresh = function () {
+ var that = this
+ var offsetMethod = 'offset'
+ var offsetBase = 0
+
+ this.offsets = []
+ this.targets = []
+ this.scrollHeight = this.getScrollHeight()
+
+ if (!$.isWindow(this.$scrollElement[0])) {
+ offsetMethod = 'position'
+ offsetBase = this.$scrollElement.scrollTop()
+ }
+
+ this.$body
+ .find(this.selector)
+ .map(function () {
+ var $el = $(this)
+ var href = $el.data('target') || $el.attr('href')
+ var $href = /^#./.test(href) && $(href)
+
+ return ($href
+ && $href.length
+ && $href.is(':visible')
+ && [[$href[offsetMethod]().top + offsetBase, href]]) || null
+ })
+ .sort(function (a, b) { return a[0] - b[0] })
+ .each(function () {
+ that.offsets.push(this[0])
+ that.targets.push(this[1])
+ })
+ }
+
+ ScrollSpy.prototype.process = function () {
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
+ var scrollHeight = this.getScrollHeight()
+ var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
+ var offsets = this.offsets
+ var targets = this.targets
+ var activeTarget = this.activeTarget
+ var i
+
+ if (this.scrollHeight != scrollHeight) {
+ this.refresh()
+ }
+
+ if (scrollTop >= maxScroll) {
+ return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
+ }
+
+ if (activeTarget && scrollTop < offsets[0]) {
+ this.activeTarget = null
+ return this.clear()
+ }
+
+ for (i = offsets.length; i--;) {
+ activeTarget != targets[i]
+ && scrollTop >= offsets[i]
+ && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
+ && this.activate(targets[i])
+ }
+ }
+
+ ScrollSpy.prototype.activate = function (target) {
+ this.activeTarget = target
+
+ this.clear()
+
+ var selector = this.selector +
+ '[data-target="' + target + '"],' +
+ this.selector + '[href="' + target + '"]'
+
+ var active = $(selector)
+ .parents('li')
+ .addClass('active')
+
+ if (active.parent('.dropdown-menu').length) {
+ active = active
+ .closest('li.dropdown')
+ .addClass('active')
+ }
+
+ active.trigger('activate.bs.scrollspy')
+ }
+
+ ScrollSpy.prototype.clear = function () {
+ $(this.selector)
+ .parentsUntil(this.options.target, '.active')
+ .removeClass('active')
+ }
+
+
+ // SCROLLSPY PLUGIN DEFINITION
+ // ===========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.scrollspy')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.scrollspy
+
+ $.fn.scrollspy = Plugin
+ $.fn.scrollspy.Constructor = ScrollSpy
+
+
+ // SCROLLSPY NO CONFLICT
+ // =====================
+
+ $.fn.scrollspy.noConflict = function () {
+ $.fn.scrollspy = old
+ return this
+ }
+
+
+ // SCROLLSPY DATA-API
+ // ==================
+
+ $(window).on('load.bs.scrollspy.data-api', function () {
+ $('[data-spy="scroll"]').each(function () {
+ var $spy = $(this)
+ Plugin.call($spy, $spy.data())
+ })
+ })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.3.5
+ * http://getbootstrap.com/javascript/#tabs
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // TAB CLASS DEFINITION
+ // ====================
+
+ var Tab = function (element) {
+ // jscs:disable requireDollarBeforejQueryAssignment
+ this.element = $(element)
+ // jscs:enable requireDollarBeforejQueryAssignment
+ }
+
+ Tab.VERSION = '3.3.5'
+
+ Tab.TRANSITION_DURATION = 150
+
+ Tab.prototype.show = function () {
+ var $this = this.element
+ var $ul = $this.closest('ul:not(.dropdown-menu)')
+ var selector = $this.data('target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+ }
+
+ if ($this.parent('li').hasClass('active')) return
+
+ var $previous = $ul.find('.active:last a')
+ var hideEvent = $.Event('hide.bs.tab', {
+ relatedTarget: $this[0]
+ })
+ var showEvent = $.Event('show.bs.tab', {
+ relatedTarget: $previous[0]
+ })
+
+ $previous.trigger(hideEvent)
+ $this.trigger(showEvent)
+
+ if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
+
+ var $target = $(selector)
+
+ this.activate($this.closest('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $previous.trigger({
+ type: 'hidden.bs.tab',
+ relatedTarget: $this[0]
+ })
+ $this.trigger({
+ type: 'shown.bs.tab',
+ relatedTarget: $previous[0]
+ })
+ })
+ }
+
+ Tab.prototype.activate = function (element, container, callback) {
+ var $active = container.find('> .active')
+ var transition = callback
+ && $.support.transition
+ && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+ .end()
+ .find('[data-toggle="tab"]')
+ .attr('aria-expanded', false)
+
+ element
+ .addClass('active')
+ .find('[data-toggle="tab"]')
+ .attr('aria-expanded', true)
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if (element.parent('.dropdown-menu').length) {
+ element
+ .closest('li.dropdown')
+ .addClass('active')
+ .end()
+ .find('[data-toggle="tab"]')
+ .attr('aria-expanded', true)
+ }
+
+ callback && callback()
+ }
+
+ $active.length && transition ?
+ $active
+ .one('bsTransitionEnd', next)
+ .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
+ next()
+
+ $active.removeClass('in')
+ }
+
+
+ // TAB PLUGIN DEFINITION
+ // =====================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.tab')
+
+ if (!data) $this.data('bs.tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.tab
+
+ $.fn.tab = Plugin
+ $.fn.tab.Constructor = Tab
+
+
+ // TAB NO CONFLICT
+ // ===============
+
+ $.fn.tab.noConflict = function () {
+ $.fn.tab = old
+ return this
+ }
+
+
+ // TAB DATA-API
+ // ============
+
+ var clickHandler = function (e) {
+ e.preventDefault()
+ Plugin.call($(this), 'show')
+ }
+
+ $(document)
+ .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
+ .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.3.5
+ * http://getbootstrap.com/javascript/#affix
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // AFFIX CLASS DEFINITION
+ // ======================
+
+ var Affix = function (element, options) {
+ this.options = $.extend({}, Affix.DEFAULTS, options)
+
+ this.$target = $(this.options.target)
+ .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+ .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
+
+ this.$element = $(element)
+ this.affixed = null
+ this.unpin = null
+ this.pinnedOffset = null
+
+ this.checkPosition()
+ }
+
+ Affix.VERSION = '3.3.5'
+
+ Affix.RESET = 'affix affix-top affix-bottom'
+
+ Affix.DEFAULTS = {
+ offset: 0,
+ target: window
+ }
+
+ Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
+ var scrollTop = this.$target.scrollTop()
+ var position = this.$element.offset()
+ var targetHeight = this.$target.height()
+
+ if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
+
+ if (this.affixed == 'bottom') {
+ if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
+ return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
+ }
+
+ var initializing = this.affixed == null
+ var colliderTop = initializing ? scrollTop : position.top
+ var colliderHeight = initializing ? targetHeight : height
+
+ if (offsetTop != null && scrollTop <= offsetTop) return 'top'
+ if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
+
+ return false
+ }
+
+ Affix.prototype.getPinnedOffset = function () {
+ if (this.pinnedOffset) return this.pinnedOffset
+ this.$element.removeClass(Affix.RESET).addClass('affix')
+ var scrollTop = this.$target.scrollTop()
+ var position = this.$element.offset()
+ return (this.pinnedOffset = position.top - scrollTop)
+ }
+
+ Affix.prototype.checkPositionWithEventLoop = function () {
+ setTimeout($.proxy(this.checkPosition, this), 1)
+ }
+
+ Affix.prototype.checkPosition = function () {
+ if (!this.$element.is(':visible')) return
+
+ var height = this.$element.height()
+ var offset = this.options.offset
+ var offsetTop = offset.top
+ var offsetBottom = offset.bottom
+ var scrollHeight = Math.max($(document).height(), $(document.body).height())
+
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
+ if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
+
+ var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
+
+ if (this.affixed != affix) {
+ if (this.unpin != null) this.$element.css('top', '')
+
+ var affixType = 'affix' + (affix ? '-' + affix : '')
+ var e = $.Event(affixType + '.bs.affix')
+
+ this.$element.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ this.affixed = affix
+ this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+
+ this.$element
+ .removeClass(Affix.RESET)
+ .addClass(affixType)
+ .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
+ }
+
+ if (affix == 'bottom') {
+ this.$element.offset({
+ top: scrollHeight - height - offsetBottom
+ })
+ }
+ }
+
+
+ // AFFIX PLUGIN DEFINITION
+ // =======================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.affix')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.affix
+
+ $.fn.affix = Plugin
+ $.fn.affix.Constructor = Affix
+
+
+ // AFFIX NO CONFLICT
+ // =================
+
+ $.fn.affix.noConflict = function () {
+ $.fn.affix = old
+ return this
+ }
+
+
+ // AFFIX DATA-API
+ // ==============
+
+ $(window).on('load', function () {
+ $('[data-spy="affix"]').each(function () {
+ var $spy = $(this)
+ var data = $spy.data()
+
+ data.offset = data.offset || {}
+
+ if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
+ if (data.offsetTop != null) data.offset.top = data.offsetTop
+
+ Plugin.call($spy, data)
+ })
+ })
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/bootstrap.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/bootstrap.min.js
new file mode 100644
index 0000000..133aeec
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),
+d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/npm.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/npm.js
new file mode 100644
index 0000000..bf6aa80
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/dist/js/npm.js
@@ -0,0 +1,13 @@
+// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
+require('../../js/transition.js')
+require('../../js/alert.js')
+require('../../js/button.js')
+require('../../js/carousel.js')
+require('../../js/collapse.js')
+require('../../js/dropdown.js')
+require('../../js/modal.js')
+require('../../js/tooltip.js')
+require('../../js/popover.js')
+require('../../js/scrollspy.js')
+require('../../js/tab.js')
+require('../../js/affix.js')
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..b93a495
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode=" " />
+<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode=" " horiz-adv-x="650" />
+<glyph unicode=" " horiz-adv-x="1300" />
+<glyph unicode=" " horiz-adv-x="650" />
+<glyph unicode=" " horiz-adv-x="1300" />
+<glyph unicode=" " horiz-adv-x="433" />
+<glyph unicode=" " horiz-adv-x="325" />
+<glyph unicode=" " horiz-adv-x="216" />
+<glyph unicode=" " horiz-adv-x="216" />
+<glyph unicode=" " horiz-adv-x="162" />
+<glyph unicode=" " horiz-adv-x="260" />
+<glyph unicode=" " horiz-adv-x="72" />
+<glyph unicode=" " horiz-adv-x="260" />
+<glyph unicode=" " horiz-adv-x="325" />
+<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..1413fc6
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..9e61285
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/fonts/glyphicons-halflings-regular.woff2 differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-commonjs-generator.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-commonjs-generator.js
new file mode 100644
index 0000000..0b4ebbf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-commonjs-generator.js
@@ -0,0 +1,30 @@
+/*!
+ * Bootstrap Grunt task for the CommonJS module generation
+ * http://getbootstrap.com
+ * Copyright 2014-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+'use strict';
+
+var fs = require('fs');
+var path = require('path');
+
+var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n';
+
+module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) {
+ var destDir = path.dirname(destFilepath);
+
+ function srcPathToDestRequire(srcFilepath) {
+ var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/');
+ return 'require(\'' + requirePath + '\')';
+ }
+
+ var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n');
+ try {
+ fs.writeFileSync(destFilepath, moduleOutputJs);
+ } catch (err) {
+ grunt.fail.warn(err);
+ }
+ grunt.log.writeln('File ' + destFilepath.cyan + ' created.');
+};
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-glyphicons-data-generator.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-glyphicons-data-generator.js
new file mode 100644
index 0000000..af2a82e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-glyphicons-data-generator.js
@@ -0,0 +1,42 @@
+/*!
+ * Bootstrap Grunt task for Glyphicons data generation
+ * http://getbootstrap.com
+ * Copyright 2014-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+'use strict';
+
+var fs = require('fs');
+
+module.exports = function generateGlyphiconsData(grunt) {
+ // Pass encoding, utf8, so `readFileSync` will return a string instead of a
+ // buffer
+ var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8');
+ var glyphiconsLines = glyphiconsFile.split('\n');
+
+ // Use any line that starts with ".glyphicon-" and capture the class name
+ var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/;
+ var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' +
+ '# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n';
+ var glyphiconsYml = 'docs/_data/glyphicons.yml';
+ for (var i = 0, len = glyphiconsLines.length; i < len; i++) {
+ var match = glyphiconsLines[i].match(iconClassName);
+
+ if (match !== null) {
+ glyphiconsData += '- ' + match[1] + '\n';
+ }
+ }
+
+ // Create the `_data` directory if it doesn't already exist
+ if (!fs.existsSync('docs/_data')) {
+ fs.mkdirSync('docs/_data');
+ }
+
+ try {
+ fs.writeFileSync(glyphiconsYml, glyphiconsData);
+ } catch (err) {
+ grunt.fail.warn(err);
+ }
+ grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.');
+};
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-lessdoc-parser.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-lessdoc-parser.js
new file mode 100644
index 0000000..5a9ed2b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-lessdoc-parser.js
@@ -0,0 +1,237 @@
+/*!
+ * Bootstrap Grunt task for parsing Less docstrings
+ * http://getbootstrap.com
+ * Copyright 2014-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+'use strict';
+
+var Markdown = require('markdown-it');
+
+function markdown2html(markdownString) {
+ var md = new Markdown();
+
+ // the slice removes the <p>...</p> wrapper output by Markdown processor
+ return md.render(markdownString.trim()).slice(3, -5);
+}
+
+
+/*
+Mini-language:
+ //== This is a normal heading, which starts a section. Sections group variables together.
+ //## Optional description for the heading
+
+ //=== This is a subheading.
+
+ //** Optional description for the following variable. You **can** use Markdown in descriptions to discuss `<html>` stuff.
+ @foo: #fff;
+
+ //-- This is a heading for a section whose variables shouldn't be customizable
+
+ All other lines are ignored completely.
+*/
+
+
+var CUSTOMIZABLE_HEADING = /^[/]{2}={2}(.*)$/;
+var UNCUSTOMIZABLE_HEADING = /^[/]{2}-{2}(.*)$/;
+var SUBSECTION_HEADING = /^[/]{2}={3}(.*)$/;
+var SECTION_DOCSTRING = /^[/]{2}#{2}(.+)$/;
+var VAR_ASSIGNMENT = /^(@[a-zA-Z0-9_-]+):[ ]*([^ ;][^;]*);[ ]*$/;
+var VAR_DOCSTRING = /^[/]{2}[*]{2}(.+)$/;
+
+function Section(heading, customizable) {
+ this.heading = heading.trim();
+ this.id = this.heading.replace(/\s+/g, '-').toLowerCase();
+ this.customizable = customizable;
+ this.docstring = null;
+ this.subsections = [];
+}
+
+Section.prototype.addSubSection = function (subsection) {
+ this.subsections.push(subsection);
+};
+
+function SubSection(heading) {
+ this.heading = heading.trim();
+ this.id = this.heading.replace(/\s+/g, '-').toLowerCase();
+ this.variables = [];
+}
+
+SubSection.prototype.addVar = function (variable) {
+ this.variables.push(variable);
+};
+
+function VarDocstring(markdownString) {
+ this.html = markdown2html(markdownString);
+}
+
+function SectionDocstring(markdownString) {
+ this.html = markdown2html(markdownString);
+}
+
+function Variable(name, defaultValue) {
+ this.name = name;
+ this.defaultValue = defaultValue;
+ this.docstring = null;
+}
+
+function Tokenizer(fileContent) {
+ this._lines = fileContent.split('\n');
+ this._next = undefined;
+}
+
+Tokenizer.prototype.unshift = function (token) {
+ if (this._next !== undefined) {
+ throw new Error('Attempted to unshift twice!');
+ }
+ this._next = token;
+};
+
+Tokenizer.prototype._shift = function () {
+ // returning null signals EOF
+ // returning undefined means the line was ignored
+ if (this._next !== undefined) {
+ var result = this._next;
+ this._next = undefined;
+ return result;
+ }
+ if (this._lines.length <= 0) {
+ return null;
+ }
+ var line = this._lines.shift();
+ var match = null;
+ match = SUBSECTION_HEADING.exec(line);
+ if (match !== null) {
+ return new SubSection(match[1]);
+ }
+ match = CUSTOMIZABLE_HEADING.exec(line);
+ if (match !== null) {
+ return new Section(match[1], true);
+ }
+ match = UNCUSTOMIZABLE_HEADING.exec(line);
+ if (match !== null) {
+ return new Section(match[1], false);
+ }
+ match = SECTION_DOCSTRING.exec(line);
+ if (match !== null) {
+ return new SectionDocstring(match[1]);
+ }
+ match = VAR_DOCSTRING.exec(line);
+ if (match !== null) {
+ return new VarDocstring(match[1]);
+ }
+ var commentStart = line.lastIndexOf('//');
+ var varLine = commentStart === -1 ? line : line.slice(0, commentStart);
+ match = VAR_ASSIGNMENT.exec(varLine);
+ if (match !== null) {
+ return new Variable(match[1], match[2]);
+ }
+ return undefined;
+};
+
+Tokenizer.prototype.shift = function () {
+ while (true) {
+ var result = this._shift();
+ if (result === undefined) {
+ continue;
+ }
+ return result;
+ }
+};
+
+function Parser(fileContent) {
+ this._tokenizer = new Tokenizer(fileContent);
+}
+
+Parser.prototype.parseFile = function () {
+ var sections = [];
+ while (true) {
+ var section = this.parseSection();
+ if (section === null) {
+ if (this._tokenizer.shift() !== null) {
+ throw new Error('Unexpected unparsed section of file remains!');
+ }
+ return sections;
+ }
+ sections.push(section);
+ }
+};
+
+Parser.prototype.parseSection = function () {
+ var section = this._tokenizer.shift();
+ if (section === null) {
+ return null;
+ }
+ if (!(section instanceof Section)) {
+ throw new Error('Expected section heading; got: ' + JSON.stringify(section));
+ }
+ var docstring = this._tokenizer.shift();
+ if (docstring instanceof SectionDocstring) {
+ section.docstring = docstring;
+ } else {
+ this._tokenizer.unshift(docstring);
+ }
+ this.parseSubSections(section);
+
+ return section;
+};
+
+Parser.prototype.parseSubSections = function (section) {
+ while (true) {
+ var subsection = this.parseSubSection();
+ if (subsection === null) {
+ if (section.subsections.length === 0) {
+ // Presume an implicit initial subsection
+ subsection = new SubSection('');
+ this.parseVars(subsection);
+ } else {
+ break;
+ }
+ }
+ section.addSubSection(subsection);
+ }
+
+ if (section.subsections.length === 1 && !section.subsections[0].heading && section.subsections[0].variables.length === 0) {
+ // Ignore lone empty implicit subsection
+ section.subsections = [];
+ }
+};
+
+Parser.prototype.parseSubSection = function () {
+ var subsection = this._tokenizer.shift();
+ if (subsection instanceof SubSection) {
+ this.parseVars(subsection);
+ return subsection;
+ }
+ this._tokenizer.unshift(subsection);
+ return null;
+};
+
+Parser.prototype.parseVars = function (subsection) {
+ while (true) {
+ var variable = this.parseVar();
+ if (variable === null) {
+ return;
+ }
+ subsection.addVar(variable);
+ }
+};
+
+Parser.prototype.parseVar = function () {
+ var docstring = this._tokenizer.shift();
+ if (!(docstring instanceof VarDocstring)) {
+ this._tokenizer.unshift(docstring);
+ docstring = null;
+ }
+ var variable = this._tokenizer.shift();
+ if (variable instanceof Variable) {
+ variable.docstring = docstring;
+ return variable;
+ }
+ this._tokenizer.unshift(variable);
+ return null;
+};
+
+
+module.exports = Parser;
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-raw-files-generator.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-raw-files-generator.js
new file mode 100644
index 0000000..39224e4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/bs-raw-files-generator.js
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap Grunt task for generating raw-files.min.js for the Customizer
+ * http://getbootstrap.com
+ * Copyright 2014-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+'use strict';
+
+var fs = require('fs');
+var btoa = require('btoa');
+var glob = require('glob');
+
+function getFiles(type) {
+ var files = {};
+ var recursive = type === 'less';
+ var globExpr = recursive ? '/**/*' : '/*';
+ glob.sync(type + globExpr)
+ .filter(function (path) {
+ return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path);
+ })
+ .forEach(function (fullPath) {
+ var relativePath = fullPath.replace(/^[^/]+\//, '');
+ files[relativePath] = type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8');
+ });
+ return 'var __' + type + ' = ' + JSON.stringify(files) + '\n';
+}
+
+module.exports = function generateRawFilesJs(grunt, banner) {
+ if (!banner) {
+ banner = '';
+ }
+ var dirs = ['js', 'less', 'fonts'];
+ var files = banner + dirs.map(getFiles).reduce(function (combined, file) {
+ return combined + file;
+ }, '');
+ var rawFilesJs = 'docs/assets/js/raw-files.min.js';
+ try {
+ fs.writeFileSync(rawFilesJs, files);
+ } catch (err) {
+ grunt.fail.warn(err);
+ }
+ grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.');
+};
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/configBridge.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/configBridge.json
new file mode 100644
index 0000000..8ce4c3d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/configBridge.json
@@ -0,0 +1,46 @@
+{
+ "paths": {
+ "customizerJs": [
+ "../assets/js/vendor/autoprefixer.js",
+ "../assets/js/vendor/less.min.js",
+ "../assets/js/vendor/jszip.min.js",
+ "../assets/js/vendor/uglify.min.js",
+ "../assets/js/vendor/Blob.js",
+ "../assets/js/vendor/FileSaver.js",
+ "../assets/js/raw-files.min.js",
+ "../assets/js/src/customizer.js"
+ ],
+ "docsJs": [
+ "../assets/js/vendor/holder.min.js",
+ "../assets/js/vendor/ZeroClipboard.min.js",
+ "../assets/js/vendor/anchor.js",
+ "../assets/js/src/application.js"
+ ]
+ },
+ "config": {
+ "autoprefixerBrowsers": [
+ "Android 2.3",
+ "Android >= 4",
+ "Chrome >= 20",
+ "Firefox >= 24",
+ "Explorer >= 8",
+ "iOS >= 6",
+ "Opera >= 12",
+ "Safari >= 6"
+ ],
+ "jqueryCheck": [
+ "if (typeof jQuery === 'undefined') {",
+ " throw new Error('Bootstrap\\'s JavaScript requires jQuery')",
+ "}\n"
+ ],
+ "jqueryVersionCheck": [
+ "+function ($) {",
+ " 'use strict';",
+ " var version = $.fn.jquery.split(' ')[0].split('.')",
+ " if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {",
+ " throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')",
+ " }",
+ "}(jQuery);\n\n"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/sauce_browsers.yml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/sauce_browsers.yml
new file mode 100644
index 0000000..6267f35
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/grunt/sauce_browsers.yml
@@ -0,0 +1,82 @@
+[
+ # Docs: https://saucelabs.com/docs/platforms/webdriver
+
+ {
+ browserName: "safari",
+ platform: "OS X 10.10"
+ },
+ {
+ browserName: "chrome",
+ platform: "OS X 10.10"
+ },
+ {
+ browserName: "firefox",
+ platform: "OS X 10.10"
+ },
+
+ # Mac Opera not currently supported by Sauce Labs
+
+ {
+ browserName: "internet explorer",
+ version: "11",
+ platform: "Windows 8.1"
+ },
+ {
+ browserName: "internet explorer",
+ version: "10",
+ platform: "Windows 8"
+ },
+ {
+ browserName: "internet explorer",
+ version: "9",
+ platform: "Windows 7"
+ },
+ {
+ browserName: "internet explorer",
+ version: "8",
+ platform: "Windows 7"
+ },
+
+ # { # Unofficial
+ # browserName: "internet explorer",
+ # version: "7",
+ # platform: "Windows XP"
+ # },
+
+ {
+ browserName: "chrome",
+ platform: "Windows 8.1"
+ },
+ {
+ browserName: "firefox",
+ platform: "Windows 8.1"
+ },
+
+ # Win Opera 15+ not currently supported by Sauce Labs
+
+ {
+ browserName: "iphone",
+ platform: "OS X 10.10",
+ version: "8.2"
+ },
+
+ # iOS Chrome not currently supported by Sauce Labs
+
+ # Linux (unofficial)
+ {
+ browserName: "chrome",
+ platform: "Linux"
+ },
+ {
+ browserName: "firefox",
+ platform: "Linux"
+ }
+
+ # Android Chrome not currently supported by Sauce Labs
+
+ # { # Android Browser (super-unofficial)
+ # browserName: "android",
+ # version: "4.0",
+ # platform: "Linux"
+ # }
+]
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/affix.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/affix.js
new file mode 100644
index 0000000..11a3d39
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/affix.js
@@ -0,0 +1,162 @@
+/* ========================================================================
+ * Bootstrap: affix.js v3.3.5
+ * http://getbootstrap.com/javascript/#affix
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // AFFIX CLASS DEFINITION
+ // ======================
+
+ var Affix = function (element, options) {
+ this.options = $.extend({}, Affix.DEFAULTS, options)
+
+ this.$target = $(this.options.target)
+ .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+ .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
+
+ this.$element = $(element)
+ this.affixed = null
+ this.unpin = null
+ this.pinnedOffset = null
+
+ this.checkPosition()
+ }
+
+ Affix.VERSION = '3.3.5'
+
+ Affix.RESET = 'affix affix-top affix-bottom'
+
+ Affix.DEFAULTS = {
+ offset: 0,
+ target: window
+ }
+
+ Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
+ var scrollTop = this.$target.scrollTop()
+ var position = this.$element.offset()
+ var targetHeight = this.$target.height()
+
+ if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
+
+ if (this.affixed == 'bottom') {
+ if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
+ return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
+ }
+
+ var initializing = this.affixed == null
+ var colliderTop = initializing ? scrollTop : position.top
+ var colliderHeight = initializing ? targetHeight : height
+
+ if (offsetTop != null && scrollTop <= offsetTop) return 'top'
+ if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
+
+ return false
+ }
+
+ Affix.prototype.getPinnedOffset = function () {
+ if (this.pinnedOffset) return this.pinnedOffset
+ this.$element.removeClass(Affix.RESET).addClass('affix')
+ var scrollTop = this.$target.scrollTop()
+ var position = this.$element.offset()
+ return (this.pinnedOffset = position.top - scrollTop)
+ }
+
+ Affix.prototype.checkPositionWithEventLoop = function () {
+ setTimeout($.proxy(this.checkPosition, this), 1)
+ }
+
+ Affix.prototype.checkPosition = function () {
+ if (!this.$element.is(':visible')) return
+
+ var height = this.$element.height()
+ var offset = this.options.offset
+ var offsetTop = offset.top
+ var offsetBottom = offset.bottom
+ var scrollHeight = Math.max($(document).height(), $(document.body).height())
+
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
+ if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
+
+ var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
+
+ if (this.affixed != affix) {
+ if (this.unpin != null) this.$element.css('top', '')
+
+ var affixType = 'affix' + (affix ? '-' + affix : '')
+ var e = $.Event(affixType + '.bs.affix')
+
+ this.$element.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ this.affixed = affix
+ this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+
+ this.$element
+ .removeClass(Affix.RESET)
+ .addClass(affixType)
+ .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
+ }
+
+ if (affix == 'bottom') {
+ this.$element.offset({
+ top: scrollHeight - height - offsetBottom
+ })
+ }
+ }
+
+
+ // AFFIX PLUGIN DEFINITION
+ // =======================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.affix')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.affix
+
+ $.fn.affix = Plugin
+ $.fn.affix.Constructor = Affix
+
+
+ // AFFIX NO CONFLICT
+ // =================
+
+ $.fn.affix.noConflict = function () {
+ $.fn.affix = old
+ return this
+ }
+
+
+ // AFFIX DATA-API
+ // ==============
+
+ $(window).on('load', function () {
+ $('[data-spy="affix"]').each(function () {
+ var $spy = $(this)
+ var data = $spy.data()
+
+ data.offset = data.offset || {}
+
+ if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
+ if (data.offsetTop != null) data.offset.top = data.offsetTop
+
+ Plugin.call($spy, data)
+ })
+ })
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/alert.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/alert.js
new file mode 100644
index 0000000..a7787cb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/alert.js
@@ -0,0 +1,94 @@
+/* ========================================================================
+ * Bootstrap: alert.js v3.3.5
+ * http://getbootstrap.com/javascript/#alerts
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // ALERT CLASS DEFINITION
+ // ======================
+
+ var dismiss = '[data-dismiss="alert"]'
+ var Alert = function (el) {
+ $(el).on('click', dismiss, this.close)
+ }
+
+ Alert.VERSION = '3.3.5'
+
+ Alert.TRANSITION_DURATION = 150
+
+ Alert.prototype.close = function (e) {
+ var $this = $(this)
+ var selector = $this.attr('data-target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+ }
+
+ var $parent = $(selector)
+
+ if (e) e.preventDefault()
+
+ if (!$parent.length) {
+ $parent = $this.closest('.alert')
+ }
+
+ $parent.trigger(e = $.Event('close.bs.alert'))
+
+ if (e.isDefaultPrevented()) return
+
+ $parent.removeClass('in')
+
+ function removeElement() {
+ // detach from parent, fire event then clean up data
+ $parent.detach().trigger('closed.bs.alert').remove()
+ }
+
+ $.support.transition && $parent.hasClass('fade') ?
+ $parent
+ .one('bsTransitionEnd', removeElement)
+ .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
+ removeElement()
+ }
+
+
+ // ALERT PLUGIN DEFINITION
+ // =======================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.alert')
+
+ if (!data) $this.data('bs.alert', (data = new Alert(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ var old = $.fn.alert
+
+ $.fn.alert = Plugin
+ $.fn.alert.Constructor = Alert
+
+
+ // ALERT NO CONFLICT
+ // =================
+
+ $.fn.alert.noConflict = function () {
+ $.fn.alert = old
+ return this
+ }
+
+
+ // ALERT DATA-API
+ // ==============
+
+ $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/button.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/button.js
new file mode 100644
index 0000000..15d7dca
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/button.js
@@ -0,0 +1,120 @@
+/* ========================================================================
+ * Bootstrap: button.js v3.3.5
+ * http://getbootstrap.com/javascript/#buttons
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // BUTTON PUBLIC CLASS DEFINITION
+ // ==============================
+
+ var Button = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, Button.DEFAULTS, options)
+ this.isLoading = false
+ }
+
+ Button.VERSION = '3.3.5'
+
+ Button.DEFAULTS = {
+ loadingText: 'loading...'
+ }
+
+ Button.prototype.setState = function (state) {
+ var d = 'disabled'
+ var $el = this.$element
+ var val = $el.is('input') ? 'val' : 'html'
+ var data = $el.data()
+
+ state += 'Text'
+
+ if (data.resetText == null) $el.data('resetText', $el[val]())
+
+ // push to event loop to allow forms to submit
+ setTimeout($.proxy(function () {
+ $el[val](data[state] == null ? this.options[state] : data[state])
+
+ if (state == 'loadingText') {
+ this.isLoading = true
+ $el.addClass(d).attr(d, d)
+ } else if (this.isLoading) {
+ this.isLoading = false
+ $el.removeClass(d).removeAttr(d)
+ }
+ }, this), 0)
+ }
+
+ Button.prototype.toggle = function () {
+ var changed = true
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+ if ($parent.length) {
+ var $input = this.$element.find('input')
+ if ($input.prop('type') == 'radio') {
+ if ($input.prop('checked')) changed = false
+ $parent.find('.active').removeClass('active')
+ this.$element.addClass('active')
+ } else if ($input.prop('type') == 'checkbox') {
+ if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
+ this.$element.toggleClass('active')
+ }
+ $input.prop('checked', this.$element.hasClass('active'))
+ if (changed) $input.trigger('change')
+ } else {
+ this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
+ this.$element.toggleClass('active')
+ }
+ }
+
+
+ // BUTTON PLUGIN DEFINITION
+ // ========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.button')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
+
+ var old = $.fn.button
+
+ $.fn.button = Plugin
+ $.fn.button.Constructor = Button
+
+
+ // BUTTON NO CONFLICT
+ // ==================
+
+ $.fn.button.noConflict = function () {
+ $.fn.button = old
+ return this
+ }
+
+
+ // BUTTON DATA-API
+ // ===============
+
+ $(document)
+ .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ Plugin.call($btn, 'toggle')
+ if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
+ })
+ .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+ $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
+ })
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/carousel.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/carousel.js
new file mode 100644
index 0000000..6b2f1c4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/carousel.js
@@ -0,0 +1,237 @@
+/* ========================================================================
+ * Bootstrap: carousel.js v3.3.5
+ * http://getbootstrap.com/javascript/#carousel
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // CAROUSEL CLASS DEFINITION
+ // =========================
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.$indicators = this.$element.find('.carousel-indicators')
+ this.options = options
+ this.paused = null
+ this.sliding = null
+ this.interval = null
+ this.$active = null
+ this.$items = null
+
+ this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
+
+ this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
+ .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
+ .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
+ }
+
+ Carousel.VERSION = '3.3.5'
+
+ Carousel.TRANSITION_DURATION = 600
+
+ Carousel.DEFAULTS = {
+ interval: 5000,
+ pause: 'hover',
+ wrap: true,
+ keyboard: true
+ }
+
+ Carousel.prototype.keydown = function (e) {
+ if (/input|textarea/i.test(e.target.tagName)) return
+ switch (e.which) {
+ case 37: this.prev(); break
+ case 39: this.next(); break
+ default: return
+ }
+
+ e.preventDefault()
+ }
+
+ Carousel.prototype.cycle = function (e) {
+ e || (this.paused = false)
+
+ this.interval && clearInterval(this.interval)
+
+ this.options.interval
+ && !this.paused
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+ return this
+ }
+
+ Carousel.prototype.getItemIndex = function (item) {
+ this.$items = item.parent().children('.item')
+ return this.$items.index(item || this.$active)
+ }
+
+ Carousel.prototype.getItemForDirection = function (direction, active) {
+ var activeIndex = this.getItemIndex(active)
+ var willWrap = (direction == 'prev' && activeIndex === 0)
+ || (direction == 'next' && activeIndex == (this.$items.length - 1))
+ if (willWrap && !this.options.wrap) return active
+ var delta = direction == 'prev' ? -1 : 1
+ var itemIndex = (activeIndex + delta) % this.$items.length
+ return this.$items.eq(itemIndex)
+ }
+
+ Carousel.prototype.to = function (pos) {
+ var that = this
+ var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
+
+ if (pos > (this.$items.length - 1) || pos < 0) return
+
+ if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
+ if (activeIndex == pos) return this.pause().cycle()
+
+ return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
+ }
+
+ Carousel.prototype.pause = function (e) {
+ e || (this.paused = true)
+
+ if (this.$element.find('.next, .prev').length && $.support.transition) {
+ this.$element.trigger($.support.transition.end)
+ this.cycle(true)
+ }
+
+ this.interval = clearInterval(this.interval)
+
+ return this
+ }
+
+ Carousel.prototype.next = function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ Carousel.prototype.prev = function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ Carousel.prototype.slide = function (type, next) {
+ var $active = this.$element.find('.item.active')
+ var $next = next || this.getItemForDirection(type, $active)
+ var isCycling = this.interval
+ var direction = type == 'next' ? 'left' : 'right'
+ var that = this
+
+ if ($next.hasClass('active')) return (this.sliding = false)
+
+ var relatedTarget = $next[0]
+ var slideEvent = $.Event('slide.bs.carousel', {
+ relatedTarget: relatedTarget,
+ direction: direction
+ })
+ this.$element.trigger(slideEvent)
+ if (slideEvent.isDefaultPrevented()) return
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ if (this.$indicators.length) {
+ this.$indicators.find('.active').removeClass('active')
+ var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
+ $nextIndicator && $nextIndicator.addClass('active')
+ }
+
+ var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
+ if ($.support.transition && this.$element.hasClass('slide')) {
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ $active
+ .one('bsTransitionEnd', function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () {
+ that.$element.trigger(slidEvent)
+ }, 0)
+ })
+ .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
+ } else {
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger(slidEvent)
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+
+ // CAROUSEL PLUGIN DEFINITION
+ // ==========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.carousel')
+ var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+ var action = typeof option == 'string' ? option : options.slide
+
+ if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (action) data[action]()
+ else if (options.interval) data.pause().cycle()
+ })
+ }
+
+ var old = $.fn.carousel
+
+ $.fn.carousel = Plugin
+ $.fn.carousel.Constructor = Carousel
+
+
+ // CAROUSEL NO CONFLICT
+ // ====================
+
+ $.fn.carousel.noConflict = function () {
+ $.fn.carousel = old
+ return this
+ }
+
+
+ // CAROUSEL DATA-API
+ // =================
+
+ var clickHandler = function (e) {
+ var href
+ var $this = $(this)
+ var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
+ if (!$target.hasClass('carousel')) return
+ var options = $.extend({}, $target.data(), $this.data())
+ var slideIndex = $this.attr('data-slide-to')
+ if (slideIndex) options.interval = false
+
+ Plugin.call($target, options)
+
+ if (slideIndex) {
+ $target.data('bs.carousel').to(slideIndex)
+ }
+
+ e.preventDefault()
+ }
+
+ $(document)
+ .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
+ .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
+
+ $(window).on('load', function () {
+ $('[data-ride="carousel"]').each(function () {
+ var $carousel = $(this)
+ Plugin.call($carousel, $carousel.data())
+ })
+ })
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/collapse.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/collapse.js
new file mode 100644
index 0000000..329e535
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/collapse.js
@@ -0,0 +1,211 @@
+/* ========================================================================
+ * Bootstrap: collapse.js v3.3.5
+ * http://getbootstrap.com/javascript/#collapse
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // COLLAPSE PUBLIC CLASS DEFINITION
+ // ================================
+
+ var Collapse = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, Collapse.DEFAULTS, options)
+ this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
+ '[data-toggle="collapse"][data-target="#' + element.id + '"]')
+ this.transitioning = null
+
+ if (this.options.parent) {
+ this.$parent = this.getParent()
+ } else {
+ this.addAriaAndCollapsedClass(this.$element, this.$trigger)
+ }
+
+ if (this.options.toggle) this.toggle()
+ }
+
+ Collapse.VERSION = '3.3.5'
+
+ Collapse.TRANSITION_DURATION = 350
+
+ Collapse.DEFAULTS = {
+ toggle: true
+ }
+
+ Collapse.prototype.dimension = function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ Collapse.prototype.show = function () {
+ if (this.transitioning || this.$element.hasClass('in')) return
+
+ var activesData
+ var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
+
+ if (actives && actives.length) {
+ activesData = actives.data('bs.collapse')
+ if (activesData && activesData.transitioning) return
+ }
+
+ var startEvent = $.Event('show.bs.collapse')
+ this.$element.trigger(startEvent)
+ if (startEvent.isDefaultPrevented()) return
+
+ if (actives && actives.length) {
+ Plugin.call(actives, 'hide')
+ activesData || actives.data('bs.collapse', null)
+ }
+
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ .addClass('collapsing')[dimension](0)
+ .attr('aria-expanded', true)
+
+ this.$trigger
+ .removeClass('collapsed')
+ .attr('aria-expanded', true)
+
+ this.transitioning = 1
+
+ var complete = function () {
+ this.$element
+ .removeClass('collapsing')
+ .addClass('collapse in')[dimension]('')
+ this.transitioning = 0
+ this.$element
+ .trigger('shown.bs.collapse')
+ }
+
+ if (!$.support.transition) return complete.call(this)
+
+ var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+ this.$element
+ .one('bsTransitionEnd', $.proxy(complete, this))
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
+ }
+
+ Collapse.prototype.hide = function () {
+ if (this.transitioning || !this.$element.hasClass('in')) return
+
+ var startEvent = $.Event('hide.bs.collapse')
+ this.$element.trigger(startEvent)
+ if (startEvent.isDefaultPrevented()) return
+
+ var dimension = this.dimension()
+
+ this.$element[dimension](this.$element[dimension]())[0].offsetHeight
+
+ this.$element
+ .addClass('collapsing')
+ .removeClass('collapse in')
+ .attr('aria-expanded', false)
+
+ this.$trigger
+ .addClass('collapsed')
+ .attr('aria-expanded', false)
+
+ this.transitioning = 1
+
+ var complete = function () {
+ this.transitioning = 0
+ this.$element
+ .removeClass('collapsing')
+ .addClass('collapse')
+ .trigger('hidden.bs.collapse')
+ }
+
+ if (!$.support.transition) return complete.call(this)
+
+ this.$element
+ [dimension](0)
+ .one('bsTransitionEnd', $.proxy(complete, this))
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
+ }
+
+ Collapse.prototype.toggle = function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+ Collapse.prototype.getParent = function () {
+ return $(this.options.parent)
+ .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
+ .each($.proxy(function (i, element) {
+ var $element = $(element)
+ this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
+ }, this))
+ .end()
+ }
+
+ Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
+ var isOpen = $element.hasClass('in')
+
+ $element.attr('aria-expanded', isOpen)
+ $trigger
+ .toggleClass('collapsed', !isOpen)
+ .attr('aria-expanded', isOpen)
+ }
+
+ function getTargetFromTrigger($trigger) {
+ var href
+ var target = $trigger.attr('data-target')
+ || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+
+ return $(target)
+ }
+
+
+ // COLLAPSE PLUGIN DEFINITION
+ // ==========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.collapse')
+ var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+ if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
+ if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.collapse
+
+ $.fn.collapse = Plugin
+ $.fn.collapse.Constructor = Collapse
+
+
+ // COLLAPSE NO CONFLICT
+ // ====================
+
+ $.fn.collapse.noConflict = function () {
+ $.fn.collapse = old
+ return this
+ }
+
+
+ // COLLAPSE DATA-API
+ // =================
+
+ $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
+ var $this = $(this)
+
+ if (!$this.attr('data-target')) e.preventDefault()
+
+ var $target = getTargetFromTrigger($this)
+ var data = $target.data('bs.collapse')
+ var option = data ? 'toggle' : $this.data()
+
+ Plugin.call($target, option)
+ })
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/dropdown.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/dropdown.js
new file mode 100644
index 0000000..bc4d373
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/dropdown.js
@@ -0,0 +1,165 @@
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.3.5
+ * http://getbootstrap.com/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // DROPDOWN CLASS DEFINITION
+ // =========================
+
+ var backdrop = '.dropdown-backdrop'
+ var toggle = '[data-toggle="dropdown"]'
+ var Dropdown = function (element) {
+ $(element).on('click.bs.dropdown', this.toggle)
+ }
+
+ Dropdown.VERSION = '3.3.5'
+
+ function getParent($this) {
+ var selector = $this.attr('data-target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+ }
+
+ var $parent = selector && $(selector)
+
+ return $parent && $parent.length ? $parent : $this.parent()
+ }
+
+ function clearMenus(e) {
+ if (e && e.which === 3) return
+ $(backdrop).remove()
+ $(toggle).each(function () {
+ var $this = $(this)
+ var $parent = getParent($this)
+ var relatedTarget = { relatedTarget: this }
+
+ if (!$parent.hasClass('open')) return
+
+ if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
+
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+
+ if (e.isDefaultPrevented()) return
+
+ $this.attr('aria-expanded', 'false')
+ $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
+ })
+ }
+
+ Dropdown.prototype.toggle = function (e) {
+ var $this = $(this)
+
+ if ($this.is('.disabled, :disabled')) return
+
+ var $parent = getParent($this)
+ var isActive = $parent.hasClass('open')
+
+ clearMenus()
+
+ if (!isActive) {
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+ // if mobile we use a backdrop because click events don't delegate
+ $(document.createElement('div'))
+ .addClass('dropdown-backdrop')
+ .insertAfter($(this))
+ .on('click', clearMenus)
+ }
+
+ var relatedTarget = { relatedTarget: this }
+ $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
+
+ if (e.isDefaultPrevented()) return
+
+ $this
+ .trigger('focus')
+ .attr('aria-expanded', 'true')
+
+ $parent
+ .toggleClass('open')
+ .trigger('shown.bs.dropdown', relatedTarget)
+ }
+
+ return false
+ }
+
+ Dropdown.prototype.keydown = function (e) {
+ if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
+
+ var $this = $(this)
+
+ e.preventDefault()
+ e.stopPropagation()
+
+ if ($this.is('.disabled, :disabled')) return
+
+ var $parent = getParent($this)
+ var isActive = $parent.hasClass('open')
+
+ if (!isActive && e.which != 27 || isActive && e.which == 27) {
+ if (e.which == 27) $parent.find(toggle).trigger('focus')
+ return $this.trigger('click')
+ }
+
+ var desc = ' li:not(.disabled):visible a'
+ var $items = $parent.find('.dropdown-menu' + desc)
+
+ if (!$items.length) return
+
+ var index = $items.index(e.target)
+
+ if (e.which == 38 && index > 0) index-- // up
+ if (e.which == 40 && index < $items.length - 1) index++ // down
+ if (!~index) index = 0
+
+ $items.eq(index).trigger('focus')
+ }
+
+
+ // DROPDOWN PLUGIN DEFINITION
+ // ==========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.dropdown')
+
+ if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ var old = $.fn.dropdown
+
+ $.fn.dropdown = Plugin
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ // DROPDOWN NO CONFLICT
+ // ====================
+
+ $.fn.dropdown.noConflict = function () {
+ $.fn.dropdown = old
+ return this
+ }
+
+
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
+ // ===================================
+
+ $(document)
+ .on('click.bs.dropdown.data-api', clearMenus)
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+ .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
+ .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/modal.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/modal.js
new file mode 100644
index 0000000..d50a856
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/modal.js
@@ -0,0 +1,337 @@
+/* ========================================================================
+ * Bootstrap: modal.js v3.3.5
+ * http://getbootstrap.com/javascript/#modals
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // MODAL CLASS DEFINITION
+ // ======================
+
+ var Modal = function (element, options) {
+ this.options = options
+ this.$body = $(document.body)
+ this.$element = $(element)
+ this.$dialog = this.$element.find('.modal-dialog')
+ this.$backdrop = null
+ this.isShown = null
+ this.originalBodyPad = null
+ this.scrollbarWidth = 0
+ this.ignoreBackdropClick = false
+
+ if (this.options.remote) {
+ this.$element
+ .find('.modal-content')
+ .load(this.options.remote, $.proxy(function () {
+ this.$element.trigger('loaded.bs.modal')
+ }, this))
+ }
+ }
+
+ Modal.VERSION = '3.3.5'
+
+ Modal.TRANSITION_DURATION = 300
+ Modal.BACKDROP_TRANSITION_DURATION = 150
+
+ Modal.DEFAULTS = {
+ backdrop: true,
+ keyboard: true,
+ show: true
+ }
+
+ Modal.prototype.toggle = function (_relatedTarget) {
+ return this.isShown ? this.hide() : this.show(_relatedTarget)
+ }
+
+ Modal.prototype.show = function (_relatedTarget) {
+ var that = this
+ var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+ this.$element.trigger(e)
+
+ if (this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = true
+
+ this.checkScrollbar()
+ this.setScrollbar()
+ this.$body.addClass('modal-open')
+
+ this.escape()
+ this.resize()
+
+ this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+ this.$dialog.on('mousedown.dismiss.bs.modal', function () {
+ that.$element.one('mouseup.dismiss.bs.modal', function (e) {
+ if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
+ })
+ })
+
+ this.backdrop(function () {
+ var transition = $.support.transition && that.$element.hasClass('fade')
+
+ if (!that.$element.parent().length) {
+ that.$element.appendTo(that.$body) // don't move modals dom position
+ }
+
+ that.$element
+ .show()
+ .scrollTop(0)
+
+ that.adjustDialog()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element.addClass('in')
+
+ that.enforceFocus()
+
+ var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+ transition ?
+ that.$dialog // wait for modal to slide in
+ .one('bsTransitionEnd', function () {
+ that.$element.trigger('focus').trigger(e)
+ })
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+ that.$element.trigger('focus').trigger(e)
+ })
+ }
+
+ Modal.prototype.hide = function (e) {
+ if (e) e.preventDefault()
+
+ e = $.Event('hide.bs.modal')
+
+ this.$element.trigger(e)
+
+ if (!this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = false
+
+ this.escape()
+ this.resize()
+
+ $(document).off('focusin.bs.modal')
+
+ this.$element
+ .removeClass('in')
+ .off('click.dismiss.bs.modal')
+ .off('mouseup.dismiss.bs.modal')
+
+ this.$dialog.off('mousedown.dismiss.bs.modal')
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ this.$element
+ .one('bsTransitionEnd', $.proxy(this.hideModal, this))
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+ this.hideModal()
+ }
+
+ Modal.prototype.enforceFocus = function () {
+ $(document)
+ .off('focusin.bs.modal') // guard against infinite focus loop
+ .on('focusin.bs.modal', $.proxy(function (e) {
+ if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
+ this.$element.trigger('focus')
+ }
+ }, this))
+ }
+
+ Modal.prototype.escape = function () {
+ if (this.isShown && this.options.keyboard) {
+ this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
+ e.which == 27 && this.hide()
+ }, this))
+ } else if (!this.isShown) {
+ this.$element.off('keydown.dismiss.bs.modal')
+ }
+ }
+
+ Modal.prototype.resize = function () {
+ if (this.isShown) {
+ $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
+ } else {
+ $(window).off('resize.bs.modal')
+ }
+ }
+
+ Modal.prototype.hideModal = function () {
+ var that = this
+ this.$element.hide()
+ this.backdrop(function () {
+ that.$body.removeClass('modal-open')
+ that.resetAdjustments()
+ that.resetScrollbar()
+ that.$element.trigger('hidden.bs.modal')
+ })
+ }
+
+ Modal.prototype.removeBackdrop = function () {
+ this.$backdrop && this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ Modal.prototype.backdrop = function (callback) {
+ var that = this
+ var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $(document.createElement('div'))
+ .addClass('modal-backdrop ' + animate)
+ .appendTo(this.$body)
+
+ this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
+ if (this.ignoreBackdropClick) {
+ this.ignoreBackdropClick = false
+ return
+ }
+ if (e.target !== e.currentTarget) return
+ this.options.backdrop == 'static'
+ ? this.$element[0].focus()
+ : this.hide()
+ }, this))
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ if (!callback) return
+
+ doAnimate ?
+ this.$backdrop
+ .one('bsTransitionEnd', callback)
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ var callbackRemove = function () {
+ that.removeBackdrop()
+ callback && callback()
+ }
+ $.support.transition && this.$element.hasClass('fade') ?
+ this.$backdrop
+ .one('bsTransitionEnd', callbackRemove)
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+ callbackRemove()
+
+ } else if (callback) {
+ callback()
+ }
+ }
+
+ // these following methods are used to handle overflowing modals
+
+ Modal.prototype.handleUpdate = function () {
+ this.adjustDialog()
+ }
+
+ Modal.prototype.adjustDialog = function () {
+ var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
+
+ this.$element.css({
+ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
+ paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
+ })
+ }
+
+ Modal.prototype.resetAdjustments = function () {
+ this.$element.css({
+ paddingLeft: '',
+ paddingRight: ''
+ })
+ }
+
+ Modal.prototype.checkScrollbar = function () {
+ var fullWindowWidth = window.innerWidth
+ if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
+ var documentElementRect = document.documentElement.getBoundingClientRect()
+ fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
+ }
+ this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
+ this.scrollbarWidth = this.measureScrollbar()
+ }
+
+ Modal.prototype.setScrollbar = function () {
+ var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
+ this.originalBodyPad = document.body.style.paddingRight || ''
+ if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
+ }
+
+ Modal.prototype.resetScrollbar = function () {
+ this.$body.css('padding-right', this.originalBodyPad)
+ }
+
+ Modal.prototype.measureScrollbar = function () { // thx walsh
+ var scrollDiv = document.createElement('div')
+ scrollDiv.className = 'modal-scrollbar-measure'
+ this.$body.append(scrollDiv)
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
+ this.$body[0].removeChild(scrollDiv)
+ return scrollbarWidth
+ }
+
+
+ // MODAL PLUGIN DEFINITION
+ // =======================
+
+ function Plugin(option, _relatedTarget) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.modal')
+ var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+ if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option](_relatedTarget)
+ else if (options.show) data.show(_relatedTarget)
+ })
+ }
+
+ var old = $.fn.modal
+
+ $.fn.modal = Plugin
+ $.fn.modal.Constructor = Modal
+
+
+ // MODAL NO CONFLICT
+ // =================
+
+ $.fn.modal.noConflict = function () {
+ $.fn.modal = old
+ return this
+ }
+
+
+ // MODAL DATA-API
+ // ==============
+
+ $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+ var $this = $(this)
+ var href = $this.attr('href')
+ var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
+ var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+ if ($this.is('a')) e.preventDefault()
+
+ $target.one('show.bs.modal', function (showEvent) {
+ if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
+ $target.one('hidden.bs.modal', function () {
+ $this.is(':visible') && $this.trigger('focus')
+ })
+ })
+ Plugin.call($target, option, this)
+ })
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/popover.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/popover.js
new file mode 100644
index 0000000..aef22d1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/popover.js
@@ -0,0 +1,108 @@
+/* ========================================================================
+ * Bootstrap: popover.js v3.3.5
+ * http://getbootstrap.com/javascript/#popovers
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // POPOVER PUBLIC CLASS DEFINITION
+ // ===============================
+
+ var Popover = function (element, options) {
+ this.init('popover', element, options)
+ }
+
+ if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+ Popover.VERSION = '3.3.5'
+
+ Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
+ placement: 'right',
+ trigger: 'click',
+ content: '',
+ template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+ })
+
+
+ // NOTE: POPOVER EXTENDS tooltip.js
+ // ================================
+
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+ Popover.prototype.constructor = Popover
+
+ Popover.prototype.getDefaults = function () {
+ return Popover.DEFAULTS
+ }
+
+ Popover.prototype.setContent = function () {
+ var $tip = this.tip()
+ var title = this.getTitle()
+ var content = this.getContent()
+
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+ $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
+ this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
+ ](content)
+
+ $tip.removeClass('fade top bottom left right in')
+
+ // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+ // this manually by checking the contents.
+ if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+ }
+
+ Popover.prototype.hasContent = function () {
+ return this.getTitle() || this.getContent()
+ }
+
+ Popover.prototype.getContent = function () {
+ var $e = this.$element
+ var o = this.options
+
+ return $e.attr('data-content')
+ || (typeof o.content == 'function' ?
+ o.content.call($e[0]) :
+ o.content)
+ }
+
+ Popover.prototype.arrow = function () {
+ return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
+ }
+
+
+ // POPOVER PLUGIN DEFINITION
+ // =========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.popover')
+ var options = typeof option == 'object' && option
+
+ if (!data && /destroy|hide/.test(option)) return
+ if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.popover
+
+ $.fn.popover = Plugin
+ $.fn.popover.Constructor = Popover
+
+
+ // POPOVER NO CONFLICT
+ // ===================
+
+ $.fn.popover.noConflict = function () {
+ $.fn.popover = old
+ return this
+ }
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/scrollspy.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/scrollspy.js
new file mode 100644
index 0000000..7208e25
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/scrollspy.js
@@ -0,0 +1,172 @@
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.3.5
+ * http://getbootstrap.com/javascript/#scrollspy
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // SCROLLSPY CLASS DEFINITION
+ // ==========================
+
+ function ScrollSpy(element, options) {
+ this.$body = $(document.body)
+ this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
+ this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
+ this.selector = (this.options.target || '') + ' .nav li > a'
+ this.offsets = []
+ this.targets = []
+ this.activeTarget = null
+ this.scrollHeight = 0
+
+ this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
+ this.refresh()
+ this.process()
+ }
+
+ ScrollSpy.VERSION = '3.3.5'
+
+ ScrollSpy.DEFAULTS = {
+ offset: 10
+ }
+
+ ScrollSpy.prototype.getScrollHeight = function () {
+ return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
+ }
+
+ ScrollSpy.prototype.refresh = function () {
+ var that = this
+ var offsetMethod = 'offset'
+ var offsetBase = 0
+
+ this.offsets = []
+ this.targets = []
+ this.scrollHeight = this.getScrollHeight()
+
+ if (!$.isWindow(this.$scrollElement[0])) {
+ offsetMethod = 'position'
+ offsetBase = this.$scrollElement.scrollTop()
+ }
+
+ this.$body
+ .find(this.selector)
+ .map(function () {
+ var $el = $(this)
+ var href = $el.data('target') || $el.attr('href')
+ var $href = /^#./.test(href) && $(href)
+
+ return ($href
+ && $href.length
+ && $href.is(':visible')
+ && [[$href[offsetMethod]().top + offsetBase, href]]) || null
+ })
+ .sort(function (a, b) { return a[0] - b[0] })
+ .each(function () {
+ that.offsets.push(this[0])
+ that.targets.push(this[1])
+ })
+ }
+
+ ScrollSpy.prototype.process = function () {
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
+ var scrollHeight = this.getScrollHeight()
+ var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
+ var offsets = this.offsets
+ var targets = this.targets
+ var activeTarget = this.activeTarget
+ var i
+
+ if (this.scrollHeight != scrollHeight) {
+ this.refresh()
+ }
+
+ if (scrollTop >= maxScroll) {
+ return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
+ }
+
+ if (activeTarget && scrollTop < offsets[0]) {
+ this.activeTarget = null
+ return this.clear()
+ }
+
+ for (i = offsets.length; i--;) {
+ activeTarget != targets[i]
+ && scrollTop >= offsets[i]
+ && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
+ && this.activate(targets[i])
+ }
+ }
+
+ ScrollSpy.prototype.activate = function (target) {
+ this.activeTarget = target
+
+ this.clear()
+
+ var selector = this.selector +
+ '[data-target="' + target + '"],' +
+ this.selector + '[href="' + target + '"]'
+
+ var active = $(selector)
+ .parents('li')
+ .addClass('active')
+
+ if (active.parent('.dropdown-menu').length) {
+ active = active
+ .closest('li.dropdown')
+ .addClass('active')
+ }
+
+ active.trigger('activate.bs.scrollspy')
+ }
+
+ ScrollSpy.prototype.clear = function () {
+ $(this.selector)
+ .parentsUntil(this.options.target, '.active')
+ .removeClass('active')
+ }
+
+
+ // SCROLLSPY PLUGIN DEFINITION
+ // ===========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.scrollspy')
+ var options = typeof option == 'object' && option
+
+ if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.scrollspy
+
+ $.fn.scrollspy = Plugin
+ $.fn.scrollspy.Constructor = ScrollSpy
+
+
+ // SCROLLSPY NO CONFLICT
+ // =====================
+
+ $.fn.scrollspy.noConflict = function () {
+ $.fn.scrollspy = old
+ return this
+ }
+
+
+ // SCROLLSPY DATA-API
+ // ==================
+
+ $(window).on('load.bs.scrollspy.data-api', function () {
+ $('[data-spy="scroll"]').each(function () {
+ var $spy = $(this)
+ Plugin.call($spy, $spy.data())
+ })
+ })
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/tab.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/tab.js
new file mode 100644
index 0000000..8d5361f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/tab.js
@@ -0,0 +1,155 @@
+/* ========================================================================
+ * Bootstrap: tab.js v3.3.5
+ * http://getbootstrap.com/javascript/#tabs
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // TAB CLASS DEFINITION
+ // ====================
+
+ var Tab = function (element) {
+ // jscs:disable requireDollarBeforejQueryAssignment
+ this.element = $(element)
+ // jscs:enable requireDollarBeforejQueryAssignment
+ }
+
+ Tab.VERSION = '3.3.5'
+
+ Tab.TRANSITION_DURATION = 150
+
+ Tab.prototype.show = function () {
+ var $this = this.element
+ var $ul = $this.closest('ul:not(.dropdown-menu)')
+ var selector = $this.data('target')
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+ }
+
+ if ($this.parent('li').hasClass('active')) return
+
+ var $previous = $ul.find('.active:last a')
+ var hideEvent = $.Event('hide.bs.tab', {
+ relatedTarget: $this[0]
+ })
+ var showEvent = $.Event('show.bs.tab', {
+ relatedTarget: $previous[0]
+ })
+
+ $previous.trigger(hideEvent)
+ $this.trigger(showEvent)
+
+ if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
+
+ var $target = $(selector)
+
+ this.activate($this.closest('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $previous.trigger({
+ type: 'hidden.bs.tab',
+ relatedTarget: $this[0]
+ })
+ $this.trigger({
+ type: 'shown.bs.tab',
+ relatedTarget: $previous[0]
+ })
+ })
+ }
+
+ Tab.prototype.activate = function (element, container, callback) {
+ var $active = container.find('> .active')
+ var transition = callback
+ && $.support.transition
+ && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+ .end()
+ .find('[data-toggle="tab"]')
+ .attr('aria-expanded', false)
+
+ element
+ .addClass('active')
+ .find('[data-toggle="tab"]')
+ .attr('aria-expanded', true)
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if (element.parent('.dropdown-menu').length) {
+ element
+ .closest('li.dropdown')
+ .addClass('active')
+ .end()
+ .find('[data-toggle="tab"]')
+ .attr('aria-expanded', true)
+ }
+
+ callback && callback()
+ }
+
+ $active.length && transition ?
+ $active
+ .one('bsTransitionEnd', next)
+ .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
+ next()
+
+ $active.removeClass('in')
+ }
+
+
+ // TAB PLUGIN DEFINITION
+ // =====================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.tab')
+
+ if (!data) $this.data('bs.tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.tab
+
+ $.fn.tab = Plugin
+ $.fn.tab.Constructor = Tab
+
+
+ // TAB NO CONFLICT
+ // ===============
+
+ $.fn.tab.noConflict = function () {
+ $.fn.tab = old
+ return this
+ }
+
+
+ // TAB DATA-API
+ // ============
+
+ var clickHandler = function (e) {
+ e.preventDefault()
+ Plugin.call($(this), 'show')
+ }
+
+ $(document)
+ .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
+ .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/tooltip.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/tooltip.js
new file mode 100644
index 0000000..c3fe4b0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/tooltip.js
@@ -0,0 +1,514 @@
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.3.5
+ * http://getbootstrap.com/javascript/#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // TOOLTIP PUBLIC CLASS DEFINITION
+ // ===============================
+
+ var Tooltip = function (element, options) {
+ this.type = null
+ this.options = null
+ this.enabled = null
+ this.timeout = null
+ this.hoverState = null
+ this.$element = null
+ this.inState = null
+
+ this.init('tooltip', element, options)
+ }
+
+ Tooltip.VERSION = '3.3.5'
+
+ Tooltip.TRANSITION_DURATION = 150
+
+ Tooltip.DEFAULTS = {
+ animation: true,
+ placement: 'top',
+ selector: false,
+ template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+ trigger: 'hover focus',
+ title: '',
+ delay: 0,
+ html: false,
+ container: false,
+ viewport: {
+ selector: 'body',
+ padding: 0
+ }
+ }
+
+ Tooltip.prototype.init = function (type, element, options) {
+ this.enabled = true
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+ this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
+ this.inState = { click: false, hover: false, focus: false }
+
+ if (this.$element[0] instanceof document.constructor && !this.options.selector) {
+ throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
+ }
+
+ var triggers = this.options.trigger.split(' ')
+
+ for (var i = triggers.length; i--;) {
+ var trigger = triggers[i]
+
+ if (trigger == 'click') {
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+ } else if (trigger != 'manual') {
+ var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
+ var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+ }
+ }
+
+ this.options.selector ?
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+ this.fixTitle()
+ }
+
+ Tooltip.prototype.getDefaults = function () {
+ return Tooltip.DEFAULTS
+ }
+
+ Tooltip.prototype.getOptions = function (options) {
+ options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+ if (options.delay && typeof options.delay == 'number') {
+ options.delay = {
+ show: options.delay,
+ hide: options.delay
+ }
+ }
+
+ return options
+ }
+
+ Tooltip.prototype.getDelegateOptions = function () {
+ var options = {}
+ var defaults = this.getDefaults()
+
+ this._options && $.each(this._options, function (key, value) {
+ if (defaults[key] != value) options[key] = value
+ })
+
+ return options
+ }
+
+ Tooltip.prototype.enter = function (obj) {
+ var self = obj instanceof this.constructor ?
+ obj : $(obj.currentTarget).data('bs.' + this.type)
+
+ if (!self) {
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+ $(obj.currentTarget).data('bs.' + this.type, self)
+ }
+
+ if (obj instanceof $.Event) {
+ self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
+ }
+
+ if (self.tip().hasClass('in') || self.hoverState == 'in') {
+ self.hoverState = 'in'
+ return
+ }
+
+ clearTimeout(self.timeout)
+
+ self.hoverState = 'in'
+
+ if (!self.options.delay || !self.options.delay.show) return self.show()
+
+ self.timeout = setTimeout(function () {
+ if (self.hoverState == 'in') self.show()
+ }, self.options.delay.show)
+ }
+
+ Tooltip.prototype.isInStateTrue = function () {
+ for (var key in this.inState) {
+ if (this.inState[key]) return true
+ }
+
+ return false
+ }
+
+ Tooltip.prototype.leave = function (obj) {
+ var self = obj instanceof this.constructor ?
+ obj : $(obj.currentTarget).data('bs.' + this.type)
+
+ if (!self) {
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+ $(obj.currentTarget).data('bs.' + this.type, self)
+ }
+
+ if (obj instanceof $.Event) {
+ self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
+ }
+
+ if (self.isInStateTrue()) return
+
+ clearTimeout(self.timeout)
+
+ self.hoverState = 'out'
+
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+ self.timeout = setTimeout(function () {
+ if (self.hoverState == 'out') self.hide()
+ }, self.options.delay.hide)
+ }
+
+ Tooltip.prototype.show = function () {
+ var e = $.Event('show.bs.' + this.type)
+
+ if (this.hasContent() && this.enabled) {
+ this.$element.trigger(e)
+
+ var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
+ if (e.isDefaultPrevented() || !inDom) return
+ var that = this
+
+ var $tip = this.tip()
+
+ var tipId = this.getUID(this.type)
+
+ this.setContent()
+ $tip.attr('id', tipId)
+ this.$element.attr('aria-describedby', tipId)
+
+ if (this.options.animation) $tip.addClass('fade')
+
+ var placement = typeof this.options.placement == 'function' ?
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
+ this.options.placement
+
+ var autoToken = /\s?auto?\s?/i
+ var autoPlace = autoToken.test(placement)
+ if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+ $tip
+ .detach()
+ .css({ top: 0, left: 0, display: 'block' })
+ .addClass(placement)
+ .data('bs.' + this.type, this)
+
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+ this.$element.trigger('inserted.bs.' + this.type)
+
+ var pos = this.getPosition()
+ var actualWidth = $tip[0].offsetWidth
+ var actualHeight = $tip[0].offsetHeight
+
+ if (autoPlace) {
+ var orgPlacement = placement
+ var viewportDim = this.getPosition(this.$viewport)
+
+ placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
+ placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
+ placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
+ placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
+ placement
+
+ $tip
+ .removeClass(orgPlacement)
+ .addClass(placement)
+ }
+
+ var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+ this.applyPlacement(calculatedOffset, placement)
+
+ var complete = function () {
+ var prevHoverState = that.hoverState
+ that.$element.trigger('shown.bs.' + that.type)
+ that.hoverState = null
+
+ if (prevHoverState == 'out') that.leave(that)
+ }
+
+ $.support.transition && this.$tip.hasClass('fade') ?
+ $tip
+ .one('bsTransitionEnd', complete)
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+ complete()
+ }
+ }
+
+ Tooltip.prototype.applyPlacement = function (offset, placement) {
+ var $tip = this.tip()
+ var width = $tip[0].offsetWidth
+ var height = $tip[0].offsetHeight
+
+ // manually read margins because getBoundingClientRect includes difference
+ var marginTop = parseInt($tip.css('margin-top'), 10)
+ var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+ // we must check for NaN for ie 8/9
+ if (isNaN(marginTop)) marginTop = 0
+ if (isNaN(marginLeft)) marginLeft = 0
+
+ offset.top += marginTop
+ offset.left += marginLeft
+
+ // $.fn.offset doesn't round pixel values
+ // so we use setOffset directly with our own function B-0
+ $.offset.setOffset($tip[0], $.extend({
+ using: function (props) {
+ $tip.css({
+ top: Math.round(props.top),
+ left: Math.round(props.left)
+ })
+ }
+ }, offset), 0)
+
+ $tip.addClass('in')
+
+ // check to see if placing tip in new offset caused the tip to resize itself
+ var actualWidth = $tip[0].offsetWidth
+ var actualHeight = $tip[0].offsetHeight
+
+ if (placement == 'top' && actualHeight != height) {
+ offset.top = offset.top + height - actualHeight
+ }
+
+ var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
+
+ if (delta.left) offset.left += delta.left
+ else offset.top += delta.top
+
+ var isVertical = /top|bottom/.test(placement)
+ var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
+ var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
+
+ $tip.offset(offset)
+ this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
+ }
+
+ Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
+ this.arrow()
+ .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
+ .css(isVertical ? 'top' : 'left', '')
+ }
+
+ Tooltip.prototype.setContent = function () {
+ var $tip = this.tip()
+ var title = this.getTitle()
+
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+ $tip.removeClass('fade in top bottom left right')
+ }
+
+ Tooltip.prototype.hide = function (callback) {
+ var that = this
+ var $tip = $(this.$tip)
+ var e = $.Event('hide.bs.' + this.type)
+
+ function complete() {
+ if (that.hoverState != 'in') $tip.detach()
+ that.$element
+ .removeAttr('aria-describedby')
+ .trigger('hidden.bs.' + that.type)
+ callback && callback()
+ }
+
+ this.$element.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ $tip.removeClass('in')
+
+ $.support.transition && $tip.hasClass('fade') ?
+ $tip
+ .one('bsTransitionEnd', complete)
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+ complete()
+
+ this.hoverState = null
+
+ return this
+ }
+
+ Tooltip.prototype.fixTitle = function () {
+ var $e = this.$element
+ if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+ }
+ }
+
+ Tooltip.prototype.hasContent = function () {
+ return this.getTitle()
+ }
+
+ Tooltip.prototype.getPosition = function ($element) {
+ $element = $element || this.$element
+
+ var el = $element[0]
+ var isBody = el.tagName == 'BODY'
+
+ var elRect = el.getBoundingClientRect()
+ if (elRect.width == null) {
+ // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
+ elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
+ }
+ var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
+ var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
+ var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
+
+ return $.extend({}, elRect, scroll, outerDims, elOffset)
+ }
+
+ Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+ return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+ placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+ placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+ /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+
+ }
+
+ Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
+ var delta = { top: 0, left: 0 }
+ if (!this.$viewport) return delta
+
+ var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
+ var viewportDimensions = this.getPosition(this.$viewport)
+
+ if (/right|left/.test(placement)) {
+ var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
+ var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
+ if (topEdgeOffset < viewportDimensions.top) { // top overflow
+ delta.top = viewportDimensions.top - topEdgeOffset
+ } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
+ delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
+ }
+ } else {
+ var leftEdgeOffset = pos.left - viewportPadding
+ var rightEdgeOffset = pos.left + viewportPadding + actualWidth
+ if (leftEdgeOffset < viewportDimensions.left) { // left overflow
+ delta.left = viewportDimensions.left - leftEdgeOffset
+ } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
+ delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
+ }
+ }
+
+ return delta
+ }
+
+ Tooltip.prototype.getTitle = function () {
+ var title
+ var $e = this.$element
+ var o = this.options
+
+ title = $e.attr('data-original-title')
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
+
+ return title
+ }
+
+ Tooltip.prototype.getUID = function (prefix) {
+ do prefix += ~~(Math.random() * 1000000)
+ while (document.getElementById(prefix))
+ return prefix
+ }
+
+ Tooltip.prototype.tip = function () {
+ if (!this.$tip) {
+ this.$tip = $(this.options.template)
+ if (this.$tip.length != 1) {
+ throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
+ }
+ }
+ return this.$tip
+ }
+
+ Tooltip.prototype.arrow = function () {
+ return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
+ }
+
+ Tooltip.prototype.enable = function () {
+ this.enabled = true
+ }
+
+ Tooltip.prototype.disable = function () {
+ this.enabled = false
+ }
+
+ Tooltip.prototype.toggleEnabled = function () {
+ this.enabled = !this.enabled
+ }
+
+ Tooltip.prototype.toggle = function (e) {
+ var self = this
+ if (e) {
+ self = $(e.currentTarget).data('bs.' + this.type)
+ if (!self) {
+ self = new this.constructor(e.currentTarget, this.getDelegateOptions())
+ $(e.currentTarget).data('bs.' + this.type, self)
+ }
+ }
+
+ if (e) {
+ self.inState.click = !self.inState.click
+ if (self.isInStateTrue()) self.enter(self)
+ else self.leave(self)
+ } else {
+ self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+ }
+ }
+
+ Tooltip.prototype.destroy = function () {
+ var that = this
+ clearTimeout(this.timeout)
+ this.hide(function () {
+ that.$element.off('.' + that.type).removeData('bs.' + that.type)
+ if (that.$tip) {
+ that.$tip.detach()
+ }
+ that.$tip = null
+ that.$arrow = null
+ that.$viewport = null
+ })
+ }
+
+
+ // TOOLTIP PLUGIN DEFINITION
+ // =========================
+
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.tooltip')
+ var options = typeof option == 'object' && option
+
+ if (!data && /destroy|hide/.test(option)) return
+ if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ var old = $.fn.tooltip
+
+ $.fn.tooltip = Plugin
+ $.fn.tooltip.Constructor = Tooltip
+
+
+ // TOOLTIP NO CONFLICT
+ // ===================
+
+ $.fn.tooltip.noConflict = function () {
+ $.fn.tooltip = old
+ return this
+ }
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/transition.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/transition.js
new file mode 100644
index 0000000..cd89fc4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/js/transition.js
@@ -0,0 +1,59 @@
+/* ========================================================================
+ * Bootstrap: transition.js v3.3.5
+ * http://getbootstrap.com/javascript/#transitions
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+ 'use strict';
+
+ // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
+ // ============================================================
+
+ function transitionEnd() {
+ var el = document.createElement('bootstrap')
+
+ var transEndEventNames = {
+ WebkitTransition : 'webkitTransitionEnd',
+ MozTransition : 'transitionend',
+ OTransition : 'oTransitionEnd otransitionend',
+ transition : 'transitionend'
+ }
+
+ for (var name in transEndEventNames) {
+ if (el.style[name] !== undefined) {
+ return { end: transEndEventNames[name] }
+ }
+ }
+
+ return false // explicit for ie8 ( ._.)
+ }
+
+ // http://blog.alexmaccaw.com/css-transitions
+ $.fn.emulateTransitionEnd = function (duration) {
+ var called = false
+ var $el = this
+ $(this).one('bsTransitionEnd', function () { called = true })
+ var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+ setTimeout(callback, duration)
+ return this
+ }
+
+ $(function () {
+ $.support.transition = transitionEnd()
+
+ if (!$.support.transition) return
+
+ $.event.special.bsTransitionEnd = {
+ bindType: $.support.transition.end,
+ delegateType: $.support.transition.end,
+ handle: function (e) {
+ if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
+ }
+ }
+ })
+
+}(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/alerts.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/alerts.less
new file mode 100644
index 0000000..c4199db
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/alerts.less
@@ -0,0 +1,73 @@
+//
+// Alerts
+// --------------------------------------------------
+
+
+// Base styles
+// -------------------------
+
+.alert {
+ padding: @alert-padding;
+ margin-bottom: @line-height-computed;
+ border: 1px solid transparent;
+ border-radius: @alert-border-radius;
+
+ // Headings for larger alerts
+ h4 {
+ margin-top: 0;
+ // Specified for the h4 to prevent conflicts of changing @headings-color
+ color: inherit;
+ }
+
+ // Provide class for links that match alerts
+ .alert-link {
+ font-weight: @alert-link-font-weight;
+ }
+
+ // Improve alignment and spacing of inner content
+ > p,
+ > ul {
+ margin-bottom: 0;
+ }
+
+ > p + p {
+ margin-top: 5px;
+ }
+}
+
+// Dismissible alerts
+//
+// Expand the right padding and account for the close button's positioning.
+
+.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.
+.alert-dismissible {
+ padding-right: (@alert-padding + 20);
+
+ // Adjust close link position
+ .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
+ }
+}
+
+// Alternate styles
+//
+// Generate contextual modifier classes for colorizing the alert.
+
+.alert-success {
+ .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);
+}
+
+.alert-info {
+ .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);
+}
+
+.alert-warning {
+ .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);
+}
+
+.alert-danger {
+ .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/badges.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/badges.less
new file mode 100644
index 0000000..6ee16dc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/badges.less
@@ -0,0 +1,66 @@
+//
+// Badges
+// --------------------------------------------------
+
+
+// Base class
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: @font-size-small;
+ font-weight: @badge-font-weight;
+ color: @badge-color;
+ line-height: @badge-line-height;
+ vertical-align: middle;
+ white-space: nowrap;
+ text-align: center;
+ background-color: @badge-bg;
+ border-radius: @badge-border-radius;
+
+ // Empty badges collapse automatically (not available in IE8)
+ &:empty {
+ display: none;
+ }
+
+ // Quick fix for badges in buttons
+ .btn & {
+ position: relative;
+ top: -1px;
+ }
+
+ .btn-xs &,
+ .btn-group-xs > .btn & {
+ top: 0;
+ padding: 1px 5px;
+ }
+
+ // Hover state, but only for links
+ a& {
+ &:hover,
+ &:focus {
+ color: @badge-link-hover-color;
+ text-decoration: none;
+ cursor: pointer;
+ }
+ }
+
+ // Account for badges in navs
+ .list-group-item.active > &,
+ .nav-pills > .active > a > & {
+ color: @badge-active-color;
+ background-color: @badge-active-bg;
+ }
+
+ .list-group-item > & {
+ float: right;
+ }
+
+ .list-group-item > & + & {
+ margin-right: 5px;
+ }
+
+ .nav-pills > li > a > & {
+ margin-left: 3px;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/bootstrap.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/bootstrap.less
new file mode 100644
index 0000000..4b9916e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/bootstrap.less
@@ -0,0 +1,56 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+// Core variables and mixins
+@import "variables.less";
+@import "mixins.less";
+
+// Reset and dependencies
+@import "normalize.less";
+@import "print.less";
+@import "glyphicons.less";
+
+// Core CSS
+@import "scaffolding.less";
+@import "type.less";
+@import "code.less";
+@import "grid.less";
+@import "tables.less";
+@import "forms.less";
+@import "buttons.less";
+
+// Components
+@import "component-animations.less";
+@import "dropdowns.less";
+@import "button-groups.less";
+@import "input-groups.less";
+@import "navs.less";
+@import "navbar.less";
+@import "breadcrumbs.less";
+@import "pagination.less";
+@import "pager.less";
+@import "labels.less";
+@import "badges.less";
+@import "jumbotron.less";
+@import "thumbnails.less";
+@import "alerts.less";
+@import "progress-bars.less";
+@import "media.less";
+@import "list-group.less";
+@import "panels.less";
+@import "responsive-embed.less";
+@import "wells.less";
+@import "close.less";
+
+// Components w/ JavaScript
+@import "modals.less";
+@import "tooltip.less";
+@import "popovers.less";
+@import "carousel.less";
+
+// Utility classes
+@import "utilities.less";
+@import "responsive-utilities.less";
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/breadcrumbs.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/breadcrumbs.less
new file mode 100644
index 0000000..cb01d50
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/breadcrumbs.less
@@ -0,0 +1,26 @@
+//
+// Breadcrumbs
+// --------------------------------------------------
+
+
+.breadcrumb {
+ padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;
+ margin-bottom: @line-height-computed;
+ list-style: none;
+ background-color: @breadcrumb-bg;
+ border-radius: @border-radius-base;
+
+ > li {
+ display: inline-block;
+
+ + li:before {
+ content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space
+ padding: 0 5px;
+ color: @breadcrumb-color;
+ }
+ }
+
+ > .active {
+ color: @breadcrumb-active-color;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/button-groups.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/button-groups.less
new file mode 100644
index 0000000..6a0c5a8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/button-groups.less
@@ -0,0 +1,244 @@
+//
+// Button groups
+// --------------------------------------------------
+
+// Make the div behave like a button
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle; // match .btn alignment given font-size hack above
+ > .btn {
+ position: relative;
+ float: left;
+ // Bring the "active" button to the front
+ &:hover,
+ &:focus,
+ &:active,
+ &.active {
+ z-index: 2;
+ }
+ }
+}
+
+// Prevent double borders when buttons are next to each other
+.btn-group {
+ .btn + .btn,
+ .btn + .btn-group,
+ .btn-group + .btn,
+ .btn-group + .btn-group {
+ margin-left: -1px;
+ }
+}
+
+// Optional: Group multiple button groups together for a toolbar
+.btn-toolbar {
+ margin-left: -5px; // Offset the first child's margin
+ &:extend(.clearfix all);
+
+ .btn,
+ .btn-group,
+ .input-group {
+ float: left;
+ }
+ > .btn,
+ > .btn-group,
+ > .input-group {
+ margin-left: 5px;
+ }
+}
+
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+
+// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
+.btn-group > .btn:first-child {
+ margin-left: 0;
+ &:not(:last-child):not(.dropdown-toggle) {
+ .border-right-radius(0);
+ }
+}
+// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ .border-left-radius(0);
+}
+
+// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) {
+ > .btn:last-child,
+ > .dropdown-toggle {
+ .border-right-radius(0);
+ }
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ .border-left-radius(0);
+}
+
+// On active and open, don't show outline
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+
+
+// Sizing
+//
+// Remix the default button sizing classes into new ones for easier manipulation.
+
+.btn-group-xs > .btn { &:extend(.btn-xs); }
+.btn-group-sm > .btn { &:extend(.btn-sm); }
+.btn-group-lg > .btn { &:extend(.btn-lg); }
+
+
+// Split button dropdowns
+// ----------------------
+
+// Give the line between buttons some depth
+.btn-group > .btn + .dropdown-toggle {
+ padding-left: 8px;
+ padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+
+// The clickable button for toggling the menu
+// Remove the gradient and set the same inset shadow as the :active state
+.btn-group.open .dropdown-toggle {
+ .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+
+ // Show no shadow for `.btn-link` since it has no other button styles.
+ &.btn-link {
+ .box-shadow(none);
+ }
+}
+
+
+// Reposition the caret
+.btn .caret {
+ margin-left: 0;
+}
+// Carets in other button sizes
+.btn-lg .caret {
+ border-width: @caret-width-large @caret-width-large 0;
+ border-bottom-width: 0;
+}
+// Upside down carets for .dropup
+.dropup .btn-lg .caret {
+ border-width: 0 @caret-width-large @caret-width-large;
+}
+
+
+// Vertical button groups
+// ----------------------
+
+.btn-group-vertical {
+ > .btn,
+ > .btn-group,
+ > .btn-group > .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+ }
+
+ // Clear floats so dropdown menus can be properly placed
+ > .btn-group {
+ &:extend(.clearfix all);
+ > .btn {
+ float: none;
+ }
+ }
+
+ > .btn + .btn,
+ > .btn + .btn-group,
+ > .btn-group + .btn,
+ > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+ }
+}
+
+.btn-group-vertical > .btn {
+ &:not(:first-child):not(:last-child) {
+ border-radius: 0;
+ }
+ &:first-child:not(:last-child) {
+ border-top-right-radius: @btn-border-radius-base;
+ .border-bottom-radius(0);
+ }
+ &:last-child:not(:first-child) {
+ border-bottom-left-radius: @btn-border-radius-base;
+ .border-top-radius(0);
+ }
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) {
+ > .btn:last-child,
+ > .dropdown-toggle {
+ .border-bottom-radius(0);
+ }
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ .border-top-radius(0);
+}
+
+
+// Justified button groups
+// ----------------------
+
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+ > .btn,
+ > .btn-group {
+ float: none;
+ display: table-cell;
+ width: 1%;
+ }
+ > .btn-group .btn {
+ width: 100%;
+ }
+
+ > .btn-group .dropdown-menu {
+ left: auto;
+ }
+}
+
+
+// Checkbox and radio options
+//
+// In order to support the browser's form validation feedback, powered by the
+// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
+// `display: none;` or `visibility: hidden;` as that also hides the popover.
+// Simply visually hiding the inputs via `opacity` would leave them clickable in
+// certain cases which is prevented by using `clip` and `pointer-events`.
+// This way, we ensure a DOM element is visible to position the popover from.
+//
+// See https://github.com/twbs/bootstrap/pull/12794 and
+// https://github.com/twbs/bootstrap/pull/14559 for more information.
+
+[data-toggle="buttons"] {
+ > .btn,
+ > .btn-group > .btn {
+ input[type="radio"],
+ input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0,0,0,0);
+ pointer-events: none;
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/buttons.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/buttons.less
new file mode 100644
index 0000000..9cbb8f4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/buttons.less
@@ -0,0 +1,166 @@
+//
+// Buttons
+// --------------------------------------------------
+
+
+// Base styles
+// --------------------------------------------------
+
+.btn {
+ display: inline-block;
+ margin-bottom: 0; // For input.btn
+ font-weight: @btn-font-weight;
+ text-align: center;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
+ border: 1px solid transparent;
+ white-space: nowrap;
+ .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);
+ .user-select(none);
+
+ &,
+ &:active,
+ &.active {
+ &:focus,
+ &.focus {
+ .tab-focus();
+ }
+ }
+
+ &:hover,
+ &:focus,
+ &.focus {
+ color: @btn-default-color;
+ text-decoration: none;
+ }
+
+ &:active,
+ &.active {
+ outline: 0;
+ background-image: none;
+ .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+ }
+
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ cursor: @cursor-disabled;
+ .opacity(.65);
+ .box-shadow(none);
+ }
+
+ a& {
+ &.disabled,
+ fieldset[disabled] & {
+ pointer-events: none; // Future-proof disabling of clicks on `<a>` elements
+ }
+ }
+}
+
+
+// Alternate buttons
+// --------------------------------------------------
+
+.btn-default {
+ .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);
+}
+.btn-primary {
+ .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);
+}
+// Success appears as green
+.btn-success {
+ .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);
+}
+// Info appears as blue-green
+.btn-info {
+ .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);
+}
+// Warning appears as orange
+.btn-warning {
+ .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);
+}
+// Danger and error appear as red
+.btn-danger {
+ .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);
+}
+
+
+// Link buttons
+// -------------------------
+
+// Make a button look and behave like a link
+.btn-link {
+ color: @link-color;
+ font-weight: normal;
+ border-radius: 0;
+
+ &,
+ &:active,
+ &.active,
+ &[disabled],
+ fieldset[disabled] & {
+ background-color: transparent;
+ .box-shadow(none);
+ }
+ &,
+ &:hover,
+ &:focus,
+ &:active {
+ border-color: transparent;
+ }
+ &:hover,
+ &:focus {
+ color: @link-hover-color;
+ text-decoration: @link-hover-decoration;
+ background-color: transparent;
+ }
+ &[disabled],
+ fieldset[disabled] & {
+ &:hover,
+ &:focus {
+ color: @btn-link-disabled-color;
+ text-decoration: none;
+ }
+ }
+}
+
+
+// Button Sizes
+// --------------------------------------------------
+
+.btn-lg {
+ // line-height: ensure even-numbered height of button next to large input
+ .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);
+}
+.btn-sm {
+ // line-height: ensure proper height of button next to small input
+ .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
+}
+.btn-xs {
+ .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
+}
+
+
+// Block button
+// --------------------------------------------------
+
+.btn-block {
+ display: block;
+ width: 100%;
+}
+
+// Vertically space out multiple block buttons
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+
+// Specificity overrides
+input[type="submit"],
+input[type="reset"],
+input[type="button"] {
+ &.btn-block {
+ width: 100%;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/carousel.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/carousel.less
new file mode 100644
index 0000000..87ed696
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/carousel.less
@@ -0,0 +1,269 @@
+//
+// Carousel
+// --------------------------------------------------
+
+
+// Wrapper for the slide container and indicators
+.carousel {
+ position: relative;
+}
+
+.carousel-inner {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+
+ > .item {
+ display: none;
+ position: relative;
+ .transition(.6s ease-in-out left);
+
+ // Account for jankitude on images
+ > img,
+ > a > img {
+ &:extend(.img-responsive);
+ line-height: 1;
+ }
+
+ // WebKit CSS3 transforms for supported devices
+ @media all and (transform-3d), (-webkit-transform-3d) {
+ .transition-transform(~'0.6s ease-in-out');
+ .backface-visibility(~'hidden');
+ .perspective(1000px);
+
+ &.next,
+ &.active.right {
+ .translate3d(100%, 0, 0);
+ left: 0;
+ }
+ &.prev,
+ &.active.left {
+ .translate3d(-100%, 0, 0);
+ left: 0;
+ }
+ &.next.left,
+ &.prev.right,
+ &.active {
+ .translate3d(0, 0, 0);
+ left: 0;
+ }
+ }
+ }
+
+ > .active,
+ > .next,
+ > .prev {
+ display: block;
+ }
+
+ > .active {
+ left: 0;
+ }
+
+ > .next,
+ > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+ }
+
+ > .next {
+ left: 100%;
+ }
+ > .prev {
+ left: -100%;
+ }
+ > .next.left,
+ > .prev.right {
+ left: 0;
+ }
+
+ > .active.left {
+ left: -100%;
+ }
+ > .active.right {
+ left: 100%;
+ }
+
+}
+
+// Left/right controls for nav
+// ---------------------------
+
+.carousel-control {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: @carousel-control-width;
+ .opacity(@carousel-control-opacity);
+ font-size: @carousel-control-font-size;
+ color: @carousel-control-color;
+ text-align: center;
+ text-shadow: @carousel-text-shadow;
+ // We can't have this transition here because WebKit cancels the carousel
+ // animation if you trip this while in the middle of another animation.
+
+ // Set gradients for backgrounds
+ &.left {
+ #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));
+ }
+ &.right {
+ left: auto;
+ right: 0;
+ #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));
+ }
+
+ // Hover/focus state
+ &:hover,
+ &:focus {
+ outline: 0;
+ color: @carousel-control-color;
+ text-decoration: none;
+ .opacity(.9);
+ }
+
+ // Toggles
+ .icon-prev,
+ .icon-next,
+ .glyphicon-chevron-left,
+ .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ margin-top: -10px;
+ z-index: 5;
+ display: inline-block;
+ }
+ .icon-prev,
+ .glyphicon-chevron-left {
+ left: 50%;
+ margin-left: -10px;
+ }
+ .icon-next,
+ .glyphicon-chevron-right {
+ right: 50%;
+ margin-right: -10px;
+ }
+ .icon-prev,
+ .icon-next {
+ width: 20px;
+ height: 20px;
+ line-height: 1;
+ font-family: serif;
+ }
+
+
+ .icon-prev {
+ &:before {
+ content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
+ }
+ }
+ .icon-next {
+ &:before {
+ content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
+ }
+ }
+}
+
+// Optional indicator pips
+//
+// Add an unordered list with the following class and add a list item for each
+// slide your carousel holds.
+
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ margin-left: -30%;
+ padding-left: 0;
+ list-style: none;
+ text-align: center;
+
+ li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ border: 1px solid @carousel-indicator-border-color;
+ border-radius: 10px;
+ cursor: pointer;
+
+ // IE8-9 hack for event handling
+ //
+ // Internet Explorer 8-9 does not support clicks on elements without a set
+ // `background-color`. We cannot use `filter` since that's not viewed as a
+ // background color by the browser. Thus, a hack is needed.
+ // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
+ //
+ // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
+ // set alpha transparency for the best results possible.
+ background-color: #000 \9; // IE8
+ background-color: rgba(0,0,0,0); // IE9
+ }
+ .active {
+ margin: 0;
+ width: 12px;
+ height: 12px;
+ background-color: @carousel-indicator-active-bg;
+ }
+}
+
+// Optional captions
+// -----------------------------
+// Hidden by default for smaller viewports
+.carousel-caption {
+ position: absolute;
+ left: 15%;
+ right: 15%;
+ bottom: 20px;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: @carousel-caption-color;
+ text-align: center;
+ text-shadow: @carousel-text-shadow;
+ & .btn {
+ text-shadow: none; // No shadow for button elements in carousel-caption
+ }
+}
+
+
+// Scale up controls for tablets and up
+@media screen and (min-width: @screen-sm-min) {
+
+ // Scale up the controls a smidge
+ .carousel-control {
+ .glyphicon-chevron-left,
+ .glyphicon-chevron-right,
+ .icon-prev,
+ .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ font-size: 30px;
+ }
+ .glyphicon-chevron-left,
+ .icon-prev {
+ margin-left: -15px;
+ }
+ .glyphicon-chevron-right,
+ .icon-next {
+ margin-right: -15px;
+ }
+ }
+
+ // Show and left align the captions
+ .carousel-caption {
+ left: 20%;
+ right: 20%;
+ padding-bottom: 30px;
+ }
+
+ // Move up the indicators
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/close.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/close.less
new file mode 100644
index 0000000..6d5bfe0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/close.less
@@ -0,0 +1,34 @@
+//
+// Close icons
+// --------------------------------------------------
+
+
+.close {
+ float: right;
+ font-size: (@font-size-base * 1.5);
+ font-weight: @close-font-weight;
+ line-height: 1;
+ color: @close-color;
+ text-shadow: @close-text-shadow;
+ .opacity(.2);
+
+ &:hover,
+ &:focus {
+ color: @close-color;
+ text-decoration: none;
+ cursor: pointer;
+ .opacity(.5);
+ }
+
+ // Additional properties for button version
+ // iOS requires the button element instead of an anchor tag.
+ // If you want the anchor version, it requires `href="#"`.
+ // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+ button& {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/code.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/code.less
new file mode 100644
index 0000000..a08b4d4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/code.less
@@ -0,0 +1,69 @@
+//
+// Code (inline and block)
+// --------------------------------------------------
+
+
+// Inline and block code styles
+code,
+kbd,
+pre,
+samp {
+ font-family: @font-family-monospace;
+}
+
+// Inline code
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: @code-color;
+ background-color: @code-bg;
+ border-radius: @border-radius-base;
+}
+
+// User input typically entered via keyboard
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: @kbd-color;
+ background-color: @kbd-bg;
+ border-radius: @border-radius-small;
+ box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
+
+ kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ box-shadow: none;
+ }
+}
+
+// Blocks of code
+pre {
+ display: block;
+ padding: ((@line-height-computed - 1) / 2);
+ margin: 0 0 (@line-height-computed / 2);
+ font-size: (@font-size-base - 1); // 14px to 13px
+ line-height: @line-height-base;
+ word-break: break-all;
+ word-wrap: break-word;
+ color: @pre-color;
+ background-color: @pre-bg;
+ border: 1px solid @pre-border-color;
+ border-radius: @border-radius-base;
+
+ // Account for some code outputs that place code tags in pre tags
+ code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
+ }
+}
+
+// Enable scrollable blocks of code
+.pre-scrollable {
+ max-height: @pre-scrollable-max-height;
+ overflow-y: scroll;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/component-animations.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/component-animations.less
new file mode 100644
index 0000000..0bcee91
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/component-animations.less
@@ -0,0 +1,33 @@
+//
+// Component animations
+// --------------------------------------------------
+
+// Heads up!
+//
+// We don't use the `.opacity()` mixin here since it causes a bug with text
+// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.
+
+.fade {
+ opacity: 0;
+ .transition(opacity .15s linear);
+ &.in {
+ opacity: 1;
+ }
+}
+
+.collapse {
+ display: none;
+
+ &.in { display: block; }
+ tr&.in { display: table-row; }
+ tbody&.in { display: table-row-group; }
+}
+
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ .transition-property(~"height, visibility");
+ .transition-duration(.35s);
+ .transition-timing-function(ease);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/dropdowns.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/dropdowns.less
new file mode 100644
index 0000000..f6876c1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/dropdowns.less
@@ -0,0 +1,216 @@
+//
+// Dropdown menus
+// --------------------------------------------------
+
+
+// Dropdown arrow/caret
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: @caret-width-base dashed;
+ border-top: @caret-width-base solid ~"\9"; // IE8
+ border-right: @caret-width-base solid transparent;
+ border-left: @caret-width-base solid transparent;
+}
+
+// The dropdown wrapper (div)
+.dropup,
+.dropdown {
+ position: relative;
+}
+
+// Prevent the focus on the dropdown toggle when closing dropdowns
+.dropdown-toggle:focus {
+ outline: 0;
+}
+
+// The dropdown menu (ul)
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: @zindex-dropdown;
+ display: none; // none by default, but block on "open" of the menu
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0; // override default ul
+ list-style: none;
+ font-size: @font-size-base;
+ text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
+ background-color: @dropdown-bg;
+ border: 1px solid @dropdown-fallback-border; // IE8 fallback
+ border: 1px solid @dropdown-border;
+ border-radius: @border-radius-base;
+ .box-shadow(0 6px 12px rgba(0,0,0,.175));
+ background-clip: padding-box;
+
+ // Aligns the dropdown menu to right
+ //
+ // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`
+ &.pull-right {
+ right: 0;
+ left: auto;
+ }
+
+ // Dividers (basically an hr) within the dropdown
+ .divider {
+ .nav-divider(@dropdown-divider-bg);
+ }
+
+ // Links within the dropdown menu
+ > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: @line-height-base;
+ color: @dropdown-link-color;
+ white-space: nowrap; // prevent links from randomly breaking onto new lines
+ }
+}
+
+// Hover/Focus state
+.dropdown-menu > li > a {
+ &:hover,
+ &:focus {
+ text-decoration: none;
+ color: @dropdown-link-hover-color;
+ background-color: @dropdown-link-hover-bg;
+ }
+}
+
+// Active state
+.dropdown-menu > .active > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @dropdown-link-active-color;
+ text-decoration: none;
+ outline: 0;
+ background-color: @dropdown-link-active-bg;
+ }
+}
+
+// Disabled state
+//
+// Gray out text and ensure the hover/focus state remains gray
+
+.dropdown-menu > .disabled > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @dropdown-link-disabled-color;
+ }
+
+ // Nuke hover/focus effects
+ &:hover,
+ &:focus {
+ text-decoration: none;
+ background-color: transparent;
+ background-image: none; // Remove CSS gradient
+ .reset-filter();
+ cursor: @cursor-disabled;
+ }
+}
+
+// Open state for the dropdown
+.open {
+ // Show the menu
+ > .dropdown-menu {
+ display: block;
+ }
+
+ // Remove the outline when :focus is triggered
+ > a {
+ outline: 0;
+ }
+}
+
+// Menu positioning
+//
+// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
+// menu with the parent.
+.dropdown-menu-right {
+ left: auto; // Reset the default from `.dropdown-menu`
+ right: 0;
+}
+// With v3, we enabled auto-flipping if you have a dropdown within a right
+// aligned nav component. To enable the undoing of that, we provide an override
+// to restore the default dropdown menu alignment.
+//
+// This is only for left-aligning a dropdown menu within a `.navbar-right` or
+// `.pull-right` nav component.
+.dropdown-menu-left {
+ left: 0;
+ right: auto;
+}
+
+// Dropdown section headers
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: @font-size-small;
+ line-height: @line-height-base;
+ color: @dropdown-header-color;
+ white-space: nowrap; // as with > li > a
+}
+
+// Backdrop to catch body clicks on mobile, etc.
+.dropdown-backdrop {
+ position: fixed;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+ z-index: (@zindex-dropdown - 10);
+}
+
+// Right aligned dropdowns
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+//
+// Just add .dropup after the standard .dropdown class and you're set, bro.
+// TODO: abstract this so that the navbar fixed styles are not placed here?
+
+.dropup,
+.navbar-fixed-bottom .dropdown {
+ // Reverse the caret
+ .caret {
+ border-top: 0;
+ border-bottom: @caret-width-base dashed;
+ border-bottom: @caret-width-base solid ~"\9"; // IE8
+ content: "";
+ }
+ // Different positioning for bottom up menu
+ .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 2px;
+ }
+}
+
+
+// Component alignment
+//
+// Reiterate per navbar.less and the modified component alignment there.
+
+@media (min-width: @grid-float-breakpoint) {
+ .navbar-right {
+ .dropdown-menu {
+ .dropdown-menu-right();
+ }
+ // Necessary for overrides of the default right aligned menu.
+ // Will remove come v4 in all likelihood.
+ .dropdown-menu-left {
+ .dropdown-menu-left();
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/forms.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/forms.less
new file mode 100644
index 0000000..b064ede
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/forms.less
@@ -0,0 +1,607 @@
+//
+// Forms
+// --------------------------------------------------
+
+
+// Normalize non-controls
+//
+// Restyle and baseline non-control form elements.
+
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+ // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
+ // so we reset that to ensure it behaves more like a standard block element.
+ // See https://github.com/twbs/bootstrap/issues/12359.
+ min-width: 0;
+}
+
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: @line-height-computed;
+ font-size: (@font-size-base * 1.5);
+ line-height: inherit;
+ color: @legend-color;
+ border: 0;
+ border-bottom: 1px solid @legend-border-color;
+}
+
+label {
+ display: inline-block;
+ max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+
+
+// Normalize form controls
+//
+// While most of our form styles require extra classes, some basic normalization
+// is required to ensure optimum display with or without those classes to better
+// address browser inconsistencies.
+
+// Override content-box in Normalize (* isn't specific enough)
+input[type="search"] {
+ .box-sizing(border-box);
+}
+
+// Position radios and checkboxes better
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9; // IE8-9
+ line-height: normal;
+}
+
+input[type="file"] {
+ display: block;
+}
+
+// Make range inputs behave like textual form controls
+input[type="range"] {
+ display: block;
+ width: 100%;
+}
+
+// Make multiple select elements height not fixed
+select[multiple],
+select[size] {
+ height: auto;
+}
+
+// Focus for file, radio, and checkbox
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ .tab-focus();
+}
+
+// Adjust output element
+output {
+ display: block;
+ padding-top: (@padding-base-vertical + 1);
+ font-size: @font-size-base;
+ line-height: @line-height-base;
+ color: @input-color;
+}
+
+
+// Common form controls
+//
+// Shared size and type resets for form controls. Apply `.form-control` to any
+// of the following form controls:
+//
+// select
+// textarea
+// input[type="text"]
+// input[type="password"]
+// input[type="datetime"]
+// input[type="datetime-local"]
+// input[type="date"]
+// input[type="month"]
+// input[type="time"]
+// input[type="week"]
+// input[type="number"]
+// input[type="email"]
+// input[type="url"]
+// input[type="search"]
+// input[type="tel"]
+// input[type="color"]
+
+.form-control {
+ display: block;
+ width: 100%;
+ height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
+ padding: @padding-base-vertical @padding-base-horizontal;
+ font-size: @font-size-base;
+ line-height: @line-height-base;
+ color: @input-color;
+ background-color: @input-bg;
+ background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
+ border: 1px solid @input-border;
+ border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
+ .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");
+
+ // Customize the `:focus` state to imitate native WebKit styles.
+ .form-control-focus();
+
+ // Placeholder
+ .placeholder();
+
+ // Disabled and read-only inputs
+ //
+ // HTML5 says that controls under a fieldset > legend:first-child won't be
+ // disabled if the fieldset is disabled. Due to implementation difficulty, we
+ // don't honor that edge case; we style them as disabled anyway.
+ &[disabled],
+ &[readonly],
+ fieldset[disabled] & {
+ background-color: @input-bg-disabled;
+ opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
+ }
+
+ &[disabled],
+ fieldset[disabled] & {
+ cursor: @cursor-disabled;
+ }
+
+ // Reset height for `textarea`s
+ textarea& {
+ height: auto;
+ }
+}
+
+
+// Search inputs in iOS
+//
+// This overrides the extra rounded corners on search inputs in iOS so that our
+// `.form-control` class can properly style them. Note that this cannot simply
+// be added to `.form-control` as it's not specific enough. For details, see
+// https://github.com/twbs/bootstrap/issues/11586.
+
+input[type="search"] {
+ -webkit-appearance: none;
+}
+
+
+// Special styles for iOS temporal inputs
+//
+// In Mobile Safari, setting `display: block` on temporal inputs causes the
+// text within the input to become vertically misaligned. As a workaround, we
+// set a pixel line-height that matches the given height of the input, but only
+// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
+//
+// Note that as of 8.3, iOS doesn't support `datetime` or `week`.
+
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ input[type="date"],
+ input[type="time"],
+ input[type="datetime-local"],
+ input[type="month"] {
+ &.form-control {
+ line-height: @input-height-base;
+ }
+
+ &.input-sm,
+ .input-group-sm & {
+ line-height: @input-height-small;
+ }
+
+ &.input-lg,
+ .input-group-lg & {
+ line-height: @input-height-large;
+ }
+ }
+}
+
+
+// Form groups
+//
+// Designed to help with the organization and spacing of vertical forms. For
+// horizontal forms, use the predefined grid classes.
+
+.form-group {
+ margin-bottom: @form-group-margin-bottom;
+}
+
+
+// Checkboxes and radios
+//
+// Indent the labels to position radios/checkboxes as hanging controls.
+
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+
+ label {
+ min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+ }
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ position: absolute;
+ margin-left: -20px;
+ margin-top: 4px \9;
+}
+
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
+}
+
+// Radios and checkboxes on same line
+.radio-inline,
+.checkbox-inline {
+ position: relative;
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ vertical-align: middle;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px; // space out consecutive inline controls
+}
+
+// Apply same disabled cursor tweak as for inputs
+// Some special care is needed because <label>s don't inherit their parent's `cursor`.
+//
+// Note: Neither radios nor checkboxes can be readonly.
+input[type="radio"],
+input[type="checkbox"] {
+ &[disabled],
+ &.disabled,
+ fieldset[disabled] & {
+ cursor: @cursor-disabled;
+ }
+}
+// These classes are used directly on <label>s
+.radio-inline,
+.checkbox-inline {
+ &.disabled,
+ fieldset[disabled] & {
+ cursor: @cursor-disabled;
+ }
+}
+// These classes are used on elements with <label> descendants
+.radio,
+.checkbox {
+ &.disabled,
+ fieldset[disabled] & {
+ label {
+ cursor: @cursor-disabled;
+ }
+ }
+}
+
+
+// Static form control text
+//
+// Apply class to a `p` element to make any string of text align with labels in
+// a horizontal form layout.
+
+.form-control-static {
+ // Size it appropriately next to real form controls
+ padding-top: (@padding-base-vertical + 1);
+ padding-bottom: (@padding-base-vertical + 1);
+ // Remove default margin from `p`
+ margin-bottom: 0;
+ min-height: (@line-height-computed + @font-size-base);
+
+ &.input-lg,
+ &.input-sm {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
+
+
+// Form control sizing
+//
+// Build on `.form-control` with modifier classes to decrease or increase the
+// height and font-size of form controls.
+//
+// The `.form-group-* form-control` variations are sadly duplicated to avoid the
+// issue documented in https://github.com/twbs/bootstrap/issues/15074.
+
+.input-sm {
+ .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
+}
+.form-group-sm {
+ .form-control {
+ height: @input-height-small;
+ padding: @padding-small-vertical @padding-small-horizontal;
+ font-size: @font-size-small;
+ line-height: @line-height-small;
+ border-radius: @input-border-radius-small;
+ }
+ select.form-control {
+ height: @input-height-small;
+ line-height: @input-height-small;
+ }
+ textarea.form-control,
+ select[multiple].form-control {
+ height: auto;
+ }
+ .form-control-static {
+ height: @input-height-small;
+ min-height: (@line-height-computed + @font-size-small);
+ padding: (@padding-small-vertical + 1) @padding-small-horizontal;
+ font-size: @font-size-small;
+ line-height: @line-height-small;
+ }
+}
+
+.input-lg {
+ .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
+}
+.form-group-lg {
+ .form-control {
+ height: @input-height-large;
+ padding: @padding-large-vertical @padding-large-horizontal;
+ font-size: @font-size-large;
+ line-height: @line-height-large;
+ border-radius: @input-border-radius-large;
+ }
+ select.form-control {
+ height: @input-height-large;
+ line-height: @input-height-large;
+ }
+ textarea.form-control,
+ select[multiple].form-control {
+ height: auto;
+ }
+ .form-control-static {
+ height: @input-height-large;
+ min-height: (@line-height-computed + @font-size-large);
+ padding: (@padding-large-vertical + 1) @padding-large-horizontal;
+ font-size: @font-size-large;
+ line-height: @line-height-large;
+ }
+}
+
+
+// Form control feedback states
+//
+// Apply contextual and semantic states to individual form controls.
+
+.has-feedback {
+ // Enable absolute positioning
+ position: relative;
+
+ // Ensure icons don't overlap text
+ .form-control {
+ padding-right: (@input-height-base * 1.25);
+ }
+}
+// Feedback icon (requires .glyphicon classes)
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2; // Ensure icon is above input groups
+ display: block;
+ width: @input-height-base;
+ height: @input-height-base;
+ line-height: @input-height-base;
+ text-align: center;
+ pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+ width: @input-height-large;
+ height: @input-height-large;
+ line-height: @input-height-large;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+ width: @input-height-small;
+ height: @input-height-small;
+ line-height: @input-height-small;
+}
+
+// Feedback states
+.has-success {
+ .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);
+}
+.has-warning {
+ .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);
+}
+.has-error {
+ .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);
+}
+
+// Reposition feedback icon if input has visible label above
+.has-feedback label {
+
+ & ~ .form-control-feedback {
+ top: (@line-height-computed + 5); // Height of the `label` and its margin
+ }
+ &.sr-only ~ .form-control-feedback {
+ top: 0;
+ }
+}
+
+
+// Help text
+//
+// Apply to any element you wish to create light text for placement immediately
+// below a form control. Use for general help, formatting, or instructional text.
+
+.help-block {
+ display: block; // account for any element using help-block
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: lighten(@text-color, 25%); // lighten the text some for contrast
+}
+
+
+// Inline forms
+//
+// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
+// forms begin stacked on extra small (mobile) devices and then go inline when
+// viewports reach <768px.
+//
+// Requires wrapping inputs and labels with `.form-group` for proper display of
+// default HTML form controls and our custom form controls (e.g., input groups).
+//
+// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
+
+.form-inline {
+
+ // Kick in the inline
+ @media (min-width: @screen-sm-min) {
+ // Inline-block all the things for "inline"
+ .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+
+ // In navbar-form, allow folks to *not* use `.form-group`
+ .form-control {
+ display: inline-block;
+ width: auto; // Prevent labels from stacking above inputs in `.form-group`
+ vertical-align: middle;
+ }
+
+ // Make static controls behave like regular ones
+ .form-control-static {
+ display: inline-block;
+ }
+
+ .input-group {
+ display: inline-table;
+ vertical-align: middle;
+
+ .input-group-addon,
+ .input-group-btn,
+ .form-control {
+ width: auto;
+ }
+ }
+
+ // Input groups need that 100% width though
+ .input-group > .form-control {
+ width: 100%;
+ }
+
+ .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+
+ // Remove default margin on radios/checkboxes that were used for stacking, and
+ // then undo the floating of radios and checkboxes to match.
+ .radio,
+ .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+
+ label {
+ padding-left: 0;
+ }
+ }
+ .radio input[type="radio"],
+ .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+
+ // Re-override the feedback icon.
+ .has-feedback .form-control-feedback {
+ top: 0;
+ }
+ }
+}
+
+
+// Horizontal forms
+//
+// Horizontal forms are built on grid classes and allow you to create forms with
+// labels on the left and inputs on the right.
+
+.form-horizontal {
+
+ // Consistent vertical alignment of radios and checkboxes
+ //
+ // Labels also get some reset styles, but that is scoped to a media query below.
+ .radio,
+ .checkbox,
+ .radio-inline,
+ .checkbox-inline {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: (@padding-base-vertical + 1); // Default padding plus a border
+ }
+ // Account for padding we're adding to ensure the alignment and of help text
+ // and other content below items
+ .radio,
+ .checkbox {
+ min-height: (@line-height-computed + (@padding-base-vertical + 1));
+ }
+
+ // Make form groups behave like rows
+ .form-group {
+ .make-row();
+ }
+
+ // Reset spacing and right align labels, but scope to media queries so that
+ // labels on narrow viewports stack the same as a default form example.
+ @media (min-width: @screen-sm-min) {
+ .control-label {
+ text-align: right;
+ margin-bottom: 0;
+ padding-top: (@padding-base-vertical + 1); // Default padding plus a border
+ }
+ }
+
+ // Validation states
+ //
+ // Reposition the icon because it's now within a grid column and columns have
+ // `position: relative;` on them. Also accounts for the grid gutter padding.
+ .has-feedback .form-control-feedback {
+ right: floor((@grid-gutter-width / 2));
+ }
+
+ // Form group sizes
+ //
+ // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
+ // inputs and labels within a `.form-group`.
+ .form-group-lg {
+ @media (min-width: @screen-sm-min) {
+ .control-label {
+ padding-top: ((@padding-large-vertical * @line-height-large) + 1);
+ font-size: @font-size-large;
+ }
+ }
+ }
+ .form-group-sm {
+ @media (min-width: @screen-sm-min) {
+ .control-label {
+ padding-top: (@padding-small-vertical + 1);
+ font-size: @font-size-small;
+ }
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/glyphicons.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/glyphicons.less
new file mode 100644
index 0000000..335d80a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/glyphicons.less
@@ -0,0 +1,305 @@
+//
+// Glyphicons for Bootstrap
+//
+// Since icons are fonts, they can be placed anywhere text is placed and are
+// thus automatically sized to match the surrounding child. To use, create an
+// inline element with the appropriate classes, like so:
+//
+// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
+
+// Import the fonts
+@font-face {
+ font-family: 'Glyphicons Halflings';
+ src: url('@{icon-font-path}@{icon-font-name}.eot');
+ src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),
+ url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),
+ url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),
+ url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),
+ url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');
+}
+
+// Catchall baseclass
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+// Individual icons
+.glyphicon-asterisk { &:before { content: "\2a"; } }
+.glyphicon-plus { &:before { content: "\2b"; } }
+.glyphicon-euro,
+.glyphicon-eur { &:before { content: "\20ac"; } }
+.glyphicon-minus { &:before { content: "\2212"; } }
+.glyphicon-cloud { &:before { content: "\2601"; } }
+.glyphicon-envelope { &:before { content: "\2709"; } }
+.glyphicon-pencil { &:before { content: "\270f"; } }
+.glyphicon-glass { &:before { content: "\e001"; } }
+.glyphicon-music { &:before { content: "\e002"; } }
+.glyphicon-search { &:before { content: "\e003"; } }
+.glyphicon-heart { &:before { content: "\e005"; } }
+.glyphicon-star { &:before { content: "\e006"; } }
+.glyphicon-star-empty { &:before { content: "\e007"; } }
+.glyphicon-user { &:before { content: "\e008"; } }
+.glyphicon-film { &:before { content: "\e009"; } }
+.glyphicon-th-large { &:before { content: "\e010"; } }
+.glyphicon-th { &:before { content: "\e011"; } }
+.glyphicon-th-list { &:before { content: "\e012"; } }
+.glyphicon-ok { &:before { content: "\e013"; } }
+.glyphicon-remove { &:before { content: "\e014"; } }
+.glyphicon-zoom-in { &:before { content: "\e015"; } }
+.glyphicon-zoom-out { &:before { content: "\e016"; } }
+.glyphicon-off { &:before { content: "\e017"; } }
+.glyphicon-signal { &:before { content: "\e018"; } }
+.glyphicon-cog { &:before { content: "\e019"; } }
+.glyphicon-trash { &:before { content: "\e020"; } }
+.glyphicon-home { &:before { content: "\e021"; } }
+.glyphicon-file { &:before { content: "\e022"; } }
+.glyphicon-time { &:before { content: "\e023"; } }
+.glyphicon-road { &:before { content: "\e024"; } }
+.glyphicon-download-alt { &:before { content: "\e025"; } }
+.glyphicon-download { &:before { content: "\e026"; } }
+.glyphicon-upload { &:before { content: "\e027"; } }
+.glyphicon-inbox { &:before { content: "\e028"; } }
+.glyphicon-play-circle { &:before { content: "\e029"; } }
+.glyphicon-repeat { &:before { content: "\e030"; } }
+.glyphicon-refresh { &:before { content: "\e031"; } }
+.glyphicon-list-alt { &:before { content: "\e032"; } }
+.glyphicon-lock { &:before { content: "\e033"; } }
+.glyphicon-flag { &:before { content: "\e034"; } }
+.glyphicon-headphones { &:before { content: "\e035"; } }
+.glyphicon-volume-off { &:before { content: "\e036"; } }
+.glyphicon-volume-down { &:before { content: "\e037"; } }
+.glyphicon-volume-up { &:before { content: "\e038"; } }
+.glyphicon-qrcode { &:before { content: "\e039"; } }
+.glyphicon-barcode { &:before { content: "\e040"; } }
+.glyphicon-tag { &:before { content: "\e041"; } }
+.glyphicon-tags { &:before { content: "\e042"; } }
+.glyphicon-book { &:before { content: "\e043"; } }
+.glyphicon-bookmark { &:before { content: "\e044"; } }
+.glyphicon-print { &:before { content: "\e045"; } }
+.glyphicon-camera { &:before { content: "\e046"; } }
+.glyphicon-font { &:before { content: "\e047"; } }
+.glyphicon-bold { &:before { content: "\e048"; } }
+.glyphicon-italic { &:before { content: "\e049"; } }
+.glyphicon-text-height { &:before { content: "\e050"; } }
+.glyphicon-text-width { &:before { content: "\e051"; } }
+.glyphicon-align-left { &:before { content: "\e052"; } }
+.glyphicon-align-center { &:before { content: "\e053"; } }
+.glyphicon-align-right { &:before { content: "\e054"; } }
+.glyphicon-align-justify { &:before { content: "\e055"; } }
+.glyphicon-list { &:before { content: "\e056"; } }
+.glyphicon-indent-left { &:before { content: "\e057"; } }
+.glyphicon-indent-right { &:before { content: "\e058"; } }
+.glyphicon-facetime-video { &:before { content: "\e059"; } }
+.glyphicon-picture { &:before { content: "\e060"; } }
+.glyphicon-map-marker { &:before { content: "\e062"; } }
+.glyphicon-adjust { &:before { content: "\e063"; } }
+.glyphicon-tint { &:before { content: "\e064"; } }
+.glyphicon-edit { &:before { content: "\e065"; } }
+.glyphicon-share { &:before { content: "\e066"; } }
+.glyphicon-check { &:before { content: "\e067"; } }
+.glyphicon-move { &:before { content: "\e068"; } }
+.glyphicon-step-backward { &:before { content: "\e069"; } }
+.glyphicon-fast-backward { &:before { content: "\e070"; } }
+.glyphicon-backward { &:before { content: "\e071"; } }
+.glyphicon-play { &:before { content: "\e072"; } }
+.glyphicon-pause { &:before { content: "\e073"; } }
+.glyphicon-stop { &:before { content: "\e074"; } }
+.glyphicon-forward { &:before { content: "\e075"; } }
+.glyphicon-fast-forward { &:before { content: "\e076"; } }
+.glyphicon-step-forward { &:before { content: "\e077"; } }
+.glyphicon-eject { &:before { content: "\e078"; } }
+.glyphicon-chevron-left { &:before { content: "\e079"; } }
+.glyphicon-chevron-right { &:before { content: "\e080"; } }
+.glyphicon-plus-sign { &:before { content: "\e081"; } }
+.glyphicon-minus-sign { &:before { content: "\e082"; } }
+.glyphicon-remove-sign { &:before { content: "\e083"; } }
+.glyphicon-ok-sign { &:before { content: "\e084"; } }
+.glyphicon-question-sign { &:before { content: "\e085"; } }
+.glyphicon-info-sign { &:before { content: "\e086"; } }
+.glyphicon-screenshot { &:before { content: "\e087"; } }
+.glyphicon-remove-circle { &:before { content: "\e088"; } }
+.glyphicon-ok-circle { &:before { content: "\e089"; } }
+.glyphicon-ban-circle { &:before { content: "\e090"; } }
+.glyphicon-arrow-left { &:before { content: "\e091"; } }
+.glyphicon-arrow-right { &:before { content: "\e092"; } }
+.glyphicon-arrow-up { &:before { content: "\e093"; } }
+.glyphicon-arrow-down { &:before { content: "\e094"; } }
+.glyphicon-share-alt { &:before { content: "\e095"; } }
+.glyphicon-resize-full { &:before { content: "\e096"; } }
+.glyphicon-resize-small { &:before { content: "\e097"; } }
+.glyphicon-exclamation-sign { &:before { content: "\e101"; } }
+.glyphicon-gift { &:before { content: "\e102"; } }
+.glyphicon-leaf { &:before { content: "\e103"; } }
+.glyphicon-fire { &:before { content: "\e104"; } }
+.glyphicon-eye-open { &:before { content: "\e105"; } }
+.glyphicon-eye-close { &:before { content: "\e106"; } }
+.glyphicon-warning-sign { &:before { content: "\e107"; } }
+.glyphicon-plane { &:before { content: "\e108"; } }
+.glyphicon-calendar { &:before { content: "\e109"; } }
+.glyphicon-random { &:before { content: "\e110"; } }
+.glyphicon-comment { &:before { content: "\e111"; } }
+.glyphicon-magnet { &:before { content: "\e112"; } }
+.glyphicon-chevron-up { &:before { content: "\e113"; } }
+.glyphicon-chevron-down { &:before { content: "\e114"; } }
+.glyphicon-retweet { &:before { content: "\e115"; } }
+.glyphicon-shopping-cart { &:before { content: "\e116"; } }
+.glyphicon-folder-close { &:before { content: "\e117"; } }
+.glyphicon-folder-open { &:before { content: "\e118"; } }
+.glyphicon-resize-vertical { &:before { content: "\e119"; } }
+.glyphicon-resize-horizontal { &:before { content: "\e120"; } }
+.glyphicon-hdd { &:before { content: "\e121"; } }
+.glyphicon-bullhorn { &:before { content: "\e122"; } }
+.glyphicon-bell { &:before { content: "\e123"; } }
+.glyphicon-certificate { &:before { content: "\e124"; } }
+.glyphicon-thumbs-up { &:before { content: "\e125"; } }
+.glyphicon-thumbs-down { &:before { content: "\e126"; } }
+.glyphicon-hand-right { &:before { content: "\e127"; } }
+.glyphicon-hand-left { &:before { content: "\e128"; } }
+.glyphicon-hand-up { &:before { content: "\e129"; } }
+.glyphicon-hand-down { &:before { content: "\e130"; } }
+.glyphicon-circle-arrow-right { &:before { content: "\e131"; } }
+.glyphicon-circle-arrow-left { &:before { content: "\e132"; } }
+.glyphicon-circle-arrow-up { &:before { content: "\e133"; } }
+.glyphicon-circle-arrow-down { &:before { content: "\e134"; } }
+.glyphicon-globe { &:before { content: "\e135"; } }
+.glyphicon-wrench { &:before { content: "\e136"; } }
+.glyphicon-tasks { &:before { content: "\e137"; } }
+.glyphicon-filter { &:before { content: "\e138"; } }
+.glyphicon-briefcase { &:before { content: "\e139"; } }
+.glyphicon-fullscreen { &:before { content: "\e140"; } }
+.glyphicon-dashboard { &:before { content: "\e141"; } }
+.glyphicon-paperclip { &:before { content: "\e142"; } }
+.glyphicon-heart-empty { &:before { content: "\e143"; } }
+.glyphicon-link { &:before { content: "\e144"; } }
+.glyphicon-phone { &:before { content: "\e145"; } }
+.glyphicon-pushpin { &:before { content: "\e146"; } }
+.glyphicon-usd { &:before { content: "\e148"; } }
+.glyphicon-gbp { &:before { content: "\e149"; } }
+.glyphicon-sort { &:before { content: "\e150"; } }
+.glyphicon-sort-by-alphabet { &:before { content: "\e151"; } }
+.glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } }
+.glyphicon-sort-by-order { &:before { content: "\e153"; } }
+.glyphicon-sort-by-order-alt { &:before { content: "\e154"; } }
+.glyphicon-sort-by-attributes { &:before { content: "\e155"; } }
+.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
+.glyphicon-unchecked { &:before { content: "\e157"; } }
+.glyphicon-expand { &:before { content: "\e158"; } }
+.glyphicon-collapse-down { &:before { content: "\e159"; } }
+.glyphicon-collapse-up { &:before { content: "\e160"; } }
+.glyphicon-log-in { &:before { content: "\e161"; } }
+.glyphicon-flash { &:before { content: "\e162"; } }
+.glyphicon-log-out { &:before { content: "\e163"; } }
+.glyphicon-new-window { &:before { content: "\e164"; } }
+.glyphicon-record { &:before { content: "\e165"; } }
+.glyphicon-save { &:before { content: "\e166"; } }
+.glyphicon-open { &:before { content: "\e167"; } }
+.glyphicon-saved { &:before { content: "\e168"; } }
+.glyphicon-import { &:before { content: "\e169"; } }
+.glyphicon-export { &:before { content: "\e170"; } }
+.glyphicon-send { &:before { content: "\e171"; } }
+.glyphicon-floppy-disk { &:before { content: "\e172"; } }
+.glyphicon-floppy-saved { &:before { content: "\e173"; } }
+.glyphicon-floppy-remove { &:before { content: "\e174"; } }
+.glyphicon-floppy-save { &:before { content: "\e175"; } }
+.glyphicon-floppy-open { &:before { content: "\e176"; } }
+.glyphicon-credit-card { &:before { content: "\e177"; } }
+.glyphicon-transfer { &:before { content: "\e178"; } }
+.glyphicon-cutlery { &:before { content: "\e179"; } }
+.glyphicon-header { &:before { content: "\e180"; } }
+.glyphicon-compressed { &:before { content: "\e181"; } }
+.glyphicon-earphone { &:before { content: "\e182"; } }
+.glyphicon-phone-alt { &:before { content: "\e183"; } }
+.glyphicon-tower { &:before { content: "\e184"; } }
+.glyphicon-stats { &:before { content: "\e185"; } }
+.glyphicon-sd-video { &:before { content: "\e186"; } }
+.glyphicon-hd-video { &:before { content: "\e187"; } }
+.glyphicon-subtitles { &:before { content: "\e188"; } }
+.glyphicon-sound-stereo { &:before { content: "\e189"; } }
+.glyphicon-sound-dolby { &:before { content: "\e190"; } }
+.glyphicon-sound-5-1 { &:before { content: "\e191"; } }
+.glyphicon-sound-6-1 { &:before { content: "\e192"; } }
+.glyphicon-sound-7-1 { &:before { content: "\e193"; } }
+.glyphicon-copyright-mark { &:before { content: "\e194"; } }
+.glyphicon-registration-mark { &:before { content: "\e195"; } }
+.glyphicon-cloud-download { &:before { content: "\e197"; } }
+.glyphicon-cloud-upload { &:before { content: "\e198"; } }
+.glyphicon-tree-conifer { &:before { content: "\e199"; } }
+.glyphicon-tree-deciduous { &:before { content: "\e200"; } }
+.glyphicon-cd { &:before { content: "\e201"; } }
+.glyphicon-save-file { &:before { content: "\e202"; } }
+.glyphicon-open-file { &:before { content: "\e203"; } }
+.glyphicon-level-up { &:before { content: "\e204"; } }
+.glyphicon-copy { &:before { content: "\e205"; } }
+.glyphicon-paste { &:before { content: "\e206"; } }
+// The following 2 Glyphicons are omitted for the time being because
+// they currently use Unicode codepoints that are outside the
+// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
+// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
+// Notably, the bug affects some older versions of the Android Browser.
+// More info: https://github.com/twbs/bootstrap/issues/10106
+// .glyphicon-door { &:before { content: "\1f6aa"; } }
+// .glyphicon-key { &:before { content: "\1f511"; } }
+.glyphicon-alert { &:before { content: "\e209"; } }
+.glyphicon-equalizer { &:before { content: "\e210"; } }
+.glyphicon-king { &:before { content: "\e211"; } }
+.glyphicon-queen { &:before { content: "\e212"; } }
+.glyphicon-pawn { &:before { content: "\e213"; } }
+.glyphicon-bishop { &:before { content: "\e214"; } }
+.glyphicon-knight { &:before { content: "\e215"; } }
+.glyphicon-baby-formula { &:before { content: "\e216"; } }
+.glyphicon-tent { &:before { content: "\26fa"; } }
+.glyphicon-blackboard { &:before { content: "\e218"; } }
+.glyphicon-bed { &:before { content: "\e219"; } }
+.glyphicon-apple { &:before { content: "\f8ff"; } }
+.glyphicon-erase { &:before { content: "\e221"; } }
+.glyphicon-hourglass { &:before { content: "\231b"; } }
+.glyphicon-lamp { &:before { content: "\e223"; } }
+.glyphicon-duplicate { &:before { content: "\e224"; } }
+.glyphicon-piggy-bank { &:before { content: "\e225"; } }
+.glyphicon-scissors { &:before { content: "\e226"; } }
+.glyphicon-bitcoin { &:before { content: "\e227"; } }
+.glyphicon-btc { &:before { content: "\e227"; } }
+.glyphicon-xbt { &:before { content: "\e227"; } }
+.glyphicon-yen { &:before { content: "\00a5"; } }
+.glyphicon-jpy { &:before { content: "\00a5"; } }
+.glyphicon-ruble { &:before { content: "\20bd"; } }
+.glyphicon-rub { &:before { content: "\20bd"; } }
+.glyphicon-scale { &:before { content: "\e230"; } }
+.glyphicon-ice-lolly { &:before { content: "\e231"; } }
+.glyphicon-ice-lolly-tasted { &:before { content: "\e232"; } }
+.glyphicon-education { &:before { content: "\e233"; } }
+.glyphicon-option-horizontal { &:before { content: "\e234"; } }
+.glyphicon-option-vertical { &:before { content: "\e235"; } }
+.glyphicon-menu-hamburger { &:before { content: "\e236"; } }
+.glyphicon-modal-window { &:before { content: "\e237"; } }
+.glyphicon-oil { &:before { content: "\e238"; } }
+.glyphicon-grain { &:before { content: "\e239"; } }
+.glyphicon-sunglasses { &:before { content: "\e240"; } }
+.glyphicon-text-size { &:before { content: "\e241"; } }
+.glyphicon-text-color { &:before { content: "\e242"; } }
+.glyphicon-text-background { &:before { content: "\e243"; } }
+.glyphicon-object-align-top { &:before { content: "\e244"; } }
+.glyphicon-object-align-bottom { &:before { content: "\e245"; } }
+.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } }
+.glyphicon-object-align-left { &:before { content: "\e247"; } }
+.glyphicon-object-align-vertical { &:before { content: "\e248"; } }
+.glyphicon-object-align-right { &:before { content: "\e249"; } }
+.glyphicon-triangle-right { &:before { content: "\e250"; } }
+.glyphicon-triangle-left { &:before { content: "\e251"; } }
+.glyphicon-triangle-bottom { &:before { content: "\e252"; } }
+.glyphicon-triangle-top { &:before { content: "\e253"; } }
+.glyphicon-console { &:before { content: "\e254"; } }
+.glyphicon-superscript { &:before { content: "\e255"; } }
+.glyphicon-subscript { &:before { content: "\e256"; } }
+.glyphicon-menu-left { &:before { content: "\e257"; } }
+.glyphicon-menu-right { &:before { content: "\e258"; } }
+.glyphicon-menu-down { &:before { content: "\e259"; } }
+.glyphicon-menu-up { &:before { content: "\e260"; } }
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/grid.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/grid.less
new file mode 100644
index 0000000..e100655
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/grid.less
@@ -0,0 +1,84 @@
+//
+// Grid system
+// --------------------------------------------------
+
+
+// Container widths
+//
+// Set the container width, and override it for fixed navbars in media queries.
+
+.container {
+ .container-fixed();
+
+ @media (min-width: @screen-sm-min) {
+ width: @container-sm;
+ }
+ @media (min-width: @screen-md-min) {
+ width: @container-md;
+ }
+ @media (min-width: @screen-lg-min) {
+ width: @container-lg;
+ }
+}
+
+
+// Fluid container
+//
+// Utilizes the mixin meant for fixed width containers, but without any defined
+// width for fluid, full width layouts.
+
+.container-fluid {
+ .container-fixed();
+}
+
+
+// Row
+//
+// Rows contain and clear the floats of your columns.
+
+.row {
+ .make-row();
+}
+
+
+// Columns
+//
+// Common styles for small and large grid columns
+
+.make-grid-columns();
+
+
+// Extra small grid
+//
+// Columns, offsets, pushes, and pulls for extra small devices like
+// smartphones.
+
+.make-grid(xs);
+
+
+// Small grid
+//
+// Columns, offsets, pushes, and pulls for the small device range, from phones
+// to tablets.
+
+@media (min-width: @screen-sm-min) {
+ .make-grid(sm);
+}
+
+
+// Medium grid
+//
+// Columns, offsets, pushes, and pulls for the desktop device range.
+
+@media (min-width: @screen-md-min) {
+ .make-grid(md);
+}
+
+
+// Large grid
+//
+// Columns, offsets, pushes, and pulls for the large desktop device range.
+
+@media (min-width: @screen-lg-min) {
+ .make-grid(lg);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/input-groups.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/input-groups.less
new file mode 100644
index 0000000..457ea60
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/input-groups.less
@@ -0,0 +1,167 @@
+//
+// Input groups
+// --------------------------------------------------
+
+// Base styles
+// -------------------------
+.input-group {
+ position: relative; // For dropdowns
+ display: table;
+ border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
+
+ // Undo padding and float of grid classes
+ &[class*="col-"] {
+ float: none;
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ .form-control {
+ // Ensure that the input is always above the *appended* addon button for
+ // proper border colors.
+ position: relative;
+ z-index: 2;
+
+ // IE9 fubars the placeholder attribute in text inputs and the arrows on
+ // select elements in input groups. To fix it, we float the input. Details:
+ // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
+ float: left;
+
+ width: 100%;
+ margin-bottom: 0;
+ }
+}
+
+// Sizing options
+//
+// Remix the default form control sizing classes into new ones for easier
+// manipulation.
+
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ .input-lg();
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ .input-sm();
+}
+
+
+// Display as table-cell
+// -------------------------
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+
+ &:not(:first-child):not(:last-child) {
+ border-radius: 0;
+ }
+}
+// Addon and addon wrapper for buttons
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle; // Match the inputs
+}
+
+// Text input groups
+// -------------------------
+.input-group-addon {
+ padding: @padding-base-vertical @padding-base-horizontal;
+ font-size: @font-size-base;
+ font-weight: normal;
+ line-height: 1;
+ color: @input-color;
+ text-align: center;
+ background-color: @input-group-addon-bg;
+ border: 1px solid @input-group-addon-border-color;
+ border-radius: @border-radius-base;
+
+ // Sizing
+ &.input-sm {
+ padding: @padding-small-vertical @padding-small-horizontal;
+ font-size: @font-size-small;
+ border-radius: @border-radius-small;
+ }
+ &.input-lg {
+ padding: @padding-large-vertical @padding-large-horizontal;
+ font-size: @font-size-large;
+ border-radius: @border-radius-large;
+ }
+
+ // Nuke default margins from checkboxes and radios to vertically center within.
+ input[type="radio"],
+ input[type="checkbox"] {
+ margin-top: 0;
+ }
+}
+
+// Reset rounded corners
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+ .border-right-radius(0);
+}
+.input-group-addon:first-child {
+ border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+ .border-left-radius(0);
+}
+.input-group-addon:last-child {
+ border-left: 0;
+}
+
+// Button input groups
+// -------------------------
+.input-group-btn {
+ position: relative;
+ // Jankily prevent input button groups from wrapping with `white-space` and
+ // `font-size` in combination with `inline-block` on buttons.
+ font-size: 0;
+ white-space: nowrap;
+
+ // Negative margin for spacing, position for bringing hovered/focused/actived
+ // element above the siblings.
+ > .btn {
+ position: relative;
+ + .btn {
+ margin-left: -1px;
+ }
+ // Bring the "active" button to the front
+ &:hover,
+ &:focus,
+ &:active {
+ z-index: 2;
+ }
+ }
+
+ // Negative margin to only have a 1px border between the two
+ &:first-child {
+ > .btn,
+ > .btn-group {
+ margin-right: -1px;
+ }
+ }
+ &:last-child {
+ > .btn,
+ > .btn-group {
+ z-index: 2;
+ margin-left: -1px;
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/jumbotron.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/jumbotron.less
new file mode 100644
index 0000000..fa80a38
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/jumbotron.less
@@ -0,0 +1,52 @@
+//
+// Jumbotron
+// --------------------------------------------------
+
+
+.jumbotron {
+ padding-top: @jumbotron-padding;
+ padding-bottom: @jumbotron-padding;
+ margin-bottom: @jumbotron-padding;
+ color: @jumbotron-color;
+ background-color: @jumbotron-bg;
+
+ h1,
+ .h1 {
+ color: @jumbotron-heading-color;
+ }
+
+ p {
+ margin-bottom: (@jumbotron-padding / 2);
+ font-size: @jumbotron-font-size;
+ font-weight: 200;
+ }
+
+ > hr {
+ border-top-color: darken(@jumbotron-bg, 10%);
+ }
+
+ .container &,
+ .container-fluid & {
+ border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
+ }
+
+ .container {
+ max-width: 100%;
+ }
+
+ @media screen and (min-width: @screen-sm-min) {
+ padding-top: (@jumbotron-padding * 1.6);
+ padding-bottom: (@jumbotron-padding * 1.6);
+
+ .container &,
+ .container-fluid & {
+ padding-left: (@jumbotron-padding * 2);
+ padding-right: (@jumbotron-padding * 2);
+ }
+
+ h1,
+ .h1 {
+ font-size: @jumbotron-heading-font-size;
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/labels.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/labels.less
new file mode 100644
index 0000000..9a5a270
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/labels.less
@@ -0,0 +1,64 @@
+//
+// Labels
+// --------------------------------------------------
+
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: @label-color;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+
+ // Add hover effects, but only for links
+ a& {
+ &:hover,
+ &:focus {
+ color: @label-link-hover-color;
+ text-decoration: none;
+ cursor: pointer;
+ }
+ }
+
+ // Empty labels collapse automatically (not available in IE8)
+ &:empty {
+ display: none;
+ }
+
+ // Quick fix for labels in buttons
+ .btn & {
+ position: relative;
+ top: -1px;
+ }
+}
+
+// Colors
+// Contextual variations (linked labels get darker on :hover)
+
+.label-default {
+ .label-variant(@label-default-bg);
+}
+
+.label-primary {
+ .label-variant(@label-primary-bg);
+}
+
+.label-success {
+ .label-variant(@label-success-bg);
+}
+
+.label-info {
+ .label-variant(@label-info-bg);
+}
+
+.label-warning {
+ .label-variant(@label-warning-bg);
+}
+
+.label-danger {
+ .label-variant(@label-danger-bg);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/list-group.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/list-group.less
new file mode 100644
index 0000000..216b912
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/list-group.less
@@ -0,0 +1,130 @@
+//
+// List groups
+// --------------------------------------------------
+
+
+// Base class
+//
+// Easily usable on <ul>, <ol>, or <div>.
+
+.list-group {
+ // No need to set list-style: none; since .list-group-item is block level
+ margin-bottom: 20px;
+ padding-left: 0; // reset padding because ul and ol
+}
+
+
+// Individual list items
+//
+// Use on `li`s or `div`s within the `.list-group` parent.
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+ // Place the border on the list items and negative margin up for better styling
+ margin-bottom: -1px;
+ background-color: @list-group-bg;
+ border: 1px solid @list-group-border;
+
+ // Round the first and last items
+ &:first-child {
+ .border-top-radius(@list-group-border-radius);
+ }
+ &:last-child {
+ margin-bottom: 0;
+ .border-bottom-radius(@list-group-border-radius);
+ }
+}
+
+
+// Interactive list items
+//
+// Use anchor or button elements instead of `li`s or `div`s to create interactive items.
+// Includes an extra `.active` modifier class for showing selected items.
+
+a.list-group-item,
+button.list-group-item {
+ color: @list-group-link-color;
+
+ .list-group-item-heading {
+ color: @list-group-link-heading-color;
+ }
+
+ // Hover state
+ &:hover,
+ &:focus {
+ text-decoration: none;
+ color: @list-group-link-hover-color;
+ background-color: @list-group-hover-bg;
+ }
+}
+
+button.list-group-item {
+ width: 100%;
+ text-align: left;
+}
+
+.list-group-item {
+ // Disabled state
+ &.disabled,
+ &.disabled:hover,
+ &.disabled:focus {
+ background-color: @list-group-disabled-bg;
+ color: @list-group-disabled-color;
+ cursor: @cursor-disabled;
+
+ // Force color to inherit for custom content
+ .list-group-item-heading {
+ color: inherit;
+ }
+ .list-group-item-text {
+ color: @list-group-disabled-text-color;
+ }
+ }
+
+ // Active class on item itself, not parent
+ &.active,
+ &.active:hover,
+ &.active:focus {
+ z-index: 2; // Place active items above their siblings for proper border styling
+ color: @list-group-active-color;
+ background-color: @list-group-active-bg;
+ border-color: @list-group-active-border;
+
+ // Force color to inherit for custom content
+ .list-group-item-heading,
+ .list-group-item-heading > small,
+ .list-group-item-heading > .small {
+ color: inherit;
+ }
+ .list-group-item-text {
+ color: @list-group-active-text-color;
+ }
+ }
+}
+
+
+// Contextual variants
+//
+// Add modifier classes to change text and background color on individual items.
+// Organizationally, this must come after the `:hover` states.
+
+.list-group-item-variant(success; @state-success-bg; @state-success-text);
+.list-group-item-variant(info; @state-info-bg; @state-info-text);
+.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);
+.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);
+
+
+// Custom content options
+//
+// Extra classes for creating well-formatted content within `.list-group-item`s.
+
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/media.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/media.less
new file mode 100644
index 0000000..8c835e8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/media.less
@@ -0,0 +1,66 @@
+.media {
+ // Proper spacing between instances of .media
+ margin-top: 15px;
+
+ &:first-child {
+ margin-top: 0;
+ }
+}
+
+.media,
+.media-body {
+ zoom: 1;
+ overflow: hidden;
+}
+
+.media-body {
+ width: 10000px;
+}
+
+.media-object {
+ display: block;
+
+ // Fix collapse in webkit from max-width: 100% and display: table-cell.
+ &.img-thumbnail {
+ max-width: none;
+ }
+}
+
+.media-right,
+.media > .pull-right {
+ padding-left: 10px;
+}
+
+.media-left,
+.media > .pull-left {
+ padding-right: 10px;
+}
+
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.media-middle {
+ vertical-align: middle;
+}
+
+.media-bottom {
+ vertical-align: bottom;
+}
+
+// Reset margins on headings for tighter default spacing
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+
+// Media list variation
+//
+// Undo default ul/ol styles
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins.less
new file mode 100644
index 0000000..e6f9fe6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins.less
@@ -0,0 +1,40 @@
+// Mixins
+// --------------------------------------------------
+
+// Utilities
+@import "mixins/hide-text.less";
+@import "mixins/opacity.less";
+@import "mixins/image.less";
+@import "mixins/labels.less";
+@import "mixins/reset-filter.less";
+@import "mixins/resize.less";
+@import "mixins/responsive-visibility.less";
+@import "mixins/size.less";
+@import "mixins/tab-focus.less";
+@import "mixins/reset-text.less";
+@import "mixins/text-emphasis.less";
+@import "mixins/text-overflow.less";
+@import "mixins/vendor-prefixes.less";
+
+// Components
+@import "mixins/alerts.less";
+@import "mixins/buttons.less";
+@import "mixins/panels.less";
+@import "mixins/pagination.less";
+@import "mixins/list-group.less";
+@import "mixins/nav-divider.less";
+@import "mixins/forms.less";
+@import "mixins/progress-bar.less";
+@import "mixins/table-row.less";
+
+// Skins
+@import "mixins/background-variant.less";
+@import "mixins/border-radius.less";
+@import "mixins/gradients.less";
+
+// Layout
+@import "mixins/clearfix.less";
+@import "mixins/center-block.less";
+@import "mixins/nav-vertical-align.less";
+@import "mixins/grid-framework.less";
+@import "mixins/grid.less";
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/alerts.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/alerts.less
new file mode 100644
index 0000000..396196f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/alerts.less
@@ -0,0 +1,14 @@
+// Alerts
+
+.alert-variant(@background; @border; @text-color) {
+ background-color: @background;
+ border-color: @border;
+ color: @text-color;
+
+ hr {
+ border-top-color: darken(@border, 5%);
+ }
+ .alert-link {
+ color: darken(@text-color, 10%);
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/background-variant.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/background-variant.less
new file mode 100644
index 0000000..a85c22b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/background-variant.less
@@ -0,0 +1,9 @@
+// Contextual backgrounds
+
+.bg-variant(@color) {
+ background-color: @color;
+ a&:hover,
+ a&:focus {
+ background-color: darken(@color, 10%);
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/border-radius.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/border-radius.less
new file mode 100644
index 0000000..ca05dbf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/border-radius.less
@@ -0,0 +1,18 @@
+// Single side border-radius
+
+.border-top-radius(@radius) {
+ border-top-right-radius: @radius;
+ border-top-left-radius: @radius;
+}
+.border-right-radius(@radius) {
+ border-bottom-right-radius: @radius;
+ border-top-right-radius: @radius;
+}
+.border-bottom-radius(@radius) {
+ border-bottom-right-radius: @radius;
+ border-bottom-left-radius: @radius;
+}
+.border-left-radius(@radius) {
+ border-bottom-left-radius: @radius;
+ border-top-left-radius: @radius;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/buttons.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/buttons.less
new file mode 100644
index 0000000..6875a97
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/buttons.less
@@ -0,0 +1,68 @@
+// Button variants
+//
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+
+.button-variant(@color; @background; @border) {
+ color: @color;
+ background-color: @background;
+ border-color: @border;
+
+ &:focus,
+ &.focus {
+ color: @color;
+ background-color: darken(@background, 10%);
+ border-color: darken(@border, 25%);
+ }
+ &:hover {
+ color: @color;
+ background-color: darken(@background, 10%);
+ border-color: darken(@border, 12%);
+ }
+ &:active,
+ &.active,
+ .open > .dropdown-toggle& {
+ color: @color;
+ background-color: darken(@background, 10%);
+ border-color: darken(@border, 12%);
+
+ &:hover,
+ &:focus,
+ &.focus {
+ color: @color;
+ background-color: darken(@background, 17%);
+ border-color: darken(@border, 25%);
+ }
+ }
+ &:active,
+ &.active,
+ .open > .dropdown-toggle& {
+ background-image: none;
+ }
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ &,
+ &:hover,
+ &:focus,
+ &.focus,
+ &:active,
+ &.active {
+ background-color: @background;
+ border-color: @border;
+ }
+ }
+
+ .badge {
+ color: @background;
+ background-color: @color;
+ }
+}
+
+// Button sizes
+.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
+ padding: @padding-vertical @padding-horizontal;
+ font-size: @font-size;
+ line-height: @line-height;
+ border-radius: @border-radius;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/center-block.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/center-block.less
new file mode 100644
index 0000000..d18d6de
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/center-block.less
@@ -0,0 +1,7 @@
+// Center-align a block level element
+
+.center-block() {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/clearfix.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/clearfix.less
new file mode 100644
index 0000000..3f7a382
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/clearfix.less
@@ -0,0 +1,22 @@
+// Clearfix
+//
+// For modern browsers
+// 1. The space content is one way to avoid an Opera bug when the
+// contenteditable attribute is included anywhere else in the document.
+// Otherwise it causes space to appear at the top and bottom of elements
+// that are clearfixed.
+// 2. The use of `table` rather than `block` is only necessary if using
+// `:before` to contain the top-margins of child elements.
+//
+// Source: http://nicolasgallagher.com/micro-clearfix-hack/
+
+.clearfix() {
+ &:before,
+ &:after {
+ content: " "; // 1
+ display: table; // 2
+ }
+ &:after {
+ clear: both;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/forms.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/forms.less
new file mode 100644
index 0000000..6f55ed9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/forms.less
@@ -0,0 +1,85 @@
+// Form validation states
+//
+// Used in forms.less to generate the form validation CSS for warnings, errors,
+// and successes.
+
+.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {
+ // Color the label and help text
+ .help-block,
+ .control-label,
+ .radio,
+ .checkbox,
+ .radio-inline,
+ .checkbox-inline,
+ &.radio label,
+ &.checkbox label,
+ &.radio-inline label,
+ &.checkbox-inline label {
+ color: @text-color;
+ }
+ // Set the border and box shadow on specific inputs to match
+ .form-control {
+ border-color: @border-color;
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
+ &:focus {
+ border-color: darken(@border-color, 10%);
+ @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);
+ .box-shadow(@shadow);
+ }
+ }
+ // Set validation states also for addons
+ .input-group-addon {
+ color: @text-color;
+ border-color: @border-color;
+ background-color: @background-color;
+ }
+ // Optional feedback icon
+ .form-control-feedback {
+ color: @text-color;
+ }
+}
+
+
+// Form control focus state
+//
+// Generate a customized focus state and for any input with the specified color,
+// which defaults to the `@input-border-focus` variable.
+//
+// We highly encourage you to not customize the default value, but instead use
+// this to tweak colors on an as-needed basis. This aesthetic change is based on
+// WebKit's default styles, but applicable to a wider range of browsers. Its
+// usability and accessibility should be taken into account with any change.
+//
+// Example usage: change the default blue border and shadow to white for better
+// contrast against a dark gray background.
+.form-control-focus(@color: @input-border-focus) {
+ @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);
+ &:focus {
+ border-color: @color;
+ outline: 0;
+ .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}");
+ }
+}
+
+// Form control sizing
+//
+// Relative text size, padding, and border-radii changes for form controls. For
+// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
+// element gets special love because it's special, and that's a fact!
+.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
+ height: @input-height;
+ padding: @padding-vertical @padding-horizontal;
+ font-size: @font-size;
+ line-height: @line-height;
+ border-radius: @border-radius;
+
+ select& {
+ height: @input-height;
+ line-height: @input-height;
+ }
+
+ textarea&,
+ select[multiple]& {
+ height: auto;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/gradients.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/gradients.less
new file mode 100644
index 0000000..0b88a89
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/gradients.less
@@ -0,0 +1,59 @@
+// Gradients
+
+#gradient {
+
+ // Horizontal gradient, from left to right
+ //
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
+ // Color stops are not available in IE9 and below.
+ .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
+ background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+
+ background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12
+ background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
+ background-repeat: repeat-x;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down
+ }
+
+ // Vertical gradient, from top to bottom
+ //
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
+ // Color stops are not available in IE9 and below.
+ .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
+ background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+
+ background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12
+ background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
+ background-repeat: repeat-x;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down
+ }
+
+ .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {
+ background-repeat: repeat-x;
+ background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+
+ background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12
+ background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
+ }
+ .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
+ background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
+ background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
+ background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);
+ background-repeat: no-repeat;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
+ }
+ .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
+ background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
+ background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
+ background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);
+ background-repeat: no-repeat;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
+ }
+ .radial(@inner-color: #555; @outer-color: #333) {
+ background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);
+ background-image: radial-gradient(circle, @inner-color, @outer-color);
+ background-repeat: no-repeat;
+ }
+ .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {
+ background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
+ background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/grid.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/grid.less
new file mode 100644
index 0000000..f144c15
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/grid.less
@@ -0,0 +1,122 @@
+// Grid system
+//
+// Generate semantic grid columns with these mixins.
+
+// Centered container element
+.container-fixed(@gutter: @grid-gutter-width) {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: (@gutter / 2);
+ padding-right: (@gutter / 2);
+ &:extend(.clearfix all);
+}
+
+// Creates a wrapper for a series of columns
+.make-row(@gutter: @grid-gutter-width) {
+ margin-left: ceil((@gutter / -2));
+ margin-right: floor((@gutter / -2));
+ &:extend(.clearfix all);
+}
+
+// Generate the extra small columns
+.make-xs-column(@columns; @gutter: @grid-gutter-width) {
+ position: relative;
+ float: left;
+ width: percentage((@columns / @grid-columns));
+ min-height: 1px;
+ padding-left: (@gutter / 2);
+ padding-right: (@gutter / 2);
+}
+.make-xs-column-offset(@columns) {
+ margin-left: percentage((@columns / @grid-columns));
+}
+.make-xs-column-push(@columns) {
+ left: percentage((@columns / @grid-columns));
+}
+.make-xs-column-pull(@columns) {
+ right: percentage((@columns / @grid-columns));
+}
+
+// Generate the small columns
+.make-sm-column(@columns; @gutter: @grid-gutter-width) {
+ position: relative;
+ min-height: 1px;
+ padding-left: (@gutter / 2);
+ padding-right: (@gutter / 2);
+
+ @media (min-width: @screen-sm-min) {
+ float: left;
+ width: percentage((@columns / @grid-columns));
+ }
+}
+.make-sm-column-offset(@columns) {
+ @media (min-width: @screen-sm-min) {
+ margin-left: percentage((@columns / @grid-columns));
+ }
+}
+.make-sm-column-push(@columns) {
+ @media (min-width: @screen-sm-min) {
+ left: percentage((@columns / @grid-columns));
+ }
+}
+.make-sm-column-pull(@columns) {
+ @media (min-width: @screen-sm-min) {
+ right: percentage((@columns / @grid-columns));
+ }
+}
+
+// Generate the medium columns
+.make-md-column(@columns; @gutter: @grid-gutter-width) {
+ position: relative;
+ min-height: 1px;
+ padding-left: (@gutter / 2);
+ padding-right: (@gutter / 2);
+
+ @media (min-width: @screen-md-min) {
+ float: left;
+ width: percentage((@columns / @grid-columns));
+ }
+}
+.make-md-column-offset(@columns) {
+ @media (min-width: @screen-md-min) {
+ margin-left: percentage((@columns / @grid-columns));
+ }
+}
+.make-md-column-push(@columns) {
+ @media (min-width: @screen-md-min) {
+ left: percentage((@columns / @grid-columns));
+ }
+}
+.make-md-column-pull(@columns) {
+ @media (min-width: @screen-md-min) {
+ right: percentage((@columns / @grid-columns));
+ }
+}
+
+// Generate the large columns
+.make-lg-column(@columns; @gutter: @grid-gutter-width) {
+ position: relative;
+ min-height: 1px;
+ padding-left: (@gutter / 2);
+ padding-right: (@gutter / 2);
+
+ @media (min-width: @screen-lg-min) {
+ float: left;
+ width: percentage((@columns / @grid-columns));
+ }
+}
+.make-lg-column-offset(@columns) {
+ @media (min-width: @screen-lg-min) {
+ margin-left: percentage((@columns / @grid-columns));
+ }
+}
+.make-lg-column-push(@columns) {
+ @media (min-width: @screen-lg-min) {
+ left: percentage((@columns / @grid-columns));
+ }
+}
+.make-lg-column-pull(@columns) {
+ @media (min-width: @screen-lg-min) {
+ right: percentage((@columns / @grid-columns));
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/grid-framework.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/grid-framework.less
new file mode 100644
index 0000000..8c23eed
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/grid-framework.less
@@ -0,0 +1,91 @@
+// Framework grid generation
+//
+// Used only by Bootstrap to generate the correct number of grid classes given
+// any value of `@grid-columns`.
+
+.make-grid-columns() {
+ // Common styles for all sizes of grid columns, widths 1-12
+ .col(@index) { // initial
+ @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
+ .col((@index + 1), @item);
+ }
+ .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo
+ @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
+ .col((@index + 1), ~"@{list}, @{item}");
+ }
+ .col(@index, @list) when (@index > @grid-columns) { // terminal
+ @{list} {
+ position: relative;
+ // Prevent columns from collapsing when empty
+ min-height: 1px;
+ // Inner gutter via padding
+ padding-left: ceil((@grid-gutter-width / 2));
+ padding-right: floor((@grid-gutter-width / 2));
+ }
+ }
+ .col(1); // kickstart it
+}
+
+.float-grid-columns(@class) {
+ .col(@index) { // initial
+ @item: ~".col-@{class}-@{index}";
+ .col((@index + 1), @item);
+ }
+ .col(@index, @list) when (@index =< @grid-columns) { // general
+ @item: ~".col-@{class}-@{index}";
+ .col((@index + 1), ~"@{list}, @{item}");
+ }
+ .col(@index, @list) when (@index > @grid-columns) { // terminal
+ @{list} {
+ float: left;
+ }
+ }
+ .col(1); // kickstart it
+}
+
+.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {
+ .col-@{class}-@{index} {
+ width: percentage((@index / @grid-columns));
+ }
+}
+.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {
+ .col-@{class}-push-@{index} {
+ left: percentage((@index / @grid-columns));
+ }
+}
+.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {
+ .col-@{class}-push-0 {
+ left: auto;
+ }
+}
+.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {
+ .col-@{class}-pull-@{index} {
+ right: percentage((@index / @grid-columns));
+ }
+}
+.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {
+ .col-@{class}-pull-0 {
+ right: auto;
+ }
+}
+.calc-grid-column(@index, @class, @type) when (@type = offset) {
+ .col-@{class}-offset-@{index} {
+ margin-left: percentage((@index / @grid-columns));
+ }
+}
+
+// Basic looping in LESS
+.loop-grid-columns(@index, @class, @type) when (@index >= 0) {
+ .calc-grid-column(@index, @class, @type);
+ // next iteration
+ .loop-grid-columns((@index - 1), @class, @type);
+}
+
+// Create grid for specific class
+.make-grid(@class) {
+ .float-grid-columns(@class);
+ .loop-grid-columns(@grid-columns, @class, width);
+ .loop-grid-columns(@grid-columns, @class, pull);
+ .loop-grid-columns(@grid-columns, @class, push);
+ .loop-grid-columns(@grid-columns, @class, offset);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/hide-text.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/hide-text.less
new file mode 100644
index 0000000..bc70118
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/hide-text.less
@@ -0,0 +1,21 @@
+// CSS image replacement
+//
+// Heads up! v3 launched with only `.hide-text()`, but per our pattern for
+// mixins being reused as classes with the same name, this doesn't hold up. As
+// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
+//
+// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
+
+// Deprecated as of v3.0.1 (will be removed in v4)
+.hide-text() {
+ font: ~"0/0" a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+// New mixin to use as of v3.0.1
+.text-hide() {
+ .hide-text();
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/image.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/image.less
new file mode 100644
index 0000000..f233cb3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/image.less
@@ -0,0 +1,33 @@
+// Image Mixins
+// - Responsive image
+// - Retina image
+
+
+// Responsive image
+//
+// Keep images from scaling beyond the width of their parents.
+.img-responsive(@display: block) {
+ display: @display;
+ max-width: 100%; // Part 1: Set a maximum relative to the parent
+ height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
+}
+
+
+// Retina image
+//
+// Short retina mixin for setting background-image and -size. Note that the
+// spelling of `min--moz-device-pixel-ratio` is intentional.
+.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {
+ background-image: url("@{file-1x}");
+
+ @media
+ only screen and (-webkit-min-device-pixel-ratio: 2),
+ only screen and ( min--moz-device-pixel-ratio: 2),
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
+ only screen and ( min-device-pixel-ratio: 2),
+ only screen and ( min-resolution: 192dpi),
+ only screen and ( min-resolution: 2dppx) {
+ background-image: url("@{file-2x}");
+ background-size: @width-1x @height-1x;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/labels.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/labels.less
new file mode 100644
index 0000000..9f7a67e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/labels.less
@@ -0,0 +1,12 @@
+// Labels
+
+.label-variant(@color) {
+ background-color: @color;
+
+ &[href] {
+ &:hover,
+ &:focus {
+ background-color: darken(@color, 10%);
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/list-group.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/list-group.less
new file mode 100644
index 0000000..03aa190
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/list-group.less
@@ -0,0 +1,30 @@
+// List Groups
+
+.list-group-item-variant(@state; @background; @color) {
+ .list-group-item-@{state} {
+ color: @color;
+ background-color: @background;
+
+ a&,
+ button& {
+ color: @color;
+
+ .list-group-item-heading {
+ color: inherit;
+ }
+
+ &:hover,
+ &:focus {
+ color: @color;
+ background-color: darken(@background, 5%);
+ }
+ &.active,
+ &.active:hover,
+ &.active:focus {
+ color: #fff;
+ background-color: @color;
+ border-color: @color;
+ }
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/nav-divider.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/nav-divider.less
new file mode 100644
index 0000000..feb1e9e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/nav-divider.less
@@ -0,0 +1,10 @@
+// Horizontal dividers
+//
+// Dividers (basically an hr) within dropdowns and nav lists
+
+.nav-divider(@color: #e5e5e5) {
+ height: 1px;
+ margin: ((@line-height-computed / 2) - 1) 0;
+ overflow: hidden;
+ background-color: @color;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/nav-vertical-align.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/nav-vertical-align.less
new file mode 100644
index 0000000..d458c78
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/nav-vertical-align.less
@@ -0,0 +1,9 @@
+// Navbar vertical align
+//
+// Vertically center elements in the navbar.
+// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
+
+.navbar-vertical-align(@element-height) {
+ margin-top: ((@navbar-height - @element-height) / 2);
+ margin-bottom: ((@navbar-height - @element-height) / 2);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/opacity.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/opacity.less
new file mode 100644
index 0000000..33ed25c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/opacity.less
@@ -0,0 +1,8 @@
+// Opacity
+
+.opacity(@opacity) {
+ opacity: @opacity;
+ // IE8 filter
+ @opacity-ie: (@opacity * 100);
+ filter: ~"alpha(opacity=@{opacity-ie})";
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/pagination.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/pagination.less
new file mode 100644
index 0000000..618804f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/pagination.less
@@ -0,0 +1,24 @@
+// Pagination
+
+.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
+ > li {
+ > a,
+ > span {
+ padding: @padding-vertical @padding-horizontal;
+ font-size: @font-size;
+ line-height: @line-height;
+ }
+ &:first-child {
+ > a,
+ > span {
+ .border-left-radius(@border-radius);
+ }
+ }
+ &:last-child {
+ > a,
+ > span {
+ .border-right-radius(@border-radius);
+ }
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/panels.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/panels.less
new file mode 100644
index 0000000..49ee10d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/panels.less
@@ -0,0 +1,24 @@
+// Panels
+
+.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {
+ border-color: @border;
+
+ & > .panel-heading {
+ color: @heading-text-color;
+ background-color: @heading-bg-color;
+ border-color: @heading-border;
+
+ + .panel-collapse > .panel-body {
+ border-top-color: @border;
+ }
+ .badge {
+ color: @heading-bg-color;
+ background-color: @heading-text-color;
+ }
+ }
+ & > .panel-footer {
+ + .panel-collapse > .panel-body {
+ border-bottom-color: @border;
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/progress-bar.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/progress-bar.less
new file mode 100644
index 0000000..f07996a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/progress-bar.less
@@ -0,0 +1,10 @@
+// Progress bars
+
+.progress-bar-variant(@color) {
+ background-color: @color;
+
+ // Deprecated parent class requirement as of v3.2.0
+ .progress-striped & {
+ #gradient > .striped();
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/reset-filter.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/reset-filter.less
new file mode 100644
index 0000000..68cdb5e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/reset-filter.less
@@ -0,0 +1,8 @@
+// Reset filters for IE
+//
+// When you need to remove a gradient background, do not forget to use this to reset
+// the IE filter for IE9 and below.
+
+.reset-filter() {
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/reset-text.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/reset-text.less
new file mode 100644
index 0000000..58dd4d1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/reset-text.less
@@ -0,0 +1,18 @@
+.reset-text() {
+ font-family: @font-family-base;
+ // We deliberately do NOT reset font-size.
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: @line-height-base;
+ text-align: left; // Fallback for where `start` is not supported
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/resize.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/resize.less
new file mode 100644
index 0000000..3acd3af
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/resize.less
@@ -0,0 +1,6 @@
+// Resize anything
+
+.resizable(@direction) {
+ resize: @direction; // Options: horizontal, vertical, both
+ overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/responsive-visibility.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/responsive-visibility.less
new file mode 100644
index 0000000..ecf1e97
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/responsive-visibility.less
@@ -0,0 +1,15 @@
+// Responsive utilities
+
+//
+// More easily include all the states for responsive-utilities.less.
+.responsive-visibility() {
+ display: block !important;
+ table& { display: table !important; }
+ tr& { display: table-row !important; }
+ th&,
+ td& { display: table-cell !important; }
+}
+
+.responsive-invisibility() {
+ display: none !important;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/size.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/size.less
new file mode 100644
index 0000000..a8be650
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/size.less
@@ -0,0 +1,10 @@
+// Sizing shortcuts
+
+.size(@width; @height) {
+ width: @width;
+ height: @height;
+}
+
+.square(@size) {
+ .size(@size; @size);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/tab-focus.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/tab-focus.less
new file mode 100644
index 0000000..1f1f05a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/tab-focus.less
@@ -0,0 +1,9 @@
+// WebKit-style focus
+
+.tab-focus() {
+ // Default
+ outline: thin dotted;
+ // WebKit
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/table-row.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/table-row.less
new file mode 100644
index 0000000..0f287f1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/table-row.less
@@ -0,0 +1,28 @@
+// Tables
+
+.table-row-variant(@state; @background) {
+ // Exact selectors below required to override `.table-striped` and prevent
+ // inheritance to nested tables.
+ .table > thead > tr,
+ .table > tbody > tr,
+ .table > tfoot > tr {
+ > td.@{state},
+ > th.@{state},
+ &.@{state} > td,
+ &.@{state} > th {
+ background-color: @background;
+ }
+ }
+
+ // Hover states for `.table-hover`
+ // Note: this is not available for cells or rows within `thead` or `tfoot`.
+ .table-hover > tbody > tr {
+ > td.@{state}:hover,
+ > th.@{state}:hover,
+ &.@{state}:hover > td,
+ &:hover > .@{state},
+ &.@{state}:hover > th {
+ background-color: darken(@background, 5%);
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/text-emphasis.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/text-emphasis.less
new file mode 100644
index 0000000..9e8a77a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/text-emphasis.less
@@ -0,0 +1,9 @@
+// Typography
+
+.text-emphasis-variant(@color) {
+ color: @color;
+ a&:hover,
+ a&:focus {
+ color: darken(@color, 10%);
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/text-overflow.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/text-overflow.less
new file mode 100644
index 0000000..c11ad2f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/text-overflow.less
@@ -0,0 +1,8 @@
+// Text overflow
+// Requires inline-block or block for proper styling
+
+.text-overflow() {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/vendor-prefixes.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/vendor-prefixes.less
new file mode 100644
index 0000000..afd3331
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/mixins/vendor-prefixes.less
@@ -0,0 +1,227 @@
+// Vendor Prefixes
+//
+// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
+// Autoprefixer in our Gruntfile. They will be removed in v4.
+
+// - Animations
+// - Backface visibility
+// - Box shadow
+// - Box sizing
+// - Content columns
+// - Hyphens
+// - Placeholder text
+// - Transformations
+// - Transitions
+// - User Select
+
+
+// Animations
+.animation(@animation) {
+ -webkit-animation: @animation;
+ -o-animation: @animation;
+ animation: @animation;
+}
+.animation-name(@name) {
+ -webkit-animation-name: @name;
+ animation-name: @name;
+}
+.animation-duration(@duration) {
+ -webkit-animation-duration: @duration;
+ animation-duration: @duration;
+}
+.animation-timing-function(@timing-function) {
+ -webkit-animation-timing-function: @timing-function;
+ animation-timing-function: @timing-function;
+}
+.animation-delay(@delay) {
+ -webkit-animation-delay: @delay;
+ animation-delay: @delay;
+}
+.animation-iteration-count(@iteration-count) {
+ -webkit-animation-iteration-count: @iteration-count;
+ animation-iteration-count: @iteration-count;
+}
+.animation-direction(@direction) {
+ -webkit-animation-direction: @direction;
+ animation-direction: @direction;
+}
+.animation-fill-mode(@fill-mode) {
+ -webkit-animation-fill-mode: @fill-mode;
+ animation-fill-mode: @fill-mode;
+}
+
+// Backface visibility
+// Prevent browsers from flickering when using CSS 3D transforms.
+// Default value is `visible`, but can be changed to `hidden`
+
+.backface-visibility(@visibility){
+ -webkit-backface-visibility: @visibility;
+ -moz-backface-visibility: @visibility;
+ backface-visibility: @visibility;
+}
+
+// Drop shadows
+//
+// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
+// supported browsers that have box shadow capabilities now support it.
+
+.box-shadow(@shadow) {
+ -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1
+ box-shadow: @shadow;
+}
+
+// Box sizing
+.box-sizing(@boxmodel) {
+ -webkit-box-sizing: @boxmodel;
+ -moz-box-sizing: @boxmodel;
+ box-sizing: @boxmodel;
+}
+
+// CSS3 Content Columns
+.content-columns(@column-count; @column-gap: @grid-gutter-width) {
+ -webkit-column-count: @column-count;
+ -moz-column-count: @column-count;
+ column-count: @column-count;
+ -webkit-column-gap: @column-gap;
+ -moz-column-gap: @column-gap;
+ column-gap: @column-gap;
+}
+
+// Optional hyphenation
+.hyphens(@mode: auto) {
+ word-wrap: break-word;
+ -webkit-hyphens: @mode;
+ -moz-hyphens: @mode;
+ -ms-hyphens: @mode; // IE10+
+ -o-hyphens: @mode;
+ hyphens: @mode;
+}
+
+// Placeholder text
+.placeholder(@color: @input-color-placeholder) {
+ // Firefox
+ &::-moz-placeholder {
+ color: @color;
+ opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
+ }
+ &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+
+ &::-webkit-input-placeholder { color: @color; } // Safari and Chrome
+}
+
+// Transformations
+.scale(@ratio) {
+ -webkit-transform: scale(@ratio);
+ -ms-transform: scale(@ratio); // IE9 only
+ -o-transform: scale(@ratio);
+ transform: scale(@ratio);
+}
+.scale(@ratioX; @ratioY) {
+ -webkit-transform: scale(@ratioX, @ratioY);
+ -ms-transform: scale(@ratioX, @ratioY); // IE9 only
+ -o-transform: scale(@ratioX, @ratioY);
+ transform: scale(@ratioX, @ratioY);
+}
+.scaleX(@ratio) {
+ -webkit-transform: scaleX(@ratio);
+ -ms-transform: scaleX(@ratio); // IE9 only
+ -o-transform: scaleX(@ratio);
+ transform: scaleX(@ratio);
+}
+.scaleY(@ratio) {
+ -webkit-transform: scaleY(@ratio);
+ -ms-transform: scaleY(@ratio); // IE9 only
+ -o-transform: scaleY(@ratio);
+ transform: scaleY(@ratio);
+}
+.skew(@x; @y) {
+ -webkit-transform: skewX(@x) skewY(@y);
+ -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
+ -o-transform: skewX(@x) skewY(@y);
+ transform: skewX(@x) skewY(@y);
+}
+.translate(@x; @y) {
+ -webkit-transform: translate(@x, @y);
+ -ms-transform: translate(@x, @y); // IE9 only
+ -o-transform: translate(@x, @y);
+ transform: translate(@x, @y);
+}
+.translate3d(@x; @y; @z) {
+ -webkit-transform: translate3d(@x, @y, @z);
+ transform: translate3d(@x, @y, @z);
+}
+.rotate(@degrees) {
+ -webkit-transform: rotate(@degrees);
+ -ms-transform: rotate(@degrees); // IE9 only
+ -o-transform: rotate(@degrees);
+ transform: rotate(@degrees);
+}
+.rotateX(@degrees) {
+ -webkit-transform: rotateX(@degrees);
+ -ms-transform: rotateX(@degrees); // IE9 only
+ -o-transform: rotateX(@degrees);
+ transform: rotateX(@degrees);
+}
+.rotateY(@degrees) {
+ -webkit-transform: rotateY(@degrees);
+ -ms-transform: rotateY(@degrees); // IE9 only
+ -o-transform: rotateY(@degrees);
+ transform: rotateY(@degrees);
+}
+.perspective(@perspective) {
+ -webkit-perspective: @perspective;
+ -moz-perspective: @perspective;
+ perspective: @perspective;
+}
+.perspective-origin(@perspective) {
+ -webkit-perspective-origin: @perspective;
+ -moz-perspective-origin: @perspective;
+ perspective-origin: @perspective;
+}
+.transform-origin(@origin) {
+ -webkit-transform-origin: @origin;
+ -moz-transform-origin: @origin;
+ -ms-transform-origin: @origin; // IE9 only
+ transform-origin: @origin;
+}
+
+
+// Transitions
+
+.transition(@transition) {
+ -webkit-transition: @transition;
+ -o-transition: @transition;
+ transition: @transition;
+}
+.transition-property(@transition-property) {
+ -webkit-transition-property: @transition-property;
+ transition-property: @transition-property;
+}
+.transition-delay(@transition-delay) {
+ -webkit-transition-delay: @transition-delay;
+ transition-delay: @transition-delay;
+}
+.transition-duration(@transition-duration) {
+ -webkit-transition-duration: @transition-duration;
+ transition-duration: @transition-duration;
+}
+.transition-timing-function(@timing-function) {
+ -webkit-transition-timing-function: @timing-function;
+ transition-timing-function: @timing-function;
+}
+.transition-transform(@transition) {
+ -webkit-transition: -webkit-transform @transition;
+ -moz-transition: -moz-transform @transition;
+ -o-transition: -o-transform @transition;
+ transition: transform @transition;
+}
+
+
+// User select
+// For selecting text on the page
+
+.user-select(@select) {
+ -webkit-user-select: @select;
+ -moz-user-select: @select;
+ -ms-user-select: @select; // IE10+
+ user-select: @select;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/modals.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/modals.less
new file mode 100644
index 0000000..1de6220
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/modals.less
@@ -0,0 +1,150 @@
+//
+// Modals
+// --------------------------------------------------
+
+// .modal-open - body class for killing the scroll
+// .modal - container to scroll within
+// .modal-dialog - positioning shell for the actual modal
+// .modal-content - actual modal w/ bg and corners and shit
+
+// Kill the scroll on the body
+.modal-open {
+ overflow: hidden;
+}
+
+// Container that the modal scrolls within
+.modal {
+ display: none;
+ overflow: hidden;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: @zindex-modal;
+ -webkit-overflow-scrolling: touch;
+
+ // Prevent Chrome on Windows from adding a focus outline. For details, see
+ // https://github.com/twbs/bootstrap/pull/10951.
+ outline: 0;
+
+ // When fading in the modal, animate it to slide down
+ &.fade .modal-dialog {
+ .translate(0, -25%);
+ .transition-transform(~"0.3s ease-out");
+ }
+ &.in .modal-dialog { .translate(0, 0) }
+}
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+// Shell div to position the modal with bottom padding
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px;
+}
+
+// Actual modal
+.modal-content {
+ position: relative;
+ background-color: @modal-content-bg;
+ border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
+ border: 1px solid @modal-content-border-color;
+ border-radius: @border-radius-large;
+ .box-shadow(0 3px 9px rgba(0,0,0,.5));
+ background-clip: padding-box;
+ // Remove focus outline from opened modal
+ outline: 0;
+}
+
+// Modal background
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: @zindex-modal-background;
+ background-color: @modal-backdrop-bg;
+ // Fade for backdrop
+ &.fade { .opacity(0); }
+ &.in { .opacity(@modal-backdrop-opacity); }
+}
+
+// Modal header
+// Top section of the modal w/ title and dismiss
+.modal-header {
+ padding: @modal-title-padding;
+ border-bottom: 1px solid @modal-header-border-color;
+ min-height: (@modal-title-padding + @modal-title-line-height);
+}
+// Close icon
+.modal-header .close {
+ margin-top: -2px;
+}
+
+// Title text within header
+.modal-title {
+ margin: 0;
+ line-height: @modal-title-line-height;
+}
+
+// Modal body
+// Where all modal content resides (sibling of .modal-header and .modal-footer)
+.modal-body {
+ position: relative;
+ padding: @modal-inner-padding;
+}
+
+// Footer (for actions)
+.modal-footer {
+ padding: @modal-inner-padding;
+ text-align: right; // right align buttons
+ border-top: 1px solid @modal-footer-border-color;
+ &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons
+
+ // Properly space out buttons
+ .btn + .btn {
+ margin-left: 5px;
+ margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
+ }
+ // but override that for button groups
+ .btn-group .btn + .btn {
+ margin-left: -1px;
+ }
+ // and override it for block buttons as well
+ .btn-block + .btn-block {
+ margin-left: 0;
+ }
+}
+
+// Measure scrollbar width for padding body during modal show/hide
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+
+// Scale up the modal
+@media (min-width: @screen-sm-min) {
+ // Automatically set modal's width for larger viewports
+ .modal-dialog {
+ width: @modal-md;
+ margin: 30px auto;
+ }
+ .modal-content {
+ .box-shadow(0 5px 15px rgba(0,0,0,.5));
+ }
+
+ // Modal sizes
+ .modal-sm { width: @modal-sm; }
+}
+
+@media (min-width: @screen-md-min) {
+ .modal-lg { width: @modal-lg; }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/navbar.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/navbar.less
new file mode 100644
index 0000000..6d751bb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/navbar.less
@@ -0,0 +1,660 @@
+//
+// Navbars
+// --------------------------------------------------
+
+
+// Wrapper and base class
+//
+// Provide a static navbar from which we expand to create full-width, fixed, and
+// other navbar variations.
+
+.navbar {
+ position: relative;
+ min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
+ margin-bottom: @navbar-margin-bottom;
+ border: 1px solid transparent;
+
+ // Prevent floats from breaking the navbar
+ &:extend(.clearfix all);
+
+ @media (min-width: @grid-float-breakpoint) {
+ border-radius: @navbar-border-radius;
+ }
+}
+
+
+// Navbar heading
+//
+// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
+// styling of responsive aspects.
+
+.navbar-header {
+ &:extend(.clearfix all);
+
+ @media (min-width: @grid-float-breakpoint) {
+ float: left;
+ }
+}
+
+
+// Navbar collapse (body)
+//
+// Group your navbar content into this for easy collapsing and expanding across
+// various device sizes. By default, this content is collapsed when <768px, but
+// will expand past that for a horizontal display.
+//
+// To start (on mobile devices) the navbar links, forms, and buttons are stacked
+// vertically and include a `max-height` to overflow in case you have too much
+// content for the user's viewport.
+
+.navbar-collapse {
+ overflow-x: visible;
+ padding-right: @navbar-padding-horizontal;
+ padding-left: @navbar-padding-horizontal;
+ border-top: 1px solid transparent;
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
+ &:extend(.clearfix all);
+ -webkit-overflow-scrolling: touch;
+
+ &.in {
+ overflow-y: auto;
+ }
+
+ @media (min-width: @grid-float-breakpoint) {
+ width: auto;
+ border-top: 0;
+ box-shadow: none;
+
+ &.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0; // Override default setting
+ overflow: visible !important;
+ }
+
+ &.in {
+ overflow-y: visible;
+ }
+
+ // Undo the collapse side padding for navbars with containers to ensure
+ // alignment of right-aligned contents.
+ .navbar-fixed-top &,
+ .navbar-static-top &,
+ .navbar-fixed-bottom & {
+ padding-left: 0;
+ padding-right: 0;
+ }
+ }
+}
+
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ .navbar-collapse {
+ max-height: @navbar-collapse-max-height;
+
+ @media (max-device-width: @screen-xs-min) and (orientation: landscape) {
+ max-height: 200px;
+ }
+ }
+}
+
+
+// Both navbar header and collapse
+//
+// When a container is present, change the behavior of the header and collapse.
+
+.container,
+.container-fluid {
+ > .navbar-header,
+ > .navbar-collapse {
+ margin-right: -@navbar-padding-horizontal;
+ margin-left: -@navbar-padding-horizontal;
+
+ @media (min-width: @grid-float-breakpoint) {
+ margin-right: 0;
+ margin-left: 0;
+ }
+ }
+}
+
+
+//
+// Navbar alignment options
+//
+// Display the navbar across the entirety of the page or fixed it to the top or
+// bottom of the page.
+
+// Static top (unfixed, but 100% wide) navbar
+.navbar-static-top {
+ z-index: @zindex-navbar;
+ border-width: 0 0 1px;
+
+ @media (min-width: @grid-float-breakpoint) {
+ border-radius: 0;
+ }
+}
+
+// Fix the top/bottom navbars when screen real estate supports it
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: @zindex-navbar-fixed;
+
+ // Undo the rounded corners
+ @media (min-width: @grid-float-breakpoint) {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0; // override .navbar defaults
+ border-width: 1px 0 0;
+}
+
+
+// Brand/project name
+
+.navbar-brand {
+ float: left;
+ padding: @navbar-padding-vertical @navbar-padding-horizontal;
+ font-size: @font-size-large;
+ line-height: @line-height-computed;
+ height: @navbar-height;
+
+ &:hover,
+ &:focus {
+ text-decoration: none;
+ }
+
+ > img {
+ display: block;
+ }
+
+ @media (min-width: @grid-float-breakpoint) {
+ .navbar > .container &,
+ .navbar > .container-fluid & {
+ margin-left: -@navbar-padding-horizontal;
+ }
+ }
+}
+
+
+// Navbar toggle
+//
+// Custom button for toggling the `.navbar-collapse`, powered by the collapse
+// JavaScript plugin.
+
+.navbar-toggle {
+ position: relative;
+ float: right;
+ margin-right: @navbar-padding-horizontal;
+ padding: 9px 10px;
+ .navbar-vertical-align(34px);
+ background-color: transparent;
+ background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
+ border: 1px solid transparent;
+ border-radius: @border-radius-base;
+
+ // We remove the `outline` here, but later compensate by attaching `:hover`
+ // styles to `:focus`.
+ &:focus {
+ outline: 0;
+ }
+
+ // Bars
+ .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+ }
+ .icon-bar + .icon-bar {
+ margin-top: 4px;
+ }
+
+ @media (min-width: @grid-float-breakpoint) {
+ display: none;
+ }
+}
+
+
+// Navbar nav links
+//
+// Builds on top of the `.nav` components with its own modifier class to make
+// the nav the full height of the horizontal nav (above 768px).
+
+.navbar-nav {
+ margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;
+
+ > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: @line-height-computed;
+ }
+
+ @media (max-width: @grid-float-breakpoint-max) {
+ // Dropdowns get custom display when collapsed
+ .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ > li > a,
+ .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ > li > a {
+ line-height: @line-height-computed;
+ &:hover,
+ &:focus {
+ background-image: none;
+ }
+ }
+ }
+ }
+
+ // Uncollapse the nav
+ @media (min-width: @grid-float-breakpoint) {
+ float: left;
+ margin: 0;
+
+ > li {
+ float: left;
+ > a {
+ padding-top: @navbar-padding-vertical;
+ padding-bottom: @navbar-padding-vertical;
+ }
+ }
+ }
+}
+
+
+// Navbar form
+//
+// Extension of the `.form-inline` with some extra flavor for optimum display in
+// our navbars.
+
+.navbar-form {
+ margin-left: -@navbar-padding-horizontal;
+ margin-right: -@navbar-padding-horizontal;
+ padding: 10px @navbar-padding-horizontal;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
+ .box-shadow(@shadow);
+
+ // Mixin behavior for optimum display
+ .form-inline();
+
+ .form-group {
+ @media (max-width: @grid-float-breakpoint-max) {
+ margin-bottom: 5px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+ }
+
+ // Vertically center in expanded, horizontal navbar
+ .navbar-vertical-align(@input-height-base);
+
+ // Undo 100% width for pull classes
+ @media (min-width: @grid-float-breakpoint) {
+ width: auto;
+ border: 0;
+ margin-left: 0;
+ margin-right: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ .box-shadow(none);
+ }
+}
+
+
+// Dropdown menus
+
+// Menu position and menu carets
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ .border-top-radius(0);
+}
+// Menu position and menu caret support for dropups via extra dropup class
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ margin-bottom: 0;
+ .border-top-radius(@navbar-border-radius);
+ .border-bottom-radius(0);
+}
+
+
+// Buttons in navbars
+//
+// Vertically center a button within a navbar (when *not* in a form).
+
+.navbar-btn {
+ .navbar-vertical-align(@input-height-base);
+
+ &.btn-sm {
+ .navbar-vertical-align(@input-height-small);
+ }
+ &.btn-xs {
+ .navbar-vertical-align(22);
+ }
+}
+
+
+// Text in navbars
+//
+// Add a class to make any element properly align itself vertically within the navbars.
+
+.navbar-text {
+ .navbar-vertical-align(@line-height-computed);
+
+ @media (min-width: @grid-float-breakpoint) {
+ float: left;
+ margin-left: @navbar-padding-horizontal;
+ margin-right: @navbar-padding-horizontal;
+ }
+}
+
+
+// Component alignment
+//
+// Repurpose the pull utilities as their own navbar utilities to avoid specificity
+// issues with parents and chaining. Only do this when the navbar is uncollapsed
+// though so that navbar contents properly stack and align in mobile.
+//
+// Declared after the navbar components to ensure more specificity on the margins.
+
+@media (min-width: @grid-float-breakpoint) {
+ .navbar-left { .pull-left(); }
+ .navbar-right {
+ .pull-right();
+ margin-right: -@navbar-padding-horizontal;
+
+ ~ .navbar-right {
+ margin-right: 0;
+ }
+ }
+}
+
+
+// Alternate navbars
+// --------------------------------------------------
+
+// Default navbar
+.navbar-default {
+ background-color: @navbar-default-bg;
+ border-color: @navbar-default-border;
+
+ .navbar-brand {
+ color: @navbar-default-brand-color;
+ &:hover,
+ &:focus {
+ color: @navbar-default-brand-hover-color;
+ background-color: @navbar-default-brand-hover-bg;
+ }
+ }
+
+ .navbar-text {
+ color: @navbar-default-color;
+ }
+
+ .navbar-nav {
+ > li > a {
+ color: @navbar-default-link-color;
+
+ &:hover,
+ &:focus {
+ color: @navbar-default-link-hover-color;
+ background-color: @navbar-default-link-hover-bg;
+ }
+ }
+ > .active > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @navbar-default-link-active-color;
+ background-color: @navbar-default-link-active-bg;
+ }
+ }
+ > .disabled > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @navbar-default-link-disabled-color;
+ background-color: @navbar-default-link-disabled-bg;
+ }
+ }
+ }
+
+ .navbar-toggle {
+ border-color: @navbar-default-toggle-border-color;
+ &:hover,
+ &:focus {
+ background-color: @navbar-default-toggle-hover-bg;
+ }
+ .icon-bar {
+ background-color: @navbar-default-toggle-icon-bar-bg;
+ }
+ }
+
+ .navbar-collapse,
+ .navbar-form {
+ border-color: @navbar-default-border;
+ }
+
+ // Dropdown menu items
+ .navbar-nav {
+ // Remove background color from open dropdown
+ > .open > a {
+ &,
+ &:hover,
+ &:focus {
+ background-color: @navbar-default-link-active-bg;
+ color: @navbar-default-link-active-color;
+ }
+ }
+
+ @media (max-width: @grid-float-breakpoint-max) {
+ // Dropdowns get custom display when collapsed
+ .open .dropdown-menu {
+ > li > a {
+ color: @navbar-default-link-color;
+ &:hover,
+ &:focus {
+ color: @navbar-default-link-hover-color;
+ background-color: @navbar-default-link-hover-bg;
+ }
+ }
+ > .active > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @navbar-default-link-active-color;
+ background-color: @navbar-default-link-active-bg;
+ }
+ }
+ > .disabled > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @navbar-default-link-disabled-color;
+ background-color: @navbar-default-link-disabled-bg;
+ }
+ }
+ }
+ }
+ }
+
+
+ // Links in navbars
+ //
+ // Add a class to ensure links outside the navbar nav are colored correctly.
+
+ .navbar-link {
+ color: @navbar-default-link-color;
+ &:hover {
+ color: @navbar-default-link-hover-color;
+ }
+ }
+
+ .btn-link {
+ color: @navbar-default-link-color;
+ &:hover,
+ &:focus {
+ color: @navbar-default-link-hover-color;
+ }
+ &[disabled],
+ fieldset[disabled] & {
+ &:hover,
+ &:focus {
+ color: @navbar-default-link-disabled-color;
+ }
+ }
+ }
+}
+
+// Inverse navbar
+
+.navbar-inverse {
+ background-color: @navbar-inverse-bg;
+ border-color: @navbar-inverse-border;
+
+ .navbar-brand {
+ color: @navbar-inverse-brand-color;
+ &:hover,
+ &:focus {
+ color: @navbar-inverse-brand-hover-color;
+ background-color: @navbar-inverse-brand-hover-bg;
+ }
+ }
+
+ .navbar-text {
+ color: @navbar-inverse-color;
+ }
+
+ .navbar-nav {
+ > li > a {
+ color: @navbar-inverse-link-color;
+
+ &:hover,
+ &:focus {
+ color: @navbar-inverse-link-hover-color;
+ background-color: @navbar-inverse-link-hover-bg;
+ }
+ }
+ > .active > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @navbar-inverse-link-active-color;
+ background-color: @navbar-inverse-link-active-bg;
+ }
+ }
+ > .disabled > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @navbar-inverse-link-disabled-color;
+ background-color: @navbar-inverse-link-disabled-bg;
+ }
+ }
+ }
+
+ // Darken the responsive nav toggle
+ .navbar-toggle {
+ border-color: @navbar-inverse-toggle-border-color;
+ &:hover,
+ &:focus {
+ background-color: @navbar-inverse-toggle-hover-bg;
+ }
+ .icon-bar {
+ background-color: @navbar-inverse-toggle-icon-bar-bg;
+ }
+ }
+
+ .navbar-collapse,
+ .navbar-form {
+ border-color: darken(@navbar-inverse-bg, 7%);
+ }
+
+ // Dropdowns
+ .navbar-nav {
+ > .open > a {
+ &,
+ &:hover,
+ &:focus {
+ background-color: @navbar-inverse-link-active-bg;
+ color: @navbar-inverse-link-active-color;
+ }
+ }
+
+ @media (max-width: @grid-float-breakpoint-max) {
+ // Dropdowns get custom display
+ .open .dropdown-menu {
+ > .dropdown-header {
+ border-color: @navbar-inverse-border;
+ }
+ .divider {
+ background-color: @navbar-inverse-border;
+ }
+ > li > a {
+ color: @navbar-inverse-link-color;
+ &:hover,
+ &:focus {
+ color: @navbar-inverse-link-hover-color;
+ background-color: @navbar-inverse-link-hover-bg;
+ }
+ }
+ > .active > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @navbar-inverse-link-active-color;
+ background-color: @navbar-inverse-link-active-bg;
+ }
+ }
+ > .disabled > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @navbar-inverse-link-disabled-color;
+ background-color: @navbar-inverse-link-disabled-bg;
+ }
+ }
+ }
+ }
+ }
+
+ .navbar-link {
+ color: @navbar-inverse-link-color;
+ &:hover {
+ color: @navbar-inverse-link-hover-color;
+ }
+ }
+
+ .btn-link {
+ color: @navbar-inverse-link-color;
+ &:hover,
+ &:focus {
+ color: @navbar-inverse-link-hover-color;
+ }
+ &[disabled],
+ fieldset[disabled] & {
+ &:hover,
+ &:focus {
+ color: @navbar-inverse-link-disabled-color;
+ }
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/navs.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/navs.less
new file mode 100644
index 0000000..a3d11b1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/navs.less
@@ -0,0 +1,242 @@
+//
+// Navs
+// --------------------------------------------------
+
+
+// Base class
+// --------------------------------------------------
+
+.nav {
+ margin-bottom: 0;
+ padding-left: 0; // Override default ul/ol
+ list-style: none;
+ &:extend(.clearfix all);
+
+ > li {
+ position: relative;
+ display: block;
+
+ > a {
+ position: relative;
+ display: block;
+ padding: @nav-link-padding;
+ &:hover,
+ &:focus {
+ text-decoration: none;
+ background-color: @nav-link-hover-bg;
+ }
+ }
+
+ // Disabled state sets text to gray and nukes hover/tab effects
+ &.disabled > a {
+ color: @nav-disabled-link-color;
+
+ &:hover,
+ &:focus {
+ color: @nav-disabled-link-hover-color;
+ text-decoration: none;
+ background-color: transparent;
+ cursor: @cursor-disabled;
+ }
+ }
+ }
+
+ // Open dropdowns
+ .open > a {
+ &,
+ &:hover,
+ &:focus {
+ background-color: @nav-link-hover-bg;
+ border-color: @link-color;
+ }
+ }
+
+ // Nav dividers (deprecated with v3.0.1)
+ //
+ // This should have been removed in v3 with the dropping of `.nav-list`, but
+ // we missed it. We don't currently support this anywhere, but in the interest
+ // of maintaining backward compatibility in case you use it, it's deprecated.
+ .nav-divider {
+ .nav-divider();
+ }
+
+ // Prevent IE8 from misplacing imgs
+ //
+ // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
+ > li > a > img {
+ max-width: none;
+ }
+}
+
+
+// Tabs
+// -------------------------
+
+// Give the tabs something to sit on
+.nav-tabs {
+ border-bottom: 1px solid @nav-tabs-border-color;
+ > li {
+ float: left;
+ // Make the list-items overlay the bottom border
+ margin-bottom: -1px;
+
+ // Actual tabs (as links)
+ > a {
+ margin-right: 2px;
+ line-height: @line-height-base;
+ border: 1px solid transparent;
+ border-radius: @border-radius-base @border-radius-base 0 0;
+ &:hover {
+ border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;
+ }
+ }
+
+ // Active state, and its :hover to override normal :hover
+ &.active > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @nav-tabs-active-link-hover-color;
+ background-color: @nav-tabs-active-link-hover-bg;
+ border: 1px solid @nav-tabs-active-link-hover-border-color;
+ border-bottom-color: transparent;
+ cursor: default;
+ }
+ }
+ }
+ // pulling this in mainly for less shorthand
+ &.nav-justified {
+ .nav-justified();
+ .nav-tabs-justified();
+ }
+}
+
+
+// Pills
+// -------------------------
+.nav-pills {
+ > li {
+ float: left;
+
+ // Links rendered as pills
+ > a {
+ border-radius: @nav-pills-border-radius;
+ }
+ + li {
+ margin-left: 2px;
+ }
+
+ // Active state
+ &.active > a {
+ &,
+ &:hover,
+ &:focus {
+ color: @nav-pills-active-link-hover-color;
+ background-color: @nav-pills-active-link-hover-bg;
+ }
+ }
+ }
+}
+
+
+// Stacked pills
+.nav-stacked {
+ > li {
+ float: none;
+ + li {
+ margin-top: 2px;
+ margin-left: 0; // no need for this gap between nav items
+ }
+ }
+}
+
+
+// Nav variations
+// --------------------------------------------------
+
+// Justified nav links
+// -------------------------
+
+.nav-justified {
+ width: 100%;
+
+ > li {
+ float: none;
+ > a {
+ text-align: center;
+ margin-bottom: 5px;
+ }
+ }
+
+ > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+ }
+
+ @media (min-width: @screen-sm-min) {
+ > li {
+ display: table-cell;
+ width: 1%;
+ > a {
+ margin-bottom: 0;
+ }
+ }
+ }
+}
+
+// Move borders to anchors instead of bottom of list
+//
+// Mixin for adding on top the shared `.nav-justified` styles for our tabs
+.nav-tabs-justified {
+ border-bottom: 0;
+
+ > li > a {
+ // Override margin from .nav-tabs
+ margin-right: 0;
+ border-radius: @border-radius-base;
+ }
+
+ > .active > a,
+ > .active > a:hover,
+ > .active > a:focus {
+ border: 1px solid @nav-tabs-justified-link-border-color;
+ }
+
+ @media (min-width: @screen-sm-min) {
+ > li > a {
+ border-bottom: 1px solid @nav-tabs-justified-link-border-color;
+ border-radius: @border-radius-base @border-radius-base 0 0;
+ }
+ > .active > a,
+ > .active > a:hover,
+ > .active > a:focus {
+ border-bottom-color: @nav-tabs-justified-active-link-border-color;
+ }
+ }
+}
+
+
+// Tabbable tabs
+// -------------------------
+
+// Hide tabbable panes to start, show them when `.active`
+.tab-content {
+ > .tab-pane {
+ display: none;
+ }
+ > .active {
+ display: block;
+ }
+}
+
+
+// Dropdowns
+// -------------------------
+
+// Specific dropdowns
+.nav-tabs .dropdown-menu {
+ // make dropdown border overlap tab border
+ margin-top: -1px;
+ // Remove the top rounded corners here since there is a hard edge above the menu
+ .border-top-radius(0);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/normalize.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/normalize.less
new file mode 100644
index 0000000..9dddf73
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/normalize.less
@@ -0,0 +1,424 @@
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+
+//
+// 1. Set default font family to sans-serif.
+// 2. Prevent iOS and IE text size adjust after device orientation change,
+// without disabling user zoom.
+//
+
+html {
+ font-family: sans-serif; // 1
+ -ms-text-size-adjust: 100%; // 2
+ -webkit-text-size-adjust: 100%; // 2
+}
+
+//
+// Remove default margin.
+//
+
+body {
+ margin: 0;
+}
+
+// HTML5 display definitions
+// ==========================================================================
+
+//
+// Correct `block` display not defined for any HTML5 element in IE 8/9.
+// Correct `block` display not defined for `details` or `summary` in IE 10/11
+// and Firefox.
+// Correct `block` display not defined for `main` in IE 11.
+//
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+//
+// 1. Correct `inline-block` display not defined in IE 8/9.
+// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+//
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; // 1
+ vertical-align: baseline; // 2
+}
+
+//
+// Prevent modern browsers from displaying `audio` without controls.
+// Remove excess height in iOS 5 devices.
+//
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+//
+// Address `[hidden]` styling not present in IE 8/9/10.
+// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
+//
+
+[hidden],
+template {
+ display: none;
+}
+
+// Links
+// ==========================================================================
+
+//
+// Remove the gray background color from active links in IE 10.
+//
+
+a {
+ background-color: transparent;
+}
+
+//
+// Improve readability of focused elements when they are also in an
+// active/hover state.
+//
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+// Text-level semantics
+// ==========================================================================
+
+//
+// Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+//
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+//
+// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+//
+
+b,
+strong {
+ font-weight: bold;
+}
+
+//
+// Address styling not present in Safari and Chrome.
+//
+
+dfn {
+ font-style: italic;
+}
+
+//
+// Address variable `h1` font-size and margin within `section` and `article`
+// contexts in Firefox 4+, Safari, and Chrome.
+//
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+//
+// Address styling not present in IE 8/9.
+//
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+//
+// Address inconsistent and variable font size in all browsers.
+//
+
+small {
+ font-size: 80%;
+}
+
+//
+// Prevent `sub` and `sup` affecting `line-height` in all browsers.
+//
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+// Embedded content
+// ==========================================================================
+
+//
+// Remove border when inside `a` element in IE 8/9/10.
+//
+
+img {
+ border: 0;
+}
+
+//
+// Correct overflow not hidden in IE 9/10/11.
+//
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+// Grouping content
+// ==========================================================================
+
+//
+// Address margin not present in IE 8/9 and Safari.
+//
+
+figure {
+ margin: 1em 40px;
+}
+
+//
+// Address differences between Firefox and other browsers.
+//
+
+hr {
+ box-sizing: content-box;
+ height: 0;
+}
+
+//
+// Contain overflow in all browsers.
+//
+
+pre {
+ overflow: auto;
+}
+
+//
+// Address odd `em`-unit font size rendering in all browsers.
+//
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+// Forms
+// ==========================================================================
+
+//
+// Known limitation: by default, Chrome and Safari on OS X allow very limited
+// styling of `select`, unless a `border` property is set.
+//
+
+//
+// 1. Correct color not being inherited.
+// Known issue: affects color of disabled elements.
+// 2. Correct font properties not being inherited.
+// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+//
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; // 1
+ font: inherit; // 2
+ margin: 0; // 3
+}
+
+//
+// Address `overflow` set to `hidden` in IE 8/9/10/11.
+//
+
+button {
+ overflow: visible;
+}
+
+//
+// Address inconsistent `text-transform` inheritance for `button` and `select`.
+// All other form control elements do not inherit `text-transform` values.
+// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+// Correct `select` style inheritance in Firefox.
+//
+
+button,
+select {
+ text-transform: none;
+}
+
+//
+// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+// and `video` controls.
+// 2. Correct inability to style clickable `input` types in iOS.
+// 3. Improve usability and consistency of cursor style between image-type
+// `input` and others.
+//
+
+button,
+html input[type="button"], // 1
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; // 2
+ cursor: pointer; // 3
+}
+
+//
+// Re-set default cursor for disabled elements.
+//
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+//
+// Remove inner padding and border in Firefox 4+.
+//
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+//
+// Address Firefox 4+ setting `line-height` on `input` using `!important` in
+// the UA stylesheet.
+//
+
+input {
+ line-height: normal;
+}
+
+//
+// It's recommended that you don't attempt to style these elements.
+// Firefox's implementation doesn't respect box-sizing, padding, or width.
+//
+// 1. Address box sizing set to `content-box` in IE 8/9/10.
+// 2. Remove excess padding in IE 8/9/10.
+//
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; // 1
+ padding: 0; // 2
+}
+
+//
+// Fix the cursor style for Chrome's increment/decrement buttons. For certain
+// `font-size` values of the `input`, it causes the cursor style of the
+// decrement button to change from `default` to `text`.
+//
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+//
+// 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
+//
+
+input[type="search"] {
+ -webkit-appearance: textfield; // 1
+ box-sizing: content-box; //2
+}
+
+//
+// Remove inner padding and search cancel button in Safari and Chrome on OS X.
+// Safari (but not Chrome) clips the cancel button when the search input has
+// padding (and `textfield` appearance).
+//
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+//
+// Define consistent border, margin, and padding.
+//
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+//
+// 1. Correct `color` not being inherited in IE 8/9/10/11.
+// 2. Remove padding so people aren't caught out if they zero out fieldsets.
+//
+
+legend {
+ border: 0; // 1
+ padding: 0; // 2
+}
+
+//
+// Remove default vertical scrollbar in IE 8/9/10/11.
+//
+
+textarea {
+ overflow: auto;
+}
+
+//
+// Don't inherit the `font-weight` (applied by a rule above).
+// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+//
+
+optgroup {
+ font-weight: bold;
+}
+
+// Tables
+// ==========================================================================
+
+//
+// Remove most spacing between table cells.
+//
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/pager.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/pager.less
new file mode 100644
index 0000000..41abaaa
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/pager.less
@@ -0,0 +1,54 @@
+//
+// Pager pagination
+// --------------------------------------------------
+
+
+.pager {
+ padding-left: 0;
+ margin: @line-height-computed 0;
+ list-style: none;
+ text-align: center;
+ &:extend(.clearfix all);
+ li {
+ display: inline;
+ > a,
+ > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: @pager-bg;
+ border: 1px solid @pager-border;
+ border-radius: @pager-border-radius;
+ }
+
+ > a:hover,
+ > a:focus {
+ text-decoration: none;
+ background-color: @pager-hover-bg;
+ }
+ }
+
+ .next {
+ > a,
+ > span {
+ float: right;
+ }
+ }
+
+ .previous {
+ > a,
+ > span {
+ float: left;
+ }
+ }
+
+ .disabled {
+ > a,
+ > a:hover,
+ > a:focus,
+ > span {
+ color: @pager-disabled-color;
+ background-color: @pager-bg;
+ cursor: @cursor-disabled;
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/pagination.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/pagination.less
new file mode 100644
index 0000000..31a23bf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/pagination.less
@@ -0,0 +1,89 @@
+//
+// Pagination (multiple pages)
+// --------------------------------------------------
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: @line-height-computed 0;
+ border-radius: @border-radius-base;
+
+ > li {
+ display: inline; // Remove list-style and block-level defaults
+ > a,
+ > span {
+ position: relative;
+ float: left; // Collapse white-space
+ padding: @padding-base-vertical @padding-base-horizontal;
+ line-height: @line-height-base;
+ text-decoration: none;
+ color: @pagination-color;
+ background-color: @pagination-bg;
+ border: 1px solid @pagination-border;
+ margin-left: -1px;
+ }
+ &:first-child {
+ > a,
+ > span {
+ margin-left: 0;
+ .border-left-radius(@border-radius-base);
+ }
+ }
+ &:last-child {
+ > a,
+ > span {
+ .border-right-radius(@border-radius-base);
+ }
+ }
+ }
+
+ > li > a,
+ > li > span {
+ &:hover,
+ &:focus {
+ z-index: 3;
+ color: @pagination-hover-color;
+ background-color: @pagination-hover-bg;
+ border-color: @pagination-hover-border;
+ }
+ }
+
+ > .active > a,
+ > .active > span {
+ &,
+ &:hover,
+ &:focus {
+ z-index: 2;
+ color: @pagination-active-color;
+ background-color: @pagination-active-bg;
+ border-color: @pagination-active-border;
+ cursor: default;
+ }
+ }
+
+ > .disabled {
+ > span,
+ > span:hover,
+ > span:focus,
+ > a,
+ > a:hover,
+ > a:focus {
+ color: @pagination-disabled-color;
+ background-color: @pagination-disabled-bg;
+ border-color: @pagination-disabled-border;
+ cursor: @cursor-disabled;
+ }
+ }
+}
+
+// Sizing
+// --------------------------------------------------
+
+// Large
+.pagination-lg {
+ .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
+}
+
+// Small
+.pagination-sm {
+ .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/panels.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/panels.less
new file mode 100644
index 0000000..425eb5e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/panels.less
@@ -0,0 +1,271 @@
+//
+// Panels
+// --------------------------------------------------
+
+
+// Base class
+.panel {
+ margin-bottom: @line-height-computed;
+ background-color: @panel-bg;
+ border: 1px solid transparent;
+ border-radius: @panel-border-radius;
+ .box-shadow(0 1px 1px rgba(0,0,0,.05));
+}
+
+// Panel contents
+.panel-body {
+ padding: @panel-body-padding;
+ &:extend(.clearfix all);
+}
+
+// Optional heading
+.panel-heading {
+ padding: @panel-heading-padding;
+ border-bottom: 1px solid transparent;
+ .border-top-radius((@panel-border-radius - 1));
+
+ > .dropdown .dropdown-toggle {
+ color: inherit;
+ }
+}
+
+// Within heading, strip any `h*` tag of its default margins for spacing.
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: ceil((@font-size-base * 1.125));
+ color: inherit;
+
+ > a,
+ > small,
+ > .small,
+ > small > a,
+ > .small > a {
+ color: inherit;
+ }
+}
+
+// Optional footer (stays gray in every modifier class)
+.panel-footer {
+ padding: @panel-footer-padding;
+ background-color: @panel-footer-bg;
+ border-top: 1px solid @panel-inner-border;
+ .border-bottom-radius((@panel-border-radius - 1));
+}
+
+
+// List groups in panels
+//
+// By default, space out list group content from panel headings to account for
+// any kind of custom content between the two.
+
+.panel {
+ > .list-group,
+ > .panel-collapse > .list-group {
+ margin-bottom: 0;
+
+ .list-group-item {
+ border-width: 1px 0;
+ border-radius: 0;
+ }
+
+ // Add border top radius for first one
+ &:first-child {
+ .list-group-item:first-child {
+ border-top: 0;
+ .border-top-radius((@panel-border-radius - 1));
+ }
+ }
+
+ // Add border bottom radius for last one
+ &:last-child {
+ .list-group-item:last-child {
+ border-bottom: 0;
+ .border-bottom-radius((@panel-border-radius - 1));
+ }
+ }
+ }
+ > .panel-heading + .panel-collapse > .list-group {
+ .list-group-item:first-child {
+ .border-top-radius(0);
+ }
+ }
+}
+// Collapse space between when there's no additional content.
+.panel-heading + .list-group {
+ .list-group-item:first-child {
+ border-top-width: 0;
+ }
+}
+.list-group + .panel-footer {
+ border-top-width: 0;
+}
+
+// Tables in panels
+//
+// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and
+// watch it go full width.
+
+.panel {
+ > .table,
+ > .table-responsive > .table,
+ > .panel-collapse > .table {
+ margin-bottom: 0;
+
+ caption {
+ padding-left: @panel-body-padding;
+ padding-right: @panel-body-padding;
+ }
+ }
+ // Add border top radius for first one
+ > .table:first-child,
+ > .table-responsive:first-child > .table:first-child {
+ .border-top-radius((@panel-border-radius - 1));
+
+ > thead:first-child,
+ > tbody:first-child {
+ > tr:first-child {
+ border-top-left-radius: (@panel-border-radius - 1);
+ border-top-right-radius: (@panel-border-radius - 1);
+
+ td:first-child,
+ th:first-child {
+ border-top-left-radius: (@panel-border-radius - 1);
+ }
+ td:last-child,
+ th:last-child {
+ border-top-right-radius: (@panel-border-radius - 1);
+ }
+ }
+ }
+ }
+ // Add border bottom radius for last one
+ > .table:last-child,
+ > .table-responsive:last-child > .table:last-child {
+ .border-bottom-radius((@panel-border-radius - 1));
+
+ > tbody:last-child,
+ > tfoot:last-child {
+ > tr:last-child {
+ border-bottom-left-radius: (@panel-border-radius - 1);
+ border-bottom-right-radius: (@panel-border-radius - 1);
+
+ td:first-child,
+ th:first-child {
+ border-bottom-left-radius: (@panel-border-radius - 1);
+ }
+ td:last-child,
+ th:last-child {
+ border-bottom-right-radius: (@panel-border-radius - 1);
+ }
+ }
+ }
+ }
+ > .panel-body + .table,
+ > .panel-body + .table-responsive,
+ > .table + .panel-body,
+ > .table-responsive + .panel-body {
+ border-top: 1px solid @table-border-color;
+ }
+ > .table > tbody:first-child > tr:first-child th,
+ > .table > tbody:first-child > tr:first-child td {
+ border-top: 0;
+ }
+ > .table-bordered,
+ > .table-responsive > .table-bordered {
+ border: 0;
+ > thead,
+ > tbody,
+ > tfoot {
+ > tr {
+ > th:first-child,
+ > td:first-child {
+ border-left: 0;
+ }
+ > th:last-child,
+ > td:last-child {
+ border-right: 0;
+ }
+ }
+ }
+ > thead,
+ > tbody {
+ > tr:first-child {
+ > td,
+ > th {
+ border-bottom: 0;
+ }
+ }
+ }
+ > tbody,
+ > tfoot {
+ > tr:last-child {
+ > td,
+ > th {
+ border-bottom: 0;
+ }
+ }
+ }
+ }
+ > .table-responsive {
+ border: 0;
+ margin-bottom: 0;
+ }
+}
+
+
+// Collapsable panels (aka, accordion)
+//
+// Wrap a series of panels in `.panel-group` to turn them into an accordion with
+// the help of our collapse JavaScript plugin.
+
+.panel-group {
+ margin-bottom: @line-height-computed;
+
+ // Tighten up margin so it's only between panels
+ .panel {
+ margin-bottom: 0;
+ border-radius: @panel-border-radius;
+
+ + .panel {
+ margin-top: 5px;
+ }
+ }
+
+ .panel-heading {
+ border-bottom: 0;
+
+ + .panel-collapse > .panel-body,
+ + .panel-collapse > .list-group {
+ border-top: 1px solid @panel-inner-border;
+ }
+ }
+
+ .panel-footer {
+ border-top: 0;
+ + .panel-collapse .panel-body {
+ border-bottom: 1px solid @panel-inner-border;
+ }
+ }
+}
+
+
+// Contextual variations
+.panel-default {
+ .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);
+}
+.panel-primary {
+ .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);
+}
+.panel-success {
+ .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);
+}
+.panel-info {
+ .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);
+}
+.panel-warning {
+ .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);
+}
+.panel-danger {
+ .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/popovers.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/popovers.less
new file mode 100644
index 0000000..3a62a64
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/popovers.less
@@ -0,0 +1,131 @@
+//
+// Popovers
+// --------------------------------------------------
+
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: @zindex-popover;
+ display: none;
+ max-width: @popover-max-width;
+ padding: 1px;
+ // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.
+ // So reset our font and text properties to avoid inheriting weird values.
+ .reset-text();
+ font-size: @font-size-base;
+
+ background-color: @popover-bg;
+ background-clip: padding-box;
+ border: 1px solid @popover-fallback-border-color;
+ border: 1px solid @popover-border-color;
+ border-radius: @border-radius-large;
+ .box-shadow(0 5px 10px rgba(0,0,0,.2));
+
+ // Offset the popover to account for the popover arrow
+ &.top { margin-top: -@popover-arrow-width; }
+ &.right { margin-left: @popover-arrow-width; }
+ &.bottom { margin-top: @popover-arrow-width; }
+ &.left { margin-left: -@popover-arrow-width; }
+}
+
+.popover-title {
+ margin: 0; // reset heading margin
+ padding: 8px 14px;
+ font-size: @font-size-base;
+ background-color: @popover-title-bg;
+ border-bottom: 1px solid darken(@popover-title-bg, 5%);
+ border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;
+}
+
+.popover-content {
+ padding: 9px 14px;
+}
+
+// Arrows
+//
+// .arrow is outer, .arrow:after is inner
+
+.popover > .arrow {
+ &,
+ &:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ }
+}
+.popover > .arrow {
+ border-width: @popover-arrow-outer-width;
+}
+.popover > .arrow:after {
+ border-width: @popover-arrow-width;
+ content: "";
+}
+
+.popover {
+ &.top > .arrow {
+ left: 50%;
+ margin-left: -@popover-arrow-outer-width;
+ border-bottom-width: 0;
+ border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback
+ border-top-color: @popover-arrow-outer-color;
+ bottom: -@popover-arrow-outer-width;
+ &:after {
+ content: " ";
+ bottom: 1px;
+ margin-left: -@popover-arrow-width;
+ border-bottom-width: 0;
+ border-top-color: @popover-arrow-color;
+ }
+ }
+ &.right > .arrow {
+ top: 50%;
+ left: -@popover-arrow-outer-width;
+ margin-top: -@popover-arrow-outer-width;
+ border-left-width: 0;
+ border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback
+ border-right-color: @popover-arrow-outer-color;
+ &:after {
+ content: " ";
+ left: 1px;
+ bottom: -@popover-arrow-width;
+ border-left-width: 0;
+ border-right-color: @popover-arrow-color;
+ }
+ }
+ &.bottom > .arrow {
+ left: 50%;
+ margin-left: -@popover-arrow-outer-width;
+ border-top-width: 0;
+ border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback
+ border-bottom-color: @popover-arrow-outer-color;
+ top: -@popover-arrow-outer-width;
+ &:after {
+ content: " ";
+ top: 1px;
+ margin-left: -@popover-arrow-width;
+ border-top-width: 0;
+ border-bottom-color: @popover-arrow-color;
+ }
+ }
+
+ &.left > .arrow {
+ top: 50%;
+ right: -@popover-arrow-outer-width;
+ margin-top: -@popover-arrow-outer-width;
+ border-right-width: 0;
+ border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback
+ border-left-color: @popover-arrow-outer-color;
+ &:after {
+ content: " ";
+ right: 1px;
+ border-right-width: 0;
+ border-left-color: @popover-arrow-color;
+ bottom: -@popover-arrow-width;
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/print.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/print.less
new file mode 100644
index 0000000..66e54ab
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/print.less
@@ -0,0 +1,101 @@
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+
+// ==========================================================================
+// Print styles.
+// Inlined to avoid the additional HTTP request: h5bp.com/r
+// ==========================================================================
+
+@media print {
+ *,
+ *:before,
+ *:after {
+ background: transparent !important;
+ color: #000 !important; // Black prints faster: h5bp.com/s
+ box-shadow: none !important;
+ text-shadow: none !important;
+ }
+
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+
+ // Don't show links that are fragment identifiers,
+ // or use the `javascript:` pseudo protocol
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
+ content: "";
+ }
+
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+
+ thead {
+ display: table-header-group; // h5bp.com/t
+ }
+
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+
+ img {
+ max-width: 100% !important;
+ }
+
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+
+ // Bootstrap specific changes start
+
+ // Bootstrap components
+ .navbar {
+ display: none;
+ }
+ .btn,
+ .dropup > .btn {
+ > .caret {
+ border-top-color: #000 !important;
+ }
+ }
+ .label {
+ border: 1px solid #000;
+ }
+
+ .table {
+ border-collapse: collapse !important;
+
+ td,
+ th {
+ background-color: #fff !important;
+ }
+ }
+ .table-bordered {
+ th,
+ td {
+ border: 1px solid #ddd !important;
+ }
+ }
+
+ // Bootstrap specific changes end
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/progress-bars.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/progress-bars.less
new file mode 100644
index 0000000..8868a1f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/progress-bars.less
@@ -0,0 +1,87 @@
+//
+// Progress bars
+// --------------------------------------------------
+
+
+// Bar animations
+// -------------------------
+
+// WebKit
+@-webkit-keyframes progress-bar-stripes {
+ from { background-position: 40px 0; }
+ to { background-position: 0 0; }
+}
+
+// Spec and IE10+
+@keyframes progress-bar-stripes {
+ from { background-position: 40px 0; }
+ to { background-position: 0 0; }
+}
+
+
+// Bar itself
+// -------------------------
+
+// Outer container
+.progress {
+ overflow: hidden;
+ height: @line-height-computed;
+ margin-bottom: @line-height-computed;
+ background-color: @progress-bg;
+ border-radius: @progress-border-radius;
+ .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
+}
+
+// Bar of progress
+.progress-bar {
+ float: left;
+ width: 0%;
+ height: 100%;
+ font-size: @font-size-small;
+ line-height: @line-height-computed;
+ color: @progress-bar-color;
+ text-align: center;
+ background-color: @progress-bar-bg;
+ .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
+ .transition(width .6s ease);
+}
+
+// Striped bars
+//
+// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the
+// `.progress-bar-striped` class, which you just add to an existing
+// `.progress-bar`.
+.progress-striped .progress-bar,
+.progress-bar-striped {
+ #gradient > .striped();
+ background-size: 40px 40px;
+}
+
+// Call animation for the active one
+//
+// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the
+// `.progress-bar.active` approach.
+.progress.active .progress-bar,
+.progress-bar.active {
+ .animation(progress-bar-stripes 2s linear infinite);
+}
+
+
+// Variations
+// -------------------------
+
+.progress-bar-success {
+ .progress-bar-variant(@progress-bar-success-bg);
+}
+
+.progress-bar-info {
+ .progress-bar-variant(@progress-bar-info-bg);
+}
+
+.progress-bar-warning {
+ .progress-bar-variant(@progress-bar-warning-bg);
+}
+
+.progress-bar-danger {
+ .progress-bar-variant(@progress-bar-danger-bg);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/responsive-embed.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/responsive-embed.less
new file mode 100644
index 0000000..080a511
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/responsive-embed.less
@@ -0,0 +1,35 @@
+// Embeds responsive
+//
+// Credit: Nicolas Gallagher and SUIT CSS.
+
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
+ overflow: hidden;
+
+ .embed-responsive-item,
+ iframe,
+ embed,
+ object,
+ video {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ height: 100%;
+ width: 100%;
+ border: 0;
+ }
+}
+
+// Modifier class for 16:9 aspect ratio
+.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+
+// Modifier class for 4:3 aspect ratio
+.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/responsive-utilities.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/responsive-utilities.less
new file mode 100644
index 0000000..b1db31d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/responsive-utilities.less
@@ -0,0 +1,194 @@
+//
+// Responsive: Utility classes
+// --------------------------------------------------
+
+
+// IE10 in Windows (Phone) 8
+//
+// Support for responsive views via media queries is kind of borked in IE10, for
+// Surface/desktop in split view and for Windows Phone 8. This particular fix
+// must be accompanied by a snippet of JavaScript to sniff the user agent and
+// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
+// our Getting Started page for more information on this bug.
+//
+// For more information, see the following:
+//
+// Issue: https://github.com/twbs/bootstrap/issues/10497
+// Docs: http://getbootstrap.com/getting-started/#support-ie10-width
+// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
+// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
+
+@-ms-viewport {
+ width: device-width;
+}
+
+
+// Visibility utilities
+// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+ .responsive-invisibility();
+}
+
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
+}
+
+.visible-xs {
+ @media (max-width: @screen-xs-max) {
+ .responsive-visibility();
+ }
+}
+.visible-xs-block {
+ @media (max-width: @screen-xs-max) {
+ display: block !important;
+ }
+}
+.visible-xs-inline {
+ @media (max-width: @screen-xs-max) {
+ display: inline !important;
+ }
+}
+.visible-xs-inline-block {
+ @media (max-width: @screen-xs-max) {
+ display: inline-block !important;
+ }
+}
+
+.visible-sm {
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
+ .responsive-visibility();
+ }
+}
+.visible-sm-block {
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
+ display: block !important;
+ }
+}
+.visible-sm-inline {
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
+ display: inline !important;
+ }
+}
+.visible-sm-inline-block {
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
+ display: inline-block !important;
+ }
+}
+
+.visible-md {
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
+ .responsive-visibility();
+ }
+}
+.visible-md-block {
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
+ display: block !important;
+ }
+}
+.visible-md-inline {
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
+ display: inline !important;
+ }
+}
+.visible-md-inline-block {
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
+ display: inline-block !important;
+ }
+}
+
+.visible-lg {
+ @media (min-width: @screen-lg-min) {
+ .responsive-visibility();
+ }
+}
+.visible-lg-block {
+ @media (min-width: @screen-lg-min) {
+ display: block !important;
+ }
+}
+.visible-lg-inline {
+ @media (min-width: @screen-lg-min) {
+ display: inline !important;
+ }
+}
+.visible-lg-inline-block {
+ @media (min-width: @screen-lg-min) {
+ display: inline-block !important;
+ }
+}
+
+.hidden-xs {
+ @media (max-width: @screen-xs-max) {
+ .responsive-invisibility();
+ }
+}
+.hidden-sm {
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
+ .responsive-invisibility();
+ }
+}
+.hidden-md {
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
+ .responsive-invisibility();
+ }
+}
+.hidden-lg {
+ @media (min-width: @screen-lg-min) {
+ .responsive-invisibility();
+ }
+}
+
+
+// Print utilities
+//
+// Media queries are placed on the inside to be mixin-friendly.
+
+// Note: Deprecated .visible-print as of v3.2.0
+.visible-print {
+ .responsive-invisibility();
+
+ @media print {
+ .responsive-visibility();
+ }
+}
+.visible-print-block {
+ display: none !important;
+
+ @media print {
+ display: block !important;
+ }
+}
+.visible-print-inline {
+ display: none !important;
+
+ @media print {
+ display: inline !important;
+ }
+}
+.visible-print-inline-block {
+ display: none !important;
+
+ @media print {
+ display: inline-block !important;
+ }
+}
+
+.hidden-print {
+ @media print {
+ .responsive-invisibility();
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/scaffolding.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/scaffolding.less
new file mode 100644
index 0000000..1929bfc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/scaffolding.less
@@ -0,0 +1,161 @@
+//
+// Scaffolding
+// --------------------------------------------------
+
+
+// Reset the box-sizing
+//
+// Heads up! This reset may cause conflicts with some third-party widgets.
+// For recommendations on resolving such conflicts, see
+// http://getbootstrap.com/getting-started/#third-box-sizing
+* {
+ .box-sizing(border-box);
+}
+*:before,
+*:after {
+ .box-sizing(border-box);
+}
+
+
+// Body reset
+
+html {
+ font-size: 10px;
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+}
+
+body {
+ font-family: @font-family-base;
+ font-size: @font-size-base;
+ line-height: @line-height-base;
+ color: @text-color;
+ background-color: @body-bg;
+}
+
+// Reset fonts for relevant elements
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+
+// Links
+
+a {
+ color: @link-color;
+ text-decoration: none;
+
+ &:hover,
+ &:focus {
+ color: @link-hover-color;
+ text-decoration: @link-hover-decoration;
+ }
+
+ &:focus {
+ .tab-focus();
+ }
+}
+
+
+// Figures
+//
+// We reset this here because previously Normalize had no `figure` margins. This
+// ensures we don't break anyone's use of the element.
+
+figure {
+ margin: 0;
+}
+
+
+// Images
+
+img {
+ vertical-align: middle;
+}
+
+// Responsive images (ensure images don't scale beyond their parents)
+.img-responsive {
+ .img-responsive();
+}
+
+// Rounded corners
+.img-rounded {
+ border-radius: @border-radius-large;
+}
+
+// Image thumbnails
+//
+// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
+.img-thumbnail {
+ padding: @thumbnail-padding;
+ line-height: @line-height-base;
+ background-color: @thumbnail-bg;
+ border: 1px solid @thumbnail-border;
+ border-radius: @thumbnail-border-radius;
+ .transition(all .2s ease-in-out);
+
+ // Keep them at most 100% wide
+ .img-responsive(inline-block);
+}
+
+// Perfect circle
+.img-circle {
+ border-radius: 50%; // set radius in percents
+}
+
+
+// Horizontal rules
+
+hr {
+ margin-top: @line-height-computed;
+ margin-bottom: @line-height-computed;
+ border: 0;
+ border-top: 1px solid @hr-border;
+}
+
+
+// Only display content to screen readers
+//
+// See: http://a11yproject.com/posts/how-to-hide-content/
+
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ padding: 0;
+ 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;
+ }
+}
+
+
+// iOS "clickable elements" fix for role="button"
+//
+// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
+// for traditionally non-focusable elements with role="button"
+// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+
+[role="button"] {
+ cursor: pointer;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/tables.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/tables.less
new file mode 100644
index 0000000..2242c03
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/tables.less
@@ -0,0 +1,234 @@
+//
+// Tables
+// --------------------------------------------------
+
+
+table {
+ background-color: @table-bg;
+}
+caption {
+ padding-top: @table-cell-padding;
+ padding-bottom: @table-cell-padding;
+ color: @text-muted;
+ text-align: left;
+}
+th {
+ text-align: left;
+}
+
+
+// Baseline styles
+
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: @line-height-computed;
+ // Cells
+ > thead,
+ > tbody,
+ > tfoot {
+ > tr {
+ > th,
+ > td {
+ padding: @table-cell-padding;
+ line-height: @line-height-base;
+ vertical-align: top;
+ border-top: 1px solid @table-border-color;
+ }
+ }
+ }
+ // Bottom align for column headings
+ > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid @table-border-color;
+ }
+ // Remove top border from thead by default
+ > caption + thead,
+ > colgroup + thead,
+ > thead:first-child {
+ > tr:first-child {
+ > th,
+ > td {
+ border-top: 0;
+ }
+ }
+ }
+ // Account for multiple tbody instances
+ > tbody + tbody {
+ border-top: 2px solid @table-border-color;
+ }
+
+ // Nesting
+ .table {
+ background-color: @body-bg;
+ }
+}
+
+
+// Condensed table w/ half padding
+
+.table-condensed {
+ > thead,
+ > tbody,
+ > tfoot {
+ > tr {
+ > th,
+ > td {
+ padding: @table-condensed-cell-padding;
+ }
+ }
+ }
+}
+
+
+// Bordered version
+//
+// Add borders all around the table and between all the columns.
+
+.table-bordered {
+ border: 1px solid @table-border-color;
+ > thead,
+ > tbody,
+ > tfoot {
+ > tr {
+ > th,
+ > td {
+ border: 1px solid @table-border-color;
+ }
+ }
+ }
+ > thead > tr {
+ > th,
+ > td {
+ border-bottom-width: 2px;
+ }
+ }
+}
+
+
+// Zebra-striping
+//
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+
+.table-striped {
+ > tbody > tr:nth-of-type(odd) {
+ background-color: @table-bg-accent;
+ }
+}
+
+
+// Hover effect
+//
+// Placed here since it has to come after the potential zebra striping
+
+.table-hover {
+ > tbody > tr:hover {
+ background-color: @table-bg-hover;
+ }
+}
+
+
+// Table cell sizing
+//
+// Reset default table behavior
+
+table col[class*="col-"] {
+ position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
+ float: none;
+ display: table-column;
+}
+table {
+ td,
+ th {
+ &[class*="col-"] {
+ position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
+ float: none;
+ display: table-cell;
+ }
+ }
+}
+
+
+// Table backgrounds
+//
+// Exact selectors below required to override `.table-striped` and prevent
+// inheritance to nested tables.
+
+// Generate the contextual variants
+.table-row-variant(active; @table-bg-active);
+.table-row-variant(success; @state-success-bg);
+.table-row-variant(info; @state-info-bg);
+.table-row-variant(warning; @state-warning-bg);
+.table-row-variant(danger; @state-danger-bg);
+
+
+// Responsive tables
+//
+// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
+// by enabling horizontal scrolling. Only applies <768px. Everything above that
+// will display normally.
+
+.table-responsive {
+ overflow-x: auto;
+ min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
+
+ @media screen and (max-width: @screen-xs-max) {
+ width: 100%;
+ margin-bottom: (@line-height-computed * 0.75);
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid @table-border-color;
+
+ // Tighten up spacing
+ > .table {
+ margin-bottom: 0;
+
+ // Ensure the content doesn't wrap
+ > thead,
+ > tbody,
+ > tfoot {
+ > tr {
+ > th,
+ > td {
+ white-space: nowrap;
+ }
+ }
+ }
+ }
+
+ // Special overrides for the bordered tables
+ > .table-bordered {
+ border: 0;
+
+ // Nuke the appropriate borders so that the parent can handle them
+ > thead,
+ > tbody,
+ > tfoot {
+ > tr {
+ > th:first-child,
+ > td:first-child {
+ border-left: 0;
+ }
+ > th:last-child,
+ > td:last-child {
+ border-right: 0;
+ }
+ }
+ }
+
+ // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
+ // chances are there will be only one `tr` in a `thead` and that would
+ // remove the border altogether.
+ > tbody,
+ > tfoot {
+ > tr:last-child {
+ > th,
+ > td {
+ border-bottom: 0;
+ }
+ }
+ }
+
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/theme.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/theme.less
new file mode 100644
index 0000000..8371872
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/theme.less
@@ -0,0 +1,291 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+//
+// Load core variables and mixins
+// --------------------------------------------------
+
+@import "variables.less";
+@import "mixins.less";
+
+
+//
+// Buttons
+// --------------------------------------------------
+
+// Common styles
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+ text-shadow: 0 -1px 0 rgba(0,0,0,.2);
+ @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
+ .box-shadow(@shadow);
+
+ // Reset the shadow
+ &:active,
+ &.active {
+ .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+ }
+
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ .box-shadow(none);
+ }
+
+ .badge {
+ text-shadow: none;
+ }
+}
+
+// Mixin for generating new styles
+.btn-styles(@btn-color: #555) {
+ #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));
+ .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620
+ background-repeat: repeat-x;
+ border-color: darken(@btn-color, 14%);
+
+ &:hover,
+ &:focus {
+ background-color: darken(@btn-color, 12%);
+ background-position: 0 -15px;
+ }
+
+ &:active,
+ &.active {
+ background-color: darken(@btn-color, 12%);
+ border-color: darken(@btn-color, 14%);
+ }
+
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ &,
+ &:hover,
+ &:focus,
+ &.focus,
+ &:active,
+ &.active {
+ background-color: darken(@btn-color, 12%);
+ background-image: none;
+ }
+ }
+}
+
+// Common styles
+.btn {
+ // Remove the gradient for the pressed/active state
+ &:active,
+ &.active {
+ background-image: none;
+ }
+}
+
+// Apply the mixin to the buttons
+.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }
+.btn-primary { .btn-styles(@btn-primary-bg); }
+.btn-success { .btn-styles(@btn-success-bg); }
+.btn-info { .btn-styles(@btn-info-bg); }
+.btn-warning { .btn-styles(@btn-warning-bg); }
+.btn-danger { .btn-styles(@btn-danger-bg); }
+
+
+//
+// Images
+// --------------------------------------------------
+
+.thumbnail,
+.img-thumbnail {
+ .box-shadow(0 1px 2px rgba(0,0,0,.075));
+}
+
+
+//
+// Dropdowns
+// --------------------------------------------------
+
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));
+ background-color: darken(@dropdown-link-hover-bg, 5%);
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));
+ background-color: darken(@dropdown-link-active-bg, 5%);
+}
+
+
+//
+// Navbar
+// --------------------------------------------------
+
+// Default navbar
+.navbar-default {
+ #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);
+ .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
+ border-radius: @navbar-border-radius;
+ @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
+ .box-shadow(@shadow);
+
+ .navbar-nav > .open > a,
+ .navbar-nav > .active > a {
+ #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));
+ .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));
+ }
+}
+.navbar-brand,
+.navbar-nav > li > a {
+ text-shadow: 0 1px 0 rgba(255,255,255,.25);
+}
+
+// Inverted navbar
+.navbar-inverse {
+ #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);
+ .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257
+ border-radius: @navbar-border-radius;
+ .navbar-nav > .open > a,
+ .navbar-nav > .active > a {
+ #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));
+ .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));
+ }
+
+ .navbar-brand,
+ .navbar-nav > li > a {
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+ }
+}
+
+// Undo rounded corners in static and fixed navbars
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ border-radius: 0;
+}
+
+// Fix active state of dropdown items in collapsed mode
+@media (max-width: @grid-float-breakpoint-max) {
+ .navbar .navbar-nav .open .dropdown-menu > .active > a {
+ &,
+ &:hover,
+ &:focus {
+ color: #fff;
+ #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));
+ }
+ }
+}
+
+
+//
+// Alerts
+// --------------------------------------------------
+
+// Common styles
+.alert {
+ text-shadow: 0 1px 0 rgba(255,255,255,.2);
+ @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);
+ .box-shadow(@shadow);
+}
+
+// Mixin for generating new styles
+.alert-styles(@color) {
+ #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));
+ border-color: darken(@color, 15%);
+}
+
+// Apply the mixin to the alerts
+.alert-success { .alert-styles(@alert-success-bg); }
+.alert-info { .alert-styles(@alert-info-bg); }
+.alert-warning { .alert-styles(@alert-warning-bg); }
+.alert-danger { .alert-styles(@alert-danger-bg); }
+
+
+//
+// Progress bars
+// --------------------------------------------------
+
+// Give the progress background some depth
+.progress {
+ #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)
+}
+
+// Mixin for generating new styles
+.progress-bar-styles(@color) {
+ #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));
+}
+
+// Apply the mixin to the progress bars
+.progress-bar { .progress-bar-styles(@progress-bar-bg); }
+.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }
+.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }
+.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }
+.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }
+
+// Reset the striped class because our mixins don't do multiple gradients and
+// the above custom styles override the new `.progress-bar-striped` in v3.2.0.
+.progress-bar-striped {
+ #gradient > .striped();
+}
+
+
+//
+// List groups
+// --------------------------------------------------
+
+.list-group {
+ border-radius: @border-radius-base;
+ .box-shadow(0 1px 2px rgba(0,0,0,.075));
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);
+ #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));
+ border-color: darken(@list-group-active-border, 7.5%);
+
+ .badge {
+ text-shadow: none;
+ }
+}
+
+
+//
+// Panels
+// --------------------------------------------------
+
+// Common styles
+.panel {
+ .box-shadow(0 1px 2px rgba(0,0,0,.05));
+}
+
+// Mixin for generating new styles
+.panel-heading-styles(@color) {
+ #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));
+}
+
+// Apply the mixin to the panel headings only
+.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }
+.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }
+.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }
+.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }
+.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }
+.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }
+
+
+//
+// Wells
+// --------------------------------------------------
+
+.well {
+ #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);
+ border-color: darken(@well-bg, 10%);
+ @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
+ .box-shadow(@shadow);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/thumbnails.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/thumbnails.less
new file mode 100644
index 0000000..0713e67
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/thumbnails.less
@@ -0,0 +1,36 @@
+//
+// Thumbnails
+// --------------------------------------------------
+
+
+// Mixin and adjust the regular image class
+.thumbnail {
+ display: block;
+ padding: @thumbnail-padding;
+ margin-bottom: @line-height-computed;
+ line-height: @line-height-base;
+ background-color: @thumbnail-bg;
+ border: 1px solid @thumbnail-border;
+ border-radius: @thumbnail-border-radius;
+ .transition(border .2s ease-in-out);
+
+ > img,
+ a > img {
+ &:extend(.img-responsive);
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ // Add a hover state for linked versions only
+ a&:hover,
+ a&:focus,
+ a&.active {
+ border-color: @link-color;
+ }
+
+ // Image captions
+ .caption {
+ padding: @thumbnail-caption-padding;
+ color: @thumbnail-caption-color;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/tooltip.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/tooltip.less
new file mode 100644
index 0000000..b48d63e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/tooltip.less
@@ -0,0 +1,101 @@
+//
+// Tooltips
+// --------------------------------------------------
+
+
+// Base class
+.tooltip {
+ position: absolute;
+ z-index: @zindex-tooltip;
+ display: block;
+ // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+ // So reset our font and text properties to avoid inheriting weird values.
+ .reset-text();
+ font-size: @font-size-small;
+
+ .opacity(0);
+
+ &.in { .opacity(@tooltip-opacity); }
+ &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }
+ &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }
+ &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }
+ &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+ max-width: @tooltip-max-width;
+ padding: 3px 8px;
+ color: @tooltip-color;
+ text-align: center;
+ background-color: @tooltip-bg;
+ border-radius: @border-radius-base;
+}
+
+// Arrows
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1
+.tooltip {
+ &.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -@tooltip-arrow-width;
+ border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
+ border-top-color: @tooltip-arrow-color;
+ }
+ &.top-left .tooltip-arrow {
+ bottom: 0;
+ right: @tooltip-arrow-width;
+ margin-bottom: -@tooltip-arrow-width;
+ border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
+ border-top-color: @tooltip-arrow-color;
+ }
+ &.top-right .tooltip-arrow {
+ bottom: 0;
+ left: @tooltip-arrow-width;
+ margin-bottom: -@tooltip-arrow-width;
+ border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
+ border-top-color: @tooltip-arrow-color;
+ }
+ &.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -@tooltip-arrow-width;
+ border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;
+ border-right-color: @tooltip-arrow-color;
+ }
+ &.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -@tooltip-arrow-width;
+ border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;
+ border-left-color: @tooltip-arrow-color;
+ }
+ &.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -@tooltip-arrow-width;
+ border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
+ border-bottom-color: @tooltip-arrow-color;
+ }
+ &.bottom-left .tooltip-arrow {
+ top: 0;
+ right: @tooltip-arrow-width;
+ margin-top: -@tooltip-arrow-width;
+ border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
+ border-bottom-color: @tooltip-arrow-color;
+ }
+ &.bottom-right .tooltip-arrow {
+ top: 0;
+ left: @tooltip-arrow-width;
+ margin-top: -@tooltip-arrow-width;
+ border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
+ border-bottom-color: @tooltip-arrow-color;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/type.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/type.less
new file mode 100644
index 0000000..68ba601
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/type.less
@@ -0,0 +1,302 @@
+//
+// Typography
+// --------------------------------------------------
+
+
+// Headings
+// -------------------------
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+ font-family: @headings-font-family;
+ font-weight: @headings-font-weight;
+ line-height: @headings-line-height;
+ color: @headings-color;
+
+ small,
+ .small {
+ font-weight: normal;
+ line-height: 1;
+ color: @headings-small-color;
+ }
+}
+
+h1, .h1,
+h2, .h2,
+h3, .h3 {
+ margin-top: @line-height-computed;
+ margin-bottom: (@line-height-computed / 2);
+
+ small,
+ .small {
+ font-size: 65%;
+ }
+}
+h4, .h4,
+h5, .h5,
+h6, .h6 {
+ margin-top: (@line-height-computed / 2);
+ margin-bottom: (@line-height-computed / 2);
+
+ small,
+ .small {
+ font-size: 75%;
+ }
+}
+
+h1, .h1 { font-size: @font-size-h1; }
+h2, .h2 { font-size: @font-size-h2; }
+h3, .h3 { font-size: @font-size-h3; }
+h4, .h4 { font-size: @font-size-h4; }
+h5, .h5 { font-size: @font-size-h5; }
+h6, .h6 { font-size: @font-size-h6; }
+
+
+// Body text
+// -------------------------
+
+p {
+ margin: 0 0 (@line-height-computed / 2);
+}
+
+.lead {
+ margin-bottom: @line-height-computed;
+ font-size: floor((@font-size-base * 1.15));
+ font-weight: 300;
+ line-height: 1.4;
+
+ @media (min-width: @screen-sm-min) {
+ font-size: (@font-size-base * 1.5);
+ }
+}
+
+
+// Emphasis & misc
+// -------------------------
+
+// Ex: (12px small font / 14px base font) * 100% = about 85%
+small,
+.small {
+ font-size: floor((100% * @font-size-small / @font-size-base));
+}
+
+mark,
+.mark {
+ background-color: @state-warning-bg;
+ padding: .2em;
+}
+
+// Alignment
+.text-left { text-align: left; }
+.text-right { text-align: right; }
+.text-center { text-align: center; }
+.text-justify { text-align: justify; }
+.text-nowrap { white-space: nowrap; }
+
+// Transformation
+.text-lowercase { text-transform: lowercase; }
+.text-uppercase { text-transform: uppercase; }
+.text-capitalize { text-transform: capitalize; }
+
+// Contextual colors
+.text-muted {
+ color: @text-muted;
+}
+.text-primary {
+ .text-emphasis-variant(@brand-primary);
+}
+.text-success {
+ .text-emphasis-variant(@state-success-text);
+}
+.text-info {
+ .text-emphasis-variant(@state-info-text);
+}
+.text-warning {
+ .text-emphasis-variant(@state-warning-text);
+}
+.text-danger {
+ .text-emphasis-variant(@state-danger-text);
+}
+
+// Contextual backgrounds
+// For now we'll leave these alongside the text classes until v4 when we can
+// safely shift things around (per SemVer rules).
+.bg-primary {
+ // Given the contrast here, this is the only class to have its color inverted
+ // automatically.
+ color: #fff;
+ .bg-variant(@brand-primary);
+}
+.bg-success {
+ .bg-variant(@state-success-bg);
+}
+.bg-info {
+ .bg-variant(@state-info-bg);
+}
+.bg-warning {
+ .bg-variant(@state-warning-bg);
+}
+.bg-danger {
+ .bg-variant(@state-danger-bg);
+}
+
+
+// Page header
+// -------------------------
+
+.page-header {
+ padding-bottom: ((@line-height-computed / 2) - 1);
+ margin: (@line-height-computed * 2) 0 @line-height-computed;
+ border-bottom: 1px solid @page-header-border-color;
+}
+
+
+// Lists
+// -------------------------
+
+// Unordered and Ordered lists
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: (@line-height-computed / 2);
+ ul,
+ ol {
+ margin-bottom: 0;
+ }
+}
+
+// List options
+
+// Unstyled keeps list items block level, just removes default browser padding and list-style
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+
+// Inline turns list items into inline-block
+.list-inline {
+ .list-unstyled();
+ margin-left: -5px;
+
+ > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+}
+
+// Description Lists
+dl {
+ margin-top: 0; // Remove browser default
+ margin-bottom: @line-height-computed;
+}
+dt,
+dd {
+ line-height: @line-height-base;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0; // Undo browser default
+}
+
+// Horizontal description lists
+//
+// Defaults to being stacked without any of the below styles applied, until the
+// grid breakpoint is reached (default of ~768px).
+
+.dl-horizontal {
+ dd {
+ &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present
+ }
+
+ @media (min-width: @grid-float-breakpoint) {
+ dt {
+ float: left;
+ width: (@dl-horizontal-offset - 20);
+ clear: left;
+ text-align: right;
+ .text-overflow();
+ }
+ dd {
+ margin-left: @dl-horizontal-offset;
+ }
+ }
+}
+
+
+// Misc
+// -------------------------
+
+// Abbreviations and acronyms
+abbr[title],
+// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted @abbr-border-color;
+}
+.initialism {
+ font-size: 90%;
+ .text-uppercase();
+}
+
+// Blockquotes
+blockquote {
+ padding: (@line-height-computed / 2) @line-height-computed;
+ margin: 0 0 @line-height-computed;
+ font-size: @blockquote-font-size;
+ border-left: 5px solid @blockquote-border-color;
+
+ p,
+ ul,
+ ol {
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ // Note: Deprecated small and .small as of v3.1.0
+ // Context: https://github.com/twbs/bootstrap/issues/11660
+ footer,
+ small,
+ .small {
+ display: block;
+ font-size: 80%; // back to default font-size
+ line-height: @line-height-base;
+ color: @blockquote-small-color;
+
+ &:before {
+ content: '\2014 \00A0'; // em dash, nbsp
+ }
+ }
+}
+
+// Opposite alignment of blockquote
+//
+// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid @blockquote-border-color;
+ border-left: 0;
+ text-align: right;
+
+ // Account for citation
+ footer,
+ small,
+ .small {
+ &:before { content: ''; }
+ &:after {
+ content: '\00A0 \2014'; // nbsp, em dash
+ }
+ }
+}
+
+// Addresses
+address {
+ margin-bottom: @line-height-computed;
+ font-style: normal;
+ line-height: @line-height-base;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/utilities.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/utilities.less
new file mode 100644
index 0000000..7a8ca27
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/utilities.less
@@ -0,0 +1,55 @@
+//
+// Utility classes
+// --------------------------------------------------
+
+
+// Floats
+// -------------------------
+
+.clearfix {
+ .clearfix();
+}
+.center-block {
+ .center-block();
+}
+.pull-right {
+ float: right !important;
+}
+.pull-left {
+ float: left !important;
+}
+
+
+// Toggling content
+// -------------------------
+
+// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
+.hide {
+ display: none !important;
+}
+.show {
+ display: block !important;
+}
+.invisible {
+ visibility: hidden;
+}
+.text-hide {
+ .text-hide();
+}
+
+
+// Hide from screenreaders and browsers
+//
+// Credit: HTML5 Boilerplate
+
+.hidden {
+ display: none !important;
+}
+
+
+// For Affix plugin
+// -------------------------
+
+.affix {
+ position: fixed;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/variables.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/variables.less
new file mode 100644
index 0000000..c1861a8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/variables.less
@@ -0,0 +1,867 @@
+//
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+@gray-base: #000;
+@gray-darker: lighten(@gray-base, 13.5%); // #222
+@gray-dark: lighten(@gray-base, 20%); // #333
+@gray: lighten(@gray-base, 33.5%); // #555
+@gray-light: lighten(@gray-base, 46.7%); // #777
+@gray-lighter: lighten(@gray-base, 93.5%); // #eee
+
+@brand-primary: darken(#428bca, 6.5%); // #337ab7
+@brand-success: #5cb85c;
+@brand-info: #5bc0de;
+@brand-warning: #f0ad4e;
+@brand-danger: #d9534f;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+@body-bg: #fff;
+//** Global text color on `<body>`.
+@text-color: @gray-dark;
+
+//** Global textual link color.
+@link-color: @brand-primary;
+//** Link hover color set via `darken()` function.
+@link-hover-color: darken(@link-color, 15%);
+//** Link hover decoration.
+@link-hover-decoration: underline;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
+@font-family-serif: Georgia, "Times New Roman", Times, serif;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+@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 `<body>`.
+@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 `<th>`s and `<td>`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
+//
+//##
+
+//** `<input>` background color
+@input-bg: #fff;
+//** `<input disabled>` background color
+@input-bg-disabled: @gray-lighter;
+
+//** Text color for `<input>`s
+@input-color: @gray;
+//** `<input>` 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 `<select>`s in some browsers, due to the limited stylability of `<select>`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;
+//** Horizontal line color.
+@hr-border: @gray-lighter;
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/wells.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/less/wells.less
new file mode 100644
index 0000000..15d072b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/LICENSE b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/LICENSE
new file mode 100644
index 0000000..f4c52d6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2011-2015 Twitter, Inc
+
+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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/package.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/package.js
new file mode 100644
index 0000000..81d42a6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/package.js
@@ -0,0 +1,25 @@
+// 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.5',
+ git: 'https://github.com/twbs/bootstrap.git'
+});
+
+Package.onUse(function (api) {
+ api.versionsFrom('METEOR@1.0');
+ api.use('jquery', 'client');
+ api.addFiles([
+ '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',
+ 'dist/css/bootstrap.css',
+ 'dist/js/bootstrap.js'
+ ], 'client');
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/README.md
new file mode 100644
index 0000000..34c8b5a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap/README.md
@@ -0,0 +1,137 @@
+# [Bootstrap](http://getbootstrap.com)
+[](https://bootstrap-slack.herokuapp.com)
+
+[](https://www.npmjs.com/package/bootstrap)
+[](https://travis-ci.org/twbs/bootstrap)
+[](https://david-dm.org/twbs/bootstrap#info=devDependencies)
+[](https://saucelabs.com/u/bootstrap)
+
+Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
+
+To get started, check out <http://getbootstrap.com>!
+
+## Table of contents
+
+- [Quick start](#quick-start)
+- [Bugs and feature requests](#bugs-and-feature-requests)
+- [Documentation](#documentation)
+- [Contributing](#contributing)
+- [Community](#community)
+- [Versioning](#versioning)
+- [Creators](#creators)
+- [Copyright and license](#copyright-and-license)
+
+## Quick start
+
+Several quick start options are available:
+
+- [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.5.zip).
+- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
+- Install with [Bower](http://bower.io): `bower install bootstrap`.
+- Install with [npm](https://www.npmjs.com): `npm install bootstrap`.
+- Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`.
+- Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`.
+
+Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more.
+
+### What's included
+
+Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:
+
+```
+bootstrap/
+├── css/
+│ ├── bootstrap.css
+│ ├── bootstrap.css.map
+│ ├── bootstrap.min.css
+│ ├── bootstrap-theme.css
+│ ├── bootstrap-theme.css.map
+│ └── bootstrap-theme.min.css
+├── js/
+│ ├── bootstrap.js
+│ └── bootstrap.min.js
+└── fonts/
+ ├── glyphicons-halflings-regular.eot
+ ├── glyphicons-halflings-regular.svg
+ ├── glyphicons-halflings-regular.ttf
+ ├── glyphicons-halflings-regular.woff
+ └── glyphicons-halflings-regular.woff2
+```
+
+We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
+
+
+
+## Bugs and feature requests
+
+Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
+
+
+## Documentation
+
+Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at <http://getbootstrap.com>. The docs may also be run locally.
+
+### Running documentation locally
+
+1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.5.x).
+ - **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems.
+2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`.
+3. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
+4. Open <http://localhost:9001> in your browser, and voilà.
+
+Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/).
+
+### Documentation for previous releases
+
+Documentation for v2.3.2 has been made available for the time being at <http://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3.
+
+[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
+
+
+
+## Contributing
+
+Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
+
+Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
+
+Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>.
+
+
+
+## Community
+
+Get updates on Bootstrap's development and chat with the project maintainers and community members.
+
+- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
+- Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
+- Join [the official Slack room](https://bootstrap-slack.herokuapp.com).
+- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
+- Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
+- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
+
+
+
+## Versioning
+
+For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
+
+
+
+## Creators
+
+**Mark Otto**
+
+- <https://twitter.com/mdo>
+- <https://github.com/mdo>
+
+**Jacob Thornton**
+
+- <https://twitter.com/fat>
+- <https://github.com/fat>
+
+
+
+## Copyright and license
+
+Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/css/bootstrap-combobox.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/css/bootstrap-combobox.css
new file mode 100644
index 0000000..9c991cf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/css/bootstrap-combobox.css
@@ -0,0 +1,42 @@
+.form-search .combobox-container,
+.form-inline .combobox-container {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: top;
+}
+.form-search .combobox-container .input-group-addon,
+.form-inline .combobox-container .input-group-addon {
+ width: auto;
+}
+.combobox-selected .caret {
+ display: none;
+}
+/* :not doesn't work in IE8 */
+.combobox-container:not(.combobox-selected) .glyphicon-remove {
+ display: none;
+}
+.typeahead-long {
+ max-height: 300px;
+ overflow-y: auto;
+}
+.control-group.error .combobox-container .add-on {
+ color: #B94A48;
+ border-color: #B94A48;
+}
+.control-group.error .combobox-container .caret {
+ border-top-color: #B94A48;
+}
+.control-group.warning .combobox-container .add-on {
+ color: #C09853;
+ border-color: #C09853;
+}
+.control-group.warning .combobox-container .caret {
+ border-top-color: #C09853;
+}
+.control-group.success .combobox-container .add-on {
+ color: #468847;
+ border-color: #468847;
+}
+.control-group.success .combobox-container .caret {
+ border-top-color: #468847;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/js/bootstrap-combobox.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/js/bootstrap-combobox.js
new file mode 100755
index 0000000..af5dc0d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/js/bootstrap-combobox.js
@@ -0,0 +1,438 @@
+/* =============================================================
+ * bootstrap-combobox.js v1.1.6
+ * =============================================================
+ * Copyright 2012 Daniel Farrell
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ) {
+
+ "use strict";
+
+ /* COMBOBOX PUBLIC CLASS DEFINITION
+ * ================================ */
+
+ var Combobox = function ( element, options ) {
+ this.options = $.extend({}, $.fn.combobox.defaults, options);
+ this.$source = $(element);
+ this.$container = this.setup();
+ this.$element = this.$container.find('input[type=text]');
+ this.$target = this.$container.find('input[type=hidden]');
+ this.$button = this.$container.find('.dropdown-toggle');
+ this.$menu = $(this.options.menu).appendTo('body');
+ this.template = this.options.template || this.template
+ this.matcher = this.options.matcher || this.matcher;
+ this.sorter = this.options.sorter || this.sorter;
+ this.highlighter = this.options.highlighter || this.highlighter;
+ this.shown = false;
+ this.selected = false;
+ this.refresh();
+ this.transferAttributes();
+ this.listen();
+ };
+
+ Combobox.prototype = {
+
+ constructor: Combobox
+
+ , setup: function () {
+ var combobox = $(this.template());
+ this.$source.before(combobox);
+ this.$source.hide();
+ return combobox;
+ }
+
+ , disable: function() {
+ this.$element.prop('disabled', true);
+ this.$button.attr('disabled', true);
+ this.disabled = true;
+ this.$container.addClass('combobox-disabled');
+ }
+
+ , enable: function() {
+ this.$element.prop('disabled', false);
+ this.$button.attr('disabled', false);
+ this.disabled = false;
+ this.$container.removeClass('combobox-disabled');
+ }
+ , parse: function () {
+ var that = this
+ , map = {}
+ , source = []
+ , selected = false
+ , selectedValue = '';
+ this.$source.find('option').each(function() {
+ var option = $(this);
+ if (option.val() === '') {
+ that.options.placeholder = option.text();
+ return;
+ }
+ map[option.text()] = option.val();
+ source.push(option.text());
+ if (option.prop('selected')) {
+ selected = option.text();
+ selectedValue = option.val();
+ }
+ })
+ this.map = map;
+ if (selected) {
+ this.$element.val(selected);
+ this.$target.val(selectedValue);
+ this.$container.addClass('combobox-selected');
+ this.selected = true;
+ }
+ return source;
+ }
+
+ , transferAttributes: function() {
+ this.options.placeholder = this.$source.attr('data-placeholder') || this.options.placeholder
+ this.$element.attr('placeholder', this.options.placeholder)
+ this.$target.prop('name', this.$source.prop('name'))
+ this.$target.val(this.$source.val())
+ this.$source.removeAttr('name') // Remove from source otherwise form will pass parameter twice.
+ this.$element.attr('required', this.$source.attr('required'))
+ this.$element.attr('rel', this.$source.attr('rel'))
+ this.$element.attr('title', this.$source.attr('title'))
+ this.$element.attr('class', this.$source.attr('class'))
+ this.$element.attr('tabindex', this.$source.attr('tabindex'))
+ this.$source.removeAttr('tabindex')
+ if (this.$source.attr('disabled')!==undefined)
+ this.disable();
+ }
+
+ , select: function () {
+ var val = this.$menu.find('.active').attr('data-value');
+ this.$element.val(this.updater(val)).trigger('change');
+ this.$target.val(this.map[val]).trigger('change');
+ this.$source.val(this.map[val]).trigger('change');
+ this.$container.addClass('combobox-selected');
+ this.selected = true;
+ return this.hide();
+ }
+
+ , updater: function (item) {
+ return item;
+ }
+
+ , show: function () {
+ var pos = $.extend({}, this.$element.position(), {
+ height: this.$element[0].offsetHeight
+ });
+
+ this.$menu
+ .insertAfter(this.$element)
+ .css({
+ top: pos.top + pos.height
+ , left: pos.left
+ })
+ .show();
+
+ $('.dropdown-menu').on('mousedown', $.proxy(this.scrollSafety, this));
+
+ this.shown = true;
+ return this;
+ }
+
+ , hide: function () {
+ this.$menu.hide();
+ $('.dropdown-menu').off('mousedown', $.proxy(this.scrollSafety, this));
+ this.$element.on('blur', $.proxy(this.blur, this));
+ this.shown = false;
+ return this;
+ }
+
+ , lookup: function (event) {
+ this.query = this.$element.val();
+ return this.process(this.source);
+ }
+
+ , process: function (items) {
+ var that = this;
+
+ items = $.grep(items, function (item) {
+ return that.matcher(item);
+ })
+
+ items = this.sorter(items);
+
+ if (!items.length) {
+ return this.shown ? this.hide() : this;
+ }
+
+ return this.render(items.slice(0, this.options.items)).show();
+ }
+
+ , template: function() {
+ if (this.options.bsVersion == '2') {
+ return '<div class="combobox-container"><input type="hidden" /> <div class="input-append"> <input type="text" autocomplete="off" /> <span class="add-on dropdown-toggle" data-dropdown="dropdown"> <span class="caret"/> <i class="icon-remove"/> </span> </div> </div>'
+ } else {
+ return '<div class="combobox-container"> <input type="hidden" /> <div class="input-group"> <input type="text" autocomplete="off" /> <span class="input-group-addon dropdown-toggle" data-dropdown="dropdown"> <span class="caret" /> <span class="glyphicon glyphicon-remove" /> </span> </div> </div>'
+ }
+ }
+
+ , matcher: function (item) {
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase());
+ }
+
+ , sorter: function (items) {
+ var beginswith = []
+ , caseSensitive = []
+ , caseInsensitive = []
+ , item;
+
+ while (item = items.shift()) {
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) {beginswith.push(item);}
+ else if (~item.indexOf(this.query)) {caseSensitive.push(item);}
+ else {caseInsensitive.push(item);}
+ }
+
+ return beginswith.concat(caseSensitive, caseInsensitive);
+ }
+
+ , highlighter: function (item) {
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&');
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
+ return '<strong>' + match + '</strong>';
+ })
+ }
+
+ , render: function (items) {
+ var that = this;
+
+ items = $(items).map(function (i, item) {
+ i = $(that.options.item).attr('data-value', item);
+ i.find('a').html(that.highlighter(item));
+ return i[0];
+ })
+
+ items.first().addClass('active');
+ this.$menu.html(items);
+ return this;
+ }
+
+ , next: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , next = active.next();
+
+ if (!next.length) {
+ next = $(this.$menu.find('li')[0]);
+ }
+
+ next.addClass('active');
+ }
+
+ , prev: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , prev = active.prev();
+
+ if (!prev.length) {
+ prev = this.$menu.find('li').last();
+ }
+
+ prev.addClass('active');
+ }
+
+ , toggle: function () {
+ if (!this.disabled) {
+ if (this.$container.hasClass('combobox-selected')) {
+ this.clearTarget();
+ this.triggerChange();
+ this.clearElement();
+ } else {
+ if (this.shown) {
+ this.hide();
+ } else {
+ this.clearElement();
+ this.lookup();
+ }
+ }
+ }
+ }
+
+ , scrollSafety: function(e) {
+ if (e.target.tagName == 'UL') {
+ this.$element.off('blur');
+ }
+ }
+ , clearElement: function () {
+ this.$element.val('').focus();
+ }
+
+ , clearTarget: function () {
+ this.$source.val('');
+ this.$target.val('');
+ this.$container.removeClass('combobox-selected');
+ this.selected = false;
+ }
+
+ , triggerChange: function () {
+ this.$source.trigger('change');
+ }
+
+ , refresh: function () {
+ this.source = this.parse();
+ this.options.items = this.source.length;
+ }
+
+ , listen: function () {
+ this.$element
+ .on('focus', $.proxy(this.focus, this))
+ .on('blur', $.proxy(this.blur, this))
+ .on('keypress', $.proxy(this.keypress, this))
+ .on('keyup', $.proxy(this.keyup, this));
+
+ if (this.eventSupported('keydown')) {
+ this.$element.on('keydown', $.proxy(this.keydown, this));
+ }
+
+ this.$menu
+ .on('click', $.proxy(this.click, this))
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+ .on('mouseleave', 'li', $.proxy(this.mouseleave, this));
+
+ this.$button
+ .on('click', $.proxy(this.toggle, this));
+ }
+
+ , eventSupported: function(eventName) {
+ var isSupported = eventName in this.$element;
+ if (!isSupported) {
+ this.$element.setAttribute(eventName, 'return;');
+ isSupported = typeof this.$element[eventName] === 'function';
+ }
+ return isSupported;
+ }
+
+ , move: function (e) {
+ if (!this.shown) {return;}
+
+ switch(e.keyCode) {
+ case 9: // tab
+ case 13: // enter
+ case 27: // escape
+ e.preventDefault();
+ break;
+
+ case 38: // up arrow
+ e.preventDefault();
+ this.prev();
+ break;
+
+ case 40: // down arrow
+ e.preventDefault();
+ this.next();
+ break;
+ }
+
+ e.stopPropagation();
+ }
+
+ , keydown: function (e) {
+ this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27]);
+ this.move(e);
+ }
+
+ , keypress: function (e) {
+ if (this.suppressKeyPressRepeat) {return;}
+ this.move(e);
+ }
+
+ , keyup: function (e) {
+ switch(e.keyCode) {
+ case 40: // down arrow
+ case 39: // right arrow
+ case 38: // up arrow
+ case 37: // left arrow
+ case 36: // home
+ case 35: // end
+ case 16: // shift
+ case 17: // ctrl
+ case 18: // alt
+ break;
+
+ case 9: // tab
+ case 13: // enter
+ if (!this.shown) {return;}
+ this.select();
+ break;
+
+ case 27: // escape
+ if (!this.shown) {return;}
+ this.hide();
+ break;
+
+ default:
+ this.clearTarget();
+ this.lookup();
+ }
+
+ e.stopPropagation();
+ e.preventDefault();
+ }
+
+ , focus: function (e) {
+ this.focused = true;
+ }
+
+ , blur: function (e) {
+ var that = this;
+ this.focused = false;
+ var val = this.$element.val();
+ if (!this.selected && val !== '' ) {
+ this.$element.val('');
+ this.$source.val('').trigger('change');
+ this.$target.val('').trigger('change');
+ }
+ if (!this.mousedover && this.shown) {setTimeout(function () { that.hide(); }, 200);}
+ }
+
+ , click: function (e) {
+ e.stopPropagation();
+ e.preventDefault();
+ this.select();
+ this.$element.focus();
+ }
+
+ , mouseenter: function (e) {
+ this.mousedover = true;
+ this.$menu.find('.active').removeClass('active');
+ $(e.currentTarget).addClass('active');
+ }
+
+ , mouseleave: function (e) {
+ this.mousedover = false;
+ }
+ };
+
+ /* COMBOBOX PLUGIN DEFINITION
+ * =========================== */
+ $.fn.combobox = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('combobox')
+ , options = typeof option == 'object' && option;
+ if(!data) {$this.data('combobox', (data = new Combobox(this, options)));}
+ if (typeof option == 'string') {data[option]();}
+ });
+ };
+
+ $.fn.combobox.defaults = {
+ bsVersion: '3'
+ , menu: '<ul class="typeahead typeahead-long dropdown-menu"></ul>'
+ , item: '<li><a href="#"></a></li>'
+ };
+
+ $.fn.combobox.Constructor = Combobox;
+
+}( window.jQuery );
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/less/combobox.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/less/combobox.less
new file mode 100644
index 0000000..bf09de9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/less/combobox.less
@@ -0,0 +1,54 @@
+.form-search, .form-inline {
+ .combobox-container {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: top;
+ .input-group-addon{
+ width: auto;
+ }
+ }
+}
+
+.combobox-selected .caret {
+ display: none;
+}
+
+/* :not doesn't work in IE8 */
+.combobox-container:not(.combobox-selected) .glyphicon-remove {
+ display: none;
+}
+
+.typeahead-long {
+ max-height: 300px;
+ overflow-y: auto;
+}
+
+.control-group.error .combobox-container{
+ .add-on {
+ color: #B94A48;
+ border-color: #B94A48;
+ }
+ .caret {
+ border-top-color: #B94A48;
+ }
+}
+
+.control-group.warning .combobox-container {
+ .add-on {
+ color: #C09853;
+ border-color: #C09853;
+ }
+ .caret {
+ border-top-color: #C09853;
+ }
+}
+
+.control-group.success .combobox-container{
+ .add-on {
+ color: #468847;
+ border-color: #468847;
+ }
+ .caret {
+ border-top-color: #468847;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/README.md
new file mode 100644
index 0000000..59dfa97
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-combobox/README.md
@@ -0,0 +1,59 @@
+# Bootstrap Combobox
+
+We had need of a combobox at work and after looking around at the available options I was not happy with any of them. The project had all it's styling based on Twitter's Bootstrap, so building on that made sense.
+
+## How to use it
+
+The dependencies are the Bootstrap stylesheet(CSS or LESS). Include it and then the stylesheet(CSS or LESS) and javascript.
+
+Then just activate the plugin on a normal select box(suggest having a blank option first):
+
+ <select class="combobox">
+ <option></option>
+ <option value="PA">Pennsylvania</option>
+ <option value="CT">Connecticut</option>
+ <option value="NY">New York</option>
+ <option value="MD">Maryland</option>
+ <option value="VA">Virginia</option>
+ </select>
+
+ <script type="text/javascript">
+ $(document).ready(function(){
+ $('.combobox').combobox();
+ });
+ </script>
+
+### Options
+
+When activating the plugin, you may include an object containing options for the combobox
+
+ $('.combobox').combobox({bsVersion: '2'});
+
+`menu`: Custom markup for the dropdown menu list element.
+
+`item`: Custom markup for the dropdown menu list items.
+
+`matcher`: Custom function with one `item` argument that compares the item to the input. Defaults to matching on the query being a substring of the item, case insenstive
+
+ `sorter`: Custom function that sorts a list `items` for display in the dropdown
+
+ `highlighter`: Custom function for highlighting an `item`. Defaults to bolding the query within a matched item
+
+ `template`: Custom function that returns markup for the combobox.
+
+ `bsVersion`: Version of bootstrap being used. This is used by the default `template` function to generate markup correctly. Defaults to '3'. Set to '2' for compatibility with Bootstrap 2
+
+## Dependencies
+Uses the latest 1.X version of jQuery and the latest 2.X or 3.X of bootstrap.
+
+## Live Example
+
+### Bootstrap 2.0 Version
+http://dl.dropbox.com/u/21368/bootstrap-combobox/index.html
+
+### Bootstrap 3.0 Version
+http://bootstrap-combobox-test.herokuapp.com/
+
+## License
+
+Licensed under the Apache License, Version 2.0
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/bower.json
new file mode 100644
index 0000000..130fdc4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/bower.json
@@ -0,0 +1,15 @@
+{
+ "name": "bootstrap-datepicker",
+ "version": "1.4.0",
+ "main": [
+ "dist/css/bootstrap-datepicker.css",
+ "dist/css/bootstrap-datepicker3.css",
+ "js/bootstrap-datepicker.js"
+ ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "jquery" : ">=1.7.1",
+ "bootstrap" : ">=2.0.4 <4.0"
+ },
+ "ignore": []
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/CHANGELOG.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/CHANGELOG.md
new file mode 100644
index 0000000..821835e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/CHANGELOG.md
@@ -0,0 +1,228 @@
+Changelog
+=========
+
+1.3.1
+-----
+
+Repo changes:
+* Automated screenshots have been added to the docs. These probably need to be documented so that contributors can add them when appropriate.
+* Grunt support
+* Missing description and keywords for Packagist
+* Composer: Include translation files into deployment dir
+* Add package name and version to npm package.json
+
+Bugfixes:
+* Remove font-family declaration for datepicker
+* Don't deselect date unless datepicker is multidate
+* Removed comment from compiled CSS.
+* Don't clear input after typing date and hitting Enter when keyboard nav is disabled
+* Fixing the ui displaying 'undefined nan' when typing dates in Firefox & IE
+* Reset tooltip to a default empty value
+* Fix colspan if calendarWeeks & clearBtn are true
+* Removed fixed width and height in large and small group addon
+* z-index calculation should not stop at first element
+* Fix IE8 bug with Array#splice with one argument
+
+Documentation:
+* ghpages: jQuery js not being loaded when using HTTPS
+* Adds clearBtn option to sandbox page
+* Minor fixes (typo's, links,...)
+
+Locale changes
+
+Updated languages:
+* Clear translation in czech
+* Dutch translation
+* Swedish translation
+* Japanese translation
+* Ukrainian translation fixes
+* Add spanish clear, week start and format
+* Added galician clear, week start and format
+* Added missing clear localization value for polish translation
+* Add clear zh-CN translation
+* Fixed Albanian translation typo's
+* Add missing clear and format localization value for Russian translation
+* Updated Serbian translation
+* Fixed Ukrainian iso code to uk instead of ua
+* Updated greek translation
+* Update Catalan and Spanish localizations
+* Added missing armenian translations
+
+New languages:
+* Basque
+* Khmer (Cambodia)
+* Bosnian
+* British english
+* Armenian
+* Faroese
+* Swiss Italian and Swiss French
+
+1.3.0
+-----
+
+New features:
+* Bootstrap 3 support. Added build files `build/build_standalone3.less` and `build/build3.less`, and source files `less/datepicker3.less` and `css/datepicker3.css` (built from `build_standalone3.less`).
+* Multi-date functionality. This required rethinking several areas of the picker:
+ * The internals have been modified to be completely multidate-centric.
+ * Attributes and methods availabel on events have changed, but the old attributes and functions will still work.
+ * Keyboard navigation has been revamped, as it didn't work at all properly with multidate selection.
+ * The picker now explicitly supports "no selected date".
+
+Non-API changes:
+* Keyboard navigation has been changed. See `docs/keyboard.rst`.
+* Empty pickers in a range picker setup will be populated with the first date selected by the user to make finding the next date easier.
+
+Bug squashed:
+* Jan 1, 1970 is now highlighted when selected
+* `touchstart` added to document-bound picker-closing events (alongside `mousedown`)
+* Fixed a display bug with component add-on icons being vertically higher than they should have been.
+* Input is refocused after clicking the picker.
+* `changeDate` event is triggered when `setDate` is called.
+
+Locale changes:
+* Added Ukrainian, Belgium-Dutch, Welsh, Galician, Vietnamese, and Azerbaijani
+* `clear` for German, Danish, Italian, and Romanian
+* Fixed `weekStart` and `format` for Norwegian
+* `weekStart` and `format` for Georgian
+* Tweaks for Latvian, French, Vietnamese, Swedish, and Croatian
+* De-duplicated Ukrainian files from `uk` and `ua` to just `ua`
+
+Repository changes:
+* Documentation has been moved from the base `README.md` file to the `docs/` folder, and been re-written to use sphinx docs. The docs are now viewable online at http://bootstrap-datepicker.readthedocs.org/. The [gh-pages](http://eternicode.github.io/bootstrap-datepicker/) branch has been reduced to the sandbox demo.
+* Changed the js file header to point at repo/demo/docs urls instead of eyecon.ro
+* The css files are now the output of the standalone build scripts instead of `build/build.less` etc.
+* `composer.json` now supports component-installer
+* Added [JSHint](http://www.jshint.com/docs/) and [JSCS](https://github.com/mdevils/node-jscs) configurations
+
+
+1.2.0
+-----
+
+New features:
+* Google Closure Compiler Compatibility
+* Smart orientation by default, and explicit picker orientation with the `orientation` option
+* Text inside the picker is no longer user-selectable
+* Packagist/Composer support (I think...)
+* No longer depends on glyphicons for arrows
+* `clearDate` event added, fired when the date is cleared
+
+Bug squashed:
+* `noConflict` fixed
+* Fix for large years causing an infinite loop in date parsing
+* Fixed cases where `changeYear` and `changeMonth` events were not being triggered
+* `component.js` moved to `bower.js`
+* Falsey values for `startDate` and `endDate` translate to `-Infinity` and `Infinity`, respectively (effectively, falsey values mean "no bounds")
+* Fixed `autoclose` for non-input, non-component elements
+* Fixed 50% param in `mix()` less function -- expands compatibility with less compilers
+* Fixed `update` method to update the selected date
+* `beforeShowDay` was getting UTC dates, now it gets local dates (all dates that developers are given should be in local time, not UTC).
+* `startDate` and `endDate` were a bit confused when given `new Date()` -- they would not allow today to be selected (the range should be inclusive), they would change whether it was selectable based on local time, etc. These quirks should be fixed now. They both also now expect local dates (which will then be time-zeroed and converted to UTC).
+* Fixed selected date not being automatically constrained to the specified range when `setStartDate` and `setEndDate` were called.
+* No longer uses jQuery's `.size()` (deprecated in favor of `.length`)
+* `changeDate` triggered during manual user input
+* `change` event fired when input value changed, it wasn't in some cases
+
+Locale changes:
+* Added Arabic, Norwegian, Georgian
+* `clear` for French
+* `today` and `clear` for Bahasa
+* `today` and `clear` for Portuguese (both `pt` and `pt-BR`)
+* `format` for Turkish
+* `format` and `weekStart` for Swedish
+* `format` and `weekStart` for Simplified Chinese; `today`, `format`, and `weekStart` for Traditional Chinese
+* Fixed typo in Serbian latin (`rs-latin`)
+* More appropriate use of Traditional Chinese habit in `zh-TW`
+
+
+1.1.3
+ ----------
+
+ Clicking the clear button now triggers the input's `change` and datepicker's `changeDate` events.
+ Fixed a bug that broke the event-attached `format` function.
+
+
+1.1.2
+----------
+
+Botched release, no change from 1.1.1
+
+
+1.1.1
+----------
+
+Fixes a bug when setting startDate or endDate during initialization.
+
+
+1.1.0
+----------
+
+New features:
+* Date range picker.
+* Data API / noConflict.
+* `getDate` and `setDate` methods.
+* `format` method for events; this allows you to easily format the `date` associated with the event.
+* New options:
+ * `beforeShowDay` option: a dev-provided function that can enable/disable dates, add css classes, and add tooltips.
+ * `clearBtn`, a button for resetting the picker.
+
+Internal changes:
+* Cleaner and more reliable method for extracting options from all potential sources (defaults, locale overrides, data-attrs, and instantiation options, in that order). This also populates `$.fn.datepicker.defaults` with the default values, and uses this hash as the actual source of defaults, meaning you can globally change the default value for a given option.
+
+Bugs squashed:
+* Resolved a conflict with bootstrap's native `.switch` class.
+* Fixed a bug with components where they would be stuck with a stale value when editing the value manually.
+* The `date` attributes on events are now local dates instead of internal UTC dates.
+* Separate `Date` objects for internal selected and view date references.
+* Clicking multiple times inside inputs no longer hides the picker.
+
+Minor improvements:
+* Better text color for highlighted "today" date.
+* Last year in decade view now marked as "new" instead of "old".
+* Formats now properly handle trailing separators.
+
+Locale changes:
+* Added Albanian, Estonian, and Macedonian
+* Added `weekStart` for Russian
+* Added `weekStart` and `format` for Finnish
+
+Potentially backward-incompatible changes:
+* Options revamp:
+ * This fixes bugs in the correlation of some data-attrs to their associated option names. If you use `data-date-weekstart`, `data-date-startdate`, or `data-date-enddate`, you should update these to `data-date-week-start`, `data-date-start-date`, or `data-date-end-date`, respectively.
+ * All options for datepicker are now properties on the datepicker's `o` property; options are no longer stored on the Datepicker instance itself. If you have code that accesses options stored on the datepicker instance (eg, `datepicker.format`), you will need to update it to access those options via the `o` property (eg, `datepicker.o.format`). "Raw" options are available via the `_o` property.
+
+1.0.2
+----------
+
+Small optimizations release
+
+* Reduced the number of times `update` is called on initialization.
+* Datepicker now detaches the picker dropdown when it is hidden, and appends it when shown. This removes the picker from the DOM when it is not in use.
+* No longer listens to document/window events unless picker is visible.
+
+v1.0.1
+------
+
+* Support for [Bower](http://twitter.github.com/bower/)
+* Component pickers are now aligned under the input, not the add-on element.
+* Japanese locale now has "today" and "format".
+* "remove" method removes `.data().date` if the datepicker is on a non-input.
+* Events on initialized elements are no longer blocked from bubbling up the DOM (jQuery.live et al can now catch the events).
+* Component triggers now include `.btn` in addition to `.add-on`.
+* Updates to README contents.
+
+v1.0.0
+------
+
+Initial release:
+
+* format option
+* weekStart option
+* calendarWeeks option
+* startDate / endDate options
+* daysOfWeekDisabled option
+* autoclose option
+* startView / mnViewMode options
+* todayBtn / todayHighlight options
+* keyboardNavigation option
+* language option
+* forceParse option
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/composer.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/composer.json
new file mode 100644
index 0000000..2c7a750
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/composer.json
@@ -0,0 +1,39 @@
+{
+ "name": "eternicode/bootstrap-datepicker",
+ "description": "A datepicker for twitter bootstrap forked from Stefan Petre's (of eyecon.ro)",
+ "license": "Apache-2.0",
+ "keywords": [
+ "bootstrap",
+ "datepicker"
+ ],
+ "authors": [
+ {
+ "name": "Andrew Rowls",
+ "email": "eternicode@gmail.com"
+ },
+ {
+ "name": "Community",
+ "homepage": "https://github.com/eternicode/bootstrap-datepicker/contributors"
+ }
+ ],
+ "type": "component",
+ "require": {
+ "robloach/component-installer": "*",
+ "components/bootstrap" : ">=3.0, <4.0",
+ "components/jquery": ">=1.7.1"
+ },
+ "extra": {
+ "component": {
+ "scripts": [
+ "js/bootstrap-datepicker.js"
+ ],
+ "styles": [
+ "dist/css/bootstrap-datepicker.css",
+ "dist/css/bootstrap-datepicker3.css"
+ ],
+ "files": [
+ "js/locales/bootstrap-datepicker.*.js"
+ ]
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/CONTRIBUTING.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/CONTRIBUTING.md
new file mode 100644
index 0000000..775c644
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/CONTRIBUTING.md
@@ -0,0 +1,41 @@
+# Contributing
+
+## Support requests
+
+The issue tracker is not the place for support requests. If you get stuck with bootstrap-datepicker, it's very likely that the fine folks at [StackOverflow](http://stackoverflow.com/) will be able to help you; simply describe the problem you're having and provide them a link to the repo (so they know what code you're using). Another option is to post to the [bootstrap-datepicker google group](https://groups.google.com/group/bootstrap-datepicker).
+
+## Issues
+
+If you've found a bug in bootstrap-datepicker, we want to know about it! However, please keep the following in mind:
+
+* This is not the bootstrap-datepicker from [eyecon.ro](http://www.eyecon.ro/bootstrap-datepicker/). Stefan provided the initial code for bootstrap-datepicker, but this repo is divergent from his codebase. Please make sure you're using either the latest tagged version or the latest master from https://github.com/eternicode/bootstrap-datepicker/ .
+* A working example of the bug you've found is *much* easier to work with than a description alone. If possible, please provide a link to a demonstration of the bug, perhaps using http://jsfiddle.net/ .
+ * CDN-backed assets can be found at http://bsdp-assets.blackcherry.us/ . These should be used *only* for building test cases, as they may be removed or changed at any time.
+* Finally, it's possible someone else has already reported the same bug you have. Please search the issue tracker for similar issues before posting your own. Thanks!
+
+## Pull Requests
+
+Patches welcome!
+
+For all cases, you should have your own fork of the repo.
+
+To submit a pull request for a **new feature**:
+
+1. Run the tests. Every pull request for a new feature should have an accompanying unit test and docs changes. See the README in the `tests/` and `docs/` directories for details.
+2. Create a new branch off of the `master` branch for your feature. This is particularly helpful when you want to submit multiple pull requests.
+3. Add a test (or multiple tests) for your feature. Again, see `tests/README.md`.
+4. Add your new feature, making the test pass.
+5. Push to your fork and submit the pull request!
+
+To submit a **bug fix**:
+
+1. Create a new branch off of the `master` branch.
+2. Add a test that demonstrates the bug.
+3. Make the test pass.
+4. Push to your fork and submit the pull request!
+
+To submit a **documentation fix**:
+
+1. Create a new branch off of the `master` branch.
+2. Add your documentation fixes (no tests required).
+3. Push to your fork and submit the pull request!
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.css
new file mode 100644
index 0000000..4fbcbf1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.css
@@ -0,0 +1,473 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */
+.datepicker {
+ padding: 4px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ direction: ltr;
+}
+.datepicker-inline {
+ width: 220px;
+}
+.datepicker.datepicker-rtl {
+ direction: rtl;
+}
+.datepicker.datepicker-rtl table tr td span {
+ float: right;
+}
+.datepicker-dropdown {
+ top: 0;
+ left: 0;
+}
+.datepicker-dropdown:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-top: 0;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+}
+.datepicker-dropdown:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #ffffff;
+ border-top: 0;
+ position: absolute;
+}
+.datepicker-dropdown.datepicker-orient-left:before {
+ left: 6px;
+}
+.datepicker-dropdown.datepicker-orient-left:after {
+ left: 7px;
+}
+.datepicker-dropdown.datepicker-orient-right:before {
+ right: 6px;
+}
+.datepicker-dropdown.datepicker-orient-right:after {
+ right: 7px;
+}
+.datepicker-dropdown.datepicker-orient-top:before {
+ top: -7px;
+}
+.datepicker-dropdown.datepicker-orient-top:after {
+ top: -6px;
+}
+.datepicker-dropdown.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #999;
+}
+.datepicker-dropdown.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #ffffff;
+}
+.datepicker > div {
+ display: none;
+}
+.datepicker.days .datepicker-days,
+.datepicker.months .datepicker-months,
+.datepicker.years .datepicker-years {
+ display: block;
+}
+.datepicker table {
+ margin: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.datepicker td,
+.datepicker th {
+ text-align: center;
+ width: 20px;
+ height: 20px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ border: none;
+}
+.table-striped .datepicker table tr td,
+.table-striped .datepicker table tr th {
+ background-color: transparent;
+}
+.datepicker table tr td.day:hover,
+.datepicker table tr td.day.focused {
+ background: #eeeeee;
+ cursor: pointer;
+}
+.datepicker table tr td.old,
+.datepicker table tr td.new {
+ color: #999999;
+}
+.datepicker table tr td.disabled,
+.datepicker table tr td.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td.today,
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today.disabled:hover {
+ background-color: #fde19a;
+ background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
+ background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
+ background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
+ background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
+ background-image: linear-gradient(top, #fdd49a, #fdf59a);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
+ border-color: #fdf59a #fdf59a #fbed50;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ color: #000;
+}
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today:hover:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today:hover.disabled,
+.datepicker table tr td.today.disabled.disabled,
+.datepicker table tr td.today.disabled:hover.disabled,
+.datepicker table tr td.today[disabled],
+.datepicker table tr td.today:hover[disabled],
+.datepicker table tr td.today.disabled[disabled],
+.datepicker table tr td.today.disabled:hover[disabled] {
+ background-color: #fdf59a;
+}
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active {
+ background-color: #fbf069 \9;
+}
+.datepicker table tr td.today:hover:hover {
+ color: #000;
+}
+.datepicker table tr td.today.active:hover {
+ color: #fff;
+}
+.datepicker table tr td.range,
+.datepicker table tr td.range:hover,
+.datepicker table tr td.range.disabled,
+.datepicker table tr td.range.disabled:hover {
+ background: #eeeeee;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today,
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today.disabled:hover {
+ background-color: #f3d17a;
+ background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
+ background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
+ background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
+ background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
+ background-image: linear-gradient(top, #f3c17a, #f3e97a);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
+ border-color: #f3e97a #f3e97a #edde34;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today:hover:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today:hover.disabled,
+.datepicker table tr td.range.today.disabled.disabled,
+.datepicker table tr td.range.today.disabled:hover.disabled,
+.datepicker table tr td.range.today[disabled],
+.datepicker table tr td.range.today:hover[disabled],
+.datepicker table tr td.range.today.disabled[disabled],
+.datepicker table tr td.range.today.disabled:hover[disabled] {
+ background-color: #f3e97a;
+}
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active {
+ background-color: #efe24b \9;
+}
+.datepicker table tr td.selected,
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected.disabled:hover {
+ background-color: #9e9e9e;
+ background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
+ background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
+ background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
+ background-image: -o-linear-gradient(top, #b3b3b3, #808080);
+ background-image: linear-gradient(top, #b3b3b3, #808080);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
+ border-color: #808080 #808080 #595959;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected:hover:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected:hover.disabled,
+.datepicker table tr td.selected.disabled.disabled,
+.datepicker table tr td.selected.disabled:hover.disabled,
+.datepicker table tr td.selected[disabled],
+.datepicker table tr td.selected:hover[disabled],
+.datepicker table tr td.selected.disabled[disabled],
+.datepicker table tr td.selected.disabled:hover[disabled] {
+ background-color: #808080;
+}
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active {
+ background-color: #666666 \9;
+}
+.datepicker table tr td.active,
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active.disabled:hover {
+ background-color: #006dcc;
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(top, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active:hover:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active:hover.disabled,
+.datepicker table tr td.active.disabled.disabled,
+.datepicker table tr td.active.disabled:hover.disabled,
+.datepicker table tr td.active[disabled],
+.datepicker table tr td.active:hover[disabled],
+.datepicker table tr td.active.disabled[disabled],
+.datepicker table tr td.active.disabled:hover[disabled] {
+ background-color: #0044cc;
+}
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active {
+ background-color: #003399 \9;
+}
+.datepicker table tr td span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.datepicker table tr td span:hover {
+ background: #eeeeee;
+}
+.datepicker table tr td span.disabled,
+.datepicker table tr td span.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td span.active,
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active.disabled:hover {
+ background-color: #006dcc;
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(top, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active:hover:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active:hover.disabled,
+.datepicker table tr td span.active.disabled.disabled,
+.datepicker table tr td span.active.disabled:hover.disabled,
+.datepicker table tr td span.active[disabled],
+.datepicker table tr td span.active:hover[disabled],
+.datepicker table tr td span.active.disabled[disabled],
+.datepicker table tr td span.active.disabled:hover[disabled] {
+ background-color: #0044cc;
+}
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active {
+ background-color: #003399 \9;
+}
+.datepicker table tr td span.old,
+.datepicker table tr td span.new {
+ color: #999999;
+}
+.datepicker .datepicker-switch {
+ width: 145px;
+}
+.datepicker thead tr:first-child th,
+.datepicker tfoot tr th {
+ cursor: pointer;
+}
+.datepicker thead tr:first-child th:hover,
+.datepicker tfoot tr th:hover {
+ background: #eeeeee;
+}
+.datepicker .cw {
+ font-size: 10px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+}
+.datepicker thead tr:first-child .cw {
+ cursor: default;
+ background-color: transparent;
+}
+.input-append.date .add-on,
+.input-prepend.date .add-on {
+ cursor: pointer;
+}
+.input-append.date .add-on i,
+.input-prepend.date .add-on i {
+ margin-top: 3px;
+}
+.input-daterange input {
+ text-align: center;
+}
+.input-daterange input:first-child {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.input-daterange input:last-child {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.input-daterange .add-on {
+ display: inline-block;
+ width: auto;
+ min-width: 16px;
+ height: 18px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: 18px;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ vertical-align: middle;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
+ margin-left: -5px;
+ margin-right: -5px;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css
new file mode 100644
index 0000000..b5c5a53
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css
@@ -0,0 +1,8 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */
+.datepicker{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker td,.datepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day:hover,.datepicker table tr td.day.focused{background:#eee;cursor:pointer}.datepicker table tr td.old,.datepicker table tr td.new{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today:hover,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover{background-color:#fde19a;background-image:-moz-linear-gradient(top,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(top,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(top,#fdd49a,#fdf59a);background-image:-o-linear-gradient(top,#fdd49a,#fdf59a);background-image:linear-gradient(top,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#000}.datepicker table tr td.today:hover,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today[disabled],.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled:hover[disabled]{background-color:#fdf59a}.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active{background-color:#fbf069 \9}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range:hover,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover{background:#eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover{background-color:#f3d17a;background-image:-moz-linear-gradient(top,#f3c17a,#f3e97a);background-image:-ms-linear-gradient(top,#f3c17a,#f3e97a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3c17a),to(#f3e97a));background-image:-webkit-linear-gradient(top,#f3c17a,#f3e97a);background-image:-o-linear-gradient(top,#f3c17a,#f3e97a);background-image:linear-gradient(top,#f3c17a,#f3e97a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);border-color:#f3e97a #f3e97a #edde34;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled:hover[disabled]{background-color:#f3e97a}.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active{background-color:#efe24b \9}.datepicker table tr td.selected,.datepicker table tr td.selected:hover,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover{background-color:#9e9e9e;background-image:-moz-linear-gradient(top,#b3b3b3,gray);background-image:-ms-linear-gradient(top,#b3b3b3,gray);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3b3b3),to(gray));background-image:-webkit-linear-gradient(top,#b3b3b3,gray);background-image:-o-linear-gradient(top,#b3b3b3,gray);background-image:linear-gradient(top,#b3b3b3,gray);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);border-color:gray #808080 #595959;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled:hover[disabled]{background-color:gray}.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active{background-color:#666 \9}.datepicker table tr td.active,.datepicker table tr td.active:hover,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active:hover,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active[disabled],.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled:hover[disabled]{background-color:#04c}.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active{background-color:#039 \9}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled:hover[disabled]{background-color:#04c}.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active{background-color:#039 \9}.datepicker table tr td span.old,.datepicker table tr td span.new{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker thead tr:first-child th,.datepicker tfoot tr th{cursor:pointer}.datepicker thead tr:first-child th:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-append.date .add-on,.input-prepend.date .add-on{cursor:pointer}.input-append.date .add-on i,.input-prepend.date .add-on i{margin-top:3px}.input-daterange input{text-align:center}.input-daterange input:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-daterange input:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-daterange .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:400;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc;margin-left:-5px;margin-right:-5px}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.css
new file mode 100644
index 0000000..cc8e53f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.css
@@ -0,0 +1,506 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */
+.datepicker {
+ padding: 4px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ direction: ltr;
+}
+.datepicker-inline {
+ width: 220px;
+}
+.datepicker.datepicker-rtl {
+ direction: rtl;
+}
+.datepicker.datepicker-rtl table tr td span {
+ float: right;
+}
+.datepicker-dropdown {
+ top: 0;
+ left: 0;
+}
+.datepicker-dropdown:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-top: 0;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+}
+.datepicker-dropdown:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #ffffff;
+ border-top: 0;
+ position: absolute;
+}
+.datepicker-dropdown.datepicker-orient-left:before {
+ left: 6px;
+}
+.datepicker-dropdown.datepicker-orient-left:after {
+ left: 7px;
+}
+.datepicker-dropdown.datepicker-orient-right:before {
+ right: 6px;
+}
+.datepicker-dropdown.datepicker-orient-right:after {
+ right: 7px;
+}
+.datepicker-dropdown.datepicker-orient-top:before {
+ top: -7px;
+}
+.datepicker-dropdown.datepicker-orient-top:after {
+ top: -6px;
+}
+.datepicker-dropdown.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #999;
+}
+.datepicker-dropdown.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #ffffff;
+}
+.datepicker > div {
+ display: none;
+}
+.datepicker.days .datepicker-days,
+.datepicker.months .datepicker-months,
+.datepicker.years .datepicker-years {
+ display: block;
+}
+.datepicker table {
+ margin: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.datepicker td,
+.datepicker th {
+ text-align: center;
+ width: 20px;
+ height: 20px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ border: none;
+}
+.table-striped .datepicker table tr td,
+.table-striped .datepicker table tr th {
+ background-color: transparent;
+}
+.datepicker table tr td.day:hover,
+.datepicker table tr td.day.focused {
+ background: #eeeeee;
+ cursor: pointer;
+}
+.datepicker table tr td.old,
+.datepicker table tr td.new {
+ color: #999999;
+}
+.datepicker table tr td.disabled,
+.datepicker table tr td.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td.today,
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today.disabled:hover {
+ background-color: #fde19a;
+ background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
+ background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
+ background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
+ background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
+ background-image: linear-gradient(top, #fdd49a, #fdf59a);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
+ border-color: #fdf59a #fdf59a #fbed50;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ color: #000;
+}
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today:hover:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today:hover.disabled,
+.datepicker table tr td.today.disabled.disabled,
+.datepicker table tr td.today.disabled:hover.disabled,
+.datepicker table tr td.today[disabled],
+.datepicker table tr td.today:hover[disabled],
+.datepicker table tr td.today.disabled[disabled],
+.datepicker table tr td.today.disabled:hover[disabled] {
+ background-color: #fdf59a;
+}
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active {
+ background-color: #fbf069 \9;
+}
+.datepicker table tr td.today:hover:hover {
+ color: #000;
+}
+.datepicker table tr td.today.active:hover {
+ color: #fff;
+}
+.datepicker table tr td.range,
+.datepicker table tr td.range:hover,
+.datepicker table tr td.range.disabled,
+.datepicker table tr td.range.disabled:hover {
+ background: #eeeeee;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today,
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today.disabled:hover {
+ background-color: #f3d17a;
+ background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
+ background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
+ background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
+ background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
+ background-image: linear-gradient(top, #f3c17a, #f3e97a);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
+ border-color: #f3e97a #f3e97a #edde34;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today:hover:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today:hover.disabled,
+.datepicker table tr td.range.today.disabled.disabled,
+.datepicker table tr td.range.today.disabled:hover.disabled,
+.datepicker table tr td.range.today[disabled],
+.datepicker table tr td.range.today:hover[disabled],
+.datepicker table tr td.range.today.disabled[disabled],
+.datepicker table tr td.range.today.disabled:hover[disabled] {
+ background-color: #f3e97a;
+}
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active {
+ background-color: #efe24b \9;
+}
+.datepicker table tr td.selected,
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected.disabled:hover {
+ background-color: #9e9e9e;
+ background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
+ background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
+ background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
+ background-image: -o-linear-gradient(top, #b3b3b3, #808080);
+ background-image: linear-gradient(top, #b3b3b3, #808080);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
+ border-color: #808080 #808080 #595959;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected:hover:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected:hover.disabled,
+.datepicker table tr td.selected.disabled.disabled,
+.datepicker table tr td.selected.disabled:hover.disabled,
+.datepicker table tr td.selected[disabled],
+.datepicker table tr td.selected:hover[disabled],
+.datepicker table tr td.selected.disabled[disabled],
+.datepicker table tr td.selected.disabled:hover[disabled] {
+ background-color: #808080;
+}
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active {
+ background-color: #666666 \9;
+}
+.datepicker table tr td.active,
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active.disabled:hover {
+ background-color: #006dcc;
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(top, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active:hover:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active:hover.disabled,
+.datepicker table tr td.active.disabled.disabled,
+.datepicker table tr td.active.disabled:hover.disabled,
+.datepicker table tr td.active[disabled],
+.datepicker table tr td.active:hover[disabled],
+.datepicker table tr td.active.disabled[disabled],
+.datepicker table tr td.active.disabled:hover[disabled] {
+ background-color: #0044cc;
+}
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active {
+ background-color: #003399 \9;
+}
+.datepicker table tr td span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.datepicker table tr td span:hover {
+ background: #eeeeee;
+}
+.datepicker table tr td span.disabled,
+.datepicker table tr td span.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td span.active,
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active.disabled:hover {
+ background-color: #006dcc;
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(top, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active:hover:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active:hover.disabled,
+.datepicker table tr td span.active.disabled.disabled,
+.datepicker table tr td span.active.disabled:hover.disabled,
+.datepicker table tr td span.active[disabled],
+.datepicker table tr td span.active:hover[disabled],
+.datepicker table tr td span.active.disabled[disabled],
+.datepicker table tr td span.active.disabled:hover[disabled] {
+ background-color: #0044cc;
+}
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active {
+ background-color: #003399 \9;
+}
+.datepicker table tr td span.old,
+.datepicker table tr td span.new {
+ color: #999999;
+}
+.datepicker .datepicker-switch {
+ width: 145px;
+}
+.datepicker thead tr:first-child th,
+.datepicker tfoot tr th {
+ cursor: pointer;
+}
+.datepicker thead tr:first-child th:hover,
+.datepicker tfoot tr th:hover {
+ background: #eeeeee;
+}
+.datepicker .cw {
+ font-size: 10px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+}
+.datepicker thead tr:first-child .cw {
+ cursor: default;
+ background-color: transparent;
+}
+.input-append.date .add-on,
+.input-prepend.date .add-on {
+ cursor: pointer;
+}
+.input-append.date .add-on i,
+.input-prepend.date .add-on i {
+ margin-top: 3px;
+}
+.input-daterange input {
+ text-align: center;
+}
+.input-daterange input:first-child {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.input-daterange input:last-child {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.input-daterange .add-on {
+ display: inline-block;
+ width: auto;
+ min-width: 16px;
+ height: 20px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: 20px;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ vertical-align: middle;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
+ margin-left: -5px;
+ margin-right: -5px;
+}
+.datepicker.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ float: left;
+ display: none;
+ min-width: 160px;
+ list-style: none;
+ background-color: #ffffff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+ *border-right-width: 2px;
+ *border-bottom-width: 2px;
+ color: #333333;
+ font-size: 13px;
+ line-height: 20px;
+}
+.datepicker.dropdown-menu th,
+.datepicker.datepicker-inline th,
+.datepicker.dropdown-menu td,
+.datepicker.datepicker-inline td {
+ padding: 4px 5px;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.min.css
new file mode 100644
index 0000000..f81545c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.min.css
@@ -0,0 +1,8 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */
+.datepicker{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker td,.datepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day:hover,.datepicker table tr td.day.focused{background:#eee;cursor:pointer}.datepicker table tr td.old,.datepicker table tr td.new{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today:hover,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover{background-color:#fde19a;background-image:-moz-linear-gradient(top,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(top,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(top,#fdd49a,#fdf59a);background-image:-o-linear-gradient(top,#fdd49a,#fdf59a);background-image:linear-gradient(top,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#000}.datepicker table tr td.today:hover,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today[disabled],.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled:hover[disabled]{background-color:#fdf59a}.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active{background-color:#fbf069 \9}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range:hover,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover{background:#eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover{background-color:#f3d17a;background-image:-moz-linear-gradient(top,#f3c17a,#f3e97a);background-image:-ms-linear-gradient(top,#f3c17a,#f3e97a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3c17a),to(#f3e97a));background-image:-webkit-linear-gradient(top,#f3c17a,#f3e97a);background-image:-o-linear-gradient(top,#f3c17a,#f3e97a);background-image:linear-gradient(top,#f3c17a,#f3e97a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);border-color:#f3e97a #f3e97a #edde34;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled:hover[disabled]{background-color:#f3e97a}.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active{background-color:#efe24b \9}.datepicker table tr td.selected,.datepicker table tr td.selected:hover,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover{background-color:#9e9e9e;background-image:-moz-linear-gradient(top,#b3b3b3,gray);background-image:-ms-linear-gradient(top,#b3b3b3,gray);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3b3b3),to(gray));background-image:-webkit-linear-gradient(top,#b3b3b3,gray);background-image:-o-linear-gradient(top,#b3b3b3,gray);background-image:linear-gradient(top,#b3b3b3,gray);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);border-color:gray #808080 #595959;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled:hover[disabled]{background-color:gray}.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active{background-color:#666 \9}.datepicker table tr td.active,.datepicker table tr td.active:hover,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active:hover,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active[disabled],.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled:hover[disabled]{background-color:#04c}.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active{background-color:#039 \9}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled:hover[disabled]{background-color:#04c}.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active{background-color:#039 \9}.datepicker table tr td span.old,.datepicker table tr td span.new{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker thead tr:first-child th,.datepicker tfoot tr th{cursor:pointer}.datepicker thead tr:first-child th:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-append.date .add-on,.input-prepend.date .add-on{cursor:pointer}.input-append.date .add-on i,.input-prepend.date .add-on i{margin-top:3px}.input-daterange input{text-align:center}.input-daterange input:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-daterange input:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-daterange .add-on{display:inline-block;width:auto;min-width:16px;height:20px;padding:4px 5px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-size:13px;line-height:20px}.datepicker.dropdown-menu th,.datepicker.datepicker-inline th,.datepicker.dropdown-menu td,.datepicker.datepicker-inline td{padding:4px 5px}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css
new file mode 100644
index 0000000..c2fdeaf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css
@@ -0,0 +1,752 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */
+.datepicker {
+ padding: 4px;
+ border-radius: 4px;
+ direction: ltr;
+}
+.datepicker-inline {
+ width: 220px;
+}
+.datepicker.datepicker-rtl {
+ direction: rtl;
+}
+.datepicker.datepicker-rtl table tr td span {
+ float: right;
+}
+.datepicker-dropdown {
+ top: 0;
+ left: 0;
+}
+.datepicker-dropdown:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-top: 0;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+}
+.datepicker-dropdown:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-top: 0;
+ position: absolute;
+}
+.datepicker-dropdown.datepicker-orient-left:before {
+ left: 6px;
+}
+.datepicker-dropdown.datepicker-orient-left:after {
+ left: 7px;
+}
+.datepicker-dropdown.datepicker-orient-right:before {
+ right: 6px;
+}
+.datepicker-dropdown.datepicker-orient-right:after {
+ right: 7px;
+}
+.datepicker-dropdown.datepicker-orient-top:before {
+ top: -7px;
+}
+.datepicker-dropdown.datepicker-orient-top:after {
+ top: -6px;
+}
+.datepicker-dropdown.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #999;
+}
+.datepicker-dropdown.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #fff;
+}
+.datepicker > div {
+ display: none;
+}
+.datepicker.days .datepicker-days,
+.datepicker.months .datepicker-months,
+.datepicker.years .datepicker-years {
+ display: block;
+}
+.datepicker table {
+ margin: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.datepicker table tr td,
+.datepicker table tr th {
+ text-align: center;
+ width: 30px;
+ height: 30px;
+ border-radius: 4px;
+ border: none;
+}
+.table-striped .datepicker table tr td,
+.table-striped .datepicker table tr th {
+ background-color: transparent;
+}
+.datepicker table tr td.day:hover,
+.datepicker table tr td.day.focused {
+ background: #eeeeee;
+ cursor: pointer;
+}
+.datepicker table tr td.old,
+.datepicker table tr td.new {
+ color: #999999;
+}
+.datepicker table tr td.disabled,
+.datepicker table tr td.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td.today,
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today.disabled:hover {
+ color: #000000;
+ background-color: #ffdb99;
+ border-color: #ffb733;
+}
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today:hover:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today:focus,
+.datepicker table tr td.today:hover:focus,
+.datepicker table tr td.today.disabled:focus,
+.datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.today,
+.open .dropdown-toggle.datepicker table tr td.today:hover,
+.open .dropdown-toggle.datepicker table tr td.today.disabled,
+.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+ color: #000000;
+ background-color: #ffcd70;
+ border-color: #f59e00;
+}
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.today,
+.open .dropdown-toggle.datepicker table tr td.today:hover,
+.open .dropdown-toggle.datepicker table tr td.today.disabled,
+.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today:hover.disabled,
+.datepicker table tr td.today.disabled.disabled,
+.datepicker table tr td.today.disabled:hover.disabled,
+.datepicker table tr td.today[disabled],
+.datepicker table tr td.today:hover[disabled],
+.datepicker table tr td.today.disabled[disabled],
+.datepicker table tr td.today.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.today,
+fieldset[disabled] .datepicker table tr td.today:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today:hover.disabled:hover,
+.datepicker table tr td.today.disabled.disabled:hover,
+.datepicker table tr td.today.disabled:hover.disabled:hover,
+.datepicker table tr td.today[disabled]:hover,
+.datepicker table tr td.today:hover[disabled]:hover,
+.datepicker table tr td.today.disabled[disabled]:hover,
+.datepicker table tr td.today.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.today:hover,
+fieldset[disabled] .datepicker table tr td.today:hover:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today.disabled:focus,
+.datepicker table tr td.today:hover.disabled:focus,
+.datepicker table tr td.today.disabled.disabled:focus,
+.datepicker table tr td.today.disabled:hover.disabled:focus,
+.datepicker table tr td.today[disabled]:focus,
+.datepicker table tr td.today:hover[disabled]:focus,
+.datepicker table tr td.today.disabled[disabled]:focus,
+.datepicker table tr td.today.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.today:focus,
+fieldset[disabled] .datepicker table tr td.today:hover:focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today:hover.disabled:active,
+.datepicker table tr td.today.disabled.disabled:active,
+.datepicker table tr td.today.disabled:hover.disabled:active,
+.datepicker table tr td.today[disabled]:active,
+.datepicker table tr td.today:hover[disabled]:active,
+.datepicker table tr td.today.disabled[disabled]:active,
+.datepicker table tr td.today.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.today:active,
+fieldset[disabled] .datepicker table tr td.today:hover:active,
+fieldset[disabled] .datepicker table tr td.today.disabled:active,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today:hover.disabled.active,
+.datepicker table tr td.today.disabled.disabled.active,
+.datepicker table tr td.today.disabled:hover.disabled.active,
+.datepicker table tr td.today[disabled].active,
+.datepicker table tr td.today:hover[disabled].active,
+.datepicker table tr td.today.disabled[disabled].active,
+.datepicker table tr td.today.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.today.active,
+fieldset[disabled] .datepicker table tr td.today:hover.active,
+fieldset[disabled] .datepicker table tr td.today.disabled.active,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
+ background-color: #ffdb99;
+ border-color: #ffb733;
+}
+.datepicker table tr td.today:hover:hover {
+ color: #000;
+}
+.datepicker table tr td.today.active:hover {
+ color: #fff;
+}
+.datepicker table tr td.range,
+.datepicker table tr td.range:hover,
+.datepicker table tr td.range.disabled,
+.datepicker table tr td.range.disabled:hover {
+ background: #eeeeee;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today,
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today.disabled:hover {
+ color: #000000;
+ background-color: #f7ca77;
+ border-color: #f1a417;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today:hover:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today:focus,
+.datepicker table tr td.range.today:hover:focus,
+.datepicker table tr td.range.today.disabled:focus,
+.datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.range.today,
+.open .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
+.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+ color: #000000;
+ background-color: #f4bb51;
+ border-color: #bf800c;
+}
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.range.today,
+.open .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
+.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today:hover.disabled,
+.datepicker table tr td.range.today.disabled.disabled,
+.datepicker table tr td.range.today.disabled:hover.disabled,
+.datepicker table tr td.range.today[disabled],
+.datepicker table tr td.range.today:hover[disabled],
+.datepicker table tr td.range.today.disabled[disabled],
+.datepicker table tr td.range.today.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.range.today,
+fieldset[disabled] .datepicker table tr td.range.today:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today:hover.disabled:hover,
+.datepicker table tr td.range.today.disabled.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover.disabled:hover,
+.datepicker table tr td.range.today[disabled]:hover,
+.datepicker table tr td.range.today:hover[disabled]:hover,
+.datepicker table tr td.range.today.disabled[disabled]:hover,
+.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.range.today:hover,
+fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today.disabled:focus,
+.datepicker table tr td.range.today:hover.disabled:focus,
+.datepicker table tr td.range.today.disabled.disabled:focus,
+.datepicker table tr td.range.today.disabled:hover.disabled:focus,
+.datepicker table tr td.range.today[disabled]:focus,
+.datepicker table tr td.range.today:hover[disabled]:focus,
+.datepicker table tr td.range.today.disabled[disabled]:focus,
+.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.range.today:focus,
+fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today:hover.disabled:active,
+.datepicker table tr td.range.today.disabled.disabled:active,
+.datepicker table tr td.range.today.disabled:hover.disabled:active,
+.datepicker table tr td.range.today[disabled]:active,
+.datepicker table tr td.range.today:hover[disabled]:active,
+.datepicker table tr td.range.today.disabled[disabled]:active,
+.datepicker table tr td.range.today.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.range.today:active,
+fieldset[disabled] .datepicker table tr td.range.today:hover:active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today:hover.disabled.active,
+.datepicker table tr td.range.today.disabled.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.disabled.active,
+.datepicker table tr td.range.today[disabled].active,
+.datepicker table tr td.range.today:hover[disabled].active,
+.datepicker table tr td.range.today.disabled[disabled].active,
+.datepicker table tr td.range.today.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.range.today.active,
+fieldset[disabled] .datepicker table tr td.range.today:hover.active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
+ background-color: #f7ca77;
+ border-color: #f1a417;
+}
+.datepicker table tr td.selected,
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected.disabled:hover {
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #555555;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected:hover:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected:focus,
+.datepicker table tr td.selected:hover:focus,
+.datepicker table tr td.selected.disabled:focus,
+.datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.selected,
+.open .dropdown-toggle.datepicker table tr td.selected:hover,
+.open .dropdown-toggle.datepicker table tr td.selected.disabled,
+.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+ color: #ffffff;
+ background-color: #858585;
+ border-color: #373737;
+}
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.selected,
+.open .dropdown-toggle.datepicker table tr td.selected:hover,
+.open .dropdown-toggle.datepicker table tr td.selected.disabled,
+.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected:hover.disabled,
+.datepicker table tr td.selected.disabled.disabled,
+.datepicker table tr td.selected.disabled:hover.disabled,
+.datepicker table tr td.selected[disabled],
+.datepicker table tr td.selected:hover[disabled],
+.datepicker table tr td.selected.disabled[disabled],
+.datepicker table tr td.selected.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.selected,
+fieldset[disabled] .datepicker table tr td.selected:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected:hover.disabled:hover,
+.datepicker table tr td.selected.disabled.disabled:hover,
+.datepicker table tr td.selected.disabled:hover.disabled:hover,
+.datepicker table tr td.selected[disabled]:hover,
+.datepicker table tr td.selected:hover[disabled]:hover,
+.datepicker table tr td.selected.disabled[disabled]:hover,
+.datepicker table tr td.selected.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.selected:hover,
+fieldset[disabled] .datepicker table tr td.selected:hover:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected.disabled:focus,
+.datepicker table tr td.selected:hover.disabled:focus,
+.datepicker table tr td.selected.disabled.disabled:focus,
+.datepicker table tr td.selected.disabled:hover.disabled:focus,
+.datepicker table tr td.selected[disabled]:focus,
+.datepicker table tr td.selected:hover[disabled]:focus,
+.datepicker table tr td.selected.disabled[disabled]:focus,
+.datepicker table tr td.selected.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.selected:focus,
+fieldset[disabled] .datepicker table tr td.selected:hover:focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected:hover.disabled:active,
+.datepicker table tr td.selected.disabled.disabled:active,
+.datepicker table tr td.selected.disabled:hover.disabled:active,
+.datepicker table tr td.selected[disabled]:active,
+.datepicker table tr td.selected:hover[disabled]:active,
+.datepicker table tr td.selected.disabled[disabled]:active,
+.datepicker table tr td.selected.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.selected:active,
+fieldset[disabled] .datepicker table tr td.selected:hover:active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected:hover.disabled.active,
+.datepicker table tr td.selected.disabled.disabled.active,
+.datepicker table tr td.selected.disabled:hover.disabled.active,
+.datepicker table tr td.selected[disabled].active,
+.datepicker table tr td.selected:hover[disabled].active,
+.datepicker table tr td.selected.disabled[disabled].active,
+.datepicker table tr td.selected.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.selected.active,
+fieldset[disabled] .datepicker table tr td.selected:hover.active,
+fieldset[disabled] .datepicker table tr td.selected.disabled.active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
+ background-color: #999999;
+ border-color: #555555;
+}
+.datepicker table tr td.active,
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active.disabled:hover {
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #357ebd;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active:hover:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active:focus,
+.datepicker table tr td.active:hover:focus,
+.datepicker table tr td.active.disabled:focus,
+.datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.active,
+.open .dropdown-toggle.datepicker table tr td.active:hover,
+.open .dropdown-toggle.datepicker table tr td.active.disabled,
+.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+ color: #ffffff;
+ background-color: #3276b1;
+ border-color: #285e8e;
+}
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.active,
+.open .dropdown-toggle.datepicker table tr td.active:hover,
+.open .dropdown-toggle.datepicker table tr td.active.disabled,
+.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active:hover.disabled,
+.datepicker table tr td.active.disabled.disabled,
+.datepicker table tr td.active.disabled:hover.disabled,
+.datepicker table tr td.active[disabled],
+.datepicker table tr td.active:hover[disabled],
+.datepicker table tr td.active.disabled[disabled],
+.datepicker table tr td.active.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.active,
+fieldset[disabled] .datepicker table tr td.active:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active:hover.disabled:hover,
+.datepicker table tr td.active.disabled.disabled:hover,
+.datepicker table tr td.active.disabled:hover.disabled:hover,
+.datepicker table tr td.active[disabled]:hover,
+.datepicker table tr td.active:hover[disabled]:hover,
+.datepicker table tr td.active.disabled[disabled]:hover,
+.datepicker table tr td.active.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.active:hover,
+fieldset[disabled] .datepicker table tr td.active:hover:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active.disabled:focus,
+.datepicker table tr td.active:hover.disabled:focus,
+.datepicker table tr td.active.disabled.disabled:focus,
+.datepicker table tr td.active.disabled:hover.disabled:focus,
+.datepicker table tr td.active[disabled]:focus,
+.datepicker table tr td.active:hover[disabled]:focus,
+.datepicker table tr td.active.disabled[disabled]:focus,
+.datepicker table tr td.active.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.active:focus,
+fieldset[disabled] .datepicker table tr td.active:hover:focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active:hover.disabled:active,
+.datepicker table tr td.active.disabled.disabled:active,
+.datepicker table tr td.active.disabled:hover.disabled:active,
+.datepicker table tr td.active[disabled]:active,
+.datepicker table tr td.active:hover[disabled]:active,
+.datepicker table tr td.active.disabled[disabled]:active,
+.datepicker table tr td.active.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.active:active,
+fieldset[disabled] .datepicker table tr td.active:hover:active,
+fieldset[disabled] .datepicker table tr td.active.disabled:active,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active:hover.disabled.active,
+.datepicker table tr td.active.disabled.disabled.active,
+.datepicker table tr td.active.disabled:hover.disabled.active,
+.datepicker table tr td.active[disabled].active,
+.datepicker table tr td.active:hover[disabled].active,
+.datepicker table tr td.active.disabled[disabled].active,
+.datepicker table tr td.active.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.active.active,
+fieldset[disabled] .datepicker table tr td.active:hover.active,
+fieldset[disabled] .datepicker table tr td.active.disabled.active,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
+ background-color: #428bca;
+ border-color: #357ebd;
+}
+.datepicker table tr td span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ border-radius: 4px;
+}
+.datepicker table tr td span:hover {
+ background: #eeeeee;
+}
+.datepicker table tr td span.disabled,
+.datepicker table tr td span.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td span.active,
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active.disabled:hover {
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #357ebd;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active:hover:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active:focus,
+.datepicker table tr td span.active:hover:focus,
+.datepicker table tr td span.active.disabled:focus,
+.datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td span.active,
+.open .dropdown-toggle.datepicker table tr td span.active:hover,
+.open .dropdown-toggle.datepicker table tr td span.active.disabled,
+.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+ color: #ffffff;
+ background-color: #3276b1;
+ border-color: #285e8e;
+}
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td span.active,
+.open .dropdown-toggle.datepicker table tr td span.active:hover,
+.open .dropdown-toggle.datepicker table tr td span.active.disabled,
+.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active:hover.disabled,
+.datepicker table tr td span.active.disabled.disabled,
+.datepicker table tr td span.active.disabled:hover.disabled,
+.datepicker table tr td span.active[disabled],
+.datepicker table tr td span.active:hover[disabled],
+.datepicker table tr td span.active.disabled[disabled],
+.datepicker table tr td span.active.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td span.active,
+fieldset[disabled] .datepicker table tr td span.active:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active:hover.disabled:hover,
+.datepicker table tr td span.active.disabled.disabled:hover,
+.datepicker table tr td span.active.disabled:hover.disabled:hover,
+.datepicker table tr td span.active[disabled]:hover,
+.datepicker table tr td span.active:hover[disabled]:hover,
+.datepicker table tr td span.active.disabled[disabled]:hover,
+.datepicker table tr td span.active.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td span.active:hover,
+fieldset[disabled] .datepicker table tr td span.active:hover:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active.disabled:focus,
+.datepicker table tr td span.active:hover.disabled:focus,
+.datepicker table tr td span.active.disabled.disabled:focus,
+.datepicker table tr td span.active.disabled:hover.disabled:focus,
+.datepicker table tr td span.active[disabled]:focus,
+.datepicker table tr td span.active:hover[disabled]:focus,
+.datepicker table tr td span.active.disabled[disabled]:focus,
+.datepicker table tr td span.active.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td span.active:focus,
+fieldset[disabled] .datepicker table tr td span.active:hover:focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active:hover.disabled:active,
+.datepicker table tr td span.active.disabled.disabled:active,
+.datepicker table tr td span.active.disabled:hover.disabled:active,
+.datepicker table tr td span.active[disabled]:active,
+.datepicker table tr td span.active:hover[disabled]:active,
+.datepicker table tr td span.active.disabled[disabled]:active,
+.datepicker table tr td span.active.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td span.active:active,
+fieldset[disabled] .datepicker table tr td span.active:hover:active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active:hover.disabled.active,
+.datepicker table tr td span.active.disabled.disabled.active,
+.datepicker table tr td span.active.disabled:hover.disabled.active,
+.datepicker table tr td span.active[disabled].active,
+.datepicker table tr td span.active:hover[disabled].active,
+.datepicker table tr td span.active.disabled[disabled].active,
+.datepicker table tr td span.active.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td span.active.active,
+fieldset[disabled] .datepicker table tr td span.active:hover.active,
+fieldset[disabled] .datepicker table tr td span.active.disabled.active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
+ background-color: #428bca;
+ border-color: #357ebd;
+}
+.datepicker table tr td span.old,
+.datepicker table tr td span.new {
+ color: #999999;
+}
+.datepicker .datepicker-switch {
+ width: 145px;
+}
+.datepicker thead tr:first-child th,
+.datepicker tfoot tr th {
+ cursor: pointer;
+}
+.datepicker thead tr:first-child th:hover,
+.datepicker tfoot tr th:hover {
+ background: #eeeeee;
+}
+.datepicker .cw {
+ font-size: 10px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+}
+.datepicker thead tr:first-child .cw {
+ cursor: default;
+ background-color: transparent;
+}
+.input-group.date .input-group-addon {
+ cursor: pointer;
+}
+.input-daterange {
+ width: 100%;
+}
+.input-daterange input {
+ text-align: center;
+}
+.input-daterange input:first-child {
+ border-radius: 3px 0 0 3px;
+}
+.input-daterange input:last-child {
+ border-radius: 0 3px 3px 0;
+}
+.input-daterange .input-group-addon {
+ width: auto;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: center;
+ text-shadow: 0 1px 0 #fff;
+ vertical-align: middle;
+ background-color: #eeeeee;
+ border: solid #cccccc;
+ border-width: 1px 0;
+ margin-left: -5px;
+ margin-right: -5px;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css
new file mode 100644
index 0000000..679e25c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css
@@ -0,0 +1,8 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */
+.datepicker{padding:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day:hover,.datepicker table tr td.day.focused{background:#eee;cursor:pointer}.datepicker table tr td.old,.datepicker table tr td.new{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today:hover,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today:hover,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today:hover,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today[disabled],.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today[disabled]:hover,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today[disabled].active,.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range:hover,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today[disabled]:hover,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected:hover,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected:hover,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected:hover,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected[disabled]:hover,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active:hover,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active:hover,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active[disabled],.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active[disabled]:hover,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active[disabled].active,.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active:hover,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active:hover,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active[disabled]:hover,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.old,.datepicker table tr td span.new{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker thead tr:first-child th,.datepicker tfoot tr th{cursor:pointer}.datepicker thead tr:first-child th:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.css
new file mode 100644
index 0000000..ca39e36
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.css
@@ -0,0 +1,783 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */
+.datepicker {
+ padding: 4px;
+ border-radius: 4px;
+ direction: ltr;
+}
+.datepicker-inline {
+ width: 220px;
+}
+.datepicker.datepicker-rtl {
+ direction: rtl;
+}
+.datepicker.datepicker-rtl table tr td span {
+ float: right;
+}
+.datepicker-dropdown {
+ top: 0;
+ left: 0;
+}
+.datepicker-dropdown:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-top: 0;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+}
+.datepicker-dropdown:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-top: 0;
+ position: absolute;
+}
+.datepicker-dropdown.datepicker-orient-left:before {
+ left: 6px;
+}
+.datepicker-dropdown.datepicker-orient-left:after {
+ left: 7px;
+}
+.datepicker-dropdown.datepicker-orient-right:before {
+ right: 6px;
+}
+.datepicker-dropdown.datepicker-orient-right:after {
+ right: 7px;
+}
+.datepicker-dropdown.datepicker-orient-top:before {
+ top: -7px;
+}
+.datepicker-dropdown.datepicker-orient-top:after {
+ top: -6px;
+}
+.datepicker-dropdown.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #999;
+}
+.datepicker-dropdown.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #fff;
+}
+.datepicker > div {
+ display: none;
+}
+.datepicker.days .datepicker-days,
+.datepicker.months .datepicker-months,
+.datepicker.years .datepicker-years {
+ display: block;
+}
+.datepicker table {
+ margin: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.datepicker table tr td,
+.datepicker table tr th {
+ text-align: center;
+ width: 30px;
+ height: 30px;
+ border-radius: 4px;
+ border: none;
+}
+.table-striped .datepicker table tr td,
+.table-striped .datepicker table tr th {
+ background-color: transparent;
+}
+.datepicker table tr td.day:hover,
+.datepicker table tr td.day.focused {
+ background: #eeeeee;
+ cursor: pointer;
+}
+.datepicker table tr td.old,
+.datepicker table tr td.new {
+ color: #999999;
+}
+.datepicker table tr td.disabled,
+.datepicker table tr td.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td.today,
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today.disabled:hover {
+ color: #000000;
+ background-color: #ffdb99;
+ border-color: #ffb733;
+}
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today:hover:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today:focus,
+.datepicker table tr td.today:hover:focus,
+.datepicker table tr td.today.disabled:focus,
+.datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.today,
+.open .dropdown-toggle.datepicker table tr td.today:hover,
+.open .dropdown-toggle.datepicker table tr td.today.disabled,
+.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+ color: #000000;
+ background-color: #ffcd70;
+ border-color: #f59e00;
+}
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.today,
+.open .dropdown-toggle.datepicker table tr td.today:hover,
+.open .dropdown-toggle.datepicker table tr td.today.disabled,
+.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today:hover.disabled,
+.datepicker table tr td.today.disabled.disabled,
+.datepicker table tr td.today.disabled:hover.disabled,
+.datepicker table tr td.today[disabled],
+.datepicker table tr td.today:hover[disabled],
+.datepicker table tr td.today.disabled[disabled],
+.datepicker table tr td.today.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.today,
+fieldset[disabled] .datepicker table tr td.today:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today:hover.disabled:hover,
+.datepicker table tr td.today.disabled.disabled:hover,
+.datepicker table tr td.today.disabled:hover.disabled:hover,
+.datepicker table tr td.today[disabled]:hover,
+.datepicker table tr td.today:hover[disabled]:hover,
+.datepicker table tr td.today.disabled[disabled]:hover,
+.datepicker table tr td.today.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.today:hover,
+fieldset[disabled] .datepicker table tr td.today:hover:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today.disabled:focus,
+.datepicker table tr td.today:hover.disabled:focus,
+.datepicker table tr td.today.disabled.disabled:focus,
+.datepicker table tr td.today.disabled:hover.disabled:focus,
+.datepicker table tr td.today[disabled]:focus,
+.datepicker table tr td.today:hover[disabled]:focus,
+.datepicker table tr td.today.disabled[disabled]:focus,
+.datepicker table tr td.today.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.today:focus,
+fieldset[disabled] .datepicker table tr td.today:hover:focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today:hover.disabled:active,
+.datepicker table tr td.today.disabled.disabled:active,
+.datepicker table tr td.today.disabled:hover.disabled:active,
+.datepicker table tr td.today[disabled]:active,
+.datepicker table tr td.today:hover[disabled]:active,
+.datepicker table tr td.today.disabled[disabled]:active,
+.datepicker table tr td.today.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.today:active,
+fieldset[disabled] .datepicker table tr td.today:hover:active,
+fieldset[disabled] .datepicker table tr td.today.disabled:active,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today:hover.disabled.active,
+.datepicker table tr td.today.disabled.disabled.active,
+.datepicker table tr td.today.disabled:hover.disabled.active,
+.datepicker table tr td.today[disabled].active,
+.datepicker table tr td.today:hover[disabled].active,
+.datepicker table tr td.today.disabled[disabled].active,
+.datepicker table tr td.today.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.today.active,
+fieldset[disabled] .datepicker table tr td.today:hover.active,
+fieldset[disabled] .datepicker table tr td.today.disabled.active,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
+ background-color: #ffdb99;
+ border-color: #ffb733;
+}
+.datepicker table tr td.today:hover:hover {
+ color: #000;
+}
+.datepicker table tr td.today.active:hover {
+ color: #fff;
+}
+.datepicker table tr td.range,
+.datepicker table tr td.range:hover,
+.datepicker table tr td.range.disabled,
+.datepicker table tr td.range.disabled:hover {
+ background: #eeeeee;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today,
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today.disabled:hover {
+ color: #000000;
+ background-color: #f7ca77;
+ border-color: #f1a417;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today:hover:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today:focus,
+.datepicker table tr td.range.today:hover:focus,
+.datepicker table tr td.range.today.disabled:focus,
+.datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.range.today,
+.open .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
+.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+ color: #000000;
+ background-color: #f4bb51;
+ border-color: #bf800c;
+}
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.range.today,
+.open .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
+.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today:hover.disabled,
+.datepicker table tr td.range.today.disabled.disabled,
+.datepicker table tr td.range.today.disabled:hover.disabled,
+.datepicker table tr td.range.today[disabled],
+.datepicker table tr td.range.today:hover[disabled],
+.datepicker table tr td.range.today.disabled[disabled],
+.datepicker table tr td.range.today.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.range.today,
+fieldset[disabled] .datepicker table tr td.range.today:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today:hover.disabled:hover,
+.datepicker table tr td.range.today.disabled.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover.disabled:hover,
+.datepicker table tr td.range.today[disabled]:hover,
+.datepicker table tr td.range.today:hover[disabled]:hover,
+.datepicker table tr td.range.today.disabled[disabled]:hover,
+.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.range.today:hover,
+fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today.disabled:focus,
+.datepicker table tr td.range.today:hover.disabled:focus,
+.datepicker table tr td.range.today.disabled.disabled:focus,
+.datepicker table tr td.range.today.disabled:hover.disabled:focus,
+.datepicker table tr td.range.today[disabled]:focus,
+.datepicker table tr td.range.today:hover[disabled]:focus,
+.datepicker table tr td.range.today.disabled[disabled]:focus,
+.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.range.today:focus,
+fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today:hover.disabled:active,
+.datepicker table tr td.range.today.disabled.disabled:active,
+.datepicker table tr td.range.today.disabled:hover.disabled:active,
+.datepicker table tr td.range.today[disabled]:active,
+.datepicker table tr td.range.today:hover[disabled]:active,
+.datepicker table tr td.range.today.disabled[disabled]:active,
+.datepicker table tr td.range.today.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.range.today:active,
+fieldset[disabled] .datepicker table tr td.range.today:hover:active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today:hover.disabled.active,
+.datepicker table tr td.range.today.disabled.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.disabled.active,
+.datepicker table tr td.range.today[disabled].active,
+.datepicker table tr td.range.today:hover[disabled].active,
+.datepicker table tr td.range.today.disabled[disabled].active,
+.datepicker table tr td.range.today.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.range.today.active,
+fieldset[disabled] .datepicker table tr td.range.today:hover.active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
+ background-color: #f7ca77;
+ border-color: #f1a417;
+}
+.datepicker table tr td.selected,
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected.disabled:hover {
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #555555;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected:hover:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected:focus,
+.datepicker table tr td.selected:hover:focus,
+.datepicker table tr td.selected.disabled:focus,
+.datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.selected,
+.open .dropdown-toggle.datepicker table tr td.selected:hover,
+.open .dropdown-toggle.datepicker table tr td.selected.disabled,
+.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+ color: #ffffff;
+ background-color: #858585;
+ border-color: #373737;
+}
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.selected,
+.open .dropdown-toggle.datepicker table tr td.selected:hover,
+.open .dropdown-toggle.datepicker table tr td.selected.disabled,
+.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected:hover.disabled,
+.datepicker table tr td.selected.disabled.disabled,
+.datepicker table tr td.selected.disabled:hover.disabled,
+.datepicker table tr td.selected[disabled],
+.datepicker table tr td.selected:hover[disabled],
+.datepicker table tr td.selected.disabled[disabled],
+.datepicker table tr td.selected.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.selected,
+fieldset[disabled] .datepicker table tr td.selected:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected:hover.disabled:hover,
+.datepicker table tr td.selected.disabled.disabled:hover,
+.datepicker table tr td.selected.disabled:hover.disabled:hover,
+.datepicker table tr td.selected[disabled]:hover,
+.datepicker table tr td.selected:hover[disabled]:hover,
+.datepicker table tr td.selected.disabled[disabled]:hover,
+.datepicker table tr td.selected.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.selected:hover,
+fieldset[disabled] .datepicker table tr td.selected:hover:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected.disabled:focus,
+.datepicker table tr td.selected:hover.disabled:focus,
+.datepicker table tr td.selected.disabled.disabled:focus,
+.datepicker table tr td.selected.disabled:hover.disabled:focus,
+.datepicker table tr td.selected[disabled]:focus,
+.datepicker table tr td.selected:hover[disabled]:focus,
+.datepicker table tr td.selected.disabled[disabled]:focus,
+.datepicker table tr td.selected.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.selected:focus,
+fieldset[disabled] .datepicker table tr td.selected:hover:focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected:hover.disabled:active,
+.datepicker table tr td.selected.disabled.disabled:active,
+.datepicker table tr td.selected.disabled:hover.disabled:active,
+.datepicker table tr td.selected[disabled]:active,
+.datepicker table tr td.selected:hover[disabled]:active,
+.datepicker table tr td.selected.disabled[disabled]:active,
+.datepicker table tr td.selected.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.selected:active,
+fieldset[disabled] .datepicker table tr td.selected:hover:active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected:hover.disabled.active,
+.datepicker table tr td.selected.disabled.disabled.active,
+.datepicker table tr td.selected.disabled:hover.disabled.active,
+.datepicker table tr td.selected[disabled].active,
+.datepicker table tr td.selected:hover[disabled].active,
+.datepicker table tr td.selected.disabled[disabled].active,
+.datepicker table tr td.selected.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.selected.active,
+fieldset[disabled] .datepicker table tr td.selected:hover.active,
+fieldset[disabled] .datepicker table tr td.selected.disabled.active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
+ background-color: #999999;
+ border-color: #555555;
+}
+.datepicker table tr td.active,
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active.disabled:hover {
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #357ebd;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active:hover:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active:focus,
+.datepicker table tr td.active:hover:focus,
+.datepicker table tr td.active.disabled:focus,
+.datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.active,
+.open .dropdown-toggle.datepicker table tr td.active:hover,
+.open .dropdown-toggle.datepicker table tr td.active.disabled,
+.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+ color: #ffffff;
+ background-color: #3276b1;
+ border-color: #285e8e;
+}
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td.active,
+.open .dropdown-toggle.datepicker table tr td.active:hover,
+.open .dropdown-toggle.datepicker table tr td.active.disabled,
+.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active:hover.disabled,
+.datepicker table tr td.active.disabled.disabled,
+.datepicker table tr td.active.disabled:hover.disabled,
+.datepicker table tr td.active[disabled],
+.datepicker table tr td.active:hover[disabled],
+.datepicker table tr td.active.disabled[disabled],
+.datepicker table tr td.active.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.active,
+fieldset[disabled] .datepicker table tr td.active:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active:hover.disabled:hover,
+.datepicker table tr td.active.disabled.disabled:hover,
+.datepicker table tr td.active.disabled:hover.disabled:hover,
+.datepicker table tr td.active[disabled]:hover,
+.datepicker table tr td.active:hover[disabled]:hover,
+.datepicker table tr td.active.disabled[disabled]:hover,
+.datepicker table tr td.active.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.active:hover,
+fieldset[disabled] .datepicker table tr td.active:hover:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active.disabled:focus,
+.datepicker table tr td.active:hover.disabled:focus,
+.datepicker table tr td.active.disabled.disabled:focus,
+.datepicker table tr td.active.disabled:hover.disabled:focus,
+.datepicker table tr td.active[disabled]:focus,
+.datepicker table tr td.active:hover[disabled]:focus,
+.datepicker table tr td.active.disabled[disabled]:focus,
+.datepicker table tr td.active.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.active:focus,
+fieldset[disabled] .datepicker table tr td.active:hover:focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active:hover.disabled:active,
+.datepicker table tr td.active.disabled.disabled:active,
+.datepicker table tr td.active.disabled:hover.disabled:active,
+.datepicker table tr td.active[disabled]:active,
+.datepicker table tr td.active:hover[disabled]:active,
+.datepicker table tr td.active.disabled[disabled]:active,
+.datepicker table tr td.active.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.active:active,
+fieldset[disabled] .datepicker table tr td.active:hover:active,
+fieldset[disabled] .datepicker table tr td.active.disabled:active,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active:hover.disabled.active,
+.datepicker table tr td.active.disabled.disabled.active,
+.datepicker table tr td.active.disabled:hover.disabled.active,
+.datepicker table tr td.active[disabled].active,
+.datepicker table tr td.active:hover[disabled].active,
+.datepicker table tr td.active.disabled[disabled].active,
+.datepicker table tr td.active.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.active.active,
+fieldset[disabled] .datepicker table tr td.active:hover.active,
+fieldset[disabled] .datepicker table tr td.active.disabled.active,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
+ background-color: #428bca;
+ border-color: #357ebd;
+}
+.datepicker table tr td span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ border-radius: 4px;
+}
+.datepicker table tr td span:hover {
+ background: #eeeeee;
+}
+.datepicker table tr td span.disabled,
+.datepicker table tr td span.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td span.active,
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active.disabled:hover {
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #357ebd;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active:hover:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active:focus,
+.datepicker table tr td span.active:hover:focus,
+.datepicker table tr td span.active.disabled:focus,
+.datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td span.active,
+.open .dropdown-toggle.datepicker table tr td span.active:hover,
+.open .dropdown-toggle.datepicker table tr td span.active.disabled,
+.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+ color: #ffffff;
+ background-color: #3276b1;
+ border-color: #285e8e;
+}
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.open .dropdown-toggle.datepicker table tr td span.active,
+.open .dropdown-toggle.datepicker table tr td span.active:hover,
+.open .dropdown-toggle.datepicker table tr td span.active.disabled,
+.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active:hover.disabled,
+.datepicker table tr td span.active.disabled.disabled,
+.datepicker table tr td span.active.disabled:hover.disabled,
+.datepicker table tr td span.active[disabled],
+.datepicker table tr td span.active:hover[disabled],
+.datepicker table tr td span.active.disabled[disabled],
+.datepicker table tr td span.active.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td span.active,
+fieldset[disabled] .datepicker table tr td span.active:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active:hover.disabled:hover,
+.datepicker table tr td span.active.disabled.disabled:hover,
+.datepicker table tr td span.active.disabled:hover.disabled:hover,
+.datepicker table tr td span.active[disabled]:hover,
+.datepicker table tr td span.active:hover[disabled]:hover,
+.datepicker table tr td span.active.disabled[disabled]:hover,
+.datepicker table tr td span.active.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td span.active:hover,
+fieldset[disabled] .datepicker table tr td span.active:hover:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active.disabled:focus,
+.datepicker table tr td span.active:hover.disabled:focus,
+.datepicker table tr td span.active.disabled.disabled:focus,
+.datepicker table tr td span.active.disabled:hover.disabled:focus,
+.datepicker table tr td span.active[disabled]:focus,
+.datepicker table tr td span.active:hover[disabled]:focus,
+.datepicker table tr td span.active.disabled[disabled]:focus,
+.datepicker table tr td span.active.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td span.active:focus,
+fieldset[disabled] .datepicker table tr td span.active:hover:focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active:hover.disabled:active,
+.datepicker table tr td span.active.disabled.disabled:active,
+.datepicker table tr td span.active.disabled:hover.disabled:active,
+.datepicker table tr td span.active[disabled]:active,
+.datepicker table tr td span.active:hover[disabled]:active,
+.datepicker table tr td span.active.disabled[disabled]:active,
+.datepicker table tr td span.active.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td span.active:active,
+fieldset[disabled] .datepicker table tr td span.active:hover:active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active:hover.disabled.active,
+.datepicker table tr td span.active.disabled.disabled.active,
+.datepicker table tr td span.active.disabled:hover.disabled.active,
+.datepicker table tr td span.active[disabled].active,
+.datepicker table tr td span.active:hover[disabled].active,
+.datepicker table tr td span.active.disabled[disabled].active,
+.datepicker table tr td span.active.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td span.active.active,
+fieldset[disabled] .datepicker table tr td span.active:hover.active,
+fieldset[disabled] .datepicker table tr td span.active.disabled.active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
+ background-color: #428bca;
+ border-color: #357ebd;
+}
+.datepicker table tr td span.old,
+.datepicker table tr td span.new {
+ color: #999999;
+}
+.datepicker .datepicker-switch {
+ width: 145px;
+}
+.datepicker thead tr:first-child th,
+.datepicker tfoot tr th {
+ cursor: pointer;
+}
+.datepicker thead tr:first-child th:hover,
+.datepicker tfoot tr th:hover {
+ background: #eeeeee;
+}
+.datepicker .cw {
+ font-size: 10px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+}
+.datepicker thead tr:first-child .cw {
+ cursor: default;
+ background-color: transparent;
+}
+.input-group.date .input-group-addon {
+ cursor: pointer;
+}
+.input-daterange {
+ width: 100%;
+}
+.input-daterange input {
+ text-align: center;
+}
+.input-daterange input:first-child {
+ border-radius: 3px 0 0 3px;
+}
+.input-daterange input:last-child {
+ border-radius: 0 3px 3px 0;
+}
+.input-daterange .input-group-addon {
+ width: auto;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: center;
+ text-shadow: 0 1px 0 #fff;
+ vertical-align: middle;
+ background-color: #eeeeee;
+ border: solid #cccccc;
+ border-width: 1px 0;
+ margin-left: -5px;
+ margin-right: -5px;
+}
+.datepicker.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ float: left;
+ display: none;
+ min-width: 160px;
+ list-style: none;
+ background-color: #ffffff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 5px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+ *border-right-width: 2px;
+ *border-bottom-width: 2px;
+ color: #333333;
+ font-size: 13px;
+ line-height: 1.42857143;
+}
+.datepicker.dropdown-menu th,
+.datepicker.datepicker-inline th,
+.datepicker.dropdown-menu td,
+.datepicker.datepicker-inline td {
+ padding: 0px 5px;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css
new file mode 100644
index 0000000..38d850f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css
@@ -0,0 +1,8 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */
+.datepicker{padding:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day:hover,.datepicker table tr td.day.focused{background:#eee;cursor:pointer}.datepicker table tr td.old,.datepicker table tr td.new{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today:hover,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today:hover,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today:hover,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today[disabled],.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today[disabled]:hover,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today[disabled].active,.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range:hover,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today[disabled]:hover,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected:hover,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected:hover,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected:hover,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected[disabled]:hover,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active:hover,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active:hover,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active[disabled],.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active[disabled]:hover,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active[disabled].active,.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active:hover,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active:hover,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled:hover[disabled],fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active[disabled]:hover,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active.disabled:hover[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:focus,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:active,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled].active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.old,.datepicker table tr td span.new{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker thead tr:first-child th,.datepicker tfoot tr th{cursor:pointer}.datepicker thead tr:first-child th:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-size:13px;line-height:1.42857143}.datepicker.dropdown-menu th,.datepicker.datepicker-inline th,.datepicker.dropdown-menu td,.datepicker.datepicker-inline td{padding:0 5px}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/js/bootstrap-datepicker.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/js/bootstrap-datepicker.js
new file mode 100644
index 0000000..474a666
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/js/bootstrap-datepicker.js
@@ -0,0 +1,1782 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */(function($, undefined){
+
+ function UTCDate(){
+ return new Date(Date.UTC.apply(Date, arguments));
+ }
+ function UTCToday(){
+ var today = new Date();
+ return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
+ }
+ function isUTCEquals(date1, date2) {
+ return (
+ date1.getUTCFullYear() === date2.getUTCFullYear() &&
+ date1.getUTCMonth() === date2.getUTCMonth() &&
+ date1.getUTCDate() === date2.getUTCDate()
+ );
+ }
+ function alias(method){
+ return function(){
+ return this[method].apply(this, arguments);
+ };
+ }
+
+ var DateArray = (function(){
+ var extras = {
+ get: function(i){
+ return this.slice(i)[0];
+ },
+ contains: function(d){
+ // Array.indexOf is not cross-browser;
+ // $.inArray doesn't work with Dates
+ var val = d && d.valueOf();
+ for (var i=0, l=this.length; i < l; i++)
+ if (this[i].valueOf() === val)
+ return i;
+ return -1;
+ },
+ remove: function(i){
+ this.splice(i,1);
+ },
+ replace: function(new_array){
+ if (!new_array)
+ return;
+ if (!$.isArray(new_array))
+ new_array = [new_array];
+ this.clear();
+ this.push.apply(this, new_array);
+ },
+ clear: function(){
+ this.length = 0;
+ },
+ copy: function(){
+ var a = new DateArray();
+ a.replace(this);
+ return a;
+ }
+ };
+
+ return function(){
+ var a = [];
+ a.push.apply(a, arguments);
+ $.extend(a, extras);
+ return a;
+ };
+ })();
+
+
+ // Picker object
+
+ var Datepicker = function(element, options){
+ this._process_options(options);
+
+ this.dates = new DateArray();
+ this.viewDate = this.o.defaultViewDate;
+ this.focusDate = null;
+
+ this.element = $(element);
+ this.isInline = false;
+ this.isInput = this.element.is('input');
+ this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
+ this.hasInput = this.component && this.element.find('input').length;
+ if (this.component && this.component.length === 0)
+ this.component = false;
+
+ this.picker = $(DPGlobal.template);
+ this._buildEvents();
+ this._attachEvents();
+
+ if (this.isInline){
+ this.picker.addClass('datepicker-inline').appendTo(this.element);
+ }
+ else {
+ this.picker.addClass('datepicker-dropdown dropdown-menu');
+ }
+
+ if (this.o.rtl){
+ this.picker.addClass('datepicker-rtl');
+ }
+
+ this.viewMode = this.o.startView;
+
+ if (this.o.calendarWeeks)
+ this.picker.find('tfoot .today, tfoot .clear')
+ .attr('colspan', function(i, val){
+ return parseInt(val) + 1;
+ });
+
+ this._allow_update = false;
+
+ this.setStartDate(this._o.startDate);
+ this.setEndDate(this._o.endDate);
+ this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);
+ this.setDatesDisabled(this.o.datesDisabled);
+
+ this.fillDow();
+ this.fillMonths();
+
+ this._allow_update = true;
+
+ this.update();
+ this.showMode();
+
+ if (this.isInline){
+ this.show();
+ }
+ };
+
+ Datepicker.prototype = {
+ constructor: Datepicker,
+
+ _process_options: function(opts){
+ // Store raw options for reference
+ this._o = $.extend({}, this._o, opts);
+ // Processed options
+ var o = this.o = $.extend({}, this._o);
+
+ // Check if "de-DE" style date is available, if not language should
+ // fallback to 2 letter code eg "de"
+ var lang = o.language;
+ if (!dates[lang]){
+ lang = lang.split('-')[0];
+ if (!dates[lang])
+ lang = defaults.language;
+ }
+ o.language = lang;
+
+ switch (o.startView){
+ case 2:
+ case 'decade':
+ o.startView = 2;
+ break;
+ case 1:
+ case 'year':
+ o.startView = 1;
+ break;
+ default:
+ o.startView = 0;
+ }
+
+ switch (o.minViewMode){
+ case 1:
+ case 'months':
+ o.minViewMode = 1;
+ break;
+ case 2:
+ case 'years':
+ o.minViewMode = 2;
+ break;
+ default:
+ o.minViewMode = 0;
+ }
+
+ o.startView = Math.max(o.startView, o.minViewMode);
+
+ // true, false, or Number > 0
+ if (o.multidate !== true){
+ o.multidate = Number(o.multidate) || false;
+ if (o.multidate !== false)
+ o.multidate = Math.max(0, o.multidate);
+ }
+ o.multidateSeparator = String(o.multidateSeparator);
+
+ o.weekStart %= 7;
+ o.weekEnd = ((o.weekStart + 6) % 7);
+
+ var format = DPGlobal.parseFormat(o.format);
+ if (o.startDate !== -Infinity){
+ if (!!o.startDate){
+ if (o.startDate instanceof Date)
+ o.startDate = this._local_to_utc(this._zero_time(o.startDate));
+ else
+ o.startDate = DPGlobal.parseDate(o.startDate, format, o.language);
+ }
+ else {
+ o.startDate = -Infinity;
+ }
+ }
+ if (o.endDate !== Infinity){
+ if (!!o.endDate){
+ if (o.endDate instanceof Date)
+ o.endDate = this._local_to_utc(this._zero_time(o.endDate));
+ else
+ o.endDate = DPGlobal.parseDate(o.endDate, format, o.language);
+ }
+ else {
+ o.endDate = Infinity;
+ }
+ }
+
+ o.daysOfWeekDisabled = o.daysOfWeekDisabled||[];
+ if (!$.isArray(o.daysOfWeekDisabled))
+ o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/);
+ o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){
+ return parseInt(d, 10);
+ });
+
+ o.datesDisabled = o.datesDisabled||[];
+ if (!$.isArray(o.datesDisabled)) {
+ var datesDisabled = [];
+ datesDisabled.push(DPGlobal.parseDate(o.datesDisabled, format, o.language));
+ o.datesDisabled = datesDisabled;
+ }
+ o.datesDisabled = $.map(o.datesDisabled,function(d){
+ return DPGlobal.parseDate(d, format, o.language);
+ });
+
+ var plc = String(o.orientation).toLowerCase().split(/\s+/g),
+ _plc = o.orientation.toLowerCase();
+ plc = $.grep(plc, function(word){
+ return /^auto|left|right|top|bottom$/.test(word);
+ });
+ o.orientation = {x: 'auto', y: 'auto'};
+ if (!_plc || _plc === 'auto')
+ ; // no action
+ else if (plc.length === 1){
+ switch (plc[0]){
+ case 'top':
+ case 'bottom':
+ o.orientation.y = plc[0];
+ break;
+ case 'left':
+ case 'right':
+ o.orientation.x = plc[0];
+ break;
+ }
+ }
+ else {
+ _plc = $.grep(plc, function(word){
+ return /^left|right$/.test(word);
+ });
+ o.orientation.x = _plc[0] || 'auto';
+
+ _plc = $.grep(plc, function(word){
+ return /^top|bottom$/.test(word);
+ });
+ o.orientation.y = _plc[0] || 'auto';
+ }
+ if (o.defaultViewDate) {
+ var year = o.defaultViewDate.year || new Date().getFullYear();
+ var month = o.defaultViewDate.month || 0;
+ var day = o.defaultViewDate.day || 1;
+ o.defaultViewDate = UTCDate(year, month, day);
+ } else {
+ o.defaultViewDate = UTCToday();
+ }
+ o.showOnFocus = o.showOnFocus !== undefined ? o.showOnFocus : true;
+ },
+ _events: [],
+ _secondaryEvents: [],
+ _applyEvents: function(evs){
+ for (var i=0, el, ch, ev; i < evs.length; i++){
+ el = evs[i][0];
+ if (evs[i].length === 2){
+ ch = undefined;
+ ev = evs[i][1];
+ }
+ else if (evs[i].length === 3){
+ ch = evs[i][1];
+ ev = evs[i][2];
+ }
+ el.on(ev, ch);
+ }
+ },
+ _unapplyEvents: function(evs){
+ for (var i=0, el, ev, ch; i < evs.length; i++){
+ el = evs[i][0];
+ if (evs[i].length === 2){
+ ch = undefined;
+ ev = evs[i][1];
+ }
+ else if (evs[i].length === 3){
+ ch = evs[i][1];
+ ev = evs[i][2];
+ }
+ el.off(ev, ch);
+ }
+ },
+ _buildEvents: function(){
+ var events = {
+ keyup: $.proxy(function(e){
+ if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)
+ this.update();
+ }, this),
+ keydown: $.proxy(this.keydown, this)
+ };
+
+ if (this.o.showOnFocus === true) {
+ events.focus = $.proxy(this.show, this);
+ }
+
+ if (this.isInput) { // single input
+ this._events = [
+ [this.element, events]
+ ];
+ }
+ else if (this.component && this.hasInput) { // component: input + button
+ this._events = [
+ // For components that are not readonly, allow keyboard nav
+ [this.element.find('input'), events],
+ [this.component, {
+ click: $.proxy(this.show, this)
+ }]
+ ];
+ }
+ else if (this.element.is('div')){ // inline datepicker
+ this.isInline = true;
+ }
+ else {
+ this._events = [
+ [this.element, {
+ click: $.proxy(this.show, this)
+ }]
+ ];
+ }
+ this._events.push(
+ // Component: listen for blur on element descendants
+ [this.element, '*', {
+ blur: $.proxy(function(e){
+ this._focused_from = e.target;
+ }, this)
+ }],
+ // Input: listen for blur on element
+ [this.element, {
+ blur: $.proxy(function(e){
+ this._focused_from = e.target;
+ }, this)
+ }]
+ );
+
+ this._secondaryEvents = [
+ [this.picker, {
+ click: $.proxy(this.click, this)
+ }],
+ [$(window), {
+ resize: $.proxy(this.place, this)
+ }],
+ [$(document), {
+ 'mousedown touchstart': $.proxy(function(e){
+ // Clicked outside the datepicker, hide it
+ if (!(
+ this.element.is(e.target) ||
+ this.element.find(e.target).length ||
+ this.picker.is(e.target) ||
+ this.picker.find(e.target).length
+ )){
+ this.hide();
+ }
+ }, this)
+ }]
+ ];
+ },
+ _attachEvents: function(){
+ this._detachEvents();
+ this._applyEvents(this._events);
+ },
+ _detachEvents: function(){
+ this._unapplyEvents(this._events);
+ },
+ _attachSecondaryEvents: function(){
+ this._detachSecondaryEvents();
+ this._applyEvents(this._secondaryEvents);
+ },
+ _detachSecondaryEvents: function(){
+ this._unapplyEvents(this._secondaryEvents);
+ },
+ _trigger: function(event, altdate){
+ var date = altdate || this.dates.get(-1),
+ local_date = this._utc_to_local(date);
+
+ this.element.trigger({
+ type: event,
+ date: local_date,
+ dates: $.map(this.dates, this._utc_to_local),
+ format: $.proxy(function(ix, format){
+ if (arguments.length === 0){
+ ix = this.dates.length - 1;
+ format = this.o.format;
+ }
+ else if (typeof ix === 'string'){
+ format = ix;
+ ix = this.dates.length - 1;
+ }
+ format = format || this.o.format;
+ var date = this.dates.get(ix);
+ return DPGlobal.formatDate(date, format, this.o.language);
+ }, this)
+ });
+ },
+
+ show: function(){
+ if (this.element.attr('readonly') && this.o.enableOnReadonly === false)
+ return;
+ if (!this.isInline)
+ this.picker.appendTo(this.o.container);
+ this.place();
+ this.picker.show();
+ this._attachSecondaryEvents();
+ this._trigger('show');
+ if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {
+ $(this.element).blur();
+ }
+ return this;
+ },
+
+ hide: function(){
+ if (this.isInline)
+ return this;
+ if (!this.picker.is(':visible'))
+ return this;
+ this.focusDate = null;
+ this.picker.hide().detach();
+ this._detachSecondaryEvents();
+ this.viewMode = this.o.startView;
+ this.showMode();
+
+ if (
+ this.o.forceParse &&
+ (
+ this.isInput && this.element.val() ||
+ this.hasInput && this.element.find('input').val()
+ )
+ )
+ this.setValue();
+ this._trigger('hide');
+ return this;
+ },
+
+ remove: function(){
+ this.hide();
+ this._detachEvents();
+ this._detachSecondaryEvents();
+ this.picker.remove();
+ delete this.element.data().datepicker;
+ if (!this.isInput){
+ delete this.element.data().date;
+ }
+ return this;
+ },
+
+ _utc_to_local: function(utc){
+ return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));
+ },
+ _local_to_utc: function(local){
+ return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));
+ },
+ _zero_time: function(local){
+ return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
+ },
+ _zero_utc_time: function(utc){
+ return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));
+ },
+
+ getDates: function(){
+ return $.map(this.dates, this._utc_to_local);
+ },
+
+ getUTCDates: function(){
+ return $.map(this.dates, function(d){
+ return new Date(d);
+ });
+ },
+
+ getDate: function(){
+ return this._utc_to_local(this.getUTCDate());
+ },
+
+ getUTCDate: function(){
+ var selected_date = this.dates.get(-1);
+ if (typeof selected_date !== 'undefined') {
+ return new Date(selected_date);
+ } else {
+ return null;
+ }
+ },
+
+ clearDates: function(){
+ var element;
+ if (this.isInput) {
+ element = this.element;
+ } else if (this.component) {
+ element = this.element.find('input');
+ }
+
+ if (element) {
+ element.val('').change();
+ }
+
+ this.update();
+ this._trigger('changeDate');
+
+ if (this.o.autoclose) {
+ this.hide();
+ }
+ },
+ setDates: function(){
+ var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
+ this.update.apply(this, args);
+ this._trigger('changeDate');
+ this.setValue();
+ return this;
+ },
+
+ setUTCDates: function(){
+ var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
+ this.update.apply(this, $.map(args, this._utc_to_local));
+ this._trigger('changeDate');
+ this.setValue();
+ return this;
+ },
+
+ setDate: alias('setDates'),
+ setUTCDate: alias('setUTCDates'),
+
+ setValue: function(){
+ var formatted = this.getFormattedDate();
+ if (!this.isInput){
+ if (this.component){
+ this.element.find('input').val(formatted).change();
+ }
+ }
+ else {
+ this.element.val(formatted).change();
+ }
+ return this;
+ },
+
+ getFormattedDate: function(format){
+ if (format === undefined)
+ format = this.o.format;
+
+ var lang = this.o.language;
+ return $.map(this.dates, function(d){
+ return DPGlobal.formatDate(d, format, lang);
+ }).join(this.o.multidateSeparator);
+ },
+
+ setStartDate: function(startDate){
+ this._process_options({startDate: startDate});
+ this.update();
+ this.updateNavArrows();
+ return this;
+ },
+
+ setEndDate: function(endDate){
+ this._process_options({endDate: endDate});
+ this.update();
+ this.updateNavArrows();
+ return this;
+ },
+
+ setDaysOfWeekDisabled: function(daysOfWeekDisabled){
+ this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
+ this.update();
+ this.updateNavArrows();
+ return this;
+ },
+
+ setDatesDisabled: function(datesDisabled){
+ this._process_options({datesDisabled: datesDisabled});
+ this.update();
+ this.updateNavArrows();
+ },
+
+ place: function(){
+ if (this.isInline)
+ return this;
+ var calendarWidth = this.picker.outerWidth(),
+ calendarHeight = this.picker.outerHeight(),
+ visualPadding = 10,
+ windowWidth = $(this.o.container).width(),
+ windowHeight = $(this.o.container).height(),
+ scrollTop = $(this.o.container).scrollTop(),
+ appendOffset = $(this.o.container).offset();
+
+ var parentsZindex = [];
+ this.element.parents().each(function(){
+ var itemZIndex = $(this).css('z-index');
+ if (itemZIndex !== 'auto' && itemZIndex !== 0) parentsZindex.push(parseInt(itemZIndex));
+ });
+ var zIndex = Math.max.apply(Math, parentsZindex) + 10;
+ var offset = this.component ? this.component.parent().offset() : this.element.offset();
+ var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
+ var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
+ var left = offset.left - appendOffset.left,
+ top = offset.top - appendOffset.top;
+
+ this.picker.removeClass(
+ 'datepicker-orient-top datepicker-orient-bottom '+
+ 'datepicker-orient-right datepicker-orient-left'
+ );
+
+ if (this.o.orientation.x !== 'auto'){
+ this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
+ if (this.o.orientation.x === 'right')
+ left -= calendarWidth - width;
+ }
+ // auto x orientation is best-placement: if it crosses a window
+ // edge, fudge it sideways
+ else {
+ if (offset.left < 0) {
+ // component is outside the window on the left side. Move it into visible range
+ this.picker.addClass('datepicker-orient-left');
+ left -= offset.left - visualPadding;
+ } else if (left + calendarWidth > windowWidth) {
+ // the calendar passes the widow right edge. Align it to component right side
+ this.picker.addClass('datepicker-orient-right');
+ left = offset.left + width - calendarWidth;
+ } else {
+ // Default to left
+ this.picker.addClass('datepicker-orient-left');
+ }
+ }
+
+ // auto y orientation is best-situation: top or bottom, no fudging,
+ // decision based on which shows more of the calendar
+ var yorient = this.o.orientation.y,
+ top_overflow, bottom_overflow;
+ if (yorient === 'auto'){
+ top_overflow = -scrollTop + top - calendarHeight;
+ bottom_overflow = scrollTop + windowHeight - (top + height + calendarHeight);
+ if (Math.max(top_overflow, bottom_overflow) === bottom_overflow)
+ yorient = 'top';
+ else
+ yorient = 'bottom';
+ }
+ this.picker.addClass('datepicker-orient-' + yorient);
+ if (yorient === 'top')
+ top += height;
+ else
+ top -= calendarHeight + parseInt(this.picker.css('padding-top'));
+
+ if (this.o.rtl) {
+ var right = windowWidth - (left + width);
+ this.picker.css({
+ top: top,
+ right: right,
+ zIndex: zIndex
+ });
+ } else {
+ this.picker.css({
+ top: top,
+ left: left,
+ zIndex: zIndex
+ });
+ }
+ return this;
+ },
+
+ _allow_update: true,
+ update: function(){
+ if (!this._allow_update)
+ return this;
+
+ var oldDates = this.dates.copy(),
+ dates = [],
+ fromArgs = false;
+ if (arguments.length){
+ $.each(arguments, $.proxy(function(i, date){
+ if (date instanceof Date)
+ date = this._local_to_utc(date);
+ dates.push(date);
+ }, this));
+ fromArgs = true;
+ }
+ else {
+ dates = this.isInput
+ ? this.element.val()
+ : this.element.data('date') || this.element.find('input').val();
+ if (dates && this.o.multidate)
+ dates = dates.split(this.o.multidateSeparator);
+ else
+ dates = [dates];
+ delete this.element.data().date;
+ }
+
+ dates = $.map(dates, $.proxy(function(date){
+ return DPGlobal.parseDate(date, this.o.format, this.o.language);
+ }, this));
+ dates = $.grep(dates, $.proxy(function(date){
+ return (
+ date < this.o.startDate ||
+ date > this.o.endDate ||
+ !date
+ );
+ }, this), true);
+ this.dates.replace(dates);
+
+ if (this.dates.length)
+ this.viewDate = new Date(this.dates.get(-1));
+ else if (this.viewDate < this.o.startDate)
+ this.viewDate = new Date(this.o.startDate);
+ else if (this.viewDate > this.o.endDate)
+ this.viewDate = new Date(this.o.endDate);
+
+ if (fromArgs){
+ // setting date by clicking
+ this.setValue();
+ }
+ else if (dates.length){
+ // setting date by typing
+ if (String(oldDates) !== String(this.dates))
+ this._trigger('changeDate');
+ }
+ if (!this.dates.length && oldDates.length)
+ this._trigger('clearDate');
+
+ this.fill();
+ return this;
+ },
+
+ fillDow: function(){
+ var dowCnt = this.o.weekStart,
+ html = '<tr>';
+ if (this.o.calendarWeeks){
+ this.picker.find('.datepicker-days thead tr:first-child .datepicker-switch')
+ .attr('colspan', function(i, val){
+ return parseInt(val) + 1;
+ });
+ var cell = '<th class="cw"> </th>';
+ html += cell;
+ }
+ while (dowCnt < this.o.weekStart + 7){
+ html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
+ }
+ html += '</tr>';
+ this.picker.find('.datepicker-days thead').append(html);
+ },
+
+ fillMonths: function(){
+ var html = '',
+ i = 0;
+ while (i < 12){
+ html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>';
+ }
+ this.picker.find('.datepicker-months td').html(html);
+ },
+
+ setRange: function(range){
+ if (!range || !range.length)
+ delete this.range;
+ else
+ this.range = $.map(range, function(d){
+ return d.valueOf();
+ });
+ this.fill();
+ },
+
+ getClassNames: function(date){
+ var cls = [],
+ year = this.viewDate.getUTCFullYear(),
+ month = this.viewDate.getUTCMonth(),
+ today = new Date();
+ if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){
+ cls.push('old');
+ }
+ else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){
+ cls.push('new');
+ }
+ if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
+ cls.push('focused');
+ // Compare internal UTC date with local today, not UTC today
+ if (this.o.todayHighlight &&
+ date.getUTCFullYear() === today.getFullYear() &&
+ date.getUTCMonth() === today.getMonth() &&
+ date.getUTCDate() === today.getDate()){
+ cls.push('today');
+ }
+ if (this.dates.contains(date) !== -1)
+ cls.push('active');
+ if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||
+ $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){
+ cls.push('disabled');
+ }
+ if (this.o.datesDisabled.length > 0 &&
+ $.grep(this.o.datesDisabled, function(d){
+ return isUTCEquals(date, d); }).length > 0) {
+ cls.push('disabled', 'disabled-date');
+ }
+
+ if (this.range){
+ if (date > this.range[0] && date < this.range[this.range.length-1]){
+ cls.push('range');
+ }
+ if ($.inArray(date.valueOf(), this.range) !== -1){
+ cls.push('selected');
+ }
+ }
+ return cls;
+ },
+
+ fill: function(){
+ var d = new Date(this.viewDate),
+ year = d.getUTCFullYear(),
+ month = d.getUTCMonth(),
+ startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
+ startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
+ endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
+ endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
+ todaytxt = dates[this.o.language].today || dates['en'].today || '',
+ cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
+ tooltip;
+ if (isNaN(year) || isNaN(month))
+ return;
+ this.picker.find('.datepicker-days thead .datepicker-switch')
+ .text(dates[this.o.language].months[month]+' '+year);
+ this.picker.find('tfoot .today')
+ .text(todaytxt)
+ .toggle(this.o.todayBtn !== false);
+ this.picker.find('tfoot .clear')
+ .text(cleartxt)
+ .toggle(this.o.clearBtn !== false);
+ this.updateNavArrows();
+ this.fillMonths();
+ var prevMonth = UTCDate(year, month-1, 28),
+ day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
+ prevMonth.setUTCDate(day);
+ prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);
+ var nextMonth = new Date(prevMonth);
+ nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
+ nextMonth = nextMonth.valueOf();
+ var html = [];
+ var clsName;
+ while (prevMonth.valueOf() < nextMonth){
+ if (prevMonth.getUTCDay() === this.o.weekStart){
+ html.push('<tr>');
+ if (this.o.calendarWeeks){
+ // ISO 8601: First week contains first thursday.
+ // ISO also states week starts on Monday, but we can be more abstract here.
+ var
+ // Start of current week: based on weekstart/current date
+ ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),
+ // Thursday of this week
+ th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
+ // First Thursday of year, year from thursday
+ yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
+ // Calendar week: ms between thursdays, div ms per day, div 7 days
+ calWeek = (th - yth) / 864e5 / 7 + 1;
+ html.push('<td class="cw">'+ calWeek +'</td>');
+
+ }
+ }
+ clsName = this.getClassNames(prevMonth);
+ clsName.push('day');
+
+ if (this.o.beforeShowDay !== $.noop){
+ var before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
+ if (before === undefined)
+ before = {};
+ else if (typeof(before) === 'boolean')
+ before = {enabled: before};
+ else if (typeof(before) === 'string')
+ before = {classes: before};
+ if (before.enabled === false)
+ clsName.push('disabled');
+ if (before.classes)
+ clsName = clsName.concat(before.classes.split(/\s+/));
+ if (before.tooltip)
+ tooltip = before.tooltip;
+ }
+
+ clsName = $.unique(clsName);
+ html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>');
+ tooltip = null;
+ if (prevMonth.getUTCDay() === this.o.weekEnd){
+ html.push('</tr>');
+ }
+ prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
+ }
+ this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
+
+ var months = this.picker.find('.datepicker-months')
+ .find('th:eq(1)')
+ .text(year)
+ .end()
+ .find('span').removeClass('active');
+
+ $.each(this.dates, function(i, d){
+ if (d.getUTCFullYear() === year)
+ months.eq(d.getUTCMonth()).addClass('active');
+ });
+
+ if (year < startYear || year > endYear){
+ months.addClass('disabled');
+ }
+ if (year === startYear){
+ months.slice(0, startMonth).addClass('disabled');
+ }
+ if (year === endYear){
+ months.slice(endMonth+1).addClass('disabled');
+ }
+
+ if (this.o.beforeShowMonth !== $.noop){
+ var that = this;
+ $.each(months, function(i, month){
+ if (!$(month).hasClass('disabled')) {
+ var moDate = new Date(year, i, 1);
+ var before = that.o.beforeShowMonth(moDate);
+ if (before === false)
+ $(month).addClass('disabled');
+ }
+ });
+ }
+
+ html = '';
+ year = parseInt(year/10, 10) * 10;
+ var yearCont = this.picker.find('.datepicker-years')
+ .find('th:eq(1)')
+ .text(year + '-' + (year + 9))
+ .end()
+ .find('td');
+ year -= 1;
+ var years = $.map(this.dates, function(d){
+ return d.getUTCFullYear();
+ }),
+ classes;
+ for (var i = -1; i < 11; i++){
+ classes = ['year'];
+ if (i === -1)
+ classes.push('old');
+ else if (i === 10)
+ classes.push('new');
+ if ($.inArray(year, years) !== -1)
+ classes.push('active');
+ if (year < startYear || year > endYear)
+ classes.push('disabled');
+ html += '<span class="' + classes.join(' ') + '">' + year + '</span>';
+ year += 1;
+ }
+ yearCont.html(html);
+ },
+
+ updateNavArrows: function(){
+ if (!this._allow_update)
+ return;
+
+ var d = new Date(this.viewDate),
+ year = d.getUTCFullYear(),
+ month = d.getUTCMonth();
+ switch (this.viewMode){
+ case 0:
+ if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){
+ this.picker.find('.prev').css({visibility: 'hidden'});
+ }
+ else {
+ this.picker.find('.prev').css({visibility: 'visible'});
+ }
+ if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){
+ this.picker.find('.next').css({visibility: 'hidden'});
+ }
+ else {
+ this.picker.find('.next').css({visibility: 'visible'});
+ }
+ break;
+ case 1:
+ case 2:
+ if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){
+ this.picker.find('.prev').css({visibility: 'hidden'});
+ }
+ else {
+ this.picker.find('.prev').css({visibility: 'visible'});
+ }
+ if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){
+ this.picker.find('.next').css({visibility: 'hidden'});
+ }
+ else {
+ this.picker.find('.next').css({visibility: 'visible'});
+ }
+ break;
+ }
+ },
+
+ click: function(e){
+ e.preventDefault();
+ var target = $(e.target).closest('span, td, th'),
+ year, month, day;
+ if (target.length === 1){
+ switch (target[0].nodeName.toLowerCase()){
+ case 'th':
+ switch (target[0].className){
+ case 'datepicker-switch':
+ this.showMode(1);
+ break;
+ case 'prev':
+ case 'next':
+ var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);
+ switch (this.viewMode){
+ case 0:
+ this.viewDate = this.moveMonth(this.viewDate, dir);
+ this._trigger('changeMonth', this.viewDate);
+ break;
+ case 1:
+ case 2:
+ this.viewDate = this.moveYear(this.viewDate, dir);
+ if (this.viewMode === 1)
+ this._trigger('changeYear', this.viewDate);
+ break;
+ }
+ this.fill();
+ break;
+ case 'today':
+ var date = new Date();
+ date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
+
+ this.showMode(-2);
+ var which = this.o.todayBtn === 'linked' ? null : 'view';
+ this._setDate(date, which);
+ break;
+ case 'clear':
+ this.clearDates();
+ break;
+ }
+ break;
+ case 'span':
+ if (!target.hasClass('disabled')){
+ this.viewDate.setUTCDate(1);
+ if (target.hasClass('month')){
+ day = 1;
+ month = target.parent().find('span').index(target);
+ year = this.viewDate.getUTCFullYear();
+ this.viewDate.setUTCMonth(month);
+ this._trigger('changeMonth', this.viewDate);
+ if (this.o.minViewMode === 1){
+ this._setDate(UTCDate(year, month, day));
+ }
+ }
+ else {
+ day = 1;
+ month = 0;
+ year = parseInt(target.text(), 10)||0;
+ this.viewDate.setUTCFullYear(year);
+ this._trigger('changeYear', this.viewDate);
+ if (this.o.minViewMode === 2){
+ this._setDate(UTCDate(year, month, day));
+ }
+ }
+ this.showMode(-1);
+ this.fill();
+ }
+ break;
+ case 'td':
+ if (target.hasClass('day') && !target.hasClass('disabled')){
+ day = parseInt(target.text(), 10)||1;
+ year = this.viewDate.getUTCFullYear();
+ month = this.viewDate.getUTCMonth();
+ if (target.hasClass('old')){
+ if (month === 0){
+ month = 11;
+ year -= 1;
+ }
+ else {
+ month -= 1;
+ }
+ }
+ else if (target.hasClass('new')){
+ if (month === 11){
+ month = 0;
+ year += 1;
+ }
+ else {
+ month += 1;
+ }
+ }
+ this._setDate(UTCDate(year, month, day));
+ }
+ break;
+ }
+ }
+ if (this.picker.is(':visible') && this._focused_from){
+ $(this._focused_from).focus();
+ }
+ delete this._focused_from;
+ },
+
+ _toggle_multidate: function(date){
+ var ix = this.dates.contains(date);
+ if (!date){
+ this.dates.clear();
+ }
+
+ if (ix !== -1){
+ if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){
+ this.dates.remove(ix);
+ }
+ } else if (this.o.multidate === false) {
+ this.dates.clear();
+ this.dates.push(date);
+ }
+ else {
+ this.dates.push(date);
+ }
+
+ if (typeof this.o.multidate === 'number')
+ while (this.dates.length > this.o.multidate)
+ this.dates.remove(0);
+ },
+
+ _setDate: function(date, which){
+ if (!which || which === 'date')
+ this._toggle_multidate(date && new Date(date));
+ if (!which || which === 'view')
+ this.viewDate = date && new Date(date);
+
+ this.fill();
+ this.setValue();
+ if (!which || which !== 'view') {
+ this._trigger('changeDate');
+ }
+ var element;
+ if (this.isInput){
+ element = this.element;
+ }
+ else if (this.component){
+ element = this.element.find('input');
+ }
+ if (element){
+ element.change();
+ }
+ if (this.o.autoclose && (!which || which === 'date')){
+ this.hide();
+ }
+ },
+
+ moveMonth: function(date, dir){
+ if (!date)
+ return undefined;
+ if (!dir)
+ return date;
+ var new_date = new Date(date.valueOf()),
+ day = new_date.getUTCDate(),
+ month = new_date.getUTCMonth(),
+ mag = Math.abs(dir),
+ new_month, test;
+ dir = dir > 0 ? 1 : -1;
+ if (mag === 1){
+ test = dir === -1
+ // If going back one month, make sure month is not current month
+ // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
+ ? function(){
+ return new_date.getUTCMonth() === month;
+ }
+ // If going forward one month, make sure month is as expected
+ // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
+ : function(){
+ return new_date.getUTCMonth() !== new_month;
+ };
+ new_month = month + dir;
+ new_date.setUTCMonth(new_month);
+ // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
+ if (new_month < 0 || new_month > 11)
+ new_month = (new_month + 12) % 12;
+ }
+ else {
+ // For magnitudes >1, move one month at a time...
+ for (var i=0; i < mag; i++)
+ // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
+ new_date = this.moveMonth(new_date, dir);
+ // ...then reset the day, keeping it in the new month
+ new_month = new_date.getUTCMonth();
+ new_date.setUTCDate(day);
+ test = function(){
+ return new_month !== new_date.getUTCMonth();
+ };
+ }
+ // Common date-resetting loop -- if date is beyond end of month, make it
+ // end of month
+ while (test()){
+ new_date.setUTCDate(--day);
+ new_date.setUTCMonth(new_month);
+ }
+ return new_date;
+ },
+
+ moveYear: function(date, dir){
+ return this.moveMonth(date, dir*12);
+ },
+
+ dateWithinRange: function(date){
+ return date >= this.o.startDate && date <= this.o.endDate;
+ },
+
+ keydown: function(e){
+ if (!this.picker.is(':visible')){
+ if (e.keyCode === 27) // allow escape to hide and re-show picker
+ this.show();
+ return;
+ }
+ var dateChanged = false,
+ dir, newDate, newViewDate,
+ focusDate = this.focusDate || this.viewDate;
+ switch (e.keyCode){
+ case 27: // escape
+ if (this.focusDate){
+ this.focusDate = null;
+ this.viewDate = this.dates.get(-1) || this.viewDate;
+ this.fill();
+ }
+ else
+ this.hide();
+ e.preventDefault();
+ break;
+ case 37: // left
+ case 39: // right
+ if (!this.o.keyboardNavigation)
+ break;
+ dir = e.keyCode === 37 ? -1 : 1;
+ if (e.ctrlKey){
+ newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
+ newViewDate = this.moveYear(focusDate, dir);
+ this._trigger('changeYear', this.viewDate);
+ }
+ else if (e.shiftKey){
+ newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
+ newViewDate = this.moveMonth(focusDate, dir);
+ this._trigger('changeMonth', this.viewDate);
+ }
+ else {
+ newDate = new Date(this.dates.get(-1) || UTCToday());
+ newDate.setUTCDate(newDate.getUTCDate() + dir);
+ newViewDate = new Date(focusDate);
+ newViewDate.setUTCDate(focusDate.getUTCDate() + dir);
+ }
+ if (this.dateWithinRange(newViewDate)){
+ this.focusDate = this.viewDate = newViewDate;
+ this.setValue();
+ this.fill();
+ e.preventDefault();
+ }
+ break;
+ case 38: // up
+ case 40: // down
+ if (!this.o.keyboardNavigation)
+ break;
+ dir = e.keyCode === 38 ? -1 : 1;
+ if (e.ctrlKey){
+ newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
+ newViewDate = this.moveYear(focusDate, dir);
+ this._trigger('changeYear', this.viewDate);
+ }
+ else if (e.shiftKey){
+ newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
+ newViewDate = this.moveMonth(focusDate, dir);
+ this._trigger('changeMonth', this.viewDate);
+ }
+ else {
+ newDate = new Date(this.dates.get(-1) || UTCToday());
+ newDate.setUTCDate(newDate.getUTCDate() + dir * 7);
+ newViewDate = new Date(focusDate);
+ newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);
+ }
+ if (this.dateWithinRange(newViewDate)){
+ this.focusDate = this.viewDate = newViewDate;
+ this.setValue();
+ this.fill();
+ e.preventDefault();
+ }
+ break;
+ case 32: // spacebar
+ // Spacebar is used in manually typing dates in some formats.
+ // As such, its behavior should not be hijacked.
+ break;
+ case 13: // enter
+ focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
+ if (this.o.keyboardNavigation) {
+ this._toggle_multidate(focusDate);
+ dateChanged = true;
+ }
+ this.focusDate = null;
+ this.viewDate = this.dates.get(-1) || this.viewDate;
+ this.setValue();
+ this.fill();
+ if (this.picker.is(':visible')){
+ e.preventDefault();
+ if (typeof e.stopPropagation === 'function') {
+ e.stopPropagation(); // All modern browsers, IE9+
+ } else {
+ e.cancelBubble = true; // IE6,7,8 ignore "stopPropagation"
+ }
+ if (this.o.autoclose)
+ this.hide();
+ }
+ break;
+ case 9: // tab
+ this.focusDate = null;
+ this.viewDate = this.dates.get(-1) || this.viewDate;
+ this.fill();
+ this.hide();
+ break;
+ }
+ if (dateChanged){
+ if (this.dates.length)
+ this._trigger('changeDate');
+ else
+ this._trigger('clearDate');
+ var element;
+ if (this.isInput){
+ element = this.element;
+ }
+ else if (this.component){
+ element = this.element.find('input');
+ }
+ if (element){
+ element.change();
+ }
+ }
+ },
+
+ showMode: function(dir){
+ if (dir){
+ this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
+ }
+ this.picker
+ .children('div')
+ .hide()
+ .filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName)
+ .css('display', 'block');
+ this.updateNavArrows();
+ }
+ };
+
+ var DateRangePicker = function(element, options){
+ this.element = $(element);
+ this.inputs = $.map(options.inputs, function(i){
+ return i.jquery ? i[0] : i;
+ });
+ delete options.inputs;
+
+ datepickerPlugin.call($(this.inputs), options)
+ .bind('changeDate', $.proxy(this.dateUpdated, this));
+
+ this.pickers = $.map(this.inputs, function(i){
+ return $(i).data('datepicker');
+ });
+ this.updateDates();
+ };
+ DateRangePicker.prototype = {
+ updateDates: function(){
+ this.dates = $.map(this.pickers, function(i){
+ return i.getUTCDate();
+ });
+ this.updateRanges();
+ },
+ updateRanges: function(){
+ var range = $.map(this.dates, function(d){
+ return d.valueOf();
+ });
+ $.each(this.pickers, function(i, p){
+ p.setRange(range);
+ });
+ },
+ dateUpdated: function(e){
+ // `this.updating` is a workaround for preventing infinite recursion
+ // between `changeDate` triggering and `setUTCDate` calling. Until
+ // there is a better mechanism.
+ if (this.updating)
+ return;
+ this.updating = true;
+
+ var dp = $(e.target).data('datepicker'),
+ new_date = dp.getUTCDate(),
+ i = $.inArray(e.target, this.inputs),
+ j = i - 1,
+ k = i + 1,
+ l = this.inputs.length;
+ if (i === -1)
+ return;
+
+ $.each(this.pickers, function(i, p){
+ if (!p.getUTCDate())
+ p.setUTCDate(new_date);
+ });
+
+ if (new_date < this.dates[j]){
+ // Date being moved earlier/left
+ while (j >= 0 && new_date < this.dates[j]){
+ this.pickers[j--].setUTCDate(new_date);
+ }
+ }
+ else if (new_date > this.dates[k]){
+ // Date being moved later/right
+ while (k < l && new_date > this.dates[k]){
+ this.pickers[k++].setUTCDate(new_date);
+ }
+ }
+ this.updateDates();
+
+ delete this.updating;
+ },
+ remove: function(){
+ $.map(this.pickers, function(p){ p.remove(); });
+ delete this.element.data().datepicker;
+ }
+ };
+
+ function opts_from_el(el, prefix){
+ // Derive options from element data-attrs
+ var data = $(el).data(),
+ out = {}, inkey,
+ replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
+ prefix = new RegExp('^' + prefix.toLowerCase());
+ function re_lower(_,a){
+ return a.toLowerCase();
+ }
+ for (var key in data)
+ if (prefix.test(key)){
+ inkey = key.replace(replace, re_lower);
+ out[inkey] = data[key];
+ }
+ return out;
+ }
+
+ function opts_from_locale(lang){
+ // Derive options from locale plugins
+ var out = {};
+ // Check if "de-DE" style date is available, if not language should
+ // fallback to 2 letter code eg "de"
+ if (!dates[lang]){
+ lang = lang.split('-')[0];
+ if (!dates[lang])
+ return;
+ }
+ var d = dates[lang];
+ $.each(locale_opts, function(i,k){
+ if (k in d)
+ out[k] = d[k];
+ });
+ return out;
+ }
+
+ var old = $.fn.datepicker;
+ var datepickerPlugin = function(option){
+ var args = Array.apply(null, arguments);
+ args.shift();
+ var internal_return;
+ this.each(function(){
+ var $this = $(this),
+ data = $this.data('datepicker'),
+ options = typeof option === 'object' && option;
+ if (!data){
+ var elopts = opts_from_el(this, 'date'),
+ // Preliminary otions
+ xopts = $.extend({}, defaults, elopts, options),
+ locopts = opts_from_locale(xopts.language),
+ // Options priority: js args, data-attrs, locales, defaults
+ opts = $.extend({}, defaults, locopts, elopts, options);
+ if ($this.hasClass('input-daterange') || opts.inputs){
+ var ropts = {
+ inputs: opts.inputs || $this.find('input').toArray()
+ };
+ $this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));
+ }
+ else {
+ $this.data('datepicker', (data = new Datepicker(this, opts)));
+ }
+ }
+ if (typeof option === 'string' && typeof data[option] === 'function'){
+ internal_return = data[option].apply(data, args);
+ if (internal_return !== undefined)
+ return false;
+ }
+ });
+ if (internal_return !== undefined)
+ return internal_return;
+ else
+ return this;
+ };
+ $.fn.datepicker = datepickerPlugin;
+
+ var defaults = $.fn.datepicker.defaults = {
+ autoclose: false,
+ beforeShowDay: $.noop,
+ beforeShowMonth: $.noop,
+ calendarWeeks: false,
+ clearBtn: false,
+ toggleActive: false,
+ daysOfWeekDisabled: [],
+ datesDisabled: [],
+ endDate: Infinity,
+ forceParse: true,
+ format: 'mm/dd/yyyy',
+ keyboardNavigation: true,
+ language: 'en',
+ minViewMode: 0,
+ multidate: false,
+ multidateSeparator: ',',
+ orientation: "auto",
+ rtl: false,
+ startDate: -Infinity,
+ startView: 0,
+ todayBtn: false,
+ todayHighlight: false,
+ weekStart: 0,
+ disableTouchKeyboard: false,
+ enableOnReadonly: true,
+ container: 'body'
+ };
+ var locale_opts = $.fn.datepicker.locale_opts = [
+ 'format',
+ 'rtl',
+ 'weekStart'
+ ];
+ $.fn.datepicker.Constructor = Datepicker;
+ var dates = $.fn.datepicker.dates = {
+ en: {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ clear: "Clear"
+ }
+ };
+
+ var DPGlobal = {
+ modes: [
+ {
+ clsName: 'days',
+ navFnc: 'Month',
+ navStep: 1
+ },
+ {
+ clsName: 'months',
+ navFnc: 'FullYear',
+ navStep: 1
+ },
+ {
+ clsName: 'years',
+ navFnc: 'FullYear',
+ navStep: 10
+ }],
+ isLeapYear: function(year){
+ return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
+ },
+ getDaysInMonth: function(year, month){
+ return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
+ },
+ validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
+ nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
+ parseFormat: function(format){
+ // IE treats \0 as a string end in inputs (truncating the value),
+ // so it's a bad format delimiter, anyway
+ var separators = format.replace(this.validParts, '\0').split('\0'),
+ parts = format.match(this.validParts);
+ if (!separators || !separators.length || !parts || parts.length === 0){
+ throw new Error("Invalid date format.");
+ }
+ return {separators: separators, parts: parts};
+ },
+ parseDate: function(date, format, language){
+ if (!date)
+ return undefined;
+ if (date instanceof Date)
+ return date;
+ if (typeof format === 'string')
+ format = DPGlobal.parseFormat(format);
+ var part_re = /([\-+]\d+)([dmwy])/,
+ parts = date.match(/([\-+]\d+)([dmwy])/g),
+ part, dir, i;
+ if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){
+ date = new Date();
+ for (i=0; i < parts.length; i++){
+ part = part_re.exec(parts[i]);
+ dir = parseInt(part[1]);
+ switch (part[2]){
+ case 'd':
+ date.setUTCDate(date.getUTCDate() + dir);
+ break;
+ case 'm':
+ date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);
+ break;
+ case 'w':
+ date.setUTCDate(date.getUTCDate() + dir * 7);
+ break;
+ case 'y':
+ date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);
+ break;
+ }
+ }
+ return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
+ }
+ parts = date && date.match(this.nonpunctuation) || [];
+ date = new Date();
+ var parsed = {},
+ setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
+ setters_map = {
+ yyyy: function(d,v){
+ return d.setUTCFullYear(v);
+ },
+ yy: function(d,v){
+ return d.setUTCFullYear(2000+v);
+ },
+ m: function(d,v){
+ if (isNaN(d))
+ return d;
+ v -= 1;
+ while (v < 0) v += 12;
+ v %= 12;
+ d.setUTCMonth(v);
+ while (d.getUTCMonth() !== v)
+ d.setUTCDate(d.getUTCDate()-1);
+ return d;
+ },
+ d: function(d,v){
+ return d.setUTCDate(v);
+ }
+ },
+ val, filtered;
+ setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
+ setters_map['dd'] = setters_map['d'];
+ date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
+ var fparts = format.parts.slice();
+ // Remove noop parts
+ if (parts.length !== fparts.length){
+ fparts = $(fparts).filter(function(i,p){
+ return $.inArray(p, setters_order) !== -1;
+ }).toArray();
+ }
+ // Process remainder
+ function match_part(){
+ var m = this.slice(0, parts[i].length),
+ p = parts[i].slice(0, m.length);
+ return m.toLowerCase() === p.toLowerCase();
+ }
+ if (parts.length === fparts.length){
+ var cnt;
+ for (i=0, cnt = fparts.length; i < cnt; i++){
+ val = parseInt(parts[i], 10);
+ part = fparts[i];
+ if (isNaN(val)){
+ switch (part){
+ case 'MM':
+ filtered = $(dates[language].months).filter(match_part);
+ val = $.inArray(filtered[0], dates[language].months) + 1;
+ break;
+ case 'M':
+ filtered = $(dates[language].monthsShort).filter(match_part);
+ val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
+ break;
+ }
+ }
+ parsed[part] = val;
+ }
+ var _date, s;
+ for (i=0; i < setters_order.length; i++){
+ s = setters_order[i];
+ if (s in parsed && !isNaN(parsed[s])){
+ _date = new Date(date);
+ setters_map[s](_date, parsed[s]);
+ if (!isNaN(_date))
+ date = _date;
+ }
+ }
+ }
+ return date;
+ },
+ formatDate: function(date, format, language){
+ if (!date)
+ return '';
+ if (typeof format === 'string')
+ format = DPGlobal.parseFormat(format);
+ var val = {
+ d: date.getUTCDate(),
+ D: dates[language].daysShort[date.getUTCDay()],
+ DD: dates[language].days[date.getUTCDay()],
+ m: date.getUTCMonth() + 1,
+ M: dates[language].monthsShort[date.getUTCMonth()],
+ MM: dates[language].months[date.getUTCMonth()],
+ yy: date.getUTCFullYear().toString().substring(2),
+ yyyy: date.getUTCFullYear()
+ };
+ val.dd = (val.d < 10 ? '0' : '') + val.d;
+ val.mm = (val.m < 10 ? '0' : '') + val.m;
+ date = [];
+ var seps = $.extend([], format.separators);
+ for (var i=0, cnt = format.parts.length; i <= cnt; i++){
+ if (seps.length)
+ date.push(seps.shift());
+ date.push(val[format.parts[i]]);
+ }
+ return date.join('');
+ },
+ headTemplate: '<thead>'+
+ '<tr>'+
+ '<th class="prev">«</th>'+
+ '<th colspan="5" class="datepicker-switch"></th>'+
+ '<th class="next">»</th>'+
+ '</tr>'+
+ '</thead>',
+ contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
+ footTemplate: '<tfoot>'+
+ '<tr>'+
+ '<th colspan="7" class="today"></th>'+
+ '</tr>'+
+ '<tr>'+
+ '<th colspan="7" class="clear"></th>'+
+ '</tr>'+
+ '</tfoot>'
+ };
+ DPGlobal.template = '<div class="datepicker">'+
+ '<div class="datepicker-days">'+
+ '<table class=" table-condensed">'+
+ DPGlobal.headTemplate+
+ '<tbody></tbody>'+
+ DPGlobal.footTemplate+
+ '</table>'+
+ '</div>'+
+ '<div class="datepicker-months">'+
+ '<table class="table-condensed">'+
+ DPGlobal.headTemplate+
+ DPGlobal.contTemplate+
+ DPGlobal.footTemplate+
+ '</table>'+
+ '</div>'+
+ '<div class="datepicker-years">'+
+ '<table class="table-condensed">'+
+ DPGlobal.headTemplate+
+ DPGlobal.contTemplate+
+ DPGlobal.footTemplate+
+ '</table>'+
+ '</div>'+
+ '</div>';
+
+ $.fn.datepicker.DPGlobal = DPGlobal;
+
+
+ /* DATEPICKER NO CONFLICT
+ * =================== */
+
+ $.fn.datepicker.noConflict = function(){
+ $.fn.datepicker = old;
+ return this;
+ };
+
+ /* DATEPICKER VERSION
+ * =================== */
+ $.fn.datepicker.version = "1.4.0";
+
+ /* DATEPICKER DATA-API
+ * ================== */
+
+ $(document).on(
+ 'focus.datepicker.data-api click.datepicker.data-api',
+ '[data-provide="datepicker"]',
+ function(e){
+ var $this = $(this);
+ if ($this.data('datepicker'))
+ return;
+ e.preventDefault();
+ // component click requires us to explicitly show it
+ datepickerPlugin.call($this, 'show');
+ }
+ );
+ $(function(){
+ datepickerPlugin.call($('[data-provide="datepicker-inline"]'));
+ });
+
+}(window.jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js
new file mode 100644
index 0000000..f26d0d8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js
@@ -0,0 +1,8 @@
+/*!
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
+ *
+ * Copyright 2012 Stefan Petre
+ * Improvements by Andrew Rowls
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ */
+!function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(a){return function(){return this[a].apply(this,arguments)}}function g(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function h(b){var c={};if(p[b]||(b=b.split("-")[0],p[b])){var d=p[b];return a.each(o,function(a,b){b in d&&(c[b]=d[b])}),c}}var i=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;d>c;c++)if(this[c].valueOf()===b)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new i;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),j=function(b,c){this._process_options(c),this.dates=new i,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInline=!1,this.isInput=this.element.is("input"),this.component=this.element.hasClass("date")?this.element.find(".add-on, .input-group-addon, .btn"):!1,this.hasInput=this.component&&this.element.find("input").length,this.component&&0===this.component.length&&(this.component=!1),this.picker=a(q.template),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.viewMode=this.o.startView,this.o.calendarWeeks&&this.picker.find("tfoot .today, tfoot .clear").attr("colspan",function(a,b){return parseInt(b)+1}),this._allow_update=!1,this.setStartDate(this._o.startDate),this.setEndDate(this._o.endDate),this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled),this.setDatesDisabled(this.o.datesDisabled),this.fillDow(),this.fillMonths(),this._allow_update=!0,this.update(),this.showMode(),this.isInline&&this.show()};j.prototype={constructor:j,_process_options:function(e){this._o=a.extend({},this._o,e);var f=this.o=a.extend({},this._o),g=f.language;switch(p[g]||(g=g.split("-")[0],p[g]||(g=n.language)),f.language=g,f.startView){case 2:case"decade":f.startView=2;break;case 1:case"year":f.startView=1;break;default:f.startView=0}switch(f.minViewMode){case 1:case"months":f.minViewMode=1;break;case 2:case"years":f.minViewMode=2;break;default:f.minViewMode=0}f.startView=Math.max(f.startView,f.minViewMode),f.multidate!==!0&&(f.multidate=Number(f.multidate)||!1,f.multidate!==!1&&(f.multidate=Math.max(0,f.multidate))),f.multidateSeparator=String(f.multidateSeparator),f.weekStart%=7,f.weekEnd=(f.weekStart+6)%7;var h=q.parseFormat(f.format);if(f.startDate!==-1/0&&(f.startDate=f.startDate?f.startDate instanceof Date?this._local_to_utc(this._zero_time(f.startDate)):q.parseDate(f.startDate,h,f.language):-1/0),1/0!==f.endDate&&(f.endDate=f.endDate?f.endDate instanceof Date?this._local_to_utc(this._zero_time(f.endDate)):q.parseDate(f.endDate,h,f.language):1/0),f.daysOfWeekDisabled=f.daysOfWeekDisabled||[],a.isArray(f.daysOfWeekDisabled)||(f.daysOfWeekDisabled=f.daysOfWeekDisabled.split(/[,\s]*/)),f.daysOfWeekDisabled=a.map(f.daysOfWeekDisabled,function(a){return parseInt(a,10)}),f.datesDisabled=f.datesDisabled||[],!a.isArray(f.datesDisabled)){var i=[];i.push(q.parseDate(f.datesDisabled,h,f.language)),f.datesDisabled=i}f.datesDisabled=a.map(f.datesDisabled,function(a){return q.parseDate(a,h,f.language)});var j=String(f.orientation).toLowerCase().split(/\s+/g),k=f.orientation.toLowerCase();if(j=a.grep(j,function(a){return/^auto|left|right|top|bottom$/.test(a)}),f.orientation={x:"auto",y:"auto"},k&&"auto"!==k)if(1===j.length)switch(j[0]){case"top":case"bottom":f.orientation.y=j[0];break;case"left":case"right":f.orientation.x=j[0]}else k=a.grep(j,function(a){return/^left|right$/.test(a)}),f.orientation.x=k[0]||"auto",k=a.grep(j,function(a){return/^top|bottom$/.test(a)}),f.orientation.y=k[0]||"auto";else;if(f.defaultViewDate){var l=f.defaultViewDate.year||(new Date).getFullYear(),m=f.defaultViewDate.month||0,o=f.defaultViewDate.day||1;f.defaultViewDate=c(l,m,o)}else f.defaultViewDate=d();f.showOnFocus=f.showOnFocus!==b?f.showOnFocus:!0},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(d=b,e=a[f][1]):3===a[f].length&&(d=a[f][1],e=a[f][2]),c.on(e,d)},_unapplyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(e=b,d=a[f][1]):3===a[f].length&&(e=a[f][1],d=a[f][2]),c.off(d,e)},_buildEvents:function(){var b={keyup:a.proxy(function(b){-1===a.inArray(b.keyCode,[27,37,39,38,40,32,13,9])&&this.update()},this),keydown:a.proxy(this.keydown,this)};this.o.showOnFocus===!0&&(b.focus=a.proxy(this.show,this)),this.isInput?this._events=[[this.element,b]]:this.component&&this.hasInput?this._events=[[this.element.find("input"),b],[this.component,{click:a.proxy(this.show,this)}]]:this.element.is("div")?this.isInline=!0:this._events=[[this.element,{click:a.proxy(this.show,this)}]],this._events.push([this.element,"*",{blur:a.proxy(function(a){this._focused_from=a.target},this)}],[this.element,{blur:a.proxy(function(a){this._focused_from=a.target},this)}]),this._secondaryEvents=[[this.picker,{click:a.proxy(this.click,this)}],[a(window),{resize:a.proxy(this.place,this)}],[a(document),{"mousedown touchstart":a.proxy(function(a){this.element.is(a.target)||this.element.find(a.target).length||this.picker.is(a.target)||this.picker.find(a.target).length||this.hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(b,c){var d=c||this.dates.get(-1),e=this._utc_to_local(d);this.element.trigger({type:b,date:e,dates:a.map(this.dates,this._utc_to_local),format:a.proxy(function(a,b){0===arguments.length?(a=this.dates.length-1,b=this.o.format):"string"==typeof a&&(b=a,a=this.dates.length-1),b=b||this.o.format;var c=this.dates.get(a);return q.formatDate(c,b,this.o.language)},this)})},show:function(){return this.element.attr("readonly")&&this.o.enableOnReadonly===!1?void 0:(this.isInline||this.picker.appendTo(this.o.container),this.place(),this.picker.show(),this._attachSecondaryEvents(),this._trigger("show"),(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.o.disableTouchKeyboard&&a(this.element).blur(),this)},hide:function(){return this.isInline?this:this.picker.is(":visible")?(this.focusDate=null,this.picker.hide().detach(),this._detachSecondaryEvents(),this.viewMode=this.o.startView,this.showMode(),this.o.forceParse&&(this.isInput&&this.element.val()||this.hasInput&&this.element.find("input").val())&&this.setValue(),this._trigger("hide"),this):this},remove:function(){return this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date,this},_utc_to_local:function(a){return a&&new Date(a.getTime()+6e4*a.getTimezoneOffset())},_local_to_utc:function(a){return a&&new Date(a.getTime()-6e4*a.getTimezoneOffset())},_zero_time:function(a){return a&&new Date(a.getFullYear(),a.getMonth(),a.getDate())},_zero_utc_time:function(a){return a&&new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()))},getDates:function(){return a.map(this.dates,this._utc_to_local)},getUTCDates:function(){return a.map(this.dates,function(a){return new Date(a)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var a=this.dates.get(-1);return"undefined"!=typeof a?new Date(a):null},clearDates:function(){var a;this.isInput?a=this.element:this.component&&(a=this.element.find("input")),a&&a.val("").change(),this.update(),this._trigger("changeDate"),this.o.autoclose&&this.hide()},setDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,b),this._trigger("changeDate"),this.setValue(),this},setUTCDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,a.map(b,this._utc_to_local)),this._trigger("changeDate"),this.setValue(),this},setDate:f("setDates"),setUTCDate:f("setUTCDates"),setValue:function(){var a=this.getFormattedDate();return this.isInput?this.element.val(a).change():this.component&&this.element.find("input").val(a).change(),this},getFormattedDate:function(c){c===b&&(c=this.o.format);var d=this.o.language;return a.map(this.dates,function(a){return q.formatDate(a,c,d)}).join(this.o.multidateSeparator)},setStartDate:function(a){return this._process_options({startDate:a}),this.update(),this.updateNavArrows(),this},setEndDate:function(a){return this._process_options({endDate:a}),this.update(),this.updateNavArrows(),this},setDaysOfWeekDisabled:function(a){return this._process_options({daysOfWeekDisabled:a}),this.update(),this.updateNavArrows(),this},setDatesDisabled:function(a){this._process_options({datesDisabled:a}),this.update(),this.updateNavArrows()},place:function(){if(this.isInline)return this;var b=this.picker.outerWidth(),c=this.picker.outerHeight(),d=10,e=a(this.o.container).width(),f=a(this.o.container).height(),g=a(this.o.container).scrollTop(),h=a(this.o.container).offset(),i=[];this.element.parents().each(function(){var b=a(this).css("z-index");"auto"!==b&&0!==b&&i.push(parseInt(b))});var j=Math.max.apply(Math,i)+10,k=this.component?this.component.parent().offset():this.element.offset(),l=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1),m=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1),n=k.left-h.left,o=k.top-h.top;this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"),"auto"!==this.o.orientation.x?(this.picker.addClass("datepicker-orient-"+this.o.orientation.x),"right"===this.o.orientation.x&&(n-=b-m)):k.left<0?(this.picker.addClass("datepicker-orient-left"),n-=k.left-d):n+b>e?(this.picker.addClass("datepicker-orient-right"),n=k.left+m-b):this.picker.addClass("datepicker-orient-left");var p,q,r=this.o.orientation.y;if("auto"===r&&(p=-g+o-c,q=g+f-(o+l+c),r=Math.max(p,q)===q?"top":"bottom"),this.picker.addClass("datepicker-orient-"+r),"top"===r?o+=l:o-=c+parseInt(this.picker.css("padding-top")),this.o.rtl){var s=e-(n+m);this.picker.css({top:o,right:s,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.element.find("input").val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return q.parseDate(a,this.o.format,this.o.language)},this)),c=a.grep(c,a.proxy(function(a){return a<this.o.startDate||a>this.o.endDate||!a},this),!0),this.dates.replace(c),this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDate<this.o.startDate?this.viewDate=new Date(this.o.startDate):this.viewDate>this.o.endDate&&(this.viewDate=new Date(this.o.endDate)),d?this.setValue():c.length&&String(b)!==String(this.dates)&&this._trigger("changeDate"),!this.dates.length&&b.length&&this._trigger("clearDate"),this.fill(),this},fillDow:function(){var a=this.o.weekStart,b="<tr>";if(this.o.calendarWeeks){this.picker.find(".datepicker-days thead tr:first-child .datepicker-switch").attr("colspan",function(a,b){return parseInt(b)+1});var c='<th class="cw"> </th>';b+=c}for(;a<this.o.weekStart+7;)b+='<th class="dow">'+p[this.o.language].daysMin[a++%7]+"</th>";b+="</tr>",this.picker.find(".datepicker-days thead").append(b)},fillMonths:function(){for(var a="",b=0;12>b;)a+='<span class="month">'+p[this.o.language].monthsShort[b++]+"</span>";this.picker.find(".datepicker-months td").html(a)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],d=this.viewDate.getUTCFullYear(),f=this.viewDate.getUTCMonth(),g=new Date;return b.getUTCFullYear()<d||b.getUTCFullYear()===d&&b.getUTCMonth()<f?c.push("old"):(b.getUTCFullYear()>d||b.getUTCFullYear()===d&&b.getUTCMonth()>f)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&b.getUTCFullYear()===g.getFullYear()&&b.getUTCMonth()===g.getMonth()&&b.getUTCDate()===g.getDate()&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),(b.valueOf()<this.o.startDate||b.valueOf()>this.o.endDate||-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled))&&c.push("disabled"),this.o.datesDisabled.length>0&&a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0&&c.push("disabled","disabled-date"),this.range&&(b>this.range[0]&&b<this.range[this.range.length-1]&&c.push("range"),-1!==a.inArray(b.valueOf(),this.range)&&c.push("selected")),c},fill:function(){var d,e=new Date(this.viewDate),f=e.getUTCFullYear(),g=e.getUTCMonth(),h=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,i=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,j=1/0!==this.o.endDate?this.o.endDate.getUTCFullYear():1/0,k=1/0!==this.o.endDate?this.o.endDate.getUTCMonth():1/0,l=p[this.o.language].today||p.en.today||"",m=p[this.o.language].clear||p.en.clear||"";if(!isNaN(f)&&!isNaN(g)){this.picker.find(".datepicker-days thead .datepicker-switch").text(p[this.o.language].months[g]+" "+f),this.picker.find("tfoot .today").text(l).toggle(this.o.todayBtn!==!1),this.picker.find("tfoot .clear").text(m).toggle(this.o.clearBtn!==!1),this.updateNavArrows(),this.fillMonths();var n=c(f,g-1,28),o=q.getDaysInMonth(n.getUTCFullYear(),n.getUTCMonth());n.setUTCDate(o),n.setUTCDate(o-(n.getUTCDay()-this.o.weekStart+7)%7);var r=new Date(n);r.setUTCDate(r.getUTCDate()+42),r=r.valueOf();for(var s,t=[];n.valueOf()<r;){if(n.getUTCDay()===this.o.weekStart&&(t.push("<tr>"),this.o.calendarWeeks)){var u=new Date(+n+(this.o.weekStart-n.getUTCDay()-7)%7*864e5),v=new Date(Number(u)+(11-u.getUTCDay())%7*864e5),w=new Date(Number(w=c(v.getUTCFullYear(),0,1))+(11-w.getUTCDay())%7*864e5),x=(v-w)/864e5/7+1;t.push('<td class="cw">'+x+"</td>")}if(s=this.getClassNames(n),s.push("day"),this.o.beforeShowDay!==a.noop){var y=this.o.beforeShowDay(this._utc_to_local(n));y===b?y={}:"boolean"==typeof y?y={enabled:y}:"string"==typeof y&&(y={classes:y}),y.enabled===!1&&s.push("disabled"),y.classes&&(s=s.concat(y.classes.split(/\s+/))),y.tooltip&&(d=y.tooltip)}s=a.unique(s),t.push('<td class="'+s.join(" ")+'"'+(d?' title="'+d+'"':"")+">"+n.getUTCDate()+"</td>"),d=null,n.getUTCDay()===this.o.weekEnd&&t.push("</tr>"),n.setUTCDate(n.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").empty().append(t.join(""));var z=this.picker.find(".datepicker-months").find("th:eq(1)").text(f).end().find("span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===f&&z.eq(b.getUTCMonth()).addClass("active")}),(h>f||f>j)&&z.addClass("disabled"),f===h&&z.slice(0,i).addClass("disabled"),f===j&&z.slice(k+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var A=this;a.each(z,function(b,c){if(!a(c).hasClass("disabled")){var d=new Date(f,b,1),e=A.o.beforeShowMonth(d);e===!1&&a(c).addClass("disabled")}})}t="",f=10*parseInt(f/10,10);var B=this.picker.find(".datepicker-years").find("th:eq(1)").text(f+"-"+(f+9)).end().find("td");f-=1;for(var C,D=a.map(this.dates,function(a){return a.getUTCFullYear()}),E=-1;11>E;E++)C=["year"],-1===E?C.push("old"):10===E&&C.push("new"),-1!==a.inArray(f,D)&&C.push("active"),(h>f||f>j)&&C.push("disabled"),t+='<span class="'+C.join(" ")+'">'+f+"</span>",f+=1;B.html(t)}},updateNavArrows:function(){if(this._allow_update){var a=new Date(this.viewDate),b=a.getUTCFullYear(),c=a.getUTCMonth();switch(this.viewMode){case 0:this.picker.find(".prev").css(this.o.startDate!==-1/0&&b<=this.o.startDate.getUTCFullYear()&&c<=this.o.startDate.getUTCMonth()?{visibility:"hidden"}:{visibility:"visible"}),this.picker.find(".next").css(1/0!==this.o.endDate&&b>=this.o.endDate.getUTCFullYear()&&c>=this.o.endDate.getUTCMonth()?{visibility:"hidden"}:{visibility:"visible"});break;case 1:case 2:this.picker.find(".prev").css(this.o.startDate!==-1/0&&b<=this.o.startDate.getUTCFullYear()?{visibility:"hidden"}:{visibility:"visible"}),this.picker.find(".next").css(1/0!==this.o.endDate&&b>=this.o.endDate.getUTCFullYear()?{visibility:"hidden"}:{visibility:"visible"})}}},click:function(b){b.preventDefault();var d,e,f,g=a(b.target).closest("span, td, th");if(1===g.length)switch(g[0].nodeName.toLowerCase()){case"th":switch(g[0].className){case"datepicker-switch":this.showMode(1);break;case"prev":case"next":var h=q.modes[this.viewMode].navStep*("prev"===g[0].className?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveMonth(this.viewDate,h),this._trigger("changeMonth",this.viewDate);break;case 1:case 2:this.viewDate=this.moveYear(this.viewDate,h),1===this.viewMode&&this._trigger("changeYear",this.viewDate)}this.fill();break;case"today":var i=new Date;i=c(i.getFullYear(),i.getMonth(),i.getDate(),0,0,0),this.showMode(-2);var j="linked"===this.o.todayBtn?null:"view";this._setDate(i,j);break;case"clear":this.clearDates()}break;case"span":g.hasClass("disabled")||(this.viewDate.setUTCDate(1),g.hasClass("month")?(f=1,e=g.parent().find("span").index(g),d=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(e),this._trigger("changeMonth",this.viewDate),1===this.o.minViewMode&&this._setDate(c(d,e,f))):(f=1,e=0,d=parseInt(g.text(),10)||0,this.viewDate.setUTCFullYear(d),this._trigger("changeYear",this.viewDate),2===this.o.minViewMode&&this._setDate(c(d,e,f))),this.showMode(-1),this.fill());break;case"td":g.hasClass("day")&&!g.hasClass("disabled")&&(f=parseInt(g.text(),10)||1,d=this.viewDate.getUTCFullYear(),e=this.viewDate.getUTCMonth(),g.hasClass("old")?0===e?(e=11,d-=1):e-=1:g.hasClass("new")&&(11===e?(e=0,d+=1):e+=1),this._setDate(c(d,e,f)))}this.picker.is(":visible")&&this._focused_from&&a(this._focused_from).focus(),delete this._focused_from},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),b&&"view"!==b||(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate");var c;this.isInput?c=this.element:this.component&&(c=this.element.find("input")),c&&c.change(),!this.o.autoclose||b&&"date"!==b||this.hide()},moveMonth:function(a,c){if(!a)return b;if(!c)return a;var d,e,f=new Date(a.valueOf()),g=f.getUTCDate(),h=f.getUTCMonth(),i=Math.abs(c);if(c=c>0?1:-1,1===i)e=-1===c?function(){return f.getUTCMonth()===h}:function(){return f.getUTCMonth()!==d},d=h+c,f.setUTCMonth(d),(0>d||d>11)&&(d=(d+12)%12);else{for(var j=0;i>j;j++)f=this.moveMonth(f,c);d=f.getUTCMonth(),f.setUTCDate(g),e=function(){return d!==f.getUTCMonth()}}for(;e();)f.setUTCDate(--g),f.setUTCMonth(d);return f},moveYear:function(a,b){return this.moveMonth(a,12*b)},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(27===a.keyCode&&this.show());var b,c,e,f=!1,g=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault();break;case 37:case 39:if(!this.o.keyboardNavigation)break;b=37===a.keyCode?-1:1,a.ctrlKey?(c=this.moveYear(this.dates.get(-1)||d(),b),e=this.moveYear(g,b),this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveMonth(this.dates.get(-1)||d(),b),e=this.moveMonth(g,b),this._trigger("changeMonth",this.viewDate)):(c=new Date(this.dates.get(-1)||d()),c.setUTCDate(c.getUTCDate()+b),e=new Date(g),e.setUTCDate(g.getUTCDate()+b)),this.dateWithinRange(e)&&(this.focusDate=this.viewDate=e,this.setValue(),this.fill(),a.preventDefault());break;case 38:case 40:if(!this.o.keyboardNavigation)break;b=38===a.keyCode?-1:1,a.ctrlKey?(c=this.moveYear(this.dates.get(-1)||d(),b),e=this.moveYear(g,b),this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveMonth(this.dates.get(-1)||d(),b),e=this.moveMonth(g,b),this._trigger("changeMonth",this.viewDate)):(c=new Date(this.dates.get(-1)||d()),c.setUTCDate(c.getUTCDate()+7*b),e=new Date(g),e.setUTCDate(g.getUTCDate()+7*b)),this.dateWithinRange(e)&&(this.focusDate=this.viewDate=e,this.setValue(),this.fill(),a.preventDefault());break;case 32:break;case 13:g=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(g),f=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),"function"==typeof a.stopPropagation?a.stopPropagation():a.cancelBubble=!0,this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}if(f){this._trigger(this.dates.length?"changeDate":"clearDate");var h;this.isInput?h=this.element:this.component&&(h=this.element.find("input")),h&&h.change()}},showMode:function(a){a&&(this.viewMode=Math.max(this.o.minViewMode,Math.min(2,this.viewMode+a))),this.picker.children("div").hide().filter(".datepicker-"+q.modes[this.viewMode].clsName).css("display","block"),this.updateNavArrows()}};var k=function(b,c){this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,m.call(a(this.inputs),c).bind("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a(b).data("datepicker")}),this.updateDates()};k.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(b){if(!this.updating){this.updating=!0;var c=a(b.target).data("datepicker"),d=c.getUTCDate(),e=a.inArray(b.target,this.inputs),f=e-1,g=e+1,h=this.inputs.length;if(-1!==e){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b.setUTCDate(d)}),d<this.dates[f])for(;f>=0&&d<this.dates[f];)this.pickers[f--].setUTCDate(d);else if(d>this.dates[g])for(;h>g&&d>this.dates[g];)this.pickers[g++].setUTCDate(d);this.updateDates(),delete this.updating}}},remove:function(){a.map(this.pickers,function(a){a.remove()}),delete this.element.data().datepicker}};var l=a.fn.datepicker,m=function(c){var d=Array.apply(null,arguments);d.shift();var e;return this.each(function(){var f=a(this),i=f.data("datepicker"),l="object"==typeof c&&c;if(!i){var m=g(this,"date"),o=a.extend({},n,m,l),p=h(o.language),q=a.extend({},n,p,m,l);if(f.hasClass("input-daterange")||q.inputs){var r={inputs:q.inputs||f.find("input").toArray()};f.data("datepicker",i=new k(this,a.extend(q,r)))}else f.data("datepicker",i=new j(this,q))}return"string"==typeof c&&"function"==typeof i[c]&&(e=i[c].apply(i,d),e!==b)?!1:void 0}),e!==b?e:this};a.fn.datepicker=m;var n=a.fn.datepicker.defaults={autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keyboardNavigation:!0,language:"en",minViewMode:0,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,container:"body"},o=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=j;var p=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear"}},q={modes:[{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(a){return a%4===0&&a%100!==0||a%400===0},getDaysInMonth:function(a,b){return[31,q.isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,parseFormat:function(a){var b=a.replace(this.validParts,"\x00").split("\x00"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(d,e,f){function g(){var a=this.slice(0,m[k].length),b=m[k].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!d)return b;if(d instanceof Date)return d;"string"==typeof e&&(e=q.parseFormat(e));var h,i,k,l=/([\-+]\d+)([dmwy])/,m=d.match(/([\-+]\d+)([dmwy])/g);if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(d)){for(d=new Date,k=0;k<m.length;k++)switch(h=l.exec(m[k]),i=parseInt(h[1]),h[2]){case"d":d.setUTCDate(d.getUTCDate()+i);break;case"m":d=j.prototype.moveMonth.call(j.prototype,d,i);break;case"w":d.setUTCDate(d.getUTCDate()+7*i);break;case"y":d=j.prototype.moveYear.call(j.prototype,d,i)}return c(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),0,0,0)}m=d&&d.match(this.nonpunctuation)||[],d=new Date;var n,o,r={},s=["yyyy","yy","M","MM","m","mm","d","dd"],t={yyyy:function(a,b){return a.setUTCFullYear(b)},yy:function(a,b){return a.setUTCFullYear(2e3+b)},m:function(a,b){if(isNaN(a))return a;for(b-=1;0>b;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};t.M=t.MM=t.mm=t.m,t.dd=t.d,d=c(d.getFullYear(),d.getMonth(),d.getDate(),0,0,0);var u=e.parts.slice();if(m.length!==u.length&&(u=a(u).filter(function(b,c){return-1!==a.inArray(c,s)}).toArray()),m.length===u.length){var v;for(k=0,v=u.length;v>k;k++){if(n=parseInt(m[k],10),h=u[k],isNaN(n))switch(h){case"MM":o=a(p[f].months).filter(g),n=a.inArray(o[0],p[f].months)+1;break;case"M":o=a(p[f].monthsShort).filter(g),n=a.inArray(o[0],p[f].monthsShort)+1}r[h]=n}var w,x;for(k=0;k<s.length;k++)x=s[k],x in r&&!isNaN(r[x])&&(w=new Date(d),t[x](w,r[x]),isNaN(w)||(d=w))}return d},formatDate:function(b,c,d){if(!b)return"";"string"==typeof c&&(c=q.parseFormat(c));var e={d:b.getUTCDate(),D:p[d].daysShort[b.getUTCDay()],DD:p[d].days[b.getUTCDay()],m:b.getUTCMonth()+1,M:p[d].monthsShort[b.getUTCMonth()],MM:p[d].months[b.getUTCMonth()],yy:b.getUTCFullYear().toString().substring(2),yyyy:b.getUTCFullYear()};e.dd=(e.d<10?"0":"")+e.d,e.mm=(e.m<10?"0":"")+e.m,b=[];for(var f=a.extend([],c.separators),g=0,h=c.parts.length;h>=g;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'<thead><tr><th class="prev">«</th><th colspan="5" class="datepicker-switch"></th><th class="next">»</th></tr></thead>',contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};q.template='<div class="datepicker"><div class="datepicker-days"><table class=" table-condensed">'+q.headTemplate+"<tbody></tbody>"+q.footTemplate+'</table></div><div class="datepicker-months"><table class="table-condensed">'+q.headTemplate+q.contTemplate+q.footTemplate+'</table></div><div class="datepicker-years"><table class="table-condensed">'+q.headTemplate+q.contTemplate+q.footTemplate+"</table></div></div>",a.fn.datepicker.DPGlobal=q,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=l,this},a.fn.datepicker.version="1.4.0",a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),m.call(c,"show"))}),a(function(){m.call(a('[data-provide="datepicker-inline"]'))})}(window.jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ar.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ar.min.js
new file mode 100644
index 0000000..ece41af
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ar.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.az.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.az.min.js
new file mode 100644
index 0000000..3f423bb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.az.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə","Bazar"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş.","B."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş.","B."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bg.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bg.min.js
new file mode 100644
index 0000000..f0e057c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bg.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота","Неделя"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб","Нед"],daysMin:["Н","П","В","С","Ч","П","С","Н"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bs.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bs.min.js
new file mode 100644
index 0000000..59b2276
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bs.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota","Nedjelja"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub","Ned"],daysMin:["N","Po","U","Sr","Č","Pe","Su","N"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ca.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ca.min.js
new file mode 100644
index 0000000..e8e490a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ca.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte","Diumenge"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis","Diu"],daysMin:["dg","dl","dt","dc","dj","dv","ds","dg"],months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cs.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cs.min.js
new file mode 100644
index 0000000..3979c05
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cs.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota","Neděle"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob","Ned"],daysMin:["Ne","Po","Út","St","Čt","Pá","So","Ne"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",weekStart:1,format:"d.m.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cy.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cy.min.js
new file mode 100644
index 0000000..65124b5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cy.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn","Sul"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad","Sul"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa","Su"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.da.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.da.min.js
new file mode 100644
index 0000000..942a4cc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.da.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.da={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag","Søndag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør","Søn"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø","Sø"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"I Dag",clear:"Nulstil"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.de.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.de.min.js
new file mode 100644
index 0000000..f084216
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.de.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam","Son"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa","So"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.el.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.el.min.js
new file mode 100644
index 0000000..c0a9ca0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.el.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο","Κυριακή"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ","Κυρ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα","Κυ"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-GB.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-GB.min.js
new file mode 100644
index 0000000..eb69c58
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-GB.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.es.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.es.min.js
new file mode 100644
index 0000000..4d6c250
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.es.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb","Dom"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa","Do"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.et.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.et.min.js
new file mode 100644
index 0000000..4ad568b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.et.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev","Pühapäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup","Pühap"],daysMin:["P","E","T","K","N","R","L","P"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.eu.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.eu.min.js
new file mode 100644
index 0000000..0a6e265
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.eu.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata","Igandea"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr","Ig"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr","Ig"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fa.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fa.min.js
new file mode 100644
index 0000000..8575237
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fa.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.fa={days:["یکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه","یکشنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fi.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fi.min.js
new file mode 100644
index 0000000..3437795
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fi.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai","sunnuntai"],daysShort:["sun","maa","tii","kes","tor","per","lau","sun"],daysMin:["su","ma","ti","ke","to","pe","la","su"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",weekStart:1,format:"d.m.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fo.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fo.min.js
new file mode 100644
index 0000000..f20bfdc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fo.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur","Sunnudagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley","Sun"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le","Su"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr.min.js
new file mode 100644
index 0000000..1db147a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.fr={days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"],daysShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam.","dim."],daysMin:["d","l","ma","me","j","v","s","d"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthsShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],today:"Aujourd'hui",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr-CH.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr-CH.min.js
new file mode 100644
index 0000000..db64fe9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr-CH.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam","Dim"],daysMin:["D","L","Ma","Me","J","V","S","D"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.gl.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.gl.min.js
new file mode 100644
index 0000000..1e37600
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.gl.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado","Domingo"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb","Dom"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa","Do"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.he.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.he.min.js
new file mode 100644
index 0000000..191cb45
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.he.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hr.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hr.min.js
new file mode 100644
index 0000000..0a9222a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hr.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota","Nedjelja"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub","Ned"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su","Ne"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hu.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hu.min.js
new file mode 100644
index 0000000..1477399
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hu.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.hu={days:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat","Vasárnap"],daysShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo","Vas"],daysMin:["Va","Hé","Ke","Sz","Cs","Pé","Sz","Va"],months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthsShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Sze","Okt","Nov","Dec"],today:"Ma",weekStart:1,format:"yyyy.mm.dd"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hy.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hy.min.js
new file mode 100644
index 0000000..5ed0cb7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hy.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ","Կիրակի"],daysShort:["Կիր","Երկ","Երք","Չոր","Հնգ","Ուր","Շաբ","Կիր"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա","Կի"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.id.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.id.min.js
new file mode 100644
index 0000000..d9282d2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.id.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab","Mgu"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa","Mg"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.is.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.is.min.js
new file mode 100644
index 0000000..1a0e915
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.is.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur","Sunnudagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau","Sun"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La","Su"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it.min.js
new file mode 100644
index 0000000..bbc4a36
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato","Domenica"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab","Dom"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa","Do"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it-CH.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it-CH.min.js
new file mode 100644
index 0000000..c3c2ace
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it-CH.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato","Domenica"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab","Dom"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa","Do"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ja.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ja.min.js
new file mode 100644
index 0000000..62aacdf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ja.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜","日曜"],daysShort:["日","月","火","水","木","金","土","日"],daysMin:["日","月","火","水","木","金","土","日"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",clear:"クリア"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ka.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ka.min.js
new file mode 100644
index 0000000..1fd0e42
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ka.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი","კვირა"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ","კვი"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა","კვ"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომები","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kh.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kh.min.js
new file mode 100644
index 0000000..cc41e1a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kh.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍","អាទិត្យ"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kk.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kk.min.js
new file mode 100644
index 0000000..8bc297a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kk.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі","Жексенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен","Жек"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн","Жк"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мамыр","Мау","Шлд","Тмз","Қыр","Қзн","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kr.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kr.min.js
new file mode 100644
index 0000000..54a751b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kr.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일","일요일"],daysShort:["일","월","화","수","목","금","토","일"],daysMin:["일","월","화","수","목","금","토","일"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lt.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lt.min.js
new file mode 100644
index 0000000..918a04b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lt.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis","Sekmadienis"],daysShort:["S","Pr","A","T","K","Pn","Š","S"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št","Sk"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lv.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lv.min.js
new file mode 100644
index 0000000..966fdd0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lv.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena","Svētdiena"],daysShort:["Sv","P","O","T","C","Pk","S","Sv"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se","Sv"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],today:"Šodien",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.me.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.me.min.js
new file mode 100644
index 0000000..956a20e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.me.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota","Nedjelja"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub","Ned"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su","Ne"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.mk.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.mk.min.js
new file mode 100644
index 0000000..9a1a111
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.mk.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота","Недела"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб","Нед"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са","Не"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ms.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ms.min.js
new file mode 100644
index 0000000..f1c0bf1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ms.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu","Ahad"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab","Aha"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa","Ah"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nb.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nb.min.js
new file mode 100644
index 0000000..fd017b2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nb.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.nb={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag","Søndag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør","Søn"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø","Sø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I Dag"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl.min.js
new file mode 100644
index 0000000..12f7699
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag"],daysShort:["zo","ma","di","wo","do","vr","za","zo"],daysMin:["zo","ma","di","wo","do","vr","za","zo"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl-BE.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl-BE.min.js
new file mode 100644
index 0000000..796bdb5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl-BE.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag"],daysShort:["zo","ma","di","wo","do","vr","za","zo"],daysMin:["zo","ma","di","wo","do","vr","za","zo"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.no.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.no.min.js
new file mode 100644
index 0000000..a606e7e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.no.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.no={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I dag",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pl.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pl.min.js
new file mode 100644
index 0000000..6b575dd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pl.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.pl={days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota","Niedziela"],daysShort:["Nie","Pn","Wt","Śr","Czw","Pt","So","Nie"],daysMin:["N","Pn","Wt","Śr","Cz","Pt","So","N"],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthsShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],today:"Dzisiaj",weekStart:1,clear:"Wyczyść"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt.min.js
new file mode 100644
index 0000000..ee8d40b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado","Domingo"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb","Dom"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa","Do"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",clear:"Limpar"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt-BR.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt-BR.min.js
new file mode 100644
index 0000000..b36d790
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt-BR.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado","Domingo"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb","Dom"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa","Do"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",clear:"Limpar"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ro.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ro.min.js
new file mode 100644
index 0000000..3e25afa
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ro.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă","Duminică"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm","Dum"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ","Du"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs.min.js
new file mode 100644
index 0000000..8450e30
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота","Недеља"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб","Нед"],daysMin:["Н","По","У","Ср","Ч","Пе","Су","Н"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs-latin.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs-latin.min.js
new file mode 100644
index 0000000..91d9b68
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs-latin.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota","Nedelja"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub","Ned"],daysMin:["N","Po","U","Sr","Č","Pe","Su","N"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ru.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ru.min.js
new file mode 100644
index 0000000..f3db339
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ru.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота","Воскресенье"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб","Вск"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб","Вс"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sk.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sk.min.js
new file mode 100644
index 0000000..b53e396
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sk.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota","Nedeľa"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob","Ned"],daysMin:["Ne","Po","Ut","St","Št","Pia","So","Ne"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sl.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sl.min.js
new file mode 100644
index 0000000..10651c4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sl.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota","Nedelja"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob","Ned"],daysMin:["Ne","Po","To","Sr","Če","Pe","So","Ne"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sq.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sq.min.js
new file mode 100644
index 0000000..c1020a4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sq.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë","E Diel"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu","Die"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht","Di"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],today:"Sot"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr.min.js
new file mode 100644
index 0000000..47aa8f9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота","Недеља"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб","Нед"],daysMin:["Н","По","У","Ср","Ч","Пе","Су","Н"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr-latin.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr-latin.min.js
new file mode 100644
index 0000000..b0cc195
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr-latin.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota","Nedelja"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub","Ned"],daysMin:["N","Po","U","Sr","Č","Pe","Su","N"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sv.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sv.min.js
new file mode 100644
index 0000000..d69d8ec
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sv.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.sv={days:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag","Söndag"],daysShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör","Sön"],daysMin:["Sö","Må","Ti","On","To","Fr","Lö","Sö"],months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sw.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sw.min.js
new file mode 100644
index 0000000..7c97f2b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sw.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi","Jumapili"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1","J2"],daysMin:["2","3","4","5","A","I","1","2"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.th.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.th.min.js
new file mode 100644
index 0000000..1e398ba
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.th.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tr.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tr.min.js
new file mode 100644
index 0000000..c22f1b6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tr.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi","Pazar"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts","Pz"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct","Pz"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.uk.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.uk.min.js
new file mode 100644
index 0000000..7342cf5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.uk.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота","Неділя"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб","Нед"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб","Нд"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.vi.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.vi.min.js
new file mode 100644
index 0000000..bf54567
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.vi.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy","Chủ nhật"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7","CN"],daysMin:["CN","T2","T3","T4","T5","T6","T7","CN"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-CN.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-CN.min.js
new file mode 100644
index 0000000..3ca57d3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-CN.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日"],daysShort:["周日","周一","周二","周三","周四","周五","周六","周日"],daysMin:["日","一","二","三","四","五","六","日"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],today:"今日",format:"yyyy年mm月dd日",weekStart:1,clear:"清空"}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-TW.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-TW.min.js
new file mode 100644
index 0000000..d32a3c9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-TW.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日"],daysShort:["週日","週一","週二","週三","週四","週五","週六","週日"],daysMin:["日","一","二","三","四","五","六","日"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],today:"今天",format:"yyyy年mm月dd日",weekStart:1}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/demo_head.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/demo_head.html
new file mode 100644
index 0000000..4ff6775
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/demo_head.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('.popup > input').datepicker();
+ $('.popup > input').data('datepicker').picker.find('td:nth(15)').trigger('hover');
+ $('.component > div').datepicker({
+ format: 'mm-dd-yyyy'
+ });
+ $('.inline').datepicker();
+ };
+ </script>
+ </head>
+ <body data-capture=".popup, .component, .inline > div, .datepicker">
+ <div class="row">
+ <div class="span4 popup">
+ <input type="text" value="08/03/2013" class="form-control">
+ </div>
+ <div class="span4 component">
+ <div class="input-append date">
+ <input type="text" value="10-05-2003" readonly>
+ <span class="add-on"><i class="icon-th"></i></span>
+ </div>
+ </div>
+ <div class="span4 inline" data-date="01/03/2004"></div>
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_component.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_component.html
new file mode 100644
index 0000000..018a77a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_component.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker({
+ format: 'mm-dd-yyyy'
+ });
+ };
+ </script>
+ </head>
+ <body data-capture=".date, .datepicker">
+ <div class="input-append date">
+ <input type="text" value="12-02-2012">
+ <span class="add-on"><i class="icon-th"></i></span>
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_daterange.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_daterange.html
new file mode 100644
index 0000000..63e612d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_daterange.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('.input-daterange').datepicker({
+ format: 'yyyy-mm-dd'
+ });
+ };
+ </script>
+ </head>
+ <body data-capture=".input-daterange, .datepicker" data-show="input:first, input:last">
+ <form class="form-horizontal">
+ <div class="input-daterange span5">
+ <input type="text" class="input-small" value="2012-04-05" />
+ <span class="add-on">to</span>
+ <input type="text" class="input-small" value="2012-04-19" />
+ </div>
+ <div class="input-daterange span5">
+ <input type="text" class="input-small" value="2012-04-05" />
+ <span class="add-on">to</span>
+ <input type="text" class="input-small" value="2012-04-19" />
+ </div>
+ </form>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_inline.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_inline.html
new file mode 100644
index 0000000..8af4dc4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_inline.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('div').datepicker();
+ };
+ </script>
+ </head>
+ <body data-capture=".datepicker">
+ <div data-date="12/03/2012"></div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_input.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_input.html
new file mode 100644
index 0000000..4c54887
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/markup_input.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker({
+ format: 'mm-dd-yyyy'
+ });
+ };
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <input type="text" value="02-16-2012">
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_calendarweeks.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_calendarweeks.html
new file mode 100644
index 0000000..e5fb209
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_calendarweeks.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker({
+ format: 'mm-dd-yyyy',
+ calendarWeeks: true
+ });
+ };
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <div class="span6">
+ <input type="text" value="01-16-2012">
+ </div>
+ <div class="span6">
+ <input type="text" value="12-16-2012">
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_clearbtn.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_clearbtn.html
new file mode 100644
index 0000000..370bf16
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_clearbtn.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker({
+ format: 'mm-dd-yyyy',
+ clearBtn: true
+ });
+ };
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <input type="text" value="03-03-2013">
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_daysofweekdisabled.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_daysofweekdisabled.html
new file mode 100644
index 0000000..06baedf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_daysofweekdisabled.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker({
+ format: 'mm-dd-yyyy',
+ daysOfWeekDisabled: [0, 6]
+ });
+ };
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <input type="text" value="03-05-2013">
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_enddate.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_enddate.html
new file mode 100644
index 0000000..4ed8823
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_enddate.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker({
+ format: 'mm-dd-yyyy',
+ endDate: '03-14-2013'
+ });
+ };
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <input type="text" value="03-03-2013">
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_language.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_language.html
new file mode 100644
index 0000000..bbb8558
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_language.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script src="../../js/locales/bootstrap-datepicker.es.js" charset="UTF-8"></script>
+ <script src="../../js/locales/bootstrap-datepicker.fr.js" charset="UTF-8"></script>
+ <script src="../../js/locales/bootstrap-datepicker.zh-TW.js" charset="UTF-8"></script>
+ <script src="../../js/locales/bootstrap-datepicker.ru.js" charset="UTF-8"></script>
+ <script src="../../js/locales/bootstrap-datepicker.ja.js" charset="UTF-8"></script>
+ <script>
+ function setup(){
+ $('[data-date]').datepicker({
+ format: "mm/dd/yyyy" // To override locale-specific formats
+ });
+ };
+ </script>
+ </head>
+ <body data-capture=".row">
+ <div class="row">
+ <div class="span4" data-date="03/03/2013" data-date-language="en"></div>
+ <div class="span4" data-date="03/03/2013" data-date-start-view="1" data-date-language="es"></div>
+ <div class="span4" data-date="03/03/2013" data-date-language="fr"></div>
+ </div>
+ <div class="row">
+ <div class="span4" data-date="03/03/2013" data-date-start-view="1" data-date-language="zh-TW"></div>
+ <div class="span4" data-date="03/03/2013" data-date-language="ja"></div>
+ <div class="span4" data-date="03/03/2013" data-date-start-view="1" data-date-language="ru"></div>
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_multidate.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_multidate.html
new file mode 100644
index 0000000..6aea112
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_multidate.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker({
+ multidate: true
+ });
+ };
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <div class="row">
+ <div class="span4">
+ <input type="text" value="03/03/2013,03/16/2013">
+ </div>
+ <div class="span4">
+ <input type="text" value="03/03/2013,06/16/2013" data-date-start-view="1">
+ </div>
+ <div class="span4">
+ <input type="text" value="03/03/2013,03/16/2014" data-date-start-view="2">
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_startdate.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_startdate.html
new file mode 100644
index 0000000..f79642b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_startdate.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker({
+ format: 'mm-dd-yyyy',
+ startDate: '03-14-2013'
+ });
+ };
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <input type="text" value="03-18-2013">
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_todaybtn.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_todaybtn.html
new file mode 100644
index 0000000..86dc34a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_todaybtn.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker({
+ todayBtn: true
+ });
+ };
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <input type="text" value="03/03/2013">
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_todayhighlight.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_todayhighlight.html
new file mode 100644
index 0000000..3d4351b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_todayhighlight.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function patch_date(f){
+ var NativeDate = window.Date;
+ var date = function date(y,m,d,h,i,s,j){
+ switch(arguments.length){
+ case 0: return date.now ? new NativeDate(date.now) : new NativeDate();
+ case 1: return new NativeDate(y);
+ case 2: return new NativeDate(y,m);
+ case 3: return new NativeDate(y,m,d);
+ case 4: return new NativeDate(y,m,d,h);
+ case 5: return new NativeDate(y,m,d,h,i);
+ case 6: return new NativeDate(y,m,d,h,i,s);
+ case 7: return new NativeDate(y,y,m,d,h,i,s,j);
+ }
+ };
+ date.UTC = NativeDate.UTC;
+ return function(){
+ Array.prototype.push.call(arguments, date);
+ window.Date = date;
+ res = f.apply(this, arguments);
+ window.Date = NativeDate;
+ }
+ }
+ var setup = patch_date(function setup(Date){
+ Date.now = new Date(2013, 2, 18);
+ $('input').datepicker({
+ todayHighlight: true
+ });
+ });
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <div class="span4">
+ <input type="text" value="03/03/2013">
+ </div>
+ <div class="span4">
+ <input type="text" value="03/18/2013">
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_weekstart.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_weekstart.html
new file mode 100644
index 0000000..c3cb7c8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/option_weekstart.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="stylesheet" href="script/common.css">
+ <script src="script/common.js"></script>
+ <script>
+ function setup(){
+ $('input').datepicker();
+ };
+ </script>
+ </head>
+ <body data-capture="input, .datepicker">
+ <div class="span4">
+ <input type="text" value="03/03/2013" data-date-week-start="2">
+ </div>
+ <div class="span4">
+ <input type="text" value="03/03/2013" data-date-week-start="4">
+ </div>
+ <div class="span4">
+ <input type="text" value="03/03/2013" data-date-week-start="6">
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/common.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/common.css
new file mode 100644
index 0000000..f76edb8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/common.css
@@ -0,0 +1,9 @@
+@import url('http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css');
+@import url('../../../dist/css/bootstrap-datepicker.min.css');
+
+body {
+ /* Padding around all elements to allow space for screenshots */
+ padding: 10px;
+ /* Transparent background for PNG screenshots */
+ background: none;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/common.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/common.js
new file mode 100644
index 0000000..0d6c412
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/common.js
@@ -0,0 +1,2 @@
+document.write("<script src='http://code.jquery.com/jquery-1.10.2.min.js'></script>");
+document.write("<script src='../../js/bootstrap-datepicker.js'></script>");
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/debug.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/debug.js
new file mode 100644
index 0000000..e609fa6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/debug.js
@@ -0,0 +1,21 @@
+/*
+ Usage: $ phantomjs --remote-debugger-port=9001 --remote-debugger-autorun=yes debug.js page.html
+
+ Open Chrome tab to http://localhost:9001/; open second link (ie, path to page.html)
+*/
+var system = require('system' ), fs = require('fs'), webpage = require('webpage');
+
+(function(phantom){
+ var page=webpage.create();
+
+ function debugPage(){
+ console.log("Refresh a second debugger-port page and open a second webkit inspector for the target page.");
+ console.log("Letting this page continue will then trigger a break in the target page.");
+ debugger; // pause here in first web browser tab for steps 5 & 6
+ page.open(system.args[1]);
+ page.evaluateAsync(function() {
+ debugger; // step 7 will wait here in the second web browser tab
+ });
+ }
+ debugPage();
+}(phantom));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/html-imports.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/html-imports.min.js
new file mode 100644
index 0000000..368d226
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/html-imports.min.js
@@ -0,0 +1,30 @@
+// Copyright (c) 2012 The Polymer Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+window.HTMLImports=window.HTMLImports||{flags:{}},function(a){var b=(a.path,a.xhr),c=function(a,b){this.cache={},this.onload=a,this.oncomplete=b,this.inflight=0,this.pending={}};c.prototype={addNodes:function(a){this.inflight+=a.length,d(a,this.require,this),this.checkDone()},require:function(a){var b=a.src||a.href;a.__nodeUrl=b,this.dedupe(b,a)||this.fetch(b,a)},dedupe:function(a,b){return this.pending[a]?(this.pending[a].push(b),!0):this.cache[a]?(this.onload(a,b,this.cache[a]),this.tail(),!0):(this.pending[a]=[b],!1)},fetch:function(a,c){var d=function(b,d){this.receive(a,c,b,d)}.bind(this);b.load(a,d)},receive:function(a,b,c,d){c||(this.cache[a]=d),this.pending[a].forEach(function(b){c||this.onload(a,b,d),this.tail()},this),this.pending[a]=null},tail:function(){--this.inflight,this.checkDone()},checkDone:function(){this.inflight||this.oncomplete()}},b=b||{async:!0,ok:function(a){return a.status>=200&&a.status<300||304===a.status||0===a.status},load:function(c,d,e){var f=new XMLHttpRequest;return(a.flags.debug||a.flags.bust)&&(c+="?"+Math.random()),f.open("GET",c,b.async),f.addEventListener("readystatechange",function(){4===f.readyState&&d.call(e,!b.ok(f)&&f,f.response||f.responseText,c)}),f.send(),f},loadDocument:function(a,b,c){this.load(a,b,c).responseType="document"}};var d=Array.prototype.forEach.call.bind(Array.prototype.forEach);a.xhr=b,a.Loader=c}(window.HTMLImports),function(a){function b(a){return c(a,j)}function c(a,b){return"link"===a.localName&&a.getAttribute("rel")===b}function d(a){return"script"===a.localName}function e(a,b){var c=a;c instanceof Document||(c=document.implementation.createHTMLDocument(j)),c._URL=b;var d=c.createElement("base");return d.setAttribute("href",b),c.baseURI||(c.baseURI=b),c.head.appendChild(d),a instanceof Document||(c.body.innerHTML=a),window.HTMLTemplateElement&&HTMLTemplateElement.bootstrap&&HTMLTemplateElement.bootstrap(c),c}function f(a,b){function c(){k==l&&requestAnimationFrame(a)}function d(){k++,c()}b=b||o;var e=HTMLImports.isIE?"complete":"interactive",h="complete"===b.readyState||b.readyState===e;if(!h){var i=function(){("complete"===b.readyState||b.readyState===e)&&(b.removeEventListener("readystatechange",i),f(a,b))};return void b.addEventListener("readystatechange",i)}var j=b.querySelectorAll("link[rel=import]"),k=0,l=j.length;if(l)for(var m,n=0;l>n&&(m=j[n]);n++)g(m)?d.call(m):(m.addEventListener("load",d),m.addEventListener("error",d));else c()}function g(a){return i?a.import&&"loading"!==a.import.readyState:a.__importParsed}var h="import"in document.createElement("link"),i=!a.flags.imports&&h,j="import";if(!i){{var k,l=a.Loader,m=(a.xhr,"stylesheet"),n={documents:{},cache:{},preloadSelectors:["link[rel="+j+"]","template","script[src]:not([type])",'script[src][type="text/javascript"]'].join(","),loader:function(a){if(k&&k.inflight){var b=k.oncomplete;return k.oncomplete=function(){b(),a()},k}return k=new l(n.loaded,a),k.cache=n.cache,k},load:function(a,b){k=n.loader(b),n.preload(a)},preload:function(a){var b=this.marshalNodes(a);k.addNodes(b)},marshalNodes:function(a){var b=a.querySelectorAll(n.preloadSelectors);return b=this.filterMainDocumentNodes(a,b),b=this.extractTemplateNodes(b)},filterMainDocumentNodes:function(a,b){return a===document&&(b=Array.prototype.filter.call(b,function(a){return!d(a)})),b},extractTemplateNodes:function(a){var b=[];return a=Array.prototype.filter.call(a,function(a){if("template"===a.localName){if(a.content){var c=a.content.querySelectorAll("link[rel="+m+"]");c.length&&(b=b.concat(Array.prototype.slice.call(c,0)))}return!1}return!0}),b.length&&(a=a.concat(b)),a},loaded:function(a,c,d){if(b(c)){var f=n.documents[a];f||(f=e(d,a),n.documents[a]=f,n.preload(f)),c.import=c.content=d=f}c.__resource=d}};Array.prototype.forEach.call.bind(Array.prototype.forEach)}a.importer=n}var o=window.ShadowDOMPolyfill?wrap(document):document;Object.defineProperty(o,"_currentScript",{get:function(){return HTMLImports.currentScript||o.currentScript},writeable:!0,configurable:!0}),a.hasNative=h,a.useNative=i,a.whenImportsReady=f,a.IMPORT_LINK_TYPE=j,a.isImportLoaded=g}(window.HTMLImports),function(a){function b(a){var b=a.ownerDocument.createElement("style");return b.textContent=a.textContent,g.resolveUrlsInStyle(b),b}function c(a,b){this.doc=a,this.doc.__loadTracker=this,this.callback=b}function d(a){return"link"===a.localName&&a.getAttribute("rel")===h}function e(a){return a.parentNode&&!f(a)}function f(a){return a.ownerDocument===document||a.ownerDocument.impl===document}var g=a.path,h="import",i=/Trident/.test(navigator.userAgent),j={selectors:["link[rel="+h+"]","link[rel=stylesheet]","style","script:not([type])",'script[type="text/javascript"]'],map:{link:"parseLink",script:"parseScript",style:"parseStyle"},parse:function(a,b){if(a.__importParsed)b&&b();else{a.__importParsed=!0;for(var d,e=new c(a,b),f=a.querySelectorAll(j.selectors),g=a.scripts?a.scripts.length:0,h=0;h<f.length&&(d=f[h]);h++)j[j.map[d.localName]](d),a.scripts&&g!==a.scripts.length&&(g=a.scripts.length,f=a.querySelectorAll(j.selectors));e.open()}},parseLink:function(a){if(d(a)){if(this.trackElement(a),a.__resource?j.parse(a.__resource,function(){a.dispatchEvent(new CustomEvent("load",{bubbles:!1}))}):a.dispatchEvent(new CustomEvent("error",{bubbles:!1})),a.__pending)for(var b;a.__pending.length;)b=a.__pending.shift(),b&&b({target:a});a.__importParsed=!0}else e(a)&&(a.href=a.href),this.parseGeneric(a)},trackElement:function(a){i&&"style"===a.localName||a.ownerDocument.__loadTracker.require(a)},parseStyle:function(a){a=e(a)?b(a):a,this.parseGeneric(a)},parseGeneric:function(a){f(a)||(this.trackElement(a),document.head.appendChild(a))},parseScript:function(b){if(e(b)){var c=(b.__resource||b.textContent).trim();if(c){var d=b.__nodeUrl;if(!d){d=b.ownerDocument.baseURI;var f="["+Math.floor(1e3*(Math.random()+1))+"]",g=c.match(/Polymer\(['"]([^'"]*)/);f=g&&g[1]||f,d+="/"+f+".js"}c+="\n//# sourceURL="+d+"\n",a.currentScript=b,eval.call(window,c),a.currentScript=null}}}},k=/(url\()([^)]*)(\))/g,l=/(@import[\s]*)([^;]*)(;)/g,g={resolveUrlsInStyle:function(a){var b=a.ownerDocument,c=b.createElement("a");return a.textContent=this.resolveUrlsInCssText(a.textContent,c),a},resolveUrlsInCssText:function(a,b){var c=this.replaceUrls(a,b,k);return c=this.replaceUrls(c,b,l)},replaceUrls:function(a,b,c){return a.replace(c,function(a,c,d,e){var f=d.replace(/["']/g,"");return b.href=f,f=b.href,c+"'"+f+"'"+e})}};c.prototype={pending:0,isOpen:!1,open:function(){this.isOpen=!0,this.checkDone()},add:function(){this.pending++},require:function(a){this.add();var b=this,c=function(a){b.receive(a)};if(d(a))a.__pending=a.__pending||[],a.__pending.push(c);else for(var e,f=["load","error"],g=0,h=f.length;h>g&&(e=f[g]);g++)a.addEventListener(e,c)},receive:function(){this.pending--,this.checkDone()},checkDone:function(){this.isOpen&&this.pending<=0&&this.callback&&(this.isOpen=!1,this.callback())}};Array.prototype.forEach.call.bind(Array.prototype.forEach);a.parser=j,a.path=g,a.isIE=i}(HTMLImports),function(){function a(){HTMLImports.ready=!0,HTMLImports.readyTime=(new Date).getTime(),c.dispatchEvent(new CustomEvent("HTMLImportsLoaded",{bubbles:!0}))}function b(){HTMLImports.useNative||HTMLImports.importer.load(c,function(){HTMLImports.parser.parse(c)})}"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(a,b){var c=document.createEvent("HTMLEvents");return c.initEvent(a,b.bubbles===!1?!1:!0,b.cancelable===!1?!1:!0,b.detail),c});var c=window.ShadowDOMPolyfill?window.ShadowDOMPolyfill.wrapIfNeeded(document):document;HTMLImports.useNative||("complete"===document.readyState||"interactive"===document.readyState&&!window.attachEvent?b():document.addEventListener("DOMContentLoaded",b)),HTMLImports.whenImportsReady(function(){a()})}();
+//# sourceMappingURL=html-imports.min.map
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/screenshot.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/screenshot.js
new file mode 100644
index 0000000..3300c7c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_screenshots/script/screenshot.js
@@ -0,0 +1,69 @@
+/* jshint phantom:true, devel:true */
+/* Usage: phantomjs screenshot.js in.html out.png */
+
+var sys = require('system'),
+ page = new WebPage();
+page.viewportSize = {
+ width: 800,
+ height: 600
+};
+
+page.open(sys.args[1], function(status){
+ if (status !== 'success'){
+ console.log('Bad status: %s', status);
+ phantom.exit(1);
+ }
+ window.setTimeout(function(){
+ var box = page.evaluate(function(){
+ var lefts, rights, tops, bottoms,
+ padding = 10, // px
+ selection, show;
+
+ // Call setup method
+ if (window.setup)
+ window.setup();
+ // Show all pickers, or only those marked for showing
+ show = $('body').data('show');
+ show = show ? $(show) : $('*');
+ show
+ .filter(function(){
+ return 'datepicker' in $(this).data();
+ })
+ .datepicker('show');
+
+ // Get bounds of selected elements
+ selection = $($('body').data('capture'));
+ tops = selection.map(function(){
+ return $(this).offset().top;
+ }).toArray();
+ lefts = selection.map(function(){
+ return $(this).offset().left;
+ }).toArray();
+ bottoms = selection.map(function(){
+ return $(this).offset().top + $(this).outerHeight();
+ }).toArray();
+ rights = selection.map(function(){
+ return $(this).offset().left + $(this).outerWidth();
+ }).toArray();
+
+ // Convert bounds to single bounding box
+ var b = {
+ top: Math.min.apply(Math, tops),
+ left: Math.min.apply(Math, lefts)
+ };
+ b['width'] = Math.max.apply(Math, rights) - b.left;
+ b['height'] = Math.max.apply(Math, bottoms) - b.top;
+
+ // Return bounding box
+ return {
+ top: Math.max(b.top - padding, 0),
+ left: Math.max(b.left - padding, 0),
+ width: b.width + 2 * padding,
+ height: b.height + 2 * padding
+ };
+ });
+ page.clipRect = box;
+ page.render(sys.args[2]);
+ phantom.exit();
+ }, 1);
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/demo_head.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/demo_head.png
new file mode 100644
index 0000000..bc7b92c
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/demo_head.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_component.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_component.png
new file mode 100644
index 0000000..c19a9f0
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_component.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_daterange.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_daterange.png
new file mode 100644
index 0000000..28b8789
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_daterange.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_inline.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_inline.png
new file mode 100644
index 0000000..5e6428d
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_inline.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_input.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_input.png
new file mode 100644
index 0000000..0701d56
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/markup_input.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_calendarweeks.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_calendarweeks.png
new file mode 100644
index 0000000..6af7905
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_calendarweeks.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_clearbtn.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_clearbtn.png
new file mode 100644
index 0000000..a24f743
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_clearbtn.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_daysofweekdisabled.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_daysofweekdisabled.png
new file mode 100644
index 0000000..00defe7
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_daysofweekdisabled.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_enddate.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_enddate.png
new file mode 100644
index 0000000..f202417
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_enddate.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_language.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_language.png
new file mode 100644
index 0000000..29aab72
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_language.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_multidate.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_multidate.png
new file mode 100644
index 0000000..b08b5c1
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_multidate.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_startdate.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_startdate.png
new file mode 100644
index 0000000..c7dc811
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_startdate.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_todaybtn.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_todaybtn.png
new file mode 100644
index 0000000..03ca7b8
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_todaybtn.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_todayhighlight.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_todayhighlight.png
new file mode 100644
index 0000000..271bee3
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_todayhighlight.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_weekstart.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_weekstart.png
new file mode 100644
index 0000000..61e495f
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/_static/screenshots/option_weekstart.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/conf.py b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/conf.py
new file mode 100644
index 0000000..243fed5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/conf.py
@@ -0,0 +1,249 @@
+# -*- coding: utf-8 -*-
+#
+# bootstrap-datepicker documentation build configuration file, created by
+# sphinx-quickstart on Fri Aug 2 14:45:57 2013.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+#version = ''
+# The full version, including alpha/beta/rc tags.
+#release = ''
+
+import sphinx_rtd_theme
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+primary_domain = 'js'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = []
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'bootstrap-datepicker'
+copyright = u'2013, eternicode'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+highlight_language = 'javascript'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+html_theme = 'sphinx_rtd_theme'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = ['_themes',]
+html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'bootstrap-datepickerdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+ ('index', 'bootstrap-datepicker.tex', u'bootstrap-datepicker Documentation',
+ u'eternicode', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ ('index', 'bootstrap-datepicker', u'bootstrap-datepicker Documentation',
+ [u'eternicode'], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output ------------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ ('index', 'bootstrap-datepicker', u'bootstrap-datepicker Documentation',
+ u'eternicode', 'bootstrap-datepicker', 'One line description of project.',
+ 'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/events.rst b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/events.rst
new file mode 100644
index 0000000..4423aa1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/events.rst
@@ -0,0 +1,48 @@
+Events
+======
+
+Datepicker triggers a number of events in certain circumstances. All events have extra data attached to the event object that is passed to any event handlers::
+
+ $('.datepicker').datepicker()
+ .on(picker_event, function(e){
+ # `e` here contains the extra attributes
+ });
+
+* ``date``: the relevant Date object, in local timezone. For a multidate picker, this will be the latest date picked.
+* ``dates``: an Array of Date objects, in local timezone, when using a multidate picker.
+* ``format([ix], [format])``: a function to make formatting ``date`` easier. ``ix`` can be the index of a Date in the ``dates`` array to format; if absent, the last date selected will be used. ``format`` can be any format string that datepicker supports; if absent, the format set on the datepicker will be used. Both arguments are optional.
+
+
+show
+----
+
+Fired when the date picker is displayed.
+
+
+hide
+----
+
+Fired when the date picker is hidden.
+
+
+clearDate
+---------
+
+Fired when the date is cleared, normally when the "clear" button (enabled with the ``clearBtn`` option) is pressed.
+
+
+changeDate
+----------
+
+Fired when the date is changed.
+
+
+changeYear
+----------
+
+Fired when the *view* year is changed from decade view.
+
+changeMonth
+-----------
+
+Fired when the *view* month is changed from year view.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/i18n.rst b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/i18n.rst
new file mode 100644
index 0000000..3eabe08
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/i18n.rst
@@ -0,0 +1,31 @@
+I18N
+====
+
+The plugin supports i18n for the month and weekday names and the ``weekStart`` option. The default is English ("en"); other available translations are available in the ``js/locales/`` directory, simply include your desired locale after the plugin. To add more languages, simply add a key to ``$.fn.datepicker.dates``, before calling ``.datepicker()``. Example::
+
+ $.fn.datepicker.dates['en'] = {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ clear: "Clear"
+ };
+
+Right-to-left languages may also include ``rtl: true`` to make the calendar display appropriately.
+
+If your browser (or those of your users) is displaying characters wrong, chances are the browser is loading the javascript file with a non-unicode encoding. Simply add ``charset="UTF-8"`` to your ``script`` tag:
+
+.. code-block:: html
+
+ <script type="text/javascript" src="bootstrap-datepicker.XX.js" charset="UTF-8"></script>
+
+::
+
+ $('.datepicker').datepicker({
+ language: 'XX'
+ });
+
+.. figure:: _static/screenshots/option_language.png
+ :align: center
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/index.rst b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/index.rst
new file mode 100644
index 0000000..0736724
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/index.rst
@@ -0,0 +1,122 @@
+bootstrap-datepicker
+====================
+
+Bootstrap-datepicker provides a flexible datepicker widget in the Twitter bootstrap style.
+
+.. figure:: _static/screenshots/demo_head.png
+ :align: center
+
+This is a fork of Stefan Petre's `original code <http://www.eyecon.ro/bootstrap-datepicker/>`_; thanks go to him for getting this thing started!
+
+Please note that this fork is not used on Stefan's page at this time, nor is it maintained or contributed to by him.
+
+Versions are incremented according to `semver <http://semver.org/>`_.
+
+`Online Demo <http://eternicode.github.io/bootstrap-datepicker/>`_
+
+
+Requirements
+------------
+
+* `Bootstrap`_ 2.0.4+
+* `jQuery`_ 1.7.1+
+
+.. _Bootstrap: http://twitter.github.com/bootstrap/
+.. _jQuery: http://jquery.com/
+
+These are the specific versions bootstrap-datepicker is tested against (``js`` files) and built against (``css`` files). Use other versions at your own risk.
+
+
+Dependencies
+------------
+
+Requires bootstrap's dropdown component (``dropdowns.less``) for some styles, and bootstrap's sprites (``sprites.less`` and associated images) for arrows.
+
+A standalone .css file (including necessary dropdown styles and alternative, text-based arrows) can be generated by running ``build/build_standalone.less`` through the ``lessc`` compiler::
+
+ $ lessc build/build_standalone.less datepicker.css
+
+
+Usage
+-----
+
+Call the datepicker via javascript::
+
+ $('.datepicker').datepicker()
+
+
+Data API
+^^^^^^^^
+
+As with bootstrap's own plugins, datepicker provides a data-api that can be used to instantiate datepickers without the need for custom javascript. For most datepickers, simply set ``data-provide="datepicker"`` on the element you want to initialize, and it will be intialized lazily, in true bootstrap fashion. For inline datepickers, use ``data-provide="datepicker-inline"``; these will be immediately initialized on page load, and cannot be lazily loaded.
+
+.. code-block:: html
+
+ <input data-provide="datepicker">
+
+You can disable datepicker's data-api in the same way as you would disable other bootstrap plugins::
+
+ $(document).off('.datepicker.data-api');
+
+
+Configuration
+^^^^^^^^^^^^^
+
+:doc:`options` are passed to the ``datepicker`` function via an options hash at instantiation::
+
+ $('.datepicker').datepicker({
+ format: 'mm/dd/yyyy',
+ startDate: '-3d'
+ })
+
+Most options may be provided as data-attributes on the target element:
+
+.. code-block:: html
+
+ <input class="datepicker" data-date-format="mm/dd/yyyy">
+
+::
+
+ $('.datepicker').datepicker({
+ startDate: '-3d'
+ })
+
+Defaults for all options can be modified directly by changing values in the ``$.fn.datepicker.defaults`` hash::
+
+ $.fn.datepicker.defaults.format = "mm/dd/yyyy";
+ $('.datepicker').datepicker({
+ startDate: '-3d'
+ })
+
+
+No Conflict mode
+^^^^^^^^^^^^^^^^
+
+``$.fn.datepicker.noConflict`` provides a way to avoid conflict with other jQuery datepicker plugins::
+
+ var datepicker = $.fn.datepicker.noConflict(); // return $.fn.datepicker to previously assigned value
+ $.fn.bootstrapDP = datepicker; // give $().bootstrapDP the bootstrap-datepicker functionality
+
+
+
+Table of Contents
+-----------------
+
+.. toctree::
+
+ markup
+ options
+ methods
+ events
+ keyboard
+ i18n
+
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/keyboard.rst b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/keyboard.rst
new file mode 100644
index 0000000..e34ba65
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/keyboard.rst
@@ -0,0 +1,27 @@
+Keyboard support
+================
+
+The datepicker includes keyboard navigation. The "focused date" is kept track of and highlighted (as with mouse hover) during keyboard nav, and is cleared when a date is toggled or the picker is hidden.
+
+up, down, left, right arrow keys
+--------------------------------
+
+By themselves, left/right will move focus backward/forward one day, up/down will move focus back/forward one week.
+
+With the shift key, up/left will move focus backward one month, down/right will move focus forward one month.
+
+With the ctrl key, up/left will move focus backward one year, down/right will move focus forward one year.
+
+Shift+ctrl behaves the same as ctrl -- that is, it does not change both month and year simultaneously, only the year.
+
+enter
+-----
+
+When the picker is visible, enter will toggle the focused date (if there is one). When the picker is not visible, enter will have normal effects -- submitting the current form, etc.
+
+When the date is deselected, the ``clearDate`` event is triggered; otherwise, the ``changeDate`` event is triggered. If ``autoclose`` is enabled, the picker will be hidden after selection or deselection.
+
+escape
+------
+
+The escape key can be used to clear the focused date and hide and re-show the datepicker; hiding the picker is necessary if the user wants to manually edit the value.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/make.bat b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/make.bat
new file mode 100644
index 0000000..282b37a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/make.bat
@@ -0,0 +1,190 @@
+@ECHO OFF
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+ set SPHINXBUILD=sphinx-build
+)
+set BUILDDIR=_build
+set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
+set I18NSPHINXOPTS=%SPHINXOPTS% .
+if NOT "%PAPER%" == "" (
+ set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
+ set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
+)
+
+if "%1" == "" goto help
+
+if "%1" == "help" (
+ :help
+ echo.Please use `make ^<target^>` where ^<target^> is one of
+ echo. html to make standalone HTML files
+ echo. dirhtml to make HTML files named index.html in directories
+ echo. singlehtml to make a single large HTML file
+ echo. pickle to make pickle files
+ echo. json to make JSON files
+ echo. htmlhelp to make HTML files and a HTML help project
+ echo. qthelp to make HTML files and a qthelp project
+ echo. devhelp to make HTML files and a Devhelp project
+ echo. epub to make an epub
+ echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
+ echo. text to make text files
+ echo. man to make manual pages
+ echo. texinfo to make Texinfo files
+ echo. gettext to make PO message catalogs
+ echo. changes to make an overview over all changed/added/deprecated items
+ echo. linkcheck to check all external links for integrity
+ echo. doctest to run all doctests embedded in the documentation if enabled
+ goto end
+)
+
+if "%1" == "clean" (
+ for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
+ del /q /s %BUILDDIR%\*
+ goto end
+)
+
+if "%1" == "html" (
+ %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The HTML pages are in %BUILDDIR%/html.
+ goto end
+)
+
+if "%1" == "dirhtml" (
+ %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
+ goto end
+)
+
+if "%1" == "singlehtml" (
+ %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
+ goto end
+)
+
+if "%1" == "pickle" (
+ %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can process the pickle files.
+ goto end
+)
+
+if "%1" == "json" (
+ %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can process the JSON files.
+ goto end
+)
+
+if "%1" == "htmlhelp" (
+ %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can run HTML Help Workshop with the ^
+.hhp project file in %BUILDDIR%/htmlhelp.
+ goto end
+)
+
+if "%1" == "qthelp" (
+ %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; now you can run "qcollectiongenerator" with the ^
+.qhcp project file in %BUILDDIR%/qthelp, like this:
+ echo.^> qcollectiongenerator %BUILDDIR%\qthelp\bootstrap-datepicker.qhcp
+ echo.To view the help file:
+ echo.^> assistant -collectionFile %BUILDDIR%\qthelp\bootstrap-datepicker.ghc
+ goto end
+)
+
+if "%1" == "devhelp" (
+ %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished.
+ goto end
+)
+
+if "%1" == "epub" (
+ %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The epub file is in %BUILDDIR%/epub.
+ goto end
+)
+
+if "%1" == "latex" (
+ %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
+ goto end
+)
+
+if "%1" == "text" (
+ %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The text files are in %BUILDDIR%/text.
+ goto end
+)
+
+if "%1" == "man" (
+ %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The manual pages are in %BUILDDIR%/man.
+ goto end
+)
+
+if "%1" == "texinfo" (
+ %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
+ goto end
+)
+
+if "%1" == "gettext" (
+ %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
+ goto end
+)
+
+if "%1" == "changes" (
+ %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.The overview file is in %BUILDDIR%/changes.
+ goto end
+)
+
+if "%1" == "linkcheck" (
+ %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Link check complete; look for any errors in the above output ^
+or in %BUILDDIR%/linkcheck/output.txt.
+ goto end
+)
+
+if "%1" == "doctest" (
+ %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
+ if errorlevel 1 exit /b 1
+ echo.
+ echo.Testing of doctests in the sources finished, look at the ^
+results in %BUILDDIR%/doctest/output.txt.
+ goto end
+)
+
+:end
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/markup.rst b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/markup.rst
new file mode 100644
index 0000000..97b4426
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/markup.rst
@@ -0,0 +1,77 @@
+Markup
+=======
+
+The following are examples of supported markup. On their own, these will not provide a datepicker widget; you will need to instantiate the datepicker on the markup.
+
+
+input
+-----
+
+The simplest case: focusing the input (clicking or tabbing into it) will show the picker.
+
+.. code-block:: html
+
+ <input type="text" value="02-16-2012">
+
+.. figure:: _static/screenshots/markup_input.png
+ :align: center
+
+component
+---------
+
+Adding the ``date`` class to an ``input-append`` or ``input-prepend`` bootstrap component will allow the ``add-on`` elements to trigger the picker.
+
+.. code-block:: html
+
+ <div class="input-append date">
+ <input type="text" value="12-02-2012">
+ <span class="add-on"><i class="icon-th"></i></span>
+ </div>
+
+.. figure:: _static/screenshots/markup_component.png
+ :align: center
+
+.. _daterange:
+
+date-range
+----------
+
+Using the ``input-daterange`` construct with multiple child inputs will instantiate one picker per input and link them together to allow selecting ranges.
+
+.. code-block:: html
+
+ <div class="input-daterange">
+ <input type="text" class="input-small" value="2012-04-05" />
+ <span class="add-on">to</span>
+ <input type="text" class="input-small" value="2012-04-19" />
+ </div>
+
+.. figure:: _static/screenshots/markup_daterange.png
+ :align: center
+
+inline or embedded
+------------------
+
+Instantiating the datepicker on a simple div will give an embedded picker that is always visible.
+
+.. code-block:: html
+
+ <div data-date="12/03/2012"></div>
+
+.. figure:: _static/screenshots/markup_inline.png
+ :align: center
+
+
+Example to save the embedded datepicker value to a hidden field
+
+.. code-block:: html
+
+ <div id="datepicker" data-date="12/03/2012"></div>
+ <input type="hidden" id="my_hidden_input" />
+
+ $('#datepicker').datepicker();
+ $("#datepicker").on("changeDate", function(event) {
+ $("#my_hidden_input").val(
+ $("#datepicker").datepicker('getFormattedDate')
+ )
+ });
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/methods.rst b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/methods.rst
new file mode 100644
index 0000000..04b6e29
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/methods.rst
@@ -0,0 +1,177 @@
+Methods
+=======
+
+Methods are called on a datepicker by call the ``datepicker`` function with a string first argument, followed by any arguments the method takes::
+
+ $('.datepicker').datepicker('method', arg1, arg2);
+
+
+remove
+------
+
+Arguments: None
+
+Remove the datepicker. Removes attached events, internal attached objects, and added HTML elements.
+
+
+show
+----
+
+Arguments: None
+
+Show the picker.
+
+
+hide
+----
+
+Arguments: None
+
+Hide the picker.
+
+
+update
+------
+
+Arguments:
+
+* date (String|Date, optional)
+
+Update the datepicker with given argument or the current input value.
+
+If ``date`` is provided and is a Date object, it is assumed to be a "local" date object, and will be converted to UTC for internal use.
+
+::
+
+ $('.datepicker').datepicker('update');
+ $('.datepicker').datepicker('update', '2011-03-05');
+ $('.datepicker').datepicker('update', new Date(2011, 2, 5));
+
+To reset the datepicker and clear the selected date, pass an empty string with ``update``:
+
+::
+
+ $('.datepicker').datepicker('update', '');
+
+setDate
+-------
+
+Arguments:
+
+* date (Date)
+
+Sets the internal date. ``date`` is assumed to be a "local" date object, and will be converted to UTC for internal use.
+
+
+setUTCDate
+----------
+
+Arguments:
+
+* date (Date)
+
+Sets the internal date. ``date`` is assumed to be a UTC date object, and will not be converted.
+
+
+setDates
+--------
+
+Arguments:
+
+* date[, date[, ...]] (Date)
+
+or
+
+* [date[, date[, ...]]] (Array)
+
+Sets the internal date list; accepts multiple dates or a single array of dates as arguments. Each ``date`` is assumed to be a "local" date object, and will be converted to UTC for internal use. For use with multidate pickers.
+
+
+clearDates
+----------
+
+Arguments: None
+
+Clear dates.
+
+
+setUTCDates
+-----------
+
+Arguments:
+
+* date[, date[, ...]] (Date)
+
+or
+
+* [date[, date[, ...]]] (Array)
+
+Sets the internal date list. Each ``date`` is assumed to be a UTC date object, and will not be converted. For use with multidate pickers.
+
+
+getDate
+-------
+
+Arguments: None
+
+Returns a localized date object representing the internal date object of the first datepicker in the selection. For multidate pickers, returns the latest date selected.
+
+
+getUTCDate
+----------
+
+Arguments: None
+
+Returns the internal UTC date object, as-is and unconverted to local time, of the first datepicker in the selection. For multidate pickers, returns the latest date selected.
+
+
+getDates
+--------
+
+Arguments: None
+
+Returns a list of localized date objects representing the internal date objects of the first datepicker in the selection. For use with multidate pickers.
+
+
+getUTCDates
+-----------
+
+Arguments: None
+
+Returns the internal list of UTC date objects, as they are and unconverted to local time, of the first datepicker in the selection. For use with multidate pickers.
+
+
+setStartDate
+------------
+
+Arguments:
+
+* startDate (Date)
+
+Sets a new lower date limit on the datepicker. See :ref:`startdate` for valid values.
+
+Omit startDate (or provide an otherwise falsey value) to unset the limit.
+
+
+setEndDate
+----------
+
+Arguments:
+
+* endDate (Date)
+
+Sets a new upper date limit on the datepicker. See :ref:`enddate` for valid values.
+
+Omit endDate (or provide an otherwise falsey value) to unset the limit.
+
+
+setDaysOfWeekDisabled
+---------------------
+
+Arguments:
+
+* daysOfWeekDisabled (String|Array)
+
+Sets the days of week that should be disabled. See :ref:`daysofweekdisabled` for valid values.
+
+Omit daysOfWeekDisabled (or provide an otherwise falsey value) to unset the disabled days.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/options.rst b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/options.rst
new file mode 100644
index 0000000..f67892e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/options.rst
@@ -0,0 +1,299 @@
+Options
+=======
+
+All options that take a "Date" can handle a ``Date`` object; a String formatted according to the given ``format``; or a timedelta relative to today, eg "-1d", "+6m +1y", etc, where valid units are "d" (day), "w" (week), "m" (month), and "y" (year).
+
+Most options can be provided via data-attributes. An option can be converted to a data-attribute by taking its name, replacing each uppercase letter with its lowercase equivalent preceded by a dash, and prepending "data-date-" to the result. For example, ``startDate`` would be ``data-date-start-date``, ``format`` would be ``data-date-format``, and ``daysOfWeekDisabled`` would be ``data-date-days-of-week-disabled``.
+
+
+autoclose
+---------
+
+Boolean. Default: false
+
+Whether or not to close the datepicker immediately when a date is selected.
+
+
+beforeShowDay
+-------------
+
+Function(Date). Default: $.noop
+
+A function that takes a date as a parameter and returns one of the following values:
+
+ * undefined to have no effect
+ * A Boolean, indicating whether or not this date is selectable
+ * A String representing additional CSS classes to apply to the date's cell
+ * An object with the following properties:
+
+ * ``enabled``: same as the Boolean value above
+ * ``classes``: same as the String value above
+ * ``tooltip``: a tooltip to apply to this date, via the ``title`` HTML attribute
+
+
+beforeShowMonth
+---------------
+
+Function(Date). Default: $.noop
+
+A function that takes a date as a parameter and returns a boolean indicating whether or not this month is selectable
+
+
+calendarWeeks
+-------------
+
+Boolean. Default: false
+
+Whether or not to show week numbers to the left of week rows.
+
+.. figure:: _static/screenshots/option_calendarweeks.png
+ :align: center
+
+clearBtn
+--------
+
+Boolean. Default: false
+
+If true, displays a "Clear" button at the bottom of the datepicker to clear the input value. If "autoclose" is also set to true, this button will also close the datepicker.
+
+.. figure:: _static/screenshots/option_clearbtn.png
+ :align: center
+
+toggleActive
+------------
+
+Boolean. Default: false
+
+If true, selecting the currently active date in the datepicker will unset the respective date. This option is always true when the multidate option is being used.
+
+container
+---------
+
+String. Default: "body"
+
+Appends the date picker popup to a specific element; eg: container: '#picker-container' (will default to "body")
+
+
+
+.. _daysofweekdisabled:
+
+daysOfWeekDisabled
+------------------
+
+String, Array. Default: '', []
+
+Days of the week that should be disabled. Values are 0 (Sunday) to 6 (Saturday). Multiple values should be comma-separated. Example: disable weekends: ``'0,6'`` or ``[0,6]``.
+
+.. figure:: _static/screenshots/option_daysofweekdisabled.png
+ :align: center
+
+.. _datesdisabled:
+
+datesDisabled
+-------------
+
+String, Array. Default: []
+
+Array of date strings or a single date string formatted in the given date format
+
+.. _defaultviewdate:
+
+
+defaultViewDate
+---------------
+
+Object with keys ``year``, ``month``, and ``day``. Default: today
+
+Date to view when initially opening the calendar. The internal value of the date remains today as default, but when the datepicker is first opened the calendar will open to ``defaultViewDate`` rather than today. If this option is not used, "today" remains the default view date. If the given object is missing any of the required keys, their defaults are:
+
+ * ``year``: the current year
+ * ``month``: 1
+ * ``day``: 1
+
+
+.. _enddate:
+
+endDate
+-------
+
+Date. Default: End of time
+
+The latest date that may be selected; all later dates will be disabled.
+
+.. figure:: _static/screenshots/option_enddate.png
+ :align: center
+
+
+forceParse
+----------
+
+Boolean. Default: true
+
+Whether or not to force parsing of the input value when the picker is closed. That is, when an invalid date is left in the input field by the user, the picker will forcibly parse that value, and set the input's value to the new, valid date, conforming to the given `format`.
+
+
+format
+------
+
+String. Default: "mm/dd/yyyy"
+
+The date format, combination of d, dd, D, DD, m, mm, M, MM, yy, yyyy.
+
+* d, dd: Numeric date, no leading zero and leading zero, respectively. Eg, 5, 05.
+* D, DD: Abbreviated and full weekday names, respectively. Eg, Mon, Monday.
+* m, mm: Numeric month, no leading zero and leading zero, respectively. Eg, 7, 07.
+* M, MM: Abbreviated and full month names, respectively. Eg, Jan, January
+* yy, yyyy: 2- and 4-digit years, respectively. Eg, 12, 2012.
+
+
+inputs
+------
+
+Array. Default: None
+
+A list of inputs to be used in a range picker, which will be attached to the selected element. Allows for explicitly creating a range picker on a non-standard element.
+
+.. code-block:: html
+
+ <div class="form-group form-group-filled" id="event_period">
+ <input type="text" class="actual_range">
+ <input type="text" class="actual_range">
+ </div>
+
+ $('#event_period').datepicker({
+ inputs: $('.actual_range').toArray()
+ });
+
+
+keyboardNavigation
+------------------
+
+Boolean. Default: true
+
+Whether or not to allow date navigation by arrow keys.
+
+
+language
+--------
+
+String. Default: "en"
+
+The IETF code (eg "en" for English, "pt-BR" for Brazilian Portuguese) of the language to use for month and day names. These will also be used as the input's value (and subsequently sent to the server in the case of form submissions). If a full code (eg "de-DE") is supplied the picker will first check for an "de-DE" language and if not found will fallback and check for a "de" language. If an unknown language code is given, English will be used. See :doc:`i18n`.
+
+.. figure:: _static/screenshots/option_language.png
+ :align: center
+
+
+minViewMode
+-----------
+
+Number, String. Default: 0, "days"
+
+Set a limit for the view mode. Accepts: "days" or 0, "months" or 1, and "years" or 2.
+Gives the ability to pick only a month or an year. The day is set to the 1st for "months", and the month is set to January for "years".
+
+multidate
+---------
+
+Boolean, Number. Default: false
+
+Enable multidate picking. Each date in month view acts as a toggle button, keeping track of which dates the user has selected in order. If a number is given, the picker will limit how many dates can be selected to that number, dropping the oldest dates from the list when the number is exceeded. ``true`` equates to no limit. The input's value (if present) is set to a string generated by joining the dates, formatted, with ``multidateSeparator``.
+
+For selecting 2 dates as a range please see :ref:`daterange`
+
+.. figure:: _static/screenshots/option_multidate.png
+ :align: center
+
+
+multidateSeparator
+------------------
+
+String. Default: ","
+
+The string that will appear between dates when generating the input's value. When parsing the input's value for a multidate picker, this will also be used to split the incoming string to separate multiple formatted dates; as such, it is highly recommended that you not use a string that could be a substring of a formatted date (eg, using '-' to separate dates when your format is 'yyyy-mm-dd').
+
+
+orientation
+-----------
+
+String. Default: "auto"
+
+A space-separated string consisting of one or two of "left" or "right", "top" or "bottom", and "auto" (may be omitted); for example, "top left", "bottom" (horizontal orientation will default to "auto"), "right" (vertical orientation will default to "auto"), "auto top". Allows for fixed placement of the picker popup.
+
+"orientation" refers to the location of the picker popup's "anchor"; you can also think of it as the location of the trigger element (input, component, etc) relative to the picker.
+
+"auto" triggers "smart orientation" of the picker. Horizontal orientation will default to "left" and left offset will be tweaked to keep the picker inside the browser viewport; vertical orientation will simply choose "top" or "bottom", whichever will show more of the picker in the viewport.
+
+.. _startdate:
+
+startDate
+---------
+
+Date. Default: Beginning of time
+
+The earliest date that may be selected; all earlier dates will be disabled.
+
+.. figure:: _static/screenshots/option_startdate.png
+ :align: center
+
+
+startView
+---------
+
+Number, String. Default: 0, "month"
+
+The view that the datepicker should show when it is opened. Accepts values of 0 or "month" for month view (the default), 1 or "year" for the 12-month overview, and 2 or "decade" for the 10-year overview. Useful for date-of-birth datepickers.
+
+
+todayBtn
+--------
+
+Boolean, "linked". Default: false
+
+If true or "linked", displays a "Today" button at the bottom of the datepicker to select the current date. If true, the "Today" button will only move the current date into view; if "linked", the current date will also be selected.
+
+.. figure:: _static/screenshots/option_todaybtn.png
+ :align: center
+
+
+todayHighlight
+--------------
+
+Boolean. Default: false
+
+If true, highlights the current date.
+
+.. figure:: _static/screenshots/option_todayhighlight.png
+ :align: center
+
+
+weekStart
+---------
+
+Integer. Default: 0
+
+Day of the week start. 0 (Sunday) to 6 (Saturday)
+
+.. figure:: _static/screenshots/option_weekstart.png
+ :align: center
+
+showOnFocus
+-----------
+
+Boolean. Default: true
+
+If false, the datepicker will be prevented from showing when the input field associated with it receives focus.
+
+disableTouchKeyboard
+--------------------
+
+Boolean. Default: false
+
+If true, no keyboard will show on mobile devices
+
+enableOnReadonly
+----------------
+
+Boolean. Default: true
+
+If false the datepicker will not show on a readonly datepicker field.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/README.md
new file mode 100644
index 0000000..58028f3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/README.md
@@ -0,0 +1,20 @@
+Documentation
+=============
+
+Project documentation is built using [Sphinx docs](http://sphinx-doc.org/), which uses [ReST](http://docutils.sourceforge.net/rst.html) for markup. This allows the docs to cover a vast amount of topics without using a thousand-line README file.
+
+Sphinx docs is pip-installable via `pip install sphinx`. Once installed, open a command line in the docs folder and run the following commands:
+
+```bash
+$ sudo pip install -r requirements.txt
+```
+
+This will install the requirements needed for the generating the docs. Afterwards you can run:
+
+```bash
+$ make html
+```
+
+The docs will be generated, the output files will be placed in the `_build/html/` directory, and can be browsed (locally) with any browser.
+
+The docs can also be found online at <http://bootstrap-datepicker.readthedocs.org/>.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/requirements.txt b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/requirements.txt
new file mode 100644
index 0000000..483a4e9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/docs/requirements.txt
@@ -0,0 +1 @@
+sphinx_rtd_theme
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/bootstrap-datepicker.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/bootstrap-datepicker.js
new file mode 100644
index 0000000..50895f3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/bootstrap-datepicker.js
@@ -0,0 +1,1798 @@
+/* =========================================================
+ * bootstrap-datepicker.js
+ * Repo: https://github.com/eternicode/bootstrap-datepicker/
+ * Demo: http://eternicode.github.io/bootstrap-datepicker/
+ * Docs: http://bootstrap-datepicker.readthedocs.org/
+ * Forked from http://www.eyecon.ro/bootstrap-datepicker
+ * =========================================================
+ * Started by Stefan Petre; improvements by Andrew Rowls + contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+(function($, undefined){
+
+ function UTCDate(){
+ return new Date(Date.UTC.apply(Date, arguments));
+ }
+ function UTCToday(){
+ var today = new Date();
+ return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
+ }
+ function isUTCEquals(date1, date2) {
+ return (
+ date1.getUTCFullYear() === date2.getUTCFullYear() &&
+ date1.getUTCMonth() === date2.getUTCMonth() &&
+ date1.getUTCDate() === date2.getUTCDate()
+ );
+ }
+ function alias(method){
+ return function(){
+ return this[method].apply(this, arguments);
+ };
+ }
+
+ var DateArray = (function(){
+ var extras = {
+ get: function(i){
+ return this.slice(i)[0];
+ },
+ contains: function(d){
+ // Array.indexOf is not cross-browser;
+ // $.inArray doesn't work with Dates
+ var val = d && d.valueOf();
+ for (var i=0, l=this.length; i < l; i++)
+ if (this[i].valueOf() === val)
+ return i;
+ return -1;
+ },
+ remove: function(i){
+ this.splice(i,1);
+ },
+ replace: function(new_array){
+ if (!new_array)
+ return;
+ if (!$.isArray(new_array))
+ new_array = [new_array];
+ this.clear();
+ this.push.apply(this, new_array);
+ },
+ clear: function(){
+ this.length = 0;
+ },
+ copy: function(){
+ var a = new DateArray();
+ a.replace(this);
+ return a;
+ }
+ };
+
+ return function(){
+ var a = [];
+ a.push.apply(a, arguments);
+ $.extend(a, extras);
+ return a;
+ };
+ })();
+
+
+ // Picker object
+
+ var Datepicker = function(element, options){
+ this._process_options(options);
+
+ this.dates = new DateArray();
+ this.viewDate = this.o.defaultViewDate;
+ this.focusDate = null;
+
+ this.element = $(element);
+ this.isInline = false;
+ this.isInput = this.element.is('input');
+ this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
+ this.hasInput = this.component && this.element.find('input').length;
+ if (this.component && this.component.length === 0)
+ this.component = false;
+
+ this.picker = $(DPGlobal.template);
+ this._buildEvents();
+ this._attachEvents();
+
+ if (this.isInline){
+ this.picker.addClass('datepicker-inline').appendTo(this.element);
+ }
+ else {
+ this.picker.addClass('datepicker-dropdown dropdown-menu');
+ }
+
+ if (this.o.rtl){
+ this.picker.addClass('datepicker-rtl');
+ }
+
+ this.viewMode = this.o.startView;
+
+ if (this.o.calendarWeeks)
+ this.picker.find('tfoot .today, tfoot .clear')
+ .attr('colspan', function(i, val){
+ return parseInt(val) + 1;
+ });
+
+ this._allow_update = false;
+
+ this.setStartDate(this._o.startDate);
+ this.setEndDate(this._o.endDate);
+ this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);
+ this.setDatesDisabled(this.o.datesDisabled);
+
+ this.fillDow();
+ this.fillMonths();
+
+ this._allow_update = true;
+
+ this.update();
+ this.showMode();
+
+ if (this.isInline){
+ this.show();
+ }
+ };
+
+ Datepicker.prototype = {
+ constructor: Datepicker,
+
+ _process_options: function(opts){
+ // Store raw options for reference
+ this._o = $.extend({}, this._o, opts);
+ // Processed options
+ var o = this.o = $.extend({}, this._o);
+
+ // Check if "de-DE" style date is available, if not language should
+ // fallback to 2 letter code eg "de"
+ var lang = o.language;
+ if (!dates[lang]){
+ lang = lang.split('-')[0];
+ if (!dates[lang])
+ lang = defaults.language;
+ }
+ o.language = lang;
+
+ switch (o.startView){
+ case 2:
+ case 'decade':
+ o.startView = 2;
+ break;
+ case 1:
+ case 'year':
+ o.startView = 1;
+ break;
+ default:
+ o.startView = 0;
+ }
+
+ switch (o.minViewMode){
+ case 1:
+ case 'months':
+ o.minViewMode = 1;
+ break;
+ case 2:
+ case 'years':
+ o.minViewMode = 2;
+ break;
+ default:
+ o.minViewMode = 0;
+ }
+
+ o.startView = Math.max(o.startView, o.minViewMode);
+
+ // true, false, or Number > 0
+ if (o.multidate !== true){
+ o.multidate = Number(o.multidate) || false;
+ if (o.multidate !== false)
+ o.multidate = Math.max(0, o.multidate);
+ }
+ o.multidateSeparator = String(o.multidateSeparator);
+
+ o.weekStart %= 7;
+ o.weekEnd = ((o.weekStart + 6) % 7);
+
+ var format = DPGlobal.parseFormat(o.format);
+ if (o.startDate !== -Infinity){
+ if (!!o.startDate){
+ if (o.startDate instanceof Date)
+ o.startDate = this._local_to_utc(this._zero_time(o.startDate));
+ else
+ o.startDate = DPGlobal.parseDate(o.startDate, format, o.language);
+ }
+ else {
+ o.startDate = -Infinity;
+ }
+ }
+ if (o.endDate !== Infinity){
+ if (!!o.endDate){
+ if (o.endDate instanceof Date)
+ o.endDate = this._local_to_utc(this._zero_time(o.endDate));
+ else
+ o.endDate = DPGlobal.parseDate(o.endDate, format, o.language);
+ }
+ else {
+ o.endDate = Infinity;
+ }
+ }
+
+ o.daysOfWeekDisabled = o.daysOfWeekDisabled||[];
+ if (!$.isArray(o.daysOfWeekDisabled))
+ o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/);
+ o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){
+ return parseInt(d, 10);
+ });
+
+ o.datesDisabled = o.datesDisabled||[];
+ if (!$.isArray(o.datesDisabled)) {
+ var datesDisabled = [];
+ datesDisabled.push(DPGlobal.parseDate(o.datesDisabled, format, o.language));
+ o.datesDisabled = datesDisabled;
+ }
+ o.datesDisabled = $.map(o.datesDisabled,function(d){
+ return DPGlobal.parseDate(d, format, o.language);
+ });
+
+ var plc = String(o.orientation).toLowerCase().split(/\s+/g),
+ _plc = o.orientation.toLowerCase();
+ plc = $.grep(plc, function(word){
+ return /^auto|left|right|top|bottom$/.test(word);
+ });
+ o.orientation = {x: 'auto', y: 'auto'};
+ if (!_plc || _plc === 'auto')
+ ; // no action
+ else if (plc.length === 1){
+ switch (plc[0]){
+ case 'top':
+ case 'bottom':
+ o.orientation.y = plc[0];
+ break;
+ case 'left':
+ case 'right':
+ o.orientation.x = plc[0];
+ break;
+ }
+ }
+ else {
+ _plc = $.grep(plc, function(word){
+ return /^left|right$/.test(word);
+ });
+ o.orientation.x = _plc[0] || 'auto';
+
+ _plc = $.grep(plc, function(word){
+ return /^top|bottom$/.test(word);
+ });
+ o.orientation.y = _plc[0] || 'auto';
+ }
+ if (o.defaultViewDate) {
+ var year = o.defaultViewDate.year || new Date().getFullYear();
+ var month = o.defaultViewDate.month || 0;
+ var day = o.defaultViewDate.day || 1;
+ o.defaultViewDate = UTCDate(year, month, day);
+ } else {
+ o.defaultViewDate = UTCToday();
+ }
+ o.showOnFocus = o.showOnFocus !== undefined ? o.showOnFocus : true;
+ },
+ _events: [],
+ _secondaryEvents: [],
+ _applyEvents: function(evs){
+ for (var i=0, el, ch, ev; i < evs.length; i++){
+ el = evs[i][0];
+ if (evs[i].length === 2){
+ ch = undefined;
+ ev = evs[i][1];
+ }
+ else if (evs[i].length === 3){
+ ch = evs[i][1];
+ ev = evs[i][2];
+ }
+ el.on(ev, ch);
+ }
+ },
+ _unapplyEvents: function(evs){
+ for (var i=0, el, ev, ch; i < evs.length; i++){
+ el = evs[i][0];
+ if (evs[i].length === 2){
+ ch = undefined;
+ ev = evs[i][1];
+ }
+ else if (evs[i].length === 3){
+ ch = evs[i][1];
+ ev = evs[i][2];
+ }
+ el.off(ev, ch);
+ }
+ },
+ _buildEvents: function(){
+ var events = {
+ keyup: $.proxy(function(e){
+ if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)
+ this.update();
+ }, this),
+ keydown: $.proxy(this.keydown, this)
+ };
+
+ if (this.o.showOnFocus === true) {
+ events.focus = $.proxy(this.show, this);
+ }
+
+ if (this.isInput) { // single input
+ this._events = [
+ [this.element, events]
+ ];
+ }
+ else if (this.component && this.hasInput) { // component: input + button
+ this._events = [
+ // For components that are not readonly, allow keyboard nav
+ [this.element.find('input'), events],
+ [this.component, {
+ click: $.proxy(this.show, this)
+ }]
+ ];
+ }
+ else if (this.element.is('div')){ // inline datepicker
+ this.isInline = true;
+ }
+ else {
+ this._events = [
+ [this.element, {
+ click: $.proxy(this.show, this)
+ }]
+ ];
+ }
+ this._events.push(
+ // Component: listen for blur on element descendants
+ [this.element, '*', {
+ blur: $.proxy(function(e){
+ this._focused_from = e.target;
+ }, this)
+ }],
+ // Input: listen for blur on element
+ [this.element, {
+ blur: $.proxy(function(e){
+ this._focused_from = e.target;
+ }, this)
+ }]
+ );
+
+ this._secondaryEvents = [
+ [this.picker, {
+ click: $.proxy(this.click, this)
+ }],
+ [$(window), {
+ resize: $.proxy(this.place, this)
+ }],
+ [$(document), {
+ 'mousedown touchstart': $.proxy(function(e){
+ // Clicked outside the datepicker, hide it
+ if (!(
+ this.element.is(e.target) ||
+ this.element.find(e.target).length ||
+ this.picker.is(e.target) ||
+ this.picker.find(e.target).length
+ )){
+ this.hide();
+ }
+ }, this)
+ }]
+ ];
+ },
+ _attachEvents: function(){
+ this._detachEvents();
+ this._applyEvents(this._events);
+ },
+ _detachEvents: function(){
+ this._unapplyEvents(this._events);
+ },
+ _attachSecondaryEvents: function(){
+ this._detachSecondaryEvents();
+ this._applyEvents(this._secondaryEvents);
+ },
+ _detachSecondaryEvents: function(){
+ this._unapplyEvents(this._secondaryEvents);
+ },
+ _trigger: function(event, altdate){
+ var date = altdate || this.dates.get(-1),
+ local_date = this._utc_to_local(date);
+
+ this.element.trigger({
+ type: event,
+ date: local_date,
+ dates: $.map(this.dates, this._utc_to_local),
+ format: $.proxy(function(ix, format){
+ if (arguments.length === 0){
+ ix = this.dates.length - 1;
+ format = this.o.format;
+ }
+ else if (typeof ix === 'string'){
+ format = ix;
+ ix = this.dates.length - 1;
+ }
+ format = format || this.o.format;
+ var date = this.dates.get(ix);
+ return DPGlobal.formatDate(date, format, this.o.language);
+ }, this)
+ });
+ },
+
+ show: function(){
+ if (this.element.attr('readonly') && this.o.enableOnReadonly === false)
+ return;
+ if (!this.isInline)
+ this.picker.appendTo(this.o.container);
+ this.place();
+ this.picker.show();
+ this._attachSecondaryEvents();
+ this._trigger('show');
+ if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {
+ $(this.element).blur();
+ }
+ return this;
+ },
+
+ hide: function(){
+ if (this.isInline)
+ return this;
+ if (!this.picker.is(':visible'))
+ return this;
+ this.focusDate = null;
+ this.picker.hide().detach();
+ this._detachSecondaryEvents();
+ this.viewMode = this.o.startView;
+ this.showMode();
+
+ if (
+ this.o.forceParse &&
+ (
+ this.isInput && this.element.val() ||
+ this.hasInput && this.element.find('input').val()
+ )
+ )
+ this.setValue();
+ this._trigger('hide');
+ return this;
+ },
+
+ remove: function(){
+ this.hide();
+ this._detachEvents();
+ this._detachSecondaryEvents();
+ this.picker.remove();
+ delete this.element.data().datepicker;
+ if (!this.isInput){
+ delete this.element.data().date;
+ }
+ return this;
+ },
+
+ _utc_to_local: function(utc){
+ return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));
+ },
+ _local_to_utc: function(local){
+ return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));
+ },
+ _zero_time: function(local){
+ return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
+ },
+ _zero_utc_time: function(utc){
+ return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));
+ },
+
+ getDates: function(){
+ return $.map(this.dates, this._utc_to_local);
+ },
+
+ getUTCDates: function(){
+ return $.map(this.dates, function(d){
+ return new Date(d);
+ });
+ },
+
+ getDate: function(){
+ return this._utc_to_local(this.getUTCDate());
+ },
+
+ getUTCDate: function(){
+ var selected_date = this.dates.get(-1);
+ if (typeof selected_date !== 'undefined') {
+ return new Date(selected_date);
+ } else {
+ return null;
+ }
+ },
+
+ clearDates: function(){
+ var element;
+ if (this.isInput) {
+ element = this.element;
+ } else if (this.component) {
+ element = this.element.find('input');
+ }
+
+ if (element) {
+ element.val('').change();
+ }
+
+ this.update();
+ this._trigger('changeDate');
+
+ if (this.o.autoclose) {
+ this.hide();
+ }
+ },
+ setDates: function(){
+ var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
+ this.update.apply(this, args);
+ this._trigger('changeDate');
+ this.setValue();
+ return this;
+ },
+
+ setUTCDates: function(){
+ var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
+ this.update.apply(this, $.map(args, this._utc_to_local));
+ this._trigger('changeDate');
+ this.setValue();
+ return this;
+ },
+
+ setDate: alias('setDates'),
+ setUTCDate: alias('setUTCDates'),
+
+ setValue: function(){
+ var formatted = this.getFormattedDate();
+ if (!this.isInput){
+ if (this.component){
+ this.element.find('input').val(formatted).change();
+ }
+ }
+ else {
+ this.element.val(formatted).change();
+ }
+ return this;
+ },
+
+ getFormattedDate: function(format){
+ if (format === undefined)
+ format = this.o.format;
+
+ var lang = this.o.language;
+ return $.map(this.dates, function(d){
+ return DPGlobal.formatDate(d, format, lang);
+ }).join(this.o.multidateSeparator);
+ },
+
+ setStartDate: function(startDate){
+ this._process_options({startDate: startDate});
+ this.update();
+ this.updateNavArrows();
+ return this;
+ },
+
+ setEndDate: function(endDate){
+ this._process_options({endDate: endDate});
+ this.update();
+ this.updateNavArrows();
+ return this;
+ },
+
+ setDaysOfWeekDisabled: function(daysOfWeekDisabled){
+ this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
+ this.update();
+ this.updateNavArrows();
+ return this;
+ },
+
+ setDatesDisabled: function(datesDisabled){
+ this._process_options({datesDisabled: datesDisabled});
+ this.update();
+ this.updateNavArrows();
+ },
+
+ place: function(){
+ if (this.isInline)
+ return this;
+ var calendarWidth = this.picker.outerWidth(),
+ calendarHeight = this.picker.outerHeight(),
+ visualPadding = 10,
+ windowWidth = $(this.o.container).width(),
+ windowHeight = $(this.o.container).height(),
+ scrollTop = $(this.o.container).scrollTop(),
+ appendOffset = $(this.o.container).offset();
+
+ var parentsZindex = [];
+ this.element.parents().each(function(){
+ var itemZIndex = $(this).css('z-index');
+ if (itemZIndex !== 'auto' && itemZIndex !== 0) parentsZindex.push(parseInt(itemZIndex));
+ });
+ var zIndex = Math.max.apply(Math, parentsZindex) + 10;
+ var offset = this.component ? this.component.parent().offset() : this.element.offset();
+ var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
+ var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
+ var left = offset.left - appendOffset.left,
+ top = offset.top - appendOffset.top;
+
+ this.picker.removeClass(
+ 'datepicker-orient-top datepicker-orient-bottom '+
+ 'datepicker-orient-right datepicker-orient-left'
+ );
+
+ if (this.o.orientation.x !== 'auto'){
+ this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
+ if (this.o.orientation.x === 'right')
+ left -= calendarWidth - width;
+ }
+ // auto x orientation is best-placement: if it crosses a window
+ // edge, fudge it sideways
+ else {
+ if (offset.left < 0) {
+ // component is outside the window on the left side. Move it into visible range
+ this.picker.addClass('datepicker-orient-left');
+ left -= offset.left - visualPadding;
+ } else if (left + calendarWidth > windowWidth) {
+ // the calendar passes the widow right edge. Align it to component right side
+ this.picker.addClass('datepicker-orient-right');
+ left = offset.left + width - calendarWidth;
+ } else {
+ // Default to left
+ this.picker.addClass('datepicker-orient-left');
+ }
+ }
+
+ // auto y orientation is best-situation: top or bottom, no fudging,
+ // decision based on which shows more of the calendar
+ var yorient = this.o.orientation.y,
+ top_overflow, bottom_overflow;
+ if (yorient === 'auto'){
+ top_overflow = -scrollTop + top - calendarHeight;
+ bottom_overflow = scrollTop + windowHeight - (top + height + calendarHeight);
+ if (Math.max(top_overflow, bottom_overflow) === bottom_overflow)
+ yorient = 'top';
+ else
+ yorient = 'bottom';
+ }
+ this.picker.addClass('datepicker-orient-' + yorient);
+ if (yorient === 'top')
+ top += height;
+ else
+ top -= calendarHeight + parseInt(this.picker.css('padding-top'));
+
+ if (this.o.rtl) {
+ var right = windowWidth - (left + width);
+ this.picker.css({
+ top: top,
+ right: right,
+ zIndex: zIndex
+ });
+ } else {
+ this.picker.css({
+ top: top,
+ left: left,
+ zIndex: zIndex
+ });
+ }
+ return this;
+ },
+
+ _allow_update: true,
+ update: function(){
+ if (!this._allow_update)
+ return this;
+
+ var oldDates = this.dates.copy(),
+ dates = [],
+ fromArgs = false;
+ if (arguments.length){
+ $.each(arguments, $.proxy(function(i, date){
+ if (date instanceof Date)
+ date = this._local_to_utc(date);
+ dates.push(date);
+ }, this));
+ fromArgs = true;
+ }
+ else {
+ dates = this.isInput
+ ? this.element.val()
+ : this.element.data('date') || this.element.find('input').val();
+ if (dates && this.o.multidate)
+ dates = dates.split(this.o.multidateSeparator);
+ else
+ dates = [dates];
+ delete this.element.data().date;
+ }
+
+ dates = $.map(dates, $.proxy(function(date){
+ return DPGlobal.parseDate(date, this.o.format, this.o.language);
+ }, this));
+ dates = $.grep(dates, $.proxy(function(date){
+ return (
+ date < this.o.startDate ||
+ date > this.o.endDate ||
+ !date
+ );
+ }, this), true);
+ this.dates.replace(dates);
+
+ if (this.dates.length)
+ this.viewDate = new Date(this.dates.get(-1));
+ else if (this.viewDate < this.o.startDate)
+ this.viewDate = new Date(this.o.startDate);
+ else if (this.viewDate > this.o.endDate)
+ this.viewDate = new Date(this.o.endDate);
+
+ if (fromArgs){
+ // setting date by clicking
+ this.setValue();
+ }
+ else if (dates.length){
+ // setting date by typing
+ if (String(oldDates) !== String(this.dates))
+ this._trigger('changeDate');
+ }
+ if (!this.dates.length && oldDates.length)
+ this._trigger('clearDate');
+
+ this.fill();
+ return this;
+ },
+
+ fillDow: function(){
+ var dowCnt = this.o.weekStart,
+ html = '<tr>';
+ if (this.o.calendarWeeks){
+ this.picker.find('.datepicker-days thead tr:first-child .datepicker-switch')
+ .attr('colspan', function(i, val){
+ return parseInt(val) + 1;
+ });
+ var cell = '<th class="cw"> </th>';
+ html += cell;
+ }
+ while (dowCnt < this.o.weekStart + 7){
+ html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
+ }
+ html += '</tr>';
+ this.picker.find('.datepicker-days thead').append(html);
+ },
+
+ fillMonths: function(){
+ var html = '',
+ i = 0;
+ while (i < 12){
+ html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>';
+ }
+ this.picker.find('.datepicker-months td').html(html);
+ },
+
+ setRange: function(range){
+ if (!range || !range.length)
+ delete this.range;
+ else
+ this.range = $.map(range, function(d){
+ return d.valueOf();
+ });
+ this.fill();
+ },
+
+ getClassNames: function(date){
+ var cls = [],
+ year = this.viewDate.getUTCFullYear(),
+ month = this.viewDate.getUTCMonth(),
+ today = new Date();
+ if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){
+ cls.push('old');
+ }
+ else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){
+ cls.push('new');
+ }
+ if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
+ cls.push('focused');
+ // Compare internal UTC date with local today, not UTC today
+ if (this.o.todayHighlight &&
+ date.getUTCFullYear() === today.getFullYear() &&
+ date.getUTCMonth() === today.getMonth() &&
+ date.getUTCDate() === today.getDate()){
+ cls.push('today');
+ }
+ if (this.dates.contains(date) !== -1)
+ cls.push('active');
+ if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||
+ $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){
+ cls.push('disabled');
+ }
+ if (this.o.datesDisabled.length > 0 &&
+ $.grep(this.o.datesDisabled, function(d){
+ return isUTCEquals(date, d); }).length > 0) {
+ cls.push('disabled', 'disabled-date');
+ }
+
+ if (this.range){
+ if (date > this.range[0] && date < this.range[this.range.length-1]){
+ cls.push('range');
+ }
+ if ($.inArray(date.valueOf(), this.range) !== -1){
+ cls.push('selected');
+ }
+ }
+ return cls;
+ },
+
+ fill: function(){
+ var d = new Date(this.viewDate),
+ year = d.getUTCFullYear(),
+ month = d.getUTCMonth(),
+ startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
+ startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
+ endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
+ endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
+ todaytxt = dates[this.o.language].today || dates['en'].today || '',
+ cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
+ tooltip;
+ if (isNaN(year) || isNaN(month))
+ return;
+ this.picker.find('.datepicker-days thead .datepicker-switch')
+ .text(dates[this.o.language].months[month]+' '+year);
+ this.picker.find('tfoot .today')
+ .text(todaytxt)
+ .toggle(this.o.todayBtn !== false);
+ this.picker.find('tfoot .clear')
+ .text(cleartxt)
+ .toggle(this.o.clearBtn !== false);
+ this.updateNavArrows();
+ this.fillMonths();
+ var prevMonth = UTCDate(year, month-1, 28),
+ day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
+ prevMonth.setUTCDate(day);
+ prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);
+ var nextMonth = new Date(prevMonth);
+ nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
+ nextMonth = nextMonth.valueOf();
+ var html = [];
+ var clsName;
+ while (prevMonth.valueOf() < nextMonth){
+ if (prevMonth.getUTCDay() === this.o.weekStart){
+ html.push('<tr>');
+ if (this.o.calendarWeeks){
+ // ISO 8601: First week contains first thursday.
+ // ISO also states week starts on Monday, but we can be more abstract here.
+ var
+ // Start of current week: based on weekstart/current date
+ ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),
+ // Thursday of this week
+ th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
+ // First Thursday of year, year from thursday
+ yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
+ // Calendar week: ms between thursdays, div ms per day, div 7 days
+ calWeek = (th - yth) / 864e5 / 7 + 1;
+ html.push('<td class="cw">'+ calWeek +'</td>');
+
+ }
+ }
+ clsName = this.getClassNames(prevMonth);
+ clsName.push('day');
+
+ if (this.o.beforeShowDay !== $.noop){
+ var before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
+ if (before === undefined)
+ before = {};
+ else if (typeof(before) === 'boolean')
+ before = {enabled: before};
+ else if (typeof(before) === 'string')
+ before = {classes: before};
+ if (before.enabled === false)
+ clsName.push('disabled');
+ if (before.classes)
+ clsName = clsName.concat(before.classes.split(/\s+/));
+ if (before.tooltip)
+ tooltip = before.tooltip;
+ }
+
+ clsName = $.unique(clsName);
+ html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>');
+ tooltip = null;
+ if (prevMonth.getUTCDay() === this.o.weekEnd){
+ html.push('</tr>');
+ }
+ prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
+ }
+ this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
+
+ var months = this.picker.find('.datepicker-months')
+ .find('th:eq(1)')
+ .text(year)
+ .end()
+ .find('span').removeClass('active');
+
+ $.each(this.dates, function(i, d){
+ if (d.getUTCFullYear() === year)
+ months.eq(d.getUTCMonth()).addClass('active');
+ });
+
+ if (year < startYear || year > endYear){
+ months.addClass('disabled');
+ }
+ if (year === startYear){
+ months.slice(0, startMonth).addClass('disabled');
+ }
+ if (year === endYear){
+ months.slice(endMonth+1).addClass('disabled');
+ }
+
+ if (this.o.beforeShowMonth !== $.noop){
+ var that = this;
+ $.each(months, function(i, month){
+ if (!$(month).hasClass('disabled')) {
+ var moDate = new Date(year, i, 1);
+ var before = that.o.beforeShowMonth(moDate);
+ if (before === false)
+ $(month).addClass('disabled');
+ }
+ });
+ }
+
+ html = '';
+ year = parseInt(year/10, 10) * 10;
+ var yearCont = this.picker.find('.datepicker-years')
+ .find('th:eq(1)')
+ .text(year + '-' + (year + 9))
+ .end()
+ .find('td');
+ year -= 1;
+ var years = $.map(this.dates, function(d){
+ return d.getUTCFullYear();
+ }),
+ classes;
+ for (var i = -1; i < 11; i++){
+ classes = ['year'];
+ if (i === -1)
+ classes.push('old');
+ else if (i === 10)
+ classes.push('new');
+ if ($.inArray(year, years) !== -1)
+ classes.push('active');
+ if (year < startYear || year > endYear)
+ classes.push('disabled');
+ html += '<span class="' + classes.join(' ') + '">' + year + '</span>';
+ year += 1;
+ }
+ yearCont.html(html);
+ },
+
+ updateNavArrows: function(){
+ if (!this._allow_update)
+ return;
+
+ var d = new Date(this.viewDate),
+ year = d.getUTCFullYear(),
+ month = d.getUTCMonth();
+ switch (this.viewMode){
+ case 0:
+ if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){
+ this.picker.find('.prev').css({visibility: 'hidden'});
+ }
+ else {
+ this.picker.find('.prev').css({visibility: 'visible'});
+ }
+ if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){
+ this.picker.find('.next').css({visibility: 'hidden'});
+ }
+ else {
+ this.picker.find('.next').css({visibility: 'visible'});
+ }
+ break;
+ case 1:
+ case 2:
+ if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){
+ this.picker.find('.prev').css({visibility: 'hidden'});
+ }
+ else {
+ this.picker.find('.prev').css({visibility: 'visible'});
+ }
+ if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){
+ this.picker.find('.next').css({visibility: 'hidden'});
+ }
+ else {
+ this.picker.find('.next').css({visibility: 'visible'});
+ }
+ break;
+ }
+ },
+
+ click: function(e){
+ e.preventDefault();
+ var target = $(e.target).closest('span, td, th'),
+ year, month, day;
+ if (target.length === 1){
+ switch (target[0].nodeName.toLowerCase()){
+ case 'th':
+ switch (target[0].className){
+ case 'datepicker-switch':
+ this.showMode(1);
+ break;
+ case 'prev':
+ case 'next':
+ var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);
+ switch (this.viewMode){
+ case 0:
+ this.viewDate = this.moveMonth(this.viewDate, dir);
+ this._trigger('changeMonth', this.viewDate);
+ break;
+ case 1:
+ case 2:
+ this.viewDate = this.moveYear(this.viewDate, dir);
+ if (this.viewMode === 1)
+ this._trigger('changeYear', this.viewDate);
+ break;
+ }
+ this.fill();
+ break;
+ case 'today':
+ var date = new Date();
+ date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
+
+ this.showMode(-2);
+ var which = this.o.todayBtn === 'linked' ? null : 'view';
+ this._setDate(date, which);
+ break;
+ case 'clear':
+ this.clearDates();
+ break;
+ }
+ break;
+ case 'span':
+ if (!target.hasClass('disabled')){
+ this.viewDate.setUTCDate(1);
+ if (target.hasClass('month')){
+ day = 1;
+ month = target.parent().find('span').index(target);
+ year = this.viewDate.getUTCFullYear();
+ this.viewDate.setUTCMonth(month);
+ this._trigger('changeMonth', this.viewDate);
+ if (this.o.minViewMode === 1){
+ this._setDate(UTCDate(year, month, day));
+ }
+ }
+ else {
+ day = 1;
+ month = 0;
+ year = parseInt(target.text(), 10)||0;
+ this.viewDate.setUTCFullYear(year);
+ this._trigger('changeYear', this.viewDate);
+ if (this.o.minViewMode === 2){
+ this._setDate(UTCDate(year, month, day));
+ }
+ }
+ this.showMode(-1);
+ this.fill();
+ }
+ break;
+ case 'td':
+ if (target.hasClass('day') && !target.hasClass('disabled')){
+ day = parseInt(target.text(), 10)||1;
+ year = this.viewDate.getUTCFullYear();
+ month = this.viewDate.getUTCMonth();
+ if (target.hasClass('old')){
+ if (month === 0){
+ month = 11;
+ year -= 1;
+ }
+ else {
+ month -= 1;
+ }
+ }
+ else if (target.hasClass('new')){
+ if (month === 11){
+ month = 0;
+ year += 1;
+ }
+ else {
+ month += 1;
+ }
+ }
+ this._setDate(UTCDate(year, month, day));
+ }
+ break;
+ }
+ }
+ if (this.picker.is(':visible') && this._focused_from){
+ $(this._focused_from).focus();
+ }
+ delete this._focused_from;
+ },
+
+ _toggle_multidate: function(date){
+ var ix = this.dates.contains(date);
+ if (!date){
+ this.dates.clear();
+ }
+
+ if (ix !== -1){
+ if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){
+ this.dates.remove(ix);
+ }
+ } else if (this.o.multidate === false) {
+ this.dates.clear();
+ this.dates.push(date);
+ }
+ else {
+ this.dates.push(date);
+ }
+
+ if (typeof this.o.multidate === 'number')
+ while (this.dates.length > this.o.multidate)
+ this.dates.remove(0);
+ },
+
+ _setDate: function(date, which){
+ if (!which || which === 'date')
+ this._toggle_multidate(date && new Date(date));
+ if (!which || which === 'view')
+ this.viewDate = date && new Date(date);
+
+ this.fill();
+ this.setValue();
+ if (!which || which !== 'view') {
+ this._trigger('changeDate');
+ }
+ var element;
+ if (this.isInput){
+ element = this.element;
+ }
+ else if (this.component){
+ element = this.element.find('input');
+ }
+ if (element){
+ element.change();
+ }
+ if (this.o.autoclose && (!which || which === 'date')){
+ this.hide();
+ }
+ },
+
+ moveMonth: function(date, dir){
+ if (!date)
+ return undefined;
+ if (!dir)
+ return date;
+ var new_date = new Date(date.valueOf()),
+ day = new_date.getUTCDate(),
+ month = new_date.getUTCMonth(),
+ mag = Math.abs(dir),
+ new_month, test;
+ dir = dir > 0 ? 1 : -1;
+ if (mag === 1){
+ test = dir === -1
+ // If going back one month, make sure month is not current month
+ // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
+ ? function(){
+ return new_date.getUTCMonth() === month;
+ }
+ // If going forward one month, make sure month is as expected
+ // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
+ : function(){
+ return new_date.getUTCMonth() !== new_month;
+ };
+ new_month = month + dir;
+ new_date.setUTCMonth(new_month);
+ // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
+ if (new_month < 0 || new_month > 11)
+ new_month = (new_month + 12) % 12;
+ }
+ else {
+ // For magnitudes >1, move one month at a time...
+ for (var i=0; i < mag; i++)
+ // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
+ new_date = this.moveMonth(new_date, dir);
+ // ...then reset the day, keeping it in the new month
+ new_month = new_date.getUTCMonth();
+ new_date.setUTCDate(day);
+ test = function(){
+ return new_month !== new_date.getUTCMonth();
+ };
+ }
+ // Common date-resetting loop -- if date is beyond end of month, make it
+ // end of month
+ while (test()){
+ new_date.setUTCDate(--day);
+ new_date.setUTCMonth(new_month);
+ }
+ return new_date;
+ },
+
+ moveYear: function(date, dir){
+ return this.moveMonth(date, dir*12);
+ },
+
+ dateWithinRange: function(date){
+ return date >= this.o.startDate && date <= this.o.endDate;
+ },
+
+ keydown: function(e){
+ if (!this.picker.is(':visible')){
+ if (e.keyCode === 27) // allow escape to hide and re-show picker
+ this.show();
+ return;
+ }
+ var dateChanged = false,
+ dir, newDate, newViewDate,
+ focusDate = this.focusDate || this.viewDate;
+ switch (e.keyCode){
+ case 27: // escape
+ if (this.focusDate){
+ this.focusDate = null;
+ this.viewDate = this.dates.get(-1) || this.viewDate;
+ this.fill();
+ }
+ else
+ this.hide();
+ e.preventDefault();
+ break;
+ case 37: // left
+ case 39: // right
+ if (!this.o.keyboardNavigation)
+ break;
+ dir = e.keyCode === 37 ? -1 : 1;
+ if (e.ctrlKey){
+ newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
+ newViewDate = this.moveYear(focusDate, dir);
+ this._trigger('changeYear', this.viewDate);
+ }
+ else if (e.shiftKey){
+ newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
+ newViewDate = this.moveMonth(focusDate, dir);
+ this._trigger('changeMonth', this.viewDate);
+ }
+ else {
+ newDate = new Date(this.dates.get(-1) || UTCToday());
+ newDate.setUTCDate(newDate.getUTCDate() + dir);
+ newViewDate = new Date(focusDate);
+ newViewDate.setUTCDate(focusDate.getUTCDate() + dir);
+ }
+ if (this.dateWithinRange(newViewDate)){
+ this.focusDate = this.viewDate = newViewDate;
+ this.setValue();
+ this.fill();
+ e.preventDefault();
+ }
+ break;
+ case 38: // up
+ case 40: // down
+ if (!this.o.keyboardNavigation)
+ break;
+ dir = e.keyCode === 38 ? -1 : 1;
+ if (e.ctrlKey){
+ newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
+ newViewDate = this.moveYear(focusDate, dir);
+ this._trigger('changeYear', this.viewDate);
+ }
+ else if (e.shiftKey){
+ newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
+ newViewDate = this.moveMonth(focusDate, dir);
+ this._trigger('changeMonth', this.viewDate);
+ }
+ else {
+ newDate = new Date(this.dates.get(-1) || UTCToday());
+ newDate.setUTCDate(newDate.getUTCDate() + dir * 7);
+ newViewDate = new Date(focusDate);
+ newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);
+ }
+ if (this.dateWithinRange(newViewDate)){
+ this.focusDate = this.viewDate = newViewDate;
+ this.setValue();
+ this.fill();
+ e.preventDefault();
+ }
+ break;
+ case 32: // spacebar
+ // Spacebar is used in manually typing dates in some formats.
+ // As such, its behavior should not be hijacked.
+ break;
+ case 13: // enter
+ focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
+ if (this.o.keyboardNavigation) {
+ this._toggle_multidate(focusDate);
+ dateChanged = true;
+ }
+ this.focusDate = null;
+ this.viewDate = this.dates.get(-1) || this.viewDate;
+ this.setValue();
+ this.fill();
+ if (this.picker.is(':visible')){
+ e.preventDefault();
+ if (typeof e.stopPropagation === 'function') {
+ e.stopPropagation(); // All modern browsers, IE9+
+ } else {
+ e.cancelBubble = true; // IE6,7,8 ignore "stopPropagation"
+ }
+ if (this.o.autoclose)
+ this.hide();
+ }
+ break;
+ case 9: // tab
+ this.focusDate = null;
+ this.viewDate = this.dates.get(-1) || this.viewDate;
+ this.fill();
+ this.hide();
+ break;
+ }
+ if (dateChanged){
+ if (this.dates.length)
+ this._trigger('changeDate');
+ else
+ this._trigger('clearDate');
+ var element;
+ if (this.isInput){
+ element = this.element;
+ }
+ else if (this.component){
+ element = this.element.find('input');
+ }
+ if (element){
+ element.change();
+ }
+ }
+ },
+
+ showMode: function(dir){
+ if (dir){
+ this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
+ }
+ this.picker
+ .children('div')
+ .hide()
+ .filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName)
+ .css('display', 'block');
+ this.updateNavArrows();
+ }
+ };
+
+ var DateRangePicker = function(element, options){
+ this.element = $(element);
+ this.inputs = $.map(options.inputs, function(i){
+ return i.jquery ? i[0] : i;
+ });
+ delete options.inputs;
+
+ datepickerPlugin.call($(this.inputs), options)
+ .bind('changeDate', $.proxy(this.dateUpdated, this));
+
+ this.pickers = $.map(this.inputs, function(i){
+ return $(i).data('datepicker');
+ });
+ this.updateDates();
+ };
+ DateRangePicker.prototype = {
+ updateDates: function(){
+ this.dates = $.map(this.pickers, function(i){
+ return i.getUTCDate();
+ });
+ this.updateRanges();
+ },
+ updateRanges: function(){
+ var range = $.map(this.dates, function(d){
+ return d.valueOf();
+ });
+ $.each(this.pickers, function(i, p){
+ p.setRange(range);
+ });
+ },
+ dateUpdated: function(e){
+ // `this.updating` is a workaround for preventing infinite recursion
+ // between `changeDate` triggering and `setUTCDate` calling. Until
+ // there is a better mechanism.
+ if (this.updating)
+ return;
+ this.updating = true;
+
+ var dp = $(e.target).data('datepicker'),
+ new_date = dp.getUTCDate(),
+ i = $.inArray(e.target, this.inputs),
+ j = i - 1,
+ k = i + 1,
+ l = this.inputs.length;
+ if (i === -1)
+ return;
+
+ $.each(this.pickers, function(i, p){
+ if (!p.getUTCDate())
+ p.setUTCDate(new_date);
+ });
+
+ if (new_date < this.dates[j]){
+ // Date being moved earlier/left
+ while (j >= 0 && new_date < this.dates[j]){
+ this.pickers[j--].setUTCDate(new_date);
+ }
+ }
+ else if (new_date > this.dates[k]){
+ // Date being moved later/right
+ while (k < l && new_date > this.dates[k]){
+ this.pickers[k++].setUTCDate(new_date);
+ }
+ }
+ this.updateDates();
+
+ delete this.updating;
+ },
+ remove: function(){
+ $.map(this.pickers, function(p){ p.remove(); });
+ delete this.element.data().datepicker;
+ }
+ };
+
+ function opts_from_el(el, prefix){
+ // Derive options from element data-attrs
+ var data = $(el).data(),
+ out = {}, inkey,
+ replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
+ prefix = new RegExp('^' + prefix.toLowerCase());
+ function re_lower(_,a){
+ return a.toLowerCase();
+ }
+ for (var key in data)
+ if (prefix.test(key)){
+ inkey = key.replace(replace, re_lower);
+ out[inkey] = data[key];
+ }
+ return out;
+ }
+
+ function opts_from_locale(lang){
+ // Derive options from locale plugins
+ var out = {};
+ // Check if "de-DE" style date is available, if not language should
+ // fallback to 2 letter code eg "de"
+ if (!dates[lang]){
+ lang = lang.split('-')[0];
+ if (!dates[lang])
+ return;
+ }
+ var d = dates[lang];
+ $.each(locale_opts, function(i,k){
+ if (k in d)
+ out[k] = d[k];
+ });
+ return out;
+ }
+
+ var old = $.fn.datepicker;
+ var datepickerPlugin = function(option){
+ var args = Array.apply(null, arguments);
+ args.shift();
+ var internal_return;
+ this.each(function(){
+ var $this = $(this),
+ data = $this.data('datepicker'),
+ options = typeof option === 'object' && option;
+ if (!data){
+ var elopts = opts_from_el(this, 'date'),
+ // Preliminary otions
+ xopts = $.extend({}, defaults, elopts, options),
+ locopts = opts_from_locale(xopts.language),
+ // Options priority: js args, data-attrs, locales, defaults
+ opts = $.extend({}, defaults, locopts, elopts, options);
+ if ($this.hasClass('input-daterange') || opts.inputs){
+ var ropts = {
+ inputs: opts.inputs || $this.find('input').toArray()
+ };
+ $this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));
+ }
+ else {
+ $this.data('datepicker', (data = new Datepicker(this, opts)));
+ }
+ }
+ if (typeof option === 'string' && typeof data[option] === 'function'){
+ internal_return = data[option].apply(data, args);
+ if (internal_return !== undefined)
+ return false;
+ }
+ });
+ if (internal_return !== undefined)
+ return internal_return;
+ else
+ return this;
+ };
+ $.fn.datepicker = datepickerPlugin;
+
+ var defaults = $.fn.datepicker.defaults = {
+ autoclose: false,
+ beforeShowDay: $.noop,
+ beforeShowMonth: $.noop,
+ calendarWeeks: false,
+ clearBtn: false,
+ toggleActive: false,
+ daysOfWeekDisabled: [],
+ datesDisabled: [],
+ endDate: Infinity,
+ forceParse: true,
+ format: 'mm/dd/yyyy',
+ keyboardNavigation: true,
+ language: 'en',
+ minViewMode: 0,
+ multidate: false,
+ multidateSeparator: ',',
+ orientation: "auto",
+ rtl: false,
+ startDate: -Infinity,
+ startView: 0,
+ todayBtn: false,
+ todayHighlight: false,
+ weekStart: 0,
+ disableTouchKeyboard: false,
+ enableOnReadonly: true,
+ container: 'body'
+ };
+ var locale_opts = $.fn.datepicker.locale_opts = [
+ 'format',
+ 'rtl',
+ 'weekStart'
+ ];
+ $.fn.datepicker.Constructor = Datepicker;
+ var dates = $.fn.datepicker.dates = {
+ en: {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ clear: "Clear"
+ }
+ };
+
+ var DPGlobal = {
+ modes: [
+ {
+ clsName: 'days',
+ navFnc: 'Month',
+ navStep: 1
+ },
+ {
+ clsName: 'months',
+ navFnc: 'FullYear',
+ navStep: 1
+ },
+ {
+ clsName: 'years',
+ navFnc: 'FullYear',
+ navStep: 10
+ }],
+ isLeapYear: function(year){
+ return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
+ },
+ getDaysInMonth: function(year, month){
+ return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
+ },
+ validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
+ nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
+ parseFormat: function(format){
+ // IE treats \0 as a string end in inputs (truncating the value),
+ // so it's a bad format delimiter, anyway
+ var separators = format.replace(this.validParts, '\0').split('\0'),
+ parts = format.match(this.validParts);
+ if (!separators || !separators.length || !parts || parts.length === 0){
+ throw new Error("Invalid date format.");
+ }
+ return {separators: separators, parts: parts};
+ },
+ parseDate: function(date, format, language){
+ if (!date)
+ return undefined;
+ if (date instanceof Date)
+ return date;
+ if (typeof format === 'string')
+ format = DPGlobal.parseFormat(format);
+ var part_re = /([\-+]\d+)([dmwy])/,
+ parts = date.match(/([\-+]\d+)([dmwy])/g),
+ part, dir, i;
+ if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){
+ date = new Date();
+ for (i=0; i < parts.length; i++){
+ part = part_re.exec(parts[i]);
+ dir = parseInt(part[1]);
+ switch (part[2]){
+ case 'd':
+ date.setUTCDate(date.getUTCDate() + dir);
+ break;
+ case 'm':
+ date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);
+ break;
+ case 'w':
+ date.setUTCDate(date.getUTCDate() + dir * 7);
+ break;
+ case 'y':
+ date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);
+ break;
+ }
+ }
+ return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
+ }
+ parts = date && date.match(this.nonpunctuation) || [];
+ date = new Date();
+ var parsed = {},
+ setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
+ setters_map = {
+ yyyy: function(d,v){
+ return d.setUTCFullYear(v);
+ },
+ yy: function(d,v){
+ return d.setUTCFullYear(2000+v);
+ },
+ m: function(d,v){
+ if (isNaN(d))
+ return d;
+ v -= 1;
+ while (v < 0) v += 12;
+ v %= 12;
+ d.setUTCMonth(v);
+ while (d.getUTCMonth() !== v)
+ d.setUTCDate(d.getUTCDate()-1);
+ return d;
+ },
+ d: function(d,v){
+ return d.setUTCDate(v);
+ }
+ },
+ val, filtered;
+ setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
+ setters_map['dd'] = setters_map['d'];
+ date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
+ var fparts = format.parts.slice();
+ // Remove noop parts
+ if (parts.length !== fparts.length){
+ fparts = $(fparts).filter(function(i,p){
+ return $.inArray(p, setters_order) !== -1;
+ }).toArray();
+ }
+ // Process remainder
+ function match_part(){
+ var m = this.slice(0, parts[i].length),
+ p = parts[i].slice(0, m.length);
+ return m.toLowerCase() === p.toLowerCase();
+ }
+ if (parts.length === fparts.length){
+ var cnt;
+ for (i=0, cnt = fparts.length; i < cnt; i++){
+ val = parseInt(parts[i], 10);
+ part = fparts[i];
+ if (isNaN(val)){
+ switch (part){
+ case 'MM':
+ filtered = $(dates[language].months).filter(match_part);
+ val = $.inArray(filtered[0], dates[language].months) + 1;
+ break;
+ case 'M':
+ filtered = $(dates[language].monthsShort).filter(match_part);
+ val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
+ break;
+ }
+ }
+ parsed[part] = val;
+ }
+ var _date, s;
+ for (i=0; i < setters_order.length; i++){
+ s = setters_order[i];
+ if (s in parsed && !isNaN(parsed[s])){
+ _date = new Date(date);
+ setters_map[s](_date, parsed[s]);
+ if (!isNaN(_date))
+ date = _date;
+ }
+ }
+ }
+ return date;
+ },
+ formatDate: function(date, format, language){
+ if (!date)
+ return '';
+ if (typeof format === 'string')
+ format = DPGlobal.parseFormat(format);
+ var val = {
+ d: date.getUTCDate(),
+ D: dates[language].daysShort[date.getUTCDay()],
+ DD: dates[language].days[date.getUTCDay()],
+ m: date.getUTCMonth() + 1,
+ M: dates[language].monthsShort[date.getUTCMonth()],
+ MM: dates[language].months[date.getUTCMonth()],
+ yy: date.getUTCFullYear().toString().substring(2),
+ yyyy: date.getUTCFullYear()
+ };
+ val.dd = (val.d < 10 ? '0' : '') + val.d;
+ val.mm = (val.m < 10 ? '0' : '') + val.m;
+ date = [];
+ var seps = $.extend([], format.separators);
+ for (var i=0, cnt = format.parts.length; i <= cnt; i++){
+ if (seps.length)
+ date.push(seps.shift());
+ date.push(val[format.parts[i]]);
+ }
+ return date.join('');
+ },
+ headTemplate: '<thead>'+
+ '<tr>'+
+ '<th class="prev">«</th>'+
+ '<th colspan="5" class="datepicker-switch"></th>'+
+ '<th class="next">»</th>'+
+ '</tr>'+
+ '</thead>',
+ contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
+ footTemplate: '<tfoot>'+
+ '<tr>'+
+ '<th colspan="7" class="today"></th>'+
+ '</tr>'+
+ '<tr>'+
+ '<th colspan="7" class="clear"></th>'+
+ '</tr>'+
+ '</tfoot>'
+ };
+ DPGlobal.template = '<div class="datepicker">'+
+ '<div class="datepicker-days">'+
+ '<table class=" table-condensed">'+
+ DPGlobal.headTemplate+
+ '<tbody></tbody>'+
+ DPGlobal.footTemplate+
+ '</table>'+
+ '</div>'+
+ '<div class="datepicker-months">'+
+ '<table class="table-condensed">'+
+ DPGlobal.headTemplate+
+ DPGlobal.contTemplate+
+ DPGlobal.footTemplate+
+ '</table>'+
+ '</div>'+
+ '<div class="datepicker-years">'+
+ '<table class="table-condensed">'+
+ DPGlobal.headTemplate+
+ DPGlobal.contTemplate+
+ DPGlobal.footTemplate+
+ '</table>'+
+ '</div>'+
+ '</div>';
+
+ $.fn.datepicker.DPGlobal = DPGlobal;
+
+
+ /* DATEPICKER NO CONFLICT
+ * =================== */
+
+ $.fn.datepicker.noConflict = function(){
+ $.fn.datepicker = old;
+ return this;
+ };
+
+ /* DATEPICKER VERSION
+ * =================== */
+ $.fn.datepicker.version = "1.4.0";
+
+ /* DATEPICKER DATA-API
+ * ================== */
+
+ $(document).on(
+ 'focus.datepicker.data-api click.datepicker.data-api',
+ '[data-provide="datepicker"]',
+ function(e){
+ var $this = $(this);
+ if ($this.data('datepicker'))
+ return;
+ e.preventDefault();
+ // component click requires us to explicitly show it
+ datepickerPlugin.call($this, 'show');
+ }
+ );
+ $(function(){
+ datepickerPlugin.call($('[data-provide="datepicker-inline"]'));
+ });
+
+}(window.jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js
new file mode 100644
index 0000000..12ae182
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js
@@ -0,0 +1,15 @@
+/**
+ * Arabic translation for bootstrap-datepicker
+ * Mohammed Alshehri <alshehri866@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['ar'] = {
+ days: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"],
+ daysShort: ["أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت", "أحد"],
+ daysMin: ["ح", "ن", "ث", "ع", "خ", "ج", "س", "ح"],
+ months: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
+ monthsShort: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
+ today: "هذا اليوم",
+ rtl: true
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.az.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.az.js
new file mode 100644
index 0000000..0285341
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.az.js
@@ -0,0 +1,12 @@
+// Azerbaijani
+;(function($){
+ $.fn.datepicker.dates['az'] = {
+ days: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə", "Bazar"],
+ daysShort: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş.", "B."],
+ daysMin: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş.", "B."],
+ months: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"],
+ monthsShort: ["Yan", "Fev", "Mar", "Apr", "May", "İyun", "İyul", "Avq", "Sen", "Okt", "Noy", "Dek"],
+ today: "Bu gün",
+ weekStart: 1
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js
new file mode 100644
index 0000000..6837afd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js
@@ -0,0 +1,14 @@
+/**
+ * Bulgarian translation for bootstrap-datepicker
+ * Apostol Apostolov <apostol.s.apostolov@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['bg'] = {
+ days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"],
+ daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"],
+ daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"],
+ months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"],
+ monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"],
+ today: "днес"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bs.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bs.js
new file mode 100644
index 0000000..f0d4c26
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bs.js
@@ -0,0 +1,15 @@
+/**
+ * Bosnian translation for bootstrap-datepicker
+ */
+;(function($){
+ $.fn.datepicker.dates['bs'] = {
+ days: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota", "Nedjelja"],
+ daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub", "Ned"],
+ daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su", "N"],
+ months: ["Januar", "Februar", "Mart", "April", "Maj", "Juni", "Juli", "August", "Septembar", "Oktobar", "Novembar", "Decembar"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+ today: "Danas",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js
new file mode 100644
index 0000000..432481e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js
@@ -0,0 +1,17 @@
+/**
+ * Catalan translation for bootstrap-datepicker
+ * J. Garcia <jogaco.en@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['ca'] = {
+ days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte", "Diumenge"],
+ daysShort: ["Diu", "Dil", "Dmt", "Dmc", "Dij", "Div", "Dis", "Diu"],
+ daysMin: ["dg", "dl", "dt", "dc", "dj", "dv", "ds", "dg"],
+ months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"],
+ monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"],
+ today: "Avui",
+ clear: "Esborrar",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js
new file mode 100644
index 0000000..885c73b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js
@@ -0,0 +1,18 @@
+/**
+ * Czech translation for bootstrap-datepicker
+ * Matěj Koubík <matej@koubik.name>
+ * Fixes by Michal Remiš <michal.remis@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['cs'] = {
+ days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"],
+ daysShort: ["Ned", "Pon", "Úte", "Stř", "Čtv", "Pát", "Sob", "Ned"],
+ daysMin: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So", "Ne"],
+ months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
+ monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"],
+ today: "Dnes",
+ clear: "Vymazat",
+ weekStart: 1,
+ format: "d.m.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cy.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cy.js
new file mode 100644
index 0000000..7e1136a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cy.js
@@ -0,0 +1,14 @@
+/**
+ * Welsh translation for bootstrap-datepicker
+ * S. Morris <s.morris@bangor.ac.uk>
+ */
+;(function($){
+ $.fn.datepicker.dates['cy'] = {
+ days: ["Sul", "Llun", "Mawrth", "Mercher", "Iau", "Gwener", "Sadwrn", "Sul"],
+ daysShort: ["Sul", "Llu", "Maw", "Mer", "Iau", "Gwe", "Sad", "Sul"],
+ daysMin: ["Su", "Ll", "Ma", "Me", "Ia", "Gwe", "Sa", "Su"],
+ months: ["Ionawr", "Chewfror", "Mawrth", "Ebrill", "Mai", "Mehefin", "Gorfennaf", "Awst", "Medi", "Hydref", "Tachwedd", "Rhagfyr"],
+ monthsShort: ["Ion", "Chw", "Maw", "Ebr", "Mai", "Meh", "Gor", "Aws", "Med", "Hyd", "Tach", "Rha"],
+ today: "Heddiw"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js
new file mode 100644
index 0000000..c3d702d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js
@@ -0,0 +1,15 @@
+/**
+ * Danish translation for bootstrap-datepicker
+ * Christian Pedersen <http://github.com/chripede>
+ */
+;(function($){
+ $.fn.datepicker.dates['da'] = {
+ days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
+ daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
+ daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
+ months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+ today: "I Dag",
+ clear: "Nulstil"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js
new file mode 100644
index 0000000..a27ba57
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js
@@ -0,0 +1,17 @@
+/**
+ * German translation for bootstrap-datepicker
+ * Sam Zurcher <sam@orelias.ch>
+ */
+;(function($){
+ $.fn.datepicker.dates['de'] = {
+ days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"],
+ daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son"],
+ daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"],
+ months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
+ monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
+ today: "Heute",
+ clear: "Löschen",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js
new file mode 100644
index 0000000..b2a79d9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js
@@ -0,0 +1,16 @@
+/**
+ * Greek translation for bootstrap-datepicker
+ */
+;(function($){
+ $.fn.datepicker.dates['el'] = {
+ days: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο", "Κυριακή"],
+ daysShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", "Κυρ"],
+ daysMin: ["Κυ", "Δε", "Τρ", "Τε", "Πε", "Πα", "Σα", "Κυ"],
+ months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"],
+ monthsShort: ["Ιαν", "Φεβ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"],
+ today: "Σήμερα",
+ clear: "Καθαρισμός",
+ weekStart: 1,
+ format: "d/m/yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.en-GB.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.en-GB.js
new file mode 100644
index 0000000..a4a68cf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.en-GB.js
@@ -0,0 +1,17 @@
+/**
+ * British English translation for bootstrap-datepicker
+ * Xavier Dutreilh <xavier@dutreilh.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['en-GB'] = {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ clear: "Clear",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js
new file mode 100644
index 0000000..e497d58
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js
@@ -0,0 +1,17 @@
+/**
+ * Spanish translation for bootstrap-datepicker
+ * Bruno Bonamin <bruno.bonamin@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['es'] = {
+ days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"],
+ daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom"],
+ daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", "Do"],
+ months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
+ monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
+ today: "Hoy",
+ clear: "Borrar",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.et.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.et.js
new file mode 100644
index 0000000..87c812e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.et.js
@@ -0,0 +1,18 @@
+/**
+ * Estonian translation for bootstrap-datepicker
+ * Ando Roots <https://github.com/anroots>
+ * Fixes by Illimar Tambek <<https://github.com/ragulka>
+ */
+;(function($){
+ $.fn.datepicker.dates['et'] = {
+ days: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev", "Pühapäev"],
+ daysShort: ["Pühap", "Esmasp", "Teisip", "Kolmap", "Neljap", "Reede", "Laup", "Pühap"],
+ daysMin: ["P", "E", "T", "K", "N", "R", "L", "P"],
+ months: ["Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"],
+ monthsShort: ["Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets"],
+ today: "Täna",
+ clear: "Tühjenda",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.eu.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.eu.js
new file mode 100644
index 0000000..295db4c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.eu.js
@@ -0,0 +1,15 @@
+/**
+ * Basque translation for bootstrap-datepicker
+ * Arkaitz Etxeberria <kondi80@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['eu'] = {
+ days: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata','Igandea'],
+ daysShort: ['Ig','Al','Ar','Az','Og','Ol','Lr', 'Ig'],
+ daysMin: ['Ig','Al','Ar','Az','Og','Ol','Lr', 'Ig'],
+ months: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina','Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'],
+ monthsShort: ['Urt','Ots','Mar','Api','Mai','Eka','Uzt','Abu','Ira','Urr','Aza','Abe'],
+ today: "Gaur"
+ };
+}(jQuery));
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fa.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fa.js
new file mode 100644
index 0000000..6503c85
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fa.js
@@ -0,0 +1,17 @@
+/**
+ * Persian translation for bootstrap-datepicker
+ * Mostafa Rokooie <mostafa.rokooie@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['fa'] = {
+ days: ["یکشنبه", "دوشنبه", "سهشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه", "یکشنبه"],
+ daysShort: ["یک", "دو", "سه", "چهار", "پنج", "جمعه", "شنبه", "یک"],
+ daysMin: ["ی", "د", "س", "چ", "پ", "ج", "ش", "ی"],
+ months: ["ژانویه", "فوریه", "مارس", "آوریل", "مه", "ژوئن", "ژوئیه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "دسامبر"],
+ monthsShort: ["ژان", "فور", "مار", "آور", "مه", "ژون", "ژوی", "اوت", "سپت", "اکت", "نوا", "دسا"],
+ today: "امروز",
+ clear: "پاک کن",
+ weekStart: 1,
+ format: "yyyy/mm/dd"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js
new file mode 100644
index 0000000..01f40dc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js
@@ -0,0 +1,16 @@
+/**
+ * Finnish translation for bootstrap-datepicker
+ * Jaakko Salonen <https://github.com/jsalonen>
+ */
+;(function($){
+ $.fn.datepicker.dates['fi'] = {
+ days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai", "sunnuntai"],
+ daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau", "sun"],
+ daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la", "su"],
+ months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"],
+ monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"],
+ today: "tänään",
+ weekStart: 1,
+ format: "d.m.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fo.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fo.js
new file mode 100644
index 0000000..64a5394
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fo.js
@@ -0,0 +1,15 @@
+/**
+ * Faroese translation for bootstrap-datepicker
+ * Theodor Johannesen <http://github.com/theodorjohannesen>
+ */
+;(function($){
+ $.fn.datepicker.dates['fo'] = {
+ days: ["Sunnudagur", "Mánadagur", "Týsdagur", "Mikudagur", "Hósdagur", "Fríggjadagur", "Leygardagur", "Sunnudagur"],
+ daysShort: ["Sun", "Mán", "Týs", "Mik", "Hós", "Frí", "Ley", "Sun"],
+ daysMin: ["Su", "Má", "Tý", "Mi", "Hó", "Fr", "Le", "Su"],
+ months: ["Januar", "Februar", "Marts", "Apríl", "Mei", "Juni", "Juli", "August", "Septembur", "Oktobur", "Novembur", "Desembur"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+ today: "Í Dag",
+ clear: "Reinsa"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js
new file mode 100644
index 0000000..8eca186
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js
@@ -0,0 +1,17 @@
+/**
+ * French translation for bootstrap-datepicker
+ * Nico Mollet <nico.mollet@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['fr'] = {
+ days: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"],
+ daysShort: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam.", "dim."],
+ daysMin: ["d", "l", "ma", "me", "j", "v", "s", "d"],
+ months: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"],
+ monthsShort: ["janv.", "févr.", "mars", "avril", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."],
+ today: "Aujourd'hui",
+ clear: "Effacer",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr-CH.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr-CH.js
new file mode 100644
index 0000000..684c166
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr-CH.js
@@ -0,0 +1,20 @@
+/**
+ * French (Switzerland) translation for bootstrap-datepicker
+ * Christoph Jossi <c.jossi@ascami.ch>
+ * Based on
+ * French translation for bootstrap-datepicker
+ * Nico Mollet <nico.mollet@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['fr'] = {
+ days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"],
+ daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"],
+ daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"],
+ months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
+ monthsShort: ["Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc"],
+ today: "Aujourd'hui",
+ clear: "Effacer",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.gl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.gl.js
new file mode 100644
index 0000000..b0ce47c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.gl.js
@@ -0,0 +1,13 @@
+;(function($){
+ $.fn.datepicker.dates['gl'] = {
+ days: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado", "Domingo"],
+ daysShort: ["Dom", "Lun", "Mar", "Mér", "Xov", "Ven", "Sáb", "Dom"],
+ daysMin: ["Do", "Lu", "Ma", "Me", "Xo", "Ve", "Sa", "Do"],
+ months: ["Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"],
+ monthsShort: ["Xan", "Feb", "Mar", "Abr", "Mai", "Xun", "Xul", "Ago", "Sep", "Out", "Nov", "Dec"],
+ today: "Hoxe",
+ clear: "Limpar",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js
new file mode 100644
index 0000000..2e17393
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js
@@ -0,0 +1,15 @@
+/**
+ * Hebrew translation for bootstrap-datepicker
+ * Sagie Maoz <sagie@maoz.info>
+ */
+;(function($){
+ $.fn.datepicker.dates['he'] = {
+ days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"],
+ daysShort: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
+ daysMin: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
+ months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"],
+ monthsShort: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"],
+ today: "היום",
+ rtl: true
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js
new file mode 100644
index 0000000..655ea54
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js
@@ -0,0 +1,13 @@
+/**
+ * Croatian localisation
+ */
+;(function($){
+ $.fn.datepicker.dates['hr'] = {
+ days: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota", "Nedjelja"],
+ daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub", "Ned"],
+ daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su", "Ne"],
+ months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"],
+ monthsShort: ["Sij", "Velj", "Ožu", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro"],
+ today: "Danas"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js
new file mode 100644
index 0000000..bf5308a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js
@@ -0,0 +1,16 @@
+/**
+ * Hungarian translation for bootstrap-datepicker
+ * Sotus László <lacisan@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['hu'] = {
+ days: ["Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"],
+ daysShort: ["Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo", "Vas"],
+ daysMin: ["Va", "Hé", "Ke", "Sz", "Cs", "Pé", "Sz", "Va"],
+ months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"],
+ today: "Ma",
+ weekStart: 1,
+ format: "yyyy.mm.dd"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hy.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hy.js
new file mode 100644
index 0000000..716e19f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hy.js
@@ -0,0 +1,17 @@
+/**
+ * Armenian translation for bootstrap-datepicker
+ * Hayk Chamyan <hamshen@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['hy'] = {
+ days: ["Կիրակի", "Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ", "Կիրակի"],
+ daysShort: ["Կիր", "Երկ", "Երք", "Չոր", "Հնգ", "Ուր", "Շաբ", "Կիր"],
+ daysMin: ["Կի", "Եկ", "Եք", "Չո", "Հի", "Ու", "Շա", "Կի"],
+ months: ["Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"],
+ monthsShort: ["Հնվ", "Փետ", "Մար", "Ապր", "Մայ", "Հուն", "Հուլ", "Օգս", "Սեպ", "Հոկ", "Նոյ", "Դեկ"],
+ today: "Այսօր",
+ clear: "Ջնջել",
+ format: "dd.mm.yyyy",
+ weekStart: 1
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js
new file mode 100644
index 0000000..aae6e89
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js
@@ -0,0 +1,15 @@
+/**
+ * Bahasa translation for bootstrap-datepicker
+ * Azwar Akbar <azwar.akbar@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['id'] = {
+ days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"],
+ daysShort: ["Mgu", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Mgu"],
+ daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa", "Mg"],
+ months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"],
+ today: "Hari Ini",
+ clear: "Kosongkan"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js
new file mode 100644
index 0000000..0e57a91
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js
@@ -0,0 +1,14 @@
+/**
+ * Icelandic translation for bootstrap-datepicker
+ * Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['is'] = {
+ days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"],
+ daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun"],
+ daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La", "Su"],
+ months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"],
+ today: "Í Dag"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js
new file mode 100644
index 0000000..9f476fa
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js
@@ -0,0 +1,17 @@
+/**
+ * Italian translation for bootstrap-datepicker
+ * Enrico Rubboli <rubboli@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['it'] = {
+ days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"],
+ daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"],
+ daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"],
+ months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
+ monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
+ today: "Oggi",
+ clear: "Cancella",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it-CH.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it-CH.js
new file mode 100644
index 0000000..7aa6f58
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it-CH.js
@@ -0,0 +1,20 @@
+/**
+ * Italian (Switzerland) translation for bootstrap-datepicker
+ * Christoph Jossi <c.jossi@ascami.ch>
+ * Based on
+ * Italian translation for bootstrap-datepicker
+ * Enrico Rubboli <rubboli@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['it'] = {
+ days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"],
+ daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"],
+ daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"],
+ months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
+ monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
+ today: "Oggi",
+ clear: "Cancella",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js
new file mode 100644
index 0000000..699b6ae
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js
@@ -0,0 +1,16 @@
+/**
+ * Japanese translation for bootstrap-datepicker
+ * Norio Suzuki <https://github.com/suzuki/>
+ */
+;(function($){
+ $.fn.datepicker.dates['ja'] = {
+ days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"],
+ daysShort: ["日", "月", "火", "水", "木", "金", "土", "日"],
+ daysMin: ["日", "月", "火", "水", "木", "金", "土", "日"],
+ months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+ monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+ today: "今日",
+ format: "yyyy/mm/dd",
+ clear: "クリア"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ka.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ka.js
new file mode 100644
index 0000000..5434454
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ka.js
@@ -0,0 +1,17 @@
+/**
+ * Georgian translation for bootstrap-datepicker
+ * Levan Melikishvili <levani0101@yahoo.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['ka'] = {
+ days: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი", "კვირა"],
+ daysShort: ["კვი", "ორშ", "სამ", "ოთხ", "ხუთ", "პარ", "შაბ", "კვი"],
+ daysMin: ["კვ", "ორ", "სა", "ოთ", "ხუ", "პა", "შა", "კვ"],
+ months: ["იანვარი", "თებერვალი", "მარტი", "აპრილი", "მაისი", "ივნისი", "ივლისი", "აგვისტო", "სექტემბერი", "ოქტომები", "ნოემბერი", "დეკემბერი"],
+ monthsShort: ["იან", "თებ", "მარ", "აპრ", "მაი", "ივნ", "ივლ", "აგვ", "სექ", "ოქტ", "ნოე", "დეკ"],
+ today: "დღეს",
+ clear: "გასუფთავება",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kh.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kh.js
new file mode 100644
index 0000000..681ae87
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kh.js
@@ -0,0 +1,15 @@
+/**
+ * Cambodia (Khmer) translation for bootstrap-datepicker
+ * Lytay TOUCH <lytaytouch@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['kh'] = {
+ days: ["អាទិត្យ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រហស្បតិ៍", "សុក្រ", "សៅរ៍", "អាទិត្យ"],
+ daysShort: ["អា.ទិ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រ.ហ", "សុក្រ", "សៅរ៍", "អា.ទិ"],
+ daysMin: ["អា.ទិ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រ.ហ", "សុក្រ", "សៅរ៍", "អា.ទិ"],
+ months: ["មករា", "កុម្ភះ", "មិនា", "មេសា", "ឧសភា", "មិថុនា", "កក្កដា", "សីហា", "កញ្ញា", "តុលា", "វិច្ឆិកា", "ធ្នូ"],
+ monthsShort: ["មករា", "កុម្ភះ", "មិនា", "មេសា", "ឧសភា", "មិថុនា", "កក្កដា", "សីហា", "កញ្ញា", "តុលា", "វិច្ឆិកា", "ធ្នូ"],
+ today: "ថ្ងៃនេះ",
+ clear: "សំអាត"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kk.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kk.js
new file mode 100644
index 0000000..94dd6b8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kk.js
@@ -0,0 +1,15 @@
+/**
+ * Kazakh translation for bootstrap-datepicker
+ * Yerzhan Tolekov <era.tolekov@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['kk'] = {
+ days: ["Жексенбі", "Дүйсенбі", "Сейсенбі", "Сәрсенбі", "Бейсенбі", "Жұма", "Сенбі", "Жексенбі"],
+ daysShort: ["Жек", "Дүй", "Сей", "Сәр", "Бей", "Жұм", "Сен", "Жек"],
+ daysMin: ["Жк", "Дс", "Сс", "Ср", "Бс", "Жм", "Сн", "Жк"],
+ months: ["Қаңтар", "Ақпан", "Наурыз", "Сәуір", "Мамыр", "Маусым", "Шілде", "Тамыз", "Қыркүйек", "Қазан", "Қараша", "Желтоқсан"],
+ monthsShort: ["Қаң", "Ақп", "Нау", "Сәу", "Мамыр", "Мау", "Шлд", "Тмз", "Қыр", "Қзн", "Қар", "Жел"],
+ today: "Бүгін",
+ weekStart: 1
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js
new file mode 100644
index 0000000..183a88d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js
@@ -0,0 +1,13 @@
+/**
+ * Korean translation for bootstrap-datepicker
+ * Gu Youn <http://github.com/guyoun>
+ */
+;(function($){
+ $.fn.datepicker.dates['kr'] = {
+ days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"],
+ daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"],
+ daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"],
+ months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
+ monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"]
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js
new file mode 100644
index 0000000..11c1b3a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js
@@ -0,0 +1,16 @@
+/**
+ * Lithuanian translation for bootstrap-datepicker
+ * Šarūnas Gliebus <ssharunas@yahoo.co.uk>
+ */
+
+;(function($){
+ $.fn.datepicker.dates['lt'] = {
+ days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"],
+ daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"],
+ daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"],
+ months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"],
+ monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"],
+ today: "Šiandien",
+ weekStart: 1
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js
new file mode 100644
index 0000000..76d0f3a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js
@@ -0,0 +1,16 @@
+/**
+ * Latvian translation for bootstrap-datepicker
+ * Artis Avotins <artis@apit.lv>
+ */
+
+;(function($){
+ $.fn.datepicker.dates['lv'] = {
+ days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Svētdiena"],
+ daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S", "Sv"],
+ daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "Se", "Sv"],
+ months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec"],
+ today: "Šodien",
+ weekStart: 1
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.me.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.me.js
new file mode 100644
index 0000000..ac04c89
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.me.js
@@ -0,0 +1,17 @@
+/**
+ * Montenegrin translation for bootstrap-datepicker
+ * Miodrag Nikač <miodrag@restartit.me>
+ */
+;(function($){
+ $.fn.datepicker.dates['me'] = {
+ days: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota", "Nedjelja"],
+ daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub", "Ned"],
+ daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su", "Ne"],
+ months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
+ today: "Danas",
+ weekStart: 1,
+ clear: "Izbriši",
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mk.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mk.js
new file mode 100644
index 0000000..0ab8cf6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mk.js
@@ -0,0 +1,15 @@
+/**
+ * Macedonian translation for bootstrap-datepicker
+ * Marko Aleksic <psybaron@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['mk'] = {
+ days: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота", "Недела"],
+ daysShort: ["Нед", "Пон", "Вто", "Сре", "Чет", "Пет", "Саб", "Нед"],
+ daysMin: ["Не", "По", "Вт", "Ср", "Че", "Пе", "Са", "Не"],
+ months: ["Јануари", "Февруари", "Март", "Април", "Мај", "Јуни", "Јули", "Август", "Септември", "Октомври", "Ноември", "Декември"],
+ monthsShort: ["Јан", "Фев", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Ное", "Дек"],
+ today: "Денес",
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js
new file mode 100644
index 0000000..fa3a21a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js
@@ -0,0 +1,14 @@
+/**
+ * Malay translation for bootstrap-datepicker
+ * Ateman Faiz <noorulfaiz@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['ms'] = {
+ days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu", "Ahad"],
+ daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab", "Aha"],
+ daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa", "Ah"],
+ months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"],
+ today: "Hari Ini"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js
new file mode 100644
index 0000000..7b28e84
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js
@@ -0,0 +1,14 @@
+/**
+ * Norwegian (bokmål) translation for bootstrap-datepicker
+ * Fredrik Sundmyhr <http://github.com/fsundmyhr>
+ */
+;(function($){
+ $.fn.datepicker.dates['nb'] = {
+ days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
+ daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
+ daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
+ months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+ today: "I Dag"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js
new file mode 100644
index 0000000..5a04289
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js
@@ -0,0 +1,17 @@
+/**
+ * Dutch translation for bootstrap-datepicker
+ * Reinier Goltstein <mrgoltstein@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['nl'] = {
+ days: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag", "zondag"],
+ daysShort: ["zo", "ma", "di", "wo", "do", "vr", "za", "zo"],
+ daysMin: ["zo", "ma", "di", "wo", "do", "vr", "za", "zo"],
+ months: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
+ monthsShort: ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
+ today: "Vandaag",
+ clear: "Wissen",
+ weekStart: 1,
+ format: "dd-mm-yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl-BE.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl-BE.js
new file mode 100644
index 0000000..d690141
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl-BE.js
@@ -0,0 +1,17 @@
+/**
+ * Belgium-Dutch translation for bootstrap-datepicker
+ * Julien Poulin <poulin_julien@hotmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['nl-BE'] = {
+ days: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag", "zondag"],
+ daysShort: ["zo", "ma", "di", "wo", "do", "vr", "za", "zo"],
+ daysMin: ["zo", "ma", "di", "wo", "do", "vr", "za", "zo"],
+ months: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
+ monthsShort: ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
+ today: "Vandaag",
+ clear: "Leegmaken",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.no.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.no.js
new file mode 100644
index 0000000..c29ec83
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.no.js
@@ -0,0 +1,16 @@
+/**
+ * Norwegian translation for bootstrap-datepicker
+ **/
+;(function($){
+ $.fn.datepicker.dates['no'] = {
+ days: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
+ daysShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
+ daysMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
+ months: ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'],
+ monthsShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Des'],
+ today: 'I dag',
+ clear: 'Nullstill',
+ weekStart: 1,
+ format: 'dd.mm.yyyy'
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js
new file mode 100644
index 0000000..1bf88ea
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js
@@ -0,0 +1,16 @@
+/**
+ * Polish translation for bootstrap-datepicker
+ * Robert <rtpm@gazeta.pl>
+ */
+;(function($){
+ $.fn.datepicker.dates['pl'] = {
+ days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"],
+ daysShort: ["Nie", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nie"],
+ daysMin: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N"],
+ months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
+ monthsShort: ["Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru"],
+ today: "Dzisiaj",
+ weekStart: 1,
+ clear: "Wyczyść"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js
new file mode 100644
index 0000000..e54981d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js
@@ -0,0 +1,16 @@
+/**
+ * Portuguese translation for bootstrap-datepicker
+ * Original code: Cauan Cabral <cauan@radig.com.br>
+ * Tiago Melo <tiago.blackcode@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['pt'] = {
+ days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
+ daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
+ daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
+ months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+ monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+ today: "Hoje",
+ clear: "Limpar"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js
new file mode 100644
index 0000000..eb642b7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js
@@ -0,0 +1,15 @@
+/**
+ * Brazilian translation for bootstrap-datepicker
+ * Cauan Cabral <cauan@radig.com.br>
+ */
+;(function($){
+ $.fn.datepicker.dates['pt-BR'] = {
+ days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
+ daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
+ daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
+ months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+ monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+ today: "Hoje",
+ clear: "Limpar"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js
new file mode 100644
index 0000000..e1e65df
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js
@@ -0,0 +1,16 @@
+/**
+ * Romanian translation for bootstrap-datepicker
+ * Cristian Vasile <cristi.mie@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['ro'] = {
+ days: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă", "Duminică"],
+ daysShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", "Dum"],
+ daysMin: ["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ", "Du"],
+ months: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"],
+ monthsShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Astăzi",
+ clear: "Șterge",
+ weekStart: 1
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js
new file mode 100644
index 0000000..92899ea
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js
@@ -0,0 +1,16 @@
+/**
+ * Serbian cyrillic translation for bootstrap-datepicker
+ * Bojan Milosavlević <milboj@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['rs'] = {
+ days: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота", "Недеља"],
+ daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", "Нед"],
+ daysMin: ["Н", "По", "У", "Ср", "Ч", "Пе", "Су", "Н"],
+ months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"],
+ monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"],
+ today: "Данас",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js
new file mode 100644
index 0000000..d9f677f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js
@@ -0,0 +1,16 @@
+/**
+ * Serbian latin translation for bootstrap-datepicker
+ * Bojan Milosavlević <milboj@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['rs-latin'] = {
+ days: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"],
+ daysShort: ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", "Ned"],
+ daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su", "N"],
+ months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
+ today: "Danas",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js
new file mode 100644
index 0000000..90b573b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js
@@ -0,0 +1,17 @@
+/**
+ * Russian translation for bootstrap-datepicker
+ * Victor Taranenko <darwin@snowdale.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['ru'] = {
+ days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"],
+ daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Вск"],
+ daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"],
+ months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
+ monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
+ today: "Сегодня",
+ clear: "Очистить",
+ format: "dd.mm.yyyy",
+ weekStart: 1
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js
new file mode 100644
index 0000000..c48032a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js
@@ -0,0 +1,15 @@
+/**
+ * Slovak translation for bootstrap-datepicker
+ * Marek Lichtner <marek@licht.sk>
+ * Fixes by Michal Remiš <michal.remis@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates["sk"] = {
+ days: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota", "Nedeľa"],
+ daysShort: ["Ned", "Pon", "Uto", "Str", "Štv", "Pia", "Sob", "Ned"],
+ daysMin: ["Ne", "Po", "Ut", "St", "Št", "Pia", "So", "Ne"],
+ months: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec"],
+ today: "Dnes"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js
new file mode 100644
index 0000000..41b0e06
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js
@@ -0,0 +1,14 @@
+/**
+ * Slovene translation for bootstrap-datepicker
+ * Gregor Rudolf <gregor.rudolf@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['sl'] = {
+ days: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota", "Nedelja"],
+ daysShort: ["Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob", "Ned"],
+ daysMin: ["Ne", "Po", "To", "Sr", "Če", "Pe", "So", "Ne"],
+ months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
+ today: "Danes"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sq.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sq.js
new file mode 100644
index 0000000..1d646c7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sq.js
@@ -0,0 +1,15 @@
+/**
+ * Albanian translation for bootstrap-datepicker
+ * Tomor Pupovci <http://www.github.com/ttomor>
+ */
+;(function($){
+ $.fn.datepicker.dates['sq'] = {
+ days: ["E Diel", "E Hënë", "E Martē", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë", "E Diel"],
+ daysShort: ["Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu", "Die"],
+ daysMin: ["Di", "Hë", "Ma", "Më", "En", "Pr", "Sht", "Di"],
+ months: ["Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"],
+ monthsShort: ["Jan", "Shk", "Mar", "Pri", "Maj", "Qer", "Korr", "Gu", "Sht", "Tet", "Nën", "Dhjet"],
+ today: "Sot"
+ };
+}(jQuery));
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr.js
new file mode 100644
index 0000000..1de0bcb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr.js
@@ -0,0 +1,16 @@
+/**
+ * Serbian cyrillic translation for bootstrap-datepicker
+ * Bojan Milosavlević <milboj@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['sr'] = {
+ days: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота", "Недеља"],
+ daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", "Нед"],
+ daysMin: ["Н", "По", "У", "Ср", "Ч", "Пе", "Су", "Н"],
+ months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"],
+ monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"],
+ today: "Данас",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr-latin.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr-latin.js
new file mode 100644
index 0000000..0e3aad9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr-latin.js
@@ -0,0 +1,16 @@
+/**
+ * Serbian latin translation for bootstrap-datepicker
+ * Bojan Milosavlević <milboj@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['sr-latin'] = {
+ days: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"],
+ daysShort: ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", "Ned"],
+ daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su", "N"],
+ months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
+ today: "Danas",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js
new file mode 100644
index 0000000..fe82a3b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js
@@ -0,0 +1,17 @@
+/**
+ * Swedish translation for bootstrap-datepicker
+ * Patrik Ragnarsson <patrik@starkast.net>
+ */
+;(function($){
+ $.fn.datepicker.dates['sv'] = {
+ days: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"],
+ daysShort: ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön"],
+ daysMin: ["Sö", "Må", "Ti", "On", "To", "Fr", "Lö", "Sö"],
+ months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+ today: "Idag",
+ format: "yyyy-mm-dd",
+ weekStart: 1,
+ clear: "Rensa"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js
new file mode 100644
index 0000000..622e0ef
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js
@@ -0,0 +1,15 @@
+/**
+ * Swahili translation for bootstrap-datepicker
+ * Edwin Mugendi <https://github.com/edwinmugendi>
+ * Source: http://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku
+ */
+;(function($){
+ $.fn.datepicker.dates['sw'] = {
+ days: ["Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi", "Jumapili"],
+ daysShort: ["J2", "J3", "J4", "J5", "Alh", "Ij", "J1", "J2"],
+ daysMin: ["2", "3", "4", "5", "A", "I", "1", "2"],
+ months: ["Januari", "Februari", "Machi", "Aprili", "Mei", "Juni", "Julai", "Agosti", "Septemba", "Oktoba", "Novemba", "Desemba"],
+ monthsShort: ["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des"],
+ today: "Leo"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js
new file mode 100644
index 0000000..562b063
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js
@@ -0,0 +1,14 @@
+/**
+ * Thai translation for bootstrap-datepicker
+ * Suchau Jiraprapot <seroz24@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['th'] = {
+ days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"],
+ daysShort: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
+ daysMin: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
+ months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"],
+ monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."],
+ today: "วันนี้"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js
new file mode 100644
index 0000000..5b312fb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js
@@ -0,0 +1,18 @@
+/**
+ * Turkish translation for bootstrap-datepicker
+ * Serkan Algur <kaisercrazy_2@hotmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['tr'] = {
+ days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"],
+ daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts", "Pz"],
+ daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct", "Pz"],
+ months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
+ monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"],
+ today: "Bugün",
+ clear: "Temizle",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}(jQuery));
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.uk.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.uk.js
new file mode 100644
index 0000000..94d1559
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.uk.js
@@ -0,0 +1,17 @@
+/**
+ * Ukrainian translation for bootstrap-datepicker
+ * Igor Polynets
+ */
+;(function($){
+ $.fn.datepicker.dates['uk'] = {
+ days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота", "Неділя"],
+ daysShort: ["Нед", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Нед"],
+ daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Нд"],
+ months: ["Cічень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"],
+ monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"],
+ today: "Сьогодні",
+ clear: "Очистити",
+ format: "dd.mm.yyyy",
+ weekStart: 1
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.vi.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.vi.js
new file mode 100644
index 0000000..a8cc52e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.vi.js
@@ -0,0 +1,16 @@
+/**
+ * Vietnamese translation for bootstrap-datepicker
+ * An Vo <https://github.com/anvoz/>
+ */
+;(function($){
+ $.fn.datepicker.dates['vi'] = {
+ days: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy", "Chủ nhật"],
+ daysShort: ["CN", "Thứ 2", "Thứ 3", "Thứ 4", "Thứ 5", "Thứ 6", "Thứ 7", "CN"],
+ daysMin: ["CN", "T2", "T3", "T4", "T5", "T6", "T7", "CN"],
+ months: ["Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"],
+ monthsShort: ["Th1", "Th2", "Th3", "Th4", "Th5", "Th6", "Th7", "Th8", "Th9", "Th10", "Th11", "Th12"],
+ today: "Hôm nay",
+ clear: "Xóa",
+ format: "dd/mm/yyyy"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js
new file mode 100644
index 0000000..984aa93
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js
@@ -0,0 +1,17 @@
+/**
+ * Simplified Chinese translation for bootstrap-datepicker
+ * Yuan Cheung <advanimal@gmail.com>
+ */
+;(function($){
+ $.fn.datepicker.dates['zh-CN'] = {
+ days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
+ daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
+ daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
+ months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
+ monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
+ today: "今日",
+ format: "yyyy年mm月dd日",
+ weekStart: 1,
+ clear: "清空"
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js
new file mode 100644
index 0000000..53337ae
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js
@@ -0,0 +1,17 @@
+/**
+ * Traditional Chinese translation for bootstrap-datepicker
+ * Rung-Sheng Jang <daniel@i-trend.co.cc>
+ * FrankWu <frankwu100@gmail.com> Fix more appropriate use of Traditional Chinese habit
+ */
+;(function($){
+ $.fn.datepicker.dates['zh-TW'] = {
+ days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
+ daysShort: ["週日", "週一", "週二", "週三", "週四", "週五", "週六", "週日"],
+ daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
+ months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
+ monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
+ today: "今天",
+ format: "yyyy年mm月dd日",
+ weekStart: 1
+ };
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/less/datepicker.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/less/datepicker.less
new file mode 100644
index 0000000..fbceca1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/less/datepicker.less
@@ -0,0 +1,239 @@
+.datepicker {
+ padding: 4px;
+ .border-radius(4px);
+ &-inline {
+ width: 220px;
+ }
+ direction: ltr;
+ &&-rtl {
+ direction: rtl;
+ table tr td span {
+ float: right;
+ }
+ }
+ &-dropdown {
+ top: 0;
+ left: 0;
+ &:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-top: 0;
+ border-bottom-color: rgba(0,0,0,.2);
+ position: absolute;
+ }
+ &:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid @white;
+ border-top: 0;
+ position: absolute;
+ }
+ &.datepicker-orient-left:before { left: 6px; }
+ &.datepicker-orient-left:after { left: 7px; }
+ &.datepicker-orient-right:before { right: 6px; }
+ &.datepicker-orient-right:after { right: 7px; }
+ &.datepicker-orient-top:before { top: -7px; }
+ &.datepicker-orient-top:after { top: -6px; }
+ &.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #999;
+ }
+ &.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid @white;
+ }
+ }
+ > div {
+ display: none;
+ }
+ &.days .datepicker-days,
+ &.months .datepicker-months,
+ &.years .datepicker-years {
+ display: block;
+ }
+ table {
+ margin: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ }
+ td, th {
+ text-align: center;
+ width: 20px;
+ height: 20px;
+ .border-radius(4px);
+
+ border: none;
+ }
+ // Inline display inside a table presents some problems with
+ // border and background colors.
+ .table-striped & table tr {
+ td, th {
+ background-color:transparent;
+ }
+ }
+ table tr td {
+ &.day:hover, &.day.focused {
+ background: @grayLighter;
+ cursor: pointer;
+ }
+ &.old,
+ &.new {
+ color: @grayLight;
+ }
+ &.disabled,
+ &.disabled:hover {
+ background: none;
+ color: @grayLight;
+ cursor: default;
+ }
+ &.today,
+ &.today:hover,
+ &.today.disabled,
+ &.today.disabled:hover {
+ @todayBackground: lighten(@orange, 30%);
+ .buttonBackground(@todayBackground, spin(@todayBackground, 20));
+ color: #000;
+ }
+ &.today:hover:hover { // Thank bootstrap 2.0 for this selector...
+ // TODO: Bump min BS to 2.1, use @textColor in buttonBackground above
+ color: #000;
+ }
+ &.today.active:hover {
+ color: #fff;
+ }
+ &.range,
+ &.range:hover,
+ &.range.disabled,
+ &.range.disabled:hover {
+ background:@grayLighter;
+ .border-radius(0);
+ }
+ &.range.today,
+ &.range.today:hover,
+ &.range.today.disabled,
+ &.range.today.disabled:hover {
+ @todayBackground: mix(@orange, @grayLighter, 50%);
+ .buttonBackground(@todayBackground, spin(@todayBackground, 20));
+ .border-radius(0);
+ }
+ &.selected,
+ &.selected:hover,
+ &.selected.disabled,
+ &.selected.disabled:hover {
+ .buttonBackground(lighten(@grayLight, 10), darken(@grayLight, 10));
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+ }
+ &.active,
+ &.active:hover,
+ &.active.disabled,
+ &.active.disabled:hover {
+ .buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20));
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+ }
+ span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ .border-radius(4px);
+ &:hover {
+ background: @grayLighter;
+ }
+ &.disabled,
+ &.disabled:hover {
+ background:none;
+ color: @grayLight;
+ cursor: default;
+ }
+ &.active,
+ &.active:hover,
+ &.active.disabled,
+ &.active.disabled:hover {
+ .buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20));
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+ }
+ &.old,
+ &.new {
+ color: @grayLight;
+ }
+ }
+ }
+
+ .datepicker-switch {
+ width: 145px;
+ }
+
+ thead tr:first-child th,
+ tfoot tr th {
+ cursor: pointer;
+ &:hover {
+ background: @grayLighter;
+ }
+ }
+
+ // Basic styling for calendar-week cells
+ .cw {
+ font-size: 10px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+ }
+ thead tr:first-child .cw {
+ cursor: default;
+ background-color: transparent;
+ }
+}
+.input-append,
+.input-prepend {
+ &.date .add-on {
+ cursor: pointer;
+
+ i {
+ margin-top: 3px;
+ }
+ }
+}
+.input-daterange {
+ input {
+ text-align:center;
+ }
+ input:first-child {
+ .border-radius(3px 0 0 3px);
+ }
+ input:last-child {
+ .border-radius(0 3px 3px 0);
+ }
+ .add-on {
+ display: inline-block;
+ width: auto;
+ min-width: 16px;
+ height: @baseLineHeight;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: @baseLineHeight;
+ text-align: center;
+ text-shadow: 0 1px 0 @white;
+ vertical-align: middle;
+ background-color: @grayLighter;
+ border: 1px solid #ccc;
+ margin-left:-5px;
+ margin-right:-5px;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/less/datepicker3.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/less/datepicker3.less
new file mode 100644
index 0000000..0e4f0b1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/less/datepicker3.less
@@ -0,0 +1,230 @@
+.datepicker {
+ padding: 4px;
+ border-radius: 4px;
+ &-inline {
+ width: 220px;
+ }
+ direction: ltr;
+ &&-rtl {
+ direction: rtl;
+ table tr td span {
+ float: right;
+ }
+ }
+ &-dropdown {
+ top: 0;
+ left: 0;
+ &:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-top: 0;
+ border-bottom-color: rgba(0,0,0,.2);
+ position: absolute;
+ }
+ &:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-top: 0;
+ position: absolute;
+ }
+ &.datepicker-orient-left:before { left: 6px; }
+ &.datepicker-orient-left:after { left: 7px; }
+ &.datepicker-orient-right:before { right: 6px; }
+ &.datepicker-orient-right:after { right: 7px; }
+ &.datepicker-orient-top:before { top: -7px; }
+ &.datepicker-orient-top:after { top: -6px; }
+ &.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #999;
+ }
+ &.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #fff;
+ }
+ }
+ > div {
+ display: none;
+ }
+ &.days .datepicker-days,
+ &.months .datepicker-months,
+ &.years .datepicker-years {
+ display: block;
+ }
+ table {
+ margin: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ tr {
+ td, th {
+ text-align: center;
+ width: 30px;
+ height: 30px;
+ border-radius: 4px;
+
+ border: none;
+ }
+ }
+ }
+ // Inline display inside a table presents some problems with
+ // border and background colors.
+ .table-striped & table tr {
+ td, th {
+ background-color:transparent;
+ }
+ }
+ table tr td {
+ &.day:hover, &.day.focused {
+ background: @gray-lighter;
+ cursor: pointer;
+ }
+ &.old,
+ &.new {
+ color: @btn-link-disabled-color;
+ }
+ &.disabled,
+ &.disabled:hover {
+ background: none;
+ color: @btn-link-disabled-color;
+ cursor: default;
+ }
+ &.today,
+ &.today:hover,
+ &.today.disabled,
+ &.today.disabled:hover {
+ @today-bg: lighten(orange, 30%);
+ .button-variant(#000, @today-bg, darken(@today-bg, 20%));
+ }
+ &.today:hover:hover { // Thank bootstrap 2.0 for this selector...
+ // TODO: Bump min BS to 2.1, use @textColor in buttonBackground above
+ color: #000;
+ }
+ &.today.active:hover {
+ color: #fff;
+ }
+ &.range,
+ &.range:hover,
+ &.range.disabled,
+ &.range.disabled:hover {
+ background:@gray-lighter;
+ border-radius: 0;
+ }
+ &.range.today,
+ &.range.today:hover,
+ &.range.today.disabled,
+ &.range.today.disabled:hover {
+ @today-bg: mix(orange, @gray-lighter, 50%);
+ .button-variant(#000, @today-bg, darken(@today-bg, 20%));
+ border-radius: 0;
+ }
+ &.selected,
+ &.selected:hover,
+ &.selected.disabled,
+ &.selected.disabled:hover {
+ .button-variant(#fff, @gray-light, @gray);
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+ }
+ &.active,
+ &.active:hover,
+ &.active.disabled,
+ &.active.disabled:hover {
+ .button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border);
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+ }
+ span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ border-radius: 4px;
+ &:hover {
+ background: @gray-lighter;
+ }
+ &.disabled,
+ &.disabled:hover {
+ background: none;
+ color: @btn-link-disabled-color;
+ cursor: default;
+ }
+ &.active,
+ &.active:hover,
+ &.active.disabled,
+ &.active.disabled:hover {
+ .button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border);
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+ }
+ &.old,
+ &.new {
+ color: @btn-link-disabled-color;
+ }
+ }
+ }
+
+ .datepicker-switch {
+ width: 145px;
+ }
+
+ thead tr:first-child th,
+ tfoot tr th {
+ cursor: pointer;
+ &:hover {
+ background: @gray-lighter;
+ }
+ }
+
+ // Basic styling for calendar-week cells
+ .cw {
+ font-size: 10px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+ }
+ thead tr:first-child .cw {
+ cursor: default;
+ background-color: transparent;
+ }
+}
+.input-group.date .input-group-addon {
+ cursor: pointer;
+}
+.input-daterange {
+ width: 100%;
+ input {
+ text-align:center;
+ }
+ input:first-child {
+ border-radius: 3px 0 0 3px;
+ }
+ input:last-child {
+ border-radius: 0 3px 3px 0;
+ }
+ .input-group-addon {
+ width: auto;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: @line-height-base;
+ text-align: center;
+ text-shadow: 0 1px 0 #fff;
+ vertical-align: middle;
+ background-color: @input-group-addon-bg;
+ border: solid @input-group-addon-border-color;
+ border-width: 1px 0;
+ margin-left:-5px;
+ margin-right:-5px;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/LICENSE b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/README.md
new file mode 100644
index 0000000..ec4f7c3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-datepicker/README.md
@@ -0,0 +1,22 @@
+# bootstrap-datepicker
+
+This is a fork of Stefan Petre's [original code](http://www.eyecon.ro/bootstrap-datepicker/);
+thanks go to him for getting this thing started!
+
+Please note that this fork is not used on Stefan's page, nor is it maintained or contributed to by him.
+
+Versions are incremented according to [semver](http://semver.org/).
+
+## Links
+
+* [Online Demo](http://eternicode.github.io/bootstrap-datepicker/)
+* [Online Docs](http://bootstrap-datepicker.readthedocs.org/) (ReadTheDocs.com)
+* [Google Group](https://groups.google.com/group/bootstrap-datepicker/)
+* [Travis CI ](https://travis-ci.org/eternicode/bootstrap-datepicker)
+
+## Development
+
+Once you cloned the repo, you'll need to install [grunt](http://gruntjs.com/) and the development dependencies using [npm](https://www.npmjs.com/).
+
+ npm install -g grunt-cli
+ npm install
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/bower.json
new file mode 100644
index 0000000..6143da2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/bower.json
@@ -0,0 +1,32 @@
+{
+ "name": "bootstrap-select",
+ "main": [
+ "less/bootstrap-select.less",
+ "dist/css/bootstrap-select.css",
+ "dist/js/bootstrap-select.js"
+ ],
+ "version": "1.7.2",
+ "homepage": "http://silviomoreto.github.io/bootstrap-select",
+ "authors": [
+ "silviomoreto"
+ ],
+ "keywords": [
+ "form",
+ "bootstrap",
+ "select",
+ "replacement"
+ ],
+ "dependencies": {
+ "jquery": ">=1.8"
+ },
+ "license": "MIT",
+ "ignore": [
+ ".gitignore",
+ "CONTRIBUTING.md",
+ "Gruntfile.js",
+ "README.md",
+ "composer.json",
+ "package.json",
+ "test.html"
+ ]
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.css
new file mode 100644
index 0000000..0d9751d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.css
@@ -0,0 +1,263 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+.bootstrap-select {
+ width: 220px \0;
+ /*IE9 and below*/
+}
+.bootstrap-select > .dropdown-toggle {
+ width: 100%;
+ padding-right: 25px;
+}
+.has-error .bootstrap-select .dropdown-toggle,
+.error .bootstrap-select .dropdown-toggle {
+ border-color: #b94a48;
+}
+.bootstrap-select.fit-width {
+ width: auto !important;
+}
+.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
+ width: 220px;
+}
+.bootstrap-select .dropdown-toggle:focus {
+ outline: thin dotted #333333 !important;
+ outline: 5px auto -webkit-focus-ring-color !important;
+ outline-offset: -2px;
+}
+.bootstrap-select.form-control {
+ margin-bottom: 0;
+ padding: 0;
+ border: none;
+}
+.bootstrap-select.form-control:not([class*="col-"]) {
+ width: 100%;
+}
+.bootstrap-select.form-control.input-group-btn {
+ z-index: auto;
+}
+.bootstrap-select.btn-group:not(.input-group-btn),
+.bootstrap-select.btn-group[class*="col-"] {
+ float: none;
+ display: inline-block;
+ margin-left: 0;
+}
+.bootstrap-select.btn-group.dropdown-menu-right,
+.bootstrap-select.btn-group[class*="col-"].dropdown-menu-right,
+.row .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right {
+ float: right;
+}
+.form-inline .bootstrap-select.btn-group,
+.form-horizontal .bootstrap-select.btn-group,
+.form-group .bootstrap-select.btn-group {
+ margin-bottom: 0;
+}
+.form-group-lg .bootstrap-select.btn-group.form-control,
+.form-group-sm .bootstrap-select.btn-group.form-control {
+ padding: 0;
+}
+.form-inline .bootstrap-select.btn-group .form-control {
+ width: 100%;
+}
+.bootstrap-select.btn-group.disabled,
+.bootstrap-select.btn-group > .disabled {
+ cursor: not-allowed;
+}
+.bootstrap-select.btn-group.disabled:focus,
+.bootstrap-select.btn-group > .disabled:focus {
+ outline: none !important;
+}
+.bootstrap-select.btn-group .dropdown-toggle .filter-option {
+ display: inline-block;
+ overflow: hidden;
+ width: 100%;
+ text-align: left;
+}
+.bootstrap-select.btn-group .dropdown-toggle .caret {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ margin-top: -2px;
+ vertical-align: middle;
+}
+.bootstrap-select.btn-group[class*="col-"] .dropdown-toggle {
+ width: 100%;
+}
+.bootstrap-select.btn-group .dropdown-menu {
+ min-width: 100%;
+ z-index: 1035;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bootstrap-select.btn-group .dropdown-menu.inner {
+ position: static;
+ float: none;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.bootstrap-select.btn-group .dropdown-menu li {
+ position: relative;
+}
+.bootstrap-select.btn-group .dropdown-menu li.active small {
+ color: #fff;
+}
+.bootstrap-select.btn-group .dropdown-menu li.disabled a {
+ cursor: not-allowed;
+}
+.bootstrap-select.btn-group .dropdown-menu li a {
+ cursor: pointer;
+}
+.bootstrap-select.btn-group .dropdown-menu li a.opt {
+ position: relative;
+ padding-left: 2.25em;
+}
+.bootstrap-select.btn-group .dropdown-menu li a span.check-mark {
+ display: none;
+}
+.bootstrap-select.btn-group .dropdown-menu li a span.text {
+ display: inline-block;
+}
+.bootstrap-select.btn-group .dropdown-menu li small {
+ padding-left: 0.5em;
+}
+.bootstrap-select.btn-group .dropdown-menu .notify {
+ position: absolute;
+ bottom: 5px;
+ width: 96%;
+ margin: 0 2%;
+ min-height: 26px;
+ padding: 3px 5px;
+ background: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ pointer-events: none;
+ opacity: 0.9;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bootstrap-select.btn-group .no-results {
+ padding: 3px;
+ background: #f5f5f5;
+ margin: 0 5px;
+ white-space: nowrap;
+}
+.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {
+ position: static;
+}
+.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {
+ position: static;
+ top: auto;
+ margin-top: -1px;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {
+ position: absolute;
+ display: inline-block;
+ right: 15px;
+ margin-top: 5px;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {
+ margin-right: 34px;
+}
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle {
+ z-index: 1036;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:before {
+ content: '';
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid rgba(204, 204, 204, 0.2);
+ position: absolute;
+ bottom: -4px;
+ left: 9px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:after {
+ content: '';
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid white;
+ position: absolute;
+ bottom: -4px;
+ left: 10px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {
+ bottom: auto;
+ top: -3px;
+ border-top: 7px solid rgba(204, 204, 204, 0.2);
+ border-bottom: 0;
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {
+ bottom: auto;
+ top: -3px;
+ border-top: 6px solid white;
+ border-bottom: 0;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {
+ right: 12px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {
+ right: 13px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {
+ display: block;
+}
+.bs-searchbox,
+.bs-actionsbox,
+.bs-donebutton {
+ padding: 4px 8px;
+}
+.bs-actionsbox {
+ float: left;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bs-actionsbox .btn-group button {
+ width: 50%;
+}
+.bs-donebutton {
+ float: left;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bs-donebutton .btn-group button {
+ width: 100%;
+}
+.bs-searchbox + .bs-actionsbox {
+ padding: 0 8px 4px;
+}
+.bs-searchbox .form-control {
+ margin-bottom: 0;
+ width: 100%;
+}
+select.bs-select-hidden,
+select.selectpicker {
+ display: none !important;
+}
+select.mobile-device {
+ position: absolute !important;
+ top: 0;
+ left: 0;
+ display: block !important;
+ width: 100%;
+ height: 100% !important;
+ opacity: 0;
+}
+/*# sourceMappingURL=bootstrap-select.css.map */
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.css.map
new file mode 100644
index 0000000..535fdf2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["less/bootstrap-select.less","bootstrap-select.css"],"names":[],"mappings":"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","file":"bootstrap-select.css","sourcesContent":["@import \"variables\";\n\n// Mixins\n.cursor-disabled() {\n cursor: not-allowed;\n}\n\n// Rules\n.bootstrap-select {\n width: 220px \\0; /*IE9 and below*/\n\n // The selectpicker button\n > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n }\n\n // Error display\n .has-error & .dropdown-toggle,\n .error & .dropdown-toggle {\n border-color: @color-red-error;\n }\n\n &.fit-width {\n width: auto !important;\n }\n\n &:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: @width-default;\n }\n\n .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n }\n}\n\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n\n &:not([class*=\"col-\"]) {\n width: 100%;\n }\n\n &.input-group-btn {\n z-index: auto;\n }\n}\n\n// The selectpicker components\n.bootstrap-select.btn-group {\n &:not(.input-group-btn),\n &[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n }\n\n // Forces the pull to the right, if necessary\n &,\n &[class*=\"col-\"],\n .row &[class*=\"col-\"] {\n &.dropdown-menu-right {\n float: right;\n }\n }\n\n .form-inline &,\n .form-horizontal &,\n .form-group & {\n margin-bottom: 0;\n }\n\n .form-group-lg &.form-control,\n .form-group-sm &.form-control {\n padding: 0;\n }\n\n // Set the width of the live search (and any other form control within an inline form)\n // see https://github.com/silviomoreto/bootstrap-select/issues/685\n .form-inline & .form-control {\n width: 100%;\n }\n\n &.disabled,\n > .disabled {\n .cursor-disabled();\n\n &:focus {\n outline: none !important;\n }\n }\n\n // The selectpicker button\n .dropdown-toggle {\n .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n }\n\n .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n }\n }\n\n &[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n }\n\n // The selectpicker dropdown\n .dropdown-menu {\n min-width: 100%;\n z-index: @zindex-select-dropdown;\n box-sizing: border-box;\n\n &.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n }\n\n li {\n position: relative;\n\n &.active small {\n color: #fff;\n }\n\n &.disabled a {\n .cursor-disabled();\n }\n\n a {\n cursor: pointer;\n\n &.opt {\n position: relative;\n padding-left: 2.25em;\n }\n\n span.check-mark {\n display: none;\n }\n\n span.text {\n display: inline-block;\n }\n }\n\n small {\n padding-left: 0.5em;\n }\n }\n\n .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: rgb(245, 245, 245);\n border: 1px solid rgb(227, 227, 227);\n box-shadow: inset 0 1px 1px fade(rgb(0, 0, 0), 5%);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n }\n }\n\n .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n }\n\n &.fit-width .dropdown-toggle {\n .filter-option {\n position: static;\n }\n\n .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n }\n }\n\n &.show-tick .dropdown-menu li {\n &.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n }\n\n a span.text {\n margin-right: 34px;\n }\n }\n}\n\n.bootstrap-select.show-menu-arrow {\n &.open > .dropdown-toggle {\n z-index: (@zindex-select-dropdown + 1);\n }\n\n .dropdown-toggle {\n &:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid @color-grey-arrow;\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n }\n\n &:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n }\n }\n\n &.dropup .dropdown-toggle {\n &:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid @color-grey-arrow;\n border-bottom: 0;\n }\n\n &:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n }\n }\n\n &.pull-right .dropdown-toggle {\n &:before {\n right: 12px;\n left: auto;\n }\n\n &:after {\n right: 13px;\n left: auto;\n }\n }\n\n &.open > .dropdown-toggle {\n &:before,\n &:after {\n display: block;\n }\n }\n}\n\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n\n.bs-actionsbox {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 50%;\n }\n}\n\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 100%;\n }\n}\n\n.bs-searchbox {\n & + .bs-actionsbox {\n padding: 0 8px 4px;\n }\n\n & .form-control {\n margin-bottom: 0;\n width: 100%;\n }\n}\n\nselect.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\n\nselect.mobile-device {\n position: absolute !important;\n top: 0;\n left: 0;\n display: block !important;\n width: 100%;\n height: 100% !important;\n opacity: 0;\n}\n",".bootstrap-select {\n width: 220px \\0;\n /*IE9 and below*/\n}\n.bootstrap-select > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n}\n.has-error .bootstrap-select .dropdown-toggle,\n.error .bootstrap-select .dropdown-toggle {\n border-color: #b94a48;\n}\n.bootstrap-select.fit-width {\n width: auto !important;\n}\n.bootstrap-select:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: 220px;\n}\n.bootstrap-select .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n}\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n}\n.bootstrap-select.form-control:not([class*=\"col-\"]) {\n width: 100%;\n}\n.bootstrap-select.form-control.input-group-btn {\n z-index: auto;\n}\n.bootstrap-select.btn-group:not(.input-group-btn),\n.bootstrap-select.btn-group[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n}\n.bootstrap-select.btn-group.dropdown-menu-right,\n.bootstrap-select.btn-group[class*=\"col-\"].dropdown-menu-right,\n.row .bootstrap-select.btn-group[class*=\"col-\"].dropdown-menu-right {\n float: right;\n}\n.form-inline .bootstrap-select.btn-group,\n.form-horizontal .bootstrap-select.btn-group,\n.form-group .bootstrap-select.btn-group {\n margin-bottom: 0;\n}\n.form-group-lg .bootstrap-select.btn-group.form-control,\n.form-group-sm .bootstrap-select.btn-group.form-control {\n padding: 0;\n}\n.form-inline .bootstrap-select.btn-group .form-control {\n width: 100%;\n}\n.bootstrap-select.btn-group.disabled,\n.bootstrap-select.btn-group > .disabled {\n cursor: not-allowed;\n}\n.bootstrap-select.btn-group.disabled:focus,\n.bootstrap-select.btn-group > .disabled:focus {\n outline: none !important;\n}\n.bootstrap-select.btn-group .dropdown-toggle .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n}\n.bootstrap-select.btn-group .dropdown-toggle .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n}\n.bootstrap-select.btn-group[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n}\n.bootstrap-select.btn-group .dropdown-menu {\n min-width: 100%;\n z-index: 1035;\n box-sizing: border-box;\n}\n.bootstrap-select.btn-group .dropdown-menu.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n.bootstrap-select.btn-group .dropdown-menu li {\n position: relative;\n}\n.bootstrap-select.btn-group .dropdown-menu li.active small {\n color: #fff;\n}\n.bootstrap-select.btn-group .dropdown-menu li.disabled a {\n cursor: not-allowed;\n}\n.bootstrap-select.btn-group .dropdown-menu li a {\n cursor: pointer;\n}\n.bootstrap-select.btn-group .dropdown-menu li a.opt {\n position: relative;\n padding-left: 2.25em;\n}\n.bootstrap-select.btn-group .dropdown-menu li a span.check-mark {\n display: none;\n}\n.bootstrap-select.btn-group .dropdown-menu li a span.text {\n display: inline-block;\n}\n.bootstrap-select.btn-group .dropdown-menu li small {\n padding-left: 0.5em;\n}\n.bootstrap-select.btn-group .dropdown-menu .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: #f5f5f5;\n border: 1px solid #e3e3e3;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n}\n.bootstrap-select.btn-group .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n}\n.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {\n position: static;\n}\n.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n}\n.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n}\n.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {\n margin-right: 34px;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle {\n z-index: 1036;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid rgba(204, 204, 204, 0.2);\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid rgba(204, 204, 204, 0.2);\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {\n right: 12px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {\n right: 13px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {\n display: block;\n}\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n.bs-actionsbox {\n float: left;\n width: 100%;\n box-sizing: border-box;\n}\n.bs-actionsbox .btn-group button {\n width: 50%;\n}\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n}\n.bs-donebutton .btn-group button {\n width: 100%;\n}\n.bs-searchbox + .bs-actionsbox {\n padding: 0 8px 4px;\n}\n.bs-searchbox .form-control {\n margin-bottom: 0;\n width: 100%;\n}\nselect.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\nselect.mobile-device {\n position: absolute !important;\n top: 0;\n left: 0;\n display: block !important;\n width: 100%;\n height: 100% !important;\n opacity: 0;\n}\n/*# sourceMappingURL=bootstrap-select.css.map */"]}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.min.css
new file mode 100644
index 0000000..39a2384
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/css/bootstrap-select.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */.bootstrap-select{width:220px \0}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1036}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%}select.bs-select-hidden,select.selectpicker{display:none!important}select.mobile-device{position:absolute!important;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.js
new file mode 100644
index 0000000..a48619e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.js
@@ -0,0 +1,1650 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ 'use strict';
+
+ //<editor-fold desc="Shims">
+ if (!String.prototype.includes) {
+ (function () {
+ 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+ var toString = {}.toString;
+ var defineProperty = (function () {
+ // IE 8 only supports `Object.defineProperty` on DOM elements
+ try {
+ var object = {};
+ var $defineProperty = Object.defineProperty;
+ var result = $defineProperty(object, object, object) && $defineProperty;
+ } catch (error) {
+ }
+ return result;
+ }());
+ var indexOf = ''.indexOf;
+ var includes = function (search) {
+ if (this == null) {
+ throw TypeError();
+ }
+ var string = String(this);
+ if (search && toString.call(search) == '[object RegExp]') {
+ throw TypeError();
+ }
+ var stringLength = string.length;
+ var searchString = String(search);
+ var searchLength = searchString.length;
+ var position = arguments.length > 1 ? arguments[1] : undefined;
+ // `ToInteger`
+ var pos = position ? Number(position) : 0;
+ if (pos != pos) { // better `isNaN`
+ pos = 0;
+ }
+ var start = Math.min(Math.max(pos, 0), stringLength);
+ // Avoid the `indexOf` call if no match is possible
+ if (searchLength + start > stringLength) {
+ return false;
+ }
+ return indexOf.call(string, searchString, pos) != -1;
+ };
+ if (defineProperty) {
+ defineProperty(String.prototype, 'includes', {
+ 'value': includes,
+ 'configurable': true,
+ 'writable': true
+ });
+ } else {
+ String.prototype.includes = includes;
+ }
+ }());
+ }
+
+ if (!String.prototype.startsWith) {
+ (function () {
+ 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+ var defineProperty = (function () {
+ // IE 8 only supports `Object.defineProperty` on DOM elements
+ try {
+ var object = {};
+ var $defineProperty = Object.defineProperty;
+ var result = $defineProperty(object, object, object) && $defineProperty;
+ } catch (error) {
+ }
+ return result;
+ }());
+ var toString = {}.toString;
+ var startsWith = function (search) {
+ if (this == null) {
+ throw TypeError();
+ }
+ var string = String(this);
+ if (search && toString.call(search) == '[object RegExp]') {
+ throw TypeError();
+ }
+ var stringLength = string.length;
+ var searchString = String(search);
+ var searchLength = searchString.length;
+ var position = arguments.length > 1 ? arguments[1] : undefined;
+ // `ToInteger`
+ var pos = position ? Number(position) : 0;
+ if (pos != pos) { // better `isNaN`
+ pos = 0;
+ }
+ var start = Math.min(Math.max(pos, 0), stringLength);
+ // Avoid the `indexOf` call if no match is possible
+ if (searchLength + start > stringLength) {
+ return false;
+ }
+ var index = -1;
+ while (++index < searchLength) {
+ if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {
+ return false;
+ }
+ }
+ return true;
+ };
+ if (defineProperty) {
+ defineProperty(String.prototype, 'startsWith', {
+ 'value': startsWith,
+ 'configurable': true,
+ 'writable': true
+ });
+ } else {
+ String.prototype.startsWith = startsWith;
+ }
+ }());
+ }
+
+ if (!Object.keys) {
+ Object.keys = function (
+ o, // object
+ k, // key
+ r // result array
+ ){
+ // initialize object and result
+ r=[];
+ // iterate over object keys
+ for (k in o)
+ // fill result array with non-prototypical keys
+ r.hasOwnProperty.call(o, k) && r.push(k);
+ // return result
+ return r
+ };
+ }
+
+ $.fn.triggerNative = function (eventName) {
+ var el = this[0],
+ event;
+
+ if (el.dispatchEvent) {
+ if (typeof Event === 'function') {
+ // For modern browsers
+ event = new Event(eventName, {
+ bubbles: true
+ });
+ } else {
+ // For IE since it doesn't support Event constructor
+ event = document.createEvent('Event');
+ event.initEvent(eventName, true, false);
+ }
+
+ el.dispatchEvent(event);
+ } else {
+ if (el.fireEvent) {
+ event = document.createEventObject();
+ event.eventType = eventName;
+ el.fireEvent('on' + eventName, event);
+ }
+
+ this.trigger(eventName);
+ }
+ };
+ //</editor-fold>
+
+ // Case insensitive contains search
+ $.expr[':'].icontains = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
+ return haystack.includes(meta[3].toUpperCase());
+ };
+
+ // Case insensitive begins search
+ $.expr[':'].ibegins = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
+ return haystack.startsWith(meta[3].toUpperCase());
+ };
+
+ // Case and accent insensitive contains search
+ $.expr[':'].aicontains = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
+ return haystack.includes(meta[3].toUpperCase());
+ };
+
+ // Case and accent insensitive begins search
+ $.expr[':'].aibegins = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
+ return haystack.startsWith(meta[3].toUpperCase());
+ };
+
+ /**
+ * Remove all diatrics from the given text.
+ * @access private
+ * @param {String} text
+ * @returns {String}
+ */
+ function normalizeToBase(text) {
+ var rExps = [
+ {re: /[\xC0-\xC6]/g, ch: "A"},
+ {re: /[\xE0-\xE6]/g, ch: "a"},
+ {re: /[\xC8-\xCB]/g, ch: "E"},
+ {re: /[\xE8-\xEB]/g, ch: "e"},
+ {re: /[\xCC-\xCF]/g, ch: "I"},
+ {re: /[\xEC-\xEF]/g, ch: "i"},
+ {re: /[\xD2-\xD6]/g, ch: "O"},
+ {re: /[\xF2-\xF6]/g, ch: "o"},
+ {re: /[\xD9-\xDC]/g, ch: "U"},
+ {re: /[\xF9-\xFC]/g, ch: "u"},
+ {re: /[\xC7-\xE7]/g, ch: "c"},
+ {re: /[\xD1]/g, ch: "N"},
+ {re: /[\xF1]/g, ch: "n"}
+ ];
+ $.each(rExps, function () {
+ text = text.replace(this.re, this.ch);
+ });
+ return text;
+ }
+
+
+ function htmlEscape(html) {
+ var escapeMap = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ '`': '`'
+ };
+ var source = '(?:' + Object.keys(escapeMap).join('|') + ')',
+ testRegexp = new RegExp(source),
+ replaceRegexp = new RegExp(source, 'g'),
+ string = html == null ? '' : '' + html;
+ return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) {
+ return escapeMap[match];
+ }) : string;
+ }
+
+ var Selectpicker = function (element, options, e) {
+ if (e) {
+ e.stopPropagation();
+ e.preventDefault();
+ }
+
+ this.$element = $(element);
+ this.$newElement = null;
+ this.$button = null;
+ this.$menu = null;
+ this.$lis = null;
+ this.options = options;
+
+ // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a
+ // data-attribute)
+ if (this.options.title === null) {
+ this.options.title = this.$element.attr('title');
+ }
+
+ //Expose public methods
+ this.val = Selectpicker.prototype.val;
+ this.render = Selectpicker.prototype.render;
+ this.refresh = Selectpicker.prototype.refresh;
+ this.setStyle = Selectpicker.prototype.setStyle;
+ this.selectAll = Selectpicker.prototype.selectAll;
+ this.deselectAll = Selectpicker.prototype.deselectAll;
+ this.destroy = Selectpicker.prototype.remove;
+ this.remove = Selectpicker.prototype.remove;
+ this.show = Selectpicker.prototype.show;
+ this.hide = Selectpicker.prototype.hide;
+
+ this.init();
+ };
+
+ Selectpicker.VERSION = '1.7.2';
+
+ // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.
+ Selectpicker.DEFAULTS = {
+ noneSelectedText: 'Nothing selected',
+ noneResultsText: 'No results matched {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
+ (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
+ ];
+ },
+ selectAllText: 'Select All',
+ deselectAllText: 'Deselect All',
+ doneButton: false,
+ doneButtonText: 'Close',
+ multipleSeparator: ', ',
+ styleBase: 'btn',
+ style: 'btn-default',
+ size: 'auto',
+ title: null,
+ selectedTextFormat: 'values',
+ width: false,
+ container: false,
+ hideDisabled: false,
+ showSubtext: false,
+ showIcon: true,
+ showContent: true,
+ dropupAuto: true,
+ header: false,
+ liveSearch: false,
+ liveSearchPlaceholder: null,
+ liveSearchNormalize: false,
+ liveSearchStyle: 'contains',
+ actionsBox: false,
+ iconBase: 'glyphicon',
+ tickIcon: 'glyphicon-ok',
+ maxOptions: false,
+ mobile: false,
+ selectOnTab: false,
+ dropdownAlignRight: false
+ };
+
+ Selectpicker.prototype = {
+
+ constructor: Selectpicker,
+
+ init: function () {
+ var that = this,
+ id = this.$element.attr('id');
+
+ this.$element.addClass('bs-select-hidden');
+ // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility
+ // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]')
+ this.liObj = {};
+ this.multiple = this.$element.prop('multiple');
+ this.autofocus = this.$element.prop('autofocus');
+ this.$newElement = this.createView();
+ this.$element.after(this.$newElement);
+ this.$button = this.$newElement.children('button');
+ this.$menu = this.$newElement.children('.dropdown-menu');
+ this.$menuInner = this.$menu.children('.inner');
+ this.$searchbox = this.$menu.find('input');
+
+ if (this.options.dropdownAlignRight)
+ this.$menu.addClass('dropdown-menu-right');
+
+ if (typeof id !== 'undefined') {
+ this.$button.attr('data-id', id);
+ $('label[for="' + id + '"]').click(function (e) {
+ e.preventDefault();
+ that.$button.focus();
+ });
+ }
+
+ this.checkDisabled();
+ this.clickListener();
+ if (this.options.liveSearch) this.liveSearchListener();
+ this.render();
+ this.setStyle();
+ this.setWidth();
+ if (this.options.container) this.selectPosition();
+ this.$menu.data('this', this);
+ this.$newElement.data('this', this);
+ if (this.options.mobile) this.mobile();
+
+ this.$newElement.on('hide.bs.dropdown', function (e) {
+ that.$element.trigger('hide.bs.select', e);
+ });
+
+ this.$newElement.on('hidden.bs.dropdown', function (e) {
+ that.$element.trigger('hidden.bs.select', e);
+ });
+
+ this.$newElement.on('show.bs.dropdown', function (e) {
+ that.$element.trigger('show.bs.select', e);
+ });
+
+ this.$newElement.on('shown.bs.dropdown', function (e) {
+ that.$element.trigger('shown.bs.select', e);
+ });
+
+ setTimeout(function () {
+ that.$element.trigger('loaded.bs.select');
+ });
+ },
+
+ createDropdown: function () {
+ // Options
+ // If we are multiple, then add the show-tick class by default
+ var multiple = this.multiple ? ' show-tick' : '',
+ inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',
+ autofocus = this.autofocus ? ' autofocus' : '';
+ // Elements
+ var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>' + this.options.header + '</div>' : '';
+ var searchbox = this.options.liveSearch ?
+ '<div class="bs-searchbox">' +
+ '<input type="text" class="form-control" autocomplete="off"' +
+ (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>' +
+ '</div>'
+ : '';
+ var actionsbox = this.multiple && this.options.actionsBox ?
+ '<div class="bs-actionsbox">' +
+ '<div class="btn-group btn-group-sm btn-block">' +
+ '<button type="button" class="actions-btn bs-select-all btn btn-default">' +
+ this.options.selectAllText +
+ '</button>' +
+ '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' +
+ this.options.deselectAllText +
+ '</button>' +
+ '</div>' +
+ '</div>'
+ : '';
+ var donebutton = this.multiple && this.options.doneButton ?
+ '<div class="bs-donebutton">' +
+ '<div class="btn-group btn-block">' +
+ '<button type="button" class="btn btn-sm btn-default">' +
+ this.options.doneButtonText +
+ '</button>' +
+ '</div>' +
+ '</div>'
+ : '';
+ var drop =
+ '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' +
+ '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' +
+ '<span class="filter-option pull-left"></span> ' +
+ '<span class="caret"></span>' +
+ '</button>' +
+ '<div class="dropdown-menu open">' +
+ header +
+ searchbox +
+ actionsbox +
+ '<ul class="dropdown-menu inner" role="menu">' +
+ '</ul>' +
+ donebutton +
+ '</div>' +
+ '</div>';
+
+ return $(drop);
+ },
+
+ createView: function () {
+ var $drop = this.createDropdown(),
+ li = this.createLi();
+
+ $drop.find('ul')[0].innerHTML = li;
+ return $drop;
+ },
+
+ reloadLi: function () {
+ //Remove all children.
+ this.destroyLi();
+ //Re build
+ var li = this.createLi();
+ this.$menuInner[0].innerHTML = li;
+ },
+
+ destroyLi: function () {
+ this.$menu.find('li').remove();
+ },
+
+ createLi: function () {
+ var that = this,
+ _li = [],
+ optID = 0,
+ titleOption = document.createElement('option'),
+ liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct
+
+ // Helper functions
+ /**
+ * @param content
+ * @param [index]
+ * @param [classes]
+ * @param [optgroup]
+ * @returns {string}
+ */
+ var generateLI = function (content, index, classes, optgroup) {
+ return '<li' +
+ ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') +
+ ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') +
+ ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') +
+ '>' + content + '</li>';
+ };
+
+ /**
+ * @param text
+ * @param [classes]
+ * @param [inline]
+ * @param [tokens]
+ * @returns {string}
+ */
+ var generateA = function (text, classes, inline, tokens) {
+ return '<a tabindex="0"' +
+ (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') +
+ (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') +
+ (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') +
+ (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') +
+ '>' + text +
+ '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' +
+ '</a>';
+ };
+
+ if (this.options.title && !this.multiple) {
+ // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased
+ // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended
+ liIndex--;
+
+ if (!this.$element.find('.bs-title-option').length) {
+ // Use native JS to prepend option (faster)
+ var element = this.$element[0];
+ titleOption.className = 'bs-title-option';
+ titleOption.appendChild(document.createTextNode(this.options.title));
+ titleOption.value = '';
+ element.insertBefore(titleOption, element.firstChild);
+ // Check if selected attribute is already set on an option. If not, select the titleOption option.
+ if ($(element.options[element.selectedIndex]).attr('selected') === undefined) titleOption.selected = true;
+ }
+ }
+
+ this.$element.find('option').each(function (index) {
+ var $this = $(this);
+
+ liIndex++;
+
+ if ($this.hasClass('bs-title-option')) return;
+
+ // Get the class and text for the option
+ var optionClass = this.className || '',
+ inline = this.style.cssText,
+ text = $this.data('content') ? $this.data('content') : $this.html(),
+ tokens = $this.data('tokens') ? $this.data('tokens') : null,
+ subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '',
+ icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '',
+ isDisabled = this.disabled || (this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled);
+
+ if (icon !== '' && isDisabled) {
+ icon = '<span>' + icon + '</span>';
+ }
+
+ if (that.options.hideDisabled && isDisabled) {
+ liIndex--;
+ return;
+ }
+
+ if (!$this.data('content')) {
+ // Prepend any icon and append any subtext to the main text.
+ text = icon + '<span class="text">' + text + subtext + '</span>';
+ }
+
+ if (this.parentElement.tagName === 'OPTGROUP' && $this.data('divider') !== true) {
+ var optGroupClass = ' ' + this.parentElement.className || '';
+
+ if ($this.index() === 0) { // Is it the first option of the optgroup?
+ optID += 1;
+
+ // Get the opt group label
+ var label = this.parentElement.label,
+ labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '',
+ labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '';
+
+ label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>';
+
+ if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?
+ liIndex++;
+ _li.push(generateLI('', null, 'divider', optID + 'div'));
+ }
+ liIndex++;
+ _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));
+ }
+ _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));
+ } else if ($this.data('divider') === true) {
+ _li.push(generateLI('', index, 'divider'));
+ } else if ($this.data('hidden') === true) {
+ _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));
+ } else {
+ if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') {
+ liIndex++;
+ _li.push(generateLI('', null, 'divider', optID + 'div'));
+ }
+ _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));
+ }
+
+ that.liObj[index] = liIndex;
+ });
+
+ //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button
+ if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {
+ this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');
+ }
+
+ return _li.join('');
+ },
+
+ findLis: function () {
+ if (this.$lis == null) this.$lis = this.$menu.find('li');
+ return this.$lis;
+ },
+
+ /**
+ * @param [updateLi] defaults to true
+ */
+ render: function (updateLi) {
+ var that = this,
+ notDisabled;
+
+ //Update the LI to match the SELECT
+ if (updateLi !== false) {
+ this.$element.find('option').each(function (index) {
+ var $lis = that.findLis().eq(that.liObj[index]);
+
+ that.setDisabled(index, this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled, $lis);
+ that.setSelected(index, this.selected, $lis);
+ });
+ }
+
+ this.tabIndex();
+
+ var selectedItems = this.$element.find('option').map(function () {
+ if (this.selected) {
+ if (that.options.hideDisabled && (this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled)) return false;
+
+ var $this = $(this),
+ icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '',
+ subtext;
+
+ if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {
+ subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>';
+ } else {
+ subtext = '';
+ }
+ if (typeof $this.attr('title') !== 'undefined') {
+ return $this.attr('title');
+ } else if ($this.data('content') && that.options.showContent) {
+ return $this.data('content');
+ } else {
+ return icon + $this.html() + subtext;
+ }
+ }
+ }).toArray();
+
+ //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
+ //Convert all the values into a comma delimited string
+ var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);
+
+ //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..
+ if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {
+ var max = this.options.selectedTextFormat.split('>');
+ if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {
+ notDisabled = this.options.hideDisabled ? ', [disabled]' : '';
+ var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length,
+ tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;
+ title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());
+ }
+ }
+
+ if (this.options.title == undefined) {
+ this.options.title = this.$element.attr('title');
+ }
+
+ if (this.options.selectedTextFormat == 'static') {
+ title = this.options.title;
+ }
+
+ //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text
+ if (!title) {
+ title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;
+ }
+
+ //strip all html-tags and trim the result
+ this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, '')));
+ this.$button.children('.filter-option').html(title);
+
+ this.$element.trigger('rendered.bs.select');
+ },
+
+ /**
+ * @param [style]
+ * @param [status]
+ */
+ setStyle: function (style, status) {
+ if (this.$element.attr('class')) {
+ this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ''));
+ }
+
+ var buttonClass = style ? style : this.options.style;
+
+ if (status == 'add') {
+ this.$button.addClass(buttonClass);
+ } else if (status == 'remove') {
+ this.$button.removeClass(buttonClass);
+ } else {
+ this.$button.removeClass(this.options.style);
+ this.$button.addClass(buttonClass);
+ }
+ },
+
+ liHeight: function (refresh) {
+ if (!refresh && (this.options.size === false || this.sizeInfo)) return;
+
+ var newElement = document.createElement('div'),
+ menu = document.createElement('div'),
+ menuInner = document.createElement('ul'),
+ divider = document.createElement('li'),
+ li = document.createElement('li'),
+ a = document.createElement('a'),
+ text = document.createElement('span'),
+ header = this.options.header ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,
+ search = this.options.liveSearch ? document.createElement('div') : null,
+ actions = this.options.actionsBox && this.multiple ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,
+ doneButton = this.options.doneButton && this.multiple ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;
+
+ text.className = 'text';
+ newElement.className = this.$menu[0].parentNode.className + ' open';
+ menu.className = 'dropdown-menu open';
+ menuInner.className = 'dropdown-menu inner';
+ divider.className = 'divider';
+
+ text.appendChild(document.createTextNode('Inner text'));
+ a.appendChild(text);
+ li.appendChild(a);
+ menuInner.appendChild(li);
+ menuInner.appendChild(divider);
+ if (header) menu.appendChild(header);
+ if (search) {
+ // create a span instead of input as creating an input element is slower
+ var input = document.createElement('span');
+ search.className = 'bs-searchbox';
+ input.className = 'form-control';
+ search.appendChild(input);
+ menu.appendChild(search);
+ }
+ if (actions) menu.appendChild(actions);
+ menu.appendChild(menuInner);
+ if (doneButton) menu.appendChild(doneButton);
+ newElement.appendChild(menu);
+
+ document.body.appendChild(newElement);
+
+ var liHeight = a.offsetHeight,
+ headerHeight = header ? header.offsetHeight : 0,
+ searchHeight = search ? search.offsetHeight : 0,
+ actionsHeight = actions ? actions.offsetHeight : 0,
+ doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,
+ dividerHeight = $(divider).outerHeight(true),
+ // fall back to jQuery if getComputedStyle is not supported
+ menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false,
+ $menu = menuStyle ? null : $(menu),
+ menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +
+ parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +
+ parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +
+ parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),
+ menuExtras = menuPadding +
+ parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +
+ parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2;
+
+ document.body.removeChild(newElement);
+
+ this.sizeInfo = {
+ liHeight: liHeight,
+ headerHeight: headerHeight,
+ searchHeight: searchHeight,
+ actionsHeight: actionsHeight,
+ doneButtonHeight: doneButtonHeight,
+ dividerHeight: dividerHeight,
+ menuPadding: menuPadding,
+ menuExtras: menuExtras
+ };
+ },
+
+ setSize: function () {
+ this.findLis();
+ this.liHeight();
+
+ if (this.options.header) this.$menu.css('padding-top', 0);
+ if (this.options.size === false) return;
+
+ var that = this,
+ $menu = this.$menu,
+ $menuInner = this.$menuInner,
+ $window = $(window),
+ selectHeight = this.$newElement[0].offsetHeight,
+ liHeight = this.sizeInfo['liHeight'],
+ headerHeight = this.sizeInfo['headerHeight'],
+ searchHeight = this.sizeInfo['searchHeight'],
+ actionsHeight = this.sizeInfo['actionsHeight'],
+ doneButtonHeight = this.sizeInfo['doneButtonHeight'],
+ divHeight = this.sizeInfo['dividerHeight'],
+ menuPadding = this.sizeInfo['menuPadding'],
+ menuExtras = this.sizeInfo['menuExtras'],
+ notDisabled = this.options.hideDisabled ? '.disabled' : '',
+ menuHeight,
+ getHeight,
+ selectOffsetTop,
+ selectOffsetBot,
+ posVert = function () {
+ selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();
+ selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;
+ };
+
+ posVert();
+
+ if (this.options.size === 'auto') {
+ var getSize = function () {
+ var minHeight,
+ hasClass = function (className, include) {
+ return function (element) {
+ if (include) {
+ return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));
+ } else {
+ return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));
+ }
+ };
+ },
+ lis = that.$menuInner[0].getElementsByTagName('li'),
+ lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),
+ optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');
+
+ posVert();
+ menuHeight = selectOffsetBot - menuExtras;
+
+ if (that.options.container) {
+ if (!$menu.data('height')) $menu.data('height', $menu.height());
+ getHeight = $menu.data('height');
+ } else {
+ getHeight = $menu.height();
+ }
+
+ if (that.options.dropupAuto) {
+ that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
+ }
+ if (that.$newElement.hasClass('dropup')) {
+ menuHeight = selectOffsetTop - menuExtras;
+ }
+
+ if ((lisVisible.length + optGroup.length) > 3) {
+ minHeight = liHeight * 3 + menuExtras - 2;
+ } else {
+ minHeight = 0;
+ }
+
+ $menu.css({
+ 'max-height': menuHeight + 'px',
+ 'overflow': 'hidden',
+ 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'
+ });
+ $menuInner.css({
+ 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px',
+ 'overflow-y': 'auto',
+ 'min-height': Math.max(minHeight - menuPadding, 0) + 'px'
+ });
+ };
+ getSize();
+ this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);
+ $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);
+ } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {
+ var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),
+ divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;
+ menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding;
+
+ if (that.options.container) {
+ if (!$menu.data('height')) $menu.data('height', $menu.height());
+ getHeight = $menu.data('height');
+ } else {
+ getHeight = $menu.height();
+ }
+
+ if (that.options.dropupAuto) {
+ //noinspection JSUnusedAssignment
+ this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
+ }
+ $menu.css({
+ 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',
+ 'overflow': 'hidden',
+ 'min-height': ''
+ });
+ $menuInner.css({
+ 'max-height': menuHeight - menuPadding + 'px',
+ 'overflow-y': 'auto',
+ 'min-height': ''
+ });
+ }
+ },
+
+ setWidth: function () {
+ if (this.options.width === 'auto') {
+ this.$menu.css('min-width', '0');
+
+ // Get correct width if element is hidden
+ var $selectClone = this.$menu.parent().clone().appendTo('body'),
+ $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,
+ ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),
+ btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();
+
+ $selectClone.remove();
+ $selectClone2.remove();
+
+ // Set width to whatever's larger, button title or longest option
+ this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');
+ } else if (this.options.width === 'fit') {
+ // Remove inline min-width so width can be changed from 'auto'
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', '').addClass('fit-width');
+ } else if (this.options.width) {
+ // Remove inline min-width so width can be changed from 'auto'
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', this.options.width);
+ } else {
+ // Remove inline min-width/width so width can be changed
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', '');
+ }
+ // Remove fit-width class if width is changed programmatically
+ if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
+ this.$newElement.removeClass('fit-width');
+ }
+ },
+
+ selectPosition: function () {
+ var that = this,
+ drop = '<div />',
+ $drop = $(drop),
+ pos,
+ actualHeight,
+ getPlacement = function ($element) {
+ $drop.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));
+ pos = $element.offset();
+ actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;
+ $drop.css({
+ 'top': pos.top + actualHeight,
+ 'left': pos.left,
+ 'width': $element[0].offsetWidth,
+ 'position': 'absolute'
+ });
+ };
+
+ this.$newElement.on('click', function () {
+ if (that.isDisabled()) {
+ return;
+ }
+ getPlacement($(this));
+ $drop.appendTo(that.options.container);
+ $drop.toggleClass('open', !$(this).hasClass('open'));
+ $drop.append(that.$menu);
+ });
+
+ $(window).on('resize scroll', function () {
+ getPlacement(that.$newElement);
+ });
+
+ this.$element.on('hide.bs.select', function () {
+ that.$menu.data('height', that.$menu.height());
+ $drop.detach();
+ });
+ },
+
+ setSelected: function (index, selected, $lis) {
+ if (!$lis) {
+ var $lis = this.findLis().eq(this.liObj[index]);
+ }
+
+ $lis.toggleClass('selected', selected);
+ },
+
+ setDisabled: function (index, disabled, $lis) {
+ if (!$lis) {
+ var $lis = this.findLis().eq(this.liObj[index]);
+ }
+
+ if (disabled) {
+ $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1);
+ } else {
+ $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0);
+ }
+ },
+
+ isDisabled: function () {
+ return this.$element[0].disabled;
+ },
+
+ checkDisabled: function () {
+ var that = this;
+
+ if (this.isDisabled()) {
+ this.$newElement.addClass('disabled');
+ this.$button.addClass('disabled').attr('tabindex', -1);
+ } else {
+ if (this.$button.hasClass('disabled')) {
+ this.$newElement.removeClass('disabled');
+ this.$button.removeClass('disabled');
+ }
+
+ if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {
+ this.$button.removeAttr('tabindex');
+ }
+ }
+
+ this.$button.click(function () {
+ return !that.isDisabled();
+ });
+ },
+
+ tabIndex: function () {
+ if (this.$element.is('[tabindex]')) {
+ this.$element.data('tabindex', this.$element.attr('tabindex'));
+ this.$button.attr('tabindex', this.$element.data('tabindex'));
+ }
+ },
+
+ clickListener: function () {
+ var that = this,
+ $document = $(document);
+
+ this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) {
+ e.stopPropagation();
+ });
+
+ $document.data('spaceSelect', false);
+
+ this.$button.on('keyup', function (e) {
+ if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {
+ e.preventDefault();
+ $document.data('spaceSelect', false);
+ }
+ });
+
+ this.$newElement.on('click', function () {
+ that.setSize();
+ that.$element.on('shown.bs.select', function () {
+ if (!that.options.liveSearch && !that.multiple) {
+ that.$menu.find('.selected a').focus();
+ } else if (!that.multiple) {
+ var selectedIndex = that.liObj[that.$element[0].selectedIndex];
+
+ if (typeof selectedIndex !== 'number' || that.options.size === false) return;
+
+ // scroll to selected option
+ var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;
+ offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2;
+ that.$menuInner[0].scrollTop = offset;
+ }
+ });
+ });
+
+ this.$menu.on('click', 'li a', function (e) {
+ var $this = $(this),
+ clickedIndex = $this.parent().data('originalIndex'),
+ prevValue = that.$element.val(),
+ prevIndex = that.$element.prop('selectedIndex');
+
+ // Don't close on multi choice menu
+ if (that.multiple) {
+ e.stopPropagation();
+ }
+
+ e.preventDefault();
+
+ //Don't run if we have been disabled
+ if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {
+ var $options = that.$element.find('option'),
+ $option = $options.eq(clickedIndex),
+ state = $option.prop('selected'),
+ $optgroup = $option.parent('optgroup'),
+ maxOptions = that.options.maxOptions,
+ maxOptionsGrp = $optgroup.data('maxOptions') || false;
+
+ if (!that.multiple) { // Deselect all others if not multi select box
+ $options.prop('selected', false);
+ $option.prop('selected', true);
+ that.$menu.find('.selected').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else { // Toggle the one we have chosen if we are multi select.
+ $option.prop('selected', !state);
+ that.setSelected(clickedIndex, !state);
+ $this.blur();
+
+ if (maxOptions !== false || maxOptionsGrp !== false) {
+ var maxReached = maxOptions < $options.filter(':selected').length,
+ maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;
+
+ if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
+ if (maxOptions && maxOptions == 1) {
+ $options.prop('selected', false);
+ $option.prop('selected', true);
+ that.$menu.find('.selected').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else if (maxOptionsGrp && maxOptionsGrp == 1) {
+ $optgroup.find('option:selected').prop('selected', false);
+ $option.prop('selected', true);
+ var optgroupID = $this.parent().data('optgroup');
+ that.$menu.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else {
+ var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?
+ that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,
+ maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
+ maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
+ $notify = $('<div class="notify"></div>');
+ // If {var} is set in array, replace it
+ /** @deprecated */
+ if (maxOptionsArr[2]) {
+ maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
+ maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
+ }
+
+ $option.prop('selected', false);
+
+ that.$menu.append($notify);
+
+ if (maxOptions && maxReached) {
+ $notify.append($('<div>' + maxTxt + '</div>'));
+ that.$element.trigger('maxReached.bs.select');
+ }
+
+ if (maxOptionsGrp && maxReachedGrp) {
+ $notify.append($('<div>' + maxTxtGrp + '</div>'));
+ that.$element.trigger('maxReachedGrp.bs.select');
+ }
+
+ setTimeout(function () {
+ that.setSelected(clickedIndex, false);
+ }, 10);
+
+ $notify.delay(750).fadeOut(300, function () {
+ $(this).remove();
+ });
+ }
+ }
+ }
+ }
+
+ if (!that.multiple) {
+ that.$button.focus();
+ } else if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ }
+
+ // Trigger select 'change'
+ if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
+ that.$element.triggerNative('change');
+ // $option.prop('selected') is current option state (selected/unselected). state is previous option state.
+ that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]);
+ }
+ }
+ });
+
+ this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {
+ if (e.currentTarget == this) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (that.options.liveSearch && !$(e.target).hasClass('close')) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+ }
+ });
+
+ this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+ });
+
+ this.$menu.on('click', '.popover-title .close', function () {
+ that.$button.click();
+ });
+
+ this.$searchbox.on('click', function (e) {
+ e.stopPropagation();
+ });
+
+ this.$menu.on('click', '.actions-btn', function (e) {
+ if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+
+ e.preventDefault();
+ e.stopPropagation();
+
+ if ($(this).hasClass('bs-select-all')) {
+ that.selectAll();
+ } else {
+ that.deselectAll();
+ }
+ that.$element.triggerNative('change');
+ });
+
+ this.$element.change(function () {
+ that.render(false);
+ });
+ },
+
+ liveSearchListener: function () {
+ var that = this,
+ $no_results = $('<li class="no-results"></li>');
+
+ this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () {
+ that.$menuInner.find('.active').removeClass('active');
+ if (!!that.$searchbox.val()) {
+ that.$searchbox.val('');
+ that.$lis.not('.is-hidden').removeClass('hidden');
+ if (!!$no_results.parent().length) $no_results.remove();
+ }
+ if (!that.multiple) that.$menuInner.find('.selected').addClass('active');
+ setTimeout(function () {
+ that.$searchbox.focus();
+ }, 10);
+ });
+
+ this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {
+ e.stopPropagation();
+ });
+
+ this.$searchbox.on('input propertychange', function () {
+ if (that.$searchbox.val()) {
+ var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a');
+ if (that.options.liveSearchNormalize) {
+ $searchBase = $searchBase.not(':a' + that._searchStyle() + '("' + normalizeToBase(that.$searchbox.val()) + '")');
+ } else {
+ $searchBase = $searchBase.not(':' + that._searchStyle() + '("' + that.$searchbox.val() + '")');
+ }
+ $searchBase.parent().addClass('hidden');
+
+ that.$lis.filter('.dropdown-header').each(function () {
+ var $this = $(this),
+ optgroup = $this.data('optgroup');
+
+ if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) {
+ $this.addClass('hidden');
+ that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden');
+ }
+ });
+
+ var $lisVisible = that.$lis.not('.hidden');
+
+ // hide divider if first or last visible, or if followed by another divider
+ $lisVisible.each(function (index) {
+ var $this = $(this);
+
+ if ($this.hasClass('divider') && (
+ $this.index() === $lisVisible.eq(0).index() ||
+ $this.index() === $lisVisible.last().index() ||
+ $lisVisible.eq(index + 1).hasClass('divider'))) {
+ $this.addClass('hidden');
+ }
+ });
+
+ if (!that.$lis.not('.hidden, .no-results').length) {
+ if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show();
+ that.$menuInner.append($no_results);
+ } else if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+
+ } else {
+ that.$lis.not('.is-hidden').removeClass('hidden');
+ if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ }
+
+ that.$lis.filter('.active').removeClass('active');
+ if (that.$searchbox.val()) that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus();
+ $(this).focus();
+ });
+ },
+
+ _searchStyle: function () {
+ var style = 'icontains';
+ switch (this.options.liveSearchStyle) {
+ case 'begins':
+ case 'startsWith':
+ style = 'ibegins';
+ break;
+ case 'contains':
+ default:
+ break; //no need to change the default
+ }
+
+ return style;
+ },
+
+ val: function (value) {
+ if (typeof value !== 'undefined') {
+ this.$element.val(value);
+ this.render();
+
+ return this.$element;
+ } else {
+ return this.$element.val();
+ }
+ },
+
+ selectAll: function () {
+ this.findLis();
+ this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', true);
+ this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').addClass('selected');
+ this.render(false);
+ },
+
+ deselectAll: function () {
+ this.findLis();
+ this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', false);
+ this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').removeClass('selected');
+ this.render(false);
+ },
+
+ keydown: function (e) {
+ var $this = $(this),
+ $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),
+ $items,
+ that = $parent.data('this'),
+ index,
+ next,
+ first,
+ last,
+ prev,
+ nextPrev,
+ prevIndex,
+ isActive,
+ selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',
+ keyCodeMap = {
+ 32: ' ',
+ 48: '0',
+ 49: '1',
+ 50: '2',
+ 51: '3',
+ 52: '4',
+ 53: '5',
+ 54: '6',
+ 55: '7',
+ 56: '8',
+ 57: '9',
+ 59: ';',
+ 65: 'a',
+ 66: 'b',
+ 67: 'c',
+ 68: 'd',
+ 69: 'e',
+ 70: 'f',
+ 71: 'g',
+ 72: 'h',
+ 73: 'i',
+ 74: 'j',
+ 75: 'k',
+ 76: 'l',
+ 77: 'm',
+ 78: 'n',
+ 79: 'o',
+ 80: 'p',
+ 81: 'q',
+ 82: 'r',
+ 83: 's',
+ 84: 't',
+ 85: 'u',
+ 86: 'v',
+ 87: 'w',
+ 88: 'x',
+ 89: 'y',
+ 90: 'z',
+ 96: '0',
+ 97: '1',
+ 98: '2',
+ 99: '3',
+ 100: '4',
+ 101: '5',
+ 102: '6',
+ 103: '7',
+ 104: '8',
+ 105: '9'
+ };
+
+ if (that.options.liveSearch) $parent = $this.parent().parent();
+
+ if (that.options.container) $parent = that.$menu;
+
+ $items = $('[role=menu] li a', $parent);
+
+ isActive = that.$menu.parent().hasClass('open');
+
+ if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 65 && e.keyCode <= 90)) {
+ if (!that.options.container) {
+ that.setSize();
+ that.$menu.parent().addClass('open');
+ isActive = true;
+ } else {
+ that.$newElement.trigger('click');
+ }
+ that.$searchbox.focus();
+ }
+
+ if (that.options.liveSearch) {
+ if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) {
+ e.preventDefault();
+ that.$menu.parent().removeClass('open');
+ if (that.options.container) that.$newElement.removeClass('open');
+ that.$button.focus();
+ }
+ // $items contains li elements when liveSearch is enabled
+ $items = $('[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)', $parent);
+ if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {
+ if ($items.filter('.active').length === 0) {
+ $items = that.$newElement.find('li');
+ if (that.options.liveSearchNormalize) {
+ $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');
+ } else {
+ $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')');
+ }
+ }
+ }
+ }
+
+ if (!$items.length) return;
+
+ if (/(38|40)/.test(e.keyCode.toString(10))) {
+ index = $items.index($items.filter(':focus'));
+ first = $items.parent(selector).first().data('originalIndex');
+ last = $items.parent(selector).last().data('originalIndex');
+ next = $items.eq(index).parent().nextAll(selector).eq(0).data('originalIndex');
+ prev = $items.eq(index).parent().prevAll(selector).eq(0).data('originalIndex');
+ nextPrev = $items.eq(next).parent().prevAll(selector).eq(0).data('originalIndex');
+
+ if (that.options.liveSearch) {
+ $items.each(function (i) {
+ if (!$(this).hasClass('disabled')) {
+ $(this).data('index', i);
+ }
+ });
+ index = $items.index($items.filter('.active'));
+ first = $items.first().data('index');
+ last = $items.last().data('index');
+ next = $items.eq(index).nextAll().eq(0).data('index');
+ prev = $items.eq(index).prevAll().eq(0).data('index');
+ nextPrev = $items.eq(next).prevAll().eq(0).data('index');
+ }
+
+ prevIndex = $this.data('prevIndex');
+
+ if (e.keyCode == 38) {
+ if (that.options.liveSearch) index -= 1;
+ if (index != nextPrev && index > prev) index = prev;
+ if (index < first) index = first;
+ if (index == prevIndex) index = last;
+ } else if (e.keyCode == 40) {
+ if (that.options.liveSearch) index += 1;
+ if (index == -1) index = 0;
+ if (index != nextPrev && index < next) index = next;
+ if (index > last) index = last;
+ if (index == prevIndex) index = first;
+ }
+
+ $this.data('prevIndex', index);
+
+ if (!that.options.liveSearch) {
+ $items.eq(index).focus();
+ } else {
+ e.preventDefault();
+ if (!$this.hasClass('dropdown-toggle')) {
+ $items.removeClass('active').eq(index).addClass('active').children('a').focus();
+ $this.focus();
+ }
+ }
+
+ } else if (!$this.is('input')) {
+ var keyIndex = [],
+ count,
+ prevKey;
+
+ $items.each(function () {
+ if (!$(this).parent().hasClass('disabled')) {
+ if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {
+ keyIndex.push($(this).parent().index());
+ }
+ }
+ });
+
+ count = $(document).data('keycount');
+ count++;
+ $(document).data('keycount', count);
+
+ prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);
+
+ if (prevKey != keyCodeMap[e.keyCode]) {
+ count = 1;
+ $(document).data('keycount', count);
+ } else if (count >= keyIndex.length) {
+ $(document).data('keycount', 0);
+ if (count > keyIndex.length) count = 1;
+ }
+
+ $items.eq(keyIndex[count - 1]).focus();
+ }
+
+ // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu.
+ if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {
+ if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();
+ if (!that.options.liveSearch) {
+ var elem = $(':focus');
+ elem.click();
+ // Bring back focus for multiselects
+ elem.focus();
+ // Prevent screen from scrolling if the user hit the spacebar
+ e.preventDefault();
+ // Fixes spacebar selection of dropdown items in FF & IE
+ $(document).data('spaceSelect', true);
+ } else if (!/(32)/.test(e.keyCode.toString(10))) {
+ that.$menu.find('.active a').click();
+ $this.focus();
+ }
+ $(document).data('keycount', 0);
+ }
+
+ if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {
+ that.$menu.parent().removeClass('open');
+ if (that.options.container) that.$newElement.removeClass('open');
+ that.$button.focus();
+ }
+ },
+
+ mobile: function () {
+ this.$element.addClass('mobile-device').appendTo(this.$newElement);
+ if (this.options.container) this.$menu.hide();
+ },
+
+ refresh: function () {
+ this.$lis = null;
+ this.liObj = {};
+ this.reloadLi();
+ this.render();
+ this.checkDisabled();
+ this.liHeight(true);
+ this.setStyle();
+ this.setWidth();
+ if (this.$lis) this.$searchbox.trigger('propertychange');
+
+ this.$element.trigger('refreshed.bs.select');
+ },
+
+ hide: function () {
+ this.$newElement.hide();
+ },
+
+ show: function () {
+ this.$newElement.show();
+ },
+
+ remove: function () {
+ this.$newElement.remove();
+ this.$element.remove();
+ }
+ };
+
+ // SELECTPICKER PLUGIN DEFINITION
+ // ==============================
+ function Plugin(option, event) {
+ // get the args of the outer function..
+ var args = arguments;
+ // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them
+ // to get lost/corrupted in android 2.3 and IE9 #715 #775
+ var _option = option,
+ _event = event;
+ [].shift.apply(args);
+
+ var value;
+ var chain = this.each(function () {
+ var $this = $(this);
+ if ($this.is('select')) {
+ var data = $this.data('selectpicker'),
+ options = typeof _option == 'object' && _option;
+
+ if (!data) {
+ var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);
+ $this.data('selectpicker', (data = new Selectpicker(this, config, _event)));
+ } else if (options) {
+ for (var i in options) {
+ if (options.hasOwnProperty(i)) {
+ data.options[i] = options[i];
+ }
+ }
+ }
+
+ if (typeof _option == 'string') {
+ if (data[_option] instanceof Function) {
+ value = data[_option].apply(data, args);
+ } else {
+ value = data.options[_option];
+ }
+ }
+ }
+ });
+
+ if (typeof value !== 'undefined') {
+ //noinspection JSUnusedAssignment
+ return value;
+ } else {
+ return chain;
+ }
+ }
+
+ var old = $.fn.selectpicker;
+ $.fn.selectpicker = Plugin;
+ $.fn.selectpicker.Constructor = Selectpicker;
+
+ // SELECTPICKER NO CONFLICT
+ // ========================
+ $.fn.selectpicker.noConflict = function () {
+ $.fn.selectpicker = old;
+ return this;
+ };
+
+ $(document)
+ .data('keycount', 0)
+ .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown)
+ .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) {
+ e.stopPropagation();
+ });
+
+ // SELECTPICKER DATA-API
+ // =====================
+ $(window).on('load.bs.select.data-api', function () {
+ $('.selectpicker').each(function () {
+ var $selectpicker = $(this);
+ Plugin.call($selectpicker, $selectpicker.data());
+ })
+ });
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.js.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.js.map
new file mode 100644
index 0000000..5b851e9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bootstrap-select.min.js","sources":["bootstrap-select.js"],"names":["root","factory","define","amd","a0","exports","module","require","jQuery","this","$","normalizeToBase","text","rExps","re","ch","each","replace","htmlEscape","html","escapeMap","&","<",">","\"","'","`","source","Object","keys","join","testRegexp","RegExp","replaceRegexp","string","test","match","Plugin","option","event","args","arguments","_option","_event","shift","apply","value","chain","$this","is","data","options","i","hasOwnProperty","config","extend","Selectpicker","DEFAULTS","fn","selectpicker","defaults","Function","String","prototype","includes","toString","defineProperty","object","$defineProperty","result","error","indexOf","search","TypeError","call","stringLength","length","searchString","searchLength","position","undefined","pos","Number","start","Math","min","max","configurable","writable","startsWith","index","charCodeAt","o","k","r","push","triggerNative","eventName","el","dispatchEvent","Event","bubbles","document","createEvent","initEvent","fireEvent","createEventObject","eventType","trigger","expr","icontains","obj","meta","$obj","haystack","toUpperCase","ibegins","aicontains","aibegins","element","e","stopPropagation","preventDefault","$element","$newElement","$button","$menu","$lis","title","attr","val","render","refresh","setStyle","selectAll","deselectAll","destroy","remove","show","hide","init","VERSION","noneSelectedText","noneResultsText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","style","size","selectedTextFormat","width","container","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","header","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","iconBase","tickIcon","maxOptions","mobile","selectOnTab","dropdownAlignRight","constructor","that","id","addClass","liObj","multiple","prop","autofocus","createView","after","children","$menuInner","$searchbox","find","click","focus","checkDisabled","clickListener","liveSearchListener","setWidth","selectPosition","on","setTimeout","createDropdown","inputGroup","parent","hasClass","searchbox","actionsbox","donebutton","drop","$drop","li","createLi","innerHTML","reloadLi","destroyLi","_li","optID","titleOption","createElement","liIndex","generateLI","content","classes","optgroup","generateA","inline","tokens","className","appendChild","createTextNode","insertBefore","firstChild","selectedIndex","selected","optionClass","cssText","subtext","icon","isDisabled","disabled","parentElement","tagName","optGroupClass","label","labelSubtext","labelIcon","previousElementSibling","eq","findLis","updateLi","notDisabled","setDisabled","setSelected","tabIndex","selectedItems","map","toArray","split","totalCount","not","tr8nText","trim","status","buttonClass","removeClass","liHeight","sizeInfo","newElement","menu","menuInner","divider","a","cloneNode","actions","parentNode","input","body","offsetHeight","headerHeight","searchHeight","actionsHeight","doneButtonHeight","dividerHeight","outerHeight","menuStyle","getComputedStyle","menuPadding","parseInt","paddingTop","css","paddingBottom","borderTopWidth","borderBottomWidth","menuExtras","marginTop","marginBottom","removeChild","setSize","menuHeight","getHeight","selectOffsetTop","selectOffsetBot","$window","window","selectHeight","divHeight","posVert","offset","top","scrollTop","height","getSize","minHeight","include","classList","contains","lis","getElementsByTagName","lisVisible","Array","filter","optGroup","toggleClass","max-height","overflow","min-height","overflow-y","off","optIndex","slice","last","divLength","$selectClone","clone","appendTo","$selectClone2","ulWidth","outerWidth","btnWidth","actualHeight","getPlacement","left","offsetWidth","append","detach","removeAttr","$document","keyCode","offsetTop","clickedIndex","prevValue","prevIndex","$options","$option","state","$optgroup","maxOptionsGrp","blur","maxReached","maxReachedGrp","optgroupID","maxOptionsArr","maxTxt","maxTxtGrp","$notify","delay","fadeOut","currentTarget","target","change","$no_results","$searchBase","_searchStyle","$lisVisible","keydown","$items","next","first","prev","nextPrev","isActive","$parent","selector","keyCodeMap",32,48,49,50,51,52,53,54,55,56,57,59,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,96,97,98,99,100,101,102,103,104,105,"nextAll","prevAll","count","prevKey","keyIndex","toLowerCase","substring","elem","old","Constructor","noConflict","$selectpicker"],"mappings":"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"}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.min.js
new file mode 100644
index 0000000..d2ed90e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/bootstrap-select.min.js
@@ -0,0 +1,8 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){"use strict";function b(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function c(a){var b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function d(b,c){var d=arguments,f=b,g=c;[].shift.apply(d);var h,i=this.each(function(){var b=a(this);if(b.is("select")){var c=b.data("selectpicker"),i="object"==typeof f&&f;if(c){if(i)for(var j in i)i.hasOwnProperty(j)&&(c.options[j]=i[j])}else{var k=a.extend({},e.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),i);b.data("selectpicker",c=new e(this,k,g))}"string"==typeof f&&(h=c[f]instanceof Function?c[f].apply(c,d):c.options[f])}});return"undefined"!=typeof h?h:i}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),c="".indexOf,d=function(b){if(null==this)throw TypeError();var d=String(this);if(b&&"[object RegExp]"==a.call(b))throw TypeError();var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return g+j>e?!1:-1!=c.call(d,f,i)};b?b(String.prototype,"includes",{value:d,configurable:!0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),b={}.toString,c=function(a){if(null==this)throw TypeError();var c=String(this);if(a&&"[object RegExp]"==b.call(a))throw TypeError();var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j<f;)if(c.charCodeAt(i+j)!=e.charCodeAt(j))return!1;return!0};a?a(String.prototype,"startsWith",{value:c,configurable:!0,writable:!0}):String.prototype.startsWith=c}(),Object.keys||(Object.keys=function(a,b,c){c=[];for(b in a)c.hasOwnProperty.call(a,b)&&c.push(b);return c}),a.fn.triggerNative=function(a){var b,c=this[0];c.dispatchEvent?("function"==typeof Event?b=new Event(a,{bubbles:!0}):(b=document.createEvent("Event"),b.initEvent(a,!0,!1)),c.dispatchEvent(b)):(c.fireEvent&&(b=document.createEventObject(),b.eventType=a,c.fireEvent("on"+a,b)),this.trigger(a))},a.expr[":"].icontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].ibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())},a.expr[":"].aicontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].aibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())};var e=function(b,c,d){d&&(d.stopPropagation(),d.preventDefault()),this.$element=a(b),this.$newElement=null,this.$button=null,this.$menu=null,this.$lis=null,this.options=c,null===this.options.title&&(this.options.title=this.$element.attr("title")),this.val=e.prototype.val,this.render=e.prototype.render,this.refresh=e.prototype.refresh,this.setStyle=e.prototype.setStyle,this.selectAll=e.prototype.selectAll,this.deselectAll=e.prototype.deselectAll,this.destroy=e.prototype.remove,this.remove=e.prototype.remove,this.show=e.prototype.show,this.hide=e.prototype.hide,this.init()};e.VERSION="1.7.2",e.DEFAULTS={noneSelectedText:"Nothing selected",noneResultsText:"No results matched {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",doneButton:!1,doneButtonText:"Close",multipleSeparator:", ",styleBase:"btn",style:"btn-default",size:"auto",title:null,selectedTextFormat:"values",width:!1,container:!1,hideDisabled:!1,showSubtext:!1,showIcon:!0,showContent:!0,dropupAuto:!0,header:!1,liveSearch:!1,liveSearchPlaceholder:null,liveSearchNormalize:!1,liveSearchStyle:"contains",actionsBox:!1,iconBase:"glyphicon",tickIcon:"glyphicon-ok",maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1},e.prototype={constructor:e,init:function(){var b=this,c=this.$element.attr("id");this.$element.addClass("bs-select-hidden"),this.liObj={},this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(".dropdown-menu"),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on("hide.bs.dropdown",function(a){b.$element.trigger("hide.bs.select",a)}),this.$newElement.on("hidden.bs.dropdown",function(a){b.$element.trigger("hidden.bs.select",a)}),this.$newElement.on("show.bs.dropdown",function(a){b.$element.trigger("show.bs.select",a)}),this.$newElement.on("shown.bs.dropdown",function(a){b.$element.trigger("shown.bs.select",a)}),setTimeout(function(){b.$element.trigger("loaded.bs.select")})},createDropdown:function(){var b=this.multiple?" show-tick":"",d=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.options.header?'<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>'+this.options.header+"</div>":"",g=this.options.liveSearch?'<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"'+(null===this.options.liveSearchPlaceholder?"":' placeholder="'+c(this.options.liveSearchPlaceholder)+'"')+"></div>":"",h=this.multiple&&this.options.actionsBox?'<div class="bs-actionsbox"><div class="btn-group btn-group-sm btn-block"><button type="button" class="actions-btn bs-select-all btn btn-default">'+this.options.selectAllText+'</button><button type="button" class="actions-btn bs-deselect-all btn btn-default">'+this.options.deselectAllText+"</button></div></div>":"",i=this.multiple&&this.options.doneButton?'<div class="bs-donebutton"><div class="btn-group btn-block"><button type="button" class="btn btn-sm btn-default">'+this.options.doneButtonText+"</button></div></div>":"",j='<div class="btn-group bootstrap-select'+b+d+'"><button type="button" class="'+this.options.styleBase+' dropdown-toggle" data-toggle="dropdown"'+e+'><span class="filter-option pull-left"></span> <span class="caret"></span></button><div class="dropdown-menu open">'+f+g+h+'<ul class="dropdown-menu inner" role="menu"></ul>'+i+"</div></div>";return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul")[0].innerHTML=b,a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menuInner[0].innerHTML=a},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],f=0,g=document.createElement("option"),h=-1,i=function(a,b,c,d){return"<li"+("undefined"!=typeof c&""!==c?' class="'+c+'"':"")+("undefined"!=typeof b&null!==b?' data-original-index="'+b+'"':"")+("undefined"!=typeof d&null!==d?'data-optgroup="'+d+'"':"")+">"+a+"</li>"},j=function(a,e,f,g){return'<a tabindex="0"'+("undefined"!=typeof e?' class="'+e+'"':"")+("undefined"!=typeof f?' style="'+f+'"':"")+(d.options.liveSearchNormalize?' data-normalized-text="'+b(c(a))+'"':"")+("undefined"!=typeof g||null!==g?' data-tokens="'+g+'"':"")+">"+a+'<span class="'+d.options.iconBase+" "+d.options.tickIcon+' check-mark"></span></a>'};if(this.options.title&&!this.multiple&&(h--,!this.$element.find(".bs-title-option").length)){var k=this.$element[0];g.className="bs-title-option",g.appendChild(document.createTextNode(this.options.title)),g.value="",k.insertBefore(g,k.firstChild),void 0===a(k.options[k.selectedIndex]).attr("selected")&&(g.selected=!0)}return this.$element.find("option").each(function(b){var c=a(this);if(h++,!c.hasClass("bs-title-option")){var g=this.className||"",k=this.style.cssText,l=c.data("content")?c.data("content"):c.html(),m=c.data("tokens")?c.data("tokens"):null,n="undefined"!=typeof c.data("subtext")?'<small class="text-muted">'+c.data("subtext")+"</small>":"",o="undefined"!=typeof c.data("icon")?'<span class="'+d.options.iconBase+" "+c.data("icon")+'"></span> ':"",p=this.disabled||"OPTGROUP"===this.parentElement.tagName&&this.parentElement.disabled;if(""!==o&&p&&(o="<span>"+o+"</span>"),d.options.hideDisabled&&p)return void h--;if(c.data("content")||(l=o+'<span class="text">'+l+n+"</span>"),"OPTGROUP"===this.parentElement.tagName&&c.data("divider")!==!0){var q=" "+this.parentElement.className||"";if(0===c.index()){f+=1;var r=this.parentElement.label,s="undefined"!=typeof c.parent().data("subtext")?'<small class="text-muted">'+c.parent().data("subtext")+"</small>":"",t=c.parent().data("icon")?'<span class="'+d.options.iconBase+" "+c.parent().data("icon")+'"></span> ':"";r=t+'<span class="text">'+r+s+"</span>",0!==b&&e.length>0&&(h++,e.push(i("",null,"divider",f+"div"))),h++,e.push(i(r,null,"dropdown-header"+q,f))}e.push(i(j(l,"opt "+g+q,k,m),b,"",f))}else c.data("divider")===!0?e.push(i("",b,"divider")):c.data("hidden")===!0?e.push(i(j(l,g,k,m),b,"hidden is-hidden")):(this.previousElementSibling&&"OPTGROUP"===this.previousElementSibling.tagName&&(h++,e.push(i("",null,"divider",f+"div"))),e.push(i(j(l,g,k,m),b)));d.liObj[b]=h}}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),e.join("")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c,d=this;b!==!1&&this.$element.find("option").each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||"OPTGROUP"===this.parentElement.tagName&&this.parentElement.disabled,b),d.setSelected(a,this.selected,b)}),this.tabIndex();var e=this.$element.find("option").map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||"OPTGROUP"===this.parentElement.tagName&&this.parentElement.disabled))return!1;var b,c=a(this),e=c.data("icon")&&d.options.showIcon?'<i class="'+d.options.iconBase+" "+c.data("icon")+'"></i> ':"";return b=d.options.showSubtext&&c.data("subtext")&&!d.multiple?' <small class="text-muted">'+c.data("subtext")+"</small>":"","undefined"!=typeof c.attr("title")?c.attr("title"):c.data("content")&&d.options.showContent?c.data("content"):e+c.html()+b}}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){c=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+c).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr("title")),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$button.children(".filter-option").html(f),this.$element.trigger("rendered.bs.select")},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("ul"),f=document.createElement("li"),g=document.createElement("li"),h=document.createElement("a"),i=document.createElement("span"),j=this.options.header?this.$menu.find(".popover-title")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement("div"):null,l=this.options.actionsBox&&this.multiple?this.$menu.find(".bs-actionsbox")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple?this.$menu.find(".bs-donebutton")[0].cloneNode(!0):null;if(i.className="text",c.className=this.$menu[0].parentNode.className+" open",d.className="dropdown-menu open",e.className="dropdown-menu inner",f.className="divider",i.appendChild(document.createTextNode("Inner text")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement("span");k.className="bs-searchbox",n.className="form-control",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offsetHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u="function"==typeof getComputedStyle?getComputedStyle(d):!1,v=u?null:a(d),w=parseInt(u?u.paddingTop:v.css("paddingTop"))+parseInt(u?u.paddingBottom:v.css("paddingBottom"))+parseInt(u?u.borderTopWidth:v.css("borderTopWidth"))+parseInt(u?u.borderBottomWidth:v.css("borderBottomWidth")),x=w+parseInt(u?u.marginTop:v.css("marginTop"))+parseInt(u?u.marginBottom:v.css("marginBottom"))+2;document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css("padding-top",0),this.options.size!==!1){var b,c,d,e,f=this,g=this.$menu,h=this.$menuInner,i=a(window),j=this.$newElement[0].offsetHeight,k=this.sizeInfo.liHeight,l=this.sizeInfo.headerHeight,m=this.sizeInfo.searchHeight,n=this.sizeInfo.actionsHeight,o=this.sizeInfo.doneButtonHeight,p=this.sizeInfo.dividerHeight,q=this.sizeInfo.menuPadding,r=this.sizeInfo.menuExtras,s=this.options.hideDisabled?".disabled":"",t=function(){d=f.$newElement.offset().top-i.scrollTop(),e=i.height()-d-j};if(t(),"auto"===this.options.size){var u=function(){var i,j=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},p=f.$menuInner[0].getElementsByTagName("li"),s=Array.prototype.filter?Array.prototype.filter.call(p,j("hidden",!1)):f.$lis.not(".hidden"),u=Array.prototype.filter?Array.prototype.filter.call(s,j("dropdown-header",!0)):s.filter(".dropdown-header");t(),b=e-r,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&f.$newElement.toggleClass("dropup",d>e&&c>b-r),f.$newElement.hasClass("dropup")&&(b=d-r),i=s.length+u.length>3?3*k+r-2:0,g.css({"max-height":b+"px",overflow:"hidden","min-height":i+l+m+n+o+"px"}),h.css({"max-height":b-l-m-n-o-q+"px","overflow-y":"auto","min-height":Math.max(i-q,0)+"px"})};u(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",u),i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize",u)}else if(this.options.size&&"auto"!=this.options.size&&this.$lis.not(s).length>this.options.size){var v=this.$lis.not(".divider").not(s).children().slice(0,this.options.size).last().parent().index(),w=this.$lis.slice(0,v+1).filter(".divider").length;b=k*this.options.size+w*p+q,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&this.$newElement.toggleClass("dropup",d>e&&c>b-r),g.css({"max-height":b+l+m+n+o+"px",overflow:"hidden","min-height":""}),h.css({"max-height":b-q+"px","overflow-y":"auto","min-height":""})}}},setWidth:function(){if("auto"===this.options.width){this.$menu.css("min-width","0");var a=this.$menu.parent().clone().appendTo("body"),b=this.options.container?this.$newElement.clone().appendTo("body"):a,c=a.children(".dropdown-menu").outerWidth(),d=b.css("width","auto").children("button").outerWidth();a.remove(),b.remove(),this.$newElement.css("width",Math.max(c,d)+"px")}else"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){var b,c,d=this,e="<div />",f=a(e),g=function(a){f.addClass(a.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,f.css({top:b.top+c,left:b.left,width:a[0].offsetWidth,position:"absolute"})};this.$newElement.on("click",function(){d.isDisabled()||(g(a(this)),f.appendTo(d.options.container),f.toggleClass("open",!a(this).hasClass("open")),f.append(d.$menu))}),a(window).on("resize scroll",function(){g(d.$newElement)}),this.$element.on("hide.bs.select",function(){d.$menu.data("height",d.$menu.height()),f.detach()})},setSelected:function(a,b,c){if(!c)var c=this.findLis().eq(this.liObj[a]);c.toggleClass("selected",b)},setDisabled:function(a,b,c){if(!c)var c=this.findLis().eq(this.liObj[a]);b?c.addClass("disabled").children("a").attr("href","#").attr("tabindex",-1):c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass("disabled"),this.$button.addClass("disabled").attr("tabindex",-1)):(this.$button.hasClass("disabled")&&(this.$newElement.removeClass("disabled"),this.$button.removeClass("disabled")),-1!=this.$button.attr("tabindex")||this.$element.data("tabindex")||this.$button.removeAttr("tabindex")),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.is("[tabindex]")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex")))},clickListener:function(){var b=this,c=a(document);this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),c.data("spaceSelect",!1),this.$button.on("keyup",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data("spaceSelect")&&(a.preventDefault(),c.data("spaceSelect",!1))}),this.$newElement.on("click",function(){b.setSize(),b.$element.on("shown.bs.select",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedIndex];if("number"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menu.find(".selected a").focus()})}),this.$menu.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l<h.filter(":selected").length,o=m<k.find("option:selected").length;if(l&&n||m&&o)if(l&&1==l)h.prop("selected",!1),i.prop("selected",!0),b.$menu.find(".selected").removeClass("selected"),b.setSelected(e,!0);else if(m&&1==m){k.find("option:selected").prop("selected",!1),i.prop("selected",!0);var p=d.parent().data("optgroup");b.$menu.find('[data-optgroup="'+p+'"]').removeClass("selected"),b.setSelected(e,!0)}else{var q="function"==typeof b.options.maxOptionsText?b.options.maxOptionsText(l,m):b.options.maxOptionsText,r=q[0].replace("{n}",l),s=q[1].replace("{n}",m),t=a('<div class="notify"></div>');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("<div>"+r+"</div>")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("<div>"+s+"</div>")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menu.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&(b.$element.triggerNative("change"),b.$element.trigger("changed.bs.select",[e,i.prop("selected"),j]))}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass("close")?b.$searchbox.focus():b.$button.focus())}),this.$menu.on("click","li.divider, li.dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.click()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass("bs-select-all")?b.selectAll():b.deselectAll(),b.$element.triggerNative("change")}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var d=this,e=a('<li class="no-results"></li>');this.$newElement.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){d.$menuInner.find(".active").removeClass("active"),d.$searchbox.val()&&(d.$searchbox.val(""),d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),d.multiple||d.$menuInner.find(".selected").addClass("active"),setTimeout(function(){d.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){var f=d.$lis.not(".is-hidden").removeClass("hidden").children("a");f=d.options.liveSearchNormalize?f.not(":a"+d._searchStyle()+'("'+b(d.$searchbox.val())+'")'):f.not(":"+d._searchStyle()+'("'+d.$searchbox.val()+'")'),f.parent().addClass("hidden"),d.$lis.filter(".dropdown-header").each(function(){var b=a(this),c=b.data("optgroup");0===d.$lis.filter("[data-optgroup="+c+"]").not(b).not(".hidden").length&&(b.addClass("hidden"),d.$lis.filter("[data-optgroup="+c+"div]").addClass("hidden"))});var g=d.$lis.not(".hidden");g.each(function(b){var c=a(this);c.hasClass("divider")&&(c.index()===g.eq(0).index()||c.index()===g.last().index()||g.eq(b+1).hasClass("divider"))&&c.addClass("hidden")}),d.$lis.not(".hidden, .no-results").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(d.options.noneResultsText.replace("{0}",'"'+c(d.$searchbox.val())+'"')).show(),d.$menuInner.append(e))}else d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove();d.$lis.filter(".active").removeClass("active"),d.$searchbox.val()&&d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(),a(this).focus()})},_searchStyle:function(){var a="icontains";switch(this.options.liveSearchStyle){case"begins":case"startsWith":a="ibegins";break;case"contains":}return a},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},selectAll:function(){this.findLis(),this.$element.find("option:enabled").not("[data-divider], [data-hidden]").prop("selected",!0),this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").addClass("selected"),this.render(!1)},deselectAll:function(){this.findLis(),this.$element.find("option:enabled").not("[data-divider], [data-hidden]").prop("selected",!1),this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").removeClass("selected"),this.render(!1)},keydown:function(c){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p=":not(.disabled, .hidden, .dropdown-header, .divider)",q={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li a",n),l=o.$menu.parent().hasClass("open"),!l&&(c.keyCode>=48&&c.keyCode<=57||c.keyCode>=65&&c.keyCode<=90)&&(o.options.container?o.$newElement.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(c.preventDefault(),o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus()),d=a("[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)",n),m.val()||/(38|40)/.test(c.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$newElement.find("li"),d=o.options.liveSearchNormalize?d.filter(":a"+o._searchStyle()+"("+b(q[c.keyCode])+")"):d.filter(":"+o._searchStyle()+"("+q[c.keyCode]+")"))),d.length){if(/(38|40)/.test(c.keyCode.toString(10)))e=d.index(d.filter(":focus")),g=d.parent(p).first().data("originalIndex"),h=d.parent(p).last().data("originalIndex"),f=d.eq(e).parent().nextAll(p).eq(0).data("originalIndex"),i=d.eq(e).parent().prevAll(p).eq(0).data("originalIndex"),j=d.eq(f).parent().prevAll(p).eq(0).data("originalIndex"),o.options.liveSearch&&(d.each(function(b){a(this).hasClass("disabled")||a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.first().data("index"),h=d.last().data("index"),f=d.eq(e).nextAll().eq(0).data("index"),i=d.eq(e).prevAll().eq(0).data("index"),j=d.eq(f).prevAll().eq(0).data("index")),k=m.data("prevIndex"),38==c.keyCode?(o.options.liveSearch&&(e-=1),e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)):40==c.keyCode&&(o.options.liveSearch&&(e+=1),-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(c.preventDefault(),m.hasClass("dropdown-toggle")||(d.removeClass("active").eq(e).addClass("active").children("a").focus(),m.focus())):d.eq(e).focus();else if(!m.is("input")){var r,s,t=[];d.each(function(){a(this).parent().hasClass("disabled")||a.trim(a(this).text().toLowerCase()).substring(0,1)==q[c.keyCode]&&t.push(a(this).parent().index())}),r=a(document).data("keycount"),r++,a(document).data("keycount",r),s=a.trim(a(":focus").text().toLowerCase()).substring(0,1),s!=q[c.keyCode]?(r=1,a(document).data("keycount",r)):r>=t.length&&(a(document).data("keycount",0),r>t.length&&(r=1)),d.eq(t[r-1]).focus()}if((/(13|32)/.test(c.keyCode.toString(10))||/(^9$)/.test(c.keyCode.toString(10))&&o.options.selectOnTab)&&l){if(/(32)/.test(c.keyCode.toString(10))||c.preventDefault(),o.options.liveSearch)/(32)/.test(c.keyCode.toString(10))||(o.$menu.find(".active a").click(),m.focus());else{var u=a(":focus");u.click(),u.focus(),c.preventDefault(),a(document).data("spaceSelect",!0)}a(document).data("keycount",0)}(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(c.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device").appendTo(this.$newElement),this.options.container&&this.$menu.hide()},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()}};var f=a.fn.selectpicker;a.fn.selectpicker=d,a.fn.selectpicker.Constructor=e,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=f,this},a(document).data("keycount",0).on("keydown",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',e.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);d.call(b,b.data())})})}(jQuery)});
+//# sourceMappingURL=bootstrap-select.js.map
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-bg_BG.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-bg_BG.js
new file mode 100644
index 0000000..3c344a4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-bg_BG.js
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Нищо избрано',
+ noneResultsText: 'Няма резултат за {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} избран елемент" : "{0} избрани елемента";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Лимита е достигнат ({n} елемент максимум)' : 'Лимита е достигнат ({n} елемента максимум)',
+ (numGroup == 1) ? 'Груповия лимит е достигнат ({n} елемент максимум)' : 'Груповия лимит е достигнат ({n} елемента максимум)'
+ ];
+ },
+ selectAllText: 'Избери всички',
+ deselectAllText: 'Размаркирай всички',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-bg_BG.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-bg_BG.min.js
new file mode 100644
index 0000000..93dbc93
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-bg_BG.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нищо избрано",noneResultsText:"Няма резултат за {0}",countSelectedText:function(a,b){return 1==a?"{0} избран елемент":"{0} избрани елемента"},maxOptionsText:function(a,b){return[1==a?"Лимита е достигнат ({n} елемент максимум)":"Лимита е достигнат ({n} елемента максимум)",1==b?"Груповия лимит е достигнат ({n} елемент максимум)":"Груповия лимит е достигнат ({n} елемента максимум)"]},selectAllText:"Избери всички",deselectAllText:"Размаркирай всички",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-cs_CZ.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-cs_CZ.js
new file mode 100644
index 0000000..90ac9a8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-cs_CZ.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nic není vybráno',
+ noneResultsText: 'Žádné výsledky {0}',
+ countSelectedText: 'Označeno {0} z {1}',
+ maxOptionsText: ['Limit překročen ({n} {var} max)', 'Limit skupiny překročen ({n} {var} max)', ['položek', 'položka']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-cs_CZ.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-cs_CZ.min.js
new file mode 100644
index 0000000..c3b9a0e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-cs_CZ.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic není vybráno",noneResultsText:"Žádné výsledky {0}",countSelectedText:"Označeno {0} z {1}",maxOptionsText:["Limit překročen ({n} {var} max)","Limit skupiny překročen ({n} {var} max)",["položek","položka"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-da_DK.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-da_DK.js
new file mode 100644
index 0000000..789a80f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-da_DK.js
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Intet valgt',
+ noneResultsText: 'Ingen resultater fundet {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} valgt" : "{0} valgt";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Begrænsning nået (max {n} valgt)' : 'Begrænsning nået (max {n} valgte)',
+ (numGroup == 1) ? 'Gruppe-begrænsning nået (max {n} valgt)' : 'Gruppe-begrænsning nået (max {n} valgte)'
+ ];
+ },
+ selectAllText: 'Markér alle',
+ deselectAllText: 'Afmarkér alle',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-da_DK.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-da_DK.min.js
new file mode 100644
index 0000000..a093cb9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-da_DK.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Intet valgt",noneResultsText:"Ingen resultater fundet {0}",countSelectedText:function(a,b){return"{0} valgt"},maxOptionsText:function(a,b){return[1==a?"Begrænsning nået (max {n} valgt)":"Begrænsning nået (max {n} valgte)",1==b?"Gruppe-begrænsning nået (max {n} valgt)":"Gruppe-begrænsning nået (max {n} valgte)"]},selectAllText:"Markér alle",deselectAllText:"Afmarkér alle",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-de_DE.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-de_DE.js
new file mode 100644
index 0000000..91b72ae
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-de_DE.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Bitte wählen...',
+ noneResultsText: 'Keine Ergebnisse für {0}',
+ countSelectedText: '{0} von {1} ausgewählt',
+ maxOptionsText: ['Limit erreicht ({n} {var} max.)', 'Gruppen-Limit erreicht ({n} {var} max.)', ['Eintrag', 'Einträge']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-de_DE.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-de_DE.min.js
new file mode 100644
index 0000000..f17d77f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-de_DE.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Bitte wählen...",noneResultsText:"Keine Ergebnisse für {0}",countSelectedText:"{0} von {1} ausgewählt",maxOptionsText:["Limit erreicht ({n} {var} max.)","Gruppen-Limit erreicht ({n} {var} max.)",["Eintrag","Einträge"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-en_US.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-en_US.js
new file mode 100644
index 0000000..ba24fb0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-en_US.js
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nothing selected',
+ noneResultsText: 'No results match {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
+ (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
+ ];
+ },
+ selectAllText: 'Select All',
+ deselectAllText: 'Deselect All',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-en_US.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-en_US.min.js
new file mode 100644
index 0000000..017c211
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-en_US.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nothing selected",noneResultsText:"No results match {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-es_CL.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-es_CL.js
new file mode 100644
index 0000000..d7127d8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-es_CL.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'No hay selección',
+ noneResultsText: 'No hay resultados {0}',
+ countSelectedText: 'Seleccionados {0} de {1}',
+ maxOptionsText: ['Límite alcanzado ({n} {var} max)', 'Límite del grupo alcanzado({n} {var} max)', ['elementos', 'element']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-es_CL.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-es_CL.min.js
new file mode 100644
index 0000000..f385c23
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-es_CL.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"No hay selección",noneResultsText:"No hay resultados {0}",countSelectedText:"Seleccionados {0} de {1}",maxOptionsText:["Límite alcanzado ({n} {var} max)","Límite del grupo alcanzado({n} {var} max)",["elementos","element"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-eu.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-eu.js
new file mode 100644
index 0000000..a38718a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-eu.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Hautapenik ez',
+ noneResultsText: 'Emaitzarik ez {0}',
+ countSelectedText: '{1}(e)tik {0} hautatuta',
+ maxOptionsText: ['Mugara iritsita ({n} {var} gehienez)', 'Taldearen mugara iritsita ({n} {var} gehienez)', ['elementu', 'elementu']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-eu.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-eu.min.js
new file mode 100644
index 0000000..56fa74f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-eu.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hautapenik ez",noneResultsText:"Emaitzarik ez {0}",countSelectedText:"{1}(e)tik {0} hautatuta",maxOptionsText:["Mugara iritsita ({n} {var} gehienez)","Taldearen mugara iritsita ({n} {var} gehienez)",["elementu","elementu"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fa_IR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fa_IR.js
new file mode 100644
index 0000000..c33f53b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fa_IR.js
@@ -0,0 +1,37 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'چیزی انتخاب نشده است',
+ noneResultsText: 'هیج مشابهی برای {0} پیدا نشد',
+ countSelectedText: "{0} از {1} مورد انتخاب شده",
+ maxOptionsText: ['بیشتر ممکن نیست {حداکثر {n} عدد}', 'بیشتر ممکن نیست {حداکثر {n} عدد}'],
+ selectAllText: 'انتخاب همه',
+ deselectAllText: 'انتخاب هیچ کدام',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fa_IR.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fa_IR.min.js
new file mode 100644
index 0000000..4940895
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fa_IR.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"چیزی انتخاب نشده است",noneResultsText:"هیج مشابهی برای {0} پیدا نشد",countSelectedText:"{0} از {1} مورد انتخاب شده",maxOptionsText:["بیشتر ممکن نیست {حداکثر {n} عدد}","بیشتر ممکن نیست {حداکثر {n} عدد}"],selectAllText:"انتخاب همه",deselectAllText:"انتخاب هیچ کدام",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fr_FR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fr_FR.js
new file mode 100644
index 0000000..bd39797
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fr_FR.js
@@ -0,0 +1,42 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Aucune sélection',
+ noneResultsText: 'Aucun résultat pour {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected > 1) ? "{0} éléments sélectionnés" : "{0} élément sélectionné";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll > 1) ? 'Limite atteinte ({n} éléments max)' : 'Limite atteinte ({n} élément max)',
+ (numGroup > 1) ? 'Limite du groupe atteinte ({n} éléments max)' : 'Limite du groupe atteinte ({n} élément max)'
+ ];
+ },
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fr_FR.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fr_FR.min.js
new file mode 100644
index 0000000..c6c1891
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-fr_FR.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Aucune sélection",noneResultsText:"Aucun résultat pour {0}",countSelectedText:function(a,b){return a>1?"{0} éléments sélectionnés":"{0} élément sélectionné"},maxOptionsText:function(a,b){return[a>1?"Limite atteinte ({n} éléments max)":"Limite atteinte ({n} élément max)",b>1?"Limite du groupe atteinte ({n} éléments max)":"Limite du groupe atteinte ({n} élément max)"]},multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-hu_HU.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-hu_HU.js
new file mode 100644
index 0000000..b37c0ab
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-hu_HU.js
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Válasszon!',
+ noneResultsText: 'Nincs találat {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return '{n} elem kiválasztva';
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Legfeljebb {n} elem választható',
+ 'A csoportban legfeljebb {n} elem választható'
+ ];
+ },
+ selectAllText: 'Mind',
+ deselectAllText: 'Egyik sem',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-hu_HU.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-hu_HU.min.js
new file mode 100644
index 0000000..69a493f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-hu_HU.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Válasszon!",noneResultsText:"Nincs találat {0}",countSelectedText:function(a,b){return"{n} elem kiválasztva"},maxOptionsText:function(a,b){return["Legfeljebb {n} elem választható","A csoportban legfeljebb {n} elem választható"]},selectAllText:"Mind",deselectAllText:"Egyik sem",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-it_IT.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-it_IT.js
new file mode 100644
index 0000000..db76787
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-it_IT.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nessuna selezione',
+ noneResultsText: 'Nessun risultato per {0}',
+ countSelectedText: 'Selezionati {0} di {1}',
+ maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-it_IT.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-it_IT.min.js
new file mode 100644
index 0000000..db882fb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-it_IT.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nessuna selezione",noneResultsText:"Nessun risultato per {0}",countSelectedText:"Selezionati {0} di {1}",maxOptionsText:["Limite raggiunto ({n} {var} max)","Limite del gruppo raggiunto ({n} {var} max)",["elementi","elemento"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ko_KR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ko_KR.js
new file mode 100644
index 0000000..e6d3551
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ko_KR.js
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '항목을 선택해주세요',
+ noneResultsText: '{0} 검색 결과가 없습니다',
+ countSelectedText: function (numSelected, numTotal) {
+ return "{0}개를 선택하였습니다";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ '{n}개까지 선택 가능합니다',
+ '해당 그룹은 {n}개까지 선택 가능합니다'
+ ];
+ },
+ selectAllText: '전체선택',
+ deselectAllText: '전체해제',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ko_KR.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ko_KR.min.js
new file mode 100644
index 0000000..9aac268
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ko_KR.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"항목을 선택해주세요",noneResultsText:"{0} 검색 결과가 없습니다",countSelectedText:function(a,b){return"{0}개를 선택하였습니다"},maxOptionsText:function(a,b){return["{n}개까지 선택 가능합니다","해당 그룹은 {n}개까지 선택 가능합니다"]},selectAllText:"전체선택",deselectAllText:"전체해제",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-nl_NL.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-nl_NL.js
new file mode 100644
index 0000000..7a12788
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-nl_NL.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Niets geselecteerd',
+ noneResultsText: 'Geen resultaten gevonden voor {0}',
+ countSelectedText: '{0} van {1} geselecteerd',
+ maxOptionsText: ['Limiet bereikt ({n} {var} max)', 'Groep limiet bereikt ({n} {var} max)', ['items', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-nl_NL.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-nl_NL.min.js
new file mode 100644
index 0000000..774b824
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-nl_NL.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Niets geselecteerd",noneResultsText:"Geen resultaten gevonden voor {0}",countSelectedText:"{0} van {1} geselecteerd",maxOptionsText:["Limiet bereikt ({n} {var} max)","Groep limiet bereikt ({n} {var} max)",["items","item"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pl_PL.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pl_PL.js
new file mode 100644
index 0000000..485026a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pl_PL.js
@@ -0,0 +1,37 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nic nie zaznaczono',
+ noneResultsText: 'Brak wyników wyszukiwania {0}',
+ countSelectedText: 'Zaznaczono {0} z {1}',
+ maxOptionsText: ['Osiągnięto limit ({n} {var} max)', 'Limit grupy osiągnięty ({n} {var} max)', ['elementy', 'element']],
+ selectAll: 'Zaznacz wszystkie',
+ deselectAll: 'Odznacz wszystkie',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pl_PL.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pl_PL.min.js
new file mode 100644
index 0000000..8e7865d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pl_PL.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic nie zaznaczono",noneResultsText:"Brak wyników wyszukiwania {0}",countSelectedText:"Zaznaczono {0} z {1}",maxOptionsText:["Osiągnięto limit ({n} {var} max)","Limit grupy osiągnięty ({n} {var} max)",["elementy","element"]],selectAll:"Zaznacz wszystkie",deselectAll:"Odznacz wszystkie",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_BR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_BR.js
new file mode 100644
index 0000000..7b75a0f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_BR.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nada selecionado',
+ noneResultsText: 'Nada encontrado contendo {0}',
+ countSelectedText: 'Selecionado {0} de {1}',
+ maxOptionsText: ['Limite excedido (máx. {n} {var})', 'Limite do grupo excedido (máx. {n} {var})', ['itens', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_BR.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_BR.min.js
new file mode 100644
index 0000000..a4ed1e6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_BR.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nada selecionado",noneResultsText:"Nada encontrado contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite excedido (máx. {n} {var})","Limite do grupo excedido (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_PT.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_PT.js
new file mode 100644
index 0000000..2590f08
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_PT.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+$.fn.selectpicker.defaults = {
+noneSelectedText: 'Nenhum seleccionado',
+noneResultsText: 'Sem resultados contendo {0}',
+countSelectedText: 'Selecionado {0} de {1}',
+maxOptionsText: ['Limite ultrapassado (máx. {n} {var})', 'Limite de seleções ultrapassado (máx. {n} {var})', ['itens', 'item']],
+multipleSeparator: ', '
+};
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_PT.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_PT.min.js
new file mode 100644
index 0000000..75567a4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-pt_PT.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nenhum seleccionado",noneResultsText:"Sem resultados contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite ultrapassado (máx. {n} {var})","Limite de seleções ultrapassado (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ro_RO.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ro_RO.js
new file mode 100644
index 0000000..a4e611d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ro_RO.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nu a fost selectat nimic',
+ noneResultsText: 'Nu exista niciun rezultat {0}',
+ countSelectedText: '{0} din {1} selectat(e)',
+ maxOptionsText: ['Limita a fost atinsa ({n} {var} max)', 'Limita de grup a fost atinsa ({n} {var} max)', ['iteme', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ro_RO.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ro_RO.min.js
new file mode 100644
index 0000000..da6ad75
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ro_RO.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nu a fost selectat nimic",noneResultsText:"Nu exista niciun rezultat {0}",countSelectedText:"{0} din {1} selectat(e)",maxOptionsText:["Limita a fost atinsa ({n} {var} max)","Limita de grup a fost atinsa ({n} {var} max)",["iteme","item"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ru_RU.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ru_RU.js
new file mode 100644
index 0000000..c858c3f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ru_RU.js
@@ -0,0 +1,36 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Ничего не выбрано',
+ noneResultsText: 'Совпадений не найдено {0}',
+ countSelectedText: 'Выбрано {0} из {1}',
+ maxOptionsText: ['Достигнут предел ({n} {var} максимум)', 'Достигнут предел в группе ({n} {var} максимум)', ['items', 'item']],
+ doneButtonText: 'Закрыть',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ru_RU.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ru_RU.min.js
new file mode 100644
index 0000000..a03aca4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ru_RU.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ничего не выбрано",noneResultsText:"Совпадений не найдено {0}",countSelectedText:"Выбрано {0} из {1}",maxOptionsText:["Достигнут предел ({n} {var} максимум)","Достигнут предел в группе ({n} {var} максимум)",["items","item"]],doneButtonText:"Закрыть",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sk_SK.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sk_SK.js
new file mode 100644
index 0000000..c1fb4b8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sk_SK.js
@@ -0,0 +1,37 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Vyberte zo zoznamu',
+ noneResultsText: 'Pre výraz {0} neboli nájdené žiadne výsledky',
+ countSelectedText: 'Vybrané {0} z {1}',
+ maxOptionsText: ['Limit prekročený ({n} {var} max)', 'Limit skupiny prekročený ({n} {var} max)', ['položiek', 'položka']],
+ selectAllText: 'Vybrať všetky',
+ deselectAllText: 'Zrušiť výber',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sk_SK.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sk_SK.min.js
new file mode 100644
index 0000000..868ef83
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sk_SK.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Vyberte zo zoznamu",noneResultsText:"Pre výraz {0} neboli nájdené žiadne výsledky",countSelectedText:"Vybrané {0} z {1}",maxOptionsText:["Limit prekročený ({n} {var} max)","Limit skupiny prekročený ({n} {var} max)",["položiek","položka"]],selectAllText:"Vybrať všetky",deselectAllText:"Zrušiť výber",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sl_SI.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sl_SI.js
new file mode 100644
index 0000000..2f3b3d8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sl_SI.js
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nič izbranega',
+ noneResultsText: 'Ni zadetkov za {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ "Število izbranih: {0}";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Omejitev dosežena (max. izbranih: {n})',
+ 'Omejitev skupine dosežena (max. izbranih: {n})'
+ ];
+ },
+ selectAllText: 'Izberi vse',
+ deselectAllText: 'Počisti izbor',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sl_SI.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sl_SI.min.js
new file mode 100644
index 0000000..e24edc0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sl_SI.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nič izbranega",noneResultsText:"Ni zadetkov za {0}",countSelectedText:function(a,b){"Število izbranih: {0}"},maxOptionsText:function(a,b){return["Omejitev dosežena (max. izbranih: {n})","Omejitev skupine dosežena (max. izbranih: {n})"]},selectAllText:"Izberi vse",deselectAllText:"Počisti izbor",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sv_SE.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sv_SE.js
new file mode 100644
index 0000000..a8c3768
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sv_SE.js
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Inget valt',
+ noneResultsText: 'Inget sökresultat matchar {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected === 1) ? "{0} alternativ valt" : "{0} alternativ valda";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Gräns uppnåd (max {n} alternativ)',
+ 'Gräns uppnåd (max {n} gruppalternativ)'
+ ];
+ },
+ selectAllText: 'Markera alla',
+ deselectAllText: 'Avmarkera alla',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sv_SE.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sv_SE.min.js
new file mode 100644
index 0000000..167b70a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-sv_SE.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Inget valt",noneResultsText:"Inget sökresultat matchar {0}",countSelectedText:function(a,b){return 1===a?"{0} alternativ valt":"{0} alternativ valda"},maxOptionsText:function(a,b){return["Gräns uppnåd (max {n} alternativ)","Gräns uppnåd (max {n} gruppalternativ)"]},selectAllText:"Markera alla",deselectAllText:"Avmarkera alla",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-tr_TR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-tr_TR.js
new file mode 100644
index 0000000..617062b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-tr_TR.js
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Hiçbiri seçilmedi',
+ noneResultsText: 'Hiçbir sonuç bulunamadı {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} öğe seçildi" : "{0} öğe seçildi";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit aşıldı (maksimum {n} sayıda öğe )' : 'Limit aşıldı (maksimum {n} sayıda öğe)',
+ (numGroup == 1) ? 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' : 'Grup limiti aşıldı (maksimum {n} sayıda öğe)'
+ ];
+ },
+ selectAllText: 'Tümünü Seç',
+ deselectAllText: 'Seçiniz',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-tr_TR.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-tr_TR.min.js
new file mode 100644
index 0000000..bd49a7d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-tr_TR.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hiçbiri seçilmedi",noneResultsText:"Hiçbir sonuç bulunamadı {0}",countSelectedText:function(a,b){return"{0} öğe seçildi"},maxOptionsText:function(a,b){return[1==a?"Limit aşıldı (maksimum {n} sayıda öğe )":"Limit aşıldı (maksimum {n} sayıda öğe)","Grup limiti aşıldı (maksimum {n} sayıda öğe)"]},selectAllText:"Tümünü Seç",deselectAllText:"Seçiniz",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ua_UA.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ua_UA.js
new file mode 100644
index 0000000..e35d9e6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ua_UA.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Нічого не вибрано',
+ noneResultsText: 'Збігів не знайдено {0}',
+ countSelectedText: 'Вибрано {0} із {1}',
+ maxOptionsText: ['Досягнута межа ({n} {var} максимум)', 'Досягнута межа в групі ({n} {var} максимум)', ['items', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ua_UA.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ua_UA.min.js
new file mode 100644
index 0000000..6e65de6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-ua_UA.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нічого не вибрано",noneResultsText:"Збігів не знайдено {0}",countSelectedText:"Вибрано {0} із {1}",maxOptionsText:["Досягнута межа ({n} {var} максимум)","Досягнута межа в групі ({n} {var} максимум)",["items","item"]],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_CN.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_CN.js
new file mode 100644
index 0000000..0f98604
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_CN.js
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '没有选中任何项',
+ noneResultsText: '没有找到匹配项',
+ countSelectedText: '选中{1}中的{0}项',
+ maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_CN.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_CN.min.js
new file mode 100644
index 0000000..0cfa3c6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_CN.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"没有选中任何项",noneResultsText:"没有找到匹配项",countSelectedText:"选中{1}中的{0}项",maxOptionsText:["超出限制 (最多选择{n}项)","组选择超出限制(最多选择{n}组)"],multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_TW.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_TW.js
new file mode 100644
index 0000000..82e078a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_TW.js
@@ -0,0 +1,37 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function () {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '沒有選取任何項目',
+ noneResultsText: '沒有找到符合的結果',
+ countSelectedText: '已經選取{0}個項目',
+ maxOptionsText: ['超過限制 (最多選擇{n}項)', '超過限制(最多選擇{n}組)'],
+ selectAllText: '選取全部',
+ deselectAllText: '全部取消',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_TW.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_TW.min.js
new file mode 100644
index 0000000..a715320
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/dist/js/i18n/defaults-zh_TW.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.7.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"沒有選取任何項目",noneResultsText:"沒有找到符合的結果",countSelectedText:"已經選取{0}個項目",maxOptionsText:["超過限制 (最多選擇{n}項)","超過限制(最多選擇{n}組)"],selectAllText:"選取全部",deselectAllText:"全部取消",multipleSeparator:", "}}(jQuery)});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/bootstrap-select.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/bootstrap-select.js
new file mode 100644
index 0000000..b7d6e23
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/bootstrap-select.js
@@ -0,0 +1,1624 @@
+(function ($) {
+ 'use strict';
+
+ //<editor-fold desc="Shims">
+ if (!String.prototype.includes) {
+ (function () {
+ 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+ var toString = {}.toString;
+ var defineProperty = (function () {
+ // IE 8 only supports `Object.defineProperty` on DOM elements
+ try {
+ var object = {};
+ var $defineProperty = Object.defineProperty;
+ var result = $defineProperty(object, object, object) && $defineProperty;
+ } catch (error) {
+ }
+ return result;
+ }());
+ var indexOf = ''.indexOf;
+ var includes = function (search) {
+ if (this == null) {
+ throw TypeError();
+ }
+ var string = String(this);
+ if (search && toString.call(search) == '[object RegExp]') {
+ throw TypeError();
+ }
+ var stringLength = string.length;
+ var searchString = String(search);
+ var searchLength = searchString.length;
+ var position = arguments.length > 1 ? arguments[1] : undefined;
+ // `ToInteger`
+ var pos = position ? Number(position) : 0;
+ if (pos != pos) { // better `isNaN`
+ pos = 0;
+ }
+ var start = Math.min(Math.max(pos, 0), stringLength);
+ // Avoid the `indexOf` call if no match is possible
+ if (searchLength + start > stringLength) {
+ return false;
+ }
+ return indexOf.call(string, searchString, pos) != -1;
+ };
+ if (defineProperty) {
+ defineProperty(String.prototype, 'includes', {
+ 'value': includes,
+ 'configurable': true,
+ 'writable': true
+ });
+ } else {
+ String.prototype.includes = includes;
+ }
+ }());
+ }
+
+ if (!String.prototype.startsWith) {
+ (function () {
+ 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+ var defineProperty = (function () {
+ // IE 8 only supports `Object.defineProperty` on DOM elements
+ try {
+ var object = {};
+ var $defineProperty = Object.defineProperty;
+ var result = $defineProperty(object, object, object) && $defineProperty;
+ } catch (error) {
+ }
+ return result;
+ }());
+ var toString = {}.toString;
+ var startsWith = function (search) {
+ if (this == null) {
+ throw TypeError();
+ }
+ var string = String(this);
+ if (search && toString.call(search) == '[object RegExp]') {
+ throw TypeError();
+ }
+ var stringLength = string.length;
+ var searchString = String(search);
+ var searchLength = searchString.length;
+ var position = arguments.length > 1 ? arguments[1] : undefined;
+ // `ToInteger`
+ var pos = position ? Number(position) : 0;
+ if (pos != pos) { // better `isNaN`
+ pos = 0;
+ }
+ var start = Math.min(Math.max(pos, 0), stringLength);
+ // Avoid the `indexOf` call if no match is possible
+ if (searchLength + start > stringLength) {
+ return false;
+ }
+ var index = -1;
+ while (++index < searchLength) {
+ if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {
+ return false;
+ }
+ }
+ return true;
+ };
+ if (defineProperty) {
+ defineProperty(String.prototype, 'startsWith', {
+ 'value': startsWith,
+ 'configurable': true,
+ 'writable': true
+ });
+ } else {
+ String.prototype.startsWith = startsWith;
+ }
+ }());
+ }
+
+ if (!Object.keys) {
+ Object.keys = function (
+ o, // object
+ k, // key
+ r // result array
+ ){
+ // initialize object and result
+ r=[];
+ // iterate over object keys
+ for (k in o)
+ // fill result array with non-prototypical keys
+ r.hasOwnProperty.call(o, k) && r.push(k);
+ // return result
+ return r
+ };
+ }
+
+ $.fn.triggerNative = function (eventName) {
+ var el = this[0],
+ event;
+
+ if (el.dispatchEvent) {
+ if (typeof Event === 'function') {
+ // For modern browsers
+ event = new Event(eventName, {
+ bubbles: true
+ });
+ } else {
+ // For IE since it doesn't support Event constructor
+ event = document.createEvent('Event');
+ event.initEvent(eventName, true, false);
+ }
+
+ el.dispatchEvent(event);
+ } else {
+ if (el.fireEvent) {
+ event = document.createEventObject();
+ event.eventType = eventName;
+ el.fireEvent('on' + eventName, event);
+ }
+
+ this.trigger(eventName);
+ }
+ };
+ //</editor-fold>
+
+ // Case insensitive contains search
+ $.expr[':'].icontains = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
+ return haystack.includes(meta[3].toUpperCase());
+ };
+
+ // Case insensitive begins search
+ $.expr[':'].ibegins = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
+ return haystack.startsWith(meta[3].toUpperCase());
+ };
+
+ // Case and accent insensitive contains search
+ $.expr[':'].aicontains = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
+ return haystack.includes(meta[3].toUpperCase());
+ };
+
+ // Case and accent insensitive begins search
+ $.expr[':'].aibegins = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
+ return haystack.startsWith(meta[3].toUpperCase());
+ };
+
+ /**
+ * Remove all diatrics from the given text.
+ * @access private
+ * @param {String} text
+ * @returns {String}
+ */
+ function normalizeToBase(text) {
+ var rExps = [
+ {re: /[\xC0-\xC6]/g, ch: "A"},
+ {re: /[\xE0-\xE6]/g, ch: "a"},
+ {re: /[\xC8-\xCB]/g, ch: "E"},
+ {re: /[\xE8-\xEB]/g, ch: "e"},
+ {re: /[\xCC-\xCF]/g, ch: "I"},
+ {re: /[\xEC-\xEF]/g, ch: "i"},
+ {re: /[\xD2-\xD6]/g, ch: "O"},
+ {re: /[\xF2-\xF6]/g, ch: "o"},
+ {re: /[\xD9-\xDC]/g, ch: "U"},
+ {re: /[\xF9-\xFC]/g, ch: "u"},
+ {re: /[\xC7-\xE7]/g, ch: "c"},
+ {re: /[\xD1]/g, ch: "N"},
+ {re: /[\xF1]/g, ch: "n"}
+ ];
+ $.each(rExps, function () {
+ text = text.replace(this.re, this.ch);
+ });
+ return text;
+ }
+
+
+ function htmlEscape(html) {
+ var escapeMap = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ '`': '`'
+ };
+ var source = '(?:' + Object.keys(escapeMap).join('|') + ')',
+ testRegexp = new RegExp(source),
+ replaceRegexp = new RegExp(source, 'g'),
+ string = html == null ? '' : '' + html;
+ return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) {
+ return escapeMap[match];
+ }) : string;
+ }
+
+ var Selectpicker = function (element, options, e) {
+ if (e) {
+ e.stopPropagation();
+ e.preventDefault();
+ }
+
+ this.$element = $(element);
+ this.$newElement = null;
+ this.$button = null;
+ this.$menu = null;
+ this.$lis = null;
+ this.options = options;
+
+ // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a
+ // data-attribute)
+ if (this.options.title === null) {
+ this.options.title = this.$element.attr('title');
+ }
+
+ //Expose public methods
+ this.val = Selectpicker.prototype.val;
+ this.render = Selectpicker.prototype.render;
+ this.refresh = Selectpicker.prototype.refresh;
+ this.setStyle = Selectpicker.prototype.setStyle;
+ this.selectAll = Selectpicker.prototype.selectAll;
+ this.deselectAll = Selectpicker.prototype.deselectAll;
+ this.destroy = Selectpicker.prototype.remove;
+ this.remove = Selectpicker.prototype.remove;
+ this.show = Selectpicker.prototype.show;
+ this.hide = Selectpicker.prototype.hide;
+
+ this.init();
+ };
+
+ Selectpicker.VERSION = '1.7.2';
+
+ // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.
+ Selectpicker.DEFAULTS = {
+ noneSelectedText: 'Nothing selected',
+ noneResultsText: 'No results matched {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
+ (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
+ ];
+ },
+ selectAllText: 'Select All',
+ deselectAllText: 'Deselect All',
+ doneButton: false,
+ doneButtonText: 'Close',
+ multipleSeparator: ', ',
+ styleBase: 'btn',
+ style: 'btn-default',
+ size: 'auto',
+ title: null,
+ selectedTextFormat: 'values',
+ width: false,
+ container: false,
+ hideDisabled: false,
+ showSubtext: false,
+ showIcon: true,
+ showContent: true,
+ dropupAuto: true,
+ header: false,
+ liveSearch: false,
+ liveSearchPlaceholder: null,
+ liveSearchNormalize: false,
+ liveSearchStyle: 'contains',
+ actionsBox: false,
+ iconBase: 'glyphicon',
+ tickIcon: 'glyphicon-ok',
+ maxOptions: false,
+ mobile: false,
+ selectOnTab: false,
+ dropdownAlignRight: false
+ };
+
+ Selectpicker.prototype = {
+
+ constructor: Selectpicker,
+
+ init: function () {
+ var that = this,
+ id = this.$element.attr('id');
+
+ this.$element.addClass('bs-select-hidden');
+ // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility
+ // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]')
+ this.liObj = {};
+ this.multiple = this.$element.prop('multiple');
+ this.autofocus = this.$element.prop('autofocus');
+ this.$newElement = this.createView();
+ this.$element.after(this.$newElement);
+ this.$button = this.$newElement.children('button');
+ this.$menu = this.$newElement.children('.dropdown-menu');
+ this.$menuInner = this.$menu.children('.inner');
+ this.$searchbox = this.$menu.find('input');
+
+ if (this.options.dropdownAlignRight)
+ this.$menu.addClass('dropdown-menu-right');
+
+ if (typeof id !== 'undefined') {
+ this.$button.attr('data-id', id);
+ $('label[for="' + id + '"]').click(function (e) {
+ e.preventDefault();
+ that.$button.focus();
+ });
+ }
+
+ this.checkDisabled();
+ this.clickListener();
+ if (this.options.liveSearch) this.liveSearchListener();
+ this.render();
+ this.setStyle();
+ this.setWidth();
+ if (this.options.container) this.selectPosition();
+ this.$menu.data('this', this);
+ this.$newElement.data('this', this);
+ if (this.options.mobile) this.mobile();
+
+ this.$newElement.on('hide.bs.dropdown', function (e) {
+ that.$element.trigger('hide.bs.select', e);
+ });
+
+ this.$newElement.on('hidden.bs.dropdown', function (e) {
+ that.$element.trigger('hidden.bs.select', e);
+ });
+
+ this.$newElement.on('show.bs.dropdown', function (e) {
+ that.$element.trigger('show.bs.select', e);
+ });
+
+ this.$newElement.on('shown.bs.dropdown', function (e) {
+ that.$element.trigger('shown.bs.select', e);
+ });
+
+ setTimeout(function () {
+ that.$element.trigger('loaded.bs.select');
+ });
+ },
+
+ createDropdown: function () {
+ // Options
+ // If we are multiple, then add the show-tick class by default
+ var multiple = this.multiple ? ' show-tick' : '',
+ inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',
+ autofocus = this.autofocus ? ' autofocus' : '';
+ // Elements
+ var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>' + this.options.header + '</div>' : '';
+ var searchbox = this.options.liveSearch ?
+ '<div class="bs-searchbox">' +
+ '<input type="text" class="form-control" autocomplete="off"' +
+ (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>' +
+ '</div>'
+ : '';
+ var actionsbox = this.multiple && this.options.actionsBox ?
+ '<div class="bs-actionsbox">' +
+ '<div class="btn-group btn-group-sm btn-block">' +
+ '<button type="button" class="actions-btn bs-select-all btn btn-default">' +
+ this.options.selectAllText +
+ '</button>' +
+ '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' +
+ this.options.deselectAllText +
+ '</button>' +
+ '</div>' +
+ '</div>'
+ : '';
+ var donebutton = this.multiple && this.options.doneButton ?
+ '<div class="bs-donebutton">' +
+ '<div class="btn-group btn-block">' +
+ '<button type="button" class="btn btn-sm btn-default">' +
+ this.options.doneButtonText +
+ '</button>' +
+ '</div>' +
+ '</div>'
+ : '';
+ var drop =
+ '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' +
+ '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' +
+ '<span class="filter-option pull-left"></span> ' +
+ '<span class="caret"></span>' +
+ '</button>' +
+ '<div class="dropdown-menu open">' +
+ header +
+ searchbox +
+ actionsbox +
+ '<ul class="dropdown-menu inner" role="menu">' +
+ '</ul>' +
+ donebutton +
+ '</div>' +
+ '</div>';
+
+ return $(drop);
+ },
+
+ createView: function () {
+ var $drop = this.createDropdown(),
+ li = this.createLi();
+
+ $drop.find('ul')[0].innerHTML = li;
+ return $drop;
+ },
+
+ reloadLi: function () {
+ //Remove all children.
+ this.destroyLi();
+ //Re build
+ var li = this.createLi();
+ this.$menuInner[0].innerHTML = li;
+ },
+
+ destroyLi: function () {
+ this.$menu.find('li').remove();
+ },
+
+ createLi: function () {
+ var that = this,
+ _li = [],
+ optID = 0,
+ titleOption = document.createElement('option'),
+ liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct
+
+ // Helper functions
+ /**
+ * @param content
+ * @param [index]
+ * @param [classes]
+ * @param [optgroup]
+ * @returns {string}
+ */
+ var generateLI = function (content, index, classes, optgroup) {
+ return '<li' +
+ ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') +
+ ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') +
+ ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') +
+ '>' + content + '</li>';
+ };
+
+ /**
+ * @param text
+ * @param [classes]
+ * @param [inline]
+ * @param [tokens]
+ * @returns {string}
+ */
+ var generateA = function (text, classes, inline, tokens) {
+ return '<a tabindex="0"' +
+ (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') +
+ (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') +
+ (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') +
+ (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') +
+ '>' + text +
+ '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' +
+ '</a>';
+ };
+
+ if (this.options.title && !this.multiple) {
+ // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased
+ // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended
+ liIndex--;
+
+ if (!this.$element.find('.bs-title-option').length) {
+ // Use native JS to prepend option (faster)
+ var element = this.$element[0];
+ titleOption.className = 'bs-title-option';
+ titleOption.appendChild(document.createTextNode(this.options.title));
+ titleOption.value = '';
+ element.insertBefore(titleOption, element.firstChild);
+ // Check if selected attribute is already set on an option. If not, select the titleOption option.
+ if ($(element.options[element.selectedIndex]).attr('selected') === undefined) titleOption.selected = true;
+ }
+ }
+
+ this.$element.find('option').each(function (index) {
+ var $this = $(this);
+
+ liIndex++;
+
+ if ($this.hasClass('bs-title-option')) return;
+
+ // Get the class and text for the option
+ var optionClass = this.className || '',
+ inline = this.style.cssText,
+ text = $this.data('content') ? $this.data('content') : $this.html(),
+ tokens = $this.data('tokens') ? $this.data('tokens') : null,
+ subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '',
+ icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '',
+ isDisabled = this.disabled || (this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled);
+
+ if (icon !== '' && isDisabled) {
+ icon = '<span>' + icon + '</span>';
+ }
+
+ if (that.options.hideDisabled && isDisabled) {
+ liIndex--;
+ return;
+ }
+
+ if (!$this.data('content')) {
+ // Prepend any icon and append any subtext to the main text.
+ text = icon + '<span class="text">' + text + subtext + '</span>';
+ }
+
+ if (this.parentElement.tagName === 'OPTGROUP' && $this.data('divider') !== true) {
+ var optGroupClass = ' ' + this.parentElement.className || '';
+
+ if ($this.index() === 0) { // Is it the first option of the optgroup?
+ optID += 1;
+
+ // Get the opt group label
+ var label = this.parentElement.label,
+ labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '',
+ labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '';
+
+ label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>';
+
+ if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?
+ liIndex++;
+ _li.push(generateLI('', null, 'divider', optID + 'div'));
+ }
+ liIndex++;
+ _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));
+ }
+ _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));
+ } else if ($this.data('divider') === true) {
+ _li.push(generateLI('', index, 'divider'));
+ } else if ($this.data('hidden') === true) {
+ _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));
+ } else {
+ if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') {
+ liIndex++;
+ _li.push(generateLI('', null, 'divider', optID + 'div'));
+ }
+ _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));
+ }
+
+ that.liObj[index] = liIndex;
+ });
+
+ //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button
+ if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {
+ this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');
+ }
+
+ return _li.join('');
+ },
+
+ findLis: function () {
+ if (this.$lis == null) this.$lis = this.$menu.find('li');
+ return this.$lis;
+ },
+
+ /**
+ * @param [updateLi] defaults to true
+ */
+ render: function (updateLi) {
+ var that = this,
+ notDisabled;
+
+ //Update the LI to match the SELECT
+ if (updateLi !== false) {
+ this.$element.find('option').each(function (index) {
+ var $lis = that.findLis().eq(that.liObj[index]);
+
+ that.setDisabled(index, this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled, $lis);
+ that.setSelected(index, this.selected, $lis);
+ });
+ }
+
+ this.tabIndex();
+
+ var selectedItems = this.$element.find('option').map(function () {
+ if (this.selected) {
+ if (that.options.hideDisabled && (this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled)) return false;
+
+ var $this = $(this),
+ icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '',
+ subtext;
+
+ if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {
+ subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>';
+ } else {
+ subtext = '';
+ }
+ if (typeof $this.attr('title') !== 'undefined') {
+ return $this.attr('title');
+ } else if ($this.data('content') && that.options.showContent) {
+ return $this.data('content');
+ } else {
+ return icon + $this.html() + subtext;
+ }
+ }
+ }).toArray();
+
+ //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
+ //Convert all the values into a comma delimited string
+ var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);
+
+ //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..
+ if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {
+ var max = this.options.selectedTextFormat.split('>');
+ if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {
+ notDisabled = this.options.hideDisabled ? ', [disabled]' : '';
+ var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length,
+ tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;
+ title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());
+ }
+ }
+
+ if (this.options.title == undefined) {
+ this.options.title = this.$element.attr('title');
+ }
+
+ if (this.options.selectedTextFormat == 'static') {
+ title = this.options.title;
+ }
+
+ //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text
+ if (!title) {
+ title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;
+ }
+
+ //strip all html-tags and trim the result
+ this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, '')));
+ this.$button.children('.filter-option').html(title);
+
+ this.$element.trigger('rendered.bs.select');
+ },
+
+ /**
+ * @param [style]
+ * @param [status]
+ */
+ setStyle: function (style, status) {
+ if (this.$element.attr('class')) {
+ this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ''));
+ }
+
+ var buttonClass = style ? style : this.options.style;
+
+ if (status == 'add') {
+ this.$button.addClass(buttonClass);
+ } else if (status == 'remove') {
+ this.$button.removeClass(buttonClass);
+ } else {
+ this.$button.removeClass(this.options.style);
+ this.$button.addClass(buttonClass);
+ }
+ },
+
+ liHeight: function (refresh) {
+ if (!refresh && (this.options.size === false || this.sizeInfo)) return;
+
+ var newElement = document.createElement('div'),
+ menu = document.createElement('div'),
+ menuInner = document.createElement('ul'),
+ divider = document.createElement('li'),
+ li = document.createElement('li'),
+ a = document.createElement('a'),
+ text = document.createElement('span'),
+ header = this.options.header ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,
+ search = this.options.liveSearch ? document.createElement('div') : null,
+ actions = this.options.actionsBox && this.multiple ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,
+ doneButton = this.options.doneButton && this.multiple ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;
+
+ text.className = 'text';
+ newElement.className = this.$menu[0].parentNode.className + ' open';
+ menu.className = 'dropdown-menu open';
+ menuInner.className = 'dropdown-menu inner';
+ divider.className = 'divider';
+
+ text.appendChild(document.createTextNode('Inner text'));
+ a.appendChild(text);
+ li.appendChild(a);
+ menuInner.appendChild(li);
+ menuInner.appendChild(divider);
+ if (header) menu.appendChild(header);
+ if (search) {
+ // create a span instead of input as creating an input element is slower
+ var input = document.createElement('span');
+ search.className = 'bs-searchbox';
+ input.className = 'form-control';
+ search.appendChild(input);
+ menu.appendChild(search);
+ }
+ if (actions) menu.appendChild(actions);
+ menu.appendChild(menuInner);
+ if (doneButton) menu.appendChild(doneButton);
+ newElement.appendChild(menu);
+
+ document.body.appendChild(newElement);
+
+ var liHeight = a.offsetHeight,
+ headerHeight = header ? header.offsetHeight : 0,
+ searchHeight = search ? search.offsetHeight : 0,
+ actionsHeight = actions ? actions.offsetHeight : 0,
+ doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,
+ dividerHeight = $(divider).outerHeight(true),
+ // fall back to jQuery if getComputedStyle is not supported
+ menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false,
+ $menu = menuStyle ? null : $(menu),
+ menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +
+ parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +
+ parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +
+ parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),
+ menuExtras = menuPadding +
+ parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +
+ parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2;
+
+ document.body.removeChild(newElement);
+
+ this.sizeInfo = {
+ liHeight: liHeight,
+ headerHeight: headerHeight,
+ searchHeight: searchHeight,
+ actionsHeight: actionsHeight,
+ doneButtonHeight: doneButtonHeight,
+ dividerHeight: dividerHeight,
+ menuPadding: menuPadding,
+ menuExtras: menuExtras
+ };
+ },
+
+ setSize: function () {
+ this.findLis();
+ this.liHeight();
+
+ if (this.options.header) this.$menu.css('padding-top', 0);
+ if (this.options.size === false) return;
+
+ var that = this,
+ $menu = this.$menu,
+ $menuInner = this.$menuInner,
+ $window = $(window),
+ selectHeight = this.$newElement[0].offsetHeight,
+ liHeight = this.sizeInfo['liHeight'],
+ headerHeight = this.sizeInfo['headerHeight'],
+ searchHeight = this.sizeInfo['searchHeight'],
+ actionsHeight = this.sizeInfo['actionsHeight'],
+ doneButtonHeight = this.sizeInfo['doneButtonHeight'],
+ divHeight = this.sizeInfo['dividerHeight'],
+ menuPadding = this.sizeInfo['menuPadding'],
+ menuExtras = this.sizeInfo['menuExtras'],
+ notDisabled = this.options.hideDisabled ? '.disabled' : '',
+ menuHeight,
+ getHeight,
+ selectOffsetTop,
+ selectOffsetBot,
+ posVert = function () {
+ selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();
+ selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;
+ };
+
+ posVert();
+
+ if (this.options.size === 'auto') {
+ var getSize = function () {
+ var minHeight,
+ hasClass = function (className, include) {
+ return function (element) {
+ if (include) {
+ return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));
+ } else {
+ return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));
+ }
+ };
+ },
+ lis = that.$menuInner[0].getElementsByTagName('li'),
+ lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),
+ optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');
+
+ posVert();
+ menuHeight = selectOffsetBot - menuExtras;
+
+ if (that.options.container) {
+ if (!$menu.data('height')) $menu.data('height', $menu.height());
+ getHeight = $menu.data('height');
+ } else {
+ getHeight = $menu.height();
+ }
+
+ if (that.options.dropupAuto) {
+ that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
+ }
+ if (that.$newElement.hasClass('dropup')) {
+ menuHeight = selectOffsetTop - menuExtras;
+ }
+
+ if ((lisVisible.length + optGroup.length) > 3) {
+ minHeight = liHeight * 3 + menuExtras - 2;
+ } else {
+ minHeight = 0;
+ }
+
+ $menu.css({
+ 'max-height': menuHeight + 'px',
+ 'overflow': 'hidden',
+ 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'
+ });
+ $menuInner.css({
+ 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px',
+ 'overflow-y': 'auto',
+ 'min-height': Math.max(minHeight - menuPadding, 0) + 'px'
+ });
+ };
+ getSize();
+ this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);
+ $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);
+ } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {
+ var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),
+ divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;
+ menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding;
+
+ if (that.options.container) {
+ if (!$menu.data('height')) $menu.data('height', $menu.height());
+ getHeight = $menu.data('height');
+ } else {
+ getHeight = $menu.height();
+ }
+
+ if (that.options.dropupAuto) {
+ //noinspection JSUnusedAssignment
+ this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
+ }
+ $menu.css({
+ 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',
+ 'overflow': 'hidden',
+ 'min-height': ''
+ });
+ $menuInner.css({
+ 'max-height': menuHeight - menuPadding + 'px',
+ 'overflow-y': 'auto',
+ 'min-height': ''
+ });
+ }
+ },
+
+ setWidth: function () {
+ if (this.options.width === 'auto') {
+ this.$menu.css('min-width', '0');
+
+ // Get correct width if element is hidden
+ var $selectClone = this.$menu.parent().clone().appendTo('body'),
+ $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,
+ ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),
+ btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();
+
+ $selectClone.remove();
+ $selectClone2.remove();
+
+ // Set width to whatever's larger, button title or longest option
+ this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');
+ } else if (this.options.width === 'fit') {
+ // Remove inline min-width so width can be changed from 'auto'
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', '').addClass('fit-width');
+ } else if (this.options.width) {
+ // Remove inline min-width so width can be changed from 'auto'
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', this.options.width);
+ } else {
+ // Remove inline min-width/width so width can be changed
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', '');
+ }
+ // Remove fit-width class if width is changed programmatically
+ if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
+ this.$newElement.removeClass('fit-width');
+ }
+ },
+
+ selectPosition: function () {
+ var that = this,
+ drop = '<div />',
+ $drop = $(drop),
+ pos,
+ actualHeight,
+ getPlacement = function ($element) {
+ $drop.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));
+ pos = $element.offset();
+ actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;
+ $drop.css({
+ 'top': pos.top + actualHeight,
+ 'left': pos.left,
+ 'width': $element[0].offsetWidth,
+ 'position': 'absolute'
+ });
+ };
+
+ this.$newElement.on('click', function () {
+ if (that.isDisabled()) {
+ return;
+ }
+ getPlacement($(this));
+ $drop.appendTo(that.options.container);
+ $drop.toggleClass('open', !$(this).hasClass('open'));
+ $drop.append(that.$menu);
+ });
+
+ $(window).on('resize scroll', function () {
+ getPlacement(that.$newElement);
+ });
+
+ this.$element.on('hide.bs.select', function () {
+ that.$menu.data('height', that.$menu.height());
+ $drop.detach();
+ });
+ },
+
+ setSelected: function (index, selected, $lis) {
+ if (!$lis) {
+ var $lis = this.findLis().eq(this.liObj[index]);
+ }
+
+ $lis.toggleClass('selected', selected);
+ },
+
+ setDisabled: function (index, disabled, $lis) {
+ if (!$lis) {
+ var $lis = this.findLis().eq(this.liObj[index]);
+ }
+
+ if (disabled) {
+ $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1);
+ } else {
+ $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0);
+ }
+ },
+
+ isDisabled: function () {
+ return this.$element[0].disabled;
+ },
+
+ checkDisabled: function () {
+ var that = this;
+
+ if (this.isDisabled()) {
+ this.$newElement.addClass('disabled');
+ this.$button.addClass('disabled').attr('tabindex', -1);
+ } else {
+ if (this.$button.hasClass('disabled')) {
+ this.$newElement.removeClass('disabled');
+ this.$button.removeClass('disabled');
+ }
+
+ if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {
+ this.$button.removeAttr('tabindex');
+ }
+ }
+
+ this.$button.click(function () {
+ return !that.isDisabled();
+ });
+ },
+
+ tabIndex: function () {
+ if (this.$element.is('[tabindex]')) {
+ this.$element.data('tabindex', this.$element.attr('tabindex'));
+ this.$button.attr('tabindex', this.$element.data('tabindex'));
+ }
+ },
+
+ clickListener: function () {
+ var that = this,
+ $document = $(document);
+
+ this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) {
+ e.stopPropagation();
+ });
+
+ $document.data('spaceSelect', false);
+
+ this.$button.on('keyup', function (e) {
+ if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {
+ e.preventDefault();
+ $document.data('spaceSelect', false);
+ }
+ });
+
+ this.$newElement.on('click', function () {
+ that.setSize();
+ that.$element.on('shown.bs.select', function () {
+ if (!that.options.liveSearch && !that.multiple) {
+ that.$menu.find('.selected a').focus();
+ } else if (!that.multiple) {
+ var selectedIndex = that.liObj[that.$element[0].selectedIndex];
+
+ if (typeof selectedIndex !== 'number' || that.options.size === false) return;
+
+ // scroll to selected option
+ var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;
+ offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2;
+ that.$menuInner[0].scrollTop = offset;
+ }
+ });
+ });
+
+ this.$menu.on('click', 'li a', function (e) {
+ var $this = $(this),
+ clickedIndex = $this.parent().data('originalIndex'),
+ prevValue = that.$element.val(),
+ prevIndex = that.$element.prop('selectedIndex');
+
+ // Don't close on multi choice menu
+ if (that.multiple) {
+ e.stopPropagation();
+ }
+
+ e.preventDefault();
+
+ //Don't run if we have been disabled
+ if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {
+ var $options = that.$element.find('option'),
+ $option = $options.eq(clickedIndex),
+ state = $option.prop('selected'),
+ $optgroup = $option.parent('optgroup'),
+ maxOptions = that.options.maxOptions,
+ maxOptionsGrp = $optgroup.data('maxOptions') || false;
+
+ if (!that.multiple) { // Deselect all others if not multi select box
+ $options.prop('selected', false);
+ $option.prop('selected', true);
+ that.$menu.find('.selected').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else { // Toggle the one we have chosen if we are multi select.
+ $option.prop('selected', !state);
+ that.setSelected(clickedIndex, !state);
+ $this.blur();
+
+ if (maxOptions !== false || maxOptionsGrp !== false) {
+ var maxReached = maxOptions < $options.filter(':selected').length,
+ maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;
+
+ if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
+ if (maxOptions && maxOptions == 1) {
+ $options.prop('selected', false);
+ $option.prop('selected', true);
+ that.$menu.find('.selected').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else if (maxOptionsGrp && maxOptionsGrp == 1) {
+ $optgroup.find('option:selected').prop('selected', false);
+ $option.prop('selected', true);
+ var optgroupID = $this.parent().data('optgroup');
+ that.$menu.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else {
+ var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?
+ that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,
+ maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
+ maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
+ $notify = $('<div class="notify"></div>');
+ // If {var} is set in array, replace it
+ /** @deprecated */
+ if (maxOptionsArr[2]) {
+ maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
+ maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
+ }
+
+ $option.prop('selected', false);
+
+ that.$menu.append($notify);
+
+ if (maxOptions && maxReached) {
+ $notify.append($('<div>' + maxTxt + '</div>'));
+ that.$element.trigger('maxReached.bs.select');
+ }
+
+ if (maxOptionsGrp && maxReachedGrp) {
+ $notify.append($('<div>' + maxTxtGrp + '</div>'));
+ that.$element.trigger('maxReachedGrp.bs.select');
+ }
+
+ setTimeout(function () {
+ that.setSelected(clickedIndex, false);
+ }, 10);
+
+ $notify.delay(750).fadeOut(300, function () {
+ $(this).remove();
+ });
+ }
+ }
+ }
+ }
+
+ if (!that.multiple) {
+ that.$button.focus();
+ } else if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ }
+
+ // Trigger select 'change'
+ if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
+ that.$element.triggerNative('change');
+ // $option.prop('selected') is current option state (selected/unselected). state is previous option state.
+ that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]);
+ }
+ }
+ });
+
+ this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {
+ if (e.currentTarget == this) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (that.options.liveSearch && !$(e.target).hasClass('close')) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+ }
+ });
+
+ this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+ });
+
+ this.$menu.on('click', '.popover-title .close', function () {
+ that.$button.click();
+ });
+
+ this.$searchbox.on('click', function (e) {
+ e.stopPropagation();
+ });
+
+ this.$menu.on('click', '.actions-btn', function (e) {
+ if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+
+ e.preventDefault();
+ e.stopPropagation();
+
+ if ($(this).hasClass('bs-select-all')) {
+ that.selectAll();
+ } else {
+ that.deselectAll();
+ }
+ that.$element.triggerNative('change');
+ });
+
+ this.$element.change(function () {
+ that.render(false);
+ });
+ },
+
+ liveSearchListener: function () {
+ var that = this,
+ $no_results = $('<li class="no-results"></li>');
+
+ this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () {
+ that.$menuInner.find('.active').removeClass('active');
+ if (!!that.$searchbox.val()) {
+ that.$searchbox.val('');
+ that.$lis.not('.is-hidden').removeClass('hidden');
+ if (!!$no_results.parent().length) $no_results.remove();
+ }
+ if (!that.multiple) that.$menuInner.find('.selected').addClass('active');
+ setTimeout(function () {
+ that.$searchbox.focus();
+ }, 10);
+ });
+
+ this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {
+ e.stopPropagation();
+ });
+
+ this.$searchbox.on('input propertychange', function () {
+ if (that.$searchbox.val()) {
+ var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a');
+ if (that.options.liveSearchNormalize) {
+ $searchBase = $searchBase.not(':a' + that._searchStyle() + '("' + normalizeToBase(that.$searchbox.val()) + '")');
+ } else {
+ $searchBase = $searchBase.not(':' + that._searchStyle() + '("' + that.$searchbox.val() + '")');
+ }
+ $searchBase.parent().addClass('hidden');
+
+ that.$lis.filter('.dropdown-header').each(function () {
+ var $this = $(this),
+ optgroup = $this.data('optgroup');
+
+ if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) {
+ $this.addClass('hidden');
+ that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden');
+ }
+ });
+
+ var $lisVisible = that.$lis.not('.hidden');
+
+ // hide divider if first or last visible, or if followed by another divider
+ $lisVisible.each(function (index) {
+ var $this = $(this);
+
+ if ($this.hasClass('divider') && (
+ $this.index() === $lisVisible.eq(0).index() ||
+ $this.index() === $lisVisible.last().index() ||
+ $lisVisible.eq(index + 1).hasClass('divider'))) {
+ $this.addClass('hidden');
+ }
+ });
+
+ if (!that.$lis.not('.hidden, .no-results').length) {
+ if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show();
+ that.$menuInner.append($no_results);
+ } else if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+
+ } else {
+ that.$lis.not('.is-hidden').removeClass('hidden');
+ if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ }
+
+ that.$lis.filter('.active').removeClass('active');
+ if (that.$searchbox.val()) that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus();
+ $(this).focus();
+ });
+ },
+
+ _searchStyle: function () {
+ var style = 'icontains';
+ switch (this.options.liveSearchStyle) {
+ case 'begins':
+ case 'startsWith':
+ style = 'ibegins';
+ break;
+ case 'contains':
+ default:
+ break; //no need to change the default
+ }
+
+ return style;
+ },
+
+ val: function (value) {
+ if (typeof value !== 'undefined') {
+ this.$element.val(value);
+ this.render();
+
+ return this.$element;
+ } else {
+ return this.$element.val();
+ }
+ },
+
+ selectAll: function () {
+ this.findLis();
+ this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', true);
+ this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').addClass('selected');
+ this.render(false);
+ },
+
+ deselectAll: function () {
+ this.findLis();
+ this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', false);
+ this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').removeClass('selected');
+ this.render(false);
+ },
+
+ keydown: function (e) {
+ var $this = $(this),
+ $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),
+ $items,
+ that = $parent.data('this'),
+ index,
+ next,
+ first,
+ last,
+ prev,
+ nextPrev,
+ prevIndex,
+ isActive,
+ selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',
+ keyCodeMap = {
+ 32: ' ',
+ 48: '0',
+ 49: '1',
+ 50: '2',
+ 51: '3',
+ 52: '4',
+ 53: '5',
+ 54: '6',
+ 55: '7',
+ 56: '8',
+ 57: '9',
+ 59: ';',
+ 65: 'a',
+ 66: 'b',
+ 67: 'c',
+ 68: 'd',
+ 69: 'e',
+ 70: 'f',
+ 71: 'g',
+ 72: 'h',
+ 73: 'i',
+ 74: 'j',
+ 75: 'k',
+ 76: 'l',
+ 77: 'm',
+ 78: 'n',
+ 79: 'o',
+ 80: 'p',
+ 81: 'q',
+ 82: 'r',
+ 83: 's',
+ 84: 't',
+ 85: 'u',
+ 86: 'v',
+ 87: 'w',
+ 88: 'x',
+ 89: 'y',
+ 90: 'z',
+ 96: '0',
+ 97: '1',
+ 98: '2',
+ 99: '3',
+ 100: '4',
+ 101: '5',
+ 102: '6',
+ 103: '7',
+ 104: '8',
+ 105: '9'
+ };
+
+ if (that.options.liveSearch) $parent = $this.parent().parent();
+
+ if (that.options.container) $parent = that.$menu;
+
+ $items = $('[role=menu] li a', $parent);
+
+ isActive = that.$menu.parent().hasClass('open');
+
+ if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 65 && e.keyCode <= 90)) {
+ if (!that.options.container) {
+ that.setSize();
+ that.$menu.parent().addClass('open');
+ isActive = true;
+ } else {
+ that.$newElement.trigger('click');
+ }
+ that.$searchbox.focus();
+ }
+
+ if (that.options.liveSearch) {
+ if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) {
+ e.preventDefault();
+ that.$menu.parent().removeClass('open');
+ if (that.options.container) that.$newElement.removeClass('open');
+ that.$button.focus();
+ }
+ // $items contains li elements when liveSearch is enabled
+ $items = $('[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)', $parent);
+ if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {
+ if ($items.filter('.active').length === 0) {
+ $items = that.$newElement.find('li');
+ if (that.options.liveSearchNormalize) {
+ $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');
+ } else {
+ $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')');
+ }
+ }
+ }
+ }
+
+ if (!$items.length) return;
+
+ if (/(38|40)/.test(e.keyCode.toString(10))) {
+ index = $items.index($items.filter(':focus'));
+ first = $items.parent(selector).first().data('originalIndex');
+ last = $items.parent(selector).last().data('originalIndex');
+ next = $items.eq(index).parent().nextAll(selector).eq(0).data('originalIndex');
+ prev = $items.eq(index).parent().prevAll(selector).eq(0).data('originalIndex');
+ nextPrev = $items.eq(next).parent().prevAll(selector).eq(0).data('originalIndex');
+
+ if (that.options.liveSearch) {
+ $items.each(function (i) {
+ if (!$(this).hasClass('disabled')) {
+ $(this).data('index', i);
+ }
+ });
+ index = $items.index($items.filter('.active'));
+ first = $items.first().data('index');
+ last = $items.last().data('index');
+ next = $items.eq(index).nextAll().eq(0).data('index');
+ prev = $items.eq(index).prevAll().eq(0).data('index');
+ nextPrev = $items.eq(next).prevAll().eq(0).data('index');
+ }
+
+ prevIndex = $this.data('prevIndex');
+
+ if (e.keyCode == 38) {
+ if (that.options.liveSearch) index -= 1;
+ if (index != nextPrev && index > prev) index = prev;
+ if (index < first) index = first;
+ if (index == prevIndex) index = last;
+ } else if (e.keyCode == 40) {
+ if (that.options.liveSearch) index += 1;
+ if (index == -1) index = 0;
+ if (index != nextPrev && index < next) index = next;
+ if (index > last) index = last;
+ if (index == prevIndex) index = first;
+ }
+
+ $this.data('prevIndex', index);
+
+ if (!that.options.liveSearch) {
+ $items.eq(index).focus();
+ } else {
+ e.preventDefault();
+ if (!$this.hasClass('dropdown-toggle')) {
+ $items.removeClass('active').eq(index).addClass('active').children('a').focus();
+ $this.focus();
+ }
+ }
+
+ } else if (!$this.is('input')) {
+ var keyIndex = [],
+ count,
+ prevKey;
+
+ $items.each(function () {
+ if (!$(this).parent().hasClass('disabled')) {
+ if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {
+ keyIndex.push($(this).parent().index());
+ }
+ }
+ });
+
+ count = $(document).data('keycount');
+ count++;
+ $(document).data('keycount', count);
+
+ prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);
+
+ if (prevKey != keyCodeMap[e.keyCode]) {
+ count = 1;
+ $(document).data('keycount', count);
+ } else if (count >= keyIndex.length) {
+ $(document).data('keycount', 0);
+ if (count > keyIndex.length) count = 1;
+ }
+
+ $items.eq(keyIndex[count - 1]).focus();
+ }
+
+ // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu.
+ if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {
+ if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();
+ if (!that.options.liveSearch) {
+ var elem = $(':focus');
+ elem.click();
+ // Bring back focus for multiselects
+ elem.focus();
+ // Prevent screen from scrolling if the user hit the spacebar
+ e.preventDefault();
+ // Fixes spacebar selection of dropdown items in FF & IE
+ $(document).data('spaceSelect', true);
+ } else if (!/(32)/.test(e.keyCode.toString(10))) {
+ that.$menu.find('.active a').click();
+ $this.focus();
+ }
+ $(document).data('keycount', 0);
+ }
+
+ if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {
+ that.$menu.parent().removeClass('open');
+ if (that.options.container) that.$newElement.removeClass('open');
+ that.$button.focus();
+ }
+ },
+
+ mobile: function () {
+ this.$element.addClass('mobile-device').appendTo(this.$newElement);
+ if (this.options.container) this.$menu.hide();
+ },
+
+ refresh: function () {
+ this.$lis = null;
+ this.liObj = {};
+ this.reloadLi();
+ this.render();
+ this.checkDisabled();
+ this.liHeight(true);
+ this.setStyle();
+ this.setWidth();
+ if (this.$lis) this.$searchbox.trigger('propertychange');
+
+ this.$element.trigger('refreshed.bs.select');
+ },
+
+ hide: function () {
+ this.$newElement.hide();
+ },
+
+ show: function () {
+ this.$newElement.show();
+ },
+
+ remove: function () {
+ this.$newElement.remove();
+ this.$element.remove();
+ }
+ };
+
+ // SELECTPICKER PLUGIN DEFINITION
+ // ==============================
+ function Plugin(option, event) {
+ // get the args of the outer function..
+ var args = arguments;
+ // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them
+ // to get lost/corrupted in android 2.3 and IE9 #715 #775
+ var _option = option,
+ _event = event;
+ [].shift.apply(args);
+
+ var value;
+ var chain = this.each(function () {
+ var $this = $(this);
+ if ($this.is('select')) {
+ var data = $this.data('selectpicker'),
+ options = typeof _option == 'object' && _option;
+
+ if (!data) {
+ var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);
+ $this.data('selectpicker', (data = new Selectpicker(this, config, _event)));
+ } else if (options) {
+ for (var i in options) {
+ if (options.hasOwnProperty(i)) {
+ data.options[i] = options[i];
+ }
+ }
+ }
+
+ if (typeof _option == 'string') {
+ if (data[_option] instanceof Function) {
+ value = data[_option].apply(data, args);
+ } else {
+ value = data.options[_option];
+ }
+ }
+ }
+ });
+
+ if (typeof value !== 'undefined') {
+ //noinspection JSUnusedAssignment
+ return value;
+ } else {
+ return chain;
+ }
+ }
+
+ var old = $.fn.selectpicker;
+ $.fn.selectpicker = Plugin;
+ $.fn.selectpicker.Constructor = Selectpicker;
+
+ // SELECTPICKER NO CONFLICT
+ // ========================
+ $.fn.selectpicker.noConflict = function () {
+ $.fn.selectpicker = old;
+ return this;
+ };
+
+ $(document)
+ .data('keycount', 0)
+ .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown)
+ .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) {
+ e.stopPropagation();
+ });
+
+ // SELECTPICKER DATA-API
+ // =====================
+ $(window).on('load.bs.select.data-api', function () {
+ $('.selectpicker').each(function () {
+ var $selectpicker = $(this);
+ Plugin.call($selectpicker, $selectpicker.data());
+ })
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-bg_BG.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-bg_BG.js
new file mode 100644
index 0000000..4d99b60
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-bg_BG.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: BG (Bulgaria)
+ * Region: BG (Bulgaria)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Нищо избрано',
+ noneResultsText: 'Няма резултат за {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} избран елемент" : "{0} избрани елемента";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Лимита е достигнат ({n} елемент максимум)' : 'Лимита е достигнат ({n} елемента максимум)',
+ (numGroup == 1) ? 'Груповия лимит е достигнат ({n} елемент максимум)' : 'Груповия лимит е достигнат ({n} елемента максимум)'
+ ];
+ },
+ selectAllText: 'Избери всички',
+ deselectAllText: 'Размаркирай всички',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-cs_CZ.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-cs_CZ.js
new file mode 100644
index 0000000..d457279
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-cs_CZ.js
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: CS
+ * Region: CZ (Czech Republic)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nic není vybráno',
+ noneResultsText: 'Žádné výsledky {0}',
+ countSelectedText: 'Označeno {0} z {1}',
+ maxOptionsText: ['Limit překročen ({n} {var} max)', 'Limit skupiny překročen ({n} {var} max)', ['položek', 'položka']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-da_DK.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-da_DK.js
new file mode 100644
index 0000000..5376021
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-da_DK.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: DA (Danish)
+ * Region: DK (Denmark)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Intet valgt',
+ noneResultsText: 'Ingen resultater fundet {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} valgt" : "{0} valgt";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Begrænsning nået (max {n} valgt)' : 'Begrænsning nået (max {n} valgte)',
+ (numGroup == 1) ? 'Gruppe-begrænsning nået (max {n} valgt)' : 'Gruppe-begrænsning nået (max {n} valgte)'
+ ];
+ },
+ selectAllText: 'Markér alle',
+ deselectAllText: 'Afmarkér alle',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-de_DE.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-de_DE.js
new file mode 100644
index 0000000..d4d5b09
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-de_DE.js
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: DE (German, deutsch)
+ * Region: DE (Germany, Deutschland)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Bitte wählen...',
+ noneResultsText: 'Keine Ergebnisse für {0}',
+ countSelectedText: '{0} von {1} ausgewählt',
+ maxOptionsText: ['Limit erreicht ({n} {var} max.)', 'Gruppen-Limit erreicht ({n} {var} max.)', ['Eintrag', 'Einträge']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-en_US.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-en_US.js
new file mode 100644
index 0000000..acb9035
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-en_US.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: EN (English)
+ * Region: US (United States)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nothing selected',
+ noneResultsText: 'No results match {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
+ (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
+ ];
+ },
+ selectAllText: 'Select All',
+ deselectAllText: 'Deselect All',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-es_CL.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-es_CL.js
new file mode 100644
index 0000000..ed17a5f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-es_CL.js
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: ES (Spanish)
+ * Region: CL (Chile)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'No hay selección',
+ noneResultsText: 'No hay resultados {0}',
+ countSelectedText: 'Seleccionados {0} de {1}',
+ maxOptionsText: ['Límite alcanzado ({n} {var} max)', 'Límite del grupo alcanzado({n} {var} max)', ['elementos', 'element']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-eu.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-eu.js
new file mode 100644
index 0000000..037c7d7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-eu.js
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: EU (Basque)
+ * Region:
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Hautapenik ez',
+ noneResultsText: 'Emaitzarik ez {0}',
+ countSelectedText: '{1}(e)tik {0} hautatuta',
+ maxOptionsText: ['Mugara iritsita ({n} {var} gehienez)', 'Taldearen mugara iritsita ({n} {var} gehienez)', ['elementu', 'elementu']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-fa_IR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-fa_IR.js
new file mode 100644
index 0000000..00b1798
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-fa_IR.js
@@ -0,0 +1,16 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: FA (Farsi)
+ * Region: IR (Iran)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'چیزی انتخاب نشده است',
+ noneResultsText: 'هیج مشابهی برای {0} پیدا نشد',
+ countSelectedText: "{0} از {1} مورد انتخاب شده",
+ maxOptionsText: ['بیشتر ممکن نیست {حداکثر {n} عدد}', 'بیشتر ممکن نیست {حداکثر {n} عدد}'],
+ selectAllText: 'انتخاب همه',
+ deselectAllText: 'انتخاب هیچ کدام',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-fr_FR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-fr_FR.js
new file mode 100644
index 0000000..133320f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-fr_FR.js
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: FR (French; Français)
+ * Region: FR (France)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Aucune sélection',
+ noneResultsText: 'Aucun résultat pour {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected > 1) ? "{0} éléments sélectionnés" : "{0} élément sélectionné";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll > 1) ? 'Limite atteinte ({n} éléments max)' : 'Limite atteinte ({n} élément max)',
+ (numGroup > 1) ? 'Limite du groupe atteinte ({n} éléments max)' : 'Limite du groupe atteinte ({n} élément max)'
+ ];
+ },
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-hu_HU.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-hu_HU.js
new file mode 100644
index 0000000..5f5a561
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-hu_HU.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: HU (Hungarian)
+ * Region: HU (Hungary)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Válasszon!',
+ noneResultsText: 'Nincs találat {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return '{n} elem kiválasztva';
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Legfeljebb {n} elem választható',
+ 'A csoportban legfeljebb {n} elem választható'
+ ];
+ },
+ selectAllText: 'Mind',
+ deselectAllText: 'Egyik sem',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-it_IT.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-it_IT.js
new file mode 100644
index 0000000..3cf2e13
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-it_IT.js
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: IT (Italian; italiano)
+ * Region: IT (Italy; Italia)
+ * Author: Michele Beltrame <mb@cattlegrid.info>
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nessuna selezione',
+ noneResultsText: 'Nessun risultato per {0}',
+ countSelectedText: 'Selezionati {0} di {1}',
+ maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ko_KR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ko_KR.js
new file mode 100644
index 0000000..9583cc5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ko_KR.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: KO (Korean)
+ * Region: KR (South Korea)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '항목을 선택해주세요',
+ noneResultsText: '{0} 검색 결과가 없습니다',
+ countSelectedText: function (numSelected, numTotal) {
+ return "{0}개를 선택하였습니다";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ '{n}개까지 선택 가능합니다',
+ '해당 그룹은 {n}개까지 선택 가능합니다'
+ ];
+ },
+ selectAllText: '전체선택',
+ deselectAllText: '전체해제',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-nl_NL.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-nl_NL.js
new file mode 100644
index 0000000..96b857a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-nl_NL.js
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: NL (Dutch; Nederlands)
+ * Region: NL (Europe)
+ * Author: Daan Rosbergen (Badmuts)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Niets geselecteerd',
+ noneResultsText: 'Geen resultaten gevonden voor {0}',
+ countSelectedText: '{0} van {1} geselecteerd',
+ maxOptionsText: ['Limiet bereikt ({n} {var} max)', 'Groep limiet bereikt ({n} {var} max)', ['items', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pl_PL.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pl_PL.js
new file mode 100644
index 0000000..e7eccaf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pl_PL.js
@@ -0,0 +1,16 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: PL (Polish)
+ * Region: EU (Europe)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nic nie zaznaczono',
+ noneResultsText: 'Brak wyników wyszukiwania {0}',
+ countSelectedText: 'Zaznaczono {0} z {1}',
+ maxOptionsText: ['Osiągnięto limit ({n} {var} max)', 'Limit grupy osiągnięty ({n} {var} max)', ['elementy', 'element']],
+ selectAll: 'Zaznacz wszystkie',
+ deselectAll: 'Odznacz wszystkie',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pt_BR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pt_BR.js
new file mode 100644
index 0000000..610871b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pt_BR.js
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: PT (Portuguese; português)
+ * Region: BR (Brazil; Brasil)
+ * Author: Rodrigo de Avila <rodrigo@avila.net.br>
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nada selecionado',
+ noneResultsText: 'Nada encontrado contendo {0}',
+ countSelectedText: 'Selecionado {0} de {1}',
+ maxOptionsText: ['Limite excedido (máx. {n} {var})', 'Limite do grupo excedido (máx. {n} {var})', ['itens', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pt_PT.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pt_PT.js
new file mode 100644
index 0000000..2d07e87
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-pt_PT.js
@@ -0,0 +1,15 @@
+/*
+* Translated default messages for bootstrap-select.
+* Locale: PT (Portuguese; português)
+* Region: PT (Portugal; Portugal)
+* Author: Burnspirit <burnspirit@gmail.com>
+*/
+(function ($) {
+$.fn.selectpicker.defaults = {
+noneSelectedText: 'Nenhum seleccionado',
+noneResultsText: 'Sem resultados contendo {0}',
+countSelectedText: 'Selecionado {0} de {1}',
+maxOptionsText: ['Limite ultrapassado (máx. {n} {var})', 'Limite de seleções ultrapassado (máx. {n} {var})', ['itens', 'item']],
+multipleSeparator: ', '
+};
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ro_RO.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ro_RO.js
new file mode 100644
index 0000000..c6ddf6f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ro_RO.js
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: RO (Romanian)
+ * Region: RO (Romania)
+ * Alex Florea <alecz.fia@gmail.com>
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nu a fost selectat nimic',
+ noneResultsText: 'Nu exista niciun rezultat {0}',
+ countSelectedText: '{0} din {1} selectat(e)',
+ maxOptionsText: ['Limita a fost atinsa ({n} {var} max)', 'Limita de grup a fost atinsa ({n} {var} max)', ['iteme', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ru_RU.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ru_RU.js
new file mode 100644
index 0000000..c354f8c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ru_RU.js
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: RU (Russian; Русский)
+ * Region: RU (Russian Federation)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Ничего не выбрано',
+ noneResultsText: 'Совпадений не найдено {0}',
+ countSelectedText: 'Выбрано {0} из {1}',
+ maxOptionsText: ['Достигнут предел ({n} {var} максимум)', 'Достигнут предел в группе ({n} {var} максимум)', ['items', 'item']],
+ doneButtonText: 'Закрыть',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sk_SK.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sk_SK.js
new file mode 100644
index 0000000..e96762d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sk_SK.js
@@ -0,0 +1,16 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: SK
+ * Region: SK (Slovak Republic)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Vyberte zo zoznamu',
+ noneResultsText: 'Pre výraz {0} neboli nájdené žiadne výsledky',
+ countSelectedText: 'Vybrané {0} z {1}',
+ maxOptionsText: ['Limit prekročený ({n} {var} max)', 'Limit skupiny prekročený ({n} {var} max)', ['položiek', 'položka']],
+ selectAllText: 'Vybrať všetky',
+ deselectAllText: 'Zrušiť výber',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sl_SI.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sl_SI.js
new file mode 100644
index 0000000..a328c8c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sl_SI.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: SL (Slovenian)
+ * Region: SI (Slovenia)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nič izbranega',
+ noneResultsText: 'Ni zadetkov za {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ "Število izbranih: {0}";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Omejitev dosežena (max. izbranih: {n})',
+ 'Omejitev skupine dosežena (max. izbranih: {n})'
+ ];
+ },
+ selectAllText: 'Izberi vse',
+ deselectAllText: 'Počisti izbor',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sv_SE.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sv_SE.js
new file mode 100644
index 0000000..89128e9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-sv_SE.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: SV (Swedish)
+ * Region: SE (Sweden)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Inget valt',
+ noneResultsText: 'Inget sökresultat matchar {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected === 1) ? "{0} alternativ valt" : "{0} alternativ valda";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Gräns uppnåd (max {n} alternativ)',
+ 'Gräns uppnåd (max {n} gruppalternativ)'
+ ];
+ },
+ selectAllText: 'Markera alla',
+ deselectAllText: 'Avmarkera alla',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-tr_TR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-tr_TR.js
new file mode 100644
index 0000000..fe43937
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-tr_TR.js
@@ -0,0 +1,24 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: TR (Turkey)
+ * Region: TR (Europe)
+ * Author: Serhan Güney
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Hiçbiri seçilmedi',
+ noneResultsText: 'Hiçbir sonuç bulunamadı {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} öğe seçildi" : "{0} öğe seçildi";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit aşıldı (maksimum {n} sayıda öğe )' : 'Limit aşıldı (maksimum {n} sayıda öğe)',
+ (numGroup == 1) ? 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' : 'Grup limiti aşıldı (maksimum {n} sayıda öğe)'
+ ];
+ },
+ selectAllText: 'Tümünü Seç',
+ deselectAllText: 'Seçiniz',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ua_UA.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ua_UA.js
new file mode 100644
index 0000000..e1d3958
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-ua_UA.js
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: UA (Ukrainian; Українська)
+ * Region: UA (Ukraine)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Нічого не вибрано',
+ noneResultsText: 'Збігів не знайдено {0}',
+ countSelectedText: 'Вибрано {0} із {1}',
+ maxOptionsText: ['Досягнута межа ({n} {var} максимум)', 'Досягнута межа в групі ({n} {var} максимум)', ['items', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-zh_CN.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-zh_CN.js
new file mode 100644
index 0000000..ad1c132
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-zh_CN.js
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: ZH (Chinese)
+ * Region: CN (China)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '没有选中任何项',
+ noneResultsText: '没有找到匹配项',
+ countSelectedText: '选中{1}中的{0}项',
+ maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'],
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-zh_TW.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-zh_TW.js
new file mode 100644
index 0000000..c05add3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/js/i18n/defaults-zh_TW.js
@@ -0,0 +1,16 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: ZH (Chinese)
+ * Region: TW (Taiwan)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '沒有選取任何項目',
+ noneResultsText: '沒有找到符合的結果',
+ countSelectedText: '已經選取{0}個項目',
+ maxOptionsText: ['超過限制 (最多選擇{n}項)', '超過限制(最多選擇{n}組)'],
+ selectAllText: '選取全部',
+ deselectAllText: '全部取消',
+ multipleSeparator: ', '
+ };
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/less/bootstrap-select.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/less/bootstrap-select.less
new file mode 100644
index 0000000..13808c9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/less/bootstrap-select.less
@@ -0,0 +1,332 @@
+@import "variables";
+
+// Mixins
+.cursor-disabled() {
+ cursor: not-allowed;
+}
+
+// Rules
+.bootstrap-select {
+ width: 220px \0; /*IE9 and below*/
+
+ // The selectpicker button
+ > .dropdown-toggle {
+ width: 100%;
+ padding-right: 25px;
+ }
+
+ // Error display
+ .has-error & .dropdown-toggle,
+ .error & .dropdown-toggle {
+ border-color: @color-red-error;
+ }
+
+ &.fit-width {
+ width: auto !important;
+ }
+
+ &:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
+ width: @width-default;
+ }
+
+ .dropdown-toggle:focus {
+ outline: thin dotted #333333 !important;
+ outline: 5px auto -webkit-focus-ring-color !important;
+ outline-offset: -2px;
+ }
+}
+
+.bootstrap-select.form-control {
+ margin-bottom: 0;
+ padding: 0;
+ border: none;
+
+ &:not([class*="col-"]) {
+ width: 100%;
+ }
+
+ &.input-group-btn {
+ z-index: auto;
+ }
+}
+
+// The selectpicker components
+.bootstrap-select.btn-group {
+ &:not(.input-group-btn),
+ &[class*="col-"] {
+ float: none;
+ display: inline-block;
+ margin-left: 0;
+ }
+
+ // Forces the pull to the right, if necessary
+ &,
+ &[class*="col-"],
+ .row &[class*="col-"] {
+ &.dropdown-menu-right {
+ float: right;
+ }
+ }
+
+ .form-inline &,
+ .form-horizontal &,
+ .form-group & {
+ margin-bottom: 0;
+ }
+
+ .form-group-lg &.form-control,
+ .form-group-sm &.form-control {
+ padding: 0;
+ }
+
+ // Set the width of the live search (and any other form control within an inline form)
+ // see https://github.com/silviomoreto/bootstrap-select/issues/685
+ .form-inline & .form-control {
+ width: 100%;
+ }
+
+ &.disabled,
+ > .disabled {
+ .cursor-disabled();
+
+ &:focus {
+ outline: none !important;
+ }
+ }
+
+ // The selectpicker button
+ .dropdown-toggle {
+ .filter-option {
+ display: inline-block;
+ overflow: hidden;
+ width: 100%;
+ text-align: left;
+ }
+
+ .caret {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ margin-top: -2px;
+ vertical-align: middle;
+ }
+ }
+
+ &[class*="col-"] .dropdown-toggle {
+ width: 100%;
+ }
+
+ // The selectpicker dropdown
+ .dropdown-menu {
+ min-width: 100%;
+ z-index: @zindex-select-dropdown;
+ box-sizing: border-box;
+
+ &.inner {
+ position: static;
+ float: none;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ box-shadow: none;
+ }
+
+ li {
+ position: relative;
+
+ &.active small {
+ color: #fff;
+ }
+
+ &.disabled a {
+ .cursor-disabled();
+ }
+
+ a {
+ cursor: pointer;
+
+ &.opt {
+ position: relative;
+ padding-left: 2.25em;
+ }
+
+ span.check-mark {
+ display: none;
+ }
+
+ span.text {
+ display: inline-block;
+ }
+ }
+
+ small {
+ padding-left: 0.5em;
+ }
+ }
+
+ .notify {
+ position: absolute;
+ bottom: 5px;
+ width: 96%;
+ margin: 0 2%;
+ min-height: 26px;
+ padding: 3px 5px;
+ background: rgb(245, 245, 245);
+ border: 1px solid rgb(227, 227, 227);
+ box-shadow: inset 0 1px 1px fade(rgb(0, 0, 0), 5%);
+ pointer-events: none;
+ opacity: 0.9;
+ box-sizing: border-box;
+ }
+ }
+
+ .no-results {
+ padding: 3px;
+ background: #f5f5f5;
+ margin: 0 5px;
+ white-space: nowrap;
+ }
+
+ &.fit-width .dropdown-toggle {
+ .filter-option {
+ position: static;
+ }
+
+ .caret {
+ position: static;
+ top: auto;
+ margin-top: -1px;
+ }
+ }
+
+ &.show-tick .dropdown-menu li {
+ &.selected a span.check-mark {
+ position: absolute;
+ display: inline-block;
+ right: 15px;
+ margin-top: 5px;
+ }
+
+ a span.text {
+ margin-right: 34px;
+ }
+ }
+}
+
+.bootstrap-select.show-menu-arrow {
+ &.open > .dropdown-toggle {
+ z-index: (@zindex-select-dropdown + 1);
+ }
+
+ .dropdown-toggle {
+ &:before {
+ content: '';
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid @color-grey-arrow;
+ position: absolute;
+ bottom: -4px;
+ left: 9px;
+ display: none;
+ }
+
+ &:after {
+ content: '';
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid white;
+ position: absolute;
+ bottom: -4px;
+ left: 10px;
+ display: none;
+ }
+ }
+
+ &.dropup .dropdown-toggle {
+ &:before {
+ bottom: auto;
+ top: -3px;
+ border-top: 7px solid @color-grey-arrow;
+ border-bottom: 0;
+ }
+
+ &:after {
+ bottom: auto;
+ top: -3px;
+ border-top: 6px solid white;
+ border-bottom: 0;
+ }
+ }
+
+ &.pull-right .dropdown-toggle {
+ &:before {
+ right: 12px;
+ left: auto;
+ }
+
+ &:after {
+ right: 13px;
+ left: auto;
+ }
+ }
+
+ &.open > .dropdown-toggle {
+ &:before,
+ &:after {
+ display: block;
+ }
+ }
+}
+
+.bs-searchbox,
+.bs-actionsbox,
+.bs-donebutton {
+ padding: 4px 8px;
+}
+
+.bs-actionsbox {
+ float: left;
+ width: 100%;
+ box-sizing: border-box;
+
+ & .btn-group button {
+ width: 50%;
+ }
+}
+
+.bs-donebutton {
+ float: left;
+ width: 100%;
+ box-sizing: border-box;
+
+ & .btn-group button {
+ width: 100%;
+ }
+}
+
+.bs-searchbox {
+ & + .bs-actionsbox {
+ padding: 0 8px 4px;
+ }
+
+ & .form-control {
+ margin-bottom: 0;
+ width: 100%;
+ }
+}
+
+select.bs-select-hidden,
+select.selectpicker {
+ display: none !important;
+}
+
+select.mobile-device {
+ position: absolute !important;
+ top: 0;
+ left: 0;
+ display: block !important;
+ width: 100%;
+ height: 100% !important;
+ opacity: 0;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/less/variables.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/less/variables.less
new file mode 100644
index 0000000..c6deaa3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/less/variables.less
@@ -0,0 +1,6 @@
+@color-red-error: rgb(185, 74, 72);
+@color-grey-arrow: rgba(204, 204, 204, 0.2);
+
+@width-default: 220px; // 3 960px-grid columns
+
+@zindex-select-dropdown: 1035; // must be lower than a modal background (1040) but higher than the fixed navbar (1030)
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/LICENSE b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/LICENSE
new file mode 100644
index 0000000..abb940a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-select/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2015 bootstrap-select
+
+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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/app.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/app.js
new file mode 100644
index 0000000..859c3d0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/app.js
@@ -0,0 +1,29 @@
+
+/**
+ * Module dependencies.
+ */
+
+var express = require('express');
+var http = require('http');
+var path = require('path');
+
+var app = express();
+
+// all environments
+app.set('port', process.env.PORT || 3000);
+app.use(express.favicon());
+app.use(express.logger('dev'));
+app.use(express.json());
+app.use(express.urlencoded());
+app.use(express.methodOverride());
+app.use(express.static(path.join(__dirname, '/public')));
+app.use(express.static(path.join(__dirname, '/tests')));
+
+// development only
+if ('development' == app.get('env')) {
+ app.use(express.errorHandler());
+}
+
+http.createServer(app).listen(app.get('port'), function(){
+ console.log('Express server listening on port ' + app.get('port'));
+});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/bower.json
new file mode 100644
index 0000000..1b009d7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/bower.json
@@ -0,0 +1,33 @@
+{
+ "name": "bootstrap-treeview",
+ "description": "Tree View for Twitter Bootstrap",
+ "version": "1.2.0",
+ "homepage": "https://github.com/jonmiles/bootstrap-treeview",
+ "main": [
+ "dist/bootstrap-treeview.min.js",
+ "dist/bootstrap-treeview.min.css"
+ ],
+ "keywords": [
+ "twitter",
+ "bootstrap",
+ "tree",
+ "treeview",
+ "tree-view",
+ "navigation",
+ "javascript",
+ "jquery",
+ "jquery-plugin"
+ ],
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "tests"
+ ],
+ "dependencies": {
+ "jquery": ">= 1.9.0",
+ "bootstrap": ">= 3.0.0"
+ },
+ "devDependencies": {}
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/CHANGELOG.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/CHANGELOG.md
new file mode 100644
index 0000000..a90b082
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/CHANGELOG.md
@@ -0,0 +1,91 @@
+# Change Log
+All notable changes to this project will be documented in this file.
+This project adheres to [Semantic Versioning](http://semver.org/).
+
+## v1.2.0 - 9th May, 2015
+
+### New Features
+
+- Disable nodes, allow a tree node to disabled (not selectable, expandable or checkable)
+
+ - Added node state property `disabled` to set a node initial state
+
+ - Methods `disableAll`, `disableNode`, `enableAll`, `enableNode` and `toggleNodeDisabled` added to control state programmatically
+
+ - Events `nodeDisabled` and `nodeEnabled`
+
+- Checkable nodes, allows a tree node to be checked or unchecked.
+
+ - Added node state property `checked` to set a node initial state
+
+ - Pass option `{showCheckbox: true}` to initialize tree view with checkboxes
+
+ - Use options `checkedIcon` and `uncheckedIcon` to configure checkbox icons
+
+ - Methods `checkAll`, `checkNode`, `uncheckAll`, `uncheckNode` and `toggleNodeChecked` to control state programmatically
+
+ - Events `nodeChecked` and `nodeUnchecked`
+
+- New option + node property `selectedIcon` to support displaying different icons when a node is selected.
+
+- New search option `{ revealResults : true | false }` which when set to true will automatically expand the tree view to reveal matching nodes
+
+- New method `revealNode` which expands the tree view to reveal a given node
+
+- New methods to retrieve nodes by state : `getSelected`, `getUnselected`, `getExpanded`, `getCollapsed`, `getChecked`, `getUnchecked`, `getDisabled` and `getEnabled`
+
+
+### Changes
+- Removed nodeIcon by default, by popular demand. Use `{nodeIcon: 'glyphicon glyphicon-stop'}` in initial options to add a node icon.
+
+- Search behaviour, by default search will the expand tree view and reveal results. Alternatively pass `{revealResults:false}`
+
+- Method collapseNode accepts new option `{ ignoreChildren: true | false }`. The default is false, passing true will leave child nodes uncollapsed
+
+
+### Bug Fixes
+- Remove unnecessary render in clearSearch when called from search
+
+- Child nodes should collapse by default on collapseNode
+
+- Incorrect expand collapse icon displayed when nodes array is empty
+
+
+
+
+## v1.1.0 - 29th March, 2015
+
+### New Features
+
+- Added node state properties `expanded` and `selected` so a node's intial state can be set
+
+- New get methods `getNode`, `getParent` and `getSiblings` for retrieving nodes and their immediate relations
+
+- New select methods `selectNode`, `unselectNode` and `toggleNodeSelected`
+
+- Adding `nodeUnselected` event
+
+- New global option `multiSelect` which allows multiple nodes to hold the selected state, default is false
+
+- New expand collapse methods `expandAll`, `collapseAll`, `expandNode`, `collapseNode` and `toggleNodeExpanded`
+
+- Adding events `nodeExpanded` and `nodeCollapsed`
+
+- New methods `search` and `clearSearch` which allow you to query the tree view for nodes based on a `text` value
+
+- Adding events `searchComplete` and `searchCleared`
+
+- New global options `highlightSearchResults`, `searchResultColor` and `searchResultBackColor` for configuring how search results are displayed
+
+
+
+
+## v1.0.2 - 6th February, 2015
+
+### Changes
+- jQuery dependency version updated in Bower
+
+### Bug Fixes
+- Events not unbound when re-initialised
+
+- CSS selectors too general, affecting other page elements
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/dist/bootstrap-treeview.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/dist/bootstrap-treeview.min.css
new file mode 100644
index 0000000..57a348a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/dist/bootstrap-treeview.min.css
@@ -0,0 +1 @@
+.treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/dist/bootstrap-treeview.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/dist/bootstrap-treeview.min.js
new file mode 100644
index 0000000..9e28038
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/dist/bootstrap-treeview.min.js
@@ -0,0 +1 @@
+!function(a,b,c,d){"use strict";var e="treeview",f={};f.settings={injectStyle:!0,levels:2,expandIcon:"glyphicon glyphicon-plus",collapseIcon:"glyphicon glyphicon-minus",emptyIcon:"glyphicon",nodeIcon:"",selectedIcon:"",checkedIcon:"glyphicon glyphicon-check",uncheckedIcon:"glyphicon glyphicon-unchecked",color:d,backColor:d,borderColor:d,onhoverColor:"#F5F5F5",selectedColor:"#FFFFFF",selectedBackColor:"#428bca",searchResultColor:"#D9534F",searchResultBackColor:d,enableLinks:!1,highlightSelected:!0,highlightSearchResults:!0,showBorder:!0,showIcon:!0,showCheckbox:!1,showTags:!1,multiSelect:!1,onNodeChecked:d,onNodeCollapsed:d,onNodeDisabled:d,onNodeEnabled:d,onNodeExpanded:d,onNodeSelected:d,onNodeUnchecked:d,onNodeUnselected:d,onSearchComplete:d,onSearchCleared:d},f.options={silent:!1,ignoreChildren:!1},f.searchOptions={ignoreCase:!0,exactMatch:!1,revealResults:!0};var g=function(b,c){return this.$element=a(b),this.elementId=b.id,this.styleId=this.elementId+"-style",this.init(c),{options:this.options,init:a.proxy(this.init,this),remove:a.proxy(this.remove,this),getNode:a.proxy(this.getNode,this),getParent:a.proxy(this.getParent,this),getSiblings:a.proxy(this.getSiblings,this),getSelected:a.proxy(this.getSelected,this),getUnselected:a.proxy(this.getUnselected,this),getExpanded:a.proxy(this.getExpanded,this),getCollapsed:a.proxy(this.getCollapsed,this),getChecked:a.proxy(this.getChecked,this),getUnchecked:a.proxy(this.getUnchecked,this),getDisabled:a.proxy(this.getDisabled,this),getEnabled:a.proxy(this.getEnabled,this),selectNode:a.proxy(this.selectNode,this),unselectNode:a.proxy(this.unselectNode,this),toggleNodeSelected:a.proxy(this.toggleNodeSelected,this),collapseAll:a.proxy(this.collapseAll,this),collapseNode:a.proxy(this.collapseNode,this),expandAll:a.proxy(this.expandAll,this),expandNode:a.proxy(this.expandNode,this),toggleNodeExpanded:a.proxy(this.toggleNodeExpanded,this),revealNode:a.proxy(this.revealNode,this),checkAll:a.proxy(this.checkAll,this),checkNode:a.proxy(this.checkNode,this),uncheckAll:a.proxy(this.uncheckAll,this),uncheckNode:a.proxy(this.uncheckNode,this),toggleNodeChecked:a.proxy(this.toggleNodeChecked,this),disableAll:a.proxy(this.disableAll,this),disableNode:a.proxy(this.disableNode,this),enableAll:a.proxy(this.enableAll,this),enableNode:a.proxy(this.enableNode,this),toggleNodeDisabled:a.proxy(this.toggleNodeDisabled,this),search:a.proxy(this.search,this),clearSearch:a.proxy(this.clearSearch,this)}};g.prototype.init=function(b){this.tree=[],this.nodes=[],b.data&&("string"==typeof b.data&&(b.data=a.parseJSON(b.data)),this.tree=a.extend(!0,[],b.data),delete b.data),this.options=a.extend({},f.settings,b),this.destroy(),this.subscribeEvents(),this.setInitialStates({nodes:this.tree},0),this.render()},g.prototype.remove=function(){this.destroy(),a.removeData(this,e),a("#"+this.styleId).remove()},g.prototype.destroy=function(){this.initialized&&(this.$wrapper.remove(),this.$wrapper=null,this.unsubscribeEvents(),this.initialized=!1)},g.prototype.unsubscribeEvents=function(){this.$element.off("click"),this.$element.off("nodeChecked"),this.$element.off("nodeCollapsed"),this.$element.off("nodeDisabled"),this.$element.off("nodeEnabled"),this.$element.off("nodeExpanded"),this.$element.off("nodeSelected"),this.$element.off("nodeUnchecked"),this.$element.off("nodeUnselected"),this.$element.off("searchComplete"),this.$element.off("searchCleared")},g.prototype.subscribeEvents=function(){this.unsubscribeEvents(),this.$element.on("click",a.proxy(this.clickHandler,this)),"function"==typeof this.options.onNodeChecked&&this.$element.on("nodeChecked",this.options.onNodeChecked),"function"==typeof this.options.onNodeCollapsed&&this.$element.on("nodeCollapsed",this.options.onNodeCollapsed),"function"==typeof this.options.onNodeDisabled&&this.$element.on("nodeDisabled",this.options.onNodeDisabled),"function"==typeof this.options.onNodeEnabled&&this.$element.on("nodeEnabled",this.options.onNodeEnabled),"function"==typeof this.options.onNodeExpanded&&this.$element.on("nodeExpanded",this.options.onNodeExpanded),"function"==typeof this.options.onNodeSelected&&this.$element.on("nodeSelected",this.options.onNodeSelected),"function"==typeof this.options.onNodeUnchecked&&this.$element.on("nodeUnchecked",this.options.onNodeUnchecked),"function"==typeof this.options.onNodeUnselected&&this.$element.on("nodeUnselected",this.options.onNodeUnselected),"function"==typeof this.options.onSearchComplete&&this.$element.on("searchComplete",this.options.onSearchComplete),"function"==typeof this.options.onSearchCleared&&this.$element.on("searchCleared",this.options.onSearchCleared)},g.prototype.setInitialStates=function(b,c){if(b.nodes){c+=1;var d=b,e=this;a.each(b.nodes,function(a,b){b.nodeId=e.nodes.length,b.parentId=d.nodeId,b.hasOwnProperty("selectable")||(b.selectable=!0),b.state=b.state||{},b.state.hasOwnProperty("checked")||(b.state.checked=!1),b.state.hasOwnProperty("disabled")||(b.state.disabled=!1),b.state.hasOwnProperty("expanded")||(!b.state.disabled&&c<e.options.levels&&b.nodes&&b.nodes.length>0?b.state.expanded=!0:b.state.expanded=!1),b.state.hasOwnProperty("selected")||(b.state.selected=!1),e.nodes.push(b),b.nodes&&e.setInitialStates(b,c)})}},g.prototype.clickHandler=function(b){this.options.enableLinks||b.preventDefault();var c=a(b.target),d=this.findNode(c);if(d&&!d.state.disabled){var e=c.attr("class")?c.attr("class").split(" "):[];-1!==e.indexOf("expand-icon")?(this.toggleExpandedState(d,f.options),this.render()):-1!==e.indexOf("check-icon")?(this.toggleCheckedState(d,f.options),this.render()):(d.selectable?this.toggleSelectedState(d,f.options):this.toggleExpandedState(d,f.options),this.render())}},g.prototype.findNode=function(a){var b=a.closest("li.list-group-item").attr("data-nodeid"),c=this.nodes[b];return c||console.log("Error: node does not exist"),c},g.prototype.toggleExpandedState=function(a,b){a&&this.setExpandedState(a,!a.state.expanded,b)},g.prototype.setExpandedState=function(b,c,d){c!==b.state.expanded&&(c&&b.nodes?(b.state.expanded=!0,d.silent||this.$element.trigger("nodeExpanded",a.extend(!0,{},b))):c||(b.state.expanded=!1,d.silent||this.$element.trigger("nodeCollapsed",a.extend(!0,{},b)),b.nodes&&!d.ignoreChildren&&a.each(b.nodes,a.proxy(function(a,b){this.setExpandedState(b,!1,d)},this))))},g.prototype.toggleSelectedState=function(a,b){a&&this.setSelectedState(a,!a.state.selected,b)},g.prototype.setSelectedState=function(b,c,d){c!==b.state.selected&&(c?(this.options.multiSelect||a.each(this.findNodes("true","g","state.selected"),a.proxy(function(a,b){this.setSelectedState(b,!1,d)},this)),b.state.selected=!0,d.silent||this.$element.trigger("nodeSelected",a.extend(!0,{},b))):(b.state.selected=!1,d.silent||this.$element.trigger("nodeUnselected",a.extend(!0,{},b))))},g.prototype.toggleCheckedState=function(a,b){a&&this.setCheckedState(a,!a.state.checked,b)},g.prototype.setCheckedState=function(b,c,d){c!==b.state.checked&&(c?(b.state.checked=!0,d.silent||this.$element.trigger("nodeChecked",a.extend(!0,{},b))):(b.state.checked=!1,d.silent||this.$element.trigger("nodeUnchecked",a.extend(!0,{},b))))},g.prototype.setDisabledState=function(b,c,d){c!==b.state.disabled&&(c?(b.state.disabled=!0,this.setExpandedState(b,!1,d),this.setSelectedState(b,!1,d),this.setCheckedState(b,!1,d),d.silent||this.$element.trigger("nodeDisabled",a.extend(!0,{},b))):(b.state.disabled=!1,d.silent||this.$element.trigger("nodeEnabled",a.extend(!0,{},b))))},g.prototype.render=function(){this.initialized||(this.$element.addClass(e),this.$wrapper=a(this.template.list),this.injectStyle(),this.initialized=!0),this.$element.empty().append(this.$wrapper.empty()),this.buildTree(this.tree,0)},g.prototype.buildTree=function(b,c){if(b){c+=1;var d=this;a.each(b,function(b,e){for(var f=a(d.template.item).addClass("node-"+d.elementId).addClass(e.state.checked?"node-checked":"").addClass(e.state.disabled?"node-disabled":"").addClass(e.state.selected?"node-selected":"").addClass(e.searchResult?"search-result":"").attr("data-nodeid",e.nodeId).attr("style",d.buildStyleOverride(e)),g=0;c-1>g;g++)f.append(d.template.indent);var h=[];if(e.nodes?(h.push("expand-icon"),h.push(e.state.expanded?d.options.collapseIcon:d.options.expandIcon)):h.push(d.options.emptyIcon),f.append(a(d.template.icon).addClass(h.join(" "))),d.options.showIcon){var h=["node-icon"];h.push(e.icon||d.options.nodeIcon),e.state.selected&&(h.pop(),h.push(e.selectedIcon||d.options.selectedIcon||e.icon||d.options.nodeIcon)),f.append(a(d.template.icon).addClass(h.join(" ")))}if(d.options.showCheckbox){var h=["check-icon"];h.push(e.state.checked?d.options.checkedIcon:d.options.uncheckedIcon),f.append(a(d.template.icon).addClass(h.join(" ")))}return f.append(d.options.enableLinks?a(d.template.link).attr("href",e.href).append(e.text):e.text),d.options.showTags&&e.tags&&a.each(e.tags,function(b,c){f.append(a(d.template.badge).append(c))}),d.$wrapper.append(f),e.nodes&&e.state.expanded&&!e.state.disabled?d.buildTree(e.nodes,c):void 0})}},g.prototype.buildStyleOverride=function(a){if(a.state.disabled)return"";var b=a.color,c=a.backColor;return this.options.highlightSelected&&a.state.selected&&(this.options.selectedColor&&(b=this.options.selectedColor),this.options.selectedBackColor&&(c=this.options.selectedBackColor)),this.options.highlightSearchResults&&a.searchResult&&!a.state.disabled&&(this.options.searchResultColor&&(b=this.options.searchResultColor),this.options.searchResultBackColor&&(c=this.options.searchResultBackColor)),"color:"+b+";background-color:"+c+";"},g.prototype.injectStyle=function(){this.options.injectStyle&&!c.getElementById(this.styleId)&&a('<style type="text/css" id="'+this.styleId+'"> '+this.buildStyle()+" </style>").appendTo("head")},g.prototype.buildStyle=function(){var a=".node-"+this.elementId+"{";return this.options.color&&(a+="color:"+this.options.color+";"),this.options.backColor&&(a+="background-color:"+this.options.backColor+";"),this.options.showBorder?this.options.borderColor&&(a+="border:1px solid "+this.options.borderColor+";"):a+="border:none;",a+="}",this.options.onhoverColor&&(a+=".node-"+this.elementId+":not(.node-disabled):hover{background-color:"+this.options.onhoverColor+";}"),this.css+a},g.prototype.template={list:'<ul class="list-group"></ul>',item:'<li class="list-group-item"></li>',indent:'<span class="indent"></span>',icon:'<span class="icon"></span>',link:'<a href="#" style="color:inherit;"></a>',badge:'<span class="badge"></span>'},g.prototype.css=".treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}",g.prototype.getNode=function(a){return this.nodes[a]},g.prototype.getParent=function(a){var b=this.identifyNode(a);return this.nodes[b.parentId]},g.prototype.getSiblings=function(a){var b=this.identifyNode(a),c=this.getParent(b),d=c?c.nodes:this.tree;return d.filter(function(a){return a.nodeId!==b.nodeId})},g.prototype.getSelected=function(){return this.findNodes("true","g","state.selected")},g.prototype.getUnselected=function(){return this.findNodes("false","g","state.selected")},g.prototype.getExpanded=function(){return this.findNodes("true","g","state.expanded")},g.prototype.getCollapsed=function(){return this.findNodes("false","g","state.expanded")},g.prototype.getChecked=function(){return this.findNodes("true","g","state.checked")},g.prototype.getUnchecked=function(){return this.findNodes("false","g","state.checked")},g.prototype.getDisabled=function(){return this.findNodes("true","g","state.disabled")},g.prototype.getEnabled=function(){return this.findNodes("false","g","state.disabled")},g.prototype.selectNode=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.setSelectedState(a,!0,b)},this)),this.render()},g.prototype.unselectNode=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.setSelectedState(a,!1,b)},this)),this.render()},g.prototype.toggleNodeSelected=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.toggleSelectedState(a,b)},this)),this.render()},g.prototype.collapseAll=function(b){var c=this.findNodes("true","g","state.expanded");this.forEachIdentifier(c,b,a.proxy(function(a,b){this.setExpandedState(a,!1,b)},this)),this.render()},g.prototype.collapseNode=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.setExpandedState(a,!1,b)},this)),this.render()},g.prototype.expandAll=function(b){if(b=a.extend({},f.options,b),b&&b.levels)this.expandLevels(this.tree,b.levels,b);else{var c=this.findNodes("false","g","state.expanded");this.forEachIdentifier(c,b,a.proxy(function(a,b){this.setExpandedState(a,!0,b)},this))}this.render()},g.prototype.expandNode=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.setExpandedState(a,!0,b),a.nodes&&b&&b.levels&&this.expandLevels(a.nodes,b.levels-1,b)},this)),this.render()},g.prototype.expandLevels=function(b,c,d){d=a.extend({},f.options,d),a.each(b,a.proxy(function(a,b){this.setExpandedState(b,c>0?!0:!1,d),b.nodes&&this.expandLevels(b.nodes,c-1,d)},this))},g.prototype.revealNode=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){for(var c=this.getParent(a);c;)this.setExpandedState(c,!0,b),c=this.getParent(c)},this)),this.render()},g.prototype.toggleNodeExpanded=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.toggleExpandedState(a,b)},this)),this.render()},g.prototype.checkAll=function(b){var c=this.findNodes("false","g","state.checked");this.forEachIdentifier(c,b,a.proxy(function(a,b){this.setCheckedState(a,!0,b)},this)),this.render()},g.prototype.checkNode=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.setCheckedState(a,!0,b)},this)),this.render()},g.prototype.uncheckAll=function(b){var c=this.findNodes("true","g","state.checked");this.forEachIdentifier(c,b,a.proxy(function(a,b){this.setCheckedState(a,!1,b)},this)),this.render()},g.prototype.uncheckNode=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.setCheckedState(a,!1,b)},this)),this.render()},g.prototype.toggleNodeChecked=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.toggleCheckedState(a,b)},this)),this.render()},g.prototype.disableAll=function(b){var c=this.findNodes("false","g","state.disabled");this.forEachIdentifier(c,b,a.proxy(function(a,b){this.setDisabledState(a,!0,b)},this)),this.render()},g.prototype.disableNode=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.setDisabledState(a,!0,b)},this)),this.render()},g.prototype.enableAll=function(b){var c=this.findNodes("true","g","state.disabled");this.forEachIdentifier(c,b,a.proxy(function(a,b){this.setDisabledState(a,!1,b)},this)),this.render()},g.prototype.enableNode=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.setDisabledState(a,!1,b)},this)),this.render()},g.prototype.toggleNodeDisabled=function(b,c){this.forEachIdentifier(b,c,a.proxy(function(a,b){this.setDisabledState(a,!a.state.disabled,b)},this)),this.render()},g.prototype.forEachIdentifier=function(b,c,d){c=a.extend({},f.options,c),b instanceof Array||(b=[b]),a.each(b,a.proxy(function(a,b){d(this.identifyNode(b),c)},this))},g.prototype.identifyNode=function(a){return"number"==typeof a?this.nodes[a]:a},g.prototype.search=function(b,c){c=a.extend({},f.searchOptions,c),this.clearSearch({render:!1});var d=[];if(b&&b.length>0){c.exactMatch&&(b="^"+b+"$");var e="g";c.ignoreCase&&(e+="i"),d=this.findNodes(b,e),a.each(d,function(a,b){b.searchResult=!0})}return c.revealResults?this.revealNode(d):this.render(),this.$element.trigger("searchComplete",a.extend(!0,{},d)),d},g.prototype.clearSearch=function(b){b=a.extend({},{render:!0},b);var c=a.each(this.findNodes("true","g","searchResult"),function(a,b){b.searchResult=!1});b.render&&this.render(),this.$element.trigger("searchCleared",a.extend(!0,{},c))},g.prototype.findNodes=function(b,c,d){c=c||"g",d=d||"text";var e=this;return a.grep(this.nodes,function(a){var f=e.getNodeValue(a,d);return"string"==typeof f?f.match(new RegExp(b,c)):void 0})},g.prototype.getNodeValue=function(a,b){var c=b.indexOf(".");if(c>0){var e=a[b.substring(0,c)],f=b.substring(c+1,b.length);return this.getNodeValue(e,f)}return a.hasOwnProperty(b)?a[b].toString():d};var h=function(a){b.console&&b.console.error(a)};a.fn[e]=function(b,c){var d;return this.each(function(){var f=a.data(this,e);"string"==typeof b?f?a.isFunction(f[b])&&"_"!==b.charAt(0)?(c instanceof Array||(c=[c]),d=f[b].apply(f,c)):h("No such method : "+b):h("Not initialized, can not call method : "+b):"boolean"==typeof b?d=f:a.data(this,e,new g(this,a.extend(!0,{},b)))}),d||this}}(jQuery,window,document);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/LICENSE b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/LICENSE
new file mode 100644
index 0000000..e06d208
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/LICENSE
@@ -0,0 +1,202 @@
+Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/css/bootstrap-treeview.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/css/bootstrap-treeview.css
new file mode 100644
index 0000000..23c6cf0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/css/bootstrap-treeview.css
@@ -0,0 +1,37 @@
+/* =========================================================
+ * bootstrap-treeview.css v1.2.0
+ * =========================================================
+ * Copyright 2013 Jonathan Miles
+ * Project URL : http://www.jondmiles.com/bootstrap-treeview
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+.treeview .list-group-item {
+ cursor: pointer;
+}
+
+.treeview span.indent {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+.treeview span.icon {
+ width: 12px;
+ margin-right: 5px;
+}
+
+.treeview .node-disabled {
+ color: silver;
+ cursor: not-allowed;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/example-dom.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/example-dom.html
new file mode 100644
index 0000000..8fe5f75
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/example-dom.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Bootstrap Tree View</title>
+ <link href="./bower_components/bootstrap/dist/css/bootstrap.css" rel="stylesheet">
+ <link href="./css/bootstrap-treeview.css" rel="stylesheet">
+ </head>
+ <body>
+ <div class="container">
+ <h1>Bootstrap Tree View - DOM Tree</h1>
+ <br/>
+ <div class="row">
+ <div class="col-sm-12">
+ <label for="treeview"></label>
+ <div id="treeview"/>
+ </div>
+ </div>
+ </div>
+ <script src="./bower_components/jquery/dist/jquery.js"></script>
+ <script src="./js/bootstrap-treeview.js"></script>
+ <script type="text/javascript">
+
+ function buildDomTree() {
+
+ var data = [];
+
+ function walk(nodes, data) {
+ if (!nodes) { return; }
+ $.each(nodes, function (id, node) {
+ var obj = {
+ id: id,
+ text: node.nodeName + " - " + (node.innerText ? node.innerText : ''),
+ tags: [node.childElementCount > 0 ? node.childElementCount + ' child elements' : '']
+ };
+ if (node.childElementCount > 0) {
+ obj.nodes = [];
+ walk(node.children, obj.nodes);
+ }
+ data.push(obj);
+ });
+ }
+
+ walk($('html')[0].children, data);
+ return data;
+ }
+
+ $(function() {
+
+ var options = {
+ bootstrap2: false,
+ showTags: true,
+ levels: 5,
+ data: buildDomTree()
+ };
+
+ $('#treeview').treeview(options);
+ });
+ </script>
+ </body>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/index.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/index.html
new file mode 100644
index 0000000..6f23ccd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/index.html
@@ -0,0 +1,763 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Bootstrap Tree View</title>
+ <link href="./bower_components/bootstrap/dist/css/bootstrap.css" rel="stylesheet">
+ <!-- <link href="./css/bootstrap-treeview.css" rel="stylesheet"> -->
+ </head>
+ <body>
+ <div class="container">
+ <h1>Bootstrap Tree View</h1>
+ <br>
+ <div class="row">
+ <div class="col-sm-4">
+ <h2>Default</h2>
+ <div id="treeview1" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Collapsed</h2>
+ <div id="treeview2" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Expanded</h2>
+ <div id="treeview3" class=""></div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-sm-4">
+ <h2>Blue Theme</h2>
+ <div id="treeview4" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Custom Icons</h2>
+ <div id="treeview5" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Tags as Badges</h2>
+ <div id="treeview6" class=""></div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-sm-4">
+ <h2>No Border</h2>
+ <div id="treeview7" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Colourful</h2>
+ <div id="treeview8" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Node Overrides</h2>
+ <div id="treeview9" class=""></div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-sm-4">
+ <h2>Link enabled, or</h2>
+ <div id="treeview10" class=""></div>
+ </div>
+ <div class="col-sm-4">
+
+ </div>
+ <div class="col-sm-4">
+
+ </div>
+ </div>
+ <div class="row">
+ <hr>
+ <h2>Searchable Tree</h2>
+ <div class="col-sm-4">
+ <h2>Input</h2>
+ <!-- <form> -->
+ <div class="form-group">
+ <label for="input-search" class="sr-only">Search Tree:</label>
+ <input type="input" class="form-control" id="input-search" placeholder="Type to search..." value="">
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" class="checkbox" id="chk-ignore-case" value="false">
+ Ignore Case
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" class="checkbox" id="chk-exact-match" value="false">
+ Exact Match
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" class="checkbox" id="chk-reveal-results" value="false">
+ Reveal Results
+ </label>
+ </div>
+ <button type="button" class="btn btn-success" id="btn-search">Search</button>
+ <button type="button" class="btn btn-default" id="btn-clear-search">Clear</button>
+ <!-- </form> -->
+ </div>
+ <div class="col-sm-4">
+ <h2>Tree</h2>
+ <div id="treeview-searchable" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Results</h2>
+ <div id="search-output"></div>
+ </div>
+ </div>
+ <div class="row">
+ <hr>
+ <h2>Selectable Tree</h2>
+ <div class="col-sm-4">
+ <h2>Input</h2>
+ <div class="form-group">
+ <label for="input-select-node" class="sr-only">Search Tree:</label>
+ <input type="input" class="form-control" id="input-select-node" placeholder="Identify node..." value="Parent 1">
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" class="checkbox" id="chk-select-multi" value="false">
+ Multi Select
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" class="checkbox" id="chk-select-silent" value="false">
+ Silent (No events)
+ </label>
+ </div>
+ <div class="form-group">
+ <button type="button" class="btn btn-success select-node" id="btn-select-node">Select Node</button>
+ </div>
+ <div class="form-group">
+ <button type="button" class="btn btn-danger select-node" id="btn-unselect-node">Unselect Node</button>
+ </div>
+ <div class="form-group">
+ <button type="button" class="btn btn-primary select-node" id="btn-toggle-selected">Toggle Node</button>
+ </div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Tree</h2>
+ <div id="treeview-selectable" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Events</h2>
+ <div id="selectable-output"></div>
+ </div>
+ </div>
+ <div class="row">
+ <hr>
+ <h2>Expandible Tree</h2>
+ <div class="col-sm-4">
+ <h2>Input</h2>
+ <div class="form-group">
+ <label for="input-expand-node" class="sr-only">Search Tree:</label>
+ <input type="input" class="form-control" id="input-expand-node" placeholder="Identify node..." value="Parent 1">
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" class="checkbox" id="chk-expand-silent" value="false">
+ Silent (No events)
+ </label>
+ </div>
+ <div class="form-group row">
+ <div class="col-sm-6">
+ <button type="button" class="btn btn-success expand-node" id="btn-expand-node">Expand Node</button>
+ </div>
+ <div class="col-sm-6">
+ <select class="form-control" id="select-expand-node-levels">
+ <option>1</option>
+ <option>2</option>
+ </select>
+ </div>
+ </div>
+ <div class="form-group">
+ <button type="button" class="btn btn-danger expand-node" id="btn-collapse-node">Collapse Node</button>
+ </div>
+ <div class="form-group">
+ <button type="button" class="btn btn-primary expand-node" id="btn-toggle-expanded">Toggle Node</button>
+ </div>
+ <hr>
+ <div class="form-group row">
+ <div class="col-sm-6">
+ <button type="button" class="btn btn-success" id="btn-expand-all">Expand All</button>
+ </div>
+ <div class="col-sm-6">
+ <select class="form-control" id="select-expand-all-levels">
+ <option>1</option>
+ <option>2</option>
+ </select>
+ </div>
+ </div>
+ <button type="button" class="btn btn-danger" id="btn-collapse-all">Collapse All</button>
+ </div>
+ <div class="col-sm-4">
+ <h2>Tree</h2>
+ <div id="treeview-expandible" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Events</h2>
+ <div id="expandible-output"></div>
+ </div>
+ </div>
+ <div class="row">
+ <hr>
+ <h2>Checkable Tree</h2>
+ <div class="col-sm-4">
+ <h2>Input</h2>
+ <div class="form-group">
+ <label for="input-check-node" class="sr-only">Search Tree:</label>
+ <input type="input" class="form-control" id="input-check-node" placeholder="Identify node..." value="Parent 1">
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" class="checkbox" id="chk-check-silent" value="false">
+ Silent (No events)
+ </label>
+ </div>
+ <div class="form-group row">
+ <div class="col-sm-6">
+ <button type="button" class="btn btn-success check-node" id="btn-check-node">Check Node</button>
+ </div>
+ </div>
+ <div class="form-group">
+ <button type="button" class="btn btn-danger check-node" id="btn-uncheck-node">Uncheck Node</button>
+ </div>
+ <div class="form-group">
+ <button type="button" class="btn btn-primary check-node" id="btn-toggle-checked">Toggle Node</button>
+ </div>
+ <hr>
+ <div class="form-group row">
+ <div class="col-sm-6">
+ <button type="button" class="btn btn-success" id="btn-check-all">Check All</button>
+ </div>
+ </div>
+ <button type="button" class="btn btn-danger" id="btn-uncheck-all">Uncheck All</button>
+ </div>
+ <div class="col-sm-4">
+ <h2>Tree</h2>
+ <div id="treeview-checkable" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Events</h2>
+ <div id="checkable-output"></div>
+ </div>
+ </div>
+ <div class="row">
+ <hr>
+ <h2>Disabled Tree</h2>
+ <div class="col-sm-4">
+ <h2>Input</h2>
+ <div class="form-group">
+ <label for="input-disable-node" class="sr-only">Search Tree:</label>
+ <input type="input" class="form-control" id="input-disable-node" placeholder="Identify node..." value="Parent 1">
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" class="checkbox" id="chk-disable-silent" value="false">
+ Silent (No events)
+ </label>
+ </div>
+ <div class="form-group row">
+ <div class="col-sm-6">
+ <button type="button" class="btn btn-success disable-node" id="btn-disable-node">Disable Node</button>
+ </div>
+ </div>
+ <div class="form-group">
+ <button type="button" class="btn btn-danger disable-node" id="btn-enable-node">Enable Node</button>
+ </div>
+ <div class="form-group">
+ <button type="button" class="btn btn-primary disable-node" id="btn-toggle-disabled">Toggle Node</button>
+ </div>
+ <hr>
+ <div class="form-group row">
+ <div class="col-sm-6">
+ <button type="button" class="btn btn-success" id="btn-disable-all">Disable All</button>
+ </div>
+ </div>
+ <button type="button" class="btn btn-danger" id="btn-enable-all">Enable All</button>
+ </div>
+ <div class="col-sm-4">
+ <h2>Tree</h2>
+ <div id="treeview-disabled" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2>Events</h2>
+ <div id="disabled-output"></div>
+ </div>
+ </div>
+ <div class="row">
+ <hr>
+ <h2>Data</h2>
+ <div class="col-sm-4">
+ <h2>JSON Data</h2>
+ <div id="treeview12" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2></h2>
+ <div id="treeview13" class=""></div>
+ </div>
+ <div class="col-sm-4">
+ <h2></h2>
+ <div id="treeview14"></div>
+ </div>
+ </div>
+ <br/>
+ <br/>
+ <br/>
+ <br/>
+ </div>
+ <script src="./bower_components/jquery/dist/jquery.js"></script>
+ <script src="./js/bootstrap-treeview.js"></script>
+ <script type="text/javascript">
+
+ $(function() {
+
+ var defaultData = [
+ {
+ text: 'Parent 1',
+ href: '#parent1',
+ tags: ['4'],
+ nodes: [
+ {
+ text: 'Child 1',
+ href: '#child1',
+ tags: ['2'],
+ nodes: [
+ {
+ text: 'Grandchild 1',
+ href: '#grandchild1',
+ tags: ['0']
+ },
+ {
+ text: 'Grandchild 2',
+ href: '#grandchild2',
+ tags: ['0']
+ }
+ ]
+ },
+ {
+ text: 'Child 2',
+ href: '#child2',
+ tags: ['0']
+ }
+ ]
+ },
+ {
+ text: 'Parent 2',
+ href: '#parent2',
+ tags: ['0']
+ },
+ {
+ text: 'Parent 3',
+ href: '#parent3',
+ tags: ['0']
+ },
+ {
+ text: 'Parent 4',
+ href: '#parent4',
+ tags: ['0']
+ },
+ {
+ text: 'Parent 5',
+ href: '#parent5' ,
+ tags: ['0']
+ }
+ ];
+
+ var alternateData = [
+ {
+ text: 'Parent 1',
+ tags: ['2'],
+ nodes: [
+ {
+ text: 'Child 1',
+ tags: ['3'],
+ nodes: [
+ {
+ text: 'Grandchild 1',
+ tags: ['6']
+ },
+ {
+ text: 'Grandchild 2',
+ tags: ['3']
+ }
+ ]
+ },
+ {
+ text: 'Child 2',
+ tags: ['3']
+ }
+ ]
+ },
+ {
+ text: 'Parent 2',
+ tags: ['7']
+ },
+ {
+ text: 'Parent 3',
+ icon: 'glyphicon glyphicon-earphone',
+ href: '#demo',
+ tags: ['11']
+ },
+ {
+ text: 'Parent 4',
+ icon: 'glyphicon glyphicon-cloud-download',
+ href: '/demo.html',
+ tags: ['19'],
+ selected: true
+ },
+ {
+ text: 'Parent 5',
+ icon: 'glyphicon glyphicon-certificate',
+ color: 'pink',
+ backColor: 'red',
+ href: 'http://www.tesco.com',
+ tags: ['available','0']
+ }
+ ];
+
+ var json = '[' +
+ '{' +
+ '"text": "Parent 1",' +
+ '"nodes": [' +
+ '{' +
+ '"text": "Child 1",' +
+ '"nodes": [' +
+ '{' +
+ '"text": "Grandchild 1"' +
+ '},' +
+ '{' +
+ '"text": "Grandchild 2"' +
+ '}' +
+ ']' +
+ '},' +
+ '{' +
+ '"text": "Child 2"' +
+ '}' +
+ ']' +
+ '},' +
+ '{' +
+ '"text": "Parent 2"' +
+ '},' +
+ '{' +
+ '"text": "Parent 3"' +
+ '},' +
+ '{' +
+ '"text": "Parent 4"' +
+ '},' +
+ '{' +
+ '"text": "Parent 5"' +
+ '}' +
+ ']';
+
+
+ $('#treeview1').treeview({
+ data: defaultData
+ });
+
+ $('#treeview2').treeview({
+ levels: 1,
+ data: defaultData
+ });
+
+ $('#treeview3').treeview({
+ levels: 99,
+ data: defaultData
+ });
+
+ $('#treeview4').treeview({
+
+ color: "#428bca",
+ data: defaultData
+ });
+
+ $('#treeview5').treeview({
+ color: "#428bca",
+ expandIcon: 'glyphicon glyphicon-chevron-right',
+ collapseIcon: 'glyphicon glyphicon-chevron-down',
+ nodeIcon: 'glyphicon glyphicon-bookmark',
+ data: defaultData
+ });
+
+ $('#treeview6').treeview({
+ color: "#428bca",
+ expandIcon: "glyphicon glyphicon-stop",
+ collapseIcon: "glyphicon glyphicon-unchecked",
+ nodeIcon: "glyphicon glyphicon-user",
+ showTags: true,
+ data: defaultData
+ });
+
+ $('#treeview7').treeview({
+ color: "#428bca",
+ showBorder: false,
+ data: defaultData
+ });
+
+ $('#treeview8').treeview({
+ expandIcon: "glyphicon glyphicon-stop",
+ collapseIcon: "glyphicon glyphicon-unchecked",
+ nodeIcon: "glyphicon glyphicon-user",
+ color: "yellow",
+ backColor: "purple",
+ onhoverColor: "orange",
+ borderColor: "red",
+ showBorder: false,
+ showTags: true,
+ highlightSelected: true,
+ selectedColor: "yellow",
+ selectedBackColor: "darkorange",
+ data: defaultData
+ });
+
+ $('#treeview9').treeview({
+ expandIcon: "glyphicon glyphicon-stop",
+ collapseIcon: "glyphicon glyphicon-unchecked",
+ nodeIcon: "glyphicon glyphicon-user",
+ color: "yellow",
+ backColor: "purple",
+ onhoverColor: "orange",
+ borderColor: "red",
+ showBorder: false,
+ showTags: true,
+ highlightSelected: true,
+ selectedColor: "yellow",
+ selectedBackColor: "darkorange",
+ data: alternateData
+ });
+
+ $('#treeview10').treeview({
+ color: "#428bca",
+ enableLinks: true,
+ data: defaultData
+ });
+
+
+
+ var $searchableTree = $('#treeview-searchable').treeview({
+ data: defaultData,
+ });
+
+ var search = function(e) {
+ var pattern = $('#input-search').val();
+ var options = {
+ ignoreCase: $('#chk-ignore-case').is(':checked'),
+ exactMatch: $('#chk-exact-match').is(':checked'),
+ revealResults: $('#chk-reveal-results').is(':checked')
+ };
+ var results = $searchableTree.treeview('search', [ pattern, options ]);
+
+ var output = '<p>' + results.length + ' matches found</p>';
+ $.each(results, function (index, result) {
+ output += '<p>- ' + result.text + '</p>';
+ });
+ $('#search-output').html(output);
+ }
+
+ $('#btn-search').on('click', search);
+ $('#input-search').on('keyup', search);
+
+ $('#btn-clear-search').on('click', function (e) {
+ $searchableTree.treeview('clearSearch');
+ $('#input-search').val('');
+ $('#search-output').html('');
+ });
+
+
+ var initSelectableTree = function() {
+ return $('#treeview-selectable').treeview({
+ data: defaultData,
+ multiSelect: $('#chk-select-multi').is(':checked'),
+ onNodeSelected: function(event, node) {
+ $('#selectable-output').prepend('<p>' + node.text + ' was selected</p>');
+ },
+ onNodeUnselected: function (event, node) {
+ $('#selectable-output').prepend('<p>' + node.text + ' was unselected</p>');
+ }
+ });
+ };
+ var $selectableTree = initSelectableTree();
+
+ var findSelectableNodes = function() {
+ return $selectableTree.treeview('search', [ $('#input-select-node').val(), { ignoreCase: false, exactMatch: false } ]);
+ };
+ var selectableNodes = findSelectableNodes();
+
+ $('#chk-select-multi:checkbox').on('change', function () {
+ console.log('multi-select change');
+ $selectableTree = initSelectableTree();
+ selectableNodes = findSelectableNodes();
+ });
+
+ // Select/unselect/toggle nodes
+ $('#input-select-node').on('keyup', function (e) {
+ selectableNodes = findSelectableNodes();
+ $('.select-node').prop('disabled', !(selectableNodes.length >= 1));
+ });
+
+ $('#btn-select-node.select-node').on('click', function (e) {
+ $selectableTree.treeview('selectNode', [ selectableNodes, { silent: $('#chk-select-silent').is(':checked') }]);
+ });
+
+ $('#btn-unselect-node.select-node').on('click', function (e) {
+ $selectableTree.treeview('unselectNode', [ selectableNodes, { silent: $('#chk-select-silent').is(':checked') }]);
+ });
+
+ $('#btn-toggle-selected.select-node').on('click', function (e) {
+ $selectableTree.treeview('toggleNodeSelected', [ selectableNodes, { silent: $('#chk-select-silent').is(':checked') }]);
+ });
+
+
+
+ var $expandibleTree = $('#treeview-expandible').treeview({
+ data: defaultData,
+ onNodeCollapsed: function(event, node) {
+ $('#expandible-output').prepend('<p>' + node.text + ' was collapsed</p>');
+ },
+ onNodeExpanded: function (event, node) {
+ $('#expandible-output').prepend('<p>' + node.text + ' was expanded</p>');
+ }
+ });
+
+ var findExpandibleNodess = function() {
+ return $expandibleTree.treeview('search', [ $('#input-expand-node').val(), { ignoreCase: false, exactMatch: false } ]);
+ };
+ var expandibleNodes = findExpandibleNodess();
+
+ // Expand/collapse/toggle nodes
+ $('#input-expand-node').on('keyup', function (e) {
+ expandibleNodes = findExpandibleNodess();
+ $('.expand-node').prop('disabled', !(expandibleNodes.length >= 1));
+ });
+
+ $('#btn-expand-node.expand-node').on('click', function (e) {
+ var levels = $('#select-expand-node-levels').val();
+ $expandibleTree.treeview('expandNode', [ expandibleNodes, { levels: levels, silent: $('#chk-expand-silent').is(':checked') }]);
+ });
+
+ $('#btn-collapse-node.expand-node').on('click', function (e) {
+ $expandibleTree.treeview('collapseNode', [ expandibleNodes, { silent: $('#chk-expand-silent').is(':checked') }]);
+ });
+
+ $('#btn-toggle-expanded.expand-node').on('click', function (e) {
+ $expandibleTree.treeview('toggleNodeExpanded', [ expandibleNodes, { silent: $('#chk-expand-silent').is(':checked') }]);
+ });
+
+ // Expand/collapse all
+ $('#btn-expand-all').on('click', function (e) {
+ var levels = $('#select-expand-all-levels').val();
+ $expandibleTree.treeview('expandAll', { levels: levels, silent: $('#chk-expand-silent').is(':checked') });
+ });
+
+ $('#btn-collapse-all').on('click', function (e) {
+ $expandibleTree.treeview('collapseAll', { silent: $('#chk-expand-silent').is(':checked') });
+ });
+
+
+
+ var $checkableTree = $('#treeview-checkable').treeview({
+ data: defaultData,
+ showIcon: false,
+ showCheckbox: true,
+ onNodeChecked: function(event, node) {
+ $('#checkable-output').prepend('<p>' + node.text + ' was checked</p>');
+ },
+ onNodeUnchecked: function (event, node) {
+ $('#checkable-output').prepend('<p>' + node.text + ' was unchecked</p>');
+ }
+ });
+
+ var findCheckableNodess = function() {
+ return $checkableTree.treeview('search', [ $('#input-check-node').val(), { ignoreCase: false, exactMatch: false } ]);
+ };
+ var checkableNodes = findCheckableNodess();
+
+ // Check/uncheck/toggle nodes
+ $('#input-check-node').on('keyup', function (e) {
+ checkableNodes = findCheckableNodess();
+ $('.check-node').prop('disabled', !(checkableNodes.length >= 1));
+ });
+
+ $('#btn-check-node.check-node').on('click', function (e) {
+ $checkableTree.treeview('checkNode', [ checkableNodes, { silent: $('#chk-check-silent').is(':checked') }]);
+ });
+
+ $('#btn-uncheck-node.check-node').on('click', function (e) {
+ $checkableTree.treeview('uncheckNode', [ checkableNodes, { silent: $('#chk-check-silent').is(':checked') }]);
+ });
+
+ $('#btn-toggle-checked.check-node').on('click', function (e) {
+ $checkableTree.treeview('toggleNodeChecked', [ checkableNodes, { silent: $('#chk-check-silent').is(':checked') }]);
+ });
+
+ // Check/uncheck all
+ $('#btn-check-all').on('click', function (e) {
+ $checkableTree.treeview('checkAll', { silent: $('#chk-check-silent').is(':checked') });
+ });
+
+ $('#btn-uncheck-all').on('click', function (e) {
+ $checkableTree.treeview('uncheckAll', { silent: $('#chk-check-silent').is(':checked') });
+ });
+
+
+
+ var $disabledTree = $('#treeview-disabled').treeview({
+ data: defaultData,
+ onNodeDisabled: function(event, node) {
+ $('#disabled-output').prepend('<p>' + node.text + ' was disabled</p>');
+ },
+ onNodeEnabled: function (event, node) {
+ $('#disabled-output').prepend('<p>' + node.text + ' was enabled</p>');
+ },
+ onNodeCollapsed: function(event, node) {
+ $('#disabled-output').prepend('<p>' + node.text + ' was collapsed</p>');
+ },
+ onNodeUnchecked: function (event, node) {
+ $('#disabled-output').prepend('<p>' + node.text + ' was unchecked</p>');
+ },
+ onNodeUnselected: function (event, node) {
+ $('#disabled-output').prepend('<p>' + node.text + ' was unselected</p>');
+ }
+ });
+
+ var findDisabledNodes = function() {
+ return $disabledTree.treeview('search', [ $('#input-disable-node').val(), { ignoreCase: false, exactMatch: false } ]);
+ };
+ var disabledNodes = findDisabledNodes();
+
+ // Expand/collapse/toggle nodes
+ $('#input-disable-node').on('keyup', function (e) {
+ disabledNodes = findDisabledNodes();
+ $('.disable-node').prop('disabled', !(disabledNodes.length >= 1));
+ });
+
+ $('#btn-disable-node.disable-node').on('click', function (e) {
+ $disabledTree.treeview('disableNode', [ disabledNodes, { silent: $('#chk-disable-silent').is(':checked') }]);
+ });
+
+ $('#btn-enable-node.disable-node').on('click', function (e) {
+ $disabledTree.treeview('enableNode', [ disabledNodes, { silent: $('#chk-disable-silent').is(':checked') }]);
+ });
+
+ $('#btn-toggle-disabled.disable-node').on('click', function (e) {
+ $disabledTree.treeview('toggleNodeDisabled', [ disabledNodes, { silent: $('#chk-disable-silent').is(':checked') }]);
+ });
+
+ // Expand/collapse all
+ $('#btn-disable-all').on('click', function (e) {
+ $disabledTree.treeview('disableAll', { silent: $('#chk-disable-silent').is(':checked') });
+ });
+
+ $('#btn-enable-all').on('click', function (e) {
+ $disabledTree.treeview('enableAll', { silent: $('#chk-disable-silent').is(':checked') });
+ });
+
+
+
+ var $tree = $('#treeview12').treeview({
+ data: json
+ });
+ });
+ </script>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/js/bootstrap-treeview.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/js/bootstrap-treeview.js
new file mode 100644
index 0000000..7a82a2e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/public/js/bootstrap-treeview.js
@@ -0,0 +1,1249 @@
+/* =========================================================
+ * bootstrap-treeview.js v1.2.0
+ * =========================================================
+ * Copyright 2013 Jonathan Miles
+ * Project URL : http://www.jondmiles.com/bootstrap-treeview
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+;(function ($, window, document, undefined) {
+
+ /*global jQuery, console*/
+
+ 'use strict';
+
+ var pluginName = 'treeview';
+
+ var _default = {};
+
+ _default.settings = {
+
+ injectStyle: true,
+
+ levels: 2,
+
+ expandIcon: 'glyphicon glyphicon-plus',
+ collapseIcon: 'glyphicon glyphicon-minus',
+ emptyIcon: 'glyphicon',
+ nodeIcon: '',
+ selectedIcon: '',
+ checkedIcon: 'glyphicon glyphicon-check',
+ uncheckedIcon: 'glyphicon glyphicon-unchecked',
+
+ color: undefined, // '#000000',
+ backColor: undefined, // '#FFFFFF',
+ borderColor: undefined, // '#dddddd',
+ onhoverColor: '#F5F5F5',
+ selectedColor: '#FFFFFF',
+ selectedBackColor: '#428bca',
+ searchResultColor: '#D9534F',
+ searchResultBackColor: undefined, //'#FFFFFF',
+
+ enableLinks: false,
+ highlightSelected: true,
+ highlightSearchResults: true,
+ showBorder: true,
+ showIcon: true,
+ showCheckbox: false,
+ showTags: false,
+ multiSelect: false,
+
+ // Event handlers
+ onNodeChecked: undefined,
+ onNodeCollapsed: undefined,
+ onNodeDisabled: undefined,
+ onNodeEnabled: undefined,
+ onNodeExpanded: undefined,
+ onNodeSelected: undefined,
+ onNodeUnchecked: undefined,
+ onNodeUnselected: undefined,
+ onSearchComplete: undefined,
+ onSearchCleared: undefined
+ };
+
+ _default.options = {
+ silent: false,
+ ignoreChildren: false
+ };
+
+ _default.searchOptions = {
+ ignoreCase: true,
+ exactMatch: false,
+ revealResults: true
+ };
+
+ var Tree = function (element, options) {
+
+ this.$element = $(element);
+ this.elementId = element.id;
+ this.styleId = this.elementId + '-style';
+
+ this.init(options);
+
+ return {
+
+ // Options (public access)
+ options: this.options,
+
+ // Initialize / destroy methods
+ init: $.proxy(this.init, this),
+ remove: $.proxy(this.remove, this),
+
+ // Get methods
+ getNode: $.proxy(this.getNode, this),
+ getParent: $.proxy(this.getParent, this),
+ getSiblings: $.proxy(this.getSiblings, this),
+ getSelected: $.proxy(this.getSelected, this),
+ getUnselected: $.proxy(this.getUnselected, this),
+ getExpanded: $.proxy(this.getExpanded, this),
+ getCollapsed: $.proxy(this.getCollapsed, this),
+ getChecked: $.proxy(this.getChecked, this),
+ getUnchecked: $.proxy(this.getUnchecked, this),
+ getDisabled: $.proxy(this.getDisabled, this),
+ getEnabled: $.proxy(this.getEnabled, this),
+
+ // Select methods
+ selectNode: $.proxy(this.selectNode, this),
+ unselectNode: $.proxy(this.unselectNode, this),
+ toggleNodeSelected: $.proxy(this.toggleNodeSelected, this),
+
+ // Expand / collapse methods
+ collapseAll: $.proxy(this.collapseAll, this),
+ collapseNode: $.proxy(this.collapseNode, this),
+ expandAll: $.proxy(this.expandAll, this),
+ expandNode: $.proxy(this.expandNode, this),
+ toggleNodeExpanded: $.proxy(this.toggleNodeExpanded, this),
+ revealNode: $.proxy(this.revealNode, this),
+
+ // Expand / collapse methods
+ checkAll: $.proxy(this.checkAll, this),
+ checkNode: $.proxy(this.checkNode, this),
+ uncheckAll: $.proxy(this.uncheckAll, this),
+ uncheckNode: $.proxy(this.uncheckNode, this),
+ toggleNodeChecked: $.proxy(this.toggleNodeChecked, this),
+
+ // Disable / enable methods
+ disableAll: $.proxy(this.disableAll, this),
+ disableNode: $.proxy(this.disableNode, this),
+ enableAll: $.proxy(this.enableAll, this),
+ enableNode: $.proxy(this.enableNode, this),
+ toggleNodeDisabled: $.proxy(this.toggleNodeDisabled, this),
+
+ // Search methods
+ search: $.proxy(this.search, this),
+ clearSearch: $.proxy(this.clearSearch, this)
+ };
+ };
+
+ Tree.prototype.init = function (options) {
+
+ this.tree = [];
+ this.nodes = [];
+
+ if (options.data) {
+ if (typeof options.data === 'string') {
+ options.data = $.parseJSON(options.data);
+ }
+ this.tree = $.extend(true, [], options.data);
+ delete options.data;
+ }
+ this.options = $.extend({}, _default.settings, options);
+
+ this.destroy();
+ this.subscribeEvents();
+ this.setInitialStates({ nodes: this.tree }, 0);
+ this.render();
+ };
+
+ Tree.prototype.remove = function () {
+ this.destroy();
+ $.removeData(this, pluginName);
+ $('#' + this.styleId).remove();
+ };
+
+ Tree.prototype.destroy = function () {
+
+ if (!this.initialized) return;
+
+ this.$wrapper.remove();
+ this.$wrapper = null;
+
+ // Switch off events
+ this.unsubscribeEvents();
+
+ // Reset this.initialized flag
+ this.initialized = false;
+ };
+
+ Tree.prototype.unsubscribeEvents = function () {
+
+ this.$element.off('click');
+ this.$element.off('nodeChecked');
+ this.$element.off('nodeCollapsed');
+ this.$element.off('nodeDisabled');
+ this.$element.off('nodeEnabled');
+ this.$element.off('nodeExpanded');
+ this.$element.off('nodeSelected');
+ this.$element.off('nodeUnchecked');
+ this.$element.off('nodeUnselected');
+ this.$element.off('searchComplete');
+ this.$element.off('searchCleared');
+ };
+
+ Tree.prototype.subscribeEvents = function () {
+
+ this.unsubscribeEvents();
+
+ this.$element.on('click', $.proxy(this.clickHandler, this));
+
+ if (typeof (this.options.onNodeChecked) === 'function') {
+ this.$element.on('nodeChecked', this.options.onNodeChecked);
+ }
+
+ if (typeof (this.options.onNodeCollapsed) === 'function') {
+ this.$element.on('nodeCollapsed', this.options.onNodeCollapsed);
+ }
+
+ if (typeof (this.options.onNodeDisabled) === 'function') {
+ this.$element.on('nodeDisabled', this.options.onNodeDisabled);
+ }
+
+ if (typeof (this.options.onNodeEnabled) === 'function') {
+ this.$element.on('nodeEnabled', this.options.onNodeEnabled);
+ }
+
+ if (typeof (this.options.onNodeExpanded) === 'function') {
+ this.$element.on('nodeExpanded', this.options.onNodeExpanded);
+ }
+
+ if (typeof (this.options.onNodeSelected) === 'function') {
+ this.$element.on('nodeSelected', this.options.onNodeSelected);
+ }
+
+ if (typeof (this.options.onNodeUnchecked) === 'function') {
+ this.$element.on('nodeUnchecked', this.options.onNodeUnchecked);
+ }
+
+ if (typeof (this.options.onNodeUnselected) === 'function') {
+ this.$element.on('nodeUnselected', this.options.onNodeUnselected);
+ }
+
+ if (typeof (this.options.onSearchComplete) === 'function') {
+ this.$element.on('searchComplete', this.options.onSearchComplete);
+ }
+
+ if (typeof (this.options.onSearchCleared) === 'function') {
+ this.$element.on('searchCleared', this.options.onSearchCleared);
+ }
+ };
+
+ /*
+ Recurse the tree structure and ensure all nodes have
+ valid initial states. User defined states will be preserved.
+ For performance we also take this opportunity to
+ index nodes in a flattened structure
+ */
+ Tree.prototype.setInitialStates = function (node, level) {
+
+ if (!node.nodes) return;
+ level += 1;
+
+ var parent = node;
+ var _this = this;
+ $.each(node.nodes, function checkStates(index, node) {
+
+ // nodeId : unique, incremental identifier
+ node.nodeId = _this.nodes.length;
+
+ // parentId : transversing up the tree
+ node.parentId = parent.nodeId;
+
+ // if not provided set selectable default value
+ if (!node.hasOwnProperty('selectable')) {
+ node.selectable = true;
+ }
+
+ // where provided we should preserve states
+ node.state = node.state || {};
+
+ // set checked state; unless set always false
+ if (!node.state.hasOwnProperty('checked')) {
+ node.state.checked = false;
+ }
+
+ // set enabled state; unless set always false
+ if (!node.state.hasOwnProperty('disabled')) {
+ node.state.disabled = false;
+ }
+
+ // set expanded state; if not provided based on levels
+ if (!node.state.hasOwnProperty('expanded')) {
+ if (!node.state.disabled &&
+ (level < _this.options.levels) &&
+ (node.nodes && node.nodes.length > 0)) {
+ node.state.expanded = true;
+ }
+ else {
+ node.state.expanded = false;
+ }
+ }
+
+ // set selected state; unless set always false
+ if (!node.state.hasOwnProperty('selected')) {
+ node.state.selected = false;
+ }
+
+ // index nodes in a flattened structure for use later
+ _this.nodes.push(node);
+
+ // recurse child nodes and transverse the tree
+ if (node.nodes) {
+ _this.setInitialStates(node, level);
+ }
+ });
+ };
+
+ Tree.prototype.clickHandler = function (event) {
+
+ if (!this.options.enableLinks) event.preventDefault();
+
+ var target = $(event.target);
+ var node = this.findNode(target);
+ if (!node || node.state.disabled) return;
+
+ var classList = target.attr('class') ? target.attr('class').split(' ') : [];
+ if ((classList.indexOf('expand-icon') !== -1)) {
+
+ this.toggleExpandedState(node, _default.options);
+ this.render();
+ }
+ else if ((classList.indexOf('check-icon') !== -1)) {
+
+ this.toggleCheckedState(node, _default.options);
+ this.render();
+ }
+ else {
+
+ if (node.selectable) {
+ this.toggleSelectedState(node, _default.options);
+ } else {
+ this.toggleExpandedState(node, _default.options);
+ }
+
+ this.render();
+ }
+ };
+
+ // Looks up the DOM for the closest parent list item to retrieve the
+ // data attribute nodeid, which is used to lookup the node in the flattened structure.
+ Tree.prototype.findNode = function (target) {
+
+ var nodeId = target.closest('li.list-group-item').attr('data-nodeid');
+ var node = this.nodes[nodeId];
+
+ if (!node) {
+ console.log('Error: node does not exist');
+ }
+ return node;
+ };
+
+ Tree.prototype.toggleExpandedState = function (node, options) {
+ if (!node) return;
+ this.setExpandedState(node, !node.state.expanded, options);
+ };
+
+ Tree.prototype.setExpandedState = function (node, state, options) {
+
+ if (state === node.state.expanded) return;
+
+ if (state && node.nodes) {
+
+ // Expand a node
+ node.state.expanded = true;
+ if (!options.silent) {
+ this.$element.trigger('nodeExpanded', $.extend(true, {}, node));
+ }
+ }
+ else if (!state) {
+
+ // Collapse a node
+ node.state.expanded = false;
+ if (!options.silent) {
+ this.$element.trigger('nodeCollapsed', $.extend(true, {}, node));
+ }
+
+ // Collapse child nodes
+ if (node.nodes && !options.ignoreChildren) {
+ $.each(node.nodes, $.proxy(function (index, node) {
+ this.setExpandedState(node, false, options);
+ }, this));
+ }
+ }
+ };
+
+ Tree.prototype.toggleSelectedState = function (node, options) {
+ if (!node) return;
+ this.setSelectedState(node, !node.state.selected, options);
+ };
+
+ Tree.prototype.setSelectedState = function (node, state, options) {
+
+ if (state === node.state.selected) return;
+
+ if (state) {
+
+ // If multiSelect false, unselect previously selected
+ if (!this.options.multiSelect) {
+ $.each(this.findNodes('true', 'g', 'state.selected'), $.proxy(function (index, node) {
+ this.setSelectedState(node, false, options);
+ }, this));
+ }
+
+ // Continue selecting node
+ node.state.selected = true;
+ if (!options.silent) {
+ this.$element.trigger('nodeSelected', $.extend(true, {}, node));
+ }
+ }
+ else {
+
+ // Unselect node
+ node.state.selected = false;
+ if (!options.silent) {
+ this.$element.trigger('nodeUnselected', $.extend(true, {}, node));
+ }
+ }
+ };
+
+ Tree.prototype.toggleCheckedState = function (node, options) {
+ if (!node) return;
+ this.setCheckedState(node, !node.state.checked, options);
+ };
+
+ Tree.prototype.setCheckedState = function (node, state, options) {
+
+ if (state === node.state.checked) return;
+
+ if (state) {
+
+ // Check node
+ node.state.checked = true;
+
+ if (!options.silent) {
+ this.$element.trigger('nodeChecked', $.extend(true, {}, node));
+ }
+ }
+ else {
+
+ // Uncheck node
+ node.state.checked = false;
+ if (!options.silent) {
+ this.$element.trigger('nodeUnchecked', $.extend(true, {}, node));
+ }
+ }
+ };
+
+ Tree.prototype.setDisabledState = function (node, state, options) {
+
+ if (state === node.state.disabled) return;
+
+ if (state) {
+
+ // Disable node
+ node.state.disabled = true;
+
+ // Disable all other states
+ this.setExpandedState(node, false, options);
+ this.setSelectedState(node, false, options);
+ this.setCheckedState(node, false, options);
+
+ if (!options.silent) {
+ this.$element.trigger('nodeDisabled', $.extend(true, {}, node));
+ }
+ }
+ else {
+
+ // Enabled node
+ node.state.disabled = false;
+ if (!options.silent) {
+ this.$element.trigger('nodeEnabled', $.extend(true, {}, node));
+ }
+ }
+ };
+
+ Tree.prototype.render = function () {
+
+ if (!this.initialized) {
+
+ // Setup first time only components
+ this.$element.addClass(pluginName);
+ this.$wrapper = $(this.template.list);
+
+ this.injectStyle();
+
+ this.initialized = true;
+ }
+
+ this.$element.empty().append(this.$wrapper.empty());
+
+ // Build tree
+ this.buildTree(this.tree, 0);
+ };
+
+ // Starting from the root node, and recursing down the
+ // structure we build the tree one node at a time
+ Tree.prototype.buildTree = function (nodes, level) {
+
+ if (!nodes) return;
+ level += 1;
+
+ var _this = this;
+ $.each(nodes, function addNodes(id, node) {
+
+ var treeItem = $(_this.template.item)
+ .addClass('node-' + _this.elementId)
+ .addClass(node.state.checked ? 'node-checked' : '')
+ .addClass(node.state.disabled ? 'node-disabled': '')
+ .addClass(node.state.selected ? 'node-selected' : '')
+ .addClass(node.searchResult ? 'search-result' : '')
+ .attr('data-nodeid', node.nodeId)
+ .attr('style', _this.buildStyleOverride(node));
+
+ // Add indent/spacer to mimic tree structure
+ for (var i = 0; i < (level - 1); i++) {
+ treeItem.append(_this.template.indent);
+ }
+
+ // Add expand, collapse or empty spacer icons
+ var classList = [];
+ if (node.nodes) {
+ classList.push('expand-icon');
+ if (node.state.expanded) {
+ classList.push(_this.options.collapseIcon);
+ }
+ else {
+ classList.push(_this.options.expandIcon);
+ }
+ }
+ else {
+ classList.push(_this.options.emptyIcon);
+ }
+
+ treeItem
+ .append($(_this.template.icon)
+ .addClass(classList.join(' '))
+ );
+
+
+ // Add node icon
+ if (_this.options.showIcon) {
+
+ var classList = ['node-icon'];
+
+ classList.push(node.icon || _this.options.nodeIcon);
+ if (node.state.selected) {
+ classList.pop();
+ classList.push(node.selectedIcon || _this.options.selectedIcon ||
+ node.icon || _this.options.nodeIcon);
+ }
+
+ treeItem
+ .append($(_this.template.icon)
+ .addClass(classList.join(' '))
+ );
+ }
+
+ // Add check / unchecked icon
+ if (_this.options.showCheckbox) {
+
+ var classList = ['check-icon'];
+ if (node.state.checked) {
+ classList.push(_this.options.checkedIcon);
+ }
+ else {
+ classList.push(_this.options.uncheckedIcon);
+ }
+
+ treeItem
+ .append($(_this.template.icon)
+ .addClass(classList.join(' '))
+ );
+ }
+
+ // Add text
+ if (_this.options.enableLinks) {
+ // Add hyperlink
+ treeItem
+ .append($(_this.template.link)
+ .attr('href', node.href)
+ .append(node.text)
+ );
+ }
+ else {
+ // otherwise just text
+ treeItem
+ .append(node.text);
+ }
+
+ // Add tags as badges
+ if (_this.options.showTags && node.tags) {
+ $.each(node.tags, function addTag(id, tag) {
+ treeItem
+ .append($(_this.template.badge)
+ .append(tag)
+ );
+ });
+ }
+
+ // Add item to the tree
+ _this.$wrapper.append(treeItem);
+
+ // Recursively add child ndoes
+ if (node.nodes && node.state.expanded && !node.state.disabled) {
+ return _this.buildTree(node.nodes, level);
+ }
+ });
+ };
+
+ // Define any node level style override for
+ // 1. selectedNode
+ // 2. node|data assigned color overrides
+ Tree.prototype.buildStyleOverride = function (node) {
+
+ if (node.state.disabled) return '';
+
+ var color = node.color;
+ var backColor = node.backColor;
+
+ if (this.options.highlightSelected && node.state.selected) {
+ if (this.options.selectedColor) {
+ color = this.options.selectedColor;
+ }
+ if (this.options.selectedBackColor) {
+ backColor = this.options.selectedBackColor;
+ }
+ }
+
+ if (this.options.highlightSearchResults && node.searchResult && !node.state.disabled) {
+ if (this.options.searchResultColor) {
+ color = this.options.searchResultColor;
+ }
+ if (this.options.searchResultBackColor) {
+ backColor = this.options.searchResultBackColor;
+ }
+ }
+
+ return 'color:' + color +
+ ';background-color:' + backColor + ';';
+ };
+
+ // Add inline style into head
+ Tree.prototype.injectStyle = function () {
+
+ if (this.options.injectStyle && !document.getElementById(this.styleId)) {
+ $('<style type="text/css" id="' + this.styleId + '"> ' + this.buildStyle() + ' </style>').appendTo('head');
+ }
+ };
+
+ // Construct trees style based on user options
+ Tree.prototype.buildStyle = function () {
+
+ var style = '.node-' + this.elementId + '{';
+
+ if (this.options.color) {
+ style += 'color:' + this.options.color + ';';
+ }
+
+ if (this.options.backColor) {
+ style += 'background-color:' + this.options.backColor + ';';
+ }
+
+ if (!this.options.showBorder) {
+ style += 'border:none;';
+ }
+ else if (this.options.borderColor) {
+ style += 'border:1px solid ' + this.options.borderColor + ';';
+ }
+ style += '}';
+
+ if (this.options.onhoverColor) {
+ style += '.node-' + this.elementId + ':not(.node-disabled):hover{' +
+ 'background-color:' + this.options.onhoverColor + ';' +
+ '}';
+ }
+
+ return this.css + style;
+ };
+
+ Tree.prototype.template = {
+ list: '<ul class="list-group"></ul>',
+ item: '<li class="list-group-item"></li>',
+ indent: '<span class="indent"></span>',
+ icon: '<span class="icon"></span>',
+ link: '<a href="#" style="color:inherit;"></a>',
+ badge: '<span class="badge"></span>'
+ };
+
+ Tree.prototype.css = '.treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}'
+
+
+ /**
+ Returns a single node object that matches the given node id.
+ @param {Number} nodeId - A node's unique identifier
+ @return {Object} node - Matching node
+ */
+ Tree.prototype.getNode = function (nodeId) {
+ return this.nodes[nodeId];
+ };
+
+ /**
+ Returns the parent node of a given node, if valid otherwise returns undefined.
+ @param {Object|Number} identifier - A valid node or node id
+ @returns {Object} node - The parent node
+ */
+ Tree.prototype.getParent = function (identifier) {
+ var node = this.identifyNode(identifier);
+ return this.nodes[node.parentId];
+ };
+
+ /**
+ Returns an array of sibling nodes for a given node, if valid otherwise returns undefined.
+ @param {Object|Number} identifier - A valid node or node id
+ @returns {Array} nodes - Sibling nodes
+ */
+ Tree.prototype.getSiblings = function (identifier) {
+ var node = this.identifyNode(identifier);
+ var parent = this.getParent(node);
+ var nodes = parent ? parent.nodes : this.tree;
+ return nodes.filter(function (obj) {
+ return obj.nodeId !== node.nodeId;
+ });
+ };
+
+ /**
+ Returns an array of selected nodes.
+ @returns {Array} nodes - Selected nodes
+ */
+ Tree.prototype.getSelected = function () {
+ return this.findNodes('true', 'g', 'state.selected');
+ };
+
+ /**
+ Returns an array of unselected nodes.
+ @returns {Array} nodes - Unselected nodes
+ */
+ Tree.prototype.getUnselected = function () {
+ return this.findNodes('false', 'g', 'state.selected');
+ };
+
+ /**
+ Returns an array of expanded nodes.
+ @returns {Array} nodes - Expanded nodes
+ */
+ Tree.prototype.getExpanded = function () {
+ return this.findNodes('true', 'g', 'state.expanded');
+ };
+
+ /**
+ Returns an array of collapsed nodes.
+ @returns {Array} nodes - Collapsed nodes
+ */
+ Tree.prototype.getCollapsed = function () {
+ return this.findNodes('false', 'g', 'state.expanded');
+ };
+
+ /**
+ Returns an array of checked nodes.
+ @returns {Array} nodes - Checked nodes
+ */
+ Tree.prototype.getChecked = function () {
+ return this.findNodes('true', 'g', 'state.checked');
+ };
+
+ /**
+ Returns an array of unchecked nodes.
+ @returns {Array} nodes - Unchecked nodes
+ */
+ Tree.prototype.getUnchecked = function () {
+ return this.findNodes('false', 'g', 'state.checked');
+ };
+
+ /**
+ Returns an array of disabled nodes.
+ @returns {Array} nodes - Disabled nodes
+ */
+ Tree.prototype.getDisabled = function () {
+ return this.findNodes('true', 'g', 'state.disabled');
+ };
+
+ /**
+ Returns an array of enabled nodes.
+ @returns {Array} nodes - Enabled nodes
+ */
+ Tree.prototype.getEnabled = function () {
+ return this.findNodes('false', 'g', 'state.disabled');
+ };
+
+
+ /**
+ Set a node state to selected
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.selectNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setSelectedState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Set a node state to unselected
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.unselectNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setSelectedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Toggles a node selected state; selecting if unselected, unselecting if selected.
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.toggleNodeSelected = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.toggleSelectedState(node, options);
+ }, this));
+
+ this.render();
+ };
+
+
+ /**
+ Collapse all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.collapseAll = function (options) {
+ var identifiers = this.findNodes('true', 'g', 'state.expanded');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setExpandedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Collapse a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.collapseNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setExpandedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Expand all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.expandAll = function (options) {
+ options = $.extend({}, _default.options, options);
+
+ if (options && options.levels) {
+ this.expandLevels(this.tree, options.levels, options);
+ }
+ else {
+ var identifiers = this.findNodes('false', 'g', 'state.expanded');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setExpandedState(node, true, options);
+ }, this));
+ }
+
+ this.render();
+ };
+
+ /**
+ Expand a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.expandNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setExpandedState(node, true, options);
+ if (node.nodes && (options && options.levels)) {
+ this.expandLevels(node.nodes, options.levels-1, options);
+ }
+ }, this));
+
+ this.render();
+ };
+
+ Tree.prototype.expandLevels = function (nodes, level, options) {
+ options = $.extend({}, _default.options, options);
+
+ $.each(nodes, $.proxy(function (index, node) {
+ this.setExpandedState(node, (level > 0) ? true : false, options);
+ if (node.nodes) {
+ this.expandLevels(node.nodes, level-1, options);
+ }
+ }, this));
+ };
+
+ /**
+ Reveals a given tree node, expanding the tree from node to root.
+ @param {Object|Number|Array} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.revealNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ var parentNode = this.getParent(node);
+ while (parentNode) {
+ this.setExpandedState(parentNode, true, options);
+ parentNode = this.getParent(parentNode);
+ };
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Toggles a nodes expanded state; collapsing if expanded, expanding if collapsed.
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.toggleNodeExpanded = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.toggleExpandedState(node, options);
+ }, this));
+
+ this.render();
+ };
+
+
+ /**
+ Check all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.checkAll = function (options) {
+ var identifiers = this.findNodes('false', 'g', 'state.checked');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setCheckedState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Check a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.checkNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setCheckedState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Uncheck all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.uncheckAll = function (options) {
+ var identifiers = this.findNodes('true', 'g', 'state.checked');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setCheckedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Uncheck a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.uncheckNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setCheckedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Toggles a nodes checked state; checking if unchecked, unchecking if checked.
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.toggleNodeChecked = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.toggleCheckedState(node, options);
+ }, this));
+
+ this.render();
+ };
+
+
+ /**
+ Disable all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.disableAll = function (options) {
+ var identifiers = this.findNodes('false', 'g', 'state.disabled');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Disable a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.disableNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Enable all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.enableAll = function (options) {
+ var identifiers = this.findNodes('true', 'g', 'state.disabled');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Enable a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.enableNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Toggles a nodes disabled state; disabling is enabled, enabling if disabled.
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.toggleNodeDisabled = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, !node.state.disabled, options);
+ }, this));
+
+ this.render();
+ };
+
+
+ /**
+ Common code for processing multiple identifiers
+ */
+ Tree.prototype.forEachIdentifier = function (identifiers, options, callback) {
+
+ options = $.extend({}, _default.options, options);
+
+ if (!(identifiers instanceof Array)) {
+ identifiers = [identifiers];
+ }
+
+ $.each(identifiers, $.proxy(function (index, identifier) {
+ callback(this.identifyNode(identifier), options);
+ }, this));
+ };
+
+ /*
+ Identifies a node from either a node id or object
+ */
+ Tree.prototype.identifyNode = function (identifier) {
+ return ((typeof identifier) === 'number') ?
+ this.nodes[identifier] :
+ identifier;
+ };
+
+ /**
+ Searches the tree for nodes (text) that match given criteria
+ @param {String} pattern - A given string to match against
+ @param {optional Object} options - Search criteria options
+ @return {Array} nodes - Matching nodes
+ */
+ Tree.prototype.search = function (pattern, options) {
+ options = $.extend({}, _default.searchOptions, options);
+
+ this.clearSearch({ render: false });
+
+ var results = [];
+ if (pattern && pattern.length > 0) {
+
+ if (options.exactMatch) {
+ pattern = '^' + pattern + '$';
+ }
+
+ var modifier = 'g';
+ if (options.ignoreCase) {
+ modifier += 'i';
+ }
+
+ results = this.findNodes(pattern, modifier);
+
+ // Add searchResult property to all matching nodes
+ // This will be used to apply custom styles
+ // and when identifying result to be cleared
+ $.each(results, function (index, node) {
+ node.searchResult = true;
+ })
+ }
+
+ // If revealResults, then render is triggered from revealNode
+ // otherwise we just call render.
+ if (options.revealResults) {
+ this.revealNode(results);
+ }
+ else {
+ this.render();
+ }
+
+ this.$element.trigger('searchComplete', $.extend(true, {}, results));
+
+ return results;
+ };
+
+ /**
+ Clears previous search results
+ */
+ Tree.prototype.clearSearch = function (options) {
+
+ options = $.extend({}, { render: true }, options);
+
+ var results = $.each(this.findNodes('true', 'g', 'searchResult'), function (index, node) {
+ node.searchResult = false;
+ });
+
+ if (options.render) {
+ this.render();
+ }
+
+ this.$element.trigger('searchCleared', $.extend(true, {}, results));
+ };
+
+ /**
+ Find nodes that match a given criteria
+ @param {String} pattern - A given string to match against
+ @param {optional String} modifier - Valid RegEx modifiers
+ @param {optional String} attribute - Attribute to compare pattern against
+ @return {Array} nodes - Nodes that match your criteria
+ */
+ Tree.prototype.findNodes = function (pattern, modifier, attribute) {
+
+ modifier = modifier || 'g';
+ attribute = attribute || 'text';
+
+ var _this = this;
+ return $.grep(this.nodes, function (node) {
+ var val = _this.getNodeValue(node, attribute);
+ if (typeof val === 'string') {
+ return val.match(new RegExp(pattern, modifier));
+ }
+ });
+ };
+
+ /**
+ Recursive find for retrieving nested attributes values
+ All values are return as strings, unless invalid
+ @param {Object} obj - Typically a node, could be any object
+ @param {String} attr - Identifies an object property using dot notation
+ @return {String} value - Matching attributes string representation
+ */
+ Tree.prototype.getNodeValue = function (obj, attr) {
+ var index = attr.indexOf('.');
+ if (index > 0) {
+ var _obj = obj[attr.substring(0, index)];
+ var _attr = attr.substring(index + 1, attr.length);
+ return this.getNodeValue(_obj, _attr);
+ }
+ else {
+ if (obj.hasOwnProperty(attr)) {
+ return obj[attr].toString();
+ }
+ else {
+ return undefined;
+ }
+ }
+ };
+
+ var logError = function (message) {
+ if (window.console) {
+ window.console.error(message);
+ }
+ };
+
+ // Prevent against multiple instantiations,
+ // handle updates and method calls
+ $.fn[pluginName] = function (options, args) {
+
+ var result;
+
+ this.each(function () {
+ var _this = $.data(this, pluginName);
+ if (typeof options === 'string') {
+ if (!_this) {
+ logError('Not initialized, can not call method : ' + options);
+ }
+ else if (!$.isFunction(_this[options]) || options.charAt(0) === '_') {
+ logError('No such method : ' + options);
+ }
+ else {
+ if (!(args instanceof Array)) {
+ args = [ args ];
+ }
+ result = _this[options].apply(_this, args);
+ }
+ }
+ else if (typeof options === 'boolean') {
+ result = _this;
+ }
+ else {
+ $.data(this, pluginName, new Tree(this, $.extend(true, {}, options)));
+ }
+ });
+
+ return result || this;
+ };
+
+})(jQuery, window, document);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/README.md
new file mode 100644
index 0000000..c0a7242
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/README.md
@@ -0,0 +1,763 @@
+# Bootstrap Tree View
+
+---
+
+
+[](https://www.npmjs.com/package/bootstrap-treeview)
+[](https://travis-ci.org/jonmiles/bootstrap-treeview)
+
+A simple and elegant solution to displaying hierarchical tree structures (i.e. a Tree View) while leveraging the best that Twitter Bootstrap has to offer.
+
+
+
+## Dependencies
+
+Where provided these are the actual versions bootstrap-treeview has been tested against.
+
+- [Bootstrap v3.3.4 (>= 3.0.0)](http://getbootstrap.com/)
+- [jQuery v2.1.3 (>= 1.9.0)](http://jquery.com/)
+
+
+## Getting Started
+
+### Install
+
+You can install using bower (recommended):
+
+```javascript
+$ bower install bootstrap-treeview
+```
+
+or using npm:
+
+```javascript
+$ npm install bootstrap-treeview
+```
+
+or [download](https://github.com/jonmiles/bootstrap-treeview/releases/tag/v1.2.0) manually.
+
+
+
+### Usage
+
+Add the following resources for the bootstrap-treeview to function correctly.
+
+```html
+<!-- Required Stylesheets -->
+<link href="bootstrap.css" rel="stylesheet">
+
+<!-- Required Javascript -->
+<script src="jquery.js"></script>
+<script src="bootstrap-treeview.js"></script>
+```
+
+The component will bind to any existing DOM element.
+
+```html
+<div id="tree"></div>
+```
+
+Basic usage may look something like this.
+
+```javascript
+function getTree() {
+ // Some logic to retrieve, or generate tree structure
+ return data;
+}
+
+$('#tree').treeview({data: getTree()});
+```
+
+
+## Data Structure
+
+In order to define the hierarchical structure needed for the tree it's necessary to provide a nested array of JavaScript objects.
+
+Example
+
+```javascript
+var tree = [
+ {
+ text: "Parent 1",
+ nodes: [
+ {
+ text: "Child 1",
+ nodes: [
+ {
+ text: "Grandchild 1"
+ },
+ {
+ text: "Grandchild 2"
+ }
+ ]
+ },
+ {
+ text: "Child 2"
+ }
+ ]
+ },
+ {
+ text: "Parent 2"
+ },
+ {
+ text: "Parent 3"
+ },
+ {
+ text: "Parent 4"
+ },
+ {
+ text: "Parent 5"
+ }
+];
+```
+
+At the lowest level a tree node is a represented as a simple JavaScript object. This one required property `text` will build you a tree.
+
+```javascript
+{
+ text: "Node 1"
+}
+```
+
+If you want to do more, here's the full node specification
+
+```javascript
+{
+ text: "Node 1",
+ icon: "glyphicon glyphicon-stop",
+ selectedIcon: "glyphicon glyphicon-stop",
+ color: "#000000",
+ backColor: "#FFFFFF",
+ href: "#node-1",
+ selectable: true,
+ state: {
+ checked: true,
+ disabled: true,
+ expanded: true,
+ selected: true
+ },
+ tags: ['available'],
+ nodes: [
+ {},
+ ...
+ ]
+}
+```
+
+### Node Properties
+
+The following properties are defined to allow node level overrides, such as node specific icons, colours and tags.
+
+#### text
+`String` `Mandatory`
+
+The text value displayed for a given tree node, typically to the right of the nodes icon.
+
+#### icon
+`String` `Optional`
+
+The icon displayed on a given node, typically to the left of the text.
+
+For simplicity we directly leverage [Bootstraps Glyphicons support](http://getbootstrap.com/components/#glyphicons) and as such you should provide both the base class and individual icon class separated by a space.
+
+By providing the base class you retain full control over the icons used. If you want to use your own then just add your class to this icon field.
+
+#### selectedIcon
+`String` `Optional`
+
+The icon displayed on a given node when selected, typically to the left of the text.
+
+#### color
+`String` `Optional`
+
+The foreground color used on a given node, overrides global color option.
+
+#### backColor
+`String` `Optional`
+
+The background color used on a given node, overrides global color option.
+
+#### href
+`String` `Optional`
+
+Used in conjunction with global enableLinks option to specify anchor tag URL on a given node.
+
+#### selectable
+`Boolean` `Default: true`
+
+Whether or not a node is selectable in the tree. False indicates the node should act as an expansion heading and will not fire selection events.
+
+#### state
+`Object` `Optional`
+Describes a node's initial state.
+
+#### state.checked
+`Boolean` `Default: false`
+
+Whether or not a node is checked, represented by a checkbox style glyphicon.
+
+#### state.disabled
+`Boolean` `Default: false`
+
+Whether or not a node is disabled (not selectable, expandable or checkable).
+
+#### state.expanded
+`Boolean` `Default: false`
+
+Whether or not a node is expanded i.e. open. Takes precedence over global option levels.
+
+#### state.selected
+`Boolean` `Default: false`
+
+Whether or not a node is selected.
+
+#### tags
+`Array of Strings` `Optional`
+
+Used in conjunction with global showTags option to add additional information to the right of each node; using [Bootstrap Badges](http://getbootstrap.com/components/#badges)
+
+### Extendible
+
+You can extend the node object by adding any number of additional key value pairs that you require for your application. Remember this is the object which will be passed around during selection events.
+
+
+
+## Options
+
+Options allow you to customise the treeview's default appearance and behaviour. They are passed to the plugin on initialization, as an object.
+
+```javascript
+// Example: initializing the treeview
+// expanded to 5 levels
+// with a background color of green
+$('#tree').treeview({
+ data: data, // data is not optional
+ levels: 5,
+ backColor: 'green'
+});
+```
+You can pass a new options object to the treeview at any time but this will have the effect of re-initializing the treeview.
+
+### List of Options
+
+The following is a list of all available options.
+
+#### data
+Array of Objects. No default, expects data
+
+This is the core data to be displayed by the tree view.
+
+#### backColor
+String, [any legal color value](http://www.w3schools.com/cssref/css_colors_legal.asp). Default: inherits from Bootstrap.css.
+
+Sets the default background color used by all nodes, except when overridden on a per node basis in data.
+
+#### borderColor
+String, [any legal color value](http://www.w3schools.com/cssref/css_colors_legal.asp). Default: inherits from Bootstrap.css.
+
+Sets the border color for the component; set showBorder to false if you don't want a visible border.
+
+#### checkedIcon
+String, class names(s). Default: "glyphicon glyphicon-check" as defined by [Bootstrap Glyphicons](http://getbootstrap.com/components/#glyphicons)
+
+Sets the icon to be as a checked checkbox, used in conjunction with showCheckbox.
+
+#### collapseIcon
+String, class name(s). Default: "glyphicon glyphicon-minus" as defined by [Bootstrap Glyphicons](http://getbootstrap.com/components/#glyphicons)
+
+Sets the icon to be used on a collapsible tree node.
+
+#### color
+String, [any legal color value](http://www.w3schools.com/cssref/css_colors_legal.asp). Default: inherits from Bootstrap.css.
+
+Sets the default foreground color used by all nodes, except when overridden on a per node basis in data.
+
+#### emptyIcon
+String, class name(s). Default: "glyphicon" as defined by [Bootstrap Glyphicons](http://getbootstrap.com/components/#glyphicons)
+
+Sets the icon to be used on a tree node with no child nodes.
+
+#### enableLinks
+Boolean. Default: false
+
+Whether or not to present node text as a hyperlink. The href value of which must be provided in the data structure on a per node basis.
+
+#### expandIcon
+String, class name(s). Default: "glyphicon glyphicon-plus" as defined by [Bootstrap Glyphicons](http://getbootstrap.com/components/#glyphicons)
+
+Sets the icon to be used on an expandable tree node.
+
+#### highlightSearchResults
+Boolean. Default: true
+
+Whether or not to highlight search results.
+
+#### highlightSelected
+Boolean. Default: true
+
+Whether or not to highlight the selected node.
+
+#### levels
+Integer. Default: 2
+
+Sets the number of hierarchical levels deep the tree will be expanded to by default.
+
+#### multiSelect
+Boolean. Default: false
+
+Whether or not multiple nodes can be selected at the same time.
+
+#### nodeIcon
+String, class name(s). Default: "glyphicon glyphicon-stop" as defined by [Bootstrap Glyphicons](http://getbootstrap.com/components/#glyphicons)
+
+Sets the default icon to be used on all nodes, except when overridden on a per node basis in data.
+
+#### onhoverColor
+String, [any legal color value](http://www.w3schools.com/cssref/css_colors_legal.asp). Default: '#F5F5F5'.
+
+Sets the default background color activated when the users cursor hovers over a node.
+
+#### selectedIcon
+String, class name(s). Default: "glyphicon glyphicon-stop" as defined by [Bootstrap Glyphicons](http://getbootstrap.com/components/#glyphicons)
+
+Sets the default icon to be used on all selected nodes, except when overridden on a per node basis in data.
+
+#### searchResultBackColor
+String, [any legal color value](http://www.w3schools.com/cssref/css_colors_legal.asp). Default: undefined, inherits.
+
+Sets the background color of the selected node.
+
+#### searchResultColor
+String, [any legal color value](http://www.w3schools.com/cssref/css_colors_legal.asp). Default: '#D9534F'.
+
+Sets the foreground color of the selected node.
+
+#### selectedBackColor
+String, [any legal color value](http://www.w3schools.com/cssref/css_colors_legal.asp). Default: '#428bca'.
+
+Sets the background color of the selected node.
+
+#### selectedColor
+String, [any legal color value](http://www.w3schools.com/cssref/css_colors_legal.asp). Default: '#FFFFFF'.
+
+Sets the foreground color of the selected node.
+
+#### showBorder
+Boolean. Default: true
+
+Whether or not to display a border around nodes.
+
+#### showCheckbox
+Boolean. Default: false
+
+Whether or not to display checkboxes on nodes.
+
+#### showIcon
+Boolean. Default: true
+
+Whether or not to display a nodes icon.
+
+#### showTags
+Boolean. Default: false
+
+Whether or not to display tags to the right of each node. The values of which must be provided in the data structure on a per node basis.
+
+#### uncheckedIcon
+String, class names(s). Default: "glyphicon glyphicon-unchecked" as defined by [Bootstrap Glyphicons](http://getbootstrap.com/components/#glyphicons)
+
+Sets the icon to be as an unchecked checkbox, used in conjunction with showCheckbox.
+
+
+## Methods
+
+Methods provide a way of interacting with the plugin programmatically. For example, expanding a node is possible via the expandNode method.
+
+You can invoke methods in one of two ways, using either:
+
+#### 1. The plugin's wrapper
+
+The plugin's wrapper works as a proxy for accessing the underlying methods.
+
+```javascript
+$('#tree').treeview('methodName', args)
+```
+> Limitation, multiple arguments must be passed as an array of arguments.
+
+#### 2. The treeview directly
+
+You can get an instance of the treeview using one of the two following methods.
+
+```javascript
+// This special method returns an instance of the treeview.
+$('#tree').treeview(true)
+ .methodName(args);
+
+// The instance is also saved in the DOM elements data,
+// and accessible using the plugin's id 'treeview'.
+$('#tree').data('treeview')
+ .methodName(args);
+```
+> A better approach, if you plan a lot of interaction.
+
+### List of Methods
+
+The following is a list of all available methods.
+
+#### checkAll(options)
+
+Checks all tree nodes
+
+```javascript
+$('#tree').treeview('checkAll', { silent: true });
+```
+
+Triggers `nodeChecked` event; pass silent to suppress events.
+
+#### checkNode(node | nodeId, options)
+
+Checks a given tree node, accepts node or nodeId.
+
+```javascript
+$('#tree').treeview('checkNode', [ nodeId, { silent: true } ]);
+```
+
+Triggers `nodeChecked` event; pass silent to suppress events.
+
+#### clearSearch()
+
+Clear the tree view of any previous search results e.g. remove their highlighted state.
+
+```javascript
+$('#tree').treeview('clearSearch');
+```
+
+Triggers `searchCleared` event
+
+#### collapseAll(options)
+
+Collapse all tree nodes, collapsing the entire tree.
+
+```javascript
+$('#tree').treeview('collapseAll', { silent: true });
+```
+
+Triggers `nodeCollapsed` event; pass silent to suppress events.
+
+#### collapseNode(node | nodeId, options)
+
+Collapse a given tree node and it's child nodes. If you don't want to collapse the child nodes, pass option `{ ignoreChildren: true }`.
+
+```javascript
+$('#tree').treeview('collapseNode', [ nodeId, { silent: true, ignoreChildren: false } ]);
+```
+
+Triggers `nodeCollapsed` event; pass silent to suppress events.
+
+#### disableAll(options)
+
+Disable all tree nodes
+
+```javascript
+$('#tree').treeview('disableAll', { silent: true });
+```
+
+Triggers `nodeDisabled` event; pass silent to suppress events.
+
+#### disableNode(node | nodeId, options)
+
+Disable a given tree node, accepts node or nodeId.
+
+```javascript
+$('#tree').treeview('disableNode', [ nodeId, { silent: true } ]);
+```
+
+Triggers `nodeDisabled` event; pass silent to suppress events.
+
+#### enableAll(options)
+
+Enable all tree nodes
+
+```javascript
+$('#tree').treeview('enableAll', { silent: true });
+```
+
+Triggers `nodeEnabled` event; pass silent to suppress events.
+
+#### enableNode(node | nodeId, options)
+
+Enable a given tree node, accepts node or nodeId.
+
+```javascript
+$('#tree').treeview('enableNode', [ nodeId, { silent: true } ]);
+```
+
+Triggers `nodeEnabled` event; pass silent to suppress events.
+
+#### expandAll(options)
+
+Expand all tree nodes. Optionally can be expanded to any given number of levels.
+
+```javascript
+$('#tree').treeview('expandAll', { levels: 2, silent: true });
+```
+
+Triggers `nodeExpanded` event; pass silent to suppress events.
+
+#### expandNode(node | nodeId, options)
+
+Expand a given tree node, accepts node or nodeId. Optionally can be expanded to any given number of levels.
+
+```javascript
+$('#tree').treeview('expandNode', [ nodeId, { levels: 2, silent: true } ]);
+```
+
+Triggers `nodeExpanded` event; pass silent to suppress events.
+
+#### getCollapsed()
+
+Returns an array of collapsed nodes e.g. state.expanded = false.
+
+```javascript
+$('#tree').treeview('getCollapsed', nodeId);
+```
+
+#### getDisabled()
+
+Returns an array of disabled nodes e.g. state.disabled = true.
+
+```javascript
+$('#tree').treeview('getDisabled', nodeId);
+```
+
+#### getEnabled()
+
+Returns an array of enabled nodes e.g. state.disabled = false.
+
+```javascript
+$('#tree').treeview('getEnabled', nodeId);
+```
+
+#### getExpanded()
+
+Returns an array of expanded nodes e.g. state.expanded = true.
+
+```javascript
+$('#tree').treeview('getExpanded', nodeId);
+```
+
+#### getNode(nodeId)
+
+Returns a single node object that matches the given node id.
+
+```javascript
+$('#tree').treeview('getNode', nodeId);
+```
+
+#### getParent(node | nodeId)
+
+Returns the parent node of a given node, if valid otherwise returns undefined.
+
+```javascript
+$('#tree').treeview('getParent', node);
+```
+
+#### getSelected()
+
+Returns an array of selected nodes e.g. state.selected = true.
+
+```javascript
+$('#tree').treeview('getSelected', nodeId);
+```
+
+#### getSiblings(node | nodeId)
+
+Returns an array of sibling nodes for a given node, if valid otherwise returns undefined.
+
+```javascript
+$('#tree').treeview('getSiblings', node);
+```
+
+#### getUnselected()
+
+Returns an array of unselected nodes e.g. state.selected = false.
+
+```javascript
+$('#tree').treeview('getUnselected', nodeId);
+```
+
+#### remove()
+
+Removes the tree view component. Removing attached events, internal attached objects, and added HTML elements.
+
+```javascript
+$('#tree').treeview('remove');
+```
+
+#### revealNode(node | nodeId, options)
+
+Reveals a given tree node, expanding the tree from node to root.
+
+```javascript
+$('#tree').treeview('revealNode', [ nodeId, { silent: true } ]);
+```
+
+Triggers `nodeExpanded` event; pass silent to suppress events.
+
+#### search(pattern, options)
+
+Searches the tree view for nodes that match a given string, highlighting them in the tree.
+
+Returns an array of matching nodes.
+
+```javascript
+$('#tree').treeview('search', [ 'Parent', {
+ ignoreCase: true, // case insensitive
+ exactMatch: false, // like or equals
+ revealResults: true, // reveal matching nodes
+}]);
+```
+
+Triggers `searchComplete` event
+
+#### selectNode(node | nodeId, options)
+
+Selects a given tree node, accepts node or nodeId.
+
+```javascript
+$('#tree').treeview('selectNode', [ nodeId, { silent: true } ]);
+```
+
+Triggers `nodeSelected` event; pass silent to suppress events.
+
+#### toggleNodeChecked(node | nodeId, options)
+
+Toggles a nodes checked state; checking if unchecked, unchecking if checked.
+
+```javascript
+$('#tree').treeview('toggleNodeChecked', [ nodeId, { silent: true } ]);
+```
+
+Triggers either `nodeChecked` or `nodeUnchecked` event; pass silent to suppress events.
+
+#### toggleNodeDisabled(node | nodeId, options)
+
+Toggles a nodes disabled state; disabling if enabled, enabling if disabled.
+
+```javascript
+$('#tree').treeview('toggleNodeDisabled', [ nodeId, { silent: true } ]);
+```
+
+Triggers either `nodeDisabled` or `nodeEnabled` event; pass silent to suppress events.
+
+#### toggleNodeExpanded(node | nodeId, options)
+
+Toggles a nodes expanded state; collapsing if expanded, expanding if collapsed.
+
+```javascript
+$('#tree').treeview('toggleNodeExpanded', [ nodeId, { silent: true } ]);
+```
+
+Triggers either `nodeExpanded` or `nodeCollapsed` event; pass silent to suppress events.
+
+#### toggleNodeSelected(node | nodeId, options)
+
+Toggles a node selected state; selecting if unselected, unselecting if selected.
+
+```javascript
+$('#tree').treeview('toggleNodeSelected', [ nodeId, { silent: true } ]);
+```
+
+Triggers either `nodeSelected` or `nodeUnselected` event; pass silent to suppress events.
+
+#### uncheckAll(options)
+
+Uncheck all tree nodes.
+
+```javascript
+$('#tree').treeview('uncheckAll', { silent: true });
+```
+
+Triggers `nodeUnchecked` event; pass silent to suppress events.
+
+#### uncheckNode(node | nodeId, options)
+
+Uncheck a given tree node, accepts node or nodeId.
+
+```javascript
+$('#tree').treeview('uncheckNode', [ nodeId, { silent: true } ]);
+```
+
+Triggers `nodeUnchecked` event; pass silent to suppress events.
+
+#### unselectNode(node | nodeId, options)
+
+Unselects a given tree node, accepts node or nodeId.
+
+```javascript
+$('#tree').treeview('unselectNode', [ nodeId, { silent: true } ]);
+```
+
+Triggers `nodeUnselected` event; pass silent to suppress events.
+
+## Events
+
+Events are provided so that your application can respond to changes in the treeview's state. For example, if you want to update a display when a node is selected use the `nodeSelected` event.
+
+You can bind to any event defined below by either using an options callback handler, or the standard jQuery .on method.
+
+Example using options callback handler:
+
+```javascript
+$('#tree').treeview({
+ // The naming convention for callback's is to prepend with `on`
+ // and capitalize the first letter of the event name
+ // e.g. nodeSelected -> onNodeSelected
+ onNodeSelected: function(event, data) {
+ // Your logic goes here
+ });
+```
+
+and using jQuery .on method
+
+```javascript
+$('#tree').on('nodeSelected', function(event, data) {
+ // Your logic goes here
+});
+```
+
+### List of Events
+
+`nodeChecked (event, node)` - A node is checked.
+
+`nodeCollapsed (event, node)` - A node is collapsed.
+
+`nodeDisabled (event, node)` - A node is disabled.
+
+`nodeEnabled (event, node)` - A node is enabled.
+
+`nodeExpanded (event, node)` - A node is expanded.
+
+`nodeSelected (event, node)` - A node is selected.
+
+`nodeUnchecked (event, node)` - A node is unchecked.
+
+`nodeUnselected (event, node)` - A node is unselected.
+
+`searchComplete (event, results)` - After a search completes
+
+`searchCleared (event, results)` - After search results are cleared
+
+
+
+## Copyright and Licensing
+Copyright 2013 Jonathan Miles
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/screenshot/default.PNG b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/screenshot/default.PNG
new file mode 100644
index 0000000..ee5e9ce
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/screenshot/default.PNG differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/src/css/bootstrap-treeview.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/src/css/bootstrap-treeview.css
new file mode 100644
index 0000000..23c6cf0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/src/css/bootstrap-treeview.css
@@ -0,0 +1,37 @@
+/* =========================================================
+ * bootstrap-treeview.css v1.2.0
+ * =========================================================
+ * Copyright 2013 Jonathan Miles
+ * Project URL : http://www.jondmiles.com/bootstrap-treeview
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+.treeview .list-group-item {
+ cursor: pointer;
+}
+
+.treeview span.indent {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+.treeview span.icon {
+ width: 12px;
+ margin-right: 5px;
+}
+
+.treeview .node-disabled {
+ color: silver;
+ cursor: not-allowed;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/src/js/bootstrap-treeview.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/src/js/bootstrap-treeview.js
new file mode 100644
index 0000000..7a82a2e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/bootstrap-treeview/src/js/bootstrap-treeview.js
@@ -0,0 +1,1249 @@
+/* =========================================================
+ * bootstrap-treeview.js v1.2.0
+ * =========================================================
+ * Copyright 2013 Jonathan Miles
+ * Project URL : http://www.jondmiles.com/bootstrap-treeview
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+;(function ($, window, document, undefined) {
+
+ /*global jQuery, console*/
+
+ 'use strict';
+
+ var pluginName = 'treeview';
+
+ var _default = {};
+
+ _default.settings = {
+
+ injectStyle: true,
+
+ levels: 2,
+
+ expandIcon: 'glyphicon glyphicon-plus',
+ collapseIcon: 'glyphicon glyphicon-minus',
+ emptyIcon: 'glyphicon',
+ nodeIcon: '',
+ selectedIcon: '',
+ checkedIcon: 'glyphicon glyphicon-check',
+ uncheckedIcon: 'glyphicon glyphicon-unchecked',
+
+ color: undefined, // '#000000',
+ backColor: undefined, // '#FFFFFF',
+ borderColor: undefined, // '#dddddd',
+ onhoverColor: '#F5F5F5',
+ selectedColor: '#FFFFFF',
+ selectedBackColor: '#428bca',
+ searchResultColor: '#D9534F',
+ searchResultBackColor: undefined, //'#FFFFFF',
+
+ enableLinks: false,
+ highlightSelected: true,
+ highlightSearchResults: true,
+ showBorder: true,
+ showIcon: true,
+ showCheckbox: false,
+ showTags: false,
+ multiSelect: false,
+
+ // Event handlers
+ onNodeChecked: undefined,
+ onNodeCollapsed: undefined,
+ onNodeDisabled: undefined,
+ onNodeEnabled: undefined,
+ onNodeExpanded: undefined,
+ onNodeSelected: undefined,
+ onNodeUnchecked: undefined,
+ onNodeUnselected: undefined,
+ onSearchComplete: undefined,
+ onSearchCleared: undefined
+ };
+
+ _default.options = {
+ silent: false,
+ ignoreChildren: false
+ };
+
+ _default.searchOptions = {
+ ignoreCase: true,
+ exactMatch: false,
+ revealResults: true
+ };
+
+ var Tree = function (element, options) {
+
+ this.$element = $(element);
+ this.elementId = element.id;
+ this.styleId = this.elementId + '-style';
+
+ this.init(options);
+
+ return {
+
+ // Options (public access)
+ options: this.options,
+
+ // Initialize / destroy methods
+ init: $.proxy(this.init, this),
+ remove: $.proxy(this.remove, this),
+
+ // Get methods
+ getNode: $.proxy(this.getNode, this),
+ getParent: $.proxy(this.getParent, this),
+ getSiblings: $.proxy(this.getSiblings, this),
+ getSelected: $.proxy(this.getSelected, this),
+ getUnselected: $.proxy(this.getUnselected, this),
+ getExpanded: $.proxy(this.getExpanded, this),
+ getCollapsed: $.proxy(this.getCollapsed, this),
+ getChecked: $.proxy(this.getChecked, this),
+ getUnchecked: $.proxy(this.getUnchecked, this),
+ getDisabled: $.proxy(this.getDisabled, this),
+ getEnabled: $.proxy(this.getEnabled, this),
+
+ // Select methods
+ selectNode: $.proxy(this.selectNode, this),
+ unselectNode: $.proxy(this.unselectNode, this),
+ toggleNodeSelected: $.proxy(this.toggleNodeSelected, this),
+
+ // Expand / collapse methods
+ collapseAll: $.proxy(this.collapseAll, this),
+ collapseNode: $.proxy(this.collapseNode, this),
+ expandAll: $.proxy(this.expandAll, this),
+ expandNode: $.proxy(this.expandNode, this),
+ toggleNodeExpanded: $.proxy(this.toggleNodeExpanded, this),
+ revealNode: $.proxy(this.revealNode, this),
+
+ // Expand / collapse methods
+ checkAll: $.proxy(this.checkAll, this),
+ checkNode: $.proxy(this.checkNode, this),
+ uncheckAll: $.proxy(this.uncheckAll, this),
+ uncheckNode: $.proxy(this.uncheckNode, this),
+ toggleNodeChecked: $.proxy(this.toggleNodeChecked, this),
+
+ // Disable / enable methods
+ disableAll: $.proxy(this.disableAll, this),
+ disableNode: $.proxy(this.disableNode, this),
+ enableAll: $.proxy(this.enableAll, this),
+ enableNode: $.proxy(this.enableNode, this),
+ toggleNodeDisabled: $.proxy(this.toggleNodeDisabled, this),
+
+ // Search methods
+ search: $.proxy(this.search, this),
+ clearSearch: $.proxy(this.clearSearch, this)
+ };
+ };
+
+ Tree.prototype.init = function (options) {
+
+ this.tree = [];
+ this.nodes = [];
+
+ if (options.data) {
+ if (typeof options.data === 'string') {
+ options.data = $.parseJSON(options.data);
+ }
+ this.tree = $.extend(true, [], options.data);
+ delete options.data;
+ }
+ this.options = $.extend({}, _default.settings, options);
+
+ this.destroy();
+ this.subscribeEvents();
+ this.setInitialStates({ nodes: this.tree }, 0);
+ this.render();
+ };
+
+ Tree.prototype.remove = function () {
+ this.destroy();
+ $.removeData(this, pluginName);
+ $('#' + this.styleId).remove();
+ };
+
+ Tree.prototype.destroy = function () {
+
+ if (!this.initialized) return;
+
+ this.$wrapper.remove();
+ this.$wrapper = null;
+
+ // Switch off events
+ this.unsubscribeEvents();
+
+ // Reset this.initialized flag
+ this.initialized = false;
+ };
+
+ Tree.prototype.unsubscribeEvents = function () {
+
+ this.$element.off('click');
+ this.$element.off('nodeChecked');
+ this.$element.off('nodeCollapsed');
+ this.$element.off('nodeDisabled');
+ this.$element.off('nodeEnabled');
+ this.$element.off('nodeExpanded');
+ this.$element.off('nodeSelected');
+ this.$element.off('nodeUnchecked');
+ this.$element.off('nodeUnselected');
+ this.$element.off('searchComplete');
+ this.$element.off('searchCleared');
+ };
+
+ Tree.prototype.subscribeEvents = function () {
+
+ this.unsubscribeEvents();
+
+ this.$element.on('click', $.proxy(this.clickHandler, this));
+
+ if (typeof (this.options.onNodeChecked) === 'function') {
+ this.$element.on('nodeChecked', this.options.onNodeChecked);
+ }
+
+ if (typeof (this.options.onNodeCollapsed) === 'function') {
+ this.$element.on('nodeCollapsed', this.options.onNodeCollapsed);
+ }
+
+ if (typeof (this.options.onNodeDisabled) === 'function') {
+ this.$element.on('nodeDisabled', this.options.onNodeDisabled);
+ }
+
+ if (typeof (this.options.onNodeEnabled) === 'function') {
+ this.$element.on('nodeEnabled', this.options.onNodeEnabled);
+ }
+
+ if (typeof (this.options.onNodeExpanded) === 'function') {
+ this.$element.on('nodeExpanded', this.options.onNodeExpanded);
+ }
+
+ if (typeof (this.options.onNodeSelected) === 'function') {
+ this.$element.on('nodeSelected', this.options.onNodeSelected);
+ }
+
+ if (typeof (this.options.onNodeUnchecked) === 'function') {
+ this.$element.on('nodeUnchecked', this.options.onNodeUnchecked);
+ }
+
+ if (typeof (this.options.onNodeUnselected) === 'function') {
+ this.$element.on('nodeUnselected', this.options.onNodeUnselected);
+ }
+
+ if (typeof (this.options.onSearchComplete) === 'function') {
+ this.$element.on('searchComplete', this.options.onSearchComplete);
+ }
+
+ if (typeof (this.options.onSearchCleared) === 'function') {
+ this.$element.on('searchCleared', this.options.onSearchCleared);
+ }
+ };
+
+ /*
+ Recurse the tree structure and ensure all nodes have
+ valid initial states. User defined states will be preserved.
+ For performance we also take this opportunity to
+ index nodes in a flattened structure
+ */
+ Tree.prototype.setInitialStates = function (node, level) {
+
+ if (!node.nodes) return;
+ level += 1;
+
+ var parent = node;
+ var _this = this;
+ $.each(node.nodes, function checkStates(index, node) {
+
+ // nodeId : unique, incremental identifier
+ node.nodeId = _this.nodes.length;
+
+ // parentId : transversing up the tree
+ node.parentId = parent.nodeId;
+
+ // if not provided set selectable default value
+ if (!node.hasOwnProperty('selectable')) {
+ node.selectable = true;
+ }
+
+ // where provided we should preserve states
+ node.state = node.state || {};
+
+ // set checked state; unless set always false
+ if (!node.state.hasOwnProperty('checked')) {
+ node.state.checked = false;
+ }
+
+ // set enabled state; unless set always false
+ if (!node.state.hasOwnProperty('disabled')) {
+ node.state.disabled = false;
+ }
+
+ // set expanded state; if not provided based on levels
+ if (!node.state.hasOwnProperty('expanded')) {
+ if (!node.state.disabled &&
+ (level < _this.options.levels) &&
+ (node.nodes && node.nodes.length > 0)) {
+ node.state.expanded = true;
+ }
+ else {
+ node.state.expanded = false;
+ }
+ }
+
+ // set selected state; unless set always false
+ if (!node.state.hasOwnProperty('selected')) {
+ node.state.selected = false;
+ }
+
+ // index nodes in a flattened structure for use later
+ _this.nodes.push(node);
+
+ // recurse child nodes and transverse the tree
+ if (node.nodes) {
+ _this.setInitialStates(node, level);
+ }
+ });
+ };
+
+ Tree.prototype.clickHandler = function (event) {
+
+ if (!this.options.enableLinks) event.preventDefault();
+
+ var target = $(event.target);
+ var node = this.findNode(target);
+ if (!node || node.state.disabled) return;
+
+ var classList = target.attr('class') ? target.attr('class').split(' ') : [];
+ if ((classList.indexOf('expand-icon') !== -1)) {
+
+ this.toggleExpandedState(node, _default.options);
+ this.render();
+ }
+ else if ((classList.indexOf('check-icon') !== -1)) {
+
+ this.toggleCheckedState(node, _default.options);
+ this.render();
+ }
+ else {
+
+ if (node.selectable) {
+ this.toggleSelectedState(node, _default.options);
+ } else {
+ this.toggleExpandedState(node, _default.options);
+ }
+
+ this.render();
+ }
+ };
+
+ // Looks up the DOM for the closest parent list item to retrieve the
+ // data attribute nodeid, which is used to lookup the node in the flattened structure.
+ Tree.prototype.findNode = function (target) {
+
+ var nodeId = target.closest('li.list-group-item').attr('data-nodeid');
+ var node = this.nodes[nodeId];
+
+ if (!node) {
+ console.log('Error: node does not exist');
+ }
+ return node;
+ };
+
+ Tree.prototype.toggleExpandedState = function (node, options) {
+ if (!node) return;
+ this.setExpandedState(node, !node.state.expanded, options);
+ };
+
+ Tree.prototype.setExpandedState = function (node, state, options) {
+
+ if (state === node.state.expanded) return;
+
+ if (state && node.nodes) {
+
+ // Expand a node
+ node.state.expanded = true;
+ if (!options.silent) {
+ this.$element.trigger('nodeExpanded', $.extend(true, {}, node));
+ }
+ }
+ else if (!state) {
+
+ // Collapse a node
+ node.state.expanded = false;
+ if (!options.silent) {
+ this.$element.trigger('nodeCollapsed', $.extend(true, {}, node));
+ }
+
+ // Collapse child nodes
+ if (node.nodes && !options.ignoreChildren) {
+ $.each(node.nodes, $.proxy(function (index, node) {
+ this.setExpandedState(node, false, options);
+ }, this));
+ }
+ }
+ };
+
+ Tree.prototype.toggleSelectedState = function (node, options) {
+ if (!node) return;
+ this.setSelectedState(node, !node.state.selected, options);
+ };
+
+ Tree.prototype.setSelectedState = function (node, state, options) {
+
+ if (state === node.state.selected) return;
+
+ if (state) {
+
+ // If multiSelect false, unselect previously selected
+ if (!this.options.multiSelect) {
+ $.each(this.findNodes('true', 'g', 'state.selected'), $.proxy(function (index, node) {
+ this.setSelectedState(node, false, options);
+ }, this));
+ }
+
+ // Continue selecting node
+ node.state.selected = true;
+ if (!options.silent) {
+ this.$element.trigger('nodeSelected', $.extend(true, {}, node));
+ }
+ }
+ else {
+
+ // Unselect node
+ node.state.selected = false;
+ if (!options.silent) {
+ this.$element.trigger('nodeUnselected', $.extend(true, {}, node));
+ }
+ }
+ };
+
+ Tree.prototype.toggleCheckedState = function (node, options) {
+ if (!node) return;
+ this.setCheckedState(node, !node.state.checked, options);
+ };
+
+ Tree.prototype.setCheckedState = function (node, state, options) {
+
+ if (state === node.state.checked) return;
+
+ if (state) {
+
+ // Check node
+ node.state.checked = true;
+
+ if (!options.silent) {
+ this.$element.trigger('nodeChecked', $.extend(true, {}, node));
+ }
+ }
+ else {
+
+ // Uncheck node
+ node.state.checked = false;
+ if (!options.silent) {
+ this.$element.trigger('nodeUnchecked', $.extend(true, {}, node));
+ }
+ }
+ };
+
+ Tree.prototype.setDisabledState = function (node, state, options) {
+
+ if (state === node.state.disabled) return;
+
+ if (state) {
+
+ // Disable node
+ node.state.disabled = true;
+
+ // Disable all other states
+ this.setExpandedState(node, false, options);
+ this.setSelectedState(node, false, options);
+ this.setCheckedState(node, false, options);
+
+ if (!options.silent) {
+ this.$element.trigger('nodeDisabled', $.extend(true, {}, node));
+ }
+ }
+ else {
+
+ // Enabled node
+ node.state.disabled = false;
+ if (!options.silent) {
+ this.$element.trigger('nodeEnabled', $.extend(true, {}, node));
+ }
+ }
+ };
+
+ Tree.prototype.render = function () {
+
+ if (!this.initialized) {
+
+ // Setup first time only components
+ this.$element.addClass(pluginName);
+ this.$wrapper = $(this.template.list);
+
+ this.injectStyle();
+
+ this.initialized = true;
+ }
+
+ this.$element.empty().append(this.$wrapper.empty());
+
+ // Build tree
+ this.buildTree(this.tree, 0);
+ };
+
+ // Starting from the root node, and recursing down the
+ // structure we build the tree one node at a time
+ Tree.prototype.buildTree = function (nodes, level) {
+
+ if (!nodes) return;
+ level += 1;
+
+ var _this = this;
+ $.each(nodes, function addNodes(id, node) {
+
+ var treeItem = $(_this.template.item)
+ .addClass('node-' + _this.elementId)
+ .addClass(node.state.checked ? 'node-checked' : '')
+ .addClass(node.state.disabled ? 'node-disabled': '')
+ .addClass(node.state.selected ? 'node-selected' : '')
+ .addClass(node.searchResult ? 'search-result' : '')
+ .attr('data-nodeid', node.nodeId)
+ .attr('style', _this.buildStyleOverride(node));
+
+ // Add indent/spacer to mimic tree structure
+ for (var i = 0; i < (level - 1); i++) {
+ treeItem.append(_this.template.indent);
+ }
+
+ // Add expand, collapse or empty spacer icons
+ var classList = [];
+ if (node.nodes) {
+ classList.push('expand-icon');
+ if (node.state.expanded) {
+ classList.push(_this.options.collapseIcon);
+ }
+ else {
+ classList.push(_this.options.expandIcon);
+ }
+ }
+ else {
+ classList.push(_this.options.emptyIcon);
+ }
+
+ treeItem
+ .append($(_this.template.icon)
+ .addClass(classList.join(' '))
+ );
+
+
+ // Add node icon
+ if (_this.options.showIcon) {
+
+ var classList = ['node-icon'];
+
+ classList.push(node.icon || _this.options.nodeIcon);
+ if (node.state.selected) {
+ classList.pop();
+ classList.push(node.selectedIcon || _this.options.selectedIcon ||
+ node.icon || _this.options.nodeIcon);
+ }
+
+ treeItem
+ .append($(_this.template.icon)
+ .addClass(classList.join(' '))
+ );
+ }
+
+ // Add check / unchecked icon
+ if (_this.options.showCheckbox) {
+
+ var classList = ['check-icon'];
+ if (node.state.checked) {
+ classList.push(_this.options.checkedIcon);
+ }
+ else {
+ classList.push(_this.options.uncheckedIcon);
+ }
+
+ treeItem
+ .append($(_this.template.icon)
+ .addClass(classList.join(' '))
+ );
+ }
+
+ // Add text
+ if (_this.options.enableLinks) {
+ // Add hyperlink
+ treeItem
+ .append($(_this.template.link)
+ .attr('href', node.href)
+ .append(node.text)
+ );
+ }
+ else {
+ // otherwise just text
+ treeItem
+ .append(node.text);
+ }
+
+ // Add tags as badges
+ if (_this.options.showTags && node.tags) {
+ $.each(node.tags, function addTag(id, tag) {
+ treeItem
+ .append($(_this.template.badge)
+ .append(tag)
+ );
+ });
+ }
+
+ // Add item to the tree
+ _this.$wrapper.append(treeItem);
+
+ // Recursively add child ndoes
+ if (node.nodes && node.state.expanded && !node.state.disabled) {
+ return _this.buildTree(node.nodes, level);
+ }
+ });
+ };
+
+ // Define any node level style override for
+ // 1. selectedNode
+ // 2. node|data assigned color overrides
+ Tree.prototype.buildStyleOverride = function (node) {
+
+ if (node.state.disabled) return '';
+
+ var color = node.color;
+ var backColor = node.backColor;
+
+ if (this.options.highlightSelected && node.state.selected) {
+ if (this.options.selectedColor) {
+ color = this.options.selectedColor;
+ }
+ if (this.options.selectedBackColor) {
+ backColor = this.options.selectedBackColor;
+ }
+ }
+
+ if (this.options.highlightSearchResults && node.searchResult && !node.state.disabled) {
+ if (this.options.searchResultColor) {
+ color = this.options.searchResultColor;
+ }
+ if (this.options.searchResultBackColor) {
+ backColor = this.options.searchResultBackColor;
+ }
+ }
+
+ return 'color:' + color +
+ ';background-color:' + backColor + ';';
+ };
+
+ // Add inline style into head
+ Tree.prototype.injectStyle = function () {
+
+ if (this.options.injectStyle && !document.getElementById(this.styleId)) {
+ $('<style type="text/css" id="' + this.styleId + '"> ' + this.buildStyle() + ' </style>').appendTo('head');
+ }
+ };
+
+ // Construct trees style based on user options
+ Tree.prototype.buildStyle = function () {
+
+ var style = '.node-' + this.elementId + '{';
+
+ if (this.options.color) {
+ style += 'color:' + this.options.color + ';';
+ }
+
+ if (this.options.backColor) {
+ style += 'background-color:' + this.options.backColor + ';';
+ }
+
+ if (!this.options.showBorder) {
+ style += 'border:none;';
+ }
+ else if (this.options.borderColor) {
+ style += 'border:1px solid ' + this.options.borderColor + ';';
+ }
+ style += '}';
+
+ if (this.options.onhoverColor) {
+ style += '.node-' + this.elementId + ':not(.node-disabled):hover{' +
+ 'background-color:' + this.options.onhoverColor + ';' +
+ '}';
+ }
+
+ return this.css + style;
+ };
+
+ Tree.prototype.template = {
+ list: '<ul class="list-group"></ul>',
+ item: '<li class="list-group-item"></li>',
+ indent: '<span class="indent"></span>',
+ icon: '<span class="icon"></span>',
+ link: '<a href="#" style="color:inherit;"></a>',
+ badge: '<span class="badge"></span>'
+ };
+
+ Tree.prototype.css = '.treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}'
+
+
+ /**
+ Returns a single node object that matches the given node id.
+ @param {Number} nodeId - A node's unique identifier
+ @return {Object} node - Matching node
+ */
+ Tree.prototype.getNode = function (nodeId) {
+ return this.nodes[nodeId];
+ };
+
+ /**
+ Returns the parent node of a given node, if valid otherwise returns undefined.
+ @param {Object|Number} identifier - A valid node or node id
+ @returns {Object} node - The parent node
+ */
+ Tree.prototype.getParent = function (identifier) {
+ var node = this.identifyNode(identifier);
+ return this.nodes[node.parentId];
+ };
+
+ /**
+ Returns an array of sibling nodes for a given node, if valid otherwise returns undefined.
+ @param {Object|Number} identifier - A valid node or node id
+ @returns {Array} nodes - Sibling nodes
+ */
+ Tree.prototype.getSiblings = function (identifier) {
+ var node = this.identifyNode(identifier);
+ var parent = this.getParent(node);
+ var nodes = parent ? parent.nodes : this.tree;
+ return nodes.filter(function (obj) {
+ return obj.nodeId !== node.nodeId;
+ });
+ };
+
+ /**
+ Returns an array of selected nodes.
+ @returns {Array} nodes - Selected nodes
+ */
+ Tree.prototype.getSelected = function () {
+ return this.findNodes('true', 'g', 'state.selected');
+ };
+
+ /**
+ Returns an array of unselected nodes.
+ @returns {Array} nodes - Unselected nodes
+ */
+ Tree.prototype.getUnselected = function () {
+ return this.findNodes('false', 'g', 'state.selected');
+ };
+
+ /**
+ Returns an array of expanded nodes.
+ @returns {Array} nodes - Expanded nodes
+ */
+ Tree.prototype.getExpanded = function () {
+ return this.findNodes('true', 'g', 'state.expanded');
+ };
+
+ /**
+ Returns an array of collapsed nodes.
+ @returns {Array} nodes - Collapsed nodes
+ */
+ Tree.prototype.getCollapsed = function () {
+ return this.findNodes('false', 'g', 'state.expanded');
+ };
+
+ /**
+ Returns an array of checked nodes.
+ @returns {Array} nodes - Checked nodes
+ */
+ Tree.prototype.getChecked = function () {
+ return this.findNodes('true', 'g', 'state.checked');
+ };
+
+ /**
+ Returns an array of unchecked nodes.
+ @returns {Array} nodes - Unchecked nodes
+ */
+ Tree.prototype.getUnchecked = function () {
+ return this.findNodes('false', 'g', 'state.checked');
+ };
+
+ /**
+ Returns an array of disabled nodes.
+ @returns {Array} nodes - Disabled nodes
+ */
+ Tree.prototype.getDisabled = function () {
+ return this.findNodes('true', 'g', 'state.disabled');
+ };
+
+ /**
+ Returns an array of enabled nodes.
+ @returns {Array} nodes - Enabled nodes
+ */
+ Tree.prototype.getEnabled = function () {
+ return this.findNodes('false', 'g', 'state.disabled');
+ };
+
+
+ /**
+ Set a node state to selected
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.selectNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setSelectedState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Set a node state to unselected
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.unselectNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setSelectedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Toggles a node selected state; selecting if unselected, unselecting if selected.
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.toggleNodeSelected = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.toggleSelectedState(node, options);
+ }, this));
+
+ this.render();
+ };
+
+
+ /**
+ Collapse all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.collapseAll = function (options) {
+ var identifiers = this.findNodes('true', 'g', 'state.expanded');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setExpandedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Collapse a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.collapseNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setExpandedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Expand all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.expandAll = function (options) {
+ options = $.extend({}, _default.options, options);
+
+ if (options && options.levels) {
+ this.expandLevels(this.tree, options.levels, options);
+ }
+ else {
+ var identifiers = this.findNodes('false', 'g', 'state.expanded');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setExpandedState(node, true, options);
+ }, this));
+ }
+
+ this.render();
+ };
+
+ /**
+ Expand a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.expandNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setExpandedState(node, true, options);
+ if (node.nodes && (options && options.levels)) {
+ this.expandLevels(node.nodes, options.levels-1, options);
+ }
+ }, this));
+
+ this.render();
+ };
+
+ Tree.prototype.expandLevels = function (nodes, level, options) {
+ options = $.extend({}, _default.options, options);
+
+ $.each(nodes, $.proxy(function (index, node) {
+ this.setExpandedState(node, (level > 0) ? true : false, options);
+ if (node.nodes) {
+ this.expandLevels(node.nodes, level-1, options);
+ }
+ }, this));
+ };
+
+ /**
+ Reveals a given tree node, expanding the tree from node to root.
+ @param {Object|Number|Array} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.revealNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ var parentNode = this.getParent(node);
+ while (parentNode) {
+ this.setExpandedState(parentNode, true, options);
+ parentNode = this.getParent(parentNode);
+ };
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Toggles a nodes expanded state; collapsing if expanded, expanding if collapsed.
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.toggleNodeExpanded = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.toggleExpandedState(node, options);
+ }, this));
+
+ this.render();
+ };
+
+
+ /**
+ Check all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.checkAll = function (options) {
+ var identifiers = this.findNodes('false', 'g', 'state.checked');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setCheckedState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Check a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.checkNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setCheckedState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Uncheck all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.uncheckAll = function (options) {
+ var identifiers = this.findNodes('true', 'g', 'state.checked');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setCheckedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Uncheck a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.uncheckNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setCheckedState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Toggles a nodes checked state; checking if unchecked, unchecking if checked.
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.toggleNodeChecked = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.toggleCheckedState(node, options);
+ }, this));
+
+ this.render();
+ };
+
+
+ /**
+ Disable all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.disableAll = function (options) {
+ var identifiers = this.findNodes('false', 'g', 'state.disabled');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Disable a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.disableNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, true, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Enable all tree nodes
+ @param {optional Object} options
+ */
+ Tree.prototype.enableAll = function (options) {
+ var identifiers = this.findNodes('true', 'g', 'state.disabled');
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Enable a given tree node
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.enableNode = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, false, options);
+ }, this));
+
+ this.render();
+ };
+
+ /**
+ Toggles a nodes disabled state; disabling is enabled, enabling if disabled.
+ @param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+ @param {optional Object} options
+ */
+ Tree.prototype.toggleNodeDisabled = function (identifiers, options) {
+ this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+ this.setDisabledState(node, !node.state.disabled, options);
+ }, this));
+
+ this.render();
+ };
+
+
+ /**
+ Common code for processing multiple identifiers
+ */
+ Tree.prototype.forEachIdentifier = function (identifiers, options, callback) {
+
+ options = $.extend({}, _default.options, options);
+
+ if (!(identifiers instanceof Array)) {
+ identifiers = [identifiers];
+ }
+
+ $.each(identifiers, $.proxy(function (index, identifier) {
+ callback(this.identifyNode(identifier), options);
+ }, this));
+ };
+
+ /*
+ Identifies a node from either a node id or object
+ */
+ Tree.prototype.identifyNode = function (identifier) {
+ return ((typeof identifier) === 'number') ?
+ this.nodes[identifier] :
+ identifier;
+ };
+
+ /**
+ Searches the tree for nodes (text) that match given criteria
+ @param {String} pattern - A given string to match against
+ @param {optional Object} options - Search criteria options
+ @return {Array} nodes - Matching nodes
+ */
+ Tree.prototype.search = function (pattern, options) {
+ options = $.extend({}, _default.searchOptions, options);
+
+ this.clearSearch({ render: false });
+
+ var results = [];
+ if (pattern && pattern.length > 0) {
+
+ if (options.exactMatch) {
+ pattern = '^' + pattern + '$';
+ }
+
+ var modifier = 'g';
+ if (options.ignoreCase) {
+ modifier += 'i';
+ }
+
+ results = this.findNodes(pattern, modifier);
+
+ // Add searchResult property to all matching nodes
+ // This will be used to apply custom styles
+ // and when identifying result to be cleared
+ $.each(results, function (index, node) {
+ node.searchResult = true;
+ })
+ }
+
+ // If revealResults, then render is triggered from revealNode
+ // otherwise we just call render.
+ if (options.revealResults) {
+ this.revealNode(results);
+ }
+ else {
+ this.render();
+ }
+
+ this.$element.trigger('searchComplete', $.extend(true, {}, results));
+
+ return results;
+ };
+
+ /**
+ Clears previous search results
+ */
+ Tree.prototype.clearSearch = function (options) {
+
+ options = $.extend({}, { render: true }, options);
+
+ var results = $.each(this.findNodes('true', 'g', 'searchResult'), function (index, node) {
+ node.searchResult = false;
+ });
+
+ if (options.render) {
+ this.render();
+ }
+
+ this.$element.trigger('searchCleared', $.extend(true, {}, results));
+ };
+
+ /**
+ Find nodes that match a given criteria
+ @param {String} pattern - A given string to match against
+ @param {optional String} modifier - Valid RegEx modifiers
+ @param {optional String} attribute - Attribute to compare pattern against
+ @return {Array} nodes - Nodes that match your criteria
+ */
+ Tree.prototype.findNodes = function (pattern, modifier, attribute) {
+
+ modifier = modifier || 'g';
+ attribute = attribute || 'text';
+
+ var _this = this;
+ return $.grep(this.nodes, function (node) {
+ var val = _this.getNodeValue(node, attribute);
+ if (typeof val === 'string') {
+ return val.match(new RegExp(pattern, modifier));
+ }
+ });
+ };
+
+ /**
+ Recursive find for retrieving nested attributes values
+ All values are return as strings, unless invalid
+ @param {Object} obj - Typically a node, could be any object
+ @param {String} attr - Identifies an object property using dot notation
+ @return {String} value - Matching attributes string representation
+ */
+ Tree.prototype.getNodeValue = function (obj, attr) {
+ var index = attr.indexOf('.');
+ if (index > 0) {
+ var _obj = obj[attr.substring(0, index)];
+ var _attr = attr.substring(index + 1, attr.length);
+ return this.getNodeValue(_obj, _attr);
+ }
+ else {
+ if (obj.hasOwnProperty(attr)) {
+ return obj[attr].toString();
+ }
+ else {
+ return undefined;
+ }
+ }
+ };
+
+ var logError = function (message) {
+ if (window.console) {
+ window.console.error(message);
+ }
+ };
+
+ // Prevent against multiple instantiations,
+ // handle updates and method calls
+ $.fn[pluginName] = function (options, args) {
+
+ var result;
+
+ this.each(function () {
+ var _this = $.data(this, pluginName);
+ if (typeof options === 'string') {
+ if (!_this) {
+ logError('Not initialized, can not call method : ' + options);
+ }
+ else if (!$.isFunction(_this[options]) || options.charAt(0) === '_') {
+ logError('No such method : ' + options);
+ }
+ else {
+ if (!(args instanceof Array)) {
+ args = [ args ];
+ }
+ result = _this[options].apply(_this, args);
+ }
+ }
+ else if (typeof options === 'boolean') {
+ result = _this;
+ }
+ else {
+ $.data(this, pluginName, new Tree(this, $.extend(true, {}, options)));
+ }
+ });
+
+ return result || this;
+ };
+
+})(jQuery, window, document);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/bower.json
new file mode 100644
index 0000000..31e1336
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/bower.json
@@ -0,0 +1,32 @@
+{
+ "name": "c3",
+ "main": [
+ "c3.css",
+ "c3.js"
+ ],
+ "version": "0.4.10",
+ "homepage": "https://github.com/masayuki0812/c3",
+ "authors": [
+ "Masayuki Tanaka <masayuki0812@mac.com>"
+ ],
+ "description": "D3-based reusable chart library",
+ "keywords": [
+ "chart",
+ "d3"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "htdocs",
+ "spec",
+ "src",
+ "package.json",
+ "component.json",
+ "Gruntfile.*"
+ ],
+ "dependencies": {
+ "d3": "<=3.5.0"
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.css
new file mode 100644
index 0000000..ab0b70a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.css
@@ -0,0 +1,158 @@
+/*-- Chart --*/
+.c3 svg {
+ font: 10px sans-serif; }
+
+.c3 path, .c3 line {
+ fill: none;
+ stroke: #000; }
+
+.c3 text {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none; }
+
+.c3-legend-item-tile, .c3-xgrid-focus, .c3-ygrid, .c3-event-rect, .c3-bars path {
+ shape-rendering: crispEdges; }
+
+.c3-chart-arc path {
+ stroke: #fff; }
+
+.c3-chart-arc text {
+ fill: #fff;
+ font-size: 13px; }
+
+/*-- Axis --*/
+/*-- Grid --*/
+.c3-grid line {
+ stroke: #aaa; }
+
+.c3-grid text {
+ fill: #aaa; }
+
+.c3-xgrid, .c3-ygrid {
+ stroke-dasharray: 3 3; }
+
+/*-- Text on Chart --*/
+.c3-text.c3-empty {
+ fill: #808080;
+ font-size: 2em; }
+
+/*-- Line --*/
+.c3-line {
+ stroke-width: 1px; }
+
+/*-- Point --*/
+.c3-circle._expanded_ {
+ stroke-width: 1px;
+ stroke: white; }
+
+.c3-selected-circle {
+ fill: white;
+ stroke-width: 2px; }
+
+/*-- Bar --*/
+.c3-bar {
+ stroke-width: 0; }
+
+.c3-bar._expanded_ {
+ fill-opacity: 0.75; }
+
+/*-- Focus --*/
+.c3-target.c3-focused {
+ opacity: 1; }
+
+.c3-target.c3-focused path.c3-line, .c3-target.c3-focused path.c3-step {
+ stroke-width: 2px; }
+
+.c3-target.c3-defocused {
+ opacity: 0.3 !important; }
+
+/*-- Region --*/
+.c3-region {
+ fill: steelblue;
+ fill-opacity: 0.1; }
+
+/*-- Brush --*/
+.c3-brush .extent {
+ fill-opacity: 0.1; }
+
+/*-- Select - Drag --*/
+/*-- Legend --*/
+.c3-legend-item {
+ font-size: 12px; }
+
+.c3-legend-item-hidden {
+ opacity: 0.15; }
+
+.c3-legend-background {
+ opacity: 0.75;
+ fill: white;
+ stroke: lightgray;
+ stroke-width: 1; }
+
+/*-- Tooltip --*/
+.c3-tooltip-container {
+ z-index: 10; }
+
+.c3-tooltip {
+ border-collapse: collapse;
+ border-spacing: 0;
+ background-color: #fff;
+ empty-cells: show;
+ -webkit-box-shadow: 7px 7px 12px -9px #777777;
+ -moz-box-shadow: 7px 7px 12px -9px #777777;
+ box-shadow: 7px 7px 12px -9px #777777;
+ opacity: 0.9; }
+
+.c3-tooltip tr {
+ border: 1px solid #CCC; }
+
+.c3-tooltip th {
+ background-color: #aaa;
+ font-size: 14px;
+ padding: 2px 5px;
+ text-align: left;
+ color: #FFF; }
+
+.c3-tooltip td {
+ font-size: 13px;
+ padding: 3px 6px;
+ background-color: #fff;
+ border-left: 1px dotted #999; }
+
+.c3-tooltip td > span {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin-right: 6px; }
+
+.c3-tooltip td.value {
+ text-align: right; }
+
+/*-- Area --*/
+.c3-area {
+ stroke-width: 0;
+ opacity: 0.2; }
+
+/*-- Arc --*/
+.c3-chart-arcs-title {
+ dominant-baseline: middle;
+ font-size: 1.3em; }
+
+.c3-chart-arcs .c3-chart-arcs-background {
+ fill: #e0e0e0;
+ stroke: none; }
+
+.c3-chart-arcs .c3-chart-arcs-gauge-unit {
+ fill: #000;
+ font-size: 16px; }
+
+.c3-chart-arcs .c3-chart-arcs-gauge-max {
+ fill: #777; }
+
+.c3-chart-arcs .c3-chart-arcs-gauge-min {
+ fill: #777; }
+
+.c3-chart-arc .c3-gauge-value {
+ fill: #000;
+ /* font-size: 28px !important;*/ }
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.js
new file mode 100644
index 0000000..233d1b5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.js
@@ -0,0 +1,7049 @@
+(function (window) {
+ 'use strict';
+
+ /*global define, module, exports, require */
+
+ var c3 = { version: "0.4.10" };
+
+ var c3_chart_fn,
+ c3_chart_internal_fn,
+ c3_chart_internal_axis_fn;
+
+ function API(owner) {
+ this.owner = owner;
+ }
+
+ function inherit(base, derived) {
+
+ if (Object.create) {
+ derived.prototype = Object.create(base.prototype);
+ } else {
+ var f = function f() {};
+ f.prototype = base.prototype;
+ derived.prototype = new f();
+ }
+
+ derived.prototype.constructor = derived;
+
+ return derived;
+ }
+
+ function Chart(config) {
+ var $$ = this.internal = new ChartInternal(this);
+ $$.loadConfig(config);
+ $$.init();
+
+ // bind "this" to nested API
+ (function bindThis(fn, target, argThis) {
+ Object.keys(fn).forEach(function (key) {
+ target[key] = fn[key].bind(argThis);
+ if (Object.keys(fn[key]).length > 0) {
+ bindThis(fn[key], target[key], argThis);
+ }
+ });
+ })(c3_chart_fn, this, this);
+ }
+
+ function ChartInternal(api) {
+ var $$ = this;
+ $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require("d3") : undefined;
+ $$.api = api;
+ $$.config = $$.getDefaultConfig();
+ $$.data = {};
+ $$.cache = {};
+ $$.axes = {};
+ }
+
+ c3.generate = function (config) {
+ return new Chart(config);
+ };
+
+ c3.chart = {
+ fn: Chart.prototype,
+ internal: {
+ fn: ChartInternal.prototype,
+ axis: {
+ fn: Axis.prototype
+ }
+ }
+ };
+ c3_chart_fn = c3.chart.fn;
+ c3_chart_internal_fn = c3.chart.internal.fn;
+ c3_chart_internal_axis_fn = c3.chart.internal.axis.fn;
+
+ c3_chart_internal_fn.init = function () {
+ var $$ = this, config = $$.config;
+
+ $$.initParams();
+
+ if (config.data_url) {
+ $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_keys, $$.initWithData);
+ }
+ else if (config.data_json) {
+ $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));
+ }
+ else if (config.data_rows) {
+ $$.initWithData($$.convertRowsToData(config.data_rows));
+ }
+ else if (config.data_columns) {
+ $$.initWithData($$.convertColumnsToData(config.data_columns));
+ }
+ else {
+ throw Error('url or json or rows or columns is required.');
+ }
+ };
+
+ c3_chart_internal_fn.initParams = function () {
+ var $$ = this, d3 = $$.d3, config = $$.config;
+
+ // MEMO: clipId needs to be unique because it conflicts when multiple charts exist
+ $$.clipId = "c3-" + (+new Date()) + '-clip',
+ $$.clipIdForXAxis = $$.clipId + '-xaxis',
+ $$.clipIdForYAxis = $$.clipId + '-yaxis',
+ $$.clipIdForGrid = $$.clipId + '-grid',
+ $$.clipIdForSubchart = $$.clipId + '-subchart',
+ $$.clipPath = $$.getClipPath($$.clipId),
+ $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis),
+ $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);
+ $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid),
+ $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart),
+
+ $$.dragStart = null;
+ $$.dragging = false;
+ $$.flowing = false;
+ $$.cancelClick = false;
+ $$.mouseover = false;
+ $$.transiting = false;
+
+ $$.color = $$.generateColor();
+ $$.levelColor = $$.generateLevelColor();
+
+ $$.dataTimeFormat = config.data_xLocaltime ? d3.time.format : d3.time.format.utc;
+ $$.axisTimeFormat = config.axis_x_localtime ? d3.time.format : d3.time.format.utc;
+ $$.defaultAxisTimeFormat = $$.axisTimeFormat.multi([
+ [".%L", function (d) { return d.getMilliseconds(); }],
+ [":%S", function (d) { return d.getSeconds(); }],
+ ["%I:%M", function (d) { return d.getMinutes(); }],
+ ["%I %p", function (d) { return d.getHours(); }],
+ ["%-m/%-d", function (d) { return d.getDay() && d.getDate() !== 1; }],
+ ["%-m/%-d", function (d) { return d.getDate() !== 1; }],
+ ["%-m/%-d", function (d) { return d.getMonth(); }],
+ ["%Y/%-m/%-d", function () { return true; }]
+ ]);
+
+ $$.hiddenTargetIds = [];
+ $$.hiddenLegendIds = [];
+ $$.focusedTargetIds = [];
+ $$.defocusedTargetIds = [];
+
+ $$.xOrient = config.axis_rotated ? "left" : "bottom";
+ $$.yOrient = config.axis_rotated ? (config.axis_y_inner ? "top" : "bottom") : (config.axis_y_inner ? "right" : "left");
+ $$.y2Orient = config.axis_rotated ? (config.axis_y2_inner ? "bottom" : "top") : (config.axis_y2_inner ? "left" : "right");
+ $$.subXOrient = config.axis_rotated ? "left" : "bottom";
+
+ $$.isLegendRight = config.legend_position === 'right';
+ $$.isLegendInset = config.legend_position === 'inset';
+ $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';
+ $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';
+ $$.legendStep = 0;
+ $$.legendItemWidth = 0;
+ $$.legendItemHeight = 0;
+
+ $$.currentMaxTickWidths = {
+ x: 0,
+ y: 0,
+ y2: 0
+ };
+
+ $$.rotated_padding_left = 30;
+ $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;
+ $$.rotated_padding_top = 5;
+
+ $$.withoutFadeIn = {};
+
+ $$.intervalForObserveInserted = undefined;
+
+ $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js
+ };
+
+ c3_chart_internal_fn.initChartElements = function () {
+ if (this.initBar) { this.initBar(); }
+ if (this.initLine) { this.initLine(); }
+ if (this.initArc) { this.initArc(); }
+ if (this.initGauge) { this.initGauge(); }
+ if (this.initText) { this.initText(); }
+ };
+
+ c3_chart_internal_fn.initWithData = function (data) {
+ var $$ = this, d3 = $$.d3, config = $$.config;
+ var defs, main, binding = true;
+
+ $$.axis = new Axis($$);
+
+ if ($$.initPie) { $$.initPie(); }
+ if ($$.initBrush) { $$.initBrush(); }
+ if ($$.initZoom) { $$.initZoom(); }
+
+ if (!config.bindto) {
+ $$.selectChart = d3.selectAll([]);
+ }
+ else if (typeof config.bindto.node === 'function') {
+ $$.selectChart = config.bindto;
+ }
+ else {
+ $$.selectChart = d3.select(config.bindto);
+ }
+ if ($$.selectChart.empty()) {
+ $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);
+ $$.observeInserted($$.selectChart);
+ binding = false;
+ }
+ $$.selectChart.html("").classed("c3", true);
+
+ // Init data as targets
+ $$.data.xs = {};
+ $$.data.targets = $$.convertDataToTargets(data);
+
+ if (config.data_filter) {
+ $$.data.targets = $$.data.targets.filter(config.data_filter);
+ }
+
+ // Set targets to hide if needed
+ if (config.data_hide) {
+ $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);
+ }
+ if (config.legend_hide) {
+ $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);
+ }
+
+ // when gauge, hide legend // TODO: fix
+ if ($$.hasType('gauge')) {
+ config.legend_show = false;
+ }
+
+ // Init sizes and scales
+ $$.updateSizes();
+ $$.updateScales();
+
+ // Set domains for each scale
+ $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));
+ $$.y.domain($$.getYDomain($$.data.targets, 'y'));
+ $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));
+ $$.subX.domain($$.x.domain());
+ $$.subY.domain($$.y.domain());
+ $$.subY2.domain($$.y2.domain());
+
+ // Save original x domain for zoom update
+ $$.orgXDomain = $$.x.domain();
+
+ // Set initialized scales to brush and zoom
+ if ($$.brush) { $$.brush.scale($$.subX); }
+ if (config.zoom_enabled) { $$.zoom.scale($$.x); }
+
+ /*-- Basic Elements --*/
+
+ // Define svgs
+ $$.svg = $$.selectChart.append("svg")
+ .style("overflow", "hidden")
+ .on('mouseenter', function () { return config.onmouseover.call($$); })
+ .on('mouseleave', function () { return config.onmouseout.call($$); });
+
+ // Define defs
+ defs = $$.svg.append("defs");
+ $$.clipChart = $$.appendClip(defs, $$.clipId);
+ $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);
+ $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);
+ $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);
+ $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);
+ $$.updateSvgSize();
+
+ // Define regions
+ main = $$.main = $$.svg.append("g").attr("transform", $$.getTranslate('main'));
+
+ if ($$.initSubchart) { $$.initSubchart(); }
+ if ($$.initTooltip) { $$.initTooltip(); }
+ if ($$.initLegend) { $$.initLegend(); }
+
+ /*-- Main Region --*/
+
+ // text when empty
+ main.append("text")
+ .attr("class", CLASS.text + ' ' + CLASS.empty)
+ .attr("text-anchor", "middle") // horizontal centering of text at x position in all browsers.
+ .attr("dominant-baseline", "middle"); // vertical centering of text at y position in all browsers, except IE.
+
+ // Regions
+ $$.initRegion();
+
+ // Grids
+ $$.initGrid();
+
+ // Define g for chart area
+ main.append('g')
+ .attr("clip-path", $$.clipPath)
+ .attr('class', CLASS.chart);
+
+ // Grid lines
+ if (config.grid_lines_front) { $$.initGridLines(); }
+
+ // Cover whole with rects for events
+ $$.initEventRect();
+
+ // Define g for chart
+ $$.initChartElements();
+
+ // if zoom privileged, insert rect to forefront
+ // TODO: is this needed?
+ main.insert('rect', config.zoom_privileged ? null : 'g.' + CLASS.regions)
+ .attr('class', CLASS.zoomRect)
+ .attr('width', $$.width)
+ .attr('height', $$.height)
+ .style('opacity', 0)
+ .on("dblclick.zoom", null);
+
+ // Set default extent if defined
+ if (config.axis_x_extent) { $$.brush.extent($$.getDefaultExtent()); }
+
+ // Add Axis
+ $$.axis.init();
+
+ // Set targets
+ $$.updateTargets($$.data.targets);
+
+ // Draw with targets
+ if (binding) {
+ $$.updateDimension();
+ $$.config.oninit.call($$);
+ $$.redraw({
+ withTransition: false,
+ withTransform: true,
+ withUpdateXDomain: true,
+ withUpdateOrgXDomain: true,
+ withTransitionForAxis: false
+ });
+ }
+
+ // Bind resize event
+ if (window.onresize == null) {
+ window.onresize = $$.generateResize();
+ }
+ if (window.onresize.add) {
+ window.onresize.add(function () {
+ config.onresize.call($$);
+ });
+ window.onresize.add(function () {
+ $$.api.flush();
+ });
+ window.onresize.add(function () {
+ config.onresized.call($$);
+ });
+ }
+
+ // export element of the chart
+ $$.api.element = $$.selectChart.node();
+ };
+
+ c3_chart_internal_fn.smoothLines = function (el, type) {
+ var $$ = this;
+ if (type === 'grid') {
+ el.each(function () {
+ var g = $$.d3.select(this),
+ x1 = g.attr('x1'),
+ x2 = g.attr('x2'),
+ y1 = g.attr('y1'),
+ y2 = g.attr('y2');
+ g.attr({
+ 'x1': Math.ceil(x1),
+ 'x2': Math.ceil(x2),
+ 'y1': Math.ceil(y1),
+ 'y2': Math.ceil(y2)
+ });
+ });
+ }
+ };
+
+
+ c3_chart_internal_fn.updateSizes = function () {
+ var $$ = this, config = $$.config;
+ var legendHeight = $$.legend ? $$.getLegendHeight() : 0,
+ legendWidth = $$.legend ? $$.getLegendWidth() : 0,
+ legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,
+ hasArc = $$.hasArcType(),
+ xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),
+ subchartHeight = config.subchart_show && !hasArc ? (config.subchart_size_height + xAxisHeight) : 0;
+
+ $$.currentWidth = $$.getCurrentWidth();
+ $$.currentHeight = $$.getCurrentHeight();
+
+ // for main
+ $$.margin = config.axis_rotated ? {
+ top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),
+ right: hasArc ? 0 : $$.getCurrentPaddingRight(),
+ bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),
+ left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())
+ } : {
+ top: 4 + $$.getCurrentPaddingTop(), // for top tick text
+ right: hasArc ? 0 : $$.getCurrentPaddingRight(),
+ bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),
+ left: hasArc ? 0 : $$.getCurrentPaddingLeft()
+ };
+
+ // for subchart
+ $$.margin2 = config.axis_rotated ? {
+ top: $$.margin.top,
+ right: NaN,
+ bottom: 20 + legendHeightForBottom,
+ left: $$.rotated_padding_left
+ } : {
+ top: $$.currentHeight - subchartHeight - legendHeightForBottom,
+ right: NaN,
+ bottom: xAxisHeight + legendHeightForBottom,
+ left: $$.margin.left
+ };
+
+ // for legend
+ $$.margin3 = {
+ top: 0,
+ right: NaN,
+ bottom: 0,
+ left: 0
+ };
+ if ($$.updateSizeForLegend) { $$.updateSizeForLegend(legendHeight, legendWidth); }
+
+ $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;
+ $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;
+ if ($$.width < 0) { $$.width = 0; }
+ if ($$.height < 0) { $$.height = 0; }
+
+ $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;
+ $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;
+ if ($$.width2 < 0) { $$.width2 = 0; }
+ if ($$.height2 < 0) { $$.height2 = 0; }
+
+ // for arc
+ $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);
+ $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);
+ if ($$.hasType('gauge')) {
+ $$.arcHeight += $$.height - $$.getGaugeLabelHeight();
+ }
+ if ($$.updateRadius) { $$.updateRadius(); }
+
+ if ($$.isLegendRight && hasArc) {
+ $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;
+ }
+ };
+
+ c3_chart_internal_fn.updateTargets = function (targets) {
+ var $$ = this;
+
+ /*-- Main --*/
+
+ //-- Text --//
+ $$.updateTargetsForText(targets);
+
+ //-- Bar --//
+ $$.updateTargetsForBar(targets);
+
+ //-- Line --//
+ $$.updateTargetsForLine(targets);
+
+ //-- Arc --//
+ if ($$.hasArcType() && $$.updateTargetsForArc) { $$.updateTargetsForArc(targets); }
+
+ /*-- Sub --*/
+
+ if ($$.updateTargetsForSubchart) { $$.updateTargetsForSubchart(targets); }
+
+ // Fade-in each chart
+ $$.showTargets();
+ };
+ c3_chart_internal_fn.showTargets = function () {
+ var $$ = this;
+ $$.svg.selectAll('.' + CLASS.target).filter(function (d) { return $$.isTargetToShow(d.id); })
+ .transition().duration($$.config.transition_duration)
+ .style("opacity", 1);
+ };
+
+ c3_chart_internal_fn.redraw = function (options, transitions) {
+ var $$ = this, main = $$.main, d3 = $$.d3, config = $$.config;
+ var areaIndices = $$.getShapeIndices($$.isAreaType), barIndices = $$.getShapeIndices($$.isBarType), lineIndices = $$.getShapeIndices($$.isLineType);
+ var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis,
+ withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend,
+ withEventRect, withDimension, withUpdateXAxis;
+ var hideAxis = $$.hasArcType();
+ var drawArea, drawBar, drawLine, xForText, yForText;
+ var duration, durationForExit, durationForAxis;
+ var waitForDraw, flow;
+ var targetsToShow = $$.filterTargetsToShow($$.data.targets), tickValues, i, intervalForCulling, xDomainForZoom;
+ var xv = $$.xv.bind($$), cx, cy;
+
+ options = options || {};
+ withY = getOption(options, "withY", true);
+ withSubchart = getOption(options, "withSubchart", true);
+ withTransition = getOption(options, "withTransition", true);
+ withTransform = getOption(options, "withTransform", false);
+ withUpdateXDomain = getOption(options, "withUpdateXDomain", false);
+ withUpdateOrgXDomain = getOption(options, "withUpdateOrgXDomain", false);
+ withTrimXDomain = getOption(options, "withTrimXDomain", true);
+ withUpdateXAxis = getOption(options, "withUpdateXAxis", withUpdateXDomain);
+ withLegend = getOption(options, "withLegend", false);
+ withEventRect = getOption(options, "withEventRect", true);
+ withDimension = getOption(options, "withDimension", true);
+ withTransitionForExit = getOption(options, "withTransitionForExit", withTransition);
+ withTransitionForAxis = getOption(options, "withTransitionForAxis", withTransition);
+
+ duration = withTransition ? config.transition_duration : 0;
+ durationForExit = withTransitionForExit ? duration : 0;
+ durationForAxis = withTransitionForAxis ? duration : 0;
+
+ transitions = transitions || $$.axis.generateTransitions(durationForAxis);
+
+ // update legend and transform each g
+ if (withLegend && config.legend_show) {
+ $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);
+ } else if (withDimension) {
+ // need to update dimension (e.g. axis.y.tick.values) because y tick values should change
+ // no need to update axis in it because they will be updated in redraw()
+ $$.updateDimension(true);
+ }
+
+ // MEMO: needed for grids calculation
+ if ($$.isCategorized() && targetsToShow.length === 0) {
+ $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);
+ }
+
+ if (targetsToShow.length) {
+ $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);
+ if (!config.axis_x_tick_values) {
+ tickValues = $$.axis.updateXAxisTickValues(targetsToShow);
+ }
+ } else {
+ $$.xAxis.tickValues([]);
+ $$.subXAxis.tickValues([]);
+ }
+
+ if (config.zoom_rescale && !options.flow) {
+ xDomainForZoom = $$.x.orgDomain();
+ }
+
+ $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));
+ $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));
+
+ if (!config.axis_y_tick_values && config.axis_y_tick_count) {
+ $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));
+ }
+ if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {
+ $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));
+ }
+
+ // axes
+ $$.axis.redraw(transitions, hideAxis);
+
+ // Update axis label
+ $$.axis.updateLabels(withTransition);
+
+ // show/hide if manual culling needed
+ if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {
+ if (config.axis_x_tick_culling && tickValues) {
+ for (i = 1; i < tickValues.length; i++) {
+ if (tickValues.length / i < config.axis_x_tick_culling_max) {
+ intervalForCulling = i;
+ break;
+ }
+ }
+ $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {
+ var index = tickValues.indexOf(e);
+ if (index >= 0) {
+ d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');
+ }
+ });
+ } else {
+ $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');
+ }
+ }
+
+ // setup drawer - MEMO: these must be called after axis updated
+ drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;
+ drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;
+ drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;
+ xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);
+ yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);
+
+ // Update sub domain
+ if (withY) {
+ $$.subY.domain($$.getYDomain(targetsToShow, 'y'));
+ $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));
+ }
+
+ // tooltip
+ $$.tooltip.style("display", "none");
+
+ // xgrid focus
+ $$.updateXgridFocus();
+
+ // Data empty label positioning and text.
+ main.select("text." + CLASS.text + '.' + CLASS.empty)
+ .attr("x", $$.width / 2)
+ .attr("y", $$.height / 2)
+ .text(config.data_empty_label_text)
+ .transition()
+ .style('opacity', targetsToShow.length ? 0 : 1);
+
+ // grid
+ $$.updateGrid(duration);
+
+ // rect for regions
+ $$.updateRegion(duration);
+
+ // bars
+ $$.updateBar(durationForExit);
+
+ // lines, areas and cricles
+ $$.updateLine(durationForExit);
+ $$.updateArea(durationForExit);
+ $$.updateCircle();
+
+ // text
+ if ($$.hasDataLabel()) {
+ $$.updateText(durationForExit);
+ }
+
+ // arc
+ if ($$.redrawArc) { $$.redrawArc(duration, durationForExit, withTransform); }
+
+ // subchart
+ if ($$.redrawSubchart) {
+ $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);
+ }
+
+ // circles for select
+ main.selectAll('.' + CLASS.selectedCircles)
+ .filter($$.isBarType.bind($$))
+ .selectAll('circle')
+ .remove();
+
+ // event rects will redrawn when flow called
+ if (config.interaction_enabled && !options.flow && withEventRect) {
+ $$.redrawEventRect();
+ if ($$.updateZoom) { $$.updateZoom(); }
+ }
+
+ // update circleY based on updated parameters
+ $$.updateCircleY();
+
+ // generate circle x/y functions depending on updated params
+ cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);
+ cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);
+
+ if (options.flow) {
+ flow = $$.generateFlow({
+ targets: targetsToShow,
+ flow: options.flow,
+ duration: options.flow.duration,
+ drawBar: drawBar,
+ drawLine: drawLine,
+ drawArea: drawArea,
+ cx: cx,
+ cy: cy,
+ xv: xv,
+ xForText: xForText,
+ yForText: yForText
+ });
+ }
+
+ if ((duration || flow) && $$.isTabVisible()) { // Only use transition if tab visible. See #938.
+ // transition should be derived from one transition
+ d3.transition().duration(duration).each(function () {
+ var transitionsToWait = [];
+
+ // redraw and gather transitions
+ [
+ $$.redrawBar(drawBar, true),
+ $$.redrawLine(drawLine, true),
+ $$.redrawArea(drawArea, true),
+ $$.redrawCircle(cx, cy, true),
+ $$.redrawText(xForText, yForText, options.flow, true),
+ $$.redrawRegion(true),
+ $$.redrawGrid(true),
+ ].forEach(function (transitions) {
+ transitions.forEach(function (transition) {
+ transitionsToWait.push(transition);
+ });
+ });
+
+ // Wait for end of transitions to call flow and onrendered callback
+ waitForDraw = $$.generateWait();
+ transitionsToWait.forEach(function (t) {
+ waitForDraw.add(t);
+ });
+ })
+ .call(waitForDraw, function () {
+ if (flow) {
+ flow();
+ }
+ if (config.onrendered) {
+ config.onrendered.call($$);
+ }
+ });
+ }
+ else {
+ $$.redrawBar(drawBar);
+ $$.redrawLine(drawLine);
+ $$.redrawArea(drawArea);
+ $$.redrawCircle(cx, cy);
+ $$.redrawText(xForText, yForText, options.flow);
+ $$.redrawRegion();
+ $$.redrawGrid();
+ if (config.onrendered) {
+ config.onrendered.call($$);
+ }
+ }
+
+ // update fadein condition
+ $$.mapToIds($$.data.targets).forEach(function (id) {
+ $$.withoutFadeIn[id] = true;
+ });
+ };
+
+ c3_chart_internal_fn.updateAndRedraw = function (options) {
+ var $$ = this, config = $$.config, transitions;
+ options = options || {};
+ // same with redraw
+ options.withTransition = getOption(options, "withTransition", true);
+ options.withTransform = getOption(options, "withTransform", false);
+ options.withLegend = getOption(options, "withLegend", false);
+ // NOT same with redraw
+ options.withUpdateXDomain = true;
+ options.withUpdateOrgXDomain = true;
+ options.withTransitionForExit = false;
+ options.withTransitionForTransform = getOption(options, "withTransitionForTransform", options.withTransition);
+ // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)
+ $$.updateSizes();
+ // MEMO: called in updateLegend in redraw if withLegend
+ if (!(options.withLegend && config.legend_show)) {
+ transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);
+ // Update scales
+ $$.updateScales();
+ $$.updateSvgSize();
+ // Update g positions
+ $$.transformAll(options.withTransitionForTransform, transitions);
+ }
+ // Draw with new sizes & scales
+ $$.redraw(options, transitions);
+ };
+ c3_chart_internal_fn.redrawWithoutRescale = function () {
+ this.redraw({
+ withY: false,
+ withSubchart: false,
+ withEventRect: false,
+ withTransitionForAxis: false
+ });
+ };
+
+ c3_chart_internal_fn.isTimeSeries = function () {
+ return this.config.axis_x_type === 'timeseries';
+ };
+ c3_chart_internal_fn.isCategorized = function () {
+ return this.config.axis_x_type.indexOf('categor') >= 0;
+ };
+ c3_chart_internal_fn.isCustomX = function () {
+ var $$ = this, config = $$.config;
+ return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));
+ };
+
+ c3_chart_internal_fn.isTimeSeriesY = function () {
+ return this.config.axis_y_type === 'timeseries';
+ };
+
+ c3_chart_internal_fn.getTranslate = function (target) {
+ var $$ = this, config = $$.config, x, y;
+ if (target === 'main') {
+ x = asHalfPixel($$.margin.left);
+ y = asHalfPixel($$.margin.top);
+ } else if (target === 'context') {
+ x = asHalfPixel($$.margin2.left);
+ y = asHalfPixel($$.margin2.top);
+ } else if (target === 'legend') {
+ x = $$.margin3.left;
+ y = $$.margin3.top;
+ } else if (target === 'x') {
+ x = 0;
+ y = config.axis_rotated ? 0 : $$.height;
+ } else if (target === 'y') {
+ x = 0;
+ y = config.axis_rotated ? $$.height : 0;
+ } else if (target === 'y2') {
+ x = config.axis_rotated ? 0 : $$.width;
+ y = config.axis_rotated ? 1 : 0;
+ } else if (target === 'subx') {
+ x = 0;
+ y = config.axis_rotated ? 0 : $$.height2;
+ } else if (target === 'arc') {
+ x = $$.arcWidth / 2;
+ y = $$.arcHeight / 2;
+ }
+ return "translate(" + x + "," + y + ")";
+ };
+ c3_chart_internal_fn.initialOpacity = function (d) {
+ return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;
+ };
+ c3_chart_internal_fn.initialOpacityForCircle = function (d) {
+ return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;
+ };
+ c3_chart_internal_fn.opacityForCircle = function (d) {
+ var opacity = this.config.point_show ? 1 : 0;
+ return isValue(d.value) ? (this.isScatterType(d) ? 0.5 : opacity) : 0;
+ };
+ c3_chart_internal_fn.opacityForText = function () {
+ return this.hasDataLabel() ? 1 : 0;
+ };
+ c3_chart_internal_fn.xx = function (d) {
+ return d ? this.x(d.x) : null;
+ };
+ c3_chart_internal_fn.xv = function (d) {
+ var $$ = this, value = d.value;
+ if ($$.isTimeSeries()) {
+ value = $$.parseDate(d.value);
+ }
+ else if ($$.isCategorized() && typeof d.value === 'string') {
+ value = $$.config.axis_x_categories.indexOf(d.value);
+ }
+ return Math.ceil($$.x(value));
+ };
+ c3_chart_internal_fn.yv = function (d) {
+ var $$ = this,
+ yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;
+ return Math.ceil(yScale(d.value));
+ };
+ c3_chart_internal_fn.subxx = function (d) {
+ return d ? this.subX(d.x) : null;
+ };
+
+ c3_chart_internal_fn.transformMain = function (withTransition, transitions) {
+ var $$ = this,
+ xAxis, yAxis, y2Axis;
+ if (transitions && transitions.axisX) {
+ xAxis = transitions.axisX;
+ } else {
+ xAxis = $$.main.select('.' + CLASS.axisX);
+ if (withTransition) { xAxis = xAxis.transition(); }
+ }
+ if (transitions && transitions.axisY) {
+ yAxis = transitions.axisY;
+ } else {
+ yAxis = $$.main.select('.' + CLASS.axisY);
+ if (withTransition) { yAxis = yAxis.transition(); }
+ }
+ if (transitions && transitions.axisY2) {
+ y2Axis = transitions.axisY2;
+ } else {
+ y2Axis = $$.main.select('.' + CLASS.axisY2);
+ if (withTransition) { y2Axis = y2Axis.transition(); }
+ }
+ (withTransition ? $$.main.transition() : $$.main).attr("transform", $$.getTranslate('main'));
+ xAxis.attr("transform", $$.getTranslate('x'));
+ yAxis.attr("transform", $$.getTranslate('y'));
+ y2Axis.attr("transform", $$.getTranslate('y2'));
+ $$.main.select('.' + CLASS.chartArcs).attr("transform", $$.getTranslate('arc'));
+ };
+ c3_chart_internal_fn.transformAll = function (withTransition, transitions) {
+ var $$ = this;
+ $$.transformMain(withTransition, transitions);
+ if ($$.config.subchart_show) { $$.transformContext(withTransition, transitions); }
+ if ($$.legend) { $$.transformLegend(withTransition); }
+ };
+
+ c3_chart_internal_fn.updateSvgSize = function () {
+ var $$ = this,
+ brush = $$.svg.select(".c3-brush .background");
+ $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);
+ $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect')
+ .attr('width', $$.width)
+ .attr('height', $$.height);
+ $$.svg.select('#' + $$.clipIdForXAxis).select('rect')
+ .attr('x', $$.getXAxisClipX.bind($$))
+ .attr('y', $$.getXAxisClipY.bind($$))
+ .attr('width', $$.getXAxisClipWidth.bind($$))
+ .attr('height', $$.getXAxisClipHeight.bind($$));
+ $$.svg.select('#' + $$.clipIdForYAxis).select('rect')
+ .attr('x', $$.getYAxisClipX.bind($$))
+ .attr('y', $$.getYAxisClipY.bind($$))
+ .attr('width', $$.getYAxisClipWidth.bind($$))
+ .attr('height', $$.getYAxisClipHeight.bind($$));
+ $$.svg.select('#' + $$.clipIdForSubchart).select('rect')
+ .attr('width', $$.width)
+ .attr('height', brush.size() ? brush.attr('height') : 0);
+ $$.svg.select('.' + CLASS.zoomRect)
+ .attr('width', $$.width)
+ .attr('height', $$.height);
+ // MEMO: parent div's height will be bigger than svg when <!DOCTYPE html>
+ $$.selectChart.style('max-height', $$.currentHeight + "px");
+ };
+
+
+ c3_chart_internal_fn.updateDimension = function (withoutAxis) {
+ var $$ = this;
+ if (!withoutAxis) {
+ if ($$.config.axis_rotated) {
+ $$.axes.x.call($$.xAxis);
+ $$.axes.subx.call($$.subXAxis);
+ } else {
+ $$.axes.y.call($$.yAxis);
+ $$.axes.y2.call($$.y2Axis);
+ }
+ }
+ $$.updateSizes();
+ $$.updateScales();
+ $$.updateSvgSize();
+ $$.transformAll(false);
+ };
+
+ c3_chart_internal_fn.observeInserted = function (selection) {
+ var $$ = this, observer;
+ if (typeof MutationObserver === 'undefined') {
+ window.console.error("MutationObserver not defined.");
+ return;
+ }
+ observer= new MutationObserver(function (mutations) {
+ mutations.forEach(function (mutation) {
+ if (mutation.type === 'childList' && mutation.previousSibling) {
+ observer.disconnect();
+ // need to wait for completion of load because size calculation requires the actual sizes determined after that completion
+ $$.intervalForObserveInserted = window.setInterval(function () {
+ // parentNode will NOT be null when completed
+ if (selection.node().parentNode) {
+ window.clearInterval($$.intervalForObserveInserted);
+ $$.updateDimension();
+ $$.config.oninit.call($$);
+ $$.redraw({
+ withTransform: true,
+ withUpdateXDomain: true,
+ withUpdateOrgXDomain: true,
+ withTransition: false,
+ withTransitionForTransform: false,
+ withLegend: true
+ });
+ selection.transition().style('opacity', 1);
+ }
+ }, 10);
+ }
+ });
+ });
+ observer.observe(selection.node(), {attributes: true, childList: true, characterData: true});
+ };
+
+
+ c3_chart_internal_fn.generateResize = function () {
+ var resizeFunctions = [];
+ function callResizeFunctions() {
+ resizeFunctions.forEach(function (f) {
+ f();
+ });
+ }
+ callResizeFunctions.add = function (f) {
+ resizeFunctions.push(f);
+ };
+ return callResizeFunctions;
+ };
+
+ c3_chart_internal_fn.endall = function (transition, callback) {
+ var n = 0;
+ transition
+ .each(function () { ++n; })
+ .each("end", function () {
+ if (!--n) { callback.apply(this, arguments); }
+ });
+ };
+ c3_chart_internal_fn.generateWait = function () {
+ var transitionsToWait = [],
+ f = function (transition, callback) {
+ var timer = setInterval(function () {
+ var done = 0;
+ transitionsToWait.forEach(function (t) {
+ if (t.empty()) {
+ done += 1;
+ return;
+ }
+ try {
+ t.transition();
+ } catch (e) {
+ done += 1;
+ }
+ });
+ if (done === transitionsToWait.length) {
+ clearInterval(timer);
+ if (callback) { callback(); }
+ }
+ }, 10);
+ };
+ f.add = function (transition) {
+ transitionsToWait.push(transition);
+ };
+ return f;
+ };
+
+ c3_chart_internal_fn.parseDate = function (date) {
+ var $$ = this, parsedDate;
+ if (date instanceof Date) {
+ parsedDate = date;
+ } else if (typeof date === 'string') {
+ parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date);
+ } else if (typeof date === 'number' || !isNaN(date)) {
+ parsedDate = new Date(+date);
+ }
+ if (!parsedDate || isNaN(+parsedDate)) {
+ window.console.error("Failed to parse x '" + date + "' to Date object");
+ }
+ return parsedDate;
+ };
+
+ c3_chart_internal_fn.isTabVisible = function () {
+ var hidden;
+ if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
+ hidden = "hidden";
+ } else if (typeof document.mozHidden !== "undefined") {
+ hidden = "mozHidden";
+ } else if (typeof document.msHidden !== "undefined") {
+ hidden = "msHidden";
+ } else if (typeof document.webkitHidden !== "undefined") {
+ hidden = "webkitHidden";
+ }
+
+ return document[hidden] ? false : true;
+ };
+
+ c3_chart_internal_fn.getDefaultConfig = function () {
+ var config = {
+ bindto: '#chart',
+ size_width: undefined,
+ size_height: undefined,
+ padding_left: undefined,
+ padding_right: undefined,
+ padding_top: undefined,
+ padding_bottom: undefined,
+ zoom_enabled: false,
+ zoom_extent: undefined,
+ zoom_privileged: false,
+ zoom_rescale: false,
+ zoom_onzoom: function () {},
+ zoom_onzoomstart: function () {},
+ zoom_onzoomend: function () {},
+ interaction_enabled: true,
+ onmouseover: function () {},
+ onmouseout: function () {},
+ onresize: function () {},
+ onresized: function () {},
+ oninit: function () {},
+ onrendered: function () {},
+ transition_duration: 350,
+ data_x: undefined,
+ data_xs: {},
+ data_xFormat: '%Y-%m-%d',
+ data_xLocaltime: true,
+ data_xSort: true,
+ data_idConverter: function (id) { return id; },
+ data_names: {},
+ data_classes: {},
+ data_groups: [],
+ data_axes: {},
+ data_type: undefined,
+ data_types: {},
+ data_labels: {},
+ data_order: 'desc',
+ data_regions: {},
+ data_color: undefined,
+ data_colors: {},
+ data_hide: false,
+ data_filter: undefined,
+ data_selection_enabled: false,
+ data_selection_grouped: false,
+ data_selection_isselectable: function () { return true; },
+ data_selection_multiple: true,
+ data_selection_draggable: false,
+ data_onclick: function () {},
+ data_onmouseover: function () {},
+ data_onmouseout: function () {},
+ data_onselected: function () {},
+ data_onunselected: function () {},
+ data_url: undefined,
+ data_json: undefined,
+ data_rows: undefined,
+ data_columns: undefined,
+ data_mimeType: undefined,
+ data_keys: undefined,
+ // configuration for no plot-able data supplied.
+ data_empty_label_text: "",
+ // subchart
+ subchart_show: false,
+ subchart_size_height: 60,
+ subchart_onbrush: function () {},
+ // color
+ color_pattern: [],
+ color_threshold: {},
+ // legend
+ legend_show: true,
+ legend_hide: false,
+ legend_position: 'bottom',
+ legend_inset_anchor: 'top-left',
+ legend_inset_x: 10,
+ legend_inset_y: 0,
+ legend_inset_step: undefined,
+ legend_item_onclick: undefined,
+ legend_item_onmouseover: undefined,
+ legend_item_onmouseout: undefined,
+ legend_equally: false,
+ // axis
+ axis_rotated: false,
+ axis_x_show: true,
+ axis_x_type: 'indexed',
+ axis_x_localtime: true,
+ axis_x_categories: [],
+ axis_x_tick_centered: false,
+ axis_x_tick_format: undefined,
+ axis_x_tick_culling: {},
+ axis_x_tick_culling_max: 10,
+ axis_x_tick_count: undefined,
+ axis_x_tick_fit: true,
+ axis_x_tick_values: null,
+ axis_x_tick_rotate: 0,
+ axis_x_tick_outer: true,
+ axis_x_tick_multiline: true,
+ axis_x_tick_width: null,
+ axis_x_max: undefined,
+ axis_x_min: undefined,
+ axis_x_padding: {},
+ axis_x_height: undefined,
+ axis_x_extent: undefined,
+ axis_x_label: {},
+ axis_y_show: true,
+ axis_y_type: undefined,
+ axis_y_max: undefined,
+ axis_y_min: undefined,
+ axis_y_inverted: false,
+ axis_y_center: undefined,
+ axis_y_inner: undefined,
+ axis_y_label: {},
+ axis_y_tick_format: undefined,
+ axis_y_tick_outer: true,
+ axis_y_tick_values: null,
+ axis_y_tick_count: undefined,
+ axis_y_tick_time_value: undefined,
+ axis_y_tick_time_interval: undefined,
+ axis_y_padding: {},
+ axis_y_default: undefined,
+ axis_y2_show: false,
+ axis_y2_max: undefined,
+ axis_y2_min: undefined,
+ axis_y2_inverted: false,
+ axis_y2_center: undefined,
+ axis_y2_inner: undefined,
+ axis_y2_label: {},
+ axis_y2_tick_format: undefined,
+ axis_y2_tick_outer: true,
+ axis_y2_tick_values: null,
+ axis_y2_tick_count: undefined,
+ axis_y2_padding: {},
+ axis_y2_default: undefined,
+ // grid
+ grid_x_show: false,
+ grid_x_type: 'tick',
+ grid_x_lines: [],
+ grid_y_show: false,
+ // not used
+ // grid_y_type: 'tick',
+ grid_y_lines: [],
+ grid_y_ticks: 10,
+ grid_focus_show: true,
+ grid_lines_front: true,
+ // point - point of each data
+ point_show: true,
+ point_r: 2.5,
+ point_focus_expand_enabled: true,
+ point_focus_expand_r: undefined,
+ point_select_r: undefined,
+ // line
+ line_connectNull: false,
+ line_step_type: 'step',
+ // bar
+ bar_width: undefined,
+ bar_width_ratio: 0.6,
+ bar_width_max: undefined,
+ bar_zerobased: true,
+ // area
+ area_zerobased: true,
+ // pie
+ pie_label_show: true,
+ pie_label_format: undefined,
+ pie_label_threshold: 0.05,
+ pie_expand: true,
+ // gauge
+ gauge_label_show: true,
+ gauge_label_format: undefined,
+ gauge_expand: true,
+ gauge_min: 0,
+ gauge_max: 100,
+ gauge_units: undefined,
+ gauge_width: undefined,
+ // donut
+ donut_label_show: true,
+ donut_label_format: undefined,
+ donut_label_threshold: 0.05,
+ donut_width: undefined,
+ donut_expand: true,
+ donut_title: "",
+ // region - region to change style
+ regions: [],
+ // tooltip - show when mouseover on each data
+ tooltip_show: true,
+ tooltip_grouped: true,
+ tooltip_format_title: undefined,
+ tooltip_format_name: undefined,
+ tooltip_format_value: undefined,
+ tooltip_position: undefined,
+ tooltip_contents: function (d, defaultTitleFormat, defaultValueFormat, color) {
+ return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';
+ },
+ tooltip_init_show: false,
+ tooltip_init_x: 0,
+ tooltip_init_position: {top: '0px', left: '50px'}
+ };
+
+ Object.keys(this.additionalConfig).forEach(function (key) {
+ config[key] = this.additionalConfig[key];
+ }, this);
+
+ return config;
+ };
+ c3_chart_internal_fn.additionalConfig = {};
+
+ c3_chart_internal_fn.loadConfig = function (config) {
+ var this_config = this.config, target, keys, read;
+ function find() {
+ var key = keys.shift();
+ // console.log("key =>", key, ", target =>", target);
+ if (key && target && typeof target === 'object' && key in target) {
+ target = target[key];
+ return find();
+ }
+ else if (!key) {
+ return target;
+ }
+ else {
+ return undefined;
+ }
+ }
+ Object.keys(this_config).forEach(function (key) {
+ target = config;
+ keys = key.split('_');
+ read = find();
+ // console.log("CONFIG : ", key, read);
+ if (isDefined(read)) {
+ this_config[key] = read;
+ }
+ });
+ };
+
+ c3_chart_internal_fn.getScale = function (min, max, forTimeseries) {
+ return (forTimeseries ? this.d3.time.scale() : this.d3.scale.linear()).range([min, max]);
+ };
+ c3_chart_internal_fn.getX = function (min, max, domain, offset) {
+ var $$ = this,
+ scale = $$.getScale(min, max, $$.isTimeSeries()),
+ _scale = domain ? scale.domain(domain) : scale, key;
+ // Define customized scale if categorized axis
+ if ($$.isCategorized()) {
+ offset = offset || function () { return 0; };
+ scale = function (d, raw) {
+ var v = _scale(d) + offset(d);
+ return raw ? v : Math.ceil(v);
+ };
+ } else {
+ scale = function (d, raw) {
+ var v = _scale(d);
+ return raw ? v : Math.ceil(v);
+ };
+ }
+ // define functions
+ for (key in _scale) {
+ scale[key] = _scale[key];
+ }
+ scale.orgDomain = function () {
+ return _scale.domain();
+ };
+ // define custom domain() for categorized axis
+ if ($$.isCategorized()) {
+ scale.domain = function (domain) {
+ if (!arguments.length) {
+ domain = this.orgDomain();
+ return [domain[0], domain[1] + 1];
+ }
+ _scale.domain(domain);
+ return scale;
+ };
+ }
+ return scale;
+ };
+ c3_chart_internal_fn.getY = function (min, max, domain) {
+ var scale = this.getScale(min, max, this.isTimeSeriesY());
+ if (domain) { scale.domain(domain); }
+ return scale;
+ };
+ c3_chart_internal_fn.getYScale = function (id) {
+ return this.axis.getId(id) === 'y2' ? this.y2 : this.y;
+ };
+ c3_chart_internal_fn.getSubYScale = function (id) {
+ return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;
+ };
+ c3_chart_internal_fn.updateScales = function () {
+ var $$ = this, config = $$.config,
+ forInit = !$$.x;
+ // update edges
+ $$.xMin = config.axis_rotated ? 1 : 0;
+ $$.xMax = config.axis_rotated ? $$.height : $$.width;
+ $$.yMin = config.axis_rotated ? 0 : $$.height;
+ $$.yMax = config.axis_rotated ? $$.width : 1;
+ $$.subXMin = $$.xMin;
+ $$.subXMax = $$.xMax;
+ $$.subYMin = config.axis_rotated ? 0 : $$.height2;
+ $$.subYMax = config.axis_rotated ? $$.width2 : 1;
+ // update scales
+ $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () { return $$.xAxis.tickOffset(); });
+ $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());
+ $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());
+ $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) { return d % 1 ? 0 : $$.subXAxis.tickOffset(); });
+ $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());
+ $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain());
+ // update axes
+ $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();
+ $$.xAxisTickValues = $$.axis.getXAxisTickValues();
+ $$.yAxisTickValues = $$.axis.getYAxisTickValues();
+ $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();
+
+ $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);
+ $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);
+ $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);
+ $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer);
+
+ // Set initialized scales to brush and zoom
+ if (!forInit) {
+ if ($$.brush) { $$.brush.scale($$.subX); }
+ if (config.zoom_enabled) { $$.zoom.scale($$.x); }
+ }
+ // update for arc
+ if ($$.updateArc) { $$.updateArc(); }
+ };
+
+ c3_chart_internal_fn.getYDomainMin = function (targets) {
+ var $$ = this, config = $$.config,
+ ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),
+ j, k, baseId, idsInGroup, id, hasNegativeValue;
+ if (config.data_groups.length > 0) {
+ hasNegativeValue = $$.hasNegativeValueInTargets(targets);
+ for (j = 0; j < config.data_groups.length; j++) {
+ // Determine baseId
+ idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });
+ if (idsInGroup.length === 0) { continue; }
+ baseId = idsInGroup[0];
+ // Consider negative values
+ if (hasNegativeValue && ys[baseId]) {
+ ys[baseId].forEach(function (v, i) {
+ ys[baseId][i] = v < 0 ? v : 0;
+ });
+ }
+ // Compute min
+ for (k = 1; k < idsInGroup.length; k++) {
+ id = idsInGroup[k];
+ if (! ys[id]) { continue; }
+ ys[id].forEach(function (v, i) {
+ if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {
+ ys[baseId][i] += +v;
+ }
+ });
+ }
+ }
+ }
+ return $$.d3.min(Object.keys(ys).map(function (key) { return $$.d3.min(ys[key]); }));
+ };
+ c3_chart_internal_fn.getYDomainMax = function (targets) {
+ var $$ = this, config = $$.config,
+ ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets),
+ j, k, baseId, idsInGroup, id, hasPositiveValue;
+ if (config.data_groups.length > 0) {
+ hasPositiveValue = $$.hasPositiveValueInTargets(targets);
+ for (j = 0; j < config.data_groups.length; j++) {
+ // Determine baseId
+ idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; });
+ if (idsInGroup.length === 0) { continue; }
+ baseId = idsInGroup[0];
+ // Consider positive values
+ if (hasPositiveValue && ys[baseId]) {
+ ys[baseId].forEach(function (v, i) {
+ ys[baseId][i] = v > 0 ? v : 0;
+ });
+ }
+ // Compute max
+ for (k = 1; k < idsInGroup.length; k++) {
+ id = idsInGroup[k];
+ if (! ys[id]) { continue; }
+ ys[id].forEach(function (v, i) {
+ if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {
+ ys[baseId][i] += +v;
+ }
+ });
+ }
+ }
+ }
+ return $$.d3.max(Object.keys(ys).map(function (key) { return $$.d3.max(ys[key]); }));
+ };
+ c3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) {
+ var $$ = this, config = $$.config,
+ targetsByAxisId = targets.filter(function (t) { return $$.axis.getId(t.id) === axisId; }),
+ yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,
+ yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,
+ yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,
+ yDomainMin = $$.getYDomainMin(yTargets),
+ yDomainMax = $$.getYDomainMax(yTargets),
+ domain, domainLength, padding, padding_top, padding_bottom,
+ center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,
+ yDomainAbs, lengths, diff, ratio, isAllPositive, isAllNegative,
+ isZeroBased = ($$.hasType('bar', yTargets) && config.bar_zerobased) || ($$.hasType('area', yTargets) && config.area_zerobased),
+ isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,
+ showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,
+ showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;
+
+ // MEMO: avoid inverting domain unexpectedly
+ yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? (yDomainMin < yMax ? yDomainMin : yMax - 10) : yDomainMin;
+ yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? (yMin < yDomainMax ? yDomainMax : yMin + 10) : yDomainMax;
+
+ if (yTargets.length === 0) { // use current domain if target of axisId is none
+ return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();
+ }
+ if (isNaN(yDomainMin)) { // set minimum to zero when not number
+ yDomainMin = 0;
+ }
+ if (isNaN(yDomainMax)) { // set maximum to have same value as yDomainMin
+ yDomainMax = yDomainMin;
+ }
+ if (yDomainMin === yDomainMax) {
+ yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;
+ }
+ isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;
+ isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;
+
+ // Cancel zerobased if axis_*_min / axis_*_max specified
+ if ((isValue(yMin) && isAllPositive) || (isValue(yMax) && isAllNegative)) {
+ isZeroBased = false;
+ }
+
+ // Bar/Area chart should be 0-based if all positive|negative
+ if (isZeroBased) {
+ if (isAllPositive) { yDomainMin = 0; }
+ if (isAllNegative) { yDomainMax = 0; }
+ }
+
+ domainLength = Math.abs(yDomainMax - yDomainMin);
+ padding = padding_top = padding_bottom = domainLength * 0.1;
+
+ if (typeof center !== 'undefined') {
+ yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));
+ yDomainMax = center + yDomainAbs;
+ yDomainMin = center - yDomainAbs;
+ }
+ // add padding for data label
+ if (showHorizontalDataLabel) {
+ lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');
+ diff = diffDomain($$.y.range());
+ ratio = [lengths[0] / diff, lengths[1] / diff];
+ padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));
+ padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));
+ } else if (showVerticalDataLabel) {
+ lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');
+ padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);
+ padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);
+ }
+ if (axisId === 'y' && notEmpty(config.axis_y_padding)) {
+ padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);
+ padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);
+ }
+ if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {
+ padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);
+ padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);
+ }
+ // Bar/Area chart should be 0-based if all positive|negative
+ if (isZeroBased) {
+ if (isAllPositive) { padding_bottom = yDomainMin; }
+ if (isAllNegative) { padding_top = -yDomainMax; }
+ }
+ domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];
+ return isInverted ? domain.reverse() : domain;
+ };
+ c3_chart_internal_fn.getXDomainMin = function (targets) {
+ var $$ = this, config = $$.config;
+ return isDefined(config.axis_x_min) ?
+ ($$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min) :
+ $$.d3.min(targets, function (t) { return $$.d3.min(t.values, function (v) { return v.x; }); });
+ };
+ c3_chart_internal_fn.getXDomainMax = function (targets) {
+ var $$ = this, config = $$.config;
+ return isDefined(config.axis_x_max) ?
+ ($$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max) :
+ $$.d3.max(targets, function (t) { return $$.d3.max(t.values, function (v) { return v.x; }); });
+ };
+ c3_chart_internal_fn.getXDomainPadding = function (domain) {
+ var $$ = this, config = $$.config,
+ diff = domain[1] - domain[0],
+ maxDataCount, padding, paddingLeft, paddingRight;
+ if ($$.isCategorized()) {
+ padding = 0;
+ } else if ($$.hasType('bar')) {
+ maxDataCount = $$.getMaxDataCount();
+ padding = maxDataCount > 1 ? (diff / (maxDataCount - 1)) / 2 : 0.5;
+ } else {
+ padding = diff * 0.01;
+ }
+ if (typeof config.axis_x_padding === 'object' && notEmpty(config.axis_x_padding)) {
+ paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;
+ paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;
+ } else if (typeof config.axis_x_padding === 'number') {
+ paddingLeft = paddingRight = config.axis_x_padding;
+ } else {
+ paddingLeft = paddingRight = padding;
+ }
+ return {left: paddingLeft, right: paddingRight};
+ };
+ c3_chart_internal_fn.getXDomain = function (targets) {
+ var $$ = this,
+ xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],
+ firstX = xDomain[0], lastX = xDomain[1],
+ padding = $$.getXDomainPadding(xDomain),
+ min = 0, max = 0;
+ // show center of x domain if min and max are the same
+ if ((firstX - lastX) === 0 && !$$.isCategorized()) {
+ if ($$.isTimeSeries()) {
+ firstX = new Date(firstX.getTime() * 0.5);
+ lastX = new Date(lastX.getTime() * 1.5);
+ } else {
+ firstX = firstX === 0 ? 1 : (firstX * 0.5);
+ lastX = lastX === 0 ? -1 : (lastX * 1.5);
+ }
+ }
+ if (firstX || firstX === 0) {
+ min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;
+ }
+ if (lastX || lastX === 0) {
+ max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;
+ }
+ return [min, max];
+ };
+ c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {
+ var $$ = this, config = $$.config;
+
+ if (withUpdateOrgXDomain) {
+ $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));
+ $$.orgXDomain = $$.x.domain();
+ if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }
+ $$.subX.domain($$.x.domain());
+ if ($$.brush) { $$.brush.scale($$.subX); }
+ }
+ if (withUpdateXDomain) {
+ $$.x.domain(domain ? domain : (!$$.brush || $$.brush.empty()) ? $$.orgXDomain : $$.brush.extent());
+ if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); }
+ }
+
+ // Trim domain when too big by zoom mousemove event
+ if (withTrim) { $$.x.domain($$.trimXDomain($$.x.orgDomain())); }
+
+ return $$.x.domain();
+ };
+ c3_chart_internal_fn.trimXDomain = function (domain) {
+ var $$ = this;
+ if (domain[0] <= $$.orgXDomain[0]) {
+ domain[1] = +domain[1] + ($$.orgXDomain[0] - domain[0]);
+ domain[0] = $$.orgXDomain[0];
+ }
+ if ($$.orgXDomain[1] <= domain[1]) {
+ domain[0] = +domain[0] - (domain[1] - $$.orgXDomain[1]);
+ domain[1] = $$.orgXDomain[1];
+ }
+ return domain;
+ };
+
+ c3_chart_internal_fn.isX = function (key) {
+ var $$ = this, config = $$.config;
+ return (config.data_x && key === config.data_x) || (notEmpty(config.data_xs) && hasValue(config.data_xs, key));
+ };
+ c3_chart_internal_fn.isNotX = function (key) {
+ return !this.isX(key);
+ };
+ c3_chart_internal_fn.getXKey = function (id) {
+ var $$ = this, config = $$.config;
+ return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;
+ };
+ c3_chart_internal_fn.getXValuesOfXKey = function (key, targets) {
+ var $$ = this,
+ xValues, ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];
+ ids.forEach(function (id) {
+ if ($$.getXKey(id) === key) {
+ xValues = $$.data.xs[id];
+ }
+ });
+ return xValues;
+ };
+ c3_chart_internal_fn.getIndexByX = function (x) {
+ var $$ = this,
+ data = $$.filterByX($$.data.targets, x);
+ return data.length ? data[0].index : null;
+ };
+ c3_chart_internal_fn.getXValue = function (id, i) {
+ var $$ = this;
+ return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;
+ };
+ c3_chart_internal_fn.getOtherTargetXs = function () {
+ var $$ = this,
+ idsForX = Object.keys($$.data.xs);
+ return idsForX.length ? $$.data.xs[idsForX[0]] : null;
+ };
+ c3_chart_internal_fn.getOtherTargetX = function (index) {
+ var xs = this.getOtherTargetXs();
+ return xs && index < xs.length ? xs[index] : null;
+ };
+ c3_chart_internal_fn.addXs = function (xs) {
+ var $$ = this;
+ Object.keys(xs).forEach(function (id) {
+ $$.config.data_xs[id] = xs[id];
+ });
+ };
+ c3_chart_internal_fn.hasMultipleX = function (xs) {
+ return this.d3.set(Object.keys(xs).map(function (id) { return xs[id]; })).size() > 1;
+ };
+ c3_chart_internal_fn.isMultipleX = function () {
+ return notEmpty(this.config.data_xs) || !this.config.data_xSort || this.hasType('scatter');
+ };
+ c3_chart_internal_fn.addName = function (data) {
+ var $$ = this, name;
+ if (data) {
+ name = $$.config.data_names[data.id];
+ data.name = name ? name : data.id;
+ }
+ return data;
+ };
+ c3_chart_internal_fn.getValueOnIndex = function (values, index) {
+ var valueOnIndex = values.filter(function (v) { return v.index === index; });
+ return valueOnIndex.length ? valueOnIndex[0] : null;
+ };
+ c3_chart_internal_fn.updateTargetX = function (targets, x) {
+ var $$ = this;
+ targets.forEach(function (t) {
+ t.values.forEach(function (v, i) {
+ v.x = $$.generateTargetX(x[i], t.id, i);
+ });
+ $$.data.xs[t.id] = x;
+ });
+ };
+ c3_chart_internal_fn.updateTargetXs = function (targets, xs) {
+ var $$ = this;
+ targets.forEach(function (t) {
+ if (xs[t.id]) {
+ $$.updateTargetX([t], xs[t.id]);
+ }
+ });
+ };
+ c3_chart_internal_fn.generateTargetX = function (rawX, id, index) {
+ var $$ = this, x;
+ if ($$.isTimeSeries()) {
+ x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));
+ }
+ else if ($$.isCustomX() && !$$.isCategorized()) {
+ x = isValue(rawX) ? +rawX : $$.getXValue(id, index);
+ }
+ else {
+ x = index;
+ }
+ return x;
+ };
+ c3_chart_internal_fn.cloneTarget = function (target) {
+ return {
+ id : target.id,
+ id_org : target.id_org,
+ values : target.values.map(function (d) {
+ return {x: d.x, value: d.value, id: d.id};
+ })
+ };
+ };
+ c3_chart_internal_fn.updateXs = function () {
+ var $$ = this;
+ if ($$.data.targets.length) {
+ $$.xs = [];
+ $$.data.targets[0].values.forEach(function (v) {
+ $$.xs[v.index] = v.x;
+ });
+ }
+ };
+ c3_chart_internal_fn.getPrevX = function (i) {
+ var x = this.xs[i - 1];
+ return typeof x !== 'undefined' ? x : null;
+ };
+ c3_chart_internal_fn.getNextX = function (i) {
+ var x = this.xs[i + 1];
+ return typeof x !== 'undefined' ? x : null;
+ };
+ c3_chart_internal_fn.getMaxDataCount = function () {
+ var $$ = this;
+ return $$.d3.max($$.data.targets, function (t) { return t.values.length; });
+ };
+ c3_chart_internal_fn.getMaxDataCountTarget = function (targets) {
+ var length = targets.length, max = 0, maxTarget;
+ if (length > 1) {
+ targets.forEach(function (t) {
+ if (t.values.length > max) {
+ maxTarget = t;
+ max = t.values.length;
+ }
+ });
+ } else {
+ maxTarget = length ? targets[0] : null;
+ }
+ return maxTarget;
+ };
+ c3_chart_internal_fn.getEdgeX = function (targets) {
+ var $$ = this;
+ return !targets.length ? [0, 0] : [
+ $$.d3.min(targets, function (t) { return t.values[0].x; }),
+ $$.d3.max(targets, function (t) { return t.values[t.values.length - 1].x; })
+ ];
+ };
+ c3_chart_internal_fn.mapToIds = function (targets) {
+ return targets.map(function (d) { return d.id; });
+ };
+ c3_chart_internal_fn.mapToTargetIds = function (ids) {
+ var $$ = this;
+ return ids ? (isString(ids) ? [ids] : ids) : $$.mapToIds($$.data.targets);
+ };
+ c3_chart_internal_fn.hasTarget = function (targets, id) {
+ var ids = this.mapToIds(targets), i;
+ for (i = 0; i < ids.length; i++) {
+ if (ids[i] === id) {
+ return true;
+ }
+ }
+ return false;
+ };
+ c3_chart_internal_fn.isTargetToShow = function (targetId) {
+ return this.hiddenTargetIds.indexOf(targetId) < 0;
+ };
+ c3_chart_internal_fn.isLegendToShow = function (targetId) {
+ return this.hiddenLegendIds.indexOf(targetId) < 0;
+ };
+ c3_chart_internal_fn.filterTargetsToShow = function (targets) {
+ var $$ = this;
+ return targets.filter(function (t) { return $$.isTargetToShow(t.id); });
+ };
+ c3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) {
+ var $$ = this;
+ var xs = $$.d3.set($$.d3.merge(targets.map(function (t) { return t.values.map(function (v) { return +v.x; }); }))).values();
+ return $$.isTimeSeries() ? xs.map(function (x) { return new Date(+x); }) : xs.map(function (x) { return +x; });
+ };
+ c3_chart_internal_fn.addHiddenTargetIds = function (targetIds) {
+ this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds);
+ };
+ c3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) {
+ this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) { return targetIds.indexOf(id) < 0; });
+ };
+ c3_chart_internal_fn.addHiddenLegendIds = function (targetIds) {
+ this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds);
+ };
+ c3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) {
+ this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) { return targetIds.indexOf(id) < 0; });
+ };
+ c3_chart_internal_fn.getValuesAsIdKeyed = function (targets) {
+ var ys = {};
+ targets.forEach(function (t) {
+ ys[t.id] = [];
+ t.values.forEach(function (v) {
+ ys[t.id].push(v.value);
+ });
+ });
+ return ys;
+ };
+ c3_chart_internal_fn.checkValueInTargets = function (targets, checker) {
+ var ids = Object.keys(targets), i, j, values;
+ for (i = 0; i < ids.length; i++) {
+ values = targets[ids[i]].values;
+ for (j = 0; j < values.length; j++) {
+ if (checker(values[j].value)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+ c3_chart_internal_fn.hasNegativeValueInTargets = function (targets) {
+ return this.checkValueInTargets(targets, function (v) { return v < 0; });
+ };
+ c3_chart_internal_fn.hasPositiveValueInTargets = function (targets) {
+ return this.checkValueInTargets(targets, function (v) { return v > 0; });
+ };
+ c3_chart_internal_fn.isOrderDesc = function () {
+ var config = this.config;
+ return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'desc';
+ };
+ c3_chart_internal_fn.isOrderAsc = function () {
+ var config = this.config;
+ return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'asc';
+ };
+ c3_chart_internal_fn.orderTargets = function (targets) {
+ var $$ = this, config = $$.config, orderAsc = $$.isOrderAsc(), orderDesc = $$.isOrderDesc();
+ if (orderAsc || orderDesc) {
+ targets.sort(function (t1, t2) {
+ var reducer = function (p, c) { return p + Math.abs(c.value); };
+ var t1Sum = t1.values.reduce(reducer, 0),
+ t2Sum = t2.values.reduce(reducer, 0);
+ return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum;
+ });
+ } else if (isFunction(config.data_order)) {
+ targets.sort(config.data_order);
+ } // TODO: accept name array for order
+ return targets;
+ };
+ c3_chart_internal_fn.filterByX = function (targets, x) {
+ return this.d3.merge(targets.map(function (t) { return t.values; })).filter(function (v) { return v.x - x === 0; });
+ };
+ c3_chart_internal_fn.filterRemoveNull = function (data) {
+ return data.filter(function (d) { return isValue(d.value); });
+ };
+ c3_chart_internal_fn.filterByXDomain = function (targets, xDomain) {
+ return targets.map(function (t) {
+ return {
+ id: t.id,
+ id_org: t.id_org,
+ values: t.values.filter(function (v) {
+ return xDomain[0] <= v.x && v.x <= xDomain[1];
+ })
+ };
+ });
+ };
+ c3_chart_internal_fn.hasDataLabel = function () {
+ var config = this.config;
+ if (typeof config.data_labels === 'boolean' && config.data_labels) {
+ return true;
+ } else if (typeof config.data_labels === 'object' && notEmpty(config.data_labels)) {
+ return true;
+ }
+ return false;
+ };
+ c3_chart_internal_fn.getDataLabelLength = function (min, max, key) {
+ var $$ = this,
+ lengths = [0, 0], paddingCoef = 1.3;
+ $$.selectChart.select('svg').selectAll('.dummy')
+ .data([min, max])
+ .enter().append('text')
+ .text(function (d) { return $$.dataLabelFormat(d.id)(d); })
+ .each(function (d, i) {
+ lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;
+ })
+ .remove();
+ return lengths;
+ };
+ c3_chart_internal_fn.isNoneArc = function (d) {
+ return this.hasTarget(this.data.targets, d.id);
+ },
+ c3_chart_internal_fn.isArc = function (d) {
+ return 'data' in d && this.hasTarget(this.data.targets, d.data.id);
+ };
+ c3_chart_internal_fn.findSameXOfValues = function (values, index) {
+ var i, targetX = values[index].x, sames = [];
+ for (i = index - 1; i >= 0; i--) {
+ if (targetX !== values[i].x) { break; }
+ sames.push(values[i]);
+ }
+ for (i = index; i < values.length; i++) {
+ if (targetX !== values[i].x) { break; }
+ sames.push(values[i]);
+ }
+ return sames;
+ };
+
+ c3_chart_internal_fn.findClosestFromTargets = function (targets, pos) {
+ var $$ = this, candidates;
+
+ // map to array of closest points of each target
+ candidates = targets.map(function (target) {
+ return $$.findClosest(target.values, pos);
+ });
+
+ // decide closest point and return
+ return $$.findClosest(candidates, pos);
+ };
+ c3_chart_internal_fn.findClosest = function (values, pos) {
+ var $$ = this, minDist = 100, closest;
+
+ // find mouseovering bar
+ values.filter(function (v) { return v && $$.isBarType(v.id); }).forEach(function (v) {
+ var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();
+ if (!closest && $$.isWithinBar(shape)) {
+ closest = v;
+ }
+ });
+
+ // find closest point from non-bar
+ values.filter(function (v) { return v && !$$.isBarType(v.id); }).forEach(function (v) {
+ var d = $$.dist(v, pos);
+ if (d < minDist) {
+ minDist = d;
+ closest = v;
+ }
+ });
+
+ return closest;
+ };
+ c3_chart_internal_fn.dist = function (data, pos) {
+ var $$ = this, config = $$.config,
+ xIndex = config.axis_rotated ? 1 : 0,
+ yIndex = config.axis_rotated ? 0 : 1,
+ y = $$.circleY(data, data.index),
+ x = $$.x(data.x);
+ return Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2);
+ };
+ c3_chart_internal_fn.convertValuesToStep = function (values) {
+ var converted = [].concat(values), i;
+
+ if (!this.isCategorized()) {
+ return values;
+ }
+
+ for (i = values.length + 1; 0 < i; i--) {
+ converted[i] = converted[i - 1];
+ }
+
+ converted[0] = {
+ x: converted[0].x - 1,
+ value: converted[0].value,
+ id: converted[0].id
+ };
+ converted[values.length + 1] = {
+ x: converted[values.length].x + 1,
+ value: converted[values.length].value,
+ id: converted[values.length].id
+ };
+
+ return converted;
+ };
+ c3_chart_internal_fn.updateDataAttributes = function (name, attrs) {
+ var $$ = this, config = $$.config, current = config['data_' + name];
+ if (typeof attrs === 'undefined') { return current; }
+ Object.keys(attrs).forEach(function (id) {
+ current[id] = attrs[id];
+ });
+ $$.redraw({withLegend: true});
+ return current;
+ };
+
+ c3_chart_internal_fn.convertUrlToData = function (url, mimeType, keys, done) {
+ var $$ = this, type = mimeType ? mimeType : 'csv';
+ $$.d3.xhr(url, function (error, data) {
+ var d;
+ if (!data) {
+ throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')');
+ }
+ if (type === 'json') {
+ d = $$.convertJsonToData(JSON.parse(data.response), keys);
+ } else if (type === 'tsv') {
+ d = $$.convertTsvToData(data.response);
+ } else {
+ d = $$.convertCsvToData(data.response);
+ }
+ done.call($$, d);
+ });
+ };
+ c3_chart_internal_fn.convertXsvToData = function (xsv, parser) {
+ var rows = parser.parseRows(xsv), d;
+ if (rows.length === 1) {
+ d = [{}];
+ rows[0].forEach(function (id) {
+ d[0][id] = null;
+ });
+ } else {
+ d = parser.parse(xsv);
+ }
+ return d;
+ };
+ c3_chart_internal_fn.convertCsvToData = function (csv) {
+ return this.convertXsvToData(csv, this.d3.csv);
+ };
+ c3_chart_internal_fn.convertTsvToData = function (tsv) {
+ return this.convertXsvToData(tsv, this.d3.tsv);
+ };
+ c3_chart_internal_fn.convertJsonToData = function (json, keys) {
+ var $$ = this,
+ new_rows = [], targetKeys, data;
+ if (keys) { // when keys specified, json would be an array that includes objects
+ if (keys.x) {
+ targetKeys = keys.value.concat(keys.x);
+ $$.config.data_x = keys.x;
+ } else {
+ targetKeys = keys.value;
+ }
+ new_rows.push(targetKeys);
+ json.forEach(function (o) {
+ var new_row = [];
+ targetKeys.forEach(function (key) {
+ // convert undefined to null because undefined data will be removed in convertDataToTargets()
+ var v = isUndefined(o[key]) ? null : o[key];
+ new_row.push(v);
+ });
+ new_rows.push(new_row);
+ });
+ data = $$.convertRowsToData(new_rows);
+ } else {
+ Object.keys(json).forEach(function (key) {
+ new_rows.push([key].concat(json[key]));
+ });
+ data = $$.convertColumnsToData(new_rows);
+ }
+ return data;
+ };
+ c3_chart_internal_fn.convertRowsToData = function (rows) {
+ var keys = rows[0], new_row = {}, new_rows = [], i, j;
+ for (i = 1; i < rows.length; i++) {
+ new_row = {};
+ for (j = 0; j < rows[i].length; j++) {
+ if (isUndefined(rows[i][j])) {
+ throw new Error("Source data is missing a component at (" + i + "," + j + ")!");
+ }
+ new_row[keys[j]] = rows[i][j];
+ }
+ new_rows.push(new_row);
+ }
+ return new_rows;
+ };
+ c3_chart_internal_fn.convertColumnsToData = function (columns) {
+ var new_rows = [], i, j, key;
+ for (i = 0; i < columns.length; i++) {
+ key = columns[i][0];
+ for (j = 1; j < columns[i].length; j++) {
+ if (isUndefined(new_rows[j - 1])) {
+ new_rows[j - 1] = {};
+ }
+ if (isUndefined(columns[i][j])) {
+ throw new Error("Source data is missing a component at (" + i + "," + j + ")!");
+ }
+ new_rows[j - 1][key] = columns[i][j];
+ }
+ }
+ return new_rows;
+ };
+ c3_chart_internal_fn.convertDataToTargets = function (data, appendXs) {
+ var $$ = this, config = $$.config,
+ ids = $$.d3.keys(data[0]).filter($$.isNotX, $$),
+ xs = $$.d3.keys(data[0]).filter($$.isX, $$),
+ targets;
+
+ // save x for update data by load when custom x and c3.x API
+ ids.forEach(function (id) {
+ var xKey = $$.getXKey(id);
+
+ if ($$.isCustomX() || $$.isTimeSeries()) {
+ // if included in input data
+ if (xs.indexOf(xKey) >= 0) {
+ $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(
+ data.map(function (d) { return d[xKey]; })
+ .filter(isValue)
+ .map(function (rawX, i) { return $$.generateTargetX(rawX, id, i); })
+ );
+ }
+ // if not included in input data, find from preloaded data of other id's x
+ else if (config.data_x) {
+ $$.data.xs[id] = $$.getOtherTargetXs();
+ }
+ // if not included in input data, find from preloaded data
+ else if (notEmpty(config.data_xs)) {
+ $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);
+ }
+ // MEMO: if no x included, use same x of current will be used
+ } else {
+ $$.data.xs[id] = data.map(function (d, i) { return i; });
+ }
+ });
+
+
+ // check x is defined
+ ids.forEach(function (id) {
+ if (!$$.data.xs[id]) {
+ throw new Error('x is not defined for id = "' + id + '".');
+ }
+ });
+
+ // convert to target
+ targets = ids.map(function (id, index) {
+ var convertedId = config.data_idConverter(id);
+ return {
+ id: convertedId,
+ id_org: id,
+ values: data.map(function (d, i) {
+ var xKey = $$.getXKey(id), rawX = d[xKey], x = $$.generateTargetX(rawX, id, i);
+ // use x as categories if custom x and categorized
+ if ($$.isCustomX() && $$.isCategorized() && index === 0 && rawX) {
+ if (i === 0) { config.axis_x_categories = []; }
+ config.axis_x_categories.push(rawX);
+ }
+ // mark as x = undefined if value is undefined and filter to remove after mapped
+ if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {
+ x = undefined;
+ }
+ return {x: x, value: d[id] !== null && !isNaN(d[id]) ? +d[id] : null, id: convertedId};
+ }).filter(function (v) { return isDefined(v.x); })
+ };
+ });
+
+ // finish targets
+ targets.forEach(function (t) {
+ var i;
+ // sort values by its x
+ if (config.data_xSort) {
+ t.values = t.values.sort(function (v1, v2) {
+ var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,
+ x2 = v2.x || v2.x === 0 ? v2.x : Infinity;
+ return x1 - x2;
+ });
+ }
+ // indexing each value
+ i = 0;
+ t.values.forEach(function (v) {
+ v.index = i++;
+ });
+ // this needs to be sorted because its index and value.index is identical
+ $$.data.xs[t.id].sort(function (v1, v2) {
+ return v1 - v2;
+ });
+ });
+
+ // set target types
+ if (config.data_type) {
+ $$.setTargetType($$.mapToIds(targets).filter(function (id) { return ! (id in config.data_types); }), config.data_type);
+ }
+
+ // cache as original id keyed
+ targets.forEach(function (d) {
+ $$.addCache(d.id_org, d);
+ });
+
+ return targets;
+ };
+
+ c3_chart_internal_fn.load = function (targets, args) {
+ var $$ = this;
+ if (targets) {
+ // filter loading targets if needed
+ if (args.filter) {
+ targets = targets.filter(args.filter);
+ }
+ // set type if args.types || args.type specified
+ if (args.type || args.types) {
+ targets.forEach(function (t) {
+ var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;
+ $$.setTargetType(t.id, type);
+ });
+ }
+ // Update/Add data
+ $$.data.targets.forEach(function (d) {
+ for (var i = 0; i < targets.length; i++) {
+ if (d.id === targets[i].id) {
+ d.values = targets[i].values;
+ targets.splice(i, 1);
+ break;
+ }
+ }
+ });
+ $$.data.targets = $$.data.targets.concat(targets); // add remained
+ }
+
+ // Set targets
+ $$.updateTargets($$.data.targets);
+
+ // Redraw with new targets
+ $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});
+
+ if (args.done) { args.done(); }
+ };
+ c3_chart_internal_fn.loadFromArgs = function (args) {
+ var $$ = this;
+ if (args.data) {
+ $$.load($$.convertDataToTargets(args.data), args);
+ }
+ else if (args.url) {
+ $$.convertUrlToData(args.url, args.mimeType, args.keys, function (data) {
+ $$.load($$.convertDataToTargets(data), args);
+ });
+ }
+ else if (args.json) {
+ $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);
+ }
+ else if (args.rows) {
+ $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);
+ }
+ else if (args.columns) {
+ $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);
+ }
+ else {
+ $$.load(null, args);
+ }
+ };
+ c3_chart_internal_fn.unload = function (targetIds, done) {
+ var $$ = this;
+ if (!done) {
+ done = function () {};
+ }
+ // filter existing target
+ targetIds = targetIds.filter(function (id) { return $$.hasTarget($$.data.targets, id); });
+ // If no target, call done and return
+ if (!targetIds || targetIds.length === 0) {
+ done();
+ return;
+ }
+ $$.svg.selectAll(targetIds.map(function (id) { return $$.selectorTarget(id); }))
+ .transition()
+ .style('opacity', 0)
+ .remove()
+ .call($$.endall, done);
+ targetIds.forEach(function (id) {
+ // Reset fadein for future load
+ $$.withoutFadeIn[id] = false;
+ // Remove target's elements
+ if ($$.legend) {
+ $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();
+ }
+ // Remove target
+ $$.data.targets = $$.data.targets.filter(function (t) {
+ return t.id !== id;
+ });
+ });
+ };
+
+ c3_chart_internal_fn.categoryName = function (i) {
+ var config = this.config;
+ return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;
+ };
+
+ c3_chart_internal_fn.initEventRect = function () {
+ var $$ = this;
+ $$.main.select('.' + CLASS.chart).append("g")
+ .attr("class", CLASS.eventRects)
+ .style('fill-opacity', 0);
+ };
+ c3_chart_internal_fn.redrawEventRect = function () {
+ var $$ = this, config = $$.config,
+ eventRectUpdate, maxDataCountTarget,
+ isMultipleX = $$.isMultipleX();
+
+ // rects for mouseover
+ var eventRects = $$.main.select('.' + CLASS.eventRects)
+ .style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null)
+ .classed(CLASS.eventRectsMultiple, isMultipleX)
+ .classed(CLASS.eventRectsSingle, !isMultipleX);
+
+ // clear old rects
+ eventRects.selectAll('.' + CLASS.eventRect).remove();
+
+ // open as public variable
+ $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);
+
+ if (isMultipleX) {
+ eventRectUpdate = $$.eventRect.data([0]);
+ // enter : only one rect will be added
+ $$.generateEventRectsForMultipleXs(eventRectUpdate.enter());
+ // update
+ $$.updateEventRect(eventRectUpdate);
+ // exit : not needed because always only one rect exists
+ }
+ else {
+ // Set data and update $$.eventRect
+ maxDataCountTarget = $$.getMaxDataCountTarget($$.data.targets);
+ eventRects.datum(maxDataCountTarget ? maxDataCountTarget.values : []);
+ $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);
+ eventRectUpdate = $$.eventRect.data(function (d) { return d; });
+ // enter
+ $$.generateEventRectsForSingleX(eventRectUpdate.enter());
+ // update
+ $$.updateEventRect(eventRectUpdate);
+ // exit
+ eventRectUpdate.exit().remove();
+ }
+ };
+ c3_chart_internal_fn.updateEventRect = function (eventRectUpdate) {
+ var $$ = this, config = $$.config,
+ x, y, w, h, rectW, rectX;
+
+ // set update selection if null
+ eventRectUpdate = eventRectUpdate || $$.eventRect.data(function (d) { return d; });
+
+ if ($$.isMultipleX()) {
+ // TODO: rotated not supported yet
+ x = 0;
+ y = 0;
+ w = $$.width;
+ h = $$.height;
+ }
+ else {
+ if (($$.isCustomX() || $$.isTimeSeries()) && !$$.isCategorized()) {
+
+ // update index for x that is used by prevX and nextX
+ $$.updateXs();
+
+ rectW = function (d) {
+ var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index);
+
+ // if there this is a single data point make the eventRect full width (or height)
+ if (prevX === null && nextX === null) {
+ return config.axis_rotated ? $$.height : $$.width;
+ }
+
+ if (prevX === null) { prevX = $$.x.domain()[0]; }
+ if (nextX === null) { nextX = $$.x.domain()[1]; }
+
+ return Math.max(0, ($$.x(nextX) - $$.x(prevX)) / 2);
+ };
+ rectX = function (d) {
+ var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index),
+ thisX = $$.data.xs[d.id][d.index];
+
+ // if there this is a single data point position the eventRect at 0
+ if (prevX === null && nextX === null) {
+ return 0;
+ }
+
+ if (prevX === null) { prevX = $$.x.domain()[0]; }
+
+ return ($$.x(thisX) + $$.x(prevX)) / 2;
+ };
+ } else {
+ rectW = $$.getEventRectWidth();
+ rectX = function (d) {
+ return $$.x(d.x) - (rectW / 2);
+ };
+ }
+ x = config.axis_rotated ? 0 : rectX;
+ y = config.axis_rotated ? rectX : 0;
+ w = config.axis_rotated ? $$.width : rectW;
+ h = config.axis_rotated ? rectW : $$.height;
+ }
+
+ eventRectUpdate
+ .attr('class', $$.classEvent.bind($$))
+ .attr("x", x)
+ .attr("y", y)
+ .attr("width", w)
+ .attr("height", h);
+ };
+ c3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) {
+ var $$ = this, d3 = $$.d3, config = $$.config;
+ eventRectEnter.append("rect")
+ .attr("class", $$.classEvent.bind($$))
+ .style("cursor", config.data_selection_enabled && config.data_selection_grouped ? "pointer" : null)
+ .on('mouseover', function (d) {
+ var index = d.index;
+
+ if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing
+ if ($$.hasArcType()) { return; }
+
+ // Expand shapes for selection
+ if (config.point_focus_expand_enabled) { $$.expandCircles(index, null, true); }
+ $$.expandBars(index, null, true);
+
+ // Call event handler
+ $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {
+ config.data_onmouseover.call($$.api, d);
+ });
+ })
+ .on('mouseout', function (d) {
+ var index = d.index;
+ if (!$$.config) { return; } // chart is destroyed
+ if ($$.hasArcType()) { return; }
+ $$.hideXGridFocus();
+ $$.hideTooltip();
+ // Undo expanded shapes
+ $$.unexpandCircles();
+ $$.unexpandBars();
+ // Call event handler
+ $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {
+ config.data_onmouseout.call($$.api, d);
+ });
+ })
+ .on('mousemove', function (d) {
+ var selectedData, index = d.index,
+ eventRect = $$.svg.select('.' + CLASS.eventRect + '-' + index);
+
+ if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing
+ if ($$.hasArcType()) { return; }
+
+ if ($$.isStepType(d) && $$.config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {
+ index -= 1;
+ }
+
+ // Show tooltip
+ selectedData = $$.filterTargetsToShow($$.data.targets).map(function (t) {
+ return $$.addName($$.getValueOnIndex(t.values, index));
+ });
+
+ if (config.tooltip_grouped) {
+ $$.showTooltip(selectedData, this);
+ $$.showXGridFocus(selectedData);
+ }
+
+ if (config.tooltip_grouped && (!config.data_selection_enabled || config.data_selection_grouped)) {
+ return;
+ }
+
+ $$.main.selectAll('.' + CLASS.shape + '-' + index)
+ .each(function () {
+ d3.select(this).classed(CLASS.EXPANDED, true);
+ if (config.data_selection_enabled) {
+ eventRect.style('cursor', config.data_selection_grouped ? 'pointer' : null);
+ }
+ if (!config.tooltip_grouped) {
+ $$.hideXGridFocus();
+ $$.hideTooltip();
+ if (!config.data_selection_grouped) {
+ $$.unexpandCircles(index);
+ $$.unexpandBars(index);
+ }
+ }
+ })
+ .filter(function (d) {
+ return $$.isWithinShape(this, d);
+ })
+ .each(function (d) {
+ if (config.data_selection_enabled && (config.data_selection_grouped || config.data_selection_isselectable(d))) {
+ eventRect.style('cursor', 'pointer');
+ }
+ if (!config.tooltip_grouped) {
+ $$.showTooltip([d], this);
+ $$.showXGridFocus([d]);
+ if (config.point_focus_expand_enabled) { $$.expandCircles(index, d.id, true); }
+ $$.expandBars(index, d.id, true);
+ }
+ });
+ })
+ .on('click', function (d) {
+ var index = d.index;
+ if ($$.hasArcType() || !$$.toggleShape) { return; }
+ if ($$.cancelClick) {
+ $$.cancelClick = false;
+ return;
+ }
+ if ($$.isStepType(d) && config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {
+ index -= 1;
+ }
+ $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {
+ if (config.data_selection_grouped || $$.isWithinShape(this, d)) {
+ $$.toggleShape(this, d, index);
+ $$.config.data_onclick.call($$.api, d, this);
+ }
+ });
+ })
+ .call(
+ config.data_selection_draggable && $$.drag ? (
+ d3.behavior.drag().origin(Object)
+ .on('drag', function () { $$.drag(d3.mouse(this)); })
+ .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })
+ .on('dragend', function () { $$.dragend(); })
+ ) : function () {}
+ );
+ };
+
+ c3_chart_internal_fn.generateEventRectsForMultipleXs = function (eventRectEnter) {
+ var $$ = this, d3 = $$.d3, config = $$.config;
+
+ function mouseout() {
+ $$.svg.select('.' + CLASS.eventRect).style('cursor', null);
+ $$.hideXGridFocus();
+ $$.hideTooltip();
+ $$.unexpandCircles();
+ $$.unexpandBars();
+ }
+
+ eventRectEnter.append('rect')
+ .attr('x', 0)
+ .attr('y', 0)
+ .attr('width', $$.width)
+ .attr('height', $$.height)
+ .attr('class', CLASS.eventRect)
+ .on('mouseout', function () {
+ if (!$$.config) { return; } // chart is destroyed
+ if ($$.hasArcType()) { return; }
+ mouseout();
+ })
+ .on('mousemove', function () {
+ var targetsToShow = $$.filterTargetsToShow($$.data.targets);
+ var mouse, closest, sameXData, selectedData;
+
+ if ($$.dragging) { return; } // do nothing when dragging
+ if ($$.hasArcType(targetsToShow)) { return; }
+
+ mouse = d3.mouse(this);
+ closest = $$.findClosestFromTargets(targetsToShow, mouse);
+
+ if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {
+ config.data_onmouseout.call($$.api, $$.mouseover);
+ $$.mouseover = undefined;
+ }
+
+ if (! closest) {
+ mouseout();
+ return;
+ }
+
+ if ($$.isScatterType(closest) || !config.tooltip_grouped) {
+ sameXData = [closest];
+ } else {
+ sameXData = $$.filterByX(targetsToShow, closest.x);
+ }
+
+ // show tooltip when cursor is close to some point
+ selectedData = sameXData.map(function (d) {
+ return $$.addName(d);
+ });
+ $$.showTooltip(selectedData, this);
+
+ // expand points
+ if (config.point_focus_expand_enabled) {
+ $$.expandCircles(closest.index, closest.id, true);
+ }
+ $$.expandBars(closest.index, closest.id, true);
+
+ // Show xgrid focus line
+ $$.showXGridFocus(selectedData);
+
+ // Show cursor as pointer if point is close to mouse position
+ if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < 100) {
+ $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');
+ if (!$$.mouseover) {
+ config.data_onmouseover.call($$.api, closest);
+ $$.mouseover = closest;
+ }
+ }
+ })
+ .on('click', function () {
+ var targetsToShow = $$.filterTargetsToShow($$.data.targets);
+ var mouse, closest;
+
+ if ($$.hasArcType(targetsToShow)) { return; }
+
+ mouse = d3.mouse(this);
+ closest = $$.findClosestFromTargets(targetsToShow, mouse);
+
+ if (! closest) { return; }
+
+ // select if selection enabled
+ if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < 100) {
+ $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () {
+ if (config.data_selection_grouped || $$.isWithinShape(this, closest)) {
+ $$.toggleShape(this, closest, closest.index);
+ $$.config.data_onclick.call($$.api, closest, this);
+ }
+ });
+ }
+ })
+ .call(
+ config.data_selection_draggable && $$.drag ? (
+ d3.behavior.drag().origin(Object)
+ .on('drag', function () { $$.drag(d3.mouse(this)); })
+ .on('dragstart', function () { $$.dragstart(d3.mouse(this)); })
+ .on('dragend', function () { $$.dragend(); })
+ ) : function () {}
+ );
+ };
+ c3_chart_internal_fn.dispatchEvent = function (type, index, mouse) {
+ var $$ = this,
+ selector = '.' + CLASS.eventRect + (!$$.isMultipleX() ? '-' + index : ''),
+ eventRect = $$.main.select(selector).node(),
+ box = eventRect.getBoundingClientRect(),
+ x = box.left + (mouse ? mouse[0] : 0),
+ y = box.top + (mouse ? mouse[1] : 0),
+ event = document.createEvent("MouseEvents");
+
+ event.initMouseEvent(type, true, true, window, 0, x, y, x, y,
+ false, false, false, false, 0, null);
+ eventRect.dispatchEvent(event);
+ };
+
+ c3_chart_internal_fn.getCurrentWidth = function () {
+ var $$ = this, config = $$.config;
+ return config.size_width ? config.size_width : $$.getParentWidth();
+ };
+ c3_chart_internal_fn.getCurrentHeight = function () {
+ var $$ = this, config = $$.config,
+ h = config.size_height ? config.size_height : $$.getParentHeight();
+ return h > 0 ? h : 320 / ($$.hasType('gauge') ? 2 : 1);
+ };
+ c3_chart_internal_fn.getCurrentPaddingTop = function () {
+ var config = this.config;
+ return isValue(config.padding_top) ? config.padding_top : 0;
+ };
+ c3_chart_internal_fn.getCurrentPaddingBottom = function () {
+ var config = this.config;
+ return isValue(config.padding_bottom) ? config.padding_bottom : 0;
+ };
+ c3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) {
+ var $$ = this, config = $$.config;
+ if (isValue(config.padding_left)) {
+ return config.padding_left;
+ } else if (config.axis_rotated) {
+ return !config.axis_x_show ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);
+ } else if (!config.axis_y_show || config.axis_y_inner) { // && !config.axis_rotated
+ return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;
+ } else {
+ return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));
+ }
+ };
+ c3_chart_internal_fn.getCurrentPaddingRight = function () {
+ var $$ = this, config = $$.config,
+ defaultPadding = 10, legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;
+ if (isValue(config.padding_right)) {
+ return config.padding_right + 1; // 1 is needed not to hide tick line
+ } else if (config.axis_rotated) {
+ return defaultPadding + legendWidthOnRight;
+ } else if (!config.axis_y2_show || config.axis_y2_inner) { // && !config.axis_rotated
+ return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);
+ } else {
+ return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;
+ }
+ };
+
+ c3_chart_internal_fn.getParentRectValue = function (key) {
+ var parent = this.selectChart.node(), v;
+ while (parent && parent.tagName !== 'BODY') {
+ try {
+ v = parent.getBoundingClientRect()[key];
+ } catch(e) {
+ if (key === 'width') {
+ // In IE in certain cases getBoundingClientRect
+ // will cause an "unspecified error"
+ v = parent.offsetWidth;
+ }
+ }
+ if (v) {
+ break;
+ }
+ parent = parent.parentNode;
+ }
+ return v;
+ };
+ c3_chart_internal_fn.getParentWidth = function () {
+ return this.getParentRectValue('width');
+ };
+ c3_chart_internal_fn.getParentHeight = function () {
+ var h = this.selectChart.style('height');
+ return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;
+ };
+
+
+ c3_chart_internal_fn.getSvgLeft = function (withoutRecompute) {
+ var $$ = this, config = $$.config,
+ hasLeftAxisRect = config.axis_rotated || (!config.axis_rotated && !config.axis_y_inner),
+ leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,
+ leftAxis = $$.main.select('.' + leftAxisClass).node(),
+ svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {right: 0},
+ chartRect = $$.selectChart.node().getBoundingClientRect(),
+ hasArc = $$.hasArcType(),
+ svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));
+ return svgLeft > 0 ? svgLeft : 0;
+ };
+
+
+ c3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) {
+ var $$ = this, position = $$.axis.getLabelPositionById(id);
+ return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);
+ };
+ c3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) {
+ var $$ = this, config = $$.config, h = 30;
+ if (axisId === 'x' && !config.axis_x_show) { return 8; }
+ if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; }
+ if (axisId === 'y' && !config.axis_y_show) { return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; }
+ if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; }
+ // Calculate x axis height when tick rotated
+ if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {
+ h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180);
+ }
+ return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);
+ };
+
+ c3_chart_internal_fn.getEventRectWidth = function () {
+ return Math.max(0, this.xAxis.tickInterval());
+ };
+
+ c3_chart_internal_fn.getShapeIndices = function (typeFilter) {
+ var $$ = this, config = $$.config,
+ indices = {}, i = 0, j, k;
+ $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {
+ for (j = 0; j < config.data_groups.length; j++) {
+ if (config.data_groups[j].indexOf(d.id) < 0) { continue; }
+ for (k = 0; k < config.data_groups[j].length; k++) {
+ if (config.data_groups[j][k] in indices) {
+ indices[d.id] = indices[config.data_groups[j][k]];
+ break;
+ }
+ }
+ }
+ if (isUndefined(indices[d.id])) { indices[d.id] = i++; }
+ });
+ indices.__max__ = i - 1;
+ return indices;
+ };
+ c3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) {
+ var $$ = this, scale = isSub ? $$.subX : $$.x;
+ return function (d) {
+ var index = d.id in indices ? indices[d.id] : 0;
+ return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;
+ };
+ };
+ c3_chart_internal_fn.getShapeY = function (isSub) {
+ var $$ = this;
+ return function (d) {
+ var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);
+ return scale(d.value);
+ };
+ };
+ c3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) {
+ var $$ = this,
+ targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),
+ targetIds = targets.map(function (t) { return t.id; });
+ return function (d, i) {
+ var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),
+ y0 = scale(0), offset = y0;
+ targets.forEach(function (t) {
+ var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;
+ if (t.id === d.id || indices[t.id] !== indices[d.id]) { return; }
+ if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {
+ if (values[i].value * d.value >= 0) {
+ offset += scale(values[i].value) - y0;
+ }
+ }
+ });
+ return offset;
+ };
+ };
+ c3_chart_internal_fn.isWithinShape = function (that, d) {
+ var $$ = this,
+ shape = $$.d3.select(that), isWithin;
+ if (!$$.isTargetToShow(d.id)) {
+ isWithin = false;
+ }
+ else if (that.nodeName === 'circle') {
+ isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);
+ }
+ else if (that.nodeName === 'path') {
+ isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true;
+ }
+ return isWithin;
+ };
+
+
+ c3_chart_internal_fn.getInterpolate = function (d) {
+ var $$ = this;
+ return $$.isSplineType(d) ? "cardinal" : $$.isStepType(d) ? $$.config.line_step_type : "linear";
+ };
+
+ c3_chart_internal_fn.initLine = function () {
+ var $$ = this;
+ $$.main.select('.' + CLASS.chart).append("g")
+ .attr("class", CLASS.chartLines);
+ };
+ c3_chart_internal_fn.updateTargetsForLine = function (targets) {
+ var $$ = this, config = $$.config,
+ mainLineUpdate, mainLineEnter,
+ classChartLine = $$.classChartLine.bind($$),
+ classLines = $$.classLines.bind($$),
+ classAreas = $$.classAreas.bind($$),
+ classCircles = $$.classCircles.bind($$),
+ classFocus = $$.classFocus.bind($$);
+ mainLineUpdate = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)
+ .data(targets)
+ .attr('class', function (d) { return classChartLine(d) + classFocus(d); });
+ mainLineEnter = mainLineUpdate.enter().append('g')
+ .attr('class', classChartLine)
+ .style('opacity', 0)
+ .style("pointer-events", "none");
+ // Lines for each data
+ mainLineEnter.append('g')
+ .attr("class", classLines);
+ // Areas
+ mainLineEnter.append('g')
+ .attr('class', classAreas);
+ // Circles for each data point on lines
+ mainLineEnter.append('g')
+ .attr("class", function (d) { return $$.generateClass(CLASS.selectedCircles, d.id); });
+ mainLineEnter.append('g')
+ .attr("class", classCircles)
+ .style("cursor", function (d) { return config.data_selection_isselectable(d) ? "pointer" : null; });
+ // Update date for selected circles
+ targets.forEach(function (t) {
+ $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {
+ d.value = t.values[d.index].value;
+ });
+ });
+ // MEMO: can not keep same color...
+ //mainLineUpdate.exit().remove();
+ };
+ c3_chart_internal_fn.updateLine = function (durationForExit) {
+ var $$ = this;
+ $$.mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)
+ .data($$.lineData.bind($$));
+ $$.mainLine.enter().append('path')
+ .attr('class', $$.classLine.bind($$))
+ .style("stroke", $$.color);
+ $$.mainLine
+ .style("opacity", $$.initialOpacity.bind($$))
+ .style('shape-rendering', function (d) { return $$.isStepType(d) ? 'crispEdges' : ''; })
+ .attr('transform', null);
+ $$.mainLine.exit().transition().duration(durationForExit)
+ .style('opacity', 0)
+ .remove();
+ };
+ c3_chart_internal_fn.redrawLine = function (drawLine, withTransition) {
+ return [
+ (withTransition ? this.mainLine.transition() : this.mainLine)
+ .attr("d", drawLine)
+ .style("stroke", this.color)
+ .style("opacity", 1)
+ ];
+ };
+ c3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) {
+ var $$ = this, config = $$.config,
+ line = $$.d3.svg.line(),
+ getPoints = $$.generateGetLinePoints(lineIndices, isSub),
+ yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,
+ xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },
+ yValue = function (d, i) {
+ return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);
+ };
+
+ line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);
+ if (!config.line_connectNull) { line = line.defined(function (d) { return d.value != null; }); }
+ return function (d) {
+ var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,
+ x = isSub ? $$.x : $$.subX, y = yScaleGetter.call($$, d.id), x0 = 0, y0 = 0, path;
+ if ($$.isLineType(d)) {
+ if (config.data_regions[d.id]) {
+ path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);
+ } else {
+ if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }
+ path = line.interpolate($$.getInterpolate(d))(values);
+ }
+ } else {
+ if (values[0]) {
+ x0 = x(values[0].x);
+ y0 = y(values[0].value);
+ }
+ path = config.axis_rotated ? "M " + y0 + " " + x0 : "M " + x0 + " " + y0;
+ }
+ return path ? path : "M 0 0";
+ };
+ };
+ c3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) { // partial duplication of generateGetBarPoints
+ var $$ = this, config = $$.config,
+ lineTargetsNum = lineIndices.__max__ + 1,
+ x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),
+ y = $$.getShapeY(!!isSub),
+ lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),
+ yScale = isSub ? $$.getSubYScale : $$.getYScale;
+ return function (d, i) {
+ var y0 = yScale.call($$, d.id)(0),
+ offset = lineOffset(d, i) || y0, // offset is for stacked area chart
+ posX = x(d), posY = y(d);
+ // fix posY not to overflow opposite quadrant
+ if (config.axis_rotated) {
+ if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }
+ }
+ // 1 point that marks the line position
+ return [
+ [posX, posY - (y0 - offset)],
+ [posX, posY - (y0 - offset)], // needed for compatibility
+ [posX, posY - (y0 - offset)], // needed for compatibility
+ [posX, posY - (y0 - offset)] // needed for compatibility
+ ];
+ };
+ };
+
+
+ c3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) {
+ var $$ = this, config = $$.config,
+ prev = -1, i, j,
+ s = "M", sWithRegion,
+ xp, yp, dx, dy, dd, diff, diffx2,
+ xOffset = $$.isCategorized() ? 0.5 : 0,
+ xValue, yValue,
+ regions = [];
+
+ function isWithinRegions(x, regions) {
+ var i;
+ for (i = 0; i < regions.length; i++) {
+ if (regions[i].start < x && x <= regions[i].end) { return true; }
+ }
+ return false;
+ }
+
+ // Check start/end of regions
+ if (isDefined(_regions)) {
+ for (i = 0; i < _regions.length; i++) {
+ regions[i] = {};
+ if (isUndefined(_regions[i].start)) {
+ regions[i].start = d[0].x;
+ } else {
+ regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;
+ }
+ if (isUndefined(_regions[i].end)) {
+ regions[i].end = d[d.length - 1].x;
+ } else {
+ regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;
+ }
+ }
+ }
+
+ // Set scales
+ xValue = config.axis_rotated ? function (d) { return y(d.value); } : function (d) { return x(d.x); };
+ yValue = config.axis_rotated ? function (d) { return x(d.x); } : function (d) { return y(d.value); };
+
+ // Define svg generator function for region
+ function generateM(points) {
+ return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];
+ }
+ if ($$.isTimeSeries()) {
+ sWithRegion = function (d0, d1, j, diff) {
+ var x0 = d0.x.getTime(), x_diff = d1.x - d0.x,
+ xv0 = new Date(x0 + x_diff * j),
+ xv1 = new Date(x0 + x_diff * (j + diff)),
+ points;
+ if (config.axis_rotated) {
+ points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];
+ } else {
+ points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];
+ }
+ return generateM(points);
+ };
+ } else {
+ sWithRegion = function (d0, d1, j, diff) {
+ var points;
+ if (config.axis_rotated) {
+ points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];
+ } else {
+ points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];
+ }
+ return generateM(points);
+ };
+ }
+
+ // Generate
+ for (i = 0; i < d.length; i++) {
+
+ // Draw as normal
+ if (isUndefined(regions) || ! isWithinRegions(d[i].x, regions)) {
+ s += " " + xValue(d[i]) + " " + yValue(d[i]);
+ }
+ // Draw with region // TODO: Fix for horizotal charts
+ else {
+ xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());
+ yp = $$.getScale(d[i - 1].value, d[i].value);
+
+ dx = x(d[i].x) - x(d[i - 1].x);
+ dy = y(d[i].value) - y(d[i - 1].value);
+ dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
+ diff = 2 / dd;
+ diffx2 = diff * 2;
+
+ for (j = diff; j <= 1; j += diffx2) {
+ s += sWithRegion(d[i - 1], d[i], j, diff);
+ }
+ }
+ prev = d[i].x;
+ }
+
+ return s;
+ };
+
+
+ c3_chart_internal_fn.updateArea = function (durationForExit) {
+ var $$ = this, d3 = $$.d3;
+ $$.mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)
+ .data($$.lineData.bind($$));
+ $$.mainArea.enter().append('path')
+ .attr("class", $$.classArea.bind($$))
+ .style("fill", $$.color)
+ .style("opacity", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });
+ $$.mainArea
+ .style("opacity", $$.orgAreaOpacity);
+ $$.mainArea.exit().transition().duration(durationForExit)
+ .style('opacity', 0)
+ .remove();
+ };
+ c3_chart_internal_fn.redrawArea = function (drawArea, withTransition) {
+ return [
+ (withTransition ? this.mainArea.transition() : this.mainArea)
+ .attr("d", drawArea)
+ .style("fill", this.color)
+ .style("opacity", this.orgAreaOpacity)
+ ];
+ };
+ c3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) {
+ var $$ = this, config = $$.config, area = $$.d3.svg.area(),
+ getPoints = $$.generateGetAreaPoints(areaIndices, isSub),
+ yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,
+ xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); },
+ value0 = function (d, i) {
+ return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));
+ },
+ value1 = function (d, i) {
+ return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);
+ };
+
+ area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(value0).y1(value1);
+ if (!config.line_connectNull) {
+ area = area.defined(function (d) { return d.value !== null; });
+ }
+
+ return function (d) {
+ var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,
+ x0 = 0, y0 = 0, path;
+ if ($$.isAreaType(d)) {
+ if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); }
+ path = area.interpolate($$.getInterpolate(d))(values);
+ } else {
+ if (values[0]) {
+ x0 = $$.x(values[0].x);
+ y0 = $$.getYScale(d.id)(values[0].value);
+ }
+ path = config.axis_rotated ? "M " + y0 + " " + x0 : "M " + x0 + " " + y0;
+ }
+ return path ? path : "M 0 0";
+ };
+ };
+ c3_chart_internal_fn.getAreaBaseValue = function () {
+ return 0;
+ };
+ c3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) { // partial duplication of generateGetBarPoints
+ var $$ = this, config = $$.config,
+ areaTargetsNum = areaIndices.__max__ + 1,
+ x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),
+ y = $$.getShapeY(!!isSub),
+ areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),
+ yScale = isSub ? $$.getSubYScale : $$.getYScale;
+ return function (d, i) {
+ var y0 = yScale.call($$, d.id)(0),
+ offset = areaOffset(d, i) || y0, // offset is for stacked area chart
+ posX = x(d), posY = y(d);
+ // fix posY not to overflow opposite quadrant
+ if (config.axis_rotated) {
+ if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }
+ }
+ // 1 point that marks the area position
+ return [
+ [posX, offset],
+ [posX, posY - (y0 - offset)],
+ [posX, posY - (y0 - offset)], // needed for compatibility
+ [posX, offset] // needed for compatibility
+ ];
+ };
+ };
+
+
+ c3_chart_internal_fn.updateCircle = function () {
+ var $$ = this;
+ $$.mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle)
+ .data($$.lineOrScatterData.bind($$));
+ $$.mainCircle.enter().append("circle")
+ .attr("class", $$.classCircle.bind($$))
+ .attr("r", $$.pointR.bind($$))
+ .style("fill", $$.color);
+ $$.mainCircle
+ .style("opacity", $$.initialOpacityForCircle.bind($$));
+ $$.mainCircle.exit().remove();
+ };
+ c3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) {
+ var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle);
+ return [
+ (withTransition ? this.mainCircle.transition() : this.mainCircle)
+ .style('opacity', this.opacityForCircle.bind(this))
+ .style("fill", this.color)
+ .attr("cx", cx)
+ .attr("cy", cy),
+ (withTransition ? selectedCircles.transition() : selectedCircles)
+ .attr("cx", cx)
+ .attr("cy", cy)
+ ];
+ };
+ c3_chart_internal_fn.circleX = function (d) {
+ return d.x || d.x === 0 ? this.x(d.x) : null;
+ };
+ c3_chart_internal_fn.updateCircleY = function () {
+ var $$ = this, lineIndices, getPoints;
+ if ($$.config.data_groups.length > 0) {
+ lineIndices = $$.getShapeIndices($$.isLineType),
+ getPoints = $$.generateGetLinePoints(lineIndices);
+ $$.circleY = function (d, i) {
+ return getPoints(d, i)[0][1];
+ };
+ } else {
+ $$.circleY = function (d) {
+ return $$.getYScale(d.id)(d.value);
+ };
+ }
+ };
+ c3_chart_internal_fn.getCircles = function (i, id) {
+ var $$ = this;
+ return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));
+ };
+ c3_chart_internal_fn.expandCircles = function (i, id, reset) {
+ var $$ = this,
+ r = $$.pointExpandedR.bind($$);
+ if (reset) { $$.unexpandCircles(); }
+ $$.getCircles(i, id)
+ .classed(CLASS.EXPANDED, true)
+ .attr('r', r);
+ };
+ c3_chart_internal_fn.unexpandCircles = function (i) {
+ var $$ = this,
+ r = $$.pointR.bind($$);
+ $$.getCircles(i)
+ .filter(function () { return $$.d3.select(this).classed(CLASS.EXPANDED); })
+ .classed(CLASS.EXPANDED, false)
+ .attr('r', r);
+ };
+ c3_chart_internal_fn.pointR = function (d) {
+ var $$ = this, config = $$.config;
+ return $$.isStepType(d) ? 0 : (isFunction(config.point_r) ? config.point_r(d) : config.point_r);
+ };
+ c3_chart_internal_fn.pointExpandedR = function (d) {
+ var $$ = this, config = $$.config;
+ return config.point_focus_expand_enabled ? (config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75) : $$.pointR(d);
+ };
+ c3_chart_internal_fn.pointSelectR = function (d) {
+ var $$ = this, config = $$.config;
+ return config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;
+ };
+ c3_chart_internal_fn.isWithinCircle = function (that, r) {
+ var d3 = this.d3,
+ mouse = d3.mouse(that), d3_this = d3.select(that),
+ cx = +d3_this.attr("cx"), cy = +d3_this.attr("cy");
+ return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;
+ };
+ c3_chart_internal_fn.isWithinStep = function (that, y) {
+ return Math.abs(y - this.d3.mouse(that)[1]) < 30;
+ };
+
+ c3_chart_internal_fn.initBar = function () {
+ var $$ = this;
+ $$.main.select('.' + CLASS.chart).append("g")
+ .attr("class", CLASS.chartBars);
+ };
+ c3_chart_internal_fn.updateTargetsForBar = function (targets) {
+ var $$ = this, config = $$.config,
+ mainBarUpdate, mainBarEnter,
+ classChartBar = $$.classChartBar.bind($$),
+ classBars = $$.classBars.bind($$),
+ classFocus = $$.classFocus.bind($$);
+ mainBarUpdate = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)
+ .data(targets)
+ .attr('class', function (d) { return classChartBar(d) + classFocus(d); });
+ mainBarEnter = mainBarUpdate.enter().append('g')
+ .attr('class', classChartBar)
+ .style('opacity', 0)
+ .style("pointer-events", "none");
+ // Bars for each data
+ mainBarEnter.append('g')
+ .attr("class", classBars)
+ .style("cursor", function (d) { return config.data_selection_isselectable(d) ? "pointer" : null; });
+
+ };
+ c3_chart_internal_fn.updateBar = function (durationForExit) {
+ var $$ = this,
+ barData = $$.barData.bind($$),
+ classBar = $$.classBar.bind($$),
+ initialOpacity = $$.initialOpacity.bind($$),
+ color = function (d) { return $$.color(d.id); };
+ $$.mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)
+ .data(barData);
+ $$.mainBar.enter().append('path')
+ .attr("class", classBar)
+ .style("stroke", color)
+ .style("fill", color);
+ $$.mainBar
+ .style("opacity", initialOpacity);
+ $$.mainBar.exit().transition().duration(durationForExit)
+ .style('opacity', 0)
+ .remove();
+ };
+ c3_chart_internal_fn.redrawBar = function (drawBar, withTransition) {
+ return [
+ (withTransition ? this.mainBar.transition() : this.mainBar)
+ .attr('d', drawBar)
+ .style("fill", this.color)
+ .style("opacity", 1)
+ ];
+ };
+ c3_chart_internal_fn.getBarW = function (axis, barTargetsNum) {
+ var $$ = this, config = $$.config,
+ w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? (axis.tickInterval() * config.bar_width_ratio) / barTargetsNum : 0;
+ return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;
+ };
+ c3_chart_internal_fn.getBars = function (i, id) {
+ var $$ = this;
+ return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));
+ };
+ c3_chart_internal_fn.expandBars = function (i, id, reset) {
+ var $$ = this;
+ if (reset) { $$.unexpandBars(); }
+ $$.getBars(i, id).classed(CLASS.EXPANDED, true);
+ };
+ c3_chart_internal_fn.unexpandBars = function (i) {
+ var $$ = this;
+ $$.getBars(i).classed(CLASS.EXPANDED, false);
+ };
+ c3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) {
+ var $$ = this, config = $$.config,
+ getPoints = $$.generateGetBarPoints(barIndices, isSub);
+ return function (d, i) {
+ // 4 points that make a bar
+ var points = getPoints(d, i);
+
+ // switch points if axis is rotated, not applicable for sub chart
+ var indexX = config.axis_rotated ? 1 : 0;
+ var indexY = config.axis_rotated ? 0 : 1;
+
+ var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' +
+ 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' +
+ 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' +
+ 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' +
+ 'z';
+
+ return path;
+ };
+ };
+ c3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {
+ var $$ = this,
+ axis = isSub ? $$.subXAxis : $$.xAxis,
+ barTargetsNum = barIndices.__max__ + 1,
+ barW = $$.getBarW(axis, barTargetsNum),
+ barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),
+ barY = $$.getShapeY(!!isSub),
+ barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),
+ yScale = isSub ? $$.getSubYScale : $$.getYScale;
+ return function (d, i) {
+ var y0 = yScale.call($$, d.id)(0),
+ offset = barOffset(d, i) || y0, // offset is for stacked bar chart
+ posX = barX(d), posY = barY(d);
+ // fix posY not to overflow opposite quadrant
+ if ($$.config.axis_rotated) {
+ if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; }
+ }
+ // 4 points that make a bar
+ return [
+ [posX, offset],
+ [posX, posY - (y0 - offset)],
+ [posX + barW, posY - (y0 - offset)],
+ [posX + barW, offset]
+ ];
+ };
+ };
+ c3_chart_internal_fn.isWithinBar = function (that) {
+ var mouse = this.d3.mouse(that), box = that.getBoundingClientRect(),
+ seg0 = that.pathSegList.getItem(0), seg1 = that.pathSegList.getItem(1),
+ x = Math.min(seg0.x, seg1.x), y = Math.min(seg0.y, seg1.y),
+ w = box.width, h = box.height, offset = 2,
+ sx = x - offset, ex = x + w + offset, sy = y + h + offset, ey = y - offset;
+ return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;
+ };
+
+ c3_chart_internal_fn.initText = function () {
+ var $$ = this;
+ $$.main.select('.' + CLASS.chart).append("g")
+ .attr("class", CLASS.chartTexts);
+ $$.mainText = $$.d3.selectAll([]);
+ };
+ c3_chart_internal_fn.updateTargetsForText = function (targets) {
+ var $$ = this, mainTextUpdate, mainTextEnter,
+ classChartText = $$.classChartText.bind($$),
+ classTexts = $$.classTexts.bind($$),
+ classFocus = $$.classFocus.bind($$);
+ mainTextUpdate = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText)
+ .data(targets)
+ .attr('class', function (d) { return classChartText(d) + classFocus(d); });
+ mainTextEnter = mainTextUpdate.enter().append('g')
+ .attr('class', classChartText)
+ .style('opacity', 0)
+ .style("pointer-events", "none");
+ mainTextEnter.append('g')
+ .attr('class', classTexts);
+ };
+ c3_chart_internal_fn.updateText = function (durationForExit) {
+ var $$ = this, config = $$.config,
+ barOrLineData = $$.barOrLineData.bind($$),
+ classText = $$.classText.bind($$);
+ $$.mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text)
+ .data(barOrLineData);
+ $$.mainText.enter().append('text')
+ .attr("class", classText)
+ .attr('text-anchor', function (d) { return config.axis_rotated ? (d.value < 0 ? 'end' : 'start') : 'middle'; })
+ .style("stroke", 'none')
+ .style("fill", function (d) { return $$.color(d); })
+ .style("fill-opacity", 0);
+ $$.mainText
+ .text(function (d, i, j) { return $$.dataLabelFormat(d.id)(d.value, d.id, i, j); });
+ $$.mainText.exit()
+ .transition().duration(durationForExit)
+ .style('fill-opacity', 0)
+ .remove();
+ };
+ c3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition) {
+ return [
+ (withTransition ? this.mainText.transition() : this.mainText)
+ .attr('x', xForText)
+ .attr('y', yForText)
+ .style("fill", this.color)
+ .style("fill-opacity", forFlow ? 0 : this.opacityForText.bind(this))
+ ];
+ };
+ c3_chart_internal_fn.getTextRect = function (text, cls) {
+ var dummy = this.d3.select('body').append('div').classed('c3', true),
+ svg = dummy.append("svg").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),
+ rect;
+ svg.selectAll('.dummy')
+ .data([text])
+ .enter().append('text')
+ .classed(cls ? cls : "", true)
+ .text(text)
+ .each(function () { rect = this.getBoundingClientRect(); });
+ dummy.remove();
+ return rect;
+ };
+ c3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {
+ var $$ = this,
+ getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),
+ getBarPoints = $$.generateGetBarPoints(barIndices, false),
+ getLinePoints = $$.generateGetLinePoints(lineIndices, false),
+ getter = forX ? $$.getXForText : $$.getYForText;
+ return function (d, i) {
+ var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;
+ return getter.call($$, getPoints(d, i), d, this);
+ };
+ };
+ c3_chart_internal_fn.getXForText = function (points, d, textElement) {
+ var $$ = this,
+ box = textElement.getBoundingClientRect(), xPos, padding;
+ if ($$.config.axis_rotated) {
+ padding = $$.isBarType(d) ? 4 : 6;
+ xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);
+ } else {
+ xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];
+ }
+ // show labels regardless of the domain if value is null
+ if (d.value === null) {
+ if (xPos > $$.width) {
+ xPos = $$.width - box.width;
+ } else if (xPos < 0) {
+ xPos = 4;
+ }
+ }
+ return xPos;
+ };
+ c3_chart_internal_fn.getYForText = function (points, d, textElement) {
+ var $$ = this,
+ box = textElement.getBoundingClientRect(),
+ yPos;
+ if ($$.config.axis_rotated) {
+ yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;
+ } else {
+ yPos = points[2][1];
+ if (d.value < 0) {
+ yPos += box.height;
+ if ($$.isBarType(d) && $$.isSafari()) {
+ yPos -= 3;
+ }
+ else if (!$$.isBarType(d) && $$.isChrome()) {
+ yPos += 3;
+ }
+ } else {
+ yPos += $$.isBarType(d) ? -3 : -6;
+ }
+ }
+ // show labels regardless of the domain if value is null
+ if (d.value === null && !$$.config.axis_rotated) {
+ if (yPos < box.height) {
+ yPos = box.height;
+ } else if (yPos > this.height) {
+ yPos = this.height - 4;
+ }
+ }
+ return yPos;
+ };
+
+ c3_chart_internal_fn.setTargetType = function (targetIds, type) {
+ var $$ = this, config = $$.config;
+ $$.mapToTargetIds(targetIds).forEach(function (id) {
+ $$.withoutFadeIn[id] = (type === config.data_types[id]);
+ config.data_types[id] = type;
+ });
+ if (!targetIds) {
+ config.data_type = type;
+ }
+ };
+ c3_chart_internal_fn.hasType = function (type, targets) {
+ var $$ = this, types = $$.config.data_types, has = false;
+ targets = targets || $$.data.targets;
+ if (targets && targets.length) {
+ targets.forEach(function (target) {
+ var t = types[target.id];
+ if ((t && t.indexOf(type) >= 0) || (!t && type === 'line')) {
+ has = true;
+ }
+ });
+ } else if (Object.keys(types).length) {
+ Object.keys(types).forEach(function (id) {
+ if (types[id] === type) { has = true; }
+ });
+ } else {
+ has = $$.config.data_type === type;
+ }
+ return has;
+ };
+ c3_chart_internal_fn.hasArcType = function (targets) {
+ return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);
+ };
+ c3_chart_internal_fn.isLineType = function (d) {
+ var config = this.config, id = isString(d) ? d : d.id;
+ return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;
+ };
+ c3_chart_internal_fn.isStepType = function (d) {
+ var id = isString(d) ? d : d.id;
+ return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;
+ };
+ c3_chart_internal_fn.isSplineType = function (d) {
+ var id = isString(d) ? d : d.id;
+ return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;
+ };
+ c3_chart_internal_fn.isAreaType = function (d) {
+ var id = isString(d) ? d : d.id;
+ return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;
+ };
+ c3_chart_internal_fn.isBarType = function (d) {
+ var id = isString(d) ? d : d.id;
+ return this.config.data_types[id] === 'bar';
+ };
+ c3_chart_internal_fn.isScatterType = function (d) {
+ var id = isString(d) ? d : d.id;
+ return this.config.data_types[id] === 'scatter';
+ };
+ c3_chart_internal_fn.isPieType = function (d) {
+ var id = isString(d) ? d : d.id;
+ return this.config.data_types[id] === 'pie';
+ };
+ c3_chart_internal_fn.isGaugeType = function (d) {
+ var id = isString(d) ? d : d.id;
+ return this.config.data_types[id] === 'gauge';
+ };
+ c3_chart_internal_fn.isDonutType = function (d) {
+ var id = isString(d) ? d : d.id;
+ return this.config.data_types[id] === 'donut';
+ };
+ c3_chart_internal_fn.isArcType = function (d) {
+ return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);
+ };
+ c3_chart_internal_fn.lineData = function (d) {
+ return this.isLineType(d) ? [d] : [];
+ };
+ c3_chart_internal_fn.arcData = function (d) {
+ return this.isArcType(d.data) ? [d] : [];
+ };
+ /* not used
+ function scatterData(d) {
+ return isScatterType(d) ? d.values : [];
+ }
+ */
+ c3_chart_internal_fn.barData = function (d) {
+ return this.isBarType(d) ? d.values : [];
+ };
+ c3_chart_internal_fn.lineOrScatterData = function (d) {
+ return this.isLineType(d) || this.isScatterType(d) ? d.values : [];
+ };
+ c3_chart_internal_fn.barOrLineData = function (d) {
+ return this.isBarType(d) || this.isLineType(d) ? d.values : [];
+ };
+
+ c3_chart_internal_fn.initGrid = function () {
+ var $$ = this, config = $$.config, d3 = $$.d3;
+ $$.grid = $$.main.append('g')
+ .attr("clip-path", $$.clipPathForGrid)
+ .attr('class', CLASS.grid);
+ if (config.grid_x_show) {
+ $$.grid.append("g").attr("class", CLASS.xgrids);
+ }
+ if (config.grid_y_show) {
+ $$.grid.append('g').attr('class', CLASS.ygrids);
+ }
+ if (config.grid_focus_show) {
+ $$.grid.append('g')
+ .attr("class", CLASS.xgridFocus)
+ .append('line')
+ .attr('class', CLASS.xgridFocus);
+ }
+ $$.xgrid = d3.selectAll([]);
+ if (!config.grid_lines_front) { $$.initGridLines(); }
+ };
+ c3_chart_internal_fn.initGridLines = function () {
+ var $$ = this, d3 = $$.d3;
+ $$.gridLines = $$.main.append('g')
+ .attr("clip-path", $$.clipPathForGrid)
+ .attr('class', CLASS.grid + ' ' + CLASS.gridLines);
+ $$.gridLines.append('g').attr("class", CLASS.xgridLines);
+ $$.gridLines.append('g').attr('class', CLASS.ygridLines);
+ $$.xgridLines = d3.selectAll([]);
+ };
+ c3_chart_internal_fn.updateXGrid = function (withoutUpdate) {
+ var $$ = this, config = $$.config, d3 = $$.d3,
+ xgridData = $$.generateGridData(config.grid_x_type, $$.x),
+ tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;
+
+ $$.xgridAttr = config.axis_rotated ? {
+ 'x1': 0,
+ 'x2': $$.width,
+ 'y1': function (d) { return $$.x(d) - tickOffset; },
+ 'y2': function (d) { return $$.x(d) - tickOffset; }
+ } : {
+ 'x1': function (d) { return $$.x(d) + tickOffset; },
+ 'x2': function (d) { return $$.x(d) + tickOffset; },
+ 'y1': 0,
+ 'y2': $$.height
+ };
+
+ $$.xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid)
+ .data(xgridData);
+ $$.xgrid.enter().append('line').attr("class", CLASS.xgrid);
+ if (!withoutUpdate) {
+ $$.xgrid.attr($$.xgridAttr)
+ .style("opacity", function () { return +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1') === (config.axis_rotated ? $$.height : 0) ? 0 : 1; });
+ }
+ $$.xgrid.exit().remove();
+ };
+
+ c3_chart_internal_fn.updateYGrid = function () {
+ var $$ = this, config = $$.config,
+ gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);
+ $$.ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid)
+ .data(gridValues);
+ $$.ygrid.enter().append('line')
+ .attr('class', CLASS.ygrid);
+ $$.ygrid.attr("x1", config.axis_rotated ? $$.y : 0)
+ .attr("x2", config.axis_rotated ? $$.y : $$.width)
+ .attr("y1", config.axis_rotated ? 0 : $$.y)
+ .attr("y2", config.axis_rotated ? $$.height : $$.y);
+ $$.ygrid.exit().remove();
+ $$.smoothLines($$.ygrid, 'grid');
+ };
+
+ c3_chart_internal_fn.gridTextAnchor = function (d) {
+ return d.position ? d.position : "end";
+ };
+ c3_chart_internal_fn.gridTextDx = function (d) {
+ return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;
+ };
+ c3_chart_internal_fn.xGridTextX = function (d) {
+ return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;
+ };
+ c3_chart_internal_fn.yGridTextX = function (d) {
+ return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;
+ };
+ c3_chart_internal_fn.updateGrid = function (duration) {
+ var $$ = this, main = $$.main, config = $$.config,
+ xgridLine, ygridLine, yv;
+
+ // hide if arc type
+ $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');
+
+ main.select('line.' + CLASS.xgridFocus).style("visibility", "hidden");
+ if (config.grid_x_show) {
+ $$.updateXGrid();
+ }
+ $$.xgridLines = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine)
+ .data(config.grid_x_lines);
+ // enter
+ xgridLine = $$.xgridLines.enter().append('g')
+ .attr("class", function (d) { return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : ''); });
+ xgridLine.append('line')
+ .style("opacity", 0);
+ xgridLine.append('text')
+ .attr("text-anchor", $$.gridTextAnchor)
+ .attr("transform", config.axis_rotated ? "" : "rotate(-90)")
+ .attr('dx', $$.gridTextDx)
+ .attr('dy', -5)
+ .style("opacity", 0);
+ // udpate
+ // done in d3.transition() of the end of this function
+ // exit
+ $$.xgridLines.exit().transition().duration(duration)
+ .style("opacity", 0)
+ .remove();
+
+ // Y-Grid
+ if (config.grid_y_show) {
+ $$.updateYGrid();
+ }
+ $$.ygridLines = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine)
+ .data(config.grid_y_lines);
+ // enter
+ ygridLine = $$.ygridLines.enter().append('g')
+ .attr("class", function (d) { return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : ''); });
+ ygridLine.append('line')
+ .style("opacity", 0);
+ ygridLine.append('text')
+ .attr("text-anchor", $$.gridTextAnchor)
+ .attr("transform", config.axis_rotated ? "rotate(-90)" : "")
+ .attr('dx', $$.gridTextDx)
+ .attr('dy', -5)
+ .style("opacity", 0);
+ // update
+ yv = $$.yv.bind($$);
+ $$.ygridLines.select('line')
+ .transition().duration(duration)
+ .attr("x1", config.axis_rotated ? yv : 0)
+ .attr("x2", config.axis_rotated ? yv : $$.width)
+ .attr("y1", config.axis_rotated ? 0 : yv)
+ .attr("y2", config.axis_rotated ? $$.height : yv)
+ .style("opacity", 1);
+ $$.ygridLines.select('text')
+ .transition().duration(duration)
+ .attr("x", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$))
+ .attr("y", yv)
+ .text(function (d) { return d.text; })
+ .style("opacity", 1);
+ // exit
+ $$.ygridLines.exit().transition().duration(duration)
+ .style("opacity", 0)
+ .remove();
+ };
+ c3_chart_internal_fn.redrawGrid = function (withTransition) {
+ var $$ = this, config = $$.config, xv = $$.xv.bind($$),
+ lines = $$.xgridLines.select('line'),
+ texts = $$.xgridLines.select('text');
+ return [
+ (withTransition ? lines.transition() : lines)
+ .attr("x1", config.axis_rotated ? 0 : xv)
+ .attr("x2", config.axis_rotated ? $$.width : xv)
+ .attr("y1", config.axis_rotated ? xv : 0)
+ .attr("y2", config.axis_rotated ? xv : $$.height)
+ .style("opacity", 1),
+ (withTransition ? texts.transition() : texts)
+ .attr("x", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$))
+ .attr("y", xv)
+ .text(function (d) { return d.text; })
+ .style("opacity", 1)
+ ];
+ };
+ c3_chart_internal_fn.showXGridFocus = function (selectedData) {
+ var $$ = this, config = $$.config,
+ dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),
+ focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),
+ xx = $$.xx.bind($$);
+ if (! config.tooltip_show) { return; }
+ // Hide when scatter plot exists
+ if ($$.hasType('scatter') || $$.hasArcType()) { return; }
+ focusEl
+ .style("visibility", "visible")
+ .data([dataToShow[0]])
+ .attr(config.axis_rotated ? 'y1' : 'x1', xx)
+ .attr(config.axis_rotated ? 'y2' : 'x2', xx);
+ $$.smoothLines(focusEl, 'grid');
+ };
+ c3_chart_internal_fn.hideXGridFocus = function () {
+ this.main.select('line.' + CLASS.xgridFocus).style("visibility", "hidden");
+ };
+ c3_chart_internal_fn.updateXgridFocus = function () {
+ var $$ = this, config = $$.config;
+ $$.main.select('line.' + CLASS.xgridFocus)
+ .attr("x1", config.axis_rotated ? 0 : -10)
+ .attr("x2", config.axis_rotated ? $$.width : -10)
+ .attr("y1", config.axis_rotated ? -10 : 0)
+ .attr("y2", config.axis_rotated ? -10 : $$.height);
+ };
+ c3_chart_internal_fn.generateGridData = function (type, scale) {
+ var $$ = this,
+ gridData = [], xDomain, firstYear, lastYear, i,
+ tickNum = $$.main.select("." + CLASS.axisX).selectAll('.tick').size();
+ if (type === 'year') {
+ xDomain = $$.getXDomain();
+ firstYear = xDomain[0].getFullYear();
+ lastYear = xDomain[1].getFullYear();
+ for (i = firstYear; i <= lastYear; i++) {
+ gridData.push(new Date(i + '-01-01 00:00:00'));
+ }
+ } else {
+ gridData = scale.ticks(10);
+ if (gridData.length > tickNum) { // use only int
+ gridData = gridData.filter(function (d) { return ("" + d).indexOf('.') < 0; });
+ }
+ }
+ return gridData;
+ };
+ c3_chart_internal_fn.getGridFilterToRemove = function (params) {
+ return params ? function (line) {
+ var found = false;
+ [].concat(params).forEach(function (param) {
+ if ((('value' in param && line.value === param.value) || ('class' in param && line['class'] === param['class']))) {
+ found = true;
+ }
+ });
+ return found;
+ } : function () { return true; };
+ };
+ c3_chart_internal_fn.removeGridLines = function (params, forX) {
+ var $$ = this, config = $$.config,
+ toRemove = $$.getGridFilterToRemove(params),
+ toShow = function (line) { return !toRemove(line); },
+ classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,
+ classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;
+ $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove)
+ .transition().duration(config.transition_duration)
+ .style('opacity', 0).remove();
+ if (forX) {
+ config.grid_x_lines = config.grid_x_lines.filter(toShow);
+ } else {
+ config.grid_y_lines = config.grid_y_lines.filter(toShow);
+ }
+ };
+
+ c3_chart_internal_fn.initTooltip = function () {
+ var $$ = this, config = $$.config, i;
+ $$.tooltip = $$.selectChart
+ .style("position", "relative")
+ .append("div")
+ .attr('class', CLASS.tooltipContainer)
+ .style("position", "absolute")
+ .style("pointer-events", "none")
+ .style("display", "none");
+ // Show tooltip if needed
+ if (config.tooltip_init_show) {
+ if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {
+ config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);
+ for (i = 0; i < $$.data.targets[0].values.length; i++) {
+ if (($$.data.targets[0].values[i].x - config.tooltip_init_x) === 0) { break; }
+ }
+ config.tooltip_init_x = i;
+ }
+ $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {
+ return $$.addName(d.values[config.tooltip_init_x]);
+ }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));
+ $$.tooltip.style("top", config.tooltip_init_position.top)
+ .style("left", config.tooltip_init_position.left)
+ .style("display", "block");
+ }
+ };
+ c3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {
+ var $$ = this, config = $$.config,
+ titleFormat = config.tooltip_format_title || defaultTitleFormat,
+ nameFormat = config.tooltip_format_name || function (name) { return name; },
+ valueFormat = config.tooltip_format_value || defaultValueFormat,
+ text, i, title, value, name, bgcolor;
+ for (i = 0; i < d.length; i++) {
+ if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }
+
+ if (! text) {
+ title = titleFormat ? titleFormat(d[i].x) : d[i].x;
+ text = "<table class='" + CLASS.tooltip + "'>" + (title || title === 0 ? "<tr><th colspan='2'>" + title + "</th></tr>" : "");
+ }
+
+ value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index);
+ if (value !== undefined) {
+ name = nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index);
+ bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);
+
+ text += "<tr class='" + CLASS.tooltipName + "-" + d[i].id + "'>";
+ text += "<td class='name'><span style='background-color:" + bgcolor + "'></span>" + name + "</td>";
+ text += "<td class='value'>" + value + "</td>";
+ text += "</tr>";
+ }
+ }
+ return text + "</table>";
+ };
+ c3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {
+ var $$ = this, config = $$.config, d3 = $$.d3;
+ var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;
+ var forArc = $$.hasArcType(),
+ mouse = d3.mouse(element);
+ // Determin tooltip position
+ if (forArc) {
+ tooltipLeft = (($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2) + mouse[0];
+ tooltipTop = ($$.height / 2) + mouse[1] + 20;
+ } else {
+ svgLeft = $$.getSvgLeft(true);
+ if (config.axis_rotated) {
+ tooltipLeft = svgLeft + mouse[0] + 100;
+ tooltipRight = tooltipLeft + tWidth;
+ chartRight = $$.currentWidth - $$.getCurrentPaddingRight();
+ tooltipTop = $$.x(dataToShow[0].x) + 20;
+ } else {
+ tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;
+ tooltipRight = tooltipLeft + tWidth;
+ chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();
+ tooltipTop = mouse[1] + 15;
+ }
+
+ if (tooltipRight > chartRight) {
+ // 20 is needed for Firefox to keep tooletip width
+ tooltipLeft -= tooltipRight - chartRight + 20;
+ }
+ if (tooltipTop + tHeight > $$.currentHeight) {
+ tooltipTop -= tHeight + 30;
+ }
+ }
+ if (tooltipTop < 0) {
+ tooltipTop = 0;
+ }
+ return {top: tooltipTop, left: tooltipLeft};
+ };
+ c3_chart_internal_fn.showTooltip = function (selectedData, element) {
+ var $$ = this, config = $$.config;
+ var tWidth, tHeight, position;
+ var forArc = $$.hasArcType(),
+ dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }),
+ positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition;
+ if (dataToShow.length === 0 || !config.tooltip_show) {
+ return;
+ }
+ $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style("display", "block");
+
+ // Get tooltip dimensions
+ tWidth = $$.tooltip.property('offsetWidth');
+ tHeight = $$.tooltip.property('offsetHeight');
+
+ position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);
+ // Set tooltip
+ $$.tooltip
+ .style("top", position.top + "px")
+ .style("left", position.left + 'px');
+ };
+ c3_chart_internal_fn.hideTooltip = function () {
+ this.tooltip.style("display", "none");
+ };
+
+ c3_chart_internal_fn.initLegend = function () {
+ var $$ = this;
+ $$.legendItemTextBox = {};
+ $$.legendHasRendered = false;
+ $$.legend = $$.svg.append("g").attr("transform", $$.getTranslate('legend'));
+ if (!$$.config.legend_show) {
+ $$.legend.style('visibility', 'hidden');
+ $$.hiddenLegendIds = $$.mapToIds($$.data.targets);
+ return;
+ }
+ // MEMO: call here to update legend box and tranlate for all
+ // MEMO: translate will be upated by this, so transform not needed in updateLegend()
+ $$.updateLegendWithDefaults();
+ };
+ c3_chart_internal_fn.updateLegendWithDefaults = function () {
+ var $$ = this;
+ $$.updateLegend($$.mapToIds($$.data.targets), {withTransform: false, withTransitionForTransform: false, withTransition: false});
+ };
+ c3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) {
+ var $$ = this, config = $$.config, insetLegendPosition = {
+ top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,
+ left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5
+ };
+
+ $$.margin3 = {
+ top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,
+ right: NaN,
+ bottom: 0,
+ left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0
+ };
+ };
+ c3_chart_internal_fn.transformLegend = function (withTransition) {
+ var $$ = this;
+ (withTransition ? $$.legend.transition() : $$.legend).attr("transform", $$.getTranslate('legend'));
+ };
+ c3_chart_internal_fn.updateLegendStep = function (step) {
+ this.legendStep = step;
+ };
+ c3_chart_internal_fn.updateLegendItemWidth = function (w) {
+ this.legendItemWidth = w;
+ };
+ c3_chart_internal_fn.updateLegendItemHeight = function (h) {
+ this.legendItemHeight = h;
+ };
+ c3_chart_internal_fn.getLegendWidth = function () {
+ var $$ = this;
+ return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;
+ };
+ c3_chart_internal_fn.getLegendHeight = function () {
+ var $$ = this, h = 0;
+ if ($$.config.legend_show) {
+ if ($$.isLegendRight) {
+ h = $$.currentHeight;
+ } else {
+ h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);
+ }
+ }
+ return h;
+ };
+ c3_chart_internal_fn.opacityForLegend = function (legendItem) {
+ return legendItem.classed(CLASS.legendItemHidden) ? null : 1;
+ };
+ c3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) {
+ return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;
+ };
+ c3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) {
+ var $$ = this;
+ targetIds = $$.mapToTargetIds(targetIds);
+ $$.legend.selectAll('.' + CLASS.legendItem)
+ .filter(function (id) { return targetIds.indexOf(id) >= 0; })
+ .classed(CLASS.legendItemFocused, focus)
+ .transition().duration(100)
+ .style('opacity', function () {
+ var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;
+ return opacity.call($$, $$.d3.select(this));
+ });
+ };
+ c3_chart_internal_fn.revertLegend = function () {
+ var $$ = this, d3 = $$.d3;
+ $$.legend.selectAll('.' + CLASS.legendItem)
+ .classed(CLASS.legendItemFocused, false)
+ .transition().duration(100)
+ .style('opacity', function () { return $$.opacityForLegend(d3.select(this)); });
+ };
+ c3_chart_internal_fn.showLegend = function (targetIds) {
+ var $$ = this, config = $$.config;
+ if (!config.legend_show) {
+ config.legend_show = true;
+ $$.legend.style('visibility', 'visible');
+ if (!$$.legendHasRendered) {
+ $$.updateLegendWithDefaults();
+ }
+ }
+ $$.removeHiddenLegendIds(targetIds);
+ $$.legend.selectAll($$.selectorLegends(targetIds))
+ .style('visibility', 'visible')
+ .transition()
+ .style('opacity', function () { return $$.opacityForLegend($$.d3.select(this)); });
+ };
+ c3_chart_internal_fn.hideLegend = function (targetIds) {
+ var $$ = this, config = $$.config;
+ if (config.legend_show && isEmpty(targetIds)) {
+ config.legend_show = false;
+ $$.legend.style('visibility', 'hidden');
+ }
+ $$.addHiddenLegendIds(targetIds);
+ $$.legend.selectAll($$.selectorLegends(targetIds))
+ .style('opacity', 0)
+ .style('visibility', 'hidden');
+ };
+ c3_chart_internal_fn.clearLegendItemTextBoxCache = function () {
+ this.legendItemTextBox = {};
+ };
+ c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {
+ var $$ = this, config = $$.config;
+ var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect;
+ var paddingTop = 4, paddingRight = 10, maxWidth = 0, maxHeight = 0, posMin = 10, tileWidth = 15;
+ var l, totalLength = 0, offsets = {}, widths = {}, heights = {}, margins = [0], steps = {}, step = 0;
+ var withTransition, withTransitionForTransform;
+ var texts, rects, tiles, background;
+
+ options = options || {};
+ withTransition = getOption(options, "withTransition", true);
+ withTransitionForTransform = getOption(options, "withTransitionForTransform", true);
+
+ function getTextBox(textElement, id) {
+ if (!$$.legendItemTextBox[id]) {
+ $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem);
+ }
+ return $$.legendItemTextBox[id];
+ }
+
+ function updatePositions(textElement, id, index) {
+ var reset = index === 0, isLast = index === targetIds.length - 1,
+ box = getTextBox(textElement, id),
+ itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight),
+ itemHeight = box.height + paddingTop,
+ itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,
+ areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),
+ margin, maxLength;
+
+ // MEMO: care about condifion of step, totalLength
+ function updateValues(id, withoutStep) {
+ if (!withoutStep) {
+ margin = (areaLength - totalLength - itemLength) / 2;
+ if (margin < posMin) {
+ margin = (areaLength - itemLength) / 2;
+ totalLength = 0;
+ step++;
+ }
+ }
+ steps[id] = step;
+ margins[step] = $$.isLegendInset ? 10 : margin;
+ offsets[id] = totalLength;
+ totalLength += itemLength;
+ }
+
+ if (reset) {
+ totalLength = 0;
+ step = 0;
+ maxWidth = 0;
+ maxHeight = 0;
+ }
+
+ if (config.legend_show && !$$.isLegendToShow(id)) {
+ widths[id] = heights[id] = steps[id] = offsets[id] = 0;
+ return;
+ }
+
+ widths[id] = itemWidth;
+ heights[id] = itemHeight;
+
+ if (!maxWidth || itemWidth >= maxWidth) { maxWidth = itemWidth; }
+ if (!maxHeight || itemHeight >= maxHeight) { maxHeight = itemHeight; }
+ maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;
+
+ if (config.legend_equally) {
+ Object.keys(widths).forEach(function (id) { widths[id] = maxWidth; });
+ Object.keys(heights).forEach(function (id) { heights[id] = maxHeight; });
+ margin = (areaLength - maxLength * targetIds.length) / 2;
+ if (margin < posMin) {
+ totalLength = 0;
+ step = 0;
+ targetIds.forEach(function (id) { updateValues(id); });
+ }
+ else {
+ updateValues(id, true);
+ }
+ } else {
+ updateValues(id);
+ }
+ }
+
+ if ($$.isLegendInset) {
+ step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;
+ $$.updateLegendStep(step);
+ }
+
+ if ($$.isLegendRight) {
+ xForLegend = function (id) { return maxWidth * steps[id]; };
+ yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };
+ } else if ($$.isLegendInset) {
+ xForLegend = function (id) { return maxWidth * steps[id] + 10; };
+ yForLegend = function (id) { return margins[steps[id]] + offsets[id]; };
+ } else {
+ xForLegend = function (id) { return margins[steps[id]] + offsets[id]; };
+ yForLegend = function (id) { return maxHeight * steps[id]; };
+ }
+ xForLegendText = function (id, i) { return xForLegend(id, i) + 14; };
+ yForLegendText = function (id, i) { return yForLegend(id, i) + 9; };
+ xForLegendRect = function (id, i) { return xForLegend(id, i); };
+ yForLegendRect = function (id, i) { return yForLegend(id, i) - 5; };
+
+ // Define g for legend area
+ l = $$.legend.selectAll('.' + CLASS.legendItem)
+ .data(targetIds)
+ .enter().append('g')
+ .attr('class', function (id) { return $$.generateClass(CLASS.legendItem, id); })
+ .style('visibility', function (id) { return $$.isLegendToShow(id) ? 'visible' : 'hidden'; })
+ .style('cursor', 'pointer')
+ .on('click', function (id) {
+ if (config.legend_item_onclick) {
+ config.legend_item_onclick.call($$, id);
+ } else {
+ if ($$.d3.event.altKey) {
+ $$.api.hide();
+ $$.api.show(id);
+ } else {
+ $$.api.toggle(id);
+ $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();
+ }
+ }
+ })
+ .on('mouseover', function (id) {
+ $$.d3.select(this).classed(CLASS.legendItemFocused, true);
+ if (!$$.transiting && $$.isTargetToShow(id)) {
+ $$.api.focus(id);
+ }
+ if (config.legend_item_onmouseover) {
+ config.legend_item_onmouseover.call($$, id);
+ }
+ })
+ .on('mouseout', function (id) {
+ $$.d3.select(this).classed(CLASS.legendItemFocused, false);
+ $$.api.revert();
+ if (config.legend_item_onmouseout) {
+ config.legend_item_onmouseout.call($$, id);
+ }
+ });
+ l.append('text')
+ .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; })
+ .each(function (id, i) { updatePositions(this, id, i); })
+ .style("pointer-events", "none")
+ .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200)
+ .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);
+ l.append('rect')
+ .attr("class", CLASS.legendItemEvent)
+ .style('fill-opacity', 0)
+ .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200)
+ .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);
+ l.append('rect')
+ .attr("class", CLASS.legendItemTile)
+ .style("pointer-events", "none")
+ .style('fill', $$.color)
+ .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200)
+ .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegend)
+ .attr('width', 10)
+ .attr('height', 10);
+
+ // Set background for inset legend
+ background = $$.legend.select('.' + CLASS.legendBackground + ' rect');
+ if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {
+ background = $$.legend.insert('g', '.' + CLASS.legendItem)
+ .attr("class", CLASS.legendBackground)
+ .append('rect');
+ }
+
+ texts = $$.legend.selectAll('text')
+ .data(targetIds)
+ .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; }) // MEMO: needed for update
+ .each(function (id, i) { updatePositions(this, id, i); });
+ (withTransition ? texts.transition() : texts)
+ .attr('x', xForLegendText)
+ .attr('y', yForLegendText);
+
+ rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent)
+ .data(targetIds);
+ (withTransition ? rects.transition() : rects)
+ .attr('width', function (id) { return widths[id]; })
+ .attr('height', function (id) { return heights[id]; })
+ .attr('x', xForLegendRect)
+ .attr('y', yForLegendRect);
+
+ tiles = $$.legend.selectAll('rect.' + CLASS.legendItemTile)
+ .data(targetIds);
+ (withTransition ? tiles.transition() : tiles)
+ .style('fill', $$.color)
+ .attr('x', xForLegend)
+ .attr('y', yForLegend);
+
+ if (background) {
+ (withTransition ? background.transition() : background)
+ .attr('height', $$.getLegendHeight() - 12)
+ .attr('width', maxWidth * (step + 1) + 10);
+ }
+
+ // toggle legend state
+ $$.legend.selectAll('.' + CLASS.legendItem)
+ .classed(CLASS.legendItemHidden, function (id) { return !$$.isTargetToShow(id); });
+
+ // Update all to reflect change of legend
+ $$.updateLegendItemWidth(maxWidth);
+ $$.updateLegendItemHeight(maxHeight);
+ $$.updateLegendStep(step);
+ // Update size and scale
+ $$.updateSizes();
+ $$.updateScales();
+ $$.updateSvgSize();
+ // Update g positions
+ $$.transformAll(withTransitionForTransform, transitions);
+ $$.legendHasRendered = true;
+ };
+
+ function Axis(owner) {
+ API.call(this, owner);
+ }
+
+ inherit(API, Axis);
+
+ Axis.prototype.init = function init() {
+
+ var $$ = this.owner, config = $$.config, main = $$.main;
+ $$.axes.x = main.append("g")
+ .attr("class", CLASS.axis + ' ' + CLASS.axisX)
+ .attr("clip-path", $$.clipPathForXAxis)
+ .attr("transform", $$.getTranslate('x'))
+ .style("visibility", config.axis_x_show ? 'visible' : 'hidden');
+ $$.axes.x.append("text")
+ .attr("class", CLASS.axisXLabel)
+ .attr("transform", config.axis_rotated ? "rotate(-90)" : "")
+ .style("text-anchor", this.textAnchorForXAxisLabel.bind(this));
+ $$.axes.y = main.append("g")
+ .attr("class", CLASS.axis + ' ' + CLASS.axisY)
+ .attr("clip-path", config.axis_y_inner ? "" : $$.clipPathForYAxis)
+ .attr("transform", $$.getTranslate('y'))
+ .style("visibility", config.axis_y_show ? 'visible' : 'hidden');
+ $$.axes.y.append("text")
+ .attr("class", CLASS.axisYLabel)
+ .attr("transform", config.axis_rotated ? "" : "rotate(-90)")
+ .style("text-anchor", this.textAnchorForYAxisLabel.bind(this));
+
+ $$.axes.y2 = main.append("g")
+ .attr("class", CLASS.axis + ' ' + CLASS.axisY2)
+ // clip-path?
+ .attr("transform", $$.getTranslate('y2'))
+ .style("visibility", config.axis_y2_show ? 'visible' : 'hidden');
+ $$.axes.y2.append("text")
+ .attr("class", CLASS.axisY2Label)
+ .attr("transform", config.axis_rotated ? "" : "rotate(-90)")
+ .style("text-anchor", this.textAnchorForY2AxisLabel.bind(this));
+ };
+ Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {
+ var $$ = this.owner, config = $$.config,
+ axisParams = {
+ isCategory: $$.isCategorized(),
+ withOuterTick: withOuterTick,
+ tickMultiline: config.axis_x_tick_multiline,
+ tickWidth: config.axis_x_tick_width,
+ tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,
+ withoutTransition: withoutTransition,
+ },
+ axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient);
+
+ if ($$.isTimeSeries() && tickValues) {
+ tickValues = tickValues.map(function (v) { return $$.parseDate(v); });
+ }
+
+ // Set tick
+ axis.tickFormat(tickFormat).tickValues(tickValues);
+ if ($$.isCategorized()) {
+ axis.tickCentered(config.axis_x_tick_centered);
+ if (isEmpty(config.axis_x_tick_culling)) {
+ config.axis_x_tick_culling = false;
+ }
+ }
+
+ return axis;
+ };
+ Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {
+ var $$ = this.owner, config = $$.config, tickValues;
+ if (config.axis_x_tick_fit || config.axis_x_tick_count) {
+ tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());
+ }
+ if (axis) {
+ axis.tickValues(tickValues);
+ } else {
+ $$.xAxis.tickValues(tickValues);
+ $$.subXAxis.tickValues(tickValues);
+ }
+ return tickValues;
+ };
+ Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) {
+ var axisParams = {
+ withOuterTick: withOuterTick,
+ withoutTransition: withoutTransition,
+ },
+ $$ = this.owner,
+ d3 = $$.d3,
+ config = $$.config,
+ axis = c3_axis(d3, axisParams).scale(scale).orient(orient).tickFormat(tickFormat);
+ if ($$.isTimeSeriesY()) {
+ axis.ticks(d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval);
+ } else {
+ axis.tickValues(tickValues);
+ }
+ return axis;
+ };
+ Axis.prototype.getId = function getId(id) {
+ var config = this.owner.config;
+ return id in config.data_axes ? config.data_axes[id] : 'y';
+ };
+ Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() {
+ var $$ = this.owner, config = $$.config,
+ format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) { return v < 0 ? v.toFixed(0) : v; };
+ if (config.axis_x_tick_format) {
+ if (isFunction(config.axis_x_tick_format)) {
+ format = config.axis_x_tick_format;
+ } else if ($$.isTimeSeries()) {
+ format = function (date) {
+ return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : "";
+ };
+ }
+ }
+ return isFunction(format) ? function (v) { return format.call($$, v); } : format;
+ };
+ Axis.prototype.getTickValues = function getTickValues(tickValues, axis) {
+ return tickValues ? tickValues : axis ? axis.tickValues() : undefined;
+ };
+ Axis.prototype.getXAxisTickValues = function getXAxisTickValues() {
+ return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);
+ };
+ Axis.prototype.getYAxisTickValues = function getYAxisTickValues() {
+ return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);
+ };
+ Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() {
+ return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);
+ };
+ Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {
+ var $$ = this.owner, config = $$.config, option;
+ if (axisId === 'y') {
+ option = config.axis_y_label;
+ } else if (axisId === 'y2') {
+ option = config.axis_y2_label;
+ } else if (axisId === 'x') {
+ option = config.axis_x_label;
+ }
+ return option;
+ };
+ Axis.prototype.getLabelText = function getLabelText(axisId) {
+ var option = this.getLabelOptionByAxisId(axisId);
+ return isString(option) ? option : option ? option.text : null;
+ };
+ Axis.prototype.setLabelText = function setLabelText(axisId, text) {
+ var $$ = this.owner, config = $$.config,
+ option = this.getLabelOptionByAxisId(axisId);
+ if (isString(option)) {
+ if (axisId === 'y') {
+ config.axis_y_label = text;
+ } else if (axisId === 'y2') {
+ config.axis_y2_label = text;
+ } else if (axisId === 'x') {
+ config.axis_x_label = text;
+ }
+ } else if (option) {
+ option.text = text;
+ }
+ };
+ Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {
+ var option = this.getLabelOptionByAxisId(axisId),
+ position = (option && typeof option === 'object' && option.position) ? option.position : defaultPosition;
+ return {
+ isInner: position.indexOf('inner') >= 0,
+ isOuter: position.indexOf('outer') >= 0,
+ isLeft: position.indexOf('left') >= 0,
+ isCenter: position.indexOf('center') >= 0,
+ isRight: position.indexOf('right') >= 0,
+ isTop: position.indexOf('top') >= 0,
+ isMiddle: position.indexOf('middle') >= 0,
+ isBottom: position.indexOf('bottom') >= 0
+ };
+ };
+ Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() {
+ return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');
+ };
+ Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() {
+ return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');
+ };
+ Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() {
+ return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');
+ };
+ Axis.prototype.getLabelPositionById = function getLabelPositionById(id) {
+ return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();
+ };
+ Axis.prototype.textForXAxisLabel = function textForXAxisLabel() {
+ return this.getLabelText('x');
+ };
+ Axis.prototype.textForYAxisLabel = function textForYAxisLabel() {
+ return this.getLabelText('y');
+ };
+ Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() {
+ return this.getLabelText('y2');
+ };
+ Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {
+ var $$ = this.owner;
+ if (forHorizontal) {
+ return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;
+ } else {
+ return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;
+ }
+ };
+ Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {
+ if (forHorizontal) {
+ return position.isLeft ? "0.5em" : position.isRight ? "-0.5em" : "0";
+ } else {
+ return position.isTop ? "-0.5em" : position.isBottom ? "0.5em" : "0";
+ }
+ };
+ Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {
+ if (forHorizontal) {
+ return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';
+ } else {
+ return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';
+ }
+ };
+ Axis.prototype.xForXAxisLabel = function xForXAxisLabel() {
+ return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());
+ };
+ Axis.prototype.xForYAxisLabel = function xForYAxisLabel() {
+ return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());
+ };
+ Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() {
+ return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());
+ };
+ Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() {
+ return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());
+ };
+ Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() {
+ return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());
+ };
+ Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() {
+ return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());
+ };
+ Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() {
+ var $$ = this.owner, config = $$.config,
+ position = this.getXAxisLabelPosition();
+ if (config.axis_rotated) {
+ return position.isInner ? "1.2em" : -25 - this.getMaxTickWidth('x');
+ } else {
+ return position.isInner ? "-0.5em" : config.axis_x_height ? config.axis_x_height - 10 : "3em";
+ }
+ };
+ Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() {
+ var $$ = this.owner,
+ position = this.getYAxisLabelPosition();
+ if ($$.config.axis_rotated) {
+ return position.isInner ? "-0.5em" : "3em";
+ } else {
+ return position.isInner ? "1.2em" : -10 - ($$.config.axis_y_inner ? 0 : (this.getMaxTickWidth('y') + 10));
+ }
+ };
+ Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() {
+ var $$ = this.owner,
+ position = this.getY2AxisLabelPosition();
+ if ($$.config.axis_rotated) {
+ return position.isInner ? "1.2em" : "-2.2em";
+ } else {
+ return position.isInner ? "-0.5em" : 15 + ($$.config.axis_y2_inner ? 0 : (this.getMaxTickWidth('y2') + 15));
+ }
+ };
+ Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {
+ var $$ = this.owner;
+ return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());
+ };
+ Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {
+ var $$ = this.owner;
+ return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());
+ };
+ Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {
+ var $$ = this.owner;
+ return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());
+ };
+ Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {
+ var $$ = this.owner, config = $$.config,
+ maxWidth = 0, targetsToShow, scale, axis, dummy, svg;
+ if (withoutRecompute && $$.currentMaxTickWidths[id]) {
+ return $$.currentMaxTickWidths[id];
+ }
+ if ($$.svg) {
+ targetsToShow = $$.filterTargetsToShow($$.data.targets);
+ if (id === 'y') {
+ scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));
+ axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true);
+ } else if (id === 'y2') {
+ scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));
+ axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true);
+ } else {
+ scale = $$.x.copy().domain($$.getXDomain(targetsToShow));
+ axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);
+ this.updateXAxisTickValues(targetsToShow, axis);
+ }
+ dummy = $$.d3.select('body').append('div').classed('c3', true);
+ svg = dummy.append("svg").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),
+ svg.append('g').call(axis).each(function () {
+ $$.d3.select(this).selectAll('text').each(function () {
+ var box = this.getBoundingClientRect();
+ if (maxWidth < box.width) { maxWidth = box.width; }
+ });
+ dummy.remove();
+ });
+ }
+ $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;
+ return $$.currentMaxTickWidths[id];
+ };
+
+ Axis.prototype.updateLabels = function updateLabels(withTransition) {
+ var $$ = this.owner;
+ var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),
+ axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),
+ axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);
+ (withTransition ? axisXLabel.transition() : axisXLabel)
+ .attr("x", this.xForXAxisLabel.bind(this))
+ .attr("dx", this.dxForXAxisLabel.bind(this))
+ .attr("dy", this.dyForXAxisLabel.bind(this))
+ .text(this.textForXAxisLabel.bind(this));
+ (withTransition ? axisYLabel.transition() : axisYLabel)
+ .attr("x", this.xForYAxisLabel.bind(this))
+ .attr("dx", this.dxForYAxisLabel.bind(this))
+ .attr("dy", this.dyForYAxisLabel.bind(this))
+ .text(this.textForYAxisLabel.bind(this));
+ (withTransition ? axisY2Label.transition() : axisY2Label)
+ .attr("x", this.xForY2AxisLabel.bind(this))
+ .attr("dx", this.dxForY2AxisLabel.bind(this))
+ .attr("dy", this.dyForY2AxisLabel.bind(this))
+ .text(this.textForY2AxisLabel.bind(this));
+ };
+ Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) {
+ if (!isValue(padding[key])) {
+ return defaultValue;
+ }
+ if (padding.unit === 'ratio') {
+ return padding[key] * domainLength;
+ }
+ // assume padding is pixels if unit is not specified
+ return this.convertPixelsToAxisPadding(padding[key], domainLength);
+ };
+ Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {
+ var $$ = this.owner,
+ length = $$.config.axis_rotated ? $$.width : $$.height;
+ return domainLength * (pixels / length);
+ };
+ Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {
+ var tickValues = values, targetCount, start, end, count, interval, i, tickValue;
+ if (tickCount) {
+ targetCount = isFunction(tickCount) ? tickCount() : tickCount;
+ // compute ticks according to tickCount
+ if (targetCount === 1) {
+ tickValues = [values[0]];
+ } else if (targetCount === 2) {
+ tickValues = [values[0], values[values.length - 1]];
+ } else if (targetCount > 2) {
+ count = targetCount - 2;
+ start = values[0];
+ end = values[values.length - 1];
+ interval = (end - start) / (count + 1);
+ // re-construct unique values
+ tickValues = [start];
+ for (i = 0; i < count; i++) {
+ tickValue = +start + interval * (i + 1);
+ tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);
+ }
+ tickValues.push(end);
+ }
+ }
+ if (!forTimeSeries) { tickValues = tickValues.sort(function (a, b) { return a - b; }); }
+ return tickValues;
+ };
+ Axis.prototype.generateTransitions = function generateTransitions(duration) {
+ var $$ = this.owner, axes = $$.axes;
+ return {
+ axisX: duration ? axes.x.transition().duration(duration) : axes.x,
+ axisY: duration ? axes.y.transition().duration(duration) : axes.y,
+ axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,
+ axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx
+ };
+ };
+ Axis.prototype.redraw = function redraw(transitions, isHidden) {
+ var $$ = this.owner;
+ $$.axes.x.style("opacity", isHidden ? 0 : 1);
+ $$.axes.y.style("opacity", isHidden ? 0 : 1);
+ $$.axes.y2.style("opacity", isHidden ? 0 : 1);
+ $$.axes.subx.style("opacity", isHidden ? 0 : 1);
+ transitions.axisX.call($$.xAxis);
+ transitions.axisY.call($$.yAxis);
+ transitions.axisY2.call($$.y2Axis);
+ transitions.axisSubX.call($$.subXAxis);
+ };
+
+ c3_chart_internal_fn.getClipPath = function (id) {
+ var isIE9 = window.navigator.appVersion.toLowerCase().indexOf("msie 9.") >= 0;
+ return "url(" + (isIE9 ? "" : document.URL.split('#')[0]) + "#" + id + ")";
+ };
+ c3_chart_internal_fn.appendClip = function (parent, id) {
+ return parent.append("clipPath").attr("id", id).append("rect");
+ };
+ c3_chart_internal_fn.getAxisClipX = function (forHorizontal) {
+ // axis line width + padding for left
+ var left = Math.max(30, this.margin.left);
+ return forHorizontal ? -(1 + left) : -(left - 1);
+ };
+ c3_chart_internal_fn.getAxisClipY = function (forHorizontal) {
+ return forHorizontal ? -20 : -this.margin.top;
+ };
+ c3_chart_internal_fn.getXAxisClipX = function () {
+ var $$ = this;
+ return $$.getAxisClipX(!$$.config.axis_rotated);
+ };
+ c3_chart_internal_fn.getXAxisClipY = function () {
+ var $$ = this;
+ return $$.getAxisClipY(!$$.config.axis_rotated);
+ };
+ c3_chart_internal_fn.getYAxisClipX = function () {
+ var $$ = this;
+ return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);
+ };
+ c3_chart_internal_fn.getYAxisClipY = function () {
+ var $$ = this;
+ return $$.getAxisClipY($$.config.axis_rotated);
+ };
+ c3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) {
+ var $$ = this,
+ left = Math.max(30, $$.margin.left),
+ right = Math.max(30, $$.margin.right);
+ // width + axis line width + padding for left/right
+ return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;
+ };
+ c3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) {
+ // less than 20 is not enough to show the axis label 'outer' without legend
+ return (forHorizontal ? this.margin.bottom : (this.margin.top + this.height)) + 20;
+ };
+ c3_chart_internal_fn.getXAxisClipWidth = function () {
+ var $$ = this;
+ return $$.getAxisClipWidth(!$$.config.axis_rotated);
+ };
+ c3_chart_internal_fn.getXAxisClipHeight = function () {
+ var $$ = this;
+ return $$.getAxisClipHeight(!$$.config.axis_rotated);
+ };
+ c3_chart_internal_fn.getYAxisClipWidth = function () {
+ var $$ = this;
+ return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);
+ };
+ c3_chart_internal_fn.getYAxisClipHeight = function () {
+ var $$ = this;
+ return $$.getAxisClipHeight($$.config.axis_rotated);
+ };
+
+ c3_chart_internal_fn.initPie = function () {
+ var $$ = this, d3 = $$.d3, config = $$.config;
+ $$.pie = d3.layout.pie().value(function (d) {
+ return d.values.reduce(function (a, b) { return a + b.value; }, 0);
+ });
+ if (!config.data_order) {
+ $$.pie.sort(null);
+ }
+ };
+
+ c3_chart_internal_fn.updateRadius = function () {
+ var $$ = this, config = $$.config,
+ w = config.gauge_width || config.donut_width;
+ $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2;
+ $$.radius = $$.radiusExpanded * 0.95;
+ $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;
+ $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;
+ };
+
+ c3_chart_internal_fn.updateArc = function () {
+ var $$ = this;
+ $$.svgArc = $$.getSvgArc();
+ $$.svgArcExpanded = $$.getSvgArcExpanded();
+ $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);
+ };
+
+ c3_chart_internal_fn.updateAngle = function (d) {
+ var $$ = this, config = $$.config,
+ found = false, index = 0,
+ gMin = config.gauge_min, gMax = config.gauge_max, gTic, gValue;
+ $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {
+ if (! found && t.data.id === d.data.id) {
+ found = true;
+ d = t;
+ d.index = index;
+ }
+ index++;
+ });
+ if (isNaN(d.startAngle)) {
+ d.startAngle = 0;
+ }
+ if (isNaN(d.endAngle)) {
+ d.endAngle = d.startAngle;
+ }
+ if ($$.isGaugeType(d.data)) {
+ gTic = (Math.PI) / (gMax - gMin);
+ gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : (gMax - gMin);
+ d.startAngle = -1 * (Math.PI / 2);
+ d.endAngle = d.startAngle + gTic * gValue;
+ }
+ return found ? d : null;
+ };
+
+ c3_chart_internal_fn.getSvgArc = function () {
+ var $$ = this,
+ arc = $$.d3.svg.arc().outerRadius($$.radius).innerRadius($$.innerRadius),
+ newArc = function (d, withoutUpdate) {
+ var updated;
+ if (withoutUpdate) { return arc(d); } // for interpolate
+ updated = $$.updateAngle(d);
+ return updated ? arc(updated) : "M 0 0";
+ };
+ // TODO: extends all function
+ newArc.centroid = arc.centroid;
+ return newArc;
+ };
+
+ c3_chart_internal_fn.getSvgArcExpanded = function (rate) {
+ var $$ = this,
+ arc = $$.d3.svg.arc().outerRadius($$.radiusExpanded * (rate ? rate : 1)).innerRadius($$.innerRadius);
+ return function (d) {
+ var updated = $$.updateAngle(d);
+ return updated ? arc(updated) : "M 0 0";
+ };
+ };
+
+ c3_chart_internal_fn.getArc = function (d, withoutUpdate, force) {
+ return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : "M 0 0";
+ };
+
+
+ c3_chart_internal_fn.transformForArcLabel = function (d) {
+ var $$ = this,
+ updated = $$.updateAngle(d), c, x, y, h, ratio, translate = "";
+ if (updated && !$$.hasType('gauge')) {
+ c = this.svgArc.centroid(updated);
+ x = isNaN(c[0]) ? 0 : c[0];
+ y = isNaN(c[1]) ? 0 : c[1];
+ h = Math.sqrt(x * x + y * y);
+ // TODO: ratio should be an option?
+ ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;
+ translate = "translate(" + (x * ratio) + ',' + (y * ratio) + ")";
+ }
+ return translate;
+ };
+
+ c3_chart_internal_fn.getArcRatio = function (d) {
+ var $$ = this,
+ whole = $$.hasType('gauge') ? Math.PI : (Math.PI * 2);
+ return d ? (d.endAngle - d.startAngle) / whole : null;
+ };
+
+ c3_chart_internal_fn.convertToArcData = function (d) {
+ return this.addName({
+ id: d.data.id,
+ value: d.value,
+ ratio: this.getArcRatio(d),
+ index: d.index
+ });
+ };
+
+ c3_chart_internal_fn.textForArcLabel = function (d) {
+ var $$ = this,
+ updated, value, ratio, id, format;
+ if (! $$.shouldShowArcLabel()) { return ""; }
+ updated = $$.updateAngle(d);
+ value = updated ? updated.value : null;
+ ratio = $$.getArcRatio(updated);
+ id = d.data.id;
+ if (! $$.hasType('gauge') && ! $$.meetsArcLabelThreshold(ratio)) { return ""; }
+ format = $$.getArcLabelFormat();
+ return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);
+ };
+
+ c3_chart_internal_fn.expandArc = function (targetIds) {
+ var $$ = this, interval;
+
+ // MEMO: avoid to cancel transition
+ if ($$.transiting) {
+ interval = window.setInterval(function () {
+ if (!$$.transiting) {
+ window.clearInterval(interval);
+ if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {
+ $$.expandArc(targetIds);
+ }
+ }
+ }, 10);
+ return;
+ }
+
+ targetIds = $$.mapToTargetIds(targetIds);
+
+ $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {
+ if (! $$.shouldExpand(d.data.id)) { return; }
+ $$.d3.select(this).selectAll('path')
+ .transition().duration(50)
+ .attr("d", $$.svgArcExpanded)
+ .transition().duration(100)
+ .attr("d", $$.svgArcExpandedSub)
+ .each(function (d) {
+ if ($$.isDonutType(d.data)) {
+ // callback here
+ }
+ });
+ });
+ };
+
+ c3_chart_internal_fn.unexpandArc = function (targetIds) {
+ var $$ = this;
+
+ if ($$.transiting) { return; }
+
+ targetIds = $$.mapToTargetIds(targetIds);
+
+ $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path')
+ .transition().duration(50)
+ .attr("d", $$.svgArc);
+ $$.svg.selectAll('.' + CLASS.arc)
+ .style("opacity", 1);
+ };
+
+ c3_chart_internal_fn.shouldExpand = function (id) {
+ var $$ = this, config = $$.config;
+ return ($$.isDonutType(id) && config.donut_expand) || ($$.isGaugeType(id) && config.gauge_expand) || ($$.isPieType(id) && config.pie_expand);
+ };
+
+ c3_chart_internal_fn.shouldShowArcLabel = function () {
+ var $$ = this, config = $$.config, shouldShow = true;
+ if ($$.hasType('donut')) {
+ shouldShow = config.donut_label_show;
+ } else if ($$.hasType('pie')) {
+ shouldShow = config.pie_label_show;
+ }
+ // when gauge, always true
+ return shouldShow;
+ };
+
+ c3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) {
+ var $$ = this, config = $$.config,
+ threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;
+ return ratio >= threshold;
+ };
+
+ c3_chart_internal_fn.getArcLabelFormat = function () {
+ var $$ = this, config = $$.config,
+ format = config.pie_label_format;
+ if ($$.hasType('gauge')) {
+ format = config.gauge_label_format;
+ } else if ($$.hasType('donut')) {
+ format = config.donut_label_format;
+ }
+ return format;
+ };
+
+ c3_chart_internal_fn.getArcTitle = function () {
+ var $$ = this;
+ return $$.hasType('donut') ? $$.config.donut_title : "";
+ };
+
+ c3_chart_internal_fn.updateTargetsForArc = function (targets) {
+ var $$ = this, main = $$.main,
+ mainPieUpdate, mainPieEnter,
+ classChartArc = $$.classChartArc.bind($$),
+ classArcs = $$.classArcs.bind($$),
+ classFocus = $$.classFocus.bind($$);
+ mainPieUpdate = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc)
+ .data($$.pie(targets))
+ .attr("class", function (d) { return classChartArc(d) + classFocus(d.data); });
+ mainPieEnter = mainPieUpdate.enter().append("g")
+ .attr("class", classChartArc);
+ mainPieEnter.append('g')
+ .attr('class', classArcs);
+ mainPieEnter.append("text")
+ .attr("dy", $$.hasType('gauge') ? "-.1em" : ".35em")
+ .style("opacity", 0)
+ .style("text-anchor", "middle")
+ .style("pointer-events", "none");
+ // MEMO: can not keep same color..., but not bad to update color in redraw
+ //mainPieUpdate.exit().remove();
+ };
+
+ c3_chart_internal_fn.initArc = function () {
+ var $$ = this;
+ $$.arcs = $$.main.select('.' + CLASS.chart).append("g")
+ .attr("class", CLASS.chartArcs)
+ .attr("transform", $$.getTranslate('arc'));
+ $$.arcs.append('text')
+ .attr('class', CLASS.chartArcsTitle)
+ .style("text-anchor", "middle")
+ .text($$.getArcTitle());
+ };
+
+ c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) {
+ var $$ = this, d3 = $$.d3, config = $$.config, main = $$.main,
+ mainArc;
+ mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc)
+ .data($$.arcData.bind($$));
+ mainArc.enter().append('path')
+ .attr("class", $$.classArc.bind($$))
+ .style("fill", function (d) { return $$.color(d.data); })
+ .style("cursor", function (d) { return config.interaction_enabled && config.data_selection_isselectable(d) ? "pointer" : null; })
+ .style("opacity", 0)
+ .each(function (d) {
+ if ($$.isGaugeType(d.data)) {
+ d.startAngle = d.endAngle = -1 * (Math.PI / 2);
+ }
+ this._current = d;
+ });
+ mainArc
+ .attr("transform", function (d) { return !$$.isGaugeType(d.data) && withTransform ? "scale(0)" : ""; })
+ .style("opacity", function (d) { return d === this._current ? 0 : 1; })
+ .on('mouseover', config.interaction_enabled ? function (d) {
+ var updated, arcData;
+ if ($$.transiting) { // skip while transiting
+ return;
+ }
+ updated = $$.updateAngle(d);
+ arcData = $$.convertToArcData(updated);
+ // transitions
+ $$.expandArc(updated.data.id);
+ $$.api.focus(updated.data.id);
+ $$.toggleFocusLegend(updated.data.id, true);
+ $$.config.data_onmouseover(arcData, this);
+ } : null)
+ .on('mousemove', config.interaction_enabled ? function (d) {
+ var updated = $$.updateAngle(d),
+ arcData = $$.convertToArcData(updated),
+ selectedData = [arcData];
+ $$.showTooltip(selectedData, this);
+ } : null)
+ .on('mouseout', config.interaction_enabled ? function (d) {
+ var updated, arcData;
+ if ($$.transiting) { // skip while transiting
+ return;
+ }
+ updated = $$.updateAngle(d);
+ arcData = $$.convertToArcData(updated);
+ // transitions
+ $$.unexpandArc(updated.data.id);
+ $$.api.revert();
+ $$.revertLegend();
+ $$.hideTooltip();
+ $$.config.data_onmouseout(arcData, this);
+ } : null)
+ .on('click', config.interaction_enabled ? function (d, i) {
+ var updated = $$.updateAngle(d),
+ arcData = $$.convertToArcData(updated);
+ if ($$.toggleShape) { $$.toggleShape(this, arcData, i); }
+ $$.config.data_onclick.call($$.api, arcData, this);
+ } : null)
+ .each(function () { $$.transiting = true; })
+ .transition().duration(duration)
+ .attrTween("d", function (d) {
+ var updated = $$.updateAngle(d), interpolate;
+ if (! updated) {
+ return function () { return "M 0 0"; };
+ }
+ // if (this._current === d) {
+ // this._current = {
+ // startAngle: Math.PI*2,
+ // endAngle: Math.PI*2,
+ // };
+ // }
+ if (isNaN(this._current.startAngle)) {
+ this._current.startAngle = 0;
+ }
+ if (isNaN(this._current.endAngle)) {
+ this._current.endAngle = this._current.startAngle;
+ }
+ interpolate = d3.interpolate(this._current, updated);
+ this._current = interpolate(0);
+ return function (t) {
+ var interpolated = interpolate(t);
+ interpolated.data = d.data; // data.id will be updated by interporator
+ return $$.getArc(interpolated, true);
+ };
+ })
+ .attr("transform", withTransform ? "scale(1)" : "")
+ .style("fill", function (d) {
+ return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);
+ }) // Where gauge reading color would receive customization.
+ .style("opacity", 1)
+ .call($$.endall, function () {
+ $$.transiting = false;
+ });
+ mainArc.exit().transition().duration(durationForExit)
+ .style('opacity', 0)
+ .remove();
+ main.selectAll('.' + CLASS.chartArc).select('text')
+ .style("opacity", 0)
+ .attr('class', function (d) { return $$.isGaugeType(d.data) ? CLASS.gaugeValue : ''; })
+ .text($$.textForArcLabel.bind($$))
+ .attr("transform", $$.transformForArcLabel.bind($$))
+ .style('font-size', function (d) { return $$.isGaugeType(d.data) ? Math.round($$.radius / 5) + 'px' : ''; })
+ .transition().duration(duration)
+ .style("opacity", function (d) { return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0; });
+ main.select('.' + CLASS.chartArcsTitle)
+ .style("opacity", $$.hasType('donut') || $$.hasType('gauge') ? 1 : 0);
+
+ if ($$.hasType('gauge')) {
+ $$.arcs.select('.' + CLASS.chartArcsBackground)
+ .attr("d", function () {
+ var d = {
+ data: [{value: config.gauge_max}],
+ startAngle: -1 * (Math.PI / 2),
+ endAngle: Math.PI / 2
+ };
+ return $$.getArc(d, true, true);
+ });
+ $$.arcs.select('.' + CLASS.chartArcsGaugeUnit)
+ .attr("dy", ".75em")
+ .text(config.gauge_label_show ? config.gauge_units : '');
+ $$.arcs.select('.' + CLASS.chartArcsGaugeMin)
+ .attr("dx", -1 * ($$.innerRadius + (($$.radius - $$.innerRadius) / 2)) + "px")
+ .attr("dy", "1.2em")
+ .text(config.gauge_label_show ? config.gauge_min : '');
+ $$.arcs.select('.' + CLASS.chartArcsGaugeMax)
+ .attr("dx", $$.innerRadius + (($$.radius - $$.innerRadius) / 2) + "px")
+ .attr("dy", "1.2em")
+ .text(config.gauge_label_show ? config.gauge_max : '');
+ }
+ };
+ c3_chart_internal_fn.initGauge = function () {
+ var arcs = this.arcs;
+ if (this.hasType('gauge')) {
+ arcs.append('path')
+ .attr("class", CLASS.chartArcsBackground);
+ arcs.append("text")
+ .attr("class", CLASS.chartArcsGaugeUnit)
+ .style("text-anchor", "middle")
+ .style("pointer-events", "none");
+ arcs.append("text")
+ .attr("class", CLASS.chartArcsGaugeMin)
+ .style("text-anchor", "middle")
+ .style("pointer-events", "none");
+ arcs.append("text")
+ .attr("class", CLASS.chartArcsGaugeMax)
+ .style("text-anchor", "middle")
+ .style("pointer-events", "none");
+ }
+ };
+ c3_chart_internal_fn.getGaugeLabelHeight = function () {
+ return this.config.gauge_label_show ? 20 : 0;
+ };
+
+ c3_chart_internal_fn.initRegion = function () {
+ var $$ = this;
+ $$.region = $$.main.append('g')
+ .attr("clip-path", $$.clipPath)
+ .attr("class", CLASS.regions);
+ };
+ c3_chart_internal_fn.updateRegion = function (duration) {
+ var $$ = this, config = $$.config;
+
+ // hide if arc type
+ $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');
+
+ $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region)
+ .data(config.regions);
+ $$.mainRegion.enter().append('g')
+ .attr('class', $$.classRegion.bind($$))
+ .append('rect')
+ .style("fill-opacity", 0);
+ $$.mainRegion.exit().transition().duration(duration)
+ .style("opacity", 0)
+ .remove();
+ };
+ c3_chart_internal_fn.redrawRegion = function (withTransition) {
+ var $$ = this,
+ regions = $$.mainRegion.selectAll('rect'),
+ x = $$.regionX.bind($$),
+ y = $$.regionY.bind($$),
+ w = $$.regionWidth.bind($$),
+ h = $$.regionHeight.bind($$);
+ return [
+ (withTransition ? regions.transition() : regions)
+ .attr("x", x)
+ .attr("y", y)
+ .attr("width", w)
+ .attr("height", h)
+ .style("fill-opacity", function (d) { return isValue(d.opacity) ? d.opacity : 0.1; })
+ ];
+ };
+ c3_chart_internal_fn.regionX = function (d) {
+ var $$ = this, config = $$.config,
+ xPos, yScale = d.axis === 'y' ? $$.y : $$.y2;
+ if (d.axis === 'y' || d.axis === 'y2') {
+ xPos = config.axis_rotated ? ('start' in d ? yScale(d.start) : 0) : 0;
+ } else {
+ xPos = config.axis_rotated ? 0 : ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0);
+ }
+ return xPos;
+ };
+ c3_chart_internal_fn.regionY = function (d) {
+ var $$ = this, config = $$.config,
+ yPos, yScale = d.axis === 'y' ? $$.y : $$.y2;
+ if (d.axis === 'y' || d.axis === 'y2') {
+ yPos = config.axis_rotated ? 0 : ('end' in d ? yScale(d.end) : 0);
+ } else {
+ yPos = config.axis_rotated ? ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0) : 0;
+ }
+ return yPos;
+ };
+ c3_chart_internal_fn.regionWidth = function (d) {
+ var $$ = this, config = $$.config,
+ start = $$.regionX(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;
+ if (d.axis === 'y' || d.axis === 'y2') {
+ end = config.axis_rotated ? ('end' in d ? yScale(d.end) : $$.width) : $$.width;
+ } else {
+ end = config.axis_rotated ? $$.width : ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width);
+ }
+ return end < start ? 0 : end - start;
+ };
+ c3_chart_internal_fn.regionHeight = function (d) {
+ var $$ = this, config = $$.config,
+ start = this.regionY(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2;
+ if (d.axis === 'y' || d.axis === 'y2') {
+ end = config.axis_rotated ? $$.height : ('start' in d ? yScale(d.start) : $$.height);
+ } else {
+ end = config.axis_rotated ? ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height) : $$.height;
+ }
+ return end < start ? 0 : end - start;
+ };
+ c3_chart_internal_fn.isRegionOnX = function (d) {
+ return !d.axis || d.axis === 'x';
+ };
+
+ c3_chart_internal_fn.drag = function (mouse) {
+ var $$ = this, config = $$.config, main = $$.main, d3 = $$.d3;
+ var sx, sy, mx, my, minX, maxX, minY, maxY;
+
+ if ($$.hasArcType()) { return; }
+ if (! config.data_selection_enabled) { return; } // do nothing if not selectable
+ if (config.zoom_enabled && ! $$.zoom.altDomain) { return; } // skip if zoomable because of conflict drag dehavior
+ if (!config.data_selection_multiple) { return; } // skip when single selection because drag is used for multiple selection
+
+ sx = $$.dragStart[0];
+ sy = $$.dragStart[1];
+ mx = mouse[0];
+ my = mouse[1];
+ minX = Math.min(sx, mx);
+ maxX = Math.max(sx, mx);
+ minY = (config.data_selection_grouped) ? $$.margin.top : Math.min(sy, my);
+ maxY = (config.data_selection_grouped) ? $$.height : Math.max(sy, my);
+
+ main.select('.' + CLASS.dragarea)
+ .attr('x', minX)
+ .attr('y', minY)
+ .attr('width', maxX - minX)
+ .attr('height', maxY - minY);
+ // TODO: binary search when multiple xs
+ main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape)
+ .filter(function (d) { return config.data_selection_isselectable(d); })
+ .each(function (d, i) {
+ var shape = d3.select(this),
+ isSelected = shape.classed(CLASS.SELECTED),
+ isIncluded = shape.classed(CLASS.INCLUDED),
+ _x, _y, _w, _h, toggle, isWithin = false, box;
+ if (shape.classed(CLASS.circle)) {
+ _x = shape.attr("cx") * 1;
+ _y = shape.attr("cy") * 1;
+ toggle = $$.togglePoint;
+ isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;
+ }
+ else if (shape.classed(CLASS.bar)) {
+ box = getPathBox(this);
+ _x = box.x;
+ _y = box.y;
+ _w = box.width;
+ _h = box.height;
+ toggle = $$.togglePath;
+ isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);
+ } else {
+ // line/area selection not supported yet
+ return;
+ }
+ if (isWithin ^ isIncluded) {
+ shape.classed(CLASS.INCLUDED, !isIncluded);
+ // TODO: included/unincluded callback here
+ shape.classed(CLASS.SELECTED, !isSelected);
+ toggle.call($$, !isSelected, shape, d, i);
+ }
+ });
+ };
+
+ c3_chart_internal_fn.dragstart = function (mouse) {
+ var $$ = this, config = $$.config;
+ if ($$.hasArcType()) { return; }
+ if (! config.data_selection_enabled) { return; } // do nothing if not selectable
+ $$.dragStart = mouse;
+ $$.main.select('.' + CLASS.chart).append('rect')
+ .attr('class', CLASS.dragarea)
+ .style('opacity', 0.1);
+ $$.dragging = true;
+ };
+
+ c3_chart_internal_fn.dragend = function () {
+ var $$ = this, config = $$.config;
+ if ($$.hasArcType()) { return; }
+ if (! config.data_selection_enabled) { return; } // do nothing if not selectable
+ $$.main.select('.' + CLASS.dragarea)
+ .transition().duration(100)
+ .style('opacity', 0)
+ .remove();
+ $$.main.selectAll('.' + CLASS.shape)
+ .classed(CLASS.INCLUDED, false);
+ $$.dragging = false;
+ };
+
+ c3_chart_internal_fn.selectPoint = function (target, d, i) {
+ var $$ = this, config = $$.config,
+ cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),
+ cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),
+ r = $$.pointSelectR.bind($$);
+ config.data_onselected.call($$.api, d, target.node());
+ // add selected-circle on low layer g
+ $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)
+ .data([d])
+ .enter().append('circle')
+ .attr("class", function () { return $$.generateClass(CLASS.selectedCircle, i); })
+ .attr("cx", cx)
+ .attr("cy", cy)
+ .attr("stroke", function () { return $$.color(d); })
+ .attr("r", function (d) { return $$.pointSelectR(d) * 1.4; })
+ .transition().duration(100)
+ .attr("r", r);
+ };
+ c3_chart_internal_fn.unselectPoint = function (target, d, i) {
+ var $$ = this;
+ $$.config.data_onunselected(d, target.node());
+ // remove selected-circle from low layer g
+ $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i)
+ .transition().duration(100).attr('r', 0)
+ .remove();
+ };
+ c3_chart_internal_fn.togglePoint = function (selected, target, d, i) {
+ selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);
+ };
+ c3_chart_internal_fn.selectPath = function (target, d) {
+ var $$ = this;
+ $$.config.data_onselected.call($$, d, target.node());
+ target.transition().duration(100)
+ .style("fill", function () { return $$.d3.rgb($$.color(d)).brighter(0.75); });
+ };
+ c3_chart_internal_fn.unselectPath = function (target, d) {
+ var $$ = this;
+ $$.config.data_onunselected.call($$, d, target.node());
+ target.transition().duration(100)
+ .style("fill", function () { return $$.color(d); });
+ };
+ c3_chart_internal_fn.togglePath = function (selected, target, d, i) {
+ selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);
+ };
+ c3_chart_internal_fn.getToggle = function (that, d) {
+ var $$ = this, toggle;
+ if (that.nodeName === 'circle') {
+ if ($$.isStepType(d)) {
+ // circle is hidden in step chart, so treat as within the click area
+ toggle = function () {}; // TODO: how to select step chart?
+ } else {
+ toggle = $$.togglePoint;
+ }
+ }
+ else if (that.nodeName === 'path') {
+ toggle = $$.togglePath;
+ }
+ return toggle;
+ };
+ c3_chart_internal_fn.toggleShape = function (that, d, i) {
+ var $$ = this, d3 = $$.d3, config = $$.config,
+ shape = d3.select(that), isSelected = shape.classed(CLASS.SELECTED),
+ toggle = $$.getToggle(that, d).bind($$);
+
+ if (config.data_selection_enabled && config.data_selection_isselectable(d)) {
+ if (!config.data_selection_multiple) {
+ $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : "")).selectAll('.' + CLASS.shape).each(function (d, i) {
+ var shape = d3.select(this);
+ if (shape.classed(CLASS.SELECTED)) { toggle(false, shape.classed(CLASS.SELECTED, false), d, i); }
+ });
+ }
+ shape.classed(CLASS.SELECTED, !isSelected);
+ toggle(!isSelected, shape, d, i);
+ }
+ };
+
+ c3_chart_internal_fn.initBrush = function () {
+ var $$ = this, d3 = $$.d3;
+ $$.brush = d3.svg.brush().on("brush", function () { $$.redrawForBrush(); });
+ $$.brush.update = function () {
+ if ($$.context) { $$.context.select('.' + CLASS.brush).call(this); }
+ return this;
+ };
+ $$.brush.scale = function (scale) {
+ return $$.config.axis_rotated ? this.y(scale) : this.x(scale);
+ };
+ };
+ c3_chart_internal_fn.initSubchart = function () {
+ var $$ = this, config = $$.config,
+ context = $$.context = $$.svg.append("g").attr("transform", $$.getTranslate('context'));
+
+ context.style('visibility', config.subchart_show ? 'visible' : 'hidden');
+
+ // Define g for chart area
+ context.append('g')
+ .attr("clip-path", $$.clipPathForSubchart)
+ .attr('class', CLASS.chart);
+
+ // Define g for bar chart area
+ context.select('.' + CLASS.chart).append("g")
+ .attr("class", CLASS.chartBars);
+
+ // Define g for line chart area
+ context.select('.' + CLASS.chart).append("g")
+ .attr("class", CLASS.chartLines);
+
+ // Add extent rect for Brush
+ context.append("g")
+ .attr("clip-path", $$.clipPath)
+ .attr("class", CLASS.brush)
+ .call($$.brush);
+
+ // ATTENTION: This must be called AFTER chart added
+ // Add Axis
+ $$.axes.subx = context.append("g")
+ .attr("class", CLASS.axisX)
+ .attr("transform", $$.getTranslate('subx'))
+ .attr("clip-path", config.axis_rotated ? "" : $$.clipPathForXAxis);
+ };
+ c3_chart_internal_fn.updateTargetsForSubchart = function (targets) {
+ var $$ = this, context = $$.context, config = $$.config,
+ contextLineEnter, contextLineUpdate, contextBarEnter, contextBarUpdate,
+ classChartBar = $$.classChartBar.bind($$),
+ classBars = $$.classBars.bind($$),
+ classChartLine = $$.classChartLine.bind($$),
+ classLines = $$.classLines.bind($$),
+ classAreas = $$.classAreas.bind($$);
+
+ if (config.subchart_show) {
+ //-- Bar --//
+ contextBarUpdate = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar)
+ .data(targets)
+ .attr('class', classChartBar);
+ contextBarEnter = contextBarUpdate.enter().append('g')
+ .style('opacity', 0)
+ .attr('class', classChartBar);
+ // Bars for each data
+ contextBarEnter.append('g')
+ .attr("class", classBars);
+
+ //-- Line --//
+ contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine)
+ .data(targets)
+ .attr('class', classChartLine);
+ contextLineEnter = contextLineUpdate.enter().append('g')
+ .style('opacity', 0)
+ .attr('class', classChartLine);
+ // Lines for each data
+ contextLineEnter.append("g")
+ .attr("class", classLines);
+ // Area
+ contextLineEnter.append("g")
+ .attr("class", classAreas);
+
+ //-- Brush --//
+ context.selectAll('.' + CLASS.brush + ' rect')
+ .attr(config.axis_rotated ? "width" : "height", config.axis_rotated ? $$.width2 : $$.height2);
+ }
+ };
+ c3_chart_internal_fn.updateBarForSubchart = function (durationForExit) {
+ var $$ = this;
+ $$.contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)
+ .data($$.barData.bind($$));
+ $$.contextBar.enter().append('path')
+ .attr("class", $$.classBar.bind($$))
+ .style("stroke", 'none')
+ .style("fill", $$.color);
+ $$.contextBar
+ .style("opacity", $$.initialOpacity.bind($$));
+ $$.contextBar.exit().transition().duration(durationForExit)
+ .style('opacity', 0)
+ .remove();
+ };
+ c3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {
+ (withTransition ? this.contextBar.transition().duration(duration) : this.contextBar)
+ .attr('d', drawBarOnSub)
+ .style('opacity', 1);
+ };
+ c3_chart_internal_fn.updateLineForSubchart = function (durationForExit) {
+ var $$ = this;
+ $$.contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line)
+ .data($$.lineData.bind($$));
+ $$.contextLine.enter().append('path')
+ .attr('class', $$.classLine.bind($$))
+ .style('stroke', $$.color);
+ $$.contextLine
+ .style("opacity", $$.initialOpacity.bind($$));
+ $$.contextLine.exit().transition().duration(durationForExit)
+ .style('opacity', 0)
+ .remove();
+ };
+ c3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {
+ (withTransition ? this.contextLine.transition().duration(duration) : this.contextLine)
+ .attr("d", drawLineOnSub)
+ .style('opacity', 1);
+ };
+ c3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) {
+ var $$ = this, d3 = $$.d3;
+ $$.contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)
+ .data($$.lineData.bind($$));
+ $$.contextArea.enter().append('path')
+ .attr("class", $$.classArea.bind($$))
+ .style("fill", $$.color)
+ .style("opacity", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });
+ $$.contextArea
+ .style("opacity", 0);
+ $$.contextArea.exit().transition().duration(durationForExit)
+ .style('opacity', 0)
+ .remove();
+ };
+ c3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {
+ (withTransition ? this.contextArea.transition().duration(duration) : this.contextArea)
+ .attr("d", drawAreaOnSub)
+ .style("fill", this.color)
+ .style("opacity", this.orgAreaOpacity);
+ };
+ c3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {
+ var $$ = this, d3 = $$.d3, config = $$.config,
+ drawAreaOnSub, drawBarOnSub, drawLineOnSub;
+
+ $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden');
+
+ // subchart
+ if (config.subchart_show) {
+ // reflect main chart to extent on subchart if zoomed
+ if (d3.event && d3.event.type === 'zoom') {
+ $$.brush.extent($$.x.orgDomain()).update();
+ }
+ // update subchart elements if needed
+ if (withSubchart) {
+
+ // extent rect
+ if (!$$.brush.empty()) {
+ $$.brush.extent($$.x.orgDomain()).update();
+ }
+ // setup drawer - MEMO: this must be called after axis updated
+ drawAreaOnSub = $$.generateDrawArea(areaIndices, true);
+ drawBarOnSub = $$.generateDrawBar(barIndices, true);
+ drawLineOnSub = $$.generateDrawLine(lineIndices, true);
+
+ $$.updateBarForSubchart(duration);
+ $$.updateLineForSubchart(duration);
+ $$.updateAreaForSubchart(duration);
+
+ $$.redrawBarForSubchart(drawBarOnSub, duration, duration);
+ $$.redrawLineForSubchart(drawLineOnSub, duration, duration);
+ $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);
+ }
+ }
+ };
+ c3_chart_internal_fn.redrawForBrush = function () {
+ var $$ = this, x = $$.x;
+ $$.redraw({
+ withTransition: false,
+ withY: $$.config.zoom_rescale,
+ withSubchart: false,
+ withUpdateXDomain: true,
+ withDimension: false
+ });
+ $$.config.subchart_onbrush.call($$.api, x.orgDomain());
+ };
+ c3_chart_internal_fn.transformContext = function (withTransition, transitions) {
+ var $$ = this, subXAxis;
+ if (transitions && transitions.axisSubX) {
+ subXAxis = transitions.axisSubX;
+ } else {
+ subXAxis = $$.context.select('.' + CLASS.axisX);
+ if (withTransition) { subXAxis = subXAxis.transition(); }
+ }
+ $$.context.attr("transform", $$.getTranslate('context'));
+ subXAxis.attr("transform", $$.getTranslate('subx'));
+ };
+ c3_chart_internal_fn.getDefaultExtent = function () {
+ var $$ = this, config = $$.config,
+ extent = isFunction(config.axis_x_extent) ? config.axis_x_extent($$.getXDomain($$.data.targets)) : config.axis_x_extent;
+ if ($$.isTimeSeries()) {
+ extent = [$$.parseDate(extent[0]), $$.parseDate(extent[1])];
+ }
+ return extent;
+ };
+
+ c3_chart_internal_fn.initZoom = function () {
+ var $$ = this, d3 = $$.d3, config = $$.config, startEvent;
+
+ $$.zoom = d3.behavior.zoom()
+ .on("zoomstart", function () {
+ startEvent = d3.event.sourceEvent;
+ $$.zoom.altDomain = d3.event.sourceEvent.altKey ? $$.x.orgDomain() : null;
+ config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);
+ })
+ .on("zoom", function () {
+ $$.redrawForZoom.call($$);
+ })
+ .on('zoomend', function () {
+ var event = d3.event.sourceEvent;
+ // if click, do nothing. otherwise, click interaction will be canceled.
+ if (event && startEvent.clientX === event.clientX && startEvent.clientY === event.clientY) {
+ return;
+ }
+ $$.redrawEventRect();
+ $$.updateZoom();
+ config.zoom_onzoomend.call($$.api, $$.x.orgDomain());
+ });
+ $$.zoom.scale = function (scale) {
+ return config.axis_rotated ? this.y(scale) : this.x(scale);
+ };
+ $$.zoom.orgScaleExtent = function () {
+ var extent = config.zoom_extent ? config.zoom_extent : [1, 10];
+ return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];
+ };
+ $$.zoom.updateScaleExtent = function () {
+ var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.orgXDomain),
+ extent = this.orgScaleExtent();
+ this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);
+ return this;
+ };
+ };
+ c3_chart_internal_fn.updateZoom = function () {
+ var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {};
+ $$.main.select('.' + CLASS.zoomRect).call(z).on("dblclick.zoom", null);
+ $$.main.selectAll('.' + CLASS.eventRect).call(z).on("dblclick.zoom", null);
+ };
+ c3_chart_internal_fn.redrawForZoom = function () {
+ var $$ = this, d3 = $$.d3, config = $$.config, zoom = $$.zoom, x = $$.x;
+ if (!config.zoom_enabled) {
+ return;
+ }
+ if ($$.filterTargetsToShow($$.data.targets).length === 0) {
+ return;
+ }
+ if (d3.event.sourceEvent.type === 'mousemove' && zoom.altDomain) {
+ x.domain(zoom.altDomain);
+ zoom.scale(x).updateScaleExtent();
+ return;
+ }
+ if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {
+ x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);
+ }
+ $$.redraw({
+ withTransition: false,
+ withY: config.zoom_rescale,
+ withSubchart: false,
+ withEventRect: false,
+ withDimension: false
+ });
+ if (d3.event.sourceEvent.type === 'mousemove') {
+ $$.cancelClick = true;
+ }
+ config.zoom_onzoom.call($$.api, x.orgDomain());
+ };
+
+ c3_chart_internal_fn.generateColor = function () {
+ var $$ = this, config = $$.config, d3 = $$.d3,
+ colors = config.data_colors,
+ pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.scale.category10().range(),
+ callback = config.data_color,
+ ids = [];
+
+ return function (d) {
+ var id = d.id || (d.data && d.data.id) || d, color;
+
+ // if callback function is provided
+ if (colors[id] instanceof Function) {
+ color = colors[id](d);
+ }
+ // if specified, choose that color
+ else if (colors[id]) {
+ color = colors[id];
+ }
+ // if not specified, choose from pattern
+ else {
+ if (ids.indexOf(id) < 0) { ids.push(id); }
+ color = pattern[ids.indexOf(id) % pattern.length];
+ colors[id] = color;
+ }
+ return callback instanceof Function ? callback(color, d) : color;
+ };
+ };
+ c3_chart_internal_fn.generateLevelColor = function () {
+ var $$ = this, config = $$.config,
+ colors = config.color_pattern,
+ threshold = config.color_threshold,
+ asValue = threshold.unit === 'value',
+ values = threshold.values && threshold.values.length ? threshold.values : [],
+ max = threshold.max || 100;
+ return notEmpty(config.color_threshold) ? function (value) {
+ var i, v, color = colors[colors.length - 1];
+ for (i = 0; i < values.length; i++) {
+ v = asValue ? value : (value * 100 / max);
+ if (v < values[i]) {
+ color = colors[i];
+ break;
+ }
+ }
+ return color;
+ } : null;
+ };
+
+ c3_chart_internal_fn.getYFormat = function (forArc) {
+ var $$ = this,
+ formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,
+ formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;
+ return function (v, ratio, id) {
+ var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;
+ return format.call($$, v, ratio);
+ };
+ };
+ c3_chart_internal_fn.yFormat = function (v) {
+ var $$ = this, config = $$.config,
+ format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;
+ return format(v);
+ };
+ c3_chart_internal_fn.y2Format = function (v) {
+ var $$ = this, config = $$.config,
+ format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;
+ return format(v);
+ };
+ c3_chart_internal_fn.defaultValueFormat = function (v) {
+ return isValue(v) ? +v : "";
+ };
+ c3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) {
+ return (ratio * 100).toFixed(1) + '%';
+ };
+ c3_chart_internal_fn.dataLabelFormat = function (targetId) {
+ var $$ = this, data_labels = $$.config.data_labels,
+ format, defaultFormat = function (v) { return isValue(v) ? +v : ""; };
+ // find format according to axis id
+ if (typeof data_labels.format === 'function') {
+ format = data_labels.format;
+ } else if (typeof data_labels.format === 'object') {
+ if (data_labels.format[targetId]) {
+ format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];
+ } else {
+ format = function () { return ''; };
+ }
+ } else {
+ format = defaultFormat;
+ }
+ return format;
+ };
+
+ c3_chart_internal_fn.hasCaches = function (ids) {
+ for (var i = 0; i < ids.length; i++) {
+ if (! (ids[i] in this.cache)) { return false; }
+ }
+ return true;
+ };
+ c3_chart_internal_fn.addCache = function (id, target) {
+ this.cache[id] = this.cloneTarget(target);
+ };
+ c3_chart_internal_fn.getCaches = function (ids) {
+ var targets = [], i;
+ for (i = 0; i < ids.length; i++) {
+ if (ids[i] in this.cache) { targets.push(this.cloneTarget(this.cache[ids[i]])); }
+ }
+ return targets;
+ };
+
+ var CLASS = c3_chart_internal_fn.CLASS = {
+ target: 'c3-target',
+ chart: 'c3-chart',
+ chartLine: 'c3-chart-line',
+ chartLines: 'c3-chart-lines',
+ chartBar: 'c3-chart-bar',
+ chartBars: 'c3-chart-bars',
+ chartText: 'c3-chart-text',
+ chartTexts: 'c3-chart-texts',
+ chartArc: 'c3-chart-arc',
+ chartArcs: 'c3-chart-arcs',
+ chartArcsTitle: 'c3-chart-arcs-title',
+ chartArcsBackground: 'c3-chart-arcs-background',
+ chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',
+ chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',
+ chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',
+ selectedCircle: 'c3-selected-circle',
+ selectedCircles: 'c3-selected-circles',
+ eventRect: 'c3-event-rect',
+ eventRects: 'c3-event-rects',
+ eventRectsSingle: 'c3-event-rects-single',
+ eventRectsMultiple: 'c3-event-rects-multiple',
+ zoomRect: 'c3-zoom-rect',
+ brush: 'c3-brush',
+ focused: 'c3-focused',
+ defocused: 'c3-defocused',
+ region: 'c3-region',
+ regions: 'c3-regions',
+ tooltipContainer: 'c3-tooltip-container',
+ tooltip: 'c3-tooltip',
+ tooltipName: 'c3-tooltip-name',
+ shape: 'c3-shape',
+ shapes: 'c3-shapes',
+ line: 'c3-line',
+ lines: 'c3-lines',
+ bar: 'c3-bar',
+ bars: 'c3-bars',
+ circle: 'c3-circle',
+ circles: 'c3-circles',
+ arc: 'c3-arc',
+ arcs: 'c3-arcs',
+ area: 'c3-area',
+ areas: 'c3-areas',
+ empty: 'c3-empty',
+ text: 'c3-text',
+ texts: 'c3-texts',
+ gaugeValue: 'c3-gauge-value',
+ grid: 'c3-grid',
+ gridLines: 'c3-grid-lines',
+ xgrid: 'c3-xgrid',
+ xgrids: 'c3-xgrids',
+ xgridLine: 'c3-xgrid-line',
+ xgridLines: 'c3-xgrid-lines',
+ xgridFocus: 'c3-xgrid-focus',
+ ygrid: 'c3-ygrid',
+ ygrids: 'c3-ygrids',
+ ygridLine: 'c3-ygrid-line',
+ ygridLines: 'c3-ygrid-lines',
+ axis: 'c3-axis',
+ axisX: 'c3-axis-x',
+ axisXLabel: 'c3-axis-x-label',
+ axisY: 'c3-axis-y',
+ axisYLabel: 'c3-axis-y-label',
+ axisY2: 'c3-axis-y2',
+ axisY2Label: 'c3-axis-y2-label',
+ legendBackground: 'c3-legend-background',
+ legendItem: 'c3-legend-item',
+ legendItemEvent: 'c3-legend-item-event',
+ legendItemTile: 'c3-legend-item-tile',
+ legendItemHidden: 'c3-legend-item-hidden',
+ legendItemFocused: 'c3-legend-item-focused',
+ dragarea: 'c3-dragarea',
+ EXPANDED: '_expanded_',
+ SELECTED: '_selected_',
+ INCLUDED: '_included_'
+ };
+ c3_chart_internal_fn.generateClass = function (prefix, targetId) {
+ return " " + prefix + " " + prefix + this.getTargetSelectorSuffix(targetId);
+ };
+ c3_chart_internal_fn.classText = function (d) {
+ return this.generateClass(CLASS.text, d.index);
+ };
+ c3_chart_internal_fn.classTexts = function (d) {
+ return this.generateClass(CLASS.texts, d.id);
+ };
+ c3_chart_internal_fn.classShape = function (d) {
+ return this.generateClass(CLASS.shape, d.index);
+ };
+ c3_chart_internal_fn.classShapes = function (d) {
+ return this.generateClass(CLASS.shapes, d.id);
+ };
+ c3_chart_internal_fn.classLine = function (d) {
+ return this.classShape(d) + this.generateClass(CLASS.line, d.id);
+ };
+ c3_chart_internal_fn.classLines = function (d) {
+ return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);
+ };
+ c3_chart_internal_fn.classCircle = function (d) {
+ return this.classShape(d) + this.generateClass(CLASS.circle, d.index);
+ };
+ c3_chart_internal_fn.classCircles = function (d) {
+ return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);
+ };
+ c3_chart_internal_fn.classBar = function (d) {
+ return this.classShape(d) + this.generateClass(CLASS.bar, d.index);
+ };
+ c3_chart_internal_fn.classBars = function (d) {
+ return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);
+ };
+ c3_chart_internal_fn.classArc = function (d) {
+ return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);
+ };
+ c3_chart_internal_fn.classArcs = function (d) {
+ return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);
+ };
+ c3_chart_internal_fn.classArea = function (d) {
+ return this.classShape(d) + this.generateClass(CLASS.area, d.id);
+ };
+ c3_chart_internal_fn.classAreas = function (d) {
+ return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);
+ };
+ c3_chart_internal_fn.classRegion = function (d, i) {
+ return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');
+ };
+ c3_chart_internal_fn.classEvent = function (d) {
+ return this.generateClass(CLASS.eventRect, d.index);
+ };
+ c3_chart_internal_fn.classTarget = function (id) {
+ var $$ = this;
+ var additionalClassSuffix = $$.config.data_classes[id], additionalClass = '';
+ if (additionalClassSuffix) {
+ additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;
+ }
+ return $$.generateClass(CLASS.target, id) + additionalClass;
+ };
+ c3_chart_internal_fn.classFocus = function (d) {
+ return this.classFocused(d) + this.classDefocused(d);
+ };
+ c3_chart_internal_fn.classFocused = function (d) {
+ return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');
+ };
+ c3_chart_internal_fn.classDefocused = function (d) {
+ return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');
+ };
+ c3_chart_internal_fn.classChartText = function (d) {
+ return CLASS.chartText + this.classTarget(d.id);
+ };
+ c3_chart_internal_fn.classChartLine = function (d) {
+ return CLASS.chartLine + this.classTarget(d.id);
+ };
+ c3_chart_internal_fn.classChartBar = function (d) {
+ return CLASS.chartBar + this.classTarget(d.id);
+ };
+ c3_chart_internal_fn.classChartArc = function (d) {
+ return CLASS.chartArc + this.classTarget(d.data.id);
+ };
+ c3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {
+ return targetId || targetId === 0 ? ('-' + targetId).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g, '-') : '';
+ };
+ c3_chart_internal_fn.selectorTarget = function (id, prefix) {
+ return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);
+ };
+ c3_chart_internal_fn.selectorTargets = function (ids, prefix) {
+ var $$ = this;
+ ids = ids || [];
+ return ids.length ? ids.map(function (id) { return $$.selectorTarget(id, prefix); }) : null;
+ };
+ c3_chart_internal_fn.selectorLegend = function (id) {
+ return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);
+ };
+ c3_chart_internal_fn.selectorLegends = function (ids) {
+ var $$ = this;
+ return ids && ids.length ? ids.map(function (id) { return $$.selectorLegend(id); }) : null;
+ };
+
+ var isValue = c3_chart_internal_fn.isValue = function (v) {
+ return v || v === 0;
+ },
+ isFunction = c3_chart_internal_fn.isFunction = function (o) {
+ return typeof o === 'function';
+ },
+ isString = c3_chart_internal_fn.isString = function (o) {
+ return typeof o === 'string';
+ },
+ isUndefined = c3_chart_internal_fn.isUndefined = function (v) {
+ return typeof v === 'undefined';
+ },
+ isDefined = c3_chart_internal_fn.isDefined = function (v) {
+ return typeof v !== 'undefined';
+ },
+ ceil10 = c3_chart_internal_fn.ceil10 = function (v) {
+ return Math.ceil(v / 10) * 10;
+ },
+ asHalfPixel = c3_chart_internal_fn.asHalfPixel = function (n) {
+ return Math.ceil(n) + 0.5;
+ },
+ diffDomain = c3_chart_internal_fn.diffDomain = function (d) {
+ return d[1] - d[0];
+ },
+ isEmpty = c3_chart_internal_fn.isEmpty = function (o) {
+ return !o || (isString(o) && o.length === 0) || (typeof o === 'object' && Object.keys(o).length === 0);
+ },
+ notEmpty = c3_chart_internal_fn.notEmpty = function (o) {
+ return Object.keys(o).length > 0;
+ },
+ getOption = c3_chart_internal_fn.getOption = function (options, key, defaultValue) {
+ return isDefined(options[key]) ? options[key] : defaultValue;
+ },
+ hasValue = c3_chart_internal_fn.hasValue = function (dict, value) {
+ var found = false;
+ Object.keys(dict).forEach(function (key) {
+ if (dict[key] === value) { found = true; }
+ });
+ return found;
+ },
+ getPathBox = c3_chart_internal_fn.getPathBox = function (path) {
+ var box = path.getBoundingClientRect(),
+ items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],
+ minX = items[0].x, minY = Math.min(items[0].y, items[1].y);
+ return {x: minX, y: minY, width: box.width, height: box.height};
+ };
+
+ c3_chart_fn.focus = function (targetIds) {
+ var $$ = this.internal, candidates;
+
+ targetIds = $$.mapToTargetIds(targetIds);
+ candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),
+
+ this.revert();
+ this.defocus();
+ candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);
+ if ($$.hasArcType()) {
+ $$.expandArc(targetIds);
+ }
+ $$.toggleFocusLegend(targetIds, true);
+
+ $$.focusedTargetIds = targetIds;
+ $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {
+ return targetIds.indexOf(id) < 0;
+ });
+ };
+
+ c3_chart_fn.defocus = function (targetIds) {
+ var $$ = this.internal, candidates;
+
+ targetIds = $$.mapToTargetIds(targetIds);
+ candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))),
+
+ candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);
+ if ($$.hasArcType()) {
+ $$.unexpandArc(targetIds);
+ }
+ $$.toggleFocusLegend(targetIds, false);
+
+ $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {
+ return targetIds.indexOf(id) < 0;
+ });
+ $$.defocusedTargetIds = targetIds;
+ };
+
+ c3_chart_fn.revert = function (targetIds) {
+ var $$ = this.internal, candidates;
+
+ targetIds = $$.mapToTargetIds(targetIds);
+ candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets
+
+ candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);
+ if ($$.hasArcType()) {
+ $$.unexpandArc(targetIds);
+ }
+ if ($$.config.legend_show) {
+ $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));
+ $$.legend.selectAll($$.selectorLegends(targetIds))
+ .filter(function () {
+ return $$.d3.select(this).classed(CLASS.legendItemFocused);
+ })
+ .classed(CLASS.legendItemFocused, false);
+ }
+
+ $$.focusedTargetIds = [];
+ $$.defocusedTargetIds = [];
+ };
+
+ c3_chart_fn.show = function (targetIds, options) {
+ var $$ = this.internal, targets;
+
+ targetIds = $$.mapToTargetIds(targetIds);
+ options = options || {};
+
+ $$.removeHiddenTargetIds(targetIds);
+ targets = $$.svg.selectAll($$.selectorTargets(targetIds));
+
+ targets.transition()
+ .style('opacity', 1, 'important')
+ .call($$.endall, function () {
+ targets.style('opacity', null).style('opacity', 1);
+ });
+
+ if (options.withLegend) {
+ $$.showLegend(targetIds);
+ }
+
+ $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});
+ };
+
+ c3_chart_fn.hide = function (targetIds, options) {
+ var $$ = this.internal, targets;
+
+ targetIds = $$.mapToTargetIds(targetIds);
+ options = options || {};
+
+ $$.addHiddenTargetIds(targetIds);
+ targets = $$.svg.selectAll($$.selectorTargets(targetIds));
+
+ targets.transition()
+ .style('opacity', 0, 'important')
+ .call($$.endall, function () {
+ targets.style('opacity', null).style('opacity', 0);
+ });
+
+ if (options.withLegend) {
+ $$.hideLegend(targetIds);
+ }
+
+ $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});
+ };
+
+ c3_chart_fn.toggle = function (targetIds, options) {
+ var that = this, $$ = this.internal;
+ $$.mapToTargetIds(targetIds).forEach(function (targetId) {
+ $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);
+ });
+ };
+
+ c3_chart_fn.zoom = function (domain) {
+ var $$ = this.internal;
+ if (domain) {
+ if ($$.isTimeSeries()) {
+ domain = domain.map(function (x) { return $$.parseDate(x); });
+ }
+ $$.brush.extent(domain);
+ $$.redraw({withUpdateXDomain: true, withY: $$.config.zoom_rescale});
+ $$.config.zoom_onzoom.call(this, $$.x.orgDomain());
+ }
+ return $$.brush.extent();
+ };
+ c3_chart_fn.zoom.enable = function (enabled) {
+ var $$ = this.internal;
+ $$.config.zoom_enabled = enabled;
+ $$.updateAndRedraw();
+ };
+ c3_chart_fn.unzoom = function () {
+ var $$ = this.internal;
+ $$.brush.clear().update();
+ $$.redraw({withUpdateXDomain: true});
+ };
+
+ c3_chart_fn.load = function (args) {
+ var $$ = this.internal, config = $$.config;
+ // update xs if specified
+ if (args.xs) {
+ $$.addXs(args.xs);
+ }
+ // update classes if exists
+ if ('classes' in args) {
+ Object.keys(args.classes).forEach(function (id) {
+ config.data_classes[id] = args.classes[id];
+ });
+ }
+ // update categories if exists
+ if ('categories' in args && $$.isCategorized()) {
+ config.axis_x_categories = args.categories;
+ }
+ // update axes if exists
+ if ('axes' in args) {
+ Object.keys(args.axes).forEach(function (id) {
+ config.data_axes[id] = args.axes[id];
+ });
+ }
+ // update colors if exists
+ if ('colors' in args) {
+ Object.keys(args.colors).forEach(function (id) {
+ config.data_colors[id] = args.colors[id];
+ });
+ }
+ // use cache if exists
+ if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {
+ $$.load($$.getCaches(args.cacheIds), args.done);
+ return;
+ }
+ // unload if needed
+ if ('unload' in args) {
+ // TODO: do not unload if target will load (included in url/rows/columns)
+ $$.unload($$.mapToTargetIds((typeof args.unload === 'boolean' && args.unload) ? null : args.unload), function () {
+ $$.loadFromArgs(args);
+ });
+ } else {
+ $$.loadFromArgs(args);
+ }
+ };
+
+ c3_chart_fn.unload = function (args) {
+ var $$ = this.internal;
+ args = args || {};
+ if (args instanceof Array) {
+ args = {ids: args};
+ } else if (typeof args === 'string') {
+ args = {ids: [args]};
+ }
+ $$.unload($$.mapToTargetIds(args.ids), function () {
+ $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true});
+ if (args.done) { args.done(); }
+ });
+ };
+
+ c3_chart_fn.flow = function (args) {
+ var $$ = this.internal,
+ targets, data, notfoundIds = [], orgDataCount = $$.getMaxDataCount(),
+ dataCount, domain, baseTarget, baseValue, length = 0, tail = 0, diff, to;
+
+ if (args.json) {
+ data = $$.convertJsonToData(args.json, args.keys);
+ }
+ else if (args.rows) {
+ data = $$.convertRowsToData(args.rows);
+ }
+ else if (args.columns) {
+ data = $$.convertColumnsToData(args.columns);
+ }
+ else {
+ return;
+ }
+ targets = $$.convertDataToTargets(data, true);
+
+ // Update/Add data
+ $$.data.targets.forEach(function (t) {
+ var found = false, i, j;
+ for (i = 0; i < targets.length; i++) {
+ if (t.id === targets[i].id) {
+ found = true;
+
+ if (t.values[t.values.length - 1]) {
+ tail = t.values[t.values.length - 1].index + 1;
+ }
+ length = targets[i].values.length;
+
+ for (j = 0; j < length; j++) {
+ targets[i].values[j].index = tail + j;
+ if (!$$.isTimeSeries()) {
+ targets[i].values[j].x = tail + j;
+ }
+ }
+ t.values = t.values.concat(targets[i].values);
+
+ targets.splice(i, 1);
+ break;
+ }
+ }
+ if (!found) { notfoundIds.push(t.id); }
+ });
+
+ // Append null for not found targets
+ $$.data.targets.forEach(function (t) {
+ var i, j;
+ for (i = 0; i < notfoundIds.length; i++) {
+ if (t.id === notfoundIds[i]) {
+ tail = t.values[t.values.length - 1].index + 1;
+ for (j = 0; j < length; j++) {
+ t.values.push({
+ id: t.id,
+ index: tail + j,
+ x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,
+ value: null
+ });
+ }
+ }
+ }
+ });
+
+ // Generate null values for new target
+ if ($$.data.targets.length) {
+ targets.forEach(function (t) {
+ var i, missing = [];
+ for (i = $$.data.targets[0].values[0].index; i < tail; i++) {
+ missing.push({
+ id: t.id,
+ index: i,
+ x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,
+ value: null
+ });
+ }
+ t.values.forEach(function (v) {
+ v.index += tail;
+ if (!$$.isTimeSeries()) {
+ v.x += tail;
+ }
+ });
+ t.values = missing.concat(t.values);
+ });
+ }
+ $$.data.targets = $$.data.targets.concat(targets); // add remained
+
+ // check data count because behavior needs to change when it's only one
+ dataCount = $$.getMaxDataCount();
+ baseTarget = $$.data.targets[0];
+ baseValue = baseTarget.values[0];
+
+ // Update length to flow if needed
+ if (isDefined(args.to)) {
+ length = 0;
+ to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;
+ baseTarget.values.forEach(function (v) {
+ if (v.x < to) { length++; }
+ });
+ } else if (isDefined(args.length)) {
+ length = args.length;
+ }
+
+ // If only one data, update the domain to flow from left edge of the chart
+ if (!orgDataCount) {
+ if ($$.isTimeSeries()) {
+ if (baseTarget.values.length > 1) {
+ diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;
+ } else {
+ diff = baseValue.x - $$.getXDomain($$.data.targets)[0];
+ }
+ } else {
+ diff = 1;
+ }
+ domain = [baseValue.x - diff, baseValue.x];
+ $$.updateXDomain(null, true, true, false, domain);
+ } else if (orgDataCount === 1) {
+ if ($$.isTimeSeries()) {
+ diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;
+ domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];
+ $$.updateXDomain(null, true, true, false, domain);
+ }
+ }
+
+ // Set targets
+ $$.updateTargets($$.data.targets);
+
+ // Redraw with new targets
+ $$.redraw({
+ flow: {
+ index: baseValue.index,
+ length: length,
+ duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,
+ done: args.done,
+ orgDataCount: orgDataCount,
+ },
+ withLegend: true,
+ withTransition: orgDataCount > 1,
+ withTrimXDomain: false,
+ withUpdateXAxis: true,
+ });
+ };
+
+ c3_chart_internal_fn.generateFlow = function (args) {
+ var $$ = this, config = $$.config, d3 = $$.d3;
+
+ return function () {
+ var targets = args.targets,
+ flow = args.flow,
+ drawBar = args.drawBar,
+ drawLine = args.drawLine,
+ drawArea = args.drawArea,
+ cx = args.cx,
+ cy = args.cy,
+ xv = args.xv,
+ xForText = args.xForText,
+ yForText = args.yForText,
+ duration = args.duration;
+
+ var translateX, scaleX = 1, transform,
+ flowIndex = flow.index,
+ flowLength = flow.length,
+ flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),
+ flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),
+ orgDomain = $$.x.domain(), domain,
+ durationForFlow = flow.duration || duration,
+ done = flow.done || function () {},
+ wait = $$.generateWait();
+
+ var xgrid = $$.xgrid || d3.selectAll([]),
+ xgridLines = $$.xgridLines || d3.selectAll([]),
+ mainRegion = $$.mainRegion || d3.selectAll([]),
+ mainText = $$.mainText || d3.selectAll([]),
+ mainBar = $$.mainBar || d3.selectAll([]),
+ mainLine = $$.mainLine || d3.selectAll([]),
+ mainArea = $$.mainArea || d3.selectAll([]),
+ mainCircle = $$.mainCircle || d3.selectAll([]);
+
+ // set flag
+ $$.flowing = true;
+
+ // remove head data after rendered
+ $$.data.targets.forEach(function (d) {
+ d.values.splice(0, flowLength);
+ });
+
+ // update x domain to generate axis elements for flow
+ domain = $$.updateXDomain(targets, true, true);
+ // update elements related to x scale
+ if ($$.updateXGrid) { $$.updateXGrid(true); }
+
+ // generate transform to flow
+ if (!flow.orgDataCount) { // if empty
+ if ($$.data.targets[0].values.length !== 1) {
+ translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);
+ } else {
+ if ($$.isTimeSeries()) {
+ flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);
+ flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);
+ translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);
+ } else {
+ translateX = diffDomain(domain) / 2;
+ }
+ }
+ } else if (flow.orgDataCount === 1 || flowStart.x === flowEnd.x) {
+ translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);
+ } else {
+ if ($$.isTimeSeries()) {
+ translateX = ($$.x(orgDomain[0]) - $$.x(domain[0]));
+ } else {
+ translateX = ($$.x(flowStart.x) - $$.x(flowEnd.x));
+ }
+ }
+ scaleX = (diffDomain(orgDomain) / diffDomain(domain));
+ transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';
+
+ // hide tooltip
+ $$.hideXGridFocus();
+ $$.hideTooltip();
+
+ d3.transition().ease('linear').duration(durationForFlow).each(function () {
+ wait.add($$.axes.x.transition().call($$.xAxis));
+ wait.add(mainBar.transition().attr('transform', transform));
+ wait.add(mainLine.transition().attr('transform', transform));
+ wait.add(mainArea.transition().attr('transform', transform));
+ wait.add(mainCircle.transition().attr('transform', transform));
+ wait.add(mainText.transition().attr('transform', transform));
+ wait.add(mainRegion.filter($$.isRegionOnX).transition().attr('transform', transform));
+ wait.add(xgrid.transition().attr('transform', transform));
+ wait.add(xgridLines.transition().attr('transform', transform));
+ })
+ .call(wait, function () {
+ var i, shapes = [], texts = [], eventRects = [];
+
+ // remove flowed elements
+ if (flowLength) {
+ for (i = 0; i < flowLength; i++) {
+ shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));
+ texts.push('.' + CLASS.text + '-' + (flowIndex + i));
+ eventRects.push('.' + CLASS.eventRect + '-' + (flowIndex + i));
+ }
+ $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();
+ $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();
+ $$.svg.selectAll('.' + CLASS.eventRects).selectAll(eventRects).remove();
+ $$.svg.select('.' + CLASS.xgrid).remove();
+ }
+
+ // draw again for removing flowed elements and reverting attr
+ xgrid
+ .attr('transform', null)
+ .attr($$.xgridAttr);
+ xgridLines
+ .attr('transform', null);
+ xgridLines.select('line')
+ .attr("x1", config.axis_rotated ? 0 : xv)
+ .attr("x2", config.axis_rotated ? $$.width : xv);
+ xgridLines.select('text')
+ .attr("x", config.axis_rotated ? $$.width : 0)
+ .attr("y", xv);
+ mainBar
+ .attr('transform', null)
+ .attr("d", drawBar);
+ mainLine
+ .attr('transform', null)
+ .attr("d", drawLine);
+ mainArea
+ .attr('transform', null)
+ .attr("d", drawArea);
+ mainCircle
+ .attr('transform', null)
+ .attr("cx", cx)
+ .attr("cy", cy);
+ mainText
+ .attr('transform', null)
+ .attr('x', xForText)
+ .attr('y', yForText)
+ .style('fill-opacity', $$.opacityForText.bind($$));
+ mainRegion
+ .attr('transform', null);
+ mainRegion.select('rect').filter($$.isRegionOnX)
+ .attr("x", $$.regionX.bind($$))
+ .attr("width", $$.regionWidth.bind($$));
+
+ if (config.interaction_enabled) {
+ $$.redrawEventRect();
+ }
+
+ // callback for end of flow
+ done();
+
+ $$.flowing = false;
+ });
+ };
+ };
+
+ c3_chart_fn.selected = function (targetId) {
+ var $$ = this.internal, d3 = $$.d3;
+ return d3.merge(
+ $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape)
+ .filter(function () { return d3.select(this).classed(CLASS.SELECTED); })
+ .map(function (d) { return d.map(function (d) { var data = d.__data__; return data.data ? data.data : data; }); })
+ );
+ };
+ c3_chart_fn.select = function (ids, indices, resetOther) {
+ var $$ = this.internal, d3 = $$.d3, config = $$.config;
+ if (! config.data_selection_enabled) { return; }
+ $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {
+ var shape = d3.select(this), id = d.data ? d.data.id : d.id,
+ toggle = $$.getToggle(this, d).bind($$),
+ isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,
+ isTargetIndex = !indices || indices.indexOf(i) >= 0,
+ isSelected = shape.classed(CLASS.SELECTED);
+ // line/area selection not supported yet
+ if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {
+ return;
+ }
+ if (isTargetId && isTargetIndex) {
+ if (config.data_selection_isselectable(d) && !isSelected) {
+ toggle(true, shape.classed(CLASS.SELECTED, true), d, i);
+ }
+ } else if (isDefined(resetOther) && resetOther) {
+ if (isSelected) {
+ toggle(false, shape.classed(CLASS.SELECTED, false), d, i);
+ }
+ }
+ });
+ };
+ c3_chart_fn.unselect = function (ids, indices) {
+ var $$ = this.internal, d3 = $$.d3, config = $$.config;
+ if (! config.data_selection_enabled) { return; }
+ $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {
+ var shape = d3.select(this), id = d.data ? d.data.id : d.id,
+ toggle = $$.getToggle(this, d).bind($$),
+ isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,
+ isTargetIndex = !indices || indices.indexOf(i) >= 0,
+ isSelected = shape.classed(CLASS.SELECTED);
+ // line/area selection not supported yet
+ if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {
+ return;
+ }
+ if (isTargetId && isTargetIndex) {
+ if (config.data_selection_isselectable(d)) {
+ if (isSelected) {
+ toggle(false, shape.classed(CLASS.SELECTED, false), d, i);
+ }
+ }
+ }
+ });
+ };
+
+ c3_chart_fn.transform = function (type, targetIds) {
+ var $$ = this.internal,
+ options = ['pie', 'donut'].indexOf(type) >= 0 ? {withTransform: true} : null;
+ $$.transformTo(targetIds, type, options);
+ };
+
+ c3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) {
+ var $$ = this,
+ withTransitionForAxis = !$$.hasArcType(),
+ options = optionsForRedraw || {withTransitionForAxis: withTransitionForAxis};
+ options.withTransitionForTransform = false;
+ $$.transiting = false;
+ $$.setTargetType(targetIds, type);
+ $$.updateTargets($$.data.targets); // this is needed when transforming to arc
+ $$.updateAndRedraw(options);
+ };
+
+ c3_chart_fn.groups = function (groups) {
+ var $$ = this.internal, config = $$.config;
+ if (isUndefined(groups)) { return config.data_groups; }
+ config.data_groups = groups;
+ $$.redraw();
+ return config.data_groups;
+ };
+
+ c3_chart_fn.xgrids = function (grids) {
+ var $$ = this.internal, config = $$.config;
+ if (! grids) { return config.grid_x_lines; }
+ config.grid_x_lines = grids;
+ $$.redrawWithoutRescale();
+ return config.grid_x_lines;
+ };
+ c3_chart_fn.xgrids.add = function (grids) {
+ var $$ = this.internal;
+ return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));
+ };
+ c3_chart_fn.xgrids.remove = function (params) { // TODO: multiple
+ var $$ = this.internal;
+ $$.removeGridLines(params, true);
+ };
+
+ c3_chart_fn.ygrids = function (grids) {
+ var $$ = this.internal, config = $$.config;
+ if (! grids) { return config.grid_y_lines; }
+ config.grid_y_lines = grids;
+ $$.redrawWithoutRescale();
+ return config.grid_y_lines;
+ };
+ c3_chart_fn.ygrids.add = function (grids) {
+ var $$ = this.internal;
+ return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));
+ };
+ c3_chart_fn.ygrids.remove = function (params) { // TODO: multiple
+ var $$ = this.internal;
+ $$.removeGridLines(params, false);
+ };
+
+ c3_chart_fn.regions = function (regions) {
+ var $$ = this.internal, config = $$.config;
+ if (!regions) { return config.regions; }
+ config.regions = regions;
+ $$.redrawWithoutRescale();
+ return config.regions;
+ };
+ c3_chart_fn.regions.add = function (regions) {
+ var $$ = this.internal, config = $$.config;
+ if (!regions) { return config.regions; }
+ config.regions = config.regions.concat(regions);
+ $$.redrawWithoutRescale();
+ return config.regions;
+ };
+ c3_chart_fn.regions.remove = function (options) {
+ var $$ = this.internal, config = $$.config,
+ duration, classes, regions;
+
+ options = options || {};
+ duration = $$.getOption(options, "duration", config.transition_duration);
+ classes = $$.getOption(options, "classes", [CLASS.region]);
+
+ regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) { return '.' + c; }));
+ (duration ? regions.transition().duration(duration) : regions)
+ .style('opacity', 0)
+ .remove();
+
+ config.regions = config.regions.filter(function (region) {
+ var found = false;
+ if (!region['class']) {
+ return true;
+ }
+ region['class'].split(' ').forEach(function (c) {
+ if (classes.indexOf(c) >= 0) { found = true; }
+ });
+ return !found;
+ });
+
+ return config.regions;
+ };
+
+ c3_chart_fn.data = function (targetIds) {
+ var targets = this.internal.data.targets;
+ return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {
+ return [].concat(targetIds).indexOf(t.id) >= 0;
+ });
+ };
+ c3_chart_fn.data.shown = function (targetIds) {
+ return this.internal.filterTargetsToShow(this.data(targetIds));
+ };
+ c3_chart_fn.data.values = function (targetId) {
+ var targets, values = null;
+ if (targetId) {
+ targets = this.data(targetId);
+ values = targets[0] ? targets[0].values.map(function (d) { return d.value; }) : null;
+ }
+ return values;
+ };
+ c3_chart_fn.data.names = function (names) {
+ this.internal.clearLegendItemTextBoxCache();
+ return this.internal.updateDataAttributes('names', names);
+ };
+ c3_chart_fn.data.colors = function (colors) {
+ return this.internal.updateDataAttributes('colors', colors);
+ };
+ c3_chart_fn.data.axes = function (axes) {
+ return this.internal.updateDataAttributes('axes', axes);
+ };
+
+ c3_chart_fn.category = function (i, category) {
+ var $$ = this.internal, config = $$.config;
+ if (arguments.length > 1) {
+ config.axis_x_categories[i] = category;
+ $$.redraw();
+ }
+ return config.axis_x_categories[i];
+ };
+ c3_chart_fn.categories = function (categories) {
+ var $$ = this.internal, config = $$.config;
+ if (!arguments.length) { return config.axis_x_categories; }
+ config.axis_x_categories = categories;
+ $$.redraw();
+ return config.axis_x_categories;
+ };
+
+ // TODO: fix
+ c3_chart_fn.color = function (id) {
+ var $$ = this.internal;
+ return $$.color(id); // more patterns
+ };
+
+ c3_chart_fn.x = function (x) {
+ var $$ = this.internal;
+ if (arguments.length) {
+ $$.updateTargetX($$.data.targets, x);
+ $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});
+ }
+ return $$.data.xs;
+ };
+ c3_chart_fn.xs = function (xs) {
+ var $$ = this.internal;
+ if (arguments.length) {
+ $$.updateTargetXs($$.data.targets, xs);
+ $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});
+ }
+ return $$.data.xs;
+ };
+
+ c3_chart_fn.axis = function () {};
+ c3_chart_fn.axis.labels = function (labels) {
+ var $$ = this.internal;
+ if (arguments.length) {
+ Object.keys(labels).forEach(function (axisId) {
+ $$.axis.setLabelText(axisId, labels[axisId]);
+ });
+ $$.axis.updateLabels();
+ }
+ // TODO: return some values?
+ };
+ c3_chart_fn.axis.max = function (max) {
+ var $$ = this.internal, config = $$.config;
+ if (arguments.length) {
+ if (typeof max === 'object') {
+ if (isValue(max.x)) { config.axis_x_max = max.x; }
+ if (isValue(max.y)) { config.axis_y_max = max.y; }
+ if (isValue(max.y2)) { config.axis_y2_max = max.y2; }
+ } else {
+ config.axis_y_max = config.axis_y2_max = max;
+ }
+ $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});
+ } else {
+ return {
+ x: config.axis_x_max,
+ y: config.axis_y_max,
+ y2: config.axis_y2_max
+ };
+ }
+ };
+ c3_chart_fn.axis.min = function (min) {
+ var $$ = this.internal, config = $$.config;
+ if (arguments.length) {
+ if (typeof min === 'object') {
+ if (isValue(min.x)) { config.axis_x_min = min.x; }
+ if (isValue(min.y)) { config.axis_y_min = min.y; }
+ if (isValue(min.y2)) { config.axis_y2_min = min.y2; }
+ } else {
+ config.axis_y_min = config.axis_y2_min = min;
+ }
+ $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true});
+ } else {
+ return {
+ x: config.axis_x_min,
+ y: config.axis_y_min,
+ y2: config.axis_y2_min
+ };
+ }
+ };
+ c3_chart_fn.axis.range = function (range) {
+ if (arguments.length) {
+ if (isDefined(range.max)) { this.axis.max(range.max); }
+ if (isDefined(range.min)) { this.axis.min(range.min); }
+ } else {
+ return {
+ max: this.axis.max(),
+ min: this.axis.min()
+ };
+ }
+ };
+
+ c3_chart_fn.legend = function () {};
+ c3_chart_fn.legend.show = function (targetIds) {
+ var $$ = this.internal;
+ $$.showLegend($$.mapToTargetIds(targetIds));
+ $$.updateAndRedraw({withLegend: true});
+ };
+ c3_chart_fn.legend.hide = function (targetIds) {
+ var $$ = this.internal;
+ $$.hideLegend($$.mapToTargetIds(targetIds));
+ $$.updateAndRedraw({withLegend: true});
+ };
+
+ c3_chart_fn.resize = function (size) {
+ var $$ = this.internal, config = $$.config;
+ config.size_width = size ? size.width : null;
+ config.size_height = size ? size.height : null;
+ this.flush();
+ };
+
+ c3_chart_fn.flush = function () {
+ var $$ = this.internal;
+ $$.updateAndRedraw({withLegend: true, withTransition: false, withTransitionForTransform: false});
+ };
+
+ c3_chart_fn.destroy = function () {
+ var $$ = this.internal;
+
+ window.clearInterval($$.intervalForObserveInserted);
+ window.onresize = null;
+
+ $$.selectChart.classed('c3', false).html("");
+
+ // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.
+ Object.keys($$).forEach(function (key) {
+ $$[key] = null;
+ });
+
+ return null;
+ };
+
+ c3_chart_fn.tooltip = function () {};
+ c3_chart_fn.tooltip.show = function (args) {
+ var $$ = this.internal, index, mouse;
+
+ // determine mouse position on the chart
+ if (args.mouse) {
+ mouse = args.mouse;
+ }
+
+ // determine focus data
+ if (args.data) {
+ if ($$.isMultipleX()) {
+ // if multiple xs, target point will be determined by mouse
+ mouse = [$$.x(args.data.x), $$.getYScale(args.data.id)(args.data.value)];
+ index = null;
+ } else {
+ // TODO: when tooltip_grouped = false
+ index = isValue(args.data.index) ? args.data.index : $$.getIndexByX(args.data.x);
+ }
+ }
+ else if (typeof args.x !== 'undefined') {
+ index = $$.getIndexByX(args.x);
+ }
+ else if (typeof args.index !== 'undefined') {
+ index = args.index;
+ }
+
+ // emulate mouse events to show
+ $$.dispatchEvent('mouseover', index, mouse);
+ $$.dispatchEvent('mousemove', index, mouse);
+ };
+ c3_chart_fn.tooltip.hide = function () {
+ // TODO: get target data by checking the state of focus
+ this.internal.dispatchEvent('mouseout', 0);
+ };
+
+ // Features:
+ // 1. category axis
+ // 2. ceil values of translate/x/y to int for half pixel antialiasing
+ // 3. multiline tick text
+ var tickTextCharSize;
+ function c3_axis(d3, params) {
+ var scale = d3.scale.linear(), orient = "bottom", innerTickSize = 6, outerTickSize, tickPadding = 3, tickValues = null, tickFormat, tickArguments;
+
+ var tickOffset = 0, tickCulling = true, tickCentered;
+
+ params = params || {};
+ outerTickSize = params.withOuterTick ? 6 : 0;
+
+ function axisX(selection, x) {
+ selection.attr("transform", function (d) {
+ return "translate(" + Math.ceil(x(d) + tickOffset) + ", 0)";
+ });
+ }
+ function axisY(selection, y) {
+ selection.attr("transform", function (d) {
+ return "translate(0," + Math.ceil(y(d)) + ")";
+ });
+ }
+ function scaleExtent(domain) {
+ var start = domain[0], stop = domain[domain.length - 1];
+ return start < stop ? [ start, stop ] : [ stop, start ];
+ }
+ function generateTicks(scale) {
+ var i, domain, ticks = [];
+ if (scale.ticks) {
+ return scale.ticks.apply(scale, tickArguments);
+ }
+ domain = scale.domain();
+ for (i = Math.ceil(domain[0]); i < domain[1]; i++) {
+ ticks.push(i);
+ }
+ if (ticks.length > 0 && ticks[0] > 0) {
+ ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));
+ }
+ return ticks;
+ }
+ function copyScale() {
+ var newScale = scale.copy(), domain;
+ if (params.isCategory) {
+ domain = scale.domain();
+ newScale.domain([domain[0], domain[1] - 1]);
+ }
+ return newScale;
+ }
+ function textFormatted(v) {
+ var formatted = tickFormat ? tickFormat(v) : v;
+ return typeof formatted !== 'undefined' ? formatted : '';
+ }
+ function getSizeFor1Char(tick) {
+ if (tickTextCharSize) {
+ return tickTextCharSize;
+ }
+ var size = {
+ h: 11.5,
+ w: 5.5
+ };
+ tick.select('text').text(textFormatted).each(function (d) {
+ var box = this.getBoundingClientRect(),
+ text = textFormatted(d),
+ h = box.height,
+ w = text ? (box.width / text.length) : undefined;
+ if (h && w) {
+ size.h = h;
+ size.w = w;
+ }
+ }).text('');
+ tickTextCharSize = size;
+ return size;
+ }
+ function transitionise(selection) {
+ return params.withoutTransition ? selection : d3.transition(selection);
+ }
+ function axis(g) {
+ g.each(function () {
+ var g = axis.g = d3.select(this);
+
+ var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = copyScale();
+
+ var ticks = tickValues ? tickValues : generateTicks(scale1),
+ tick = g.selectAll(".tick").data(ticks, scale1),
+ tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", 1e-6),
+ // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.
+ tickExit = tick.exit().remove(),
+ tickUpdate = transitionise(tick).style("opacity", 1),
+ tickTransform, tickX, tickY;
+
+ var range = scale.rangeExtent ? scale.rangeExtent() : scaleExtent(scale.range()),
+ path = g.selectAll(".domain").data([ 0 ]),
+ pathUpdate = (path.enter().append("path").attr("class", "domain"), transitionise(path));
+ tickEnter.append("line");
+ tickEnter.append("text");
+
+ var lineEnter = tickEnter.select("line"),
+ lineUpdate = tickUpdate.select("line"),
+ textEnter = tickEnter.select("text"),
+ textUpdate = tickUpdate.select("text");
+
+ if (params.isCategory) {
+ tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);
+ tickX = tickCentered ? 0 : tickOffset;
+ tickY = tickCentered ? tickOffset : 0;
+ } else {
+ tickOffset = tickX = 0;
+ }
+
+ var text, tspan, sizeFor1Char = getSizeFor1Char(g.select('.tick')), counts = [];
+ var tickLength = Math.max(innerTickSize, 0) + tickPadding,
+ isVertical = orient === 'left' || orient === 'right';
+
+ // this should be called only when category axis
+ function splitTickText(d, maxWidth) {
+ var tickText = textFormatted(d),
+ subtext, spaceIndex, textWidth, splitted = [];
+
+ if (Object.prototype.toString.call(tickText) === "[object Array]") {
+ return tickText;
+ }
+
+ if (!maxWidth || maxWidth <= 0) {
+ maxWidth = isVertical ? 95 : params.isCategory ? (Math.ceil(scale1(ticks[1]) - scale1(ticks[0])) - 12) : 110;
+ }
+
+ function split(splitted, text) {
+ spaceIndex = undefined;
+ for (var i = 1; i < text.length; i++) {
+ if (text.charAt(i) === ' ') {
+ spaceIndex = i;
+ }
+ subtext = text.substr(0, i + 1);
+ textWidth = sizeFor1Char.w * subtext.length;
+ // if text width gets over tick width, split by space index or crrent index
+ if (maxWidth < textWidth) {
+ return split(
+ splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)),
+ text.slice(spaceIndex ? spaceIndex + 1 : i)
+ );
+ }
+ }
+ return splitted.concat(text);
+ }
+
+ return split(splitted, tickText + "");
+ }
+
+ function tspanDy(d, i) {
+ var dy = sizeFor1Char.h;
+ if (i === 0) {
+ if (orient === 'left' || orient === 'right') {
+ dy = -((counts[d.index] - 1) * (sizeFor1Char.h / 2) - 3);
+ } else {
+ dy = ".71em";
+ }
+ }
+ return dy;
+ }
+
+ function tickSize(d) {
+ var tickPosition = scale(d) + (tickCentered ? 0 : tickOffset);
+ return range[0] < tickPosition && tickPosition < range[1] ? innerTickSize : 0;
+ }
+
+ text = tick.select("text");
+ tspan = text.selectAll('tspan')
+ .data(function (d, i) {
+ var splitted = params.tickMultiline ? splitTickText(d, params.tickWidth) : [].concat(textFormatted(d));
+ counts[i] = splitted.length;
+ return splitted.map(function (s) {
+ return { index: i, splitted: s };
+ });
+ });
+ tspan.enter().append('tspan');
+ tspan.exit().remove();
+ tspan.text(function (d) { return d.splitted; });
+
+ var rotate = params.tickTextRotate;
+
+ function textAnchorForText(rotate) {
+ if (!rotate) {
+ return 'middle';
+ }
+ return rotate > 0 ? "start" : "end";
+ }
+ function textTransform(rotate) {
+ if (!rotate) {
+ return '';
+ }
+ return "rotate(" + rotate + ")";
+ }
+ function dxForText(rotate) {
+ if (!rotate) {
+ return 0;
+ }
+ return 8 * Math.sin(Math.PI * (rotate / 180));
+ }
+ function yForText(rotate) {
+ if (!rotate) {
+ return tickLength;
+ }
+ return 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1);
+ }
+
+ switch (orient) {
+ case "bottom":
+ {
+ tickTransform = axisX;
+ lineEnter.attr("y2", innerTickSize);
+ textEnter.attr("y", tickLength);
+ lineUpdate.attr("x1", tickX).attr("x2", tickX).attr("y2", tickSize);
+ textUpdate.attr("x", 0).attr("y", yForText(rotate))
+ .style("text-anchor", textAnchorForText(rotate))
+ .attr("transform", textTransform(rotate));
+ tspan.attr('x', 0).attr("dy", tspanDy).attr('dx', dxForText(rotate));
+ pathUpdate.attr("d", "M" + range[0] + "," + outerTickSize + "V0H" + range[1] + "V" + outerTickSize);
+ break;
+ }
+ case "top":
+ {
+ // TODO: rotated tick text
+ tickTransform = axisX;
+ lineEnter.attr("y2", -innerTickSize);
+ textEnter.attr("y", -tickLength);
+ lineUpdate.attr("x2", 0).attr("y2", -innerTickSize);
+ textUpdate.attr("x", 0).attr("y", -tickLength);
+ text.style("text-anchor", "middle");
+ tspan.attr('x', 0).attr("dy", "0em");
+ pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize);
+ break;
+ }
+ case "left":
+ {
+ tickTransform = axisY;
+ lineEnter.attr("x2", -innerTickSize);
+ textEnter.attr("x", -tickLength);
+ lineUpdate.attr("x2", -innerTickSize).attr("y1", tickY).attr("y2", tickY);
+ textUpdate.attr("x", -tickLength).attr("y", tickOffset);
+ text.style("text-anchor", "end");
+ tspan.attr('x', -tickLength).attr("dy", tspanDy);
+ pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize);
+ break;
+ }
+ case "right":
+ {
+ tickTransform = axisY;
+ lineEnter.attr("x2", innerTickSize);
+ textEnter.attr("x", tickLength);
+ lineUpdate.attr("x2", innerTickSize).attr("y2", 0);
+ textUpdate.attr("x", tickLength).attr("y", 0);
+ text.style("text-anchor", "start");
+ tspan.attr('x', tickLength).attr("dy", tspanDy);
+ pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize);
+ break;
+ }
+ }
+ if (scale1.rangeBand) {
+ var x = scale1, dx = x.rangeBand() / 2;
+ scale0 = scale1 = function (d) {
+ return x(d) + dx;
+ };
+ } else if (scale0.rangeBand) {
+ scale0 = scale1;
+ } else {
+ tickExit.call(tickTransform, scale1);
+ }
+ tickEnter.call(tickTransform, scale0);
+ tickUpdate.call(tickTransform, scale1);
+ });
+ }
+ axis.scale = function (x) {
+ if (!arguments.length) { return scale; }
+ scale = x;
+ return axis;
+ };
+ axis.orient = function (x) {
+ if (!arguments.length) { return orient; }
+ orient = x in {top: 1, right: 1, bottom: 1, left: 1} ? x + "" : "bottom";
+ return axis;
+ };
+ axis.tickFormat = function (format) {
+ if (!arguments.length) { return tickFormat; }
+ tickFormat = format;
+ return axis;
+ };
+ axis.tickCentered = function (isCentered) {
+ if (!arguments.length) { return tickCentered; }
+ tickCentered = isCentered;
+ return axis;
+ };
+ axis.tickOffset = function () {
+ return tickOffset;
+ };
+ axis.tickInterval = function () {
+ var interval, length;
+ if (params.isCategory) {
+ interval = tickOffset * 2;
+ }
+ else {
+ length = axis.g.select('path.domain').node().getTotalLength() - outerTickSize * 2;
+ interval = length / axis.g.selectAll('line').size();
+ }
+ return interval === Infinity ? 0 : interval;
+ };
+ axis.ticks = function () {
+ if (!arguments.length) { return tickArguments; }
+ tickArguments = arguments;
+ return axis;
+ };
+ axis.tickCulling = function (culling) {
+ if (!arguments.length) { return tickCulling; }
+ tickCulling = culling;
+ return axis;
+ };
+ axis.tickValues = function (x) {
+ if (typeof x === 'function') {
+ tickValues = function () {
+ return x(scale.domain());
+ };
+ }
+ else {
+ if (!arguments.length) { return tickValues; }
+ tickValues = x;
+ }
+ return axis;
+ };
+ return axis;
+ }
+
+ c3_chart_internal_fn.isSafari = function () {
+ var ua = window.navigator.userAgent;
+ return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;
+ };
+ c3_chart_internal_fn.isChrome = function () {
+ var ua = window.navigator.userAgent;
+ return ua.indexOf('Chrome') >= 0;
+ };
+
+ // PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use
+ // this polyfill to avoid the confusion.
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill
+
+ if (!Function.prototype.bind) {
+ Function.prototype.bind = function(oThis) {
+ if (typeof this !== 'function') {
+ // closest thing possible to the ECMAScript 5
+ // internal IsCallable function
+ throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
+ }
+
+ var aArgs = Array.prototype.slice.call(arguments, 1),
+ fToBind = this,
+ fNOP = function() {},
+ fBound = function() {
+ return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
+ };
+
+ fNOP.prototype = this.prototype;
+ fBound.prototype = new fNOP();
+
+ return fBound;
+ };
+ }
+
+ if (typeof define === 'function' && define.amd) {
+ define("c3", ["d3"], c3);
+ } else if ('undefined' !== typeof exports && 'undefined' !== typeof module) {
+ module.exports = c3;
+ } else {
+ window.c3 = c3;
+ }
+
+})(window);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.min.css
new file mode 100644
index 0000000..08e5084
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.min.css
@@ -0,0 +1 @@
+.c3 svg{font:10px sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:gray;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #CCC}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#FFF}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max,.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.min.js
new file mode 100644
index 0000000..d99c28b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/c3.min.js
@@ -0,0 +1,5 @@
+!function(a){"use strict";function b(a){this.owner=a}function c(a,b){if(Object.create)b.prototype=Object.create(a.prototype);else{var c=function(){};c.prototype=a.prototype,b.prototype=new c}return b.prototype.constructor=b,b}function d(a){var b=this.internal=new e(this);b.loadConfig(a),b.init(),function c(a,b,d){Object.keys(a).forEach(function(e){b[e]=a[e].bind(d),Object.keys(a[e]).length>0&&c(a[e],b[e],d)})}(h,this,this)}function e(b){var c=this;c.d3=a.d3?a.d3:"undefined"!=typeof require?require("d3"):void 0,c.api=b,c.config=c.getDefaultConfig(),c.data={},c.cache={},c.axes={}}function f(a){b.call(this,a)}function g(a,b){function c(a,b){a.attr("transform",function(a){return"translate("+Math.ceil(b(a)+u)+", 0)"})}function d(a,b){a.attr("transform",function(a){return"translate(0,"+Math.ceil(b(a))+")"})}function e(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function f(a){var b,c,d=[];if(a.ticks)return a.ticks.apply(a,n);for(c=a.domain(),b=Math.ceil(c[0]);b<c[1];b++)d.push(b);return d.length>0&&d[0]>0&&d.unshift(d[0]-(d[1]-d[0])),d}function g(){var a,c=p.copy();return b.isCategory&&(a=p.domain(),c.domain([a[0],a[1]-1])),c}function h(a){var b=m?m(a):a;return"undefined"!=typeof b?b:""}function i(a){if(z)return z;var b={h:11.5,w:5.5};return a.select("text").text(h).each(function(a){var c=this.getBoundingClientRect(),d=h(a),e=c.height,f=d?c.width/d.length:void 0;e&&f&&(b.h=e,b.w=f)}).text(""),z=b,b}function j(c){return b.withoutTransition?c:a.transition(c)}function k(m){m.each(function(){function m(a,c){function d(a,b){f=void 0;for(var h=1;h<b.length;h++)if(" "===b.charAt(h)&&(f=h),e=b.substr(0,h+1),g=U.w*e.length,g>c)return d(a.concat(b.substr(0,f?f:h)),b.slice(f?f+1:h));return a.concat(b)}var e,f,g,i=h(a),j=[];return"[object Array]"===Object.prototype.toString.call(i)?i:((!c||0>=c)&&(c=X?95:b.isCategory?Math.ceil(F(G[1])-F(G[0]))-12:110),d(j,i+""))}function n(a,b){var c=U.h;return 0===b&&(c="left"===q||"right"===q?-((V[a.index]-1)*(U.h/2)-3):".71em"),c}function v(a){var b=p(a)+(o?0:u);return L[0]<b&&b<L[1]?r:0}function w(a){return a?a>0?"start":"end":"middle"}function x(a){return a?"rotate("+a+")":""}function y(a){return a?8*Math.sin(Math.PI*(a/180)):0}function z(a){return a?11.5-2.5*(a/15)*(a>0?1:-1):W}var A,B,C,D=k.g=a.select(this),E=this.__chart__||p,F=this.__chart__=g(),G=t?t:f(F),H=D.selectAll(".tick").data(G,F),I=H.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),J=H.exit().remove(),K=j(H).style("opacity",1),L=p.rangeExtent?p.rangeExtent():e(p.range()),M=D.selectAll(".domain").data([0]),N=(M.enter().append("path").attr("class","domain"),j(M));I.append("line"),I.append("text");var O=I.select("line"),P=K.select("line"),Q=I.select("text"),R=K.select("text");b.isCategory?(u=Math.ceil((F(1)-F(0))/2),B=o?0:u,C=o?u:0):u=B=0;var S,T,U=i(D.select(".tick")),V=[],W=Math.max(r,0)+s,X="left"===q||"right"===q;S=H.select("text"),T=S.selectAll("tspan").data(function(a,c){var d=b.tickMultiline?m(a,b.tickWidth):[].concat(h(a));return V[c]=d.length,d.map(function(a){return{index:c,splitted:a}})}),T.enter().append("tspan"),T.exit().remove(),T.text(function(a){return a.splitted});var Y=b.tickTextRotate;switch(q){case"bottom":A=c,O.attr("y2",r),Q.attr("y",W),P.attr("x1",B).attr("x2",B).attr("y2",v),R.attr("x",0).attr("y",z(Y)).style("text-anchor",w(Y)).attr("transform",x(Y)),T.attr("x",0).attr("dy",n).attr("dx",y(Y)),N.attr("d","M"+L[0]+","+l+"V0H"+L[1]+"V"+l);break;case"top":A=c,O.attr("y2",-r),Q.attr("y",-W),P.attr("x2",0).attr("y2",-r),R.attr("x",0).attr("y",-W),S.style("text-anchor","middle"),T.attr("x",0).attr("dy","0em"),N.attr("d","M"+L[0]+","+-l+"V0H"+L[1]+"V"+-l);break;case"left":A=d,O.attr("x2",-r),Q.attr("x",-W),P.attr("x2",-r).attr("y1",C).attr("y2",C),R.attr("x",-W).attr("y",u),S.style("text-anchor","end"),T.attr("x",-W).attr("dy",n),N.attr("d","M"+-l+","+L[0]+"H0V"+L[1]+"H"+-l);break;case"right":A=d,O.attr("x2",r),Q.attr("x",W),P.attr("x2",r).attr("y2",0),R.attr("x",W).attr("y",0),S.style("text-anchor","start"),T.attr("x",W).attr("dy",n),N.attr("d","M"+l+","+L[0]+"H0V"+L[1]+"H"+l)}if(F.rangeBand){var Z=F,$=Z.rangeBand()/2;E=F=function(a){return Z(a)+$}}else E.rangeBand?E=F:J.call(A,F);I.call(A,E),K.call(A,F)})}var l,m,n,o,p=a.scale.linear(),q="bottom",r=6,s=3,t=null,u=0,v=!0;return b=b||{},l=b.withOuterTick?6:0,k.scale=function(a){return arguments.length?(p=a,k):p},k.orient=function(a){return arguments.length?(q=a in{top:1,right:1,bottom:1,left:1}?a+"":"bottom",k):q},k.tickFormat=function(a){return arguments.length?(m=a,k):m},k.tickCentered=function(a){return arguments.length?(o=a,k):o},k.tickOffset=function(){return u},k.tickInterval=function(){var a,c;return b.isCategory?a=2*u:(c=k.g.select("path.domain").node().getTotalLength()-2*l,a=c/k.g.selectAll("line").size()),1/0===a?0:a},k.ticks=function(){return arguments.length?(n=arguments,k):n},k.tickCulling=function(a){return arguments.length?(v=a,k):v},k.tickValues=function(a){if("function"==typeof a)t=function(){return a(p.domain())};else{if(!arguments.length)return t;t=a}return k},k}var h,i,j,k={version:"0.4.10"};k.generate=function(a){return new d(a)},k.chart={fn:d.prototype,internal:{fn:e.prototype,axis:{fn:f.prototype}}},h=k.chart.fn,i=k.chart.internal.fn,j=k.chart.internal.axis.fn,i.init=function(){var a=this,b=a.config;if(a.initParams(),b.data_url)a.convertUrlToData(b.data_url,b.data_mimeType,b.data_keys,a.initWithData);else if(b.data_json)a.initWithData(a.convertJsonToData(b.data_json,b.data_keys));else if(b.data_rows)a.initWithData(a.convertRowsToData(b.data_rows));else{if(!b.data_columns)throw Error("url or json or rows or columns is required.");a.initWithData(a.convertColumnsToData(b.data_columns))}},i.initParams=function(){var a=this,b=a.d3,c=a.config;a.clipId="c3-"+ +new Date+"-clip",a.clipIdForXAxis=a.clipId+"-xaxis",a.clipIdForYAxis=a.clipId+"-yaxis",a.clipIdForGrid=a.clipId+"-grid",a.clipIdForSubchart=a.clipId+"-subchart",a.clipPath=a.getClipPath(a.clipId),a.clipPathForXAxis=a.getClipPath(a.clipIdForXAxis),a.clipPathForYAxis=a.getClipPath(a.clipIdForYAxis),a.clipPathForGrid=a.getClipPath(a.clipIdForGrid),a.clipPathForSubchart=a.getClipPath(a.clipIdForSubchart),a.dragStart=null,a.dragging=!1,a.flowing=!1,a.cancelClick=!1,a.mouseover=!1,a.transiting=!1,a.color=a.generateColor(),a.levelColor=a.generateLevelColor(),a.dataTimeFormat=c.data_xLocaltime?b.time.format:b.time.format.utc,a.axisTimeFormat=c.axis_x_localtime?b.time.format:b.time.format.utc,a.defaultAxisTimeFormat=a.axisTimeFormat.multi([[".%L",function(a){return a.getMilliseconds()}],[":%S",function(a){return a.getSeconds()}],["%I:%M",function(a){return a.getMinutes()}],["%I %p",function(a){return a.getHours()}],["%-m/%-d",function(a){return a.getDay()&&1!==a.getDate()}],["%-m/%-d",function(a){return 1!==a.getDate()}],["%-m/%-d",function(a){return a.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),a.hiddenTargetIds=[],a.hiddenLegendIds=[],a.focusedTargetIds=[],a.defocusedTargetIds=[],a.xOrient=c.axis_rotated?"left":"bottom",a.yOrient=c.axis_rotated?c.axis_y_inner?"top":"bottom":c.axis_y_inner?"right":"left",a.y2Orient=c.axis_rotated?c.axis_y2_inner?"bottom":"top":c.axis_y2_inner?"left":"right",a.subXOrient=c.axis_rotated?"left":"bottom",a.isLegendRight="right"===c.legend_position,a.isLegendInset="inset"===c.legend_position,a.isLegendTop="top-left"===c.legend_inset_anchor||"top-right"===c.legend_inset_anchor,a.isLegendLeft="top-left"===c.legend_inset_anchor||"bottom-left"===c.legend_inset_anchor,a.legendStep=0,a.legendItemWidth=0,a.legendItemHeight=0,a.currentMaxTickWidths={x:0,y:0,y2:0},a.rotated_padding_left=30,a.rotated_padding_right=c.axis_rotated&&!c.axis_x_show?0:30,a.rotated_padding_top=5,a.withoutFadeIn={},a.intervalForObserveInserted=void 0,a.axes.subx=b.selectAll([])},i.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},i.initWithData=function(b){var c,d,e=this,g=e.d3,h=e.config,i=!0;e.axis=new f(e),e.initPie&&e.initPie(),e.initBrush&&e.initBrush(),e.initZoom&&e.initZoom(),e.selectChart=h.bindto?"function"==typeof h.bindto.node?h.bindto:g.select(h.bindto):g.selectAll([]),e.selectChart.empty()&&(e.selectChart=g.select(document.createElement("div")).style("opacity",0),e.observeInserted(e.selectChart),i=!1),e.selectChart.html("").classed("c3",!0),e.data.xs={},e.data.targets=e.convertDataToTargets(b),h.data_filter&&(e.data.targets=e.data.targets.filter(h.data_filter)),h.data_hide&&e.addHiddenTargetIds(h.data_hide===!0?e.mapToIds(e.data.targets):h.data_hide),h.legend_hide&&e.addHiddenLegendIds(h.legend_hide===!0?e.mapToIds(e.data.targets):h.legend_hide),e.hasType("gauge")&&(h.legend_show=!1),e.updateSizes(),e.updateScales(),e.x.domain(g.extent(e.getXDomain(e.data.targets))),e.y.domain(e.getYDomain(e.data.targets,"y")),e.y2.domain(e.getYDomain(e.data.targets,"y2")),e.subX.domain(e.x.domain()),e.subY.domain(e.y.domain()),e.subY2.domain(e.y2.domain()),e.orgXDomain=e.x.domain(),e.brush&&e.brush.scale(e.subX),h.zoom_enabled&&e.zoom.scale(e.x),e.svg=e.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return h.onmouseover.call(e)}).on("mouseleave",function(){return h.onmouseout.call(e)}),c=e.svg.append("defs"),e.clipChart=e.appendClip(c,e.clipId),e.clipXAxis=e.appendClip(c,e.clipIdForXAxis),e.clipYAxis=e.appendClip(c,e.clipIdForYAxis),e.clipGrid=e.appendClip(c,e.clipIdForGrid),e.clipSubchart=e.appendClip(c,e.clipIdForSubchart),e.updateSvgSize(),d=e.main=e.svg.append("g").attr("transform",e.getTranslate("main")),e.initSubchart&&e.initSubchart(),e.initTooltip&&e.initTooltip(),e.initLegend&&e.initLegend(),d.append("text").attr("class",l.text+" "+l.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),e.initRegion(),e.initGrid(),d.append("g").attr("clip-path",e.clipPath).attr("class",l.chart),h.grid_lines_front&&e.initGridLines(),e.initEventRect(),e.initChartElements(),d.insert("rect",h.zoom_privileged?null:"g."+l.regions).attr("class",l.zoomRect).attr("width",e.width).attr("height",e.height).style("opacity",0).on("dblclick.zoom",null),h.axis_x_extent&&e.brush.extent(e.getDefaultExtent()),e.axis.init(),e.updateTargets(e.data.targets),i&&(e.updateDimension(),e.config.oninit.call(e),e.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),null==a.onresize&&(a.onresize=e.generateResize()),a.onresize.add&&(a.onresize.add(function(){h.onresize.call(e)}),a.onresize.add(function(){e.api.flush()}),a.onresize.add(function(){h.onresized.call(e)})),e.api.element=e.selectChart.node()},i.smoothLines=function(a,b){var c=this;"grid"===b&&a.each(function(){var a=c.d3.select(this),b=a.attr("x1"),d=a.attr("x2"),e=a.attr("y1"),f=a.attr("y2");a.attr({x1:Math.ceil(b),x2:Math.ceil(d),y1:Math.ceil(e),y2:Math.ceil(f)})})},i.updateSizes=function(){var a=this,b=a.config,c=a.legend?a.getLegendHeight():0,d=a.legend?a.getLegendWidth():0,e=a.isLegendRight||a.isLegendInset?0:c,f=a.hasArcType(),g=b.axis_rotated||f?0:a.getHorizontalAxisHeight("x"),h=b.subchart_show&&!f?b.subchart_size_height+g:0;a.currentWidth=a.getCurrentWidth(),a.currentHeight=a.getCurrentHeight(),a.margin=b.axis_rotated?{top:a.getHorizontalAxisHeight("y2")+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:a.getHorizontalAxisHeight("y")+e+a.getCurrentPaddingBottom(),left:h+(f?0:a.getCurrentPaddingLeft())}:{top:4+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:g+h+e+a.getCurrentPaddingBottom(),left:f?0:a.getCurrentPaddingLeft()},a.margin2=b.axis_rotated?{top:a.margin.top,right:0/0,bottom:20+e,left:a.rotated_padding_left}:{top:a.currentHeight-h-e,right:0/0,bottom:g+e,left:a.margin.left},a.margin3={top:0,right:0/0,bottom:0,left:0},a.updateSizeForLegend&&a.updateSizeForLegend(c,d),a.width=a.currentWidth-a.margin.left-a.margin.right,a.height=a.currentHeight-a.margin.top-a.margin.bottom,a.width<0&&(a.width=0),a.height<0&&(a.height=0),a.width2=b.axis_rotated?a.margin.left-a.rotated_padding_left-a.rotated_padding_right:a.width,a.height2=b.axis_rotated?a.height:a.currentHeight-a.margin2.top-a.margin2.bottom,a.width2<0&&(a.width2=0),a.height2<0&&(a.height2=0),a.arcWidth=a.width-(a.isLegendRight?d+10:0),a.arcHeight=a.height-(a.isLegendRight?0:10),a.hasType("gauge")&&(a.arcHeight+=a.height-a.getGaugeLabelHeight()),a.updateRadius&&a.updateRadius(),a.isLegendRight&&f&&(a.margin3.left=a.arcWidth/2+1.1*a.radiusExpanded)},i.updateTargets=function(a){var b=this;b.updateTargetsForText(a),b.updateTargetsForBar(a),b.updateTargetsForLine(a),b.hasArcType()&&b.updateTargetsForArc&&b.updateTargetsForArc(a),b.updateTargetsForSubchart&&b.updateTargetsForSubchart(a),b.showTargets()},i.showTargets=function(){var a=this;a.svg.selectAll("."+l.target).filter(function(b){return a.isTargetToShow(b.id)}).transition().duration(a.config.transition_duration).style("opacity",1)},i.redraw=function(a,b){var c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,x,y,z,A,B,C,D,E,F,G,H=this,I=H.main,J=H.d3,K=H.config,L=H.getShapeIndices(H.isAreaType),M=H.getShapeIndices(H.isBarType),N=H.getShapeIndices(H.isLineType),O=H.hasArcType(),P=H.filterTargetsToShow(H.data.targets),Q=H.xv.bind(H);if(a=a||{},c=w(a,"withY",!0),d=w(a,"withSubchart",!0),e=w(a,"withTransition",!0),h=w(a,"withTransform",!1),i=w(a,"withUpdateXDomain",!1),j=w(a,"withUpdateOrgXDomain",!1),k=w(a,"withTrimXDomain",!0),p=w(a,"withUpdateXAxis",i),m=w(a,"withLegend",!1),n=w(a,"withEventRect",!0),o=w(a,"withDimension",!0),f=w(a,"withTransitionForExit",e),g=w(a,"withTransitionForAxis",e),v=e?K.transition_duration:0,x=f?v:0,y=g?v:0,b=b||H.axis.generateTransitions(y),m&&K.legend_show?H.updateLegend(H.mapToIds(H.data.targets),a,b):o&&H.updateDimension(!0),H.isCategorized()&&0===P.length&&H.x.domain([0,H.axes.x.selectAll(".tick").size()]),P.length?(H.updateXDomain(P,i,j,k),K.axis_x_tick_values||(B=H.axis.updateXAxisTickValues(P))):(H.xAxis.tickValues([]),H.subXAxis.tickValues([])),K.zoom_rescale&&!a.flow&&(E=H.x.orgDomain()),H.y.domain(H.getYDomain(P,"y",E)),H.y2.domain(H.getYDomain(P,"y2",E)),!K.axis_y_tick_values&&K.axis_y_tick_count&&H.yAxis.tickValues(H.axis.generateTickValues(H.y.domain(),K.axis_y_tick_count)),!K.axis_y2_tick_values&&K.axis_y2_tick_count&&H.y2Axis.tickValues(H.axis.generateTickValues(H.y2.domain(),K.axis_y2_tick_count)),H.axis.redraw(b,O),H.axis.updateLabels(e),(i||p)&&P.length)if(K.axis_x_tick_culling&&B){for(C=1;C<B.length;C++)if(B.length/C<K.axis_x_tick_culling_max){D=C;break}H.svg.selectAll("."+l.axisX+" .tick text").each(function(a){var b=B.indexOf(a);b>=0&&J.select(this).style("display",b%D?"none":"block")})}else H.svg.selectAll("."+l.axisX+" .tick text").style("display","block");q=H.generateDrawArea?H.generateDrawArea(L,!1):void 0,r=H.generateDrawBar?H.generateDrawBar(M):void 0,s=H.generateDrawLine?H.generateDrawLine(N,!1):void 0,t=H.generateXYForText(L,M,N,!0),u=H.generateXYForText(L,M,N,!1),c&&(H.subY.domain(H.getYDomain(P,"y")),H.subY2.domain(H.getYDomain(P,"y2"))),H.tooltip.style("display","none"),H.updateXgridFocus(),I.select("text."+l.text+"."+l.empty).attr("x",H.width/2).attr("y",H.height/2).text(K.data_empty_label_text).transition().style("opacity",P.length?0:1),H.updateGrid(v),H.updateRegion(v),H.updateBar(x),H.updateLine(x),H.updateArea(x),H.updateCircle(),H.hasDataLabel()&&H.updateText(x),H.redrawArc&&H.redrawArc(v,x,h),H.redrawSubchart&&H.redrawSubchart(d,b,v,x,L,M,N),I.selectAll("."+l.selectedCircles).filter(H.isBarType.bind(H)).selectAll("circle").remove(),K.interaction_enabled&&!a.flow&&n&&(H.redrawEventRect(),H.updateZoom&&H.updateZoom()),H.updateCircleY(),F=(H.config.axis_rotated?H.circleY:H.circleX).bind(H),G=(H.config.axis_rotated?H.circleX:H.circleY).bind(H),a.flow&&(A=H.generateFlow({targets:P,flow:a.flow,duration:a.flow.duration,drawBar:r,drawLine:s,drawArea:q,cx:F,cy:G,xv:Q,xForText:t,yForText:u})),(v||A)&&H.isTabVisible()?J.transition().duration(v).each(function(){var b=[];[H.redrawBar(r,!0),H.redrawLine(s,!0),H.redrawArea(q,!0),H.redrawCircle(F,G,!0),H.redrawText(t,u,a.flow,!0),H.redrawRegion(!0),H.redrawGrid(!0)].forEach(function(a){a.forEach(function(a){b.push(a)})}),z=H.generateWait(),b.forEach(function(a){z.add(a)})}).call(z,function(){A&&A(),K.onrendered&&K.onrendered.call(H)}):(H.redrawBar(r),H.redrawLine(s),H.redrawArea(q),H.redrawCircle(F,G),H.redrawText(t,u,a.flow),H.redrawRegion(),H.redrawGrid(),K.onrendered&&K.onrendered.call(H)),H.mapToIds(H.data.targets).forEach(function(a){H.withoutFadeIn[a]=!0})},i.updateAndRedraw=function(a){var b,c=this,d=c.config;a=a||{},a.withTransition=w(a,"withTransition",!0),a.withTransform=w(a,"withTransform",!1),a.withLegend=w(a,"withLegend",!1),a.withUpdateXDomain=!0,a.withUpdateOrgXDomain=!0,a.withTransitionForExit=!1,a.withTransitionForTransform=w(a,"withTransitionForTransform",a.withTransition),c.updateSizes(),a.withLegend&&d.legend_show||(b=c.axis.generateTransitions(a.withTransitionForAxis?d.transition_duration:0),c.updateScales(),c.updateSvgSize(),c.transformAll(a.withTransitionForTransform,b)),c.redraw(a,b)},i.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},i.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},i.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},i.isCustomX=function(){var a=this,b=a.config;return!a.isTimeSeries()&&(b.data_x||v(b.data_xs))},i.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},i.getTranslate=function(a){var b,c,d=this,e=d.config;return"main"===a?(b=s(d.margin.left),c=s(d.margin.top)):"context"===a?(b=s(d.margin2.left),c=s(d.margin2.top)):"legend"===a?(b=d.margin3.left,c=d.margin3.top):"x"===a?(b=0,c=e.axis_rotated?0:d.height):"y"===a?(b=0,c=e.axis_rotated?d.height:0):"y2"===a?(b=e.axis_rotated?0:d.width,c=e.axis_rotated?1:0):"subx"===a?(b=0,c=e.axis_rotated?0:d.height2):"arc"===a&&(b=d.arcWidth/2,c=d.arcHeight/2),"translate("+b+","+c+")"},i.initialOpacity=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?1:0},i.initialOpacityForCircle=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?this.opacityForCircle(a):0},i.opacityForCircle=function(a){var b=this.config.point_show?1:0;return m(a.value)?this.isScatterType(a)?.5:b:0},i.opacityForText=function(){return this.hasDataLabel()?1:0},i.xx=function(a){return a?this.x(a.x):null},i.xv=function(a){var b=this,c=a.value;return b.isTimeSeries()?c=b.parseDate(a.value):b.isCategorized()&&"string"==typeof a.value&&(c=b.config.axis_x_categories.indexOf(a.value)),Math.ceil(b.x(c))},i.yv=function(a){var b=this,c=a.axis&&"y2"===a.axis?b.y2:b.y;return Math.ceil(c(a.value))},i.subxx=function(a){return a?this.subX(a.x):null},i.transformMain=function(a,b){var c,d,e,f=this;b&&b.axisX?c=b.axisX:(c=f.main.select("."+l.axisX),a&&(c=c.transition())),b&&b.axisY?d=b.axisY:(d=f.main.select("."+l.axisY),a&&(d=d.transition())),b&&b.axisY2?e=b.axisY2:(e=f.main.select("."+l.axisY2),a&&(e=e.transition())),(a?f.main.transition():f.main).attr("transform",f.getTranslate("main")),c.attr("transform",f.getTranslate("x")),d.attr("transform",f.getTranslate("y")),e.attr("transform",f.getTranslate("y2")),f.main.select("."+l.chartArcs).attr("transform",f.getTranslate("arc"))},i.transformAll=function(a,b){var c=this;c.transformMain(a,b),c.config.subchart_show&&c.transformContext(a,b),c.legend&&c.transformLegend(a)},i.updateSvgSize=function(){var a=this,b=a.svg.select(".c3-brush .background");a.svg.attr("width",a.currentWidth).attr("height",a.currentHeight),a.svg.selectAll(["#"+a.clipId,"#"+a.clipIdForGrid]).select("rect").attr("width",a.width).attr("height",a.height),a.svg.select("#"+a.clipIdForXAxis).select("rect").attr("x",a.getXAxisClipX.bind(a)).attr("y",a.getXAxisClipY.bind(a)).attr("width",a.getXAxisClipWidth.bind(a)).attr("height",a.getXAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForYAxis).select("rect").attr("x",a.getYAxisClipX.bind(a)).attr("y",a.getYAxisClipY.bind(a)).attr("width",a.getYAxisClipWidth.bind(a)).attr("height",a.getYAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForSubchart).select("rect").attr("width",a.width).attr("height",b.size()?b.attr("height"):0),a.svg.select("."+l.zoomRect).attr("width",a.width).attr("height",a.height),a.selectChart.style("max-height",a.currentHeight+"px")},i.updateDimension=function(a){var b=this;a||(b.config.axis_rotated?(b.axes.x.call(b.xAxis),b.axes.subx.call(b.subXAxis)):(b.axes.y.call(b.yAxis),b.axes.y2.call(b.y2Axis))),b.updateSizes(),b.updateScales(),b.updateSvgSize(),b.transformAll(!1)},i.observeInserted=function(b){var c,d=this;return"undefined"==typeof MutationObserver?void a.console.error("MutationObserver not defined."):(c=new MutationObserver(function(e){e.forEach(function(e){"childList"===e.type&&e.previousSibling&&(c.disconnect(),d.intervalForObserveInserted=a.setInterval(function(){b.node().parentNode&&(a.clearInterval(d.intervalForObserveInserted),d.updateDimension(),d.config.oninit.call(d),d.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),b.transition().style("opacity",1))},10))})}),void c.observe(b.node(),{attributes:!0,childList:!0,characterData:!0}))},i.generateResize=function(){function a(){b.forEach(function(a){a()})}var b=[];return a.add=function(a){b.push(a)},a},i.endall=function(a,b){var c=0;a.each(function(){++c}).each("end",function(){--c||b.apply(this,arguments)})},i.generateWait=function(){var a=[],b=function(b,c){var d=setInterval(function(){var b=0;a.forEach(function(a){if(a.empty())return void(b+=1);try{a.transition()}catch(c){b+=1}}),b===a.length&&(clearInterval(d),c&&c())},10)};return b.add=function(b){a.push(b)},b},i.parseDate=function(b){var c,d=this;return b instanceof Date?c=b:"string"==typeof b?c=d.dataTimeFormat(d.config.data_xFormat).parse(b):"number"!=typeof b&&isNaN(b)||(c=new Date(+b)),(!c||isNaN(+c))&&a.console.error("Failed to parse x '"+b+"' to Date object"),c},i.isTabVisible=function(){var a;return"undefined"!=typeof document.hidden?a="hidden":"undefined"!=typeof document.mozHidden?a="mozHidden":"undefined"!=typeof document.msHidden?a="msHidden":"undefined"!=typeof document.webkitHidden&&(a="webkitHidden"),document[a]?!1:!0},i.getDefaultConfig=function(){var a={bindto:"#chart",size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,zoom_enabled:!1,zoom_extent:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(a){return a},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_extent:void 0,axis_x_label:{},axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_count:void 0,axis_y_tick_time_value:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,area_zerobased:!0,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_expand:!0,gauge_label_show:!0,gauge_label_format:void 0,gauge_expand:!0,gauge_min:0,gauge_max:100,gauge_units:void 0,gauge_width:void 0,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_width:void 0,donut_expand:!0,donut_title:"",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(a,b,c,d){return this.getTooltipContent?this.getTooltipContent(a,b,c,d):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"}};return Object.keys(this.additionalConfig).forEach(function(b){a[b]=this.additionalConfig[b]},this),a},i.additionalConfig={},i.loadConfig=function(a){function b(){var a=d.shift();return a&&c&&"object"==typeof c&&a in c?(c=c[a],b()):a?void 0:c}var c,d,e,f=this.config;Object.keys(f).forEach(function(g){c=a,d=g.split("_"),e=b(),q(e)&&(f[g]=e)})},i.getScale=function(a,b,c){return(c?this.d3.time.scale():this.d3.scale.linear()).range([a,b])},i.getX=function(a,b,c,d){var e,f=this,g=f.getScale(a,b,f.isTimeSeries()),h=c?g.domain(c):g;f.isCategorized()?(d=d||function(){return 0},g=function(a,b){var c=h(a)+d(a);return b?c:Math.ceil(c)}):g=function(a,b){var c=h(a);return b?c:Math.ceil(c)};for(e in h)g[e]=h[e];return g.orgDomain=function(){return h.domain()},f.isCategorized()&&(g.domain=function(a){return arguments.length?(h.domain(a),g):(a=this.orgDomain(),[a[0],a[1]+1])}),g},i.getY=function(a,b,c){var d=this.getScale(a,b,this.isTimeSeriesY());return c&&d.domain(c),d},i.getYScale=function(a){return"y2"===this.axis.getId(a)?this.y2:this.y},i.getSubYScale=function(a){return"y2"===this.axis.getId(a)?this.subY2:this.subY},i.updateScales=function(){var a=this,b=a.config,c=!a.x;a.xMin=b.axis_rotated?1:0,a.xMax=b.axis_rotated?a.height:a.width,a.yMin=b.axis_rotated?0:a.height,a.yMax=b.axis_rotated?a.width:1,a.subXMin=a.xMin,a.subXMax=a.xMax,a.subYMin=b.axis_rotated?0:a.height2,a.subYMax=b.axis_rotated?a.width2:1,a.x=a.getX(a.xMin,a.xMax,c?void 0:a.x.orgDomain(),function(){return a.xAxis.tickOffset()}),a.y=a.getY(a.yMin,a.yMax,c?b.axis_y_default:a.y.domain()),a.y2=a.getY(a.yMin,a.yMax,c?b.axis_y2_default:a.y2.domain()),a.subX=a.getX(a.xMin,a.xMax,a.orgXDomain,function(b){return b%1?0:a.subXAxis.tickOffset()}),a.subY=a.getY(a.subYMin,a.subYMax,c?b.axis_y_default:a.subY.domain()),a.subY2=a.getY(a.subYMin,a.subYMax,c?b.axis_y2_default:a.subY2.domain()),a.xAxisTickFormat=a.axis.getXAxisTickFormat(),a.xAxisTickValues=a.axis.getXAxisTickValues(),a.yAxisTickValues=a.axis.getYAxisTickValues(),a.y2AxisTickValues=a.axis.getY2AxisTickValues(),a.xAxis=a.axis.getXAxis(a.x,a.xOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.subXAxis=a.axis.getXAxis(a.subX,a.subXOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.yAxis=a.axis.getYAxis(a.y,a.yOrient,b.axis_y_tick_format,a.yAxisTickValues,b.axis_y_tick_outer),a.y2Axis=a.axis.getYAxis(a.y2,a.y2Orient,b.axis_y2_tick_format,a.y2AxisTickValues,b.axis_y2_tick_outer),c||(a.brush&&a.brush.scale(a.subX),b.zoom_enabled&&a.zoom.scale(a.x)),a.updateArc&&a.updateArc()},i.getYDomainMin=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasNegativeValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=0>a?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&+a>0||(k[d][b]+=+a)});return h.d3.min(Object.keys(k).map(function(a){return h.d3.min(k[a])}))},i.getYDomainMax=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasPositiveValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=a>0?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&0>+a||(k[d][b]+=+a)});return h.d3.max(Object.keys(k).map(function(a){return h.d3.max(k[a])}))},i.getYDomain=function(a,b,c){var d,e,f,g,h,i,j,k,l,n,o,p=this,q=p.config,r=a.filter(function(a){return p.axis.getId(a.id)===b}),s=c?p.filterByXDomain(r,c):r,u="y2"===b?q.axis_y2_min:q.axis_y_min,w="y2"===b?q.axis_y2_max:q.axis_y_max,x=p.getYDomainMin(s),y=p.getYDomainMax(s),z="y2"===b?q.axis_y2_center:q.axis_y_center,A=p.hasType("bar",s)&&q.bar_zerobased||p.hasType("area",s)&&q.area_zerobased,B="y2"===b?q.axis_y2_inverted:q.axis_y_inverted,C=p.hasDataLabel()&&q.axis_rotated,D=p.hasDataLabel()&&!q.axis_rotated;return x=m(u)?u:m(w)?w>x?x:w-10:x,y=m(w)?w:m(u)?y>u?y:u+10:y,0===s.length?"y2"===b?p.y2.domain():p.y.domain():(isNaN(x)&&(x=0),isNaN(y)&&(y=x),x===y&&(0>x?y=0:x=0),n=x>=0&&y>=0,o=0>=x&&0>=y,(m(u)&&n||m(w)&&o)&&(A=!1),A&&(n&&(x=0),o&&(y=0)),e=Math.abs(y-x),f=g=h=.1*e,"undefined"!=typeof z&&(i=Math.max(Math.abs(x),Math.abs(y)),y=z+i,x=z-i),C?(j=p.getDataLabelLength(x,y,"width"),k=t(p.y.range()),l=[j[0]/k,j[1]/k],g+=e*(l[1]/(1-l[0]-l[1])),h+=e*(l[0]/(1-l[0]-l[1]))):D&&(j=p.getDataLabelLength(x,y,"height"),g+=p.axis.convertPixelsToAxisPadding(j[1],e),h+=p.axis.convertPixelsToAxisPadding(j[0],e)),"y"===b&&v(q.axis_y_padding)&&(g=p.axis.getPadding(q.axis_y_padding,"top",g,e),h=p.axis.getPadding(q.axis_y_padding,"bottom",h,e)),"y2"===b&&v(q.axis_y2_padding)&&(g=p.axis.getPadding(q.axis_y2_padding,"top",g,e),h=p.axis.getPadding(q.axis_y2_padding,"bottom",h,e)),A&&(n&&(h=x),o&&(g=-y)),d=[x-h,y+g],B?d.reverse():d)},i.getXDomainMin=function(a){var b=this,c=b.config;return q(c.axis_x_min)?b.isTimeSeries()?this.parseDate(c.axis_x_min):c.axis_x_min:b.d3.min(a,function(a){return b.d3.min(a.values,function(a){return a.x})})},i.getXDomainMax=function(a){var b=this,c=b.config;return q(c.axis_x_max)?b.isTimeSeries()?this.parseDate(c.axis_x_max):c.axis_x_max:b.d3.max(a,function(a){return b.d3.max(a.values,function(a){return a.x})})},i.getXDomainPadding=function(a){var b,c,d,e,f=this,g=f.config,h=a[1]-a[0];return f.isCategorized()?c=0:f.hasType("bar")?(b=f.getMaxDataCount(),c=b>1?h/(b-1)/2:.5):c=.01*h,"object"==typeof g.axis_x_padding&&v(g.axis_x_padding)?(d=m(g.axis_x_padding.left)?g.axis_x_padding.left:c,e=m(g.axis_x_padding.right)?g.axis_x_padding.right:c):d=e="number"==typeof g.axis_x_padding?g.axis_x_padding:c,{left:d,right:e}},i.getXDomain=function(a){var b=this,c=[b.getXDomainMin(a),b.getXDomainMax(a)],d=c[0],e=c[1],f=b.getXDomainPadding(c),g=0,h=0;
+return d-e!==0||b.isCategorized()||(b.isTimeSeries()?(d=new Date(.5*d.getTime()),e=new Date(1.5*e.getTime())):(d=0===d?1:.5*d,e=0===e?-1:1.5*e)),(d||0===d)&&(g=b.isTimeSeries()?new Date(d.getTime()-f.left):d-f.left),(e||0===e)&&(h=b.isTimeSeries()?new Date(e.getTime()+f.right):e+f.right),[g,h]},i.updateXDomain=function(a,b,c,d,e){var f=this,g=f.config;return c&&(f.x.domain(e?e:f.d3.extent(f.getXDomain(a))),f.orgXDomain=f.x.domain(),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent(),f.subX.domain(f.x.domain()),f.brush&&f.brush.scale(f.subX)),b&&(f.x.domain(e?e:!f.brush||f.brush.empty()?f.orgXDomain:f.brush.extent()),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent()),d&&f.x.domain(f.trimXDomain(f.x.orgDomain())),f.x.domain()},i.trimXDomain=function(a){var b=this;return a[0]<=b.orgXDomain[0]&&(a[1]=+a[1]+(b.orgXDomain[0]-a[0]),a[0]=b.orgXDomain[0]),b.orgXDomain[1]<=a[1]&&(a[0]=+a[0]-(a[1]-b.orgXDomain[1]),a[1]=b.orgXDomain[1]),a},i.isX=function(a){var b=this,c=b.config;return c.data_x&&a===c.data_x||v(c.data_xs)&&x(c.data_xs,a)},i.isNotX=function(a){return!this.isX(a)},i.getXKey=function(a){var b=this,c=b.config;return c.data_x?c.data_x:v(c.data_xs)?c.data_xs[a]:null},i.getXValuesOfXKey=function(a,b){var c,d=this,e=b&&v(b)?d.mapToIds(b):[];return e.forEach(function(b){d.getXKey(b)===a&&(c=d.data.xs[b])}),c},i.getIndexByX=function(a){var b=this,c=b.filterByX(b.data.targets,a);return c.length?c[0].index:null},i.getXValue=function(a,b){var c=this;return a in c.data.xs&&c.data.xs[a]&&m(c.data.xs[a][b])?c.data.xs[a][b]:b},i.getOtherTargetXs=function(){var a=this,b=Object.keys(a.data.xs);return b.length?a.data.xs[b[0]]:null},i.getOtherTargetX=function(a){var b=this.getOtherTargetXs();return b&&a<b.length?b[a]:null},i.addXs=function(a){var b=this;Object.keys(a).forEach(function(c){b.config.data_xs[c]=a[c]})},i.hasMultipleX=function(a){return this.d3.set(Object.keys(a).map(function(b){return a[b]})).size()>1},i.isMultipleX=function(){return v(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},i.addName=function(a){var b,c=this;return a&&(b=c.config.data_names[a.id],a.name=b?b:a.id),a},i.getValueOnIndex=function(a,b){var c=a.filter(function(a){return a.index===b});return c.length?c[0]:null},i.updateTargetX=function(a,b){var c=this;a.forEach(function(a){a.values.forEach(function(d,e){d.x=c.generateTargetX(b[e],a.id,e)}),c.data.xs[a.id]=b})},i.updateTargetXs=function(a,b){var c=this;a.forEach(function(a){b[a.id]&&c.updateTargetX([a],b[a.id])})},i.generateTargetX=function(a,b,c){var d,e=this;return d=e.isTimeSeries()?e.parseDate(a?a:e.getXValue(b,c)):e.isCustomX()&&!e.isCategorized()?m(a)?+a:e.getXValue(b,c):c},i.cloneTarget=function(a){return{id:a.id,id_org:a.id_org,values:a.values.map(function(a){return{x:a.x,value:a.value,id:a.id}})}},i.updateXs=function(){var a=this;a.data.targets.length&&(a.xs=[],a.data.targets[0].values.forEach(function(b){a.xs[b.index]=b.x}))},i.getPrevX=function(a){var b=this.xs[a-1];return"undefined"!=typeof b?b:null},i.getNextX=function(a){var b=this.xs[a+1];return"undefined"!=typeof b?b:null},i.getMaxDataCount=function(){var a=this;return a.d3.max(a.data.targets,function(a){return a.values.length})},i.getMaxDataCountTarget=function(a){var b,c=a.length,d=0;return c>1?a.forEach(function(a){a.values.length>d&&(b=a,d=a.values.length)}):b=c?a[0]:null,b},i.getEdgeX=function(a){var b=this;return a.length?[b.d3.min(a,function(a){return a.values[0].x}),b.d3.max(a,function(a){return a.values[a.values.length-1].x})]:[0,0]},i.mapToIds=function(a){return a.map(function(a){return a.id})},i.mapToTargetIds=function(a){var b=this;return a?o(a)?[a]:a:b.mapToIds(b.data.targets)},i.hasTarget=function(a,b){var c,d=this.mapToIds(a);for(c=0;c<d.length;c++)if(d[c]===b)return!0;return!1},i.isTargetToShow=function(a){return this.hiddenTargetIds.indexOf(a)<0},i.isLegendToShow=function(a){return this.hiddenLegendIds.indexOf(a)<0},i.filterTargetsToShow=function(a){var b=this;return a.filter(function(a){return b.isTargetToShow(a.id)})},i.mapTargetsToUniqueXs=function(a){var b=this,c=b.d3.set(b.d3.merge(a.map(function(a){return a.values.map(function(a){return+a.x})}))).values();return c.map(b.isTimeSeries()?function(a){return new Date(+a)}:function(a){return+a})},i.addHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.concat(a)},i.removeHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(b){return a.indexOf(b)<0})},i.addHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.concat(a)},i.removeHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(b){return a.indexOf(b)<0})},i.getValuesAsIdKeyed=function(a){var b={};return a.forEach(function(a){b[a.id]=[],a.values.forEach(function(c){b[a.id].push(c.value)})}),b},i.checkValueInTargets=function(a,b){var c,d,e,f=Object.keys(a);for(c=0;c<f.length;c++)for(e=a[f[c]].values,d=0;d<e.length;d++)if(b(e[d].value))return!0;return!1},i.hasNegativeValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return 0>a})},i.hasPositiveValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return a>0})},i.isOrderDesc=function(){var a=this.config;return"string"==typeof a.data_order&&"desc"===a.data_order.toLowerCase()},i.isOrderAsc=function(){var a=this.config;return"string"==typeof a.data_order&&"asc"===a.data_order.toLowerCase()},i.orderTargets=function(a){var b=this,c=b.config,d=b.isOrderAsc(),e=b.isOrderDesc();return d||e?a.sort(function(a,b){var c=function(a,b){return a+Math.abs(b.value)},e=a.values.reduce(c,0),f=b.values.reduce(c,0);return d?f-e:e-f}):n(c.data_order)&&a.sort(c.data_order),a},i.filterByX=function(a,b){return this.d3.merge(a.map(function(a){return a.values})).filter(function(a){return a.x-b===0})},i.filterRemoveNull=function(a){return a.filter(function(a){return m(a.value)})},i.filterByXDomain=function(a,b){return a.map(function(a){return{id:a.id,id_org:a.id_org,values:a.values.filter(function(a){return b[0]<=a.x&&a.x<=b[1]})}})},i.hasDataLabel=function(){var a=this.config;return"boolean"==typeof a.data_labels&&a.data_labels?!0:"object"==typeof a.data_labels&&v(a.data_labels)?!0:!1},i.getDataLabelLength=function(a,b,c){var d=this,e=[0,0],f=1.3;return d.selectChart.select("svg").selectAll(".dummy").data([a,b]).enter().append("text").text(function(a){return d.dataLabelFormat(a.id)(a)}).each(function(a,b){e[b]=this.getBoundingClientRect()[c]*f}).remove(),e},i.isNoneArc=function(a){return this.hasTarget(this.data.targets,a.id)},i.isArc=function(a){return"data"in a&&this.hasTarget(this.data.targets,a.data.id)},i.findSameXOfValues=function(a,b){var c,d=a[b].x,e=[];for(c=b-1;c>=0&&d===a[c].x;c--)e.push(a[c]);for(c=b;c<a.length&&d===a[c].x;c++)e.push(a[c]);return e},i.findClosestFromTargets=function(a,b){var c,d=this;return c=a.map(function(a){return d.findClosest(a.values,b)}),d.findClosest(c,b)},i.findClosest=function(a,b){var c,d=this,e=100;return a.filter(function(a){return a&&d.isBarType(a.id)}).forEach(function(a){var b=d.main.select("."+l.bars+d.getTargetSelectorSuffix(a.id)+" ."+l.bar+"-"+a.index).node();!c&&d.isWithinBar(b)&&(c=a)}),a.filter(function(a){return a&&!d.isBarType(a.id)}).forEach(function(a){var f=d.dist(a,b);e>f&&(e=f,c=a)}),c},i.dist=function(a,b){var c=this,d=c.config,e=d.axis_rotated?1:0,f=d.axis_rotated?0:1,g=c.circleY(a,a.index),h=c.x(a.x);return Math.pow(h-b[e],2)+Math.pow(g-b[f],2)},i.convertValuesToStep=function(a){var b,c=[].concat(a);if(!this.isCategorized())return a;for(b=a.length+1;b>0;b--)c[b]=c[b-1];return c[0]={x:c[0].x-1,value:c[0].value,id:c[0].id},c[a.length+1]={x:c[a.length].x+1,value:c[a.length].value,id:c[a.length].id},c},i.updateDataAttributes=function(a,b){var c=this,d=c.config,e=d["data_"+a];return"undefined"==typeof b?e:(Object.keys(b).forEach(function(a){e[a]=b[a]}),c.redraw({withLegend:!0}),e)},i.convertUrlToData=function(a,b,c,d){var e=this,f=b?b:"csv";e.d3.xhr(a,function(a,b){var g;if(!b)throw new Error(a.responseURL+" "+a.status+" ("+a.statusText+")");g="json"===f?e.convertJsonToData(JSON.parse(b.response),c):"tsv"===f?e.convertTsvToData(b.response):e.convertCsvToData(b.response),d.call(e,g)})},i.convertXsvToData=function(a,b){var c,d=b.parseRows(a);return 1===d.length?(c=[{}],d[0].forEach(function(a){c[0][a]=null})):c=b.parse(a),c},i.convertCsvToData=function(a){return this.convertXsvToData(a,this.d3.csv)},i.convertTsvToData=function(a){return this.convertXsvToData(a,this.d3.tsv)},i.convertJsonToData=function(a,b){var c,d,e=this,f=[];return b?(b.x?(c=b.value.concat(b.x),e.config.data_x=b.x):c=b.value,f.push(c),a.forEach(function(a){var b=[];c.forEach(function(c){var d=p(a[c])?null:a[c];b.push(d)}),f.push(b)}),d=e.convertRowsToData(f)):(Object.keys(a).forEach(function(b){f.push([b].concat(a[b]))}),d=e.convertColumnsToData(f)),d},i.convertRowsToData=function(a){var b,c,d=a[0],e={},f=[];for(b=1;b<a.length;b++){for(e={},c=0;c<a[b].length;c++){if(p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[d[c]]=a[b][c]}f.push(e)}return f},i.convertColumnsToData=function(a){var b,c,d,e=[];for(b=0;b<a.length;b++)for(d=a[b][0],c=1;c<a[b].length;c++){if(p(e[c-1])&&(e[c-1]={}),p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[c-1][d]=a[b][c]}return e},i.convertDataToTargets=function(a,b){var c,d=this,e=d.config,f=d.d3.keys(a[0]).filter(d.isNotX,d),g=d.d3.keys(a[0]).filter(d.isX,d);return f.forEach(function(c){var f=d.getXKey(c);d.isCustomX()||d.isTimeSeries()?g.indexOf(f)>=0?d.data.xs[c]=(b&&d.data.xs[c]?d.data.xs[c]:[]).concat(a.map(function(a){return a[f]}).filter(m).map(function(a,b){return d.generateTargetX(a,c,b)})):e.data_x?d.data.xs[c]=d.getOtherTargetXs():v(e.data_xs)&&(d.data.xs[c]=d.getXValuesOfXKey(f,d.data.targets)):d.data.xs[c]=a.map(function(a,b){return b})}),f.forEach(function(a){if(!d.data.xs[a])throw new Error('x is not defined for id = "'+a+'".')}),c=f.map(function(b,c){var f=e.data_idConverter(b);return{id:f,id_org:b,values:a.map(function(a,g){var h=d.getXKey(b),i=a[h],j=d.generateTargetX(i,b,g);return d.isCustomX()&&d.isCategorized()&&0===c&&i&&(0===g&&(e.axis_x_categories=[]),e.axis_x_categories.push(i)),(p(a[b])||d.data.xs[b].length<=g)&&(j=void 0),{x:j,value:null===a[b]||isNaN(a[b])?null:+a[b],id:f}}).filter(function(a){return q(a.x)})}}),c.forEach(function(a){var b;e.data_xSort&&(a.values=a.values.sort(function(a,b){var c=a.x||0===a.x?a.x:1/0,d=b.x||0===b.x?b.x:1/0;return c-d})),b=0,a.values.forEach(function(a){a.index=b++}),d.data.xs[a.id].sort(function(a,b){return a-b})}),e.data_type&&d.setTargetType(d.mapToIds(c).filter(function(a){return!(a in e.data_types)}),e.data_type),c.forEach(function(a){d.addCache(a.id_org,a)}),c},i.load=function(a,b){var c=this;a&&(b.filter&&(a=a.filter(b.filter)),(b.type||b.types)&&a.forEach(function(a){var d=b.types&&b.types[a.id]?b.types[a.id]:b.type;c.setTargetType(a.id,d)}),c.data.targets.forEach(function(b){for(var c=0;c<a.length;c++)if(b.id===a[c].id){b.values=a[c].values,a.splice(c,1);break}}),c.data.targets=c.data.targets.concat(a)),c.updateTargets(c.data.targets),c.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),b.done&&b.done()},i.loadFromArgs=function(a){var b=this;a.data?b.load(b.convertDataToTargets(a.data),a):a.url?b.convertUrlToData(a.url,a.mimeType,a.keys,function(c){b.load(b.convertDataToTargets(c),a)}):a.json?b.load(b.convertDataToTargets(b.convertJsonToData(a.json,a.keys)),a):a.rows?b.load(b.convertDataToTargets(b.convertRowsToData(a.rows)),a):a.columns?b.load(b.convertDataToTargets(b.convertColumnsToData(a.columns)),a):b.load(null,a)},i.unload=function(a,b){var c=this;return b||(b=function(){}),a=a.filter(function(a){return c.hasTarget(c.data.targets,a)}),a&&0!==a.length?(c.svg.selectAll(a.map(function(a){return c.selectorTarget(a)})).transition().style("opacity",0).remove().call(c.endall,b),void a.forEach(function(a){c.withoutFadeIn[a]=!1,c.legend&&c.legend.selectAll("."+l.legendItem+c.getTargetSelectorSuffix(a)).remove(),c.data.targets=c.data.targets.filter(function(b){return b.id!==a})})):void b()},i.categoryName=function(a){var b=this.config;return a<b.axis_x_categories.length?b.axis_x_categories[a]:a},i.initEventRect=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.eventRects).style("fill-opacity",0)},i.redrawEventRect=function(){var a,b,c=this,d=c.config,e=c.isMultipleX(),f=c.main.select("."+l.eventRects).style("cursor",d.zoom_enabled?d.axis_rotated?"ns-resize":"ew-resize":null).classed(l.eventRectsMultiple,e).classed(l.eventRectsSingle,!e);f.selectAll("."+l.eventRect).remove(),c.eventRect=f.selectAll("."+l.eventRect),e?(a=c.eventRect.data([0]),c.generateEventRectsForMultipleXs(a.enter()),c.updateEventRect(a)):(b=c.getMaxDataCountTarget(c.data.targets),f.datum(b?b.values:[]),c.eventRect=f.selectAll("."+l.eventRect),a=c.eventRect.data(function(a){return a}),c.generateEventRectsForSingleX(a.enter()),c.updateEventRect(a),a.exit().remove())},i.updateEventRect=function(a){var b,c,d,e,f,g,h=this,i=h.config;a=a||h.eventRect.data(function(a){return a}),h.isMultipleX()?(b=0,c=0,d=h.width,e=h.height):(!h.isCustomX()&&!h.isTimeSeries()||h.isCategorized()?(f=h.getEventRectWidth(),g=function(a){return h.x(a.x)-f/2}):(h.updateXs(),f=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index);return null===b&&null===c?i.axis_rotated?h.height:h.width:(null===b&&(b=h.x.domain()[0]),null===c&&(c=h.x.domain()[1]),Math.max(0,(h.x(c)-h.x(b))/2))},g=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index),d=h.data.xs[a.id][a.index];return null===b&&null===c?0:(null===b&&(b=h.x.domain()[0]),(h.x(d)+h.x(b))/2)}),b=i.axis_rotated?0:g,c=i.axis_rotated?g:0,d=i.axis_rotated?h.width:f,e=i.axis_rotated?f:h.height),a.attr("class",h.classEvent.bind(h)).attr("x",b).attr("y",c).attr("width",d).attr("height",e)},i.generateEventRectsForSingleX=function(a){var b=this,c=b.d3,d=b.config;a.append("rect").attr("class",b.classEvent.bind(b)).style("cursor",d.data_selection_enabled&&d.data_selection_grouped?"pointer":null).on("mouseover",function(a){var c=a.index;b.dragging||b.flowing||b.hasArcType()||(d.point_focus_expand_enabled&&b.expandCircles(c,null,!0),b.expandBars(c,null,!0),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseover.call(b.api,a)}))}).on("mouseout",function(a){var c=a.index;b.config&&(b.hasArcType()||(b.hideXGridFocus(),b.hideTooltip(),b.unexpandCircles(),b.unexpandBars(),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseout.call(b.api,a)})))}).on("mousemove",function(a){var e,f=a.index,g=b.svg.select("."+l.eventRect+"-"+f);b.dragging||b.flowing||b.hasArcType()||(b.isStepType(a)&&"step-after"===b.config.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,f))&&(f-=1),e=b.filterTargetsToShow(b.data.targets).map(function(a){return b.addName(b.getValueOnIndex(a.values,f))}),d.tooltip_grouped&&(b.showTooltip(e,this),b.showXGridFocus(e)),(!d.tooltip_grouped||d.data_selection_enabled&&!d.data_selection_grouped)&&b.main.selectAll("."+l.shape+"-"+f).each(function(){c.select(this).classed(l.EXPANDED,!0),d.data_selection_enabled&&g.style("cursor",d.data_selection_grouped?"pointer":null),d.tooltip_grouped||(b.hideXGridFocus(),b.hideTooltip(),d.data_selection_grouped||(b.unexpandCircles(f),b.unexpandBars(f)))}).filter(function(a){return b.isWithinShape(this,a)}).each(function(a){d.data_selection_enabled&&(d.data_selection_grouped||d.data_selection_isselectable(a))&&g.style("cursor","pointer"),d.tooltip_grouped||(b.showTooltip([a],this),b.showXGridFocus([a]),d.point_focus_expand_enabled&&b.expandCircles(f,a.id,!0),b.expandBars(f,a.id,!0))}))}).on("click",function(a){var e=a.index;if(!b.hasArcType()&&b.toggleShape){if(b.cancelClick)return void(b.cancelClick=!1);b.isStepType(a)&&"step-after"===d.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,e))&&(e-=1),b.main.selectAll("."+l.shape+"-"+e).each(function(a){(d.data_selection_grouped||b.isWithinShape(this,a))&&(b.toggleShape(this,a,e),b.config.data_onclick.call(b.api,a,this))})}}).call(d.data_selection_draggable&&b.drag?c.behavior.drag().origin(Object).on("drag",function(){b.drag(c.mouse(this))}).on("dragstart",function(){b.dragstart(c.mouse(this))}).on("dragend",function(){b.dragend()}):function(){})},i.generateEventRectsForMultipleXs=function(a){function b(){c.svg.select("."+l.eventRect).style("cursor",null),c.hideXGridFocus(),c.hideTooltip(),c.unexpandCircles(),c.unexpandBars()}var c=this,d=c.d3,e=c.config;a.append("rect").attr("x",0).attr("y",0).attr("width",c.width).attr("height",c.height).attr("class",l.eventRect).on("mouseout",function(){c.config&&(c.hasArcType()||b())}).on("mousemove",function(){var a,f,g,h,i=c.filterTargetsToShow(c.data.targets);if(!c.dragging&&!c.hasArcType(i)){if(a=d.mouse(this),f=c.findClosestFromTargets(i,a),!c.mouseover||f&&f.id===c.mouseover.id||(e.data_onmouseout.call(c.api,c.mouseover),c.mouseover=void 0),!f)return void b();g=c.isScatterType(f)||!e.tooltip_grouped?[f]:c.filterByX(i,f.x),h=g.map(function(a){return c.addName(a)}),c.showTooltip(h,this),e.point_focus_expand_enabled&&c.expandCircles(f.index,f.id,!0),c.expandBars(f.index,f.id,!0),c.showXGridFocus(h),(c.isBarType(f.id)||c.dist(f,a)<100)&&(c.svg.select("."+l.eventRect).style("cursor","pointer"),c.mouseover||(e.data_onmouseover.call(c.api,f),c.mouseover=f))}}).on("click",function(){var a,b,f=c.filterTargetsToShow(c.data.targets);c.hasArcType(f)||(a=d.mouse(this),b=c.findClosestFromTargets(f,a),b&&(c.isBarType(b.id)||c.dist(b,a)<100)&&c.main.selectAll("."+l.shapes+c.getTargetSelectorSuffix(b.id)).selectAll("."+l.shape+"-"+b.index).each(function(){(e.data_selection_grouped||c.isWithinShape(this,b))&&(c.toggleShape(this,b,b.index),c.config.data_onclick.call(c.api,b,this))}))}).call(e.data_selection_draggable&&c.drag?d.behavior.drag().origin(Object).on("drag",function(){c.drag(d.mouse(this))}).on("dragstart",function(){c.dragstart(d.mouse(this))}).on("dragend",function(){c.dragend()}):function(){})},i.dispatchEvent=function(b,c,d){var e=this,f="."+l.eventRect+(e.isMultipleX()?"":"-"+c),g=e.main.select(f).node(),h=g.getBoundingClientRect(),i=h.left+(d?d[0]:0),j=h.top+(d?d[1]:0),k=document.createEvent("MouseEvents");k.initMouseEvent(b,!0,!0,a,0,i,j,i,j,!1,!1,!1,!1,0,null),g.dispatchEvent(k)},i.getCurrentWidth=function(){var a=this,b=a.config;return b.size_width?b.size_width:a.getParentWidth()},i.getCurrentHeight=function(){var a=this,b=a.config,c=b.size_height?b.size_height:a.getParentHeight();return c>0?c:320/(a.hasType("gauge")?2:1)},i.getCurrentPaddingTop=function(){var a=this.config;return m(a.padding_top)?a.padding_top:0},i.getCurrentPaddingBottom=function(){var a=this.config;return m(a.padding_bottom)?a.padding_bottom:0},i.getCurrentPaddingLeft=function(a){var b=this,c=b.config;return m(c.padding_left)?c.padding_left:c.axis_rotated?c.axis_x_show?Math.max(r(b.getAxisWidthByAxisId("x",a)),40):1:!c.axis_y_show||c.axis_y_inner?b.axis.getYAxisLabelPosition().isOuter?30:1:r(b.getAxisWidthByAxisId("y",a))},i.getCurrentPaddingRight=function(){var a=this,b=a.config,c=10,d=a.isLegendRight?a.getLegendWidth()+20:0;return m(b.padding_right)?b.padding_right+1:b.axis_rotated?c+d:!b.axis_y2_show||b.axis_y2_inner?2+d+(a.axis.getY2AxisLabelPosition().isOuter?20:0):r(a.getAxisWidthByAxisId("y2"))+d},i.getParentRectValue=function(a){for(var b,c=this.selectChart.node();c&&"BODY"!==c.tagName;){try{b=c.getBoundingClientRect()[a]}catch(d){"width"===a&&(b=c.offsetWidth)}if(b)break;c=c.parentNode}return b},i.getParentWidth=function(){return this.getParentRectValue("width")},i.getParentHeight=function(){var a=this.selectChart.style("height");return a.indexOf("px")>0?+a.replace("px",""):0},i.getSvgLeft=function(a){var b=this,c=b.config,d=c.axis_rotated||!c.axis_rotated&&!c.axis_y_inner,e=c.axis_rotated?l.axisX:l.axisY,f=b.main.select("."+e).node(),g=f&&d?f.getBoundingClientRect():{right:0},h=b.selectChart.node().getBoundingClientRect(),i=b.hasArcType(),j=g.right-h.left-(i?0:b.getCurrentPaddingLeft(a));return j>0?j:0},i.getAxisWidthByAxisId=function(a,b){var c=this,d=c.axis.getLabelPositionById(a);return c.axis.getMaxTickWidth(a,b)+(d.isInner?20:40)},i.getHorizontalAxisHeight=function(a){var b=this,c=b.config,d=30;return"x"!==a||c.axis_x_show?"x"===a&&c.axis_x_height?c.axis_x_height:"y"!==a||c.axis_y_show?"y2"!==a||c.axis_y2_show?("x"===a&&!c.axis_rotated&&c.axis_x_tick_rotate&&(d=30+b.axis.getMaxTickWidth(a)*Math.cos(Math.PI*(90-c.axis_x_tick_rotate)/180)),d+(b.axis.getLabelPositionById(a).isInner?0:10)+("y2"===a?-10:0)):b.rotated_padding_top:!c.legend_show||b.isLegendRight||b.isLegendInset?1:10:8},i.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},i.getShapeIndices=function(a){var b,c,d=this,e=d.config,f={},g=0;return d.filterTargetsToShow(d.data.targets.filter(a,d)).forEach(function(a){for(b=0;b<e.data_groups.length;b++)if(!(e.data_groups[b].indexOf(a.id)<0))for(c=0;c<e.data_groups[b].length;c++)if(e.data_groups[b][c]in f){f[a.id]=f[e.data_groups[b][c]];break}p(f[a.id])&&(f[a.id]=g++)}),f.__max__=g-1,f},i.getShapeX=function(a,b,c,d){var e=this,f=d?e.subX:e.x;return function(d){var e=d.id in c?c[d.id]:0;return d.x||0===d.x?f(d.x)-a*(b/2-e):0}},i.getShapeY=function(a){var b=this;return function(c){var d=a?b.getSubYScale(c.id):b.getYScale(c.id);return d(c.value)}},i.getShapeOffset=function(a,b,c){var d=this,e=d.orderTargets(d.filterTargetsToShow(d.data.targets.filter(a,d))),f=e.map(function(a){return a.id});return function(a,g){var h=c?d.getSubYScale(a.id):d.getYScale(a.id),i=h(0),j=i;return e.forEach(function(c){var e=d.isStepType(a)?d.convertValuesToStep(c.values):c.values;c.id!==a.id&&b[c.id]===b[a.id]&&f.indexOf(c.id)<f.indexOf(a.id)&&e[g].value*a.value>=0&&(j+=h(e[g].value)-i)}),j}},i.isWithinShape=function(a,b){var c,d=this,e=d.d3.select(a);return d.isTargetToShow(b.id)?"circle"===a.nodeName?c=d.isStepType(b)?d.isWithinStep(a,d.getYScale(b.id)(b.value)):d.isWithinCircle(a,1.5*d.pointSelectR(b)):"path"===a.nodeName&&(c=e.classed(l.bar)?d.isWithinBar(a):!0):c=!1,c},i.getInterpolate=function(a){var b=this;return b.isSplineType(a)?"cardinal":b.isStepType(a)?b.config.line_step_type:"linear"},i.initLine=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartLines)},i.updateTargetsForLine=function(a){var b,c,d=this,e=d.config,f=d.classChartLine.bind(d),g=d.classLines.bind(d),h=d.classAreas.bind(d),i=d.classCircles.bind(d),j=d.classFocus.bind(d);b=d.main.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",function(a){return f(a)+j(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g),c.append("g").attr("class",h),c.append("g").attr("class",function(a){return d.generateClass(l.selectedCircles,a.id)}),c.append("g").attr("class",i).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null}),a.forEach(function(a){d.main.selectAll("."+l.selectedCircles+d.getTargetSelectorSuffix(a.id)).selectAll("."+l.selectedCircle).each(function(b){b.value=a.values[b.index].value})})},i.updateLine=function(a){var b=this;b.mainLine=b.main.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.mainLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.mainLine.style("opacity",b.initialOpacity.bind(b)).style("shape-rendering",function(a){return b.isStepType(a)?"crispEdges":""}).attr("transform",null),b.mainLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLine=function(a,b){return[(b?this.mainLine.transition():this.mainLine).attr("d",a).style("stroke",this.color).style("opacity",1)]},i.generateDrawLine=function(a,b){var c=this,d=c.config,e=c.d3.svg.line(),f=c.generateGetLinePoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x(i).y(h):e.x(h).y(i),d.line_connectNull||(e=e.defined(function(a){return null!=a.value})),function(a){var f,h=d.line_connectNull?c.filterRemoveNull(a.values):a.values,i=b?c.x:c.subX,j=g.call(c,a.id),k=0,l=0;return c.isLineType(a)?d.data_regions[a.id]?f=c.lineWithRegions(h,i,j,d.data_regions[a.id]):(c.isStepType(a)&&(h=c.convertValuesToStep(h)),f=e.interpolate(c.getInterpolate(a))(h)):(h[0]&&(k=i(h[0].x),l=j(h[0].value)),f=d.axis_rotated?"M "+l+" "+k:"M "+k+" "+l),f?f:"M 0 0"}},i.generateGetLinePoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isLineType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)]]}},i.lineWithRegions=function(a,b,c,d){function e(a,b){var c;for(c=0;c<b.length;c++)if(b[c].start<a&&a<=b[c].end)return!0;return!1}function f(a){return"M"+a[0][0]+" "+a[0][1]+" "+a[1][0]+" "+a[1][1]}var g,h,i,j,k,l,m,n,o,r,s,t,u=this,v=u.config,w=-1,x="M",y=u.isCategorized()?.5:0,z=[];if(q(d))for(g=0;g<d.length;g++)z[g]={},z[g].start=p(d[g].start)?a[0].x:u.isTimeSeries()?u.parseDate(d[g].start):d[g].start,z[g].end=p(d[g].end)?a[a.length-1].x:u.isTimeSeries()?u.parseDate(d[g].end):d[g].end;for(s=v.axis_rotated?function(a){return c(a.value)}:function(a){return b(a.x)},t=v.axis_rotated?function(a){return b(a.x)}:function(a){return c(a.value)},i=u.isTimeSeries()?function(a,d,e,g){var h,i=a.x.getTime(),j=d.x-a.x,l=new Date(i+j*e),m=new Date(i+j*(e+g));return h=v.axis_rotated?[[c(k(e)),b(l)],[c(k(e+g)),b(m)]]:[[b(l),c(k(e))],[b(m),c(k(e+g))]],f(h)}:function(a,d,e,g){var h;return h=v.axis_rotated?[[c(k(e),!0),b(j(e))],[c(k(e+g),!0),b(j(e+g))]]:[[b(j(e),!0),c(k(e))],[b(j(e+g),!0),c(k(e+g))]],f(h)},g=0;g<a.length;g++){if(p(z)||!e(a[g].x,z))x+=" "+s(a[g])+" "+t(a[g]);else for(j=u.getScale(a[g-1].x+y,a[g].x+y,u.isTimeSeries()),k=u.getScale(a[g-1].value,a[g].value),l=b(a[g].x)-b(a[g-1].x),m=c(a[g].value)-c(a[g-1].value),n=Math.sqrt(Math.pow(l,2)+Math.pow(m,2)),o=2/n,r=2*o,h=o;1>=h;h+=r)x+=i(a[g-1],a[g],h,o);w=a[g].x}return x},i.updateArea=function(a){var b=this,c=b.d3;b.mainArea=b.main.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.mainArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.mainArea.style("opacity",b.orgAreaOpacity),b.mainArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawArea=function(a,b){return[(b?this.mainArea.transition():this.mainArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},i.generateDrawArea=function(a,b){var c=this,d=c.config,e=c.d3.svg.area(),f=c.generateGetAreaPoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(c.getAreaBaseValue(a.id))},j=function(a,b){return d.data_groups.length>0?f(a,b)[1][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x0(i).x1(j).y(h):e.x(h).y0(i).y1(j),d.line_connectNull||(e=e.defined(function(a){return null!==a.value})),function(a){var b,f=d.line_connectNull?c.filterRemoveNull(a.values):a.values,g=0,h=0;return c.isAreaType(a)?(c.isStepType(a)&&(f=c.convertValuesToStep(f)),b=e.interpolate(c.getInterpolate(a))(f)):(f[0]&&(g=c.x(f[0].x),h=c.getYScale(a.id)(f[0].value)),b=d.axis_rotated?"M "+h+" "+g:"M "+g+" "+h),b?b:"M 0 0"}},i.getAreaBaseValue=function(){return 0},i.generateGetAreaPoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isAreaType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,j],[k,l-(e-j)],[k,l-(e-j)],[k,j]]}},i.updateCircle=function(){var a=this;a.mainCircle=a.main.selectAll("."+l.circles).selectAll("."+l.circle).data(a.lineOrScatterData.bind(a)),a.mainCircle.enter().append("circle").attr("class",a.classCircle.bind(a)).attr("r",a.pointR.bind(a)).style("fill",a.color),a.mainCircle.style("opacity",a.initialOpacityForCircle.bind(a)),a.mainCircle.exit().remove()},i.redrawCircle=function(a,b,c){var d=this.main.selectAll("."+l.selectedCircle);return[(c?this.mainCircle.transition():this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",a).attr("cy",b),(c?d.transition():d).attr("cx",a).attr("cy",b)]},i.circleX=function(a){return a.x||0===a.x?this.x(a.x):null},i.updateCircleY=function(){var a,b,c=this;c.config.data_groups.length>0?(a=c.getShapeIndices(c.isLineType),b=c.generateGetLinePoints(a),c.circleY=function(a,c){return b(a,c)[0][1]}):c.circleY=function(a){return c.getYScale(a.id)(a.value)}},i.getCircles=function(a,b){var c=this;return(b?c.main.selectAll("."+l.circles+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.circle+(m(a)?"-"+a:""))},i.expandCircles=function(a,b,c){var d=this,e=d.pointExpandedR.bind(d);c&&d.unexpandCircles(),d.getCircles(a,b).classed(l.EXPANDED,!0).attr("r",e)},i.unexpandCircles=function(a){var b=this,c=b.pointR.bind(b);b.getCircles(a).filter(function(){return b.d3.select(this).classed(l.EXPANDED)}).classed(l.EXPANDED,!1).attr("r",c)},i.pointR=function(a){var b=this,c=b.config;return b.isStepType(a)?0:n(c.point_r)?c.point_r(a):c.point_r},i.pointExpandedR=function(a){var b=this,c=b.config;return c.point_focus_expand_enabled?c.point_focus_expand_r?c.point_focus_expand_r:1.75*b.pointR(a):b.pointR(a)},i.pointSelectR=function(a){var b=this,c=b.config;return c.point_select_r?c.point_select_r:4*b.pointR(a)},i.isWithinCircle=function(a,b){var c=this.d3,d=c.mouse(a),e=c.select(a),f=+e.attr("cx"),g=+e.attr("cy");return Math.sqrt(Math.pow(f-d[0],2)+Math.pow(g-d[1],2))<b},i.isWithinStep=function(a,b){return Math.abs(b-this.d3.mouse(a)[1])<30},i.initBar=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartBars)},i.updateTargetsForBar=function(a){var b,c,d=this,e=d.config,f=d.classChartBar.bind(d),g=d.classBars.bind(d),h=d.classFocus.bind(d);b=d.main.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",function(a){return f(a)+h(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null})},i.updateBar=function(a){var b=this,c=b.barData.bind(b),d=b.classBar.bind(b),e=b.initialOpacity.bind(b),f=function(a){return b.color(a.id)};b.mainBar=b.main.selectAll("."+l.bars).selectAll("."+l.bar).data(c),b.mainBar.enter().append("path").attr("class",d).style("stroke",f).style("fill",f),b.mainBar.style("opacity",e),b.mainBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBar=function(a,b){return[(b?this.mainBar.transition():this.mainBar).attr("d",a).style("fill",this.color).style("opacity",1)]},i.getBarW=function(a,b){var c=this,d=c.config,e="number"==typeof d.bar_width?d.bar_width:b?a.tickInterval()*d.bar_width_ratio/b:0;return d.bar_width_max&&e>d.bar_width_max?d.bar_width_max:e},i.getBars=function(a,b){var c=this;return(b?c.main.selectAll("."+l.bars+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.bar+(m(a)?"-"+a:""))},i.expandBars=function(a,b,c){var d=this;c&&d.unexpandBars(),d.getBars(a,b).classed(l.EXPANDED,!0)},i.unexpandBars=function(a){var b=this;b.getBars(a).classed(l.EXPANDED,!1)},i.generateDrawBar=function(a,b){var c=this,d=c.config,e=c.generateGetBarPoints(a,b);return function(a,b){var c=e(a,b),f=d.axis_rotated?1:0,g=d.axis_rotated?0:1,h="M "+c[0][f]+","+c[0][g]+" L"+c[1][f]+","+c[1][g]+" L"+c[2][f]+","+c[2][g]+" L"+c[3][f]+","+c[3][g]+" z";return h}},i.generateGetBarPoints=function(a,b){var c=this,d=b?c.subXAxis:c.xAxis,e=a.__max__+1,f=c.getBarW(d,e),g=c.getShapeX(f,e,a,!!b),h=c.getShapeY(!!b),i=c.getShapeOffset(c.isBarType,a,!!b),j=b?c.getSubYScale:c.getYScale;
+return function(a,b){var d=j.call(c,a.id)(0),e=i(a,b)||d,k=g(a),l=h(a);return c.config.axis_rotated&&(0<a.value&&d>l||a.value<0&&l>d)&&(l=d),[[k,e],[k,l-(d-e)],[k+f,l-(d-e)],[k+f,e]]}},i.isWithinBar=function(a){var b=this.d3.mouse(a),c=a.getBoundingClientRect(),d=a.pathSegList.getItem(0),e=a.pathSegList.getItem(1),f=Math.min(d.x,e.x),g=Math.min(d.y,e.y),h=c.width,i=c.height,j=2,k=f-j,l=f+h+j,m=g+i+j,n=g-j;return k<b[0]&&b[0]<l&&n<b[1]&&b[1]<m},i.initText=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartTexts),a.mainText=a.d3.selectAll([])},i.updateTargetsForText=function(a){var b,c,d=this,e=d.classChartText.bind(d),f=d.classTexts.bind(d),g=d.classFocus.bind(d);b=d.main.select("."+l.chartTexts).selectAll("."+l.chartText).data(a).attr("class",function(a){return e(a)+g(a)}),c=b.enter().append("g").attr("class",e).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",f)},i.updateText=function(a){var b=this,c=b.config,d=b.barOrLineData.bind(b),e=b.classText.bind(b);b.mainText=b.main.selectAll("."+l.texts).selectAll("."+l.text).data(d),b.mainText.enter().append("text").attr("class",e).attr("text-anchor",function(a){return c.axis_rotated?a.value<0?"end":"start":"middle"}).style("stroke","none").style("fill",function(a){return b.color(a)}).style("fill-opacity",0),b.mainText.text(function(a,c,d){return b.dataLabelFormat(a.id)(a.value,a.id,c,d)}),b.mainText.exit().transition().duration(a).style("fill-opacity",0).remove()},i.redrawText=function(a,b,c,d){return[(d?this.mainText.transition():this.mainText).attr("x",a).attr("y",b).style("fill",this.color).style("fill-opacity",c?0:this.opacityForText.bind(this))]},i.getTextRect=function(a,b){var c,d=this.d3.select("body").append("div").classed("c3",!0),e=d.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0);return e.selectAll(".dummy").data([a]).enter().append("text").classed(b?b:"",!0).text(a).each(function(){c=this.getBoundingClientRect()}),d.remove(),c},i.generateXYForText=function(a,b,c,d){var e=this,f=e.generateGetAreaPoints(a,!1),g=e.generateGetBarPoints(b,!1),h=e.generateGetLinePoints(c,!1),i=d?e.getXForText:e.getYForText;return function(a,b){var c=e.isAreaType(a)?f:e.isBarType(a)?g:h;return i.call(e,c(a,b),a,this)}},i.getXForText=function(a,b,c){var d,e,f=this,g=c.getBoundingClientRect();return f.config.axis_rotated?(e=f.isBarType(b)?4:6,d=a[2][1]+e*(b.value<0?-1:1)):d=f.hasType("bar")?(a[2][0]+a[0][0])/2:a[0][0],null===b.value&&(d>f.width?d=f.width-g.width:0>d&&(d=4)),d},i.getYForText=function(a,b,c){var d,e=this,f=c.getBoundingClientRect();return e.config.axis_rotated?d=(a[0][0]+a[2][0]+.6*f.height)/2:(d=a[2][1],b.value<0?(d+=f.height,e.isBarType(b)&&e.isSafari()?d-=3:!e.isBarType(b)&&e.isChrome()&&(d+=3)):d+=e.isBarType(b)?-3:-6),null!==b.value||e.config.axis_rotated||(d<f.height?d=f.height:d>this.height&&(d=this.height-4)),d},i.setTargetType=function(a,b){var c=this,d=c.config;c.mapToTargetIds(a).forEach(function(a){c.withoutFadeIn[a]=b===d.data_types[a],d.data_types[a]=b}),a||(d.data_type=b)},i.hasType=function(a,b){var c=this,d=c.config.data_types,e=!1;return b=b||c.data.targets,b&&b.length?b.forEach(function(b){var c=d[b.id];(c&&c.indexOf(a)>=0||!c&&"line"===a)&&(e=!0)}):Object.keys(d).length?Object.keys(d).forEach(function(b){d[b]===a&&(e=!0)}):e=c.config.data_type===a,e},i.hasArcType=function(a){return this.hasType("pie",a)||this.hasType("donut",a)||this.hasType("gauge",a)},i.isLineType=function(a){var b=this.config,c=o(a)?a:a.id;return!b.data_types[c]||["line","spline","area","area-spline","step","area-step"].indexOf(b.data_types[c])>=0},i.isStepType=function(a){var b=o(a)?a:a.id;return["step","area-step"].indexOf(this.config.data_types[b])>=0},i.isSplineType=function(a){var b=o(a)?a:a.id;return["spline","area-spline"].indexOf(this.config.data_types[b])>=0},i.isAreaType=function(a){var b=o(a)?a:a.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[b])>=0},i.isBarType=function(a){var b=o(a)?a:a.id;return"bar"===this.config.data_types[b]},i.isScatterType=function(a){var b=o(a)?a:a.id;return"scatter"===this.config.data_types[b]},i.isPieType=function(a){var b=o(a)?a:a.id;return"pie"===this.config.data_types[b]},i.isGaugeType=function(a){var b=o(a)?a:a.id;return"gauge"===this.config.data_types[b]},i.isDonutType=function(a){var b=o(a)?a:a.id;return"donut"===this.config.data_types[b]},i.isArcType=function(a){return this.isPieType(a)||this.isDonutType(a)||this.isGaugeType(a)},i.lineData=function(a){return this.isLineType(a)?[a]:[]},i.arcData=function(a){return this.isArcType(a.data)?[a]:[]},i.barData=function(a){return this.isBarType(a)?a.values:[]},i.lineOrScatterData=function(a){return this.isLineType(a)||this.isScatterType(a)?a.values:[]},i.barOrLineData=function(a){return this.isBarType(a)||this.isLineType(a)?a.values:[]},i.initGrid=function(){var a=this,b=a.config,c=a.d3;a.grid=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid),b.grid_x_show&&a.grid.append("g").attr("class",l.xgrids),b.grid_y_show&&a.grid.append("g").attr("class",l.ygrids),b.grid_focus_show&&a.grid.append("g").attr("class",l.xgridFocus).append("line").attr("class",l.xgridFocus),a.xgrid=c.selectAll([]),b.grid_lines_front||a.initGridLines()},i.initGridLines=function(){var a=this,b=a.d3;a.gridLines=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid+" "+l.gridLines),a.gridLines.append("g").attr("class",l.xgridLines),a.gridLines.append("g").attr("class",l.ygridLines),a.xgridLines=b.selectAll([])},i.updateXGrid=function(a){var b=this,c=b.config,d=b.d3,e=b.generateGridData(c.grid_x_type,b.x),f=b.isCategorized()?b.xAxis.tickOffset():0;b.xgridAttr=c.axis_rotated?{x1:0,x2:b.width,y1:function(a){return b.x(a)-f},y2:function(a){return b.x(a)-f}}:{x1:function(a){return b.x(a)+f},x2:function(a){return b.x(a)+f},y1:0,y2:b.height},b.xgrid=b.main.select("."+l.xgrids).selectAll("."+l.xgrid).data(e),b.xgrid.enter().append("line").attr("class",l.xgrid),a||b.xgrid.attr(b.xgridAttr).style("opacity",function(){return+d.select(this).attr(c.axis_rotated?"y1":"x1")===(c.axis_rotated?b.height:0)?0:1}),b.xgrid.exit().remove()},i.updateYGrid=function(){var a=this,b=a.config,c=a.yAxis.tickValues()||a.y.ticks(b.grid_y_ticks);a.ygrid=a.main.select("."+l.ygrids).selectAll("."+l.ygrid).data(c),a.ygrid.enter().append("line").attr("class",l.ygrid),a.ygrid.attr("x1",b.axis_rotated?a.y:0).attr("x2",b.axis_rotated?a.y:a.width).attr("y1",b.axis_rotated?0:a.y).attr("y2",b.axis_rotated?a.height:a.y),a.ygrid.exit().remove(),a.smoothLines(a.ygrid,"grid")},i.gridTextAnchor=function(a){return a.position?a.position:"end"},i.gridTextDx=function(a){return"start"===a.position?4:"middle"===a.position?0:-4},i.xGridTextX=function(a){return"start"===a.position?-this.height:"middle"===a.position?-this.height/2:0},i.yGridTextX=function(a){return"start"===a.position?0:"middle"===a.position?this.width/2:this.width},i.updateGrid=function(a){var b,c,d,e=this,f=e.main,g=e.config;e.grid.style("visibility",e.hasArcType()?"hidden":"visible"),f.select("line."+l.xgridFocus).style("visibility","hidden"),g.grid_x_show&&e.updateXGrid(),e.xgridLines=f.select("."+l.xgridLines).selectAll("."+l.xgridLine).data(g.grid_x_lines),b=e.xgridLines.enter().append("g").attr("class",function(a){return l.xgridLine+(a["class"]?" "+a["class"]:"")}),b.append("line").style("opacity",0),b.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"":"rotate(-90)").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),e.xgridLines.exit().transition().duration(a).style("opacity",0).remove(),g.grid_y_show&&e.updateYGrid(),e.ygridLines=f.select("."+l.ygridLines).selectAll("."+l.ygridLine).data(g.grid_y_lines),c=e.ygridLines.enter().append("g").attr("class",function(a){return l.ygridLine+(a["class"]?" "+a["class"]:"")}),c.append("line").style("opacity",0),c.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"rotate(-90)":"").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),d=e.yv.bind(e),e.ygridLines.select("line").transition().duration(a).attr("x1",g.axis_rotated?d:0).attr("x2",g.axis_rotated?d:e.width).attr("y1",g.axis_rotated?0:d).attr("y2",g.axis_rotated?e.height:d).style("opacity",1),e.ygridLines.select("text").transition().duration(a).attr("x",g.axis_rotated?e.xGridTextX.bind(e):e.yGridTextX.bind(e)).attr("y",d).text(function(a){return a.text}).style("opacity",1),e.ygridLines.exit().transition().duration(a).style("opacity",0).remove()},i.redrawGrid=function(a){var b=this,c=b.config,d=b.xv.bind(b),e=b.xgridLines.select("line"),f=b.xgridLines.select("text");return[(a?e.transition():e).attr("x1",c.axis_rotated?0:d).attr("x2",c.axis_rotated?b.width:d).attr("y1",c.axis_rotated?d:0).attr("y2",c.axis_rotated?d:b.height).style("opacity",1),(a?f.transition():f).attr("x",c.axis_rotated?b.yGridTextX.bind(b):b.xGridTextX.bind(b)).attr("y",d).text(function(a){return a.text}).style("opacity",1)]},i.showXGridFocus=function(a){var b=this,c=b.config,d=a.filter(function(a){return a&&m(a.value)}),e=b.main.selectAll("line."+l.xgridFocus),f=b.xx.bind(b);c.tooltip_show&&(b.hasType("scatter")||b.hasArcType()||(e.style("visibility","visible").data([d[0]]).attr(c.axis_rotated?"y1":"x1",f).attr(c.axis_rotated?"y2":"x2",f),b.smoothLines(e,"grid")))},i.hideXGridFocus=function(){this.main.select("line."+l.xgridFocus).style("visibility","hidden")},i.updateXgridFocus=function(){var a=this,b=a.config;a.main.select("line."+l.xgridFocus).attr("x1",b.axis_rotated?0:-10).attr("x2",b.axis_rotated?a.width:-10).attr("y1",b.axis_rotated?-10:0).attr("y2",b.axis_rotated?-10:a.height)},i.generateGridData=function(a,b){var c,d,e,f,g=this,h=[],i=g.main.select("."+l.axisX).selectAll(".tick").size();if("year"===a)for(c=g.getXDomain(),d=c[0].getFullYear(),e=c[1].getFullYear(),f=d;e>=f;f++)h.push(new Date(f+"-01-01 00:00:00"));else h=b.ticks(10),h.length>i&&(h=h.filter(function(a){return(""+a).indexOf(".")<0}));return h},i.getGridFilterToRemove=function(a){return a?function(b){var c=!1;return[].concat(a).forEach(function(a){("value"in a&&b.value===a.value||"class"in a&&b["class"]===a["class"])&&(c=!0)}),c}:function(){return!0}},i.removeGridLines=function(a,b){var c=this,d=c.config,e=c.getGridFilterToRemove(a),f=function(a){return!e(a)},g=b?l.xgridLines:l.ygridLines,h=b?l.xgridLine:l.ygridLine;c.main.select("."+g).selectAll("."+h).filter(e).transition().duration(d.transition_duration).style("opacity",0).remove(),b?d.grid_x_lines=d.grid_x_lines.filter(f):d.grid_y_lines=d.grid_y_lines.filter(f)},i.initTooltip=function(){var a,b=this,c=b.config;if(b.tooltip=b.selectChart.style("position","relative").append("div").attr("class",l.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),c.tooltip_init_show){if(b.isTimeSeries()&&o(c.tooltip_init_x)){for(c.tooltip_init_x=b.parseDate(c.tooltip_init_x),a=0;a<b.data.targets[0].values.length&&b.data.targets[0].values[a].x-c.tooltip_init_x!==0;a++);c.tooltip_init_x=a}b.tooltip.html(c.tooltip_contents.call(b,b.data.targets.map(function(a){return b.addName(a.values[c.tooltip_init_x])}),b.axis.getXAxisTickFormat(),b.getYFormat(b.hasArcType()),b.color)),b.tooltip.style("top",c.tooltip_init_position.top).style("left",c.tooltip_init_position.left).style("display","block")}},i.getTooltipContent=function(a,b,c,d){var e,f,g,h,i,j,k=this,m=k.config,n=m.tooltip_format_title||b,o=m.tooltip_format_name||function(a){return a},p=m.tooltip_format_value||c;for(f=0;f<a.length;f++)a[f]&&(a[f].value||0===a[f].value)&&(e||(g=n?n(a[f].x):a[f].x,e="<table class='"+l.tooltip+"'>"+(g||0===g?"<tr><th colspan='2'>"+g+"</th></tr>":"")),h=p(a[f].value,a[f].ratio,a[f].id,a[f].index),void 0!==h&&(i=o(a[f].name,a[f].ratio,a[f].id,a[f].index),j=k.levelColor?k.levelColor(a[f].value):d(a[f].id),e+="<tr class='"+l.tooltipName+"-"+a[f].id+"'>",e+="<td class='name'><span style='background-color:"+j+"'></span>"+i+"</td>",e+="<td class='value'>"+h+"</td>",e+="</tr>"));return e+"</table>"},i.tooltipPosition=function(a,b,c,d){var e,f,g,h,i,j=this,k=j.config,l=j.d3,m=j.hasArcType(),n=l.mouse(d);return m?(f=(j.width-(j.isLegendRight?j.getLegendWidth():0))/2+n[0],h=j.height/2+n[1]+20):(e=j.getSvgLeft(!0),k.axis_rotated?(f=e+n[0]+100,g=f+b,i=j.currentWidth-j.getCurrentPaddingRight(),h=j.x(a[0].x)+20):(f=e+j.getCurrentPaddingLeft(!0)+j.x(a[0].x)+20,g=f+b,i=e+j.currentWidth-j.getCurrentPaddingRight(),h=n[1]+15),g>i&&(f-=g-i+20),h+c>j.currentHeight&&(h-=c+30)),0>h&&(h=0),{top:h,left:f}},i.showTooltip=function(a,b){var c,d,e,f=this,g=f.config,h=f.hasArcType(),j=a.filter(function(a){return a&&m(a.value)}),k=g.tooltip_position||i.tooltipPosition;0!==j.length&&g.tooltip_show&&(f.tooltip.html(g.tooltip_contents.call(f,a,f.axis.getXAxisTickFormat(),f.getYFormat(h),f.color)).style("display","block"),c=f.tooltip.property("offsetWidth"),d=f.tooltip.property("offsetHeight"),e=k.call(this,j,c,d,b),f.tooltip.style("top",e.top+"px").style("left",e.left+"px"))},i.hideTooltip=function(){this.tooltip.style("display","none")},i.initLegend=function(){var a=this;return a.legendItemTextBox={},a.legendHasRendered=!1,a.legend=a.svg.append("g").attr("transform",a.getTranslate("legend")),a.config.legend_show?void a.updateLegendWithDefaults():(a.legend.style("visibility","hidden"),void(a.hiddenLegendIds=a.mapToIds(a.data.targets)))},i.updateLegendWithDefaults=function(){var a=this;a.updateLegend(a.mapToIds(a.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},i.updateSizeForLegend=function(a,b){var c=this,d=c.config,e={top:c.isLegendTop?c.getCurrentPaddingTop()+d.legend_inset_y+5.5:c.currentHeight-a-c.getCurrentPaddingBottom()-d.legend_inset_y,left:c.isLegendLeft?c.getCurrentPaddingLeft()+d.legend_inset_x+.5:c.currentWidth-b-c.getCurrentPaddingRight()-d.legend_inset_x+.5};c.margin3={top:c.isLegendRight?0:c.isLegendInset?e.top:c.currentHeight-a,right:0/0,bottom:0,left:c.isLegendRight?c.currentWidth-b:c.isLegendInset?e.left:0}},i.transformLegend=function(a){var b=this;(a?b.legend.transition():b.legend).attr("transform",b.getTranslate("legend"))},i.updateLegendStep=function(a){this.legendStep=a},i.updateLegendItemWidth=function(a){this.legendItemWidth=a},i.updateLegendItemHeight=function(a){this.legendItemHeight=a},i.getLegendWidth=function(){var a=this;return a.config.legend_show?a.isLegendRight||a.isLegendInset?a.legendItemWidth*(a.legendStep+1):a.currentWidth:0},i.getLegendHeight=function(){var a=this,b=0;return a.config.legend_show&&(b=a.isLegendRight?a.currentHeight:Math.max(20,a.legendItemHeight)*(a.legendStep+1)),b},i.opacityForLegend=function(a){return a.classed(l.legendItemHidden)?null:1},i.opacityForUnfocusedLegend=function(a){return a.classed(l.legendItemHidden)?null:.3},i.toggleFocusLegend=function(a,b){var c=this;a=c.mapToTargetIds(a),c.legend.selectAll("."+l.legendItem).filter(function(b){return a.indexOf(b)>=0}).classed(l.legendItemFocused,b).transition().duration(100).style("opacity",function(){var a=b?c.opacityForLegend:c.opacityForUnfocusedLegend;return a.call(c,c.d3.select(this))})},i.revertLegend=function(){var a=this,b=a.d3;a.legend.selectAll("."+l.legendItem).classed(l.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return a.opacityForLegend(b.select(this))})},i.showLegend=function(a){var b=this,c=b.config;c.legend_show||(c.legend_show=!0,b.legend.style("visibility","visible"),b.legendHasRendered||b.updateLegendWithDefaults()),b.removeHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("visibility","visible").transition().style("opacity",function(){return b.opacityForLegend(b.d3.select(this))})},i.hideLegend=function(a){var b=this,c=b.config;c.legend_show&&u(a)&&(c.legend_show=!1,b.legend.style("visibility","hidden")),b.addHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("opacity",0).style("visibility","hidden")},i.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},i.updateLegend=function(a,b,c){function d(a,b){return u.legendItemTextBox[b]||(u.legendItemTextBox[b]=u.getTextRect(a.textContent,l.legendItem)),u.legendItemTextBox[b]}function e(b,c,e){function f(a,b){b||(g=(o-D-n)/2,B>g&&(g=(o-n)/2,D=0,J++)),I[a]=J,H[J]=u.isLegendInset?10:g,E[a]=D,D+=n}var g,h,i=0===e,j=e===a.length-1,k=d(b,c),l=k.width+C+(!j||u.isLegendRight||u.isLegendInset?y:0),m=k.height+x,n=u.isLegendRight||u.isLegendInset?m:l,o=u.isLegendRight||u.isLegendInset?u.getLegendHeight():u.getLegendWidth();return i&&(D=0,J=0,z=0,A=0),v.legend_show&&!u.isLegendToShow(c)?void(F[c]=G[c]=I[c]=E[c]=0):(F[c]=l,G[c]=m,(!z||l>=z)&&(z=l),(!A||m>=A)&&(A=m),h=u.isLegendRight||u.isLegendInset?A:z,void(v.legend_equally?(Object.keys(F).forEach(function(a){F[a]=z}),Object.keys(G).forEach(function(a){G[a]=A}),g=(o-h*a.length)/2,B>g?(D=0,J=0,a.forEach(function(a){f(a)})):f(c,!0)):f(c)))}var f,g,h,i,j,k,m,n,o,p,r,s,t,u=this,v=u.config,x=4,y=10,z=0,A=0,B=10,C=15,D=0,E={},F={},G={},H=[0],I={},J=0;b=b||{},n=w(b,"withTransition",!0),o=w(b,"withTransitionForTransform",!0),u.isLegendInset&&(J=v.legend_inset_step?v.legend_inset_step:a.length,u.updateLegendStep(J)),u.isLegendRight?(f=function(a){return z*I[a]},i=function(a){return H[I[a]]+E[a]}):u.isLegendInset?(f=function(a){return z*I[a]+10},i=function(a){return H[I[a]]+E[a]}):(f=function(a){return H[I[a]]+E[a]},i=function(a){return A*I[a]}),g=function(a,b){return f(a,b)+14},j=function(a,b){return i(a,b)+9},h=function(a,b){return f(a,b)},k=function(a,b){return i(a,b)-5},m=u.legend.selectAll("."+l.legendItem).data(a).enter().append("g").attr("class",function(a){return u.generateClass(l.legendItem,a)}).style("visibility",function(a){return u.isLegendToShow(a)?"visible":"hidden"}).style("cursor","pointer").on("click",function(a){v.legend_item_onclick?v.legend_item_onclick.call(u,a):u.d3.event.altKey?(u.api.hide(),u.api.show(a)):(u.api.toggle(a),u.isTargetToShow(a)?u.api.focus(a):u.api.revert())}).on("mouseover",function(a){u.d3.select(this).classed(l.legendItemFocused,!0),!u.transiting&&u.isTargetToShow(a)&&u.api.focus(a),v.legend_item_onmouseover&&v.legend_item_onmouseover.call(u,a)}).on("mouseout",function(a){u.d3.select(this).classed(l.legendItemFocused,!1),u.api.revert(),v.legend_item_onmouseout&&v.legend_item_onmouseout.call(u,a)}),m.append("text").text(function(a){return q(v.data_names[a])?v.data_names[a]:a}).each(function(a,b){e(this,a,b)}).style("pointer-events","none").attr("x",u.isLegendRight||u.isLegendInset?g:-200).attr("y",u.isLegendRight||u.isLegendInset?-200:j),m.append("rect").attr("class",l.legendItemEvent).style("fill-opacity",0).attr("x",u.isLegendRight||u.isLegendInset?h:-200).attr("y",u.isLegendRight||u.isLegendInset?-200:k),m.append("rect").attr("class",l.legendItemTile).style("pointer-events","none").style("fill",u.color).attr("x",u.isLegendRight||u.isLegendInset?g:-200).attr("y",u.isLegendRight||u.isLegendInset?-200:i).attr("width",10).attr("height",10),t=u.legend.select("."+l.legendBackground+" rect"),u.isLegendInset&&z>0&&0===t.size()&&(t=u.legend.insert("g","."+l.legendItem).attr("class",l.legendBackground).append("rect")),p=u.legend.selectAll("text").data(a).text(function(a){return q(v.data_names[a])?v.data_names[a]:a}).each(function(a,b){e(this,a,b)}),(n?p.transition():p).attr("x",g).attr("y",j),r=u.legend.selectAll("rect."+l.legendItemEvent).data(a),(n?r.transition():r).attr("width",function(a){return F[a]}).attr("height",function(a){return G[a]}).attr("x",h).attr("y",k),s=u.legend.selectAll("rect."+l.legendItemTile).data(a),(n?s.transition():s).style("fill",u.color).attr("x",f).attr("y",i),t&&(n?t.transition():t).attr("height",u.getLegendHeight()-12).attr("width",z*(J+1)+10),u.legend.selectAll("."+l.legendItem).classed(l.legendItemHidden,function(a){return!u.isTargetToShow(a)}),u.updateLegendItemWidth(z),u.updateLegendItemHeight(A),u.updateLegendStep(J),u.updateSizes(),u.updateScales(),u.updateSvgSize(),u.transformAll(o,c),u.legendHasRendered=!0},c(b,f),f.prototype.init=function(){var a=this.owner,b=a.config,c=a.main;a.axes.x=c.append("g").attr("class",l.axis+" "+l.axisX).attr("clip-path",a.clipPathForXAxis).attr("transform",a.getTranslate("x")).style("visibility",b.axis_x_show?"visible":"hidden"),a.axes.x.append("text").attr("class",l.axisXLabel).attr("transform",b.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),a.axes.y=c.append("g").attr("class",l.axis+" "+l.axisY).attr("clip-path",b.axis_y_inner?"":a.clipPathForYAxis).attr("transform",a.getTranslate("y")).style("visibility",b.axis_y_show?"visible":"hidden"),a.axes.y.append("text").attr("class",l.axisYLabel).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),a.axes.y2=c.append("g").attr("class",l.axis+" "+l.axisY2).attr("transform",a.getTranslate("y2")).style("visibility",b.axis_y2_show?"visible":"hidden"),a.axes.y2.append("text").attr("class",l.axisY2Label).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},f.prototype.getXAxis=function(a,b,c,d,e,f,h){var i=this.owner,j=i.config,k={isCategory:i.isCategorized(),withOuterTick:e,tickMultiline:j.axis_x_tick_multiline,tickWidth:j.axis_x_tick_width,tickTextRotate:h?0:j.axis_x_tick_rotate,withoutTransition:f},l=g(i.d3,k).scale(a).orient(b);return i.isTimeSeries()&&d&&(d=d.map(function(a){return i.parseDate(a)})),l.tickFormat(c).tickValues(d),i.isCategorized()&&(l.tickCentered(j.axis_x_tick_centered),u(j.axis_x_tick_culling)&&(j.axis_x_tick_culling=!1)),l},f.prototype.updateXAxisTickValues=function(a,b){var c,d=this.owner,e=d.config;return(e.axis_x_tick_fit||e.axis_x_tick_count)&&(c=this.generateTickValues(d.mapTargetsToUniqueXs(a),e.axis_x_tick_count,d.isTimeSeries())),b?b.tickValues(c):(d.xAxis.tickValues(c),d.subXAxis.tickValues(c)),c},f.prototype.getYAxis=function(a,b,c,d,e,f){var h={withOuterTick:e,withoutTransition:f},i=this.owner,j=i.d3,k=i.config,l=g(j,h).scale(a).orient(b).tickFormat(c);return i.isTimeSeriesY()?l.ticks(j.time[k.axis_y_tick_time_value],k.axis_y_tick_time_interval):l.tickValues(d),l},f.prototype.getId=function(a){var b=this.owner.config;return a in b.data_axes?b.data_axes[a]:"y"},f.prototype.getXAxisTickFormat=function(){var a=this.owner,b=a.config,c=a.isTimeSeries()?a.defaultAxisTimeFormat:a.isCategorized()?a.categoryName:function(a){return 0>a?a.toFixed(0):a};return b.axis_x_tick_format&&(n(b.axis_x_tick_format)?c=b.axis_x_tick_format:a.isTimeSeries()&&(c=function(c){return c?a.axisTimeFormat(b.axis_x_tick_format)(c):""})),n(c)?function(b){return c.call(a,b)}:c},f.prototype.getTickValues=function(a,b){return a?a:b?b.tickValues():void 0},f.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},f.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},f.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},f.prototype.getLabelOptionByAxisId=function(a){var b,c=this.owner,d=c.config;return"y"===a?b=d.axis_y_label:"y2"===a?b=d.axis_y2_label:"x"===a&&(b=d.axis_x_label),b},f.prototype.getLabelText=function(a){var b=this.getLabelOptionByAxisId(a);return o(b)?b:b?b.text:null},f.prototype.setLabelText=function(a,b){var c=this.owner,d=c.config,e=this.getLabelOptionByAxisId(a);o(e)?"y"===a?d.axis_y_label=b:"y2"===a?d.axis_y2_label=b:"x"===a&&(d.axis_x_label=b):e&&(e.text=b)},f.prototype.getLabelPosition=function(a,b){var c=this.getLabelOptionByAxisId(a),d=c&&"object"==typeof c&&c.position?c.position:b;return{isInner:d.indexOf("inner")>=0,isOuter:d.indexOf("outer")>=0,isLeft:d.indexOf("left")>=0,isCenter:d.indexOf("center")>=0,isRight:d.indexOf("right")>=0,isTop:d.indexOf("top")>=0,isMiddle:d.indexOf("middle")>=0,isBottom:d.indexOf("bottom")>=0}},f.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},f.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getLabelPositionById=function(a){return"y2"===a?this.getY2AxisLabelPosition():"y"===a?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},f.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},f.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},f.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},f.prototype.xForAxisLabel=function(a,b){var c=this.owner;return a?b.isLeft?0:b.isCenter?c.width/2:c.width:b.isBottom?-c.height:b.isMiddle?-c.height/2:0},f.prototype.dxForAxisLabel=function(a,b){return a?b.isLeft?"0.5em":b.isRight?"-0.5em":"0":b.isTop?"-0.5em":b.isBottom?"0.5em":"0"},f.prototype.textAnchorForAxisLabel=function(a,b){return a?b.isLeft?"start":b.isCenter?"middle":"end":b.isBottom?"start":b.isMiddle?"middle":"end"},f.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dyForXAxisLabel=function(){var a=this.owner,b=a.config,c=this.getXAxisLabelPosition();return b.axis_rotated?c.isInner?"1.2em":-25-this.getMaxTickWidth("x"):c.isInner?"-0.5em":b.axis_x_height?b.axis_x_height-10:"3em"},f.prototype.dyForYAxisLabel=function(){var a=this.owner,b=this.getYAxisLabelPosition();return a.config.axis_rotated?b.isInner?"-0.5em":"3em":b.isInner?"1.2em":-10-(a.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},f.prototype.dyForY2AxisLabel=function(){var a=this.owner,b=this.getY2AxisLabelPosition();return a.config.axis_rotated?b.isInner?"1.2em":"-2.2em":b.isInner?"-0.5em":15+(a.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},f.prototype.textAnchorForXAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(!a.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.textAnchorForYAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.textAnchorForY2AxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.getMaxTickWidth=function(a,b){var c,d,e,f,g,h=this.owner,i=h.config,j=0;return b&&h.currentMaxTickWidths[a]?h.currentMaxTickWidths[a]:(h.svg&&(c=h.filterTargetsToShow(h.data.targets),"y"===a?(d=h.y.copy().domain(h.getYDomain(c,"y")),e=this.getYAxis(d,h.yOrient,i.axis_y_tick_format,h.yAxisTickValues,!1,!0)):"y2"===a?(d=h.y2.copy().domain(h.getYDomain(c,"y2")),e=this.getYAxis(d,h.y2Orient,i.axis_y2_tick_format,h.y2AxisTickValues,!1,!0)):(d=h.x.copy().domain(h.getXDomain(c)),e=this.getXAxis(d,h.xOrient,h.xAxisTickFormat,h.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(c,e)),f=h.d3.select("body").append("div").classed("c3",!0),g=f.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),g.append("g").call(e).each(function(){h.d3.select(this).selectAll("text").each(function(){var a=this.getBoundingClientRect();j<a.width&&(j=a.width)}),f.remove()})),h.currentMaxTickWidths[a]=0>=j?h.currentMaxTickWidths[a]:j,h.currentMaxTickWidths[a])},f.prototype.updateLabels=function(a){var b=this.owner,c=b.main.select("."+l.axisX+" ."+l.axisXLabel),d=b.main.select("."+l.axisY+" ."+l.axisYLabel),e=b.main.select("."+l.axisY2+" ."+l.axisY2Label);(a?c.transition():c).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(a?d.transition():d).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(a?e.transition():e).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},f.prototype.getPadding=function(a,b,c,d){return m(a[b])?"ratio"===a.unit?a[b]*d:this.convertPixelsToAxisPadding(a[b],d):c},f.prototype.convertPixelsToAxisPadding=function(a,b){var c=this.owner,d=c.config.axis_rotated?c.width:c.height;return b*(a/d)},f.prototype.generateTickValues=function(a,b,c){var d,e,f,g,h,i,j,k=a;if(b)if(d=n(b)?b():b,1===d)k=[a[0]];else if(2===d)k=[a[0],a[a.length-1]];else if(d>2){for(g=d-2,e=a[0],f=a[a.length-1],h=(f-e)/(g+1),k=[e],i=0;g>i;i++)j=+e+h*(i+1),k.push(c?new Date(j):j);k.push(f)}return c||(k=k.sort(function(a,b){return a-b})),k},f.prototype.generateTransitions=function(a){var b=this.owner,c=b.axes;return{axisX:a?c.x.transition().duration(a):c.x,axisY:a?c.y.transition().duration(a):c.y,axisY2:a?c.y2.transition().duration(a):c.y2,axisSubX:a?c.subx.transition().duration(a):c.subx}},f.prototype.redraw=function(a,b){var c=this.owner;c.axes.x.style("opacity",b?0:1),c.axes.y.style("opacity",b?0:1),c.axes.y2.style("opacity",b?0:1),c.axes.subx.style("opacity",b?0:1),a.axisX.call(c.xAxis),a.axisY.call(c.yAxis),a.axisY2.call(c.y2Axis),a.axisSubX.call(c.subXAxis)},i.getClipPath=function(b){var c=a.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(c?"":document.URL.split("#")[0])+"#"+b+")"},i.appendClip=function(a,b){return a.append("clipPath").attr("id",b).append("rect")},i.getAxisClipX=function(a){var b=Math.max(30,this.margin.left);return a?-(1+b):-(b-1)},i.getAxisClipY=function(a){return a?-20:-this.margin.top},i.getXAxisClipX=function(){var a=this;return a.getAxisClipX(!a.config.axis_rotated)},i.getXAxisClipY=function(){var a=this;return a.getAxisClipY(!a.config.axis_rotated)},i.getYAxisClipX=function(){var a=this;return a.config.axis_y_inner?-1:a.getAxisClipX(a.config.axis_rotated)},i.getYAxisClipY=function(){var a=this;return a.getAxisClipY(a.config.axis_rotated)},i.getAxisClipWidth=function(a){var b=this,c=Math.max(30,b.margin.left),d=Math.max(30,b.margin.right);return a?b.width+2+c+d:b.margin.left+20},i.getAxisClipHeight=function(a){return(a?this.margin.bottom:this.margin.top+this.height)+20},i.getXAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(!a.config.axis_rotated)},i.getXAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(!a.config.axis_rotated)},i.getYAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(a.config.axis_rotated)+(a.config.axis_y_inner?20:0)},i.getYAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(a.config.axis_rotated)},i.initPie=function(){var a=this,b=a.d3,c=a.config;a.pie=b.layout.pie().value(function(a){return a.values.reduce(function(a,b){return a+b.value},0)}),c.data_order||a.pie.sort(null)},i.updateRadius=function(){var a=this,b=a.config,c=b.gauge_width||b.donut_width;a.radiusExpanded=Math.min(a.arcWidth,a.arcHeight)/2,a.radius=.95*a.radiusExpanded,a.innerRadiusRatio=c?(a.radius-c)/a.radius:.6,a.innerRadius=a.hasType("donut")||a.hasType("gauge")?a.radius*a.innerRadiusRatio:0},i.updateArc=function(){var a=this;a.svgArc=a.getSvgArc(),a.svgArcExpanded=a.getSvgArcExpanded(),a.svgArcExpandedSub=a.getSvgArcExpanded(.98)},i.updateAngle=function(a){var b,c,d=this,e=d.config,f=!1,g=0,h=e.gauge_min,i=e.gauge_max;
+return d.pie(d.filterTargetsToShow(d.data.targets)).forEach(function(b){f||b.data.id!==a.data.id||(f=!0,a=b,a.index=g),g++}),isNaN(a.startAngle)&&(a.startAngle=0),isNaN(a.endAngle)&&(a.endAngle=a.startAngle),d.isGaugeType(a.data)&&(b=Math.PI/(i-h),c=a.value<h?0:a.value<i?a.value-h:i-h,a.startAngle=-1*(Math.PI/2),a.endAngle=a.startAngle+b*c),f?a:null},i.getSvgArc=function(){var a=this,b=a.d3.svg.arc().outerRadius(a.radius).innerRadius(a.innerRadius),c=function(c,d){var e;return d?b(c):(e=a.updateAngle(c),e?b(e):"M 0 0")};return c.centroid=b.centroid,c},i.getSvgArcExpanded=function(a){var b=this,c=b.d3.svg.arc().outerRadius(b.radiusExpanded*(a?a:1)).innerRadius(b.innerRadius);return function(a){var d=b.updateAngle(a);return d?c(d):"M 0 0"}},i.getArc=function(a,b,c){return c||this.isArcType(a.data)?this.svgArc(a,b):"M 0 0"},i.transformForArcLabel=function(a){var b,c,d,e,f,g=this,h=g.updateAngle(a),i="";return h&&!g.hasType("gauge")&&(b=this.svgArc.centroid(h),c=isNaN(b[0])?0:b[0],d=isNaN(b[1])?0:b[1],e=Math.sqrt(c*c+d*d),f=g.radius&&e?(36/g.radius>.375?1.175-36/g.radius:.8)*g.radius/e:0,i="translate("+c*f+","+d*f+")"),i},i.getArcRatio=function(a){var b=this,c=b.hasType("gauge")?Math.PI:2*Math.PI;return a?(a.endAngle-a.startAngle)/c:null},i.convertToArcData=function(a){return this.addName({id:a.data.id,value:a.value,ratio:this.getArcRatio(a),index:a.index})},i.textForArcLabel=function(a){var b,c,d,e,f,g=this;return g.shouldShowArcLabel()?(b=g.updateAngle(a),c=b?b.value:null,d=g.getArcRatio(b),e=a.data.id,g.hasType("gauge")||g.meetsArcLabelThreshold(d)?(f=g.getArcLabelFormat(),f?f(c,d,e):g.defaultArcValueFormat(c,d)):""):""},i.expandArc=function(b){var c,d=this;return d.transiting?void(c=a.setInterval(function(){d.transiting||(a.clearInterval(c),d.legend.selectAll(".c3-legend-item-focused").size()>0&&d.expandArc(b))},10)):(b=d.mapToTargetIds(b),void d.svg.selectAll(d.selectorTargets(b,"."+l.chartArc)).each(function(a){d.shouldExpand(a.data.id)&&d.d3.select(this).selectAll("path").transition().duration(50).attr("d",d.svgArcExpanded).transition().duration(100).attr("d",d.svgArcExpandedSub).each(function(a){d.isDonutType(a.data)})}))},i.unexpandArc=function(a){var b=this;b.transiting||(a=b.mapToTargetIds(a),b.svg.selectAll(b.selectorTargets(a,"."+l.chartArc)).selectAll("path").transition().duration(50).attr("d",b.svgArc),b.svg.selectAll("."+l.arc).style("opacity",1))},i.shouldExpand=function(a){var b=this,c=b.config;return b.isDonutType(a)&&c.donut_expand||b.isGaugeType(a)&&c.gauge_expand||b.isPieType(a)&&c.pie_expand},i.shouldShowArcLabel=function(){var a=this,b=a.config,c=!0;return a.hasType("donut")?c=b.donut_label_show:a.hasType("pie")&&(c=b.pie_label_show),c},i.meetsArcLabelThreshold=function(a){var b=this,c=b.config,d=b.hasType("donut")?c.donut_label_threshold:c.pie_label_threshold;return a>=d},i.getArcLabelFormat=function(){var a=this,b=a.config,c=b.pie_label_format;return a.hasType("gauge")?c=b.gauge_label_format:a.hasType("donut")&&(c=b.donut_label_format),c},i.getArcTitle=function(){var a=this;return a.hasType("donut")?a.config.donut_title:""},i.updateTargetsForArc=function(a){var b,c,d=this,e=d.main,f=d.classChartArc.bind(d),g=d.classArcs.bind(d),h=d.classFocus.bind(d);b=e.select("."+l.chartArcs).selectAll("."+l.chartArc).data(d.pie(a)).attr("class",function(a){return f(a)+h(a.data)}),c=b.enter().append("g").attr("class",f),c.append("g").attr("class",g),c.append("text").attr("dy",d.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},i.initArc=function(){var a=this;a.arcs=a.main.select("."+l.chart).append("g").attr("class",l.chartArcs).attr("transform",a.getTranslate("arc")),a.arcs.append("text").attr("class",l.chartArcsTitle).style("text-anchor","middle").text(a.getArcTitle())},i.redrawArc=function(a,b,c){var d,e=this,f=e.d3,g=e.config,h=e.main;d=h.selectAll("."+l.arcs).selectAll("."+l.arc).data(e.arcData.bind(e)),d.enter().append("path").attr("class",e.classArc.bind(e)).style("fill",function(a){return e.color(a.data)}).style("cursor",function(a){return g.interaction_enabled&&g.data_selection_isselectable(a)?"pointer":null}).style("opacity",0).each(function(a){e.isGaugeType(a.data)&&(a.startAngle=a.endAngle=-1*(Math.PI/2)),this._current=a}),d.attr("transform",function(a){return!e.isGaugeType(a.data)&&c?"scale(0)":""}).style("opacity",function(a){return a===this._current?0:1}).on("mouseover",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),c=e.convertToArcData(b),e.expandArc(b.data.id),e.api.focus(b.data.id),e.toggleFocusLegend(b.data.id,!0),e.config.data_onmouseover(c,this))}:null).on("mousemove",g.interaction_enabled?function(a){var b=e.updateAngle(a),c=e.convertToArcData(b),d=[c];e.showTooltip(d,this)}:null).on("mouseout",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),c=e.convertToArcData(b),e.unexpandArc(b.data.id),e.api.revert(),e.revertLegend(),e.hideTooltip(),e.config.data_onmouseout(c,this))}:null).on("click",g.interaction_enabled?function(a,b){var c=e.updateAngle(a),d=e.convertToArcData(c);e.toggleShape&&e.toggleShape(this,d,b),e.config.data_onclick.call(e.api,d,this)}:null).each(function(){e.transiting=!0}).transition().duration(a).attrTween("d",function(a){var b,c=e.updateAngle(a);return c?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),b=f.interpolate(this._current,c),this._current=b(0),function(c){var d=b(c);return d.data=a.data,e.getArc(d,!0)}):function(){return"M 0 0"}}).attr("transform",c?"scale(1)":"").style("fill",function(a){return e.levelColor?e.levelColor(a.data.values[0].value):e.color(a.data.id)}).style("opacity",1).call(e.endall,function(){e.transiting=!1}),d.exit().transition().duration(b).style("opacity",0).remove(),h.selectAll("."+l.chartArc).select("text").style("opacity",0).attr("class",function(a){return e.isGaugeType(a.data)?l.gaugeValue:""}).text(e.textForArcLabel.bind(e)).attr("transform",e.transformForArcLabel.bind(e)).style("font-size",function(a){return e.isGaugeType(a.data)?Math.round(e.radius/5)+"px":""}).transition().duration(a).style("opacity",function(a){return e.isTargetToShow(a.data.id)&&e.isArcType(a.data)?1:0}),h.select("."+l.chartArcsTitle).style("opacity",e.hasType("donut")||e.hasType("gauge")?1:0),e.hasType("gauge")&&(e.arcs.select("."+l.chartArcsBackground).attr("d",function(){var a={data:[{value:g.gauge_max}],startAngle:-1*(Math.PI/2),endAngle:Math.PI/2};return e.getArc(a,!0,!0)}),e.arcs.select("."+l.chartArcsGaugeUnit).attr("dy",".75em").text(g.gauge_label_show?g.gauge_units:""),e.arcs.select("."+l.chartArcsGaugeMin).attr("dx",-1*(e.innerRadius+(e.radius-e.innerRadius)/2)+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_min:""),e.arcs.select("."+l.chartArcsGaugeMax).attr("dx",e.innerRadius+(e.radius-e.innerRadius)/2+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_max:""))},i.initGauge=function(){var a=this.arcs;this.hasType("gauge")&&(a.append("path").attr("class",l.chartArcsBackground),a.append("text").attr("class",l.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},i.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},i.initRegion=function(){var a=this;a.region=a.main.append("g").attr("clip-path",a.clipPath).attr("class",l.regions)},i.updateRegion=function(a){var b=this,c=b.config;b.region.style("visibility",b.hasArcType()?"hidden":"visible"),b.mainRegion=b.main.select("."+l.regions).selectAll("."+l.region).data(c.regions),b.mainRegion.enter().append("g").attr("class",b.classRegion.bind(b)).append("rect").style("fill-opacity",0),b.mainRegion.exit().transition().duration(a).style("opacity",0).remove()},i.redrawRegion=function(a){var b=this,c=b.mainRegion.selectAll("rect"),d=b.regionX.bind(b),e=b.regionY.bind(b),f=b.regionWidth.bind(b),g=b.regionHeight.bind(b);return[(a?c.transition():c).attr("x",d).attr("y",e).attr("width",f).attr("height",g).style("fill-opacity",function(a){return m(a.opacity)?a.opacity:.1})]},i.regionX=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"start"in a?e(a.start):0:d.axis_rotated?0:"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionY=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?0:"end"in a?e(a.end):0:d.axis_rotated&&"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionWidth=function(a){var b,c=this,d=c.config,e=c.regionX(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"end"in a?f(a.end):c.width:d.axis_rotated?c.width:"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.width,e>b?0:b-e},i.regionHeight=function(a){var b,c=this,d=c.config,e=this.regionY(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?c.height:"start"in a?f(a.start):c.height:d.axis_rotated&&"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.height,e>b?0:b-e},i.isRegionOnX=function(a){return!a.axis||"x"===a.axis},i.drag=function(a){var b,c,d,e,f,g,h,i,j=this,k=j.config,m=j.main,n=j.d3;j.hasArcType()||k.data_selection_enabled&&(!k.zoom_enabled||j.zoom.altDomain)&&k.data_selection_multiple&&(b=j.dragStart[0],c=j.dragStart[1],d=a[0],e=a[1],f=Math.min(b,d),g=Math.max(b,d),h=k.data_selection_grouped?j.margin.top:Math.min(c,e),i=k.data_selection_grouped?j.height:Math.max(c,e),m.select("."+l.dragarea).attr("x",f).attr("y",h).attr("width",g-f).attr("height",i-h),m.selectAll("."+l.shapes).selectAll("."+l.shape).filter(function(a){return k.data_selection_isselectable(a)}).each(function(a,b){var c,d,e,k,m,o,p=n.select(this),q=p.classed(l.SELECTED),r=p.classed(l.INCLUDED),s=!1;if(p.classed(l.circle))c=1*p.attr("cx"),d=1*p.attr("cy"),m=j.togglePoint,s=c>f&&g>c&&d>h&&i>d;else{if(!p.classed(l.bar))return;o=y(this),c=o.x,d=o.y,e=o.width,k=o.height,m=j.togglePath,s=!(c>g||f>c+e||d>i||h>d+k)}s^r&&(p.classed(l.INCLUDED,!r),p.classed(l.SELECTED,!q),m.call(j,!q,p,a,b))}))},i.dragstart=function(a){var b=this,c=b.config;b.hasArcType()||c.data_selection_enabled&&(b.dragStart=a,b.main.select("."+l.chart).append("rect").attr("class",l.dragarea).style("opacity",.1),b.dragging=!0)},i.dragend=function(){var a=this,b=a.config;a.hasArcType()||b.data_selection_enabled&&(a.main.select("."+l.dragarea).transition().duration(100).style("opacity",0).remove(),a.main.selectAll("."+l.shape).classed(l.INCLUDED,!1),a.dragging=!1)},i.selectPoint=function(a,b,c){var d=this,e=d.config,f=(e.axis_rotated?d.circleY:d.circleX).bind(d),g=(e.axis_rotated?d.circleX:d.circleY).bind(d),h=d.pointSelectR.bind(d);e.data_onselected.call(d.api,b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).data([b]).enter().append("circle").attr("class",function(){return d.generateClass(l.selectedCircle,c)}).attr("cx",f).attr("cy",g).attr("stroke",function(){return d.color(b)}).attr("r",function(a){return 1.4*d.pointSelectR(a)}).transition().duration(100).attr("r",h)},i.unselectPoint=function(a,b,c){var d=this;d.config.data_onunselected(b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).transition().duration(100).attr("r",0).remove()},i.togglePoint=function(a,b,c,d){a?this.selectPoint(b,c,d):this.unselectPoint(b,c,d)},i.selectPath=function(a,b){var c=this;c.config.data_onselected.call(c,b,a.node()),a.transition().duration(100).style("fill",function(){return c.d3.rgb(c.color(b)).brighter(.75)})},i.unselectPath=function(a,b){var c=this;c.config.data_onunselected.call(c,b,a.node()),a.transition().duration(100).style("fill",function(){return c.color(b)})},i.togglePath=function(a,b,c,d){a?this.selectPath(b,c,d):this.unselectPath(b,c,d)},i.getToggle=function(a,b){var c,d=this;return"circle"===a.nodeName?c=d.isStepType(b)?function(){}:d.togglePoint:"path"===a.nodeName&&(c=d.togglePath),c},i.toggleShape=function(a,b,c){var d=this,e=d.d3,f=d.config,g=e.select(a),h=g.classed(l.SELECTED),i=d.getToggle(a,b).bind(d);f.data_selection_enabled&&f.data_selection_isselectable(b)&&(f.data_selection_multiple||d.main.selectAll("."+l.shapes+(f.data_selection_grouped?d.getTargetSelectorSuffix(b.id):"")).selectAll("."+l.shape).each(function(a,b){var c=e.select(this);c.classed(l.SELECTED)&&i(!1,c.classed(l.SELECTED,!1),a,b)}),g.classed(l.SELECTED,!h),i(!h,g,b,c))},i.initBrush=function(){var a=this,b=a.d3;a.brush=b.svg.brush().on("brush",function(){a.redrawForBrush()}),a.brush.update=function(){return a.context&&a.context.select("."+l.brush).call(this),this},a.brush.scale=function(b){return a.config.axis_rotated?this.y(b):this.x(b)}},i.initSubchart=function(){var a=this,b=a.config,c=a.context=a.svg.append("g").attr("transform",a.getTranslate("context"));c.style("visibility",b.subchart_show?"visible":"hidden"),c.append("g").attr("clip-path",a.clipPathForSubchart).attr("class",l.chart),c.select("."+l.chart).append("g").attr("class",l.chartBars),c.select("."+l.chart).append("g").attr("class",l.chartLines),c.append("g").attr("clip-path",a.clipPath).attr("class",l.brush).call(a.brush),a.axes.subx=c.append("g").attr("class",l.axisX).attr("transform",a.getTranslate("subx")).attr("clip-path",b.axis_rotated?"":a.clipPathForXAxis)},i.updateTargetsForSubchart=function(a){var b,c,d,e,f=this,g=f.context,h=f.config,i=f.classChartBar.bind(f),j=f.classBars.bind(f),k=f.classChartLine.bind(f),m=f.classLines.bind(f),n=f.classAreas.bind(f);h.subchart_show&&(e=g.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",i),d=e.enter().append("g").style("opacity",0).attr("class",i),d.append("g").attr("class",j),c=g.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",k),b=c.enter().append("g").style("opacity",0).attr("class",k),b.append("g").attr("class",m),b.append("g").attr("class",n),g.selectAll("."+l.brush+" rect").attr(h.axis_rotated?"width":"height",h.axis_rotated?f.width2:f.height2))},i.updateBarForSubchart=function(a){var b=this;b.contextBar=b.context.selectAll("."+l.bars).selectAll("."+l.bar).data(b.barData.bind(b)),b.contextBar.enter().append("path").attr("class",b.classBar.bind(b)).style("stroke","none").style("fill",b.color),b.contextBar.style("opacity",b.initialOpacity.bind(b)),b.contextBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBarForSubchart=function(a,b,c){(b?this.contextBar.transition().duration(c):this.contextBar).attr("d",a).style("opacity",1)},i.updateLineForSubchart=function(a){var b=this;b.contextLine=b.context.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.contextLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.contextLine.style("opacity",b.initialOpacity.bind(b)),b.contextLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLineForSubchart=function(a,b,c){(b?this.contextLine.transition().duration(c):this.contextLine).attr("d",a).style("opacity",1)},i.updateAreaForSubchart=function(a){var b=this,c=b.d3;b.contextArea=b.context.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.contextArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.contextArea.style("opacity",0),b.contextArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawAreaForSubchart=function(a,b,c){(b?this.contextArea.transition().duration(c):this.contextArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)},i.redrawSubchart=function(a,b,c,d,e,f,g){var h,i,j,k=this,l=k.d3,m=k.config;k.context.style("visibility",m.subchart_show?"visible":"hidden"),m.subchart_show&&(l.event&&"zoom"===l.event.type&&k.brush.extent(k.x.orgDomain()).update(),a&&(k.brush.empty()||k.brush.extent(k.x.orgDomain()).update(),h=k.generateDrawArea(e,!0),i=k.generateDrawBar(f,!0),j=k.generateDrawLine(g,!0),k.updateBarForSubchart(c),k.updateLineForSubchart(c),k.updateAreaForSubchart(c),k.redrawBarForSubchart(i,c,c),k.redrawLineForSubchart(j,c,c),k.redrawAreaForSubchart(h,c,c)))},i.redrawForBrush=function(){var a=this,b=a.x;a.redraw({withTransition:!1,withY:a.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),a.config.subchart_onbrush.call(a.api,b.orgDomain())},i.transformContext=function(a,b){var c,d=this;b&&b.axisSubX?c=b.axisSubX:(c=d.context.select("."+l.axisX),a&&(c=c.transition())),d.context.attr("transform",d.getTranslate("context")),c.attr("transform",d.getTranslate("subx"))},i.getDefaultExtent=function(){var a=this,b=a.config,c=n(b.axis_x_extent)?b.axis_x_extent(a.getXDomain(a.data.targets)):b.axis_x_extent;return a.isTimeSeries()&&(c=[a.parseDate(c[0]),a.parseDate(c[1])]),c},i.initZoom=function(){var a,b=this,c=b.d3,d=b.config;b.zoom=c.behavior.zoom().on("zoomstart",function(){a=c.event.sourceEvent,b.zoom.altDomain=c.event.sourceEvent.altKey?b.x.orgDomain():null,d.zoom_onzoomstart.call(b.api,c.event.sourceEvent)}).on("zoom",function(){b.redrawForZoom.call(b)}).on("zoomend",function(){var e=c.event.sourceEvent;e&&a.clientX===e.clientX&&a.clientY===e.clientY||(b.redrawEventRect(),b.updateZoom(),d.zoom_onzoomend.call(b.api,b.x.orgDomain()))}),b.zoom.scale=function(a){return d.axis_rotated?this.y(a):this.x(a)},b.zoom.orgScaleExtent=function(){var a=d.zoom_extent?d.zoom_extent:[1,10];return[a[0],Math.max(b.getMaxDataCount()/a[1],a[1])]},b.zoom.updateScaleExtent=function(){var a=t(b.x.orgDomain())/t(b.orgXDomain),c=this.orgScaleExtent();return this.scaleExtent([c[0]*a,c[1]*a]),this}},i.updateZoom=function(){var a=this,b=a.config.zoom_enabled?a.zoom:function(){};a.main.select("."+l.zoomRect).call(b).on("dblclick.zoom",null),a.main.selectAll("."+l.eventRect).call(b).on("dblclick.zoom",null)},i.redrawForZoom=function(){var a=this,b=a.d3,c=a.config,d=a.zoom,e=a.x;if(c.zoom_enabled&&0!==a.filterTargetsToShow(a.data.targets).length){if("mousemove"===b.event.sourceEvent.type&&d.altDomain)return e.domain(d.altDomain),void d.scale(e).updateScaleExtent();a.isCategorized()&&e.orgDomain()[0]===a.orgXDomain[0]&&e.domain([a.orgXDomain[0]-1e-10,e.orgDomain()[1]]),a.redraw({withTransition:!1,withY:c.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),"mousemove"===b.event.sourceEvent.type&&(a.cancelClick=!0),c.zoom_onzoom.call(a.api,e.orgDomain())}},i.generateColor=function(){var a=this,b=a.config,c=a.d3,d=b.data_colors,e=v(b.color_pattern)?b.color_pattern:c.scale.category10().range(),f=b.data_color,g=[];return function(a){var b,c=a.id||a.data&&a.data.id||a;return d[c]instanceof Function?b=d[c](a):d[c]?b=d[c]:(g.indexOf(c)<0&&g.push(c),b=e[g.indexOf(c)%e.length],d[c]=b),f instanceof Function?f(b,a):b}},i.generateLevelColor=function(){var a=this,b=a.config,c=b.color_pattern,d=b.color_threshold,e="value"===d.unit,f=d.values&&d.values.length?d.values:[],g=d.max||100;return v(b.color_threshold)?function(a){var b,d,h=c[c.length-1];for(b=0;b<f.length;b++)if(d=e?a:100*a/g,d<f[b]){h=c[b];break}return h}:null},i.getYFormat=function(a){var b=this,c=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.yFormat,d=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.y2Format;return function(a,e,f){var g="y2"===b.axis.getId(f)?d:c;return g.call(b,a,e)}},i.yFormat=function(a){var b=this,c=b.config,d=c.axis_y_tick_format?c.axis_y_tick_format:b.defaultValueFormat;return d(a)},i.y2Format=function(a){var b=this,c=b.config,d=c.axis_y2_tick_format?c.axis_y2_tick_format:b.defaultValueFormat;return d(a)},i.defaultValueFormat=function(a){return m(a)?+a:""},i.defaultArcValueFormat=function(a,b){return(100*b).toFixed(1)+"%"},i.dataLabelFormat=function(a){var b,c=this,d=c.config.data_labels,e=function(a){return m(a)?+a:""};return b="function"==typeof d.format?d.format:"object"==typeof d.format?d.format[a]?d.format[a]===!0?e:d.format[a]:function(){return""}:e},i.hasCaches=function(a){for(var b=0;b<a.length;b++)if(!(a[b]in this.cache))return!1;return!0},i.addCache=function(a,b){this.cache[a]=this.cloneTarget(b)},i.getCaches=function(a){var b,c=[];for(b=0;b<a.length;b++)a[b]in this.cache&&c.push(this.cloneTarget(this.cache[a[b]]));return c};var l=i.CLASS={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};i.generateClass=function(a,b){return" "+a+" "+a+this.getTargetSelectorSuffix(b)},i.classText=function(a){return this.generateClass(l.text,a.index)},i.classTexts=function(a){return this.generateClass(l.texts,a.id)},i.classShape=function(a){return this.generateClass(l.shape,a.index)},i.classShapes=function(a){return this.generateClass(l.shapes,a.id)},i.classLine=function(a){return this.classShape(a)+this.generateClass(l.line,a.id)},i.classLines=function(a){return this.classShapes(a)+this.generateClass(l.lines,a.id)},i.classCircle=function(a){return this.classShape(a)+this.generateClass(l.circle,a.index)},i.classCircles=function(a){return this.classShapes(a)+this.generateClass(l.circles,a.id)},i.classBar=function(a){return this.classShape(a)+this.generateClass(l.bar,a.index)},i.classBars=function(a){return this.classShapes(a)+this.generateClass(l.bars,a.id)},i.classArc=function(a){return this.classShape(a.data)+this.generateClass(l.arc,a.data.id)},i.classArcs=function(a){return this.classShapes(a.data)+this.generateClass(l.arcs,a.data.id)},i.classArea=function(a){return this.classShape(a)+this.generateClass(l.area,a.id)},i.classAreas=function(a){return this.classShapes(a)+this.generateClass(l.areas,a.id)},i.classRegion=function(a,b){return this.generateClass(l.region,b)+" "+("class"in a?a["class"]:"")},i.classEvent=function(a){return this.generateClass(l.eventRect,a.index)},i.classTarget=function(a){var b=this,c=b.config.data_classes[a],d="";return c&&(d=" "+l.target+"-"+c),b.generateClass(l.target,a)+d},i.classFocus=function(a){return this.classFocused(a)+this.classDefocused(a)},i.classFocused=function(a){return" "+(this.focusedTargetIds.indexOf(a.id)>=0?l.focused:"")},i.classDefocused=function(a){return" "+(this.defocusedTargetIds.indexOf(a.id)>=0?l.defocused:"")},i.classChartText=function(a){return l.chartText+this.classTarget(a.id)},i.classChartLine=function(a){return l.chartLine+this.classTarget(a.id)},i.classChartBar=function(a){return l.chartBar+this.classTarget(a.id)},i.classChartArc=function(a){return l.chartArc+this.classTarget(a.data.id)},i.getTargetSelectorSuffix=function(a){return a||0===a?("-"+a).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},i.selectorTarget=function(a,b){return(b||"")+"."+l.target+this.getTargetSelectorSuffix(a)},i.selectorTargets=function(a,b){var c=this;return a=a||[],a.length?a.map(function(a){return c.selectorTarget(a,b)}):null},i.selectorLegend=function(a){return"."+l.legendItem+this.getTargetSelectorSuffix(a)},i.selectorLegends=function(a){var b=this;return a&&a.length?a.map(function(a){return b.selectorLegend(a)}):null};var m=i.isValue=function(a){return a||0===a},n=i.isFunction=function(a){return"function"==typeof a},o=i.isString=function(a){return"string"==typeof a},p=i.isUndefined=function(a){return"undefined"==typeof a},q=i.isDefined=function(a){return"undefined"!=typeof a},r=i.ceil10=function(a){return 10*Math.ceil(a/10)},s=i.asHalfPixel=function(a){return Math.ceil(a)+.5},t=i.diffDomain=function(a){return a[1]-a[0]},u=i.isEmpty=function(a){return!a||o(a)&&0===a.length||"object"==typeof a&&0===Object.keys(a).length},v=i.notEmpty=function(a){return Object.keys(a).length>0},w=i.getOption=function(a,b,c){return q(a[b])?a[b]:c},x=i.hasValue=function(a,b){var c=!1;return Object.keys(a).forEach(function(d){a[d]===b&&(c=!0)}),c},y=i.getPathBox=function(a){var b=a.getBoundingClientRect(),c=[a.pathSegList.getItem(0),a.pathSegList.getItem(1)],d=c[0].x,e=Math.min(c[0].y,c[1].y);return{x:d,y:e,width:b.width,height:b.height}};h.focus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),this.revert(),this.defocus(),b.classed(l.focused,!0).classed(l.defocused,!1),c.hasArcType()&&c.expandArc(a),c.toggleFocusLegend(a,!0),c.focusedTargetIds=a,c.defocusedTargetIds=c.defocusedTargetIds.filter(function(b){return a.indexOf(b)<0})},h.defocus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),b.classed(l.focused,!1).classed(l.defocused,!0),c.hasArcType()&&c.unexpandArc(a),c.toggleFocusLegend(a,!1),c.focusedTargetIds=c.focusedTargetIds.filter(function(b){return a.indexOf(b)<0}),c.defocusedTargetIds=a},h.revert=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a)),b.classed(l.focused,!1).classed(l.defocused,!1),c.hasArcType()&&c.unexpandArc(a),c.config.legend_show&&(c.showLegend(a.filter(c.isLegendToShow.bind(c))),c.legend.selectAll(c.selectorLegends(a)).filter(function(){return c.d3.select(this).classed(l.legendItemFocused)}).classed(l.legendItemFocused,!1)),c.focusedTargetIds=[],c.defocusedTargetIds=[]},h.show=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.removeHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",1,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",1)}),b.withLegend&&d.showLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.hide=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.addHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",0,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",0)}),b.withLegend&&d.hideLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.toggle=function(a,b){var c=this,d=this.internal;d.mapToTargetIds(a).forEach(function(a){d.isTargetToShow(a)?c.hide(a,b):c.show(a,b)})},h.zoom=function(a){var b=this.internal;return a&&(b.isTimeSeries()&&(a=a.map(function(a){return b.parseDate(a)})),b.brush.extent(a),b.redraw({withUpdateXDomain:!0,withY:b.config.zoom_rescale}),b.config.zoom_onzoom.call(this,b.x.orgDomain())),b.brush.extent()},h.zoom.enable=function(a){var b=this.internal;b.config.zoom_enabled=a,b.updateAndRedraw()},h.unzoom=function(){var a=this.internal;a.brush.clear().update(),a.redraw({withUpdateXDomain:!0})},h.load=function(a){var b=this.internal,c=b.config;return a.xs&&b.addXs(a.xs),"classes"in a&&Object.keys(a.classes).forEach(function(b){c.data_classes[b]=a.classes[b]}),"categories"in a&&b.isCategorized()&&(c.axis_x_categories=a.categories),"axes"in a&&Object.keys(a.axes).forEach(function(b){c.data_axes[b]=a.axes[b]}),"colors"in a&&Object.keys(a.colors).forEach(function(b){c.data_colors[b]=a.colors[b]}),"cacheIds"in a&&b.hasCaches(a.cacheIds)?void b.load(b.getCaches(a.cacheIds),a.done):void("unload"in a?b.unload(b.mapToTargetIds("boolean"==typeof a.unload&&a.unload?null:a.unload),function(){b.loadFromArgs(a)}):b.loadFromArgs(a))},h.unload=function(a){var b=this.internal;a=a||{},a instanceof Array?a={ids:a}:"string"==typeof a&&(a={ids:[a]}),b.unload(b.mapToTargetIds(a.ids),function(){b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),a.done&&a.done()})},h.flow=function(a){var b,c,d,e,f,g,h,i,j=this.internal,k=[],l=j.getMaxDataCount(),n=0,o=0;if(a.json)c=j.convertJsonToData(a.json,a.keys);else if(a.rows)c=j.convertRowsToData(a.rows);else{if(!a.columns)return;c=j.convertColumnsToData(a.columns)}b=j.convertDataToTargets(c,!0),j.data.targets.forEach(function(a){var c,d,e=!1;for(c=0;c<b.length;c++)if(a.id===b[c].id){for(e=!0,a.values[a.values.length-1]&&(o=a.values[a.values.length-1].index+1),n=b[c].values.length,d=0;n>d;d++)b[c].values[d].index=o+d,j.isTimeSeries()||(b[c].values[d].x=o+d);a.values=a.values.concat(b[c].values),b.splice(c,1);break}e||k.push(a.id)}),j.data.targets.forEach(function(a){var b,c;for(b=0;b<k.length;b++)if(a.id===k[b])for(o=a.values[a.values.length-1].index+1,c=0;n>c;c++)a.values.push({id:a.id,index:o+c,x:j.isTimeSeries()?j.getOtherTargetX(o+c):o+c,value:null})}),j.data.targets.length&&b.forEach(function(a){var b,c=[];for(b=j.data.targets[0].values[0].index;o>b;b++)c.push({id:a.id,index:b,x:j.isTimeSeries()?j.getOtherTargetX(b):b,value:null});a.values.forEach(function(a){a.index+=o,j.isTimeSeries()||(a.x+=o)}),a.values=c.concat(a.values)}),j.data.targets=j.data.targets.concat(b),d=j.getMaxDataCount(),f=j.data.targets[0],g=f.values[0],q(a.to)?(n=0,i=j.isTimeSeries()?j.parseDate(a.to):a.to,f.values.forEach(function(a){a.x<i&&n++})):q(a.length)&&(n=a.length),l?1===l&&j.isTimeSeries()&&(h=(f.values[f.values.length-1].x-g.x)/2,e=[new Date(+g.x-h),new Date(+g.x+h)],j.updateXDomain(null,!0,!0,!1,e)):(h=j.isTimeSeries()?f.values.length>1?f.values[f.values.length-1].x-g.x:g.x-j.getXDomain(j.data.targets)[0]:1,e=[g.x-h,g.x],j.updateXDomain(null,!0,!0,!1,e)),j.updateTargets(j.data.targets),j.redraw({flow:{index:g.index,length:n,duration:m(a.duration)?a.duration:j.config.transition_duration,done:a.done,orgDataCount:l},withLegend:!0,withTransition:l>1,withTrimXDomain:!1,withUpdateXAxis:!0})},i.generateFlow=function(a){var b=this,c=b.config,d=b.d3;return function(){var e,f,g,h=a.targets,i=a.flow,j=a.drawBar,k=a.drawLine,m=a.drawArea,n=a.cx,o=a.cy,p=a.xv,q=a.xForText,r=a.yForText,s=a.duration,u=1,v=i.index,w=i.length,x=b.getValueOnIndex(b.data.targets[0].values,v),y=b.getValueOnIndex(b.data.targets[0].values,v+w),z=b.x.domain(),A=i.duration||s,B=i.done||function(){},C=b.generateWait(),D=b.xgrid||d.selectAll([]),E=b.xgridLines||d.selectAll([]),F=b.mainRegion||d.selectAll([]),G=b.mainText||d.selectAll([]),H=b.mainBar||d.selectAll([]),I=b.mainLine||d.selectAll([]),J=b.mainArea||d.selectAll([]),K=b.mainCircle||d.selectAll([]);b.flowing=!0,b.data.targets.forEach(function(a){a.values.splice(0,w)}),g=b.updateXDomain(h,!0,!0),b.updateXGrid&&b.updateXGrid(!0),i.orgDataCount?e=1===i.orgDataCount||x.x===y.x?b.x(z[0])-b.x(g[0]):b.isTimeSeries()?b.x(z[0])-b.x(g[0]):b.x(x.x)-b.x(y.x):1!==b.data.targets[0].values.length?e=b.x(z[0])-b.x(g[0]):b.isTimeSeries()?(x=b.getValueOnIndex(b.data.targets[0].values,0),y=b.getValueOnIndex(b.data.targets[0].values,b.data.targets[0].values.length-1),e=b.x(x.x)-b.x(y.x)):e=t(g)/2,u=t(z)/t(g),f="translate("+e+",0) scale("+u+",1)",b.hideXGridFocus(),b.hideTooltip(),d.transition().ease("linear").duration(A).each(function(){C.add(b.axes.x.transition().call(b.xAxis)),C.add(H.transition().attr("transform",f)),C.add(I.transition().attr("transform",f)),C.add(J.transition().attr("transform",f)),C.add(K.transition().attr("transform",f)),C.add(G.transition().attr("transform",f)),C.add(F.filter(b.isRegionOnX).transition().attr("transform",f)),C.add(D.transition().attr("transform",f)),C.add(E.transition().attr("transform",f))
+}).call(C,function(){var a,d=[],e=[],f=[];if(w){for(a=0;w>a;a++)d.push("."+l.shape+"-"+(v+a)),e.push("."+l.text+"-"+(v+a)),f.push("."+l.eventRect+"-"+(v+a));b.svg.selectAll("."+l.shapes).selectAll(d).remove(),b.svg.selectAll("."+l.texts).selectAll(e).remove(),b.svg.selectAll("."+l.eventRects).selectAll(f).remove(),b.svg.select("."+l.xgrid).remove()}D.attr("transform",null).attr(b.xgridAttr),E.attr("transform",null),E.select("line").attr("x1",c.axis_rotated?0:p).attr("x2",c.axis_rotated?b.width:p),E.select("text").attr("x",c.axis_rotated?b.width:0).attr("y",p),H.attr("transform",null).attr("d",j),I.attr("transform",null).attr("d",k),J.attr("transform",null).attr("d",m),K.attr("transform",null).attr("cx",n).attr("cy",o),G.attr("transform",null).attr("x",q).attr("y",r).style("fill-opacity",b.opacityForText.bind(b)),F.attr("transform",null),F.select("rect").filter(b.isRegionOnX).attr("x",b.regionX.bind(b)).attr("width",b.regionWidth.bind(b)),c.interaction_enabled&&b.redrawEventRect(),B(),b.flowing=!1})}},h.selected=function(a){var b=this.internal,c=b.d3;return c.merge(b.main.selectAll("."+l.shapes+b.getTargetSelectorSuffix(a)).selectAll("."+l.shape).filter(function(){return c.select(this).classed(l.SELECTED)}).map(function(a){return a.map(function(a){var b=a.__data__;return b.data?b.data:b})}))},h.select=function(a,b,c){var d=this.internal,e=d.d3,f=d.config;f.data_selection_enabled&&d.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(g,h){var i=e.select(this),j=g.data?g.data.id:g.id,k=d.getToggle(this,g).bind(d),m=f.data_selection_grouped||!a||a.indexOf(j)>=0,n=!b||b.indexOf(h)>=0,o=i.classed(l.SELECTED);i.classed(l.line)||i.classed(l.area)||(m&&n?f.data_selection_isselectable(g)&&!o&&k(!0,i.classed(l.SELECTED,!0),g,h):q(c)&&c&&o&&k(!1,i.classed(l.SELECTED,!1),g,h))})},h.unselect=function(a,b){var c=this.internal,d=c.d3,e=c.config;e.data_selection_enabled&&c.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(f,g){var h=d.select(this),i=f.data?f.data.id:f.id,j=c.getToggle(this,f).bind(c),k=e.data_selection_grouped||!a||a.indexOf(i)>=0,m=!b||b.indexOf(g)>=0,n=h.classed(l.SELECTED);h.classed(l.line)||h.classed(l.area)||k&&m&&e.data_selection_isselectable(f)&&n&&j(!1,h.classed(l.SELECTED,!1),f,g)})},h.transform=function(a,b){var c=this.internal,d=["pie","donut"].indexOf(a)>=0?{withTransform:!0}:null;c.transformTo(b,a,d)},i.transformTo=function(a,b,c){var d=this,e=!d.hasArcType(),f=c||{withTransitionForAxis:e};f.withTransitionForTransform=!1,d.transiting=!1,d.setTargetType(a,b),d.updateTargets(d.data.targets),d.updateAndRedraw(f)},h.groups=function(a){var b=this.internal,c=b.config;return p(a)?c.data_groups:(c.data_groups=a,b.redraw(),c.data_groups)},h.xgrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_x_lines=a,b.redrawWithoutRescale(),c.grid_x_lines):c.grid_x_lines},h.xgrids.add=function(a){var b=this.internal;return this.xgrids(b.config.grid_x_lines.concat(a?a:[]))},h.xgrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!0)},h.ygrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_y_lines=a,b.redrawWithoutRescale(),c.grid_y_lines):c.grid_y_lines},h.ygrids.add=function(a){var b=this.internal;return this.ygrids(b.config.grid_y_lines.concat(a?a:[]))},h.ygrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!1)},h.regions=function(a){var b=this.internal,c=b.config;return a?(c.regions=a,b.redrawWithoutRescale(),c.regions):c.regions},h.regions.add=function(a){var b=this.internal,c=b.config;return a?(c.regions=c.regions.concat(a),b.redrawWithoutRescale(),c.regions):c.regions},h.regions.remove=function(a){var b,c,d,e=this.internal,f=e.config;return a=a||{},b=e.getOption(a,"duration",f.transition_duration),c=e.getOption(a,"classes",[l.region]),d=e.main.select("."+l.regions).selectAll(c.map(function(a){return"."+a})),(b?d.transition().duration(b):d).style("opacity",0).remove(),f.regions=f.regions.filter(function(a){var b=!1;return a["class"]?(a["class"].split(" ").forEach(function(a){c.indexOf(a)>=0&&(b=!0)}),!b):!0}),f.regions},h.data=function(a){var b=this.internal.data.targets;return"undefined"==typeof a?b:b.filter(function(b){return[].concat(a).indexOf(b.id)>=0})},h.data.shown=function(a){return this.internal.filterTargetsToShow(this.data(a))},h.data.values=function(a){var b,c=null;return a&&(b=this.data(a),c=b[0]?b[0].values.map(function(a){return a.value}):null),c},h.data.names=function(a){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",a)},h.data.colors=function(a){return this.internal.updateDataAttributes("colors",a)},h.data.axes=function(a){return this.internal.updateDataAttributes("axes",a)},h.category=function(a,b){var c=this.internal,d=c.config;return arguments.length>1&&(d.axis_x_categories[a]=b,c.redraw()),d.axis_x_categories[a]},h.categories=function(a){var b=this.internal,c=b.config;return arguments.length?(c.axis_x_categories=a,b.redraw(),c.axis_x_categories):c.axis_x_categories},h.color=function(a){var b=this.internal;return b.color(a)},h.x=function(a){var b=this.internal;return arguments.length&&(b.updateTargetX(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.xs=function(a){var b=this.internal;return arguments.length&&(b.updateTargetXs(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.axis=function(){},h.axis.labels=function(a){var b=this.internal;arguments.length&&(Object.keys(a).forEach(function(c){b.axis.setLabelText(c,a[c])}),b.axis.updateLabels())},h.axis.max=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_max=a.x),m(a.y)&&(c.axis_y_max=a.y),m(a.y2)&&(c.axis_y2_max=a.y2)):c.axis_y_max=c.axis_y2_max=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_max,y:c.axis_y_max,y2:c.axis_y2_max}},h.axis.min=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_min=a.x),m(a.y)&&(c.axis_y_min=a.y),m(a.y2)&&(c.axis_y2_min=a.y2)):c.axis_y_min=c.axis_y2_min=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_min,y:c.axis_y_min,y2:c.axis_y2_min}},h.axis.range=function(a){return arguments.length?(q(a.max)&&this.axis.max(a.max),void(q(a.min)&&this.axis.min(a.min))):{max:this.axis.max(),min:this.axis.min()}},h.legend=function(){},h.legend.show=function(a){var b=this.internal;b.showLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.legend.hide=function(a){var b=this.internal;b.hideLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.resize=function(a){var b=this.internal,c=b.config;c.size_width=a?a.width:null,c.size_height=a?a.height:null,this.flush()},h.flush=function(){var a=this.internal;a.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},h.destroy=function(){var b=this.internal;return a.clearInterval(b.intervalForObserveInserted),a.onresize=null,b.selectChart.classed("c3",!1).html(""),Object.keys(b).forEach(function(a){b[a]=null}),null},h.tooltip=function(){},h.tooltip.show=function(a){var b,c,d=this.internal;a.mouse&&(c=a.mouse),a.data?d.isMultipleX()?(c=[d.x(a.data.x),d.getYScale(a.data.id)(a.data.value)],b=null):b=m(a.data.index)?a.data.index:d.getIndexByX(a.data.x):"undefined"!=typeof a.x?b=d.getIndexByX(a.x):"undefined"!=typeof a.index&&(b=a.index),d.dispatchEvent("mouseover",b,c),d.dispatchEvent("mousemove",b,c)},h.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0)};var z;i.isSafari=function(){var b=a.navigator.userAgent;return b.indexOf("Safari")>=0&&b.indexOf("Chrome")<0},i.isChrome=function(){var b=a.navigator.userAgent;return b.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),"function"==typeof define&&define.amd?define("c3",["d3"],k):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=k:a.c3=k}(window);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/config.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/config.json
new file mode 100644
index 0000000..e3f812a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/config.json
@@ -0,0 +1,11 @@
+{
+ "js": [
+ "../../bower_components/d3/d3.min.js",
+ "../../c3.min.js"
+ ],
+ "css": [
+ "../../c3.css"
+ ],
+
+ "template": "<html><head><meta charset=\"utf-8\"><style>{0}</style></head><body><div id=\"chart\"></div></body></html>"
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/phantom-exporter.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/phantom-exporter.js
new file mode 100644
index 0000000..92d849d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/phantom-exporter.js
@@ -0,0 +1,140 @@
+/**
+* PNG\JPEG exporter for C3.js, version 0.2
+* (c) 2014 Yuval Bar-On
+*
+* usage: path/to/phantomjs output options [WxH]
+*
+*/
+
+// useful python-styled string formatting, "hello {0}! Javascript is {1}".format("world", "awesome");
+if (!String.prototype.format) {
+ String.prototype.format = function() {
+ var args = arguments;
+ return this.replace(/{(\d+)}/g, function(match, number) {
+ return typeof args[number] != 'undefined'
+ ? args[number]
+ : match
+ ;
+ });
+ };
+}
+
+// defaults
+var page = require('webpage').create(),
+ fs = require('fs'),
+ system = require('system'),
+ config = JSON.parse( fs.read('config.json') ),
+ output, size;
+
+if (system.args.length < 3 ) {
+ console.log('Usage: phantasm.js filename html [WxH]');
+ phantom.exit(1);
+} else {
+ out = system.args[1];
+ opts = JSON.parse( system.args[2] );
+
+ if (system.args[3]) {
+ var dimensions = system.args[3].split('x'),
+ width = dimensions[0],
+ height = dimensions[1];
+
+ function checkNum(check) {
+ check = parseInt(check);
+ if (!isNaN(check))
+ return check;
+ return false;
+ }
+
+ width = checkNum(width);
+ height = checkNum(height);
+
+ if (width && height) {
+ page.viewportSize = {
+ height: height,
+ width: width
+ }
+ }
+
+ // fit chart size to img size, if undefined
+ if (!opts.size) {
+ opts.size = {
+ "height": height,
+ "width": width
+ };
+ }
+ } else {
+ // check if size is defined in chart,
+ // else apply defaults
+ page.viewportSize = {
+ height: (opts.size && opts.size.height) ? opts.size.height : 320,
+ width: (opts.size && opts.size.width ) ? opts.size.width : 710,
+ }
+ }
+}
+
+page.onResourceRequested = function(requestData, request) {
+ console.log('::loading resource ', requestData['url']);
+};
+
+// helpful debug functions
+page.onConsoleMessage = function(msg){
+ console.log(msg);
+};
+
+page.onError = function(msg, trace) {
+ var msgStack = ['ERROR: ' + msg];
+
+ if (trace && trace.length) {
+ msgStack.push('TRACE:');
+ trace.forEach(function(t) {
+ msgStack.push(' -> ' + t.file + ': ' + t.line + (t.function ? ' (in function "' + t.function +'")' : ''));
+ });
+ }
+
+ console.error(msgStack.join('\n'));
+};
+
+// render page
+function injectVerify(script) {
+ var req = page.injectJs(script);
+ if (!req) {
+ console.log( '\nError!\n' + script + ' not found!\n' );
+ phantom.exit(1);
+ }
+}
+
+page.onLoadFinished = function() {
+ console.log('::rendering');
+
+ for (var j in config.js) {
+ injectVerify(config.js[j]);
+ }
+
+ page.evaluate(function(chartoptions) {
+ // phantomjs doesn't know how to handle .bind, so we override
+ Function.prototype.bind = Function.prototype.bind || function (thisp) {
+ var fn = this;
+ return function () {
+ return fn.apply(thisp, arguments);
+ };
+ };
+
+ // generate chart
+ c3.generate(chartoptions);
+
+ }, opts);
+
+// setting transition to 0 has proven not to work thus far, but 300ms isn't much
+// so this is acceptable for now
+ setTimeout(function() {
+ page.render(out);
+ phantom.exit();
+ }, 300);
+}
+
+// apply css inline because that usually renders better
+var css = '';
+for (var i in config.css) {
+ css += fs.read(config.css[i]);
+}
+page.content = config.template.format(css);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/test.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/test.png
new file mode 100644
index 0000000..593b70b
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/exporter/test.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/js/c3ext.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/js/c3ext.js
new file mode 100644
index 0000000..8ff301f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/extensions/js/c3ext.js
@@ -0,0 +1,380 @@
+var c3ext = {};
+c3ext.generate = function (options) {
+
+ if (options.zoom2 != null) {
+ zoom2_reducers = options.zoom2.reducers || {};
+ zoom2_enabled = options.zoom2.enabled;
+ _zoom2_factor = options.zoom2.factor || 1;
+ _zoom2_maxItems = options.zoom2.maxItems;
+ }
+
+ if (!zoom2_enabled) {
+ return c3.generate(options);
+ }
+
+
+ var originalData = Q.copy(options.data);
+ var zoom2_reducers;
+ var zoom2_enabled;
+ var _zoom2_maxItems;
+
+ if (_zoom2_maxItems == null) {
+ var el = d3.select(options.bindto)[0][0];
+ if (el != null) {
+ var availWidth = el.clientWidth;
+
+ var pointSize = 20;
+ _zoom2_maxItems = Math.ceil(availWidth / pointSize);
+ }
+ if (_zoom2_maxItems == null || _zoom2_maxItems < 10) {
+ _zoom2_maxItems = 10;
+ }
+ }
+
+ function onZoomChanged(e) {
+ refresh();
+ }
+
+ var zoom2 = c3ext.ZoomBehavior({ changed: onZoomChanged, bindto: options.bindto });
+
+ zoom2.enhance = function () {
+ _zoom2_maxItems *= 2;
+ var totalItems = zoom2.getZoom().totalItems;
+ if (_zoom2_maxItems > totalItems)
+ _zoom2_maxItems = totalItems;
+ refresh();
+ }
+ zoom2.dehance = function () {
+ _zoom2_maxItems = Math.ceil(_zoom2_maxItems / 2) + 1;
+ refresh();
+ }
+
+ zoom2.maxItems = function () { return _zoom2_maxItems; };
+ function zoomAndReduceData(list, zoomRange, func, maxItems) {
+ //var maxItems = 10;//Math.ceil(10 * zoomFactor);
+ var list2 = list.slice(zoomRange[0], zoomRange[1]);
+ var chunkSize = 1;
+ var list3 = list2;
+ if (list3.length > maxItems) {
+ var chunkSize = Math.ceil(list2.length / maxItems);
+ list3 = list3.splitIntoChunksOf(chunkSize).map(func);
+ }
+ //console.log("x" + getCurrentZoomLevel() + ", maxItems=" + maxItems + " chunkSize=" + chunkSize + " totalBefore=" + list2.length + ", totalAfter=" + list3.length);
+ return list3;
+ }
+
+ function first(t) { return t[0]; }
+
+ var getDataForZoom = function (data) {
+ if (data.columns == null || data.columns.length == 0)
+ return;
+
+ var zoomInfo = zoom2.getZoom();
+ if (zoomInfo.totalItems != data.columns[0].length - 1) {
+ zoom2.setOptions({ totalItems: data.columns[0].length - 1 });
+ zoomInfo = zoom2.getZoom();
+ }
+ data.columns = originalData.columns.map(function (column) {
+ var name = column[0];
+ var reducer = zoom2_reducers[name] || first; //by default take the first
+
+ var values = column.slice(1);
+ var newValues = zoomAndReduceData(values, zoomInfo.currentZoom, reducer, _zoom2_maxItems);
+ return [name].concat(newValues);
+ });
+ return data;
+ };
+
+ getDataForZoom(options.data);
+ var chart = c3.generate(options);
+ var _chart_load_org = chart.load.bind(chart);
+ chart.zoom2 = zoom2;
+ chart.load = function (data) {
+ if (data.unload) {
+ unload(data.unload);
+ delete data.unload;
+ }
+ Q.copy(data, originalData);
+ refresh();
+ }
+ chart.unload = function (names) {
+ unload(names);
+ refresh();
+ }
+
+ function unload(names) {
+ originalData.columns.removeAll(function (t) { names.contains(t); });
+ }
+
+
+ function refresh() {
+ var data = Q.copy(originalData)
+ getDataForZoom(data);
+ _chart_load_org(data);
+ };
+
+
+ return chart;
+}
+
+c3ext.ZoomBehavior = function (options) {
+ var zoom = { __type: "ZoomBehavior" };
+
+ var _zoom2_factor;
+ var _left;
+ var totalItems;
+ var currentZoom;
+ var bindto = options.bindto;
+ var _zoomChanged = options.changed || function () { };
+ var element;
+ var mousewheelTimer;
+ var deltaY = 0;
+ var leftRatio = 0;
+
+
+ zoom.setOptions = function (options) {
+ if (options == null)
+ options = {};
+ _zoom2_factor = options.factor || 1;
+ _left = 0;
+ totalItems = options.totalItems || 0;
+ currentZoom = [0, totalItems];
+ _zoomChanged = options.changed || _zoomChanged;
+ }
+
+ zoom.setOptions(options);
+
+
+ function verifyZoom(newZoom) {
+ //newZoom.sort();
+ if (newZoom[1] > totalItems) {
+ var diff = newZoom[1] - totalItems;
+ newZoom[0] -= diff;
+ newZoom[1] -= diff;
+ }
+ if (newZoom[0] < 0) {
+ var diff = newZoom[0] * -1;
+ newZoom[0] += diff;
+ newZoom[1] += diff;
+ }
+ if (newZoom[1] > totalItems)
+ newZoom[1] = totalItems;
+ if (newZoom[0] < 0)
+ newZoom[0] = 0;
+ }
+
+ function zoomAndPan(zoomFactor, left) {
+ var itemsToShow = Math.ceil(totalItems / zoomFactor);
+ var newZoom = [left, left + itemsToShow];
+ verifyZoom(newZoom);
+ currentZoom = newZoom;
+ onZoomChanged();
+ }
+
+ function onZoomChanged() {
+ if (_zoomChanged != null)
+ _zoomChanged(zoom.getZoom());
+ }
+ function applyZoomAndPan() {
+ zoomAndPan(_zoom2_factor, _left);
+ }
+ function getItemsToShow() {
+ var itemsToShow = Math.ceil(totalItems / _zoom2_factor);
+ return itemsToShow;
+ }
+
+
+ zoom.getZoom = function () {
+ return { totalItems: totalItems, currentZoom: currentZoom.slice() };
+ }
+
+ zoom.factor = function (factor, skipDraw) {
+ if (arguments.length == 0)
+ return _zoom2_factor;
+ _zoom2_factor = factor;
+ if (_zoom2_factor < 1)
+ _zoom2_factor = 1;
+ if (skipDraw)
+ return;
+ applyZoomAndPan();
+ }
+ zoom.left = function (left, skipDraw) {
+ if (arguments.length == 0)
+ return _left;
+ _left = left;
+ if (_left < 0)
+ _left = 0;
+ var pageSize = getItemsToShow();
+ //_left += pageSize;
+ if (_left + pageSize > totalItems)
+ _left = totalItems - pageSize;
+ console.log({ left: _left, pageSize: pageSize });
+ if (skipDraw)
+ return;
+ applyZoomAndPan();
+ }
+
+ zoom.zoomAndPanByRatio = function (zoomRatio, panRatio) {
+
+ var pageSize = getItemsToShow();
+ var leftOffset = Math.round(pageSize * panRatio);
+ var mouseLeft = _left + leftOffset;
+ zoom.factor(zoom.factor() * zoomRatio, true);
+
+ var finalLeft = mouseLeft;
+ if (zoomRatio != 1) {
+ var pageSize2 = getItemsToShow();
+ var leftOffset2 = Math.round(pageSize2 * panRatio);
+ finalLeft = mouseLeft - leftOffset2;
+ }
+ zoom.left(finalLeft, true);
+ applyZoomAndPan();
+ }
+
+ zoom.zoomIn = function () {
+ zoom.zoomAndPanByRatio(2, 0);
+ }
+
+ zoom.zoomOut = function () {
+ zoom.zoomAndPanByRatio(0.5, 0);
+ }
+
+ zoom.panLeft = function () {
+ zoom.zoomAndPanByRatio(1, -1);
+ }
+ zoom.panRight = function () {
+ zoom.zoomAndPanByRatio(1, 1);
+ }
+
+ zoom.reset = function () {
+ _left = 0;
+ _zoom2_factor = 1;
+ applyZoomAndPan();
+ }
+
+ function doZoom() {
+ if (deltaY != 0) {
+ var maxDelta = 10;
+ var multiply = (maxDelta + deltaY) / maxDelta;
+ //var factor = chart.zoom2.factor()*multiply;
+ //factor= Math.ceil(factor*100) / 100;
+ console.log({ deltaY: deltaY, multiply: multiply });
+ zoom.zoomAndPanByRatio(multiply, leftRatio);//0.5);//leftRatio);
+ deltaY = 0;
+ }
+ }
+
+ function element_mousewheel(e) {
+ deltaY += e.deltaY;
+ leftRatio = (e.offsetX - 70) / (e.currentTarget.offsetWidth - 70);
+ //console.log({ "e.offsetX": e.offsetX, "e.currentTarget.offsetWidth": e.currentTarget.offsetWidth, leftRatio: leftRatio });
+ mousewheelTimer.set(150);
+ e.preventDefault();
+ }
+
+ if (bindto != null) {
+ element = $(options.bindto);
+ if (element.mousewheel) {
+ mousewheelTimer = new Timer(doZoom);
+ element.mousewheel(element_mousewheel);
+ }
+ }
+
+ return zoom;
+
+}
+
+if (typeof (Q) == "undefined") {
+ var Q = function () {
+ };
+
+ Q.copy = function (src, target, options, depth) {
+ ///<summary>Copies an object into a target object, recursively cloning any object or array in the way, overwrite=true will overwrite a primitive field value even if exists</summary>
+ ///<param name="src" />
+ ///<param name="target" />
+ ///<param name="options" type="Object">{ overwrite:false }</param>
+ ///<returns type="Object">The copied object</returns>
+ if (depth == null)
+ depth = 0;
+ if (depth == 100) {
+ console.warn("Q.copy is in depth of 100 - possible circular reference")
+ }
+ options = options || { overwrite: false };
+ if (src == target || src == null)
+ return target;
+ if (typeof (src) != "object") {
+ if (options.overwrite || target == null)
+ return src;
+ return target;
+ }
+ if (typeof (src.clone) == "function") {
+ if (options.overwrite || target == null)
+ return src.clone();
+ return target;
+ }
+ if (target == null) {
+ if (src instanceof Array)
+ target = [];
+ else
+ target = {};
+ }
+
+ if (src instanceof Array) {
+ for (var i = 0; i < src.length; i++) {
+ var item = src[i];
+ var item2 = target[i];
+ item2 = Q.copy(item, item2, options, depth + 1);
+ target[i] = item2;
+ }
+ target.splice(src.length, target.length - src.length);
+ return target;
+ }
+ for (var p in src) {
+ var value = src[p];
+ var value2 = target[p];
+ value2 = Q.copy(value, value2, options, depth + 1);
+ target[p] = value2;
+ }
+ return target;
+ }
+}
+if (typeof (Timer) == "undefined") {
+ var Timer = function (action, ms) {
+ this.action = action;
+ if (ms != null)
+ this.set(ms);
+ }
+
+ Timer.prototype.set = function (ms) {
+ if (ms == null)
+ ms = this._ms;
+ else
+ this._ms = ms;
+ this.clear();
+ if (ms == null)
+ return;
+ this.timeout = window.setTimeout(this.onTick.bind(this), ms);
+ }
+
+ Timer.prototype.onTick = function () {
+ this.clear();
+ this.action();
+ }
+
+ Timer.prototype.clear = function (ms) {
+ if (this.timeout == null)
+ return;
+ window.clearTimeout(this.timeout);
+ this.timeout = null;
+ }
+}
+if (typeof(Array.prototype.splitIntoChunksOf)=="undefined") {
+ Array.prototype.splitIntoChunksOf = function (countInEachChunk) {
+ var chunks = Math.ceil(this.length / countInEachChunk);
+ var list = [];
+ for (var i = 0; i < this.length; i += countInEachChunk) {
+ list.push(this.slice(i, i + countInEachChunk));
+ }
+ return list;
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/LICENSE b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/LICENSE
new file mode 100644
index 0000000..29ce9cb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Masayuki Tanaka
+
+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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/README.md
new file mode 100644
index 0000000..53d97e2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/c3/README.md
@@ -0,0 +1,51 @@
+c3 [](https://travis-ci.org/masayuki0812/c3) [](https://david-dm.org/masayuki0812/c3) [](https://david-dm.org/masayuki0812/c3#info=devDependencies) [](https://github.com/masayuki0812/c3/blob/master/LICENSE)
+==
+
+c3 is a D3-based reusable chart library that enables deeper integration of charts into web applications.
+
+Follow the link for more information: [http://c3js.org](http://c3js.org/)
+
+## Tutorial and Examples
+
++ [Getting Started](http://c3js.org/gettingstarted.html)
++ [Examples](http://c3js.org/examples.html)
+
+Additional samples can be found in this repository:
++ [https://github.com/masayuki0812/c3/tree/master/htdocs/samples](https://github.com/masayuki0812/c3/tree/master/htdocs/samples)
+
+You can run these samples as:
+```
+$ cd c3/htdocs
+$ python -m SimpleHTTPServer 8080
+```
+
+## Google Group
+For general C3.js-related discussion, please visit our [Google Group at https://groups.google.com/forum/#!forum/c3js](https://groups.google.com/forum/#!forum/c3js).
+
+## Using the issue queue
+The [issue queue](https://github.com/masayuki0812/c3/issues) is to be used for reporting defects and problems with C3.js, in addition to feature requests and ideas. It is **not** a catch-all support forum. **For general support enquiries, please use the [Google Group](https://groups.google.com/forum/#!forum/c3js) at https://groups.google.com/forum/#!forum/c3js.** All questions involving the interplay between C3.js and any other library (such as AngularJS) should be posted there first!
+
+Before reporting an issue, please do the following:
+1. [Search for existing issues](https://github.com/masayuki0812/c3/issues) to ensure you're not posting a duplicate.
+
+1. [Search the Google Group](https://groups.google.com/forum/#!forum/c3js) to ensure it hasn't been addressed there already.
+
+1. Create a JSFiddle or Plunkr highlighting the issue. Please don't include any unnecessary dependencies so we can isolate that the issue is in fact with C3. *Please be advised that custom CSS can modify C3.js output!*
+
+1. When posting the issue, please use a descriptive title and include the version of C3 (or, if cloning from Git, the commit hash — C3 is under active development and the master branch contains the latest dev commits!), along with any platform/browser/OS information that may be relevant.
+
+## Pull requests
+Pull requests are welcome, though please post an issue first to see whether such a change is desirable.
+If you choose to submit a pull request, please do not bump the version number unless asked to, and please include test cases for any new features!
+
+## Playground
+Please fork this fiddle:
++ [http://jsfiddle.net/masayuki0812/7kYJu/](http://jsfiddle.net/masayuki0812/7kYJu/)
+
+## Dependency
++ [D3.js](https://github.com/mbostock/d3) `<=3.5.0`
+
+## License
+MIT
+
+[](https://flattr.com/submit/auto?user_id=masayuki0812&url=https://github.com/masayuki0812/c3&title=c3&language=javascript&tags=github&category=software)
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/bower.json
new file mode 100644
index 0000000..aa66966
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/bower.json
@@ -0,0 +1,26 @@
+{
+ "name": "d3",
+ "version": "3.5.0",
+ "main": "d3.js",
+ "scripts": [
+ "d3.js"
+ ],
+ "ignore": [
+ ".DS_Store",
+ ".git",
+ ".gitignore",
+ ".npmignore",
+ ".spmignore",
+ ".travis.yml",
+ "Makefile",
+ "bin",
+ "component.json",
+ "composer.json",
+ "index.js",
+ "lib",
+ "node_modules",
+ "package.json",
+ "src",
+ "test"
+ ]
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/CONTRIBUTING.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/CONTRIBUTING.md
new file mode 100644
index 0000000..76126d5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/CONTRIBUTING.md
@@ -0,0 +1,25 @@
+# Contributing
+
+If you’re looking for ways to contribute, please [peruse open issues](https://github.com/mbostock/d3/issues?milestone=&page=1&state=open). The icebox is a good place to find ideas that are not currently in development. If you already have an idea, please check past issues to see whether your idea or a similar one was previously discussed.
+
+Before submitting a pull request, consider implementing a live example first, say using [bl.ocks.org](http://bl.ocks.org). Real-world use cases go a long way to demonstrating the usefulness of a proposed feature. The more complex a feature’s implementation, the more usefulness it should provide. Share your demo using the #d3js tag on Twitter or by sending it to the d3-js Google group.
+
+If your proposed feature does not involve changing core functionality, consider submitting it instead as a [D3 plugin](https://github.com/d3/d3-plugins). New core features should be for general use, whereas plugins are suitable for more specialized use cases. When in doubt, it’s easier to start with a plugin before “graduating” to core.
+
+To contribute new documentation or add examples to the gallery, just [edit the Wiki](https://github.com/mbostock/d3/wiki)!
+
+## How to Submit a Pull Request
+
+1. Click the “Fork” button to create your personal fork of the D3 repository.
+
+2. After cloning your fork of the D3 repository in the terminal, run `npm install` to install D3’s dependencies.
+
+3. Create a new branch for your new feature. For example: `git checkout -b my-awesome-feature`. A dedicated branch for your pull request means you can develop multiple features at the same time, and ensures that your pull request is stable even if you later decide to develop an unrelated feature.
+
+4. The `d3.js` and `d3.min.js` files are built from source files in the `src` directory. _Do not edit `d3.js` directly._ Instead, edit the source files, and then run `make` to build the generated files.
+
+5. Use `make test` to run tests and verify your changes. If you are adding a new feature, you should add new tests! If you are changing existing functionality, make sure the existing tests run, or update them as appropriate.
+
+6. Sign D3’s [Individual Contributor License Agreement](https://docs.google.com/forms/d/1CzjdBKtDuA8WeuFJinadx956xLQ4Xriv7-oDvXnZMaI/viewform). Unless you are submitting a trivial patch (such as fixing a typo), this form is needed to verify that you are able to contribute.
+
+7. Submit your pull request, and good luck!
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/d3.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/d3.js
new file mode 100644
index 0000000..d810f0c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/d3.js
@@ -0,0 +1,9426 @@
+!function() {
+ var d3 = {
+ version: "3.5.0"
+ };
+ if (!Date.now) Date.now = function() {
+ return +new Date();
+ };
+ var d3_arraySlice = [].slice, d3_array = function(list) {
+ return d3_arraySlice.call(list);
+ };
+ var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window;
+ try {
+ d3_array(d3_documentElement.childNodes)[0].nodeType;
+ } catch (e) {
+ d3_array = function(list) {
+ var i = list.length, array = new Array(i);
+ while (i--) array[i] = list[i];
+ return array;
+ };
+ }
+ try {
+ d3_document.createElement("div").style.setProperty("opacity", 0, "");
+ } catch (error) {
+ var d3_element_prototype = d3_window.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
+ d3_element_prototype.setAttribute = function(name, value) {
+ d3_element_setAttribute.call(this, name, value + "");
+ };
+ d3_element_prototype.setAttributeNS = function(space, local, value) {
+ d3_element_setAttributeNS.call(this, space, local, value + "");
+ };
+ d3_style_prototype.setProperty = function(name, value, priority) {
+ d3_style_setProperty.call(this, name, value + "", priority);
+ };
+ }
+ d3.ascending = d3_ascending;
+ function d3_ascending(a, b) {
+ return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+ }
+ d3.descending = function(a, b) {
+ return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
+ };
+ d3.min = function(array, f) {
+ var i = -1, n = array.length, a, b;
+ if (arguments.length === 1) {
+ while (++i < n) if ((b = array[i]) != null && b >= b) {
+ a = b;
+ break;
+ }
+ while (++i < n) if ((b = array[i]) != null && a > b) a = b;
+ } else {
+ while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
+ a = b;
+ break;
+ }
+ while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
+ }
+ return a;
+ };
+ d3.max = function(array, f) {
+ var i = -1, n = array.length, a, b;
+ if (arguments.length === 1) {
+ while (++i < n) if ((b = array[i]) != null && b >= b) {
+ a = b;
+ break;
+ }
+ while (++i < n) if ((b = array[i]) != null && b > a) a = b;
+ } else {
+ while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
+ a = b;
+ break;
+ }
+ while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
+ }
+ return a;
+ };
+ d3.extent = function(array, f) {
+ var i = -1, n = array.length, a, b, c;
+ if (arguments.length === 1) {
+ while (++i < n) if ((b = array[i]) != null && b >= b) {
+ a = c = b;
+ break;
+ }
+ while (++i < n) if ((b = array[i]) != null) {
+ if (a > b) a = b;
+ if (c < b) c = b;
+ }
+ } else {
+ while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
+ a = c = b;
+ break;
+ }
+ while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
+ if (a > b) a = b;
+ if (c < b) c = b;
+ }
+ }
+ return [ a, c ];
+ };
+ function d3_number(x) {
+ return x === null ? NaN : +x;
+ }
+ function d3_numeric(x) {
+ return !isNaN(x);
+ }
+ d3.sum = function(array, f) {
+ var s = 0, n = array.length, a, i = -1;
+ if (arguments.length === 1) {
+ while (++i < n) if (d3_numeric(a = +array[i])) s += a;
+ } else {
+ while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;
+ }
+ return s;
+ };
+ d3.mean = function(array, f) {
+ var s = 0, n = array.length, a, i = -1, j = n;
+ if (arguments.length === 1) {
+ while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;
+ } else {
+ while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;
+ }
+ if (j) return s / j;
+ };
+ d3.quantile = function(values, p) {
+ var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;
+ return e ? v + e * (values[h] - v) : v;
+ };
+ d3.median = function(array, f) {
+ var numbers = [], n = array.length, a, i = -1;
+ if (arguments.length === 1) {
+ while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);
+ } else {
+ while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);
+ }
+ if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);
+ };
+ function d3_bisector(compare) {
+ return {
+ left: function(a, x, lo, hi) {
+ if (arguments.length < 3) lo = 0;
+ if (arguments.length < 4) hi = a.length;
+ while (lo < hi) {
+ var mid = lo + hi >>> 1;
+ if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;
+ }
+ return lo;
+ },
+ right: function(a, x, lo, hi) {
+ if (arguments.length < 3) lo = 0;
+ if (arguments.length < 4) hi = a.length;
+ while (lo < hi) {
+ var mid = lo + hi >>> 1;
+ if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;
+ }
+ return lo;
+ }
+ };
+ }
+ var d3_bisect = d3_bisector(d3_ascending);
+ d3.bisectLeft = d3_bisect.left;
+ d3.bisect = d3.bisectRight = d3_bisect.right;
+ d3.bisector = function(f) {
+ return d3_bisector(f.length === 1 ? function(d, x) {
+ return d3_ascending(f(d), x);
+ } : f);
+ };
+ d3.shuffle = function(array, i0, i1) {
+ if ((m = arguments.length) < 3) {
+ i1 = array.length;
+ if (m < 2) i0 = 0;
+ }
+ var m = i1 - i0, t, i;
+ while (m) {
+ i = Math.random() * m-- | 0;
+ t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
+ }
+ return array;
+ };
+ d3.permute = function(array, indexes) {
+ var i = indexes.length, permutes = new Array(i);
+ while (i--) permutes[i] = array[indexes[i]];
+ return permutes;
+ };
+ d3.pairs = function(array) {
+ var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);
+ while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];
+ return pairs;
+ };
+ d3.zip = function() {
+ if (!(n = arguments.length)) return [];
+ for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {
+ for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {
+ zip[j] = arguments[j][i];
+ }
+ }
+ return zips;
+ };
+ function d3_zipLength(d) {
+ return d.length;
+ }
+ d3.transpose = function(matrix) {
+ return d3.zip.apply(d3, matrix);
+ };
+ d3.keys = function(map) {
+ var keys = [];
+ for (var key in map) keys.push(key);
+ return keys;
+ };
+ d3.values = function(map) {
+ var values = [];
+ for (var key in map) values.push(map[key]);
+ return values;
+ };
+ d3.entries = function(map) {
+ var entries = [];
+ for (var key in map) entries.push({
+ key: key,
+ value: map[key]
+ });
+ return entries;
+ };
+ d3.merge = function(arrays) {
+ var n = arrays.length, m, i = -1, j = 0, merged, array;
+ while (++i < n) j += arrays[i].length;
+ merged = new Array(j);
+ while (--n >= 0) {
+ array = arrays[n];
+ m = array.length;
+ while (--m >= 0) {
+ merged[--j] = array[m];
+ }
+ }
+ return merged;
+ };
+ var abs = Math.abs;
+ d3.range = function(start, stop, step) {
+ if (arguments.length < 3) {
+ step = 1;
+ if (arguments.length < 2) {
+ stop = start;
+ start = 0;
+ }
+ }
+ if ((stop - start) / step === Infinity) throw new Error("infinite range");
+ var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;
+ start *= k, stop *= k, step *= k;
+ if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);
+ return range;
+ };
+ function d3_range_integerScale(x) {
+ var k = 1;
+ while (x * k % 1) k *= 10;
+ return k;
+ }
+ function d3_class(ctor, properties) {
+ for (var key in properties) {
+ Object.defineProperty(ctor.prototype, key, {
+ value: properties[key],
+ enumerable: false
+ });
+ }
+ }
+ d3.map = function(object, f) {
+ var map = new d3_Map();
+ if (object instanceof d3_Map) {
+ object.forEach(function(key, value) {
+ map.set(key, value);
+ });
+ } else if (Array.isArray(object)) {
+ var i = -1, n = object.length, o;
+ if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);
+ } else {
+ for (var key in object) map.set(key, object[key]);
+ }
+ return map;
+ };
+ function d3_Map() {
+ this._ = Object.create(null);
+ }
+ var d3_map_proto = "__proto__", d3_map_zero = "\x00";
+ d3_class(d3_Map, {
+ has: d3_map_has,
+ get: function(key) {
+ return this._[d3_map_escape(key)];
+ },
+ set: function(key, value) {
+ return this._[d3_map_escape(key)] = value;
+ },
+ remove: d3_map_remove,
+ keys: d3_map_keys,
+ values: function() {
+ var values = [];
+ for (var key in this._) values.push(this._[key]);
+ return values;
+ },
+ entries: function() {
+ var entries = [];
+ for (var key in this._) entries.push({
+ key: d3_map_unescape(key),
+ value: this._[key]
+ });
+ return entries;
+ },
+ size: d3_map_size,
+ empty: d3_map_empty,
+ forEach: function(f) {
+ for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);
+ }
+ });
+ function d3_map_escape(key) {
+ return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;
+ }
+ function d3_map_unescape(key) {
+ return (key += "")[0] === d3_map_zero ? key.slice(1) : key;
+ }
+ function d3_map_has(key) {
+ return d3_map_escape(key) in this._;
+ }
+ function d3_map_remove(key) {
+ return (key = d3_map_escape(key)) in this._ && delete this._[key];
+ }
+ function d3_map_keys() {
+ var keys = [];
+ for (var key in this._) keys.push(d3_map_unescape(key));
+ return keys;
+ }
+ function d3_map_size() {
+ var size = 0;
+ for (var key in this._) ++size;
+ return size;
+ }
+ function d3_map_empty() {
+ for (var key in this._) return false;
+ return true;
+ }
+ d3.nest = function() {
+ var nest = {}, keys = [], sortKeys = [], sortValues, rollup;
+ function map(mapType, array, depth) {
+ if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;
+ var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;
+ while (++i < n) {
+ if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
+ values.push(object);
+ } else {
+ valuesByKey.set(keyValue, [ object ]);
+ }
+ }
+ if (mapType) {
+ object = mapType();
+ setter = function(keyValue, values) {
+ object.set(keyValue, map(mapType, values, depth));
+ };
+ } else {
+ object = {};
+ setter = function(keyValue, values) {
+ object[keyValue] = map(mapType, values, depth);
+ };
+ }
+ valuesByKey.forEach(setter);
+ return object;
+ }
+ function entries(map, depth) {
+ if (depth >= keys.length) return map;
+ var array = [], sortKey = sortKeys[depth++];
+ map.forEach(function(key, keyMap) {
+ array.push({
+ key: key,
+ values: entries(keyMap, depth)
+ });
+ });
+ return sortKey ? array.sort(function(a, b) {
+ return sortKey(a.key, b.key);
+ }) : array;
+ }
+ nest.map = function(array, mapType) {
+ return map(mapType, array, 0);
+ };
+ nest.entries = function(array) {
+ return entries(map(d3.map, array, 0), 0);
+ };
+ nest.key = function(d) {
+ keys.push(d);
+ return nest;
+ };
+ nest.sortKeys = function(order) {
+ sortKeys[keys.length - 1] = order;
+ return nest;
+ };
+ nest.sortValues = function(order) {
+ sortValues = order;
+ return nest;
+ };
+ nest.rollup = function(f) {
+ rollup = f;
+ return nest;
+ };
+ return nest;
+ };
+ d3.set = function(array) {
+ var set = new d3_Set();
+ if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);
+ return set;
+ };
+ function d3_Set() {
+ this._ = Object.create(null);
+ }
+ d3_class(d3_Set, {
+ has: d3_map_has,
+ add: function(key) {
+ this._[d3_map_escape(key += "")] = true;
+ return key;
+ },
+ remove: d3_map_remove,
+ values: d3_map_keys,
+ size: d3_map_size,
+ empty: d3_map_empty,
+ forEach: function(f) {
+ for (var key in this._) f.call(this, d3_map_unescape(key));
+ }
+ });
+ d3.behavior = {};
+ d3.rebind = function(target, source) {
+ var i = 1, n = arguments.length, method;
+ while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
+ return target;
+ };
+ function d3_rebind(target, source, method) {
+ return function() {
+ var value = method.apply(source, arguments);
+ return value === source ? target : value;
+ };
+ }
+ function d3_vendorSymbol(object, name) {
+ if (name in object) return name;
+ name = name.charAt(0).toUpperCase() + name.slice(1);
+ for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
+ var prefixName = d3_vendorPrefixes[i] + name;
+ if (prefixName in object) return prefixName;
+ }
+ }
+ var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ];
+ function d3_noop() {}
+ d3.dispatch = function() {
+ var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
+ while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
+ return dispatch;
+ };
+ function d3_dispatch() {}
+ d3_dispatch.prototype.on = function(type, listener) {
+ var i = type.indexOf("."), name = "";
+ if (i >= 0) {
+ name = type.slice(i + 1);
+ type = type.slice(0, i);
+ }
+ if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);
+ if (arguments.length === 2) {
+ if (listener == null) for (type in this) {
+ if (this.hasOwnProperty(type)) this[type].on(name, null);
+ }
+ return this;
+ }
+ };
+ function d3_dispatch_event(dispatch) {
+ var listeners = [], listenerByName = new d3_Map();
+ function event() {
+ var z = listeners, i = -1, n = z.length, l;
+ while (++i < n) if (l = z[i].on) l.apply(this, arguments);
+ return dispatch;
+ }
+ event.on = function(name, listener) {
+ var l = listenerByName.get(name), i;
+ if (arguments.length < 2) return l && l.on;
+ if (l) {
+ l.on = null;
+ listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
+ listenerByName.remove(name);
+ }
+ if (listener) listeners.push(listenerByName.set(name, {
+ on: listener
+ }));
+ return dispatch;
+ };
+ return event;
+ }
+ d3.event = null;
+ function d3_eventPreventDefault() {
+ d3.event.preventDefault();
+ }
+ function d3_eventSource() {
+ var e = d3.event, s;
+ while (s = e.sourceEvent) e = s;
+ return e;
+ }
+ function d3_eventDispatch(target) {
+ var dispatch = new d3_dispatch(), i = 0, n = arguments.length;
+ while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
+ dispatch.of = function(thiz, argumentz) {
+ return function(e1) {
+ try {
+ var e0 = e1.sourceEvent = d3.event;
+ e1.target = target;
+ d3.event = e1;
+ dispatch[e1.type].apply(thiz, argumentz);
+ } finally {
+ d3.event = e0;
+ }
+ };
+ };
+ return dispatch;
+ }
+ d3.requote = function(s) {
+ return s.replace(d3_requote_re, "\\$&");
+ };
+ var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
+ var d3_subclass = {}.__proto__ ? function(object, prototype) {
+ object.__proto__ = prototype;
+ } : function(object, prototype) {
+ for (var property in prototype) object[property] = prototype[property];
+ };
+ function d3_selection(groups) {
+ d3_subclass(groups, d3_selectionPrototype);
+ return groups;
+ }
+ var d3_select = function(s, n) {
+ return n.querySelector(s);
+ }, d3_selectAll = function(s, n) {
+ return n.querySelectorAll(s);
+ }, d3_selectMatcher = d3_documentElement.matches || d3_documentElement[d3_vendorSymbol(d3_documentElement, "matchesSelector")], d3_selectMatches = function(n, s) {
+ return d3_selectMatcher.call(n, s);
+ };
+ if (typeof Sizzle === "function") {
+ d3_select = function(s, n) {
+ return Sizzle(s, n)[0] || null;
+ };
+ d3_selectAll = Sizzle;
+ d3_selectMatches = Sizzle.matchesSelector;
+ }
+ d3.selection = function() {
+ return d3_selectionRoot;
+ };
+ var d3_selectionPrototype = d3.selection.prototype = [];
+ d3_selectionPrototype.select = function(selector) {
+ var subgroups = [], subgroup, subnode, group, node;
+ selector = d3_selection_selector(selector);
+ for (var j = -1, m = this.length; ++j < m; ) {
+ subgroups.push(subgroup = []);
+ subgroup.parentNode = (group = this[j]).parentNode;
+ for (var i = -1, n = group.length; ++i < n; ) {
+ if (node = group[i]) {
+ subgroup.push(subnode = selector.call(node, node.__data__, i, j));
+ if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
+ } else {
+ subgroup.push(null);
+ }
+ }
+ }
+ return d3_selection(subgroups);
+ };
+ function d3_selection_selector(selector) {
+ return typeof selector === "function" ? selector : function() {
+ return d3_select(selector, this);
+ };
+ }
+ d3_selectionPrototype.selectAll = function(selector) {
+ var subgroups = [], subgroup, node;
+ selector = d3_selection_selectorAll(selector);
+ for (var j = -1, m = this.length; ++j < m; ) {
+ for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+ if (node = group[i]) {
+ subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));
+ subgroup.parentNode = node;
+ }
+ }
+ }
+ return d3_selection(subgroups);
+ };
+ function d3_selection_selectorAll(selector) {
+ return typeof selector === "function" ? selector : function() {
+ return d3_selectAll(selector, this);
+ };
+ }
+ var d3_nsPrefix = {
+ svg: "http://www.w3.org/2000/svg",
+ xhtml: "http://www.w3.org/1999/xhtml",
+ xlink: "http://www.w3.org/1999/xlink",
+ xml: "http://www.w3.org/XML/1998/namespace",
+ xmlns: "http://www.w3.org/2000/xmlns/"
+ };
+ d3.ns = {
+ prefix: d3_nsPrefix,
+ qualify: function(name) {
+ var i = name.indexOf(":"), prefix = name;
+ if (i >= 0) {
+ prefix = name.slice(0, i);
+ name = name.slice(i + 1);
+ }
+ return d3_nsPrefix.hasOwnProperty(prefix) ? {
+ space: d3_nsPrefix[prefix],
+ local: name
+ } : name;
+ }
+ };
+ d3_selectionPrototype.attr = function(name, value) {
+ if (arguments.length < 2) {
+ if (typeof name === "string") {
+ var node = this.node();
+ name = d3.ns.qualify(name);
+ return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);
+ }
+ for (value in name) this.each(d3_selection_attr(value, name[value]));
+ return this;
+ }
+ return this.each(d3_selection_attr(name, value));
+ };
+ function d3_selection_attr(name, value) {
+ name = d3.ns.qualify(name);
+ function attrNull() {
+ this.removeAttribute(name);
+ }
+ function attrNullNS() {
+ this.removeAttributeNS(name.space, name.local);
+ }
+ function attrConstant() {
+ this.setAttribute(name, value);
+ }
+ function attrConstantNS() {
+ this.setAttributeNS(name.space, name.local, value);
+ }
+ function attrFunction() {
+ var x = value.apply(this, arguments);
+ if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);
+ }
+ function attrFunctionNS() {
+ var x = value.apply(this, arguments);
+ if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);
+ }
+ return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;
+ }
+ function d3_collapse(s) {
+ return s.trim().replace(/\s+/g, " ");
+ }
+ d3_selectionPrototype.classed = function(name, value) {
+ if (arguments.length < 2) {
+ if (typeof name === "string") {
+ var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;
+ if (value = node.classList) {
+ while (++i < n) if (!value.contains(name[i])) return false;
+ } else {
+ value = node.getAttribute("class");
+ while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
+ }
+ return true;
+ }
+ for (value in name) this.each(d3_selection_classed(value, name[value]));
+ return this;
+ }
+ return this.each(d3_selection_classed(name, value));
+ };
+ function d3_selection_classedRe(name) {
+ return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
+ }
+ function d3_selection_classes(name) {
+ return (name + "").trim().split(/^|\s+/);
+ }
+ function d3_selection_classed(name, value) {
+ name = d3_selection_classes(name).map(d3_selection_classedName);
+ var n = name.length;
+ function classedConstant() {
+ var i = -1;
+ while (++i < n) name[i](this, value);
+ }
+ function classedFunction() {
+ var i = -1, x = value.apply(this, arguments);
+ while (++i < n) name[i](this, x);
+ }
+ return typeof value === "function" ? classedFunction : classedConstant;
+ }
+ function d3_selection_classedName(name) {
+ var re = d3_selection_classedRe(name);
+ return function(node, value) {
+ if (c = node.classList) return value ? c.add(name) : c.remove(name);
+ var c = node.getAttribute("class") || "";
+ if (value) {
+ re.lastIndex = 0;
+ if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name));
+ } else {
+ node.setAttribute("class", d3_collapse(c.replace(re, " ")));
+ }
+ };
+ }
+ d3_selectionPrototype.style = function(name, value, priority) {
+ var n = arguments.length;
+ if (n < 3) {
+ if (typeof name !== "string") {
+ if (n < 2) value = "";
+ for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
+ return this;
+ }
+ if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name);
+ priority = "";
+ }
+ return this.each(d3_selection_style(name, value, priority));
+ };
+ function d3_selection_style(name, value, priority) {
+ function styleNull() {
+ this.style.removeProperty(name);
+ }
+ function styleConstant() {
+ this.style.setProperty(name, value, priority);
+ }
+ function styleFunction() {
+ var x = value.apply(this, arguments);
+ if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);
+ }
+ return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant;
+ }
+ d3_selectionPrototype.property = function(name, value) {
+ if (arguments.length < 2) {
+ if (typeof name === "string") return this.node()[name];
+ for (value in name) this.each(d3_selection_property(value, name[value]));
+ return this;
+ }
+ return this.each(d3_selection_property(name, value));
+ };
+ function d3_selection_property(name, value) {
+ function propertyNull() {
+ delete this[name];
+ }
+ function propertyConstant() {
+ this[name] = value;
+ }
+ function propertyFunction() {
+ var x = value.apply(this, arguments);
+ if (x == null) delete this[name]; else this[name] = x;
+ }
+ return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant;
+ }
+ d3_selectionPrototype.text = function(value) {
+ return arguments.length ? this.each(typeof value === "function" ? function() {
+ var v = value.apply(this, arguments);
+ this.textContent = v == null ? "" : v;
+ } : value == null ? function() {
+ this.textContent = "";
+ } : function() {
+ this.textContent = value;
+ }) : this.node().textContent;
+ };
+ d3_selectionPrototype.html = function(value) {
+ return arguments.length ? this.each(typeof value === "function" ? function() {
+ var v = value.apply(this, arguments);
+ this.innerHTML = v == null ? "" : v;
+ } : value == null ? function() {
+ this.innerHTML = "";
+ } : function() {
+ this.innerHTML = value;
+ }) : this.node().innerHTML;
+ };
+ d3_selectionPrototype.append = function(name) {
+ name = d3_selection_creator(name);
+ return this.select(function() {
+ return this.appendChild(name.apply(this, arguments));
+ });
+ };
+ function d3_selection_creator(name) {
+ return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? function() {
+ return this.ownerDocument.createElementNS(name.space, name.local);
+ } : function() {
+ return this.ownerDocument.createElementNS(this.namespaceURI, name);
+ };
+ }
+ d3_selectionPrototype.insert = function(name, before) {
+ name = d3_selection_creator(name);
+ before = d3_selection_selector(before);
+ return this.select(function() {
+ return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);
+ });
+ };
+ d3_selectionPrototype.remove = function() {
+ return this.each(d3_selectionRemove);
+ };
+ function d3_selectionRemove() {
+ var parent = this.parentNode;
+ if (parent) parent.removeChild(this);
+ }
+ d3_selectionPrototype.data = function(value, key) {
+ var i = -1, n = this.length, group, node;
+ if (!arguments.length) {
+ value = new Array(n = (group = this[0]).length);
+ while (++i < n) {
+ if (node = group[i]) {
+ value[i] = node.__data__;
+ }
+ }
+ return value;
+ }
+ function bind(group, groupData) {
+ var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;
+ if (key) {
+ var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;
+ for (i = -1; ++i < n; ) {
+ if (nodeByKeyValue.has(keyValue = key.call(node = group[i], node.__data__, i))) {
+ exitNodes[i] = node;
+ } else {
+ nodeByKeyValue.set(keyValue, node);
+ }
+ keyValues[i] = keyValue;
+ }
+ for (i = -1; ++i < m; ) {
+ if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {
+ enterNodes[i] = d3_selection_dataNode(nodeData);
+ } else if (node !== true) {
+ updateNodes[i] = node;
+ node.__data__ = nodeData;
+ }
+ nodeByKeyValue.set(keyValue, true);
+ }
+ for (i = -1; ++i < n; ) {
+ if (nodeByKeyValue.get(keyValues[i]) !== true) {
+ exitNodes[i] = group[i];
+ }
+ }
+ } else {
+ for (i = -1; ++i < n0; ) {
+ node = group[i];
+ nodeData = groupData[i];
+ if (node) {
+ node.__data__ = nodeData;
+ updateNodes[i] = node;
+ } else {
+ enterNodes[i] = d3_selection_dataNode(nodeData);
+ }
+ }
+ for (;i < m; ++i) {
+ enterNodes[i] = d3_selection_dataNode(groupData[i]);
+ }
+ for (;i < n; ++i) {
+ exitNodes[i] = group[i];
+ }
+ }
+ enterNodes.update = updateNodes;
+ enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;
+ enter.push(enterNodes);
+ update.push(updateNodes);
+ exit.push(exitNodes);
+ }
+ var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);
+ if (typeof value === "function") {
+ while (++i < n) {
+ bind(group = this[i], value.call(group, group.parentNode.__data__, i));
+ }
+ } else {
+ while (++i < n) {
+ bind(group = this[i], value);
+ }
+ }
+ update.enter = function() {
+ return enter;
+ };
+ update.exit = function() {
+ return exit;
+ };
+ return update;
+ };
+ function d3_selection_dataNode(data) {
+ return {
+ __data__: data
+ };
+ }
+ d3_selectionPrototype.datum = function(value) {
+ return arguments.length ? this.property("__data__", value) : this.property("__data__");
+ };
+ d3_selectionPrototype.filter = function(filter) {
+ var subgroups = [], subgroup, group, node;
+ if (typeof filter !== "function") filter = d3_selection_filter(filter);
+ for (var j = 0, m = this.length; j < m; j++) {
+ subgroups.push(subgroup = []);
+ subgroup.parentNode = (group = this[j]).parentNode;
+ for (var i = 0, n = group.length; i < n; i++) {
+ if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
+ subgroup.push(node);
+ }
+ }
+ }
+ return d3_selection(subgroups);
+ };
+ function d3_selection_filter(selector) {
+ return function() {
+ return d3_selectMatches(this, selector);
+ };
+ }
+ d3_selectionPrototype.order = function() {
+ for (var j = -1, m = this.length; ++j < m; ) {
+ for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {
+ if (node = group[i]) {
+ if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
+ next = node;
+ }
+ }
+ }
+ return this;
+ };
+ d3_selectionPrototype.sort = function(comparator) {
+ comparator = d3_selection_sortComparator.apply(this, arguments);
+ for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);
+ return this.order();
+ };
+ function d3_selection_sortComparator(comparator) {
+ if (!arguments.length) comparator = d3_ascending;
+ return function(a, b) {
+ return a && b ? comparator(a.__data__, b.__data__) : !a - !b;
+ };
+ }
+ d3_selectionPrototype.each = function(callback) {
+ return d3_selection_each(this, function(node, i, j) {
+ callback.call(node, node.__data__, i, j);
+ });
+ };
+ function d3_selection_each(groups, callback) {
+ for (var j = 0, m = groups.length; j < m; j++) {
+ for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
+ if (node = group[i]) callback(node, i, j);
+ }
+ }
+ return groups;
+ }
+ d3_selectionPrototype.call = function(callback) {
+ var args = d3_array(arguments);
+ callback.apply(args[0] = this, args);
+ return this;
+ };
+ d3_selectionPrototype.empty = function() {
+ return !this.node();
+ };
+ d3_selectionPrototype.node = function() {
+ for (var j = 0, m = this.length; j < m; j++) {
+ for (var group = this[j], i = 0, n = group.length; i < n; i++) {
+ var node = group[i];
+ if (node) return node;
+ }
+ }
+ return null;
+ };
+ d3_selectionPrototype.size = function() {
+ var n = 0;
+ d3_selection_each(this, function() {
+ ++n;
+ });
+ return n;
+ };
+ function d3_selection_enter(selection) {
+ d3_subclass(selection, d3_selection_enterPrototype);
+ return selection;
+ }
+ var d3_selection_enterPrototype = [];
+ d3.selection.enter = d3_selection_enter;
+ d3.selection.enter.prototype = d3_selection_enterPrototype;
+ d3_selection_enterPrototype.append = d3_selectionPrototype.append;
+ d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
+ d3_selection_enterPrototype.node = d3_selectionPrototype.node;
+ d3_selection_enterPrototype.call = d3_selectionPrototype.call;
+ d3_selection_enterPrototype.size = d3_selectionPrototype.size;
+ d3_selection_enterPrototype.select = function(selector) {
+ var subgroups = [], subgroup, subnode, upgroup, group, node;
+ for (var j = -1, m = this.length; ++j < m; ) {
+ upgroup = (group = this[j]).update;
+ subgroups.push(subgroup = []);
+ subgroup.parentNode = group.parentNode;
+ for (var i = -1, n = group.length; ++i < n; ) {
+ if (node = group[i]) {
+ subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));
+ subnode.__data__ = node.__data__;
+ } else {
+ subgroup.push(null);
+ }
+ }
+ }
+ return d3_selection(subgroups);
+ };
+ d3_selection_enterPrototype.insert = function(name, before) {
+ if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);
+ return d3_selectionPrototype.insert.call(this, name, before);
+ };
+ function d3_selection_enterInsertBefore(enter) {
+ var i0, j0;
+ return function(d, i, j) {
+ var group = enter[j].update, n = group.length, node;
+ if (j != j0) j0 = j, i0 = 0;
+ if (i >= i0) i0 = i + 1;
+ while (!(node = group[i0]) && ++i0 < n) ;
+ return node;
+ };
+ }
+ d3_selectionPrototype.transition = function(name) {
+ var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {
+ time: Date.now(),
+ ease: d3_ease_cubicInOut,
+ delay: 0,
+ duration: 250
+ };
+ for (var j = -1, m = this.length; ++j < m; ) {
+ subgroups.push(subgroup = []);
+ for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+ if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);
+ subgroup.push(node);
+ }
+ }
+ return d3_transition(subgroups, ns, id);
+ };
+ d3_selectionPrototype.interrupt = function(name) {
+ var ns = d3_transitionNamespace(name);
+ return this.each(function() {
+ var lock = this[ns];
+ if (lock) ++lock.active;
+ });
+ };
+ function d3_selection_interrupt(that) {
+ var lock = that.__transition__;
+ if (lock) ++lock.active;
+ }
+ d3.select = function(node) {
+ var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ];
+ group.parentNode = d3_documentElement;
+ return d3_selection([ group ]);
+ };
+ d3.selectAll = function(nodes) {
+ var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes);
+ group.parentNode = d3_documentElement;
+ return d3_selection([ group ]);
+ };
+ var d3_selectionRoot = d3.select(d3_documentElement);
+ d3_selectionPrototype.on = function(type, listener, capture) {
+ var n = arguments.length;
+ if (n < 3) {
+ if (typeof type !== "string") {
+ if (n < 2) listener = false;
+ for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
+ return this;
+ }
+ if (n < 2) return (n = this.node()["__on" + type]) && n._;
+ capture = false;
+ }
+ return this.each(d3_selection_on(type, listener, capture));
+ };
+ function d3_selection_on(type, listener, capture) {
+ var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener;
+ if (i > 0) type = type.slice(0, i);
+ var filter = d3_selection_onFilters.get(type);
+ if (filter) type = filter, wrap = d3_selection_onFilter;
+ function onRemove() {
+ var l = this[name];
+ if (l) {
+ this.removeEventListener(type, l, l.$);
+ delete this[name];
+ }
+ }
+ function onAdd() {
+ var l = wrap(listener, d3_array(arguments));
+ onRemove.call(this);
+ this.addEventListener(type, this[name] = l, l.$ = capture);
+ l._ = listener;
+ }
+ function removeAll() {
+ var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match;
+ for (var name in this) {
+ if (match = name.match(re)) {
+ var l = this[name];
+ this.removeEventListener(match[1], l, l.$);
+ delete this[name];
+ }
+ }
+ }
+ return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;
+ }
+ var d3_selection_onFilters = d3.map({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+ });
+ d3_selection_onFilters.forEach(function(k) {
+ if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
+ });
+ function d3_selection_onListener(listener, argumentz) {
+ return function(e) {
+ var o = d3.event;
+ d3.event = e;
+ argumentz[0] = this.__data__;
+ try {
+ listener.apply(this, argumentz);
+ } finally {
+ d3.event = o;
+ }
+ };
+ }
+ function d3_selection_onFilter(listener, argumentz) {
+ var l = d3_selection_onListener(listener, argumentz);
+ return function(e) {
+ var target = this, related = e.relatedTarget;
+ if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {
+ l.call(target, e);
+ }
+ };
+ }
+ var d3_event_dragSelect = "onselectstart" in d3_document ? null : d3_vendorSymbol(d3_documentElement.style, "userSelect"), d3_event_dragId = 0;
+ function d3_event_dragSuppress() {
+ var name = ".dragsuppress-" + ++d3_event_dragId, click = "click" + name, w = d3.select(d3_window).on("touchmove" + name, d3_eventPreventDefault).on("dragstart" + name, d3_eventPreventDefault).on("selectstart" + name, d3_eventPreventDefault);
+ if (d3_event_dragSelect) {
+ var style = d3_documentElement.style, select = style[d3_event_dragSelect];
+ style[d3_event_dragSelect] = "none";
+ }
+ return function(suppressClick) {
+ w.on(name, null);
+ if (d3_event_dragSelect) style[d3_event_dragSelect] = select;
+ if (suppressClick) {
+ var off = function() {
+ w.on(click, null);
+ };
+ w.on(click, function() {
+ d3_eventPreventDefault();
+ off();
+ }, true);
+ setTimeout(off, 0);
+ }
+ };
+ }
+ d3.mouse = function(container) {
+ return d3_mousePoint(container, d3_eventSource());
+ };
+ var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0;
+ function d3_mousePoint(container, e) {
+ if (e.changedTouches) e = e.changedTouches[0];
+ var svg = container.ownerSVGElement || container;
+ if (svg.createSVGPoint) {
+ var point = svg.createSVGPoint();
+ if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) {
+ svg = d3.select("body").append("svg").style({
+ position: "absolute",
+ top: 0,
+ left: 0,
+ margin: 0,
+ padding: 0,
+ border: "none"
+ }, "important");
+ var ctm = svg[0][0].getScreenCTM();
+ d3_mouse_bug44083 = !(ctm.f || ctm.e);
+ svg.remove();
+ }
+ if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX,
+ point.y = e.clientY;
+ point = point.matrixTransform(container.getScreenCTM().inverse());
+ return [ point.x, point.y ];
+ }
+ var rect = container.getBoundingClientRect();
+ return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
+ }
+ d3.touch = function(container, touches, identifier) {
+ if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;
+ if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {
+ if ((touch = touches[i]).identifier === identifier) {
+ return d3_mousePoint(container, touch);
+ }
+ }
+ };
+ d3.behavior.drag = function() {
+ var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_behavior_dragMouseSubject, "mousemove", "mouseup"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_behavior_dragTouchSubject, "touchmove", "touchend");
+ function drag() {
+ this.on("mousedown.drag", mousedown).on("touchstart.drag", touchstart);
+ }
+ function dragstart(id, position, subject, move, end) {
+ return function() {
+ var that = this, target = d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = ".drag" + (dragId == null ? "" : "-" + dragId), dragOffset, dragSubject = d3.select(subject()).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(), position0 = position(parent, dragId);
+ if (origin) {
+ dragOffset = origin.apply(that, arguments);
+ dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];
+ } else {
+ dragOffset = [ 0, 0 ];
+ }
+ dispatch({
+ type: "dragstart"
+ });
+ function moved() {
+ var position1 = position(parent, dragId), dx, dy;
+ if (!position1) return;
+ dx = position1[0] - position0[0];
+ dy = position1[1] - position0[1];
+ dragged |= dx | dy;
+ position0 = position1;
+ dispatch({
+ type: "drag",
+ x: position1[0] + dragOffset[0],
+ y: position1[1] + dragOffset[1],
+ dx: dx,
+ dy: dy
+ });
+ }
+ function ended() {
+ if (!position(parent, dragId)) return;
+ dragSubject.on(move + dragName, null).on(end + dragName, null);
+ dragRestore(dragged && d3.event.target === target);
+ dispatch({
+ type: "dragend"
+ });
+ }
+ };
+ }
+ drag.origin = function(x) {
+ if (!arguments.length) return origin;
+ origin = x;
+ return drag;
+ };
+ return d3.rebind(drag, event, "on");
+ };
+ function d3_behavior_dragTouchId() {
+ return d3.event.changedTouches[0].identifier;
+ }
+ function d3_behavior_dragTouchSubject() {
+ return d3.event.target;
+ }
+ function d3_behavior_dragMouseSubject() {
+ return d3_window;
+ }
+ d3.touches = function(container, touches) {
+ if (arguments.length < 2) touches = d3_eventSource().touches;
+ return touches ? d3_array(touches).map(function(touch) {
+ var point = d3_mousePoint(container, touch);
+ point.identifier = touch.identifier;
+ return point;
+ }) : [];
+ };
+ var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;
+ function d3_sgn(x) {
+ return x > 0 ? 1 : x < 0 ? -1 : 0;
+ }
+ function d3_cross2d(a, b, c) {
+ return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
+ }
+ function d3_acos(x) {
+ return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
+ }
+ function d3_asin(x) {
+ return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);
+ }
+ function d3_sinh(x) {
+ return ((x = Math.exp(x)) - 1 / x) / 2;
+ }
+ function d3_cosh(x) {
+ return ((x = Math.exp(x)) + 1 / x) / 2;
+ }
+ function d3_tanh(x) {
+ return ((x = Math.exp(2 * x)) - 1) / (x + 1);
+ }
+ function d3_haversin(x) {
+ return (x = Math.sin(x / 2)) * x;
+ }
+ var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;
+ d3.interpolateZoom = function(p0, p1) {
+ var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2];
+ var dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1), dr = r1 - r0, S = (dr || Math.log(w1 / w0)) / ρ;
+ function interpolate(t) {
+ var s = t * S;
+ if (dr) {
+ var coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
+ return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];
+ }
+ return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * s) ];
+ }
+ interpolate.duration = S * 1e3;
+ return interpolate;
+ };
+ d3.behavior.zoom = function() {
+ var view = {
+ x: 0,
+ y: 0,
+ k: 1
+ }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1;
+ function zoom(g) {
+ g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted);
+ }
+ zoom.event = function(g) {
+ g.each(function() {
+ var dispatch = event.of(this, arguments), view1 = view;
+ if (d3_transitionInheritId) {
+ d3.select(this).transition().each("start.zoom", function() {
+ view = this.__chart__ || {
+ x: 0,
+ y: 0,
+ k: 1
+ };
+ zoomstarted(dispatch);
+ }).tween("zoom:zoom", function() {
+ var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);
+ return function(t) {
+ var l = i(t), k = dx / l[2];
+ this.__chart__ = view = {
+ x: cx - l[0] * k,
+ y: cy - l[1] * k,
+ k: k
+ };
+ zoomed(dispatch);
+ };
+ }).each("interrupt.zoom", function() {
+ zoomended(dispatch);
+ }).each("end.zoom", function() {
+ zoomended(dispatch);
+ });
+ } else {
+ this.__chart__ = view;
+ zoomstarted(dispatch);
+ zoomed(dispatch);
+ zoomended(dispatch);
+ }
+ });
+ };
+ zoom.translate = function(_) {
+ if (!arguments.length) return [ view.x, view.y ];
+ view = {
+ x: +_[0],
+ y: +_[1],
+ k: view.k
+ };
+ rescale();
+ return zoom;
+ };
+ zoom.scale = function(_) {
+ if (!arguments.length) return view.k;
+ view = {
+ x: view.x,
+ y: view.y,
+ k: +_
+ };
+ rescale();
+ return zoom;
+ };
+ zoom.scaleExtent = function(_) {
+ if (!arguments.length) return scaleExtent;
+ scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];
+ return zoom;
+ };
+ zoom.center = function(_) {
+ if (!arguments.length) return center;
+ center = _ && [ +_[0], +_[1] ];
+ return zoom;
+ };
+ zoom.size = function(_) {
+ if (!arguments.length) return size;
+ size = _ && [ +_[0], +_[1] ];
+ return zoom;
+ };
+ zoom.duration = function(_) {
+ if (!arguments.length) return duration;
+ duration = +_;
+ return zoom;
+ };
+ zoom.x = function(z) {
+ if (!arguments.length) return x1;
+ x1 = z;
+ x0 = z.copy();
+ view = {
+ x: 0,
+ y: 0,
+ k: 1
+ };
+ return zoom;
+ };
+ zoom.y = function(z) {
+ if (!arguments.length) return y1;
+ y1 = z;
+ y0 = z.copy();
+ view = {
+ x: 0,
+ y: 0,
+ k: 1
+ };
+ return zoom;
+ };
+ function location(p) {
+ return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];
+ }
+ function point(l) {
+ return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];
+ }
+ function scaleTo(s) {
+ view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
+ }
+ function translateTo(p, l) {
+ l = point(l);
+ view.x += p[0] - l[0];
+ view.y += p[1] - l[1];
+ }
+ function zoomTo(that, p, l, k) {
+ that.__chart__ = {
+ x: view.x,
+ y: view.y,
+ k: view.k
+ };
+ scaleTo(Math.pow(2, k));
+ translateTo(center0 = p, l);
+ that = d3.select(that);
+ if (duration > 0) that = that.transition().duration(duration);
+ that.call(zoom.event);
+ }
+ function rescale() {
+ if (x1) x1.domain(x0.range().map(function(x) {
+ return (x - view.x) / view.k;
+ }).map(x0.invert));
+ if (y1) y1.domain(y0.range().map(function(y) {
+ return (y - view.y) / view.k;
+ }).map(y0.invert));
+ }
+ function zoomstarted(dispatch) {
+ if (!zooming++) dispatch({
+ type: "zoomstart"
+ });
+ }
+ function zoomed(dispatch) {
+ rescale();
+ dispatch({
+ type: "zoom",
+ scale: view.k,
+ translate: [ view.x, view.y ]
+ });
+ }
+ function zoomended(dispatch) {
+ if (!--zooming) dispatch({
+ type: "zoomend"
+ });
+ center0 = null;
+ }
+ function mousedowned() {
+ var that = this, target = d3.event.target, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress();
+ d3_selection_interrupt(that);
+ zoomstarted(dispatch);
+ function moved() {
+ dragged = 1;
+ translateTo(d3.mouse(that), location0);
+ zoomed(dispatch);
+ }
+ function ended() {
+ subject.on(mousemove, null).on(mouseup, null);
+ dragRestore(dragged && d3.event.target === target);
+ zoomended(dispatch);
+ }
+ }
+ function touchstarted() {
+ var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = ".zoom-" + d3.event.changedTouches[0].identifier, touchmove = "touchmove" + zoomName, touchend = "touchend" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress();
+ started();
+ zoomstarted(dispatch);
+ subject.on(mousedown, null).on(touchstart, started);
+ function relocate() {
+ var touches = d3.touches(that);
+ scale0 = view.k;
+ touches.forEach(function(t) {
+ if (t.identifier in locations0) locations0[t.identifier] = location(t);
+ });
+ return touches;
+ }
+ function started() {
+ var target = d3.event.target;
+ d3.select(target).on(touchmove, moved).on(touchend, ended);
+ targets.push(target);
+ var changed = d3.event.changedTouches;
+ for (var i = 0, n = changed.length; i < n; ++i) {
+ locations0[changed[i].identifier] = null;
+ }
+ var touches = relocate(), now = Date.now();
+ if (touches.length === 1) {
+ if (now - touchtime < 500) {
+ var p = touches[0];
+ zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);
+ d3_eventPreventDefault();
+ }
+ touchtime = now;
+ } else if (touches.length > 1) {
+ var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];
+ distance0 = dx * dx + dy * dy;
+ }
+ }
+ function moved() {
+ var touches = d3.touches(that), p0, l0, p1, l1;
+ d3_selection_interrupt(that);
+ for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
+ p1 = touches[i];
+ if (l1 = locations0[p1.identifier]) {
+ if (l0) break;
+ p0 = p1, l0 = l1;
+ }
+ }
+ if (l1) {
+ var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);
+ p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];
+ l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];
+ scaleTo(scale1 * scale0);
+ }
+ touchtime = null;
+ translateTo(p0, l0);
+ zoomed(dispatch);
+ }
+ function ended() {
+ if (d3.event.touches.length) {
+ var changed = d3.event.changedTouches;
+ for (var i = 0, n = changed.length; i < n; ++i) {
+ delete locations0[changed[i].identifier];
+ }
+ for (var identifier in locations0) {
+ return void relocate();
+ }
+ }
+ d3.selectAll(targets).on(zoomName, null);
+ subject.on(mousedown, mousedowned).on(touchstart, touchstarted);
+ dragRestore();
+ zoomended(dispatch);
+ }
+ }
+ function mousewheeled() {
+ var dispatch = event.of(this, arguments);
+ if (mousewheelTimer) clearTimeout(mousewheelTimer); else translate0 = location(center0 = center || d3.mouse(this)),
+ d3_selection_interrupt(this), zoomstarted(dispatch);
+ mousewheelTimer = setTimeout(function() {
+ mousewheelTimer = null;
+ zoomended(dispatch);
+ }, 50);
+ d3_eventPreventDefault();
+ scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
+ translateTo(center0, translate0);
+ zoomed(dispatch);
+ }
+ function dblclicked() {
+ var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;
+ zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);
+ }
+ return d3.rebind(zoom, event, "on");
+ };
+ var d3_behavior_zoomInfinity = [ 0, Infinity ];
+ var d3_behavior_zoomDelta, d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() {
+ return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);
+ }, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() {
+ return d3.event.wheelDelta;
+ }, "mousewheel") : (d3_behavior_zoomDelta = function() {
+ return -d3.event.detail;
+ }, "MozMousePixelScroll");
+ d3.color = d3_color;
+ function d3_color() {}
+ d3_color.prototype.toString = function() {
+ return this.rgb() + "";
+ };
+ d3.hsl = d3_hsl;
+ function d3_hsl(h, s, l) {
+ return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);
+ }
+ var d3_hslPrototype = d3_hsl.prototype = new d3_color();
+ d3_hslPrototype.brighter = function(k) {
+ k = Math.pow(.7, arguments.length ? k : 1);
+ return new d3_hsl(this.h, this.s, this.l / k);
+ };
+ d3_hslPrototype.darker = function(k) {
+ k = Math.pow(.7, arguments.length ? k : 1);
+ return new d3_hsl(this.h, this.s, k * this.l);
+ };
+ d3_hslPrototype.rgb = function() {
+ return d3_hsl_rgb(this.h, this.s, this.l);
+ };
+ function d3_hsl_rgb(h, s, l) {
+ var m1, m2;
+ h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;
+ s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;
+ l = l < 0 ? 0 : l > 1 ? 1 : l;
+ m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
+ m1 = 2 * l - m2;
+ function v(h) {
+ if (h > 360) h -= 360; else if (h < 0) h += 360;
+ if (h < 60) return m1 + (m2 - m1) * h / 60;
+ if (h < 180) return m2;
+ if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
+ return m1;
+ }
+ function vv(h) {
+ return Math.round(v(h) * 255);
+ }
+ return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
+ }
+ d3.hcl = d3_hcl;
+ function d3_hcl(h, c, l) {
+ return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);
+ }
+ var d3_hclPrototype = d3_hcl.prototype = new d3_color();
+ d3_hclPrototype.brighter = function(k) {
+ return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
+ };
+ d3_hclPrototype.darker = function(k) {
+ return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
+ };
+ d3_hclPrototype.rgb = function() {
+ return d3_hcl_lab(this.h, this.c, this.l).rgb();
+ };
+ function d3_hcl_lab(h, c, l) {
+ if (isNaN(h)) h = 0;
+ if (isNaN(c)) c = 0;
+ return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
+ }
+ d3.lab = d3_lab;
+ function d3_lab(l, a, b) {
+ return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);
+ }
+ var d3_lab_K = 18;
+ var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
+ var d3_labPrototype = d3_lab.prototype = new d3_color();
+ d3_labPrototype.brighter = function(k) {
+ return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
+ };
+ d3_labPrototype.darker = function(k) {
+ return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
+ };
+ d3_labPrototype.rgb = function() {
+ return d3_lab_rgb(this.l, this.a, this.b);
+ };
+ function d3_lab_rgb(l, a, b) {
+ var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
+ x = d3_lab_xyz(x) * d3_lab_X;
+ y = d3_lab_xyz(y) * d3_lab_Y;
+ z = d3_lab_xyz(z) * d3_lab_Z;
+ return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));
+ }
+ function d3_lab_hcl(l, a, b) {
+ return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);
+ }
+ function d3_lab_xyz(x) {
+ return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
+ }
+ function d3_xyz_lab(x) {
+ return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
+ }
+ function d3_xyz_rgb(r) {
+ return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
+ }
+ d3.rgb = d3_rgb;
+ function d3_rgb(r, g, b) {
+ return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);
+ }
+ function d3_rgbNumber(value) {
+ return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);
+ }
+ function d3_rgbString(value) {
+ return d3_rgbNumber(value) + "";
+ }
+ var d3_rgbPrototype = d3_rgb.prototype = new d3_color();
+ d3_rgbPrototype.brighter = function(k) {
+ k = Math.pow(.7, arguments.length ? k : 1);
+ var r = this.r, g = this.g, b = this.b, i = 30;
+ if (!r && !g && !b) return new d3_rgb(i, i, i);
+ if (r && r < i) r = i;
+ if (g && g < i) g = i;
+ if (b && b < i) b = i;
+ return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));
+ };
+ d3_rgbPrototype.darker = function(k) {
+ k = Math.pow(.7, arguments.length ? k : 1);
+ return new d3_rgb(k * this.r, k * this.g, k * this.b);
+ };
+ d3_rgbPrototype.hsl = function() {
+ return d3_rgb_hsl(this.r, this.g, this.b);
+ };
+ d3_rgbPrototype.toString = function() {
+ return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
+ };
+ function d3_rgb_hex(v) {
+ return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);
+ }
+ function d3_rgb_parse(format, rgb, hsl) {
+ var r = 0, g = 0, b = 0, m1, m2, color;
+ m1 = /([a-z]+)\((.*)\)/i.exec(format);
+ if (m1) {
+ m2 = m1[2].split(",");
+ switch (m1[1]) {
+ case "hsl":
+ {
+ return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);
+ }
+
+ case "rgb":
+ {
+ return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));
+ }
+ }
+ }
+ if (color = d3_rgb_names.get(format)) return rgb(color.r, color.g, color.b);
+ if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) {
+ if (format.length === 4) {
+ r = (color & 3840) >> 4;
+ r = r >> 4 | r;
+ g = color & 240;
+ g = g >> 4 | g;
+ b = color & 15;
+ b = b << 4 | b;
+ } else if (format.length === 7) {
+ r = (color & 16711680) >> 16;
+ g = (color & 65280) >> 8;
+ b = color & 255;
+ }
+ }
+ return rgb(r, g, b);
+ }
+ function d3_rgb_hsl(r, g, b) {
+ var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;
+ if (d) {
+ s = l < .5 ? d / (max + min) : d / (2 - max - min);
+ if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;
+ h *= 60;
+ } else {
+ h = NaN;
+ s = l > 0 && l < 1 ? 0 : h;
+ }
+ return new d3_hsl(h, s, l);
+ }
+ function d3_rgb_lab(r, g, b) {
+ r = d3_rgb_xyz(r);
+ g = d3_rgb_xyz(g);
+ b = d3_rgb_xyz(b);
+ var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);
+ return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
+ }
+ function d3_rgb_xyz(r) {
+ return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);
+ }
+ function d3_rgb_parseNumber(c) {
+ var f = parseFloat(c);
+ return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
+ }
+ var d3_rgb_names = d3.map({
+ aliceblue: 15792383,
+ antiquewhite: 16444375,
+ aqua: 65535,
+ aquamarine: 8388564,
+ azure: 15794175,
+ beige: 16119260,
+ bisque: 16770244,
+ black: 0,
+ blanchedalmond: 16772045,
+ blue: 255,
+ blueviolet: 9055202,
+ brown: 10824234,
+ burlywood: 14596231,
+ cadetblue: 6266528,
+ chartreuse: 8388352,
+ chocolate: 13789470,
+ coral: 16744272,
+ cornflowerblue: 6591981,
+ cornsilk: 16775388,
+ crimson: 14423100,
+ cyan: 65535,
+ darkblue: 139,
+ darkcyan: 35723,
+ darkgoldenrod: 12092939,
+ darkgray: 11119017,
+ darkgreen: 25600,
+ darkgrey: 11119017,
+ darkkhaki: 12433259,
+ darkmagenta: 9109643,
+ darkolivegreen: 5597999,
+ darkorange: 16747520,
+ darkorchid: 10040012,
+ darkred: 9109504,
+ darksalmon: 15308410,
+ darkseagreen: 9419919,
+ darkslateblue: 4734347,
+ darkslategray: 3100495,
+ darkslategrey: 3100495,
+ darkturquoise: 52945,
+ darkviolet: 9699539,
+ deeppink: 16716947,
+ deepskyblue: 49151,
+ dimgray: 6908265,
+ dimgrey: 6908265,
+ dodgerblue: 2003199,
+ firebrick: 11674146,
+ floralwhite: 16775920,
+ forestgreen: 2263842,
+ fuchsia: 16711935,
+ gainsboro: 14474460,
+ ghostwhite: 16316671,
+ gold: 16766720,
+ goldenrod: 14329120,
+ gray: 8421504,
+ green: 32768,
+ greenyellow: 11403055,
+ grey: 8421504,
+ honeydew: 15794160,
+ hotpink: 16738740,
+ indianred: 13458524,
+ indigo: 4915330,
+ ivory: 16777200,
+ khaki: 15787660,
+ lavender: 15132410,
+ lavenderblush: 16773365,
+ lawngreen: 8190976,
+ lemonchiffon: 16775885,
+ lightblue: 11393254,
+ lightcoral: 15761536,
+ lightcyan: 14745599,
+ lightgoldenrodyellow: 16448210,
+ lightgray: 13882323,
+ lightgreen: 9498256,
+ lightgrey: 13882323,
+ lightpink: 16758465,
+ lightsalmon: 16752762,
+ lightseagreen: 2142890,
+ lightskyblue: 8900346,
+ lightslategray: 7833753,
+ lightslategrey: 7833753,
+ lightsteelblue: 11584734,
+ lightyellow: 16777184,
+ lime: 65280,
+ limegreen: 3329330,
+ linen: 16445670,
+ magenta: 16711935,
+ maroon: 8388608,
+ mediumaquamarine: 6737322,
+ mediumblue: 205,
+ mediumorchid: 12211667,
+ mediumpurple: 9662683,
+ mediumseagreen: 3978097,
+ mediumslateblue: 8087790,
+ mediumspringgreen: 64154,
+ mediumturquoise: 4772300,
+ mediumvioletred: 13047173,
+ midnightblue: 1644912,
+ mintcream: 16121850,
+ mistyrose: 16770273,
+ moccasin: 16770229,
+ navajowhite: 16768685,
+ navy: 128,
+ oldlace: 16643558,
+ olive: 8421376,
+ olivedrab: 7048739,
+ orange: 16753920,
+ orangered: 16729344,
+ orchid: 14315734,
+ palegoldenrod: 15657130,
+ palegreen: 10025880,
+ paleturquoise: 11529966,
+ palevioletred: 14381203,
+ papayawhip: 16773077,
+ peachpuff: 16767673,
+ peru: 13468991,
+ pink: 16761035,
+ plum: 14524637,
+ powderblue: 11591910,
+ purple: 8388736,
+ red: 16711680,
+ rosybrown: 12357519,
+ royalblue: 4286945,
+ saddlebrown: 9127187,
+ salmon: 16416882,
+ sandybrown: 16032864,
+ seagreen: 3050327,
+ seashell: 16774638,
+ sienna: 10506797,
+ silver: 12632256,
+ skyblue: 8900331,
+ slateblue: 6970061,
+ slategray: 7372944,
+ slategrey: 7372944,
+ snow: 16775930,
+ springgreen: 65407,
+ steelblue: 4620980,
+ tan: 13808780,
+ teal: 32896,
+ thistle: 14204888,
+ tomato: 16737095,
+ turquoise: 4251856,
+ violet: 15631086,
+ wheat: 16113331,
+ white: 16777215,
+ whitesmoke: 16119285,
+ yellow: 16776960,
+ yellowgreen: 10145074
+ });
+ d3_rgb_names.forEach(function(key, value) {
+ d3_rgb_names.set(key, d3_rgbNumber(value));
+ });
+ function d3_functor(v) {
+ return typeof v === "function" ? v : function() {
+ return v;
+ };
+ }
+ d3.functor = d3_functor;
+ function d3_identity(d) {
+ return d;
+ }
+ d3.xhr = d3_xhrType(d3_identity);
+ function d3_xhrType(response) {
+ return function(url, mimeType, callback) {
+ if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType,
+ mimeType = null;
+ return d3_xhr(url, mimeType, response, callback);
+ };
+ }
+ function d3_xhr(url, mimeType, response, callback) {
+ var xhr = {}, dispatch = d3.dispatch("beforesend", "progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null;
+ if (d3_window.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest();
+ "onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {
+ request.readyState > 3 && respond();
+ };
+ function respond() {
+ var status = request.status, result;
+ if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {
+ try {
+ result = response.call(xhr, request);
+ } catch (e) {
+ dispatch.error.call(xhr, e);
+ return;
+ }
+ dispatch.load.call(xhr, result);
+ } else {
+ dispatch.error.call(xhr, request);
+ }
+ }
+ request.onprogress = function(event) {
+ var o = d3.event;
+ d3.event = event;
+ try {
+ dispatch.progress.call(xhr, request);
+ } finally {
+ d3.event = o;
+ }
+ };
+ xhr.header = function(name, value) {
+ name = (name + "").toLowerCase();
+ if (arguments.length < 2) return headers[name];
+ if (value == null) delete headers[name]; else headers[name] = value + "";
+ return xhr;
+ };
+ xhr.mimeType = function(value) {
+ if (!arguments.length) return mimeType;
+ mimeType = value == null ? null : value + "";
+ return xhr;
+ };
+ xhr.responseType = function(value) {
+ if (!arguments.length) return responseType;
+ responseType = value;
+ return xhr;
+ };
+ xhr.response = function(value) {
+ response = value;
+ return xhr;
+ };
+ [ "get", "post" ].forEach(function(method) {
+ xhr[method] = function() {
+ return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));
+ };
+ });
+ xhr.send = function(method, data, callback) {
+ if (arguments.length === 2 && typeof data === "function") callback = data, data = null;
+ request.open(method, url, true);
+ if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*";
+ if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);
+ if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);
+ if (responseType != null) request.responseType = responseType;
+ if (callback != null) xhr.on("error", callback).on("load", function(request) {
+ callback(null, request);
+ });
+ dispatch.beforesend.call(xhr, request);
+ request.send(data == null ? null : data);
+ return xhr;
+ };
+ xhr.abort = function() {
+ request.abort();
+ return xhr;
+ };
+ d3.rebind(xhr, dispatch, "on");
+ return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));
+ }
+ function d3_xhr_fixCallback(callback) {
+ return callback.length === 1 ? function(error, request) {
+ callback(error == null ? request : null);
+ } : callback;
+ }
+ function d3_xhrHasResponse(request) {
+ var type = request.responseType;
+ return type && type !== "text" ? request.response : request.responseText;
+ }
+ d3.dsv = function(delimiter, mimeType) {
+ var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0);
+ function dsv(url, row, callback) {
+ if (arguments.length < 3) callback = row, row = null;
+ var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);
+ xhr.row = function(_) {
+ return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;
+ };
+ return xhr;
+ }
+ function response(request) {
+ return dsv.parse(request.responseText);
+ }
+ function typedResponse(f) {
+ return function(request) {
+ return dsv.parse(request.responseText, f);
+ };
+ }
+ dsv.parse = function(text, f) {
+ var o;
+ return dsv.parseRows(text, function(row, i) {
+ if (o) return o(row, i - 1);
+ var a = new Function("d", "return {" + row.map(function(name, i) {
+ return JSON.stringify(name) + ": d[" + i + "]";
+ }).join(",") + "}");
+ o = f ? function(row, i) {
+ return f(a(row), i);
+ } : a;
+ });
+ };
+ dsv.parseRows = function(text, f) {
+ var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;
+ function token() {
+ if (I >= N) return EOF;
+ if (eol) return eol = false, EOL;
+ var j = I;
+ if (text.charCodeAt(j) === 34) {
+ var i = j;
+ while (i++ < N) {
+ if (text.charCodeAt(i) === 34) {
+ if (text.charCodeAt(i + 1) !== 34) break;
+ ++i;
+ }
+ }
+ I = i + 2;
+ var c = text.charCodeAt(i + 1);
+ if (c === 13) {
+ eol = true;
+ if (text.charCodeAt(i + 2) === 10) ++I;
+ } else if (c === 10) {
+ eol = true;
+ }
+ return text.slice(j + 1, i).replace(/""/g, '"');
+ }
+ while (I < N) {
+ var c = text.charCodeAt(I++), k = 1;
+ if (c === 10) eol = true; else if (c === 13) {
+ eol = true;
+ if (text.charCodeAt(I) === 10) ++I, ++k;
+ } else if (c !== delimiterCode) continue;
+ return text.slice(j, I - k);
+ }
+ return text.slice(j);
+ }
+ while ((t = token()) !== EOF) {
+ var a = [];
+ while (t !== EOL && t !== EOF) {
+ a.push(t);
+ t = token();
+ }
+ if (f && (a = f(a, n++)) == null) continue;
+ rows.push(a);
+ }
+ return rows;
+ };
+ dsv.format = function(rows) {
+ if (Array.isArray(rows[0])) return dsv.formatRows(rows);
+ var fieldSet = new d3_Set(), fields = [];
+ rows.forEach(function(row) {
+ for (var field in row) {
+ if (!fieldSet.has(field)) {
+ fields.push(fieldSet.add(field));
+ }
+ }
+ });
+ return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {
+ return fields.map(function(field) {
+ return formatValue(row[field]);
+ }).join(delimiter);
+ })).join("\n");
+ };
+ dsv.formatRows = function(rows) {
+ return rows.map(formatRow).join("\n");
+ };
+ function formatRow(row) {
+ return row.map(formatValue).join(delimiter);
+ }
+ function formatValue(text) {
+ return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
+ }
+ return dsv;
+ };
+ d3.csv = d3.dsv(",", "text/csv");
+ d3.tsv = d3.dsv(" ", "text/tab-separated-values");
+ var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_active, d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) {
+ setTimeout(callback, 17);
+ };
+ d3.timer = function(callback, delay, then) {
+ var n = arguments.length;
+ if (n < 2) delay = 0;
+ if (n < 3) then = Date.now();
+ var time = then + delay, timer = {
+ c: callback,
+ t: time,
+ f: false,
+ n: null
+ };
+ if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;
+ d3_timer_queueTail = timer;
+ if (!d3_timer_interval) {
+ d3_timer_timeout = clearTimeout(d3_timer_timeout);
+ d3_timer_interval = 1;
+ d3_timer_frame(d3_timer_step);
+ }
+ };
+ function d3_timer_step() {
+ var now = d3_timer_mark(), delay = d3_timer_sweep() - now;
+ if (delay > 24) {
+ if (isFinite(delay)) {
+ clearTimeout(d3_timer_timeout);
+ d3_timer_timeout = setTimeout(d3_timer_step, delay);
+ }
+ d3_timer_interval = 0;
+ } else {
+ d3_timer_interval = 1;
+ d3_timer_frame(d3_timer_step);
+ }
+ }
+ d3.timer.flush = function() {
+ d3_timer_mark();
+ d3_timer_sweep();
+ };
+ function d3_timer_mark() {
+ var now = Date.now();
+ d3_timer_active = d3_timer_queueHead;
+ while (d3_timer_active) {
+ if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t);
+ d3_timer_active = d3_timer_active.n;
+ }
+ return now;
+ }
+ function d3_timer_sweep() {
+ var t0, t1 = d3_timer_queueHead, time = Infinity;
+ while (t1) {
+ if (t1.f) {
+ t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;
+ } else {
+ if (t1.t < time) time = t1.t;
+ t1 = (t0 = t1).n;
+ }
+ }
+ d3_timer_queueTail = t0;
+ return time;
+ }
+ function d3_format_precision(x, p) {
+ return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);
+ }
+ d3.round = function(x, n) {
+ return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);
+ };
+ var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix);
+ d3.formatPrefix = function(value, precision) {
+ var i = 0;
+ if (value) {
+ if (value < 0) value *= -1;
+ if (precision) value = d3.round(value, d3_format_precision(value, precision));
+ i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
+ i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));
+ }
+ return d3_formatPrefixes[8 + i / 3];
+ };
+ function d3_formatPrefix(d, i) {
+ var k = Math.pow(10, abs(8 - i) * 3);
+ return {
+ scale: i > 8 ? function(d) {
+ return d / k;
+ } : function(d) {
+ return d * k;
+ },
+ symbol: d
+ };
+ }
+ function d3_locale_numberFormat(locale) {
+ var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {
+ var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;
+ while (i > 0 && g > 0) {
+ if (length + g + 1 > width) g = Math.max(1, width - length);
+ t.push(value.substring(i -= g, i + g));
+ if ((length += g + 1) > width) break;
+ g = locale_grouping[j = (j + 1) % locale_grouping.length];
+ }
+ return t.reverse().join(locale_thousands);
+ } : d3_identity;
+ return function(specifier) {
+ var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "-", symbol = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = "", suffix = "", integer = false, exponent = true;
+ if (precision) precision = +precision.substring(1);
+ if (zfill || fill === "0" && align === "=") {
+ zfill = fill = "0";
+ align = "=";
+ }
+ switch (type) {
+ case "n":
+ comma = true;
+ type = "g";
+ break;
+
+ case "%":
+ scale = 100;
+ suffix = "%";
+ type = "f";
+ break;
+
+ case "p":
+ scale = 100;
+ suffix = "%";
+ type = "r";
+ break;
+
+ case "b":
+ case "o":
+ case "x":
+ case "X":
+ if (symbol === "#") prefix = "0" + type.toLowerCase();
+
+ case "c":
+ exponent = false;
+
+ case "d":
+ integer = true;
+ precision = 0;
+ break;
+
+ case "s":
+ scale = -1;
+ type = "r";
+ break;
+ }
+ if (symbol === "$") prefix = locale_currency[0], suffix = locale_currency[1];
+ if (type == "r" && !precision) type = "g";
+ if (precision != null) {
+ if (type == "g") precision = Math.max(1, Math.min(21, precision)); else if (type == "e" || type == "f") precision = Math.max(0, Math.min(20, precision));
+ }
+ type = d3_format_types.get(type) || d3_format_typeDefault;
+ var zcomma = zfill && comma;
+ return function(value) {
+ var fullSuffix = suffix;
+ if (integer && value % 1) return "";
+ var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign === "-" ? "" : sign;
+ if (scale < 0) {
+ var unit = d3.formatPrefix(value, precision);
+ value = unit.scale(value);
+ fullSuffix = unit.symbol + suffix;
+ } else {
+ value *= scale;
+ }
+ value = type(value, precision);
+ var i = value.lastIndexOf("."), before, after;
+ if (i < 0) {
+ var j = exponent ? value.lastIndexOf("e") : -1;
+ if (j < 0) before = value, after = ""; else before = value.substring(0, j), after = value.substring(j);
+ } else {
+ before = value.substring(0, i);
+ after = locale_decimal + value.substring(i + 1);
+ }
+ if (!zfill && comma) before = formatGroup(before, Infinity);
+ var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : "";
+ if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);
+ negative += prefix;
+ value = before + after;
+ return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;
+ };
+ };
+ }
+ var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i;
+ var d3_format_types = d3.map({
+ b: function(x) {
+ return x.toString(2);
+ },
+ c: function(x) {
+ return String.fromCharCode(x);
+ },
+ o: function(x) {
+ return x.toString(8);
+ },
+ x: function(x) {
+ return x.toString(16);
+ },
+ X: function(x) {
+ return x.toString(16).toUpperCase();
+ },
+ g: function(x, p) {
+ return x.toPrecision(p);
+ },
+ e: function(x, p) {
+ return x.toExponential(p);
+ },
+ f: function(x, p) {
+ return x.toFixed(p);
+ },
+ r: function(x, p) {
+ return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));
+ }
+ });
+ function d3_format_typeDefault(x) {
+ return x + "";
+ }
+ var d3_time = d3.time = {}, d3_date = Date;
+ function d3_date_utc() {
+ this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
+ }
+ d3_date_utc.prototype = {
+ getDate: function() {
+ return this._.getUTCDate();
+ },
+ getDay: function() {
+ return this._.getUTCDay();
+ },
+ getFullYear: function() {
+ return this._.getUTCFullYear();
+ },
+ getHours: function() {
+ return this._.getUTCHours();
+ },
+ getMilliseconds: function() {
+ return this._.getUTCMilliseconds();
+ },
+ getMinutes: function() {
+ return this._.getUTCMinutes();
+ },
+ getMonth: function() {
+ return this._.getUTCMonth();
+ },
+ getSeconds: function() {
+ return this._.getUTCSeconds();
+ },
+ getTime: function() {
+ return this._.getTime();
+ },
+ getTimezoneOffset: function() {
+ return 0;
+ },
+ valueOf: function() {
+ return this._.valueOf();
+ },
+ setDate: function() {
+ d3_time_prototype.setUTCDate.apply(this._, arguments);
+ },
+ setDay: function() {
+ d3_time_prototype.setUTCDay.apply(this._, arguments);
+ },
+ setFullYear: function() {
+ d3_time_prototype.setUTCFullYear.apply(this._, arguments);
+ },
+ setHours: function() {
+ d3_time_prototype.setUTCHours.apply(this._, arguments);
+ },
+ setMilliseconds: function() {
+ d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);
+ },
+ setMinutes: function() {
+ d3_time_prototype.setUTCMinutes.apply(this._, arguments);
+ },
+ setMonth: function() {
+ d3_time_prototype.setUTCMonth.apply(this._, arguments);
+ },
+ setSeconds: function() {
+ d3_time_prototype.setUTCSeconds.apply(this._, arguments);
+ },
+ setTime: function() {
+ d3_time_prototype.setTime.apply(this._, arguments);
+ }
+ };
+ var d3_time_prototype = Date.prototype;
+ function d3_time_interval(local, step, number) {
+ function round(date) {
+ var d0 = local(date), d1 = offset(d0, 1);
+ return date - d0 < d1 - date ? d0 : d1;
+ }
+ function ceil(date) {
+ step(date = local(new d3_date(date - 1)), 1);
+ return date;
+ }
+ function offset(date, k) {
+ step(date = new d3_date(+date), k);
+ return date;
+ }
+ function range(t0, t1, dt) {
+ var time = ceil(t0), times = [];
+ if (dt > 1) {
+ while (time < t1) {
+ if (!(number(time) % dt)) times.push(new Date(+time));
+ step(time, 1);
+ }
+ } else {
+ while (time < t1) times.push(new Date(+time)), step(time, 1);
+ }
+ return times;
+ }
+ function range_utc(t0, t1, dt) {
+ try {
+ d3_date = d3_date_utc;
+ var utc = new d3_date_utc();
+ utc._ = t0;
+ return range(utc, t1, dt);
+ } finally {
+ d3_date = Date;
+ }
+ }
+ local.floor = local;
+ local.round = round;
+ local.ceil = ceil;
+ local.offset = offset;
+ local.range = range;
+ var utc = local.utc = d3_time_interval_utc(local);
+ utc.floor = utc;
+ utc.round = d3_time_interval_utc(round);
+ utc.ceil = d3_time_interval_utc(ceil);
+ utc.offset = d3_time_interval_utc(offset);
+ utc.range = range_utc;
+ return local;
+ }
+ function d3_time_interval_utc(method) {
+ return function(date, k) {
+ try {
+ d3_date = d3_date_utc;
+ var utc = new d3_date_utc();
+ utc._ = date;
+ return method(utc, k)._;
+ } finally {
+ d3_date = Date;
+ }
+ };
+ }
+ d3_time.year = d3_time_interval(function(date) {
+ date = d3_time.day(date);
+ date.setMonth(0, 1);
+ return date;
+ }, function(date, offset) {
+ date.setFullYear(date.getFullYear() + offset);
+ }, function(date) {
+ return date.getFullYear();
+ });
+ d3_time.years = d3_time.year.range;
+ d3_time.years.utc = d3_time.year.utc.range;
+ d3_time.day = d3_time_interval(function(date) {
+ var day = new d3_date(2e3, 0);
+ day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
+ return day;
+ }, function(date, offset) {
+ date.setDate(date.getDate() + offset);
+ }, function(date) {
+ return date.getDate() - 1;
+ });
+ d3_time.days = d3_time.day.range;
+ d3_time.days.utc = d3_time.day.utc.range;
+ d3_time.dayOfYear = function(date) {
+ var year = d3_time.year(date);
+ return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);
+ };
+ [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ].forEach(function(day, i) {
+ i = 7 - i;
+ var interval = d3_time[day] = d3_time_interval(function(date) {
+ (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);
+ return date;
+ }, function(date, offset) {
+ date.setDate(date.getDate() + Math.floor(offset) * 7);
+ }, function(date) {
+ var day = d3_time.year(date).getDay();
+ return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);
+ });
+ d3_time[day + "s"] = interval.range;
+ d3_time[day + "s"].utc = interval.utc.range;
+ d3_time[day + "OfYear"] = function(date) {
+ var day = d3_time.year(date).getDay();
+ return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);
+ };
+ });
+ d3_time.week = d3_time.sunday;
+ d3_time.weeks = d3_time.sunday.range;
+ d3_time.weeks.utc = d3_time.sunday.utc.range;
+ d3_time.weekOfYear = d3_time.sundayOfYear;
+ function d3_locale_timeFormat(locale) {
+ var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;
+ function d3_time_format(template) {
+ var n = template.length;
+ function format(date) {
+ var string = [], i = -1, j = 0, c, p, f;
+ while (++i < n) {
+ if (template.charCodeAt(i) === 37) {
+ string.push(template.slice(j, i));
+ if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);
+ if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p);
+ string.push(c);
+ j = i + 1;
+ }
+ }
+ string.push(template.slice(j, i));
+ return string.join("");
+ }
+ format.parse = function(string) {
+ var d = {
+ y: 1900,
+ m: 0,
+ d: 1,
+ H: 0,
+ M: 0,
+ S: 0,
+ L: 0,
+ Z: null
+ }, i = d3_time_parse(d, template, string, 0);
+ if (i != string.length) return null;
+ if ("p" in d) d.H = d.H % 12 + d.p * 12;
+ var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();
+ if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) {
+ date.setFullYear(d.y, 0, 1);
+ date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);
+ } else date.setFullYear(d.y, d.m, d.d);
+ date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);
+ return localZ ? date._ : date;
+ };
+ format.toString = function() {
+ return template;
+ };
+ return format;
+ }
+ function d3_time_parse(date, template, string, j) {
+ var c, p, t, i = 0, n = template.length, m = string.length;
+ while (i < n) {
+ if (j >= m) return -1;
+ c = template.charCodeAt(i++);
+ if (c === 37) {
+ t = template.charAt(i++);
+ p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];
+ if (!p || (j = p(date, string, j)) < 0) return -1;
+ } else if (c != string.charCodeAt(j++)) {
+ return -1;
+ }
+ }
+ return j;
+ }
+ d3_time_format.utc = function(template) {
+ var local = d3_time_format(template);
+ function format(date) {
+ try {
+ d3_date = d3_date_utc;
+ var utc = new d3_date();
+ utc._ = date;
+ return local(utc);
+ } finally {
+ d3_date = Date;
+ }
+ }
+ format.parse = function(string) {
+ try {
+ d3_date = d3_date_utc;
+ var date = local.parse(string);
+ return date && date._;
+ } finally {
+ d3_date = Date;
+ }
+ };
+ format.toString = local.toString;
+ return format;
+ };
+ d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;
+ var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);
+ locale_periods.forEach(function(p, i) {
+ d3_time_periodLookup.set(p.toLowerCase(), i);
+ });
+ var d3_time_formats = {
+ a: function(d) {
+ return locale_shortDays[d.getDay()];
+ },
+ A: function(d) {
+ return locale_days[d.getDay()];
+ },
+ b: function(d) {
+ return locale_shortMonths[d.getMonth()];
+ },
+ B: function(d) {
+ return locale_months[d.getMonth()];
+ },
+ c: d3_time_format(locale_dateTime),
+ d: function(d, p) {
+ return d3_time_formatPad(d.getDate(), p, 2);
+ },
+ e: function(d, p) {
+ return d3_time_formatPad(d.getDate(), p, 2);
+ },
+ H: function(d, p) {
+ return d3_time_formatPad(d.getHours(), p, 2);
+ },
+ I: function(d, p) {
+ return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);
+ },
+ j: function(d, p) {
+ return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);
+ },
+ L: function(d, p) {
+ return d3_time_formatPad(d.getMilliseconds(), p, 3);
+ },
+ m: function(d, p) {
+ return d3_time_formatPad(d.getMonth() + 1, p, 2);
+ },
+ M: function(d, p) {
+ return d3_time_formatPad(d.getMinutes(), p, 2);
+ },
+ p: function(d) {
+ return locale_periods[+(d.getHours() >= 12)];
+ },
+ S: function(d, p) {
+ return d3_time_formatPad(d.getSeconds(), p, 2);
+ },
+ U: function(d, p) {
+ return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);
+ },
+ w: function(d) {
+ return d.getDay();
+ },
+ W: function(d, p) {
+ return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);
+ },
+ x: d3_time_format(locale_date),
+ X: d3_time_format(locale_time),
+ y: function(d, p) {
+ return d3_time_formatPad(d.getFullYear() % 100, p, 2);
+ },
+ Y: function(d, p) {
+ return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);
+ },
+ Z: d3_time_zone,
+ "%": function() {
+ return "%";
+ }
+ };
+ var d3_time_parsers = {
+ a: d3_time_parseWeekdayAbbrev,
+ A: d3_time_parseWeekday,
+ b: d3_time_parseMonthAbbrev,
+ B: d3_time_parseMonth,
+ c: d3_time_parseLocaleFull,
+ d: d3_time_parseDay,
+ e: d3_time_parseDay,
+ H: d3_time_parseHour24,
+ I: d3_time_parseHour24,
+ j: d3_time_parseDayOfYear,
+ L: d3_time_parseMilliseconds,
+ m: d3_time_parseMonthNumber,
+ M: d3_time_parseMinutes,
+ p: d3_time_parseAmPm,
+ S: d3_time_parseSeconds,
+ U: d3_time_parseWeekNumberSunday,
+ w: d3_time_parseWeekdayNumber,
+ W: d3_time_parseWeekNumberMonday,
+ x: d3_time_parseLocaleDate,
+ X: d3_time_parseLocaleTime,
+ y: d3_time_parseYear,
+ Y: d3_time_parseFullYear,
+ Z: d3_time_parseZone,
+ "%": d3_time_parseLiteralPercent
+ };
+ function d3_time_parseWeekdayAbbrev(date, string, i) {
+ d3_time_dayAbbrevRe.lastIndex = 0;
+ var n = d3_time_dayAbbrevRe.exec(string.slice(i));
+ return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
+ }
+ function d3_time_parseWeekday(date, string, i) {
+ d3_time_dayRe.lastIndex = 0;
+ var n = d3_time_dayRe.exec(string.slice(i));
+ return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
+ }
+ function d3_time_parseMonthAbbrev(date, string, i) {
+ d3_time_monthAbbrevRe.lastIndex = 0;
+ var n = d3_time_monthAbbrevRe.exec(string.slice(i));
+ return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
+ }
+ function d3_time_parseMonth(date, string, i) {
+ d3_time_monthRe.lastIndex = 0;
+ var n = d3_time_monthRe.exec(string.slice(i));
+ return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
+ }
+ function d3_time_parseLocaleFull(date, string, i) {
+ return d3_time_parse(date, d3_time_formats.c.toString(), string, i);
+ }
+ function d3_time_parseLocaleDate(date, string, i) {
+ return d3_time_parse(date, d3_time_formats.x.toString(), string, i);
+ }
+ function d3_time_parseLocaleTime(date, string, i) {
+ return d3_time_parse(date, d3_time_formats.X.toString(), string, i);
+ }
+ function d3_time_parseAmPm(date, string, i) {
+ var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());
+ return n == null ? -1 : (date.p = n, i);
+ }
+ return d3_time_format;
+ }
+ var d3_time_formatPads = {
+ "-": "",
+ _: " ",
+ "0": "0"
+ }, d3_time_numberRe = /^\s*\d+/, d3_time_percentRe = /^%/;
+ function d3_time_formatPad(value, fill, width) {
+ var sign = value < 0 ? "-" : "", string = (sign ? -value : value) + "", length = string.length;
+ return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);
+ }
+ function d3_time_formatRe(names) {
+ return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i");
+ }
+ function d3_time_formatLookup(names) {
+ var map = new d3_Map(), i = -1, n = names.length;
+ while (++i < n) map.set(names[i].toLowerCase(), i);
+ return map;
+ }
+ function d3_time_parseWeekdayNumber(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 1));
+ return n ? (date.w = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseWeekNumberSunday(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i));
+ return n ? (date.U = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseWeekNumberMonday(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i));
+ return n ? (date.W = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseFullYear(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 4));
+ return n ? (date.y = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseYear(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 2));
+ return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;
+ }
+ function d3_time_parseZone(date, string, i) {
+ return /^[+-]\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string,
+ i + 5) : -1;
+ }
+ function d3_time_expandYear(d) {
+ return d + (d > 68 ? 1900 : 2e3);
+ }
+ function d3_time_parseMonthNumber(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 2));
+ return n ? (date.m = n[0] - 1, i + n[0].length) : -1;
+ }
+ function d3_time_parseDay(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 2));
+ return n ? (date.d = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseDayOfYear(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 3));
+ return n ? (date.j = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseHour24(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 2));
+ return n ? (date.H = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseMinutes(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 2));
+ return n ? (date.M = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseSeconds(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 2));
+ return n ? (date.S = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_parseMilliseconds(date, string, i) {
+ d3_time_numberRe.lastIndex = 0;
+ var n = d3_time_numberRe.exec(string.slice(i, i + 3));
+ return n ? (date.L = +n[0], i + n[0].length) : -1;
+ }
+ function d3_time_zone(d) {
+ var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = abs(z) / 60 | 0, zm = abs(z) % 60;
+ return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2);
+ }
+ function d3_time_parseLiteralPercent(date, string, i) {
+ d3_time_percentRe.lastIndex = 0;
+ var n = d3_time_percentRe.exec(string.slice(i, i + 1));
+ return n ? i + n[0].length : -1;
+ }
+ function d3_time_formatMulti(formats) {
+ var n = formats.length, i = -1;
+ while (++i < n) formats[i][0] = this(formats[i][0]);
+ return function(date) {
+ var i = 0, f = formats[i];
+ while (!f[1](date)) f = formats[++i];
+ return f[0](date);
+ };
+ }
+ d3.locale = function(locale) {
+ return {
+ numberFormat: d3_locale_numberFormat(locale),
+ timeFormat: d3_locale_timeFormat(locale)
+ };
+ };
+ var d3_locale_enUS = d3.locale({
+ decimal: ".",
+ thousands: ",",
+ grouping: [ 3 ],
+ currency: [ "$", "" ],
+ dateTime: "%a %b %e %X %Y",
+ date: "%m/%d/%Y",
+ time: "%H:%M:%S",
+ periods: [ "AM", "PM" ],
+ days: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
+ shortDays: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
+ months: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ],
+ shortMonths: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]
+ });
+ d3.format = d3_locale_enUS.numberFormat;
+ d3.geo = {};
+ function d3_adder() {}
+ d3_adder.prototype = {
+ s: 0,
+ t: 0,
+ add: function(y) {
+ d3_adderSum(y, this.t, d3_adderTemp);
+ d3_adderSum(d3_adderTemp.s, this.s, this);
+ if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;
+ },
+ reset: function() {
+ this.s = this.t = 0;
+ },
+ valueOf: function() {
+ return this.s;
+ }
+ };
+ var d3_adderTemp = new d3_adder();
+ function d3_adderSum(a, b, o) {
+ var x = o.s = a + b, bv = x - a, av = x - bv;
+ o.t = a - av + (b - bv);
+ }
+ d3.geo.stream = function(object, listener) {
+ if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {
+ d3_geo_streamObjectType[object.type](object, listener);
+ } else {
+ d3_geo_streamGeometry(object, listener);
+ }
+ };
+ function d3_geo_streamGeometry(geometry, listener) {
+ if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {
+ d3_geo_streamGeometryType[geometry.type](geometry, listener);
+ }
+ }
+ var d3_geo_streamObjectType = {
+ Feature: function(feature, listener) {
+ d3_geo_streamGeometry(feature.geometry, listener);
+ },
+ FeatureCollection: function(object, listener) {
+ var features = object.features, i = -1, n = features.length;
+ while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);
+ }
+ };
+ var d3_geo_streamGeometryType = {
+ Sphere: function(object, listener) {
+ listener.sphere();
+ },
+ Point: function(object, listener) {
+ object = object.coordinates;
+ listener.point(object[0], object[1], object[2]);
+ },
+ MultiPoint: function(object, listener) {
+ var coordinates = object.coordinates, i = -1, n = coordinates.length;
+ while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);
+ },
+ LineString: function(object, listener) {
+ d3_geo_streamLine(object.coordinates, listener, 0);
+ },
+ MultiLineString: function(object, listener) {
+ var coordinates = object.coordinates, i = -1, n = coordinates.length;
+ while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);
+ },
+ Polygon: function(object, listener) {
+ d3_geo_streamPolygon(object.coordinates, listener);
+ },
+ MultiPolygon: function(object, listener) {
+ var coordinates = object.coordinates, i = -1, n = coordinates.length;
+ while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);
+ },
+ GeometryCollection: function(object, listener) {
+ var geometries = object.geometries, i = -1, n = geometries.length;
+ while (++i < n) d3_geo_streamGeometry(geometries[i], listener);
+ }
+ };
+ function d3_geo_streamLine(coordinates, listener, closed) {
+ var i = -1, n = coordinates.length - closed, coordinate;
+ listener.lineStart();
+ while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);
+ listener.lineEnd();
+ }
+ function d3_geo_streamPolygon(coordinates, listener) {
+ var i = -1, n = coordinates.length;
+ listener.polygonStart();
+ while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);
+ listener.polygonEnd();
+ }
+ d3.geo.area = function(object) {
+ d3_geo_areaSum = 0;
+ d3.geo.stream(object, d3_geo_area);
+ return d3_geo_areaSum;
+ };
+ var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();
+ var d3_geo_area = {
+ sphere: function() {
+ d3_geo_areaSum += 4 * π;
+ },
+ point: d3_noop,
+ lineStart: d3_noop,
+ lineEnd: d3_noop,
+ polygonStart: function() {
+ d3_geo_areaRingSum.reset();
+ d3_geo_area.lineStart = d3_geo_areaRingStart;
+ },
+ polygonEnd: function() {
+ var area = 2 * d3_geo_areaRingSum;
+ d3_geo_areaSum += area < 0 ? 4 * π + area : area;
+ d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
+ }
+ };
+ function d3_geo_areaRingStart() {
+ var λ00, φ00, λ0, cosφ0, sinφ0;
+ d3_geo_area.point = function(λ, φ) {
+ d3_geo_area.point = nextPoint;
+ λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4),
+ sinφ0 = Math.sin(φ);
+ };
+ function nextPoint(λ, φ) {
+ λ *= d3_radians;
+ φ = φ * d3_radians / 2 + π / 4;
+ var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);
+ d3_geo_areaRingSum.add(Math.atan2(v, u));
+ λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
+ }
+ d3_geo_area.lineEnd = function() {
+ nextPoint(λ00, φ00);
+ };
+ }
+ function d3_geo_cartesian(spherical) {
+ var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);
+ return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];
+ }
+ function d3_geo_cartesianDot(a, b) {
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
+ }
+ function d3_geo_cartesianCross(a, b) {
+ return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];
+ }
+ function d3_geo_cartesianAdd(a, b) {
+ a[0] += b[0];
+ a[1] += b[1];
+ a[2] += b[2];
+ }
+ function d3_geo_cartesianScale(vector, k) {
+ return [ vector[0] * k, vector[1] * k, vector[2] * k ];
+ }
+ function d3_geo_cartesianNormalize(d) {
+ var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
+ d[0] /= l;
+ d[1] /= l;
+ d[2] /= l;
+ }
+ function d3_geo_spherical(cartesian) {
+ return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];
+ }
+ function d3_geo_sphericalEqual(a, b) {
+ return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;
+ }
+ d3.geo.bounds = function() {
+ var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;
+ var bound = {
+ point: point,
+ lineStart: lineStart,
+ lineEnd: lineEnd,
+ polygonStart: function() {
+ bound.point = ringPoint;
+ bound.lineStart = ringStart;
+ bound.lineEnd = ringEnd;
+ dλSum = 0;
+ d3_geo_area.polygonStart();
+ },
+ polygonEnd: function() {
+ d3_geo_area.polygonEnd();
+ bound.point = point;
+ bound.lineStart = lineStart;
+ bound.lineEnd = lineEnd;
+ if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;
+ range[0] = λ0, range[1] = λ1;
+ }
+ };
+ function point(λ, φ) {
+ ranges.push(range = [ λ0 = λ, λ1 = λ ]);
+ if (φ < φ0) φ0 = φ;
+ if (φ > φ1) φ1 = φ;
+ }
+ function linePoint(λ, φ) {
+ var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);
+ if (p0) {
+ var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);
+ d3_geo_cartesianNormalize(inflection);
+ inflection = d3_geo_spherical(inflection);
+ var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;
+ if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
+ var φi = inflection[1] * d3_degrees;
+ if (φi > φ1) φ1 = φi;
+ } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
+ var φi = -inflection[1] * d3_degrees;
+ if (φi < φ0) φ0 = φi;
+ } else {
+ if (φ < φ0) φ0 = φ;
+ if (φ > φ1) φ1 = φ;
+ }
+ if (antimeridian) {
+ if (λ < λ_) {
+ if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
+ } else {
+ if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
+ }
+ } else {
+ if (λ1 >= λ0) {
+ if (λ < λ0) λ0 = λ;
+ if (λ > λ1) λ1 = λ;
+ } else {
+ if (λ > λ_) {
+ if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
+ } else {
+ if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
+ }
+ }
+ }
+ } else {
+ point(λ, φ);
+ }
+ p0 = p, λ_ = λ;
+ }
+ function lineStart() {
+ bound.point = linePoint;
+ }
+ function lineEnd() {
+ range[0] = λ0, range[1] = λ1;
+ bound.point = point;
+ p0 = null;
+ }
+ function ringPoint(λ, φ) {
+ if (p0) {
+ var dλ = λ - λ_;
+ dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;
+ } else λ__ = λ, φ__ = φ;
+ d3_geo_area.point(λ, φ);
+ linePoint(λ, φ);
+ }
+ function ringStart() {
+ d3_geo_area.lineStart();
+ }
+ function ringEnd() {
+ ringPoint(λ__, φ__);
+ d3_geo_area.lineEnd();
+ if (abs(dλSum) > ε) λ0 = -(λ1 = 180);
+ range[0] = λ0, range[1] = λ1;
+ p0 = null;
+ }
+ function angle(λ0, λ1) {
+ return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;
+ }
+ function compareRanges(a, b) {
+ return a[0] - b[0];
+ }
+ function withinRange(x, range) {
+ return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;
+ }
+ return function(feature) {
+ φ1 = λ1 = -(λ0 = φ0 = Infinity);
+ ranges = [];
+ d3.geo.stream(feature, bound);
+ var n = ranges.length;
+ if (n) {
+ ranges.sort(compareRanges);
+ for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {
+ b = ranges[i];
+ if (withinRange(b[0], a) || withinRange(b[1], a)) {
+ if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
+ if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
+ } else {
+ merged.push(a = b);
+ }
+ }
+ var best = -Infinity, dλ;
+ for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {
+ b = merged[i];
+ if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];
+ }
+ }
+ ranges = range = null;
+ return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];
+ };
+ }();
+ d3.geo.centroid = function(object) {
+ d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
+ d3.geo.stream(object, d3_geo_centroid);
+ var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;
+ if (m < ε2) {
+ x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;
+ if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;
+ m = x * x + y * y + z * z;
+ if (m < ε2) return [ NaN, NaN ];
+ }
+ return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];
+ };
+ var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;
+ var d3_geo_centroid = {
+ sphere: d3_noop,
+ point: d3_geo_centroidPoint,
+ lineStart: d3_geo_centroidLineStart,
+ lineEnd: d3_geo_centroidLineEnd,
+ polygonStart: function() {
+ d3_geo_centroid.lineStart = d3_geo_centroidRingStart;
+ },
+ polygonEnd: function() {
+ d3_geo_centroid.lineStart = d3_geo_centroidLineStart;
+ }
+ };
+ function d3_geo_centroidPoint(λ, φ) {
+ λ *= d3_radians;
+ var cosφ = Math.cos(φ *= d3_radians);
+ d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));
+ }
+ function d3_geo_centroidPointXYZ(x, y, z) {
+ ++d3_geo_centroidW0;
+ d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;
+ d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;
+ d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;
+ }
+ function d3_geo_centroidLineStart() {
+ var x0, y0, z0;
+ d3_geo_centroid.point = function(λ, φ) {
+ λ *= d3_radians;
+ var cosφ = Math.cos(φ *= d3_radians);
+ x0 = cosφ * Math.cos(λ);
+ y0 = cosφ * Math.sin(λ);
+ z0 = Math.sin(φ);
+ d3_geo_centroid.point = nextPoint;
+ d3_geo_centroidPointXYZ(x0, y0, z0);
+ };
+ function nextPoint(λ, φ) {
+ λ *= d3_radians;
+ var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);
+ d3_geo_centroidW1 += w;
+ d3_geo_centroidX1 += w * (x0 + (x0 = x));
+ d3_geo_centroidY1 += w * (y0 + (y0 = y));
+ d3_geo_centroidZ1 += w * (z0 + (z0 = z));
+ d3_geo_centroidPointXYZ(x0, y0, z0);
+ }
+ }
+ function d3_geo_centroidLineEnd() {
+ d3_geo_centroid.point = d3_geo_centroidPoint;
+ }
+ function d3_geo_centroidRingStart() {
+ var λ00, φ00, x0, y0, z0;
+ d3_geo_centroid.point = function(λ, φ) {
+ λ00 = λ, φ00 = φ;
+ d3_geo_centroid.point = nextPoint;
+ λ *= d3_radians;
+ var cosφ = Math.cos(φ *= d3_radians);
+ x0 = cosφ * Math.cos(λ);
+ y0 = cosφ * Math.sin(λ);
+ z0 = Math.sin(φ);
+ d3_geo_centroidPointXYZ(x0, y0, z0);
+ };
+ d3_geo_centroid.lineEnd = function() {
+ nextPoint(λ00, φ00);
+ d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
+ d3_geo_centroid.point = d3_geo_centroidPoint;
+ };
+ function nextPoint(λ, φ) {
+ λ *= d3_radians;
+ var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);
+ d3_geo_centroidX2 += v * cx;
+ d3_geo_centroidY2 += v * cy;
+ d3_geo_centroidZ2 += v * cz;
+ d3_geo_centroidW1 += w;
+ d3_geo_centroidX1 += w * (x0 + (x0 = x));
+ d3_geo_centroidY1 += w * (y0 + (y0 = y));
+ d3_geo_centroidZ1 += w * (z0 + (z0 = z));
+ d3_geo_centroidPointXYZ(x0, y0, z0);
+ }
+ }
+ function d3_geo_compose(a, b) {
+ function compose(x, y) {
+ return x = a(x, y), b(x[0], x[1]);
+ }
+ if (a.invert && b.invert) compose.invert = function(x, y) {
+ return x = b.invert(x, y), x && a.invert(x[0], x[1]);
+ };
+ return compose;
+ }
+ function d3_true() {
+ return true;
+ }
+ function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {
+ var subject = [], clip = [];
+ segments.forEach(function(segment) {
+ if ((n = segment.length - 1) <= 0) return;
+ var n, p0 = segment[0], p1 = segment[n];
+ if (d3_geo_sphericalEqual(p0, p1)) {
+ listener.lineStart();
+ for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
+ listener.lineEnd();
+ return;
+ }
+ var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);
+ a.o = b;
+ subject.push(a);
+ clip.push(b);
+ a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);
+ b = new d3_geo_clipPolygonIntersection(p1, null, a, true);
+ a.o = b;
+ subject.push(a);
+ clip.push(b);
+ });
+ clip.sort(compare);
+ d3_geo_clipPolygonLinkCircular(subject);
+ d3_geo_clipPolygonLinkCircular(clip);
+ if (!subject.length) return;
+ for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {
+ clip[i].e = entry = !entry;
+ }
+ var start = subject[0], points, point;
+ while (1) {
+ var current = start, isSubject = true;
+ while (current.v) if ((current = current.n) === start) return;
+ points = current.z;
+ listener.lineStart();
+ do {
+ current.v = current.o.v = true;
+ if (current.e) {
+ if (isSubject) {
+ for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);
+ } else {
+ interpolate(current.x, current.n.x, 1, listener);
+ }
+ current = current.n;
+ } else {
+ if (isSubject) {
+ points = current.p.z;
+ for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);
+ } else {
+ interpolate(current.x, current.p.x, -1, listener);
+ }
+ current = current.p;
+ }
+ current = current.o;
+ points = current.z;
+ isSubject = !isSubject;
+ } while (!current.v);
+ listener.lineEnd();
+ }
+ }
+ function d3_geo_clipPolygonLinkCircular(array) {
+ if (!(n = array.length)) return;
+ var n, i = 0, a = array[0], b;
+ while (++i < n) {
+ a.n = b = array[i];
+ b.p = a;
+ a = b;
+ }
+ a.n = b = array[0];
+ b.p = a;
+ }
+ function d3_geo_clipPolygonIntersection(point, points, other, entry) {
+ this.x = point;
+ this.z = points;
+ this.o = other;
+ this.e = entry;
+ this.v = false;
+ this.n = this.p = null;
+ }
+ function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
+ return function(rotate, listener) {
+ var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);
+ var clip = {
+ point: point,
+ lineStart: lineStart,
+ lineEnd: lineEnd,
+ polygonStart: function() {
+ clip.point = pointRing;
+ clip.lineStart = ringStart;
+ clip.lineEnd = ringEnd;
+ segments = [];
+ polygon = [];
+ },
+ polygonEnd: function() {
+ clip.point = point;
+ clip.lineStart = lineStart;
+ clip.lineEnd = lineEnd;
+ segments = d3.merge(segments);
+ var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);
+ if (segments.length) {
+ if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
+ d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
+ } else if (clipStartInside) {
+ if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
+ listener.lineStart();
+ interpolate(null, null, 1, listener);
+ listener.lineEnd();
+ }
+ if (polygonStarted) listener.polygonEnd(), polygonStarted = false;
+ segments = polygon = null;
+ },
+ sphere: function() {
+ listener.polygonStart();
+ listener.lineStart();
+ interpolate(null, null, 1, listener);
+ listener.lineEnd();
+ listener.polygonEnd();
+ }
+ };
+ function point(λ, φ) {
+ var point = rotate(λ, φ);
+ if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);
+ }
+ function pointLine(λ, φ) {
+ var point = rotate(λ, φ);
+ line.point(point[0], point[1]);
+ }
+ function lineStart() {
+ clip.point = pointLine;
+ line.lineStart();
+ }
+ function lineEnd() {
+ clip.point = point;
+ line.lineEnd();
+ }
+ var segments;
+ var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;
+ function pointRing(λ, φ) {
+ ring.push([ λ, φ ]);
+ var point = rotate(λ, φ);
+ ringListener.point(point[0], point[1]);
+ }
+ function ringStart() {
+ ringListener.lineStart();
+ ring = [];
+ }
+ function ringEnd() {
+ pointRing(ring[0][0], ring[0][1]);
+ ringListener.lineEnd();
+ var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;
+ ring.pop();
+ polygon.push(ring);
+ ring = null;
+ if (!n) return;
+ if (clean & 1) {
+ segment = ringSegments[0];
+ var n = segment.length - 1, i = -1, point;
+ if (n > 0) {
+ if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
+ listener.lineStart();
+ while (++i < n) listener.point((point = segment[i])[0], point[1]);
+ listener.lineEnd();
+ }
+ return;
+ }
+ if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
+ segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
+ }
+ return clip;
+ };
+ }
+ function d3_geo_clipSegmentLength1(segment) {
+ return segment.length > 1;
+ }
+ function d3_geo_clipBufferListener() {
+ var lines = [], line;
+ return {
+ lineStart: function() {
+ lines.push(line = []);
+ },
+ point: function(λ, φ) {
+ line.push([ λ, φ ]);
+ },
+ lineEnd: d3_noop,
+ buffer: function() {
+ var buffer = lines;
+ lines = [];
+ line = null;
+ return buffer;
+ },
+ rejoin: function() {
+ if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
+ }
+ };
+ }
+ function d3_geo_clipSort(a, b) {
+ return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);
+ }
+ var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);
+ function d3_geo_clipAntimeridianLine(listener) {
+ var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;
+ return {
+ lineStart: function() {
+ listener.lineStart();
+ clean = 1;
+ },
+ point: function(λ1, φ1) {
+ var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);
+ if (abs(dλ - π) < ε) {
+ listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);
+ listener.point(sλ0, φ0);
+ listener.lineEnd();
+ listener.lineStart();
+ listener.point(sλ1, φ0);
+ listener.point(λ1, φ0);
+ clean = 0;
+ } else if (sλ0 !== sλ1 && dλ >= π) {
+ if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;
+ if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;
+ φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);
+ listener.point(sλ0, φ0);
+ listener.lineEnd();
+ listener.lineStart();
+ listener.point(sλ1, φ0);
+ clean = 0;
+ }
+ listener.point(λ0 = λ1, φ0 = φ1);
+ sλ0 = sλ1;
+ },
+ lineEnd: function() {
+ listener.lineEnd();
+ λ0 = φ0 = NaN;
+ },
+ clean: function() {
+ return 2 - clean;
+ }
+ };
+ }
+ function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
+ var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);
+ return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;
+ }
+ function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {
+ var φ;
+ if (from == null) {
+ φ = direction * halfπ;
+ listener.point(-π, φ);
+ listener.point(0, φ);
+ listener.point(π, φ);
+ listener.point(π, 0);
+ listener.point(π, -φ);
+ listener.point(0, -φ);
+ listener.point(-π, -φ);
+ listener.point(-π, 0);
+ listener.point(-π, φ);
+ } else if (abs(from[0] - to[0]) > ε) {
+ var s = from[0] < to[0] ? π : -π;
+ φ = direction * s / 2;
+ listener.point(-s, φ);
+ listener.point(0, φ);
+ listener.point(s, φ);
+ } else {
+ listener.point(to[0], to[1]);
+ }
+ }
+ function d3_geo_pointInPolygon(point, polygon) {
+ var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;
+ d3_geo_areaRingSum.reset();
+ for (var i = 0, n = polygon.length; i < n; ++i) {
+ var ring = polygon[i], m = ring.length;
+ if (!m) continue;
+ var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;
+ while (true) {
+ if (j === m) j = 0;
+ point = ring[j];
+ var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;
+ d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
+ polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
+ if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
+ var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
+ d3_geo_cartesianNormalize(arc);
+ var intersection = d3_geo_cartesianCross(meridianNormal, arc);
+ d3_geo_cartesianNormalize(intersection);
+ var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
+ if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
+ winding += antimeridian ^ dλ >= 0 ? 1 : -1;
+ }
+ }
+ if (!j++) break;
+ λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
+ }
+ }
+ return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1;
+ }
+ function d3_geo_clipCircle(radius) {
+ var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
+ return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);
+ function visible(λ, φ) {
+ return Math.cos(λ) * Math.cos(φ) > cr;
+ }
+ function clipLine(listener) {
+ var point0, c0, v0, v00, clean;
+ return {
+ lineStart: function() {
+ v00 = v0 = false;
+ clean = 1;
+ },
+ point: function(λ, φ) {
+ var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;
+ if (!point0 && (v00 = v0 = v)) listener.lineStart();
+ if (v !== v0) {
+ point2 = intersect(point0, point1);
+ if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {
+ point1[0] += ε;
+ point1[1] += ε;
+ v = visible(point1[0], point1[1]);
+ }
+ }
+ if (v !== v0) {
+ clean = 0;
+ if (v) {
+ listener.lineStart();
+ point2 = intersect(point1, point0);
+ listener.point(point2[0], point2[1]);
+ } else {
+ point2 = intersect(point0, point1);
+ listener.point(point2[0], point2[1]);
+ listener.lineEnd();
+ }
+ point0 = point2;
+ } else if (notHemisphere && point0 && smallRadius ^ v) {
+ var t;
+ if (!(c & c0) && (t = intersect(point1, point0, true))) {
+ clean = 0;
+ if (smallRadius) {
+ listener.lineStart();
+ listener.point(t[0][0], t[0][1]);
+ listener.point(t[1][0], t[1][1]);
+ listener.lineEnd();
+ } else {
+ listener.point(t[1][0], t[1][1]);
+ listener.lineEnd();
+ listener.lineStart();
+ listener.point(t[0][0], t[0][1]);
+ }
+ }
+ }
+ if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {
+ listener.point(point1[0], point1[1]);
+ }
+ point0 = point1, v0 = v, c0 = c;
+ },
+ lineEnd: function() {
+ if (v0) listener.lineEnd();
+ point0 = null;
+ },
+ clean: function() {
+ return clean | (v00 && v0) << 1;
+ }
+ };
+ }
+ function intersect(a, b, two) {
+ var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);
+ var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;
+ if (!determinant) return !two && a;
+ var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);
+ d3_geo_cartesianAdd(A, B);
+ var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);
+ if (t2 < 0) return;
+ var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);
+ d3_geo_cartesianAdd(q, A);
+ q = d3_geo_spherical(q);
+ if (!two) return q;
+ var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;
+ if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;
+ var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;
+ if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;
+ if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {
+ var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);
+ d3_geo_cartesianAdd(q1, A);
+ return [ q, d3_geo_spherical(q1) ];
+ }
+ }
+ function code(λ, φ) {
+ var r = smallRadius ? radius : π - radius, code = 0;
+ if (λ < -r) code |= 1; else if (λ > r) code |= 2;
+ if (φ < -r) code |= 4; else if (φ > r) code |= 8;
+ return code;
+ }
+ }
+ function d3_geom_clipLine(x0, y0, x1, y1) {
+ return function(line) {
+ var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;
+ r = x0 - ax;
+ if (!dx && r > 0) return;
+ r /= dx;
+ if (dx < 0) {
+ if (r < t0) return;
+ if (r < t1) t1 = r;
+ } else if (dx > 0) {
+ if (r > t1) return;
+ if (r > t0) t0 = r;
+ }
+ r = x1 - ax;
+ if (!dx && r < 0) return;
+ r /= dx;
+ if (dx < 0) {
+ if (r > t1) return;
+ if (r > t0) t0 = r;
+ } else if (dx > 0) {
+ if (r < t0) return;
+ if (r < t1) t1 = r;
+ }
+ r = y0 - ay;
+ if (!dy && r > 0) return;
+ r /= dy;
+ if (dy < 0) {
+ if (r < t0) return;
+ if (r < t1) t1 = r;
+ } else if (dy > 0) {
+ if (r > t1) return;
+ if (r > t0) t0 = r;
+ }
+ r = y1 - ay;
+ if (!dy && r < 0) return;
+ r /= dy;
+ if (dy < 0) {
+ if (r > t1) return;
+ if (r > t0) t0 = r;
+ } else if (dy > 0) {
+ if (r < t0) return;
+ if (r < t1) t1 = r;
+ }
+ if (t0 > 0) line.a = {
+ x: ax + t0 * dx,
+ y: ay + t0 * dy
+ };
+ if (t1 < 1) line.b = {
+ x: ax + t1 * dx,
+ y: ay + t1 * dy
+ };
+ return line;
+ };
+ }
+ var d3_geo_clipExtentMAX = 1e9;
+ d3.geo.clipExtent = function() {
+ var x0, y0, x1, y1, stream, clip, clipExtent = {
+ stream: function(output) {
+ if (stream) stream.valid = false;
+ stream = clip(output);
+ stream.valid = true;
+ return stream;
+ },
+ extent: function(_) {
+ if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
+ clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);
+ if (stream) stream.valid = false, stream = null;
+ return clipExtent;
+ }
+ };
+ return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);
+ };
+ function d3_geo_clipExtent(x0, y0, x1, y1) {
+ return function(listener) {
+ var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;
+ var clip = {
+ point: point,
+ lineStart: lineStart,
+ lineEnd: lineEnd,
+ polygonStart: function() {
+ listener = bufferListener;
+ segments = [];
+ polygon = [];
+ clean = true;
+ },
+ polygonEnd: function() {
+ listener = listener_;
+ segments = d3.merge(segments);
+ var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;
+ if (inside || visible) {
+ listener.polygonStart();
+ if (inside) {
+ listener.lineStart();
+ interpolate(null, null, 1, listener);
+ listener.lineEnd();
+ }
+ if (visible) {
+ d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);
+ }
+ listener.polygonEnd();
+ }
+ segments = polygon = ring = null;
+ }
+ };
+ function insidePolygon(p) {
+ var wn = 0, n = polygon.length, y = p[1];
+ for (var i = 0; i < n; ++i) {
+ for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {
+ b = v[j];
+ if (a[1] <= y) {
+ if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;
+ } else {
+ if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;
+ }
+ a = b;
+ }
+ }
+ return wn !== 0;
+ }
+ function interpolate(from, to, direction, listener) {
+ var a = 0, a1 = 0;
+ if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {
+ do {
+ listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
+ } while ((a = (a + direction + 4) % 4) !== a1);
+ } else {
+ listener.point(to[0], to[1]);
+ }
+ }
+ function pointVisible(x, y) {
+ return x0 <= x && x <= x1 && y0 <= y && y <= y1;
+ }
+ function point(x, y) {
+ if (pointVisible(x, y)) listener.point(x, y);
+ }
+ var x__, y__, v__, x_, y_, v_, first, clean;
+ function lineStart() {
+ clip.point = linePoint;
+ if (polygon) polygon.push(ring = []);
+ first = true;
+ v_ = false;
+ x_ = y_ = NaN;
+ }
+ function lineEnd() {
+ if (segments) {
+ linePoint(x__, y__);
+ if (v__ && v_) bufferListener.rejoin();
+ segments.push(bufferListener.buffer());
+ }
+ clip.point = point;
+ if (v_) listener.lineEnd();
+ }
+ function linePoint(x, y) {
+ x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));
+ y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));
+ var v = pointVisible(x, y);
+ if (polygon) ring.push([ x, y ]);
+ if (first) {
+ x__ = x, y__ = y, v__ = v;
+ first = false;
+ if (v) {
+ listener.lineStart();
+ listener.point(x, y);
+ }
+ } else {
+ if (v && v_) listener.point(x, y); else {
+ var l = {
+ a: {
+ x: x_,
+ y: y_
+ },
+ b: {
+ x: x,
+ y: y
+ }
+ };
+ if (clipLine(l)) {
+ if (!v_) {
+ listener.lineStart();
+ listener.point(l.a.x, l.a.y);
+ }
+ listener.point(l.b.x, l.b.y);
+ if (!v) listener.lineEnd();
+ clean = false;
+ } else if (v) {
+ listener.lineStart();
+ listener.point(x, y);
+ clean = false;
+ }
+ }
+ }
+ x_ = x, y_ = y, v_ = v;
+ }
+ return clip;
+ };
+ function corner(p, direction) {
+ return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;
+ }
+ function compare(a, b) {
+ return comparePoints(a.x, b.x);
+ }
+ function comparePoints(a, b) {
+ var ca = corner(a, 1), cb = corner(b, 1);
+ return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];
+ }
+ }
+ function d3_geo_conic(projectAt) {
+ var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);
+ p.parallels = function(_) {
+ if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];
+ return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);
+ };
+ return p;
+ }
+ function d3_geo_conicEqualArea(φ0, φ1) {
+ var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;
+ function forward(λ, φ) {
+ var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
+ return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];
+ }
+ forward.invert = function(x, y) {
+ var ρ0_y = ρ0 - y;
+ return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];
+ };
+ return forward;
+ }
+ (d3.geo.conicEqualArea = function() {
+ return d3_geo_conic(d3_geo_conicEqualArea);
+ }).raw = d3_geo_conicEqualArea;
+ d3.geo.albers = function() {
+ return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);
+ };
+ d3.geo.albersUsa = function() {
+ var lower48 = d3.geo.albers();
+ var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);
+ var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);
+ var point, pointStream = {
+ point: function(x, y) {
+ point = [ x, y ];
+ }
+ }, lower48Point, alaskaPoint, hawaiiPoint;
+ function albersUsa(coordinates) {
+ var x = coordinates[0], y = coordinates[1];
+ point = null;
+ (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);
+ return point;
+ }
+ albersUsa.invert = function(coordinates) {
+ var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;
+ return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);
+ };
+ albersUsa.stream = function(stream) {
+ var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);
+ return {
+ point: function(x, y) {
+ lower48Stream.point(x, y);
+ alaskaStream.point(x, y);
+ hawaiiStream.point(x, y);
+ },
+ sphere: function() {
+ lower48Stream.sphere();
+ alaskaStream.sphere();
+ hawaiiStream.sphere();
+ },
+ lineStart: function() {
+ lower48Stream.lineStart();
+ alaskaStream.lineStart();
+ hawaiiStream.lineStart();
+ },
+ lineEnd: function() {
+ lower48Stream.lineEnd();
+ alaskaStream.lineEnd();
+ hawaiiStream.lineEnd();
+ },
+ polygonStart: function() {
+ lower48Stream.polygonStart();
+ alaskaStream.polygonStart();
+ hawaiiStream.polygonStart();
+ },
+ polygonEnd: function() {
+ lower48Stream.polygonEnd();
+ alaskaStream.polygonEnd();
+ hawaiiStream.polygonEnd();
+ }
+ };
+ };
+ albersUsa.precision = function(_) {
+ if (!arguments.length) return lower48.precision();
+ lower48.precision(_);
+ alaska.precision(_);
+ hawaii.precision(_);
+ return albersUsa;
+ };
+ albersUsa.scale = function(_) {
+ if (!arguments.length) return lower48.scale();
+ lower48.scale(_);
+ alaska.scale(_ * .35);
+ hawaii.scale(_);
+ return albersUsa.translate(lower48.translate());
+ };
+ albersUsa.translate = function(_) {
+ if (!arguments.length) return lower48.translate();
+ var k = lower48.scale(), x = +_[0], y = +_[1];
+ lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;
+ alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;
+ hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;
+ return albersUsa;
+ };
+ return albersUsa.scale(1070);
+ };
+ var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
+ point: d3_noop,
+ lineStart: d3_noop,
+ lineEnd: d3_noop,
+ polygonStart: function() {
+ d3_geo_pathAreaPolygon = 0;
+ d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
+ },
+ polygonEnd: function() {
+ d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;
+ d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);
+ }
+ };
+ function d3_geo_pathAreaRingStart() {
+ var x00, y00, x0, y0;
+ d3_geo_pathArea.point = function(x, y) {
+ d3_geo_pathArea.point = nextPoint;
+ x00 = x0 = x, y00 = y0 = y;
+ };
+ function nextPoint(x, y) {
+ d3_geo_pathAreaPolygon += y0 * x - x0 * y;
+ x0 = x, y0 = y;
+ }
+ d3_geo_pathArea.lineEnd = function() {
+ nextPoint(x00, y00);
+ };
+ }
+ var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;
+ var d3_geo_pathBounds = {
+ point: d3_geo_pathBoundsPoint,
+ lineStart: d3_noop,
+ lineEnd: d3_noop,
+ polygonStart: d3_noop,
+ polygonEnd: d3_noop
+ };
+ function d3_geo_pathBoundsPoint(x, y) {
+ if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;
+ if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;
+ if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;
+ if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;
+ }
+ function d3_geo_pathBuffer() {
+ var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];
+ var stream = {
+ point: point,
+ lineStart: function() {
+ stream.point = pointLineStart;
+ },
+ lineEnd: lineEnd,
+ polygonStart: function() {
+ stream.lineEnd = lineEndPolygon;
+ },
+ polygonEnd: function() {
+ stream.lineEnd = lineEnd;
+ stream.point = point;
+ },
+ pointRadius: function(_) {
+ pointCircle = d3_geo_pathBufferCircle(_);
+ return stream;
+ },
+ result: function() {
+ if (buffer.length) {
+ var result = buffer.join("");
+ buffer = [];
+ return result;
+ }
+ }
+ };
+ function point(x, y) {
+ buffer.push("M", x, ",", y, pointCircle);
+ }
+ function pointLineStart(x, y) {
+ buffer.push("M", x, ",", y);
+ stream.point = pointLine;
+ }
+ function pointLine(x, y) {
+ buffer.push("L", x, ",", y);
+ }
+ function lineEnd() {
+ stream.point = point;
+ }
+ function lineEndPolygon() {
+ buffer.push("Z");
+ }
+ return stream;
+ }
+ function d3_geo_pathBufferCircle(radius) {
+ return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius + "z";
+ }
+ var d3_geo_pathCentroid = {
+ point: d3_geo_pathCentroidPoint,
+ lineStart: d3_geo_pathCentroidLineStart,
+ lineEnd: d3_geo_pathCentroidLineEnd,
+ polygonStart: function() {
+ d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
+ },
+ polygonEnd: function() {
+ d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
+ d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
+ d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
+ }
+ };
+ function d3_geo_pathCentroidPoint(x, y) {
+ d3_geo_centroidX0 += x;
+ d3_geo_centroidY0 += y;
+ ++d3_geo_centroidZ0;
+ }
+ function d3_geo_pathCentroidLineStart() {
+ var x0, y0;
+ d3_geo_pathCentroid.point = function(x, y) {
+ d3_geo_pathCentroid.point = nextPoint;
+ d3_geo_pathCentroidPoint(x0 = x, y0 = y);
+ };
+ function nextPoint(x, y) {
+ var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
+ d3_geo_centroidX1 += z * (x0 + x) / 2;
+ d3_geo_centroidY1 += z * (y0 + y) / 2;
+ d3_geo_centroidZ1 += z;
+ d3_geo_pathCentroidPoint(x0 = x, y0 = y);
+ }
+ }
+ function d3_geo_pathCentroidLineEnd() {
+ d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
+ }
+ function d3_geo_pathCentroidRingStart() {
+ var x00, y00, x0, y0;
+ d3_geo_pathCentroid.point = function(x, y) {
+ d3_geo_pathCentroid.point = nextPoint;
+ d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);
+ };
+ function nextPoint(x, y) {
+ var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
+ d3_geo_centroidX1 += z * (x0 + x) / 2;
+ d3_geo_centroidY1 += z * (y0 + y) / 2;
+ d3_geo_centroidZ1 += z;
+ z = y0 * x - x0 * y;
+ d3_geo_centroidX2 += z * (x0 + x);
+ d3_geo_centroidY2 += z * (y0 + y);
+ d3_geo_centroidZ2 += z * 3;
+ d3_geo_pathCentroidPoint(x0 = x, y0 = y);
+ }
+ d3_geo_pathCentroid.lineEnd = function() {
+ nextPoint(x00, y00);
+ };
+ }
+ function d3_geo_pathContext(context) {
+ var pointRadius = 4.5;
+ var stream = {
+ point: point,
+ lineStart: function() {
+ stream.point = pointLineStart;
+ },
+ lineEnd: lineEnd,
+ polygonStart: function() {
+ stream.lineEnd = lineEndPolygon;
+ },
+ polygonEnd: function() {
+ stream.lineEnd = lineEnd;
+ stream.point = point;
+ },
+ pointRadius: function(_) {
+ pointRadius = _;
+ return stream;
+ },
+ result: d3_noop
+ };
+ function point(x, y) {
+ context.moveTo(x + pointRadius, y);
+ context.arc(x, y, pointRadius, 0, τ);
+ }
+ function pointLineStart(x, y) {
+ context.moveTo(x, y);
+ stream.point = pointLine;
+ }
+ function pointLine(x, y) {
+ context.lineTo(x, y);
+ }
+ function lineEnd() {
+ stream.point = point;
+ }
+ function lineEndPolygon() {
+ context.closePath();
+ }
+ return stream;
+ }
+ function d3_geo_resample(project) {
+ var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;
+ function resample(stream) {
+ return (maxDepth ? resampleRecursive : resampleNone)(stream);
+ }
+ function resampleNone(stream) {
+ return d3_geo_transformPoint(stream, function(x, y) {
+ x = project(x, y);
+ stream.point(x[0], x[1]);
+ });
+ }
+ function resampleRecursive(stream) {
+ var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;
+ var resample = {
+ point: point,
+ lineStart: lineStart,
+ lineEnd: lineEnd,
+ polygonStart: function() {
+ stream.polygonStart();
+ resample.lineStart = ringStart;
+ },
+ polygonEnd: function() {
+ stream.polygonEnd();
+ resample.lineStart = lineStart;
+ }
+ };
+ function point(x, y) {
+ x = project(x, y);
+ stream.point(x[0], x[1]);
+ }
+ function lineStart() {
+ x0 = NaN;
+ resample.point = linePoint;
+ stream.lineStart();
+ }
+ function linePoint(λ, φ) {
+ var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);
+ resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
+ stream.point(x0, y0);
+ }
+ function lineEnd() {
+ resample.point = point;
+ stream.lineEnd();
+ }
+ function ringStart() {
+ lineStart();
+ resample.point = ringPoint;
+ resample.lineEnd = ringEnd;
+ }
+ function ringPoint(λ, φ) {
+ linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
+ resample.point = linePoint;
+ }
+ function ringEnd() {
+ resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);
+ resample.lineEnd = lineEnd;
+ lineEnd();
+ }
+ return resample;
+ }
+ function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {
+ var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;
+ if (d2 > 4 * δ2 && depth--) {
+ var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;
+ if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {
+ resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);
+ stream.point(x2, y2);
+ resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
+ }
+ }
+ }
+ resample.precision = function(_) {
+ if (!arguments.length) return Math.sqrt(δ2);
+ maxDepth = (δ2 = _ * _) > 0 && 16;
+ return resample;
+ };
+ return resample;
+ }
+ d3.geo.path = function() {
+ var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;
+ function path(object) {
+ if (object) {
+ if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
+ if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);
+ d3.geo.stream(object, cacheStream);
+ }
+ return contextStream.result();
+ }
+ path.area = function(object) {
+ d3_geo_pathAreaSum = 0;
+ d3.geo.stream(object, projectStream(d3_geo_pathArea));
+ return d3_geo_pathAreaSum;
+ };
+ path.centroid = function(object) {
+ d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
+ d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
+ return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];
+ };
+ path.bounds = function(object) {
+ d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);
+ d3.geo.stream(object, projectStream(d3_geo_pathBounds));
+ return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];
+ };
+ path.projection = function(_) {
+ if (!arguments.length) return projection;
+ projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;
+ return reset();
+ };
+ path.context = function(_) {
+ if (!arguments.length) return context;
+ contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);
+ if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
+ return reset();
+ };
+ path.pointRadius = function(_) {
+ if (!arguments.length) return pointRadius;
+ pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
+ return path;
+ };
+ function reset() {
+ cacheStream = null;
+ return path;
+ }
+ return path.projection(d3.geo.albersUsa()).context(null);
+ };
+ function d3_geo_pathProjectStream(project) {
+ var resample = d3_geo_resample(function(x, y) {
+ return project([ x * d3_degrees, y * d3_degrees ]);
+ });
+ return function(stream) {
+ return d3_geo_projectionRadians(resample(stream));
+ };
+ }
+ d3.geo.transform = function(methods) {
+ return {
+ stream: function(stream) {
+ var transform = new d3_geo_transform(stream);
+ for (var k in methods) transform[k] = methods[k];
+ return transform;
+ }
+ };
+ };
+ function d3_geo_transform(stream) {
+ this.stream = stream;
+ }
+ d3_geo_transform.prototype = {
+ point: function(x, y) {
+ this.stream.point(x, y);
+ },
+ sphere: function() {
+ this.stream.sphere();
+ },
+ lineStart: function() {
+ this.stream.lineStart();
+ },
+ lineEnd: function() {
+ this.stream.lineEnd();
+ },
+ polygonStart: function() {
+ this.stream.polygonStart();
+ },
+ polygonEnd: function() {
+ this.stream.polygonEnd();
+ }
+ };
+ function d3_geo_transformPoint(stream, point) {
+ return {
+ point: point,
+ sphere: function() {
+ stream.sphere();
+ },
+ lineStart: function() {
+ stream.lineStart();
+ },
+ lineEnd: function() {
+ stream.lineEnd();
+ },
+ polygonStart: function() {
+ stream.polygonStart();
+ },
+ polygonEnd: function() {
+ stream.polygonEnd();
+ }
+ };
+ }
+ d3.geo.projection = d3_geo_projection;
+ d3.geo.projectionMutator = d3_geo_projectionMutator;
+ function d3_geo_projection(project) {
+ return d3_geo_projectionMutator(function() {
+ return project;
+ })();
+ }
+ function d3_geo_projectionMutator(projectAt) {
+ var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {
+ x = project(x, y);
+ return [ x[0] * k + δx, δy - x[1] * k ];
+ }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;
+ function projection(point) {
+ point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
+ return [ point[0] * k + δx, δy - point[1] * k ];
+ }
+ function invert(point) {
+ point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
+ return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];
+ }
+ projection.stream = function(output) {
+ if (stream) stream.valid = false;
+ stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));
+ stream.valid = true;
+ return stream;
+ };
+ projection.clipAngle = function(_) {
+ if (!arguments.length) return clipAngle;
+ preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);
+ return invalidate();
+ };
+ projection.clipExtent = function(_) {
+ if (!arguments.length) return clipExtent;
+ clipExtent = _;
+ postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;
+ return invalidate();
+ };
+ projection.scale = function(_) {
+ if (!arguments.length) return k;
+ k = +_;
+ return reset();
+ };
+ projection.translate = function(_) {
+ if (!arguments.length) return [ x, y ];
+ x = +_[0];
+ y = +_[1];
+ return reset();
+ };
+ projection.center = function(_) {
+ if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];
+ λ = _[0] % 360 * d3_radians;
+ φ = _[1] % 360 * d3_radians;
+ return reset();
+ };
+ projection.rotate = function(_) {
+ if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];
+ δλ = _[0] % 360 * d3_radians;
+ δφ = _[1] % 360 * d3_radians;
+ δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
+ return reset();
+ };
+ d3.rebind(projection, projectResample, "precision");
+ function reset() {
+ projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
+ var center = project(λ, φ);
+ δx = x - center[0] * k;
+ δy = y + center[1] * k;
+ return invalidate();
+ }
+ function invalidate() {
+ if (stream) stream.valid = false, stream = null;
+ return projection;
+ }
+ return function() {
+ project = projectAt.apply(this, arguments);
+ projection.invert = project.invert && invert;
+ return reset();
+ };
+ }
+ function d3_geo_projectionRadians(stream) {
+ return d3_geo_transformPoint(stream, function(x, y) {
+ stream.point(x * d3_radians, y * d3_radians);
+ });
+ }
+ function d3_geo_equirectangular(λ, φ) {
+ return [ λ, φ ];
+ }
+ (d3.geo.equirectangular = function() {
+ return d3_geo_projection(d3_geo_equirectangular);
+ }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
+ d3.geo.rotation = function(rotate) {
+ rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);
+ function forward(coordinates) {
+ coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
+ return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
+ }
+ forward.invert = function(coordinates) {
+ coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
+ return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
+ };
+ return forward;
+ };
+ function d3_geo_identityRotation(λ, φ) {
+ return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];
+ }
+ d3_geo_identityRotation.invert = d3_geo_equirectangular;
+ function d3_geo_rotation(δλ, δφ, δγ) {
+ return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;
+ }
+ function d3_geo_forwardRotationλ(δλ) {
+ return function(λ, φ) {
+ return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];
+ };
+ }
+ function d3_geo_rotationλ(δλ) {
+ var rotation = d3_geo_forwardRotationλ(δλ);
+ rotation.invert = d3_geo_forwardRotationλ(-δλ);
+ return rotation;
+ }
+ function d3_geo_rotationφγ(δφ, δγ) {
+ var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);
+ function rotation(λ, φ) {
+ var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;
+ return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];
+ }
+ rotation.invert = function(λ, φ) {
+ var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;
+ return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];
+ };
+ return rotation;
+ }
+ d3.geo.circle = function() {
+ var origin = [ 0, 0 ], angle, precision = 6, interpolate;
+ function circle() {
+ var center = typeof origin === "function" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];
+ interpolate(null, null, 1, {
+ point: function(x, y) {
+ ring.push(x = rotate(x, y));
+ x[0] *= d3_degrees, x[1] *= d3_degrees;
+ }
+ });
+ return {
+ type: "Polygon",
+ coordinates: [ ring ]
+ };
+ }
+ circle.origin = function(x) {
+ if (!arguments.length) return origin;
+ origin = x;
+ return circle;
+ };
+ circle.angle = function(x) {
+ if (!arguments.length) return angle;
+ interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);
+ return circle;
+ };
+ circle.precision = function(_) {
+ if (!arguments.length) return precision;
+ interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);
+ return circle;
+ };
+ return circle.angle(90);
+ };
+ function d3_geo_circleInterpolate(radius, precision) {
+ var cr = Math.cos(radius), sr = Math.sin(radius);
+ return function(from, to, direction, listener) {
+ var step = direction * precision;
+ if (from != null) {
+ from = d3_geo_circleAngle(cr, from);
+ to = d3_geo_circleAngle(cr, to);
+ if (direction > 0 ? from < to : from > to) from += direction * τ;
+ } else {
+ from = radius + direction * τ;
+ to = radius - .5 * step;
+ }
+ for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {
+ listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);
+ }
+ };
+ }
+ function d3_geo_circleAngle(cr, point) {
+ var a = d3_geo_cartesian(point);
+ a[0] -= cr;
+ d3_geo_cartesianNormalize(a);
+ var angle = d3_acos(-a[1]);
+ return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
+ }
+ d3.geo.distance = function(a, b) {
+ var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;
+ return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);
+ };
+ d3.geo.graticule = function() {
+ var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;
+ function graticule() {
+ return {
+ type: "MultiLineString",
+ coordinates: lines()
+ };
+ }
+ function lines() {
+ return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {
+ return abs(x % DX) > ε;
+ }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {
+ return abs(y % DY) > ε;
+ }).map(y));
+ }
+ graticule.lines = function() {
+ return lines().map(function(coordinates) {
+ return {
+ type: "LineString",
+ coordinates: coordinates
+ };
+ });
+ };
+ graticule.outline = function() {
+ return {
+ type: "Polygon",
+ coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]
+ };
+ };
+ graticule.extent = function(_) {
+ if (!arguments.length) return graticule.minorExtent();
+ return graticule.majorExtent(_).minorExtent(_);
+ };
+ graticule.majorExtent = function(_) {
+ if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];
+ X0 = +_[0][0], X1 = +_[1][0];
+ Y0 = +_[0][1], Y1 = +_[1][1];
+ if (X0 > X1) _ = X0, X0 = X1, X1 = _;
+ if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;
+ return graticule.precision(precision);
+ };
+ graticule.minorExtent = function(_) {
+ if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
+ x0 = +_[0][0], x1 = +_[1][0];
+ y0 = +_[0][1], y1 = +_[1][1];
+ if (x0 > x1) _ = x0, x0 = x1, x1 = _;
+ if (y0 > y1) _ = y0, y0 = y1, y1 = _;
+ return graticule.precision(precision);
+ };
+ graticule.step = function(_) {
+ if (!arguments.length) return graticule.minorStep();
+ return graticule.majorStep(_).minorStep(_);
+ };
+ graticule.majorStep = function(_) {
+ if (!arguments.length) return [ DX, DY ];
+ DX = +_[0], DY = +_[1];
+ return graticule;
+ };
+ graticule.minorStep = function(_) {
+ if (!arguments.length) return [ dx, dy ];
+ dx = +_[0], dy = +_[1];
+ return graticule;
+ };
+ graticule.precision = function(_) {
+ if (!arguments.length) return precision;
+ precision = +_;
+ x = d3_geo_graticuleX(y0, y1, 90);
+ y = d3_geo_graticuleY(x0, x1, precision);
+ X = d3_geo_graticuleX(Y0, Y1, 90);
+ Y = d3_geo_graticuleY(X0, X1, precision);
+ return graticule;
+ };
+ return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);
+ };
+ function d3_geo_graticuleX(y0, y1, dy) {
+ var y = d3.range(y0, y1 - ε, dy).concat(y1);
+ return function(x) {
+ return y.map(function(y) {
+ return [ x, y ];
+ });
+ };
+ }
+ function d3_geo_graticuleY(x0, x1, dx) {
+ var x = d3.range(x0, x1 - ε, dx).concat(x1);
+ return function(y) {
+ return x.map(function(x) {
+ return [ x, y ];
+ });
+ };
+ }
+ function d3_source(d) {
+ return d.source;
+ }
+ function d3_target(d) {
+ return d.target;
+ }
+ d3.geo.greatArc = function() {
+ var source = d3_source, source_, target = d3_target, target_;
+ function greatArc() {
+ return {
+ type: "LineString",
+ coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]
+ };
+ }
+ greatArc.distance = function() {
+ return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));
+ };
+ greatArc.source = function(_) {
+ if (!arguments.length) return source;
+ source = _, source_ = typeof _ === "function" ? null : _;
+ return greatArc;
+ };
+ greatArc.target = function(_) {
+ if (!arguments.length) return target;
+ target = _, target_ = typeof _ === "function" ? null : _;
+ return greatArc;
+ };
+ greatArc.precision = function() {
+ return arguments.length ? greatArc : 0;
+ };
+ return greatArc;
+ };
+ d3.geo.interpolate = function(source, target) {
+ return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);
+ };
+ function d3_geo_interpolate(x0, y0, x1, y1) {
+ var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);
+ var interpolate = d ? function(t) {
+ var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;
+ return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];
+ } : function() {
+ return [ x0 * d3_degrees, y0 * d3_degrees ];
+ };
+ interpolate.distance = d;
+ return interpolate;
+ }
+ d3.geo.length = function(object) {
+ d3_geo_lengthSum = 0;
+ d3.geo.stream(object, d3_geo_length);
+ return d3_geo_lengthSum;
+ };
+ var d3_geo_lengthSum;
+ var d3_geo_length = {
+ sphere: d3_noop,
+ point: d3_noop,
+ lineStart: d3_geo_lengthLineStart,
+ lineEnd: d3_noop,
+ polygonStart: d3_noop,
+ polygonEnd: d3_noop
+ };
+ function d3_geo_lengthLineStart() {
+ var λ0, sinφ0, cosφ0;
+ d3_geo_length.point = function(λ, φ) {
+ λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
+ d3_geo_length.point = nextPoint;
+ };
+ d3_geo_length.lineEnd = function() {
+ d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
+ };
+ function nextPoint(λ, φ) {
+ var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);
+ d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
+ λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
+ }
+ }
+ function d3_geo_azimuthal(scale, angle) {
+ function azimuthal(λ, φ) {
+ var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);
+ return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];
+ }
+ azimuthal.invert = function(x, y) {
+ var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);
+ return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];
+ };
+ return azimuthal;
+ }
+ var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {
+ return Math.sqrt(2 / (1 + cosλcosφ));
+ }, function(ρ) {
+ return 2 * Math.asin(ρ / 2);
+ });
+ (d3.geo.azimuthalEqualArea = function() {
+ return d3_geo_projection(d3_geo_azimuthalEqualArea);
+ }).raw = d3_geo_azimuthalEqualArea;
+ var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {
+ var c = Math.acos(cosλcosφ);
+ return c && c / Math.sin(c);
+ }, d3_identity);
+ (d3.geo.azimuthalEquidistant = function() {
+ return d3_geo_projection(d3_geo_azimuthalEquidistant);
+ }).raw = d3_geo_azimuthalEquidistant;
+ function d3_geo_conicConformal(φ0, φ1) {
+ var cosφ0 = Math.cos(φ0), t = function(φ) {
+ return Math.tan(π / 4 + φ / 2);
+ }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;
+ if (!n) return d3_geo_mercator;
+ function forward(λ, φ) {
+ if (F > 0) {
+ if (φ < -halfπ + ε) φ = -halfπ + ε;
+ } else {
+ if (φ > halfπ - ε) φ = halfπ - ε;
+ }
+ var ρ = F / Math.pow(t(φ), n);
+ return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];
+ }
+ forward.invert = function(x, y) {
+ var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);
+ return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];
+ };
+ return forward;
+ }
+ (d3.geo.conicConformal = function() {
+ return d3_geo_conic(d3_geo_conicConformal);
+ }).raw = d3_geo_conicConformal;
+ function d3_geo_conicEquidistant(φ0, φ1) {
+ var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;
+ if (abs(n) < ε) return d3_geo_equirectangular;
+ function forward(λ, φ) {
+ var ρ = G - φ;
+ return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];
+ }
+ forward.invert = function(x, y) {
+ var ρ0_y = G - y;
+ return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];
+ };
+ return forward;
+ }
+ (d3.geo.conicEquidistant = function() {
+ return d3_geo_conic(d3_geo_conicEquidistant);
+ }).raw = d3_geo_conicEquidistant;
+ var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {
+ return 1 / cosλcosφ;
+ }, Math.atan);
+ (d3.geo.gnomonic = function() {
+ return d3_geo_projection(d3_geo_gnomonic);
+ }).raw = d3_geo_gnomonic;
+ function d3_geo_mercator(λ, φ) {
+ return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];
+ }
+ d3_geo_mercator.invert = function(x, y) {
+ return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];
+ };
+ function d3_geo_mercatorProjection(project) {
+ var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;
+ m.scale = function() {
+ var v = scale.apply(m, arguments);
+ return v === m ? clipAuto ? m.clipExtent(null) : m : v;
+ };
+ m.translate = function() {
+ var v = translate.apply(m, arguments);
+ return v === m ? clipAuto ? m.clipExtent(null) : m : v;
+ };
+ m.clipExtent = function(_) {
+ var v = clipExtent.apply(m, arguments);
+ if (v === m) {
+ if (clipAuto = _ == null) {
+ var k = π * scale(), t = translate();
+ clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);
+ }
+ } else if (clipAuto) {
+ v = null;
+ }
+ return v;
+ };
+ return m.clipExtent(null);
+ }
+ (d3.geo.mercator = function() {
+ return d3_geo_mercatorProjection(d3_geo_mercator);
+ }).raw = d3_geo_mercator;
+ var d3_geo_orthographic = d3_geo_azimuthal(function() {
+ return 1;
+ }, Math.asin);
+ (d3.geo.orthographic = function() {
+ return d3_geo_projection(d3_geo_orthographic);
+ }).raw = d3_geo_orthographic;
+ var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {
+ return 1 / (1 + cosλcosφ);
+ }, function(ρ) {
+ return 2 * Math.atan(ρ);
+ });
+ (d3.geo.stereographic = function() {
+ return d3_geo_projection(d3_geo_stereographic);
+ }).raw = d3_geo_stereographic;
+ function d3_geo_transverseMercator(λ, φ) {
+ return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];
+ }
+ d3_geo_transverseMercator.invert = function(x, y) {
+ return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];
+ };
+ (d3.geo.transverseMercator = function() {
+ var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;
+ projection.center = function(_) {
+ return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);
+ };
+ projection.rotate = function(_) {
+ return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(),
+ [ _[0], _[1], _[2] - 90 ]);
+ };
+ return rotate([ 0, 0, 90 ]);
+ }).raw = d3_geo_transverseMercator;
+ d3.geom = {};
+ function d3_geom_pointX(d) {
+ return d[0];
+ }
+ function d3_geom_pointY(d) {
+ return d[1];
+ }
+ d3.geom.hull = function(vertices) {
+ var x = d3_geom_pointX, y = d3_geom_pointY;
+ if (arguments.length) return hull(vertices);
+ function hull(data) {
+ if (data.length < 3) return [];
+ var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];
+ for (i = 0; i < n; i++) {
+ points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);
+ }
+ points.sort(d3_geom_hullOrder);
+ for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);
+ var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);
+ var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];
+ for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);
+ for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);
+ return polygon;
+ }
+ hull.x = function(_) {
+ return arguments.length ? (x = _, hull) : x;
+ };
+ hull.y = function(_) {
+ return arguments.length ? (y = _, hull) : y;
+ };
+ return hull;
+ };
+ function d3_geom_hullUpper(points) {
+ var n = points.length, hull = [ 0, 1 ], hs = 2;
+ for (var i = 2; i < n; i++) {
+ while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;
+ hull[hs++] = i;
+ }
+ return hull.slice(0, hs);
+ }
+ function d3_geom_hullOrder(a, b) {
+ return a[0] - b[0] || a[1] - b[1];
+ }
+ d3.geom.polygon = function(coordinates) {
+ d3_subclass(coordinates, d3_geom_polygonPrototype);
+ return coordinates;
+ };
+ var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];
+ d3_geom_polygonPrototype.area = function() {
+ var i = -1, n = this.length, a, b = this[n - 1], area = 0;
+ while (++i < n) {
+ a = b;
+ b = this[i];
+ area += a[1] * b[0] - a[0] * b[1];
+ }
+ return area * .5;
+ };
+ d3_geom_polygonPrototype.centroid = function(k) {
+ var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;
+ if (!arguments.length) k = -1 / (6 * this.area());
+ while (++i < n) {
+ a = b;
+ b = this[i];
+ c = a[0] * b[1] - b[0] * a[1];
+ x += (a[0] + b[0]) * c;
+ y += (a[1] + b[1]) * c;
+ }
+ return [ x * k, y * k ];
+ };
+ d3_geom_polygonPrototype.clip = function(subject) {
+ var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;
+ while (++i < n) {
+ input = subject.slice();
+ subject.length = 0;
+ b = this[i];
+ c = input[(m = input.length - closed) - 1];
+ j = -1;
+ while (++j < m) {
+ d = input[j];
+ if (d3_geom_polygonInside(d, a, b)) {
+ if (!d3_geom_polygonInside(c, a, b)) {
+ subject.push(d3_geom_polygonIntersect(c, d, a, b));
+ }
+ subject.push(d);
+ } else if (d3_geom_polygonInside(c, a, b)) {
+ subject.push(d3_geom_polygonIntersect(c, d, a, b));
+ }
+ c = d;
+ }
+ if (closed) subject.push(subject[0]);
+ a = b;
+ }
+ return subject;
+ };
+ function d3_geom_polygonInside(p, a, b) {
+ return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
+ }
+ function d3_geom_polygonIntersect(c, d, a, b) {
+ var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
+ return [ x1 + ua * x21, y1 + ua * y21 ];
+ }
+ function d3_geom_polygonClosed(coordinates) {
+ var a = coordinates[0], b = coordinates[coordinates.length - 1];
+ return !(a[0] - b[0] || a[1] - b[1]);
+ }
+ var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];
+ function d3_geom_voronoiBeach() {
+ d3_geom_voronoiRedBlackNode(this);
+ this.edge = this.site = this.circle = null;
+ }
+ function d3_geom_voronoiCreateBeach(site) {
+ var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();
+ beach.site = site;
+ return beach;
+ }
+ function d3_geom_voronoiDetachBeach(beach) {
+ d3_geom_voronoiDetachCircle(beach);
+ d3_geom_voronoiBeaches.remove(beach);
+ d3_geom_voronoiBeachPool.push(beach);
+ d3_geom_voronoiRedBlackNode(beach);
+ }
+ function d3_geom_voronoiRemoveBeach(beach) {
+ var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {
+ x: x,
+ y: y
+ }, previous = beach.P, next = beach.N, disappearing = [ beach ];
+ d3_geom_voronoiDetachBeach(beach);
+ var lArc = previous;
+ while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {
+ previous = lArc.P;
+ disappearing.unshift(lArc);
+ d3_geom_voronoiDetachBeach(lArc);
+ lArc = previous;
+ }
+ disappearing.unshift(lArc);
+ d3_geom_voronoiDetachCircle(lArc);
+ var rArc = next;
+ while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {
+ next = rArc.N;
+ disappearing.push(rArc);
+ d3_geom_voronoiDetachBeach(rArc);
+ rArc = next;
+ }
+ disappearing.push(rArc);
+ d3_geom_voronoiDetachCircle(rArc);
+ var nArcs = disappearing.length, iArc;
+ for (iArc = 1; iArc < nArcs; ++iArc) {
+ rArc = disappearing[iArc];
+ lArc = disappearing[iArc - 1];
+ d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);
+ }
+ lArc = disappearing[0];
+ rArc = disappearing[nArcs - 1];
+ rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);
+ d3_geom_voronoiAttachCircle(lArc);
+ d3_geom_voronoiAttachCircle(rArc);
+ }
+ function d3_geom_voronoiAddBeach(site) {
+ var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;
+ while (node) {
+ dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;
+ if (dxl > ε) node = node.L; else {
+ dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);
+ if (dxr > ε) {
+ if (!node.R) {
+ lArc = node;
+ break;
+ }
+ node = node.R;
+ } else {
+ if (dxl > -ε) {
+ lArc = node.P;
+ rArc = node;
+ } else if (dxr > -ε) {
+ lArc = node;
+ rArc = node.N;
+ } else {
+ lArc = rArc = node;
+ }
+ break;
+ }
+ }
+ }
+ var newArc = d3_geom_voronoiCreateBeach(site);
+ d3_geom_voronoiBeaches.insert(lArc, newArc);
+ if (!lArc && !rArc) return;
+ if (lArc === rArc) {
+ d3_geom_voronoiDetachCircle(lArc);
+ rArc = d3_geom_voronoiCreateBeach(lArc.site);
+ d3_geom_voronoiBeaches.insert(newArc, rArc);
+ newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);
+ d3_geom_voronoiAttachCircle(lArc);
+ d3_geom_voronoiAttachCircle(rArc);
+ return;
+ }
+ if (!rArc) {
+ newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);
+ return;
+ }
+ d3_geom_voronoiDetachCircle(lArc);
+ d3_geom_voronoiDetachCircle(rArc);
+ var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {
+ x: (cy * hb - by * hc) / d + ax,
+ y: (bx * hc - cx * hb) / d + ay
+ };
+ d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);
+ newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);
+ rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);
+ d3_geom_voronoiAttachCircle(lArc);
+ d3_geom_voronoiAttachCircle(rArc);
+ }
+ function d3_geom_voronoiLeftBreakPoint(arc, directrix) {
+ var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;
+ if (!pby2) return rfocx;
+ var lArc = arc.P;
+ if (!lArc) return -Infinity;
+ site = lArc.site;
+ var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;
+ if (!plby2) return lfocx;
+ var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;
+ if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;
+ return (rfocx + lfocx) / 2;
+ }
+ function d3_geom_voronoiRightBreakPoint(arc, directrix) {
+ var rArc = arc.N;
+ if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);
+ var site = arc.site;
+ return site.y === directrix ? site.x : Infinity;
+ }
+ function d3_geom_voronoiCell(site) {
+ this.site = site;
+ this.edges = [];
+ }
+ d3_geom_voronoiCell.prototype.prepare = function() {
+ var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;
+ while (iHalfEdge--) {
+ edge = halfEdges[iHalfEdge].edge;
+ if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);
+ }
+ halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);
+ return halfEdges.length;
+ };
+ function d3_geom_voronoiCloseCells(extent) {
+ var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;
+ while (iCell--) {
+ cell = cells[iCell];
+ if (!cell || !cell.prepare()) continue;
+ halfEdges = cell.edges;
+ nHalfEdges = halfEdges.length;
+ iHalfEdge = 0;
+ while (iHalfEdge < nHalfEdges) {
+ end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;
+ start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;
+ if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {
+ halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {
+ x: x0,
+ y: abs(x2 - x0) < ε ? y2 : y1
+ } : abs(y3 - y1) < ε && x1 - x3 > ε ? {
+ x: abs(y2 - y1) < ε ? x2 : x1,
+ y: y1
+ } : abs(x3 - x1) < ε && y3 - y0 > ε ? {
+ x: x1,
+ y: abs(x2 - x1) < ε ? y2 : y0
+ } : abs(y3 - y0) < ε && x3 - x0 > ε ? {
+ x: abs(y2 - y0) < ε ? x2 : x0,
+ y: y0
+ } : null), cell.site, null));
+ ++nHalfEdges;
+ }
+ }
+ }
+ }
+ function d3_geom_voronoiHalfEdgeOrder(a, b) {
+ return b.angle - a.angle;
+ }
+ function d3_geom_voronoiCircle() {
+ d3_geom_voronoiRedBlackNode(this);
+ this.x = this.y = this.arc = this.site = this.cy = null;
+ }
+ function d3_geom_voronoiAttachCircle(arc) {
+ var lArc = arc.P, rArc = arc.N;
+ if (!lArc || !rArc) return;
+ var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;
+ if (lSite === rSite) return;
+ var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;
+ var d = 2 * (ax * cy - ay * cx);
+ if (d >= -ε2) return;
+ var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;
+ var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();
+ circle.arc = arc;
+ circle.site = cSite;
+ circle.x = x + bx;
+ circle.y = cy + Math.sqrt(x * x + y * y);
+ circle.cy = cy;
+ arc.circle = circle;
+ var before = null, node = d3_geom_voronoiCircles._;
+ while (node) {
+ if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {
+ if (node.L) node = node.L; else {
+ before = node.P;
+ break;
+ }
+ } else {
+ if (node.R) node = node.R; else {
+ before = node;
+ break;
+ }
+ }
+ }
+ d3_geom_voronoiCircles.insert(before, circle);
+ if (!before) d3_geom_voronoiFirstCircle = circle;
+ }
+ function d3_geom_voronoiDetachCircle(arc) {
+ var circle = arc.circle;
+ if (circle) {
+ if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;
+ d3_geom_voronoiCircles.remove(circle);
+ d3_geom_voronoiCirclePool.push(circle);
+ d3_geom_voronoiRedBlackNode(circle);
+ arc.circle = null;
+ }
+ }
+ function d3_geom_voronoiClipEdges(extent) {
+ var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;
+ while (i--) {
+ e = edges[i];
+ if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {
+ e.a = e.b = null;
+ edges.splice(i, 1);
+ }
+ }
+ }
+ function d3_geom_voronoiConnectEdge(edge, extent) {
+ var vb = edge.b;
+ if (vb) return true;
+ var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;
+ if (ry === ly) {
+ if (fx < x0 || fx >= x1) return;
+ if (lx > rx) {
+ if (!va) va = {
+ x: fx,
+ y: y0
+ }; else if (va.y >= y1) return;
+ vb = {
+ x: fx,
+ y: y1
+ };
+ } else {
+ if (!va) va = {
+ x: fx,
+ y: y1
+ }; else if (va.y < y0) return;
+ vb = {
+ x: fx,
+ y: y0
+ };
+ }
+ } else {
+ fm = (lx - rx) / (ry - ly);
+ fb = fy - fm * fx;
+ if (fm < -1 || fm > 1) {
+ if (lx > rx) {
+ if (!va) va = {
+ x: (y0 - fb) / fm,
+ y: y0
+ }; else if (va.y >= y1) return;
+ vb = {
+ x: (y1 - fb) / fm,
+ y: y1
+ };
+ } else {
+ if (!va) va = {
+ x: (y1 - fb) / fm,
+ y: y1
+ }; else if (va.y < y0) return;
+ vb = {
+ x: (y0 - fb) / fm,
+ y: y0
+ };
+ }
+ } else {
+ if (ly < ry) {
+ if (!va) va = {
+ x: x0,
+ y: fm * x0 + fb
+ }; else if (va.x >= x1) return;
+ vb = {
+ x: x1,
+ y: fm * x1 + fb
+ };
+ } else {
+ if (!va) va = {
+ x: x1,
+ y: fm * x1 + fb
+ }; else if (va.x < x0) return;
+ vb = {
+ x: x0,
+ y: fm * x0 + fb
+ };
+ }
+ }
+ }
+ edge.a = va;
+ edge.b = vb;
+ return true;
+ }
+ function d3_geom_voronoiEdge(lSite, rSite) {
+ this.l = lSite;
+ this.r = rSite;
+ this.a = this.b = null;
+ }
+ function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {
+ var edge = new d3_geom_voronoiEdge(lSite, rSite);
+ d3_geom_voronoiEdges.push(edge);
+ if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);
+ if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);
+ d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));
+ d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));
+ return edge;
+ }
+ function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {
+ var edge = new d3_geom_voronoiEdge(lSite, null);
+ edge.a = va;
+ edge.b = vb;
+ d3_geom_voronoiEdges.push(edge);
+ return edge;
+ }
+ function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {
+ if (!edge.a && !edge.b) {
+ edge.a = vertex;
+ edge.l = lSite;
+ edge.r = rSite;
+ } else if (edge.l === rSite) {
+ edge.b = vertex;
+ } else {
+ edge.a = vertex;
+ }
+ }
+ function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {
+ var va = edge.a, vb = edge.b;
+ this.edge = edge;
+ this.site = lSite;
+ this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);
+ }
+ d3_geom_voronoiHalfEdge.prototype = {
+ start: function() {
+ return this.edge.l === this.site ? this.edge.a : this.edge.b;
+ },
+ end: function() {
+ return this.edge.l === this.site ? this.edge.b : this.edge.a;
+ }
+ };
+ function d3_geom_voronoiRedBlackTree() {
+ this._ = null;
+ }
+ function d3_geom_voronoiRedBlackNode(node) {
+ node.U = node.C = node.L = node.R = node.P = node.N = null;
+ }
+ d3_geom_voronoiRedBlackTree.prototype = {
+ insert: function(after, node) {
+ var parent, grandpa, uncle;
+ if (after) {
+ node.P = after;
+ node.N = after.N;
+ if (after.N) after.N.P = node;
+ after.N = node;
+ if (after.R) {
+ after = after.R;
+ while (after.L) after = after.L;
+ after.L = node;
+ } else {
+ after.R = node;
+ }
+ parent = after;
+ } else if (this._) {
+ after = d3_geom_voronoiRedBlackFirst(this._);
+ node.P = null;
+ node.N = after;
+ after.P = after.L = node;
+ parent = after;
+ } else {
+ node.P = node.N = null;
+ this._ = node;
+ parent = null;
+ }
+ node.L = node.R = null;
+ node.U = parent;
+ node.C = true;
+ after = node;
+ while (parent && parent.C) {
+ grandpa = parent.U;
+ if (parent === grandpa.L) {
+ uncle = grandpa.R;
+ if (uncle && uncle.C) {
+ parent.C = uncle.C = false;
+ grandpa.C = true;
+ after = grandpa;
+ } else {
+ if (after === parent.R) {
+ d3_geom_voronoiRedBlackRotateLeft(this, parent);
+ after = parent;
+ parent = after.U;
+ }
+ parent.C = false;
+ grandpa.C = true;
+ d3_geom_voronoiRedBlackRotateRight(this, grandpa);
+ }
+ } else {
+ uncle = grandpa.L;
+ if (uncle && uncle.C) {
+ parent.C = uncle.C = false;
+ grandpa.C = true;
+ after = grandpa;
+ } else {
+ if (after === parent.L) {
+ d3_geom_voronoiRedBlackRotateRight(this, parent);
+ after = parent;
+ parent = after.U;
+ }
+ parent.C = false;
+ grandpa.C = true;
+ d3_geom_voronoiRedBlackRotateLeft(this, grandpa);
+ }
+ }
+ parent = after.U;
+ }
+ this._.C = false;
+ },
+ remove: function(node) {
+ if (node.N) node.N.P = node.P;
+ if (node.P) node.P.N = node.N;
+ node.N = node.P = null;
+ var parent = node.U, sibling, left = node.L, right = node.R, next, red;
+ if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);
+ if (parent) {
+ if (parent.L === node) parent.L = next; else parent.R = next;
+ } else {
+ this._ = next;
+ }
+ if (left && right) {
+ red = next.C;
+ next.C = node.C;
+ next.L = left;
+ left.U = next;
+ if (next !== right) {
+ parent = next.U;
+ next.U = node.U;
+ node = next.R;
+ parent.L = node;
+ next.R = right;
+ right.U = next;
+ } else {
+ next.U = parent;
+ parent = next;
+ node = next.R;
+ }
+ } else {
+ red = node.C;
+ node = next;
+ }
+ if (node) node.U = parent;
+ if (red) return;
+ if (node && node.C) {
+ node.C = false;
+ return;
+ }
+ do {
+ if (node === this._) break;
+ if (node === parent.L) {
+ sibling = parent.R;
+ if (sibling.C) {
+ sibling.C = false;
+ parent.C = true;
+ d3_geom_voronoiRedBlackRotateLeft(this, parent);
+ sibling = parent.R;
+ }
+ if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {
+ if (!sibling.R || !sibling.R.C) {
+ sibling.L.C = false;
+ sibling.C = true;
+ d3_geom_voronoiRedBlackRotateRight(this, sibling);
+ sibling = parent.R;
+ }
+ sibling.C = parent.C;
+ parent.C = sibling.R.C = false;
+ d3_geom_voronoiRedBlackRotateLeft(this, parent);
+ node = this._;
+ break;
+ }
+ } else {
+ sibling = parent.L;
+ if (sibling.C) {
+ sibling.C = false;
+ parent.C = true;
+ d3_geom_voronoiRedBlackRotateRight(this, parent);
+ sibling = parent.L;
+ }
+ if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {
+ if (!sibling.L || !sibling.L.C) {
+ sibling.R.C = false;
+ sibling.C = true;
+ d3_geom_voronoiRedBlackRotateLeft(this, sibling);
+ sibling = parent.L;
+ }
+ sibling.C = parent.C;
+ parent.C = sibling.L.C = false;
+ d3_geom_voronoiRedBlackRotateRight(this, parent);
+ node = this._;
+ break;
+ }
+ }
+ sibling.C = true;
+ node = parent;
+ parent = parent.U;
+ } while (!node.C);
+ if (node) node.C = false;
+ }
+ };
+ function d3_geom_voronoiRedBlackRotateLeft(tree, node) {
+ var p = node, q = node.R, parent = p.U;
+ if (parent) {
+ if (parent.L === p) parent.L = q; else parent.R = q;
+ } else {
+ tree._ = q;
+ }
+ q.U = parent;
+ p.U = q;
+ p.R = q.L;
+ if (p.R) p.R.U = p;
+ q.L = p;
+ }
+ function d3_geom_voronoiRedBlackRotateRight(tree, node) {
+ var p = node, q = node.L, parent = p.U;
+ if (parent) {
+ if (parent.L === p) parent.L = q; else parent.R = q;
+ } else {
+ tree._ = q;
+ }
+ q.U = parent;
+ p.U = q;
+ p.L = q.R;
+ if (p.L) p.L.U = p;
+ q.R = p;
+ }
+ function d3_geom_voronoiRedBlackFirst(node) {
+ while (node.L) node = node.L;
+ return node;
+ }
+ function d3_geom_voronoi(sites, bbox) {
+ var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;
+ d3_geom_voronoiEdges = [];
+ d3_geom_voronoiCells = new Array(sites.length);
+ d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();
+ d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();
+ while (true) {
+ circle = d3_geom_voronoiFirstCircle;
+ if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {
+ if (site.x !== x0 || site.y !== y0) {
+ d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);
+ d3_geom_voronoiAddBeach(site);
+ x0 = site.x, y0 = site.y;
+ }
+ site = sites.pop();
+ } else if (circle) {
+ d3_geom_voronoiRemoveBeach(circle.arc);
+ } else {
+ break;
+ }
+ }
+ if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);
+ var diagram = {
+ cells: d3_geom_voronoiCells,
+ edges: d3_geom_voronoiEdges
+ };
+ d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;
+ return diagram;
+ }
+ function d3_geom_voronoiVertexOrder(a, b) {
+ return b.y - a.y || b.x - a.x;
+ }
+ d3.geom.voronoi = function(points) {
+ var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;
+ if (points) return voronoi(points);
+ function voronoi(data) {
+ var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];
+ d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {
+ var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {
+ var s = e.start();
+ return [ s.x, s.y ];
+ }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];
+ polygon.point = data[i];
+ });
+ return polygons;
+ }
+ function sites(data) {
+ return data.map(function(d, i) {
+ return {
+ x: Math.round(fx(d, i) / ε) * ε,
+ y: Math.round(fy(d, i) / ε) * ε,
+ i: i
+ };
+ });
+ }
+ voronoi.links = function(data) {
+ return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {
+ return edge.l && edge.r;
+ }).map(function(edge) {
+ return {
+ source: data[edge.l.i],
+ target: data[edge.r.i]
+ };
+ });
+ };
+ voronoi.triangles = function(data) {
+ var triangles = [];
+ d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {
+ var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;
+ while (++j < m) {
+ e0 = e1;
+ s0 = s1;
+ e1 = edges[j].edge;
+ s1 = e1.l === site ? e1.r : e1.l;
+ if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {
+ triangles.push([ data[i], data[s0.i], data[s1.i] ]);
+ }
+ }
+ });
+ return triangles;
+ };
+ voronoi.x = function(_) {
+ return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;
+ };
+ voronoi.y = function(_) {
+ return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;
+ };
+ voronoi.clipExtent = function(_) {
+ if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;
+ clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;
+ return voronoi;
+ };
+ voronoi.size = function(_) {
+ if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];
+ return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);
+ };
+ return voronoi;
+ };
+ var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];
+ function d3_geom_voronoiTriangleArea(a, b, c) {
+ return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);
+ }
+ d3.geom.delaunay = function(vertices) {
+ return d3.geom.voronoi().triangles(vertices);
+ };
+ d3.geom.quadtree = function(points, x1, y1, x2, y2) {
+ var x = d3_geom_pointX, y = d3_geom_pointY, compat;
+ if (compat = arguments.length) {
+ x = d3_geom_quadtreeCompatX;
+ y = d3_geom_quadtreeCompatY;
+ if (compat === 3) {
+ y2 = y1;
+ x2 = x1;
+ y1 = x1 = 0;
+ }
+ return quadtree(points);
+ }
+ function quadtree(data) {
+ var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;
+ if (x1 != null) {
+ x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;
+ } else {
+ x2_ = y2_ = -(x1_ = y1_ = Infinity);
+ xs = [], ys = [];
+ n = data.length;
+ if (compat) for (i = 0; i < n; ++i) {
+ d = data[i];
+ if (d.x < x1_) x1_ = d.x;
+ if (d.y < y1_) y1_ = d.y;
+ if (d.x > x2_) x2_ = d.x;
+ if (d.y > y2_) y2_ = d.y;
+ xs.push(d.x);
+ ys.push(d.y);
+ } else for (i = 0; i < n; ++i) {
+ var x_ = +fx(d = data[i], i), y_ = +fy(d, i);
+ if (x_ < x1_) x1_ = x_;
+ if (y_ < y1_) y1_ = y_;
+ if (x_ > x2_) x2_ = x_;
+ if (y_ > y2_) y2_ = y_;
+ xs.push(x_);
+ ys.push(y_);
+ }
+ }
+ var dx = x2_ - x1_, dy = y2_ - y1_;
+ if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;
+ function insert(n, d, x, y, x1, y1, x2, y2) {
+ if (isNaN(x) || isNaN(y)) return;
+ if (n.leaf) {
+ var nx = n.x, ny = n.y;
+ if (nx != null) {
+ if (abs(nx - x) + abs(ny - y) < .01) {
+ insertChild(n, d, x, y, x1, y1, x2, y2);
+ } else {
+ var nPoint = n.point;
+ n.x = n.y = n.point = null;
+ insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);
+ insertChild(n, d, x, y, x1, y1, x2, y2);
+ }
+ } else {
+ n.x = x, n.y = y, n.point = d;
+ }
+ } else {
+ insertChild(n, d, x, y, x1, y1, x2, y2);
+ }
+ }
+ function insertChild(n, d, x, y, x1, y1, x2, y2) {
+ var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;
+ n.leaf = false;
+ n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
+ if (right) x1 = xm; else x2 = xm;
+ if (below) y1 = ym; else y2 = ym;
+ insert(n, d, x, y, x1, y1, x2, y2);
+ }
+ var root = d3_geom_quadtreeNode();
+ root.add = function(d) {
+ insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);
+ };
+ root.visit = function(f) {
+ d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);
+ };
+ root.find = function(point) {
+ return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);
+ };
+ i = -1;
+ if (x1 == null) {
+ while (++i < n) {
+ insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);
+ }
+ --i;
+ } else data.forEach(root.add);
+ xs = ys = data = d = null;
+ return root;
+ }
+ quadtree.x = function(_) {
+ return arguments.length ? (x = _, quadtree) : x;
+ };
+ quadtree.y = function(_) {
+ return arguments.length ? (y = _, quadtree) : y;
+ };
+ quadtree.extent = function(_) {
+ if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];
+ if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0],
+ y2 = +_[1][1];
+ return quadtree;
+ };
+ quadtree.size = function(_) {
+ if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];
+ if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];
+ return quadtree;
+ };
+ return quadtree;
+ };
+ function d3_geom_quadtreeCompatX(d) {
+ return d.x;
+ }
+ function d3_geom_quadtreeCompatY(d) {
+ return d.y;
+ }
+ function d3_geom_quadtreeNode() {
+ return {
+ leaf: true,
+ nodes: [],
+ point: null,
+ x: null,
+ y: null
+ };
+ }
+ function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
+ if (!f(node, x1, y1, x2, y2)) {
+ var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;
+ if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);
+ if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);
+ if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);
+ if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
+ }
+ }
+ function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {
+ var minDistance2 = Infinity, closestPoint;
+ (function find(node, x1, y1, x2, y2) {
+ if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;
+ if (point = node.point) {
+ var point, dx = x - point[0], dy = y - point[1], distance2 = dx * dx + dy * dy;
+ if (distance2 < minDistance2) {
+ var distance = Math.sqrt(minDistance2 = distance2);
+ x0 = x - distance, y0 = y - distance;
+ x3 = x + distance, y3 = y + distance;
+ closestPoint = point;
+ }
+ }
+ var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;
+ for (var i = below << 1 | right, j = i + 4; i < j; ++i) {
+ if (node = children[i & 3]) switch (i & 3) {
+ case 0:
+ find(node, x1, y1, xm, ym);
+ break;
+
+ case 1:
+ find(node, xm, y1, x2, ym);
+ break;
+
+ case 2:
+ find(node, x1, ym, xm, y2);
+ break;
+
+ case 3:
+ find(node, xm, ym, x2, y2);
+ break;
+ }
+ }
+ })(root, x0, y0, x3, y3);
+ return closestPoint;
+ }
+ d3.interpolateRgb = d3_interpolateRgb;
+ function d3_interpolateRgb(a, b) {
+ a = d3.rgb(a);
+ b = d3.rgb(b);
+ var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;
+ return function(t) {
+ return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));
+ };
+ }
+ d3.interpolateObject = d3_interpolateObject;
+ function d3_interpolateObject(a, b) {
+ var i = {}, c = {}, k;
+ for (k in a) {
+ if (k in b) {
+ i[k] = d3_interpolate(a[k], b[k]);
+ } else {
+ c[k] = a[k];
+ }
+ }
+ for (k in b) {
+ if (!(k in a)) {
+ c[k] = b[k];
+ }
+ }
+ return function(t) {
+ for (k in i) c[k] = i[k](t);
+ return c;
+ };
+ }
+ d3.interpolateNumber = d3_interpolateNumber;
+ function d3_interpolateNumber(a, b) {
+ a = +a, b = +b;
+ return function(t) {
+ return a * (1 - t) + b * t;
+ };
+ }
+ d3.interpolateString = d3_interpolateString;
+ function d3_interpolateString(a, b) {
+ var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];
+ a = a + "", b = b + "";
+ while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {
+ if ((bs = bm.index) > bi) {
+ bs = b.slice(bi, bs);
+ if (s[i]) s[i] += bs; else s[++i] = bs;
+ }
+ if ((am = am[0]) === (bm = bm[0])) {
+ if (s[i]) s[i] += bm; else s[++i] = bm;
+ } else {
+ s[++i] = null;
+ q.push({
+ i: i,
+ x: d3_interpolateNumber(am, bm)
+ });
+ }
+ bi = d3_interpolate_numberB.lastIndex;
+ }
+ if (bi < b.length) {
+ bs = b.slice(bi);
+ if (s[i]) s[i] += bs; else s[++i] = bs;
+ }
+ return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {
+ return b(t) + "";
+ }) : function() {
+ return b;
+ } : (b = q.length, function(t) {
+ for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
+ return s.join("");
+ });
+ }
+ var d3_interpolate_numberA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, "g");
+ d3.interpolate = d3_interpolate;
+ function d3_interpolate(a, b) {
+ var i = d3.interpolators.length, f;
+ while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;
+ return f;
+ }
+ d3.interpolators = [ function(a, b) {
+ var t = typeof b;
+ return (t === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === "object" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);
+ } ];
+ d3.interpolateArray = d3_interpolateArray;
+ function d3_interpolateArray(a, b) {
+ var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;
+ for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));
+ for (;i < na; ++i) c[i] = a[i];
+ for (;i < nb; ++i) c[i] = b[i];
+ return function(t) {
+ for (i = 0; i < n0; ++i) c[i] = x[i](t);
+ return c;
+ };
+ }
+ var d3_ease_default = function() {
+ return d3_identity;
+ };
+ var d3_ease = d3.map({
+ linear: d3_ease_default,
+ poly: d3_ease_poly,
+ quad: function() {
+ return d3_ease_quad;
+ },
+ cubic: function() {
+ return d3_ease_cubic;
+ },
+ sin: function() {
+ return d3_ease_sin;
+ },
+ exp: function() {
+ return d3_ease_exp;
+ },
+ circle: function() {
+ return d3_ease_circle;
+ },
+ elastic: d3_ease_elastic,
+ back: d3_ease_back,
+ bounce: function() {
+ return d3_ease_bounce;
+ }
+ });
+ var d3_ease_mode = d3.map({
+ "in": d3_identity,
+ out: d3_ease_reverse,
+ "in-out": d3_ease_reflect,
+ "out-in": function(f) {
+ return d3_ease_reflect(d3_ease_reverse(f));
+ }
+ });
+ d3.ease = function(name) {
+ var i = name.indexOf("-"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : "in";
+ t = d3_ease.get(t) || d3_ease_default;
+ m = d3_ease_mode.get(m) || d3_identity;
+ return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
+ };
+ function d3_ease_clamp(f) {
+ return function(t) {
+ return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
+ };
+ }
+ function d3_ease_reverse(f) {
+ return function(t) {
+ return 1 - f(1 - t);
+ };
+ }
+ function d3_ease_reflect(f) {
+ return function(t) {
+ return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));
+ };
+ }
+ function d3_ease_quad(t) {
+ return t * t;
+ }
+ function d3_ease_cubic(t) {
+ return t * t * t;
+ }
+ function d3_ease_cubicInOut(t) {
+ if (t <= 0) return 0;
+ if (t >= 1) return 1;
+ var t2 = t * t, t3 = t2 * t;
+ return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
+ }
+ function d3_ease_poly(e) {
+ return function(t) {
+ return Math.pow(t, e);
+ };
+ }
+ function d3_ease_sin(t) {
+ return 1 - Math.cos(t * halfπ);
+ }
+ function d3_ease_exp(t) {
+ return Math.pow(2, 10 * (t - 1));
+ }
+ function d3_ease_circle(t) {
+ return 1 - Math.sqrt(1 - t * t);
+ }
+ function d3_ease_elastic(a, p) {
+ var s;
+ if (arguments.length < 2) p = .45;
+ if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;
+ return function(t) {
+ return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);
+ };
+ }
+ function d3_ease_back(s) {
+ if (!s) s = 1.70158;
+ return function(t) {
+ return t * t * ((s + 1) * t - s);
+ };
+ }
+ function d3_ease_bounce(t) {
+ return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
+ }
+ d3.interpolateHcl = d3_interpolateHcl;
+ function d3_interpolateHcl(a, b) {
+ a = d3.hcl(a);
+ b = d3.hcl(b);
+ var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;
+ if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;
+ if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
+ return function(t) {
+ return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + "";
+ };
+ }
+ d3.interpolateHsl = d3_interpolateHsl;
+ function d3_interpolateHsl(a, b) {
+ a = d3.hsl(a);
+ b = d3.hsl(b);
+ var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;
+ if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;
+ if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
+ return function(t) {
+ return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + "";
+ };
+ }
+ d3.interpolateLab = d3_interpolateLab;
+ function d3_interpolateLab(a, b) {
+ a = d3.lab(a);
+ b = d3.lab(b);
+ var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;
+ return function(t) {
+ return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
+ };
+ }
+ d3.interpolateRound = d3_interpolateRound;
+ function d3_interpolateRound(a, b) {
+ b -= a;
+ return function(t) {
+ return Math.round(a + b * t);
+ };
+ }
+ d3.transform = function(string) {
+ var g = d3_document.createElementNS(d3.ns.prefix.svg, "g");
+ return (d3.transform = function(string) {
+ if (string != null) {
+ g.setAttribute("transform", string);
+ var t = g.transform.baseVal.consolidate();
+ }
+ return new d3_transform(t ? t.matrix : d3_transformIdentity);
+ })(string);
+ };
+ function d3_transform(m) {
+ var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
+ if (r0[0] * r1[1] < r1[0] * r0[1]) {
+ r0[0] *= -1;
+ r0[1] *= -1;
+ kx *= -1;
+ kz *= -1;
+ }
+ this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;
+ this.translate = [ m.e, m.f ];
+ this.scale = [ kx, ky ];
+ this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;
+ }
+ d3_transform.prototype.toString = function() {
+ return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
+ };
+ function d3_transformDot(a, b) {
+ return a[0] * b[0] + a[1] * b[1];
+ }
+ function d3_transformNormalize(a) {
+ var k = Math.sqrt(d3_transformDot(a, a));
+ if (k) {
+ a[0] /= k;
+ a[1] /= k;
+ }
+ return k;
+ }
+ function d3_transformCombine(a, b, k) {
+ a[0] += k * b[0];
+ a[1] += k * b[1];
+ return a;
+ }
+ var d3_transformIdentity = {
+ a: 1,
+ b: 0,
+ c: 0,
+ d: 1,
+ e: 0,
+ f: 0
+ };
+ d3.interpolateTransform = d3_interpolateTransform;
+ function d3_interpolateTransform(a, b) {
+ var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale;
+ if (ta[0] != tb[0] || ta[1] != tb[1]) {
+ s.push("translate(", null, ",", null, ")");
+ q.push({
+ i: 1,
+ x: d3_interpolateNumber(ta[0], tb[0])
+ }, {
+ i: 3,
+ x: d3_interpolateNumber(ta[1], tb[1])
+ });
+ } else if (tb[0] || tb[1]) {
+ s.push("translate(" + tb + ")");
+ } else {
+ s.push("");
+ }
+ if (ra != rb) {
+ if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;
+ q.push({
+ i: s.push(s.pop() + "rotate(", null, ")") - 2,
+ x: d3_interpolateNumber(ra, rb)
+ });
+ } else if (rb) {
+ s.push(s.pop() + "rotate(" + rb + ")");
+ }
+ if (wa != wb) {
+ q.push({
+ i: s.push(s.pop() + "skewX(", null, ")") - 2,
+ x: d3_interpolateNumber(wa, wb)
+ });
+ } else if (wb) {
+ s.push(s.pop() + "skewX(" + wb + ")");
+ }
+ if (ka[0] != kb[0] || ka[1] != kb[1]) {
+ n = s.push(s.pop() + "scale(", null, ",", null, ")");
+ q.push({
+ i: n - 4,
+ x: d3_interpolateNumber(ka[0], kb[0])
+ }, {
+ i: n - 2,
+ x: d3_interpolateNumber(ka[1], kb[1])
+ });
+ } else if (kb[0] != 1 || kb[1] != 1) {
+ s.push(s.pop() + "scale(" + kb + ")");
+ }
+ n = q.length;
+ return function(t) {
+ var i = -1, o;
+ while (++i < n) s[(o = q[i]).i] = o.x(t);
+ return s.join("");
+ };
+ }
+ function d3_uninterpolateNumber(a, b) {
+ b = (b -= a = +a) || 1 / b;
+ return function(x) {
+ return (x - a) / b;
+ };
+ }
+ function d3_uninterpolateClamp(a, b) {
+ b = (b -= a = +a) || 1 / b;
+ return function(x) {
+ return Math.max(0, Math.min(1, (x - a) / b));
+ };
+ }
+ d3.layout = {};
+ d3.layout.bundle = function() {
+ return function(links) {
+ var paths = [], i = -1, n = links.length;
+ while (++i < n) paths.push(d3_layout_bundlePath(links[i]));
+ return paths;
+ };
+ };
+ function d3_layout_bundlePath(link) {
+ var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];
+ while (start !== lca) {
+ start = start.parent;
+ points.push(start);
+ }
+ var k = points.length;
+ while (end !== lca) {
+ points.splice(k, 0, end);
+ end = end.parent;
+ }
+ return points;
+ }
+ function d3_layout_bundleAncestors(node) {
+ var ancestors = [], parent = node.parent;
+ while (parent != null) {
+ ancestors.push(node);
+ node = parent;
+ parent = parent.parent;
+ }
+ ancestors.push(node);
+ return ancestors;
+ }
+ function d3_layout_bundleLeastCommonAncestor(a, b) {
+ if (a === b) return a;
+ var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;
+ while (aNode === bNode) {
+ sharedNode = aNode;
+ aNode = aNodes.pop();
+ bNode = bNodes.pop();
+ }
+ return sharedNode;
+ }
+ d3.layout.chord = function() {
+ var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;
+ function relayout() {
+ var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;
+ chords = [];
+ groups = [];
+ k = 0, i = -1;
+ while (++i < n) {
+ x = 0, j = -1;
+ while (++j < n) {
+ x += matrix[i][j];
+ }
+ groupSums.push(x);
+ subgroupIndex.push(d3.range(n));
+ k += x;
+ }
+ if (sortGroups) {
+ groupIndex.sort(function(a, b) {
+ return sortGroups(groupSums[a], groupSums[b]);
+ });
+ }
+ if (sortSubgroups) {
+ subgroupIndex.forEach(function(d, i) {
+ d.sort(function(a, b) {
+ return sortSubgroups(matrix[i][a], matrix[i][b]);
+ });
+ });
+ }
+ k = (τ - padding * n) / k;
+ x = 0, i = -1;
+ while (++i < n) {
+ x0 = x, j = -1;
+ while (++j < n) {
+ var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;
+ subgroups[di + "-" + dj] = {
+ index: di,
+ subindex: dj,
+ startAngle: a0,
+ endAngle: a1,
+ value: v
+ };
+ }
+ groups[di] = {
+ index: di,
+ startAngle: x0,
+ endAngle: x,
+ value: (x - x0) / k
+ };
+ x += padding;
+ }
+ i = -1;
+ while (++i < n) {
+ j = i - 1;
+ while (++j < n) {
+ var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i];
+ if (source.value || target.value) {
+ chords.push(source.value < target.value ? {
+ source: target,
+ target: source
+ } : {
+ source: source,
+ target: target
+ });
+ }
+ }
+ }
+ if (sortChords) resort();
+ }
+ function resort() {
+ chords.sort(function(a, b) {
+ return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);
+ });
+ }
+ chord.matrix = function(x) {
+ if (!arguments.length) return matrix;
+ n = (matrix = x) && matrix.length;
+ chords = groups = null;
+ return chord;
+ };
+ chord.padding = function(x) {
+ if (!arguments.length) return padding;
+ padding = x;
+ chords = groups = null;
+ return chord;
+ };
+ chord.sortGroups = function(x) {
+ if (!arguments.length) return sortGroups;
+ sortGroups = x;
+ chords = groups = null;
+ return chord;
+ };
+ chord.sortSubgroups = function(x) {
+ if (!arguments.length) return sortSubgroups;
+ sortSubgroups = x;
+ chords = null;
+ return chord;
+ };
+ chord.sortChords = function(x) {
+ if (!arguments.length) return sortChords;
+ sortChords = x;
+ if (chords) resort();
+ return chord;
+ };
+ chord.chords = function() {
+ if (!chords) relayout();
+ return chords;
+ };
+ chord.groups = function() {
+ if (!groups) relayout();
+ return groups;
+ };
+ return chord;
+ };
+ d3.layout.force = function() {
+ var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;
+ function repulse(node) {
+ return function(quad, x1, _, x2) {
+ if (quad.point !== node) {
+ var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;
+ if (dw * dw / theta2 < dn) {
+ if (dn < chargeDistance2) {
+ var k = quad.charge / dn;
+ node.px -= dx * k;
+ node.py -= dy * k;
+ }
+ return true;
+ }
+ if (quad.point && dn && dn < chargeDistance2) {
+ var k = quad.pointCharge / dn;
+ node.px -= dx * k;
+ node.py -= dy * k;
+ }
+ }
+ return !quad.charge;
+ };
+ }
+ force.tick = function() {
+ if ((alpha *= .99) < .005) {
+ event.end({
+ type: "end",
+ alpha: alpha = 0
+ });
+ return true;
+ }
+ var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;
+ for (i = 0; i < m; ++i) {
+ o = links[i];
+ s = o.source;
+ t = o.target;
+ x = t.x - s.x;
+ y = t.y - s.y;
+ if (l = x * x + y * y) {
+ l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;
+ x *= l;
+ y *= l;
+ t.x -= x * (k = s.weight / (t.weight + s.weight));
+ t.y -= y * k;
+ s.x += x * (k = 1 - k);
+ s.y += y * k;
+ }
+ }
+ if (k = alpha * gravity) {
+ x = size[0] / 2;
+ y = size[1] / 2;
+ i = -1;
+ if (k) while (++i < n) {
+ o = nodes[i];
+ o.x += (x - o.x) * k;
+ o.y += (y - o.y) * k;
+ }
+ }
+ if (charge) {
+ d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);
+ i = -1;
+ while (++i < n) {
+ if (!(o = nodes[i]).fixed) {
+ q.visit(repulse(o));
+ }
+ }
+ }
+ i = -1;
+ while (++i < n) {
+ o = nodes[i];
+ if (o.fixed) {
+ o.x = o.px;
+ o.y = o.py;
+ } else {
+ o.x -= (o.px - (o.px = o.x)) * friction;
+ o.y -= (o.py - (o.py = o.y)) * friction;
+ }
+ }
+ event.tick({
+ type: "tick",
+ alpha: alpha
+ });
+ };
+ force.nodes = function(x) {
+ if (!arguments.length) return nodes;
+ nodes = x;
+ return force;
+ };
+ force.links = function(x) {
+ if (!arguments.length) return links;
+ links = x;
+ return force;
+ };
+ force.size = function(x) {
+ if (!arguments.length) return size;
+ size = x;
+ return force;
+ };
+ force.linkDistance = function(x) {
+ if (!arguments.length) return linkDistance;
+ linkDistance = typeof x === "function" ? x : +x;
+ return force;
+ };
+ force.distance = force.linkDistance;
+ force.linkStrength = function(x) {
+ if (!arguments.length) return linkStrength;
+ linkStrength = typeof x === "function" ? x : +x;
+ return force;
+ };
+ force.friction = function(x) {
+ if (!arguments.length) return friction;
+ friction = +x;
+ return force;
+ };
+ force.charge = function(x) {
+ if (!arguments.length) return charge;
+ charge = typeof x === "function" ? x : +x;
+ return force;
+ };
+ force.chargeDistance = function(x) {
+ if (!arguments.length) return Math.sqrt(chargeDistance2);
+ chargeDistance2 = x * x;
+ return force;
+ };
+ force.gravity = function(x) {
+ if (!arguments.length) return gravity;
+ gravity = +x;
+ return force;
+ };
+ force.theta = function(x) {
+ if (!arguments.length) return Math.sqrt(theta2);
+ theta2 = x * x;
+ return force;
+ };
+ force.alpha = function(x) {
+ if (!arguments.length) return alpha;
+ x = +x;
+ if (alpha) {
+ if (x > 0) alpha = x; else alpha = 0;
+ } else if (x > 0) {
+ event.start({
+ type: "start",
+ alpha: alpha = x
+ });
+ d3.timer(force.tick);
+ }
+ return force;
+ };
+ force.start = function() {
+ var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;
+ for (i = 0; i < n; ++i) {
+ (o = nodes[i]).index = i;
+ o.weight = 0;
+ }
+ for (i = 0; i < m; ++i) {
+ o = links[i];
+ if (typeof o.source == "number") o.source = nodes[o.source];
+ if (typeof o.target == "number") o.target = nodes[o.target];
+ ++o.source.weight;
+ ++o.target.weight;
+ }
+ for (i = 0; i < n; ++i) {
+ o = nodes[i];
+ if (isNaN(o.x)) o.x = position("x", w);
+ if (isNaN(o.y)) o.y = position("y", h);
+ if (isNaN(o.px)) o.px = o.x;
+ if (isNaN(o.py)) o.py = o.y;
+ }
+ distances = [];
+ if (typeof linkDistance === "function") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;
+ strengths = [];
+ if (typeof linkStrength === "function") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;
+ charges = [];
+ if (typeof charge === "function") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;
+ function position(dimension, size) {
+ if (!neighbors) {
+ neighbors = new Array(n);
+ for (j = 0; j < n; ++j) {
+ neighbors[j] = [];
+ }
+ for (j = 0; j < m; ++j) {
+ var o = links[j];
+ neighbors[o.source.index].push(o.target);
+ neighbors[o.target.index].push(o.source);
+ }
+ }
+ var candidates = neighbors[i], j = -1, m = candidates.length, x;
+ while (++j < m) if (!isNaN(x = candidates[j][dimension])) return x;
+ return Math.random() * size;
+ }
+ return force.resume();
+ };
+ force.resume = function() {
+ return force.alpha(.1);
+ };
+ force.stop = function() {
+ return force.alpha(0);
+ };
+ force.drag = function() {
+ if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart.force", d3_layout_forceDragstart).on("drag.force", dragmove).on("dragend.force", d3_layout_forceDragend);
+ if (!arguments.length) return drag;
+ this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag);
+ };
+ function dragmove(d) {
+ d.px = d3.event.x, d.py = d3.event.y;
+ force.resume();
+ }
+ return d3.rebind(force, event, "on");
+ };
+ function d3_layout_forceDragstart(d) {
+ d.fixed |= 2;
+ }
+ function d3_layout_forceDragend(d) {
+ d.fixed &= ~6;
+ }
+ function d3_layout_forceMouseover(d) {
+ d.fixed |= 4;
+ d.px = d.x, d.py = d.y;
+ }
+ function d3_layout_forceMouseout(d) {
+ d.fixed &= ~4;
+ }
+ function d3_layout_forceAccumulate(quad, alpha, charges) {
+ var cx = 0, cy = 0;
+ quad.charge = 0;
+ if (!quad.leaf) {
+ var nodes = quad.nodes, n = nodes.length, i = -1, c;
+ while (++i < n) {
+ c = nodes[i];
+ if (c == null) continue;
+ d3_layout_forceAccumulate(c, alpha, charges);
+ quad.charge += c.charge;
+ cx += c.charge * c.cx;
+ cy += c.charge * c.cy;
+ }
+ }
+ if (quad.point) {
+ if (!quad.leaf) {
+ quad.point.x += Math.random() - .5;
+ quad.point.y += Math.random() - .5;
+ }
+ var k = alpha * charges[quad.point.index];
+ quad.charge += quad.pointCharge = k;
+ cx += k * quad.point.x;
+ cy += k * quad.point.y;
+ }
+ quad.cx = cx / quad.charge;
+ quad.cy = cy / quad.charge;
+ }
+ var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;
+ d3.layout.hierarchy = function() {
+ var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;
+ function hierarchy(root) {
+ var stack = [ root ], nodes = [], node;
+ root.depth = 0;
+ while ((node = stack.pop()) != null) {
+ nodes.push(node);
+ if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {
+ var n, childs, child;
+ while (--n >= 0) {
+ stack.push(child = childs[n]);
+ child.parent = node;
+ child.depth = node.depth + 1;
+ }
+ if (value) node.value = 0;
+ node.children = childs;
+ } else {
+ if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;
+ delete node.children;
+ }
+ }
+ d3_layout_hierarchyVisitAfter(root, function(node) {
+ var childs, parent;
+ if (sort && (childs = node.children)) childs.sort(sort);
+ if (value && (parent = node.parent)) parent.value += node.value;
+ });
+ return nodes;
+ }
+ hierarchy.sort = function(x) {
+ if (!arguments.length) return sort;
+ sort = x;
+ return hierarchy;
+ };
+ hierarchy.children = function(x) {
+ if (!arguments.length) return children;
+ children = x;
+ return hierarchy;
+ };
+ hierarchy.value = function(x) {
+ if (!arguments.length) return value;
+ value = x;
+ return hierarchy;
+ };
+ hierarchy.revalue = function(root) {
+ if (value) {
+ d3_layout_hierarchyVisitBefore(root, function(node) {
+ if (node.children) node.value = 0;
+ });
+ d3_layout_hierarchyVisitAfter(root, function(node) {
+ var parent;
+ if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;
+ if (parent = node.parent) parent.value += node.value;
+ });
+ }
+ return root;
+ };
+ return hierarchy;
+ };
+ function d3_layout_hierarchyRebind(object, hierarchy) {
+ d3.rebind(object, hierarchy, "sort", "children", "value");
+ object.nodes = object;
+ object.links = d3_layout_hierarchyLinks;
+ return object;
+ }
+ function d3_layout_hierarchyVisitBefore(node, callback) {
+ var nodes = [ node ];
+ while ((node = nodes.pop()) != null) {
+ callback(node);
+ if ((children = node.children) && (n = children.length)) {
+ var n, children;
+ while (--n >= 0) nodes.push(children[n]);
+ }
+ }
+ }
+ function d3_layout_hierarchyVisitAfter(node, callback) {
+ var nodes = [ node ], nodes2 = [];
+ while ((node = nodes.pop()) != null) {
+ nodes2.push(node);
+ if ((children = node.children) && (n = children.length)) {
+ var i = -1, n, children;
+ while (++i < n) nodes.push(children[i]);
+ }
+ }
+ while ((node = nodes2.pop()) != null) {
+ callback(node);
+ }
+ }
+ function d3_layout_hierarchyChildren(d) {
+ return d.children;
+ }
+ function d3_layout_hierarchyValue(d) {
+ return d.value;
+ }
+ function d3_layout_hierarchySort(a, b) {
+ return b.value - a.value;
+ }
+ function d3_layout_hierarchyLinks(nodes) {
+ return d3.merge(nodes.map(function(parent) {
+ return (parent.children || []).map(function(child) {
+ return {
+ source: parent,
+ target: child
+ };
+ });
+ }));
+ }
+ d3.layout.partition = function() {
+ var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];
+ function position(node, x, dx, dy) {
+ var children = node.children;
+ node.x = x;
+ node.y = node.depth * dy;
+ node.dx = dx;
+ node.dy = dy;
+ if (children && (n = children.length)) {
+ var i = -1, n, c, d;
+ dx = node.value ? dx / node.value : 0;
+ while (++i < n) {
+ position(c = children[i], x, d = c.value * dx, dy);
+ x += d;
+ }
+ }
+ }
+ function depth(node) {
+ var children = node.children, d = 0;
+ if (children && (n = children.length)) {
+ var i = -1, n;
+ while (++i < n) d = Math.max(d, depth(children[i]));
+ }
+ return 1 + d;
+ }
+ function partition(d, i) {
+ var nodes = hierarchy.call(this, d, i);
+ position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));
+ return nodes;
+ }
+ partition.size = function(x) {
+ if (!arguments.length) return size;
+ size = x;
+ return partition;
+ };
+ return d3_layout_hierarchyRebind(partition, hierarchy);
+ };
+ d3.layout.pie = function() {
+ var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;
+ function pie(data) {
+ var n = data.length, values = data.map(function(d, i) {
+ return +value.call(pie, d, i);
+ }), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), k = (da - n * pa) / d3.sum(values), index = d3.range(n), arcs = [], v;
+ if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {
+ return values[j] - values[i];
+ } : function(i, j) {
+ return sort(data[i], data[j]);
+ });
+ index.forEach(function(i) {
+ arcs[i] = {
+ data: data[i],
+ value: v = values[i],
+ startAngle: a,
+ endAngle: a += v * k + pa,
+ padAngle: p
+ };
+ });
+ return arcs;
+ }
+ pie.value = function(_) {
+ if (!arguments.length) return value;
+ value = _;
+ return pie;
+ };
+ pie.sort = function(_) {
+ if (!arguments.length) return sort;
+ sort = _;
+ return pie;
+ };
+ pie.startAngle = function(_) {
+ if (!arguments.length) return startAngle;
+ startAngle = _;
+ return pie;
+ };
+ pie.endAngle = function(_) {
+ if (!arguments.length) return endAngle;
+ endAngle = _;
+ return pie;
+ };
+ pie.padAngle = function(_) {
+ if (!arguments.length) return padAngle;
+ padAngle = _;
+ return pie;
+ };
+ return pie;
+ };
+ var d3_layout_pieSortByValue = {};
+ d3.layout.stack = function() {
+ var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;
+ function stack(data, index) {
+ if (!(n = data.length)) return data;
+ var series = data.map(function(d, i) {
+ return values.call(stack, d, i);
+ });
+ var points = series.map(function(d) {
+ return d.map(function(v, i) {
+ return [ x.call(stack, v, i), y.call(stack, v, i) ];
+ });
+ });
+ var orders = order.call(stack, points, index);
+ series = d3.permute(series, orders);
+ points = d3.permute(points, orders);
+ var offsets = offset.call(stack, points, index);
+ var m = series[0].length, n, i, j, o;
+ for (j = 0; j < m; ++j) {
+ out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);
+ for (i = 1; i < n; ++i) {
+ out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);
+ }
+ }
+ return data;
+ }
+ stack.values = function(x) {
+ if (!arguments.length) return values;
+ values = x;
+ return stack;
+ };
+ stack.order = function(x) {
+ if (!arguments.length) return order;
+ order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;
+ return stack;
+ };
+ stack.offset = function(x) {
+ if (!arguments.length) return offset;
+ offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;
+ return stack;
+ };
+ stack.x = function(z) {
+ if (!arguments.length) return x;
+ x = z;
+ return stack;
+ };
+ stack.y = function(z) {
+ if (!arguments.length) return y;
+ y = z;
+ return stack;
+ };
+ stack.out = function(z) {
+ if (!arguments.length) return out;
+ out = z;
+ return stack;
+ };
+ return stack;
+ };
+ function d3_layout_stackX(d) {
+ return d.x;
+ }
+ function d3_layout_stackY(d) {
+ return d.y;
+ }
+ function d3_layout_stackOut(d, y0, y) {
+ d.y0 = y0;
+ d.y = y;
+ }
+ var d3_layout_stackOrders = d3.map({
+ "inside-out": function(data) {
+ var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {
+ return max[a] - max[b];
+ }), top = 0, bottom = 0, tops = [], bottoms = [];
+ for (i = 0; i < n; ++i) {
+ j = index[i];
+ if (top < bottom) {
+ top += sums[j];
+ tops.push(j);
+ } else {
+ bottom += sums[j];
+ bottoms.push(j);
+ }
+ }
+ return bottoms.reverse().concat(tops);
+ },
+ reverse: function(data) {
+ return d3.range(data.length).reverse();
+ },
+ "default": d3_layout_stackOrderDefault
+ });
+ var d3_layout_stackOffsets = d3.map({
+ silhouette: function(data) {
+ var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];
+ for (j = 0; j < m; ++j) {
+ for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
+ if (o > max) max = o;
+ sums.push(o);
+ }
+ for (j = 0; j < m; ++j) {
+ y0[j] = (max - sums[j]) / 2;
+ }
+ return y0;
+ },
+ wiggle: function(data) {
+ var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];
+ y0[0] = o = o0 = 0;
+ for (j = 1; j < m; ++j) {
+ for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];
+ for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {
+ for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {
+ s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;
+ }
+ s2 += s3 * data[i][j][1];
+ }
+ y0[j] = o -= s1 ? s2 / s1 * dx : 0;
+ if (o < o0) o0 = o;
+ }
+ for (j = 0; j < m; ++j) y0[j] -= o0;
+ return y0;
+ },
+ expand: function(data) {
+ var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];
+ for (j = 0; j < m; ++j) {
+ for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
+ if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;
+ }
+ for (j = 0; j < m; ++j) y0[j] = 0;
+ return y0;
+ },
+ zero: d3_layout_stackOffsetZero
+ });
+ function d3_layout_stackOrderDefault(data) {
+ return d3.range(data.length);
+ }
+ function d3_layout_stackOffsetZero(data) {
+ var j = -1, m = data[0].length, y0 = [];
+ while (++j < m) y0[j] = 0;
+ return y0;
+ }
+ function d3_layout_stackMaxIndex(array) {
+ var i = 1, j = 0, v = array[0][1], k, n = array.length;
+ for (;i < n; ++i) {
+ if ((k = array[i][1]) > v) {
+ j = i;
+ v = k;
+ }
+ }
+ return j;
+ }
+ function d3_layout_stackReduceSum(d) {
+ return d.reduce(d3_layout_stackSum, 0);
+ }
+ function d3_layout_stackSum(p, d) {
+ return p + d[1];
+ }
+ d3.layout.histogram = function() {
+ var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;
+ function histogram(data, i) {
+ var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;
+ while (++i < m) {
+ bin = bins[i] = [];
+ bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);
+ bin.y = 0;
+ }
+ if (m > 0) {
+ i = -1;
+ while (++i < n) {
+ x = values[i];
+ if (x >= range[0] && x <= range[1]) {
+ bin = bins[d3.bisect(thresholds, x, 1, m) - 1];
+ bin.y += k;
+ bin.push(data[i]);
+ }
+ }
+ }
+ return bins;
+ }
+ histogram.value = function(x) {
+ if (!arguments.length) return valuer;
+ valuer = x;
+ return histogram;
+ };
+ histogram.range = function(x) {
+ if (!arguments.length) return ranger;
+ ranger = d3_functor(x);
+ return histogram;
+ };
+ histogram.bins = function(x) {
+ if (!arguments.length) return binner;
+ binner = typeof x === "number" ? function(range) {
+ return d3_layout_histogramBinFixed(range, x);
+ } : d3_functor(x);
+ return histogram;
+ };
+ histogram.frequency = function(x) {
+ if (!arguments.length) return frequency;
+ frequency = !!x;
+ return histogram;
+ };
+ return histogram;
+ };
+ function d3_layout_histogramBinSturges(range, values) {
+ return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));
+ }
+ function d3_layout_histogramBinFixed(range, n) {
+ var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];
+ while (++x <= n) f[x] = m * x + b;
+ return f;
+ }
+ function d3_layout_histogramRange(values) {
+ return [ d3.min(values), d3.max(values) ];
+ }
+ d3.layout.pack = function() {
+ var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;
+ function pack(d, i) {
+ var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === "function" ? radius : function() {
+ return radius;
+ };
+ root.x = root.y = 0;
+ d3_layout_hierarchyVisitAfter(root, function(d) {
+ d.r = +r(d.value);
+ });
+ d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);
+ if (padding) {
+ var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;
+ d3_layout_hierarchyVisitAfter(root, function(d) {
+ d.r += dr;
+ });
+ d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);
+ d3_layout_hierarchyVisitAfter(root, function(d) {
+ d.r -= dr;
+ });
+ }
+ d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));
+ return nodes;
+ }
+ pack.size = function(_) {
+ if (!arguments.length) return size;
+ size = _;
+ return pack;
+ };
+ pack.radius = function(_) {
+ if (!arguments.length) return radius;
+ radius = _ == null || typeof _ === "function" ? _ : +_;
+ return pack;
+ };
+ pack.padding = function(_) {
+ if (!arguments.length) return padding;
+ padding = +_;
+ return pack;
+ };
+ return d3_layout_hierarchyRebind(pack, hierarchy);
+ };
+ function d3_layout_packSort(a, b) {
+ return a.value - b.value;
+ }
+ function d3_layout_packInsert(a, b) {
+ var c = a._pack_next;
+ a._pack_next = b;
+ b._pack_prev = a;
+ b._pack_next = c;
+ c._pack_prev = b;
+ }
+ function d3_layout_packSplice(a, b) {
+ a._pack_next = b;
+ b._pack_prev = a;
+ }
+ function d3_layout_packIntersects(a, b) {
+ var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;
+ return .999 * dr * dr > dx * dx + dy * dy;
+ }
+ function d3_layout_packSiblings(node) {
+ if (!(nodes = node.children) || !(n = nodes.length)) return;
+ var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;
+ function bound(node) {
+ xMin = Math.min(node.x - node.r, xMin);
+ xMax = Math.max(node.x + node.r, xMax);
+ yMin = Math.min(node.y - node.r, yMin);
+ yMax = Math.max(node.y + node.r, yMax);
+ }
+ nodes.forEach(d3_layout_packLink);
+ a = nodes[0];
+ a.x = -a.r;
+ a.y = 0;
+ bound(a);
+ if (n > 1) {
+ b = nodes[1];
+ b.x = b.r;
+ b.y = 0;
+ bound(b);
+ if (n > 2) {
+ c = nodes[2];
+ d3_layout_packPlace(a, b, c);
+ bound(c);
+ d3_layout_packInsert(a, c);
+ a._pack_prev = c;
+ d3_layout_packInsert(c, b);
+ b = a._pack_next;
+ for (i = 3; i < n; i++) {
+ d3_layout_packPlace(a, b, c = nodes[i]);
+ var isect = 0, s1 = 1, s2 = 1;
+ for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {
+ if (d3_layout_packIntersects(j, c)) {
+ isect = 1;
+ break;
+ }
+ }
+ if (isect == 1) {
+ for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
+ if (d3_layout_packIntersects(k, c)) {
+ break;
+ }
+ }
+ }
+ if (isect) {
+ if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);
+ i--;
+ } else {
+ d3_layout_packInsert(a, c);
+ b = c;
+ bound(c);
+ }
+ }
+ }
+ }
+ var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;
+ for (i = 0; i < n; i++) {
+ c = nodes[i];
+ c.x -= cx;
+ c.y -= cy;
+ cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));
+ }
+ node.r = cr;
+ nodes.forEach(d3_layout_packUnlink);
+ }
+ function d3_layout_packLink(node) {
+ node._pack_next = node._pack_prev = node;
+ }
+ function d3_layout_packUnlink(node) {
+ delete node._pack_next;
+ delete node._pack_prev;
+ }
+ function d3_layout_packTransform(node, x, y, k) {
+ var children = node.children;
+ node.x = x += k * node.x;
+ node.y = y += k * node.y;
+ node.r *= k;
+ if (children) {
+ var i = -1, n = children.length;
+ while (++i < n) d3_layout_packTransform(children[i], x, y, k);
+ }
+ }
+ function d3_layout_packPlace(a, b, c) {
+ var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;
+ if (db && (dx || dy)) {
+ var da = b.r + c.r, dc = dx * dx + dy * dy;
+ da *= da;
+ db *= db;
+ var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
+ c.x = a.x + x * dx + y * dy;
+ c.y = a.y + x * dy - y * dx;
+ } else {
+ c.x = a.x + db;
+ c.y = a.y;
+ }
+ }
+ d3.layout.tree = function() {
+ var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;
+ function tree(d, i) {
+ var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);
+ d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;
+ d3_layout_hierarchyVisitBefore(root1, secondWalk);
+ if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {
+ var left = root0, right = root0, bottom = root0;
+ d3_layout_hierarchyVisitBefore(root0, function(node) {
+ if (node.x < left.x) left = node;
+ if (node.x > right.x) right = node;
+ if (node.depth > bottom.depth) bottom = node;
+ });
+ var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);
+ d3_layout_hierarchyVisitBefore(root0, function(node) {
+ node.x = (node.x + tx) * kx;
+ node.y = node.depth * ky;
+ });
+ }
+ return nodes;
+ }
+ function wrapTree(root0) {
+ var root1 = {
+ A: null,
+ children: [ root0 ]
+ }, queue = [ root1 ], node1;
+ while ((node1 = queue.pop()) != null) {
+ for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {
+ queue.push((children[i] = child = {
+ _: children[i],
+ parent: node1,
+ children: (child = children[i].children) && child.slice() || [],
+ A: null,
+ a: null,
+ z: 0,
+ m: 0,
+ c: 0,
+ s: 0,
+ t: null,
+ i: i
+ }).a = child);
+ }
+ }
+ return root1.children[0];
+ }
+ function firstWalk(v) {
+ var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;
+ if (children.length) {
+ d3_layout_treeShift(v);
+ var midpoint = (children[0].z + children[children.length - 1].z) / 2;
+ if (w) {
+ v.z = w.z + separation(v._, w._);
+ v.m = v.z - midpoint;
+ } else {
+ v.z = midpoint;
+ }
+ } else if (w) {
+ v.z = w.z + separation(v._, w._);
+ }
+ v.parent.A = apportion(v, w, v.parent.A || siblings[0]);
+ }
+ function secondWalk(v) {
+ v._.x = v.z + v.parent.m;
+ v.m += v.parent.m;
+ }
+ function apportion(v, w, ancestor) {
+ if (w) {
+ var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;
+ while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {
+ vom = d3_layout_treeLeft(vom);
+ vop = d3_layout_treeRight(vop);
+ vop.a = v;
+ shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);
+ if (shift > 0) {
+ d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);
+ sip += shift;
+ sop += shift;
+ }
+ sim += vim.m;
+ sip += vip.m;
+ som += vom.m;
+ sop += vop.m;
+ }
+ if (vim && !d3_layout_treeRight(vop)) {
+ vop.t = vim;
+ vop.m += sim - sop;
+ }
+ if (vip && !d3_layout_treeLeft(vom)) {
+ vom.t = vip;
+ vom.m += sip - som;
+ ancestor = v;
+ }
+ }
+ return ancestor;
+ }
+ function sizeNode(node) {
+ node.x *= size[0];
+ node.y = node.depth * size[1];
+ }
+ tree.separation = function(x) {
+ if (!arguments.length) return separation;
+ separation = x;
+ return tree;
+ };
+ tree.size = function(x) {
+ if (!arguments.length) return nodeSize ? null : size;
+ nodeSize = (size = x) == null ? sizeNode : null;
+ return tree;
+ };
+ tree.nodeSize = function(x) {
+ if (!arguments.length) return nodeSize ? size : null;
+ nodeSize = (size = x) == null ? null : sizeNode;
+ return tree;
+ };
+ return d3_layout_hierarchyRebind(tree, hierarchy);
+ };
+ function d3_layout_treeSeparation(a, b) {
+ return a.parent == b.parent ? 1 : 2;
+ }
+ function d3_layout_treeLeft(v) {
+ var children = v.children;
+ return children.length ? children[0] : v.t;
+ }
+ function d3_layout_treeRight(v) {
+ var children = v.children, n;
+ return (n = children.length) ? children[n - 1] : v.t;
+ }
+ function d3_layout_treeMove(wm, wp, shift) {
+ var change = shift / (wp.i - wm.i);
+ wp.c -= change;
+ wp.s += shift;
+ wm.c += change;
+ wp.z += shift;
+ wp.m += shift;
+ }
+ function d3_layout_treeShift(v) {
+ var shift = 0, change = 0, children = v.children, i = children.length, w;
+ while (--i >= 0) {
+ w = children[i];
+ w.z += shift;
+ w.m += shift;
+ shift += w.s + (change += w.c);
+ }
+ }
+ function d3_layout_treeAncestor(vim, v, ancestor) {
+ return vim.a.parent === v.parent ? vim.a : ancestor;
+ }
+ d3.layout.cluster = function() {
+ var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;
+ function cluster(d, i) {
+ var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;
+ d3_layout_hierarchyVisitAfter(root, function(node) {
+ var children = node.children;
+ if (children && children.length) {
+ node.x = d3_layout_clusterX(children);
+ node.y = d3_layout_clusterY(children);
+ } else {
+ node.x = previousNode ? x += separation(node, previousNode) : 0;
+ node.y = 0;
+ previousNode = node;
+ }
+ });
+ var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;
+ d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {
+ node.x = (node.x - root.x) * size[0];
+ node.y = (root.y - node.y) * size[1];
+ } : function(node) {
+ node.x = (node.x - x0) / (x1 - x0) * size[0];
+ node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];
+ });
+ return nodes;
+ }
+ cluster.separation = function(x) {
+ if (!arguments.length) return separation;
+ separation = x;
+ return cluster;
+ };
+ cluster.size = function(x) {
+ if (!arguments.length) return nodeSize ? null : size;
+ nodeSize = (size = x) == null;
+ return cluster;
+ };
+ cluster.nodeSize = function(x) {
+ if (!arguments.length) return nodeSize ? size : null;
+ nodeSize = (size = x) != null;
+ return cluster;
+ };
+ return d3_layout_hierarchyRebind(cluster, hierarchy);
+ };
+ function d3_layout_clusterY(children) {
+ return 1 + d3.max(children, function(child) {
+ return child.y;
+ });
+ }
+ function d3_layout_clusterX(children) {
+ return children.reduce(function(x, child) {
+ return x + child.x;
+ }, 0) / children.length;
+ }
+ function d3_layout_clusterLeft(node) {
+ var children = node.children;
+ return children && children.length ? d3_layout_clusterLeft(children[0]) : node;
+ }
+ function d3_layout_clusterRight(node) {
+ var children = node.children, n;
+ return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;
+ }
+ d3.layout.treemap = function() {
+ var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = "squarify", ratio = .5 * (1 + Math.sqrt(5));
+ function scale(children, k) {
+ var i = -1, n = children.length, child, area;
+ while (++i < n) {
+ area = (child = children[i]).value * (k < 0 ? 0 : k);
+ child.area = isNaN(area) || area <= 0 ? 0 : area;
+ }
+ }
+ function squarify(node) {
+ var children = node.children;
+ if (children && children.length) {
+ var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === "slice" ? rect.dx : mode === "dice" ? rect.dy : mode === "slice-dice" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;
+ scale(remaining, rect.dx * rect.dy / node.value);
+ row.area = 0;
+ while ((n = remaining.length) > 0) {
+ row.push(child = remaining[n - 1]);
+ row.area += child.area;
+ if (mode !== "squarify" || (score = worst(row, u)) <= best) {
+ remaining.pop();
+ best = score;
+ } else {
+ row.area -= row.pop().area;
+ position(row, u, rect, false);
+ u = Math.min(rect.dx, rect.dy);
+ row.length = row.area = 0;
+ best = Infinity;
+ }
+ }
+ if (row.length) {
+ position(row, u, rect, true);
+ row.length = row.area = 0;
+ }
+ children.forEach(squarify);
+ }
+ }
+ function stickify(node) {
+ var children = node.children;
+ if (children && children.length) {
+ var rect = pad(node), remaining = children.slice(), child, row = [];
+ scale(remaining, rect.dx * rect.dy / node.value);
+ row.area = 0;
+ while (child = remaining.pop()) {
+ row.push(child);
+ row.area += child.area;
+ if (child.z != null) {
+ position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);
+ row.length = row.area = 0;
+ }
+ }
+ children.forEach(stickify);
+ }
+ }
+ function worst(row, u) {
+ var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;
+ while (++i < n) {
+ if (!(r = row[i].area)) continue;
+ if (r < rmin) rmin = r;
+ if (r > rmax) rmax = r;
+ }
+ s *= s;
+ u *= u;
+ return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;
+ }
+ function position(row, u, rect, flush) {
+ var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;
+ if (u == rect.dx) {
+ if (flush || v > rect.dy) v = rect.dy;
+ while (++i < n) {
+ o = row[i];
+ o.x = x;
+ o.y = y;
+ o.dy = v;
+ x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);
+ }
+ o.z = true;
+ o.dx += rect.x + rect.dx - x;
+ rect.y += v;
+ rect.dy -= v;
+ } else {
+ if (flush || v > rect.dx) v = rect.dx;
+ while (++i < n) {
+ o = row[i];
+ o.x = x;
+ o.y = y;
+ o.dx = v;
+ y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);
+ }
+ o.z = false;
+ o.dy += rect.y + rect.dy - y;
+ rect.x += v;
+ rect.dx -= v;
+ }
+ }
+ function treemap(d) {
+ var nodes = stickies || hierarchy(d), root = nodes[0];
+ root.x = 0;
+ root.y = 0;
+ root.dx = size[0];
+ root.dy = size[1];
+ if (stickies) hierarchy.revalue(root);
+ scale([ root ], root.dx * root.dy / root.value);
+ (stickies ? stickify : squarify)(root);
+ if (sticky) stickies = nodes;
+ return nodes;
+ }
+ treemap.size = function(x) {
+ if (!arguments.length) return size;
+ size = x;
+ return treemap;
+ };
+ treemap.padding = function(x) {
+ if (!arguments.length) return padding;
+ function padFunction(node) {
+ var p = x.call(treemap, node, node.depth);
+ return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p);
+ }
+ function padConstant(node) {
+ return d3_layout_treemapPad(node, x);
+ }
+ var type;
+ pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ],
+ padConstant) : padConstant;
+ return treemap;
+ };
+ treemap.round = function(x) {
+ if (!arguments.length) return round != Number;
+ round = x ? Math.round : Number;
+ return treemap;
+ };
+ treemap.sticky = function(x) {
+ if (!arguments.length) return sticky;
+ sticky = x;
+ stickies = null;
+ return treemap;
+ };
+ treemap.ratio = function(x) {
+ if (!arguments.length) return ratio;
+ ratio = x;
+ return treemap;
+ };
+ treemap.mode = function(x) {
+ if (!arguments.length) return mode;
+ mode = x + "";
+ return treemap;
+ };
+ return d3_layout_hierarchyRebind(treemap, hierarchy);
+ };
+ function d3_layout_treemapPadNull(node) {
+ return {
+ x: node.x,
+ y: node.y,
+ dx: node.dx,
+ dy: node.dy
+ };
+ }
+ function d3_layout_treemapPad(node, padding) {
+ var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];
+ if (dx < 0) {
+ x += dx / 2;
+ dx = 0;
+ }
+ if (dy < 0) {
+ y += dy / 2;
+ dy = 0;
+ }
+ return {
+ x: x,
+ y: y,
+ dx: dx,
+ dy: dy
+ };
+ }
+ d3.random = {
+ normal: function(µ, σ) {
+ var n = arguments.length;
+ if (n < 2) σ = 1;
+ if (n < 1) µ = 0;
+ return function() {
+ var x, y, r;
+ do {
+ x = Math.random() * 2 - 1;
+ y = Math.random() * 2 - 1;
+ r = x * x + y * y;
+ } while (!r || r > 1);
+ return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);
+ };
+ },
+ logNormal: function() {
+ var random = d3.random.normal.apply(d3, arguments);
+ return function() {
+ return Math.exp(random());
+ };
+ },
+ bates: function(m) {
+ var random = d3.random.irwinHall(m);
+ return function() {
+ return random() / m;
+ };
+ },
+ irwinHall: function(m) {
+ return function() {
+ for (var s = 0, j = 0; j < m; j++) s += Math.random();
+ return s;
+ };
+ }
+ };
+ d3.scale = {};
+ function d3_scaleExtent(domain) {
+ var start = domain[0], stop = domain[domain.length - 1];
+ return start < stop ? [ start, stop ] : [ stop, start ];
+ }
+ function d3_scaleRange(scale) {
+ return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());
+ }
+ function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
+ var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);
+ return function(x) {
+ return i(u(x));
+ };
+ }
+ function d3_scale_nice(domain, nice) {
+ var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;
+ if (x1 < x0) {
+ dx = i0, i0 = i1, i1 = dx;
+ dx = x0, x0 = x1, x1 = dx;
+ }
+ domain[i0] = nice.floor(x0);
+ domain[i1] = nice.ceil(x1);
+ return domain;
+ }
+ function d3_scale_niceStep(step) {
+ return step ? {
+ floor: function(x) {
+ return Math.floor(x / step) * step;
+ },
+ ceil: function(x) {
+ return Math.ceil(x / step) * step;
+ }
+ } : d3_scale_niceIdentity;
+ }
+ var d3_scale_niceIdentity = {
+ floor: d3_identity,
+ ceil: d3_identity
+ };
+ function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
+ var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;
+ if (domain[k] < domain[0]) {
+ domain = domain.slice().reverse();
+ range = range.slice().reverse();
+ }
+ while (++j <= k) {
+ u.push(uninterpolate(domain[j - 1], domain[j]));
+ i.push(interpolate(range[j - 1], range[j]));
+ }
+ return function(x) {
+ var j = d3.bisect(domain, x, 1, k) - 1;
+ return i[j](u[j](x));
+ };
+ }
+ d3.scale.linear = function() {
+ return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);
+ };
+ function d3_scale_linear(domain, range, interpolate, clamp) {
+ var output, input;
+ function rescale() {
+ var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
+ output = linear(domain, range, uninterpolate, interpolate);
+ input = linear(range, domain, uninterpolate, d3_interpolate);
+ return scale;
+ }
+ function scale(x) {
+ return output(x);
+ }
+ scale.invert = function(y) {
+ return input(y);
+ };
+ scale.domain = function(x) {
+ if (!arguments.length) return domain;
+ domain = x.map(Number);
+ return rescale();
+ };
+ scale.range = function(x) {
+ if (!arguments.length) return range;
+ range = x;
+ return rescale();
+ };
+ scale.rangeRound = function(x) {
+ return scale.range(x).interpolate(d3_interpolateRound);
+ };
+ scale.clamp = function(x) {
+ if (!arguments.length) return clamp;
+ clamp = x;
+ return rescale();
+ };
+ scale.interpolate = function(x) {
+ if (!arguments.length) return interpolate;
+ interpolate = x;
+ return rescale();
+ };
+ scale.ticks = function(m) {
+ return d3_scale_linearTicks(domain, m);
+ };
+ scale.tickFormat = function(m, format) {
+ return d3_scale_linearTickFormat(domain, m, format);
+ };
+ scale.nice = function(m) {
+ d3_scale_linearNice(domain, m);
+ return rescale();
+ };
+ scale.copy = function() {
+ return d3_scale_linear(domain, range, interpolate, clamp);
+ };
+ return rescale();
+ }
+ function d3_scale_linearRebind(scale, linear) {
+ return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
+ }
+ function d3_scale_linearNice(domain, m) {
+ return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));
+ }
+ function d3_scale_linearTickRange(domain, m) {
+ if (m == null) m = 10;
+ var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
+ if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;
+ extent[0] = Math.ceil(extent[0] / step) * step;
+ extent[1] = Math.floor(extent[1] / step) * step + step * .5;
+ extent[2] = step;
+ return extent;
+ }
+ function d3_scale_linearTicks(domain, m) {
+ return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));
+ }
+ function d3_scale_linearTickFormat(domain, m, format) {
+ var range = d3_scale_linearTickRange(domain, m);
+ if (format) {
+ var match = d3_format_re.exec(format);
+ match.shift();
+ if (match[8] === "s") {
+ var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));
+ if (!match[7]) match[7] = "." + d3_scale_linearPrecision(prefix.scale(range[2]));
+ match[8] = "f";
+ format = d3.format(match.join(""));
+ return function(d) {
+ return format(prefix.scale(d)) + prefix.symbol;
+ };
+ }
+ if (!match[7]) match[7] = "." + d3_scale_linearFormatPrecision(match[8], range);
+ format = match.join("");
+ } else {
+ format = ",." + d3_scale_linearPrecision(range[2]) + "f";
+ }
+ return d3.format(format);
+ }
+ var d3_scale_linearFormatSignificant = {
+ s: 1,
+ g: 1,
+ p: 1,
+ r: 1,
+ e: 1
+ };
+ function d3_scale_linearPrecision(value) {
+ return -Math.floor(Math.log(value) / Math.LN10 + .01);
+ }
+ function d3_scale_linearFormatPrecision(type, range) {
+ var p = d3_scale_linearPrecision(range[2]);
+ return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== "e") : p - (type === "%") * 2;
+ }
+ d3.scale.log = function() {
+ return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);
+ };
+ function d3_scale_log(linear, base, positive, domain) {
+ function log(x) {
+ return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);
+ }
+ function pow(x) {
+ return positive ? Math.pow(base, x) : -Math.pow(base, -x);
+ }
+ function scale(x) {
+ return linear(log(x));
+ }
+ scale.invert = function(x) {
+ return pow(linear.invert(x));
+ };
+ scale.domain = function(x) {
+ if (!arguments.length) return domain;
+ positive = x[0] >= 0;
+ linear.domain((domain = x.map(Number)).map(log));
+ return scale;
+ };
+ scale.base = function(_) {
+ if (!arguments.length) return base;
+ base = +_;
+ linear.domain(domain.map(log));
+ return scale;
+ };
+ scale.nice = function() {
+ var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);
+ linear.domain(niced);
+ domain = niced.map(pow);
+ return scale;
+ };
+ scale.ticks = function() {
+ var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;
+ if (isFinite(j - i)) {
+ if (positive) {
+ for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);
+ ticks.push(pow(i));
+ } else {
+ ticks.push(pow(i));
+ for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);
+ }
+ for (i = 0; ticks[i] < u; i++) {}
+ for (j = ticks.length; ticks[j - 1] > v; j--) {}
+ ticks = ticks.slice(i, j);
+ }
+ return ticks;
+ };
+ scale.tickFormat = function(n, format) {
+ if (!arguments.length) return d3_scale_logFormat;
+ if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format);
+ var k = Math.max(.1, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12,
+ Math.floor), e;
+ return function(d) {
+ return d / pow(f(log(d) + e)) <= k ? format(d) : "";
+ };
+ };
+ scale.copy = function() {
+ return d3_scale_log(linear.copy(), base, positive, domain);
+ };
+ return d3_scale_linearRebind(scale, linear);
+ }
+ var d3_scale_logFormat = d3.format(".0e"), d3_scale_logNiceNegative = {
+ floor: function(x) {
+ return -Math.ceil(-x);
+ },
+ ceil: function(x) {
+ return -Math.floor(-x);
+ }
+ };
+ d3.scale.pow = function() {
+ return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);
+ };
+ function d3_scale_pow(linear, exponent, domain) {
+ var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);
+ function scale(x) {
+ return linear(powp(x));
+ }
+ scale.invert = function(x) {
+ return powb(linear.invert(x));
+ };
+ scale.domain = function(x) {
+ if (!arguments.length) return domain;
+ linear.domain((domain = x.map(Number)).map(powp));
+ return scale;
+ };
+ scale.ticks = function(m) {
+ return d3_scale_linearTicks(domain, m);
+ };
+ scale.tickFormat = function(m, format) {
+ return d3_scale_linearTickFormat(domain, m, format);
+ };
+ scale.nice = function(m) {
+ return scale.domain(d3_scale_linearNice(domain, m));
+ };
+ scale.exponent = function(x) {
+ if (!arguments.length) return exponent;
+ powp = d3_scale_powPow(exponent = x);
+ powb = d3_scale_powPow(1 / exponent);
+ linear.domain(domain.map(powp));
+ return scale;
+ };
+ scale.copy = function() {
+ return d3_scale_pow(linear.copy(), exponent, domain);
+ };
+ return d3_scale_linearRebind(scale, linear);
+ }
+ function d3_scale_powPow(e) {
+ return function(x) {
+ return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);
+ };
+ }
+ d3.scale.sqrt = function() {
+ return d3.scale.pow().exponent(.5);
+ };
+ d3.scale.ordinal = function() {
+ return d3_scale_ordinal([], {
+ t: "range",
+ a: [ [] ]
+ });
+ };
+ function d3_scale_ordinal(domain, ranger) {
+ var index, range, rangeBand;
+ function scale(x) {
+ return range[((index.get(x) || (ranger.t === "range" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];
+ }
+ function steps(start, step) {
+ return d3.range(domain.length).map(function(i) {
+ return start + step * i;
+ });
+ }
+ scale.domain = function(x) {
+ if (!arguments.length) return domain;
+ domain = [];
+ index = new d3_Map();
+ var i = -1, n = x.length, xi;
+ while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));
+ return scale[ranger.t].apply(scale, ranger.a);
+ };
+ scale.range = function(x) {
+ if (!arguments.length) return range;
+ range = x;
+ rangeBand = 0;
+ ranger = {
+ t: "range",
+ a: arguments
+ };
+ return scale;
+ };
+ scale.rangePoints = function(x, padding) {
+ if (arguments.length < 2) padding = 0;
+ var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2,
+ 0) : (stop - start) / (domain.length - 1 + padding);
+ range = steps(start + step * padding / 2, step);
+ rangeBand = 0;
+ ranger = {
+ t: "rangePoints",
+ a: arguments
+ };
+ return scale;
+ };
+ scale.rangeRoundPoints = function(x, padding) {
+ if (arguments.length < 2) padding = 0;
+ var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2),
+ 0) : (stop - start) / (domain.length - 1 + padding) | 0;
+ range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);
+ rangeBand = 0;
+ ranger = {
+ t: "rangeRoundPoints",
+ a: arguments
+ };
+ return scale;
+ };
+ scale.rangeBands = function(x, padding, outerPadding) {
+ if (arguments.length < 2) padding = 0;
+ if (arguments.length < 3) outerPadding = padding;
+ var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);
+ range = steps(start + step * outerPadding, step);
+ if (reverse) range.reverse();
+ rangeBand = step * (1 - padding);
+ ranger = {
+ t: "rangeBands",
+ a: arguments
+ };
+ return scale;
+ };
+ scale.rangeRoundBands = function(x, padding, outerPadding) {
+ if (arguments.length < 2) padding = 0;
+ if (arguments.length < 3) outerPadding = padding;
+ var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));
+ range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);
+ if (reverse) range.reverse();
+ rangeBand = Math.round(step * (1 - padding));
+ ranger = {
+ t: "rangeRoundBands",
+ a: arguments
+ };
+ return scale;
+ };
+ scale.rangeBand = function() {
+ return rangeBand;
+ };
+ scale.rangeExtent = function() {
+ return d3_scaleExtent(ranger.a[0]);
+ };
+ scale.copy = function() {
+ return d3_scale_ordinal(domain, ranger);
+ };
+ return scale.domain(domain);
+ }
+ d3.scale.category10 = function() {
+ return d3.scale.ordinal().range(d3_category10);
+ };
+ d3.scale.category20 = function() {
+ return d3.scale.ordinal().range(d3_category20);
+ };
+ d3.scale.category20b = function() {
+ return d3.scale.ordinal().range(d3_category20b);
+ };
+ d3.scale.category20c = function() {
+ return d3.scale.ordinal().range(d3_category20c);
+ };
+ var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);
+ var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);
+ var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);
+ var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);
+ d3.scale.quantile = function() {
+ return d3_scale_quantile([], []);
+ };
+ function d3_scale_quantile(domain, range) {
+ var thresholds;
+ function rescale() {
+ var k = 0, q = range.length;
+ thresholds = [];
+ while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);
+ return scale;
+ }
+ function scale(x) {
+ if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];
+ }
+ scale.domain = function(x) {
+ if (!arguments.length) return domain;
+ domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);
+ return rescale();
+ };
+ scale.range = function(x) {
+ if (!arguments.length) return range;
+ range = x;
+ return rescale();
+ };
+ scale.quantiles = function() {
+ return thresholds;
+ };
+ scale.invertExtent = function(y) {
+ y = range.indexOf(y);
+ return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];
+ };
+ scale.copy = function() {
+ return d3_scale_quantile(domain, range);
+ };
+ return rescale();
+ }
+ d3.scale.quantize = function() {
+ return d3_scale_quantize(0, 1, [ 0, 1 ]);
+ };
+ function d3_scale_quantize(x0, x1, range) {
+ var kx, i;
+ function scale(x) {
+ return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
+ }
+ function rescale() {
+ kx = range.length / (x1 - x0);
+ i = range.length - 1;
+ return scale;
+ }
+ scale.domain = function(x) {
+ if (!arguments.length) return [ x0, x1 ];
+ x0 = +x[0];
+ x1 = +x[x.length - 1];
+ return rescale();
+ };
+ scale.range = function(x) {
+ if (!arguments.length) return range;
+ range = x;
+ return rescale();
+ };
+ scale.invertExtent = function(y) {
+ y = range.indexOf(y);
+ y = y < 0 ? NaN : y / kx + x0;
+ return [ y, y + 1 / kx ];
+ };
+ scale.copy = function() {
+ return d3_scale_quantize(x0, x1, range);
+ };
+ return rescale();
+ }
+ d3.scale.threshold = function() {
+ return d3_scale_threshold([ .5 ], [ 0, 1 ]);
+ };
+ function d3_scale_threshold(domain, range) {
+ function scale(x) {
+ if (x <= x) return range[d3.bisect(domain, x)];
+ }
+ scale.domain = function(_) {
+ if (!arguments.length) return domain;
+ domain = _;
+ return scale;
+ };
+ scale.range = function(_) {
+ if (!arguments.length) return range;
+ range = _;
+ return scale;
+ };
+ scale.invertExtent = function(y) {
+ y = range.indexOf(y);
+ return [ domain[y - 1], domain[y] ];
+ };
+ scale.copy = function() {
+ return d3_scale_threshold(domain, range);
+ };
+ return scale;
+ }
+ d3.scale.identity = function() {
+ return d3_scale_identity([ 0, 1 ]);
+ };
+ function d3_scale_identity(domain) {
+ function identity(x) {
+ return +x;
+ }
+ identity.invert = identity;
+ identity.domain = identity.range = function(x) {
+ if (!arguments.length) return domain;
+ domain = x.map(identity);
+ return identity;
+ };
+ identity.ticks = function(m) {
+ return d3_scale_linearTicks(domain, m);
+ };
+ identity.tickFormat = function(m, format) {
+ return d3_scale_linearTickFormat(domain, m, format);
+ };
+ identity.copy = function() {
+ return d3_scale_identity(domain);
+ };
+ return identity;
+ }
+ d3.svg = {};
+ function d3_zero() {
+ return 0;
+ }
+ d3.svg.arc = function() {
+ var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;
+ function arc() {
+ var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;
+ if (r1 < r0) rc = r1, r1 = r0, r0 = rc;
+ if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : "") + "Z";
+ var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];
+ if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {
+ rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);
+ if (!cw) p1 *= -1;
+ if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));
+ if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));
+ }
+ if (r1) {
+ x0 = r1 * Math.cos(a0 + p1);
+ y0 = r1 * Math.sin(a0 + p1);
+ x1 = r1 * Math.cos(a1 - p1);
+ y1 = r1 * Math.sin(a1 - p1);
+ var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;
+ if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {
+ var h1 = (a0 + a1) / 2;
+ x0 = r1 * Math.cos(h1);
+ y0 = r1 * Math.sin(h1);
+ x1 = y1 = null;
+ }
+ } else {
+ x0 = y0 = 0;
+ }
+ if (r0) {
+ x2 = r0 * Math.cos(a1 - p0);
+ y2 = r0 * Math.sin(a1 - p0);
+ x3 = r0 * Math.cos(a0 + p0);
+ y3 = r0 * Math.sin(a0 + p0);
+ var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;
+ if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {
+ var h0 = (a0 + a1) / 2;
+ x2 = r0 * Math.cos(h0);
+ y2 = r0 * Math.sin(h0);
+ x3 = y3 = null;
+ }
+ } else {
+ x2 = y2 = 0;
+ }
+ if ((rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {
+ cr = r0 < r1 ^ cw ? 0 : 1;
+ var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);
+ if (x1 != null) {
+ var rc1 = Math.min(rc, (r1 - lc) / (kc + 1)), t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);
+ if (rc === rc1) {
+ path.push("M", t30[0], "A", rc1, ",", rc1, " 0 0,", cr, " ", t30[1], "A", r1, ",", r1, " 0 ", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), ",", cw, " ", t12[1], "A", rc1, ",", rc1, " 0 0,", cr, " ", t12[0]);
+ } else {
+ path.push("M", t30[0], "A", rc1, ",", rc1, " 0 1,", cr, " ", t12[0]);
+ }
+ } else {
+ path.push("M", x0, ",", y0);
+ }
+ if (x3 != null) {
+ var rc0 = Math.min(rc, (r0 - lc) / (kc - 1)), t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);
+ if (rc === rc0) {
+ path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t21[1], "A", r0, ",", r0, " 0 ", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), ",", 1 - cw, " ", t03[1], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]);
+ } else {
+ path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]);
+ }
+ } else {
+ path.push("L", x2, ",", y2);
+ }
+ } else {
+ path.push("M", x0, ",", y0);
+ if (x1 != null) path.push("A", r1, ",", r1, " 0 ", l1, ",", cw, " ", x1, ",", y1);
+ path.push("L", x2, ",", y2);
+ if (x3 != null) path.push("A", r0, ",", r0, " 0 ", l0, ",", 1 - cw, " ", x3, ",", y3);
+ }
+ path.push("Z");
+ return path.join("");
+ }
+ function circleSegment(r1, cw) {
+ return "M0," + r1 + "A" + r1 + "," + r1 + " 0 1," + cw + " 0," + -r1 + "A" + r1 + "," + r1 + " 0 1," + cw + " 0," + r1;
+ }
+ arc.innerRadius = function(v) {
+ if (!arguments.length) return innerRadius;
+ innerRadius = d3_functor(v);
+ return arc;
+ };
+ arc.outerRadius = function(v) {
+ if (!arguments.length) return outerRadius;
+ outerRadius = d3_functor(v);
+ return arc;
+ };
+ arc.cornerRadius = function(v) {
+ if (!arguments.length) return cornerRadius;
+ cornerRadius = d3_functor(v);
+ return arc;
+ };
+ arc.padRadius = function(v) {
+ if (!arguments.length) return padRadius;
+ padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);
+ return arc;
+ };
+ arc.startAngle = function(v) {
+ if (!arguments.length) return startAngle;
+ startAngle = d3_functor(v);
+ return arc;
+ };
+ arc.endAngle = function(v) {
+ if (!arguments.length) return endAngle;
+ endAngle = d3_functor(v);
+ return arc;
+ };
+ arc.padAngle = function(v) {
+ if (!arguments.length) return padAngle;
+ padAngle = d3_functor(v);
+ return arc;
+ };
+ arc.centroid = function() {
+ var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;
+ return [ Math.cos(a) * r, Math.sin(a) * r ];
+ };
+ return arc;
+ };
+ var d3_svg_arcAuto = "auto";
+ function d3_svg_arcInnerRadius(d) {
+ return d.innerRadius;
+ }
+ function d3_svg_arcOuterRadius(d) {
+ return d.outerRadius;
+ }
+ function d3_svg_arcStartAngle(d) {
+ return d.startAngle;
+ }
+ function d3_svg_arcEndAngle(d) {
+ return d.endAngle;
+ }
+ function d3_svg_arcPadAngle(d) {
+ return d && d.padAngle;
+ }
+ function d3_svg_arcSweep(x0, y0, x1, y1) {
+ return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;
+ }
+ function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {
+ var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(r * r * d2 - D * D), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;
+ if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;
+ return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];
+ }
+ function d3_svg_line(projection) {
+ var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
+ function line(data) {
+ var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);
+ function segment() {
+ segments.push("M", interpolate(projection(points), tension));
+ }
+ while (++i < n) {
+ if (defined.call(this, d = data[i], i)) {
+ points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);
+ } else if (points.length) {
+ segment();
+ points = [];
+ }
+ }
+ if (points.length) segment();
+ return segments.length ? segments.join("") : null;
+ }
+ line.x = function(_) {
+ if (!arguments.length) return x;
+ x = _;
+ return line;
+ };
+ line.y = function(_) {
+ if (!arguments.length) return y;
+ y = _;
+ return line;
+ };
+ line.defined = function(_) {
+ if (!arguments.length) return defined;
+ defined = _;
+ return line;
+ };
+ line.interpolate = function(_) {
+ if (!arguments.length) return interpolateKey;
+ if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
+ return line;
+ };
+ line.tension = function(_) {
+ if (!arguments.length) return tension;
+ tension = _;
+ return line;
+ };
+ return line;
+ }
+ d3.svg.line = function() {
+ return d3_svg_line(d3_identity);
+ };
+ var d3_svg_lineInterpolators = d3.map({
+ linear: d3_svg_lineLinear,
+ "linear-closed": d3_svg_lineLinearClosed,
+ step: d3_svg_lineStep,
+ "step-before": d3_svg_lineStepBefore,
+ "step-after": d3_svg_lineStepAfter,
+ basis: d3_svg_lineBasis,
+ "basis-open": d3_svg_lineBasisOpen,
+ "basis-closed": d3_svg_lineBasisClosed,
+ bundle: d3_svg_lineBundle,
+ cardinal: d3_svg_lineCardinal,
+ "cardinal-open": d3_svg_lineCardinalOpen,
+ "cardinal-closed": d3_svg_lineCardinalClosed,
+ monotone: d3_svg_lineMonotone
+ });
+ d3_svg_lineInterpolators.forEach(function(key, value) {
+ value.key = key;
+ value.closed = /-closed$/.test(key);
+ });
+ function d3_svg_lineLinear(points) {
+ return points.join("L");
+ }
+ function d3_svg_lineLinearClosed(points) {
+ return d3_svg_lineLinear(points) + "Z";
+ }
+ function d3_svg_lineStep(points) {
+ var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
+ while (++i < n) path.push("H", (p[0] + (p = points[i])[0]) / 2, "V", p[1]);
+ if (n > 1) path.push("H", p[0]);
+ return path.join("");
+ }
+ function d3_svg_lineStepBefore(points) {
+ var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
+ while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]);
+ return path.join("");
+ }
+ function d3_svg_lineStepAfter(points) {
+ var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
+ while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]);
+ return path.join("");
+ }
+ function d3_svg_lineCardinalOpen(points, tension) {
+ return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));
+ }
+ function d3_svg_lineCardinalClosed(points, tension) {
+ return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]),
+ points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));
+ }
+ function d3_svg_lineCardinal(points, tension) {
+ return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));
+ }
+ function d3_svg_lineHermite(points, tangents) {
+ if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {
+ return d3_svg_lineLinear(points);
+ }
+ var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;
+ if (quad) {
+ path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1];
+ p0 = points[1];
+ pi = 2;
+ }
+ if (tangents.length > 1) {
+ t = tangents[1];
+ p = points[pi];
+ pi++;
+ path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
+ for (var i = 2; i < tangents.length; i++, pi++) {
+ p = points[pi];
+ t = tangents[i];
+ path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
+ }
+ }
+ if (quad) {
+ var lp = points[pi];
+ path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1];
+ }
+ return path;
+ }
+ function d3_svg_lineCardinalTangents(points, tension) {
+ var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;
+ while (++i < n) {
+ p0 = p1;
+ p1 = p2;
+ p2 = points[i];
+ tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);
+ }
+ return tangents;
+ }
+ function d3_svg_lineBasis(points) {
+ if (points.length < 3) return d3_svg_lineLinear(points);
+ var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0, "L", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
+ points.push(points[n - 1]);
+ while (++i <= n) {
+ pi = points[i];
+ px.shift();
+ px.push(pi[0]);
+ py.shift();
+ py.push(pi[1]);
+ d3_svg_lineBasisBezier(path, px, py);
+ }
+ points.pop();
+ path.push("L", pi);
+ return path.join("");
+ }
+ function d3_svg_lineBasisOpen(points) {
+ if (points.length < 4) return d3_svg_lineLinear(points);
+ var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];
+ while (++i < 3) {
+ pi = points[i];
+ px.push(pi[0]);
+ py.push(pi[1]);
+ }
+ path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));
+ --i;
+ while (++i < n) {
+ pi = points[i];
+ px.shift();
+ px.push(pi[0]);
+ py.shift();
+ py.push(pi[1]);
+ d3_svg_lineBasisBezier(path, px, py);
+ }
+ return path.join("");
+ }
+ function d3_svg_lineBasisClosed(points) {
+ var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];
+ while (++i < 4) {
+ pi = points[i % n];
+ px.push(pi[0]);
+ py.push(pi[1]);
+ }
+ path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
+ --i;
+ while (++i < m) {
+ pi = points[i % n];
+ px.shift();
+ px.push(pi[0]);
+ py.shift();
+ py.push(pi[1]);
+ d3_svg_lineBasisBezier(path, px, py);
+ }
+ return path.join("");
+ }
+ function d3_svg_lineBundle(points, tension) {
+ var n = points.length - 1;
+ if (n) {
+ var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;
+ while (++i <= n) {
+ p = points[i];
+ t = i / n;
+ p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);
+ p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);
+ }
+ }
+ return d3_svg_lineBasis(points);
+ }
+ function d3_svg_lineDot4(a, b) {
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
+ }
+ var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];
+ function d3_svg_lineBasisBezier(path, x, y) {
+ path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));
+ }
+ function d3_svg_lineSlope(p0, p1) {
+ return (p1[1] - p0[1]) / (p1[0] - p0[0]);
+ }
+ function d3_svg_lineFiniteDifferences(points) {
+ var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);
+ while (++i < j) {
+ m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;
+ }
+ m[i] = d;
+ return m;
+ }
+ function d3_svg_lineMonotoneTangents(points) {
+ var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;
+ while (++i < j) {
+ d = d3_svg_lineSlope(points[i], points[i + 1]);
+ if (abs(d) < ε) {
+ m[i] = m[i + 1] = 0;
+ } else {
+ a = m[i] / d;
+ b = m[i + 1] / d;
+ s = a * a + b * b;
+ if (s > 9) {
+ s = d * 3 / Math.sqrt(s);
+ m[i] = s * a;
+ m[i + 1] = s * b;
+ }
+ }
+ }
+ i = -1;
+ while (++i <= j) {
+ s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));
+ tangents.push([ s || 0, m[i] * s || 0 ]);
+ }
+ return tangents;
+ }
+ function d3_svg_lineMonotone(points) {
+ return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));
+ }
+ d3.svg.line.radial = function() {
+ var line = d3_svg_line(d3_svg_lineRadial);
+ line.radius = line.x, delete line.x;
+ line.angle = line.y, delete line.y;
+ return line;
+ };
+ function d3_svg_lineRadial(points) {
+ var point, i = -1, n = points.length, r, a;
+ while (++i < n) {
+ point = points[i];
+ r = point[0];
+ a = point[1] - halfπ;
+ point[0] = r * Math.cos(a);
+ point[1] = r * Math.sin(a);
+ }
+ return points;
+ }
+ function d3_svg_area(projection) {
+ var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7;
+ function area(data) {
+ var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {
+ return x;
+ } : d3_functor(x1), fy1 = y0 === y1 ? function() {
+ return y;
+ } : d3_functor(y1), x, y;
+ function segment() {
+ segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z");
+ }
+ while (++i < n) {
+ if (defined.call(this, d = data[i], i)) {
+ points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);
+ points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);
+ } else if (points0.length) {
+ segment();
+ points0 = [];
+ points1 = [];
+ }
+ }
+ if (points0.length) segment();
+ return segments.length ? segments.join("") : null;
+ }
+ area.x = function(_) {
+ if (!arguments.length) return x1;
+ x0 = x1 = _;
+ return area;
+ };
+ area.x0 = function(_) {
+ if (!arguments.length) return x0;
+ x0 = _;
+ return area;
+ };
+ area.x1 = function(_) {
+ if (!arguments.length) return x1;
+ x1 = _;
+ return area;
+ };
+ area.y = function(_) {
+ if (!arguments.length) return y1;
+ y0 = y1 = _;
+ return area;
+ };
+ area.y0 = function(_) {
+ if (!arguments.length) return y0;
+ y0 = _;
+ return area;
+ };
+ area.y1 = function(_) {
+ if (!arguments.length) return y1;
+ y1 = _;
+ return area;
+ };
+ area.defined = function(_) {
+ if (!arguments.length) return defined;
+ defined = _;
+ return area;
+ };
+ area.interpolate = function(_) {
+ if (!arguments.length) return interpolateKey;
+ if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
+ interpolateReverse = interpolate.reverse || interpolate;
+ L = interpolate.closed ? "M" : "L";
+ return area;
+ };
+ area.tension = function(_) {
+ if (!arguments.length) return tension;
+ tension = _;
+ return area;
+ };
+ return area;
+ }
+ d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
+ d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
+ d3.svg.area = function() {
+ return d3_svg_area(d3_identity);
+ };
+ d3.svg.area.radial = function() {
+ var area = d3_svg_area(d3_svg_lineRadial);
+ area.radius = area.x, delete area.x;
+ area.innerRadius = area.x0, delete area.x0;
+ area.outerRadius = area.x1, delete area.x1;
+ area.angle = area.y, delete area.y;
+ area.startAngle = area.y0, delete area.y0;
+ area.endAngle = area.y1, delete area.y1;
+ return area;
+ };
+ d3.svg.chord = function() {
+ var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
+ function chord(d, i) {
+ var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);
+ return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z";
+ }
+ function subgroup(self, f, d, i) {
+ var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;
+ return {
+ r: r,
+ a0: a0,
+ a1: a1,
+ p0: [ r * Math.cos(a0), r * Math.sin(a0) ],
+ p1: [ r * Math.cos(a1), r * Math.sin(a1) ]
+ };
+ }
+ function equals(a, b) {
+ return a.a0 == b.a0 && a.a1 == b.a1;
+ }
+ function arc(r, p, a) {
+ return "A" + r + "," + r + " 0 " + +(a > π) + ",1 " + p;
+ }
+ function curve(r0, p0, r1, p1) {
+ return "Q 0,0 " + p1;
+ }
+ chord.radius = function(v) {
+ if (!arguments.length) return radius;
+ radius = d3_functor(v);
+ return chord;
+ };
+ chord.source = function(v) {
+ if (!arguments.length) return source;
+ source = d3_functor(v);
+ return chord;
+ };
+ chord.target = function(v) {
+ if (!arguments.length) return target;
+ target = d3_functor(v);
+ return chord;
+ };
+ chord.startAngle = function(v) {
+ if (!arguments.length) return startAngle;
+ startAngle = d3_functor(v);
+ return chord;
+ };
+ chord.endAngle = function(v) {
+ if (!arguments.length) return endAngle;
+ endAngle = d3_functor(v);
+ return chord;
+ };
+ return chord;
+ };
+ function d3_svg_chordRadius(d) {
+ return d.radius;
+ }
+ d3.svg.diagonal = function() {
+ var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;
+ function diagonal(d, i) {
+ var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {
+ x: p0.x,
+ y: m
+ }, {
+ x: p3.x,
+ y: m
+ }, p3 ];
+ p = p.map(projection);
+ return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3];
+ }
+ diagonal.source = function(x) {
+ if (!arguments.length) return source;
+ source = d3_functor(x);
+ return diagonal;
+ };
+ diagonal.target = function(x) {
+ if (!arguments.length) return target;
+ target = d3_functor(x);
+ return diagonal;
+ };
+ diagonal.projection = function(x) {
+ if (!arguments.length) return projection;
+ projection = x;
+ return diagonal;
+ };
+ return diagonal;
+ };
+ function d3_svg_diagonalProjection(d) {
+ return [ d.x, d.y ];
+ }
+ d3.svg.diagonal.radial = function() {
+ var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;
+ diagonal.projection = function(x) {
+ return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;
+ };
+ return diagonal;
+ };
+ function d3_svg_diagonalRadialProjection(projection) {
+ return function() {
+ var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;
+ return [ r * Math.cos(a), r * Math.sin(a) ];
+ };
+ }
+ d3.svg.symbol = function() {
+ var type = d3_svg_symbolType, size = d3_svg_symbolSize;
+ function symbol(d, i) {
+ return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));
+ }
+ symbol.type = function(x) {
+ if (!arguments.length) return type;
+ type = d3_functor(x);
+ return symbol;
+ };
+ symbol.size = function(x) {
+ if (!arguments.length) return size;
+ size = d3_functor(x);
+ return symbol;
+ };
+ return symbol;
+ };
+ function d3_svg_symbolSize() {
+ return 64;
+ }
+ function d3_svg_symbolType() {
+ return "circle";
+ }
+ function d3_svg_symbolCircle(size) {
+ var r = Math.sqrt(size / π);
+ return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z";
+ }
+ var d3_svg_symbols = d3.map({
+ circle: d3_svg_symbolCircle,
+ cross: function(size) {
+ var r = Math.sqrt(size / 5) / 2;
+ return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z";
+ },
+ diamond: function(size) {
+ var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;
+ return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z";
+ },
+ square: function(size) {
+ var r = Math.sqrt(size) / 2;
+ return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z";
+ },
+ "triangle-down": function(size) {
+ var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
+ return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z";
+ },
+ "triangle-up": function(size) {
+ var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
+ return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z";
+ }
+ });
+ d3.svg.symbolTypes = d3_svg_symbols.keys();
+ var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);
+ function d3_transition(groups, namespace, id) {
+ d3_subclass(groups, d3_transitionPrototype);
+ groups.namespace = namespace;
+ groups.id = id;
+ return groups;
+ }
+ var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;
+ d3_transitionPrototype.call = d3_selectionPrototype.call;
+ d3_transitionPrototype.empty = d3_selectionPrototype.empty;
+ d3_transitionPrototype.node = d3_selectionPrototype.node;
+ d3_transitionPrototype.size = d3_selectionPrototype.size;
+ d3.transition = function(selection) {
+ return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition();
+ };
+ d3.transition.prototype = d3_transitionPrototype;
+ d3_transitionPrototype.select = function(selector) {
+ var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;
+ selector = d3_selection_selector(selector);
+ for (var j = -1, m = this.length; ++j < m; ) {
+ subgroups.push(subgroup = []);
+ for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+ if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {
+ if ("__data__" in node) subnode.__data__ = node.__data__;
+ d3_transitionNode(subnode, i, ns, id, node[ns][id]);
+ subgroup.push(subnode);
+ } else {
+ subgroup.push(null);
+ }
+ }
+ }
+ return d3_transition(subgroups, ns, id);
+ };
+ d3_transitionPrototype.selectAll = function(selector) {
+ var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;
+ selector = d3_selection_selectorAll(selector);
+ for (var j = -1, m = this.length; ++j < m; ) {
+ for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+ if (node = group[i]) {
+ transition = node[ns][id];
+ subnodes = selector.call(node, node.__data__, i, j);
+ subgroups.push(subgroup = []);
+ for (var k = -1, o = subnodes.length; ++k < o; ) {
+ if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);
+ subgroup.push(subnode);
+ }
+ }
+ }
+ }
+ return d3_transition(subgroups, ns, id);
+ };
+ d3_transitionPrototype.filter = function(filter) {
+ var subgroups = [], subgroup, group, node;
+ if (typeof filter !== "function") filter = d3_selection_filter(filter);
+ for (var j = 0, m = this.length; j < m; j++) {
+ subgroups.push(subgroup = []);
+ for (var group = this[j], i = 0, n = group.length; i < n; i++) {
+ if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
+ subgroup.push(node);
+ }
+ }
+ }
+ return d3_transition(subgroups, this.namespace, this.id);
+ };
+ d3_transitionPrototype.tween = function(name, tween) {
+ var id = this.id, ns = this.namespace;
+ if (arguments.length < 2) return this.node()[ns][id].tween.get(name);
+ return d3_selection_each(this, tween == null ? function(node) {
+ node[ns][id].tween.remove(name);
+ } : function(node) {
+ node[ns][id].tween.set(name, tween);
+ });
+ };
+ function d3_transition_tween(groups, name, value, tween) {
+ var id = groups.id, ns = groups.namespace;
+ return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) {
+ node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));
+ } : (value = tween(value), function(node) {
+ node[ns][id].tween.set(name, value);
+ }));
+ }
+ d3_transitionPrototype.attr = function(nameNS, value) {
+ if (arguments.length < 2) {
+ for (value in nameNS) this.attr(value, nameNS[value]);
+ return this;
+ }
+ var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);
+ function attrNull() {
+ this.removeAttribute(name);
+ }
+ function attrNullNS() {
+ this.removeAttributeNS(name.space, name.local);
+ }
+ function attrTween(b) {
+ return b == null ? attrNull : (b += "", function() {
+ var a = this.getAttribute(name), i;
+ return a !== b && (i = interpolate(a, b), function(t) {
+ this.setAttribute(name, i(t));
+ });
+ });
+ }
+ function attrTweenNS(b) {
+ return b == null ? attrNullNS : (b += "", function() {
+ var a = this.getAttributeNS(name.space, name.local), i;
+ return a !== b && (i = interpolate(a, b), function(t) {
+ this.setAttributeNS(name.space, name.local, i(t));
+ });
+ });
+ }
+ return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween);
+ };
+ d3_transitionPrototype.attrTween = function(nameNS, tween) {
+ var name = d3.ns.qualify(nameNS);
+ function attrTween(d, i) {
+ var f = tween.call(this, d, i, this.getAttribute(name));
+ return f && function(t) {
+ this.setAttribute(name, f(t));
+ };
+ }
+ function attrTweenNS(d, i) {
+ var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
+ return f && function(t) {
+ this.setAttributeNS(name.space, name.local, f(t));
+ };
+ }
+ return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
+ };
+ d3_transitionPrototype.style = function(name, value, priority) {
+ var n = arguments.length;
+ if (n < 3) {
+ if (typeof name !== "string") {
+ if (n < 2) value = "";
+ for (priority in name) this.style(priority, name[priority], value);
+ return this;
+ }
+ priority = "";
+ }
+ function styleNull() {
+ this.style.removeProperty(name);
+ }
+ function styleString(b) {
+ return b == null ? styleNull : (b += "", function() {
+ var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i;
+ return a !== b && (i = d3_interpolate(a, b), function(t) {
+ this.style.setProperty(name, i(t), priority);
+ });
+ });
+ }
+ return d3_transition_tween(this, "style." + name, value, styleString);
+ };
+ d3_transitionPrototype.styleTween = function(name, tween, priority) {
+ if (arguments.length < 3) priority = "";
+ function styleTween(d, i) {
+ var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name));
+ return f && function(t) {
+ this.style.setProperty(name, f(t), priority);
+ };
+ }
+ return this.tween("style." + name, styleTween);
+ };
+ d3_transitionPrototype.text = function(value) {
+ return d3_transition_tween(this, "text", value, d3_transition_text);
+ };
+ function d3_transition_text(b) {
+ if (b == null) b = "";
+ return function() {
+ this.textContent = b;
+ };
+ }
+ d3_transitionPrototype.remove = function() {
+ var ns = this.namespace;
+ return this.each("end.transition", function() {
+ var p;
+ if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);
+ });
+ };
+ d3_transitionPrototype.ease = function(value) {
+ var id = this.id, ns = this.namespace;
+ if (arguments.length < 1) return this.node()[ns][id].ease;
+ if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
+ return d3_selection_each(this, function(node) {
+ node[ns][id].ease = value;
+ });
+ };
+ d3_transitionPrototype.delay = function(value) {
+ var id = this.id, ns = this.namespace;
+ if (arguments.length < 1) return this.node()[ns][id].delay;
+ return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
+ node[ns][id].delay = +value.call(node, node.__data__, i, j);
+ } : (value = +value, function(node) {
+ node[ns][id].delay = value;
+ }));
+ };
+ d3_transitionPrototype.duration = function(value) {
+ var id = this.id, ns = this.namespace;
+ if (arguments.length < 1) return this.node()[ns][id].duration;
+ return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
+ node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));
+ } : (value = Math.max(1, value), function(node) {
+ node[ns][id].duration = value;
+ }));
+ };
+ d3_transitionPrototype.each = function(type, listener) {
+ var id = this.id, ns = this.namespace;
+ if (arguments.length < 2) {
+ var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;
+ d3_transitionInheritId = id;
+ d3_selection_each(this, function(node, i, j) {
+ d3_transitionInherit = node[ns][id];
+ type.call(node, node.__data__, i, j);
+ });
+ d3_transitionInherit = inherit;
+ d3_transitionInheritId = inheritId;
+ } else {
+ d3_selection_each(this, function(node) {
+ var transition = node[ns][id];
+ (transition.event || (transition.event = d3.dispatch("start", "end", "interrupt"))).on(type, listener);
+ });
+ }
+ return this;
+ };
+ d3_transitionPrototype.transition = function() {
+ var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;
+ for (var j = 0, m = this.length; j < m; j++) {
+ subgroups.push(subgroup = []);
+ for (var group = this[j], i = 0, n = group.length; i < n; i++) {
+ if (node = group[i]) {
+ transition = node[ns][id0];
+ d3_transitionNode(node, i, ns, id1, {
+ time: transition.time,
+ ease: transition.ease,
+ delay: transition.delay + transition.duration,
+ duration: transition.duration
+ });
+ }
+ subgroup.push(node);
+ }
+ }
+ return d3_transition(subgroups, ns, id1);
+ };
+ function d3_transitionNamespace(name) {
+ return name == null ? "__transition__" : "__transition_" + name + "__";
+ }
+ function d3_transitionNode(node, i, namespace, id, inherit) {
+ var lock = node[namespace] || (node[namespace] = {
+ active: 0,
+ count: 0
+ }), transition = lock[id];
+ if (!transition) {
+ var time = inherit.time;
+ transition = lock[id] = {
+ tween: new d3_Map(),
+ time: time,
+ delay: inherit.delay,
+ duration: inherit.duration,
+ ease: inherit.ease
+ };
+ inherit = null;
+ ++lock.count;
+ d3.timer(function(elapsed) {
+ var d = node.__data__, delay = transition.delay, duration, ease, timer = d3_timer_active, tweened = [];
+ timer.t = delay + time;
+ if (delay <= elapsed) return start(elapsed - delay);
+ timer.c = start;
+ function start(elapsed) {
+ if (lock.active > id) return stop(false);
+ lock.active = id;
+ transition.event && transition.event.start.call(node, d, i);
+ transition.tween.forEach(function(key, value) {
+ if (value = value.call(node, d, i)) {
+ tweened.push(value);
+ }
+ });
+ ease = transition.ease;
+ duration = transition.duration;
+ d3.timer(function() {
+ timer.c = tick(elapsed || 1) ? d3_true : tick;
+ return 1;
+ }, 0, time);
+ }
+ function tick(elapsed) {
+ if (lock.active !== id) return stop(false);
+ var t = elapsed / duration, e = ease(t), n = tweened.length;
+ while (n > 0) {
+ tweened[--n].call(node, e);
+ }
+ if (t >= 1) return stop(true);
+ }
+ function stop(end) {
+ if (transition.event) transition.event[end ? "end" : "interrupt"].call(node, d, i);
+ if (--lock.count) delete lock[id]; else delete node[namespace];
+ return 1;
+ }
+ }, 0, time);
+ }
+ }
+ d3.svg.axis = function() {
+ var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;
+ function axis(g) {
+ g.each(function() {
+ var g = d3.select(this);
+ var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();
+ var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick.order()).style("opacity", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;
+ var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"),
+ d3.transition(path));
+ tickEnter.append("line");
+ tickEnter.append("text");
+ var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text"), sign = orient === "top" || orient === "left" ? -1 : 1, x1, x2, y1, y2;
+ if (orient === "bottom" || orient === "top") {
+ tickTransform = d3_svg_axisX, x1 = "x", y1 = "y", x2 = "x2", y2 = "y2";
+ text.attr("dy", sign < 0 ? "0em" : ".71em").style("text-anchor", "middle");
+ pathUpdate.attr("d", "M" + range[0] + "," + sign * outerTickSize + "V0H" + range[1] + "V" + sign * outerTickSize);
+ } else {
+ tickTransform = d3_svg_axisY, x1 = "y", y1 = "x", x2 = "y2", y2 = "x2";
+ text.attr("dy", ".32em").style("text-anchor", sign < 0 ? "end" : "start");
+ pathUpdate.attr("d", "M" + sign * outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + sign * outerTickSize);
+ }
+ lineEnter.attr(y2, sign * innerTickSize);
+ textEnter.attr(y1, sign * tickSpacing);
+ lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);
+ textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);
+ if (scale1.rangeBand) {
+ var x = scale1, dx = x.rangeBand() / 2;
+ scale0 = scale1 = function(d) {
+ return x(d) + dx;
+ };
+ } else if (scale0.rangeBand) {
+ scale0 = scale1;
+ } else {
+ tickExit.call(tickTransform, scale1, scale0);
+ }
+ tickEnter.call(tickTransform, scale0, scale1);
+ tickUpdate.call(tickTransform, scale1, scale1);
+ });
+ }
+ axis.scale = function(x) {
+ if (!arguments.length) return scale;
+ scale = x;
+ return axis;
+ };
+ axis.orient = function(x) {
+ if (!arguments.length) return orient;
+ orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient;
+ return axis;
+ };
+ axis.ticks = function() {
+ if (!arguments.length) return tickArguments_;
+ tickArguments_ = arguments;
+ return axis;
+ };
+ axis.tickValues = function(x) {
+ if (!arguments.length) return tickValues;
+ tickValues = x;
+ return axis;
+ };
+ axis.tickFormat = function(x) {
+ if (!arguments.length) return tickFormat_;
+ tickFormat_ = x;
+ return axis;
+ };
+ axis.tickSize = function(x) {
+ var n = arguments.length;
+ if (!n) return innerTickSize;
+ innerTickSize = +x;
+ outerTickSize = +arguments[n - 1];
+ return axis;
+ };
+ axis.innerTickSize = function(x) {
+ if (!arguments.length) return innerTickSize;
+ innerTickSize = +x;
+ return axis;
+ };
+ axis.outerTickSize = function(x) {
+ if (!arguments.length) return outerTickSize;
+ outerTickSize = +x;
+ return axis;
+ };
+ axis.tickPadding = function(x) {
+ if (!arguments.length) return tickPadding;
+ tickPadding = +x;
+ return axis;
+ };
+ axis.tickSubdivide = function() {
+ return arguments.length && axis;
+ };
+ return axis;
+ };
+ var d3_svg_axisDefaultOrient = "bottom", d3_svg_axisOrients = {
+ top: 1,
+ right: 1,
+ bottom: 1,
+ left: 1
+ };
+ function d3_svg_axisX(selection, x0, x1) {
+ selection.attr("transform", function(d) {
+ var v0 = x0(d);
+ return "translate(" + (isFinite(v0) ? v0 : x1(d)) + ",0)";
+ });
+ }
+ function d3_svg_axisY(selection, y0, y1) {
+ selection.attr("transform", function(d) {
+ var v0 = y0(d);
+ return "translate(0," + (isFinite(v0) ? v0 : y1(d)) + ")";
+ });
+ }
+ d3.svg.brush = function() {
+ var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];
+ function brush(g) {
+ g.each(function() {
+ var g = d3.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart);
+ var background = g.selectAll(".background").data([ 0 ]);
+ background.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair");
+ g.selectAll(".extent").data([ 0 ]).enter().append("rect").attr("class", "extent").style("cursor", "move");
+ var resize = g.selectAll(".resize").data(resizes, d3_identity);
+ resize.exit().remove();
+ resize.enter().append("g").attr("class", function(d) {
+ return "resize " + d;
+ }).style("cursor", function(d) {
+ return d3_svg_brushCursor[d];
+ }).append("rect").attr("x", function(d) {
+ return /[ew]$/.test(d) ? -3 : null;
+ }).attr("y", function(d) {
+ return /^[ns]/.test(d) ? -3 : null;
+ }).attr("width", 6).attr("height", 6).style("visibility", "hidden");
+ resize.style("display", brush.empty() ? "none" : null);
+ var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;
+ if (x) {
+ range = d3_scaleRange(x);
+ backgroundUpdate.attr("x", range[0]).attr("width", range[1] - range[0]);
+ redrawX(gUpdate);
+ }
+ if (y) {
+ range = d3_scaleRange(y);
+ backgroundUpdate.attr("y", range[0]).attr("height", range[1] - range[0]);
+ redrawY(gUpdate);
+ }
+ redraw(gUpdate);
+ });
+ }
+ brush.event = function(g) {
+ g.each(function() {
+ var event_ = event.of(this, arguments), extent1 = {
+ x: xExtent,
+ y: yExtent,
+ i: xExtentDomain,
+ j: yExtentDomain
+ }, extent0 = this.__chart__ || extent1;
+ this.__chart__ = extent1;
+ if (d3_transitionInheritId) {
+ d3.select(this).transition().each("start.brush", function() {
+ xExtentDomain = extent0.i;
+ yExtentDomain = extent0.j;
+ xExtent = extent0.x;
+ yExtent = extent0.y;
+ event_({
+ type: "brushstart"
+ });
+ }).tween("brush:brush", function() {
+ var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);
+ xExtentDomain = yExtentDomain = null;
+ return function(t) {
+ xExtent = extent1.x = xi(t);
+ yExtent = extent1.y = yi(t);
+ event_({
+ type: "brush",
+ mode: "resize"
+ });
+ };
+ }).each("end.brush", function() {
+ xExtentDomain = extent1.i;
+ yExtentDomain = extent1.j;
+ event_({
+ type: "brush",
+ mode: "resize"
+ });
+ event_({
+ type: "brushend"
+ });
+ });
+ } else {
+ event_({
+ type: "brushstart"
+ });
+ event_({
+ type: "brush",
+ mode: "resize"
+ });
+ event_({
+ type: "brushend"
+ });
+ }
+ });
+ };
+ function redraw(g) {
+ g.selectAll(".resize").attr("transform", function(d) {
+ return "translate(" + xExtent[+/e$/.test(d)] + "," + yExtent[+/^s/.test(d)] + ")";
+ });
+ }
+ function redrawX(g) {
+ g.select(".extent").attr("x", xExtent[0]);
+ g.selectAll(".extent,.n>rect,.s>rect").attr("width", xExtent[1] - xExtent[0]);
+ }
+ function redrawY(g) {
+ g.select(".extent").attr("y", yExtent[0]);
+ g.selectAll(".extent,.e>rect,.w>rect").attr("height", yExtent[1] - yExtent[0]);
+ }
+ function brushstart() {
+ var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress(), center, origin = d3.mouse(target), offset;
+ var w = d3.select(d3_window).on("keydown.brush", keydown).on("keyup.brush", keyup);
+ if (d3.event.changedTouches) {
+ w.on("touchmove.brush", brushmove).on("touchend.brush", brushend);
+ } else {
+ w.on("mousemove.brush", brushmove).on("mouseup.brush", brushend);
+ }
+ g.interrupt().selectAll("*").interrupt();
+ if (dragging) {
+ origin[0] = xExtent[0] - origin[0];
+ origin[1] = yExtent[0] - origin[1];
+ } else if (resizing) {
+ var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);
+ offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];
+ origin[0] = xExtent[ex];
+ origin[1] = yExtent[ey];
+ } else if (d3.event.altKey) center = origin.slice();
+ g.style("pointer-events", "none").selectAll(".resize").style("display", null);
+ d3.select("body").style("cursor", eventTarget.style("cursor"));
+ event_({
+ type: "brushstart"
+ });
+ brushmove();
+ function keydown() {
+ if (d3.event.keyCode == 32) {
+ if (!dragging) {
+ center = null;
+ origin[0] -= xExtent[1];
+ origin[1] -= yExtent[1];
+ dragging = 2;
+ }
+ d3_eventPreventDefault();
+ }
+ }
+ function keyup() {
+ if (d3.event.keyCode == 32 && dragging == 2) {
+ origin[0] += xExtent[1];
+ origin[1] += yExtent[1];
+ dragging = 0;
+ d3_eventPreventDefault();
+ }
+ }
+ function brushmove() {
+ var point = d3.mouse(target), moved = false;
+ if (offset) {
+ point[0] += offset[0];
+ point[1] += offset[1];
+ }
+ if (!dragging) {
+ if (d3.event.altKey) {
+ if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];
+ origin[0] = xExtent[+(point[0] < center[0])];
+ origin[1] = yExtent[+(point[1] < center[1])];
+ } else center = null;
+ }
+ if (resizingX && move1(point, x, 0)) {
+ redrawX(g);
+ moved = true;
+ }
+ if (resizingY && move1(point, y, 1)) {
+ redrawY(g);
+ moved = true;
+ }
+ if (moved) {
+ redraw(g);
+ event_({
+ type: "brush",
+ mode: dragging ? "move" : "resize"
+ });
+ }
+ }
+ function move1(point, scale, i) {
+ var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;
+ if (dragging) {
+ r0 -= position;
+ r1 -= size + position;
+ }
+ min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];
+ if (dragging) {
+ max = (min += position) + size;
+ } else {
+ if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));
+ if (position < min) {
+ max = min;
+ min = position;
+ } else {
+ max = position;
+ }
+ }
+ if (extent[0] != min || extent[1] != max) {
+ if (i) yExtentDomain = null; else xExtentDomain = null;
+ extent[0] = min;
+ extent[1] = max;
+ return true;
+ }
+ }
+ function brushend() {
+ brushmove();
+ g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null);
+ d3.select("body").style("cursor", null);
+ w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null);
+ dragRestore();
+ event_({
+ type: "brushend"
+ });
+ }
+ }
+ brush.x = function(z) {
+ if (!arguments.length) return x;
+ x = z;
+ resizes = d3_svg_brushResizes[!x << 1 | !y];
+ return brush;
+ };
+ brush.y = function(z) {
+ if (!arguments.length) return y;
+ y = z;
+ resizes = d3_svg_brushResizes[!x << 1 | !y];
+ return brush;
+ };
+ brush.clamp = function(z) {
+ if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;
+ if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;
+ return brush;
+ };
+ brush.extent = function(z) {
+ var x0, x1, y0, y1, t;
+ if (!arguments.length) {
+ if (x) {
+ if (xExtentDomain) {
+ x0 = xExtentDomain[0], x1 = xExtentDomain[1];
+ } else {
+ x0 = xExtent[0], x1 = xExtent[1];
+ if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);
+ if (x1 < x0) t = x0, x0 = x1, x1 = t;
+ }
+ }
+ if (y) {
+ if (yExtentDomain) {
+ y0 = yExtentDomain[0], y1 = yExtentDomain[1];
+ } else {
+ y0 = yExtent[0], y1 = yExtent[1];
+ if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);
+ if (y1 < y0) t = y0, y0 = y1, y1 = t;
+ }
+ }
+ return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];
+ }
+ if (x) {
+ x0 = z[0], x1 = z[1];
+ if (y) x0 = x0[0], x1 = x1[0];
+ xExtentDomain = [ x0, x1 ];
+ if (x.invert) x0 = x(x0), x1 = x(x1);
+ if (x1 < x0) t = x0, x0 = x1, x1 = t;
+ if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];
+ }
+ if (y) {
+ y0 = z[0], y1 = z[1];
+ if (x) y0 = y0[1], y1 = y1[1];
+ yExtentDomain = [ y0, y1 ];
+ if (y.invert) y0 = y(y0), y1 = y(y1);
+ if (y1 < y0) t = y0, y0 = y1, y1 = t;
+ if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];
+ }
+ return brush;
+ };
+ brush.clear = function() {
+ if (!brush.empty()) {
+ xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];
+ xExtentDomain = yExtentDomain = null;
+ }
+ return brush;
+ };
+ brush.empty = function() {
+ return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];
+ };
+ return d3.rebind(brush, event, "on");
+ };
+ var d3_svg_brushCursor = {
+ n: "ns-resize",
+ e: "ew-resize",
+ s: "ns-resize",
+ w: "ew-resize",
+ nw: "nwse-resize",
+ ne: "nesw-resize",
+ se: "nwse-resize",
+ sw: "nesw-resize"
+ };
+ var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ];
+ var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;
+ var d3_time_formatUtc = d3_time_format.utc;
+ var d3_time_formatIso = d3_time_formatUtc("%Y-%m-%dT%H:%M:%S.%LZ");
+ d3_time_format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso;
+ function d3_time_formatIsoNative(date) {
+ return date.toISOString();
+ }
+ d3_time_formatIsoNative.parse = function(string) {
+ var date = new Date(string);
+ return isNaN(date) ? null : date;
+ };
+ d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
+ d3_time.second = d3_time_interval(function(date) {
+ return new d3_date(Math.floor(date / 1e3) * 1e3);
+ }, function(date, offset) {
+ date.setTime(date.getTime() + Math.floor(offset) * 1e3);
+ }, function(date) {
+ return date.getSeconds();
+ });
+ d3_time.seconds = d3_time.second.range;
+ d3_time.seconds.utc = d3_time.second.utc.range;
+ d3_time.minute = d3_time_interval(function(date) {
+ return new d3_date(Math.floor(date / 6e4) * 6e4);
+ }, function(date, offset) {
+ date.setTime(date.getTime() + Math.floor(offset) * 6e4);
+ }, function(date) {
+ return date.getMinutes();
+ });
+ d3_time.minutes = d3_time.minute.range;
+ d3_time.minutes.utc = d3_time.minute.utc.range;
+ d3_time.hour = d3_time_interval(function(date) {
+ var timezone = date.getTimezoneOffset() / 60;
+ return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);
+ }, function(date, offset) {
+ date.setTime(date.getTime() + Math.floor(offset) * 36e5);
+ }, function(date) {
+ return date.getHours();
+ });
+ d3_time.hours = d3_time.hour.range;
+ d3_time.hours.utc = d3_time.hour.utc.range;
+ d3_time.month = d3_time_interval(function(date) {
+ date = d3_time.day(date);
+ date.setDate(1);
+ return date;
+ }, function(date, offset) {
+ date.setMonth(date.getMonth() + offset);
+ }, function(date) {
+ return date.getMonth();
+ });
+ d3_time.months = d3_time.month.range;
+ d3_time.months.utc = d3_time.month.utc.range;
+ function d3_time_scale(linear, methods, format) {
+ function scale(x) {
+ return linear(x);
+ }
+ scale.invert = function(x) {
+ return d3_time_scaleDate(linear.invert(x));
+ };
+ scale.domain = function(x) {
+ if (!arguments.length) return linear.domain().map(d3_time_scaleDate);
+ linear.domain(x);
+ return scale;
+ };
+ function tickMethod(extent, count) {
+ var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);
+ return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {
+ return d / 31536e6;
+ }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];
+ }
+ scale.nice = function(interval, skip) {
+ var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" && tickMethod(extent, interval);
+ if (method) interval = method[0], skip = method[1];
+ function skipped(date) {
+ return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;
+ }
+ return scale.domain(d3_scale_nice(domain, skip > 1 ? {
+ floor: function(date) {
+ while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);
+ return date;
+ },
+ ceil: function(date) {
+ while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);
+ return date;
+ }
+ } : interval));
+ };
+ scale.ticks = function(interval, skip) {
+ var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" ? tickMethod(extent, interval) : !interval.range && [ {
+ range: interval
+ }, skip ];
+ if (method) interval = method[0], skip = method[1];
+ return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);
+ };
+ scale.tickFormat = function() {
+ return format;
+ };
+ scale.copy = function() {
+ return d3_time_scale(linear.copy(), methods, format);
+ };
+ return d3_scale_linearRebind(scale, linear);
+ }
+ function d3_time_scaleDate(t) {
+ return new Date(t);
+ }
+ var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];
+ var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];
+ var d3_time_scaleLocalFormat = d3_time_format.multi([ [ ".%L", function(d) {
+ return d.getMilliseconds();
+ } ], [ ":%S", function(d) {
+ return d.getSeconds();
+ } ], [ "%I:%M", function(d) {
+ return d.getMinutes();
+ } ], [ "%I %p", function(d) {
+ return d.getHours();
+ } ], [ "%a %d", function(d) {
+ return d.getDay() && d.getDate() != 1;
+ } ], [ "%b %d", function(d) {
+ return d.getDate() != 1;
+ } ], [ "%B", function(d) {
+ return d.getMonth();
+ } ], [ "%Y", d3_true ] ]);
+ var d3_time_scaleMilliseconds = {
+ range: function(start, stop, step) {
+ return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);
+ },
+ floor: d3_identity,
+ ceil: d3_identity
+ };
+ d3_time_scaleLocalMethods.year = d3_time.year;
+ d3_time.scale = function() {
+ return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);
+ };
+ var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {
+ return [ m[0].utc, m[1] ];
+ });
+ var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ ".%L", function(d) {
+ return d.getUTCMilliseconds();
+ } ], [ ":%S", function(d) {
+ return d.getUTCSeconds();
+ } ], [ "%I:%M", function(d) {
+ return d.getUTCMinutes();
+ } ], [ "%I %p", function(d) {
+ return d.getUTCHours();
+ } ], [ "%a %d", function(d) {
+ return d.getUTCDay() && d.getUTCDate() != 1;
+ } ], [ "%b %d", function(d) {
+ return d.getUTCDate() != 1;
+ } ], [ "%B", function(d) {
+ return d.getUTCMonth();
+ } ], [ "%Y", d3_true ] ]);
+ d3_time_scaleUtcMethods.year = d3_time.year.utc;
+ d3_time.scale.utc = function() {
+ return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);
+ };
+ d3.text = d3_xhrType(function(request) {
+ return request.responseText;
+ });
+ d3.json = function(url, callback) {
+ return d3_xhr(url, "application/json", d3_json, callback);
+ };
+ function d3_json(request) {
+ return JSON.parse(request.responseText);
+ }
+ d3.html = function(url, callback) {
+ return d3_xhr(url, "text/html", d3_html, callback);
+ };
+ function d3_html(request) {
+ var range = d3_document.createRange();
+ range.selectNode(d3_document.body);
+ return range.createContextualFragment(request.responseText);
+ }
+ d3.xml = d3_xhrType(function(request) {
+ return request.responseXML;
+ });
+ if (typeof define === "function" && define.amd) define(d3); else if (typeof module === "object" && module.exports) module.exports = d3;
+ this.d3 = d3;
+}();
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/d3.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/d3.min.js
new file mode 100644
index 0000000..0286134
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/d3.min.js
@@ -0,0 +1,5 @@
+!function(){function n(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function t(n){return null===n?0/0:+n}function e(n){return!isNaN(n)}function r(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function u(n){return n.length}function i(n){for(var t=1;n*t%1;)t*=10;return t}function o(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function a(){this._=Object.create(null)}function c(n){return(n+="")===da||n[0]===ma?ma+n:n}function l(n){return(n+="")[0]===ma?n.slice(1):n}function s(n){return c(n)in this._}function f(n){return(n=c(n))in this._&&delete this._[n]}function h(){var n=[];for(var t in this._)n.push(l(t));return n}function g(){var n=0;for(var t in this._)++n;return n}function p(){for(var n in this._)return!1;return!0}function v(){this._=Object.create(null)}function d(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function m(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=ya.length;r>e;++e){var u=ya[e]+t;if(u in n)return u}}function y(){}function M(){}function x(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new a;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function b(){ta.event.preventDefault()}function _(){for(var n,t=ta.event;n=t.sourceEvent;)t=n;return t}function w(n){for(var t=new M,e=0,r=arguments.length;++e<r;)t[arguments[e]]=x(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=ta.event;u.target=n,ta.event=u,t[u.type].apply(e,r)}finally{ta.event=i}}},t}function S(n){return xa(n,ka),n}function k(n){return"function"==typeof n?n:function(){return ba(n,this)}}function E(n){return"function"==typeof n?n:function(){return _a(n,this)}}function A(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ta.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?i:u}function N(n){return n.trim().replace(/\s+/g," ")}function C(n){return new RegExp("(?:^|\\s+)"+ta.requote(n)+"(?:\\s+|$)","g")}function z(n){return(n+"").trim().split(/^|\s+/)}function q(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=z(n).map(L);var u=n.length;return"function"==typeof t?r:e}function L(n){var t=C(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(u)||e.setAttribute("class",N(u+" "+n))):e.setAttribute("class",N(u.replace(t," ")))}}function T(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?i:u}function R(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?u:r}function D(n){return"function"==typeof n?n:(n=ta.ns.qualify(n)).local?function(){return this.ownerDocument.createElementNS(n.space,n.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,n)}}function P(){var n=this.parentNode;n&&n.removeChild(this)}function U(n){return{__data__:n}}function j(n){return function(){return Sa(this,n)}}function F(t){return arguments.length||(t=n),function(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}}function H(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function O(n){return xa(n,Aa),n}function Y(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function I(n){var t=n.__transition__;t&&++t.active}function Z(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,ra(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp("^__on([^.]+)"+ta.requote(n)+"$");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),c=V;a>0&&(n=n.slice(0,a));var l=Ca.get(n);return l&&(n=l,c=X),a?t?u:r:t?y:i}function V(n,t){return function(e){var r=ta.event;ta.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ta.event=r}}}function X(n,t){var e=V(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function $(){var n=".dragsuppress-"+ ++qa,t="click"+n,e=ta.select(oa).on("touchmove"+n,b).on("dragstart"+n,b).on("selectstart"+n,b);if(za){var r=ia.style,u=r[za];r[za]="none"}return function(i){if(e.on(n,null),za&&(r[za]=u),i){var o=function(){e.on(t,null)};e.on(t,function(){b(),o()},!0),setTimeout(o,0)}}}function B(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>La&&(oa.scrollX||oa.scrollY)){e=ta.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();La=!(u.f||u.e),e.remove()}return La?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function W(){return ta.event.changedTouches[0].identifier}function J(){return ta.event.target}function G(){return oa}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nt(n){return n>1?0:-1>n?Da:Math.acos(n)}function tt(n){return n>1?ja:-1>n?-ja:Math.asin(n)}function et(n){return((n=Math.exp(n))-1/n)/2}function rt(n){return((n=Math.exp(n))+1/n)/2}function ut(n){return((n=Math.exp(2*n))-1)/(n+1)}function it(n){return(n=Math.sin(n/2))*n}function ot(){}function at(n,t,e){return this instanceof at?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof at?new at(n.h,n.s,n.l):bt(""+n,_t,at):new at(n,t,e)}function ct(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new mt(u(n+120),u(n),u(n-120))}function lt(n,t,e){return this instanceof lt?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof lt?new lt(n.h,n.c,n.l):n instanceof ft?gt(n.l,n.a,n.b):gt((n=wt((n=ta.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new lt(n,t,e)}function st(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new ft(e,Math.cos(n*=Fa)*t,Math.sin(n)*t)}function ft(n,t,e){return this instanceof ft?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof ft?new ft(n.l,n.a,n.b):n instanceof lt?st(n.h,n.c,n.l):wt((n=mt(n)).r,n.g,n.b):new ft(n,t,e)}function ht(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=pt(u)*Ja,r=pt(r)*Ga,i=pt(i)*Ka,new mt(dt(3.2404542*u-1.5371385*r-.4985314*i),dt(-.969266*u+1.8760108*r+.041556*i),dt(.0556434*u-.2040259*r+1.0572252*i))}function gt(n,t,e){return n>0?new lt(Math.atan2(e,t)*Ha,Math.sqrt(t*t+e*e),n):new lt(0/0,0/0,n)}function pt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function dt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mt(n,t,e){return this instanceof mt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mt?new mt(n.r,n.g,n.b):bt(""+n,mt,ct):new mt(n,t,e)}function yt(n){return new mt(n>>16,255&n>>8,255&n)}function Mt(n){return yt(n)+""}function xt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=tc.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function _t(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new at(r,u,c)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=vt((.4124564*n+.3575761*t+.1804375*e)/Ja),u=vt((.2126729*n+.7151522*t+.072175*e)/Ga),i=vt((.0193339*n+.119192*t+.9503041*e)/Ka);return ft(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return"function"==typeof n?n:function(){return n}}function At(n){return n}function Nt(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Ct(t,e,n,r)}}function Ct(n,t,e,r){function u(){var n,t=c.status;if(!t&&qt(c)||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=ta.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!oa.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=ta.event;ta.event=n;try{o.progress.call(i,c)}finally{ta.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ra(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},ta.rebind(i,o,"on"),null==r?i:i.get(zt(r))}function zt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function qt(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function Lt(){var n=Tt(),t=Rt()-n;t>24?(isFinite(t)&&(clearTimeout(ic),ic=setTimeout(Lt,t)),uc=0):(uc=1,ac(Lt))}function Tt(){var n=Date.now();for(oc=ec;oc;)n>=oc.t&&(oc.f=oc.c(n-oc.t)),oc=oc.n;return n}function Rt(){for(var n,t=ec,e=1/0;t;)t.f?t=n?n.n=t.n:ec=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return rc=n,e}function Dt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Pt(n,t){var e=Math.pow(10,3*va(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Ut(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],o=0,a=r[0],c=0;u>0&&a>0&&(c+a+1>t&&(a=Math.max(1,t-c)),i.push(n.substring(u-=a,u+a)),!((c+=a+1)>t));)a=r[o=(o+1)%r.length];return i.reverse().join(e)}:At;return function(n){var e=lc.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",c=e[4]||"",l=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=sc.get(g)||jt;var M=l&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>p){var c=ta.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!l&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===o?u+n+k:">"===o?k+u+n:"^"===o?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function jt(n){return n+""}function Ft(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ht(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new hc(e-1)),1),e}function i(n,e){return t(n=new hc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{hc=Ft;var r=new Ft;return r._=n,o(r,t,e)}finally{hc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ot(n);return c.floor=c,c.round=Ot(r),c.ceil=Ot(u),c.offset=Ot(i),c.range=a,n}function Ot(n){return function(t,e){try{hc=Ft;var r=new Ft;return r._=t,n(r,e)._}finally{hc=Date}}}function Yt(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(c,a)),null!=(u=pc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=N[e])&&(e=i(t,null==u?"e"===e?" ":"0":u)),o.push(e),c=a+1);return o.push(n.slice(c,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&hc!==Ft,o=new(i?Ft:hc);return"j"in r?o.setFullYear(r.y,0,r.j):"w"in r&&("W"in r||"U"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(0|r.Z/100),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,l=e.length;c>a;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in pc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,N.c.toString(),t,r)}function c(n,t,r){return e(n,N.x.toString(),t,r)}function l(n,t,r){return e(n,N.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{hc=Ft;var t=new hc;return t._=n,r(t)}finally{hc=Date}}var r=t(n);return e.parse=function(n){try{hc=Ft;var t=r.parse(n);return t&&t._}finally{hc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ce;var M=ta.map(),x=Zt(v),b=Vt(v),_=Zt(d),w=Vt(d),S=Zt(m),k=Vt(m),E=Zt(y),A=Vt(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var N={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return It(n.getDate(),t,2)},e:function(n,t){return It(n.getDate(),t,2)},H:function(n,t){return It(n.getHours(),t,2)},I:function(n,t){return It(n.getHours()%12||12,t,2)},j:function(n,t){return It(1+fc.dayOfYear(n),t,3)},L:function(n,t){return It(n.getMilliseconds(),t,3)},m:function(n,t){return It(n.getMonth()+1,t,2)},M:function(n,t){return It(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return It(n.getSeconds(),t,2)},U:function(n,t){return It(fc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return It(fc.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return It(n.getFullYear()%100,t,2)},Y:function(n,t){return It(n.getFullYear()%1e4,t,4)},Z:oe,"%":function(){return"%"}},C={a:r,A:u,b:i,B:o,c:a,d:ne,e:ne,H:ee,I:ee,j:te,L:ie,m:Qt,M:re,p:s,S:ue,U:$t,w:Xt,W:Bt,x:c,X:l,y:Jt,Y:Wt,Z:Gt,"%":ae};return t}function It(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Zt(n){return new RegExp("^(?:"+n.map(ta.requote).join("|")+")","i")}function Vt(n){for(var t=new a,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Xt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function $t(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function Bt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Wt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Jt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.y=Kt(+r[0]),e+r[0].length):-1}function Gt(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Kt(n){return n+(n>68?1900:2e3)}function Qt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function ne(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function te(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function ee(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function re(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ue(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ie(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function oe(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=0|va(t)/60,u=va(t)%60;return e+It(r,"0",2)+It(u,"0",2)}function ae(n,t,e){dc.lastIndex=0;var r=dc.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ce(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function le(){}function se(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function fe(n,t){n&&xc.hasOwnProperty(n.type)&&xc[n.type](n,t)}function he(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function ge(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)he(n[e],t,1);t.polygonEnd()}function pe(){function n(n,t){n*=Fa,t=t*Fa/2+Da/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),l=Math.sin(t),s=i*l,f=u*c+s*Math.cos(a),h=s*o*Math.sin(a);_c.add(Math.atan2(h,f)),r=n,u=c,i=l}var t,e,r,u,i;wc.point=function(o,a){wc.point=n,r=(t=o)*Fa,u=Math.cos(a=(e=a)*Fa/2+Da/4),i=Math.sin(a)},wc.lineEnd=function(){n(t,e)}}function ve(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function de(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function me(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function ye(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function Me(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function xe(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function be(n){return[Math.atan2(n[1],n[0]),tt(n[2])]}function _e(n,t){return va(n[0]-t[0])<Ta&&va(n[1]-t[1])<Ta}function we(n,t){n*=Fa;var e=Math.cos(t*=Fa);Se(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function Se(n,t,e){++Sc,Ec+=(n-Ec)/Sc,Ac+=(t-Ac)/Sc,Nc+=(e-Nc)/Sc}function ke(){function n(n,u){n*=Fa;var i=Math.cos(u*=Fa),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),l=Math.atan2(Math.sqrt((l=e*c-r*a)*l+(l=r*o-t*c)*l+(l=t*a-e*o)*l),t*o+e*a+r*c);kc+=l,Cc+=l*(t+(t=o)),zc+=l*(e+(e=a)),qc+=l*(r+(r=c)),Se(t,e,r)}var t,e,r;Dc.point=function(u,i){u*=Fa;var o=Math.cos(i*=Fa);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),Dc.point=n,Se(t,e,r)}}function Ee(){Dc.point=we}function Ae(){function n(n,t){n*=Fa;var e=Math.cos(t*=Fa),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),l=u*c-i*a,s=i*o-r*c,f=r*a-u*o,h=Math.sqrt(l*l+s*s+f*f),g=r*o+u*a+i*c,p=h&&-nt(g)/h,v=Math.atan2(h,g);Lc+=p*l,Tc+=p*s,Rc+=p*f,kc+=v,Cc+=v*(r+(r=o)),zc+=v*(u+(u=a)),qc+=v*(i+(i=c)),Se(r,u,i)}var t,e,r,u,i;Dc.point=function(o,a){t=o,e=a,Dc.point=n,o*=Fa;var c=Math.cos(a*=Fa);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),Se(r,u,i)},Dc.lineEnd=function(){n(t,e),Dc.lineEnd=Ee,Dc.point=we}}function Ne(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Ce(){return!0}function ze(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(_e(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new Le(e,n,null,!0),l=new Le(e,null,c,!1);c.o=l,i.push(c),o.push(l),c=new Le(r,n,null,!1),l=new Le(r,null,c,!0),c.o=l,i.push(c),o.push(l)}}),o.sort(t),qe(i),qe(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].e=c=!c;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,l=s.length;l>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qe(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function Le(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Te(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function l(){y.point=o,d.lineEnd()}function s(n,t){v.push([n,t]);var e=u(n,t);x.point(e[0],e[1])}function f(){x.lineStart(),v=[]}function h(){s(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r)if(1&t){n=e[0];var u,r=n.length-1,o=-1;if(r>0){for(b||(i.polygonStart(),b=!0),i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);i.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Re))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=ta.merge(g);var n=He(m,p);g.length?(b||(i.polygonStart(),b=!0),ze(g,Pe,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=De(),x=t(M),b=!1;return y}}function Re(n){return n.length>1}function De(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:y,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Pe(n,t){return((n=n.x)[0]<0?n[1]-ja-Ta:ja-n[1])-((t=t.x)[0]<0?t[1]-ja-Ta:ja-t[1])}function Ue(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Da:-Da,c=va(i-e);va(c-Da)<Ta?(n.point(e,r=(r+o)/2>0?ja:-ja),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Da&&(va(e-u)<Ta&&(e-=u*Ta),va(i-a)<Ta&&(i-=a*Ta),r=je(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function je(n,t,e,r){var u,i,o=Math.sin(n-e);return va(o)>Ta?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function Fe(n,t,e,r){var u;if(null==n)u=e*ja,r.point(-Da,u),r.point(0,u),r.point(Da,u),r.point(Da,0),r.point(Da,-u),r.point(0,-u),r.point(-Da,-u),r.point(-Da,0),r.point(-Da,u);else if(va(n[0]-t[0])>Ta){var i=n[0]<t[0]?Da:-Da;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function He(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;_c.reset();for(var a=0,c=t.length;c>a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+Da/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=l[d];var m=n[0],y=n[1]/2+Da/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>Da,k=p*M;if(_c.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Pa:b,S^h>=e^m>=e){var E=me(ve(f),ve(n));xe(E);var A=me(u,E);xe(A);var N=(S^b>=0?-1:1)*tt(A[2]);(r>N||r===N&&(E[0]||E[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Ta>i||Ta>i&&0>_c)^1&o}function Oe(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?Da:-Da),h):0;if(!e&&(l=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(_e(e,g)||_e(p,g))&&(p[0]+=Ta,p[1]+=Ta,v=t(p[0],p[1]))),v!==c)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&_e(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=ve(n),u=ve(t),o=[1,0,0],a=me(r,u),c=de(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=me(o,a),p=Me(o,f),v=Me(a,h);ye(p,v);var d=g,m=de(p,d),y=de(d,d),M=m*m-y*(de(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=Me(d,(-m-x)/y);if(ye(b,p),b=be(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=va(A-Da)<Ta,C=N||Ta>A;if(!N&&k>E&&(_=k,k=E,E=_),C?N?k+E>0^b[1]<(va(b[0]-w)<Ta?k:E):k<=b[1]&&b[1]<=E:A>Da^(w<=b[0]&&b[0]<=S)){var z=Me(d,(-m+x)/y);return ye(z,p),[b,be(z)]}}}function u(t,e){var r=o?n:Da-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=va(i)>Ta,c=pr(n,6*Fa);return Te(t,e,c,o?[0,-n]:[-Da,n-Da])}function Ye(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,l=o.y,s=a.x,f=a.y,h=0,g=1,p=s-c,v=f-l;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-l,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-l,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:l+h*v}),1>g&&(u.b={x:c+g*p,y:l+g*v}),u}}}}}}function Ie(n,t,e,r){function u(r,u){return va(r[0]-n)<Ta?u>0?0:3:va(r[0]-e)<Ta?u>0?2:1:va(r[1]-t)<Ta?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&Q(l,i,n)>0&&++t:i[1]<=r&&Q(l,i,n)<0&&--t,l=i;return 0!==t}function l(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=0/0}function g(){v&&(p(y,M),x&&w&&A.rejoin(),v.push(A.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Uc,Math.min(Uc,n)),t=Math.max(-Uc,Math.min(Uc,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};N(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,E=a,A=De(),N=Ye(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=ta.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),l(null,null,1,a),a.lineEnd()),u&&ze(v,i,t,l,a),a.polygonEnd()),v=d=m=null}};return C}}function Ze(n){var t=0,e=Da/3,r=or(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Da/180,e=n[1]*Da/180):[180*(t/Da),180*(e/Da)]},u}function Ve(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,tt((i-(n*n+e*e)*u*u)/(2*u))]},e}function Xe(){function n(n,t){Fc+=u*n-r*t,r=n,u=t}var t,e,r,u;Zc.point=function(i,o){Zc.point=n,t=r=i,e=u=o},Zc.lineEnd=function(){n(t,e)}}function $e(n,t){Hc>n&&(Hc=n),n>Yc&&(Yc=n),Oc>t&&(Oc=t),t>Ic&&(Ic=t)}function Be(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=We(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=We(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function We(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Je(n,t){Ec+=n,Ac+=t,++Nc}function Ge(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);Cc+=o*(t+n)/2,zc+=o*(e+r)/2,qc+=o,Je(t=n,e=r)}var t,e;Xc.point=function(r,u){Xc.point=n,Je(t=r,e=u)}}function Ke(){Xc.point=Je}function Qe(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);Cc+=o*(r+n)/2,zc+=o*(u+t)/2,qc+=o,o=u*n-r*t,Lc+=o*(r+n),Tc+=o*(u+t),Rc+=3*o,Je(r=n,u=t)}var t,e,r,u;Xc.point=function(i,o){Xc.point=n,Je(t=r=i,e=u=o)},Xc.lineEnd=function(){n(t,e)}}function nr(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Pa)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:y};return a}function tr(n){function t(n){return(a?r:e)(n)}function e(t){return ur(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=0/0,S.point=i,t.lineStart()}function i(e,r){var i=ve([e,r]),o=n(e,r);u(M,x,y,b,_,w,M=o[0],x=o[1],y=e,b=i[0],_=i[1],w=i[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=l,S.lineEnd=s}function l(n,t){i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,l,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=a+g,_=c+p,w=l+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),E=va(va(w)-1)<Ta||va(r-h)<Ta?(r+h)/2:Math.atan2(_,b),A=n(E,k),N=A[0],C=A[1],z=N-t,q=C-e,L=M*z-y*q;
+(L*L/x>i||va((y*z+M*q)/x-.5)>.3||o>a*g+c*p+l*v)&&(u(t,e,r,a,c,l,N,C,E,b/=S,_/=S,w,d,m),m.point(N,C),u(N,C,E,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Fa),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function er(n){var t=tr(function(t,e){return n([t*Ha,e*Ha])});return function(n){return ar(t(n))}}function rr(n){this.stream=n}function ur(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ir(n){return or(function(){return n})()}function or(n){function t(n){return n=a(n[0]*Fa,n[1]*Fa),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Ha,n[1]*Ha]}function r(){a=Ne(o=sr(m,y,M),i);var n=i(v,d);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=tr(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,M=0,x=Pc,b=At,_=null,w=null;return t.stream=function(n){return s&&(s.valid=!1),s=ar(x(o,f(b(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(x=null==n?(_=n,Pc):Oe((_=+n)*Fa),u()):_},t.clipExtent=function(n){return arguments.length?(w=n,b=n?Ie(n[0][0],n[0][1],n[1][0],n[1][1]):At,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Fa,d=n[1]%360*Fa,r()):[v*Ha,d*Ha]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Fa,y=n[1]%360*Fa,M=n.length>2?n[2]%360*Fa:0,r()):[m*Ha,y*Ha,M*Ha]},ta.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function ar(n){return ur(n,function(t,e){n.point(t*Fa,e*Fa)})}function cr(n,t){return[n,t]}function lr(n,t){return[n>Da?n-Pa:-Da>n?n+Pa:n,t]}function sr(n,t,e){return n?t||e?Ne(hr(n),gr(t,e)):hr(n):t||e?gr(t,e):lr}function fr(n){return function(t,e){return t+=n,[t>Da?t-Pa:-Da>t?t+Pa:t,e]}}function hr(n){var t=fr(n);return t.invert=fr(-n),t}function gr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),tt(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),tt(s*r-a*u)]},e}function pr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=vr(e,u),i=vr(e,i),(o>0?i>u:u>i)&&(u+=o*Pa)):(u=n+o*Pa,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=be([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function vr(n,t){var e=ve(t);e[0]-=n,xe(e);var r=nt(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ta)%(2*Math.PI)}function dr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function mr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function yr(n){return n.source}function Mr(n){return n.target}function xr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(it(r-t)+u*o*it(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Ha,Math.atan2(o,Math.sqrt(r*r+u*u))*Ha]}:function(){return[n*Ha,t*Ha]};return p.distance=h,p}function br(){function n(n,u){var i=Math.sin(u*=Fa),o=Math.cos(u),a=va((n*=Fa)-t),c=Math.cos(a);$c+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Bc.point=function(u,i){t=u*Fa,e=Math.sin(i*=Fa),r=Math.cos(i),Bc.point=n},Bc.lineEnd=function(){Bc.point=Bc.lineEnd=y}}function _r(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function wr(n,t){function e(n,t){o>0?-ja+Ta>t&&(t=-ja+Ta):t>ja-Ta&&(t=ja-Ta);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Da/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-ja]},e):kr}function Sr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return va(u)<Ta?cr:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-K(u)*Math.sqrt(n*n+e*e)]},e)}function kr(n,t){return[n,Math.log(Math.tan(Da/4+t/2))]}function Er(n){var t,e=ir(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=Da*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ar(n,t){return[Math.log(Math.tan(Da/4+t/2)),-n]}function Nr(n){return n[0]}function Cr(n){return n[1]}function zr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qr(n,t){return n[0]-t[0]||n[1]-t[1]}function Lr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Tr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function Rr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Dr(){eu(this),this.edge=this.site=this.circle=null}function Pr(n){var t=ol.pop()||new Dr;return t.site=n,t}function Ur(n){$r(n),rl.remove(n),ol.push(n),eu(n)}function jr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Ur(n);for(var c=i;c.circle&&va(e-c.circle.x)<Ta&&va(r-c.circle.cy)<Ta;)i=c.P,a.unshift(c),Ur(c),c=i;a.unshift(c),$r(c);for(var l=o;l.circle&&va(e-l.circle.x)<Ta&&va(r-l.circle.cy)<Ta;)o=l.N,a.push(l),Ur(l),l=o;a.push(l),$r(l);var s,f=a.length;for(s=1;f>s;++s)l=a[s],c=a[s-1],Qr(l.edge,c.site,l.site,u);c=a[0],l=a[f-1],l.edge=Gr(c.site,l.site,null,u),Xr(c),Xr(l)}function Fr(n){for(var t,e,r,u,i=n.x,o=n.y,a=rl._;a;)if(r=Hr(a,o)-i,r>Ta)a=a.L;else{if(u=i-Or(a,o),!(u>Ta)){r>-Ta?(t=a.P,e=a):u>-Ta?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Pr(n);if(rl.insert(t,c),t||e){if(t===e)return $r(t),e=Pr(t.site),rl.insert(c,e),c.edge=e.edge=Gr(t.site,c.site),Xr(t),Xr(e),void 0;if(!e)return c.edge=Gr(t.site,c.site),void 0;$r(t),$r(e);var l=t.site,s=l.x,f=l.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};Qr(e.edge,l,p,x),c.edge=Gr(l,n,null,x),e.edge=Gr(n,p,null,x),Xr(t),Xr(e)}}function Hr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,l=c-t;if(!l)return a;var s=a-r,f=1/i-1/l,h=s/l;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*l)-c+l/2+u-i/2)))/f+r:(r+a)/2}function Or(n,t){var e=n.N;if(e)return Hr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Yr(n){this.site=n,this.edges=[]}function Ir(n){for(var t,e,r,u,i,o,a,c,l,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=el,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)s=a[o].end(),r=s.x,u=s.y,l=a[++o%c].start(),t=l.x,e=l.y,(va(r-t)>Ta||va(u-e)>Ta)&&(a.splice(o,0,new nu(Kr(i.site,s,va(r-f)<Ta&&p-u>Ta?{x:f,y:va(t-f)<Ta?e:p}:va(u-p)<Ta&&h-r>Ta?{x:va(e-p)<Ta?t:h,y:p}:va(r-h)<Ta&&u-g>Ta?{x:h,y:va(t-h)<Ta?e:g}:va(u-g)<Ta&&r-f>Ta?{x:va(e-g)<Ta?t:f,y:g}:null),i.site,null)),++c)}function Zr(n,t){return t.angle-n.angle}function Vr(){eu(this),this.x=this.y=this.arc=this.site=this.cy=null}function Xr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,l=r.y-a,s=i.x-o,f=i.y-a,h=2*(c*f-l*s);if(!(h>=-Ra)){var g=c*c+l*l,p=s*s+f*f,v=(f*g-l*p)/h,d=(c*p-s*g)/h,f=d+a,m=al.pop()||new Vr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=il._;M;)if(m.y<M.y||m.y===M.y&&m.x<=M.x){if(!M.L){y=M.P;break}M=M.L}else{if(!M.R){y=M;break}M=M.R}il.insert(y,m),y||(ul=m)}}}}function $r(n){var t=n.circle;t&&(t.P||(ul=t.N),il.remove(t),al.push(t),eu(t),n.circle=null)}function Br(n){for(var t,e=tl,r=Ye(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Wr(t,n)||!r(t)||va(t.a.x-t.b.x)<Ta&&va(t.a.y-t.b.y)<Ta)&&(t.a=t.b=null,e.splice(u,1))}function Wr(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],l=t[1][1],s=n.l,f=n.r,h=s.x,g=s.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=l)return}else i={x:d,y:c};e={x:d,y:l}}else{if(i){if(i.y<c)return}else i={x:d,y:l};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=l)return}else i={x:(c-u)/r,y:c};e={x:(l-u)/r,y:l}}else{if(i){if(i.y<c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Jr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Gr(n,t,e,r){var u=new Jr(n,t);return tl.push(u),e&&Qr(u,n,t,e),r&&Qr(u,t,n,r),el[n.i].edges.push(new nu(u,n,t)),el[t.i].edges.push(new nu(u,t,n)),u}function Kr(n,t,e){var r=new Jr(n,null);return r.a=t,r.b=e,tl.push(r),r}function Qr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function nu(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function tu(){this._=null}function eu(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function ru(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function uu(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function iu(n){for(;n.L;)n=n.L;return n}function ou(n,t){var e,r,u,i=n.sort(au).pop();for(tl=[],el=new Array(n.length),rl=new tu,il=new tu;;)if(u=ul,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(el[i.i]=new Yr(i),Fr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;jr(u.arc)}t&&(Br(t),Ir(t));var o={cells:el,edges:tl};return rl=il=tl=el=null,o}function au(n,t){return t.y-n.y||t.x-n.x}function cu(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function lu(n){return n.x}function su(n){return n.y}function fu(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function hu(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&hu(n,c[0],e,r,o,a),c[1]&&hu(n,c[1],o,r,u,a),c[2]&&hu(n,c[2],e,a,o,i),c[3]&&hu(n,c[3],o,a,u,i)}}function gu(n,t,e,r,u,i,o){var a,c=1/0;return function l(n,s,f,h,g){if(!(s>i||f>o||r>h||u>g)){if(p=n.point){var p,v=t-p[0],d=e-p[1],m=v*v+d*d;if(c>m){var y=Math.sqrt(c=m);r=t-y,u=e-y,i=t+y,o=e+y,a=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:l(n,s,f,x,b);break;case 1:l(n,x,f,h,b);break;case 2:l(n,s,b,x,g);break;case 3:l(n,x,b,h,g)}}}(n,r,u,i,o),a}function pu(n,t){n=ta.rgb(n),t=ta.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+xt(Math.round(e+i*n))+xt(Math.round(r+o*n))+xt(Math.round(u+a*n))}}function vu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=yu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function du(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mu(n,t){var e,r,u,i=ll.lastIndex=sl.lastIndex=0,o=-1,a=[],c=[];for(n+="",t+="";(e=ll.exec(n))&&(r=sl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:du(e,r)})),i=sl.lastIndex;return i<t.length&&(u=t.slice(i),a[o]?a[o]+=u:a[++o]=u),a.length<2?c[0]?(t=c[0].x,function(n){return t(n)+""}):function(){return t}:(t=c.length,function(n){for(var e,r=0;t>r;++r)a[(e=c[r]).i]=e.x(n);return a.join("")})}function yu(n,t){for(var e,r=ta.interpolators.length;--r>=0&&!(e=ta.interpolators[r](n,t)););return e}function Mu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(yu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function xu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function bu(n){return function(t){return 1-n(1-t)}}function _u(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function wu(n){return n*n}function Su(n){return n*n*n}function ku(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Eu(n){return function(t){return Math.pow(t,n)}}function Au(n){return 1-Math.cos(n*ja)}function Nu(n){return Math.pow(2,10*(n-1))}function Cu(n){return 1-Math.sqrt(1-n*n)}function zu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Pa*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Pa/t)}}function qu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Lu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Tu(n,t){n=ta.hcl(n),t=ta.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return st(e+i*n,r+o*n,u+a*n)+""}}function Ru(n,t){n=ta.hsl(n),t=ta.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function Du(n,t){n=ta.lab(n),t=ta.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ht(e+i*n,r+o*n,u+a*n)+""}}function Pu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Uu(n){var t=[n.a,n.b],e=[n.c,n.d],r=Fu(t),u=ju(t,e),i=Fu(Hu(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Ha,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*Ha:0}function ju(n,t){return n[0]*t[0]+n[1]*t[1]}function Fu(n){var t=Math.sqrt(ju(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Hu(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ou(n,t){var e,r=[],u=[],i=ta.transform(n),o=ta.transform(t),a=i.translate,c=o.translate,l=i.rotate,s=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push("translate(",null,",",null,")"),u.push({i:1,x:du(a[0],c[0])},{i:3,x:du(a[1],c[1])})):c[0]||c[1]?r.push("translate("+c+")"):r.push(""),l!=s?(l-s>180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:du(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:du(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:du(g[0],p[0])},{i:e-2,x:du(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join("")}}function Yu(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Iu(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Zu(n){for(var t=n.source,e=n.target,r=Xu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function Vu(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Xu(n,t){if(n===t)return n;for(var e=Vu(n),r=Vu(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function $u(n){n.fixed|=2}function Bu(n){n.fixed&=-7}function Wu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Ju(n){n.fixed&=-5}function Gu(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Gu(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,u+=l*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Ku(n,t){return ta.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=ui,n}function Qu(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(u=n.children)&&(r=u.length))for(var r,u;--r>=0;)e.push(u[r])}function ni(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++o<u;)e.push(i[o]);for(;null!=(n=r.pop());)t(n)}function ti(n){return n.children}function ei(n){return n.value}function ri(n,t){return t.value-n.value}function ui(n){return ta.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function ii(n){return n.x}function oi(n){return n.y}function ai(n,t,e){n.y0=t,n.y=e}function ci(n){return ta.range(n.length)}function li(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function si(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function fi(n){return n.reduce(hi,0)}function hi(n,t){return n+t[1]}function gi(n,t){return pi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function pi(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function vi(n){return[ta.min(n),ta.max(n)]}function di(n,t){return n.value-t.value}function mi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function yi(n,t){n._pack_next=t,t._pack_prev=n}function Mi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function xi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(bi),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],Si(r,u,i),t(i),mi(r,i),r._pack_prev=i,mi(i,u),u=r._pack_next,o=3;l>o;o++){Si(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(Mi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!Mi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?yi(r,u=a):yi(r=c,u),o--):(mi(r,i),u=i,t(i))}var m=(s+f)/2,y=(h+g)/2,M=0;for(o=0;l>o;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(_i)}}function bi(n){n._pack_next=n._pack_prev=n}function _i(n){delete n._pack_next,delete n._pack_prev}function wi(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)wi(u[i],t,e,r)}function Si(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),l=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+l*i,e.y=n.y+c*i-l*u}else e.x=n.x+r,e.y=n.y}function ki(n,t){return n.parent==t.parent?1:2}function Ei(n){var t=n.children;return t.length?t[0]:n.t}function Ai(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ni(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Ci(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function zi(n,t,e){return n.a.parent===t.parent?n.a:e}function qi(n){return 1+ta.max(n,function(n){return n.y})}function Li(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ti(n){var t=n.children;return t&&t.length?Ti(t[0]):n}function Ri(n){var t,e=n.children;return e&&(t=e.length)?Ri(e[t-1]):n}function Di(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Pi(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Ui(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function ji(n){return n.rangeExtent?n.rangeExtent():Ui(n.range())}function Fi(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Hi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Oi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:bl}function Yi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=ta.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Ii(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Yi:Fi,c=r?Iu:Yu;return o=u(n,t,c,e),a=u(t,n,c,yu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Pu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return $i(n,t)},i.tickFormat=function(t,e){return Bi(n,t,e)},i.nice=function(t){return Vi(n,t),u()},i.copy=function(){return Ii(n,t,e,r)},u()}function Zi(n,t){return ta.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Vi(n,t){return Hi(n,Oi(Xi(n,t)[2]))}function Xi(n,t){null==t&&(t=10);var e=Ui(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function $i(n,t){return ta.range.apply(ta,Xi(n,t))}function Bi(n,t,e){var r=Xi(n,t);if(e){var u=lc.exec(e);if(u.shift(),"s"===u[8]){var i=ta.formatPrefix(Math.max(va(r[0]),va(r[1])));return u[7]||(u[7]="."+Wi(i.scale(r[2]))),u[8]="f",e=ta.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Ji(u[8],r)),e=u.join("")}else e=",."+Wi(r[2])+"f";return ta.format(e)}function Wi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Ji(n,t){var e=Wi(t[2]);return n in _l?Math.abs(e-Wi(Math.max(va(t[0]),va(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Gi(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Hi(r.map(u),e?Math:Sl);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Ui(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++<s;)for(var h=f-1;h>0;h--)o.push(i(l)*h);for(l=0;o[l]<a;l++);for(s=o.length;o[s-1]>c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return wl;arguments.length<2?t=wl:"function"!=typeof t&&(t=ta.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Gi(n.copy(),t,e,r)},Zi(o,n)}function Ki(n,t,e){function r(t){return n(u(t))}var u=Qi(t),i=Qi(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return $i(e,n)},r.tickFormat=function(n,t){return Bi(e,n,t)},r.nice=function(n){return r.domain(Vi(e,n))},r.exponent=function(o){return arguments.length?(u=Qi(t=o),i=Qi(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Ki(n.copy(),t,e)},Zi(r,n)}function Qi(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function no(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return ta.range(n.length).map(function(n){return t+e*n})}var u,i,o;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new a;for(var i,o=-1,c=r.length;++o<c;)u.has(i=r[o])||u.set(i,n.push(i));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(i=n,o=0,t={t:"range",a:arguments},e):i},e.rangePoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=(c+l)/2,0):(l-c)/(n.length-1+a);return i=r(c+s*a/2,s),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=l=Math.round((c+l)/2),0):0|(l-c)/(n.length-1+a);return i=r(c+Math.round(s*a/2+(l-c-(n.length-1+a)*s)/2),s),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=(f-s)/(n.length-a+2*c);return i=r(s+h*c,h),l&&i.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=Math.floor((f-s)/(n.length-a+2*c));return i=r(s+Math.round((f-s-(n.length-a)*h)/2),h),l&&i.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Ui(t.a[0])},e.copy=function(){return no(n,t)},e.domain(n)}function to(r,u){function i(){var n=0,t=u.length;for(a=[];++n<t;)a[n-1]=ta.quantile(r,n/t);return o}function o(n){return isNaN(n=+n)?void 0:u[ta.bisect(a,n)]}var a;return o.domain=function(u){return arguments.length?(r=u.map(t).filter(e).sort(n),i()):r},o.range=function(n){return arguments.length?(u=n,i()):u},o.quantiles=function(){return a},o.invertExtent=function(n){return n=u.indexOf(n),0>n?[0/0,0/0]:[n>0?a[n-1]:r[0],n<a.length?a[n]:r[r.length-1]]},o.copy=function(){return to(r,u)},i()}function eo(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return eo(n,t,e)},u()}function ro(n,t){function e(e){return e>=e?t[ta.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ro(n,t)},e}function uo(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return $i(n,t)},t.tickFormat=function(t,e){return Bi(n,t,e)},t.copy=function(){return uo(n)},t}function io(){return 0}function oo(n){return n.innerRadius}function ao(n){return n.outerRadius}function co(n){return n.startAngle}function lo(n){return n.endAngle}function so(n){return n&&n.padAngle}function fo(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function ho(n,t,e,r,u){var i=n[0]-t[0],o=n[1]-t[1],a=(u?r:-r)/Math.sqrt(i*i+o*o),c=a*o,l=-a*i,s=n[0]+c,f=n[1]+l,h=t[0]+c,g=t[1]+l,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(M*M*y-x*x),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,E=_-p,A=w-v,N=S-p,C=k-v;return E*E+A*A>N*N+C*C&&(_=S,w=k),[[_-c,w-l],[_*e/M,w*e/M]]}function go(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f<h;)u.call(this,c=t[f],f)?s.push([+g.call(this,c,f),+p.call(this,c,f)]):s.length&&(o(),s=[]);return s.length&&o(),l.length?l.join(""):null}var e=Nr,r=Cr,u=Ce,i=po,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?i=n:(i=zl.get(n)||po).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function po(n){return n.join("L")}function vo(n){return po(n)+"Z"}function mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&u.push("H",r[0]),u.join("")}function yo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("V",(r=n[t])[1],"H",r[0]);return u.join("")}function Mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r=n[t])[0],"V",r[1]);return u.join("")}function xo(n,t){return n.length<4?po(n):n[1]+wo(n.slice(1,-1),So(n,t))}function bo(n,t){return n.length<3?po(n):n[0]+wo((n.push(n[0]),n),So([n[n.length-2]].concat(n,[n[1]]),t))}function _o(n,t){return n.length<3?po(n):n[0]+wo(n,So(n,t))}function wo(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return po(n);var e=n.length!=t.length,r="",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+="Q"+(i[0]-2*o[0]/3)+","+(i[1]-2*o[1]/3)+","+i[0]+","+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l<t.length;l++,c++)i=n[c],a=t[l],r+="S"+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1]}if(e){var s=n[c];r+="Q"+(i[0]+2*a[0]/3)+","+(i[1]+2*a[1]/3)+","+s[0]+","+s[1]}return r}function So(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function ko(n){if(n.length<3)return po(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,",",i,"L",Co(Tl,o),",",Co(Tl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),zo(c,o,a);return n.pop(),c.push("L",r),c.join("")}function Eo(n){if(n.length<4)return po(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(Co(Tl,i)+","+Co(Tl,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),zo(e,i,o);return e.join("")}function Ao(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[Co(Tl,o),",",Co(Tl,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),zo(t,o,a);return t.join("")}function No(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,l=-1;++l<=e;)r=n[l],u=l/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return ko(n)}function Co(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function zo(n,t,e){n.push("C",Co(ql,t),",",Co(ql,e),",",Co(Ll,t),",",Co(Ll,e),",",Co(Tl,t),",",Co(Tl,e))}function qo(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Lo(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=qo(u,i);++t<e;)r[t]=(o+(o=qo(u=i,i=n[t+1])))/2;return r[t]=o,r}function To(n){for(var t,e,r,u,i=[],o=Lo(n),a=-1,c=n.length-1;++a<c;)t=qo(n[a],n[a+1]),va(t)<Ta?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function Ro(n){return n.length<3?po(n):n[0]+wo(n,To(n))}function Do(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]-ja,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Po(n){function t(t){function c(){v.push("M",a(n(m),f),s,l(n(d.reverse()),f),"Z")}for(var h,g,p,v=[],d=[],m=[],y=-1,M=t.length,x=Et(e),b=Et(u),_=e===r?function(){return g}:Et(r),w=u===i?function(){return p}:Et(i);++y<M;)o.call(this,h=t[y],y)?(d.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),m.push([+_.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(""):null}var e=Nr,r=Nr,u=0,i=Cr,o=Ce,a=po,c=a.key,l=a,s="L",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c="function"==typeof n?a=n:(a=zl.get(n)||po).key,l=a.reverse||a,s=a.closed?"M":"L",t):c
+},t.tension=function(n){return arguments.length?(f=n,t):f},t}function Uo(n){return n.radius}function jo(n){return[n.x,n.y]}function Fo(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-ja;return[e*Math.cos(r),e*Math.sin(r)]}}function Ho(){return 64}function Oo(){return"circle"}function Yo(n){var t=Math.sqrt(n/Da);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Io(n,t,e){return xa(n,Fl),n.namespace=t,n.id=e,n}function Zo(n,t,e,r){var u=n.id,i=n.namespace;return H(n,"function"==typeof e?function(n,o,a){n[i][u].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[i][u].tween.set(t,e)}))}function Vo(n){return null==n&&(n=""),function(){this.textContent=n}}function Xo(n){return null==n?"__transition__":"__transition_"+n+"__"}function $o(n,t,e,r,u){var i=n[e]||(n[e]={active:0,count:0}),o=i[r];if(!o){var c=u.time;o=i[r]={tween:new a,time:c,delay:u.delay,duration:u.duration,ease:u.ease},u=null,++i.count,ta.timer(function(u){function a(e){return i.active>r?s(!1):(i.active=r,o.event&&o.event.start.call(n,g,t),o.tween.forEach(function(e,r){(r=r.call(n,g,t))&&d.push(r)}),h=o.ease,f=o.duration,ta.timer(function(){return v.c=l(e||1)?Ce:l,1},0,c),void 0)}function l(t){if(i.active!==r)return s(!1);for(var e=t/f,u=h(e),o=d.length;o>0;)d[--o].call(n,u);return e>=1?s(!0):void 0}function s(u){return o.event&&o.event[u?"end":"interrupt"].call(n,g,t),--i.count?delete i[r]:delete n[e],1}var f,h,g=n.__data__,p=o.delay,v=oc,d=[];return v.t=p+c,u>=p?a(u-p):(v.c=a,void 0)},0,c)}}function Bo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Wo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Jo(n){return n.toISOString()}function Go(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=ta.bisect(Bl,u);return i==Bl.length?[t.year,Xi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Bl[i-1]<Bl[i]/u?i-1:i]:[Gl,Xi(n,e)[2]]}return r.invert=function(t){return Ko(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Ko)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Ko(+e+1),t).length}var i=r.domain(),o=Ui(i),a=null==n?u(o,10):"number"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Hi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Ko(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ko(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Ui(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Ko(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Go(n.copy(),t,e)},Zi(r,n)}function Ko(n){return new Date(n)}function Qo(n){return JSON.parse(n.responseText)}function na(n){var t=ua.createRange();return t.selectNode(ua.body),t.createContextualFragment(n.responseText)}var ta={version:"3.5.0"};Date.now||(Date.now=function(){return+new Date});var ea=[].slice,ra=function(n){return ea.call(n)},ua=document,ia=ua.documentElement,oa=window;try{ra(ia.childNodes)[0].nodeType}catch(aa){ra=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{ua.createElement("div").style.setProperty("opacity",0,"")}catch(ca){var la=oa.Element.prototype,sa=la.setAttribute,fa=la.setAttributeNS,ha=oa.CSSStyleDeclaration.prototype,ga=ha.setProperty;la.setAttribute=function(n,t){sa.call(this,n,t+"")},la.setAttributeNS=function(n,t,e){fa.call(this,n,t,e+"")},ha.setProperty=function(n,t,e){ga.call(this,n,t+"",e)}}ta.ascending=n,ta.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},ta.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},ta.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},ta.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o;)if(null!=(r=n[i])&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},ta.sum=function(n,t){var r,u=0,i=n.length,o=-1;if(1===arguments.length)for(;++o<i;)e(r=+n[o])&&(u+=r);else for(;++o<i;)e(r=+t.call(n,n[o],o))&&(u+=r);return u},ta.mean=function(n,r){var u,i=0,o=n.length,a=-1,c=o;if(1===arguments.length)for(;++a<o;)e(u=t(n[a]))?i+=u:--c;else for(;++a<o;)e(u=t(r.call(n,n[a],a)))?i+=u:--c;return c?i/c:void 0},ta.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},ta.median=function(r,u){var i,o=[],a=r.length,c=-1;if(1===arguments.length)for(;++c<a;)e(i=t(r[c]))&&o.push(i);else for(;++c<a;)e(i=t(u.call(r,r[c],c)))&&o.push(i);return o.length?ta.quantile(o.sort(n),.5):void 0};var pa=r(n);ta.bisectLeft=pa.left,ta.bisect=ta.bisectRight=pa.right,ta.bisector=function(t){return r(1===t.length?function(e,r){return n(t(e),r)}:t)},ta.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=0|Math.random()*i--,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},ta.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ta.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},ta.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=ta.min(arguments,u),e=new Array(t);++n<t;)for(var r,i=-1,o=e[n]=new Array(r);++i<r;)o[i]=arguments[i][n];return e},ta.transpose=function(n){return ta.zip.apply(ta,n)},ta.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ta.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ta.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ta.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var va=Math.abs;ta.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/e)throw new Error("infinite range");var r,u=[],o=i(va(e)),a=-1;if(n*=o,t*=o,e*=o,0>e)for(;(r=n+e*++a)>t;)u.push(r/o);else for(;(r=n+e*++a)<t;)u.push(r/o);return u},ta.map=function(n,t){var e=new a;if(n instanceof a)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,u=-1,i=n.length;if(1===arguments.length)for(;++u<i;)e.set(u,n[u]);else for(;++u<i;)e.set(t.call(n,r=n[u],u),r)}else for(var o in n)e.set(o,n[o]);return e};var da="__proto__",ma="\x00";o(a,{has:s,get:function(n){return this._[c(n)]},set:function(n,t){return this._[c(n)]=t},remove:f,keys:h,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:l(t),value:this._[t]});return n},size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t),this._[t])}}),ta.nest=function(){function n(t,o,c){if(c>=i.length)return r?r.call(u,o):e?o.sort(e):o;for(var l,s,f,h,g=-1,p=o.length,v=i[c++],d=new a;++g<p;)(h=d.get(l=v(s=o[g])))?h.push(s):d.set(l,[s]);return t?(s=t(),f=function(e,r){s.set(e,n(t,r,c))}):(s={},f=function(e,r){s[e]=n(t,r,c)}),d.forEach(f),s}function t(n,e){if(e>=i.length)return n;var r=[],u=o[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(ta.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return o[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},ta.set=function(n){var t=new v;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},o(v,{has:s,add:function(n){return this._[c(n+="")]=!0,n},remove:f,values:h,size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t))}}),ta.behavior={},ta.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=d(n,t,t[e]);return n};var ya=["webkit","ms","moz","Moz","o","O"];ta.dispatch=function(){for(var n=new M,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=x(n);return n},M.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ta.event=null,ta.requote=function(n){return n.replace(Ma,"\\$&")};var Ma=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,xa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ba=function(n,t){return t.querySelector(n)},_a=function(n,t){return t.querySelectorAll(n)},wa=ia.matches||ia[m(ia,"matchesSelector")],Sa=function(n,t){return wa.call(n,t)};"function"==typeof Sizzle&&(ba=function(n,t){return Sizzle(n,t)[0]||null},_a=Sizzle,Sa=Sizzle.matchesSelector),ta.selection=function(){return Na};var ka=ta.selection.prototype=[];ka.select=function(n){var t,e,r,u,i=[];n=k(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,l=r.length;++c<l;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&"__data__"in u&&(e.__data__=u.__data__)):t.push(null)}return S(i)},ka.selectAll=function(n){var t,e,r=[];n=E(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=ra(n.call(e,e.__data__,a,u))),t.parentNode=e);return S(r)};var Ea={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ta.ns={prefix:Ea,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&(e=n.slice(0,t),n=n.slice(t+1)),Ea.hasOwnProperty(e)?{space:Ea[e],local:n}:n}},ka.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ta.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(A(t,n[t]));return this}return this.each(A(n,t))},ka.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=z(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute("class");++u<r;)if(!C(n[u]).test(t))return!1;return!0}for(t in n)this.each(q(t,n[t]));return this}return this.each(q(n,t))},ka.style=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(T(e,n[e],t));return this}if(2>r)return oa.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(T(n,t,e))},ka.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},ka.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},ka.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},ka.append=function(n){return n=D(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},ka.insert=function(n,t){return n=D(n),t=k(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},ka.remove=function(){return this.each(P)},ka.data=function(n,t){function e(n,e){var r,u,i,o=n.length,f=e.length,h=Math.min(o,f),g=new Array(f),p=new Array(f),v=new Array(o);if(t){var d,m=new a,y=new Array(o);for(r=-1;++r<o;)m.has(d=t.call(u=n[r],u.__data__,r))?v[r]=u:m.set(d,u),y[r]=d;for(r=-1;++r<f;)(u=m.get(d=t.call(e,i=e[r],r)))?u!==!0&&(g[r]=u,u.__data__=i):p[r]=U(i),m.set(d,!0);for(r=-1;++r<o;)m.get(y[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],i=e[r],u?(u.__data__=i,g[r]=u):p[r]=U(i);for(;f>r;++r)p[r]=U(e[r]);for(;o>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),l.push(g),s.push(v)}var r,u,i=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++i<o;)(u=r[i])&&(n[i]=u.__data__);return n}var c=O([]),l=S([]),s=S([]);if("function"==typeof n)for(;++i<o;)e(r=this[i],n.call(r,r.parentNode.__data__,i));else for(;++i<o;)e(r=this[i],n);return l.enter=function(){return c},l.exit=function(){return s},l},ka.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},ka.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return S(u)},ka.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},ka.sort=function(n){n=F.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},ka.each=function(n){return H(this,function(t,e,r){n.call(t,t.__data__,e,r)})},ka.call=function(n){var t=ra(arguments);return n.apply(t[0]=this,t),this},ka.empty=function(){return!this.node()},ka.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},ka.size=function(){var n=0;return H(this,function(){++n}),n};var Aa=[];ta.selection.enter=O,ta.selection.enter.prototype=Aa,Aa.append=ka.append,Aa.empty=ka.empty,Aa.node=ka.node,Aa.call=ka.call,Aa.size=ka.size,Aa.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var l=-1,s=u.length;++l<s;)(i=u[l])?(t.push(r[l]=e=n.call(u.parentNode,i.__data__,l,a)),e.__data__=i.__data__):t.push(null)}return S(o)},Aa.insert=function(n,t){return arguments.length<2&&(t=Y(this)),ka.insert.call(this,n,t)},ka.transition=function(n){for(var t,e,r=Dl||++Hl,u=Xo(n),i=[],o=Pl||{time:Date.now(),ease:ku,delay:0,duration:250},a=-1,c=this.length;++a<c;){i.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(e=l[s])&&$o(e,s,u,r,o),t.push(e)}return Io(i,u,r)},ka.interrupt=function(n){var t=Xo(n);return this.each(function(){var n=this[t];n&&++n.active})},ta.select=function(n){var t=["string"==typeof n?ba(n,ua):n];return t.parentNode=ia,S([t])},ta.selectAll=function(n){var t=ra("string"==typeof n?_a(n,ua):n);return t.parentNode=ia,S([t])};var Na=ta.select(ia);ka.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(Z(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(Z(n,t,e))};var Ca=ta.map({mouseenter:"mouseover",mouseleave:"mouseout"});Ca.forEach(function(n){"on"+n in ua&&Ca.remove(n)});var za="onselectstart"in ua?null:m(ia.style,"userSelect"),qa=0;ta.mouse=function(n){return B(n,_())};var La=/WebKit/.test(oa.navigator.userAgent)?-1:0;ta.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=_().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return B(n,r)},ta.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",i)}function t(n,t,u,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&ta.event.target===f),g({type:"dragend"}))}var l,s=this,f=ta.event.target,h=s.parentNode,g=e.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=ta.select(u()).on(i+d,a).on(o+d,c),y=$(),M=t(h,v);r?(l=r.apply(s,arguments),l=[l.x-M[0],l.y-M[1]]):l=[0,0],g({type:"dragstart"})}}var e=w(n,"drag","dragstart","dragend"),r=null,u=t(y,ta.mouse,G,"mousemove","mouseup"),i=t(W,ta.touch,J,"touchmove","touchend");return n.origin=function(t){return arguments.length?(r=t,n):r},ta.rebind(n,e,"on")},ta.touches=function(n,t){return arguments.length<2&&(t=_().touches),t?ra(t).map(function(t){var e=B(n,t);return e.identifier=t.identifier,e}):[]};var Ta=1e-6,Ra=Ta*Ta,Da=Math.PI,Pa=2*Da,Ua=Pa-Ta,ja=Da/2,Fa=Da/180,Ha=180/Da,Oa=Math.SQRT2,Ya=2,Ia=4;ta.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=rt(v),o=i/(Ya*h)*(e*ut(Oa*t+v)-et(v));return[r+o*l,u+o*s,i*e/rt(Oa*t+v)]}return[r+n*l,u+n*s,i*Math.exp(Oa*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+Ia*f)/(2*i*Ya*h),p=(c*c-i*i-Ia*f)/(2*c*Ya*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Oa;return e.duration=1e3*y,e},ta.behavior.zoom=function(){function n(n){n.on(z,s).on(Xa+".zoom",h).on("dblclick.zoom",g).on(T,f)}function t(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function e(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function r(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=e(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function i(t,e,i,o){t.__chart__={x:k.x,y:k.y,k:k.k},r(Math.pow(2,o)),u(v=e,i),t=ta.select(t),N>0&&(t=t.transition().duration(N)),t.call(n.event)}function o(){x&&x.domain(M.range().map(function(n){return(n-k.x)/k.k}).map(M.invert)),S&&S.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function a(n){C++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function l(n){--C||n({type:"zoomend"}),v=null}function s(){function n(){s=1,u(ta.mouse(r),h),c(o)}function e(){f.on(q,null).on(L,null),g(s&&ta.event.target===i),l(o)}var r=this,i=ta.event.target,o=R.of(r,arguments),s=0,f=ta.select(oa).on(q,n).on(L,e),h=t(ta.mouse(r)),g=$();I(r),a(o)}function f(){function n(){var n=ta.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=t(n))}),n}function e(){var t=ta.event.target;ta.select(t).on(x,o).on(_,h),w.push(t);for(var e=ta.event.changedTouches,r=0,u=e.length;u>r;++r)d[e[r].identifier]=null;var a=n(),c=Date.now();if(1===a.length){if(500>c-y){var l=a[0];i(p,l,d[l.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),b()}y=c}else if(a.length>1){var l=a[0],s=a[1],f=l[0]-s[0],g=l[1]-s[1];m=f*f+g*g}}function o(){var n,t,e,i,o=ta.touches(p);I(p);for(var a=0,l=o.length;l>a;++a,i=null)if(e=o[a],i=d[e.identifier]){if(t)break;n=e,t=i}if(i){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*g)}y=null,u(n,t),c(v)}function h(){if(ta.event.touches.length){for(var t=ta.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}ta.selectAll(w).on(M,null),S.on(z,s).on(T,f),E(),l(v)}var g,p=this,v=R.of(p,arguments),d={},m=0,M=".zoom-"+ta.event.changedTouches[0].identifier,x="touchmove"+M,_="touchend"+M,w=[],S=ta.select(p),E=$();e(),a(v),S.on(z,null).on(T,e)}function h(){var n=R.of(this,arguments);m?clearTimeout(m):(p=t(v=d||ta.mouse(this)),I(this),a(n)),m=setTimeout(function(){m=null,l(n)},50),b(),r(Math.pow(2,.002*Za())*k.k),u(v,p),c(n)}function g(){var n=ta.mouse(this),e=Math.log(k.k)/Math.LN2;i(this,n,t(n),ta.event.shiftKey?Math.ceil(e)-1:Math.floor(e)+1)}var p,v,d,m,y,M,x,_,S,k={x:0,y:0,k:1},E=[960,500],A=Va,N=250,C=0,z="mousedown.zoom",q="mousemove.zoom",L="mouseup.zoom",T="touchstart.zoom",R=w(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=R.of(this,arguments),t=k;Dl?ta.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},a(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=v?v[0]:e/2,i=v?v[1]:r/2,o=ta.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:u-r[0]*a,y:i-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){l(n)}).each("end.zoom",function(){l(n)}):(this.__chart__=k,a(n),c(n),l(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:+t},o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Va:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(d=t&&[+t[0],+t[1]],n):d},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(N=+t,n):N},n.x=function(t){return arguments.length?(x=t,M=t.copy(),k={x:0,y:0,k:1},n):x},n.y=function(t){return arguments.length?(S=t,_=t.copy(),k={x:0,y:0,k:1},n):S},ta.rebind(n,R,"on")};var Za,Va=[0,1/0],Xa="onwheel"in ua?(Za=function(){return-ta.event.deltaY*(ta.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ua?(Za=function(){return ta.event.wheelDelta},"mousewheel"):(Za=function(){return-ta.event.detail},"MozMousePixelScroll");ta.color=ot,ot.prototype.toString=function(){return this.rgb()+""},ta.hsl=at;var $a=at.prototype=new ot;$a.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,this.l/n)},$a.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,n*this.l)},$a.rgb=function(){return ct(this.h,this.s,this.l)},ta.hcl=lt;var Ba=lt.prototype=new ot;Ba.brighter=function(n){return new lt(this.h,this.c,Math.min(100,this.l+Wa*(arguments.length?n:1)))},Ba.darker=function(n){return new lt(this.h,this.c,Math.max(0,this.l-Wa*(arguments.length?n:1)))},Ba.rgb=function(){return st(this.h,this.c,this.l).rgb()},ta.lab=ft;var Wa=18,Ja=.95047,Ga=1,Ka=1.08883,Qa=ft.prototype=new ot;Qa.brighter=function(n){return new ft(Math.min(100,this.l+Wa*(arguments.length?n:1)),this.a,this.b)},Qa.darker=function(n){return new ft(Math.max(0,this.l-Wa*(arguments.length?n:1)),this.a,this.b)},Qa.rgb=function(){return ht(this.l,this.a,this.b)},ta.rgb=mt;var nc=mt.prototype=new ot;nc.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new mt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mt(u,u,u)},nc.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mt(n*this.r,n*this.g,n*this.b)},nc.hsl=function(){return _t(this.r,this.g,this.b)},nc.toString=function(){return"#"+xt(this.r)+xt(this.g)+xt(this.b)};var tc=ta.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});tc.forEach(function(n,t){tc.set(n,yt(t))}),ta.functor=Et,ta.xhr=Nt(At),ta.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Ct(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=l)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++<l;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}s=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++s):10===r&&(u=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;l>s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==c)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],l=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,f++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new v,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},ta.csv=ta.dsv(",","text/csv"),ta.tsv=ta.dsv(" ","text/tab-separated-values");var ec,rc,uc,ic,oc,ac=oa[m(oa,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ta.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};rc?rc.n=i:ec=i,rc=i,uc||(ic=clearTimeout(ic),uc=1,ac(Lt))},ta.timer.flush=function(){Tt(),Rt()},ta.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var cc=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Pt);ta.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=ta.round(n,Dt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),cc[8+e/3]};var lc=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,sc=ta.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ta.round(n,Dt(n,t))).toFixed(Math.max(0,Math.min(20,Dt(n*(1+1e-15),t))))}}),fc=ta.time={},hc=Date;Ft.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){gc.setUTCDate.apply(this._,arguments)},setDay:function(){gc.setUTCDay.apply(this._,arguments)},setFullYear:function(){gc.setUTCFullYear.apply(this._,arguments)},setHours:function(){gc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){gc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){gc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){gc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){gc.setUTCSeconds.apply(this._,arguments)},setTime:function(){gc.setTime.apply(this._,arguments)}};var gc=Date.prototype;fc.year=Ht(function(n){return n=fc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),fc.years=fc.year.range,fc.years.utc=fc.year.utc.range,fc.day=Ht(function(n){var t=new hc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),fc.days=fc.day.range,fc.days.utc=fc.day.utc.range,fc.dayOfYear=function(n){var t=fc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=fc[n]=Ht(function(n){return(n=fc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});fc[n+"s"]=e.range,fc[n+"s"].utc=e.utc.range,fc[n+"OfYear"]=function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)}}),fc.week=fc.sunday,fc.weeks=fc.sunday.range,fc.weeks.utc=fc.sunday.utc.range,fc.weekOfYear=fc.sundayOfYear;var pc={"-":"",_:" ",0:"0"},vc=/^\s*\d+/,dc=/^%/;ta.locale=function(n){return{numberFormat:Ut(n),timeFormat:Yt(n)}};var mc=ta.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ta.format=mc.numberFormat,ta.geo={},le.prototype={s:0,t:0,add:function(n){se(n,this.t,yc),se(yc.s,this.s,this),this.s?this.t+=yc.t:this.s=yc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var yc=new le;ta.geo.stream=function(n,t){n&&Mc.hasOwnProperty(n.type)?Mc[n.type](n,t):fe(n,t)};var Mc={Feature:function(n,t){fe(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)fe(e[r].geometry,t)}},xc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){he(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)he(e[r],t,0)},Polygon:function(n,t){ge(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)ge(e[r],t)
+},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)fe(e[r],t)}};ta.geo.area=function(n){return bc=0,ta.geo.stream(n,wc),bc};var bc,_c=new le,wc={sphere:function(){bc+=4*Da},point:y,lineStart:y,lineEnd:y,polygonStart:function(){_c.reset(),wc.lineStart=pe},polygonEnd:function(){var n=2*_c;bc+=0>n?4*Da+n:n,wc.lineStart=wc.lineEnd=wc.point=y}};ta.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=ve([t*Fa,e*Fa]);if(m){var u=me(m,r),i=[u[1],-u[0],0],o=me(i,u);xe(o),o=be(o);var c=t-p,l=c>0?1:-1,v=o[0]*Ha*l,d=va(c)>180;if(d^(v>l*p&&l*t>v)){var y=o[1]*Ha;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>l*p&&l*t>v)){var y=-o[1]*Ha;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=va(r)>180?r+(r>0?360:-360):r}else v=n,d=e;wc.point(n,e),t(n,e)}function i(){wc.lineStart()}function o(){u(v,d),wc.lineEnd(),va(y)>Ta&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var s,f,h,g,p,v,d,m,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=u,b.lineStart=i,b.lineEnd=o,y=0,wc.polygonStart()},polygonEnd:function(){wc.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>_c?(s=-(h=180),f=-(g=90)):y>Ta?g=90:-Ta>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],ta.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),ta.geo.centroid=function(n){Sc=kc=Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,Dc);var t=Lc,e=Tc,r=Rc,u=t*t+e*e+r*r;return Ra>u&&(t=Cc,e=zc,r=qc,Ta>kc&&(t=Ec,e=Ac,r=Nc),u=t*t+e*e+r*r,Ra>u)?[0/0,0/0]:[Math.atan2(e,t)*Ha,tt(r/Math.sqrt(u))*Ha]};var Sc,kc,Ec,Ac,Nc,Cc,zc,qc,Lc,Tc,Rc,Dc={sphere:y,point:we,lineStart:ke,lineEnd:Ee,polygonStart:function(){Dc.lineStart=Ae},polygonEnd:function(){Dc.lineStart=ke}},Pc=Te(Ce,Ue,Fe,[-Da,-Da/2]),Uc=1e9;ta.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ie(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ta.geo.conicEqualArea=function(){return Ze(Ve)}).raw=Ve,ta.geo.albers=function(){return ta.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ta.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=ta.geo.albers(),o=ta.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ta.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Ta,f+.12*l+Ta],[s-.214*l-Ta,f+.234*l-Ta]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Ta,f+.166*l+Ta],[s-.115*l-Ta,f+.234*l-Ta]]).stream(c).point,n},n.scale(1070)};var jc,Fc,Hc,Oc,Yc,Ic,Zc={point:y,lineStart:y,lineEnd:y,polygonStart:function(){Fc=0,Zc.lineStart=Xe},polygonEnd:function(){Zc.lineStart=Zc.lineEnd=Zc.point=y,jc+=va(Fc/2)}},Vc={point:$e,lineStart:y,lineEnd:y,polygonStart:y,polygonEnd:y},Xc={point:Je,lineStart:Ge,lineEnd:Ke,polygonStart:function(){Xc.lineStart=Qe},polygonEnd:function(){Xc.point=Je,Xc.lineStart=Ge,Xc.lineEnd=Ke}};ta.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),ta.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return jc=0,ta.geo.stream(n,u(Zc)),jc},n.centroid=function(n){return Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,u(Xc)),Rc?[Lc/Rc,Tc/Rc]:qc?[Cc/qc,zc/qc]:Nc?[Ec/Nc,Ac/Nc]:[0/0,0/0]},n.bounds=function(n){return Yc=Ic=-(Hc=Oc=1/0),ta.geo.stream(n,u(Vc)),[[Hc,Oc],[Yc,Ic]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||er(n):At,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Be:new nr(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(ta.geo.albersUsa()).context(null)},ta.geo.transform=function(n){return{stream:function(t){var e=new rr(t);for(var r in n)e[r]=n[r];return e}}},rr.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ta.geo.projection=ir,ta.geo.projectionMutator=or,(ta.geo.equirectangular=function(){return ir(cr)}).raw=cr.invert=cr,ta.geo.rotation=function(n){function t(t){return t=n(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t}return n=sr(n[0]%360*Fa,n[1]*Fa,n.length>2?n[2]*Fa:0),t.invert=function(t){return t=n.invert(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t},t},lr.invert=cr,ta.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=sr(-n[0]*Fa,-n[1]*Fa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ha,n[1]*=Ha}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=pr((t=+r)*Fa,u*Fa),n):t},n.precision=function(r){return arguments.length?(e=pr(t*Fa,(u=+r)*Fa),n):u},n.angle(90)},ta.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Fa,u=n[1]*Fa,i=t[1]*Fa,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},ta.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ta.range(Math.ceil(i/d)*d,u,d).map(h).concat(ta.range(Math.ceil(l/m)*m,c,m).map(g)).concat(ta.range(Math.ceil(r/p)*p,e,p).filter(function(n){return va(n%d)>Ta}).map(s)).concat(ta.range(Math.ceil(a/v)*v,o,v).filter(function(n){return va(n%m)>Ta}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=dr(a,o,90),f=mr(r,e,y),h=dr(l,c,90),g=mr(i,u,y),n):y},n.majorExtent([[-180,-90+Ta],[180,90-Ta]]).minorExtent([[-180,-80-Ta],[180,80+Ta]])},ta.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=yr,u=Mr;return n.distance=function(){return ta.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},ta.geo.interpolate=function(n,t){return xr(n[0]*Fa,n[1]*Fa,t[0]*Fa,t[1]*Fa)},ta.geo.length=function(n){return $c=0,ta.geo.stream(n,Bc),$c};var $c,Bc={sphere:y,point:y,lineStart:br,lineEnd:y,polygonStart:y,polygonEnd:y},Wc=_r(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ta.geo.azimuthalEqualArea=function(){return ir(Wc)}).raw=Wc;var Jc=_r(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},At);(ta.geo.azimuthalEquidistant=function(){return ir(Jc)}).raw=Jc,(ta.geo.conicConformal=function(){return Ze(wr)}).raw=wr,(ta.geo.conicEquidistant=function(){return Ze(Sr)}).raw=Sr;var Gc=_r(function(n){return 1/n},Math.atan);(ta.geo.gnomonic=function(){return ir(Gc)}).raw=Gc,kr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-ja]},(ta.geo.mercator=function(){return Er(kr)}).raw=kr;var Kc=_r(function(){return 1},Math.asin);(ta.geo.orthographic=function(){return ir(Kc)}).raw=Kc;var Qc=_r(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ta.geo.stereographic=function(){return ir(Qc)}).raw=Qc,Ar.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-ja]},(ta.geo.transverseMercator=function(){var n=Er(Ar),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ar,ta.geom={},ta.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(qr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var l=zr(a),s=zr(c),f=s[0]===l[0],h=s[s.length-1]===l[l.length-1],g=[];for(t=l.length-1;t>=0;--t)g.push(n[a[l[t]][2]]);for(t=+f;t<s.length-h;++t)g.push(n[a[s[t]][2]]);return g}var e=Nr,r=Cr;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ta.geom.polygon=function(n){return xa(n,nl),n};var nl=ta.geom.polygon.prototype=[];nl.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},nl.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},nl.clip=function(n){for(var t,e,r,u,i,o,a=Rr(n),c=-1,l=this.length-Rr(this),s=this[l-1];++c<l;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Lr(o,s,u)?(Lr(i,s,u)||n.push(Tr(i,o,s,u)),n.push(o)):Lr(i,s,u)&&n.push(Tr(i,o,s,u)),i=o;a&&n.push(n[0]),s=u}return n};var tl,el,rl,ul,il,ol=[],al=[];Yr.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Zr),t.length},nu.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},tu.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=iu(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(ru(this,e),n=e,e=n.U),e.C=!1,r.C=!0,uu(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(uu(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ru(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?iu(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return n.C=!1,void 0;do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,ru(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,uu(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,ru(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,uu(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,ru(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,uu(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},ta.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return ou(e(n),a).cells.forEach(function(e,a){var c=e.edges,l=e.site,s=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):l.x>=r&&l.x<=i&&l.y>=u&&l.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ta)*Ta,y:Math.round(o(n,t)/Ta)*Ta,i:t}})}var r=Nr,u=Cr,i=r,o=u,a=cl;return n?t(n):(t.links=function(n){return ou(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ou(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Zr),c=-1,l=a.length,s=a[l-1].edge,f=s.l===o?s.r:s.l;++c<l;)u=s,i=f,s=a[c].edge,f=s.l===o?s.r:s.l,r<i.i&&r<f.i&&cu(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=Et(r=n),t):r},t.y=function(n){return arguments.length?(o=Et(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?cl:n,t):a===cl?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===cl?null:a&&a[1]},t)};var cl=[[-1e6,-1e6],[1e6,1e6]];ta.geom.delaunay=function(n){return ta.geom.voronoi().triangles(n)},ta.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,s=n.y;if(null!=c)if(va(c-e)+va(s-r)<.01)l(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,l(n,f,c,s,u,i,o,a),l(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else l(n,t,e,r,u,i,o,a)}function l(n,t,e,r,u,o,a,c){var l=.5*(u+a),s=.5*(o+c),f=e>=l,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=fu()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,v,d,m,y,M=Et(a),x=Et(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.x<v&&(v=s.x),s.y<d&&(d=s.y),s.x>m&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=fu();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){hu(n,k,v,d,m,y)},k.find=function(n){return gu(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=s=null,k}var o,a=Nr,c=Cr;return(o=arguments.length)?(a=lu,c=su,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},ta.interpolateRgb=pu,ta.interpolateObject=vu,ta.interpolateNumber=du,ta.interpolateString=mu;var ll=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,sl=new RegExp(ll.source,"g");ta.interpolate=yu,ta.interpolators=[function(n,t){var e=typeof t;return("string"===e?tc.has(t)||/^(#|rgb\(|hsl\()/.test(t)?pu:mu:t instanceof ot?pu:Array.isArray(t)?Mu:"object"===e&&isNaN(t)?vu:du)(n,t)}],ta.interpolateArray=Mu;var fl=function(){return At},hl=ta.map({linear:fl,poly:Eu,quad:function(){return wu},cubic:function(){return Su},sin:function(){return Au},exp:function(){return Nu},circle:function(){return Cu},elastic:zu,back:qu,bounce:function(){return Lu}}),gl=ta.map({"in":At,out:bu,"in-out":_u,"out-in":function(n){return _u(bu(n))}});ta.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=hl.get(e)||fl,r=gl.get(r)||At,xu(r(e.apply(null,ea.call(arguments,1))))},ta.interpolateHcl=Tu,ta.interpolateHsl=Ru,ta.interpolateLab=Du,ta.interpolateRound=Pu,ta.transform=function(n){var t=ua.createElementNS(ta.ns.prefix.svg,"g");return(ta.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Uu(e?e.matrix:pl)})(n)},Uu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var pl={a:1,b:0,c:0,d:1,e:0,f:0};ta.interpolateTransform=Ou,ta.layout={},ta.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Zu(n[e]));return t}},ta.layout.chord=function(){function n(){var n,l,f,h,g,p={},v=[],d=ta.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(l=0,g=-1;++g<i;)l+=u[h][g];v.push(l),m.push(ta.range(i)),n+=l}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(Pa-s*i)/n,l=0,h=-1;++h<i;){for(f=l,g=-1;++g<i;){var y=d[h],M=m[y][g],x=u[y][M],b=l,_=l+=x*n;p[y+"-"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle:f,endAngle:l,value:(l-f)/n},l+=s}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,l={},s=0;return l.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,l):u},l.padding=function(n){return arguments.length?(s=n,e=r=null,l):s},l.sortGroups=function(n){return arguments.length?(o=n,e=r=null,l):o},l.sortSubgroups=function(n){return arguments.length?(a=n,e=null,l):a},l.sortChords=function(n){return arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return e||n(),e},l.groups=function(){return r||n(),r},l},ta.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var l=t.charge/c;n.px-=i*l,n.py-=o*l}return!0}if(t.point&&c&&p>c){var l=t.pointCharge/c;n.px-=i*l,n.py-=o*l}}return!t.charge}}function t(n){n.px=ta.event.x,n.py=ta.event.y,a.resume()}var e,r,u,i,o,a={},c=ta.dispatch("start","tick","end"),l=[1,1],s=.9,f=vl,h=dl,g=-30,p=ml,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,M,x,b=m.length,_=y.length;for(e=0;_>e;++e)a=y[e],f=a.source,h=a.target,M=h.x-f.x,x=h.y-f.y,(p=M*M+x*x)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,M*=p,x*=p,h.x-=M*(d=f.weight/(h.weight+f.weight)),h.y-=x*d,f.x+=M*(d=1-d),f.y+=x*d);if((d=r*v)&&(M=l[0]/2,x=l[1]/2,e=-1,d))for(;++e<b;)a=m[e],a.x+=(M-a.x)*d,a.y+=(x-a.y)*d;if(g)for(Gu(t=ta.geom.quadtree(m),r,o),e=-1;++e<b;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<b;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(l=n,a):l},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),ta.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;l>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,l=o.length;++a<l;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,s=y.length,p=l[0],v=l[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=y[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=ta.behavior.drag().origin(At).on("dragstart.force",$u).on("drag.force",t).on("dragend.force",Bu)),arguments.length?(this.on("mouseover.force",Wu).on("mouseout.force",Ju).call(e),void 0):e},ta.rebind(a,c,"on")};var vl=20,dl=1,ml=1/0;ta.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(l=e.call(n,i,i.depth))&&(c=l.length)){for(var c,l,s;--c>=0;)o.push(s=l[c]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=l}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return ni(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=ri,e=ti,r=ei;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Qu(t,function(n){n.children&&(n.value=0)}),ni(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ta.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++l<o;)n(a=i[l],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=ta.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Ku(e,r)},ta.layout.pie=function(){function n(o){var a,c=o.length,l=o.map(function(e,r){return+t.call(n,e,r)}),s=+("function"==typeof r?r.apply(this,arguments):r),f=("function"==typeof u?u.apply(this,arguments):u)-s,h=Math.min(Math.abs(f)/c,+("function"==typeof i?i.apply(this,arguments):i)),g=h*(0>f?-1:1),p=(f-c*g)/ta.sum(l),v=ta.range(c),d=[];return null!=e&&v.sort(e===yl?function(n,t){return l[t]-l[n]}:function(n,t){return e(o[n],o[t])}),v.forEach(function(n){d[n]={data:o[n],value:a=l[n],startAngle:s,endAngle:s+=a*p+g,padAngle:h}}),d}var t=Number,e=yl,r=0,u=Pa,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var yl={};ta.layout.stack=function(){function n(a,c){if(!(h=a.length))return a;var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,c);l=ta.permute(l,f),s=ta.permute(s,f);var h,g,p,v,d=r.call(n,s,c),m=l[0].length;for(p=0;m>p;++p)for(u.call(n,l[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,l[g][p],v+=s[g-1][p][1],s[g][p][1]);return a}var t=At,e=ci,r=li,u=ai,i=ii,o=oi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:Ml.get(t)||ci,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:xl.get(t)||li,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var Ml=ta.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(si),i=n.map(fi),o=ta.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return ta.range(n.length).reverse()},"default":ci}),xl=ta.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:li});ta.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=l[i],a>=s[0]&&a<=s[1]&&(o=c[ta.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=vi,u=gi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return pi(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ta.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,ni(a,function(n){n.r=+s(n.value)}),ni(a,xi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;ni(a,function(n){n.r+=f}),ni(a,xi),ni(a,function(n){n.r-=f})}return wi(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=ta.layout.hierarchy().sort(di),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Ku(n,e)},ta.layout.tree=function(){function n(n,u){var s=o.call(this,n,u),f=s[0],h=t(f);if(ni(h,e),h.parent.m=-h.z,Qu(h,r),l)Qu(f,i);else{var g=f,p=f,v=f;Qu(f,function(n){n.x<g.x&&(g=n),n.x>p.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);Qu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Ci(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],l=u.m,s=i.m,f=o.m,h=c.m;o=Ai(o),u=Ei(u),o&&u;)c=Ei(c),i=Ai(i),i.a=n,r=o.z+f-u.z-l+a(o._,u._),r>0&&(Ni(zi(o,n,e),n,r),l+=r,s+=r),f+=o.m,l+=u.m,h+=c.m,s+=i.m;o&&!Ai(i)&&(i.t=o,i.m+=f-s),u&&!Ei(c)&&(c.t=u,c.m+=l-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=ta.layout.hierarchy().sort(null).value(null),a=ki,c=[1,1],l=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(l=null==(c=t)?i:null,n):l?null:c},n.nodeSize=function(t){return arguments.length?(l=null==(c=t)?null:i,n):l?c:null},Ku(n,o)},ta.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;ni(c,function(n){var t=n.children;t&&t.length?(n.x=Li(t),n.y=qi(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Ti(c),f=Ri(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return ni(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=ta.layout.hierarchy().sort(null).value(null),e=ki,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Ku(n,t)},ta.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,v))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,v,l,!1),v=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++i<o;)u=n[i],u.x=a,u.y=l,u.dy=s,a+=u.dx=Math.min(e.x+e.dx-a,s?c(u.area/s):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=s,e.dy-=s}else{for((r||s>e.dx)&&(s=e.dx);++i<o;)u=n[i],u.x=a,u.y=l,u.dx=s,l+=u.dy=Math.min(e.y+e.dy-l,s?c(u.area/s):0);u.z=!1,u.dy+=e.y+e.dy-l,e.x+=s,e.dx-=s}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=l[0],i.dy=l[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=ta.layout.hierarchy(),c=Math.round,l=[1,1],s=null,f=Di,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));return i.size=function(n){return arguments.length?(l=n,i):l},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Di(t):Pi(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Pi(t,n)}if(!arguments.length)return s;var r;return f=null==(s=n)?Di:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+"",i):g},Ku(i,a)},ta.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;
+do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=ta.random.normal.apply(ta,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ta.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ta.scale={};var bl={floor:At,ceil:At};ta.scale.linear=function(){return Ii([0,1],[0,1],yu,!1)};var _l={s:1,g:1,p:1,r:1,e:1};ta.scale.log=function(){return Gi(ta.scale.linear().domain([0,1]),10,!0,[1,10])};var wl=ta.format(".0e"),Sl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ta.scale.pow=function(){return Ki(ta.scale.linear(),1,[0,1])},ta.scale.sqrt=function(){return ta.scale.pow().exponent(.5)},ta.scale.ordinal=function(){return no([],{t:"range",a:[[]]})},ta.scale.category10=function(){return ta.scale.ordinal().range(kl)},ta.scale.category20=function(){return ta.scale.ordinal().range(El)},ta.scale.category20b=function(){return ta.scale.ordinal().range(Al)},ta.scale.category20c=function(){return ta.scale.ordinal().range(Nl)};var kl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(Mt),El=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(Mt),Al=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(Mt),Nl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(Mt);ta.scale.quantile=function(){return to([],[])},ta.scale.quantize=function(){return eo(0,1,[0,1])},ta.scale.threshold=function(){return ro([.5],[0,1])},ta.scale.identity=function(){return uo([0,1])},ta.svg={},ta.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),s=o.apply(this,arguments)-ja,f=a.apply(this,arguments)-ja,h=Math.abs(f-s),g=s>f?0:1;if(n>l&&(p=l,l=n,n=p),h>=Ua)return t(l,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,E=0,A=0,N=[];if((m=(+c.apply(this,arguments)||0)/2)&&(d=i===Cl?Math.sqrt(n*n+l*l):+i.apply(this,arguments),g||(A*=-1),l&&(A=tt(d/l*Math.sin(m))),n&&(E=tt(d/n*Math.sin(m)))),l){y=l*Math.cos(s+A),M=l*Math.sin(s+A),x=l*Math.cos(f-A),b=l*Math.sin(f-A);var C=Math.abs(f-s-2*A)<=Da?0:1;if(A&&fo(y,M,x,b)===g^C){var z=(s+f)/2;y=l*Math.cos(z),M=l*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-E),w=n*Math.sin(f-E),S=n*Math.cos(s+E),k=n*Math.sin(s+E);var q=Math.abs(s-f+2*E)<=Da?0:1;if(E&&fo(_,w,S,k)===1-g^q){var L=(s+f)/2;_=n*Math.cos(L),w=n*Math.sin(L),S=k=null}}else _=w=0;if((p=Math.min(Math.abs(l-n)/2,+u.apply(this,arguments)))>.001){v=l>n^g?0:1;var T=null==S?[_,w]:null==x?[y,M]:Tr([y,M],[S,k],[x,b],[_,w]),R=y-T[0],D=M-T[1],P=x-T[0],U=b-T[1],j=1/Math.sin(Math.acos((R*P+D*U)/(Math.sqrt(R*R+D*D)*Math.sqrt(P*P+U*U)))/2),F=Math.sqrt(T[0]*T[0]+T[1]*T[1]);if(null!=x){var H=Math.min(p,(l-F)/(j+1)),O=ho(null==S?[_,w]:[S,k],[y,M],l,H,g),Y=ho([x,b],[_,w],l,H,g);p===H?N.push("M",O[0],"A",H,",",H," 0 0,",v," ",O[1],"A",l,",",l," 0 ",1-g^fo(O[1][0],O[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",H,",",H," 0 0,",v," ",Y[0]):N.push("M",O[0],"A",H,",",H," 0 1,",v," ",Y[0])}else N.push("M",y,",",M);if(null!=S){var I=Math.min(p,(n-F)/(j-1)),Z=ho([y,M],[S,k],n,-I,g),V=ho([_,w],null==x?[y,M]:[x,b],n,-I,g);p===I?N.push("L",V[0],"A",I,",",I," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^fo(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",I,",",I," 0 0,",v," ",Z[0]):N.push("L",V[0],"A",I,",",I," 0 0,",v," ",Z[0])}else N.push("L",_,",",w)}else N.push("M",y,",",M),null!=x&&N.push("A",l,",",l," 0 ",C,",",g," ",x,",",b),N.push("L",_,",",w),null!=S&&N.push("A",n,",",n," 0 ",q,",",1-g," ",S,",",k);return N.push("Z"),N.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=oo,r=ao,u=io,i=Cl,o=co,a=lo,c=so;return n.innerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Et(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=Et(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Cl?Cl:Et(t),n):i},n.startAngle=function(t){return arguments.length?(o=Et(t),n):o},n.endAngle=function(t){return arguments.length?(a=Et(t),n):a},n.padAngle=function(t){return arguments.length?(c=Et(t),n):c},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-ja;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Cl="auto";ta.svg.line=function(){return go(At)};var zl=ta.map({linear:po,"linear-closed":vo,step:mo,"step-before":yo,"step-after":Mo,basis:ko,"basis-open":Eo,"basis-closed":Ao,bundle:No,cardinal:_o,"cardinal-open":xo,"cardinal-closed":bo,monotone:Ro});zl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var ql=[0,2/3,1/3,0],Ll=[0,1/3,2/3,0],Tl=[0,1/6,2/3,1/6];ta.svg.line.radial=function(){var n=go(Do);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},yo.reverse=Mo,Mo.reverse=yo,ta.svg.area=function(){return Po(At)},ta.svg.area.radial=function(){var n=Po(Do);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ta.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)-ja,s=l.call(n,u,r)-ja;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Da)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=yr,o=Mr,a=Uo,c=co,l=lo;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(c=Et(t),n):c},n.endAngle=function(t){return arguments.length?(l=Et(t),n):l},n},ta.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=yr,e=Mr,r=jo;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ta.svg.diagonal.radial=function(){var n=ta.svg.diagonal(),t=jo,e=n.projection;return n.projection=function(n){return arguments.length?e(Fo(t=n)):t},n},ta.svg.symbol=function(){function n(n,r){return(Rl.get(t.call(this,n,r))||Yo)(e.call(this,n,r))}var t=Oo,e=Ho;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var Rl=ta.map({circle:Yo,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*jl)),e=t*jl;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ta.svg.symbolTypes=Rl.keys();var Dl,Pl,Ul=Math.sqrt(3),jl=Math.tan(30*Fa),Fl=[],Hl=0;Fl.call=ka.call,Fl.empty=ka.empty,Fl.node=ka.node,Fl.size=ka.size,ta.transition=function(n){return arguments.length?Dl?n.transition():n:Na.transition()},ta.transition.prototype=Fl,Fl.select=function(n){var t,e,r,u=this.id,i=this.namespace,o=[];n=k(n);for(var a=-1,c=this.length;++a<c;){o.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(r=l[s])&&(e=n.call(r,r.__data__,s,a))?("__data__"in r&&(e.__data__=r.__data__),$o(e,s,i,u,r[i][u]),t.push(e)):t.push(null)}return Io(o,i,u)},Fl.selectAll=function(n){var t,e,r,u,i,o=this.id,a=this.namespace,c=[];n=E(n);for(var l=-1,s=this.length;++l<s;)for(var f=this[l],h=-1,g=f.length;++h<g;)if(r=f[h]){i=r[a][o],e=n.call(r,r.__data__,h,l),c.push(t=[]);for(var p=-1,v=e.length;++p<v;)(u=e[p])&&$o(u,p,a,o,i),t.push(u)}return Io(c,a,o)},Fl.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Io(u,this.namespace,this.id)},Fl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):H(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Fl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Ou:yu,a=ta.ns.qualify(n);return Zo(this,"attr."+n,t,a.local?i:u)},Fl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=ta.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Fl.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=oa.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=yu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return Zo(this,"style."+n,t,u)},Fl.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,oa.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Fl.text=function(n){return Zo(this,"text",n,Vo)},Fl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Fl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ta.ease.apply(ta,arguments)),H(this,function(r){r[e][t].ease=n}))},Fl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:H(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Fl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:H(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Fl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Pl,i=Dl;Dl=e,H(this,function(t,u,i){Pl=t[r][e],n.call(t,t.__data__,u,i)}),Pl=u,Dl=i}else H(this,function(u){var i=u[r][e];(i.event||(i.event=ta.dispatch("start","end","interrupt"))).on(n,t)});return this},Fl.transition=function(){for(var n,t,e,r,u=this.id,i=++Hl,o=this.namespace,a=[],c=0,l=this.length;l>c;c++){a.push(n=[]);for(var t=this[c],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[o][u],$o(e,s,o,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Io(a,o,i)},ta.svg.axis=function(){function n(n){n.each(function(){var n,l=ta.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):At:t,p=l.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Ta),d=ta.transition(p.exit()).style("opacity",Ta).remove(),m=ta.transition(p.order()).style("opacity",1),y=Math.max(u,0)+o,M=ji(f),x=l.selectAll(".domain").data([0]),b=(x.enter().append("path").attr("class","domain"),ta.transition(x));v.append("line"),v.append("text");var _,w,S,k,E=v.select("line"),A=m.select("line"),N=p.select("text").text(g),C=v.select("text"),z=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=Bo,_="x",S="y",w="x2",k="y2",N.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+M[0]+","+q*i+"V0H"+M[1]+"V"+q*i)):(n=Wo,_="y",S="x",w="y2",k="x2",N.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),b.attr("d","M"+q*i+","+M[0]+"H0V"+M[1]+"H"+q*i)),E.attr(k,q*u),C.attr(S,q*y),A.attr(w,0).attr(k,q*u),z.attr(_,0).attr(S,q*y),f.rangeBand){var L=f,T=L.rangeBand()/2;s=f=function(n){return L(n)+T}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=ta.scale.linear(),r=Ol,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Yl?t+"":Ol,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ol="bottom",Yl={top:1,right:1,bottom:1,left:1};ta.svg.brush=function(){function n(i){i.each(function(){var i=ta.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(p,At);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Il[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var s,f=ta.transition(i),h=ta.transition(o);c&&(s=ji(c),h.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),l&&(s=ji(l),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+f[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function r(n){n.select(".extent").attr("y",f[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1]-f[0])}function u(){function u(){32==ta.event.keyCode&&(N||(y=null,z[0]-=s[1],z[1]-=f[1],N=2),b())}function p(){32==ta.event.keyCode&&2==N&&(z[0]+=s[1],z[1]+=f[1],N=0,b())}function v(){var n=ta.mouse(x),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),N||(ta.event.altKey?(y||(y=[(s[0]+s[1])/2,(f[0]+f[1])/2]),z[0]=s[+(n[0]<y[0])],z[1]=f[+(n[1]<y[1])]):y=null),E&&d(n,c,0)&&(e(S),u=!0),A&&d(n,l,1)&&(r(S),u=!0),u&&(t(S),w({type:"brush",mode:N?"move":"resize"}))}function d(n,t,e){var r,u,a=ji(t),c=a[0],l=a[1],p=z[e],v=e?f:s,d=v[1]-v[0];return N&&(c-=p,l-=d+p),r=(e?g:h)?Math.max(c,Math.min(l,n[e])):n[e],N?u=(r+=p)+d:(y&&(p=Math.max(c,Math.min(l,2*y[e]-r))),r>p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function m(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ta.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),C(),w({type:"brushend"})}var y,M,x=this,_=ta.select(ta.event.target),w=a.of(x,arguments),S=ta.select(x),k=_.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&l,N=_.classed("extent"),C=$(),z=ta.mouse(x),q=ta.select(oa).on("keydown.brush",u).on("keyup.brush",p);if(ta.event.changedTouches?q.on("touchmove.brush",v).on("touchend.brush",m):q.on("mousemove.brush",v).on("mouseup.brush",m),S.interrupt().selectAll("*").interrupt(),N)z[0]=s[0]-z[0],z[1]=f[0]-z[1];else if(k){var L=+/w$/.test(k),T=+/^n/.test(k);M=[s[1-L]-z[0],f[1-T]-z[1]],z[0]=s[L],z[1]=f[T]}else ta.event.altKey&&(y=z.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),ta.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=w(n,"brushstart","brush","brushend"),c=null,l=null,s=[0,0],f=[0,0],h=!0,g=!0,p=Zl[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:s,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Dl?ta.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,s=e.x,f=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=Mu(s,t.x),r=Mu(f,t.y);return i=o=null,function(u){s=t.x=e(u),f=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,p=Zl[!c<<1|!l],n):c},n.y=function(t){return arguments.length?(l=t,p=Zl[!c<<1|!l],n):l},n.clamp=function(t){return arguments.length?(c&&l?(h=!!t[0],g=!!t[1]):c?h=!!t:l&&(g=!!t),n):c&&l?[h,g]:c?h:l?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],l&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=s[0]||r!=s[1])&&(s=[e,r])),l&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],l.invert&&(u=l(u),a=l(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),l&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],l.invert&&(u=l.invert(u),a=l.invert(a)),u>a&&(h=u,u=a,a=h))),c&&l?[[e,u],[r,a]]:c?[e,r]:l&&[u,a])},n.clear=function(){return n.empty()||(s=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!l&&f[0]==f[1]},ta.rebind(n,a,"on")};var Il={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Zl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Vl=fc.format=mc.timeFormat,Xl=Vl.utc,$l=Xl("%Y-%m-%dT%H:%M:%S.%LZ");Vl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Jo:$l,Jo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Jo.toString=$l.toString,fc.second=Ht(function(n){return new hc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),fc.seconds=fc.second.range,fc.seconds.utc=fc.second.utc.range,fc.minute=Ht(function(n){return new hc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),fc.minutes=fc.minute.range,fc.minutes.utc=fc.minute.utc.range,fc.hour=Ht(function(n){var t=n.getTimezoneOffset()/60;return new hc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),fc.hours=fc.hour.range,fc.hours.utc=fc.hour.utc.range,fc.month=Ht(function(n){return n=fc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),fc.months=fc.month.range,fc.months.utc=fc.month.utc.range;var Bl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Wl=[[fc.second,1],[fc.second,5],[fc.second,15],[fc.second,30],[fc.minute,1],[fc.minute,5],[fc.minute,15],[fc.minute,30],[fc.hour,1],[fc.hour,3],[fc.hour,6],[fc.hour,12],[fc.day,1],[fc.day,2],[fc.week,1],[fc.month,1],[fc.month,3],[fc.year,1]],Jl=Vl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Ce]]),Gl={range:function(n,t,e){return ta.range(Math.ceil(n/e)*e,+t,e).map(Ko)},floor:At,ceil:At};Wl.year=fc.year,fc.scale=function(){return Go(ta.scale.linear(),Wl,Jl)};var Kl=Wl.map(function(n){return[n[0].utc,n[1]]}),Ql=Xl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Ce]]);Kl.year=fc.year.utc,fc.scale.utc=function(){return Go(ta.scale.linear(),Kl,Ql)},ta.text=Nt(function(n){return n.responseText}),ta.json=function(n,t){return Ct(n,"application/json",Qo,t)},ta.html=function(n,t){return Ct(n,"text/html",na,t)},ta.xml=Nt(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(ta):"object"==typeof module&&module.exports&&(module.exports=ta),this.d3=ta}();
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/LICENSE b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/LICENSE
new file mode 100644
index 0000000..8301346
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/LICENSE
@@ -0,0 +1,26 @@
+Copyright (c) 2010-2014, Michael Bostock
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* The name Michael Bostock may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/README.md
new file mode 100644
index 0000000..eb334e2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/d3/README.md
@@ -0,0 +1,9 @@
+# Data-Driven Documents
+
+<a href="http://d3js.org"><img src="http://d3js.org/logo.svg" align="left" hspace="10" vspace="6"></a>
+
+**D3.js** is a JavaScript library for manipulating documents based on data. **D3** helps you bring data to life using HTML, SVG and CSS. D3’s emphasis on web standards gives you the full capabilities of modern browsers without tying yourself to a proprietary framework, combining powerful visualization components and a data-driven approach to DOM manipulation.
+
+Want to learn more? [See the wiki.](https://github.com/mbostock/d3/wiki)
+
+For examples, [see the gallery](https://github.com/mbostock/d3/wiki/Gallery) and [mbostock’s bl.ocks](http://bl.ocks.org/mbostock).
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/bower.json
new file mode 100644
index 0000000..d63083a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/bower.json
@@ -0,0 +1,32 @@
+{
+ "name": "datatables",
+ "version": "1.10.7",
+ "main": [
+ "media/js/jquery.dataTables.js",
+ "media/css/jquery.dataTables.css",
+ "media/images/sort_asc.png",
+ "media/images/sort_asc_disabled.png",
+ "media/images/sort_both.png",
+ "media/images/sort_desc.png",
+ "media/images/sort_desc_disabled.png"
+ ],
+ "dependencies": {
+ "jquery": ">=1.7.0"
+ },
+ "license": "MIT",
+ "keywords": [
+ "jquery",
+ "datatables",
+ "table",
+ "javascript",
+ "library"
+ ],
+ "ignore": [
+ "/.*",
+ "examples",
+ "media/unit_testing",
+ "composer.json",
+ "dataTables.jquery.json",
+ "package.json"
+ ]
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/Contributing.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/Contributing.md
new file mode 100644
index 0000000..17a8f1f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/Contributing.md
@@ -0,0 +1,18 @@
+# Support requests
+
+Please direct support requests to the [DataTables forums](https://datatables.net/forums), ensuring that you provide a link to a test page that shows the problem and a full description of the issue. If you require urgent help, [priority support](https://datatables.net/support) is available.
+
+
+# Contributing code
+
+If you are thinking of contributing code to DataTables, first of all, thank you! All fixes, patches and enhancements to DataTables are very warmly welcomed. In order to keep thing manageable, there are a number of guidelines that should be followed in order to ensure that your modification is included in DataTables as quickly as possible:
+
+1. Make contributions in the DataTables/DataTablesSrc repo. Changes to the built files in the built repo (DataTables/DataTables) will not be accepted since they would be overwritten by the next build!
+
+2. Follow the style of the code in the existing files. They might not be to everyone's tastes, but consistency is key for a mature project like DataTables. DataTables doesn't have a coding standards document, but simple common sense of following the same style as in the existing files is ideal. For example use tabs not spaces (as you will see all source files use tabs).
+
+3. Link to a test page showing the bug you are fixing or the feature you are adding. This allows to me to quickly identify what is being changed and why. Don't worry about being verbose in pull requests - its much better to know exactly what is changing and why!
+
+4. DataTables is a large and complex project and it isn't always possible or suitable to pull in every suggested change. Please don't be offended if a pull request is not merged in, it will explained why not if this is the case. Also it isn't always possible to fully check and test pull requests as quickly as I would like due to other commitments. Again this is no reflection on your pull request, just the busy life that we all lead! If you have any questions about your potential contribution and its place in the DataTables project structure, please ask ahead of time in the [DataTables forums](//datatables.net/forums).
+
+5. Pull requests will only be accepted if you acknowledge that your contribution is offered under and will be made available under the project's existing license (MIT). If your initial pull request doesn't explicitly acknowledge this I'll ask before it is pulled in.
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/license.txt b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/license.txt
new file mode 100644
index 0000000..48dee18
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/license.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2008-2013 SpryMedia Limited
+http://datatables.net
+
+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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables.css
new file mode 100644
index 0000000..eec02ef
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables.css
@@ -0,0 +1,455 @@
+/*
+ * Table styles
+ */
+table.dataTable {
+ width: 100%;
+ margin: 0 auto;
+ clear: both;
+ border-collapse: separate;
+ border-spacing: 0;
+ /*
+ * Header and footer styles
+ */
+ /*
+ * Body styles
+ */
+}
+table.dataTable thead th,
+table.dataTable tfoot th {
+ font-weight: bold;
+}
+table.dataTable thead th,
+table.dataTable thead td {
+ padding: 10px 18px;
+ border-bottom: 1px solid #111;
+}
+table.dataTable thead th:active,
+table.dataTable thead td:active {
+ outline: none;
+}
+table.dataTable tfoot th,
+table.dataTable tfoot td {
+ padding: 10px 18px 6px 18px;
+ border-top: 1px solid #111;
+}
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc {
+ cursor: pointer;
+ *cursor: hand;
+}
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+ background-repeat: no-repeat;
+ background-position: center right;
+}
+table.dataTable thead .sorting {
+ background-image: url("../images/sort_both.png");
+}
+table.dataTable thead .sorting_asc {
+ background-image: url("../images/sort_asc.png");
+}
+table.dataTable thead .sorting_desc {
+ background-image: url("../images/sort_desc.png");
+}
+table.dataTable thead .sorting_asc_disabled {
+ background-image: url("../images/sort_asc_disabled.png");
+}
+table.dataTable thead .sorting_desc_disabled {
+ background-image: url("../images/sort_desc_disabled.png");
+}
+table.dataTable tbody tr {
+ background-color: #ffffff;
+}
+table.dataTable tbody tr.selected {
+ background-color: #B0BED9;
+}
+table.dataTable tbody th,
+table.dataTable tbody td {
+ padding: 8px 10px;
+}
+table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
+ border-top: 1px solid #ddd;
+}
+table.dataTable.row-border tbody tr:first-child th,
+table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
+table.dataTable.display tbody tr:first-child td {
+ border-top: none;
+}
+table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
+ border-top: 1px solid #ddd;
+ border-right: 1px solid #ddd;
+}
+table.dataTable.cell-border tbody tr th:first-child,
+table.dataTable.cell-border tbody tr td:first-child {
+ border-left: 1px solid #ddd;
+}
+table.dataTable.cell-border tbody tr:first-child th,
+table.dataTable.cell-border tbody tr:first-child td {
+ border-top: none;
+}
+table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
+ background-color: #f9f9f9;
+}
+table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
+ background-color: #abb9d3;
+}
+table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
+ background-color: whitesmoke;
+}
+table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
+ background-color: #a9b7d1;
+}
+table.dataTable.order-column tbody tr > .sorting_1,
+table.dataTable.order-column tbody tr > .sorting_2,
+table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
+table.dataTable.display tbody tr > .sorting_2,
+table.dataTable.display tbody tr > .sorting_3 {
+ background-color: #f9f9f9;
+}
+table.dataTable.order-column tbody tr.selected > .sorting_1,
+table.dataTable.order-column tbody tr.selected > .sorting_2,
+table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
+table.dataTable.display tbody tr.selected > .sorting_2,
+table.dataTable.display tbody tr.selected > .sorting_3 {
+ background-color: #acbad4;
+}
+table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
+ background-color: #f1f1f1;
+}
+table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
+ background-color: #f3f3f3;
+}
+table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
+ background-color: whitesmoke;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
+ background-color: #a6b3cd;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
+ background-color: #a7b5ce;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
+ background-color: #a9b6d0;
+}
+table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
+ background-color: #f9f9f9;
+}
+table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
+ background-color: #fbfbfb;
+}
+table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
+ background-color: #fdfdfd;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
+ background-color: #acbad4;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
+ background-color: #adbbd6;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
+ background-color: #afbdd8;
+}
+table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
+ background-color: #eaeaea;
+}
+table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
+ background-color: #ebebeb;
+}
+table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
+ background-color: #eeeeee;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
+ background-color: #a1aec7;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
+ background-color: #a2afc8;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
+ background-color: #a4b2cb;
+}
+table.dataTable.no-footer {
+ border-bottom: 1px solid #111;
+}
+table.dataTable.nowrap th, table.dataTable.nowrap td {
+ white-space: nowrap;
+}
+table.dataTable.compact thead th,
+table.dataTable.compact thead td {
+ padding: 4px 17px 4px 4px;
+}
+table.dataTable.compact tfoot th,
+table.dataTable.compact tfoot td {
+ padding: 4px;
+}
+table.dataTable.compact tbody th,
+table.dataTable.compact tbody td {
+ padding: 4px;
+}
+table.dataTable th.dt-left,
+table.dataTable td.dt-left {
+ text-align: left;
+}
+table.dataTable th.dt-center,
+table.dataTable td.dt-center,
+table.dataTable td.dataTables_empty {
+ text-align: center;
+}
+table.dataTable th.dt-right,
+table.dataTable td.dt-right {
+ text-align: right;
+}
+table.dataTable th.dt-justify,
+table.dataTable td.dt-justify {
+ text-align: justify;
+}
+table.dataTable th.dt-nowrap,
+table.dataTable td.dt-nowrap {
+ white-space: nowrap;
+}
+table.dataTable thead th.dt-head-left,
+table.dataTable thead td.dt-head-left,
+table.dataTable tfoot th.dt-head-left,
+table.dataTable tfoot td.dt-head-left {
+ text-align: left;
+}
+table.dataTable thead th.dt-head-center,
+table.dataTable thead td.dt-head-center,
+table.dataTable tfoot th.dt-head-center,
+table.dataTable tfoot td.dt-head-center {
+ text-align: center;
+}
+table.dataTable thead th.dt-head-right,
+table.dataTable thead td.dt-head-right,
+table.dataTable tfoot th.dt-head-right,
+table.dataTable tfoot td.dt-head-right {
+ text-align: right;
+}
+table.dataTable thead th.dt-head-justify,
+table.dataTable thead td.dt-head-justify,
+table.dataTable tfoot th.dt-head-justify,
+table.dataTable tfoot td.dt-head-justify {
+ text-align: justify;
+}
+table.dataTable thead th.dt-head-nowrap,
+table.dataTable thead td.dt-head-nowrap,
+table.dataTable tfoot th.dt-head-nowrap,
+table.dataTable tfoot td.dt-head-nowrap {
+ white-space: nowrap;
+}
+table.dataTable tbody th.dt-body-left,
+table.dataTable tbody td.dt-body-left {
+ text-align: left;
+}
+table.dataTable tbody th.dt-body-center,
+table.dataTable tbody td.dt-body-center {
+ text-align: center;
+}
+table.dataTable tbody th.dt-body-right,
+table.dataTable tbody td.dt-body-right {
+ text-align: right;
+}
+table.dataTable tbody th.dt-body-justify,
+table.dataTable tbody td.dt-body-justify {
+ text-align: justify;
+}
+table.dataTable tbody th.dt-body-nowrap,
+table.dataTable tbody td.dt-body-nowrap {
+ white-space: nowrap;
+}
+
+table.dataTable,
+table.dataTable th,
+table.dataTable td {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+/*
+ * Control feature layout
+ */
+.dataTables_wrapper {
+ position: relative;
+ clear: both;
+ *zoom: 1;
+ zoom: 1;
+}
+.dataTables_wrapper .dataTables_length {
+ float: left;
+}
+.dataTables_wrapper .dataTables_filter {
+ float: right;
+ text-align: right;
+}
+.dataTables_wrapper .dataTables_filter input {
+ margin-left: 0.5em;
+}
+.dataTables_wrapper .dataTables_info {
+ clear: both;
+ float: left;
+ padding-top: 0.755em;
+}
+.dataTables_wrapper .dataTables_paginate {
+ float: right;
+ text-align: right;
+ padding-top: 0.25em;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button {
+ box-sizing: border-box;
+ display: inline-block;
+ min-width: 1.5em;
+ padding: 0.5em 1em;
+ margin-left: 2px;
+ text-align: center;
+ text-decoration: none !important;
+ cursor: pointer;
+ *cursor: hand;
+ color: #333 !important;
+ border: 1px solid transparent;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
+ color: #333 !important;
+ border: 1px solid #cacaca;
+ background-color: white;
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
+ /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
+ /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
+ /* FF3.6+ */
+ background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
+ /* IE10+ */
+ background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
+ /* Opera 11.10+ */
+ background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);
+ /* W3C */
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
+ cursor: default;
+ color: #666 !important;
+ border: 1px solid transparent;
+ background: transparent;
+ box-shadow: none;
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
+ color: white !important;
+ border: 1px solid #111;
+ background-color: #585858;
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
+ /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
+ /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, #585858 0%, #111 100%);
+ /* FF3.6+ */
+ background: -ms-linear-gradient(top, #585858 0%, #111 100%);
+ /* IE10+ */
+ background: -o-linear-gradient(top, #585858 0%, #111 100%);
+ /* Opera 11.10+ */
+ background: linear-gradient(to bottom, #585858 0%, #111 100%);
+ /* W3C */
+}
+.dataTables_wrapper .dataTables_paginate .paginate_button:active {
+ outline: none;
+ background-color: #2b2b2b;
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));
+ /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+ /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+ /* FF3.6+ */
+ background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+ /* IE10+ */
+ background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
+ /* Opera 11.10+ */
+ background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
+ /* W3C */
+ box-shadow: inset 0 0 3px #111;
+}
+.dataTables_wrapper .dataTables_paginate .ellipsis {
+ padding: 0 1em;
+}
+.dataTables_wrapper .dataTables_processing {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 100%;
+ height: 40px;
+ margin-left: -50%;
+ margin-top: -25px;
+ padding-top: 20px;
+ text-align: center;
+ font-size: 1.2em;
+ background-color: white;
+ background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
+ /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* FF3.6+ */
+ background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* IE10+ */
+ background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* Opera 11.10+ */
+ background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* W3C */
+}
+.dataTables_wrapper .dataTables_length,
+.dataTables_wrapper .dataTables_filter,
+.dataTables_wrapper .dataTables_info,
+.dataTables_wrapper .dataTables_processing,
+.dataTables_wrapper .dataTables_paginate {
+ color: #333;
+}
+.dataTables_wrapper .dataTables_scroll {
+ clear: both;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
+ *margin-top: -1px;
+ -webkit-overflow-scrolling: touch;
+}
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing,
+.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing {
+ height: 0;
+ overflow: hidden;
+ margin: 0 !important;
+ padding: 0 !important;
+}
+.dataTables_wrapper.no-footer .dataTables_scrollBody {
+ border-bottom: 1px solid #111;
+}
+.dataTables_wrapper.no-footer div.dataTables_scrollHead table,
+.dataTables_wrapper.no-footer div.dataTables_scrollBody table {
+ border-bottom: none;
+}
+.dataTables_wrapper:after {
+ visibility: hidden;
+ display: block;
+ content: "";
+ clear: both;
+ height: 0;
+}
+
+@media screen and (max-width: 767px) {
+ .dataTables_wrapper .dataTables_info,
+ .dataTables_wrapper .dataTables_paginate {
+ float: none;
+ text-align: center;
+ }
+ .dataTables_wrapper .dataTables_paginate {
+ margin-top: 0.5em;
+ }
+}
+@media screen and (max-width: 640px) {
+ .dataTables_wrapper .dataTables_length,
+ .dataTables_wrapper .dataTables_filter {
+ float: none;
+ text-align: center;
+ }
+ .dataTables_wrapper .dataTables_filter {
+ margin-top: 0.5em;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables.min.css
new file mode 100644
index 0000000..2edb32f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables.min.css
@@ -0,0 +1 @@
+table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{cursor:pointer;*cursor:hand}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #cacaca;background-color:#fff;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table,.dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables_themeroller.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables_themeroller.css
new file mode 100644
index 0000000..1426a44
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/css/jquery.dataTables_themeroller.css
@@ -0,0 +1,416 @@
+/*
+ * Table styles
+ */
+table.dataTable {
+ width: 100%;
+ margin: 0 auto;
+ clear: both;
+ border-collapse: separate;
+ border-spacing: 0;
+ /*
+ * Header and footer styles
+ */
+ /*
+ * Body styles
+ */
+}
+table.dataTable thead th,
+table.dataTable thead td,
+table.dataTable tfoot th,
+table.dataTable tfoot td {
+ padding: 4px 10px;
+}
+table.dataTable thead th,
+table.dataTable tfoot th {
+ font-weight: bold;
+}
+table.dataTable thead th:active,
+table.dataTable thead td:active {
+ outline: none;
+}
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting {
+ cursor: pointer;
+ *cursor: hand;
+}
+table.dataTable thead th div.DataTables_sort_wrapper {
+ position: relative;
+ padding-right: 10px;
+}
+table.dataTable thead th div.DataTables_sort_wrapper span {
+ position: absolute;
+ top: 50%;
+ margin-top: -8px;
+ right: -5px;
+}
+table.dataTable thead th.ui-state-default {
+ border-right-width: 0;
+}
+table.dataTable thead th.ui-state-default:last-child {
+ border-right-width: 1px;
+}
+table.dataTable tbody tr {
+ background-color: #ffffff;
+}
+table.dataTable tbody tr.selected {
+ background-color: #B0BED9;
+}
+table.dataTable tbody th,
+table.dataTable tbody td {
+ padding: 8px 10px;
+}
+table.dataTable th.center,
+table.dataTable td.center,
+table.dataTable td.dataTables_empty {
+ text-align: center;
+}
+table.dataTable th.right,
+table.dataTable td.right {
+ text-align: right;
+}
+table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
+ border-top: 1px solid #ddd;
+}
+table.dataTable.row-border tbody tr:first-child th,
+table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
+table.dataTable.display tbody tr:first-child td {
+ border-top: none;
+}
+table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
+ border-top: 1px solid #ddd;
+ border-right: 1px solid #ddd;
+}
+table.dataTable.cell-border tbody tr th:first-child,
+table.dataTable.cell-border tbody tr td:first-child {
+ border-left: 1px solid #ddd;
+}
+table.dataTable.cell-border tbody tr:first-child th,
+table.dataTable.cell-border tbody tr:first-child td {
+ border-top: none;
+}
+table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
+ background-color: #f9f9f9;
+}
+table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
+ background-color: #abb9d3;
+}
+table.dataTable.hover tbody tr:hover,
+table.dataTable.hover tbody tr.odd:hover,
+table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover,
+table.dataTable.display tbody tr.odd:hover,
+table.dataTable.display tbody tr.even:hover {
+ background-color: whitesmoke;
+}
+table.dataTable.hover tbody tr:hover.selected,
+table.dataTable.hover tbody tr.odd:hover.selected,
+table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected,
+table.dataTable.display tbody tr.odd:hover.selected,
+table.dataTable.display tbody tr.even:hover.selected {
+ background-color: #a9b7d1;
+}
+table.dataTable.order-column tbody tr > .sorting_1,
+table.dataTable.order-column tbody tr > .sorting_2,
+table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
+table.dataTable.display tbody tr > .sorting_2,
+table.dataTable.display tbody tr > .sorting_3 {
+ background-color: #f9f9f9;
+}
+table.dataTable.order-column tbody tr.selected > .sorting_1,
+table.dataTable.order-column tbody tr.selected > .sorting_2,
+table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
+table.dataTable.display tbody tr.selected > .sorting_2,
+table.dataTable.display tbody tr.selected > .sorting_3 {
+ background-color: #acbad4;
+}
+table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
+ background-color: #f1f1f1;
+}
+table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
+ background-color: #f3f3f3;
+}
+table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
+ background-color: whitesmoke;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
+ background-color: #a6b3cd;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
+ background-color: #a7b5ce;
+}
+table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
+ background-color: #a9b6d0;
+}
+table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
+ background-color: #f9f9f9;
+}
+table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
+ background-color: #fbfbfb;
+}
+table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
+ background-color: #fdfdfd;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
+ background-color: #acbad4;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
+ background-color: #adbbd6;
+}
+table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
+ background-color: #afbdd8;
+}
+table.dataTable.display tbody tr:hover > .sorting_1,
+table.dataTable.display tbody tr.odd:hover > .sorting_1,
+table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 {
+ background-color: #eaeaea;
+}
+table.dataTable.display tbody tr:hover > .sorting_2,
+table.dataTable.display tbody tr.odd:hover > .sorting_2,
+table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 {
+ background-color: #ebebeb;
+}
+table.dataTable.display tbody tr:hover > .sorting_3,
+table.dataTable.display tbody tr.odd:hover > .sorting_3,
+table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3,
+table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3,
+table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 {
+ background-color: #eeeeee;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_1,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_1,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 {
+ background-color: #a1aec7;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_2,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_2,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 {
+ background-color: #a2afc8;
+}
+table.dataTable.display tbody tr:hover.selected > .sorting_3,
+table.dataTable.display tbody tr.odd:hover.selected > .sorting_3,
+table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3,
+table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3,
+table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 {
+ background-color: #a4b2cb;
+}
+table.dataTable.nowrap th, table.dataTable.nowrap td {
+ white-space: nowrap;
+}
+table.dataTable.compact thead th,
+table.dataTable.compact thead td {
+ padding: 5px 9px;
+}
+table.dataTable.compact tfoot th,
+table.dataTable.compact tfoot td {
+ padding: 5px 9px 3px 9px;
+}
+table.dataTable.compact tbody th,
+table.dataTable.compact tbody td {
+ padding: 4px 5px;
+}
+table.dataTable th.dt-left,
+table.dataTable td.dt-left {
+ text-align: left;
+}
+table.dataTable th.dt-center,
+table.dataTable td.dt-center,
+table.dataTable td.dataTables_empty {
+ text-align: center;
+}
+table.dataTable th.dt-right,
+table.dataTable td.dt-right {
+ text-align: right;
+}
+table.dataTable th.dt-justify,
+table.dataTable td.dt-justify {
+ text-align: justify;
+}
+table.dataTable th.dt-nowrap,
+table.dataTable td.dt-nowrap {
+ white-space: nowrap;
+}
+table.dataTable thead th.dt-head-left,
+table.dataTable thead td.dt-head-left,
+table.dataTable tfoot th.dt-head-left,
+table.dataTable tfoot td.dt-head-left {
+ text-align: left;
+}
+table.dataTable thead th.dt-head-center,
+table.dataTable thead td.dt-head-center,
+table.dataTable tfoot th.dt-head-center,
+table.dataTable tfoot td.dt-head-center {
+ text-align: center;
+}
+table.dataTable thead th.dt-head-right,
+table.dataTable thead td.dt-head-right,
+table.dataTable tfoot th.dt-head-right,
+table.dataTable tfoot td.dt-head-right {
+ text-align: right;
+}
+table.dataTable thead th.dt-head-justify,
+table.dataTable thead td.dt-head-justify,
+table.dataTable tfoot th.dt-head-justify,
+table.dataTable tfoot td.dt-head-justify {
+ text-align: justify;
+}
+table.dataTable thead th.dt-head-nowrap,
+table.dataTable thead td.dt-head-nowrap,
+table.dataTable tfoot th.dt-head-nowrap,
+table.dataTable tfoot td.dt-head-nowrap {
+ white-space: nowrap;
+}
+table.dataTable tbody th.dt-body-left,
+table.dataTable tbody td.dt-body-left {
+ text-align: left;
+}
+table.dataTable tbody th.dt-body-center,
+table.dataTable tbody td.dt-body-center {
+ text-align: center;
+}
+table.dataTable tbody th.dt-body-right,
+table.dataTable tbody td.dt-body-right {
+ text-align: right;
+}
+table.dataTable tbody th.dt-body-justify,
+table.dataTable tbody td.dt-body-justify {
+ text-align: justify;
+}
+table.dataTable tbody th.dt-body-nowrap,
+table.dataTable tbody td.dt-body-nowrap {
+ white-space: nowrap;
+}
+
+table.dataTable,
+table.dataTable th,
+table.dataTable td {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+/*
+ * Control feature layout
+ */
+.dataTables_wrapper {
+ position: relative;
+ clear: both;
+ *zoom: 1;
+ zoom: 1;
+}
+.dataTables_wrapper .dataTables_length {
+ float: left;
+}
+.dataTables_wrapper .dataTables_filter {
+ float: right;
+ text-align: right;
+}
+.dataTables_wrapper .dataTables_filter input {
+ margin-left: 0.5em;
+}
+.dataTables_wrapper .dataTables_info {
+ clear: both;
+ float: left;
+ padding-top: 0.55em;
+}
+.dataTables_wrapper .dataTables_paginate {
+ float: right;
+ text-align: right;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button {
+ box-sizing: border-box;
+ display: inline-block;
+ min-width: 1.5em;
+ padding: 0.5em;
+ margin-left: 2px;
+ text-align: center;
+ text-decoration: none !important;
+ cursor: pointer;
+ *cursor: hand;
+ color: #333 !important;
+ border: 1px solid transparent;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:active {
+ outline: none;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:first-child {
+ border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.dataTables_wrapper .dataTables_paginate .fg-button:last-child {
+ border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+}
+.dataTables_wrapper .dataTables_processing {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 100%;
+ height: 40px;
+ margin-left: -50%;
+ margin-top: -25px;
+ padding-top: 20px;
+ text-align: center;
+ font-size: 1.2em;
+ background-color: white;
+ background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
+ /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* FF3.6+ */
+ background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* IE10+ */
+ background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* Opera 11.10+ */
+ background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
+ /* W3C */
+}
+.dataTables_wrapper .dataTables_length,
+.dataTables_wrapper .dataTables_filter,
+.dataTables_wrapper .dataTables_info,
+.dataTables_wrapper .dataTables_processing,
+.dataTables_wrapper .dataTables_paginate {
+ color: #333;
+}
+.dataTables_wrapper .dataTables_scroll {
+ clear: both;
+}
+.dataTables_wrapper .dataTables_scrollBody {
+ *margin-top: -1px;
+ -webkit-overflow-scrolling: touch;
+}
+.dataTables_wrapper .ui-widget-header {
+ font-weight: normal;
+}
+.dataTables_wrapper .ui-toolbar {
+ padding: 8px;
+}
+.dataTables_wrapper:after {
+ visibility: hidden;
+ display: block;
+ content: "";
+ clear: both;
+ height: 0;
+}
+
+@media screen and (max-width: 767px) {
+ .dataTables_wrapper .dataTables_length,
+ .dataTables_wrapper .dataTables_filter,
+ .dataTables_wrapper .dataTables_info,
+ .dataTables_wrapper .dataTables_paginate {
+ float: none;
+ text-align: center;
+ }
+ .dataTables_wrapper .dataTables_filter,
+ .dataTables_wrapper .dataTables_paginate {
+ margin-top: 0.5em;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/favicon.ico b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/favicon.ico
new file mode 100644
index 0000000..6eeaa2a
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/favicon.ico differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_asc.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_asc.png
new file mode 100644
index 0000000..e1ba61a
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_asc.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_asc_disabled.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_asc_disabled.png
new file mode 100644
index 0000000..fb11dfe
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_asc_disabled.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_both.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_both.png
new file mode 100644
index 0000000..af5bc7c
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_both.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_desc.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_desc.png
new file mode 100644
index 0000000..0e156de
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_desc.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_desc_disabled.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_desc_disabled.png
new file mode 100644
index 0000000..c9fdd8a
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/sort_desc_disabled.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/Sorting icons.psd b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/Sorting icons.psd
new file mode 100644
index 0000000..53b2e06
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/images/Sorting icons.psd differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.dataTables.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.dataTables.js
new file mode 100644
index 0000000..2a9bdb3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.dataTables.js
@@ -0,0 +1,14951 @@
+/*! DataTables 1.10.7
+ * ©2008-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary DataTables
+ * @description Paginate, search and order HTML tables
+ * @version 1.10.7
+ * @file jquery.dataTables.js
+ * @author SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact www.sprymedia.co.uk/contact
+ * @copyright Copyright 2008-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ * MIT license - http://datatables.net/license
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+/*jslint evil: true, undef: true, browser: true */
+/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnScrollBarWidth,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/
+
+(/** @lends <global> */function( window, document, undefined ) {
+
+(function( factory ) {
+ "use strict";
+
+ if ( typeof define === 'function' && define.amd ) {
+ // Define as an AMD module if possible
+ define( 'datatables', ['jquery'], factory );
+ }
+ else if ( typeof exports === 'object' ) {
+ // Node/CommonJS
+ module.exports = factory( require( 'jquery' ) );
+ }
+ else if ( jQuery && !jQuery.fn.dataTable ) {
+ // Define using browser globals otherwise
+ // Prevent multiple instantiations if the script is loaded twice
+ factory( jQuery );
+ }
+}
+(/** @lends <global> */function( $ ) {
+ "use strict";
+
+ /**
+ * DataTables is a plug-in for the jQuery Javascript library. It is a highly
+ * flexible tool, based upon the foundations of progressive enhancement,
+ * which will add advanced interaction controls to any HTML table. For a
+ * full list of features please refer to
+ * [DataTables.net](href="http://datatables.net).
+ *
+ * Note that the `DataTable` object is not a global variable but is aliased
+ * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may
+ * be accessed.
+ *
+ * @class
+ * @param {object} [init={}] Configuration object for DataTables. Options
+ * are defined by {@link DataTable.defaults}
+ * @requires jQuery 1.7+
+ *
+ * @example
+ * // Basic initialisation
+ * $(document).ready( function {
+ * $('#example').dataTable();
+ * } );
+ *
+ * @example
+ * // Initialisation with configuration options - in this case, disable
+ * // pagination and sorting.
+ * $(document).ready( function {
+ * $('#example').dataTable( {
+ * "paginate": false,
+ * "sort": false
+ * } );
+ * } );
+ */
+ var DataTable;
+
+
+ /*
+ * It is useful to have variables which are scoped locally so only the
+ * DataTables functions can access them and they don't leak into global space.
+ * At the same time these functions are often useful over multiple files in the
+ * core and API, so we list, or at least document, all variables which are used
+ * by DataTables as private variables here. This also ensures that there is no
+ * clashing of variable names and that they can easily referenced for reuse.
+ */
+
+
+ // Defined else where
+ // _selector_run
+ // _selector_opts
+ // _selector_first
+ // _selector_row_indexes
+
+ var _ext; // DataTable.ext
+ var _Api; // DataTable.Api
+ var _api_register; // DataTable.Api.register
+ var _api_registerPlural; // DataTable.Api.registerPlural
+
+ var _re_dic = {};
+ var _re_new_lines = /[\r\n]/g;
+ var _re_html = /<.*?>/g;
+ var _re_date_start = /^[\w\+\-]/;
+ var _re_date_end = /[\w\+\-]$/;
+
+ // Escape regular expression special characters
+ var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' );
+
+ // http://en.wikipedia.org/wiki/Foreign_exchange_market
+ // - \u20BD - Russian ruble.
+ // - \u20a9 - South Korean Won
+ // - \u20BA - Turkish Lira
+ // - \u20B9 - Indian Rupee
+ // - R - Brazil (R$) and South Africa
+ // - fr - Swiss Franc
+ // - kr - Swedish krona, Norwegian krone and Danish krone
+ // - \u2009 is thin space and \u202F is narrow no-break space, both used in many
+ // standards as thousands separators.
+ var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi;
+
+
+ var _empty = function ( d ) {
+ return !d || d === true || d === '-' ? true : false;
+ };
+
+
+ var _intVal = function ( s ) {
+ var integer = parseInt( s, 10 );
+ return !isNaN(integer) && isFinite(s) ? integer : null;
+ };
+
+ // Convert from a formatted number with characters other than `.` as the
+ // decimal place, to a Javascript number
+ var _numToDecimal = function ( num, decimalPoint ) {
+ // Cache created regular expressions for speed as this function is called often
+ if ( ! _re_dic[ decimalPoint ] ) {
+ _re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );
+ }
+ return typeof num === 'string' && decimalPoint !== '.' ?
+ num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :
+ num;
+ };
+
+
+ var _isNumber = function ( d, decimalPoint, formatted ) {
+ var strType = typeof d === 'string';
+
+ // If empty return immediately so there must be a number if it is a
+ // formatted string (this stops the string "k", or "kr", etc being detected
+ // as a formatted number for currency
+ if ( _empty( d ) ) {
+ return true;
+ }
+
+ if ( decimalPoint && strType ) {
+ d = _numToDecimal( d, decimalPoint );
+ }
+
+ if ( formatted && strType ) {
+ d = d.replace( _re_formatted_numeric, '' );
+ }
+
+ return !isNaN( parseFloat(d) ) && isFinite( d );
+ };
+
+
+ // A string without HTML in it can be considered to be HTML still
+ var _isHtml = function ( d ) {
+ return _empty( d ) || typeof d === 'string';
+ };
+
+
+ var _htmlNumeric = function ( d, decimalPoint, formatted ) {
+ if ( _empty( d ) ) {
+ return true;
+ }
+
+ var html = _isHtml( d );
+ return ! html ?
+ null :
+ _isNumber( _stripHtml( d ), decimalPoint, formatted ) ?
+ true :
+ null;
+ };
+
+
+ var _pluck = function ( a, prop, prop2 ) {
+ var out = [];
+ var i=0, ien=a.length;
+
+ // Could have the test in the loop for slightly smaller code, but speed
+ // is essential here
+ if ( prop2 !== undefined ) {
+ for ( ; i<ien ; i++ ) {
+ if ( a[i] && a[i][ prop ] ) {
+ out.push( a[i][ prop ][ prop2 ] );
+ }
+ }
+ }
+ else {
+ for ( ; i<ien ; i++ ) {
+ if ( a[i] ) {
+ out.push( a[i][ prop ] );
+ }
+ }
+ }
+
+ return out;
+ };
+
+
+ // Basically the same as _pluck, but rather than looping over `a` we use `order`
+ // as the indexes to pick from `a`
+ var _pluck_order = function ( a, order, prop, prop2 )
+ {
+ var out = [];
+ var i=0, ien=order.length;
+
+ // Could have the test in the loop for slightly smaller code, but speed
+ // is essential here
+ if ( prop2 !== undefined ) {
+ for ( ; i<ien ; i++ ) {
+ if ( a[ order[i] ][ prop ] ) {
+ out.push( a[ order[i] ][ prop ][ prop2 ] );
+ }
+ }
+ }
+ else {
+ for ( ; i<ien ; i++ ) {
+ out.push( a[ order[i] ][ prop ] );
+ }
+ }
+
+ return out;
+ };
+
+
+ var _range = function ( len, start )
+ {
+ var out = [];
+ var end;
+
+ if ( start === undefined ) {
+ start = 0;
+ end = len;
+ }
+ else {
+ end = start;
+ start = len;
+ }
+
+ for ( var i=start ; i<end ; i++ ) {
+ out.push( i );
+ }
+
+ return out;
+ };
+
+
+ var _removeEmpty = function ( a )
+ {
+ var out = [];
+
+ for ( var i=0, ien=a.length ; i<ien ; i++ ) {
+ if ( a[i] ) { // careful - will remove all falsy values!
+ out.push( a[i] );
+ }
+ }
+
+ return out;
+ };
+
+
+ var _stripHtml = function ( d ) {
+ return d.replace( _re_html, '' );
+ };
+
+
+ /**
+ * Find the unique elements in a source array.
+ *
+ * @param {array} src Source array
+ * @return {array} Array of unique items
+ * @ignore
+ */
+ var _unique = function ( src )
+ {
+ // A faster unique method is to use object keys to identify used values,
+ // but this doesn't work with arrays or objects, which we must also
+ // consider. See jsperf.com/compare-array-unique-versions/4 for more
+ // information.
+ var
+ out = [],
+ val,
+ i, ien=src.length,
+ j, k=0;
+
+ again: for ( i=0 ; i<ien ; i++ ) {
+ val = src[i];
+
+ for ( j=0 ; j<k ; j++ ) {
+ if ( out[j] === val ) {
+ continue again;
+ }
+ }
+
+ out.push( val );
+ k++;
+ }
+
+ return out;
+ };
+
+
+
+ /**
+ * Create a mapping object that allows camel case parameters to be looked up
+ * for their Hungarian counterparts. The mapping is stored in a private
+ * parameter called `_hungarianMap` which can be accessed on the source object.
+ * @param {object} o
+ * @memberof DataTable#oApi
+ */
+ function _fnHungarianMap ( o )
+ {
+ var
+ hungarian = 'a aa ai ao as b fn i m o s ',
+ match,
+ newKey,
+ map = {};
+
+ $.each( o, function (key, val) {
+ match = key.match(/^([^A-Z]+?)([A-Z])/);
+
+ if ( match && hungarian.indexOf(match[1]+' ') !== -1 )
+ {
+ newKey = key.replace( match[0], match[2].toLowerCase() );
+ map[ newKey ] = key;
+
+ if ( match[1] === 'o' )
+ {
+ _fnHungarianMap( o[key] );
+ }
+ }
+ } );
+
+ o._hungarianMap = map;
+ }
+
+
+ /**
+ * Convert from camel case parameters to Hungarian, based on a Hungarian map
+ * created by _fnHungarianMap.
+ * @param {object} src The model object which holds all parameters that can be
+ * mapped.
+ * @param {object} user The object to convert from camel case to Hungarian.
+ * @param {boolean} force When set to `true`, properties which already have a
+ * Hungarian value in the `user` object will be overwritten. Otherwise they
+ * won't be.
+ * @memberof DataTable#oApi
+ */
+ function _fnCamelToHungarian ( src, user, force )
+ {
+ if ( ! src._hungarianMap ) {
+ _fnHungarianMap( src );
+ }
+
+ var hungarianKey;
+
+ $.each( user, function (key, val) {
+ hungarianKey = src._hungarianMap[ key ];
+
+ if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )
+ {
+ // For objects, we need to buzz down into the object to copy parameters
+ if ( hungarianKey.charAt(0) === 'o' )
+ {
+ // Copy the camelCase options over to the hungarian
+ if ( ! user[ hungarianKey ] ) {
+ user[ hungarianKey ] = {};
+ }
+ $.extend( true, user[hungarianKey], user[key] );
+
+ _fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );
+ }
+ else {
+ user[hungarianKey] = user[ key ];
+ }
+ }
+ } );
+ }
+
+
+ /**
+ * Language compatibility - when certain options are given, and others aren't, we
+ * need to duplicate the values over, in order to provide backwards compatibility
+ * with older language files.
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnLanguageCompat( lang )
+ {
+ var defaults = DataTable.defaults.oLanguage;
+ var zeroRecords = lang.sZeroRecords;
+
+ /* Backwards compatibility - if there is no sEmptyTable given, then use the same as
+ * sZeroRecords - assuming that is given.
+ */
+ if ( ! lang.sEmptyTable && zeroRecords &&
+ defaults.sEmptyTable === "No data available in table" )
+ {
+ _fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );
+ }
+
+ /* Likewise with loading records */
+ if ( ! lang.sLoadingRecords && zeroRecords &&
+ defaults.sLoadingRecords === "Loading..." )
+ {
+ _fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );
+ }
+
+ // Old parameter name of the thousands separator mapped onto the new
+ if ( lang.sInfoThousands ) {
+ lang.sThousands = lang.sInfoThousands;
+ }
+
+ var decimal = lang.sDecimal;
+ if ( decimal ) {
+ _addNumericSort( decimal );
+ }
+ }
+
+
+ /**
+ * Map one parameter onto another
+ * @param {object} o Object to map
+ * @param {*} knew The new parameter name
+ * @param {*} old The old parameter name
+ */
+ var _fnCompatMap = function ( o, knew, old ) {
+ if ( o[ knew ] !== undefined ) {
+ o[ old ] = o[ knew ];
+ }
+ };
+
+
+ /**
+ * Provide backwards compatibility for the main DT options. Note that the new
+ * options are mapped onto the old parameters, so this is an external interface
+ * change only.
+ * @param {object} init Object to map
+ */
+ function _fnCompatOpts ( init )
+ {
+ _fnCompatMap( init, 'ordering', 'bSort' );
+ _fnCompatMap( init, 'orderMulti', 'bSortMulti' );
+ _fnCompatMap( init, 'orderClasses', 'bSortClasses' );
+ _fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );
+ _fnCompatMap( init, 'order', 'aaSorting' );
+ _fnCompatMap( init, 'orderFixed', 'aaSortingFixed' );
+ _fnCompatMap( init, 'paging', 'bPaginate' );
+ _fnCompatMap( init, 'pagingType', 'sPaginationType' );
+ _fnCompatMap( init, 'pageLength', 'iDisplayLength' );
+ _fnCompatMap( init, 'searching', 'bFilter' );
+
+ // Column search objects are in an array, so it needs to be converted
+ // element by element
+ var searchCols = init.aoSearchCols;
+
+ if ( searchCols ) {
+ for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {
+ if ( searchCols[i] ) {
+ _fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Provide backwards compatibility for column options. Note that the new options
+ * are mapped onto the old parameters, so this is an external interface change
+ * only.
+ * @param {object} init Object to map
+ */
+ function _fnCompatCols ( init )
+ {
+ _fnCompatMap( init, 'orderable', 'bSortable' );
+ _fnCompatMap( init, 'orderData', 'aDataSort' );
+ _fnCompatMap( init, 'orderSequence', 'asSorting' );
+ _fnCompatMap( init, 'orderDataType', 'sortDataType' );
+
+ // orderData can be given as an integer
+ var dataSort = init.aDataSort;
+ if ( dataSort && ! $.isArray( dataSort ) ) {
+ init.aDataSort = [ dataSort ];
+ }
+ }
+
+
+ /**
+ * Browser feature detection for capabilities, quirks
+ * @param {object} settings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnBrowserDetect( settings )
+ {
+ var browser = settings.oBrowser;
+
+ // Scrolling feature / quirks detection
+ var n = $('<div/>')
+ .css( {
+ position: 'absolute',
+ top: 0,
+ left: 0,
+ height: 1,
+ width: 1,
+ overflow: 'hidden'
+ } )
+ .append(
+ $('<div/>')
+ .css( {
+ position: 'absolute',
+ top: 1,
+ left: 1,
+ width: 100,
+ overflow: 'scroll'
+ } )
+ .append(
+ $('<div class="test"/>')
+ .css( {
+ width: '100%',
+ height: 10
+ } )
+ )
+ )
+ .appendTo( 'body' );
+
+ var test = n.find('.test');
+
+ // IE6/7 will oversize a width 100% element inside a scrolling element, to
+ // include the width of the scrollbar, while other browsers ensure the inner
+ // element is contained without forcing scrolling
+ browser.bScrollOversize = test[0].offsetWidth === 100;
+
+ // In rtl text layout, some browsers (most, but not all) will place the
+ // scrollbar on the left, rather than the right.
+ browser.bScrollbarLeft = Math.round( test.offset().left ) !== 1;
+
+ n.remove();
+ }
+
+
+ /**
+ * Array.prototype reduce[Right] method, used for browsers which don't support
+ * JS 1.6. Done this way to reduce code size, since we iterate either way
+ * @param {object} settings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnReduce ( that, fn, init, start, end, inc )
+ {
+ var
+ i = start,
+ value,
+ isSet = false;
+
+ if ( init !== undefined ) {
+ value = init;
+ isSet = true;
+ }
+
+ while ( i !== end ) {
+ if ( ! that.hasOwnProperty(i) ) {
+ continue;
+ }
+
+ value = isSet ?
+ fn( value, that[i], i, that ) :
+ that[i];
+
+ isSet = true;
+ i += inc;
+ }
+
+ return value;
+ }
+
+ /**
+ * Add a column to the list used for the table with default values
+ * @param {object} oSettings dataTables settings object
+ * @param {node} nTh The th element for this column
+ * @memberof DataTable#oApi
+ */
+ function _fnAddColumn( oSettings, nTh )
+ {
+ // Add column to aoColumns array
+ var oDefaults = DataTable.defaults.column;
+ var iCol = oSettings.aoColumns.length;
+ var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {
+ "nTh": nTh ? nTh : document.createElement('th'),
+ "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '',
+ "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],
+ "mData": oDefaults.mData ? oDefaults.mData : iCol,
+ idx: iCol
+ } );
+ oSettings.aoColumns.push( oCol );
+
+ // Add search object for column specific search. Note that the `searchCols[ iCol ]`
+ // passed into extend can be undefined. This allows the user to give a default
+ // with only some of the parameters defined, and also not give a default
+ var searchCols = oSettings.aoPreSearchCols;
+ searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );
+
+ // Use the default column options function to initialise classes etc
+ _fnColumnOptions( oSettings, iCol, $(nTh).data() );
+ }
+
+
+ /**
+ * Apply options for a column
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iCol column index to consider
+ * @param {object} oOptions object with sType, bVisible and bSearchable etc
+ * @memberof DataTable#oApi
+ */
+ function _fnColumnOptions( oSettings, iCol, oOptions )
+ {
+ var oCol = oSettings.aoColumns[ iCol ];
+ var oClasses = oSettings.oClasses;
+ var th = $(oCol.nTh);
+
+ // Try to get width information from the DOM. We can't get it from CSS
+ // as we'd need to parse the CSS stylesheet. `width` option can override
+ if ( ! oCol.sWidthOrig ) {
+ // Width attribute
+ oCol.sWidthOrig = th.attr('width') || null;
+
+ // Style attribute
+ var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/);
+ if ( t ) {
+ oCol.sWidthOrig = t[1];
+ }
+ }
+
+ /* User specified column options */
+ if ( oOptions !== undefined && oOptions !== null )
+ {
+ // Backwards compatibility
+ _fnCompatCols( oOptions );
+
+ // Map camel case parameters to their Hungarian counterparts
+ _fnCamelToHungarian( DataTable.defaults.column, oOptions );
+
+ /* Backwards compatibility for mDataProp */
+ if ( oOptions.mDataProp !== undefined && !oOptions.mData )
+ {
+ oOptions.mData = oOptions.mDataProp;
+ }
+
+ if ( oOptions.sType )
+ {
+ oCol._sManualType = oOptions.sType;
+ }
+
+ // `class` is a reserved word in Javascript, so we need to provide
+ // the ability to use a valid name for the camel case input
+ if ( oOptions.className && ! oOptions.sClass )
+ {
+ oOptions.sClass = oOptions.className;
+ }
+
+ $.extend( oCol, oOptions );
+ _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" );
+
+ /* iDataSort to be applied (backwards compatibility), but aDataSort will take
+ * priority if defined
+ */
+ if ( oOptions.iDataSort !== undefined )
+ {
+ oCol.aDataSort = [ oOptions.iDataSort ];
+ }
+ _fnMap( oCol, oOptions, "aDataSort" );
+ }
+
+ /* Cache the data get and set functions for speed */
+ var mDataSrc = oCol.mData;
+ var mData = _fnGetObjectDataFn( mDataSrc );
+ var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;
+
+ var attrTest = function( src ) {
+ return typeof src === 'string' && src.indexOf('@') !== -1;
+ };
+ oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (
+ attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)
+ );
+
+ oCol.fnGetData = function (rowData, type, meta) {
+ var innerData = mData( rowData, type, undefined, meta );
+
+ return mRender && type ?
+ mRender( innerData, type, rowData, meta ) :
+ innerData;
+ };
+ oCol.fnSetData = function ( rowData, val, meta ) {
+ return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );
+ };
+
+ // Indicate if DataTables should read DOM data as an object or array
+ // Used in _fnGetRowElements
+ if ( typeof mDataSrc !== 'number' ) {
+ oSettings._rowReadObject = true;
+ }
+
+ /* Feature sorting overrides column specific when off */
+ if ( !oSettings.oFeatures.bSort )
+ {
+ oCol.bSortable = false;
+ th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called
+ }
+
+ /* Check that the class assignment is correct for sorting */
+ var bAsc = $.inArray('asc', oCol.asSorting) !== -1;
+ var bDesc = $.inArray('desc', oCol.asSorting) !== -1;
+ if ( !oCol.bSortable || (!bAsc && !bDesc) )
+ {
+ oCol.sSortingClass = oClasses.sSortableNone;
+ oCol.sSortingClassJUI = "";
+ }
+ else if ( bAsc && !bDesc )
+ {
+ oCol.sSortingClass = oClasses.sSortableAsc;
+ oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;
+ }
+ else if ( !bAsc && bDesc )
+ {
+ oCol.sSortingClass = oClasses.sSortableDesc;
+ oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;
+ }
+ else
+ {
+ oCol.sSortingClass = oClasses.sSortable;
+ oCol.sSortingClassJUI = oClasses.sSortJUI;
+ }
+ }
+
+
+ /**
+ * Adjust the table column widths for new data. Note: you would probably want to
+ * do a redraw after calling this function!
+ * @param {object} settings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnAdjustColumnSizing ( settings )
+ {
+ /* Not interested in doing column width calculation if auto-width is disabled */
+ if ( settings.oFeatures.bAutoWidth !== false )
+ {
+ var columns = settings.aoColumns;
+
+ _fnCalculateColumnWidths( settings );
+ for ( var i=0 , iLen=columns.length ; i<iLen ; i++ )
+ {
+ columns[i].nTh.style.width = columns[i].sWidth;
+ }
+ }
+
+ var scroll = settings.oScroll;
+ if ( scroll.sY !== '' || scroll.sX !== '')
+ {
+ _fnScrollDraw( settings );
+ }
+
+ _fnCallbackFire( settings, null, 'column-sizing', [settings] );
+ }
+
+
+ /**
+ * Covert the index of a visible column to the index in the data array (take account
+ * of hidden columns)
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iMatch Visible column index to lookup
+ * @returns {int} i the data index
+ * @memberof DataTable#oApi
+ */
+ function _fnVisibleToColumnIndex( oSettings, iMatch )
+ {
+ var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+
+ return typeof aiVis[iMatch] === 'number' ?
+ aiVis[iMatch] :
+ null;
+ }
+
+
+ /**
+ * Covert the index of an index in the data array and convert it to the visible
+ * column index (take account of hidden columns)
+ * @param {int} iMatch Column index to lookup
+ * @param {object} oSettings dataTables settings object
+ * @returns {int} i the data index
+ * @memberof DataTable#oApi
+ */
+ function _fnColumnIndexToVisible( oSettings, iMatch )
+ {
+ var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+ var iPos = $.inArray( iMatch, aiVis );
+
+ return iPos !== -1 ? iPos : null;
+ }
+
+
+ /**
+ * Get the number of visible columns
+ * @param {object} oSettings dataTables settings object
+ * @returns {int} i the number of visible columns
+ * @memberof DataTable#oApi
+ */
+ function _fnVisbleColumns( oSettings )
+ {
+ return _fnGetColumns( oSettings, 'bVisible' ).length;
+ }
+
+
+ /**
+ * Get an array of column indexes that match a given property
+ * @param {object} oSettings dataTables settings object
+ * @param {string} sParam Parameter in aoColumns to look for - typically
+ * bVisible or bSearchable
+ * @returns {array} Array of indexes with matched properties
+ * @memberof DataTable#oApi
+ */
+ function _fnGetColumns( oSettings, sParam )
+ {
+ var a = [];
+
+ $.map( oSettings.aoColumns, function(val, i) {
+ if ( val[sParam] ) {
+ a.push( i );
+ }
+ } );
+
+ return a;
+ }
+
+
+ /**
+ * Calculate the 'type' of a column
+ * @param {object} settings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnColumnTypes ( settings )
+ {
+ var columns = settings.aoColumns;
+ var data = settings.aoData;
+ var types = DataTable.ext.type.detect;
+ var i, ien, j, jen, k, ken;
+ var col, cell, detectedType, cache;
+
+ // For each column, spin over the
+ for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+ col = columns[i];
+ cache = [];
+
+ if ( ! col.sType && col._sManualType ) {
+ col.sType = col._sManualType;
+ }
+ else if ( ! col.sType ) {
+ for ( j=0, jen=types.length ; j<jen ; j++ ) {
+ for ( k=0, ken=data.length ; k<ken ; k++ ) {
+ // Use a cache array so we only need to get the type data
+ // from the formatter once (when using multiple detectors)
+ if ( cache[k] === undefined ) {
+ cache[k] = _fnGetCellData( settings, k, i, 'type' );
+ }
+
+ detectedType = types[j]( cache[k], settings );
+
+ // If null, then this type can't apply to this column, so
+ // rather than testing all cells, break out. There is an
+ // exception for the last type which is `html`. We need to
+ // scan all rows since it is possible to mix string and HTML
+ // types
+ if ( ! detectedType && j !== types.length-1 ) {
+ break;
+ }
+
+ // Only a single match is needed for html type since it is
+ // bottom of the pile and very similar to string
+ if ( detectedType === 'html' ) {
+ break;
+ }
+ }
+
+ // Type is valid for all data points in the column - use this
+ // type
+ if ( detectedType ) {
+ col.sType = detectedType;
+ break;
+ }
+ }
+
+ // Fall back - if no type was detected, always use string
+ if ( ! col.sType ) {
+ col.sType = 'string';
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Take the column definitions and static columns arrays and calculate how
+ * they relate to column indexes. The callback function will then apply the
+ * definition found for a column to a suitable configuration object.
+ * @param {object} oSettings dataTables settings object
+ * @param {array} aoColDefs The aoColumnDefs array that is to be applied
+ * @param {array} aoCols The aoColumns array that defines columns individually
+ * @param {function} fn Callback function - takes two parameters, the calculated
+ * column index and the definition for that column.
+ * @memberof DataTable#oApi
+ */
+ function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
+ {
+ var i, iLen, j, jLen, k, kLen, def;
+ var columns = oSettings.aoColumns;
+
+ // Column definitions with aTargets
+ if ( aoColDefs )
+ {
+ /* Loop over the definitions array - loop in reverse so first instance has priority */
+ for ( i=aoColDefs.length-1 ; i>=0 ; i-- )
+ {
+ def = aoColDefs[i];
+
+ /* Each definition can target multiple columns, as it is an array */
+ var aTargets = def.targets !== undefined ?
+ def.targets :
+ def.aTargets;
+
+ if ( ! $.isArray( aTargets ) )
+ {
+ aTargets = [ aTargets ];
+ }
+
+ for ( j=0, jLen=aTargets.length ; j<jLen ; j++ )
+ {
+ if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )
+ {
+ /* Add columns that we don't yet know about */
+ while( columns.length <= aTargets[j] )
+ {
+ _fnAddColumn( oSettings );
+ }
+
+ /* Integer, basic index */
+ fn( aTargets[j], def );
+ }
+ else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )
+ {
+ /* Negative integer, right to left column counting */
+ fn( columns.length+aTargets[j], def );
+ }
+ else if ( typeof aTargets[j] === 'string' )
+ {
+ /* Class name matching on TH element */
+ for ( k=0, kLen=columns.length ; k<kLen ; k++ )
+ {
+ if ( aTargets[j] == "_all" ||
+ $(columns[k].nTh).hasClass( aTargets[j] ) )
+ {
+ fn( k, def );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Statically defined columns array
+ if ( aoCols )
+ {
+ for ( i=0, iLen=aoCols.length ; i<iLen ; i++ )
+ {
+ fn( i, aoCols[i] );
+ }
+ }
+ }
+
+ /**
+ * Add a data array to the table, creating DOM node etc. This is the parallel to
+ * _fnGatherData, but for adding rows from a Javascript source, rather than a
+ * DOM source.
+ * @param {object} oSettings dataTables settings object
+ * @param {array} aData data array to be added
+ * @param {node} [nTr] TR element to add to the table - optional. If not given,
+ * DataTables will create a row automatically
+ * @param {array} [anTds] Array of TD|TH elements for the row - must be given
+ * if nTr is.
+ * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed
+ * @memberof DataTable#oApi
+ */
+ function _fnAddData ( oSettings, aDataIn, nTr, anTds )
+ {
+ /* Create the object for storing information about this new row */
+ var iRow = oSettings.aoData.length;
+ var oData = $.extend( true, {}, DataTable.models.oRow, {
+ src: nTr ? 'dom' : 'data'
+ } );
+
+ oData._aData = aDataIn;
+ oSettings.aoData.push( oData );
+
+ /* Create the cells */
+ var nTd, sThisType;
+ var columns = oSettings.aoColumns;
+ for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+ {
+ // When working with a row, the data source object must be populated. In
+ // all other cases, the data source object is already populated, so we
+ // don't overwrite it, which might break bindings etc
+ if ( nTr ) {
+ _fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );
+ }
+ columns[i].sType = null;
+ }
+
+ /* Add to the display array */
+ oSettings.aiDisplayMaster.push( iRow );
+
+ /* Create the DOM information, or register it if already present */
+ if ( nTr || ! oSettings.oFeatures.bDeferRender )
+ {
+ _fnCreateTr( oSettings, iRow, nTr, anTds );
+ }
+
+ return iRow;
+ }
+
+
+ /**
+ * Add one or more TR elements to the table. Generally we'd expect to
+ * use this for reading data from a DOM sourced table, but it could be
+ * used for an TR element. Note that if a TR is given, it is used (i.e.
+ * it is not cloned).
+ * @param {object} settings dataTables settings object
+ * @param {array|node|jQuery} trs The TR element(s) to add to the table
+ * @returns {array} Array of indexes for the added rows
+ * @memberof DataTable#oApi
+ */
+ function _fnAddTr( settings, trs )
+ {
+ var row;
+
+ // Allow an individual node to be passed in
+ if ( ! (trs instanceof $) ) {
+ trs = $(trs);
+ }
+
+ return trs.map( function (i, el) {
+ row = _fnGetRowElements( settings, el );
+ return _fnAddData( settings, row.data, el, row.cells );
+ } );
+ }
+
+
+ /**
+ * Take a TR element and convert it to an index in aoData
+ * @param {object} oSettings dataTables settings object
+ * @param {node} n the TR element to find
+ * @returns {int} index if the node is found, null if not
+ * @memberof DataTable#oApi
+ */
+ function _fnNodeToDataIndex( oSettings, n )
+ {
+ return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;
+ }
+
+
+ /**
+ * Take a TD element and convert it into a column data index (not the visible index)
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iRow The row number the TD/TH can be found in
+ * @param {node} n The TD/TH element to find
+ * @returns {int} index if the node is found, -1 if not
+ * @memberof DataTable#oApi
+ */
+ function _fnNodeToColumnIndex( oSettings, iRow, n )
+ {
+ return $.inArray( n, oSettings.aoData[ iRow ].anCells );
+ }
+
+
+ /**
+ * Get the data for a given cell from the internal cache, taking into account data mapping
+ * @param {object} settings dataTables settings object
+ * @param {int} rowIdx aoData row id
+ * @param {int} colIdx Column index
+ * @param {string} type data get type ('display', 'type' 'filter' 'sort')
+ * @returns {*} Cell data
+ * @memberof DataTable#oApi
+ */
+ function _fnGetCellData( settings, rowIdx, colIdx, type )
+ {
+ var draw = settings.iDraw;
+ var col = settings.aoColumns[colIdx];
+ var rowData = settings.aoData[rowIdx]._aData;
+ var defaultContent = col.sDefaultContent;
+ var cellData = col.fnGetData( rowData, type, {
+ settings: settings,
+ row: rowIdx,
+ col: colIdx
+ } );
+
+ if ( cellData === undefined ) {
+ if ( settings.iDrawError != draw && defaultContent === null ) {
+ _fnLog( settings, 0, "Requested unknown parameter "+
+ (typeof col.mData=='function' ? '{function}' : "'"+col.mData+"'")+
+ " for row "+rowIdx, 4 );
+ settings.iDrawError = draw;
+ }
+ return defaultContent;
+ }
+
+ /* When the data source is null, we can use default column data */
+ if ( (cellData === rowData || cellData === null) && defaultContent !== null ) {
+ cellData = defaultContent;
+ }
+ else if ( typeof cellData === 'function' ) {
+ // If the data source is a function, then we run it and use the return,
+ // executing in the scope of the data object (for instances)
+ return cellData.call( rowData );
+ }
+
+ if ( cellData === null && type == 'display' ) {
+ return '';
+ }
+ return cellData;
+ }
+
+
+ /**
+ * Set the value for a specific cell, into the internal data cache
+ * @param {object} settings dataTables settings object
+ * @param {int} rowIdx aoData row id
+ * @param {int} colIdx Column index
+ * @param {*} val Value to set
+ * @memberof DataTable#oApi
+ */
+ function _fnSetCellData( settings, rowIdx, colIdx, val )
+ {
+ var col = settings.aoColumns[colIdx];
+ var rowData = settings.aoData[rowIdx]._aData;
+
+ col.fnSetData( rowData, val, {
+ settings: settings,
+ row: rowIdx,
+ col: colIdx
+ } );
+ }
+
+
+ // Private variable that is used to match action syntax in the data property object
+ var __reArray = /\[.*?\]$/;
+ var __reFn = /\(\)$/;
+
+ /**
+ * Split string on periods, taking into account escaped periods
+ * @param {string} str String to split
+ * @return {array} Split string
+ */
+ function _fnSplitObjNotation( str )
+ {
+ return $.map( str.match(/(\\.|[^\.])+/g), function ( s ) {
+ return s.replace(/\\./g, '.');
+ } );
+ }
+
+
+ /**
+ * Return a function that can be used to get data from a source object, taking
+ * into account the ability to use nested objects as a source
+ * @param {string|int|function} mSource The data source for the object
+ * @returns {function} Data get function
+ * @memberof DataTable#oApi
+ */
+ function _fnGetObjectDataFn( mSource )
+ {
+ if ( $.isPlainObject( mSource ) )
+ {
+ /* Build an object of get functions, and wrap them in a single call */
+ var o = {};
+ $.each( mSource, function (key, val) {
+ if ( val ) {
+ o[key] = _fnGetObjectDataFn( val );
+ }
+ } );
+
+ return function (data, type, row, meta) {
+ var t = o[type] || o._;
+ return t !== undefined ?
+ t(data, type, row, meta) :
+ data;
+ };
+ }
+ else if ( mSource === null )
+ {
+ /* Give an empty string for rendering / sorting etc */
+ return function (data) { // type, row and meta also passed, but not used
+ return data;
+ };
+ }
+ else if ( typeof mSource === 'function' )
+ {
+ return function (data, type, row, meta) {
+ return mSource( data, type, row, meta );
+ };
+ }
+ else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||
+ mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )
+ {
+ /* If there is a . in the source string then the data source is in a
+ * nested object so we loop over the data for each level to get the next
+ * level down. On each loop we test for undefined, and if found immediately
+ * return. This allows entire objects to be missing and sDefaultContent to
+ * be used if defined, rather than throwing an error
+ */
+ var fetchData = function (data, type, src) {
+ var arrayNotation, funcNotation, out, innerSrc;
+
+ if ( src !== "" )
+ {
+ var a = _fnSplitObjNotation( src );
+
+ for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+ {
+ // Check if we are dealing with special notation
+ arrayNotation = a[i].match(__reArray);
+ funcNotation = a[i].match(__reFn);
+
+ if ( arrayNotation )
+ {
+ // Array notation
+ a[i] = a[i].replace(__reArray, '');
+
+ // Condition allows simply [] to be passed in
+ if ( a[i] !== "" ) {
+ data = data[ a[i] ];
+ }
+ out = [];
+
+ // Get the remainder of the nested object to get
+ a.splice( 0, i+1 );
+ innerSrc = a.join('.');
+
+ // Traverse each entry in the array getting the properties requested
+ for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
+ out.push( fetchData( data[j], type, innerSrc ) );
+ }
+
+ // If a string is given in between the array notation indicators, that
+ // is used to join the strings together, otherwise an array is returned
+ var join = arrayNotation[0].substring(1, arrayNotation[0].length-1);
+ data = (join==="") ? out : out.join(join);
+
+ // The inner call to fetchData has already traversed through the remainder
+ // of the source requested, so we exit from the loop
+ break;
+ }
+ else if ( funcNotation )
+ {
+ // Function call
+ a[i] = a[i].replace(__reFn, '');
+ data = data[ a[i] ]();
+ continue;
+ }
+
+ if ( data === null || data[ a[i] ] === undefined )
+ {
+ return undefined;
+ }
+ data = data[ a[i] ];
+ }
+ }
+
+ return data;
+ };
+
+ return function (data, type) { // row and meta also passed, but not used
+ return fetchData( data, type, mSource );
+ };
+ }
+ else
+ {
+ /* Array or flat object mapping */
+ return function (data, type) { // row and meta also passed, but not used
+ return data[mSource];
+ };
+ }
+ }
+
+
+ /**
+ * Return a function that can be used to set data from a source object, taking
+ * into account the ability to use nested objects as a source
+ * @param {string|int|function} mSource The data source for the object
+ * @returns {function} Data set function
+ * @memberof DataTable#oApi
+ */
+ function _fnSetObjectDataFn( mSource )
+ {
+ if ( $.isPlainObject( mSource ) )
+ {
+ /* Unlike get, only the underscore (global) option is used for for
+ * setting data since we don't know the type here. This is why an object
+ * option is not documented for `mData` (which is read/write), but it is
+ * for `mRender` which is read only.
+ */
+ return _fnSetObjectDataFn( mSource._ );
+ }
+ else if ( mSource === null )
+ {
+ /* Nothing to do when the data source is null */
+ return function () {};
+ }
+ else if ( typeof mSource === 'function' )
+ {
+ return function (data, val, meta) {
+ mSource( data, 'set', val, meta );
+ };
+ }
+ else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||
+ mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )
+ {
+ /* Like the get, we need to get data from a nested object */
+ var setData = function (data, val, src) {
+ var a = _fnSplitObjNotation( src ), b;
+ var aLast = a[a.length-1];
+ var arrayNotation, funcNotation, o, innerSrc;
+
+ for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )
+ {
+ // Check if we are dealing with an array notation request
+ arrayNotation = a[i].match(__reArray);
+ funcNotation = a[i].match(__reFn);
+
+ if ( arrayNotation )
+ {
+ a[i] = a[i].replace(__reArray, '');
+ data[ a[i] ] = [];
+
+ // Get the remainder of the nested object to set so we can recurse
+ b = a.slice();
+ b.splice( 0, i+1 );
+ innerSrc = b.join('.');
+
+ // Traverse each entry in the array setting the properties requested
+ for ( var j=0, jLen=val.length ; j<jLen ; j++ )
+ {
+ o = {};
+ setData( o, val[j], innerSrc );
+ data[ a[i] ].push( o );
+ }
+
+ // The inner call to setData has already traversed through the remainder
+ // of the source and has set the data, thus we can exit here
+ return;
+ }
+ else if ( funcNotation )
+ {
+ // Function call
+ a[i] = a[i].replace(__reFn, '');
+ data = data[ a[i] ]( val );
+ }
+
+ // If the nested object doesn't currently exist - since we are
+ // trying to set the value - create it
+ if ( data[ a[i] ] === null || data[ a[i] ] === undefined )
+ {
+ data[ a[i] ] = {};
+ }
+ data = data[ a[i] ];
+ }
+
+ // Last item in the input - i.e, the actual set
+ if ( aLast.match(__reFn ) )
+ {
+ // Function call
+ data = data[ aLast.replace(__reFn, '') ]( val );
+ }
+ else
+ {
+ // If array notation is used, we just want to strip it and use the property name
+ // and assign the value. If it isn't used, then we get the result we want anyway
+ data[ aLast.replace(__reArray, '') ] = val;
+ }
+ };
+
+ return function (data, val) { // meta is also passed in, but not used
+ return setData( data, val, mSource );
+ };
+ }
+ else
+ {
+ /* Array or flat object mapping */
+ return function (data, val) { // meta is also passed in, but not used
+ data[mSource] = val;
+ };
+ }
+ }
+
+
+ /**
+ * Return an array with the full table data
+ * @param {object} oSettings dataTables settings object
+ * @returns array {array} aData Master data array
+ * @memberof DataTable#oApi
+ */
+ function _fnGetDataMaster ( settings )
+ {
+ return _pluck( settings.aoData, '_aData' );
+ }
+
+
+ /**
+ * Nuke the table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnClearTable( settings )
+ {
+ settings.aoData.length = 0;
+ settings.aiDisplayMaster.length = 0;
+ settings.aiDisplay.length = 0;
+ }
+
+
+ /**
+ * Take an array of integers (index array) and remove a target integer (value - not
+ * the key!)
+ * @param {array} a Index array to target
+ * @param {int} iTarget value to find
+ * @memberof DataTable#oApi
+ */
+ function _fnDeleteIndex( a, iTarget, splice )
+ {
+ var iTargetIndex = -1;
+
+ for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+ {
+ if ( a[i] == iTarget )
+ {
+ iTargetIndex = i;
+ }
+ else if ( a[i] > iTarget )
+ {
+ a[i]--;
+ }
+ }
+
+ if ( iTargetIndex != -1 && splice === undefined )
+ {
+ a.splice( iTargetIndex, 1 );
+ }
+ }
+
+
+ /**
+ * Mark cached data as invalid such that a re-read of the data will occur when
+ * the cached data is next requested. Also update from the data source object.
+ *
+ * @param {object} settings DataTables settings object
+ * @param {int} rowIdx Row index to invalidate
+ * @param {string} [src] Source to invalidate from: undefined, 'auto', 'dom'
+ * or 'data'
+ * @param {int} [colIdx] Column index to invalidate. If undefined the whole
+ * row will be invalidated
+ * @memberof DataTable#oApi
+ *
+ * @todo For the modularisation of v1.11 this will need to become a callback, so
+ * the sort and filter methods can subscribe to it. That will required
+ * initialisation options for sorting, which is why it is not already baked in
+ */
+ function _fnInvalidate( settings, rowIdx, src, colIdx )
+ {
+ var row = settings.aoData[ rowIdx ];
+ var i, ien;
+ var cellWrite = function ( cell, col ) {
+ // This is very frustrating, but in IE if you just write directly
+ // to innerHTML, and elements that are overwritten are GC'ed,
+ // even if there is a reference to them elsewhere
+ while ( cell.childNodes.length ) {
+ cell.removeChild( cell.firstChild );
+ }
+
+ cell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' );
+ };
+
+ // Are we reading last data from DOM or the data object?
+ if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {
+ // Read the data from the DOM
+ row._aData = _fnGetRowElements(
+ settings, row, colIdx, colIdx === undefined ? undefined : row._aData
+ )
+ .data;
+ }
+ else {
+ // Reading from data object, update the DOM
+ var cells = row.anCells;
+
+ if ( cells ) {
+ if ( colIdx !== undefined ) {
+ cellWrite( cells[colIdx], colIdx );
+ }
+ else {
+ for ( i=0, ien=cells.length ; i<ien ; i++ ) {
+ cellWrite( cells[i], i );
+ }
+ }
+ }
+ }
+
+ // For both row and cell invalidation, the cached data for sorting and
+ // filtering is nulled out
+ row._aSortData = null;
+ row._aFilterData = null;
+
+ // Invalidate the type for a specific column (if given) or all columns since
+ // the data might have changed
+ var cols = settings.aoColumns;
+ if ( colIdx !== undefined ) {
+ cols[ colIdx ].sType = null;
+ }
+ else {
+ for ( i=0, ien=cols.length ; i<ien ; i++ ) {
+ cols[i].sType = null;
+ }
+
+ // Update DataTables special `DT_*` attributes for the row
+ _fnRowAttributes( row );
+ }
+ }
+
+
+ /**
+ * Build a data source object from an HTML row, reading the contents of the
+ * cells that are in the row.
+ *
+ * @param {object} settings DataTables settings object
+ * @param {node|object} TR element from which to read data or existing row
+ * object from which to re-read the data from the cells
+ * @param {int} [colIdx] Optional column index
+ * @param {array|object} [d] Data source object. If `colIdx` is given then this
+ * parameter should also be given and will be used to write the data into.
+ * Only the column in question will be written
+ * @returns {object} Object with two parameters: `data` the data read, in
+ * document order, and `cells` and array of nodes (they can be useful to the
+ * caller, so rather than needing a second traversal to get them, just return
+ * them from here).
+ * @memberof DataTable#oApi
+ */
+ function _fnGetRowElements( settings, row, colIdx, d )
+ {
+ var
+ tds = [],
+ td = row.firstChild,
+ name, col, o, i=0, contents,
+ columns = settings.aoColumns,
+ objectRead = settings._rowReadObject;
+
+ // Allow the data object to be passed in, or construct
+ d = d || objectRead ? {} : [];
+
+ var attr = function ( str, td ) {
+ if ( typeof str === 'string' ) {
+ var idx = str.indexOf('@');
+
+ if ( idx !== -1 ) {
+ var attr = str.substring( idx+1 );
+ var setter = _fnSetObjectDataFn( str );
+ setter( d, td.getAttribute( attr ) );
+ }
+ }
+ };
+
+ // Read data from a cell and store into the data object
+ var cellProcess = function ( cell ) {
+ if ( colIdx === undefined || colIdx === i ) {
+ col = columns[i];
+ contents = $.trim(cell.innerHTML);
+
+ if ( col && col._bAttrSrc ) {
+ var setter = _fnSetObjectDataFn( col.mData._ );
+ setter( d, contents );
+
+ attr( col.mData.sort, cell );
+ attr( col.mData.type, cell );
+ attr( col.mData.filter, cell );
+ }
+ else {
+ // Depending on the `data` option for the columns the data can
+ // be read to either an object or an array.
+ if ( objectRead ) {
+ if ( ! col._setter ) {
+ // Cache the setter function
+ col._setter = _fnSetObjectDataFn( col.mData );
+ }
+ col._setter( d, contents );
+ }
+ else {
+ d[i] = contents;
+ }
+ }
+ }
+
+ i++;
+ };
+
+ if ( td ) {
+ // `tr` element was passed in
+ while ( td ) {
+ name = td.nodeName.toUpperCase();
+
+ if ( name == "TD" || name == "TH" ) {
+ cellProcess( td );
+ tds.push( td );
+ }
+
+ td = td.nextSibling;
+ }
+ }
+ else {
+ // Existing row object passed in
+ tds = row.anCells;
+
+ for ( var j=0, jen=tds.length ; j<jen ; j++ ) {
+ cellProcess( tds[j] );
+ }
+ }
+
+ return {
+ data: d,
+ cells: tds
+ };
+ }
+ /**
+ * Create a new TR element (and it's TD children) for a row
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iRow Row to consider
+ * @param {node} [nTrIn] TR element to add to the table - optional. If not given,
+ * DataTables will create a row automatically
+ * @param {array} [anTds] Array of TD|TH elements for the row - must be given
+ * if nTr is.
+ * @memberof DataTable#oApi
+ */
+ function _fnCreateTr ( oSettings, iRow, nTrIn, anTds )
+ {
+ var
+ row = oSettings.aoData[iRow],
+ rowData = row._aData,
+ cells = [],
+ nTr, nTd, oCol,
+ i, iLen;
+
+ if ( row.nTr === null )
+ {
+ nTr = nTrIn || document.createElement('tr');
+
+ row.nTr = nTr;
+ row.anCells = cells;
+
+ /* Use a private property on the node to allow reserve mapping from the node
+ * to the aoData array for fast look up
+ */
+ nTr._DT_RowIndex = iRow;
+
+ /* Special parameters can be given by the data source to be used on the row */
+ _fnRowAttributes( row );
+
+ /* Process each column */
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ oCol = oSettings.aoColumns[i];
+
+ nTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType );
+ cells.push( nTd );
+
+ // Need to create the HTML if new, or if a rendering function is defined
+ if ( !nTrIn || oCol.mRender || oCol.mData !== i )
+ {
+ nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );
+ }
+
+ /* Add user defined class */
+ if ( oCol.sClass )
+ {
+ nTd.className += ' '+oCol.sClass;
+ }
+
+ // Visibility - add or remove as required
+ if ( oCol.bVisible && ! nTrIn )
+ {
+ nTr.appendChild( nTd );
+ }
+ else if ( ! oCol.bVisible && nTrIn )
+ {
+ nTd.parentNode.removeChild( nTd );
+ }
+
+ if ( oCol.fnCreatedCell )
+ {
+ oCol.fnCreatedCell.call( oSettings.oInstance,
+ nTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i
+ );
+ }
+ }
+
+ _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] );
+ }
+
+ // Remove once webkit bug 131819 and Chromium bug 365619 have been resolved
+ // and deployed
+ row.nTr.setAttribute( 'role', 'row' );
+ }
+
+
+ /**
+ * Add attributes to a row based on the special `DT_*` parameters in a data
+ * source object.
+ * @param {object} DataTables row object for the row to be modified
+ * @memberof DataTable#oApi
+ */
+ function _fnRowAttributes( row )
+ {
+ var tr = row.nTr;
+ var data = row._aData;
+
+ if ( tr ) {
+ if ( data.DT_RowId ) {
+ tr.id = data.DT_RowId;
+ }
+
+ if ( data.DT_RowClass ) {
+ // Remove any classes added by DT_RowClass before
+ var a = data.DT_RowClass.split(' ');
+ row.__rowc = row.__rowc ?
+ _unique( row.__rowc.concat( a ) ) :
+ a;
+
+ $(tr)
+ .removeClass( row.__rowc.join(' ') )
+ .addClass( data.DT_RowClass );
+ }
+
+ if ( data.DT_RowAttr ) {
+ $(tr).attr( data.DT_RowAttr );
+ }
+
+ if ( data.DT_RowData ) {
+ $(tr).data( data.DT_RowData );
+ }
+ }
+ }
+
+
+ /**
+ * Create the HTML header for the table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnBuildHead( oSettings )
+ {
+ var i, ien, cell, row, column;
+ var thead = oSettings.nTHead;
+ var tfoot = oSettings.nTFoot;
+ var createHeader = $('th, td', thead).length === 0;
+ var classes = oSettings.oClasses;
+ var columns = oSettings.aoColumns;
+
+ if ( createHeader ) {
+ row = $('<tr/>').appendTo( thead );
+ }
+
+ for ( i=0, ien=columns.length ; i<ien ; i++ ) {
+ column = columns[i];
+ cell = $( column.nTh ).addClass( column.sClass );
+
+ if ( createHeader ) {
+ cell.appendTo( row );
+ }
+
+ // 1.11 move into sorting
+ if ( oSettings.oFeatures.bSort ) {
+ cell.addClass( column.sSortingClass );
+
+ if ( column.bSortable !== false ) {
+ cell
+ .attr( 'tabindex', oSettings.iTabIndex )
+ .attr( 'aria-controls', oSettings.sTableId );
+
+ _fnSortAttachListener( oSettings, column.nTh, i );
+ }
+ }
+
+ if ( column.sTitle != cell.html() ) {
+ cell.html( column.sTitle );
+ }
+
+ _fnRenderer( oSettings, 'header' )(
+ oSettings, cell, column, classes
+ );
+ }
+
+ if ( createHeader ) {
+ _fnDetectHeader( oSettings.aoHeader, thead );
+ }
+
+ /* ARIA role for the rows */
+ $(thead).find('>tr').attr('role', 'row');
+
+ /* Deal with the footer - add classes if required */
+ $(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH );
+ $(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH );
+
+ // Cache the footer cells. Note that we only take the cells from the first
+ // row in the footer. If there is more than one row the user wants to
+ // interact with, they need to use the table().foot() method. Note also this
+ // allows cells to be used for multiple columns using colspan
+ if ( tfoot !== null ) {
+ var cells = oSettings.aoFooter[0];
+
+ for ( i=0, ien=cells.length ; i<ien ; i++ ) {
+ column = columns[i];
+ column.nTf = cells[i].cell;
+
+ if ( column.sClass ) {
+ $(column.nTf).addClass( column.sClass );
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Draw the header (or footer) element based on the column visibility states. The
+ * methodology here is to use the layout array from _fnDetectHeader, modified for
+ * the instantaneous column visibility, to construct the new layout. The grid is
+ * traversed over cell at a time in a rows x columns grid fashion, although each
+ * cell insert can cover multiple elements in the grid - which is tracks using the
+ * aApplied array. Cell inserts in the grid will only occur where there isn't
+ * already a cell in that position.
+ * @param {object} oSettings dataTables settings object
+ * @param array {objects} aoSource Layout array from _fnDetectHeader
+ * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,
+ * @memberof DataTable#oApi
+ */
+ function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
+ {
+ var i, iLen, j, jLen, k, kLen, n, nLocalTr;
+ var aoLocal = [];
+ var aApplied = [];
+ var iColumns = oSettings.aoColumns.length;
+ var iRowspan, iColspan;
+
+ if ( ! aoSource )
+ {
+ return;
+ }
+
+ if ( bIncludeHidden === undefined )
+ {
+ bIncludeHidden = false;
+ }
+
+ /* Make a copy of the master layout array, but without the visible columns in it */
+ for ( i=0, iLen=aoSource.length ; i<iLen ; i++ )
+ {
+ aoLocal[i] = aoSource[i].slice();
+ aoLocal[i].nTr = aoSource[i].nTr;
+
+ /* Remove any columns which are currently hidden */
+ for ( j=iColumns-1 ; j>=0 ; j-- )
+ {
+ if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )
+ {
+ aoLocal[i].splice( j, 1 );
+ }
+ }
+
+ /* Prep the applied array - it needs an element for each row */
+ aApplied.push( [] );
+ }
+
+ for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )
+ {
+ nLocalTr = aoLocal[i].nTr;
+
+ /* All cells are going to be replaced, so empty out the row */
+ if ( nLocalTr )
+ {
+ while( (n = nLocalTr.firstChild) )
+ {
+ nLocalTr.removeChild( n );
+ }
+ }
+
+ for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )
+ {
+ iRowspan = 1;
+ iColspan = 1;
+
+ /* Check to see if there is already a cell (row/colspan) covering our target
+ * insert point. If there is, then there is nothing to do.
+ */
+ if ( aApplied[i][j] === undefined )
+ {
+ nLocalTr.appendChild( aoLocal[i][j].cell );
+ aApplied[i][j] = 1;
+
+ /* Expand the cell to cover as many rows as needed */
+ while ( aoLocal[i+iRowspan] !== undefined &&
+ aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )
+ {
+ aApplied[i+iRowspan][j] = 1;
+ iRowspan++;
+ }
+
+ /* Expand the cell to cover as many columns as needed */
+ while ( aoLocal[i][j+iColspan] !== undefined &&
+ aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )
+ {
+ /* Must update the applied array over the rows for the columns */
+ for ( k=0 ; k<iRowspan ; k++ )
+ {
+ aApplied[i+k][j+iColspan] = 1;
+ }
+ iColspan++;
+ }
+
+ /* Do the actual expansion in the DOM */
+ $(aoLocal[i][j].cell)
+ .attr('rowspan', iRowspan)
+ .attr('colspan', iColspan);
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Insert the required TR nodes into the table for display
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnDraw( oSettings )
+ {
+ /* Provide a pre-callback function which can be used to cancel the draw is false is returned */
+ var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
+ if ( $.inArray( false, aPreDraw ) !== -1 )
+ {
+ _fnProcessingDisplay( oSettings, false );
+ return;
+ }
+
+ var i, iLen, n;
+ var anRows = [];
+ var iRowCount = 0;
+ var asStripeClasses = oSettings.asStripeClasses;
+ var iStripes = asStripeClasses.length;
+ var iOpenRows = oSettings.aoOpenRows.length;
+ var oLang = oSettings.oLanguage;
+ var iInitDisplayStart = oSettings.iInitDisplayStart;
+ var bServerSide = _fnDataSource( oSettings ) == 'ssp';
+ var aiDisplay = oSettings.aiDisplay;
+
+ oSettings.bDrawing = true;
+
+ /* Check and see if we have an initial draw position from state saving */
+ if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )
+ {
+ oSettings._iDisplayStart = bServerSide ?
+ iInitDisplayStart :
+ iInitDisplayStart >= oSettings.fnRecordsDisplay() ?
+ 0 :
+ iInitDisplayStart;
+
+ oSettings.iInitDisplayStart = -1;
+ }
+
+ var iDisplayStart = oSettings._iDisplayStart;
+ var iDisplayEnd = oSettings.fnDisplayEnd();
+
+ /* Server-side processing draw intercept */
+ if ( oSettings.bDeferLoading )
+ {
+ oSettings.bDeferLoading = false;
+ oSettings.iDraw++;
+ _fnProcessingDisplay( oSettings, false );
+ }
+ else if ( !bServerSide )
+ {
+ oSettings.iDraw++;
+ }
+ else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )
+ {
+ return;
+ }
+
+ if ( aiDisplay.length !== 0 )
+ {
+ var iStart = bServerSide ? 0 : iDisplayStart;
+ var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;
+
+ for ( var j=iStart ; j<iEnd ; j++ )
+ {
+ var iDataIndex = aiDisplay[j];
+ var aoData = oSettings.aoData[ iDataIndex ];
+ if ( aoData.nTr === null )
+ {
+ _fnCreateTr( oSettings, iDataIndex );
+ }
+
+ var nRow = aoData.nTr;
+
+ /* Remove the old striping classes and then add the new one */
+ if ( iStripes !== 0 )
+ {
+ var sStripe = asStripeClasses[ iRowCount % iStripes ];
+ if ( aoData._sRowStripe != sStripe )
+ {
+ $(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );
+ aoData._sRowStripe = sStripe;
+ }
+ }
+
+ // Row callback functions - might want to manipulate the row
+ // iRowCount and j are not currently documented. Are they at all
+ // useful?
+ _fnCallbackFire( oSettings, 'aoRowCallback', null,
+ [nRow, aoData._aData, iRowCount, j] );
+
+ anRows.push( nRow );
+ iRowCount++;
+ }
+ }
+ else
+ {
+ /* Table is empty - create a row with an empty message in it */
+ var sZero = oLang.sZeroRecords;
+ if ( oSettings.iDraw == 1 && _fnDataSource( oSettings ) == 'ajax' )
+ {
+ sZero = oLang.sLoadingRecords;
+ }
+ else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )
+ {
+ sZero = oLang.sEmptyTable;
+ }
+
+ anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )
+ .append( $('<td />', {
+ 'valign': 'top',
+ 'colSpan': _fnVisbleColumns( oSettings ),
+ 'class': oSettings.oClasses.sRowEmpty
+ } ).html( sZero ) )[0];
+ }
+
+ /* Header and footer callbacks */
+ _fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],
+ _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
+
+ _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
+ _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
+
+ var body = $(oSettings.nTBody);
+
+ body.children().detach();
+ body.append( $(anRows) );
+
+ /* Call all required callback functions for the end of a draw */
+ _fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );
+
+ /* Draw is complete, sorting and filtering must be as well */
+ oSettings.bSorted = false;
+ oSettings.bFiltered = false;
+ oSettings.bDrawing = false;
+ }
+
+
+ /**
+ * Redraw the table - taking account of the various features which are enabled
+ * @param {object} oSettings dataTables settings object
+ * @param {boolean} [holdPosition] Keep the current paging position. By default
+ * the paging is reset to the first page
+ * @memberof DataTable#oApi
+ */
+ function _fnReDraw( settings, holdPosition )
+ {
+ var
+ features = settings.oFeatures,
+ sort = features.bSort,
+ filter = features.bFilter;
+
+ if ( sort ) {
+ _fnSort( settings );
+ }
+
+ if ( filter ) {
+ _fnFilterComplete( settings, settings.oPreviousSearch );
+ }
+ else {
+ // No filtering, so we want to just use the display master
+ settings.aiDisplay = settings.aiDisplayMaster.slice();
+ }
+
+ if ( holdPosition !== true ) {
+ settings._iDisplayStart = 0;
+ }
+
+ // Let any modules know about the draw hold position state (used by
+ // scrolling internally)
+ settings._drawHold = holdPosition;
+
+ _fnDraw( settings );
+
+ settings._drawHold = false;
+ }
+
+
+ /**
+ * Add the options to the page HTML for the table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnAddOptionsHtml ( oSettings )
+ {
+ var classes = oSettings.oClasses;
+ var table = $(oSettings.nTable);
+ var holding = $('<div/>').insertBefore( table ); // Holding element for speed
+ var features = oSettings.oFeatures;
+
+ // All DataTables are wrapped in a div
+ var insert = $('<div/>', {
+ id: oSettings.sTableId+'_wrapper',
+ 'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)
+ } );
+
+ oSettings.nHolding = holding[0];
+ oSettings.nTableWrapper = insert[0];
+ oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
+
+ /* Loop over the user set positioning and place the elements as needed */
+ var aDom = oSettings.sDom.split('');
+ var featureNode, cOption, nNewNode, cNext, sAttr, j;
+ for ( var i=0 ; i<aDom.length ; i++ )
+ {
+ featureNode = null;
+ cOption = aDom[i];
+
+ if ( cOption == '<' )
+ {
+ /* New container div */
+ nNewNode = $('<div/>')[0];
+
+ /* Check to see if we should append an id and/or a class name to the container */
+ cNext = aDom[i+1];
+ if ( cNext == "'" || cNext == '"' )
+ {
+ sAttr = "";
+ j = 2;
+ while ( aDom[i+j] != cNext )
+ {
+ sAttr += aDom[i+j];
+ j++;
+ }
+
+ /* Replace jQuery UI constants @todo depreciated */
+ if ( sAttr == "H" )
+ {
+ sAttr = classes.sJUIHeader;
+ }
+ else if ( sAttr == "F" )
+ {
+ sAttr = classes.sJUIFooter;
+ }
+
+ /* The attribute can be in the format of "#id.class", "#id" or "class" This logic
+ * breaks the string into parts and applies them as needed
+ */
+ if ( sAttr.indexOf('.') != -1 )
+ {
+ var aSplit = sAttr.split('.');
+ nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);
+ nNewNode.className = aSplit[1];
+ }
+ else if ( sAttr.charAt(0) == "#" )
+ {
+ nNewNode.id = sAttr.substr(1, sAttr.length-1);
+ }
+ else
+ {
+ nNewNode.className = sAttr;
+ }
+
+ i += j; /* Move along the position array */
+ }
+
+ insert.append( nNewNode );
+ insert = $(nNewNode);
+ }
+ else if ( cOption == '>' )
+ {
+ /* End container div */
+ insert = insert.parent();
+ }
+ // @todo Move options into their own plugins?
+ else if ( cOption == 'l' && features.bPaginate && features.bLengthChange )
+ {
+ /* Length */
+ featureNode = _fnFeatureHtmlLength( oSettings );
+ }
+ else if ( cOption == 'f' && features.bFilter )
+ {
+ /* Filter */
+ featureNode = _fnFeatureHtmlFilter( oSettings );
+ }
+ else if ( cOption == 'r' && features.bProcessing )
+ {
+ /* pRocessing */
+ featureNode = _fnFeatureHtmlProcessing( oSettings );
+ }
+ else if ( cOption == 't' )
+ {
+ /* Table */
+ featureNode = _fnFeatureHtmlTable( oSettings );
+ }
+ else if ( cOption == 'i' && features.bInfo )
+ {
+ /* Info */
+ featureNode = _fnFeatureHtmlInfo( oSettings );
+ }
+ else if ( cOption == 'p' && features.bPaginate )
+ {
+ /* Pagination */
+ featureNode = _fnFeatureHtmlPaginate( oSettings );
+ }
+ else if ( DataTable.ext.feature.length !== 0 )
+ {
+ /* Plug-in features */
+ var aoFeatures = DataTable.ext.feature;
+ for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )
+ {
+ if ( cOption == aoFeatures[k].cFeature )
+ {
+ featureNode = aoFeatures[k].fnInit( oSettings );
+ break;
+ }
+ }
+ }
+
+ /* Add to the 2D features array */
+ if ( featureNode )
+ {
+ var aanFeatures = oSettings.aanFeatures;
+
+ if ( ! aanFeatures[cOption] )
+ {
+ aanFeatures[cOption] = [];
+ }
+
+ aanFeatures[cOption].push( featureNode );
+ insert.append( featureNode );
+ }
+ }
+
+ /* Built our DOM structure - replace the holding div with what we want */
+ holding.replaceWith( insert );
+ }
+
+
+ /**
+ * Use the DOM source to create up an array of header cells. The idea here is to
+ * create a layout grid (array) of rows x columns, which contains a reference
+ * to the cell that that point in the grid (regardless of col/rowspan), such that
+ * any column / row could be removed and the new grid constructed
+ * @param array {object} aLayout Array to store the calculated layout in
+ * @param {node} nThead The header/footer element for the table
+ * @memberof DataTable#oApi
+ */
+ function _fnDetectHeader ( aLayout, nThead )
+ {
+ var nTrs = $(nThead).children('tr');
+ var nTr, nCell;
+ var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;
+ var bUnique;
+ var fnShiftCol = function ( a, i, j ) {
+ var k = a[i];
+ while ( k[j] ) {
+ j++;
+ }
+ return j;
+ };
+
+ aLayout.splice( 0, aLayout.length );
+
+ /* We know how many rows there are in the layout - so prep it */
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+ {
+ aLayout.push( [] );
+ }
+
+ /* Calculate a layout array */
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+ {
+ nTr = nTrs[i];
+ iColumn = 0;
+
+ /* For every cell in the row... */
+ nCell = nTr.firstChild;
+ while ( nCell ) {
+ if ( nCell.nodeName.toUpperCase() == "TD" ||
+ nCell.nodeName.toUpperCase() == "TH" )
+ {
+ /* Get the col and rowspan attributes from the DOM and sanitise them */
+ iColspan = nCell.getAttribute('colspan') * 1;
+ iRowspan = nCell.getAttribute('rowspan') * 1;
+ iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;
+ iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;
+
+ /* There might be colspan cells already in this row, so shift our target
+ * accordingly
+ */
+ iColShifted = fnShiftCol( aLayout, i, iColumn );
+
+ /* Cache calculation for unique columns */
+ bUnique = iColspan === 1 ? true : false;
+
+ /* If there is col / rowspan, copy the information into the layout grid */
+ for ( l=0 ; l<iColspan ; l++ )
+ {
+ for ( k=0 ; k<iRowspan ; k++ )
+ {
+ aLayout[i+k][iColShifted+l] = {
+ "cell": nCell,
+ "unique": bUnique
+ };
+ aLayout[i+k].nTr = nTr;
+ }
+ }
+ }
+ nCell = nCell.nextSibling;
+ }
+ }
+ }
+
+
+ /**
+ * Get an array of unique th elements, one for each column
+ * @param {object} oSettings dataTables settings object
+ * @param {node} nHeader automatically detect the layout from this node - optional
+ * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
+ * @returns array {node} aReturn list of unique th's
+ * @memberof DataTable#oApi
+ */
+ function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
+ {
+ var aReturn = [];
+ if ( !aLayout )
+ {
+ aLayout = oSettings.aoHeader;
+ if ( nHeader )
+ {
+ aLayout = [];
+ _fnDetectHeader( aLayout, nHeader );
+ }
+ }
+
+ for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
+ {
+ for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
+ {
+ if ( aLayout[i][j].unique &&
+ (!aReturn[j] || !oSettings.bSortCellsTop) )
+ {
+ aReturn[j] = aLayout[i][j].cell;
+ }
+ }
+ }
+
+ return aReturn;
+ }
+
+ /**
+ * Create an Ajax call based on the table's settings, taking into account that
+ * parameters can have multiple forms, and backwards compatibility.
+ *
+ * @param {object} oSettings dataTables settings object
+ * @param {array} data Data to send to the server, required by
+ * DataTables - may be augmented by developer callbacks
+ * @param {function} fn Callback function to run when data is obtained
+ */
+ function _fnBuildAjax( oSettings, data, fn )
+ {
+ // Compatibility with 1.9-, allow fnServerData and event to manipulate
+ _fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );
+
+ // Convert to object based for 1.10+ if using the old array scheme which can
+ // come from server-side processing or serverParams
+ if ( data && $.isArray(data) ) {
+ var tmp = {};
+ var rbracket = /(.*?)\[\]$/;
+
+ $.each( data, function (key, val) {
+ var match = val.name.match(rbracket);
+
+ if ( match ) {
+ // Support for arrays
+ var name = match[0];
+
+ if ( ! tmp[ name ] ) {
+ tmp[ name ] = [];
+ }
+ tmp[ name ].push( val.value );
+ }
+ else {
+ tmp[val.name] = val.value;
+ }
+ } );
+ data = tmp;
+ }
+
+ var ajaxData;
+ var ajax = oSettings.ajax;
+ var instance = oSettings.oInstance;
+ var callback = function ( json ) {
+ _fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] );
+ fn( json );
+ };
+
+ if ( $.isPlainObject( ajax ) && ajax.data )
+ {
+ ajaxData = ajax.data;
+
+ var newData = $.isFunction( ajaxData ) ?
+ ajaxData( data, oSettings ) : // fn can manipulate data or return
+ ajaxData; // an object object or array to merge
+
+ // If the function returned something, use that alone
+ data = $.isFunction( ajaxData ) && newData ?
+ newData :
+ $.extend( true, data, newData );
+
+ // Remove the data property as we've resolved it already and don't want
+ // jQuery to do it again (it is restored at the end of the function)
+ delete ajax.data;
+ }
+
+ var baseAjax = {
+ "data": data,
+ "success": function (json) {
+ var error = json.error || json.sError;
+ if ( error ) {
+ _fnLog( oSettings, 0, error );
+ }
+
+ oSettings.json = json;
+ callback( json );
+ },
+ "dataType": "json",
+ "cache": false,
+ "type": oSettings.sServerMethod,
+ "error": function (xhr, error, thrown) {
+ var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );
+
+ if ( $.inArray( true, ret ) === -1 ) {
+ if ( error == "parsererror" ) {
+ _fnLog( oSettings, 0, 'Invalid JSON response', 1 );
+ }
+ else if ( xhr.readyState === 4 ) {
+ _fnLog( oSettings, 0, 'Ajax error', 7 );
+ }
+ }
+
+ _fnProcessingDisplay( oSettings, false );
+ }
+ };
+
+ // Store the data submitted for the API
+ oSettings.oAjaxData = data;
+
+ // Allow plug-ins and external processes to modify the data
+ _fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );
+
+ if ( oSettings.fnServerData )
+ {
+ // DataTables 1.9- compatibility
+ oSettings.fnServerData.call( instance,
+ oSettings.sAjaxSource,
+ $.map( data, function (val, key) { // Need to convert back to 1.9 trad format
+ return { name: key, value: val };
+ } ),
+ callback,
+ oSettings
+ );
+ }
+ else if ( oSettings.sAjaxSource || typeof ajax === 'string' )
+ {
+ // DataTables 1.9- compatibility
+ oSettings.jqXHR = $.ajax( $.extend( baseAjax, {
+ url: ajax || oSettings.sAjaxSource
+ } ) );
+ }
+ else if ( $.isFunction( ajax ) )
+ {
+ // Is a function - let the caller define what needs to be done
+ oSettings.jqXHR = ajax.call( instance, data, callback, oSettings );
+ }
+ else
+ {
+ // Object to extend the base settings
+ oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );
+
+ // Restore for next time around
+ ajax.data = ajaxData;
+ }
+ }
+
+
+ /**
+ * Update the table using an Ajax call
+ * @param {object} settings dataTables settings object
+ * @returns {boolean} Block the table drawing or not
+ * @memberof DataTable#oApi
+ */
+ function _fnAjaxUpdate( settings )
+ {
+ if ( settings.bAjaxDataGet ) {
+ settings.iDraw++;
+ _fnProcessingDisplay( settings, true );
+
+ _fnBuildAjax(
+ settings,
+ _fnAjaxParameters( settings ),
+ function(json) {
+ _fnAjaxUpdateDraw( settings, json );
+ }
+ );
+
+ return false;
+ }
+ return true;
+ }
+
+
+ /**
+ * Build up the parameters in an object needed for a server-side processing
+ * request. Note that this is basically done twice, is different ways - a modern
+ * method which is used by default in DataTables 1.10 which uses objects and
+ * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if
+ * the sAjaxSource option is used in the initialisation, or the legacyAjax
+ * option is set.
+ * @param {object} oSettings dataTables settings object
+ * @returns {bool} block the table drawing or not
+ * @memberof DataTable#oApi
+ */
+ function _fnAjaxParameters( settings )
+ {
+ var
+ columns = settings.aoColumns,
+ columnCount = columns.length,
+ features = settings.oFeatures,
+ preSearch = settings.oPreviousSearch,
+ preColSearch = settings.aoPreSearchCols,
+ i, data = [], dataProp, column, columnSearch,
+ sort = _fnSortFlatten( settings ),
+ displayStart = settings._iDisplayStart,
+ displayLength = features.bPaginate !== false ?
+ settings._iDisplayLength :
+ -1;
+
+ var param = function ( name, value ) {
+ data.push( { 'name': name, 'value': value } );
+ };
+
+ // DataTables 1.9- compatible method
+ param( 'sEcho', settings.iDraw );
+ param( 'iColumns', columnCount );
+ param( 'sColumns', _pluck( columns, 'sName' ).join(',') );
+ param( 'iDisplayStart', displayStart );
+ param( 'iDisplayLength', displayLength );
+
+ // DataTables 1.10+ method
+ var d = {
+ draw: settings.iDraw,
+ columns: [],
+ order: [],
+ start: displayStart,
+ length: displayLength,
+ search: {
+ value: preSearch.sSearch,
+ regex: preSearch.bRegex
+ }
+ };
+
+ for ( i=0 ; i<columnCount ; i++ ) {
+ column = columns[i];
+ columnSearch = preColSearch[i];
+ dataProp = typeof column.mData=="function" ? 'function' : column.mData ;
+
+ d.columns.push( {
+ data: dataProp,
+ name: column.sName,
+ searchable: column.bSearchable,
+ orderable: column.bSortable,
+ search: {
+ value: columnSearch.sSearch,
+ regex: columnSearch.bRegex
+ }
+ } );
+
+ param( "mDataProp_"+i, dataProp );
+
+ if ( features.bFilter ) {
+ param( 'sSearch_'+i, columnSearch.sSearch );
+ param( 'bRegex_'+i, columnSearch.bRegex );
+ param( 'bSearchable_'+i, column.bSearchable );
+ }
+
+ if ( features.bSort ) {
+ param( 'bSortable_'+i, column.bSortable );
+ }
+ }
+
+ if ( features.bFilter ) {
+ param( 'sSearch', preSearch.sSearch );
+ param( 'bRegex', preSearch.bRegex );
+ }
+
+ if ( features.bSort ) {
+ $.each( sort, function ( i, val ) {
+ d.order.push( { column: val.col, dir: val.dir } );
+
+ param( 'iSortCol_'+i, val.col );
+ param( 'sSortDir_'+i, val.dir );
+ } );
+
+ param( 'iSortingCols', sort.length );
+ }
+
+ // If the legacy.ajax parameter is null, then we automatically decide which
+ // form to use, based on sAjaxSource
+ var legacy = DataTable.ext.legacy.ajax;
+ if ( legacy === null ) {
+ return settings.sAjaxSource ? data : d;
+ }
+
+ // Otherwise, if legacy has been specified then we use that to decide on the
+ // form
+ return legacy ? data : d;
+ }
+
+
+ /**
+ * Data the data from the server (nuking the old) and redraw the table
+ * @param {object} oSettings dataTables settings object
+ * @param {object} json json data return from the server.
+ * @param {string} json.sEcho Tracking flag for DataTables to match requests
+ * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering
+ * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering
+ * @param {array} json.aaData The data to display on this page
+ * @param {string} [json.sColumns] Column ordering (sName, comma separated)
+ * @memberof DataTable#oApi
+ */
+ function _fnAjaxUpdateDraw ( settings, json )
+ {
+ // v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.
+ // Support both
+ var compat = function ( old, modern ) {
+ return json[old] !== undefined ? json[old] : json[modern];
+ };
+
+ var data = _fnAjaxDataSrc( settings, json );
+ var draw = compat( 'sEcho', 'draw' );
+ var recordsTotal = compat( 'iTotalRecords', 'recordsTotal' );
+ var recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );
+
+ if ( draw ) {
+ // Protect against out of sequence returns
+ if ( draw*1 < settings.iDraw ) {
+ return;
+ }
+ settings.iDraw = draw * 1;
+ }
+
+ _fnClearTable( settings );
+ settings._iRecordsTotal = parseInt(recordsTotal, 10);
+ settings._iRecordsDisplay = parseInt(recordsFiltered, 10);
+
+ for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+ _fnAddData( settings, data[i] );
+ }
+ settings.aiDisplay = settings.aiDisplayMaster.slice();
+
+ settings.bAjaxDataGet = false;
+ _fnDraw( settings );
+
+ if ( ! settings._bInitComplete ) {
+ _fnInitComplete( settings, json );
+ }
+
+ settings.bAjaxDataGet = true;
+ _fnProcessingDisplay( settings, false );
+ }
+
+
+ /**
+ * Get the data from the JSON data source to use for drawing a table. Using
+ * `_fnGetObjectDataFn` allows the data to be sourced from a property of the
+ * source object, or from a processing function.
+ * @param {object} oSettings dataTables settings object
+ * @param {object} json Data source object / array from the server
+ * @return {array} Array of data to use
+ */
+ function _fnAjaxDataSrc ( oSettings, json )
+ {
+ var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?
+ oSettings.ajax.dataSrc :
+ oSettings.sAjaxDataProp; // Compatibility with 1.9-.
+
+ // Compatibility with 1.9-. In order to read from aaData, check if the
+ // default has been changed, if not, check for aaData
+ if ( dataSrc === 'data' ) {
+ return json.aaData || json[dataSrc];
+ }
+
+ return dataSrc !== "" ?
+ _fnGetObjectDataFn( dataSrc )( json ) :
+ json;
+ }
+
+ /**
+ * Generate the node required for filtering text
+ * @returns {node} Filter control element
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlFilter ( settings )
+ {
+ var classes = settings.oClasses;
+ var tableId = settings.sTableId;
+ var language = settings.oLanguage;
+ var previousSearch = settings.oPreviousSearch;
+ var features = settings.aanFeatures;
+ var input = '<input type="search" class="'+classes.sFilterInput+'"/>';
+
+ var str = language.sSearch;
+ str = str.match(/_INPUT_/) ?
+ str.replace('_INPUT_', input) :
+ str+input;
+
+ var filter = $('<div/>', {
+ 'id': ! features.f ? tableId+'_filter' : null,
+ 'class': classes.sFilter
+ } )
+ .append( $('<label/>' ).append( str ) );
+
+ var searchFn = function() {
+ /* Update all other filter input elements for the new display */
+ var n = features.f;
+ var val = !this.value ? "" : this.value; // mental IE8 fix :-(
+
+ /* Now do the filter */
+ if ( val != previousSearch.sSearch ) {
+ _fnFilterComplete( settings, {
+ "sSearch": val,
+ "bRegex": previousSearch.bRegex,
+ "bSmart": previousSearch.bSmart ,
+ "bCaseInsensitive": previousSearch.bCaseInsensitive
+ } );
+
+ // Need to redraw, without resorting
+ settings._iDisplayStart = 0;
+ _fnDraw( settings );
+ }
+ };
+
+ var searchDelay = settings.searchDelay !== null ?
+ settings.searchDelay :
+ _fnDataSource( settings ) === 'ssp' ?
+ 400 :
+ 0;
+
+ var jqFilter = $('input', filter)
+ .val( previousSearch.sSearch )
+ .attr( 'placeholder', language.sSearchPlaceholder )
+ .bind(
+ 'keyup.DT search.DT input.DT paste.DT cut.DT',
+ searchDelay ?
+ _fnThrottle( searchFn, searchDelay ) :
+ searchFn
+ )
+ .bind( 'keypress.DT', function(e) {
+ /* Prevent form submission */
+ if ( e.keyCode == 13 ) {
+ return false;
+ }
+ } )
+ .attr('aria-controls', tableId);
+
+ // Update the input elements whenever the table is filtered
+ $(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {
+ if ( settings === s ) {
+ // IE9 throws an 'unknown error' if document.activeElement is used
+ // inside an iframe or frame...
+ try {
+ if ( jqFilter[0] !== document.activeElement ) {
+ jqFilter.val( previousSearch.sSearch );
+ }
+ }
+ catch ( e ) {}
+ }
+ } );
+
+ return filter[0];
+ }
+
+
+ /**
+ * Filter the table using both the global filter and column based filtering
+ * @param {object} oSettings dataTables settings object
+ * @param {object} oSearch search information
+ * @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
+ * @memberof DataTable#oApi
+ */
+ function _fnFilterComplete ( oSettings, oInput, iForce )
+ {
+ var oPrevSearch = oSettings.oPreviousSearch;
+ var aoPrevSearch = oSettings.aoPreSearchCols;
+ var fnSaveFilter = function ( oFilter ) {
+ /* Save the filtering values */
+ oPrevSearch.sSearch = oFilter.sSearch;
+ oPrevSearch.bRegex = oFilter.bRegex;
+ oPrevSearch.bSmart = oFilter.bSmart;
+ oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
+ };
+ var fnRegex = function ( o ) {
+ // Backwards compatibility with the bEscapeRegex option
+ return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;
+ };
+
+ // Resolve any column types that are unknown due to addition or invalidation
+ // @todo As per sort - can this be moved into an event handler?
+ _fnColumnTypes( oSettings );
+
+ /* In server-side processing all filtering is done by the server, so no point hanging around here */
+ if ( _fnDataSource( oSettings ) != 'ssp' )
+ {
+ /* Global filter */
+ _fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );
+ fnSaveFilter( oInput );
+
+ /* Now do the individual column filter */
+ for ( var i=0 ; i<aoPrevSearch.length ; i++ )
+ {
+ _fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),
+ aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );
+ }
+
+ /* Custom filtering */
+ _fnFilterCustom( oSettings );
+ }
+ else
+ {
+ fnSaveFilter( oInput );
+ }
+
+ /* Tell the draw function we have been filtering */
+ oSettings.bFiltered = true;
+ _fnCallbackFire( oSettings, null, 'search', [oSettings] );
+ }
+
+
+ /**
+ * Apply custom filtering functions
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnFilterCustom( settings )
+ {
+ var filters = DataTable.ext.search;
+ var displayRows = settings.aiDisplay;
+ var row, rowIdx;
+
+ for ( var i=0, ien=filters.length ; i<ien ; i++ ) {
+ var rows = [];
+
+ // Loop over each row and see if it should be included
+ for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {
+ rowIdx = displayRows[ j ];
+ row = settings.aoData[ rowIdx ];
+
+ if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {
+ rows.push( rowIdx );
+ }
+ }
+
+ // So the array reference doesn't break set the results into the
+ // existing array
+ displayRows.length = 0;
+ displayRows.push.apply( displayRows, rows );
+ }
+ }
+
+
+ /**
+ * Filter the table on a per-column basis
+ * @param {object} oSettings dataTables settings object
+ * @param {string} sInput string to filter on
+ * @param {int} iColumn column to filter
+ * @param {bool} bRegex treat search string as a regular expression or not
+ * @param {bool} bSmart use smart filtering or not
+ * @param {bool} bCaseInsensitive Do case insenstive matching or not
+ * @memberof DataTable#oApi
+ */
+ function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )
+ {
+ if ( searchStr === '' ) {
+ return;
+ }
+
+ var data;
+ var display = settings.aiDisplay;
+ var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );
+
+ for ( var i=display.length-1 ; i>=0 ; i-- ) {
+ data = settings.aoData[ display[i] ]._aFilterData[ colIdx ];
+
+ if ( ! rpSearch.test( data ) ) {
+ display.splice( i, 1 );
+ }
+ }
+ }
+
+
+ /**
+ * Filter the data table based on user input and draw the table
+ * @param {object} settings dataTables settings object
+ * @param {string} input string to filter on
+ * @param {int} force optional - force a research of the master array (1) or not (undefined or 0)
+ * @param {bool} regex treat as a regular expression or not
+ * @param {bool} smart perform smart filtering or not
+ * @param {bool} caseInsensitive Do case insenstive matching or not
+ * @memberof DataTable#oApi
+ */
+ function _fnFilter( settings, input, force, regex, smart, caseInsensitive )
+ {
+ var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );
+ var prevSearch = settings.oPreviousSearch.sSearch;
+ var displayMaster = settings.aiDisplayMaster;
+ var display, invalidated, i;
+
+ // Need to take account of custom filtering functions - always filter
+ if ( DataTable.ext.search.length !== 0 ) {
+ force = true;
+ }
+
+ // Check if any of the rows were invalidated
+ invalidated = _fnFilterData( settings );
+
+ // If the input is blank - we just want the full data set
+ if ( input.length <= 0 ) {
+ settings.aiDisplay = displayMaster.slice();
+ }
+ else {
+ // New search - start from the master array
+ if ( invalidated ||
+ force ||
+ prevSearch.length > input.length ||
+ input.indexOf(prevSearch) !== 0 ||
+ settings.bSorted // On resort, the display master needs to be
+ // re-filtered since indexes will have changed
+ ) {
+ settings.aiDisplay = displayMaster.slice();
+ }
+
+ // Search the display array
+ display = settings.aiDisplay;
+
+ for ( i=display.length-1 ; i>=0 ; i-- ) {
+ if ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {
+ display.splice( i, 1 );
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Build a regular expression object suitable for searching a table
+ * @param {string} sSearch string to search for
+ * @param {bool} bRegex treat as a regular expression or not
+ * @param {bool} bSmart perform smart filtering or not
+ * @param {bool} bCaseInsensitive Do case insensitive matching or not
+ * @returns {RegExp} constructed object
+ * @memberof DataTable#oApi
+ */
+ function _fnFilterCreateSearch( search, regex, smart, caseInsensitive )
+ {
+ search = regex ?
+ search :
+ _fnEscapeRegex( search );
+
+ if ( smart ) {
+ /* For smart filtering we want to allow the search to work regardless of
+ * word order. We also want double quoted text to be preserved, so word
+ * order is important - a la google. So this is what we want to
+ * generate:
+ *
+ * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$
+ */
+ var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) {
+ if ( word.charAt(0) === '"' ) {
+ var m = word.match( /^"(.*)"$/ );
+ word = m ? m[1] : word;
+ }
+
+ return word.replace('"', '');
+ } );
+
+ search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';
+ }
+
+ return new RegExp( search, caseInsensitive ? 'i' : '' );
+ }
+
+
+ /**
+ * Escape a string such that it can be used in a regular expression
+ * @param {string} sVal string to escape
+ * @returns {string} escaped string
+ * @memberof DataTable#oApi
+ */
+ function _fnEscapeRegex ( sVal )
+ {
+ return sVal.replace( _re_escape_regex, '\\$1' );
+ }
+
+
+
+ var __filter_div = $('<div>')[0];
+ var __filter_div_textContent = __filter_div.textContent !== undefined;
+
+ // Update the filtering data for each row if needed (by invalidation or first run)
+ function _fnFilterData ( settings )
+ {
+ var columns = settings.aoColumns;
+ var column;
+ var i, j, ien, jen, filterData, cellData, row;
+ var fomatters = DataTable.ext.type.search;
+ var wasInvalidated = false;
+
+ for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+ row = settings.aoData[i];
+
+ if ( ! row._aFilterData ) {
+ filterData = [];
+
+ for ( j=0, jen=columns.length ; j<jen ; j++ ) {
+ column = columns[j];
+
+ if ( column.bSearchable ) {
+ cellData = _fnGetCellData( settings, i, j, 'filter' );
+
+ if ( fomatters[ column.sType ] ) {
+ cellData = fomatters[ column.sType ]( cellData );
+ }
+
+ // Search in DataTables 1.10 is string based. In 1.11 this
+ // should be altered to also allow strict type checking.
+ if ( cellData === null ) {
+ cellData = '';
+ }
+
+ if ( typeof cellData !== 'string' && cellData.toString ) {
+ cellData = cellData.toString();
+ }
+ }
+ else {
+ cellData = '';
+ }
+
+ // If it looks like there is an HTML entity in the string,
+ // attempt to decode it so sorting works as expected. Note that
+ // we could use a single line of jQuery to do this, but the DOM
+ // method used here is much faster http://jsperf.com/html-decode
+ if ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {
+ __filter_div.innerHTML = cellData;
+ cellData = __filter_div_textContent ?
+ __filter_div.textContent :
+ __filter_div.innerText;
+ }
+
+ if ( cellData.replace ) {
+ cellData = cellData.replace(/[\r\n]/g, '');
+ }
+
+ filterData.push( cellData );
+ }
+
+ row._aFilterData = filterData;
+ row._sFilterRow = filterData.join(' ');
+ wasInvalidated = true;
+ }
+ }
+
+ return wasInvalidated;
+ }
+
+
+ /**
+ * Convert from the internal Hungarian notation to camelCase for external
+ * interaction
+ * @param {object} obj Object to convert
+ * @returns {object} Inverted object
+ * @memberof DataTable#oApi
+ */
+ function _fnSearchToCamel ( obj )
+ {
+ return {
+ search: obj.sSearch,
+ smart: obj.bSmart,
+ regex: obj.bRegex,
+ caseInsensitive: obj.bCaseInsensitive
+ };
+ }
+
+
+
+ /**
+ * Convert from camelCase notation to the internal Hungarian. We could use the
+ * Hungarian convert function here, but this is cleaner
+ * @param {object} obj Object to convert
+ * @returns {object} Inverted object
+ * @memberof DataTable#oApi
+ */
+ function _fnSearchToHung ( obj )
+ {
+ return {
+ sSearch: obj.search,
+ bSmart: obj.smart,
+ bRegex: obj.regex,
+ bCaseInsensitive: obj.caseInsensitive
+ };
+ }
+
+ /**
+ * Generate the node required for the info display
+ * @param {object} oSettings dataTables settings object
+ * @returns {node} Information element
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlInfo ( settings )
+ {
+ var
+ tid = settings.sTableId,
+ nodes = settings.aanFeatures.i,
+ n = $('<div/>', {
+ 'class': settings.oClasses.sInfo,
+ 'id': ! nodes ? tid+'_info' : null
+ } );
+
+ if ( ! nodes ) {
+ // Update display on each draw
+ settings.aoDrawCallback.push( {
+ "fn": _fnUpdateInfo,
+ "sName": "information"
+ } );
+
+ n
+ .attr( 'role', 'status' )
+ .attr( 'aria-live', 'polite' );
+
+ // Table is described by our info div
+ $(settings.nTable).attr( 'aria-describedby', tid+'_info' );
+ }
+
+ return n[0];
+ }
+
+
+ /**
+ * Update the information elements in the display
+ * @param {object} settings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnUpdateInfo ( settings )
+ {
+ /* Show information about the table */
+ var nodes = settings.aanFeatures.i;
+ if ( nodes.length === 0 ) {
+ return;
+ }
+
+ var
+ lang = settings.oLanguage,
+ start = settings._iDisplayStart+1,
+ end = settings.fnDisplayEnd(),
+ max = settings.fnRecordsTotal(),
+ total = settings.fnRecordsDisplay(),
+ out = total ?
+ lang.sInfo :
+ lang.sInfoEmpty;
+
+ if ( total !== max ) {
+ /* Record set after filtering */
+ out += ' ' + lang.sInfoFiltered;
+ }
+
+ // Convert the macros
+ out += lang.sInfoPostFix;
+ out = _fnInfoMacros( settings, out );
+
+ var callback = lang.fnInfoCallback;
+ if ( callback !== null ) {
+ out = callback.call( settings.oInstance,
+ settings, start, end, max, total, out
+ );
+ }
+
+ $(nodes).html( out );
+ }
+
+
+ function _fnInfoMacros ( settings, str )
+ {
+ // When infinite scrolling, we are always starting at 1. _iDisplayStart is used only
+ // internally
+ var
+ formatter = settings.fnFormatNumber,
+ start = settings._iDisplayStart+1,
+ len = settings._iDisplayLength,
+ vis = settings.fnRecordsDisplay(),
+ all = len === -1;
+
+ return str.
+ replace(/_START_/g, formatter.call( settings, start ) ).
+ replace(/_END_/g, formatter.call( settings, settings.fnDisplayEnd() ) ).
+ replace(/_MAX_/g, formatter.call( settings, settings.fnRecordsTotal() ) ).
+ replace(/_TOTAL_/g, formatter.call( settings, vis ) ).
+ replace(/_PAGE_/g, formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).
+ replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );
+ }
+
+
+
+ /**
+ * Draw the table for the first time, adding all required features
+ * @param {object} settings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnInitialise ( settings )
+ {
+ var i, iLen, iAjaxStart=settings.iInitDisplayStart;
+ var columns = settings.aoColumns, column;
+ var features = settings.oFeatures;
+
+ /* Ensure that the table data is fully initialised */
+ if ( ! settings.bInitialised ) {
+ setTimeout( function(){ _fnInitialise( settings ); }, 200 );
+ return;
+ }
+
+ /* Show the display HTML options */
+ _fnAddOptionsHtml( settings );
+
+ /* Build and draw the header / footer for the table */
+ _fnBuildHead( settings );
+ _fnDrawHead( settings, settings.aoHeader );
+ _fnDrawHead( settings, settings.aoFooter );
+
+ /* Okay to show that something is going on now */
+ _fnProcessingDisplay( settings, true );
+
+ /* Calculate sizes for columns */
+ if ( features.bAutoWidth ) {
+ _fnCalculateColumnWidths( settings );
+ }
+
+ for ( i=0, iLen=columns.length ; i<iLen ; i++ ) {
+ column = columns[i];
+
+ if ( column.sWidth ) {
+ column.nTh.style.width = _fnStringToCss( column.sWidth );
+ }
+ }
+
+ // If there is default sorting required - let's do it. The sort function
+ // will do the drawing for us. Otherwise we draw the table regardless of the
+ // Ajax source - this allows the table to look initialised for Ajax sourcing
+ // data (show 'loading' message possibly)
+ _fnReDraw( settings );
+
+ // Server-side processing init complete is done by _fnAjaxUpdateDraw
+ var dataSrc = _fnDataSource( settings );
+ if ( dataSrc != 'ssp' ) {
+ // if there is an ajax source load the data
+ if ( dataSrc == 'ajax' ) {
+ _fnBuildAjax( settings, [], function(json) {
+ var aData = _fnAjaxDataSrc( settings, json );
+
+ // Got the data - add it to the table
+ for ( i=0 ; i<aData.length ; i++ ) {
+ _fnAddData( settings, aData[i] );
+ }
+
+ // Reset the init display for cookie saving. We've already done
+ // a filter, and therefore cleared it before. So we need to make
+ // it appear 'fresh'
+ settings.iInitDisplayStart = iAjaxStart;
+
+ _fnReDraw( settings );
+
+ _fnProcessingDisplay( settings, false );
+ _fnInitComplete( settings, json );
+ }, settings );
+ }
+ else {
+ _fnProcessingDisplay( settings, false );
+ _fnInitComplete( settings );
+ }
+ }
+ }
+
+
+ /**
+ * Draw the table for the first time, adding all required features
+ * @param {object} oSettings dataTables settings object
+ * @param {object} [json] JSON from the server that completed the table, if using Ajax source
+ * with client-side processing (optional)
+ * @memberof DataTable#oApi
+ */
+ function _fnInitComplete ( settings, json )
+ {
+ settings._bInitComplete = true;
+
+ // On an Ajax load we now have data and therefore want to apply the column
+ // sizing
+ if ( json ) {
+ _fnAdjustColumnSizing( settings );
+ }
+
+ _fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );
+ }
+
+
+ function _fnLengthChange ( settings, val )
+ {
+ var len = parseInt( val, 10 );
+ settings._iDisplayLength = len;
+
+ _fnLengthOverflow( settings );
+
+ // Fire length change event
+ _fnCallbackFire( settings, null, 'length', [settings, len] );
+ }
+
+
+ /**
+ * Generate the node required for user display length changing
+ * @param {object} settings dataTables settings object
+ * @returns {node} Display length feature node
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlLength ( settings )
+ {
+ var
+ classes = settings.oClasses,
+ tableId = settings.sTableId,
+ menu = settings.aLengthMenu,
+ d2 = $.isArray( menu[0] ),
+ lengths = d2 ? menu[0] : menu,
+ language = d2 ? menu[1] : menu;
+
+ var select = $('<select/>', {
+ 'name': tableId+'_length',
+ 'aria-controls': tableId,
+ 'class': classes.sLengthSelect
+ } );
+
+ for ( var i=0, ien=lengths.length ; i<ien ; i++ ) {
+ select[0][ i ] = new Option( language[i], lengths[i] );
+ }
+
+ var div = $('<div><label/></div>').addClass( classes.sLength );
+ if ( ! settings.aanFeatures.l ) {
+ div[0].id = tableId+'_length';
+ }
+
+ div.children().append(
+ settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )
+ );
+
+ // Can't use `select` variable as user might provide their own and the
+ // reference is broken by the use of outerHTML
+ $('select', div)
+ .val( settings._iDisplayLength )
+ .bind( 'change.DT', function(e) {
+ _fnLengthChange( settings, $(this).val() );
+ _fnDraw( settings );
+ } );
+
+ // Update node value whenever anything changes the table's length
+ $(settings.nTable).bind( 'length.dt.DT', function (e, s, len) {
+ if ( settings === s ) {
+ $('select', div).val( len );
+ }
+ } );
+
+ return div[0];
+ }
+
+
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Note that most of the paging logic is done in
+ * DataTable.ext.pager
+ */
+
+ /**
+ * Generate the node required for default pagination
+ * @param {object} oSettings dataTables settings object
+ * @returns {node} Pagination feature node
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlPaginate ( settings )
+ {
+ var
+ type = settings.sPaginationType,
+ plugin = DataTable.ext.pager[ type ],
+ modern = typeof plugin === 'function',
+ redraw = function( settings ) {
+ _fnDraw( settings );
+ },
+ node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],
+ features = settings.aanFeatures;
+
+ if ( ! modern ) {
+ plugin.fnInit( settings, node, redraw );
+ }
+
+ /* Add a draw callback for the pagination on first instance, to update the paging display */
+ if ( ! features.p )
+ {
+ node.id = settings.sTableId+'_paginate';
+
+ settings.aoDrawCallback.push( {
+ "fn": function( settings ) {
+ if ( modern ) {
+ var
+ start = settings._iDisplayStart,
+ len = settings._iDisplayLength,
+ visRecords = settings.fnRecordsDisplay(),
+ all = len === -1,
+ page = all ? 0 : Math.ceil( start / len ),
+ pages = all ? 1 : Math.ceil( visRecords / len ),
+ buttons = plugin(page, pages),
+ i, ien;
+
+ for ( i=0, ien=features.p.length ; i<ien ; i++ ) {
+ _fnRenderer( settings, 'pageButton' )(
+ settings, features.p[i], i, buttons, page, pages
+ );
+ }
+ }
+ else {
+ plugin.fnUpdate( settings, redraw );
+ }
+ },
+ "sName": "pagination"
+ } );
+ }
+
+ return node;
+ }
+
+
+ /**
+ * Alter the display settings to change the page
+ * @param {object} settings DataTables settings object
+ * @param {string|int} action Paging action to take: "first", "previous",
+ * "next" or "last" or page number to jump to (integer)
+ * @param [bool] redraw Automatically draw the update or not
+ * @returns {bool} true page has changed, false - no change
+ * @memberof DataTable#oApi
+ */
+ function _fnPageChange ( settings, action, redraw )
+ {
+ var
+ start = settings._iDisplayStart,
+ len = settings._iDisplayLength,
+ records = settings.fnRecordsDisplay();
+
+ if ( records === 0 || len === -1 )
+ {
+ start = 0;
+ }
+ else if ( typeof action === "number" )
+ {
+ start = action * len;
+
+ if ( start > records )
+ {
+ start = 0;
+ }
+ }
+ else if ( action == "first" )
+ {
+ start = 0;
+ }
+ else if ( action == "previous" )
+ {
+ start = len >= 0 ?
+ start - len :
+ 0;
+
+ if ( start < 0 )
+ {
+ start = 0;
+ }
+ }
+ else if ( action == "next" )
+ {
+ if ( start + len < records )
+ {
+ start += len;
+ }
+ }
+ else if ( action == "last" )
+ {
+ start = Math.floor( (records-1) / len) * len;
+ }
+ else
+ {
+ _fnLog( settings, 0, "Unknown paging action: "+action, 5 );
+ }
+
+ var changed = settings._iDisplayStart !== start;
+ settings._iDisplayStart = start;
+
+ if ( changed ) {
+ _fnCallbackFire( settings, null, 'page', [settings] );
+
+ if ( redraw ) {
+ _fnDraw( settings );
+ }
+ }
+
+ return changed;
+ }
+
+
+
+ /**
+ * Generate the node required for the processing node
+ * @param {object} settings dataTables settings object
+ * @returns {node} Processing element
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlProcessing ( settings )
+ {
+ return $('<div/>', {
+ 'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,
+ 'class': settings.oClasses.sProcessing
+ } )
+ .html( settings.oLanguage.sProcessing )
+ .insertBefore( settings.nTable )[0];
+ }
+
+
+ /**
+ * Display or hide the processing indicator
+ * @param {object} settings dataTables settings object
+ * @param {bool} show Show the processing indicator (true) or not (false)
+ * @memberof DataTable#oApi
+ */
+ function _fnProcessingDisplay ( settings, show )
+ {
+ if ( settings.oFeatures.bProcessing ) {
+ $(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );
+ }
+
+ _fnCallbackFire( settings, null, 'processing', [settings, show] );
+ }
+
+ /**
+ * Add any control elements for the table - specifically scrolling
+ * @param {object} settings dataTables settings object
+ * @returns {node} Node to add to the DOM
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlTable ( settings )
+ {
+ var table = $(settings.nTable);
+
+ // Add the ARIA grid role to the table
+ table.attr( 'role', 'grid' );
+
+ // Scrolling from here on in
+ var scroll = settings.oScroll;
+
+ if ( scroll.sX === '' && scroll.sY === '' ) {
+ return settings.nTable;
+ }
+
+ var scrollX = scroll.sX;
+ var scrollY = scroll.sY;
+ var classes = settings.oClasses;
+ var caption = table.children('caption');
+ var captionSide = caption.length ? caption[0]._captionSide : null;
+ var headerClone = $( table[0].cloneNode(false) );
+ var footerClone = $( table[0].cloneNode(false) );
+ var footer = table.children('tfoot');
+ var _div = '<div/>';
+ var size = function ( s ) {
+ return !s ? null : _fnStringToCss( s );
+ };
+
+ // This is fairly messy, but with x scrolling enabled, if the table has a
+ // width attribute, regardless of any width applied using the column width
+ // options, the browser will shrink or grow the table as needed to fit into
+ // that 100%. That would make the width options useless. So we remove it.
+ // This is okay, under the assumption that width:100% is applied to the
+ // table in CSS (it is in the default stylesheet) which will set the table
+ // width as appropriate (the attribute and css behave differently...)
+ if ( scroll.sX && table.attr('width') === '100%' ) {
+ table.removeAttr('width');
+ }
+
+ if ( ! footer.length ) {
+ footer = null;
+ }
+
+ /*
+ * The HTML structure that we want to generate in this function is:
+ * div - scroller
+ * div - scroll head
+ * div - scroll head inner
+ * table - scroll head table
+ * thead - thead
+ * div - scroll body
+ * table - table (master table)
+ * thead - thead clone for sizing
+ * tbody - tbody
+ * div - scroll foot
+ * div - scroll foot inner
+ * table - scroll foot table
+ * tfoot - tfoot
+ */
+ var scroller = $( _div, { 'class': classes.sScrollWrapper } )
+ .append(
+ $(_div, { 'class': classes.sScrollHead } )
+ .css( {
+ overflow: 'hidden',
+ position: 'relative',
+ border: 0,
+ width: scrollX ? size(scrollX) : '100%'
+ } )
+ .append(
+ $(_div, { 'class': classes.sScrollHeadInner } )
+ .css( {
+ 'box-sizing': 'content-box',
+ width: scroll.sXInner || '100%'
+ } )
+ .append(
+ headerClone
+ .removeAttr('id')
+ .css( 'margin-left', 0 )
+ .append( captionSide === 'top' ? caption : null )
+ .append(
+ table.children('thead')
+ )
+ )
+ )
+ )
+ .append(
+ $(_div, { 'class': classes.sScrollBody } )
+ .css( {
+ overflow: 'auto',
+ height: size( scrollY ),
+ width: size( scrollX )
+ } )
+ .append( table )
+ );
+
+ if ( footer ) {
+ scroller.append(
+ $(_div, { 'class': classes.sScrollFoot } )
+ .css( {
+ overflow: 'hidden',
+ border: 0,
+ width: scrollX ? size(scrollX) : '100%'
+ } )
+ .append(
+ $(_div, { 'class': classes.sScrollFootInner } )
+ .append(
+ footerClone
+ .removeAttr('id')
+ .css( 'margin-left', 0 )
+ .append( captionSide === 'bottom' ? caption : null )
+ .append(
+ table.children('tfoot')
+ )
+ )
+ )
+ );
+ }
+
+ var children = scroller.children();
+ var scrollHead = children[0];
+ var scrollBody = children[1];
+ var scrollFoot = footer ? children[2] : null;
+
+ // When the body is scrolled, then we also want to scroll the headers
+ if ( scrollX ) {
+ $(scrollBody).on( 'scroll.DT', function (e) {
+ var scrollLeft = this.scrollLeft;
+
+ scrollHead.scrollLeft = scrollLeft;
+
+ if ( footer ) {
+ scrollFoot.scrollLeft = scrollLeft;
+ }
+ } );
+ }
+
+ settings.nScrollHead = scrollHead;
+ settings.nScrollBody = scrollBody;
+ settings.nScrollFoot = scrollFoot;
+
+ // On redraw - align columns
+ settings.aoDrawCallback.push( {
+ "fn": _fnScrollDraw,
+ "sName": "scrolling"
+ } );
+
+ return scroller[0];
+ }
+
+
+
+ /**
+ * Update the header, footer and body tables for resizing - i.e. column
+ * alignment.
+ *
+ * Welcome to the most horrible function DataTables. The process that this
+ * function follows is basically:
+ * 1. Re-create the table inside the scrolling div
+ * 2. Take live measurements from the DOM
+ * 3. Apply the measurements to align the columns
+ * 4. Clean up
+ *
+ * @param {object} settings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnScrollDraw ( settings )
+ {
+ // Given that this is such a monster function, a lot of variables are use
+ // to try and keep the minimised size as small as possible
+ var
+ scroll = settings.oScroll,
+ scrollX = scroll.sX,
+ scrollXInner = scroll.sXInner,
+ scrollY = scroll.sY,
+ barWidth = scroll.iBarWidth,
+ divHeader = $(settings.nScrollHead),
+ divHeaderStyle = divHeader[0].style,
+ divHeaderInner = divHeader.children('div'),
+ divHeaderInnerStyle = divHeaderInner[0].style,
+ divHeaderTable = divHeaderInner.children('table'),
+ divBodyEl = settings.nScrollBody,
+ divBody = $(divBodyEl),
+ divBodyStyle = divBodyEl.style,
+ divFooter = $(settings.nScrollFoot),
+ divFooterInner = divFooter.children('div'),
+ divFooterTable = divFooterInner.children('table'),
+ header = $(settings.nTHead),
+ table = $(settings.nTable),
+ tableEl = table[0],
+ tableStyle = tableEl.style,
+ footer = settings.nTFoot ? $(settings.nTFoot) : null,
+ browser = settings.oBrowser,
+ ie67 = browser.bScrollOversize,
+ headerTrgEls, footerTrgEls,
+ headerSrcEls, footerSrcEls,
+ headerCopy, footerCopy,
+ headerWidths=[], footerWidths=[],
+ headerContent=[],
+ idx, correction, sanityWidth,
+ zeroOut = function(nSizer) {
+ var style = nSizer.style;
+ style.paddingTop = "0";
+ style.paddingBottom = "0";
+ style.borderTopWidth = "0";
+ style.borderBottomWidth = "0";
+ style.height = 0;
+ };
+
+ /*
+ * 1. Re-create the table inside the scrolling div
+ */
+
+ // Remove the old minimised thead and tfoot elements in the inner table
+ table.children('thead, tfoot').remove();
+
+ // Clone the current header and footer elements and then place it into the inner table
+ headerCopy = header.clone().prependTo( table );
+ headerTrgEls = header.find('tr'); // original header is in its own table
+ headerSrcEls = headerCopy.find('tr');
+ headerCopy.find('th, td').removeAttr('tabindex');
+
+ if ( footer ) {
+ footerCopy = footer.clone().prependTo( table );
+ footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized
+ footerSrcEls = footerCopy.find('tr');
+ }
+
+
+ /*
+ * 2. Take live measurements from the DOM - do not alter the DOM itself!
+ */
+
+ // Remove old sizing and apply the calculated column widths
+ // Get the unique column headers in the newly created (cloned) header. We want to apply the
+ // calculated sizes to this header
+ if ( ! scrollX )
+ {
+ divBodyStyle.width = '100%';
+ divHeader[0].style.width = '100%';
+ }
+
+ $.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {
+ idx = _fnVisibleToColumnIndex( settings, i );
+ el.style.width = settings.aoColumns[idx].sWidth;
+ } );
+
+ if ( footer ) {
+ _fnApplyToChildren( function(n) {
+ n.style.width = "";
+ }, footerSrcEls );
+ }
+
+ // If scroll collapse is enabled, when we put the headers back into the body for sizing, we
+ // will end up forcing the scrollbar to appear, making our measurements wrong for when we
+ // then hide it (end of this function), so add the header height to the body scroller.
+ if ( scroll.bCollapse && scrollY !== "" ) {
+ divBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+"px";
+ }
+
+ // Size the table as a whole
+ sanityWidth = table.outerWidth();
+ if ( scrollX === "" ) {
+ // No x scrolling
+ tableStyle.width = "100%";
+
+ // IE7 will make the width of the table when 100% include the scrollbar
+ // - which is shouldn't. When there is a scrollbar we need to take this
+ // into account.
+ if ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||
+ divBody.css('overflow-y') == "scroll")
+ ) {
+ tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);
+ }
+ }
+ else
+ {
+ // x scrolling
+ if ( scrollXInner !== "" ) {
+ // x scroll inner has been given - use it
+ tableStyle.width = _fnStringToCss(scrollXInner);
+ }
+ else if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) {
+ // There is y-scrolling - try to take account of the y scroll bar
+ tableStyle.width = _fnStringToCss( sanityWidth-barWidth );
+ if ( table.outerWidth() > sanityWidth-barWidth ) {
+ // Not possible to take account of it
+ tableStyle.width = _fnStringToCss( sanityWidth );
+ }
+ }
+ else {
+ // When all else fails
+ tableStyle.width = _fnStringToCss( sanityWidth );
+ }
+ }
+
+ // Recalculate the sanity width - now that we've applied the required width,
+ // before it was a temporary variable. This is required because the column
+ // width calculation is done before this table DOM is created.
+ sanityWidth = table.outerWidth();
+
+ // Hidden header should have zero height, so remove padding and borders. Then
+ // set the width based on the real headers
+
+ // Apply all styles in one pass
+ _fnApplyToChildren( zeroOut, headerSrcEls );
+
+ // Read all widths in next pass
+ _fnApplyToChildren( function(nSizer) {
+ headerContent.push( nSizer.innerHTML );
+ headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
+ }, headerSrcEls );
+
+ // Apply all widths in final pass
+ _fnApplyToChildren( function(nToSize, i) {
+ nToSize.style.width = headerWidths[i];
+ }, headerTrgEls );
+
+ $(headerSrcEls).height(0);
+
+ /* Same again with the footer if we have one */
+ if ( footer )
+ {
+ _fnApplyToChildren( zeroOut, footerSrcEls );
+
+ _fnApplyToChildren( function(nSizer) {
+ footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
+ }, footerSrcEls );
+
+ _fnApplyToChildren( function(nToSize, i) {
+ nToSize.style.width = footerWidths[i];
+ }, footerTrgEls );
+
+ $(footerSrcEls).height(0);
+ }
+
+
+ /*
+ * 3. Apply the measurements
+ */
+
+ // "Hide" the header and footer that we used for the sizing. We need to keep
+ // the content of the cell so that the width applied to the header and body
+ // both match, but we want to hide it completely. We want to also fix their
+ // width to what they currently are
+ _fnApplyToChildren( function(nSizer, i) {
+ nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+headerContent[i]+'</div>';
+ nSizer.style.width = headerWidths[i];
+ }, headerSrcEls );
+
+ if ( footer )
+ {
+ _fnApplyToChildren( function(nSizer, i) {
+ nSizer.innerHTML = "";
+ nSizer.style.width = footerWidths[i];
+ }, footerSrcEls );
+ }
+
+ // Sanity check that the table is of a sensible width. If not then we are going to get
+ // misalignment - try to prevent this by not allowing the table to shrink below its min width
+ if ( table.outerWidth() < sanityWidth )
+ {
+ // The min width depends upon if we have a vertical scrollbar visible or not */
+ correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||
+ divBody.css('overflow-y') == "scroll")) ?
+ sanityWidth+barWidth :
+ sanityWidth;
+
+ // IE6/7 are a law unto themselves...
+ if ( ie67 && (divBodyEl.scrollHeight >
+ divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll")
+ ) {
+ tableStyle.width = _fnStringToCss( correction-barWidth );
+ }
+
+ // And give the user a warning that we've stopped the table getting too small
+ if ( scrollX === "" || scrollXInner !== "" ) {
+ _fnLog( settings, 1, 'Possible column misalignment', 6 );
+ }
+ }
+ else
+ {
+ correction = '100%';
+ }
+
+ // Apply to the container elements
+ divBodyStyle.width = _fnStringToCss( correction );
+ divHeaderStyle.width = _fnStringToCss( correction );
+
+ if ( footer ) {
+ settings.nScrollFoot.style.width = _fnStringToCss( correction );
+ }
+
+
+ /*
+ * 4. Clean up
+ */
+ if ( ! scrollY ) {
+ /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting
+ * the scrollbar height from the visible display, rather than adding it on. We need to
+ * set the height in order to sort this. Don't want to do it in any other browsers.
+ */
+ if ( ie67 ) {
+ divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );
+ }
+ }
+
+ if ( scrollY && scroll.bCollapse ) {
+ divBodyStyle.height = _fnStringToCss( scrollY );
+
+ var iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ?
+ barWidth :
+ 0;
+
+ if ( tableEl.offsetHeight < divBodyEl.offsetHeight ) {
+ divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra );
+ }
+ }
+
+ /* Finally set the width's of the header and footer tables */
+ var iOuterWidth = table.outerWidth();
+ divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );
+ divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );
+
+ // Figure out if there are scrollbar present - if so then we need a the header and footer to
+ // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
+ var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
+ var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
+ divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px";
+
+ if ( footer ) {
+ divFooterTable[0].style.width = _fnStringToCss( iOuterWidth );
+ divFooterInner[0].style.width = _fnStringToCss( iOuterWidth );
+ divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px";
+ }
+
+ /* Adjust the position of the header in case we loose the y-scrollbar */
+ divBody.scroll();
+
+ // If sorting or filtering has occurred, jump the scrolling back to the top
+ // only if we aren't holding the position
+ if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {
+ divBodyEl.scrollTop = 0;
+ }
+ }
+
+
+
+ /**
+ * Apply a given function to the display child nodes of an element array (typically
+ * TD children of TR rows
+ * @param {function} fn Method to apply to the objects
+ * @param array {nodes} an1 List of elements to look through for display children
+ * @param array {nodes} an2 Another list (identical structure to the first) - optional
+ * @memberof DataTable#oApi
+ */
+ function _fnApplyToChildren( fn, an1, an2 )
+ {
+ var index=0, i=0, iLen=an1.length;
+ var nNode1, nNode2;
+
+ while ( i < iLen ) {
+ nNode1 = an1[i].firstChild;
+ nNode2 = an2 ? an2[i].firstChild : null;
+
+ while ( nNode1 ) {
+ if ( nNode1.nodeType === 1 ) {
+ if ( an2 ) {
+ fn( nNode1, nNode2, index );
+ }
+ else {
+ fn( nNode1, index );
+ }
+
+ index++;
+ }
+
+ nNode1 = nNode1.nextSibling;
+ nNode2 = an2 ? nNode2.nextSibling : null;
+ }
+
+ i++;
+ }
+ }
+
+
+
+ var __re_html_remove = /<.*?>/g;
+
+
+ /**
+ * Calculate the width of columns for the table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnCalculateColumnWidths ( oSettings )
+ {
+ var
+ table = oSettings.nTable,
+ columns = oSettings.aoColumns,
+ scroll = oSettings.oScroll,
+ scrollY = scroll.sY,
+ scrollX = scroll.sX,
+ scrollXInner = scroll.sXInner,
+ columnCount = columns.length,
+ visibleColumns = _fnGetColumns( oSettings, 'bVisible' ),
+ headerCells = $('th', oSettings.nTHead),
+ tableWidthAttr = table.getAttribute('width'), // from DOM element
+ tableContainer = table.parentNode,
+ userInputs = false,
+ i, column, columnIdx, width, outerWidth;
+
+ var styleWidth = table.style.width;
+ if ( styleWidth && styleWidth.indexOf('%') !== -1 ) {
+ tableWidthAttr = styleWidth;
+ }
+
+ /* Convert any user input sizes into pixel sizes */
+ for ( i=0 ; i<visibleColumns.length ; i++ ) {
+ column = columns[ visibleColumns[i] ];
+
+ if ( column.sWidth !== null ) {
+ column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );
+
+ userInputs = true;
+ }
+ }
+
+ /* If the number of columns in the DOM equals the number that we have to
+ * process in DataTables, then we can use the offsets that are created by
+ * the web- browser. No custom sizes can be set in order for this to happen,
+ * nor scrolling used
+ */
+ if ( ! userInputs && ! scrollX && ! scrollY &&
+ columnCount == _fnVisbleColumns( oSettings ) &&
+ columnCount == headerCells.length
+ ) {
+ for ( i=0 ; i<columnCount ; i++ ) {
+ columns[i].sWidth = _fnStringToCss( headerCells.eq(i).width() );
+ }
+ }
+ else
+ {
+ // Otherwise construct a single row, worst case, table with the widest
+ // node in the data, assign any user defined widths, then insert it into
+ // the DOM and allow the browser to do all the hard work of calculating
+ // table widths
+ var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table
+ .css( 'visibility', 'hidden' )
+ .removeAttr( 'id' );
+
+ // Clean up the table body
+ tmpTable.find('tbody tr').remove();
+ var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
+
+ // Remove any assigned widths from the footer (from scrolling)
+ tmpTable.find('tfoot th, tfoot td').css('width', '');
+
+ // Apply custom sizing to the cloned header
+ headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );
+
+ for ( i=0 ; i<visibleColumns.length ; i++ ) {
+ column = columns[ visibleColumns[i] ];
+
+ headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?
+ _fnStringToCss( column.sWidthOrig ) :
+ '';
+ }
+
+ // Find the widest cell for each column and put it into the table
+ if ( oSettings.aoData.length ) {
+ for ( i=0 ; i<visibleColumns.length ; i++ ) {
+ columnIdx = visibleColumns[i];
+ column = columns[ columnIdx ];
+
+ $( _fnGetWidestNode( oSettings, columnIdx ) )
+ .clone( false )
+ .append( column.sContentPadding )
+ .appendTo( tr );
+ }
+ }
+
+ // Table has been built, attach to the document so we can work with it
+ tmpTable.appendTo( tableContainer );
+
+ // When scrolling (X or Y) we want to set the width of the table as
+ // appropriate. However, when not scrolling leave the table width as it
+ // is. This results in slightly different, but I think correct behaviour
+ if ( scrollX && scrollXInner ) {
+ tmpTable.width( scrollXInner );
+ }
+ else if ( scrollX ) {
+ tmpTable.css( 'width', 'auto' );
+
+ if ( tmpTable.width() < tableContainer.offsetWidth ) {
+ tmpTable.width( tableContainer.offsetWidth );
+ }
+ }
+ else if ( scrollY ) {
+ tmpTable.width( tableContainer.offsetWidth );
+ }
+ else if ( tableWidthAttr ) {
+ tmpTable.width( tableWidthAttr );
+ }
+
+ // Take into account the y scrollbar
+ _fnScrollingWidthAdjust( oSettings, tmpTable[0] );
+
+ // Browsers need a bit of a hand when a width is assigned to any columns
+ // when x-scrolling as they tend to collapse the table to the min-width,
+ // even if we sent the column widths. So we need to keep track of what
+ // the table width should be by summing the user given values, and the
+ // automatic values
+ if ( scrollX )
+ {
+ var total = 0;
+
+ for ( i=0 ; i<visibleColumns.length ; i++ ) {
+ column = columns[ visibleColumns[i] ];
+ outerWidth = $(headerCells[i]).outerWidth();
+
+ total += column.sWidthOrig === null ?
+ outerWidth :
+ parseInt( column.sWidth, 10 ) + outerWidth - $(headerCells[i]).width();
+ }
+
+ tmpTable.width( _fnStringToCss( total ) );
+ table.style.width = _fnStringToCss( total );
+ }
+
+ // Get the width of each column in the constructed table
+ for ( i=0 ; i<visibleColumns.length ; i++ ) {
+ column = columns[ visibleColumns[i] ];
+ width = $(headerCells[i]).width();
+
+ if ( width ) {
+ column.sWidth = _fnStringToCss( width );
+ }
+ }
+
+ table.style.width = _fnStringToCss( tmpTable.css('width') );
+
+ // Finished with the table - ditch it
+ tmpTable.remove();
+ }
+
+ // If there is a width attr, we want to attach an event listener which
+ // allows the table sizing to automatically adjust when the window is
+ // resized. Use the width attr rather than CSS, since we can't know if the
+ // CSS is a relative value or absolute - DOM read is always px.
+ if ( tableWidthAttr ) {
+ table.style.width = _fnStringToCss( tableWidthAttr );
+ }
+
+ if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {
+ var bindResize = function () {
+ $(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {
+ _fnAdjustColumnSizing( oSettings );
+ } ) );
+ };
+
+ // IE6/7 will crash if we bind a resize event handler on page load.
+ // To be removed in 1.11 which drops IE6/7 support
+ if ( oSettings.oBrowser.bScrollOversize ) {
+ setTimeout( bindResize, 1000 );
+ }
+ else {
+ bindResize();
+ }
+
+ oSettings._reszEvt = true;
+ }
+ }
+
+
+ /**
+ * Throttle the calls to a function. Arguments and context are maintained for
+ * the throttled function
+ * @param {function} fn Function to be called
+ * @param {int} [freq=200] call frequency in mS
+ * @returns {function} wrapped function
+ * @memberof DataTable#oApi
+ */
+ function _fnThrottle( fn, freq ) {
+ var
+ frequency = freq !== undefined ? freq : 200,
+ last,
+ timer;
+
+ return function () {
+ var
+ that = this,
+ now = +new Date(),
+ args = arguments;
+
+ if ( last && now < last + frequency ) {
+ clearTimeout( timer );
+
+ timer = setTimeout( function () {
+ last = undefined;
+ fn.apply( that, args );
+ }, frequency );
+ }
+ else {
+ last = now;
+ fn.apply( that, args );
+ }
+ };
+ }
+
+
+ /**
+ * Convert a CSS unit width to pixels (e.g. 2em)
+ * @param {string} width width to be converted
+ * @param {node} parent parent to get the with for (required for relative widths) - optional
+ * @returns {int} width in pixels
+ * @memberof DataTable#oApi
+ */
+ function _fnConvertToWidth ( width, parent )
+ {
+ if ( ! width ) {
+ return 0;
+ }
+
+ var n = $('<div/>')
+ .css( 'width', _fnStringToCss( width ) )
+ .appendTo( parent || document.body );
+
+ var val = n[0].offsetWidth;
+ n.remove();
+
+ return val;
+ }
+
+
+ /**
+ * Adjust a table's width to take account of vertical scroll bar
+ * @param {object} oSettings dataTables settings object
+ * @param {node} n table node
+ * @memberof DataTable#oApi
+ */
+
+ function _fnScrollingWidthAdjust ( settings, n )
+ {
+ var scroll = settings.oScroll;
+
+ if ( scroll.sX || scroll.sY ) {
+ // When y-scrolling only, we want to remove the width of the scroll bar
+ // so the table + scroll bar will fit into the area available, otherwise
+ // we fix the table at its current size with no adjustment
+ var correction = ! scroll.sX ? scroll.iBarWidth : 0;
+ n.style.width = _fnStringToCss( $(n).outerWidth() - correction );
+ }
+ }
+
+
+ /**
+ * Get the widest node
+ * @param {object} settings dataTables settings object
+ * @param {int} colIdx column of interest
+ * @returns {node} widest table node
+ * @memberof DataTable#oApi
+ */
+ function _fnGetWidestNode( settings, colIdx )
+ {
+ var idx = _fnGetMaxLenString( settings, colIdx );
+ if ( idx < 0 ) {
+ return null;
+ }
+
+ var data = settings.aoData[ idx ];
+ return ! data.nTr ? // Might not have been created when deferred rendering
+ $('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :
+ data.anCells[ colIdx ];
+ }
+
+
+ /**
+ * Get the maximum strlen for each data column
+ * @param {object} settings dataTables settings object
+ * @param {int} colIdx column of interest
+ * @returns {string} max string length for each column
+ * @memberof DataTable#oApi
+ */
+ function _fnGetMaxLenString( settings, colIdx )
+ {
+ var s, max=-1, maxIdx = -1;
+
+ for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+ s = _fnGetCellData( settings, i, colIdx, 'display' )+'';
+ s = s.replace( __re_html_remove, '' );
+
+ if ( s.length > max ) {
+ max = s.length;
+ maxIdx = i;
+ }
+ }
+
+ return maxIdx;
+ }
+
+
+ /**
+ * Append a CSS unit (only if required) to a string
+ * @param {string} value to css-ify
+ * @returns {string} value with css unit
+ * @memberof DataTable#oApi
+ */
+ function _fnStringToCss( s )
+ {
+ if ( s === null ) {
+ return '0px';
+ }
+
+ if ( typeof s == 'number' ) {
+ return s < 0 ?
+ '0px' :
+ s+'px';
+ }
+
+ // Check it has a unit character already
+ return s.match(/\d$/) ?
+ s+'px' :
+ s;
+ }
+
+
+ /**
+ * Get the width of a scroll bar in this browser being used
+ * @returns {int} width in pixels
+ * @memberof DataTable#oApi
+ */
+ function _fnScrollBarWidth ()
+ {
+ // On first run a static variable is set, since this is only needed once.
+ // Subsequent runs will just use the previously calculated value
+ var width = DataTable.__scrollbarWidth;
+
+ if ( width === undefined ) {
+ var sizer = $('<p/>').css( {
+ position: 'absolute',
+ top: 0,
+ left: 0,
+ width: '100%',
+ height: 150,
+ padding: 0,
+ overflow: 'scroll',
+ visibility: 'hidden'
+ } )
+ .appendTo('body');
+
+ width = sizer[0].offsetWidth - sizer[0].clientWidth;
+ DataTable.__scrollbarWidth = width;
+
+ sizer.remove();
+ }
+
+ return width;
+ }
+
+
+
+ function _fnSortFlatten ( settings )
+ {
+ var
+ i, iLen, k, kLen,
+ aSort = [],
+ aiOrig = [],
+ aoColumns = settings.aoColumns,
+ aDataSort, iCol, sType, srcCol,
+ fixed = settings.aaSortingFixed,
+ fixedObj = $.isPlainObject( fixed ),
+ nestedSort = [],
+ add = function ( a ) {
+ if ( a.length && ! $.isArray( a[0] ) ) {
+ // 1D array
+ nestedSort.push( a );
+ }
+ else {
+ // 2D array
+ nestedSort.push.apply( nestedSort, a );
+ }
+ };
+
+ // Build the sort array, with pre-fix and post-fix options if they have been
+ // specified
+ if ( $.isArray( fixed ) ) {
+ add( fixed );
+ }
+
+ if ( fixedObj && fixed.pre ) {
+ add( fixed.pre );
+ }
+
+ add( settings.aaSorting );
+
+ if (fixedObj && fixed.post ) {
+ add( fixed.post );
+ }
+
+ for ( i=0 ; i<nestedSort.length ; i++ )
+ {
+ srcCol = nestedSort[i][0];
+ aDataSort = aoColumns[ srcCol ].aDataSort;
+
+ for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
+ {
+ iCol = aDataSort[k];
+ sType = aoColumns[ iCol ].sType || 'string';
+
+ if ( nestedSort[i]._idx === undefined ) {
+ nestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting );
+ }
+
+ aSort.push( {
+ src: srcCol,
+ col: iCol,
+ dir: nestedSort[i][1],
+ index: nestedSort[i]._idx,
+ type: sType,
+ formatter: DataTable.ext.type.order[ sType+"-pre" ]
+ } );
+ }
+ }
+
+ return aSort;
+ }
+
+ /**
+ * Change the order of the table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ * @todo This really needs split up!
+ */
+ function _fnSort ( oSettings )
+ {
+ var
+ i, ien, iLen, j, jLen, k, kLen,
+ sDataType, nTh,
+ aiOrig = [],
+ oExtSort = DataTable.ext.type.order,
+ aoData = oSettings.aoData,
+ aoColumns = oSettings.aoColumns,
+ aDataSort, data, iCol, sType, oSort,
+ formatters = 0,
+ sortCol,
+ displayMaster = oSettings.aiDisplayMaster,
+ aSort;
+
+ // Resolve any column types that are unknown due to addition or invalidation
+ // @todo Can this be moved into a 'data-ready' handler which is called when
+ // data is going to be used in the table?
+ _fnColumnTypes( oSettings );
+
+ aSort = _fnSortFlatten( oSettings );
+
+ for ( i=0, ien=aSort.length ; i<ien ; i++ ) {
+ sortCol = aSort[i];
+
+ // Track if we can use the fast sort algorithm
+ if ( sortCol.formatter ) {
+ formatters++;
+ }
+
+ // Load the data needed for the sort, for each cell
+ _fnSortData( oSettings, sortCol.col );
+ }
+
+ /* No sorting required if server-side or no sorting array */
+ if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )
+ {
+ // Create a value - key array of the current row positions such that we can use their
+ // current position during the sort, if values match, in order to perform stable sorting
+ for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {
+ aiOrig[ displayMaster[i] ] = i;
+ }
+
+ /* Do the sort - here we want multi-column sorting based on a given data source (column)
+ * and sorting function (from oSort) in a certain direction. It's reasonably complex to
+ * follow on it's own, but this is what we want (example two column sorting):
+ * fnLocalSorting = function(a,b){
+ * var iTest;
+ * iTest = oSort['string-asc']('data11', 'data12');
+ * if (iTest !== 0)
+ * return iTest;
+ * iTest = oSort['numeric-desc']('data21', 'data22');
+ * if (iTest !== 0)
+ * return iTest;
+ * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
+ * }
+ * Basically we have a test for each sorting column, if the data in that column is equal,
+ * test the next column. If all columns match, then we use a numeric sort on the row
+ * positions in the original data array to provide a stable sort.
+ *
+ * Note - I know it seems excessive to have two sorting methods, but the first is around
+ * 15% faster, so the second is only maintained for backwards compatibility with sorting
+ * methods which do not have a pre-sort formatting function.
+ */
+ if ( formatters === aSort.length ) {
+ // All sort types have formatting functions
+ displayMaster.sort( function ( a, b ) {
+ var
+ x, y, k, test, sort,
+ len=aSort.length,
+ dataA = aoData[a]._aSortData,
+ dataB = aoData[b]._aSortData;
+
+ for ( k=0 ; k<len ; k++ ) {
+ sort = aSort[k];
+
+ x = dataA[ sort.col ];
+ y = dataB[ sort.col ];
+
+ test = x<y ? -1 : x>y ? 1 : 0;
+ if ( test !== 0 ) {
+ return sort.dir === 'asc' ? test : -test;
+ }
+ }
+
+ x = aiOrig[a];
+ y = aiOrig[b];
+ return x<y ? -1 : x>y ? 1 : 0;
+ } );
+ }
+ else {
+ // Depreciated - remove in 1.11 (providing a plug-in option)
+ // Not all sort types have formatting methods, so we have to call their sorting
+ // methods.
+ displayMaster.sort( function ( a, b ) {
+ var
+ x, y, k, l, test, sort, fn,
+ len=aSort.length,
+ dataA = aoData[a]._aSortData,
+ dataB = aoData[b]._aSortData;
+
+ for ( k=0 ; k<len ; k++ ) {
+ sort = aSort[k];
+
+ x = dataA[ sort.col ];
+ y = dataB[ sort.col ];
+
+ fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ];
+ test = fn( x, y );
+ if ( test !== 0 ) {
+ return test;
+ }
+ }
+
+ x = aiOrig[a];
+ y = aiOrig[b];
+ return x<y ? -1 : x>y ? 1 : 0;
+ } );
+ }
+ }
+
+ /* Tell the draw function that we have sorted the data */
+ oSettings.bSorted = true;
+ }
+
+
+ function _fnSortAria ( settings )
+ {
+ var label;
+ var nextSort;
+ var columns = settings.aoColumns;
+ var aSort = _fnSortFlatten( settings );
+ var oAria = settings.oLanguage.oAria;
+
+ // ARIA attributes - need to loop all columns, to update all (removing old
+ // attributes as needed)
+ for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+ {
+ var col = columns[i];
+ var asSorting = col.asSorting;
+ var sTitle = col.sTitle.replace( /<.*?>/g, "" );
+ var th = col.nTh;
+
+ // IE7 is throwing an error when setting these properties with jQuery's
+ // attr() and removeAttr() methods...
+ th.removeAttribute('aria-sort');
+
+ /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
+ if ( col.bSortable ) {
+ if ( aSort.length > 0 && aSort[0].col == i ) {
+ th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" );
+ nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];
+ }
+ else {
+ nextSort = asSorting[0];
+ }
+
+ label = sTitle + ( nextSort === "asc" ?
+ oAria.sSortAscending :
+ oAria.sSortDescending
+ );
+ }
+ else {
+ label = sTitle;
+ }
+
+ th.setAttribute('aria-label', label);
+ }
+ }
+
+
+ /**
+ * Function to run on user sort request
+ * @param {object} settings dataTables settings object
+ * @param {node} attachTo node to attach the handler to
+ * @param {int} colIdx column sorting index
+ * @param {boolean} [append=false] Append the requested sort to the existing
+ * sort if true (i.e. multi-column sort)
+ * @param {function} [callback] callback function
+ * @memberof DataTable#oApi
+ */
+ function _fnSortListener ( settings, colIdx, append, callback )
+ {
+ var col = settings.aoColumns[ colIdx ];
+ var sorting = settings.aaSorting;
+ var asSorting = col.asSorting;
+ var nextSortIdx;
+ var next = function ( a, overflow ) {
+ var idx = a._idx;
+ if ( idx === undefined ) {
+ idx = $.inArray( a[1], asSorting );
+ }
+
+ return idx+1 < asSorting.length ?
+ idx+1 :
+ overflow ?
+ null :
+ 0;
+ };
+
+ // Convert to 2D array if needed
+ if ( typeof sorting[0] === 'number' ) {
+ sorting = settings.aaSorting = [ sorting ];
+ }
+
+ // If appending the sort then we are multi-column sorting
+ if ( append && settings.oFeatures.bSortMulti ) {
+ // Are we already doing some kind of sort on this column?
+ var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );
+
+ if ( sortIdx !== -1 ) {
+ // Yes, modify the sort
+ nextSortIdx = next( sorting[sortIdx], true );
+
+ if ( nextSortIdx === null && sorting.length === 1 ) {
+ nextSortIdx = 0; // can't remove sorting completely
+ }
+
+ if ( nextSortIdx === null ) {
+ sorting.splice( sortIdx, 1 );
+ }
+ else {
+ sorting[sortIdx][1] = asSorting[ nextSortIdx ];
+ sorting[sortIdx]._idx = nextSortIdx;
+ }
+ }
+ else {
+ // No sort on this column yet
+ sorting.push( [ colIdx, asSorting[0], 0 ] );
+ sorting[sorting.length-1]._idx = 0;
+ }
+ }
+ else if ( sorting.length && sorting[0][0] == colIdx ) {
+ // Single column - already sorting on this column, modify the sort
+ nextSortIdx = next( sorting[0] );
+
+ sorting.length = 1;
+ sorting[0][1] = asSorting[ nextSortIdx ];
+ sorting[0]._idx = nextSortIdx;
+ }
+ else {
+ // Single column - sort only on this column
+ sorting.length = 0;
+ sorting.push( [ colIdx, asSorting[0] ] );
+ sorting[0]._idx = 0;
+ }
+
+ // Run the sort by calling a full redraw
+ _fnReDraw( settings );
+
+ // callback used for async user interaction
+ if ( typeof callback == 'function' ) {
+ callback( settings );
+ }
+ }
+
+
+ /**
+ * Attach a sort handler (click) to a node
+ * @param {object} settings dataTables settings object
+ * @param {node} attachTo node to attach the handler to
+ * @param {int} colIdx column sorting index
+ * @param {function} [callback] callback function
+ * @memberof DataTable#oApi
+ */
+ function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
+ {
+ var col = settings.aoColumns[ colIdx ];
+
+ _fnBindAction( attachTo, {}, function (e) {
+ /* If the column is not sortable - don't to anything */
+ if ( col.bSortable === false ) {
+ return;
+ }
+
+ // If processing is enabled use a timeout to allow the processing
+ // display to be shown - otherwise to it synchronously
+ if ( settings.oFeatures.bProcessing ) {
+ _fnProcessingDisplay( settings, true );
+
+ setTimeout( function() {
+ _fnSortListener( settings, colIdx, e.shiftKey, callback );
+
+ // In server-side processing, the draw callback will remove the
+ // processing display
+ if ( _fnDataSource( settings ) !== 'ssp' ) {
+ _fnProcessingDisplay( settings, false );
+ }
+ }, 0 );
+ }
+ else {
+ _fnSortListener( settings, colIdx, e.shiftKey, callback );
+ }
+ } );
+ }
+
+
+ /**
+ * Set the sorting classes on table's body, Note: it is safe to call this function
+ * when bSort and bSortClasses are false
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnSortingClasses( settings )
+ {
+ var oldSort = settings.aLastSort;
+ var sortClass = settings.oClasses.sSortColumn;
+ var sort = _fnSortFlatten( settings );
+ var features = settings.oFeatures;
+ var i, ien, colIdx;
+
+ if ( features.bSort && features.bSortClasses ) {
+ // Remove old sorting classes
+ for ( i=0, ien=oldSort.length ; i<ien ; i++ ) {
+ colIdx = oldSort[i].src;
+
+ // Remove column sorting
+ $( _pluck( settings.aoData, 'anCells', colIdx ) )
+ .removeClass( sortClass + (i<2 ? i+1 : 3) );
+ }
+
+ // Add new column sorting
+ for ( i=0, ien=sort.length ; i<ien ; i++ ) {
+ colIdx = sort[i].src;
+
+ $( _pluck( settings.aoData, 'anCells', colIdx ) )
+ .addClass( sortClass + (i<2 ? i+1 : 3) );
+ }
+ }
+
+ settings.aLastSort = sort;
+ }
+
+
+ // Get the data to sort a column, be it from cache, fresh (populating the
+ // cache), or from a sort formatter
+ function _fnSortData( settings, idx )
+ {
+ // Custom sorting function - provided by the sort data type
+ var column = settings.aoColumns[ idx ];
+ var customSort = DataTable.ext.order[ column.sSortDataType ];
+ var customData;
+
+ if ( customSort ) {
+ customData = customSort.call( settings.oInstance, settings, idx,
+ _fnColumnIndexToVisible( settings, idx )
+ );
+ }
+
+ // Use / populate cache
+ var row, cellData;
+ var formatter = DataTable.ext.type.order[ column.sType+"-pre" ];
+
+ for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+ row = settings.aoData[i];
+
+ if ( ! row._aSortData ) {
+ row._aSortData = [];
+ }
+
+ if ( ! row._aSortData[idx] || customSort ) {
+ cellData = customSort ?
+ customData[i] : // If there was a custom sort function, use data from there
+ _fnGetCellData( settings, i, idx, 'sort' );
+
+ row._aSortData[ idx ] = formatter ?
+ formatter( cellData ) :
+ cellData;
+ }
+ }
+ }
+
+
+
+ /**
+ * Save the state of a table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnSaveState ( settings )
+ {
+ if ( !settings.oFeatures.bStateSave || settings.bDestroying )
+ {
+ return;
+ }
+
+ /* Store the interesting variables */
+ var state = {
+ time: +new Date(),
+ start: settings._iDisplayStart,
+ length: settings._iDisplayLength,
+ order: $.extend( true, [], settings.aaSorting ),
+ search: _fnSearchToCamel( settings.oPreviousSearch ),
+ columns: $.map( settings.aoColumns, function ( col, i ) {
+ return {
+ visible: col.bVisible,
+ search: _fnSearchToCamel( settings.aoPreSearchCols[i] )
+ };
+ } )
+ };
+
+ _fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] );
+
+ settings.oSavedState = state;
+ settings.fnStateSaveCallback.call( settings.oInstance, settings, state );
+ }
+
+
+ /**
+ * Attempt to load a saved table state
+ * @param {object} oSettings dataTables settings object
+ * @param {object} oInit DataTables init object so we can override settings
+ * @memberof DataTable#oApi
+ */
+ function _fnLoadState ( settings, oInit )
+ {
+ var i, ien;
+ var columns = settings.aoColumns;
+
+ if ( ! settings.oFeatures.bStateSave ) {
+ return;
+ }
+
+ var state = settings.fnStateLoadCallback.call( settings.oInstance, settings );
+ if ( ! state || ! state.time ) {
+ return;
+ }
+
+ /* Allow custom and plug-in manipulation functions to alter the saved data set and
+ * cancelling of loading by returning false
+ */
+ var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, state] );
+ if ( $.inArray( false, abStateLoad ) !== -1 ) {
+ return;
+ }
+
+ /* Reject old data */
+ var duration = settings.iStateDuration;
+ if ( duration > 0 && state.time < +new Date() - (duration*1000) ) {
+ return;
+ }
+
+ // Number of columns have changed - all bets are off, no restore of settings
+ if ( columns.length !== state.columns.length ) {
+ return;
+ }
+
+ // Store the saved state so it might be accessed at any time
+ settings.oLoadedState = $.extend( true, {}, state );
+
+ // Restore key features - todo - for 1.11 this needs to be done by
+ // subscribed events
+ if ( state.start !== undefined ) {
+ settings._iDisplayStart = state.start;
+ settings.iInitDisplayStart = state.start;
+ }
+ if ( state.length !== undefined ) {
+ settings._iDisplayLength = state.length;
+ }
+
+ // Order
+ if ( state.order !== undefined ) {
+ settings.aaSorting = [];
+ $.each( state.order, function ( i, col ) {
+ settings.aaSorting.push( col[0] >= columns.length ?
+ [ 0, col[1] ] :
+ col
+ );
+ } );
+ }
+
+ // Search
+ if ( state.search !== undefined ) {
+ $.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) );
+ }
+
+ // Columns
+ for ( i=0, ien=state.columns.length ; i<ien ; i++ ) {
+ var col = state.columns[i];
+
+ // Visibility
+ if ( col.visible !== undefined ) {
+ columns[i].bVisible = col.visible;
+ }
+
+ // Search
+ if ( col.search !== undefined ) {
+ $.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );
+ }
+ }
+
+ _fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] );
+ }
+
+
+ /**
+ * Return the settings object for a particular table
+ * @param {node} table table we are using as a dataTable
+ * @returns {object} Settings object - or null if not found
+ * @memberof DataTable#oApi
+ */
+ function _fnSettingsFromNode ( table )
+ {
+ var settings = DataTable.settings;
+ var idx = $.inArray( table, _pluck( settings, 'nTable' ) );
+
+ return idx !== -1 ?
+ settings[ idx ] :
+ null;
+ }
+
+
+ /**
+ * Log an error message
+ * @param {object} settings dataTables settings object
+ * @param {int} level log error messages, or display them to the user
+ * @param {string} msg error message
+ * @param {int} tn Technical note id to get more information about the error.
+ * @memberof DataTable#oApi
+ */
+ function _fnLog( settings, level, msg, tn )
+ {
+ msg = 'DataTables warning: '+
+ (settings!==null ? 'table id='+settings.sTableId+' - ' : '')+msg;
+
+ if ( tn ) {
+ msg += '. For more information about this error, please see '+
+ 'http://datatables.net/tn/'+tn;
+ }
+
+ if ( ! level ) {
+ // Backwards compatibility pre 1.10
+ var ext = DataTable.ext;
+ var type = ext.sErrMode || ext.errMode;
+
+ _fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] );
+
+ if ( type == 'alert' ) {
+ alert( msg );
+ }
+ else if ( type == 'throw' ) {
+ throw new Error(msg);
+ }
+ else if ( typeof type == 'function' ) {
+ type( settings, tn, msg );
+ }
+ }
+ else if ( window.console && console.log ) {
+ console.log( msg );
+ }
+ }
+
+
+ /**
+ * See if a property is defined on one object, if so assign it to the other object
+ * @param {object} ret target object
+ * @param {object} src source object
+ * @param {string} name property
+ * @param {string} [mappedName] name to map too - optional, name used if not given
+ * @memberof DataTable#oApi
+ */
+ function _fnMap( ret, src, name, mappedName )
+ {
+ if ( $.isArray( name ) ) {
+ $.each( name, function (i, val) {
+ if ( $.isArray( val ) ) {
+ _fnMap( ret, src, val[0], val[1] );
+ }
+ else {
+ _fnMap( ret, src, val );
+ }
+ } );
+
+ return;
+ }
+
+ if ( mappedName === undefined ) {
+ mappedName = name;
+ }
+
+ if ( src[name] !== undefined ) {
+ ret[mappedName] = src[name];
+ }
+ }
+
+
+ /**
+ * Extend objects - very similar to jQuery.extend, but deep copy objects, and
+ * shallow copy arrays. The reason we need to do this, is that we don't want to
+ * deep copy array init values (such as aaSorting) since the dev wouldn't be
+ * able to override them, but we do want to deep copy arrays.
+ * @param {object} out Object to extend
+ * @param {object} extender Object from which the properties will be applied to
+ * out
+ * @param {boolean} breakRefs If true, then arrays will be sliced to take an
+ * independent copy with the exception of the `data` or `aaData` parameters
+ * if they are present. This is so you can pass in a collection to
+ * DataTables and have that used as your data source without breaking the
+ * references
+ * @returns {object} out Reference, just for convenience - out === the return.
+ * @memberof DataTable#oApi
+ * @todo This doesn't take account of arrays inside the deep copied objects.
+ */
+ function _fnExtend( out, extender, breakRefs )
+ {
+ var val;
+
+ for ( var prop in extender ) {
+ if ( extender.hasOwnProperty(prop) ) {
+ val = extender[prop];
+
+ if ( $.isPlainObject( val ) ) {
+ if ( ! $.isPlainObject( out[prop] ) ) {
+ out[prop] = {};
+ }
+ $.extend( true, out[prop], val );
+ }
+ else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) {
+ out[prop] = val.slice();
+ }
+ else {
+ out[prop] = val;
+ }
+ }
+ }
+
+ return out;
+ }
+
+
+ /**
+ * Bind an event handers to allow a click or return key to activate the callback.
+ * This is good for accessibility since a return on the keyboard will have the
+ * same effect as a click, if the element has focus.
+ * @param {element} n Element to bind the action to
+ * @param {object} oData Data object to pass to the triggered function
+ * @param {function} fn Callback function for when the event is triggered
+ * @memberof DataTable#oApi
+ */
+ function _fnBindAction( n, oData, fn )
+ {
+ $(n)
+ .bind( 'click.DT', oData, function (e) {
+ n.blur(); // Remove focus outline for mouse users
+ fn(e);
+ } )
+ .bind( 'keypress.DT', oData, function (e){
+ if ( e.which === 13 ) {
+ e.preventDefault();
+ fn(e);
+ }
+ } )
+ .bind( 'selectstart.DT', function () {
+ /* Take the brutal approach to cancelling text selection */
+ return false;
+ } );
+ }
+
+
+ /**
+ * Register a callback function. Easily allows a callback function to be added to
+ * an array store of callback functions that can then all be called together.
+ * @param {object} oSettings dataTables settings object
+ * @param {string} sStore Name of the array storage for the callbacks in oSettings
+ * @param {function} fn Function to be called back
+ * @param {string} sName Identifying name for the callback (i.e. a label)
+ * @memberof DataTable#oApi
+ */
+ function _fnCallbackReg( oSettings, sStore, fn, sName )
+ {
+ if ( fn )
+ {
+ oSettings[sStore].push( {
+ "fn": fn,
+ "sName": sName
+ } );
+ }
+ }
+
+
+ /**
+ * Fire callback functions and trigger events. Note that the loop over the
+ * callback array store is done backwards! Further note that you do not want to
+ * fire off triggers in time sensitive applications (for example cell creation)
+ * as its slow.
+ * @param {object} settings dataTables settings object
+ * @param {string} callbackArr Name of the array storage for the callbacks in
+ * oSettings
+ * @param {string} eventName Name of the jQuery custom event to trigger. If
+ * null no trigger is fired
+ * @param {array} args Array of arguments to pass to the callback function /
+ * trigger
+ * @memberof DataTable#oApi
+ */
+ function _fnCallbackFire( settings, callbackArr, eventName, args )
+ {
+ var ret = [];
+
+ if ( callbackArr ) {
+ ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {
+ return val.fn.apply( settings.oInstance, args );
+ } );
+ }
+
+ if ( eventName !== null ) {
+ var e = $.Event( eventName+'.dt' );
+
+ $(settings.nTable).trigger( e, args );
+
+ ret.push( e.result );
+ }
+
+ return ret;
+ }
+
+
+ function _fnLengthOverflow ( settings )
+ {
+ var
+ start = settings._iDisplayStart,
+ end = settings.fnDisplayEnd(),
+ len = settings._iDisplayLength;
+
+ /* If we have space to show extra rows (backing up from the end point - then do so */
+ if ( start >= end )
+ {
+ start = end - len;
+ }
+
+ // Keep the start record on the current page
+ start -= (start % len);
+
+ if ( len === -1 || start < 0 )
+ {
+ start = 0;
+ }
+
+ settings._iDisplayStart = start;
+ }
+
+
+ function _fnRenderer( settings, type )
+ {
+ var renderer = settings.renderer;
+ var host = DataTable.ext.renderer[type];
+
+ if ( $.isPlainObject( renderer ) && renderer[type] ) {
+ // Specific renderer for this type. If available use it, otherwise use
+ // the default.
+ return host[renderer[type]] || host._;
+ }
+ else if ( typeof renderer === 'string' ) {
+ // Common renderer - if there is one available for this type use it,
+ // otherwise use the default
+ return host[renderer] || host._;
+ }
+
+ // Use the default
+ return host._;
+ }
+
+
+ /**
+ * Detect the data source being used for the table. Used to simplify the code
+ * a little (ajax) and to make it compress a little smaller.
+ *
+ * @param {object} settings dataTables settings object
+ * @returns {string} Data source
+ * @memberof DataTable#oApi
+ */
+ function _fnDataSource ( settings )
+ {
+ if ( settings.oFeatures.bServerSide ) {
+ return 'ssp';
+ }
+ else if ( settings.ajax || settings.sAjaxSource ) {
+ return 'ajax';
+ }
+ return 'dom';
+ }
+
+
+ DataTable = function( options )
+ {
+ /**
+ * Perform a jQuery selector action on the table's TR elements (from the tbody) and
+ * return the resulting jQuery object.
+ * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+ * @param {object} [oOpts] Optional parameters for modifying the rows to be included
+ * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter
+ * criterion ("applied") or all TR elements (i.e. no filter).
+ * @param {string} [oOpts.order=current] Order of the TR elements in the processed array.
+ * Can be either 'current', whereby the current sorting of the table is used, or
+ * 'original' whereby the original order the data was read into the table is used.
+ * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+ * ("current") or not ("all"). If 'current' is given, then order is assumed to be
+ * 'current' and filter is 'applied', regardless of what they might be given as.
+ * @returns {object} jQuery object, filtered by the given selector.
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Highlight every second row
+ * oTable.$('tr:odd').css('backgroundColor', 'blue');
+ * } );
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Filter to rows with 'Webkit' in them, add a background colour and then
+ * // remove the filter, thus highlighting the 'Webkit' rows only.
+ * oTable.fnFilter('Webkit');
+ * oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue');
+ * oTable.fnFilter('');
+ * } );
+ */
+ this.$ = function ( sSelector, oOpts )
+ {
+ return this.api(true).$( sSelector, oOpts );
+ };
+
+
+ /**
+ * Almost identical to $ in operation, but in this case returns the data for the matched
+ * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes
+ * rather than any descendants, so the data can be obtained for the row/cell. If matching
+ * rows are found, the data returned is the original data array/object that was used to
+ * create the row (or a generated array if from a DOM source).
+ *
+ * This method is often useful in-combination with $ where both functions are given the
+ * same parameters and the array indexes will match identically.
+ * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+ * @param {object} [oOpts] Optional parameters for modifying the rows to be included
+ * @param {string} [oOpts.filter=none] Select elements that meet the current filter
+ * criterion ("applied") or all elements (i.e. no filter).
+ * @param {string} [oOpts.order=current] Order of the data in the processed array.
+ * Can be either 'current', whereby the current sorting of the table is used, or
+ * 'original' whereby the original order the data was read into the table is used.
+ * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+ * ("current") or not ("all"). If 'current' is given, then order is assumed to be
+ * 'current' and filter is 'applied', regardless of what they might be given as.
+ * @returns {array} Data for the matched elements. If any elements, as a result of the
+ * selector, were not TR, TD or TH elements in the DataTable, they will have a null
+ * entry in the array.
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Get the data from the first row in the table
+ * var data = oTable._('tr:first');
+ *
+ * // Do something useful with the data
+ * alert( "First cell is: "+data[0] );
+ * } );
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Filter to 'Webkit' and get all data for
+ * oTable.fnFilter('Webkit');
+ * var data = oTable._('tr', {"search": "applied"});
+ *
+ * // Do something with the data
+ * alert( data.length+" rows matched the search" );
+ * } );
+ */
+ this._ = function ( sSelector, oOpts )
+ {
+ return this.api(true).rows( sSelector, oOpts ).data();
+ };
+
+
+ /**
+ * Create a DataTables Api instance, with the currently selected tables for
+ * the Api's context.
+ * @param {boolean} [traditional=false] Set the API instance's context to be
+ * only the table referred to by the `DataTable.ext.iApiIndex` option, as was
+ * used in the API presented by DataTables 1.9- (i.e. the traditional mode),
+ * or if all tables captured in the jQuery object should be used.
+ * @return {DataTables.Api}
+ */
+ this.api = function ( traditional )
+ {
+ return traditional ?
+ new _Api(
+ _fnSettingsFromNode( this[ _ext.iApiIndex ] )
+ ) :
+ new _Api( this );
+ };
+
+
+ /**
+ * Add a single new row or multiple rows of data to the table. Please note
+ * that this is suitable for client-side processing only - if you are using
+ * server-side processing (i.e. "bServerSide": true), then to add data, you
+ * must add it to the data source, i.e. the server-side, through an Ajax call.
+ * @param {array|object} data The data to be added to the table. This can be:
+ * <ul>
+ * <li>1D array of data - add a single row with the data provided</li>
+ * <li>2D array of arrays - add multiple rows in a single call</li>
+ * <li>object - data object when using <i>mData</i></li>
+ * <li>array of objects - multiple data objects when using <i>mData</i></li>
+ * </ul>
+ * @param {bool} [redraw=true] redraw the table or not
+ * @returns {array} An array of integers, representing the list of indexes in
+ * <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to
+ * the table.
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * // Global var for counter
+ * var giCount = 2;
+ *
+ * $(document).ready(function() {
+ * $('#example').dataTable();
+ * } );
+ *
+ * function fnClickAddRow() {
+ * $('#example').dataTable().fnAddData( [
+ * giCount+".1",
+ * giCount+".2",
+ * giCount+".3",
+ * giCount+".4" ]
+ * );
+ *
+ * giCount++;
+ * }
+ */
+ this.fnAddData = function( data, redraw )
+ {
+ var api = this.api( true );
+
+ /* Check if we want to add multiple rows or not */
+ var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?
+ api.rows.add( data ) :
+ api.row.add( data );
+
+ if ( redraw === undefined || redraw ) {
+ api.draw();
+ }
+
+ return rows.flatten().toArray();
+ };
+
+
+ /**
+ * This function will make DataTables recalculate the column sizes, based on the data
+ * contained in the table and the sizes applied to the columns (in the DOM, CSS or
+ * through the sWidth parameter). This can be useful when the width of the table's
+ * parent element changes (for example a window resize).
+ * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable( {
+ * "sScrollY": "200px",
+ * "bPaginate": false
+ * } );
+ *
+ * $(window).bind('resize', function () {
+ * oTable.fnAdjustColumnSizing();
+ * } );
+ * } );
+ */
+ this.fnAdjustColumnSizing = function ( bRedraw )
+ {
+ var api = this.api( true ).columns.adjust();
+ var settings = api.settings()[0];
+ var scroll = settings.oScroll;
+
+ if ( bRedraw === undefined || bRedraw ) {
+ api.draw( false );
+ }
+ else if ( scroll.sX !== "" || scroll.sY !== "" ) {
+ /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */
+ _fnScrollDraw( settings );
+ }
+ };
+
+
+ /**
+ * Quickly and simply clear a table
+ * @param {bool} [bRedraw=true] redraw the table or not
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)
+ * oTable.fnClearTable();
+ * } );
+ */
+ this.fnClearTable = function( bRedraw )
+ {
+ var api = this.api( true ).clear();
+
+ if ( bRedraw === undefined || bRedraw ) {
+ api.draw();
+ }
+ };
+
+
+ /**
+ * The exact opposite of 'opening' a row, this function will close any rows which
+ * are currently 'open'.
+ * @param {node} nTr the table row to 'close'
+ * @returns {int} 0 on success, or 1 if failed (can't find the row)
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable;
+ *
+ * // 'open' an information row when a row is clicked on
+ * $('#example tbody tr').click( function () {
+ * if ( oTable.fnIsOpen(this) ) {
+ * oTable.fnClose( this );
+ * } else {
+ * oTable.fnOpen( this, "Temporary row opened", "info_row" );
+ * }
+ * } );
+ *
+ * oTable = $('#example').dataTable();
+ * } );
+ */
+ this.fnClose = function( nTr )
+ {
+ this.api( true ).row( nTr ).child.hide();
+ };
+
+
+ /**
+ * Remove a row for the table
+ * @param {mixed} target The index of the row from aoData to be deleted, or
+ * the TR element you want to delete
+ * @param {function|null} [callBack] Callback function
+ * @param {bool} [redraw=true] Redraw the table or not
+ * @returns {array} The row that was deleted
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Immediately remove the first row
+ * oTable.fnDeleteRow( 0 );
+ * } );
+ */
+ this.fnDeleteRow = function( target, callback, redraw )
+ {
+ var api = this.api( true );
+ var rows = api.rows( target );
+ var settings = rows.settings()[0];
+ var data = settings.aoData[ rows[0][0] ];
+
+ rows.remove();
+
+ if ( callback ) {
+ callback.call( this, settings, data );
+ }
+
+ if ( redraw === undefined || redraw ) {
+ api.draw();
+ }
+
+ return data;
+ };
+
+
+ /**
+ * Restore the table to it's original state in the DOM by removing all of DataTables
+ * enhancements, alterations to the DOM structure of the table and event listeners.
+ * @param {boolean} [remove=false] Completely remove the table from the DOM
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * // This example is fairly pointless in reality, but shows how fnDestroy can be used
+ * var oTable = $('#example').dataTable();
+ * oTable.fnDestroy();
+ * } );
+ */
+ this.fnDestroy = function ( remove )
+ {
+ this.api( true ).destroy( remove );
+ };
+
+
+ /**
+ * Redraw the table
+ * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
+ * oTable.fnDraw();
+ * } );
+ */
+ this.fnDraw = function( complete )
+ {
+ // Note that this isn't an exact match to the old call to _fnDraw - it takes
+ // into account the new data, but can hold position.
+ this.api( true ).draw( complete );
+ };
+
+
+ /**
+ * Filter the input based on data
+ * @param {string} sInput String to filter the table on
+ * @param {int|null} [iColumn] Column to limit filtering to
+ * @param {bool} [bRegex=false] Treat as regular expression or not
+ * @param {bool} [bSmart=true] Perform smart filtering or not
+ * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)
+ * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Sometime later - filter...
+ * oTable.fnFilter( 'test string' );
+ * } );
+ */
+ this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )
+ {
+ var api = this.api( true );
+
+ if ( iColumn === null || iColumn === undefined ) {
+ api.search( sInput, bRegex, bSmart, bCaseInsensitive );
+ }
+ else {
+ api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );
+ }
+
+ api.draw();
+ };
+
+
+ /**
+ * Get the data for the whole table, an individual row or an individual cell based on the
+ * provided parameters.
+ * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as
+ * a TR node then the data source for the whole row will be returned. If given as a
+ * TD/TH cell node then iCol will be automatically calculated and the data for the
+ * cell returned. If given as an integer, then this is treated as the aoData internal
+ * data index for the row (see fnGetPosition) and the data for that row used.
+ * @param {int} [col] Optional column index that you want the data of.
+ * @returns {array|object|string} If mRow is undefined, then the data for all rows is
+ * returned. If mRow is defined, just data for that row, and is iCol is
+ * defined, only data for the designated cell is returned.
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * // Row data
+ * $(document).ready(function() {
+ * oTable = $('#example').dataTable();
+ *
+ * oTable.$('tr').click( function () {
+ * var data = oTable.fnGetData( this );
+ * // ... do something with the array / object of data for the row
+ * } );
+ * } );
+ *
+ * @example
+ * // Individual cell data
+ * $(document).ready(function() {
+ * oTable = $('#example').dataTable();
+ *
+ * oTable.$('td').click( function () {
+ * var sData = oTable.fnGetData( this );
+ * alert( 'The cell clicked on had the value of '+sData );
+ * } );
+ * } );
+ */
+ this.fnGetData = function( src, col )
+ {
+ var api = this.api( true );
+
+ if ( src !== undefined ) {
+ var type = src.nodeName ? src.nodeName.toLowerCase() : '';
+
+ return col !== undefined || type == 'td' || type == 'th' ?
+ api.cell( src, col ).data() :
+ api.row( src ).data() || null;
+ }
+
+ return api.data().toArray();
+ };
+
+
+ /**
+ * Get an array of the TR nodes that are used in the table's body. Note that you will
+ * typically want to use the '$' API method in preference to this as it is more
+ * flexible.
+ * @param {int} [iRow] Optional row index for the TR element you want
+ * @returns {array|node} If iRow is undefined, returns an array of all TR elements
+ * in the table's body, or iRow is defined, just the TR element requested.
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Get the nodes from the table
+ * var nNodes = oTable.fnGetNodes( );
+ * } );
+ */
+ this.fnGetNodes = function( iRow )
+ {
+ var api = this.api( true );
+
+ return iRow !== undefined ?
+ api.row( iRow ).node() :
+ api.rows().nodes().flatten().toArray();
+ };
+
+
+ /**
+ * Get the array indexes of a particular cell from it's DOM element
+ * and column index including hidden columns
+ * @param {node} node this can either be a TR, TD or TH in the table's body
+ * @returns {int} If nNode is given as a TR, then a single index is returned, or
+ * if given as a cell, an array of [row index, column index (visible),
+ * column index (all)] is given.
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * $('#example tbody td').click( function () {
+ * // Get the position of the current data from the node
+ * var aPos = oTable.fnGetPosition( this );
+ *
+ * // Get the data array for this row
+ * var aData = oTable.fnGetData( aPos[0] );
+ *
+ * // Update the data array and return the value
+ * aData[ aPos[1] ] = 'clicked';
+ * this.innerHTML = 'clicked';
+ * } );
+ *
+ * // Init DataTables
+ * oTable = $('#example').dataTable();
+ * } );
+ */
+ this.fnGetPosition = function( node )
+ {
+ var api = this.api( true );
+ var nodeName = node.nodeName.toUpperCase();
+
+ if ( nodeName == 'TR' ) {
+ return api.row( node ).index();
+ }
+ else if ( nodeName == 'TD' || nodeName == 'TH' ) {
+ var cell = api.cell( node ).index();
+
+ return [
+ cell.row,
+ cell.columnVisible,
+ cell.column
+ ];
+ }
+ return null;
+ };
+
+
+ /**
+ * Check to see if a row is 'open' or not.
+ * @param {node} nTr the table row to check
+ * @returns {boolean} true if the row is currently open, false otherwise
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable;
+ *
+ * // 'open' an information row when a row is clicked on
+ * $('#example tbody tr').click( function () {
+ * if ( oTable.fnIsOpen(this) ) {
+ * oTable.fnClose( this );
+ * } else {
+ * oTable.fnOpen( this, "Temporary row opened", "info_row" );
+ * }
+ * } );
+ *
+ * oTable = $('#example').dataTable();
+ * } );
+ */
+ this.fnIsOpen = function( nTr )
+ {
+ return this.api( true ).row( nTr ).child.isShown();
+ };
+
+
+ /**
+ * This function will place a new row directly after a row which is currently
+ * on display on the page, with the HTML contents that is passed into the
+ * function. This can be used, for example, to ask for confirmation that a
+ * particular record should be deleted.
+ * @param {node} nTr The table row to 'open'
+ * @param {string|node|jQuery} mHtml The HTML to put into the row
+ * @param {string} sClass Class to give the new TD cell
+ * @returns {node} The row opened. Note that if the table row passed in as the
+ * first parameter, is not found in the table, this method will silently
+ * return.
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable;
+ *
+ * // 'open' an information row when a row is clicked on
+ * $('#example tbody tr').click( function () {
+ * if ( oTable.fnIsOpen(this) ) {
+ * oTable.fnClose( this );
+ * } else {
+ * oTable.fnOpen( this, "Temporary row opened", "info_row" );
+ * }
+ * } );
+ *
+ * oTable = $('#example').dataTable();
+ * } );
+ */
+ this.fnOpen = function( nTr, mHtml, sClass )
+ {
+ return this.api( true )
+ .row( nTr )
+ .child( mHtml, sClass )
+ .show()
+ .child()[0];
+ };
+
+
+ /**
+ * Change the pagination - provides the internal logic for pagination in a simple API
+ * function. With this function you can have a DataTables table go to the next,
+ * previous, first or last pages.
+ * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+ * or page number to jump to (integer), note that page 0 is the first page.
+ * @param {bool} [bRedraw=true] Redraw the table or not
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ * oTable.fnPageChange( 'next' );
+ * } );
+ */
+ this.fnPageChange = function ( mAction, bRedraw )
+ {
+ var api = this.api( true ).page( mAction );
+
+ if ( bRedraw === undefined || bRedraw ) {
+ api.draw(false);
+ }
+ };
+
+
+ /**
+ * Show a particular column
+ * @param {int} iCol The column whose display should be changed
+ * @param {bool} bShow Show (true) or hide (false) the column
+ * @param {bool} [bRedraw=true] Redraw the table or not
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Hide the second column after initialisation
+ * oTable.fnSetColumnVis( 1, false );
+ * } );
+ */
+ this.fnSetColumnVis = function ( iCol, bShow, bRedraw )
+ {
+ var api = this.api( true ).column( iCol ).visible( bShow );
+
+ if ( bRedraw === undefined || bRedraw ) {
+ api.columns.adjust().draw();
+ }
+ };
+
+
+ /**
+ * Get the settings for a particular table for external manipulation
+ * @returns {object} DataTables settings object. See
+ * {@link DataTable.models.oSettings}
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ * var oSettings = oTable.fnSettings();
+ *
+ * // Show an example parameter from the settings
+ * alert( oSettings._iDisplayStart );
+ * } );
+ */
+ this.fnSettings = function()
+ {
+ return _fnSettingsFromNode( this[_ext.iApiIndex] );
+ };
+
+
+ /**
+ * Sort the table by a particular column
+ * @param {int} iCol the data index to sort on. Note that this will not match the
+ * 'display index' if you have hidden data entries
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Sort immediately with columns 0 and 1
+ * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
+ * } );
+ */
+ this.fnSort = function( aaSort )
+ {
+ this.api( true ).order( aaSort ).draw();
+ };
+
+
+ /**
+ * Attach a sort listener to an element for a given column
+ * @param {node} nNode the element to attach the sort listener to
+ * @param {int} iColumn the column that a click on this node will sort on
+ * @param {function} [fnCallback] callback function when sort is run
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Sort on column 1, when 'sorter' is clicked on
+ * oTable.fnSortListener( document.getElementById('sorter'), 1 );
+ * } );
+ */
+ this.fnSortListener = function( nNode, iColumn, fnCallback )
+ {
+ this.api( true ).order.listener( nNode, iColumn, fnCallback );
+ };
+
+
+ /**
+ * Update a table cell or row - this method will accept either a single value to
+ * update the cell with, an array of values with one element for each column or
+ * an object in the same format as the original data source. The function is
+ * self-referencing in order to make the multi column updates easier.
+ * @param {object|array|string} mData Data to update the cell/row with
+ * @param {node|int} mRow TR element you want to update or the aoData index
+ * @param {int} [iColumn] The column to update, give as null or undefined to
+ * update a whole row.
+ * @param {bool} [bRedraw=true] Redraw the table or not
+ * @param {bool} [bAction=true] Perform pre-draw actions or not
+ * @returns {int} 0 on success, 1 on error
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
+ * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row
+ * } );
+ */
+ this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )
+ {
+ var api = this.api( true );
+
+ if ( iColumn === undefined || iColumn === null ) {
+ api.row( mRow ).data( mData );
+ }
+ else {
+ api.cell( mRow, iColumn ).data( mData );
+ }
+
+ if ( bAction === undefined || bAction ) {
+ api.columns.adjust();
+ }
+
+ if ( bRedraw === undefined || bRedraw ) {
+ api.draw();
+ }
+ return 0;
+ };
+
+
+ /**
+ * Provide a common method for plug-ins to check the version of DataTables being used, in order
+ * to ensure compatibility.
+ * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+ * formats "X" and "X.Y" are also acceptable.
+ * @returns {boolean} true if this version of DataTables is greater or equal to the required
+ * version, or false if this version of DataTales is not suitable
+ * @method
+ * @dtopt API
+ * @deprecated Since v1.10
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ * alert( oTable.fnVersionCheck( '1.9.0' ) );
+ * } );
+ */
+ this.fnVersionCheck = _ext.fnVersionCheck;
+
+
+ var _that = this;
+ var emptyInit = options === undefined;
+ var len = this.length;
+
+ if ( emptyInit ) {
+ options = {};
+ }
+
+ this.oApi = this.internal = _ext.internal;
+
+ // Extend with old style plug-in API methods
+ for ( var fn in DataTable.ext.internal ) {
+ if ( fn ) {
+ this[fn] = _fnExternApiFunc(fn);
+ }
+ }
+
+ this.each(function() {
+ // For each initialisation we want to give it a clean initialisation
+ // object that can be bashed around
+ var o = {};
+ var oInit = len > 1 ? // optimisation for single table case
+ _fnExtend( o, options, true ) :
+ options;
+
+ /*global oInit,_that,emptyInit*/
+ var i=0, iLen, j, jLen, k, kLen;
+ var sId = this.getAttribute( 'id' );
+ var bInitHandedOff = false;
+ var defaults = DataTable.defaults;
+ var $this = $(this);
+
+
+ /* Sanity check */
+ if ( this.nodeName.toLowerCase() != 'table' )
+ {
+ _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
+ return;
+ }
+
+ /* Backwards compatibility for the defaults */
+ _fnCompatOpts( defaults );
+ _fnCompatCols( defaults.column );
+
+ /* Convert the camel-case defaults to Hungarian */
+ _fnCamelToHungarian( defaults, defaults, true );
+ _fnCamelToHungarian( defaults.column, defaults.column, true );
+
+ /* Setting up the initialisation object */
+ _fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) );
+
+
+
+ /* Check to see if we are re-initialising a table */
+ var allSettings = DataTable.settings;
+ for ( i=0, iLen=allSettings.length ; i<iLen ; i++ )
+ {
+ var s = allSettings[i];
+
+ /* Base check on table node */
+ if ( s.nTable == this || s.nTHead.parentNode == this || (s.nTFoot && s.nTFoot.parentNode == this) )
+ {
+ var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;
+ var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;
+
+ if ( emptyInit || bRetrieve )
+ {
+ return s.oInstance;
+ }
+ else if ( bDestroy )
+ {
+ s.oInstance.fnDestroy();
+ break;
+ }
+ else
+ {
+ _fnLog( s, 0, 'Cannot reinitialise DataTable', 3 );
+ return;
+ }
+ }
+
+ /* If the element we are initialising has the same ID as a table which was previously
+ * initialised, but the table nodes don't match (from before) then we destroy the old
+ * instance by simply deleting it. This is under the assumption that the table has been
+ * destroyed by other methods. Anyone using non-id selectors will need to do this manually
+ */
+ if ( s.sTableId == this.id )
+ {
+ allSettings.splice( i, 1 );
+ break;
+ }
+ }
+
+ /* Ensure the table has an ID - required for accessibility */
+ if ( sId === null || sId === "" )
+ {
+ sId = "DataTables_Table_"+(DataTable.ext._unique++);
+ this.id = sId;
+ }
+
+ /* Create the settings object for this table and set some of the default parameters */
+ var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
+ "sDestroyWidth": $this[0].style.width,
+ "sInstance": sId,
+ "sTableId": sId
+ } );
+ oSettings.nTable = this;
+ oSettings.oApi = _that.internal;
+ oSettings.oInit = oInit;
+
+ allSettings.push( oSettings );
+
+ // Need to add the instance after the instance after the settings object has been added
+ // to the settings array, so we can self reference the table instance if more than one
+ oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable();
+
+ // Backwards compatibility, before we apply all the defaults
+ _fnCompatOpts( oInit );
+
+ if ( oInit.oLanguage )
+ {
+ _fnLanguageCompat( oInit.oLanguage );
+ }
+
+ // If the length menu is given, but the init display length is not, use the length menu
+ if ( oInit.aLengthMenu && ! oInit.iDisplayLength )
+ {
+ oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ?
+ oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];
+ }
+
+ // Apply the defaults and init options to make a single init object will all
+ // options defined from defaults and instance options.
+ oInit = _fnExtend( $.extend( true, {}, defaults ), oInit );
+
+
+ // Map the initialisation options onto the settings object
+ _fnMap( oSettings.oFeatures, oInit, [
+ "bPaginate",
+ "bLengthChange",
+ "bFilter",
+ "bSort",
+ "bSortMulti",
+ "bInfo",
+ "bProcessing",
+ "bAutoWidth",
+ "bSortClasses",
+ "bServerSide",
+ "bDeferRender"
+ ] );
+ _fnMap( oSettings, oInit, [
+ "asStripeClasses",
+ "ajax",
+ "fnServerData",
+ "fnFormatNumber",
+ "sServerMethod",
+ "aaSorting",
+ "aaSortingFixed",
+ "aLengthMenu",
+ "sPaginationType",
+ "sAjaxSource",
+ "sAjaxDataProp",
+ "iStateDuration",
+ "sDom",
+ "bSortCellsTop",
+ "iTabIndex",
+ "fnStateLoadCallback",
+ "fnStateSaveCallback",
+ "renderer",
+ "searchDelay",
+ [ "iCookieDuration", "iStateDuration" ], // backwards compat
+ [ "oSearch", "oPreviousSearch" ],
+ [ "aoSearchCols", "aoPreSearchCols" ],
+ [ "iDisplayLength", "_iDisplayLength" ],
+ [ "bJQueryUI", "bJUI" ]
+ ] );
+ _fnMap( oSettings.oScroll, oInit, [
+ [ "sScrollX", "sX" ],
+ [ "sScrollXInner", "sXInner" ],
+ [ "sScrollY", "sY" ],
+ [ "bScrollCollapse", "bCollapse" ]
+ ] );
+ _fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" );
+
+ /* Callback functions which are array driven */
+ _fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' );
+ _fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' );
+ _fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' );
+ _fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' );
+ _fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' );
+ _fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' );
+ _fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' );
+ _fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' );
+ _fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' );
+ _fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' );
+ _fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' );
+
+ var oClasses = oSettings.oClasses;
+
+ // @todo Remove in 1.11
+ if ( oInit.bJQueryUI )
+ {
+ /* Use the JUI classes object for display. You could clone the oStdClasses object if
+ * you want to have multiple tables with multiple independent classes
+ */
+ $.extend( oClasses, DataTable.ext.oJUIClasses, oInit.oClasses );
+
+ if ( oInit.sDom === defaults.sDom && defaults.sDom === "lfrtip" )
+ {
+ /* Set the DOM to use a layout suitable for jQuery UI's theming */
+ oSettings.sDom = '<"H"lfr>t<"F"ip>';
+ }
+
+ if ( ! oSettings.renderer ) {
+ oSettings.renderer = 'jqueryui';
+ }
+ else if ( $.isPlainObject( oSettings.renderer ) && ! oSettings.renderer.header ) {
+ oSettings.renderer.header = 'jqueryui';
+ }
+ }
+ else
+ {
+ $.extend( oClasses, DataTable.ext.classes, oInit.oClasses );
+ }
+ $this.addClass( oClasses.sTable );
+
+ /* Calculate the scroll bar width and cache it for use later on */
+ if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" )
+ {
+ oSettings.oScroll.iBarWidth = _fnScrollBarWidth();
+ }
+ if ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling
+ oSettings.oScroll.sX = '100%';
+ }
+
+ if ( oSettings.iInitDisplayStart === undefined )
+ {
+ /* Display start point, taking into account the save saving */
+ oSettings.iInitDisplayStart = oInit.iDisplayStart;
+ oSettings._iDisplayStart = oInit.iDisplayStart;
+ }
+
+ if ( oInit.iDeferLoading !== null )
+ {
+ oSettings.bDeferLoading = true;
+ var tmp = $.isArray( oInit.iDeferLoading );
+ oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;
+ oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;
+ }
+
+ /* Language definitions */
+ var oLanguage = oSettings.oLanguage;
+ $.extend( true, oLanguage, oInit.oLanguage );
+
+ if ( oLanguage.sUrl !== "" )
+ {
+ /* Get the language definitions from a file - because this Ajax call makes the language
+ * get async to the remainder of this function we use bInitHandedOff to indicate that
+ * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor
+ */
+ $.ajax( {
+ dataType: 'json',
+ url: oLanguage.sUrl,
+ success: function ( json ) {
+ _fnLanguageCompat( json );
+ _fnCamelToHungarian( defaults.oLanguage, json );
+ $.extend( true, oLanguage, json );
+ _fnInitialise( oSettings );
+ },
+ error: function () {
+ // Error occurred loading language file, continue on as best we can
+ _fnInitialise( oSettings );
+ }
+ } );
+ bInitHandedOff = true;
+ }
+
+ /*
+ * Stripes
+ */
+ if ( oInit.asStripeClasses === null )
+ {
+ oSettings.asStripeClasses =[
+ oClasses.sStripeOdd,
+ oClasses.sStripeEven
+ ];
+ }
+
+ /* Remove row stripe classes if they are already on the table row */
+ var stripeClasses = oSettings.asStripeClasses;
+ var rowOne = $this.children('tbody').find('tr').eq(0);
+ if ( $.inArray( true, $.map( stripeClasses, function(el, i) {
+ return rowOne.hasClass(el);
+ } ) ) !== -1 ) {
+ $('tbody tr', this).removeClass( stripeClasses.join(' ') );
+ oSettings.asDestroyStripes = stripeClasses.slice();
+ }
+
+ /*
+ * Columns
+ * See if we should load columns automatically or use defined ones
+ */
+ var anThs = [];
+ var aoColumnsInit;
+ var nThead = this.getElementsByTagName('thead');
+ if ( nThead.length !== 0 )
+ {
+ _fnDetectHeader( oSettings.aoHeader, nThead[0] );
+ anThs = _fnGetUniqueThs( oSettings );
+ }
+
+ /* If not given a column array, generate one with nulls */
+ if ( oInit.aoColumns === null )
+ {
+ aoColumnsInit = [];
+ for ( i=0, iLen=anThs.length ; i<iLen ; i++ )
+ {
+ aoColumnsInit.push( null );
+ }
+ }
+ else
+ {
+ aoColumnsInit = oInit.aoColumns;
+ }
+
+ /* Add the columns */
+ for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )
+ {
+ _fnAddColumn( oSettings, anThs ? anThs[i] : null );
+ }
+
+ /* Apply the column definitions */
+ _fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {
+ _fnColumnOptions( oSettings, iCol, oDef );
+ } );
+
+ /* HTML5 attribute detection - build an mData object automatically if the
+ * attributes are found
+ */
+ if ( rowOne.length ) {
+ var a = function ( cell, name ) {
+ return cell.getAttribute( 'data-'+name ) !== null ? name : null;
+ };
+
+ $.each( _fnGetRowElements( oSettings, rowOne[0] ).cells, function (i, cell) {
+ var col = oSettings.aoColumns[i];
+
+ if ( col.mData === i ) {
+ var sort = a( cell, 'sort' ) || a( cell, 'order' );
+ var filter = a( cell, 'filter' ) || a( cell, 'search' );
+
+ if ( sort !== null || filter !== null ) {
+ col.mData = {
+ _: i+'.display',
+ sort: sort !== null ? i+'.@data-'+sort : undefined,
+ type: sort !== null ? i+'.@data-'+sort : undefined,
+ filter: filter !== null ? i+'.@data-'+filter : undefined
+ };
+
+ _fnColumnOptions( oSettings, i );
+ }
+ }
+ } );
+ }
+
+ var features = oSettings.oFeatures;
+
+ /* Must be done after everything which can be overridden by the state saving! */
+ if ( oInit.bStateSave )
+ {
+ features.bStateSave = true;
+ _fnLoadState( oSettings, oInit );
+ _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
+ }
+
+
+ /*
+ * Sorting
+ * @todo For modularisation (1.11) this needs to do into a sort start up handler
+ */
+
+ // If aaSorting is not defined, then we use the first indicator in asSorting
+ // in case that has been altered, so the default sort reflects that option
+ if ( oInit.aaSorting === undefined )
+ {
+ var sorting = oSettings.aaSorting;
+ for ( i=0, iLen=sorting.length ; i<iLen ; i++ )
+ {
+ sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];
+ }
+ }
+
+ /* Do a first pass on the sorting classes (allows any size changes to be taken into
+ * account, and also will apply sorting disabled classes if disabled
+ */
+ _fnSortingClasses( oSettings );
+
+ if ( features.bSort )
+ {
+ _fnCallbackReg( oSettings, 'aoDrawCallback', function () {
+ if ( oSettings.bSorted ) {
+ var aSort = _fnSortFlatten( oSettings );
+ var sortedColumns = {};
+
+ $.each( aSort, function (i, val) {
+ sortedColumns[ val.src ] = val.dir;
+ } );
+
+ _fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );
+ _fnSortAria( oSettings );
+ }
+ } );
+ }
+
+ _fnCallbackReg( oSettings, 'aoDrawCallback', function () {
+ if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {
+ _fnSortingClasses( oSettings );
+ }
+ }, 'sc' );
+
+
+ /*
+ * Final init
+ * Cache the header, body and footer as required, creating them if needed
+ */
+
+ /* Browser support detection */
+ _fnBrowserDetect( oSettings );
+
+ // Work around for Webkit bug 83867 - store the caption-side before removing from doc
+ var captions = $this.children('caption').each( function () {
+ this._captionSide = $this.css('caption-side');
+ } );
+
+ var thead = $this.children('thead');
+ if ( thead.length === 0 )
+ {
+ thead = $('<thead/>').appendTo(this);
+ }
+ oSettings.nTHead = thead[0];
+
+ var tbody = $this.children('tbody');
+ if ( tbody.length === 0 )
+ {
+ tbody = $('<tbody/>').appendTo(this);
+ }
+ oSettings.nTBody = tbody[0];
+
+ var tfoot = $this.children('tfoot');
+ if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") )
+ {
+ // If we are a scrolling table, and no footer has been given, then we need to create
+ // a tfoot element for the caption element to be appended to
+ tfoot = $('<tfoot/>').appendTo(this);
+ }
+
+ if ( tfoot.length === 0 || tfoot.children().length === 0 ) {
+ $this.addClass( oClasses.sNoFooter );
+ }
+ else if ( tfoot.length > 0 ) {
+ oSettings.nTFoot = tfoot[0];
+ _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );
+ }
+
+ /* Check if there is data passing into the constructor */
+ if ( oInit.aaData )
+ {
+ for ( i=0 ; i<oInit.aaData.length ; i++ )
+ {
+ _fnAddData( oSettings, oInit.aaData[ i ] );
+ }
+ }
+ else if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' )
+ {
+ /* Grab the data from the page - only do this when deferred loading or no Ajax
+ * source since there is no point in reading the DOM data if we are then going
+ * to replace it with Ajax data
+ */
+ _fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );
+ }
+
+ /* Copy the data index array */
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+
+ /* Initialisation complete - table can be drawn */
+ oSettings.bInitialised = true;
+
+ /* Check if we need to initialise the table (it might not have been handed off to the
+ * language processor)
+ */
+ if ( bInitHandedOff === false )
+ {
+ _fnInitialise( oSettings );
+ }
+ } );
+ _that = null;
+ return this;
+ };
+
+
+
+ /**
+ * Computed structure of the DataTables API, defined by the options passed to
+ * `DataTable.Api.register()` when building the API.
+ *
+ * The structure is built in order to speed creation and extension of the Api
+ * objects since the extensions are effectively pre-parsed.
+ *
+ * The array is an array of objects with the following structure, where this
+ * base array represents the Api prototype base:
+ *
+ * [
+ * {
+ * name: 'data' -- string - Property name
+ * val: function () {}, -- function - Api method (or undefined if just an object
+ * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result
+ * propExt: [ ... ] -- array - Array of Api object definitions to extend the property
+ * },
+ * {
+ * name: 'row'
+ * val: {},
+ * methodExt: [ ... ],
+ * propExt: [
+ * {
+ * name: 'data'
+ * val: function () {},
+ * methodExt: [ ... ],
+ * propExt: [ ... ]
+ * },
+ * ...
+ * ]
+ * }
+ * ]
+ *
+ * @type {Array}
+ * @ignore
+ */
+ var __apiStruct = [];
+
+
+ /**
+ * `Array.prototype` reference.
+ *
+ * @type object
+ * @ignore
+ */
+ var __arrayProto = Array.prototype;
+
+
+ /**
+ * Abstraction for `context` parameter of the `Api` constructor to allow it to
+ * take several different forms for ease of use.
+ *
+ * Each of the input parameter types will be converted to a DataTables settings
+ * object where possible.
+ *
+ * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one
+ * of:
+ *
+ * * `string` - jQuery selector. Any DataTables' matching the given selector
+ * with be found and used.
+ * * `node` - `TABLE` node which has already been formed into a DataTable.
+ * * `jQuery` - A jQuery object of `TABLE` nodes.
+ * * `object` - DataTables settings object
+ * * `DataTables.Api` - API instance
+ * @return {array|null} Matching DataTables settings objects. `null` or
+ * `undefined` is returned if no matching DataTable is found.
+ * @ignore
+ */
+ var _toSettings = function ( mixed )
+ {
+ var idx, jq;
+ var settings = DataTable.settings;
+ var tables = $.map( settings, function (el, i) {
+ return el.nTable;
+ } );
+
+ if ( ! mixed ) {
+ return [];
+ }
+ else if ( mixed.nTable && mixed.oApi ) {
+ // DataTables settings object
+ return [ mixed ];
+ }
+ else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {
+ // Table node
+ idx = $.inArray( mixed, tables );
+ return idx !== -1 ? [ settings[idx] ] : null;
+ }
+ else if ( mixed && typeof mixed.settings === 'function' ) {
+ return mixed.settings().toArray();
+ }
+ else if ( typeof mixed === 'string' ) {
+ // jQuery selector
+ jq = $(mixed);
+ }
+ else if ( mixed instanceof $ ) {
+ // jQuery object (also DataTables instance)
+ jq = mixed;
+ }
+
+ if ( jq ) {
+ return jq.map( function(i) {
+ idx = $.inArray( this, tables );
+ return idx !== -1 ? settings[idx] : null;
+ } ).toArray();
+ }
+ };
+
+
+ /**
+ * DataTables API class - used to control and interface with one or more
+ * DataTables enhanced tables.
+ *
+ * The API class is heavily based on jQuery, presenting a chainable interface
+ * that you can use to interact with tables. Each instance of the API class has
+ * a "context" - i.e. the tables that it will operate on. This could be a single
+ * table, all tables on a page or a sub-set thereof.
+ *
+ * Additionally the API is designed to allow you to easily work with the data in
+ * the tables, retrieving and manipulating it as required. This is done by
+ * presenting the API class as an array like interface. The contents of the
+ * array depend upon the actions requested by each method (for example
+ * `rows().nodes()` will return an array of nodes, while `rows().data()` will
+ * return an array of objects or arrays depending upon your table's
+ * configuration). The API object has a number of array like methods (`push`,
+ * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,
+ * `unique` etc) to assist your working with the data held in a table.
+ *
+ * Most methods (those which return an Api instance) are chainable, which means
+ * the return from a method call also has all of the methods available that the
+ * top level object had. For example, these two calls are equivalent:
+ *
+ * // Not chained
+ * api.row.add( {...} );
+ * api.draw();
+ *
+ * // Chained
+ * api.row.add( {...} ).draw();
+ *
+ * @class DataTable.Api
+ * @param {array|object|string|jQuery} context DataTable identifier. This is
+ * used to define which DataTables enhanced tables this API will operate on.
+ * Can be one of:
+ *
+ * * `string` - jQuery selector. Any DataTables' matching the given selector
+ * with be found and used.
+ * * `node` - `TABLE` node which has already been formed into a DataTable.
+ * * `jQuery` - A jQuery object of `TABLE` nodes.
+ * * `object` - DataTables settings object
+ * @param {array} [data] Data to initialise the Api instance with.
+ *
+ * @example
+ * // Direct initialisation during DataTables construction
+ * var api = $('#example').DataTable();
+ *
+ * @example
+ * // Initialisation using a DataTables jQuery object
+ * var api = $('#example').dataTable().api();
+ *
+ * @example
+ * // Initialisation as a constructor
+ * var api = new $.fn.DataTable.Api( 'table.dataTable' );
+ */
+ _Api = function ( context, data )
+ {
+ if ( ! (this instanceof _Api) ) {
+ return new _Api( context, data );
+ }
+
+ var settings = [];
+ var ctxSettings = function ( o ) {
+ var a = _toSettings( o );
+ if ( a ) {
+ settings.push.apply( settings, a );
+ }
+ };
+
+ if ( $.isArray( context ) ) {
+ for ( var i=0, ien=context.length ; i<ien ; i++ ) {
+ ctxSettings( context[i] );
+ }
+ }
+ else {
+ ctxSettings( context );
+ }
+
+ // Remove duplicates
+ this.context = _unique( settings );
+
+ // Initial data
+ if ( data ) {
+ this.push.apply( this, data.toArray ? data.toArray() : data );
+ }
+
+ // selector
+ this.selector = {
+ rows: null,
+ cols: null,
+ opts: null
+ };
+
+ _Api.extend( this, this, __apiStruct );
+ };
+
+ DataTable.Api = _Api;
+
+ _Api.prototype = /** @lends DataTables.Api */{
+ any: function ()
+ {
+ return this.flatten().length !== 0;
+ },
+
+
+ concat: __arrayProto.concat,
+
+
+ context: [], // array of table settings objects
+
+
+ each: function ( fn )
+ {
+ for ( var i=0, ien=this.length ; i<ien; i++ ) {
+ fn.call( this, this[i], i, this );
+ }
+
+ return this;
+ },
+
+
+ eq: function ( idx )
+ {
+ var ctx = this.context;
+
+ return ctx.length > idx ?
+ new _Api( ctx[idx], this[idx] ) :
+ null;
+ },
+
+
+ filter: function ( fn )
+ {
+ var a = [];
+
+ if ( __arrayProto.filter ) {
+ a = __arrayProto.filter.call( this, fn, this );
+ }
+ else {
+ // Compatibility for browsers without EMCA-252-5 (JS 1.6)
+ for ( var i=0, ien=this.length ; i<ien ; i++ ) {
+ if ( fn.call( this, this[i], i, this ) ) {
+ a.push( this[i] );
+ }
+ }
+ }
+
+ return new _Api( this.context, a );
+ },
+
+
+ flatten: function ()
+ {
+ var a = [];
+ return new _Api( this.context, a.concat.apply( a, this.toArray() ) );
+ },
+
+
+ join: __arrayProto.join,
+
+
+ indexOf: __arrayProto.indexOf || function (obj, start)
+ {
+ for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {
+ if ( this[i] === obj ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ iterator: function ( flatten, type, fn, alwaysNew ) {
+ var
+ a = [], ret,
+ i, ien, j, jen,
+ context = this.context,
+ rows, items, item,
+ selector = this.selector;
+
+ // Argument shifting
+ if ( typeof flatten === 'string' ) {
+ alwaysNew = fn;
+ fn = type;
+ type = flatten;
+ flatten = false;
+ }
+
+ for ( i=0, ien=context.length ; i<ien ; i++ ) {
+ var apiInst = new _Api( context[i] );
+
+ if ( type === 'table' ) {
+ ret = fn.call( apiInst, context[i], i );
+
+ if ( ret !== undefined ) {
+ a.push( ret );
+ }
+ }
+ else if ( type === 'columns' || type === 'rows' ) {
+ // this has same length as context - one entry for each table
+ ret = fn.call( apiInst, context[i], this[i], i );
+
+ if ( ret !== undefined ) {
+ a.push( ret );
+ }
+ }
+ else if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {
+ // columns and rows share the same structure.
+ // 'this' is an array of column indexes for each context
+ items = this[i];
+
+ if ( type === 'column-rows' ) {
+ rows = _selector_row_indexes( context[i], selector.opts );
+ }
+
+ for ( j=0, jen=items.length ; j<jen ; j++ ) {
+ item = items[j];
+
+ if ( type === 'cell' ) {
+ ret = fn.call( apiInst, context[i], item.row, item.column, i, j );
+ }
+ else {
+ ret = fn.call( apiInst, context[i], item, i, j, rows );
+ }
+
+ if ( ret !== undefined ) {
+ a.push( ret );
+ }
+ }
+ }
+ }
+
+ if ( a.length || alwaysNew ) {
+ var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );
+ var apiSelector = api.selector;
+ apiSelector.rows = selector.rows;
+ apiSelector.cols = selector.cols;
+ apiSelector.opts = selector.opts;
+ return api;
+ }
+ return this;
+ },
+
+
+ lastIndexOf: __arrayProto.lastIndexOf || function (obj, start)
+ {
+ // Bit cheeky...
+ return this.indexOf.apply( this.toArray.reverse(), arguments );
+ },
+
+
+ length: 0,
+
+
+ map: function ( fn )
+ {
+ var a = [];
+
+ if ( __arrayProto.map ) {
+ a = __arrayProto.map.call( this, fn, this );
+ }
+ else {
+ // Compatibility for browsers without EMCA-252-5 (JS 1.6)
+ for ( var i=0, ien=this.length ; i<ien ; i++ ) {
+ a.push( fn.call( this, this[i], i ) );
+ }
+ }
+
+ return new _Api( this.context, a );
+ },
+
+
+ pluck: function ( prop )
+ {
+ return this.map( function ( el ) {
+ return el[ prop ];
+ } );
+ },
+
+ pop: __arrayProto.pop,
+
+
+ push: __arrayProto.push,
+
+
+ // Does not return an API instance
+ reduce: __arrayProto.reduce || function ( fn, init )
+ {
+ return _fnReduce( this, fn, init, 0, this.length, 1 );
+ },
+
+
+ reduceRight: __arrayProto.reduceRight || function ( fn, init )
+ {
+ return _fnReduce( this, fn, init, this.length-1, -1, -1 );
+ },
+
+
+ reverse: __arrayProto.reverse,
+
+
+ // Object with rows, columns and opts
+ selector: null,
+
+
+ shift: __arrayProto.shift,
+
+
+ sort: __arrayProto.sort, // ? name - order?
+
+
+ splice: __arrayProto.splice,
+
+
+ toArray: function ()
+ {
+ return __arrayProto.slice.call( this );
+ },
+
+
+ to$: function ()
+ {
+ return $( this );
+ },
+
+
+ toJQuery: function ()
+ {
+ return $( this );
+ },
+
+
+ unique: function ()
+ {
+ return new _Api( this.context, _unique(this) );
+ },
+
+
+ unshift: __arrayProto.unshift
+ };
+
+
+ _Api.extend = function ( scope, obj, ext )
+ {
+ // Only extend API instances and static properties of the API
+ if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {
+ return;
+ }
+
+ var
+ i, ien,
+ j, jen,
+ struct, inner,
+ methodScoping = function ( scope, fn, struc ) {
+ return function () {
+ var ret = fn.apply( scope, arguments );
+
+ // Method extension
+ _Api.extend( ret, ret, struc.methodExt );
+ return ret;
+ };
+ };
+
+ for ( i=0, ien=ext.length ; i<ien ; i++ ) {
+ struct = ext[i];
+
+ // Value
+ obj[ struct.name ] = typeof struct.val === 'function' ?
+ methodScoping( scope, struct.val, struct ) :
+ $.isPlainObject( struct.val ) ?
+ {} :
+ struct.val;
+
+ obj[ struct.name ].__dt_wrapper = true;
+
+ // Property extension
+ _Api.extend( scope, obj[ struct.name ], struct.propExt );
+ }
+ };
+
+
+ // @todo - Is there need for an augment function?
+ // _Api.augment = function ( inst, name )
+ // {
+ // // Find src object in the structure from the name
+ // var parts = name.split('.');
+
+ // _Api.extend( inst, obj );
+ // };
+
+
+ // [
+ // {
+ // name: 'data' -- string - Property name
+ // val: function () {}, -- function - Api method (or undefined if just an object
+ // methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result
+ // propExt: [ ... ] -- array - Array of Api object definitions to extend the property
+ // },
+ // {
+ // name: 'row'
+ // val: {},
+ // methodExt: [ ... ],
+ // propExt: [
+ // {
+ // name: 'data'
+ // val: function () {},
+ // methodExt: [ ... ],
+ // propExt: [ ... ]
+ // },
+ // ...
+ // ]
+ // }
+ // ]
+
+ _Api.register = _api_register = function ( name, val )
+ {
+ if ( $.isArray( name ) ) {
+ for ( var j=0, jen=name.length ; j<jen ; j++ ) {
+ _Api.register( name[j], val );
+ }
+ return;
+ }
+
+ var
+ i, ien,
+ heir = name.split('.'),
+ struct = __apiStruct,
+ key, method;
+
+ var find = function ( src, name ) {
+ for ( var i=0, ien=src.length ; i<ien ; i++ ) {
+ if ( src[i].name === name ) {
+ return src[i];
+ }
+ }
+ return null;
+ };
+
+ for ( i=0, ien=heir.length ; i<ien ; i++ ) {
+ method = heir[i].indexOf('()') !== -1;
+ key = method ?
+ heir[i].replace('()', '') :
+ heir[i];
+
+ var src = find( struct, key );
+ if ( ! src ) {
+ src = {
+ name: key,
+ val: {},
+ methodExt: [],
+ propExt: []
+ };
+ struct.push( src );
+ }
+
+ if ( i === ien-1 ) {
+ src.val = val;
+ }
+ else {
+ struct = method ?
+ src.methodExt :
+ src.propExt;
+ }
+ }
+ };
+
+
+ _Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {
+ _Api.register( pluralName, val );
+
+ _Api.register( singularName, function () {
+ var ret = val.apply( this, arguments );
+
+ if ( ret === this ) {
+ // Returned item is the API instance that was passed in, return it
+ return this;
+ }
+ else if ( ret instanceof _Api ) {
+ // New API instance returned, want the value from the first item
+ // in the returned array for the singular result.
+ return ret.length ?
+ $.isArray( ret[0] ) ?
+ new _Api( ret.context, ret[0] ) : // Array results are 'enhanced'
+ ret[0] :
+ undefined;
+ }
+
+ // Non-API return - just fire it back
+ return ret;
+ } );
+ };
+
+
+ /**
+ * Selector for HTML tables. Apply the given selector to the give array of
+ * DataTables settings objects.
+ *
+ * @param {string|integer} [selector] jQuery selector string or integer
+ * @param {array} Array of DataTables settings objects to be filtered
+ * @return {array}
+ * @ignore
+ */
+ var __table_selector = function ( selector, a )
+ {
+ // Integer is used to pick out a table by index
+ if ( typeof selector === 'number' ) {
+ return [ a[ selector ] ];
+ }
+
+ // Perform a jQuery selector on the table nodes
+ var nodes = $.map( a, function (el, i) {
+ return el.nTable;
+ } );
+
+ return $(nodes)
+ .filter( selector )
+ .map( function (i) {
+ // Need to translate back from the table node to the settings
+ var idx = $.inArray( this, nodes );
+ return a[ idx ];
+ } )
+ .toArray();
+ };
+
+
+
+ /**
+ * Context selector for the API's context (i.e. the tables the API instance
+ * refers to.
+ *
+ * @name DataTable.Api#tables
+ * @param {string|integer} [selector] Selector to pick which tables the iterator
+ * should operate on. If not given, all tables in the current context are
+ * used. This can be given as a jQuery selector (for example `':gt(0)'`) to
+ * select multiple tables or as an integer to select a single table.
+ * @returns {DataTable.Api} Returns a new API instance if a selector is given.
+ */
+ _api_register( 'tables()', function ( selector ) {
+ // A new instance is created if there was a selector specified
+ return selector ?
+ new _Api( __table_selector( selector, this.context ) ) :
+ this;
+ } );
+
+
+ _api_register( 'table()', function ( selector ) {
+ var tables = this.tables( selector );
+ var ctx = tables.context;
+
+ // Truncate to the first matched table
+ return ctx.length ?
+ new _Api( ctx[0] ) :
+ tables;
+ } );
+
+
+ _api_registerPlural( 'tables().nodes()', 'table().node()' , function () {
+ return this.iterator( 'table', function ( ctx ) {
+ return ctx.nTable;
+ }, 1 );
+ } );
+
+
+ _api_registerPlural( 'tables().body()', 'table().body()' , function () {
+ return this.iterator( 'table', function ( ctx ) {
+ return ctx.nTBody;
+ }, 1 );
+ } );
+
+
+ _api_registerPlural( 'tables().header()', 'table().header()' , function () {
+ return this.iterator( 'table', function ( ctx ) {
+ return ctx.nTHead;
+ }, 1 );
+ } );
+
+
+ _api_registerPlural( 'tables().footer()', 'table().footer()' , function () {
+ return this.iterator( 'table', function ( ctx ) {
+ return ctx.nTFoot;
+ }, 1 );
+ } );
+
+
+ _api_registerPlural( 'tables().containers()', 'table().container()' , function () {
+ return this.iterator( 'table', function ( ctx ) {
+ return ctx.nTableWrapper;
+ }, 1 );
+ } );
+
+
+
+ /**
+ * Redraw the tables in the current context.
+ *
+ * @param {boolean} [reset=true] Reset (default) or hold the current paging
+ * position. A full re-sort and re-filter is performed when this method is
+ * called, which is why the pagination reset is the default action.
+ * @returns {DataTables.Api} this
+ */
+ _api_register( 'draw()', function ( resetPaging ) {
+ return this.iterator( 'table', function ( settings ) {
+ _fnReDraw( settings, resetPaging===false );
+ } );
+ } );
+
+
+
+ /**
+ * Get the current page index.
+ *
+ * @return {integer} Current page index (zero based)
+ *//**
+ * Set the current page.
+ *
+ * Note that if you attempt to show a page which does not exist, DataTables will
+ * not throw an error, but rather reset the paging.
+ *
+ * @param {integer|string} action The paging action to take. This can be one of:
+ * * `integer` - The page index to jump to
+ * * `string` - An action to take:
+ * * `first` - Jump to first page.
+ * * `next` - Jump to the next page
+ * * `previous` - Jump to previous page
+ * * `last` - Jump to the last page.
+ * @returns {DataTables.Api} this
+ */
+ _api_register( 'page()', function ( action ) {
+ if ( action === undefined ) {
+ return this.page.info().page; // not an expensive call
+ }
+
+ // else, have an action to take on all tables
+ return this.iterator( 'table', function ( settings ) {
+ _fnPageChange( settings, action );
+ } );
+ } );
+
+
+ /**
+ * Paging information for the first table in the current context.
+ *
+ * If you require paging information for another table, use the `table()` method
+ * with a suitable selector.
+ *
+ * @return {object} Object with the following properties set:
+ * * `page` - Current page index (zero based - i.e. the first page is `0`)
+ * * `pages` - Total number of pages
+ * * `start` - Display index for the first record shown on the current page
+ * * `end` - Display index for the last record shown on the current page
+ * * `length` - Display length (number of records). Note that generally `start
+ * + length = end`, but this is not always true, for example if there are
+ * only 2 records to show on the final page, with a length of 10.
+ * * `recordsTotal` - Full data set length
+ * * `recordsDisplay` - Data set length once the current filtering criterion
+ * are applied.
+ */
+ _api_register( 'page.info()', function ( action ) {
+ if ( this.context.length === 0 ) {
+ return undefined;
+ }
+
+ var
+ settings = this.context[0],
+ start = settings._iDisplayStart,
+ len = settings._iDisplayLength,
+ visRecords = settings.fnRecordsDisplay(),
+ all = len === -1;
+
+ return {
+ "page": all ? 0 : Math.floor( start / len ),
+ "pages": all ? 1 : Math.ceil( visRecords / len ),
+ "start": start,
+ "end": settings.fnDisplayEnd(),
+ "length": len,
+ "recordsTotal": settings.fnRecordsTotal(),
+ "recordsDisplay": visRecords
+ };
+ } );
+
+
+ /**
+ * Get the current page length.
+ *
+ * @return {integer} Current page length. Note `-1` indicates that all records
+ * are to be shown.
+ *//**
+ * Set the current page length.
+ *
+ * @param {integer} Page length to set. Use `-1` to show all records.
+ * @returns {DataTables.Api} this
+ */
+ _api_register( 'page.len()', function ( len ) {
+ // Note that we can't call this function 'length()' because `length`
+ // is a Javascript property of functions which defines how many arguments
+ // the function expects.
+ if ( len === undefined ) {
+ return this.context.length !== 0 ?
+ this.context[0]._iDisplayLength :
+ undefined;
+ }
+
+ // else, set the page length
+ return this.iterator( 'table', function ( settings ) {
+ _fnLengthChange( settings, len );
+ } );
+ } );
+
+
+
+ var __reload = function ( settings, holdPosition, callback ) {
+ // Use the draw event to trigger a callback
+ if ( callback ) {
+ var api = new _Api( settings );
+
+ api.one( 'draw', function () {
+ callback( api.ajax.json() );
+ } );
+ }
+
+ if ( _fnDataSource( settings ) == 'ssp' ) {
+ _fnReDraw( settings, holdPosition );
+ }
+ else {
+ // Trigger xhr
+ _fnProcessingDisplay( settings, true );
+
+ _fnBuildAjax( settings, [], function( json ) {
+ _fnClearTable( settings );
+
+ var data = _fnAjaxDataSrc( settings, json );
+ for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+ _fnAddData( settings, data[i] );
+ }
+
+ _fnReDraw( settings, holdPosition );
+ _fnProcessingDisplay( settings, false );
+ } );
+ }
+ };
+
+
+ /**
+ * Get the JSON response from the last Ajax request that DataTables made to the
+ * server. Note that this returns the JSON from the first table in the current
+ * context.
+ *
+ * @return {object} JSON received from the server.
+ */
+ _api_register( 'ajax.json()', function () {
+ var ctx = this.context;
+
+ if ( ctx.length > 0 ) {
+ return ctx[0].json;
+ }
+
+ // else return undefined;
+ } );
+
+
+ /**
+ * Get the data submitted in the last Ajax request
+ */
+ _api_register( 'ajax.params()', function () {
+ var ctx = this.context;
+
+ if ( ctx.length > 0 ) {
+ return ctx[0].oAjaxData;
+ }
+
+ // else return undefined;
+ } );
+
+
+ /**
+ * Reload tables from the Ajax data source. Note that this function will
+ * automatically re-draw the table when the remote data has been loaded.
+ *
+ * @param {boolean} [reset=true] Reset (default) or hold the current paging
+ * position. A full re-sort and re-filter is performed when this method is
+ * called, which is why the pagination reset is the default action.
+ * @returns {DataTables.Api} this
+ */
+ _api_register( 'ajax.reload()', function ( callback, resetPaging ) {
+ return this.iterator( 'table', function (settings) {
+ __reload( settings, resetPaging===false, callback );
+ } );
+ } );
+
+
+ /**
+ * Get the current Ajax URL. Note that this returns the URL from the first
+ * table in the current context.
+ *
+ * @return {string} Current Ajax source URL
+ *//**
+ * Set the Ajax URL. Note that this will set the URL for all tables in the
+ * current context.
+ *
+ * @param {string} url URL to set.
+ * @returns {DataTables.Api} this
+ */
+ _api_register( 'ajax.url()', function ( url ) {
+ var ctx = this.context;
+
+ if ( url === undefined ) {
+ // get
+ if ( ctx.length === 0 ) {
+ return undefined;
+ }
+ ctx = ctx[0];
+
+ return ctx.ajax ?
+ $.isPlainObject( ctx.ajax ) ?
+ ctx.ajax.url :
+ ctx.ajax :
+ ctx.sAjaxSource;
+ }
+
+ // set
+ return this.iterator( 'table', function ( settings ) {
+ if ( $.isPlainObject( settings.ajax ) ) {
+ settings.ajax.url = url;
+ }
+ else {
+ settings.ajax = url;
+ }
+ // No need to consider sAjaxSource here since DataTables gives priority
+ // to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any
+ // value of `sAjaxSource` redundant.
+ } );
+ } );
+
+
+ /**
+ * Load data from the newly set Ajax URL. Note that this method is only
+ * available when `ajax.url()` is used to set a URL. Additionally, this method
+ * has the same effect as calling `ajax.reload()` but is provided for
+ * convenience when setting a new URL. Like `ajax.reload()` it will
+ * automatically redraw the table once the remote data has been loaded.
+ *
+ * @returns {DataTables.Api} this
+ */
+ _api_register( 'ajax.url().load()', function ( callback, resetPaging ) {
+ // Same as a reload, but makes sense to present it for easy access after a
+ // url change
+ return this.iterator( 'table', function ( ctx ) {
+ __reload( ctx, resetPaging===false, callback );
+ } );
+ } );
+
+
+
+
+ var _selector_run = function ( type, selector, selectFn, settings, opts )
+ {
+ var
+ out = [], res,
+ a, i, ien, j, jen,
+ selectorType = typeof selector;
+
+ // Can't just check for isArray here, as an API or jQuery instance might be
+ // given with their array like look
+ if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {
+ selector = [ selector ];
+ }
+
+ for ( i=0, ien=selector.length ; i<ien ; i++ ) {
+ a = selector[i] && selector[i].split ?
+ selector[i].split(',') :
+ [ selector[i] ];
+
+ for ( j=0, jen=a.length ; j<jen ; j++ ) {
+ res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );
+
+ if ( res && res.length ) {
+ out.push.apply( out, res );
+ }
+ }
+ }
+
+ // selector extensions
+ var ext = _ext.selector[ type ];
+ if ( ext.length ) {
+ for ( i=0, ien=ext.length ; i<ien ; i++ ) {
+ out = ext[i]( settings, opts, out );
+ }
+ }
+
+ return out;
+ };
+
+
+ var _selector_opts = function ( opts )
+ {
+ if ( ! opts ) {
+ opts = {};
+ }
+
+ // Backwards compatibility for 1.9- which used the terminology filter rather
+ // than search
+ if ( opts.filter && opts.search === undefined ) {
+ opts.search = opts.filter;
+ }
+
+ return $.extend( {
+ search: 'none',
+ order: 'current',
+ page: 'all'
+ }, opts );
+ };
+
+
+ var _selector_first = function ( inst )
+ {
+ // Reduce the API instance to the first item found
+ for ( var i=0, ien=inst.length ; i<ien ; i++ ) {
+ if ( inst[i].length > 0 ) {
+ // Assign the first element to the first item in the instance
+ // and truncate the instance and context
+ inst[0] = inst[i];
+ inst[0].length = 1;
+ inst.length = 1;
+ inst.context = [ inst.context[i] ];
+
+ return inst;
+ }
+ }
+
+ // Not found - return an empty instance
+ inst.length = 0;
+ return inst;
+ };
+
+
+ var _selector_row_indexes = function ( settings, opts )
+ {
+ var
+ i, ien, tmp, a=[],
+ displayFiltered = settings.aiDisplay,
+ displayMaster = settings.aiDisplayMaster;
+
+ var
+ search = opts.search, // none, applied, removed
+ order = opts.order, // applied, current, index (original - compatibility with 1.9)
+ page = opts.page; // all, current
+
+ if ( _fnDataSource( settings ) == 'ssp' ) {
+ // In server-side processing mode, most options are irrelevant since
+ // rows not shown don't exist and the index order is the applied order
+ // Removed is a special case - for consistency just return an empty
+ // array
+ return search === 'removed' ?
+ [] :
+ _range( 0, displayMaster.length );
+ }
+ else if ( page == 'current' ) {
+ // Current page implies that order=current and fitler=applied, since it is
+ // fairly senseless otherwise, regardless of what order and search actually
+ // are
+ for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {
+ a.push( displayFiltered[i] );
+ }
+ }
+ else if ( order == 'current' || order == 'applied' ) {
+ a = search == 'none' ?
+ displayMaster.slice() : // no search
+ search == 'applied' ?
+ displayFiltered.slice() : // applied search
+ $.map( displayMaster, function (el, i) { // removed search
+ return $.inArray( el, displayFiltered ) === -1 ? el : null;
+ } );
+ }
+ else if ( order == 'index' || order == 'original' ) {
+ for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
+ if ( search == 'none' ) {
+ a.push( i );
+ }
+ else { // applied | removed
+ tmp = $.inArray( i, displayFiltered );
+
+ if ((tmp === -1 && search == 'removed') ||
+ (tmp >= 0 && search == 'applied') )
+ {
+ a.push( i );
+ }
+ }
+ }
+ }
+
+ return a;
+ };
+
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Rows
+ *
+ * {} - no selector - use all available rows
+ * {integer} - row aoData index
+ * {node} - TR node
+ * {string} - jQuery selector to apply to the TR elements
+ * {array} - jQuery array of nodes, or simply an array of TR nodes
+ *
+ */
+
+
+ var __row_selector = function ( settings, selector, opts )
+ {
+ var run = function ( sel ) {
+ var selInt = _intVal( sel );
+ var i, ien;
+
+ // Short cut - selector is a number and no options provided (default is
+ // all records, so no need to check if the index is in there, since it
+ // must be - dev error if the index doesn't exist).
+ if ( selInt !== null && ! opts ) {
+ return [ selInt ];
+ }
+
+ var rows = _selector_row_indexes( settings, opts );
+
+ if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {
+ // Selector - integer
+ return [ selInt ];
+ }
+ else if ( ! sel ) {
+ // Selector - none
+ return rows;
+ }
+
+ // Selector - function
+ if ( typeof sel === 'function' ) {
+ return $.map( rows, function (idx) {
+ var row = settings.aoData[ idx ];
+ return sel( idx, row._aData, row.nTr ) ? idx : null;
+ } );
+ }
+
+ // Get nodes in the order from the `rows` array with null values removed
+ var nodes = _removeEmpty(
+ _pluck_order( settings.aoData, rows, 'nTr' )
+ );
+
+ // Selector - node
+ if ( sel.nodeName ) {
+ if ( $.inArray( sel, nodes ) !== -1 ) {
+ return [ sel._DT_RowIndex ]; // sel is a TR node that is in the table
+ // and DataTables adds a prop for fast lookup
+ }
+ }
+
+ // Selector - jQuery selector string, array of nodes or jQuery object/
+ // As jQuery's .filter() allows jQuery objects to be passed in filter,
+ // it also allows arrays, so this will cope with all three options
+ return $(nodes)
+ .filter( sel )
+ .map( function () {
+ return this._DT_RowIndex;
+ } )
+ .toArray();
+ };
+
+ return _selector_run( 'row', selector, run, settings, opts );
+ };
+
+
+ _api_register( 'rows()', function ( selector, opts ) {
+ // argument shifting
+ if ( selector === undefined ) {
+ selector = '';
+ }
+ else if ( $.isPlainObject( selector ) ) {
+ opts = selector;
+ selector = '';
+ }
+
+ opts = _selector_opts( opts );
+
+ var inst = this.iterator( 'table', function ( settings ) {
+ return __row_selector( settings, selector, opts );
+ }, 1 );
+
+ // Want argument shifting here and in __row_selector?
+ inst.selector.rows = selector;
+ inst.selector.opts = opts;
+
+ return inst;
+ } );
+
+ _api_register( 'rows().nodes()', function () {
+ return this.iterator( 'row', function ( settings, row ) {
+ return settings.aoData[ row ].nTr || undefined;
+ }, 1 );
+ } );
+
+ _api_register( 'rows().data()', function () {
+ return this.iterator( true, 'rows', function ( settings, rows ) {
+ return _pluck_order( settings.aoData, rows, '_aData' );
+ }, 1 );
+ } );
+
+ _api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {
+ return this.iterator( 'row', function ( settings, row ) {
+ var r = settings.aoData[ row ];
+ return type === 'search' ? r._aFilterData : r._aSortData;
+ }, 1 );
+ } );
+
+ _api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {
+ return this.iterator( 'row', function ( settings, row ) {
+ _fnInvalidate( settings, row, src );
+ } );
+ } );
+
+ _api_registerPlural( 'rows().indexes()', 'row().index()', function () {
+ return this.iterator( 'row', function ( settings, row ) {
+ return row;
+ }, 1 );
+ } );
+
+ _api_registerPlural( 'rows().remove()', 'row().remove()', function () {
+ var that = this;
+
+ return this.iterator( 'row', function ( settings, row, thatIdx ) {
+ var data = settings.aoData;
+
+ data.splice( row, 1 );
+
+ // Update the _DT_RowIndex parameter on all rows in the table
+ for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+ if ( data[i].nTr !== null ) {
+ data[i].nTr._DT_RowIndex = i;
+ }
+ }
+
+ // Remove the target row from the search array
+ var displayIndex = $.inArray( row, settings.aiDisplay );
+
+ // Delete from the display arrays
+ _fnDeleteIndex( settings.aiDisplayMaster, row );
+ _fnDeleteIndex( settings.aiDisplay, row );
+ _fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes
+
+ // Check for an 'overflow' they case for displaying the table
+ _fnLengthOverflow( settings );
+ } );
+ } );
+
+
+ _api_register( 'rows.add()', function ( rows ) {
+ var newRows = this.iterator( 'table', function ( settings ) {
+ var row, i, ien;
+ var out = [];
+
+ for ( i=0, ien=rows.length ; i<ien ; i++ ) {
+ row = rows[i];
+
+ if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
+ out.push( _fnAddTr( settings, row )[0] );
+ }
+ else {
+ out.push( _fnAddData( settings, row ) );
+ }
+ }
+
+ return out;
+ }, 1 );
+
+ // Return an Api.rows() extended instance, so rows().nodes() etc can be used
+ var modRows = this.rows( -1 );
+ modRows.pop();
+ modRows.push.apply( modRows, newRows.toArray() );
+
+ return modRows;
+ } );
+
+
+
+
+
+ /**
+ *
+ */
+ _api_register( 'row()', function ( selector, opts ) {
+ return _selector_first( this.rows( selector, opts ) );
+ } );
+
+
+ _api_register( 'row().data()', function ( data ) {
+ var ctx = this.context;
+
+ if ( data === undefined ) {
+ // Get
+ return ctx.length && this.length ?
+ ctx[0].aoData[ this[0] ]._aData :
+ undefined;
+ }
+
+ // Set
+ ctx[0].aoData[ this[0] ]._aData = data;
+
+ // Automatically invalidate
+ _fnInvalidate( ctx[0], this[0], 'data' );
+
+ return this;
+ } );
+
+
+ _api_register( 'row().node()', function () {
+ var ctx = this.context;
+
+ return ctx.length && this.length ?
+ ctx[0].aoData[ this[0] ].nTr || null :
+ null;
+ } );
+
+
+ _api_register( 'row.add()', function ( row ) {
+ // Allow a jQuery object to be passed in - only a single row is added from
+ // it though - the first element in the set
+ if ( row instanceof $ && row.length ) {
+ row = row[0];
+ }
+
+ var rows = this.iterator( 'table', function ( settings ) {
+ if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
+ return _fnAddTr( settings, row )[0];
+ }
+ return _fnAddData( settings, row );
+ } );
+
+ // Return an Api.rows() extended instance, with the newly added row selected
+ return this.row( rows[0] );
+ } );
+
+
+
+ var __details_add = function ( ctx, row, data, klass )
+ {
+ // Convert to array of TR elements
+ var rows = [];
+ var addRow = function ( r, k ) {
+ // Recursion to allow for arrays of jQuery objects
+ if ( $.isArray( r ) || r instanceof $ ) {
+ for ( var i=0, ien=r.length ; i<ien ; i++ ) {
+ addRow( r[i], k );
+ }
+ return;
+ }
+
+ // If we get a TR element, then just add it directly - up to the dev
+ // to add the correct number of columns etc
+ if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {
+ rows.push( r );
+ }
+ else {
+ // Otherwise create a row with a wrapper
+ var created = $('<tr><td/></tr>').addClass( k );
+ $('td', created)
+ .addClass( k )
+ .html( r )
+ [0].colSpan = _fnVisbleColumns( ctx );
+
+ rows.push( created[0] );
+ }
+ };
+
+ addRow( data, klass );
+
+ if ( row._details ) {
+ row._details.remove();
+ }
+
+ row._details = $(rows);
+
+ // If the children were already shown, that state should be retained
+ if ( row._detailsShow ) {
+ row._details.insertAfter( row.nTr );
+ }
+ };
+
+
+ var __details_remove = function ( api, idx )
+ {
+ var ctx = api.context;
+
+ if ( ctx.length ) {
+ var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];
+
+ if ( row._details ) {
+ row._details.remove();
+
+ row._detailsShow = undefined;
+ row._details = undefined;
+ }
+ }
+ };
+
+
+ var __details_display = function ( api, show ) {
+ var ctx = api.context;
+
+ if ( ctx.length && api.length ) {
+ var row = ctx[0].aoData[ api[0] ];
+
+ if ( row._details ) {
+ row._detailsShow = show;
+
+ if ( show ) {
+ row._details.insertAfter( row.nTr );
+ }
+ else {
+ row._details.detach();
+ }
+
+ __details_events( ctx[0] );
+ }
+ }
+ };
+
+
+ var __details_events = function ( settings )
+ {
+ var api = new _Api( settings );
+ var namespace = '.dt.DT_details';
+ var drawEvent = 'draw'+namespace;
+ var colvisEvent = 'column-visibility'+namespace;
+ var destroyEvent = 'destroy'+namespace;
+ var data = settings.aoData;
+
+ api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );
+
+ if ( _pluck( data, '_details' ).length > 0 ) {
+ // On each draw, insert the required elements into the document
+ api.on( drawEvent, function ( e, ctx ) {
+ if ( settings !== ctx ) {
+ return;
+ }
+
+ api.rows( {page:'current'} ).eq(0).each( function (idx) {
+ // Internal data grab
+ var row = data[ idx ];
+
+ if ( row._detailsShow ) {
+ row._details.insertAfter( row.nTr );
+ }
+ } );
+ } );
+
+ // Column visibility change - update the colspan
+ api.on( colvisEvent, function ( e, ctx, idx, vis ) {
+ if ( settings !== ctx ) {
+ return;
+ }
+
+ // Update the colspan for the details rows (note, only if it already has
+ // a colspan)
+ var row, visible = _fnVisbleColumns( ctx );
+
+ for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+ row = data[i];
+
+ if ( row._details ) {
+ row._details.children('td[colspan]').attr('colspan', visible );
+ }
+ }
+ } );
+
+ // Table destroyed - nuke any child rows
+ api.on( destroyEvent, function ( e, ctx ) {
+ if ( settings !== ctx ) {
+ return;
+ }
+
+ for ( var i=0, ien=data.length ; i<ien ; i++ ) {
+ if ( data[i]._details ) {
+ __details_remove( api, i );
+ }
+ }
+ } );
+ }
+ };
+
+ // Strings for the method names to help minification
+ var _emp = '';
+ var _child_obj = _emp+'row().child';
+ var _child_mth = _child_obj+'()';
+
+ // data can be:
+ // tr
+ // string
+ // jQuery or array of any of the above
+ _api_register( _child_mth, function ( data, klass ) {
+ var ctx = this.context;
+
+ if ( data === undefined ) {
+ // get
+ return ctx.length && this.length ?
+ ctx[0].aoData[ this[0] ]._details :
+ undefined;
+ }
+ else if ( data === true ) {
+ // show
+ this.child.show();
+ }
+ else if ( data === false ) {
+ // remove
+ __details_remove( this );
+ }
+ else if ( ctx.length && this.length ) {
+ // set
+ __details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );
+ }
+
+ return this;
+ } );
+
+
+ _api_register( [
+ _child_obj+'.show()',
+ _child_mth+'.show()' // only when `child()` was called with parameters (without
+ ], function ( show ) { // it returns an object and this method is not executed)
+ __details_display( this, true );
+ return this;
+ } );
+
+
+ _api_register( [
+ _child_obj+'.hide()',
+ _child_mth+'.hide()' // only when `child()` was called with parameters (without
+ ], function () { // it returns an object and this method is not executed)
+ __details_display( this, false );
+ return this;
+ } );
+
+
+ _api_register( [
+ _child_obj+'.remove()',
+ _child_mth+'.remove()' // only when `child()` was called with parameters (without
+ ], function () { // it returns an object and this method is not executed)
+ __details_remove( this );
+ return this;
+ } );
+
+
+ _api_register( _child_obj+'.isShown()', function () {
+ var ctx = this.context;
+
+ if ( ctx.length && this.length ) {
+ // _detailsShown as false or undefined will fall through to return false
+ return ctx[0].aoData[ this[0] ]._detailsShow || false;
+ }
+ return false;
+ } );
+
+
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Columns
+ *
+ * {integer} - column index (>=0 count from left, <0 count from right)
+ * "{integer}:visIdx" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right)
+ * "{integer}:visible" - alias for {integer}:visIdx (>=0 count from left, <0 count from right)
+ * "{string}:name" - column name
+ * "{string}" - jQuery selector on column header nodes
+ *
+ */
+
+ // can be an array of these items, comma separated list, or an array of comma
+ // separated lists
+
+ var __re_column_selector = /^(.+):(name|visIdx|visible)$/;
+
+
+ // r1 and r2 are redundant - but it means that the parameters match for the
+ // iterator callback in columns().data()
+ var __columnData = function ( settings, column, r1, r2, rows ) {
+ var a = [];
+ for ( var row=0, ien=rows.length ; row<ien ; row++ ) {
+ a.push( _fnGetCellData( settings, rows[row], column ) );
+ }
+ return a;
+ };
+
+
+ var __column_selector = function ( settings, selector, opts )
+ {
+ var
+ columns = settings.aoColumns,
+ names = _pluck( columns, 'sName' ),
+ nodes = _pluck( columns, 'nTh' );
+
+ var run = function ( s ) {
+ var selInt = _intVal( s );
+
+ // Selector - all
+ if ( s === '' ) {
+ return _range( columns.length );
+ }
+
+ // Selector - index
+ if ( selInt !== null ) {
+ return [ selInt >= 0 ?
+ selInt : // Count from left
+ columns.length + selInt // Count from right (+ because its a negative value)
+ ];
+ }
+
+ // Selector = function
+ if ( typeof s === 'function' ) {
+ var rows = _selector_row_indexes( settings, opts );
+
+ return $.map( columns, function (col, idx) {
+ return s(
+ idx,
+ __columnData( settings, idx, 0, 0, rows ),
+ nodes[ idx ]
+ ) ? idx : null;
+ } );
+ }
+
+ // jQuery or string selector
+ var match = typeof s === 'string' ?
+ s.match( __re_column_selector ) :
+ '';
+
+ if ( match ) {
+ switch( match[2] ) {
+ case 'visIdx':
+ case 'visible':
+ var idx = parseInt( match[1], 10 );
+ // Visible index given, convert to column index
+ if ( idx < 0 ) {
+ // Counting from the right
+ var visColumns = $.map( columns, function (col,i) {
+ return col.bVisible ? i : null;
+ } );
+ return [ visColumns[ visColumns.length + idx ] ];
+ }
+ // Counting from the left
+ return [ _fnVisibleToColumnIndex( settings, idx ) ];
+
+ case 'name':
+ // match by name. `names` is column index complete and in order
+ return $.map( names, function (name, i) {
+ return name === match[1] ? i : null;
+ } );
+ }
+ }
+ else {
+ // jQuery selector on the TH elements for the columns
+ return $( nodes )
+ .filter( s )
+ .map( function () {
+ return $.inArray( this, nodes ); // `nodes` is column index complete and in order
+ } )
+ .toArray();
+ }
+ };
+
+ return _selector_run( 'column', selector, run, settings, opts );
+ };
+
+
+ var __setColumnVis = function ( settings, column, vis, recalc ) {
+ var
+ cols = settings.aoColumns,
+ col = cols[ column ],
+ data = settings.aoData,
+ row, cells, i, ien, tr;
+
+ // Get
+ if ( vis === undefined ) {
+ return col.bVisible;
+ }
+
+ // Set
+ // No change
+ if ( col.bVisible === vis ) {
+ return;
+ }
+
+ if ( vis ) {
+ // Insert column
+ // Need to decide if we should use appendChild or insertBefore
+ var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );
+
+ for ( i=0, ien=data.length ; i<ien ; i++ ) {
+ tr = data[i].nTr;
+ cells = data[i].anCells;
+
+ if ( tr ) {
+ // insertBefore can act like appendChild if 2nd arg is null
+ tr.insertBefore( cells[ column ], cells[ insertBefore ] || null );
+ }
+ }
+ }
+ else {
+ // Remove column
+ $( _pluck( settings.aoData, 'anCells', column ) ).detach();
+ }
+
+ // Common actions
+ col.bVisible = vis;
+ _fnDrawHead( settings, settings.aoHeader );
+ _fnDrawHead( settings, settings.aoFooter );
+
+ if ( recalc === undefined || recalc ) {
+ // Automatically adjust column sizing
+ _fnAdjustColumnSizing( settings );
+
+ // Realign columns for scrolling
+ if ( settings.oScroll.sX || settings.oScroll.sY ) {
+ _fnScrollDraw( settings );
+ }
+ }
+
+ _fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis] );
+
+ _fnSaveState( settings );
+ };
+
+
+ _api_register( 'columns()', function ( selector, opts ) {
+ // argument shifting
+ if ( selector === undefined ) {
+ selector = '';
+ }
+ else if ( $.isPlainObject( selector ) ) {
+ opts = selector;
+ selector = '';
+ }
+
+ opts = _selector_opts( opts );
+
+ var inst = this.iterator( 'table', function ( settings ) {
+ return __column_selector( settings, selector, opts );
+ }, 1 );
+
+ // Want argument shifting here and in _row_selector?
+ inst.selector.cols = selector;
+ inst.selector.opts = opts;
+
+ return inst;
+ } );
+
+ _api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {
+ return this.iterator( 'column', function ( settings, column ) {
+ return settings.aoColumns[column].nTh;
+ }, 1 );
+ } );
+
+ _api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {
+ return this.iterator( 'column', function ( settings, column ) {
+ return settings.aoColumns[column].nTf;
+ }, 1 );
+ } );
+
+ _api_registerPlural( 'columns().data()', 'column().data()', function () {
+ return this.iterator( 'column-rows', __columnData, 1 );
+ } );
+
+ _api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {
+ return this.iterator( 'column', function ( settings, column ) {
+ return settings.aoColumns[column].mData;
+ }, 1 );
+ } );
+
+ _api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {
+ return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
+ return _pluck_order( settings.aoData, rows,
+ type === 'search' ? '_aFilterData' : '_aSortData', column
+ );
+ }, 1 );
+ } );
+
+ _api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {
+ return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
+ return _pluck_order( settings.aoData, rows, 'anCells', column ) ;
+ }, 1 );
+ } );
+
+ _api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {
+ return this.iterator( 'column', function ( settings, column ) {
+ if ( vis === undefined ) {
+ return settings.aoColumns[ column ].bVisible;
+ } // else
+ __setColumnVis( settings, column, vis, calc );
+ } );
+ } );
+
+ _api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {
+ return this.iterator( 'column', function ( settings, column ) {
+ return type === 'visible' ?
+ _fnColumnIndexToVisible( settings, column ) :
+ column;
+ }, 1 );
+ } );
+
+ _api_register( 'columns.adjust()', function () {
+ return this.iterator( 'table', function ( settings ) {
+ _fnAdjustColumnSizing( settings );
+ }, 1 );
+ } );
+
+ _api_register( 'column.index()', function ( type, idx ) {
+ if ( this.context.length !== 0 ) {
+ var ctx = this.context[0];
+
+ if ( type === 'fromVisible' || type === 'toData' ) {
+ return _fnVisibleToColumnIndex( ctx, idx );
+ }
+ else if ( type === 'fromData' || type === 'toVisible' ) {
+ return _fnColumnIndexToVisible( ctx, idx );
+ }
+ }
+ } );
+
+ _api_register( 'column()', function ( selector, opts ) {
+ return _selector_first( this.columns( selector, opts ) );
+ } );
+
+
+
+
+ var __cell_selector = function ( settings, selector, opts )
+ {
+ var data = settings.aoData;
+ var rows = _selector_row_indexes( settings, opts );
+ var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );
+ var allCells = $( [].concat.apply([], cells) );
+ var row;
+ var columns = settings.aoColumns.length;
+ var a, i, ien, j, o, host;
+
+ var run = function ( s ) {
+ var fnSelector = typeof s === 'function';
+
+ if ( s === null || s === undefined || fnSelector ) {
+ // All cells and function selectors
+ a = [];
+
+ for ( i=0, ien=rows.length ; i<ien ; i++ ) {
+ row = rows[i];
+
+ for ( j=0 ; j<columns ; j++ ) {
+ o = {
+ row: row,
+ column: j
+ };
+
+ if ( fnSelector ) {
+ // Selector - function
+ host = settings.aoData[ row ];
+
+ if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {
+ a.push( o );
+ }
+ }
+ else {
+ // Selector - all
+ a.push( o );
+ }
+ }
+ }
+
+ return a;
+ }
+
+ // Selector - index
+ if ( $.isPlainObject( s ) ) {
+ return [s];
+ }
+
+ // Selector - jQuery filtered cells
+ return allCells
+ .filter( s )
+ .map( function (i, el) {
+ row = el.parentNode._DT_RowIndex;
+
+ return {
+ row: row,
+ column: $.inArray( el, data[ row ].anCells )
+ };
+ } )
+ .toArray();
+ };
+
+ return _selector_run( 'cell', selector, run, settings, opts );
+ };
+
+
+
+
+ _api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {
+ // Argument shifting
+ if ( $.isPlainObject( rowSelector ) ) {
+ // Indexes
+ if ( rowSelector.row === undefined ) {
+ // Selector options in first parameter
+ opts = rowSelector;
+ rowSelector = null;
+ }
+ else {
+ // Cell index objects in first parameter
+ opts = columnSelector;
+ columnSelector = null;
+ }
+ }
+ if ( $.isPlainObject( columnSelector ) ) {
+ opts = columnSelector;
+ columnSelector = null;
+ }
+
+ // Cell selector
+ if ( columnSelector === null || columnSelector === undefined ) {
+ return this.iterator( 'table', function ( settings ) {
+ return __cell_selector( settings, rowSelector, _selector_opts( opts ) );
+ } );
+ }
+
+ // Row + column selector
+ var columns = this.columns( columnSelector, opts );
+ var rows = this.rows( rowSelector, opts );
+ var a, i, ien, j, jen;
+
+ var cells = this.iterator( 'table', function ( settings, idx ) {
+ a = [];
+
+ for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {
+ for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {
+ a.push( {
+ row: rows[idx][i],
+ column: columns[idx][j]
+ } );
+ }
+ }
+
+ return a;
+ }, 1 );
+
+ $.extend( cells.selector, {
+ cols: columnSelector,
+ rows: rowSelector,
+ opts: opts
+ } );
+
+ return cells;
+ } );
+
+
+ _api_registerPlural( 'cells().nodes()', 'cell().node()', function () {
+ return this.iterator( 'cell', function ( settings, row, column ) {
+ var cells = settings.aoData[ row ].anCells;
+ return cells ?
+ cells[ column ] :
+ undefined;
+ }, 1 );
+ } );
+
+
+ _api_register( 'cells().data()', function () {
+ return this.iterator( 'cell', function ( settings, row, column ) {
+ return _fnGetCellData( settings, row, column );
+ }, 1 );
+ } );
+
+
+ _api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {
+ type = type === 'search' ? '_aFilterData' : '_aSortData';
+
+ return this.iterator( 'cell', function ( settings, row, column ) {
+ return settings.aoData[ row ][ type ][ column ];
+ }, 1 );
+ } );
+
+
+ _api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {
+ return this.iterator( 'cell', function ( settings, row, column ) {
+ return _fnGetCellData( settings, row, column, type );
+ }, 1 );
+ } );
+
+
+ _api_registerPlural( 'cells().indexes()', 'cell().index()', function () {
+ return this.iterator( 'cell', function ( settings, row, column ) {
+ return {
+ row: row,
+ column: column,
+ columnVisible: _fnColumnIndexToVisible( settings, column )
+ };
+ }, 1 );
+ } );
+
+
+ _api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {
+ return this.iterator( 'cell', function ( settings, row, column ) {
+ _fnInvalidate( settings, row, src, column );
+ } );
+ } );
+
+
+
+ _api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {
+ return _selector_first( this.cells( rowSelector, columnSelector, opts ) );
+ } );
+
+
+ _api_register( 'cell().data()', function ( data ) {
+ var ctx = this.context;
+ var cell = this[0];
+
+ if ( data === undefined ) {
+ // Get
+ return ctx.length && cell.length ?
+ _fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :
+ undefined;
+ }
+
+ // Set
+ _fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );
+ _fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );
+
+ return this;
+ } );
+
+
+
+ /**
+ * Get current ordering (sorting) that has been applied to the table.
+ *
+ * @returns {array} 2D array containing the sorting information for the first
+ * table in the current context. Each element in the parent array represents
+ * a column being sorted upon (i.e. multi-sorting with two columns would have
+ * 2 inner arrays). The inner arrays may have 2 or 3 elements. The first is
+ * the column index that the sorting condition applies to, the second is the
+ * direction of the sort (`desc` or `asc`) and, optionally, the third is the
+ * index of the sorting order from the `column.sorting` initialisation array.
+ *//**
+ * Set the ordering for the table.
+ *
+ * @param {integer} order Column index to sort upon.
+ * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)
+ * @returns {DataTables.Api} this
+ *//**
+ * Set the ordering for the table.
+ *
+ * @param {array} order 1D array of sorting information to be applied.
+ * @param {array} [...] Optional additional sorting conditions
+ * @returns {DataTables.Api} this
+ *//**
+ * Set the ordering for the table.
+ *
+ * @param {array} order 2D array of sorting information to be applied.
+ * @returns {DataTables.Api} this
+ */
+ _api_register( 'order()', function ( order, dir ) {
+ var ctx = this.context;
+
+ if ( order === undefined ) {
+ // get
+ return ctx.length !== 0 ?
+ ctx[0].aaSorting :
+ undefined;
+ }
+
+ // set
+ if ( typeof order === 'number' ) {
+ // Simple column / direction passed in
+ order = [ [ order, dir ] ];
+ }
+ else if ( ! $.isArray( order[0] ) ) {
+ // Arguments passed in (list of 1D arrays)
+ order = Array.prototype.slice.call( arguments );
+ }
+ // otherwise a 2D array was passed in
+
+ return this.iterator( 'table', function ( settings ) {
+ settings.aaSorting = order.slice();
+ } );
+ } );
+
+
+ /**
+ * Attach a sort listener to an element for a given column
+ *
+ * @param {node|jQuery|string} node Identifier for the element(s) to attach the
+ * listener to. This can take the form of a single DOM node, a jQuery
+ * collection of nodes or a jQuery selector which will identify the node(s).
+ * @param {integer} column the column that a click on this node will sort on
+ * @param {function} [callback] callback function when sort is run
+ * @returns {DataTables.Api} this
+ */
+ _api_register( 'order.listener()', function ( node, column, callback ) {
+ return this.iterator( 'table', function ( settings ) {
+ _fnSortAttachListener( settings, node, column, callback );
+ } );
+ } );
+
+
+ // Order by the selected column(s)
+ _api_register( [
+ 'columns().order()',
+ 'column().order()'
+ ], function ( dir ) {
+ var that = this;
+
+ return this.iterator( 'table', function ( settings, i ) {
+ var sort = [];
+
+ $.each( that[i], function (j, col) {
+ sort.push( [ col, dir ] );
+ } );
+
+ settings.aaSorting = sort;
+ } );
+ } );
+
+
+
+ _api_register( 'search()', function ( input, regex, smart, caseInsen ) {
+ var ctx = this.context;
+
+ if ( input === undefined ) {
+ // get
+ return ctx.length !== 0 ?
+ ctx[0].oPreviousSearch.sSearch :
+ undefined;
+ }
+
+ // set
+ return this.iterator( 'table', function ( settings ) {
+ if ( ! settings.oFeatures.bFilter ) {
+ return;
+ }
+
+ _fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {
+ "sSearch": input+"",
+ "bRegex": regex === null ? false : regex,
+ "bSmart": smart === null ? true : smart,
+ "bCaseInsensitive": caseInsen === null ? true : caseInsen
+ } ), 1 );
+ } );
+ } );
+
+
+ _api_registerPlural(
+ 'columns().search()',
+ 'column().search()',
+ function ( input, regex, smart, caseInsen ) {
+ return this.iterator( 'column', function ( settings, column ) {
+ var preSearch = settings.aoPreSearchCols;
+
+ if ( input === undefined ) {
+ // get
+ return preSearch[ column ].sSearch;
+ }
+
+ // set
+ if ( ! settings.oFeatures.bFilter ) {
+ return;
+ }
+
+ $.extend( preSearch[ column ], {
+ "sSearch": input+"",
+ "bRegex": regex === null ? false : regex,
+ "bSmart": smart === null ? true : smart,
+ "bCaseInsensitive": caseInsen === null ? true : caseInsen
+ } );
+
+ _fnFilterComplete( settings, settings.oPreviousSearch, 1 );
+ } );
+ }
+ );
+
+ /*
+ * State API methods
+ */
+
+ _api_register( 'state()', function () {
+ return this.context.length ?
+ this.context[0].oSavedState :
+ null;
+ } );
+
+
+ _api_register( 'state.clear()', function () {
+ return this.iterator( 'table', function ( settings ) {
+ // Save an empty object
+ settings.fnStateSaveCallback.call( settings.oInstance, settings, {} );
+ } );
+ } );
+
+
+ _api_register( 'state.loaded()', function () {
+ return this.context.length ?
+ this.context[0].oLoadedState :
+ null;
+ } );
+
+
+ _api_register( 'state.save()', function () {
+ return this.iterator( 'table', function ( settings ) {
+ _fnSaveState( settings );
+ } );
+ } );
+
+
+
+ /**
+ * Provide a common method for plug-ins to check the version of DataTables being
+ * used, in order to ensure compatibility.
+ *
+ * @param {string} version Version string to check for, in the format "X.Y.Z".
+ * Note that the formats "X" and "X.Y" are also acceptable.
+ * @returns {boolean} true if this version of DataTables is greater or equal to
+ * the required version, or false if this version of DataTales is not
+ * suitable
+ * @static
+ * @dtopt API-Static
+ *
+ * @example
+ * alert( $.fn.dataTable.versionCheck( '1.9.0' ) );
+ */
+ DataTable.versionCheck = DataTable.fnVersionCheck = function( version )
+ {
+ var aThis = DataTable.version.split('.');
+ var aThat = version.split('.');
+ var iThis, iThat;
+
+ for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {
+ iThis = parseInt( aThis[i], 10 ) || 0;
+ iThat = parseInt( aThat[i], 10 ) || 0;
+
+ // Parts are the same, keep comparing
+ if (iThis === iThat) {
+ continue;
+ }
+
+ // Parts are different, return immediately
+ return iThis > iThat;
+ }
+
+ return true;
+ };
+
+
+ /**
+ * Check if a `<table>` node is a DataTable table already or not.
+ *
+ * @param {node|jquery|string} table Table node, jQuery object or jQuery
+ * selector for the table to test. Note that if more than more than one
+ * table is passed on, only the first will be checked
+ * @returns {boolean} true the table given is a DataTable, or false otherwise
+ * @static
+ * @dtopt API-Static
+ *
+ * @example
+ * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {
+ * $('#example').dataTable();
+ * }
+ */
+ DataTable.isDataTable = DataTable.fnIsDataTable = function ( table )
+ {
+ var t = $(table).get(0);
+ var is = false;
+
+ $.each( DataTable.settings, function (i, o) {
+ var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;
+ var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;
+
+ if ( o.nTable === t || head === t || foot === t ) {
+ is = true;
+ }
+ } );
+
+ return is;
+ };
+
+
+ /**
+ * Get all DataTable tables that have been initialised - optionally you can
+ * select to get only currently visible tables.
+ *
+ * @param {boolean} [visible=false] Flag to indicate if you want all (default)
+ * or visible tables only.
+ * @returns {array} Array of `table` nodes (not DataTable instances) which are
+ * DataTables
+ * @static
+ * @dtopt API-Static
+ *
+ * @example
+ * $.each( $.fn.dataTable.tables(true), function () {
+ * $(table).DataTable().columns.adjust();
+ * } );
+ */
+ DataTable.tables = DataTable.fnTables = function ( visible )
+ {
+ return $.map( DataTable.settings, function (o) {
+ if ( !visible || (visible && $(o.nTable).is(':visible')) ) {
+ return o.nTable;
+ }
+ } );
+ };
+
+
+ /**
+ * DataTables utility methods
+ *
+ * This namespace provides helper methods that DataTables uses internally to
+ * create a DataTable, but which are not exclusively used only for DataTables.
+ * These methods can be used by extension authors to save the duplication of
+ * code.
+ *
+ * @namespace
+ */
+ DataTable.util = {
+ /**
+ * Throttle the calls to a function. Arguments and context are maintained
+ * for the throttled function.
+ *
+ * @param {function} fn Function to be called
+ * @param {integer} freq Call frequency in mS
+ * @return {function} Wrapped function
+ */
+ throttle: _fnThrottle,
+
+
+ /**
+ * Escape a string such that it can be used in a regular expression
+ *
+ * @param {string} sVal string to escape
+ * @returns {string} escaped string
+ */
+ escapeRegex: _fnEscapeRegex
+ };
+
+
+ /**
+ * Convert from camel case parameters to Hungarian notation. This is made public
+ * for the extensions to provide the same ability as DataTables core to accept
+ * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase
+ * parameters.
+ *
+ * @param {object} src The model object which holds all parameters that can be
+ * mapped.
+ * @param {object} user The object to convert from camel case to Hungarian.
+ * @param {boolean} force When set to `true`, properties which already have a
+ * Hungarian value in the `user` object will be overwritten. Otherwise they
+ * won't be.
+ */
+ DataTable.camelToHungarian = _fnCamelToHungarian;
+
+
+
+ /**
+ *
+ */
+ _api_register( '$()', function ( selector, opts ) {
+ var
+ rows = this.rows( opts ).nodes(), // Get all rows
+ jqRows = $(rows);
+
+ return $( [].concat(
+ jqRows.filter( selector ).toArray(),
+ jqRows.find( selector ).toArray()
+ ) );
+ } );
+
+
+ // jQuery functions to operate on the tables
+ $.each( [ 'on', 'one', 'off' ], function (i, key) {
+ _api_register( key+'()', function ( /* event, handler */ ) {
+ var args = Array.prototype.slice.call(arguments);
+
+ // Add the `dt` namespace automatically if it isn't already present
+ if ( ! args[0].match(/\.dt\b/) ) {
+ args[0] += '.dt';
+ }
+
+ var inst = $( this.tables().nodes() );
+ inst[key].apply( inst, args );
+ return this;
+ } );
+ } );
+
+
+ _api_register( 'clear()', function () {
+ return this.iterator( 'table', function ( settings ) {
+ _fnClearTable( settings );
+ } );
+ } );
+
+
+ _api_register( 'settings()', function () {
+ return new _Api( this.context, this.context );
+ } );
+
+
+ _api_register( 'init()', function () {
+ var ctx = this.context;
+ return ctx.length ? ctx[0].oInit : null;
+ } );
+
+
+ _api_register( 'data()', function () {
+ return this.iterator( 'table', function ( settings ) {
+ return _pluck( settings.aoData, '_aData' );
+ } ).flatten();
+ } );
+
+
+ _api_register( 'destroy()', function ( remove ) {
+ remove = remove || false;
+
+ return this.iterator( 'table', function ( settings ) {
+ var orig = settings.nTableWrapper.parentNode;
+ var classes = settings.oClasses;
+ var table = settings.nTable;
+ var tbody = settings.nTBody;
+ var thead = settings.nTHead;
+ var tfoot = settings.nTFoot;
+ var jqTable = $(table);
+ var jqTbody = $(tbody);
+ var jqWrapper = $(settings.nTableWrapper);
+ var rows = $.map( settings.aoData, function (r) { return r.nTr; } );
+ var i, ien;
+
+ // Flag to note that the table is currently being destroyed - no action
+ // should be taken
+ settings.bDestroying = true;
+
+ // Fire off the destroy callbacks for plug-ins etc
+ _fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] );
+
+ // If not being removed from the document, make all columns visible
+ if ( ! remove ) {
+ new _Api( settings ).columns().visible( true );
+ }
+
+ // Blitz all `DT` namespaced events (these are internal events, the
+ // lowercase, `dt` events are user subscribed and they are responsible
+ // for removing them
+ jqWrapper.unbind('.DT').find(':not(tbody *)').unbind('.DT');
+ $(window).unbind('.DT-'+settings.sInstance);
+
+ // When scrolling we had to break the table up - restore it
+ if ( table != thead.parentNode ) {
+ jqTable.children('thead').detach();
+ jqTable.append( thead );
+ }
+
+ if ( tfoot && table != tfoot.parentNode ) {
+ jqTable.children('tfoot').detach();
+ jqTable.append( tfoot );
+ }
+
+ // Remove the DataTables generated nodes, events and classes
+ jqTable.detach();
+ jqWrapper.detach();
+
+ settings.aaSorting = [];
+ settings.aaSortingFixed = [];
+ _fnSortingClasses( settings );
+
+ $( rows ).removeClass( settings.asStripeClasses.join(' ') );
+
+ $('th, td', thead).removeClass( classes.sSortable+' '+
+ classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone
+ );
+
+ if ( settings.bJUI ) {
+ $('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach();
+ $('th, td', thead).each( function () {
+ var wrapper = $('div.'+classes.sSortJUIWrapper, this);
+ $(this).append( wrapper.contents() );
+ wrapper.detach();
+ } );
+ }
+
+ if ( ! remove && orig ) {
+ // insertBefore acts like appendChild if !arg[1]
+ orig.insertBefore( table, settings.nTableReinsertBefore );
+ }
+
+ // Add the TR elements back into the table in their original order
+ jqTbody.children().detach();
+ jqTbody.append( rows );
+
+ // Restore the width of the original table - was read from the style property,
+ // so we can restore directly to that
+ jqTable
+ .css( 'width', settings.sDestroyWidth )
+ .removeClass( classes.sTable );
+
+ // If the were originally stripe classes - then we add them back here.
+ // Note this is not fool proof (for example if not all rows had stripe
+ // classes - but it's a good effort without getting carried away
+ ien = settings.asDestroyStripes.length;
+
+ if ( ien ) {
+ jqTbody.children().each( function (i) {
+ $(this).addClass( settings.asDestroyStripes[i % ien] );
+ } );
+ }
+
+ /* Remove the settings object from the settings array */
+ var idx = $.inArray( settings, DataTable.settings );
+ if ( idx !== -1 ) {
+ DataTable.settings.splice( idx, 1 );
+ }
+ } );
+ } );
+
+
+ // Add the `every()` method for rows, columns and cells in a compact form
+ $.each( [ 'column', 'row', 'cell' ], function ( i, type ) {
+ _api_register( type+'s().every()', function ( fn ) {
+ return this.iterator( type, function ( settings, idx, idx2 ) {
+ // idx2 is undefined for rows and columns.
+ fn.call( new _Api( settings )[ type ]( idx, idx2 ) );
+ } );
+ } );
+ } );
+
+
+ // i18n method for extensions to be able to use the language object from the
+ // DataTable
+ _api_register( 'i18n()', function ( token, def, plural ) {
+ var ctx = this.context[0];
+ var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );
+
+ if ( resolved === undefined ) {
+ resolved = def;
+ }
+
+ if ( plural !== undefined && $.isPlainObject( resolved ) ) {
+ resolved = resolved[ plural ] !== undefined ?
+ resolved[ plural ] :
+ resolved._;
+ }
+
+ return resolved.replace( '%d', plural ); // nb: plural might be undefined,
+ } );
+
+ /**
+ * Version string for plug-ins to check compatibility. Allowed format is
+ * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used
+ * only for non-release builds. See http://semver.org/ for more information.
+ * @member
+ * @type string
+ * @default Version number
+ */
+ DataTable.version = "1.10.7";
+
+ /**
+ * Private data store, containing all of the settings objects that are
+ * created for the tables on a given page.
+ *
+ * Note that the `DataTable.settings` object is aliased to
+ * `jQuery.fn.dataTableExt` through which it may be accessed and
+ * manipulated, or `jQuery.fn.dataTable.settings`.
+ * @member
+ * @type array
+ * @default []
+ * @private
+ */
+ DataTable.settings = [];
+
+ /**
+ * Object models container, for the various models that DataTables has
+ * available to it. These models define the objects that are used to hold
+ * the active state and configuration of the table.
+ * @namespace
+ */
+ DataTable.models = {};
+
+
+
+ /**
+ * Template object for the way in which DataTables holds information about
+ * search information for the global filter and individual column filters.
+ * @namespace
+ */
+ DataTable.models.oSearch = {
+ /**
+ * Flag to indicate if the filtering should be case insensitive or not
+ * @type boolean
+ * @default true
+ */
+ "bCaseInsensitive": true,
+
+ /**
+ * Applied search term
+ * @type string
+ * @default <i>Empty string</i>
+ */
+ "sSearch": "",
+
+ /**
+ * Flag to indicate if the search term should be interpreted as a
+ * regular expression (true) or not (false) and therefore and special
+ * regex characters escaped.
+ * @type boolean
+ * @default false
+ */
+ "bRegex": false,
+
+ /**
+ * Flag to indicate if DataTables is to use its smart filtering or not.
+ * @type boolean
+ * @default true
+ */
+ "bSmart": true
+ };
+
+
+
+
+ /**
+ * Template object for the way in which DataTables holds information about
+ * each individual row. This is the object format used for the settings
+ * aoData array.
+ * @namespace
+ */
+ DataTable.models.oRow = {
+ /**
+ * TR element for the row
+ * @type node
+ * @default null
+ */
+ "nTr": null,
+
+ /**
+ * Array of TD elements for each row. This is null until the row has been
+ * created.
+ * @type array nodes
+ * @default []
+ */
+ "anCells": null,
+
+ /**
+ * Data object from the original data source for the row. This is either
+ * an array if using the traditional form of DataTables, or an object if
+ * using mData options. The exact type will depend on the passed in
+ * data from the data source, or will be an array if using DOM a data
+ * source.
+ * @type array|object
+ * @default []
+ */
+ "_aData": [],
+
+ /**
+ * Sorting data cache - this array is ostensibly the same length as the
+ * number of columns (although each index is generated only as it is
+ * needed), and holds the data that is used for sorting each column in the
+ * row. We do this cache generation at the start of the sort in order that
+ * the formatting of the sort data need be done only once for each cell
+ * per sort. This array should not be read from or written to by anything
+ * other than the master sorting methods.
+ * @type array
+ * @default null
+ * @private
+ */
+ "_aSortData": null,
+
+ /**
+ * Per cell filtering data cache. As per the sort data cache, used to
+ * increase the performance of the filtering in DataTables
+ * @type array
+ * @default null
+ * @private
+ */
+ "_aFilterData": null,
+
+ /**
+ * Filtering data cache. This is the same as the cell filtering cache, but
+ * in this case a string rather than an array. This is easily computed with
+ * a join on `_aFilterData`, but is provided as a cache so the join isn't
+ * needed on every search (memory traded for performance)
+ * @type array
+ * @default null
+ * @private
+ */
+ "_sFilterRow": null,
+
+ /**
+ * Cache of the class name that DataTables has applied to the row, so we
+ * can quickly look at this variable rather than needing to do a DOM check
+ * on className for the nTr property.
+ * @type string
+ * @default <i>Empty string</i>
+ * @private
+ */
+ "_sRowStripe": "",
+
+ /**
+ * Denote if the original data source was from the DOM, or the data source
+ * object. This is used for invalidating data, so DataTables can
+ * automatically read data from the original source, unless uninstructed
+ * otherwise.
+ * @type string
+ * @default null
+ * @private
+ */
+ "src": null
+ };
+
+
+ /**
+ * Template object for the column information object in DataTables. This object
+ * is held in the settings aoColumns array and contains all the information that
+ * DataTables needs about each individual column.
+ *
+ * Note that this object is related to {@link DataTable.defaults.column}
+ * but this one is the internal data store for DataTables's cache of columns.
+ * It should NOT be manipulated outside of DataTables. Any configuration should
+ * be done through the initialisation options.
+ * @namespace
+ */
+ DataTable.models.oColumn = {
+ /**
+ * Column index. This could be worked out on-the-fly with $.inArray, but it
+ * is faster to just hold it as a variable
+ * @type integer
+ * @default null
+ */
+ "idx": null,
+
+ /**
+ * A list of the columns that sorting should occur on when this column
+ * is sorted. That this property is an array allows multi-column sorting
+ * to be defined for a column (for example first name / last name columns
+ * would benefit from this). The values are integers pointing to the
+ * columns to be sorted on (typically it will be a single integer pointing
+ * at itself, but that doesn't need to be the case).
+ * @type array
+ */
+ "aDataSort": null,
+
+ /**
+ * Define the sorting directions that are applied to the column, in sequence
+ * as the column is repeatedly sorted upon - i.e. the first value is used
+ * as the sorting direction when the column if first sorted (clicked on).
+ * Sort it again (click again) and it will move on to the next index.
+ * Repeat until loop.
+ * @type array
+ */
+ "asSorting": null,
+
+ /**
+ * Flag to indicate if the column is searchable, and thus should be included
+ * in the filtering or not.
+ * @type boolean
+ */
+ "bSearchable": null,
+
+ /**
+ * Flag to indicate if the column is sortable or not.
+ * @type boolean
+ */
+ "bSortable": null,
+
+ /**
+ * Flag to indicate if the column is currently visible in the table or not
+ * @type boolean
+ */
+ "bVisible": null,
+
+ /**
+ * Store for manual type assignment using the `column.type` option. This
+ * is held in store so we can manipulate the column's `sType` property.
+ * @type string
+ * @default null
+ * @private
+ */
+ "_sManualType": null,
+
+ /**
+ * Flag to indicate if HTML5 data attributes should be used as the data
+ * source for filtering or sorting. True is either are.
+ * @type boolean
+ * @default false
+ * @private
+ */
+ "_bAttrSrc": false,
+
+ /**
+ * Developer definable function that is called whenever a cell is created (Ajax source,
+ * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+ * allowing you to modify the DOM element (add background colour for example) when the
+ * element is available.
+ * @type function
+ * @param {element} nTd The TD node that has been created
+ * @param {*} sData The Data for the cell
+ * @param {array|object} oData The data for the whole row
+ * @param {int} iRow The row index for the aoData data store
+ * @default null
+ */
+ "fnCreatedCell": null,
+
+ /**
+ * Function to get data from a cell in a column. You should <b>never</b>
+ * access data directly through _aData internally in DataTables - always use
+ * the method attached to this property. It allows mData to function as
+ * required. This function is automatically assigned by the column
+ * initialisation method
+ * @type function
+ * @param {array|object} oData The data array/object for the array
+ * (i.e. aoData[]._aData)
+ * @param {string} sSpecific The specific data type you want to get -
+ * 'display', 'type' 'filter' 'sort'
+ * @returns {*} The data for the cell from the given row's data
+ * @default null
+ */
+ "fnGetData": null,
+
+ /**
+ * Function to set data for a cell in the column. You should <b>never</b>
+ * set the data directly to _aData internally in DataTables - always use
+ * this method. It allows mData to function as required. This function
+ * is automatically assigned by the column initialisation method
+ * @type function
+ * @param {array|object} oData The data array/object for the array
+ * (i.e. aoData[]._aData)
+ * @param {*} sValue Value to set
+ * @default null
+ */
+ "fnSetData": null,
+
+ /**
+ * Property to read the value for the cells in the column from the data
+ * source array / object. If null, then the default content is used, if a
+ * function is given then the return from the function is used.
+ * @type function|int|string|null
+ * @default null
+ */
+ "mData": null,
+
+ /**
+ * Partner property to mData which is used (only when defined) to get
+ * the data - i.e. it is basically the same as mData, but without the
+ * 'set' option, and also the data fed to it is the result from mData.
+ * This is the rendering method to match the data method of mData.
+ * @type function|int|string|null
+ * @default null
+ */
+ "mRender": null,
+
+ /**
+ * Unique header TH/TD element for this column - this is what the sorting
+ * listener is attached to (if sorting is enabled.)
+ * @type node
+ * @default null
+ */
+ "nTh": null,
+
+ /**
+ * Unique footer TH/TD element for this column (if there is one). Not used
+ * in DataTables as such, but can be used for plug-ins to reference the
+ * footer for each column.
+ * @type node
+ * @default null
+ */
+ "nTf": null,
+
+ /**
+ * The class to apply to all TD elements in the table's TBODY for the column
+ * @type string
+ * @default null
+ */
+ "sClass": null,
+
+ /**
+ * When DataTables calculates the column widths to assign to each column,
+ * it finds the longest string in each column and then constructs a
+ * temporary table and reads the widths from that. The problem with this
+ * is that "mmm" is much wider then "iiii", but the latter is a longer
+ * string - thus the calculation can go wrong (doing it properly and putting
+ * it into an DOM object and measuring that is horribly(!) slow). Thus as
+ * a "work around" we provide this option. It will append its value to the
+ * text that is found to be the longest string for the column - i.e. padding.
+ * @type string
+ */
+ "sContentPadding": null,
+
+ /**
+ * Allows a default value to be given for a column's data, and will be used
+ * whenever a null data source is encountered (this can be because mData
+ * is set to null, or because the data source itself is null).
+ * @type string
+ * @default null
+ */
+ "sDefaultContent": null,
+
+ /**
+ * Name for the column, allowing reference to the column by name as well as
+ * by index (needs a lookup to work by name).
+ * @type string
+ */
+ "sName": null,
+
+ /**
+ * Custom sorting data type - defines which of the available plug-ins in
+ * afnSortData the custom sorting will use - if any is defined.
+ * @type string
+ * @default std
+ */
+ "sSortDataType": 'std',
+
+ /**
+ * Class to be applied to the header element when sorting on this column
+ * @type string
+ * @default null
+ */
+ "sSortingClass": null,
+
+ /**
+ * Class to be applied to the header element when sorting on this column -
+ * when jQuery UI theming is used.
+ * @type string
+ * @default null
+ */
+ "sSortingClassJUI": null,
+
+ /**
+ * Title of the column - what is seen in the TH element (nTh).
+ * @type string
+ */
+ "sTitle": null,
+
+ /**
+ * Column sorting and filtering type
+ * @type string
+ * @default null
+ */
+ "sType": null,
+
+ /**
+ * Width of the column
+ * @type string
+ * @default null
+ */
+ "sWidth": null,
+
+ /**
+ * Width of the column when it was first "encountered"
+ * @type string
+ * @default null
+ */
+ "sWidthOrig": null
+ };
+
+
+ /*
+ * Developer note: The properties of the object below are given in Hungarian
+ * notation, that was used as the interface for DataTables prior to v1.10, however
+ * from v1.10 onwards the primary interface is camel case. In order to avoid
+ * breaking backwards compatibility utterly with this change, the Hungarian
+ * version is still, internally the primary interface, but is is not documented
+ * - hence the @name tags in each doc comment. This allows a Javascript function
+ * to create a map from Hungarian notation to camel case (going the other direction
+ * would require each property to be listed, which would at around 3K to the size
+ * of DataTables, while this method is about a 0.5K hit.
+ *
+ * Ultimately this does pave the way for Hungarian notation to be dropped
+ * completely, but that is a massive amount of work and will break current
+ * installs (therefore is on-hold until v2).
+ */
+
+ /**
+ * Initialisation options that can be given to DataTables at initialisation
+ * time.
+ * @namespace
+ */
+ DataTable.defaults = {
+ /**
+ * An array of data to use for the table, passed in at initialisation which
+ * will be used in preference to any data which is already in the DOM. This is
+ * particularly useful for constructing tables purely in Javascript, for
+ * example with a custom Ajax call.
+ * @type array
+ * @default null
+ *
+ * @dtopt Option
+ * @name DataTable.defaults.data
+ *
+ * @example
+ * // Using a 2D array data source
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "data": [
+ * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
+ * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],
+ * ],
+ * "columns": [
+ * { "title": "Engine" },
+ * { "title": "Browser" },
+ * { "title": "Platform" },
+ * { "title": "Version" },
+ * { "title": "Grade" }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using an array of objects as a data source (`data`)
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "data": [
+ * {
+ * "engine": "Trident",
+ * "browser": "Internet Explorer 4.0",
+ * "platform": "Win 95+",
+ * "version": 4,
+ * "grade": "X"
+ * },
+ * {
+ * "engine": "Trident",
+ * "browser": "Internet Explorer 5.0",
+ * "platform": "Win 95+",
+ * "version": 5,
+ * "grade": "C"
+ * }
+ * ],
+ * "columns": [
+ * { "title": "Engine", "data": "engine" },
+ * { "title": "Browser", "data": "browser" },
+ * { "title": "Platform", "data": "platform" },
+ * { "title": "Version", "data": "version" },
+ * { "title": "Grade", "data": "grade" }
+ * ]
+ * } );
+ * } );
+ */
+ "aaData": null,
+
+
+ /**
+ * If ordering is enabled, then DataTables will perform a first pass sort on
+ * initialisation. You can define which column(s) the sort is performed
+ * upon, and the sorting direction, with this variable. The `sorting` array
+ * should contain an array for each column to be sorted initially containing
+ * the column's index and a direction string ('asc' or 'desc').
+ * @type array
+ * @default [[0,'asc']]
+ *
+ * @dtopt Option
+ * @name DataTable.defaults.order
+ *
+ * @example
+ * // Sort by 3rd column first, and then 4th column
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "order": [[2,'asc'], [3,'desc']]
+ * } );
+ * } );
+ *
+ * // No initial sorting
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "order": []
+ * } );
+ * } );
+ */
+ "aaSorting": [[0,'asc']],
+
+
+ /**
+ * This parameter is basically identical to the `sorting` parameter, but
+ * cannot be overridden by user interaction with the table. What this means
+ * is that you could have a column (visible or hidden) which the sorting
+ * will always be forced on first - any sorting after that (from the user)
+ * will then be performed as required. This can be useful for grouping rows
+ * together.
+ * @type array
+ * @default null
+ *
+ * @dtopt Option
+ * @name DataTable.defaults.orderFixed
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "orderFixed": [[0,'asc']]
+ * } );
+ * } )
+ */
+ "aaSortingFixed": [],
+
+
+ /**
+ * DataTables can be instructed to load data to display in the table from a
+ * Ajax source. This option defines how that Ajax call is made and where to.
+ *
+ * The `ajax` property has three different modes of operation, depending on
+ * how it is defined. These are:
+ *
+ * * `string` - Set the URL from where the data should be loaded from.
+ * * `object` - Define properties for `jQuery.ajax`.
+ * * `function` - Custom data get function
+ *
+ * `string`
+ * --------
+ *
+ * As a string, the `ajax` property simply defines the URL from which
+ * DataTables will load data.
+ *
+ * `object`
+ * --------
+ *
+ * As an object, the parameters in the object are passed to
+ * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control
+ * of the Ajax request. DataTables has a number of default parameters which
+ * you can override using this option. Please refer to the jQuery
+ * documentation for a full description of the options available, although
+ * the following parameters provide additional options in DataTables or
+ * require special consideration:
+ *
+ * * `data` - As with jQuery, `data` can be provided as an object, but it
+ * can also be used as a function to manipulate the data DataTables sends
+ * to the server. The function takes a single parameter, an object of
+ * parameters with the values that DataTables has readied for sending. An
+ * object may be returned which will be merged into the DataTables
+ * defaults, or you can add the items to the object that was passed in and
+ * not return anything from the function. This supersedes `fnServerParams`
+ * from DataTables 1.9-.
+ *
+ * * `dataSrc` - By default DataTables will look for the property `data` (or
+ * `aaData` for compatibility with DataTables 1.9-) when obtaining data
+ * from an Ajax source or for server-side processing - this parameter
+ * allows that property to be changed. You can use Javascript dotted
+ * object notation to get a data source for multiple levels of nesting, or
+ * it my be used as a function. As a function it takes a single parameter,
+ * the JSON returned from the server, which can be manipulated as
+ * required, with the returned value being that used by DataTables as the
+ * data source for the table. This supersedes `sAjaxDataProp` from
+ * DataTables 1.9-.
+ *
+ * * `success` - Should not be overridden it is used internally in
+ * DataTables. To manipulate / transform the data returned by the server
+ * use `ajax.dataSrc`, or use `ajax` as a function (see below).
+ *
+ * `function`
+ * ----------
+ *
+ * As a function, making the Ajax call is left up to yourself allowing
+ * complete control of the Ajax request. Indeed, if desired, a method other
+ * than Ajax could be used to obtain the required data, such as Web storage
+ * or an AIR database.
+ *
+ * The function is given four parameters and no return is required. The
+ * parameters are:
+ *
+ * 1. _object_ - Data to send to the server
+ * 2. _function_ - Callback function that must be executed when the required
+ * data has been obtained. That data should be passed into the callback
+ * as the only parameter
+ * 3. _object_ - DataTables settings object for the table
+ *
+ * Note that this supersedes `fnServerData` from DataTables 1.9-.
+ *
+ * @type string|object|function
+ * @default null
+ *
+ * @dtopt Option
+ * @name DataTable.defaults.ajax
+ * @since 1.10.0
+ *
+ * @example
+ * // Get JSON data from a file via Ajax.
+ * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).
+ * $('#example').dataTable( {
+ * "ajax": "data.json"
+ * } );
+ *
+ * @example
+ * // Get JSON data from a file via Ajax, using `dataSrc` to change
+ * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)
+ * $('#example').dataTable( {
+ * "ajax": {
+ * "url": "data.json",
+ * "dataSrc": "tableData"
+ * }
+ * } );
+ *
+ * @example
+ * // Get JSON data from a file via Ajax, using `dataSrc` to read data
+ * // from a plain array rather than an array in an object
+ * $('#example').dataTable( {
+ * "ajax": {
+ * "url": "data.json",
+ * "dataSrc": ""
+ * }
+ * } );
+ *
+ * @example
+ * // Manipulate the data returned from the server - add a link to data
+ * // (note this can, should, be done using `render` for the column - this
+ * // is just a simple example of how the data can be manipulated).
+ * $('#example').dataTable( {
+ * "ajax": {
+ * "url": "data.json",
+ * "dataSrc": function ( json ) {
+ * for ( var i=0, ien=json.length ; i<ien ; i++ ) {
+ * json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>';
+ * }
+ * return json;
+ * }
+ * }
+ * } );
+ *
+ * @example
+ * // Add data to the request
+ * $('#example').dataTable( {
+ * "ajax": {
+ * "url": "data.json",
+ * "data": function ( d ) {
+ * return {
+ * "extra_search": $('#extra').val()
+ * };
+ * }
+ * }
+ * } );
+ *
+ * @example
+ * // Send request as POST
+ * $('#example').dataTable( {
+ * "ajax": {
+ * "url": "data.json",
+ * "type": "POST"
+ * }
+ * } );
+ *
+ * @example
+ * // Get the data from localStorage (could interface with a form for
+ * // adding, editing and removing rows).
+ * $('#example').dataTable( {
+ * "ajax": function (data, callback, settings) {
+ * callback(
+ * JSON.parse( localStorage.getItem('dataTablesData') )
+ * );
+ * }
+ * } );
+ */
+ "ajax": null,
+
+
+ /**
+ * This parameter allows you to readily specify the entries in the length drop
+ * down menu that DataTables shows when pagination is enabled. It can be
+ * either a 1D array of options which will be used for both the displayed
+ * option and the value, or a 2D array which will use the array in the first
+ * position as the value, and the array in the second position as the
+ * displayed options (useful for language strings such as 'All').
+ *
+ * Note that the `pageLength` property will be automatically set to the
+ * first value given in this array, unless `pageLength` is also provided.
+ * @type array
+ * @default [ 10, 25, 50, 100 ]
+ *
+ * @dtopt Option
+ * @name DataTable.defaults.lengthMenu
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
+ * } );
+ * } );
+ */
+ "aLengthMenu": [ 10, 25, 50, 100 ],
+
+
+ /**
+ * The `columns` option in the initialisation parameter allows you to define
+ * details about the way individual columns behave. For a full list of
+ * column options that can be set, please see
+ * {@link DataTable.defaults.column}. Note that if you use `columns` to
+ * define your columns, you must have an entry in the array for every single
+ * column that you have in your table (these can be null if you don't which
+ * to specify any options).
+ * @member
+ *
+ * @name DataTable.defaults.column
+ */
+ "aoColumns": null,
+
+ /**
+ * Very similar to `columns`, `columnDefs` allows you to target a specific
+ * column, multiple columns, or all columns, using the `targets` property of
+ * each object in the array. This allows great flexibility when creating
+ * tables, as the `columnDefs` arrays can be of any length, targeting the
+ * columns you specifically want. `columnDefs` may use any of the column
+ * options available: {@link DataTable.defaults.column}, but it _must_
+ * have `targets` defined in each object in the array. Values in the `targets`
+ * array may be:
+ * <ul>
+ * <li>a string - class name will be matched on the TH for the column</li>
+ * <li>0 or a positive integer - column index counting from the left</li>
+ * <li>a negative integer - column index counting from the right</li>
+ * <li>the string "_all" - all columns (i.e. assign a default)</li>
+ * </ul>
+ * @member
+ *
+ * @name DataTable.defaults.columnDefs
+ */
+ "aoColumnDefs": null,
+
+
+ /**
+ * Basically the same as `search`, this parameter defines the individual column
+ * filtering state at initialisation time. The array must be of the same size
+ * as the number of columns, and each element be an object with the parameters
+ * `search` and `escapeRegex` (the latter is optional). 'null' is also
+ * accepted and the default will be used.
+ * @type array
+ * @default []
+ *
+ * @dtopt Option
+ * @name DataTable.defaults.searchCols
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "searchCols": [
+ * null,
+ * { "search": "My filter" },
+ * null,
+ * { "search": "^[0-9]", "escapeRegex": false }
+ * ]
+ * } );
+ * } )
+ */
+ "aoSearchCols": [],
+
+
+ /**
+ * An array of CSS classes that should be applied to displayed rows. This
+ * array may be of any length, and DataTables will apply each class
+ * sequentially, looping when required.
+ * @type array
+ * @default null <i>Will take the values determined by the `oClasses.stripe*`
+ * options</i>
+ *
+ * @dtopt Option
+ * @name DataTable.defaults.stripeClasses
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "stripeClasses": [ 'strip1', 'strip2', 'strip3' ]
+ * } );
+ * } )
+ */
+ "asStripeClasses": null,
+
+
+ /**
+ * Enable or disable automatic column width calculation. This can be disabled
+ * as an optimisation (it takes some time to calculate the widths) if the
+ * tables widths are passed in using `columns`.
+ * @type boolean
+ * @default true
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.autoWidth
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "autoWidth": false
+ * } );
+ * } );
+ */
+ "bAutoWidth": true,
+
+
+ /**
+ * Deferred rendering can provide DataTables with a huge speed boost when you
+ * are using an Ajax or JS data source for the table. This option, when set to
+ * true, will cause DataTables to defer the creation of the table elements for
+ * each row until they are needed for a draw - saving a significant amount of
+ * time.
+ * @type boolean
+ * @default false
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.deferRender
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "ajax": "sources/arrays.txt",
+ * "deferRender": true
+ * } );
+ * } );
+ */
+ "bDeferRender": false,
+
+
+ /**
+ * Replace a DataTable which matches the given selector and replace it with
+ * one which has the properties of the new initialisation object passed. If no
+ * table matches the selector, then the new DataTable will be constructed as
+ * per normal.
+ * @type boolean
+ * @default false
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.destroy
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "srollY": "200px",
+ * "paginate": false
+ * } );
+ *
+ * // Some time later....
+ * $('#example').dataTable( {
+ * "filter": false,
+ * "destroy": true
+ * } );
+ * } );
+ */
+ "bDestroy": false,
+
+
+ /**
+ * Enable or disable filtering of data. Filtering in DataTables is "smart" in
+ * that it allows the end user to input multiple words (space separated) and
+ * will match a row containing those words, even if not in the order that was
+ * specified (this allow matching across multiple columns). Note that if you
+ * wish to use filtering in DataTables this must remain 'true' - to remove the
+ * default filtering input box and retain filtering abilities, please use
+ * {@link DataTable.defaults.dom}.
+ * @type boolean
+ * @default true
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.searching
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "searching": false
+ * } );
+ * } );
+ */
+ "bFilter": true,
+
+
+ /**
+ * Enable or disable the table information display. This shows information
+ * about the data that is currently visible on the page, including information
+ * about filtered data if that action is being performed.
+ * @type boolean
+ * @default true
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.info
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "info": false
+ * } );
+ * } );
+ */
+ "bInfo": true,
+
+
+ /**
+ * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some
+ * slightly different and additional mark-up from what DataTables has
+ * traditionally used).
+ * @type boolean
+ * @default false
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.jQueryUI
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "jQueryUI": true
+ * } );
+ * } );
+ */
+ "bJQueryUI": false,
+
+
+ /**
+ * Allows the end user to select the size of a formatted page from a select
+ * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).
+ * @type boolean
+ * @default true
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.lengthChange
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "lengthChange": false
+ * } );
+ * } );
+ */
+ "bLengthChange": true,
+
+
+ /**
+ * Enable or disable pagination.
+ * @type boolean
+ * @default true
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.paging
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "paging": false
+ * } );
+ * } );
+ */
+ "bPaginate": true,
+
+
+ /**
+ * Enable or disable the display of a 'processing' indicator when the table is
+ * being processed (e.g. a sort). This is particularly useful for tables with
+ * large amounts of data where it can take a noticeable amount of time to sort
+ * the entries.
+ * @type boolean
+ * @default false
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.processing
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "processing": true
+ * } );
+ * } );
+ */
+ "bProcessing": false,
+
+
+ /**
+ * Retrieve the DataTables object for the given selector. Note that if the
+ * table has already been initialised, this parameter will cause DataTables
+ * to simply return the object that has already been set up - it will not take
+ * account of any changes you might have made to the initialisation object
+ * passed to DataTables (setting this parameter to true is an acknowledgement
+ * that you understand this). `destroy` can be used to reinitialise a table if
+ * you need.
+ * @type boolean
+ * @default false
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.retrieve
+ *
+ * @example
+ * $(document).ready( function() {
+ * initTable();
+ * tableActions();
+ * } );
+ *
+ * function initTable ()
+ * {
+ * return $('#example').dataTable( {
+ * "scrollY": "200px",
+ * "paginate": false,
+ * "retrieve": true
+ * } );
+ * }
+ *
+ * function tableActions ()
+ * {
+ * var table = initTable();
+ * // perform API operations with oTable
+ * }
+ */
+ "bRetrieve": false,
+
+
+ /**
+ * When vertical (y) scrolling is enabled, DataTables will force the height of
+ * the table's viewport to the given height at all times (useful for layout).
+ * However, this can look odd when filtering data down to a small data set,
+ * and the footer is left "floating" further down. This parameter (when
+ * enabled) will cause DataTables to collapse the table's viewport down when
+ * the result set will fit within the given Y height.
+ * @type boolean
+ * @default false
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.scrollCollapse
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "scrollY": "200",
+ * "scrollCollapse": true
+ * } );
+ * } );
+ */
+ "bScrollCollapse": false,
+
+
+ /**
+ * Configure DataTables to use server-side processing. Note that the
+ * `ajax` parameter must also be given in order to give DataTables a
+ * source to obtain the required data for each draw.
+ * @type boolean
+ * @default false
+ *
+ * @dtopt Features
+ * @dtopt Server-side
+ * @name DataTable.defaults.serverSide
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "serverSide": true,
+ * "ajax": "xhr.php"
+ * } );
+ * } );
+ */
+ "bServerSide": false,
+
+
+ /**
+ * Enable or disable sorting of columns. Sorting of individual columns can be
+ * disabled by the `sortable` option for each column.
+ * @type boolean
+ * @default true
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.ordering
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "ordering": false
+ * } );
+ * } );
+ */
+ "bSort": true,
+
+
+ /**
+ * Enable or display DataTables' ability to sort multiple columns at the
+ * same time (activated by shift-click by the user).
+ * @type boolean
+ * @default true
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.orderMulti
+ *
+ * @example
+ * // Disable multiple column sorting ability
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "orderMulti": false
+ * } );
+ * } );
+ */
+ "bSortMulti": true,
+
+
+ /**
+ * Allows control over whether DataTables should use the top (true) unique
+ * cell that is found for a single column, or the bottom (false - default).
+ * This is useful when using complex headers.
+ * @type boolean
+ * @default false
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.orderCellsTop
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "orderCellsTop": true
+ * } );
+ * } );
+ */
+ "bSortCellsTop": false,
+
+
+ /**
+ * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
+ * `sorting\_3` to the columns which are currently being sorted on. This is
+ * presented as a feature switch as it can increase processing time (while
+ * classes are removed and added) so for large data sets you might want to
+ * turn this off.
+ * @type boolean
+ * @default true
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.orderClasses
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "orderClasses": false
+ * } );
+ * } );
+ */
+ "bSortClasses": true,
+
+
+ /**
+ * Enable or disable state saving. When enabled HTML5 `localStorage` will be
+ * used to save table display information such as pagination information,
+ * display length, filtering and sorting. As such when the end user reloads
+ * the page the display display will match what thy had previously set up.
+ *
+ * Due to the use of `localStorage` the default state saving is not supported
+ * in IE6 or 7. If state saving is required in those browsers, use
+ * `stateSaveCallback` to provide a storage solution such as cookies.
+ * @type boolean
+ * @default false
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.stateSave
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "stateSave": true
+ * } );
+ * } );
+ */
+ "bStateSave": false,
+
+
+ /**
+ * This function is called when a TR element is created (and all TD child
+ * elements have been inserted), or registered if using a DOM source, allowing
+ * manipulation of the TR element (adding classes etc).
+ * @type function
+ * @param {node} row "TR" element for the current row
+ * @param {array} data Raw data array for this row
+ * @param {int} dataIndex The index of this row in the internal aoData array
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.createdRow
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "createdRow": function( row, data, dataIndex ) {
+ * // Bold the grade for all 'A' grade browsers
+ * if ( data[4] == "A" )
+ * {
+ * $('td:eq(4)', row).html( '<b>A</b>' );
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "fnCreatedRow": null,
+
+
+ /**
+ * This function is called on every 'draw' event, and allows you to
+ * dynamically modify any aspect you want about the created DOM.
+ * @type function
+ * @param {object} settings DataTables settings object
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.drawCallback
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "drawCallback": function( settings ) {
+ * alert( 'DataTables has redrawn the table' );
+ * }
+ * } );
+ * } );
+ */
+ "fnDrawCallback": null,
+
+
+ /**
+ * Identical to fnHeaderCallback() but for the table footer this function
+ * allows you to modify the table footer on every 'draw' event.
+ * @type function
+ * @param {node} foot "TR" element for the footer
+ * @param {array} data Full table data (as derived from the original HTML)
+ * @param {int} start Index for the current display starting point in the
+ * display array
+ * @param {int} end Index for the current display ending point in the
+ * display array
+ * @param {array int} display Index array to translate the visual position
+ * to the full data array
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.footerCallback
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "footerCallback": function( tfoot, data, start, end, display ) {
+ * tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start;
+ * }
+ * } );
+ * } )
+ */
+ "fnFooterCallback": null,
+
+
+ /**
+ * When rendering large numbers in the information element for the table
+ * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
+ * to have a comma separator for the 'thousands' units (e.g. 1 million is
+ * rendered as "1,000,000") to help readability for the end user. This
+ * function will override the default method DataTables uses.
+ * @type function
+ * @member
+ * @param {int} toFormat number to be formatted
+ * @returns {string} formatted string for DataTables to show the number
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.formatNumber
+ *
+ * @example
+ * // Format a number using a single quote for the separator (note that
+ * // this can also be done with the language.thousands option)
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "formatNumber": function ( toFormat ) {
+ * return toFormat.toString().replace(
+ * /\B(?=(\d{3})+(?!\d))/g, "'"
+ * );
+ * };
+ * } );
+ * } );
+ */
+ "fnFormatNumber": function ( toFormat ) {
+ return toFormat.toString().replace(
+ /\B(?=(\d{3})+(?!\d))/g,
+ this.oLanguage.sThousands
+ );
+ },
+
+
+ /**
+ * This function is called on every 'draw' event, and allows you to
+ * dynamically modify the header row. This can be used to calculate and
+ * display useful information about the table.
+ * @type function
+ * @param {node} head "TR" element for the header
+ * @param {array} data Full table data (as derived from the original HTML)
+ * @param {int} start Index for the current display starting point in the
+ * display array
+ * @param {int} end Index for the current display ending point in the
+ * display array
+ * @param {array int} display Index array to translate the visual position
+ * to the full data array
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.headerCallback
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "fheaderCallback": function( head, data, start, end, display ) {
+ * head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records";
+ * }
+ * } );
+ * } )
+ */
+ "fnHeaderCallback": null,
+
+
+ /**
+ * The information element can be used to convey information about the current
+ * state of the table. Although the internationalisation options presented by
+ * DataTables are quite capable of dealing with most customisations, there may
+ * be times where you wish to customise the string further. This callback
+ * allows you to do exactly that.
+ * @type function
+ * @param {object} oSettings DataTables settings object
+ * @param {int} start Starting position in data for the draw
+ * @param {int} end End position in data for the draw
+ * @param {int} max Total number of rows in the table (regardless of
+ * filtering)
+ * @param {int} total Total number of rows in the data set, after filtering
+ * @param {string} pre The string that DataTables has formatted using it's
+ * own rules
+ * @returns {string} The string to be displayed in the information element.
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.infoCallback
+ *
+ * @example
+ * $('#example').dataTable( {
+ * "infoCallback": function( settings, start, end, max, total, pre ) {
+ * return start +" to "+ end;
+ * }
+ * } );
+ */
+ "fnInfoCallback": null,
+
+
+ /**
+ * Called when the table has been initialised. Normally DataTables will
+ * initialise sequentially and there will be no need for this function,
+ * however, this does not hold true when using external language information
+ * since that is obtained using an async XHR call.
+ * @type function
+ * @param {object} settings DataTables settings object
+ * @param {object} json The JSON object request from the server - only
+ * present if client-side Ajax sourced data is used
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.initComplete
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "initComplete": function(settings, json) {
+ * alert( 'DataTables has finished its initialisation.' );
+ * }
+ * } );
+ * } )
+ */
+ "fnInitComplete": null,
+
+
+ /**
+ * Called at the very start of each table draw and can be used to cancel the
+ * draw by returning false, any other return (including undefined) results in
+ * the full draw occurring).
+ * @type function
+ * @param {object} settings DataTables settings object
+ * @returns {boolean} False will cancel the draw, anything else (including no
+ * return) will allow it to complete.
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.preDrawCallback
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "preDrawCallback": function( settings ) {
+ * if ( $('#test').val() == 1 ) {
+ * return false;
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "fnPreDrawCallback": null,
+
+
+ /**
+ * This function allows you to 'post process' each row after it have been
+ * generated for each table draw, but before it is rendered on screen. This
+ * function might be used for setting the row class name etc.
+ * @type function
+ * @param {node} row "TR" element for the current row
+ * @param {array} data Raw data array for this row
+ * @param {int} displayIndex The display index for the current table draw
+ * @param {int} displayIndexFull The index of the data in the full list of
+ * rows (after filtering)
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.rowCallback
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "rowCallback": function( row, data, displayIndex, displayIndexFull ) {
+ * // Bold the grade for all 'A' grade browsers
+ * if ( data[4] == "A" ) {
+ * $('td:eq(4)', row).html( '<b>A</b>' );
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "fnRowCallback": null,
+
+
+ /**
+ * __Deprecated__ The functionality provided by this parameter has now been
+ * superseded by that provided through `ajax`, which should be used instead.
+ *
+ * This parameter allows you to override the default function which obtains
+ * the data from the server so something more suitable for your application.
+ * For example you could use POST data, or pull information from a Gears or
+ * AIR database.
+ * @type function
+ * @member
+ * @param {string} source HTTP source to obtain the data from (`ajax`)
+ * @param {array} data A key/value pair object containing the data to send
+ * to the server
+ * @param {function} callback to be called on completion of the data get
+ * process that will draw the data on the page.
+ * @param {object} settings DataTables settings object
+ *
+ * @dtopt Callbacks
+ * @dtopt Server-side
+ * @name DataTable.defaults.serverData
+ *
+ * @deprecated 1.10. Please use `ajax` for this functionality now.
+ */
+ "fnServerData": null,
+
+
+ /**
+ * __Deprecated__ The functionality provided by this parameter has now been
+ * superseded by that provided through `ajax`, which should be used instead.
+ *
+ * It is often useful to send extra data to the server when making an Ajax
+ * request - for example custom filtering information, and this callback
+ * function makes it trivial to send extra information to the server. The
+ * passed in parameter is the data set that has been constructed by
+ * DataTables, and you can add to this or modify it as you require.
+ * @type function
+ * @param {array} data Data array (array of objects which are name/value
+ * pairs) that has been constructed by DataTables and will be sent to the
+ * server. In the case of Ajax sourced data with server-side processing
+ * this will be an empty array, for server-side processing there will be a
+ * significant number of parameters!
+ * @returns {undefined} Ensure that you modify the data array passed in,
+ * as this is passed by reference.
+ *
+ * @dtopt Callbacks
+ * @dtopt Server-side
+ * @name DataTable.defaults.serverParams
+ *
+ * @deprecated 1.10. Please use `ajax` for this functionality now.
+ */
+ "fnServerParams": null,
+
+
+ /**
+ * Load the table state. With this function you can define from where, and how, the
+ * state of a table is loaded. By default DataTables will load from `localStorage`
+ * but you might wish to use a server-side database or cookies.
+ * @type function
+ * @member
+ * @param {object} settings DataTables settings object
+ * @return {object} The DataTables state object to be loaded
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.stateLoadCallback
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "stateSave": true,
+ * "stateLoadCallback": function (settings) {
+ * var o;
+ *
+ * // Send an Ajax request to the server to get the data. Note that
+ * // this is a synchronous request.
+ * $.ajax( {
+ * "url": "/state_load",
+ * "async": false,
+ * "dataType": "json",
+ * "success": function (json) {
+ * o = json;
+ * }
+ * } );
+ *
+ * return o;
+ * }
+ * } );
+ * } );
+ */
+ "fnStateLoadCallback": function ( settings ) {
+ try {
+ return JSON.parse(
+ (settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(
+ 'DataTables_'+settings.sInstance+'_'+location.pathname
+ )
+ );
+ } catch (e) {}
+ },
+
+
+ /**
+ * Callback which allows modification of the saved state prior to loading that state.
+ * This callback is called when the table is loading state from the stored data, but
+ * prior to the settings object being modified by the saved state. Note that for
+ * plug-in authors, you should use the `stateLoadParams` event to load parameters for
+ * a plug-in.
+ * @type function
+ * @param {object} settings DataTables settings object
+ * @param {object} data The state object that is to be loaded
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.stateLoadParams
+ *
+ * @example
+ * // Remove a saved filter, so filtering is never loaded
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "stateSave": true,
+ * "stateLoadParams": function (settings, data) {
+ * data.oSearch.sSearch = "";
+ * }
+ * } );
+ * } );
+ *
+ * @example
+ * // Disallow state loading by returning false
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "stateSave": true,
+ * "stateLoadParams": function (settings, data) {
+ * return false;
+ * }
+ * } );
+ * } );
+ */
+ "fnStateLoadParams": null,
+
+
+ /**
+ * Callback that is called when the state has been loaded from the state saving method
+ * and the DataTables settings object has been modified as a result of the loaded state.
+ * @type function
+ * @param {object} settings DataTables settings object
+ * @param {object} data The state object that was loaded
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.stateLoaded
+ *
+ * @example
+ * // Show an alert with the filtering value that was saved
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "stateSave": true,
+ * "stateLoaded": function (settings, data) {
+ * alert( 'Saved filter was: '+data.oSearch.sSearch );
+ * }
+ * } );
+ * } );
+ */
+ "fnStateLoaded": null,
+
+
+ /**
+ * Save the table state. This function allows you to define where and how the state
+ * information for the table is stored By default DataTables will use `localStorage`
+ * but you might wish to use a server-side database or cookies.
+ * @type function
+ * @member
+ * @param {object} settings DataTables settings object
+ * @param {object} data The state object to be saved
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.stateSaveCallback
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "stateSave": true,
+ * "stateSaveCallback": function (settings, data) {
+ * // Send an Ajax request to the server with the state object
+ * $.ajax( {
+ * "url": "/state_save",
+ * "data": data,
+ * "dataType": "json",
+ * "method": "POST"
+ * "success": function () {}
+ * } );
+ * }
+ * } );
+ * } );
+ */
+ "fnStateSaveCallback": function ( settings, data ) {
+ try {
+ (settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(
+ 'DataTables_'+settings.sInstance+'_'+location.pathname,
+ JSON.stringify( data )
+ );
+ } catch (e) {}
+ },
+
+
+ /**
+ * Callback which allows modification of the state to be saved. Called when the table
+ * has changed state a new state save is required. This method allows modification of
+ * the state saving object prior to actually doing the save, including addition or
+ * other state properties or modification. Note that for plug-in authors, you should
+ * use the `stateSaveParams` event to save parameters for a plug-in.
+ * @type function
+ * @param {object} settings DataTables settings object
+ * @param {object} data The state object to be saved
+ *
+ * @dtopt Callbacks
+ * @name DataTable.defaults.stateSaveParams
+ *
+ * @example
+ * // Remove a saved filter, so filtering is never saved
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "stateSave": true,
+ * "stateSaveParams": function (settings, data) {
+ * data.oSearch.sSearch = "";
+ * }
+ * } );
+ * } );
+ */
+ "fnStateSaveParams": null,
+
+
+ /**
+ * Duration for which the saved state information is considered valid. After this period
+ * has elapsed the state will be returned to the default.
+ * Value is given in seconds.
+ * @type int
+ * @default 7200 <i>(2 hours)</i>
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.stateDuration
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "stateDuration": 60*60*24; // 1 day
+ * } );
+ * } )
+ */
+ "iStateDuration": 7200,
+
+
+ /**
+ * When enabled DataTables will not make a request to the server for the first
+ * page draw - rather it will use the data already on the page (no sorting etc
+ * will be applied to it), thus saving on an XHR at load time. `deferLoading`
+ * is used to indicate that deferred loading is required, but it is also used
+ * to tell DataTables how many records there are in the full table (allowing
+ * the information element and pagination to be displayed correctly). In the case
+ * where a filtering is applied to the table on initial load, this can be
+ * indicated by giving the parameter as an array, where the first element is
+ * the number of records available after filtering and the second element is the
+ * number of records without filtering (allowing the table information element
+ * to be shown correctly).
+ * @type int | array
+ * @default null
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.deferLoading
+ *
+ * @example
+ * // 57 records available in the table, no filtering applied
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "serverSide": true,
+ * "ajax": "scripts/server_processing.php",
+ * "deferLoading": 57
+ * } );
+ * } );
+ *
+ * @example
+ * // 57 records after filtering, 100 without filtering (an initial filter applied)
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "serverSide": true,
+ * "ajax": "scripts/server_processing.php",
+ * "deferLoading": [ 57, 100 ],
+ * "search": {
+ * "search": "my_filter"
+ * }
+ * } );
+ * } );
+ */
+ "iDeferLoading": null,
+
+
+ /**
+ * Number of rows to display on a single page when using pagination. If
+ * feature enabled (`lengthChange`) then the end user will be able to override
+ * this to a custom setting using a pop-up menu.
+ * @type int
+ * @default 10
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.pageLength
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "pageLength": 50
+ * } );
+ * } )
+ */
+ "iDisplayLength": 10,
+
+
+ /**
+ * Define the starting point for data display when using DataTables with
+ * pagination. Note that this parameter is the number of records, rather than
+ * the page number, so if you have 10 records per page and want to start on
+ * the third page, it should be "20".
+ * @type int
+ * @default 0
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.displayStart
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "displayStart": 20
+ * } );
+ * } )
+ */
+ "iDisplayStart": 0,
+
+
+ /**
+ * By default DataTables allows keyboard navigation of the table (sorting, paging,
+ * and filtering) by adding a `tabindex` attribute to the required elements. This
+ * allows you to tab through the controls and press the enter key to activate them.
+ * The tabindex is default 0, meaning that the tab follows the flow of the document.
+ * You can overrule this using this parameter if you wish. Use a value of -1 to
+ * disable built-in keyboard navigation.
+ * @type int
+ * @default 0
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.tabIndex
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "tabIndex": 1
+ * } );
+ * } );
+ */
+ "iTabIndex": 0,
+
+
+ /**
+ * Classes that DataTables assigns to the various components and features
+ * that it adds to the HTML table. This allows classes to be configured
+ * during initialisation in addition to through the static
+ * {@link DataTable.ext.oStdClasses} object).
+ * @namespace
+ * @name DataTable.defaults.classes
+ */
+ "oClasses": {},
+
+
+ /**
+ * All strings that DataTables uses in the user interface that it creates
+ * are defined in this object, allowing you to modified them individually or
+ * completely replace them all as required.
+ * @namespace
+ * @name DataTable.defaults.language
+ */
+ "oLanguage": {
+ /**
+ * Strings that are used for WAI-ARIA labels and controls only (these are not
+ * actually visible on the page, but will be read by screenreaders, and thus
+ * must be internationalised as well).
+ * @namespace
+ * @name DataTable.defaults.language.aria
+ */
+ "oAria": {
+ /**
+ * ARIA label that is added to the table headers when the column may be
+ * sorted ascending by activing the column (click or return when focused).
+ * Note that the column header is prefixed to this string.
+ * @type string
+ * @default : activate to sort column ascending
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.aria.sortAscending
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "aria": {
+ * "sortAscending": " - click/return to sort ascending"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sSortAscending": ": activate to sort column ascending",
+
+ /**
+ * ARIA label that is added to the table headers when the column may be
+ * sorted descending by activing the column (click or return when focused).
+ * Note that the column header is prefixed to this string.
+ * @type string
+ * @default : activate to sort column ascending
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.aria.sortDescending
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "aria": {
+ * "sortDescending": " - click/return to sort descending"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sSortDescending": ": activate to sort column descending"
+ },
+
+ /**
+ * Pagination string used by DataTables for the built-in pagination
+ * control types.
+ * @namespace
+ * @name DataTable.defaults.language.paginate
+ */
+ "oPaginate": {
+ /**
+ * Text to use when using the 'full_numbers' type of pagination for the
+ * button to take the user to the first page.
+ * @type string
+ * @default First
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.paginate.first
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "paginate": {
+ * "first": "First page"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sFirst": "First",
+
+
+ /**
+ * Text to use when using the 'full_numbers' type of pagination for the
+ * button to take the user to the last page.
+ * @type string
+ * @default Last
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.paginate.last
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "paginate": {
+ * "last": "Last page"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sLast": "Last",
+
+
+ /**
+ * Text to use for the 'next' pagination button (to take the user to the
+ * next page).
+ * @type string
+ * @default Next
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.paginate.next
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "paginate": {
+ * "next": "Next page"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sNext": "Next",
+
+
+ /**
+ * Text to use for the 'previous' pagination button (to take the user to
+ * the previous page).
+ * @type string
+ * @default Previous
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.paginate.previous
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "paginate": {
+ * "previous": "Previous page"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sPrevious": "Previous"
+ },
+
+ /**
+ * This string is shown in preference to `zeroRecords` when the table is
+ * empty of data (regardless of filtering). Note that this is an optional
+ * parameter - if it is not given, the value of `zeroRecords` will be used
+ * instead (either the default or given value).
+ * @type string
+ * @default No data available in table
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.emptyTable
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "emptyTable": "No data available in table"
+ * }
+ * } );
+ * } );
+ */
+ "sEmptyTable": "No data available in table",
+
+
+ /**
+ * This string gives information to the end user about the information
+ * that is current on display on the page. The following tokens can be
+ * used in the string and will be dynamically replaced as the table
+ * display updates. This tokens can be placed anywhere in the string, or
+ * removed as needed by the language requires:
+ *
+ * * `\_START\_` - Display index of the first record on the current page
+ * * `\_END\_` - Display index of the last record on the current page
+ * * `\_TOTAL\_` - Number of records in the table after filtering
+ * * `\_MAX\_` - Number of records in the table without filtering
+ * * `\_PAGE\_` - Current page number
+ * * `\_PAGES\_` - Total number of pages of data in the table
+ *
+ * @type string
+ * @default Showing _START_ to _END_ of _TOTAL_ entries
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.info
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "info": "Showing page _PAGE_ of _PAGES_"
+ * }
+ * } );
+ * } );
+ */
+ "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
+
+
+ /**
+ * Display information string for when the table is empty. Typically the
+ * format of this string should match `info`.
+ * @type string
+ * @default Showing 0 to 0 of 0 entries
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.infoEmpty
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "infoEmpty": "No entries to show"
+ * }
+ * } );
+ * } );
+ */
+ "sInfoEmpty": "Showing 0 to 0 of 0 entries",
+
+
+ /**
+ * When a user filters the information in a table, this string is appended
+ * to the information (`info`) to give an idea of how strong the filtering
+ * is. The variable _MAX_ is dynamically updated.
+ * @type string
+ * @default (filtered from _MAX_ total entries)
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.infoFiltered
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "infoFiltered": " - filtering from _MAX_ records"
+ * }
+ * } );
+ * } );
+ */
+ "sInfoFiltered": "(filtered from _MAX_ total entries)",
+
+
+ /**
+ * If can be useful to append extra information to the info string at times,
+ * and this variable does exactly that. This information will be appended to
+ * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are
+ * being used) at all times.
+ * @type string
+ * @default <i>Empty string</i>
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.infoPostFix
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "infoPostFix": "All records shown are derived from real information."
+ * }
+ * } );
+ * } );
+ */
+ "sInfoPostFix": "",
+
+
+ /**
+ * This decimal place operator is a little different from the other
+ * language options since DataTables doesn't output floating point
+ * numbers, so it won't ever use this for display of a number. Rather,
+ * what this parameter does is modify the sort methods of the table so
+ * that numbers which are in a format which has a character other than
+ * a period (`.`) as a decimal place will be sorted numerically.
+ *
+ * Note that numbers with different decimal places cannot be shown in
+ * the same table and still be sortable, the table must be consistent.
+ * However, multiple different tables on the page can use different
+ * decimal place characters.
+ * @type string
+ * @default
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.decimal
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "decimal": ","
+ * "thousands": "."
+ * }
+ * } );
+ * } );
+ */
+ "sDecimal": "",
+
+
+ /**
+ * DataTables has a build in number formatter (`formatNumber`) which is
+ * used to format large numbers that are used in the table information.
+ * By default a comma is used, but this can be trivially changed to any
+ * character you wish with this parameter.
+ * @type string
+ * @default ,
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.thousands
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "thousands": "'"
+ * }
+ * } );
+ * } );
+ */
+ "sThousands": ",",
+
+
+ /**
+ * Detail the action that will be taken when the drop down menu for the
+ * pagination length option is changed. The '_MENU_' variable is replaced
+ * with a default select list of 10, 25, 50 and 100, and can be replaced
+ * with a custom select box if required.
+ * @type string
+ * @default Show _MENU_ entries
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.lengthMenu
+ *
+ * @example
+ * // Language change only
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "lengthMenu": "Display _MENU_ records"
+ * }
+ * } );
+ * } );
+ *
+ * @example
+ * // Language and options change
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "lengthMenu": 'Display <select>'+
+ * '<option value="10">10</option>'+
+ * '<option value="20">20</option>'+
+ * '<option value="30">30</option>'+
+ * '<option value="40">40</option>'+
+ * '<option value="50">50</option>'+
+ * '<option value="-1">All</option>'+
+ * '</select> records'
+ * }
+ * } );
+ * } );
+ */
+ "sLengthMenu": "Show _MENU_ entries",
+
+
+ /**
+ * When using Ajax sourced data and during the first draw when DataTables is
+ * gathering the data, this message is shown in an empty row in the table to
+ * indicate to the end user the the data is being loaded. Note that this
+ * parameter is not used when loading data by server-side processing, just
+ * Ajax sourced data with client-side processing.
+ * @type string
+ * @default Loading...
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.loadingRecords
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "loadingRecords": "Please wait - loading..."
+ * }
+ * } );
+ * } );
+ */
+ "sLoadingRecords": "Loading...",
+
+
+ /**
+ * Text which is displayed when the table is processing a user action
+ * (usually a sort command or similar).
+ * @type string
+ * @default Processing...
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.processing
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "processing": "DataTables is currently busy"
+ * }
+ * } );
+ * } );
+ */
+ "sProcessing": "Processing...",
+
+
+ /**
+ * Details the actions that will be taken when the user types into the
+ * filtering input text box. The variable "_INPUT_", if used in the string,
+ * is replaced with the HTML text box for the filtering input allowing
+ * control over where it appears in the string. If "_INPUT_" is not given
+ * then the input box is appended to the string automatically.
+ * @type string
+ * @default Search:
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.search
+ *
+ * @example
+ * // Input text box will be appended at the end automatically
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "search": "Filter records:"
+ * }
+ * } );
+ * } );
+ *
+ * @example
+ * // Specify where the filter should appear
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "search": "Apply filter _INPUT_ to table"
+ * }
+ * } );
+ * } );
+ */
+ "sSearch": "Search:",
+
+
+ /**
+ * Assign a `placeholder` attribute to the search `input` element
+ * @type string
+ * @default
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.searchPlaceholder
+ */
+ "sSearchPlaceholder": "",
+
+
+ /**
+ * All of the language information can be stored in a file on the
+ * server-side, which DataTables will look up if this parameter is passed.
+ * It must store the URL of the language file, which is in a JSON format,
+ * and the object has the same properties as the oLanguage object in the
+ * initialiser object (i.e. the above parameters). Please refer to one of
+ * the example language files to see how this works in action.
+ * @type string
+ * @default <i>Empty string - i.e. disabled</i>
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.url
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "url": "http://www.sprymedia.co.uk/dataTables/lang.txt"
+ * }
+ * } );
+ * } );
+ */
+ "sUrl": "",
+
+
+ /**
+ * Text shown inside the table records when the is no information to be
+ * displayed after filtering. `emptyTable` is shown when there is simply no
+ * information in the table at all (regardless of filtering).
+ * @type string
+ * @default No matching records found
+ *
+ * @dtopt Language
+ * @name DataTable.defaults.language.zeroRecords
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "language": {
+ * "zeroRecords": "No records to display"
+ * }
+ * } );
+ * } );
+ */
+ "sZeroRecords": "No matching records found"
+ },
+
+
+ /**
+ * This parameter allows you to have define the global filtering state at
+ * initialisation time. As an object the `search` parameter must be
+ * defined, but all other parameters are optional. When `regex` is true,
+ * the search string will be treated as a regular expression, when false
+ * (default) it will be treated as a straight string. When `smart`
+ * DataTables will use it's smart filtering methods (to word match at
+ * any point in the data), when false this will not be done.
+ * @namespace
+ * @extends DataTable.models.oSearch
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.search
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "search": {"search": "Initial search"}
+ * } );
+ * } )
+ */
+ "oSearch": $.extend( {}, DataTable.models.oSearch ),
+
+
+ /**
+ * __Deprecated__ The functionality provided by this parameter has now been
+ * superseded by that provided through `ajax`, which should be used instead.
+ *
+ * By default DataTables will look for the property `data` (or `aaData` for
+ * compatibility with DataTables 1.9-) when obtaining data from an Ajax
+ * source or for server-side processing - this parameter allows that
+ * property to be changed. You can use Javascript dotted object notation to
+ * get a data source for multiple levels of nesting.
+ * @type string
+ * @default data
+ *
+ * @dtopt Options
+ * @dtopt Server-side
+ * @name DataTable.defaults.ajaxDataProp
+ *
+ * @deprecated 1.10. Please use `ajax` for this functionality now.
+ */
+ "sAjaxDataProp": "data",
+
+
+ /**
+ * __Deprecated__ The functionality provided by this parameter has now been
+ * superseded by that provided through `ajax`, which should be used instead.
+ *
+ * You can instruct DataTables to load data from an external
+ * source using this parameter (use aData if you want to pass data in you
+ * already have). Simply provide a url a JSON object can be obtained from.
+ * @type string
+ * @default null
+ *
+ * @dtopt Options
+ * @dtopt Server-side
+ * @name DataTable.defaults.ajaxSource
+ *
+ * @deprecated 1.10. Please use `ajax` for this functionality now.
+ */
+ "sAjaxSource": null,
+
+
+ /**
+ * This initialisation variable allows you to specify exactly where in the
+ * DOM you want DataTables to inject the various controls it adds to the page
+ * (for example you might want the pagination controls at the top of the
+ * table). DIV elements (with or without a custom class) can also be added to
+ * aid styling. The follow syntax is used:
+ * <ul>
+ * <li>The following options are allowed:
+ * <ul>
+ * <li>'l' - Length changing</li>
+ * <li>'f' - Filtering input</li>
+ * <li>'t' - The table!</li>
+ * <li>'i' - Information</li>
+ * <li>'p' - Pagination</li>
+ * <li>'r' - pRocessing</li>
+ * </ul>
+ * </li>
+ * <li>The following constants are allowed:
+ * <ul>
+ * <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>
+ * <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>
+ * </ul>
+ * </li>
+ * <li>The following syntax is expected:
+ * <ul>
+ * <li>'<' and '>' - div elements</li>
+ * <li>'<"class" and '>' - div with a class</li>
+ * <li>'<"#id" and '>' - div with an ID</li>
+ * </ul>
+ * </li>
+ * <li>Examples:
+ * <ul>
+ * <li>'<"wrapper"flipt>'</li>
+ * <li>'<lf<t>ip>'</li>
+ * </ul>
+ * </li>
+ * </ul>
+ * @type string
+ * @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>
+ * <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i>
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.dom
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "dom": '<"top"i>rt<"bottom"flp><"clear">'
+ * } );
+ * } );
+ */
+ "sDom": "lfrtip",
+
+
+ /**
+ * Search delay option. This will throttle full table searches that use the
+ * DataTables provided search input element (it does not effect calls to
+ * `dt-api search()`, providing a delay before the search is made.
+ * @type integer
+ * @default 0
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.searchDelay
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "searchDelay": 200
+ * } );
+ * } )
+ */
+ "searchDelay": null,
+
+
+ /**
+ * DataTables features four different built-in options for the buttons to
+ * display for pagination control:
+ *
+ * * `simple` - 'Previous' and 'Next' buttons only
+ * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers
+ * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons
+ * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus
+ * page numbers
+ *
+ * Further methods can be added using {@link DataTable.ext.oPagination}.
+ * @type string
+ * @default simple_numbers
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.pagingType
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "pagingType": "full_numbers"
+ * } );
+ * } )
+ */
+ "sPaginationType": "simple_numbers",
+
+
+ /**
+ * Enable horizontal scrolling. When a table is too wide to fit into a
+ * certain layout, or you have a large number of columns in the table, you
+ * can enable x-scrolling to show the table in a viewport, which can be
+ * scrolled. This property can be `true` which will allow the table to
+ * scroll horizontally when needed, or any CSS unit, or a number (in which
+ * case it will be treated as a pixel measurement). Setting as simply `true`
+ * is recommended.
+ * @type boolean|string
+ * @default <i>blank string - i.e. disabled</i>
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.scrollX
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "scrollX": true,
+ * "scrollCollapse": true
+ * } );
+ * } );
+ */
+ "sScrollX": "",
+
+
+ /**
+ * This property can be used to force a DataTable to use more width than it
+ * might otherwise do when x-scrolling is enabled. For example if you have a
+ * table which requires to be well spaced, this parameter is useful for
+ * "over-sizing" the table, and thus forcing scrolling. This property can by
+ * any CSS unit, or a number (in which case it will be treated as a pixel
+ * measurement).
+ * @type string
+ * @default <i>blank string - i.e. disabled</i>
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.scrollXInner
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "scrollX": "100%",
+ * "scrollXInner": "110%"
+ * } );
+ * } );
+ */
+ "sScrollXInner": "",
+
+
+ /**
+ * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
+ * to the given height, and enable scrolling for any data which overflows the
+ * current viewport. This can be used as an alternative to paging to display
+ * a lot of data in a small area (although paging and scrolling can both be
+ * enabled at the same time). This property can be any CSS unit, or a number
+ * (in which case it will be treated as a pixel measurement).
+ * @type string
+ * @default <i>blank string - i.e. disabled</i>
+ *
+ * @dtopt Features
+ * @name DataTable.defaults.scrollY
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "scrollY": "200px",
+ * "paginate": false
+ * } );
+ * } );
+ */
+ "sScrollY": "",
+
+
+ /**
+ * __Deprecated__ The functionality provided by this parameter has now been
+ * superseded by that provided through `ajax`, which should be used instead.
+ *
+ * Set the HTTP method that is used to make the Ajax call for server-side
+ * processing or Ajax sourced data.
+ * @type string
+ * @default GET
+ *
+ * @dtopt Options
+ * @dtopt Server-side
+ * @name DataTable.defaults.serverMethod
+ *
+ * @deprecated 1.10. Please use `ajax` for this functionality now.
+ */
+ "sServerMethod": "GET",
+
+
+ /**
+ * DataTables makes use of renderers when displaying HTML elements for
+ * a table. These renderers can be added or modified by plug-ins to
+ * generate suitable mark-up for a site. For example the Bootstrap
+ * integration plug-in for DataTables uses a paging button renderer to
+ * display pagination buttons in the mark-up required by Bootstrap.
+ *
+ * For further information about the renderers available see
+ * DataTable.ext.renderer
+ * @type string|object
+ * @default null
+ *
+ * @name DataTable.defaults.renderer
+ *
+ */
+ "renderer": null
+ };
+
+ _fnHungarianMap( DataTable.defaults );
+
+
+
+ /*
+ * Developer note - See note in model.defaults.js about the use of Hungarian
+ * notation and camel case.
+ */
+
+ /**
+ * Column options that can be given to DataTables at initialisation time.
+ * @namespace
+ */
+ DataTable.defaults.column = {
+ /**
+ * Define which column(s) an order will occur on for this column. This
+ * allows a column's ordering to take multiple columns into account when
+ * doing a sort or use the data from a different column. For example first
+ * name / last name columns make sense to do a multi-column sort over the
+ * two columns.
+ * @type array|int
+ * @default null <i>Takes the value of the column index automatically</i>
+ *
+ * @name DataTable.defaults.column.orderData
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "orderData": [ 0, 1 ], "targets": [ 0 ] },
+ * { "orderData": [ 1, 0 ], "targets": [ 1 ] },
+ * { "orderData": 2, "targets": [ 2 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * { "orderData": [ 0, 1 ] },
+ * { "orderData": [ 1, 0 ] },
+ * { "orderData": 2 },
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "aDataSort": null,
+ "iDataSort": -1,
+
+
+ /**
+ * You can control the default ordering direction, and even alter the
+ * behaviour of the sort handler (i.e. only allow ascending ordering etc)
+ * using this parameter.
+ * @type array
+ * @default [ 'asc', 'desc' ]
+ *
+ * @name DataTable.defaults.column.orderSequence
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "orderSequence": [ "asc" ], "targets": [ 1 ] },
+ * { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] },
+ * { "orderSequence": [ "desc" ], "targets": [ 3 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * null,
+ * { "orderSequence": [ "asc" ] },
+ * { "orderSequence": [ "desc", "asc", "asc" ] },
+ * { "orderSequence": [ "desc" ] },
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "asSorting": [ 'asc', 'desc' ],
+
+
+ /**
+ * Enable or disable filtering on the data in this column.
+ * @type boolean
+ * @default true
+ *
+ * @name DataTable.defaults.column.searchable
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "searchable": false, "targets": [ 0 ] }
+ * ] } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * { "searchable": false },
+ * null,
+ * null,
+ * null,
+ * null
+ * ] } );
+ * } );
+ */
+ "bSearchable": true,
+
+
+ /**
+ * Enable or disable ordering on this column.
+ * @type boolean
+ * @default true
+ *
+ * @name DataTable.defaults.column.orderable
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "orderable": false, "targets": [ 0 ] }
+ * ] } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * { "orderable": false },
+ * null,
+ * null,
+ * null,
+ * null
+ * ] } );
+ * } );
+ */
+ "bSortable": true,
+
+
+ /**
+ * Enable or disable the display of this column.
+ * @type boolean
+ * @default true
+ *
+ * @name DataTable.defaults.column.visible
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "visible": false, "targets": [ 0 ] }
+ * ] } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * { "visible": false },
+ * null,
+ * null,
+ * null,
+ * null
+ * ] } );
+ * } );
+ */
+ "bVisible": true,
+
+
+ /**
+ * Developer definable function that is called whenever a cell is created (Ajax source,
+ * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+ * allowing you to modify the DOM element (add background colour for example) when the
+ * element is available.
+ * @type function
+ * @param {element} td The TD node that has been created
+ * @param {*} cellData The Data for the cell
+ * @param {array|object} rowData The data for the whole row
+ * @param {int} row The row index for the aoData data store
+ * @param {int} col The column index for aoColumns
+ *
+ * @name DataTable.defaults.column.createdCell
+ * @dtopt Columns
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [ {
+ * "targets": [3],
+ * "createdCell": function (td, cellData, rowData, row, col) {
+ * if ( cellData == "1.7" ) {
+ * $(td).css('color', 'blue')
+ * }
+ * }
+ * } ]
+ * });
+ * } );
+ */
+ "fnCreatedCell": null,
+
+
+ /**
+ * This parameter has been replaced by `data` in DataTables to ensure naming
+ * consistency. `dataProp` can still be used, as there is backwards
+ * compatibility in DataTables for this option, but it is strongly
+ * recommended that you use `data` in preference to `dataProp`.
+ * @name DataTable.defaults.column.dataProp
+ */
+
+
+ /**
+ * This property can be used to read data from any data source property,
+ * including deeply nested objects / properties. `data` can be given in a
+ * number of different ways which effect its behaviour:
+ *
+ * * `integer` - treated as an array index for the data source. This is the
+ * default that DataTables uses (incrementally increased for each column).
+ * * `string` - read an object property from the data source. There are
+ * three 'special' options that can be used in the string to alter how
+ * DataTables reads the data from the source object:
+ * * `.` - Dotted Javascript notation. Just as you use a `.` in
+ * Javascript to read from nested objects, so to can the options
+ * specified in `data`. For example: `browser.version` or
+ * `browser.name`. If your object parameter name contains a period, use
+ * `\\` to escape it - i.e. `first\\.name`.
+ * * `[]` - Array notation. DataTables can automatically combine data
+ * from and array source, joining the data with the characters provided
+ * between the two brackets. For example: `name[, ]` would provide a
+ * comma-space separated list from the source array. If no characters
+ * are provided between the brackets, the original array source is
+ * returned.
+ * * `()` - Function notation. Adding `()` to the end of a parameter will
+ * execute a function of the name given. For example: `browser()` for a
+ * simple function on the data source, `browser.version()` for a
+ * function in a nested property or even `browser().version` to get an
+ * object property if the function called returns an object. Note that
+ * function notation is recommended for use in `render` rather than
+ * `data` as it is much simpler to use as a renderer.
+ * * `null` - use the original data source for the row rather than plucking
+ * data directly from it. This action has effects on two other
+ * initialisation options:
+ * * `defaultContent` - When null is given as the `data` option and
+ * `defaultContent` is specified for the column, the value defined by
+ * `defaultContent` will be used for the cell.
+ * * `render` - When null is used for the `data` option and the `render`
+ * option is specified for the column, the whole data source for the
+ * row is used for the renderer.
+ * * `function` - the function given will be executed whenever DataTables
+ * needs to set or get the data for a cell in the column. The function
+ * takes three parameters:
+ * * Parameters:
+ * * `{array|object}` The data source for the row
+ * * `{string}` The type call data requested - this will be 'set' when
+ * setting data or 'filter', 'display', 'type', 'sort' or undefined
+ * when gathering data. Note that when `undefined` is given for the
+ * type DataTables expects to get the raw data for the object back<
+ * * `{*}` Data to set when the second parameter is 'set'.
+ * * Return:
+ * * The return value from the function is not required when 'set' is
+ * the type of call, but otherwise the return is what will be used
+ * for the data requested.
+ *
+ * Note that `data` is a getter and setter option. If you just require
+ * formatting of data for output, you will likely want to use `render` which
+ * is simply a getter and thus simpler to use.
+ *
+ * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The
+ * name change reflects the flexibility of this property and is consistent
+ * with the naming of mRender. If 'mDataProp' is given, then it will still
+ * be used by DataTables, as it automatically maps the old name to the new
+ * if required.
+ *
+ * @type string|int|function|null
+ * @default null <i>Use automatically calculated column index</i>
+ *
+ * @name DataTable.defaults.column.data
+ * @dtopt Columns
+ *
+ * @example
+ * // Read table data from objects
+ * // JSON structure for each row:
+ * // {
+ * // "engine": {value},
+ * // "browser": {value},
+ * // "platform": {value},
+ * // "version": {value},
+ * // "grade": {value}
+ * // }
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "ajaxSource": "sources/objects.txt",
+ * "columns": [
+ * { "data": "engine" },
+ * { "data": "browser" },
+ * { "data": "platform" },
+ * { "data": "version" },
+ * { "data": "grade" }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Read information from deeply nested objects
+ * // JSON structure for each row:
+ * // {
+ * // "engine": {value},
+ * // "browser": {value},
+ * // "platform": {
+ * // "inner": {value}
+ * // },
+ * // "details": [
+ * // {value}, {value}
+ * // ]
+ * // }
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "ajaxSource": "sources/deep.txt",
+ * "columns": [
+ * { "data": "engine" },
+ * { "data": "browser" },
+ * { "data": "platform.inner" },
+ * { "data": "platform.details.0" },
+ * { "data": "platform.details.1" }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `data` as a function to provide different information for
+ * // sorting, filtering and display. In this case, currency (price)
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [ {
+ * "targets": [ 0 ],
+ * "data": function ( source, type, val ) {
+ * if (type === 'set') {
+ * source.price = val;
+ * // Store the computed dislay and filter values for efficiency
+ * source.price_display = val=="" ? "" : "$"+numberFormat(val);
+ * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val;
+ * return;
+ * }
+ * else if (type === 'display') {
+ * return source.price_display;
+ * }
+ * else if (type === 'filter') {
+ * return source.price_filter;
+ * }
+ * // 'sort', 'type' and undefined all just use the integer
+ * return source.price;
+ * }
+ * } ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using default content
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [ {
+ * "targets": [ 0 ],
+ * "data": null,
+ * "defaultContent": "Click to edit"
+ * } ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using array notation - outputting a list from an array
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [ {
+ * "targets": [ 0 ],
+ * "data": "name[, ]"
+ * } ]
+ * } );
+ * } );
+ *
+ */
+ "mData": null,
+
+
+ /**
+ * This property is the rendering partner to `data` and it is suggested that
+ * when you want to manipulate data for display (including filtering,
+ * sorting etc) without altering the underlying data for the table, use this
+ * property. `render` can be considered to be the the read only companion to
+ * `data` which is read / write (then as such more complex). Like `data`
+ * this option can be given in a number of different ways to effect its
+ * behaviour:
+ *
+ * * `integer` - treated as an array index for the data source. This is the
+ * default that DataTables uses (incrementally increased for each column).
+ * * `string` - read an object property from the data source. There are
+ * three 'special' options that can be used in the string to alter how
+ * DataTables reads the data from the source object:
+ * * `.` - Dotted Javascript notation. Just as you use a `.` in
+ * Javascript to read from nested objects, so to can the options
+ * specified in `data`. For example: `browser.version` or
+ * `browser.name`. If your object parameter name contains a period, use
+ * `\\` to escape it - i.e. `first\\.name`.
+ * * `[]` - Array notation. DataTables can automatically combine data
+ * from and array source, joining the data with the characters provided
+ * between the two brackets. For example: `name[, ]` would provide a
+ * comma-space separated list from the source array. If no characters
+ * are provided between the brackets, the original array source is
+ * returned.
+ * * `()` - Function notation. Adding `()` to the end of a parameter will
+ * execute a function of the name given. For example: `browser()` for a
+ * simple function on the data source, `browser.version()` for a
+ * function in a nested property or even `browser().version` to get an
+ * object property if the function called returns an object.
+ * * `object` - use different data for the different data types requested by
+ * DataTables ('filter', 'display', 'type' or 'sort'). The property names
+ * of the object is the data type the property refers to and the value can
+ * defined using an integer, string or function using the same rules as
+ * `render` normally does. Note that an `_` option _must_ be specified.
+ * This is the default value to use if you haven't specified a value for
+ * the data type requested by DataTables.
+ * * `function` - the function given will be executed whenever DataTables
+ * needs to set or get the data for a cell in the column. The function
+ * takes three parameters:
+ * * Parameters:
+ * * {array|object} The data source for the row (based on `data`)
+ * * {string} The type call data requested - this will be 'filter',
+ * 'display', 'type' or 'sort'.
+ * * {array|object} The full data source for the row (not based on
+ * `data`)
+ * * Return:
+ * * The return value from the function is what will be used for the
+ * data requested.
+ *
+ * @type string|int|function|object|null
+ * @default null Use the data source value.
+ *
+ * @name DataTable.defaults.column.render
+ * @dtopt Columns
+ *
+ * @example
+ * // Create a comma separated list from an array of objects
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "ajaxSource": "sources/deep.txt",
+ * "columns": [
+ * { "data": "engine" },
+ * { "data": "browser" },
+ * {
+ * "data": "platform",
+ * "render": "[, ].name"
+ * }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Execute a function to obtain data
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [ {
+ * "targets": [ 0 ],
+ * "data": null, // Use the full data source object for the renderer's source
+ * "render": "browserName()"
+ * } ]
+ * } );
+ * } );
+ *
+ * @example
+ * // As an object, extracting different data for the different types
+ * // This would be used with a data source such as:
+ * // { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" }
+ * // Here the `phone` integer is used for sorting and type detection, while `phone_filter`
+ * // (which has both forms) is used for filtering for if a user inputs either format, while
+ * // the formatted phone number is the one that is shown in the table.
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [ {
+ * "targets": [ 0 ],
+ * "data": null, // Use the full data source object for the renderer's source
+ * "render": {
+ * "_": "phone",
+ * "filter": "phone_filter",
+ * "display": "phone_display"
+ * }
+ * } ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Use as a function to create a link from the data source
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [ {
+ * "targets": [ 0 ],
+ * "data": "download_link",
+ * "render": function ( data, type, full ) {
+ * return '<a href="'+data+'">Download</a>';
+ * }
+ * } ]
+ * } );
+ * } );
+ */
+ "mRender": null,
+
+
+ /**
+ * Change the cell type created for the column - either TD cells or TH cells. This
+ * can be useful as TH cells have semantic meaning in the table body, allowing them
+ * to act as a header for a row (you may wish to add scope='row' to the TH elements).
+ * @type string
+ * @default td
+ *
+ * @name DataTable.defaults.column.cellType
+ * @dtopt Columns
+ *
+ * @example
+ * // Make the first column use TH cells
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [ {
+ * "targets": [ 0 ],
+ * "cellType": "th"
+ * } ]
+ * } );
+ * } );
+ */
+ "sCellType": "td",
+
+
+ /**
+ * Class to give to each cell in this column.
+ * @type string
+ * @default <i>Empty string</i>
+ *
+ * @name DataTable.defaults.column.class
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "class": "my_class", "targets": [ 0 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * { "class": "my_class" },
+ * null,
+ * null,
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "sClass": "",
+
+ /**
+ * When DataTables calculates the column widths to assign to each column,
+ * it finds the longest string in each column and then constructs a
+ * temporary table and reads the widths from that. The problem with this
+ * is that "mmm" is much wider then "iiii", but the latter is a longer
+ * string - thus the calculation can go wrong (doing it properly and putting
+ * it into an DOM object and measuring that is horribly(!) slow). Thus as
+ * a "work around" we provide this option. It will append its value to the
+ * text that is found to be the longest string for the column - i.e. padding.
+ * Generally you shouldn't need this!
+ * @type string
+ * @default <i>Empty string<i>
+ *
+ * @name DataTable.defaults.column.contentPadding
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * null,
+ * null,
+ * null,
+ * {
+ * "contentPadding": "mmm"
+ * }
+ * ]
+ * } );
+ * } );
+ */
+ "sContentPadding": "",
+
+
+ /**
+ * Allows a default value to be given for a column's data, and will be used
+ * whenever a null data source is encountered (this can be because `data`
+ * is set to null, or because the data source itself is null).
+ * @type string
+ * @default null
+ *
+ * @name DataTable.defaults.column.defaultContent
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * {
+ * "data": null,
+ * "defaultContent": "Edit",
+ * "targets": [ -1 ]
+ * }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * null,
+ * null,
+ * null,
+ * {
+ * "data": null,
+ * "defaultContent": "Edit"
+ * }
+ * ]
+ * } );
+ * } );
+ */
+ "sDefaultContent": null,
+
+
+ /**
+ * This parameter is only used in DataTables' server-side processing. It can
+ * be exceptionally useful to know what columns are being displayed on the
+ * client side, and to map these to database fields. When defined, the names
+ * also allow DataTables to reorder information from the server if it comes
+ * back in an unexpected order (i.e. if you switch your columns around on the
+ * client-side, your server-side code does not also need updating).
+ * @type string
+ * @default <i>Empty string</i>
+ *
+ * @name DataTable.defaults.column.name
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "name": "engine", "targets": [ 0 ] },
+ * { "name": "browser", "targets": [ 1 ] },
+ * { "name": "platform", "targets": [ 2 ] },
+ * { "name": "version", "targets": [ 3 ] },
+ * { "name": "grade", "targets": [ 4 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * { "name": "engine" },
+ * { "name": "browser" },
+ * { "name": "platform" },
+ * { "name": "version" },
+ * { "name": "grade" }
+ * ]
+ * } );
+ * } );
+ */
+ "sName": "",
+
+
+ /**
+ * Defines a data source type for the ordering which can be used to read
+ * real-time information from the table (updating the internally cached
+ * version) prior to ordering. This allows ordering to occur on user
+ * editable elements such as form inputs.
+ * @type string
+ * @default std
+ *
+ * @name DataTable.defaults.column.orderDataType
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "orderDataType": "dom-text", "targets": [ 2, 3 ] },
+ * { "type": "numeric", "targets": [ 3 ] },
+ * { "orderDataType": "dom-select", "targets": [ 4 ] },
+ * { "orderDataType": "dom-checkbox", "targets": [ 5 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * null,
+ * null,
+ * { "orderDataType": "dom-text" },
+ * { "orderDataType": "dom-text", "type": "numeric" },
+ * { "orderDataType": "dom-select" },
+ * { "orderDataType": "dom-checkbox" }
+ * ]
+ * } );
+ * } );
+ */
+ "sSortDataType": "std",
+
+
+ /**
+ * The title of this column.
+ * @type string
+ * @default null <i>Derived from the 'TH' value for this column in the
+ * original HTML table.</i>
+ *
+ * @name DataTable.defaults.column.title
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "title": "My column title", "targets": [ 0 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * { "title": "My column title" },
+ * null,
+ * null,
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "sTitle": null,
+
+
+ /**
+ * The type allows you to specify how the data for this column will be
+ * ordered. Four types (string, numeric, date and html (which will strip
+ * HTML tags before ordering)) are currently available. Note that only date
+ * formats understood by Javascript's Date() object will be accepted as type
+ * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string',
+ * 'numeric', 'date' or 'html' (by default). Further types can be adding
+ * through plug-ins.
+ * @type string
+ * @default null <i>Auto-detected from raw data</i>
+ *
+ * @name DataTable.defaults.column.type
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "type": "html", "targets": [ 0 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * { "type": "html" },
+ * null,
+ * null,
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "sType": null,
+
+
+ /**
+ * Defining the width of the column, this parameter may take any CSS value
+ * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not
+ * been given a specific width through this interface ensuring that the table
+ * remains readable.
+ * @type string
+ * @default null <i>Automatic</i>
+ *
+ * @name DataTable.defaults.column.width
+ * @dtopt Columns
+ *
+ * @example
+ * // Using `columnDefs`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columnDefs": [
+ * { "width": "20%", "targets": [ 0 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using `columns`
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "columns": [
+ * { "width": "20%" },
+ * null,
+ * null,
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "sWidth": null
+ };
+
+ _fnHungarianMap( DataTable.defaults.column );
+
+
+
+ /**
+ * DataTables settings object - this holds all the information needed for a
+ * given table, including configuration, data and current application of the
+ * table options. DataTables does not have a single instance for each DataTable
+ * with the settings attached to that instance, but rather instances of the
+ * DataTable "class" are created on-the-fly as needed (typically by a
+ * $().dataTable() call) and the settings object is then applied to that
+ * instance.
+ *
+ * Note that this object is related to {@link DataTable.defaults} but this
+ * one is the internal data store for DataTables's cache of columns. It should
+ * NOT be manipulated outside of DataTables. Any configuration should be done
+ * through the initialisation options.
+ * @namespace
+ * @todo Really should attach the settings object to individual instances so we
+ * don't need to create new instances on each $().dataTable() call (if the
+ * table already exists). It would also save passing oSettings around and
+ * into every single function. However, this is a very significant
+ * architecture change for DataTables and will almost certainly break
+ * backwards compatibility with older installations. This is something that
+ * will be done in 2.0.
+ */
+ DataTable.models.oSettings = {
+ /**
+ * Primary features of DataTables and their enablement state.
+ * @namespace
+ */
+ "oFeatures": {
+
+ /**
+ * Flag to say if DataTables should automatically try to calculate the
+ * optimum table and columns widths (true) or not (false).
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bAutoWidth": null,
+
+ /**
+ * Delay the creation of TR and TD elements until they are actually
+ * needed by a driven page draw. This can give a significant speed
+ * increase for Ajax source and Javascript source data, but makes no
+ * difference at all fro DOM and server-side processing tables.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bDeferRender": null,
+
+ /**
+ * Enable filtering on the table or not. Note that if this is disabled
+ * then there is no filtering at all on the table, including fnFilter.
+ * To just remove the filtering input use sDom and remove the 'f' option.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bFilter": null,
+
+ /**
+ * Table information element (the 'Showing x of y records' div) enable
+ * flag.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bInfo": null,
+
+ /**
+ * Present a user control allowing the end user to change the page size
+ * when pagination is enabled.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bLengthChange": null,
+
+ /**
+ * Pagination enabled or not. Note that if this is disabled then length
+ * changing must also be disabled.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bPaginate": null,
+
+ /**
+ * Processing indicator enable flag whenever DataTables is enacting a
+ * user request - typically an Ajax request for server-side processing.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bProcessing": null,
+
+ /**
+ * Server-side processing enabled flag - when enabled DataTables will
+ * get all data from the server for every draw - there is no filtering,
+ * sorting or paging done on the client-side.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bServerSide": null,
+
+ /**
+ * Sorting enablement flag.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bSort": null,
+
+ /**
+ * Multi-column sorting
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bSortMulti": null,
+
+ /**
+ * Apply a class to the columns which are being sorted to provide a
+ * visual highlight or not. This can slow things down when enabled since
+ * there is a lot of DOM interaction.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bSortClasses": null,
+
+ /**
+ * State saving enablement flag.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bStateSave": null
+ },
+
+
+ /**
+ * Scrolling settings for a table.
+ * @namespace
+ */
+ "oScroll": {
+ /**
+ * When the table is shorter in height than sScrollY, collapse the
+ * table container down to the height of the table (when true).
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bCollapse": null,
+
+ /**
+ * Width of the scrollbar for the web-browser's platform. Calculated
+ * during table initialisation.
+ * @type int
+ * @default 0
+ */
+ "iBarWidth": 0,
+
+ /**
+ * Viewport width for horizontal scrolling. Horizontal scrolling is
+ * disabled if an empty string.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ */
+ "sX": null,
+
+ /**
+ * Width to expand the table to when using x-scrolling. Typically you
+ * should not need to use this.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ * @deprecated
+ */
+ "sXInner": null,
+
+ /**
+ * Viewport height for vertical scrolling. Vertical scrolling is disabled
+ * if an empty string.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ */
+ "sY": null
+ },
+
+ /**
+ * Language information for the table.
+ * @namespace
+ * @extends DataTable.defaults.oLanguage
+ */
+ "oLanguage": {
+ /**
+ * Information callback function. See
+ * {@link DataTable.defaults.fnInfoCallback}
+ * @type function
+ * @default null
+ */
+ "fnInfoCallback": null
+ },
+
+ /**
+ * Browser support parameters
+ * @namespace
+ */
+ "oBrowser": {
+ /**
+ * Indicate if the browser incorrectly calculates width:100% inside a
+ * scrolling element (IE6/7)
+ * @type boolean
+ * @default false
+ */
+ "bScrollOversize": false,
+
+ /**
+ * Determine if the vertical scrollbar is on the right or left of the
+ * scrolling container - needed for rtl language layout, although not
+ * all browsers move the scrollbar (Safari).
+ * @type boolean
+ * @default false
+ */
+ "bScrollbarLeft": false
+ },
+
+
+ "ajax": null,
+
+
+ /**
+ * Array referencing the nodes which are used for the features. The
+ * parameters of this object match what is allowed by sDom - i.e.
+ * <ul>
+ * <li>'l' - Length changing</li>
+ * <li>'f' - Filtering input</li>
+ * <li>'t' - The table!</li>
+ * <li>'i' - Information</li>
+ * <li>'p' - Pagination</li>
+ * <li>'r' - pRocessing</li>
+ * </ul>
+ * @type array
+ * @default []
+ */
+ "aanFeatures": [],
+
+ /**
+ * Store data information - see {@link DataTable.models.oRow} for detailed
+ * information.
+ * @type array
+ * @default []
+ */
+ "aoData": [],
+
+ /**
+ * Array of indexes which are in the current display (after filtering etc)
+ * @type array
+ * @default []
+ */
+ "aiDisplay": [],
+
+ /**
+ * Array of indexes for display - no filtering
+ * @type array
+ * @default []
+ */
+ "aiDisplayMaster": [],
+
+ /**
+ * Store information about each column that is in use
+ * @type array
+ * @default []
+ */
+ "aoColumns": [],
+
+ /**
+ * Store information about the table's header
+ * @type array
+ * @default []
+ */
+ "aoHeader": [],
+
+ /**
+ * Store information about the table's footer
+ * @type array
+ * @default []
+ */
+ "aoFooter": [],
+
+ /**
+ * Store the applied global search information in case we want to force a
+ * research or compare the old search to a new one.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @namespace
+ * @extends DataTable.models.oSearch
+ */
+ "oPreviousSearch": {},
+
+ /**
+ * Store the applied search for each column - see
+ * {@link DataTable.models.oSearch} for the format that is used for the
+ * filtering information for each column.
+ * @type array
+ * @default []
+ */
+ "aoPreSearchCols": [],
+
+ /**
+ * Sorting that is applied to the table. Note that the inner arrays are
+ * used in the following manner:
+ * <ul>
+ * <li>Index 0 - column number</li>
+ * <li>Index 1 - current sorting direction</li>
+ * </ul>
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type array
+ * @todo These inner arrays should really be objects
+ */
+ "aaSorting": null,
+
+ /**
+ * Sorting that is always applied to the table (i.e. prefixed in front of
+ * aaSorting).
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type array
+ * @default []
+ */
+ "aaSortingFixed": [],
+
+ /**
+ * Classes to use for the striping of a table.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type array
+ * @default []
+ */
+ "asStripeClasses": null,
+
+ /**
+ * If restoring a table - we should restore its striping classes as well
+ * @type array
+ * @default []
+ */
+ "asDestroyStripes": [],
+
+ /**
+ * If restoring a table - we should restore its width
+ * @type int
+ * @default 0
+ */
+ "sDestroyWidth": 0,
+
+ /**
+ * Callback functions array for every time a row is inserted (i.e. on a draw).
+ * @type array
+ * @default []
+ */
+ "aoRowCallback": [],
+
+ /**
+ * Callback functions for the header on each draw.
+ * @type array
+ * @default []
+ */
+ "aoHeaderCallback": [],
+
+ /**
+ * Callback function for the footer on each draw.
+ * @type array
+ * @default []
+ */
+ "aoFooterCallback": [],
+
+ /**
+ * Array of callback functions for draw callback functions
+ * @type array
+ * @default []
+ */
+ "aoDrawCallback": [],
+
+ /**
+ * Array of callback functions for row created function
+ * @type array
+ * @default []
+ */
+ "aoRowCreatedCallback": [],
+
+ /**
+ * Callback functions for just before the table is redrawn. A return of
+ * false will be used to cancel the draw.
+ * @type array
+ * @default []
+ */
+ "aoPreDrawCallback": [],
+
+ /**
+ * Callback functions for when the table has been initialised.
+ * @type array
+ * @default []
+ */
+ "aoInitComplete": [],
+
+
+ /**
+ * Callbacks for modifying the settings to be stored for state saving, prior to
+ * saving state.
+ * @type array
+ * @default []
+ */
+ "aoStateSaveParams": [],
+
+ /**
+ * Callbacks for modifying the settings that have been stored for state saving
+ * prior to using the stored values to restore the state.
+ * @type array
+ * @default []
+ */
+ "aoStateLoadParams": [],
+
+ /**
+ * Callbacks for operating on the settings object once the saved state has been
+ * loaded
+ * @type array
+ * @default []
+ */
+ "aoStateLoaded": [],
+
+ /**
+ * Cache the table ID for quick access
+ * @type string
+ * @default <i>Empty string</i>
+ */
+ "sTableId": "",
+
+ /**
+ * The TABLE node for the main table
+ * @type node
+ * @default null
+ */
+ "nTable": null,
+
+ /**
+ * Permanent ref to the thead element
+ * @type node
+ * @default null
+ */
+ "nTHead": null,
+
+ /**
+ * Permanent ref to the tfoot element - if it exists
+ * @type node
+ * @default null
+ */
+ "nTFoot": null,
+
+ /**
+ * Permanent ref to the tbody element
+ * @type node
+ * @default null
+ */
+ "nTBody": null,
+
+ /**
+ * Cache the wrapper node (contains all DataTables controlled elements)
+ * @type node
+ * @default null
+ */
+ "nTableWrapper": null,
+
+ /**
+ * Indicate if when using server-side processing the loading of data
+ * should be deferred until the second draw.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ * @default false
+ */
+ "bDeferLoading": false,
+
+ /**
+ * Indicate if all required information has been read in
+ * @type boolean
+ * @default false
+ */
+ "bInitialised": false,
+
+ /**
+ * Information about open rows. Each object in the array has the parameters
+ * 'nTr' and 'nParent'
+ * @type array
+ * @default []
+ */
+ "aoOpenRows": [],
+
+ /**
+ * Dictate the positioning of DataTables' control elements - see
+ * {@link DataTable.model.oInit.sDom}.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ * @default null
+ */
+ "sDom": null,
+
+ /**
+ * Search delay (in mS)
+ * @type integer
+ * @default null
+ */
+ "searchDelay": null,
+
+ /**
+ * Which type of pagination should be used.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ * @default two_button
+ */
+ "sPaginationType": "two_button",
+
+ /**
+ * The state duration (for `stateSave`) in seconds.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type int
+ * @default 0
+ */
+ "iStateDuration": 0,
+
+ /**
+ * Array of callback functions for state saving. Each array element is an
+ * object with the following parameters:
+ * <ul>
+ * <li>function:fn - function to call. Takes two parameters, oSettings
+ * and the JSON string to save that has been thus far created. Returns
+ * a JSON string to be inserted into a json object
+ * (i.e. '"param": [ 0, 1, 2]')</li>
+ * <li>string:sName - name of callback</li>
+ * </ul>
+ * @type array
+ * @default []
+ */
+ "aoStateSave": [],
+
+ /**
+ * Array of callback functions for state loading. Each array element is an
+ * object with the following parameters:
+ * <ul>
+ * <li>function:fn - function to call. Takes two parameters, oSettings
+ * and the object stored. May return false to cancel state loading</li>
+ * <li>string:sName - name of callback</li>
+ * </ul>
+ * @type array
+ * @default []
+ */
+ "aoStateLoad": [],
+
+ /**
+ * State that was saved. Useful for back reference
+ * @type object
+ * @default null
+ */
+ "oSavedState": null,
+
+ /**
+ * State that was loaded. Useful for back reference
+ * @type object
+ * @default null
+ */
+ "oLoadedState": null,
+
+ /**
+ * Source url for AJAX data for the table.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ * @default null
+ */
+ "sAjaxSource": null,
+
+ /**
+ * Property from a given object from which to read the table data from. This
+ * can be an empty string (when not server-side processing), in which case
+ * it is assumed an an array is given directly.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ */
+ "sAjaxDataProp": null,
+
+ /**
+ * Note if draw should be blocked while getting data
+ * @type boolean
+ * @default true
+ */
+ "bAjaxDataGet": true,
+
+ /**
+ * The last jQuery XHR object that was used for server-side data gathering.
+ * This can be used for working with the XHR information in one of the
+ * callbacks
+ * @type object
+ * @default null
+ */
+ "jqXHR": null,
+
+ /**
+ * JSON returned from the server in the last Ajax request
+ * @type object
+ * @default undefined
+ */
+ "json": undefined,
+
+ /**
+ * Data submitted as part of the last Ajax request
+ * @type object
+ * @default undefined
+ */
+ "oAjaxData": undefined,
+
+ /**
+ * Function to get the server-side data.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type function
+ */
+ "fnServerData": null,
+
+ /**
+ * Functions which are called prior to sending an Ajax request so extra
+ * parameters can easily be sent to the server
+ * @type array
+ * @default []
+ */
+ "aoServerParams": [],
+
+ /**
+ * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
+ * required).
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ */
+ "sServerMethod": null,
+
+ /**
+ * Format numbers for display.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type function
+ */
+ "fnFormatNumber": null,
+
+ /**
+ * List of options that can be used for the user selectable length menu.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type array
+ * @default []
+ */
+ "aLengthMenu": null,
+
+ /**
+ * Counter for the draws that the table does. Also used as a tracker for
+ * server-side processing
+ * @type int
+ * @default 0
+ */
+ "iDraw": 0,
+
+ /**
+ * Indicate if a redraw is being done - useful for Ajax
+ * @type boolean
+ * @default false
+ */
+ "bDrawing": false,
+
+ /**
+ * Draw index (iDraw) of the last error when parsing the returned data
+ * @type int
+ * @default -1
+ */
+ "iDrawError": -1,
+
+ /**
+ * Paging display length
+ * @type int
+ * @default 10
+ */
+ "_iDisplayLength": 10,
+
+ /**
+ * Paging start point - aiDisplay index
+ * @type int
+ * @default 0
+ */
+ "_iDisplayStart": 0,
+
+ /**
+ * Server-side processing - number of records in the result set
+ * (i.e. before filtering), Use fnRecordsTotal rather than
+ * this property to get the value of the number of records, regardless of
+ * the server-side processing setting.
+ * @type int
+ * @default 0
+ * @private
+ */
+ "_iRecordsTotal": 0,
+
+ /**
+ * Server-side processing - number of records in the current display set
+ * (i.e. after filtering). Use fnRecordsDisplay rather than
+ * this property to get the value of the number of records, regardless of
+ * the server-side processing setting.
+ * @type boolean
+ * @default 0
+ * @private
+ */
+ "_iRecordsDisplay": 0,
+
+ /**
+ * Flag to indicate if jQuery UI marking and classes should be used.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bJUI": null,
+
+ /**
+ * The classes to use for the table
+ * @type object
+ * @default {}
+ */
+ "oClasses": {},
+
+ /**
+ * Flag attached to the settings object so you can check in the draw
+ * callback if filtering has been done in the draw. Deprecated in favour of
+ * events.
+ * @type boolean
+ * @default false
+ * @deprecated
+ */
+ "bFiltered": false,
+
+ /**
+ * Flag attached to the settings object so you can check in the draw
+ * callback if sorting has been done in the draw. Deprecated in favour of
+ * events.
+ * @type boolean
+ * @default false
+ * @deprecated
+ */
+ "bSorted": false,
+
+ /**
+ * Indicate that if multiple rows are in the header and there is more than
+ * one unique cell per column, if the top one (true) or bottom one (false)
+ * should be used for sorting / title by DataTables.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bSortCellsTop": null,
+
+ /**
+ * Initialisation object that is used for the table
+ * @type object
+ * @default null
+ */
+ "oInit": null,
+
+ /**
+ * Destroy callback functions - for plug-ins to attach themselves to the
+ * destroy so they can clean up markup and events.
+ * @type array
+ * @default []
+ */
+ "aoDestroyCallback": [],
+
+
+ /**
+ * Get the number of records in the current record set, before filtering
+ * @type function
+ */
+ "fnRecordsTotal": function ()
+ {
+ return _fnDataSource( this ) == 'ssp' ?
+ this._iRecordsTotal * 1 :
+ this.aiDisplayMaster.length;
+ },
+
+ /**
+ * Get the number of records in the current record set, after filtering
+ * @type function
+ */
+ "fnRecordsDisplay": function ()
+ {
+ return _fnDataSource( this ) == 'ssp' ?
+ this._iRecordsDisplay * 1 :
+ this.aiDisplay.length;
+ },
+
+ /**
+ * Get the display end point - aiDisplay index
+ * @type function
+ */
+ "fnDisplayEnd": function ()
+ {
+ var
+ len = this._iDisplayLength,
+ start = this._iDisplayStart,
+ calc = start + len,
+ records = this.aiDisplay.length,
+ features = this.oFeatures,
+ paginate = features.bPaginate;
+
+ if ( features.bServerSide ) {
+ return paginate === false || len === -1 ?
+ start + records :
+ Math.min( start+len, this._iRecordsDisplay );
+ }
+ else {
+ return ! paginate || calc>records || len===-1 ?
+ records :
+ calc;
+ }
+ },
+
+ /**
+ * The DataTables object for this table
+ * @type object
+ * @default null
+ */
+ "oInstance": null,
+
+ /**
+ * Unique identifier for each instance of the DataTables object. If there
+ * is an ID on the table node, then it takes that value, otherwise an
+ * incrementing internal counter is used.
+ * @type string
+ * @default null
+ */
+ "sInstance": null,
+
+ /**
+ * tabindex attribute value that is added to DataTables control elements, allowing
+ * keyboard navigation of the table and its controls.
+ */
+ "iTabIndex": 0,
+
+ /**
+ * DIV container for the footer scrolling table if scrolling
+ */
+ "nScrollHead": null,
+
+ /**
+ * DIV container for the footer scrolling table if scrolling
+ */
+ "nScrollFoot": null,
+
+ /**
+ * Last applied sort
+ * @type array
+ * @default []
+ */
+ "aLastSort": [],
+
+ /**
+ * Stored plug-in instances
+ * @type object
+ * @default {}
+ */
+ "oPlugins": {}
+ };
+
+ /**
+ * Extension object for DataTables that is used to provide all extension
+ * options.
+ *
+ * Note that the `DataTable.ext` object is available through
+ * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is
+ * also aliased to `jQuery.fn.dataTableExt` for historic reasons.
+ * @namespace
+ * @extends DataTable.models.ext
+ */
+
+
+ /**
+ * DataTables extensions
+ *
+ * This namespace acts as a collection area for plug-ins that can be used to
+ * extend DataTables capabilities. Indeed many of the build in methods
+ * use this method to provide their own capabilities (sorting methods for
+ * example).
+ *
+ * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy
+ * reasons
+ *
+ * @namespace
+ */
+ DataTable.ext = _ext = {
+ /**
+ * Buttons. For use with the Buttons extension for DataTables. This is
+ * defined here so other extensions can define buttons regardless of load
+ * order. It is _not_ used by DataTables core.
+ *
+ * @type object
+ * @default {}
+ */
+ buttons: {},
+
+
+ /**
+ * Element class names
+ *
+ * @type object
+ * @default {}
+ */
+ classes: {},
+
+
+ /**
+ * Error reporting.
+ *
+ * How should DataTables report an error. Can take the value 'alert',
+ * 'throw', 'none' or a function.
+ *
+ * @type string|function
+ * @default alert
+ */
+ errMode: "alert",
+
+
+ /**
+ * Feature plug-ins.
+ *
+ * This is an array of objects which describe the feature plug-ins that are
+ * available to DataTables. These feature plug-ins are then available for
+ * use through the `dom` initialisation option.
+ *
+ * Each feature plug-in is described by an object which must have the
+ * following properties:
+ *
+ * * `fnInit` - function that is used to initialise the plug-in,
+ * * `cFeature` - a character so the feature can be enabled by the `dom`
+ * instillation option. This is case sensitive.
+ *
+ * The `fnInit` function has the following input parameters:
+ *
+ * 1. `{object}` DataTables settings object: see
+ * {@link DataTable.models.oSettings}
+ *
+ * And the following return is expected:
+ *
+ * * {node|null} The element which contains your feature. Note that the
+ * return may also be void if your plug-in does not require to inject any
+ * DOM elements into DataTables control (`dom`) - for example this might
+ * be useful when developing a plug-in which allows table control via
+ * keyboard entry
+ *
+ * @type array
+ *
+ * @example
+ * $.fn.dataTable.ext.features.push( {
+ * "fnInit": function( oSettings ) {
+ * return new TableTools( { "oDTSettings": oSettings } );
+ * },
+ * "cFeature": "T"
+ * } );
+ */
+ feature: [],
+
+
+ /**
+ * Row searching.
+ *
+ * This method of searching is complimentary to the default type based
+ * searching, and a lot more comprehensive as it allows you complete control
+ * over the searching logic. Each element in this array is a function
+ * (parameters described below) that is called for every row in the table,
+ * and your logic decides if it should be included in the searching data set
+ * or not.
+ *
+ * Searching functions have the following input parameters:
+ *
+ * 1. `{object}` DataTables settings object: see
+ * {@link DataTable.models.oSettings}
+ * 2. `{array|object}` Data for the row to be processed (same as the
+ * original format that was passed in as the data source, or an array
+ * from a DOM data source
+ * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which
+ * can be useful to retrieve the `TR` element if you need DOM interaction.
+ *
+ * And the following return is expected:
+ *
+ * * {boolean} Include the row in the searched result set (true) or not
+ * (false)
+ *
+ * Note that as with the main search ability in DataTables, technically this
+ * is "filtering", since it is subtractive. However, for consistency in
+ * naming we call it searching here.
+ *
+ * @type array
+ * @default []
+ *
+ * @example
+ * // The following example shows custom search being applied to the
+ * // fourth column (i.e. the data[3] index) based on two input values
+ * // from the end-user, matching the data in a certain range.
+ * $.fn.dataTable.ext.search.push(
+ * function( settings, data, dataIndex ) {
+ * var min = document.getElementById('min').value * 1;
+ * var max = document.getElementById('max').value * 1;
+ * var version = data[3] == "-" ? 0 : data[3]*1;
+ *
+ * if ( min == "" && max == "" ) {
+ * return true;
+ * }
+ * else if ( min == "" && version < max ) {
+ * return true;
+ * }
+ * else if ( min < version && "" == max ) {
+ * return true;
+ * }
+ * else if ( min < version && version < max ) {
+ * return true;
+ * }
+ * return false;
+ * }
+ * );
+ */
+ search: [],
+
+
+ /**
+ * Selector extensions
+ *
+ * The `selector` option can be used to extend the options available for the
+ * selector modifier options (`selector-modifier` object data type) that
+ * each of the three built in selector types offer (row, column and cell +
+ * their plural counterparts). For example the Select extension uses this
+ * mechanism to provide an option to select only rows, columns and cells
+ * that have been marked as selected by the end user (`{selected: true}`),
+ * which can be used in conjunction with the existing built in selector
+ * options.
+ *
+ * Each property is an array to which functions can be pushed. The functions
+ * take three attributes:
+ *
+ * * Settings object for the host table
+ * * Options object (`selector-modifier` object type)
+ * * Array of selected item indexes
+ *
+ * The return is an array of the resulting item indexes after the custom
+ * selector has been applied.
+ *
+ * @type object
+ */
+ selector: {
+ cell: [],
+ column: [],
+ row: []
+ },
+
+
+ /**
+ * Internal functions, exposed for used in plug-ins.
+ *
+ * Please note that you should not need to use the internal methods for
+ * anything other than a plug-in (and even then, try to avoid if possible).
+ * The internal function may change between releases.
+ *
+ * @type object
+ * @default {}
+ */
+ internal: {},
+
+
+ /**
+ * Legacy configuration options. Enable and disable legacy options that
+ * are available in DataTables.
+ *
+ * @type object
+ */
+ legacy: {
+ /**
+ * Enable / disable DataTables 1.9 compatible server-side processing
+ * requests
+ *
+ * @type boolean
+ * @default null
+ */
+ ajax: null
+ },
+
+
+ /**
+ * Pagination plug-in methods.
+ *
+ * Each entry in this object is a function and defines which buttons should
+ * be shown by the pagination rendering method that is used for the table:
+ * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the
+ * buttons are displayed in the document, while the functions here tell it
+ * what buttons to display. This is done by returning an array of button
+ * descriptions (what each button will do).
+ *
+ * Pagination types (the four built in options and any additional plug-in
+ * options defined here) can be used through the `paginationType`
+ * initialisation parameter.
+ *
+ * The functions defined take two parameters:
+ *
+ * 1. `{int} page` The current page index
+ * 2. `{int} pages` The number of pages in the table
+ *
+ * Each function is expected to return an array where each element of the
+ * array can be one of:
+ *
+ * * `first` - Jump to first page when activated
+ * * `last` - Jump to last page when activated
+ * * `previous` - Show previous page when activated
+ * * `next` - Show next page when activated
+ * * `{int}` - Show page of the index given
+ * * `{array}` - A nested array containing the above elements to add a
+ * containing 'DIV' element (might be useful for styling).
+ *
+ * Note that DataTables v1.9- used this object slightly differently whereby
+ * an object with two functions would be defined for each plug-in. That
+ * ability is still supported by DataTables 1.10+ to provide backwards
+ * compatibility, but this option of use is now decremented and no longer
+ * documented in DataTables 1.10+.
+ *
+ * @type object
+ * @default {}
+ *
+ * @example
+ * // Show previous, next and current page buttons only
+ * $.fn.dataTableExt.oPagination.current = function ( page, pages ) {
+ * return [ 'previous', page, 'next' ];
+ * };
+ */
+ pager: {},
+
+
+ renderer: {
+ pageButton: {},
+ header: {}
+ },
+
+
+ /**
+ * Ordering plug-ins - custom data source
+ *
+ * The extension options for ordering of data available here is complimentary
+ * to the default type based ordering that DataTables typically uses. It
+ * allows much greater control over the the data that is being used to
+ * order a column, but is necessarily therefore more complex.
+ *
+ * This type of ordering is useful if you want to do ordering based on data
+ * live from the DOM (for example the contents of an 'input' element) rather
+ * than just the static string that DataTables knows of.
+ *
+ * The way these plug-ins work is that you create an array of the values you
+ * wish to be ordering for the column in question and then return that
+ * array. The data in the array much be in the index order of the rows in
+ * the table (not the currently ordering order!). Which order data gathering
+ * function is run here depends on the `dt-init columns.orderDataType`
+ * parameter that is used for the column (if any).
+ *
+ * The functions defined take two parameters:
+ *
+ * 1. `{object}` DataTables settings object: see
+ * {@link DataTable.models.oSettings}
+ * 2. `{int}` Target column index
+ *
+ * Each function is expected to return an array:
+ *
+ * * `{array}` Data for the column to be ordering upon
+ *
+ * @type array
+ *
+ * @example
+ * // Ordering using `input` node values
+ * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col )
+ * {
+ * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+ * return $('input', td).val();
+ * } );
+ * }
+ */
+ order: {},
+
+
+ /**
+ * Type based plug-ins.
+ *
+ * Each column in DataTables has a type assigned to it, either by automatic
+ * detection or by direct assignment using the `type` option for the column.
+ * The type of a column will effect how it is ordering and search (plug-ins
+ * can also make use of the column type if required).
+ *
+ * @namespace
+ */
+ type: {
+ /**
+ * Type detection functions.
+ *
+ * The functions defined in this object are used to automatically detect
+ * a column's type, making initialisation of DataTables super easy, even
+ * when complex data is in the table.
+ *
+ * The functions defined take two parameters:
+ *
+ * 1. `{*}` Data from the column cell to be analysed
+ * 2. `{settings}` DataTables settings object. This can be used to
+ * perform context specific type detection - for example detection
+ * based on language settings such as using a comma for a decimal
+ * place. Generally speaking the options from the settings will not
+ * be required
+ *
+ * Each function is expected to return:
+ *
+ * * `{string|null}` Data type detected, or null if unknown (and thus
+ * pass it on to the other type detection functions.
+ *
+ * @type array
+ *
+ * @example
+ * // Currency type detection plug-in:
+ * $.fn.dataTable.ext.type.detect.push(
+ * function ( data, settings ) {
+ * // Check the numeric part
+ * if ( ! $.isNumeric( data.substring(1) ) ) {
+ * return null;
+ * }
+ *
+ * // Check prefixed by currency
+ * if ( data.charAt(0) == '$' || data.charAt(0) == '£' ) {
+ * return 'currency';
+ * }
+ * return null;
+ * }
+ * );
+ */
+ detect: [],
+
+
+ /**
+ * Type based search formatting.
+ *
+ * The type based searching functions can be used to pre-format the
+ * data to be search on. For example, it can be used to strip HTML
+ * tags or to de-format telephone numbers for numeric only searching.
+ *
+ * Note that is a search is not defined for a column of a given type,
+ * no search formatting will be performed.
+ *
+ * Pre-processing of searching data plug-ins - When you assign the sType
+ * for a column (or have it automatically detected for you by DataTables
+ * or a type detection plug-in), you will typically be using this for
+ * custom sorting, but it can also be used to provide custom searching
+ * by allowing you to pre-processing the data and returning the data in
+ * the format that should be searched upon. This is done by adding
+ * functions this object with a parameter name which matches the sType
+ * for that target column. This is the corollary of <i>afnSortData</i>
+ * for searching data.
+ *
+ * The functions defined take a single parameter:
+ *
+ * 1. `{*}` Data from the column cell to be prepared for searching
+ *
+ * Each function is expected to return:
+ *
+ * * `{string|null}` Formatted string that will be used for the searching.
+ *
+ * @type object
+ * @default {}
+ *
+ * @example
+ * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {
+ * return d.replace(/\n/g," ").replace( /<.*?>/g, "" );
+ * }
+ */
+ search: {},
+
+
+ /**
+ * Type based ordering.
+ *
+ * The column type tells DataTables what ordering to apply to the table
+ * when a column is sorted upon. The order for each type that is defined,
+ * is defined by the functions available in this object.
+ *
+ * Each ordering option can be described by three properties added to
+ * this object:
+ *
+ * * `{type}-pre` - Pre-formatting function
+ * * `{type}-asc` - Ascending order function
+ * * `{type}-desc` - Descending order function
+ *
+ * All three can be used together, only `{type}-pre` or only
+ * `{type}-asc` and `{type}-desc` together. It is generally recommended
+ * that only `{type}-pre` is used, as this provides the optimal
+ * implementation in terms of speed, although the others are provided
+ * for compatibility with existing Javascript sort functions.
+ *
+ * `{type}-pre`: Functions defined take a single parameter:
+ *
+ * 1. `{*}` Data from the column cell to be prepared for ordering
+ *
+ * And return:
+ *
+ * * `{*}` Data to be sorted upon
+ *
+ * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort
+ * functions, taking two parameters:
+ *
+ * 1. `{*}` Data to compare to the second parameter
+ * 2. `{*}` Data to compare to the first parameter
+ *
+ * And returning:
+ *
+ * * `{*}` Ordering match: <0 if first parameter should be sorted lower
+ * than the second parameter, ===0 if the two parameters are equal and
+ * >0 if the first parameter should be sorted height than the second
+ * parameter.
+ *
+ * @type object
+ * @default {}
+ *
+ * @example
+ * // Numeric ordering of formatted numbers with a pre-formatter
+ * $.extend( $.fn.dataTable.ext.type.order, {
+ * "string-pre": function(x) {
+ * a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" );
+ * return parseFloat( a );
+ * }
+ * } );
+ *
+ * @example
+ * // Case-sensitive string ordering, with no pre-formatting method
+ * $.extend( $.fn.dataTable.ext.order, {
+ * "string-case-asc": function(x,y) {
+ * return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+ * },
+ * "string-case-desc": function(x,y) {
+ * return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+ * }
+ * } );
+ */
+ order: {}
+ },
+
+ /**
+ * Unique DataTables instance counter
+ *
+ * @type int
+ * @private
+ */
+ _unique: 0,
+
+
+ //
+ // Depreciated
+ // The following properties are retained for backwards compatiblity only.
+ // The should not be used in new projects and will be removed in a future
+ // version
+ //
+
+ /**
+ * Version check function.
+ * @type function
+ * @depreciated Since 1.10
+ */
+ fnVersionCheck: DataTable.fnVersionCheck,
+
+
+ /**
+ * Index for what 'this' index API functions should use
+ * @type int
+ * @deprecated Since v1.10
+ */
+ iApiIndex: 0,
+
+
+ /**
+ * jQuery UI class container
+ * @type object
+ * @deprecated Since v1.10
+ */
+ oJUIClasses: {},
+
+
+ /**
+ * Software version
+ * @type string
+ * @deprecated Since v1.10
+ */
+ sVersion: DataTable.version
+ };
+
+
+ //
+ // Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts
+ //
+ $.extend( _ext, {
+ afnFiltering: _ext.search,
+ aTypes: _ext.type.detect,
+ ofnSearch: _ext.type.search,
+ oSort: _ext.type.order,
+ afnSortData: _ext.order,
+ aoFeatures: _ext.feature,
+ oApi: _ext.internal,
+ oStdClasses: _ext.classes,
+ oPagination: _ext.pager
+ } );
+
+
+ $.extend( DataTable.ext.classes, {
+ "sTable": "dataTable",
+ "sNoFooter": "no-footer",
+
+ /* Paging buttons */
+ "sPageButton": "paginate_button",
+ "sPageButtonActive": "current",
+ "sPageButtonDisabled": "disabled",
+
+ /* Striping classes */
+ "sStripeOdd": "odd",
+ "sStripeEven": "even",
+
+ /* Empty row */
+ "sRowEmpty": "dataTables_empty",
+
+ /* Features */
+ "sWrapper": "dataTables_wrapper",
+ "sFilter": "dataTables_filter",
+ "sInfo": "dataTables_info",
+ "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */
+ "sLength": "dataTables_length",
+ "sProcessing": "dataTables_processing",
+
+ /* Sorting */
+ "sSortAsc": "sorting_asc",
+ "sSortDesc": "sorting_desc",
+ "sSortable": "sorting", /* Sortable in both directions */
+ "sSortableAsc": "sorting_asc_disabled",
+ "sSortableDesc": "sorting_desc_disabled",
+ "sSortableNone": "sorting_disabled",
+ "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
+
+ /* Filtering */
+ "sFilterInput": "",
+
+ /* Page length */
+ "sLengthSelect": "",
+
+ /* Scrolling */
+ "sScrollWrapper": "dataTables_scroll",
+ "sScrollHead": "dataTables_scrollHead",
+ "sScrollHeadInner": "dataTables_scrollHeadInner",
+ "sScrollBody": "dataTables_scrollBody",
+ "sScrollFoot": "dataTables_scrollFoot",
+ "sScrollFootInner": "dataTables_scrollFootInner",
+
+ /* Misc */
+ "sHeaderTH": "",
+ "sFooterTH": "",
+
+ // Deprecated
+ "sSortJUIAsc": "",
+ "sSortJUIDesc": "",
+ "sSortJUI": "",
+ "sSortJUIAscAllowed": "",
+ "sSortJUIDescAllowed": "",
+ "sSortJUIWrapper": "",
+ "sSortIcon": "",
+ "sJUIHeader": "",
+ "sJUIFooter": ""
+ } );
+
+
+ (function() {
+
+ // Reused strings for better compression. Closure compiler appears to have a
+ // weird edge case where it is trying to expand strings rather than use the
+ // variable version. This results in about 200 bytes being added, for very
+ // little preference benefit since it this run on script load only.
+ var _empty = '';
+ _empty = '';
+
+ var _stateDefault = _empty + 'ui-state-default';
+ var _sortIcon = _empty + 'css_right ui-icon ui-icon-';
+ var _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix';
+
+ $.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, {
+ /* Full numbers paging buttons */
+ "sPageButton": "fg-button ui-button "+_stateDefault,
+ "sPageButtonActive": "ui-state-disabled",
+ "sPageButtonDisabled": "ui-state-disabled",
+
+ /* Features */
+ "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+
+ "ui-buttonset-multi paging_", /* Note that the type is postfixed */
+
+ /* Sorting */
+ "sSortAsc": _stateDefault+" sorting_asc",
+ "sSortDesc": _stateDefault+" sorting_desc",
+ "sSortable": _stateDefault+" sorting",
+ "sSortableAsc": _stateDefault+" sorting_asc_disabled",
+ "sSortableDesc": _stateDefault+" sorting_desc_disabled",
+ "sSortableNone": _stateDefault+" sorting_disabled",
+ "sSortJUIAsc": _sortIcon+"triangle-1-n",
+ "sSortJUIDesc": _sortIcon+"triangle-1-s",
+ "sSortJUI": _sortIcon+"carat-2-n-s",
+ "sSortJUIAscAllowed": _sortIcon+"carat-1-n",
+ "sSortJUIDescAllowed": _sortIcon+"carat-1-s",
+ "sSortJUIWrapper": "DataTables_sort_wrapper",
+ "sSortIcon": "DataTables_sort_icon",
+
+ /* Scrolling */
+ "sScrollHead": "dataTables_scrollHead "+_stateDefault,
+ "sScrollFoot": "dataTables_scrollFoot "+_stateDefault,
+
+ /* Misc */
+ "sHeaderTH": _stateDefault,
+ "sFooterTH": _stateDefault,
+ "sJUIHeader": _headerFooter+" ui-corner-tl ui-corner-tr",
+ "sJUIFooter": _headerFooter+" ui-corner-bl ui-corner-br"
+ } );
+
+ }());
+
+
+
+ var extPagination = DataTable.ext.pager;
+
+ function _numbers ( page, pages ) {
+ var
+ numbers = [],
+ buttons = extPagination.numbers_length,
+ half = Math.floor( buttons / 2 ),
+ i = 1;
+
+ if ( pages <= buttons ) {
+ numbers = _range( 0, pages );
+ }
+ else if ( page <= half ) {
+ numbers = _range( 0, buttons-2 );
+ numbers.push( 'ellipsis' );
+ numbers.push( pages-1 );
+ }
+ else if ( page >= pages - 1 - half ) {
+ numbers = _range( pages-(buttons-2), pages );
+ numbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6
+ numbers.splice( 0, 0, 0 );
+ }
+ else {
+ numbers = _range( page-half+2, page+half-1 );
+ numbers.push( 'ellipsis' );
+ numbers.push( pages-1 );
+ numbers.splice( 0, 0, 'ellipsis' );
+ numbers.splice( 0, 0, 0 );
+ }
+
+ numbers.DT_el = 'span';
+ return numbers;
+ }
+
+
+ $.extend( extPagination, {
+ simple: function ( page, pages ) {
+ return [ 'previous', 'next' ];
+ },
+
+ full: function ( page, pages ) {
+ return [ 'first', 'previous', 'next', 'last' ];
+ },
+
+ simple_numbers: function ( page, pages ) {
+ return [ 'previous', _numbers(page, pages), 'next' ];
+ },
+
+ full_numbers: function ( page, pages ) {
+ return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];
+ },
+
+ // For testing and plug-ins to use
+ _numbers: _numbers,
+
+ // Number of number buttons (including ellipsis) to show. _Must be odd!_
+ numbers_length: 7
+ } );
+
+
+ $.extend( true, DataTable.ext.renderer, {
+ pageButton: {
+ _: function ( settings, host, idx, buttons, page, pages ) {
+ var classes = settings.oClasses;
+ var lang = settings.oLanguage.oPaginate;
+ var btnDisplay, btnClass, counter=0;
+
+ var attach = function( container, buttons ) {
+ var i, ien, node, button;
+ var clickHandler = function ( e ) {
+ _fnPageChange( settings, e.data.action, true );
+ };
+
+ for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+ button = buttons[i];
+
+ if ( $.isArray( button ) ) {
+ var inner = $( '<'+(button.DT_el || 'div')+'/>' )
+ .appendTo( container );
+ attach( inner, button );
+ }
+ else {
+ btnDisplay = '';
+ btnClass = '';
+
+ switch ( button ) {
+ case 'ellipsis':
+ container.append('<span class="ellipsis">…</span>');
+ break;
+
+ case 'first':
+ btnDisplay = lang.sFirst;
+ btnClass = button + (page > 0 ?
+ '' : ' '+classes.sPageButtonDisabled);
+ break;
+
+ case 'previous':
+ btnDisplay = lang.sPrevious;
+ btnClass = button + (page > 0 ?
+ '' : ' '+classes.sPageButtonDisabled);
+ break;
+
+ case 'next':
+ btnDisplay = lang.sNext;
+ btnClass = button + (page < pages-1 ?
+ '' : ' '+classes.sPageButtonDisabled);
+ break;
+
+ case 'last':
+ btnDisplay = lang.sLast;
+ btnClass = button + (page < pages-1 ?
+ '' : ' '+classes.sPageButtonDisabled);
+ break;
+
+ default:
+ btnDisplay = button + 1;
+ btnClass = page === button ?
+ classes.sPageButtonActive : '';
+ break;
+ }
+
+ if ( btnDisplay ) {
+ node = $('<a>', {
+ 'class': classes.sPageButton+' '+btnClass,
+ 'aria-controls': settings.sTableId,
+ 'data-dt-idx': counter,
+ 'tabindex': settings.iTabIndex,
+ 'id': idx === 0 && typeof button === 'string' ?
+ settings.sTableId +'_'+ button :
+ null
+ } )
+ .html( btnDisplay )
+ .appendTo( container );
+
+ _fnBindAction(
+ node, {action: button}, clickHandler
+ );
+
+ counter++;
+ }
+ }
+ }
+ };
+
+ // IE9 throws an 'unknown error' if document.activeElement is used
+ // inside an iframe or frame. Try / catch the error. Not good for
+ // accessibility, but neither are frames.
+ var activeEl;
+
+ try {
+ // Because this approach is destroying and recreating the paging
+ // elements, focus is lost on the select button which is bad for
+ // accessibility. So we want to restore focus once the draw has
+ // completed
+ activeEl = $(document.activeElement).data('dt-idx');
+ }
+ catch (e) {}
+
+ attach( $(host).empty(), buttons );
+
+ if ( activeEl ) {
+ $(host).find( '[data-dt-idx='+activeEl+']' ).focus();
+ }
+ }
+ }
+ } );
+
+
+
+ // Built in type detection. See model.ext.aTypes for information about
+ // what is required from this methods.
+ $.extend( DataTable.ext.type.detect, [
+ // Plain numbers - first since V8 detects some plain numbers as dates
+ // e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).
+ function ( d, settings )
+ {
+ var decimal = settings.oLanguage.sDecimal;
+ return _isNumber( d, decimal ) ? 'num'+decimal : null;
+ },
+
+ // Dates (only those recognised by the browser's Date.parse)
+ function ( d, settings )
+ {
+ // V8 will remove any unknown characters at the start and end of the
+ // expression, leading to false matches such as `$245.12` or `10%` being
+ // a valid date. See forum thread 18941 for detail.
+ if ( d && !(d instanceof Date) && ( ! _re_date_start.test(d) || ! _re_date_end.test(d) ) ) {
+ return null;
+ }
+ var parsed = Date.parse(d);
+ return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;
+ },
+
+ // Formatted numbers
+ function ( d, settings )
+ {
+ var decimal = settings.oLanguage.sDecimal;
+ return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;
+ },
+
+ // HTML numeric
+ function ( d, settings )
+ {
+ var decimal = settings.oLanguage.sDecimal;
+ return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;
+ },
+
+ // HTML numeric, formatted
+ function ( d, settings )
+ {
+ var decimal = settings.oLanguage.sDecimal;
+ return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;
+ },
+
+ // HTML (this is strict checking - there must be html)
+ function ( d, settings )
+ {
+ return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?
+ 'html' : null;
+ }
+ ] );
+
+
+
+ // Filter formatting functions. See model.ext.ofnSearch for information about
+ // what is required from these methods.
+ //
+ // Note that additional search methods are added for the html numbers and
+ // html formatted numbers by `_addNumericSort()` when we know what the decimal
+ // place is
+
+
+ $.extend( DataTable.ext.type.search, {
+ html: function ( data ) {
+ return _empty(data) ?
+ data :
+ typeof data === 'string' ?
+ data
+ .replace( _re_new_lines, " " )
+ .replace( _re_html, "" ) :
+ '';
+ },
+
+ string: function ( data ) {
+ return _empty(data) ?
+ data :
+ typeof data === 'string' ?
+ data.replace( _re_new_lines, " " ) :
+ data;
+ }
+ } );
+
+
+
+ var __numericReplace = function ( d, decimalPlace, re1, re2 ) {
+ if ( d !== 0 && (!d || d === '-') ) {
+ return -Infinity;
+ }
+
+ // If a decimal place other than `.` is used, it needs to be given to the
+ // function so we can detect it and replace with a `.` which is the only
+ // decimal place Javascript recognises - it is not locale aware.
+ if ( decimalPlace ) {
+ d = _numToDecimal( d, decimalPlace );
+ }
+
+ if ( d.replace ) {
+ if ( re1 ) {
+ d = d.replace( re1, '' );
+ }
+
+ if ( re2 ) {
+ d = d.replace( re2, '' );
+ }
+ }
+
+ return d * 1;
+ };
+
+
+ // Add the numeric 'deformatting' functions for sorting and search. This is done
+ // in a function to provide an easy ability for the language options to add
+ // additional methods if a non-period decimal place is used.
+ function _addNumericSort ( decimalPlace ) {
+ $.each(
+ {
+ // Plain numbers
+ "num": function ( d ) {
+ return __numericReplace( d, decimalPlace );
+ },
+
+ // Formatted numbers
+ "num-fmt": function ( d ) {
+ return __numericReplace( d, decimalPlace, _re_formatted_numeric );
+ },
+
+ // HTML numeric
+ "html-num": function ( d ) {
+ return __numericReplace( d, decimalPlace, _re_html );
+ },
+
+ // HTML numeric, formatted
+ "html-num-fmt": function ( d ) {
+ return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );
+ }
+ },
+ function ( key, fn ) {
+ // Add the ordering method
+ _ext.type.order[ key+decimalPlace+'-pre' ] = fn;
+
+ // For HTML types add a search formatter that will strip the HTML
+ if ( key.match(/^html\-/) ) {
+ _ext.type.search[ key+decimalPlace ] = _ext.type.search.html;
+ }
+ }
+ );
+ }
+
+
+ // Default sort methods
+ $.extend( _ext.type.order, {
+ // Dates
+ "date-pre": function ( d ) {
+ return Date.parse( d ) || 0;
+ },
+
+ // html
+ "html-pre": function ( a ) {
+ return _empty(a) ?
+ '' :
+ a.replace ?
+ a.replace( /<.*?>/g, "" ).toLowerCase() :
+ a+'';
+ },
+
+ // string
+ "string-pre": function ( a ) {
+ // This is a little complex, but faster than always calling toString,
+ // http://jsperf.com/tostring-v-check
+ return _empty(a) ?
+ '' :
+ typeof a === 'string' ?
+ a.toLowerCase() :
+ ! a.toString ?
+ '' :
+ a.toString();
+ },
+
+ // string-asc and -desc are retained only for compatibility with the old
+ // sort methods
+ "string-asc": function ( x, y ) {
+ return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+ },
+
+ "string-desc": function ( x, y ) {
+ return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+ }
+ } );
+
+
+ // Numeric sorting types - order doesn't matter here
+ _addNumericSort( '' );
+
+
+ $.extend( true, DataTable.ext.renderer, {
+ header: {
+ _: function ( settings, cell, column, classes ) {
+ // No additional mark-up required
+ // Attach a sort listener to update on sort - note that using the
+ // `DT` namespace will allow the event to be removed automatically
+ // on destroy, while the `dt` namespaced event is the one we are
+ // listening for
+ $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {
+ if ( settings !== ctx ) { // need to check this this is the host
+ return; // table, not a nested one
+ }
+
+ var colIdx = column.idx;
+
+ cell
+ .removeClass(
+ column.sSortingClass +' '+
+ classes.sSortAsc +' '+
+ classes.sSortDesc
+ )
+ .addClass( columns[ colIdx ] == 'asc' ?
+ classes.sSortAsc : columns[ colIdx ] == 'desc' ?
+ classes.sSortDesc :
+ column.sSortingClass
+ );
+ } );
+ },
+
+ jqueryui: function ( settings, cell, column, classes ) {
+ $('<div/>')
+ .addClass( classes.sSortJUIWrapper )
+ .append( cell.contents() )
+ .append( $('<span/>')
+ .addClass( classes.sSortIcon+' '+column.sSortingClassJUI )
+ )
+ .appendTo( cell );
+
+ // Attach a sort listener to update on sort
+ $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {
+ if ( settings !== ctx ) {
+ return;
+ }
+
+ var colIdx = column.idx;
+
+ cell
+ .removeClass( classes.sSortAsc +" "+classes.sSortDesc )
+ .addClass( columns[ colIdx ] == 'asc' ?
+ classes.sSortAsc : columns[ colIdx ] == 'desc' ?
+ classes.sSortDesc :
+ column.sSortingClass
+ );
+
+ cell
+ .find( 'span.'+classes.sSortIcon )
+ .removeClass(
+ classes.sSortJUIAsc +" "+
+ classes.sSortJUIDesc +" "+
+ classes.sSortJUI +" "+
+ classes.sSortJUIAscAllowed +" "+
+ classes.sSortJUIDescAllowed
+ )
+ .addClass( columns[ colIdx ] == 'asc' ?
+ classes.sSortJUIAsc : columns[ colIdx ] == 'desc' ?
+ classes.sSortJUIDesc :
+ column.sSortingClassJUI
+ );
+ } );
+ }
+ }
+ } );
+
+ /*
+ * Public helper functions. These aren't used internally by DataTables, or
+ * called by any of the options passed into DataTables, but they can be used
+ * externally by developers working with DataTables. They are helper functions
+ * to make working with DataTables a little bit easier.
+ */
+
+ /**
+ * Helpers for `columns.render`.
+ *
+ * The options defined here can be used with the `columns.render` initialisation
+ * option to provide a display renderer. The following functions are defined:
+ *
+ * * `number` - Will format numeric data (defined by `columns.data`) for
+ * display, retaining the original unformatted data for sorting and filtering.
+ * It takes 4 parameters:
+ * * `string` - Thousands grouping separator
+ * * `string` - Decimal point indicator
+ * * `integer` - Number of decimal points to show
+ * * `string` (optional) - Prefix.
+ *
+ * @example
+ * // Column definition using the number renderer
+ * {
+ * data: "salary",
+ * render: $.fn.dataTable.render.number( '\'', '.', 0, '$' )
+ * }
+ *
+ * @namespace
+ */
+ DataTable.render = {
+ number: function ( thousands, decimal, precision, prefix ) {
+ return {
+ display: function ( d ) {
+ if ( typeof d !== 'number' && typeof d !== 'string' ) {
+ return d;
+ }
+
+ var negative = d < 0 ? '-' : '';
+ d = Math.abs( parseFloat( d ) );
+
+ var intPart = parseInt( d, 10 );
+ var floatPart = precision ?
+ decimal+(d - intPart).toFixed( precision ).substring( 2 ):
+ '';
+
+ return negative + (prefix||'') +
+ intPart.toString().replace(
+ /\B(?=(\d{3})+(?!\d))/g, thousands
+ ) +
+ floatPart;
+ }
+ };
+ }
+ };
+
+
+ /*
+ * This is really a good bit rubbish this method of exposing the internal methods
+ * publicly... - To be fixed in 2.0 using methods on the prototype
+ */
+
+
+ /**
+ * Create a wrapper function for exporting an internal functions to an external API.
+ * @param {string} fn API function name
+ * @returns {function} wrapped function
+ * @memberof DataTable#internal
+ */
+ function _fnExternApiFunc (fn)
+ {
+ return function() {
+ var args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(
+ Array.prototype.slice.call(arguments)
+ );
+ return DataTable.ext.internal[fn].apply( this, args );
+ };
+ }
+
+
+ /**
+ * Reference to internal functions for use by plug-in developers. Note that
+ * these methods are references to internal functions and are considered to be
+ * private. If you use these methods, be aware that they are liable to change
+ * between versions.
+ * @namespace
+ */
+ $.extend( DataTable.ext.internal, {
+ _fnExternApiFunc: _fnExternApiFunc,
+ _fnBuildAjax: _fnBuildAjax,
+ _fnAjaxUpdate: _fnAjaxUpdate,
+ _fnAjaxParameters: _fnAjaxParameters,
+ _fnAjaxUpdateDraw: _fnAjaxUpdateDraw,
+ _fnAjaxDataSrc: _fnAjaxDataSrc,
+ _fnAddColumn: _fnAddColumn,
+ _fnColumnOptions: _fnColumnOptions,
+ _fnAdjustColumnSizing: _fnAdjustColumnSizing,
+ _fnVisibleToColumnIndex: _fnVisibleToColumnIndex,
+ _fnColumnIndexToVisible: _fnColumnIndexToVisible,
+ _fnVisbleColumns: _fnVisbleColumns,
+ _fnGetColumns: _fnGetColumns,
+ _fnColumnTypes: _fnColumnTypes,
+ _fnApplyColumnDefs: _fnApplyColumnDefs,
+ _fnHungarianMap: _fnHungarianMap,
+ _fnCamelToHungarian: _fnCamelToHungarian,
+ _fnLanguageCompat: _fnLanguageCompat,
+ _fnBrowserDetect: _fnBrowserDetect,
+ _fnAddData: _fnAddData,
+ _fnAddTr: _fnAddTr,
+ _fnNodeToDataIndex: _fnNodeToDataIndex,
+ _fnNodeToColumnIndex: _fnNodeToColumnIndex,
+ _fnGetCellData: _fnGetCellData,
+ _fnSetCellData: _fnSetCellData,
+ _fnSplitObjNotation: _fnSplitObjNotation,
+ _fnGetObjectDataFn: _fnGetObjectDataFn,
+ _fnSetObjectDataFn: _fnSetObjectDataFn,
+ _fnGetDataMaster: _fnGetDataMaster,
+ _fnClearTable: _fnClearTable,
+ _fnDeleteIndex: _fnDeleteIndex,
+ _fnInvalidate: _fnInvalidate,
+ _fnGetRowElements: _fnGetRowElements,
+ _fnCreateTr: _fnCreateTr,
+ _fnBuildHead: _fnBuildHead,
+ _fnDrawHead: _fnDrawHead,
+ _fnDraw: _fnDraw,
+ _fnReDraw: _fnReDraw,
+ _fnAddOptionsHtml: _fnAddOptionsHtml,
+ _fnDetectHeader: _fnDetectHeader,
+ _fnGetUniqueThs: _fnGetUniqueThs,
+ _fnFeatureHtmlFilter: _fnFeatureHtmlFilter,
+ _fnFilterComplete: _fnFilterComplete,
+ _fnFilterCustom: _fnFilterCustom,
+ _fnFilterColumn: _fnFilterColumn,
+ _fnFilter: _fnFilter,
+ _fnFilterCreateSearch: _fnFilterCreateSearch,
+ _fnEscapeRegex: _fnEscapeRegex,
+ _fnFilterData: _fnFilterData,
+ _fnFeatureHtmlInfo: _fnFeatureHtmlInfo,
+ _fnUpdateInfo: _fnUpdateInfo,
+ _fnInfoMacros: _fnInfoMacros,
+ _fnInitialise: _fnInitialise,
+ _fnInitComplete: _fnInitComplete,
+ _fnLengthChange: _fnLengthChange,
+ _fnFeatureHtmlLength: _fnFeatureHtmlLength,
+ _fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,
+ _fnPageChange: _fnPageChange,
+ _fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,
+ _fnProcessingDisplay: _fnProcessingDisplay,
+ _fnFeatureHtmlTable: _fnFeatureHtmlTable,
+ _fnScrollDraw: _fnScrollDraw,
+ _fnApplyToChildren: _fnApplyToChildren,
+ _fnCalculateColumnWidths: _fnCalculateColumnWidths,
+ _fnThrottle: _fnThrottle,
+ _fnConvertToWidth: _fnConvertToWidth,
+ _fnScrollingWidthAdjust: _fnScrollingWidthAdjust,
+ _fnGetWidestNode: _fnGetWidestNode,
+ _fnGetMaxLenString: _fnGetMaxLenString,
+ _fnStringToCss: _fnStringToCss,
+ _fnScrollBarWidth: _fnScrollBarWidth,
+ _fnSortFlatten: _fnSortFlatten,
+ _fnSort: _fnSort,
+ _fnSortAria: _fnSortAria,
+ _fnSortListener: _fnSortListener,
+ _fnSortAttachListener: _fnSortAttachListener,
+ _fnSortingClasses: _fnSortingClasses,
+ _fnSortData: _fnSortData,
+ _fnSaveState: _fnSaveState,
+ _fnLoadState: _fnLoadState,
+ _fnSettingsFromNode: _fnSettingsFromNode,
+ _fnLog: _fnLog,
+ _fnMap: _fnMap,
+ _fnBindAction: _fnBindAction,
+ _fnCallbackReg: _fnCallbackReg,
+ _fnCallbackFire: _fnCallbackFire,
+ _fnLengthOverflow: _fnLengthOverflow,
+ _fnRenderer: _fnRenderer,
+ _fnDataSource: _fnDataSource,
+ _fnRowAttributes: _fnRowAttributes,
+ _fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant
+ // in 1.10, so this dead-end function is
+ // added to prevent errors
+ } );
+
+
+ // jQuery access
+ $.fn.dataTable = DataTable;
+
+ // Legacy aliases
+ $.fn.dataTableSettings = DataTable.settings;
+ $.fn.dataTableExt = DataTable.ext;
+
+ // With a capital `D` we return a DataTables API instance rather than a
+ // jQuery object
+ $.fn.DataTable = function ( opts ) {
+ return $(this).dataTable( opts ).api();
+ };
+
+ // All properties that are available to $.fn.dataTable should also be
+ // available on $.fn.DataTable
+ $.each( DataTable, function ( prop, val ) {
+ $.fn.DataTable[ prop ] = val;
+ } );
+
+
+ // Information about events fired by DataTables - for documentation.
+ /**
+ * Draw event, fired whenever the table is redrawn on the page, at the same
+ * point as fnDrawCallback. This may be useful for binding events or
+ * performing calculations when the table is altered at all.
+ * @name DataTable#draw.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * Search event, fired when the searching applied to the table (using the
+ * built-in global search, or column filters) is altered.
+ * @name DataTable#search.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * Page change event, fired when the paging of the table is altered.
+ * @name DataTable#page.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * Order event, fired when the ordering applied to the table is altered.
+ * @name DataTable#order.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * DataTables initialisation complete event, fired when the table is fully
+ * drawn, including Ajax data loaded, if Ajax data is required.
+ * @name DataTable#init.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {object} json The JSON object request from the server - only
+ * present if client-side Ajax sourced data is used</li></ol>
+ */
+
+ /**
+ * State save event, fired when the table has changed state a new state save
+ * is required. This event allows modification of the state saving object
+ * prior to actually doing the save, including addition or other state
+ * properties (for plug-ins) or modification of a DataTables core property.
+ * @name DataTable#stateSaveParams.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {object} json The state information to be saved
+ */
+
+ /**
+ * State load event, fired when the table is loading state from the stored
+ * data, but prior to the settings object being modified by the saved state
+ * - allowing modification of the saved state is required or loading of
+ * state for a plug-in.
+ * @name DataTable#stateLoadParams.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {object} json The saved state information
+ */
+
+ /**
+ * State loaded event, fired when state has been loaded from stored data and
+ * the settings object has been modified by the loaded data.
+ * @name DataTable#stateLoaded.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {object} json The saved state information
+ */
+
+ /**
+ * Processing event, fired when DataTables is doing some kind of processing
+ * (be it, order, searcg or anything else). It can be used to indicate to
+ * the end user that there is something happening, or that something has
+ * finished.
+ * @name DataTable#processing.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {boolean} bShow Flag for if DataTables is doing processing or not
+ */
+
+ /**
+ * Ajax (XHR) event, fired whenever an Ajax request is completed from a
+ * request to made to the server for new data. This event is called before
+ * DataTables processed the returned data, so it can also be used to pre-
+ * process the data returned from the server, if needed.
+ *
+ * Note that this trigger is called in `fnServerData`, if you override
+ * `fnServerData` and which to use this event, you need to trigger it in you
+ * success function.
+ * @name DataTable#xhr.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ * @param {object} json JSON returned from the server
+ *
+ * @example
+ * // Use a custom property returned from the server in another DOM element
+ * $('#table').dataTable().on('xhr.dt', function (e, settings, json) {
+ * $('#status').html( json.status );
+ * } );
+ *
+ * @example
+ * // Pre-process the data returned from the server
+ * $('#table').dataTable().on('xhr.dt', function (e, settings, json) {
+ * for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) {
+ * json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;
+ * }
+ * // Note no return - manipulate the data directly in the JSON object.
+ * } );
+ */
+
+ /**
+ * Destroy event, fired when the DataTable is destroyed by calling fnDestroy
+ * or passing the bDestroy:true parameter in the initialisation object. This
+ * can be used to remove bound events, added DOM nodes, etc.
+ * @name DataTable#destroy.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * Page length change event, fired when number of records to show on each
+ * page (the length) is changed.
+ * @name DataTable#length.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ * @param {integer} len New length
+ */
+
+ /**
+ * Column sizing has changed.
+ * @name DataTable#column-sizing.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * Column visibility has changed.
+ * @name DataTable#column-visibility.dt
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ * @param {int} column Column index
+ * @param {bool} vis `false` if column now hidden, or `true` if visible
+ */
+
+ return $.fn.dataTable;
+}));
+
+}(window, document));
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.dataTables.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.dataTables.min.js
new file mode 100644
index 0000000..85dd817
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.dataTables.min.js
@@ -0,0 +1,160 @@
+/*! DataTables 1.10.7
+ * ©2008-2015 SpryMedia Ltd - datatables.net/license
+ */
+(function(Ea,Q,k){var P=function(h){function W(a){var b,c,e={};h.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,"o"===b[1]&&W(a[d])});a._hungarianMap=e}function H(a,b,c){a._hungarianMap||W(a);var e;h.each(b,function(d){e=a._hungarianMap[d];if(e!==k&&(c||b[e]===k))"o"===e.charAt(0)?(b[e]||(b[e]={}),h.extend(!0,b[e],b[d]),H(a[e],b[e],c)):b[e]=b[d]})}function P(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;
+!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");
+A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&H(m.models.oSearch,a[b])}function fb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function gb(a){var a=a.oBrowser,b=h("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",
+top:1,left:1,width:100,overflow:"scroll"}).append(h('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==Math.round(c.offset().left);b.remove()}function hb(a,b,c,e,d,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;e!==d;)a.hasOwnProperty(e)&&(g=j?b(g,a[e],e,a):a[e],j=!0,e+=f);return g}function Fa(a,b){var c=m.defaults.column,e=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:Q.createElement("th"),sTitle:c.sTitle?
+c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=h.extend({},m.models.oSearch,c[e]);ka(a,e,h(b).data())}function ka(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr("width")||null;var f=(d.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),H(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&
+(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=R(g),i=b.mRender?R(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var e=j(a,b,k,c);return i&&b?i(e,b,a,c):e};b.fnSetData=function(a,b,c){return S(g)(a,b,c)};"number"!==typeof g&&
+(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI=e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function X(a){if(!1!==a.oFeatures.bAutoWidth){var b=
+a.aoColumns;Ga(a);for(var c=0,e=b.length;c<e;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Y(a);w(a,null,"column-sizing",[a])}function la(a,b){var c=Z(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=Z(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){return Z(a,"bVisible").length}function Z(a,b){var c=[];h.map(a.aoColumns,function(a,d){a[b]&&c.push(d)});return c}function Ha(a){var b=a.aoColumns,c=a.aoData,e=m.ext.type.detect,d,
+f,g,j,i,h,l,q,n;d=0;for(f=b.length;d<f;d++)if(l=b[d],n=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=e.length;g<j;g++){i=0;for(h=c.length;i<h;i++){n[i]===k&&(n[i]=x(a,i,d,"type"));q=e[g](n[i],a);if(!q&&g!==e.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function ib(a,b,c,e){var d,f,g,j,i,o,l=a.aoColumns;if(b)for(d=b.length-1;0<=d;d--){o=b[d];var q=o.targets!==k?o.targets:o.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<
+g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Fa(a);e(q[f],o)}else if("number"===typeof q[f]&&0>q[f])e(l.length+q[f],o);else if("string"===typeof q[f]){j=0;for(i=l.length;j<i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&e(j,o)}}if(c){d=0;for(a=c.length;d<a;d++)e(d,c[d])}}function K(a,b,c,e){var d=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,g=b.length;f<g;f++)c&&Ia(a,d,f,x(a,d,f)),b[f].sType=null;a.aiDisplayMaster.push(d);
+(c||!a.oFeatures.bDeferRender)&&Ja(a,d,c,e);return d}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,d){c=na(a,d);return K(a,c.data,d,c.cells)})}function x(a,b,c,e){var d=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,c=f.fnGetData(g,e,{settings:a,row:b,col:c});if(c===k)return a.iDrawError!=d&&null===j&&(I(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=d),j;if((c===g||null===c)&&
+null!==j)c=j;else if("function"===typeof c)return c.call(g);return null===c&&"display"==e?"":c}function Ia(a,b,c,e){a.aoColumns[c].fnSetData(a.aoData[b]._aData,e,{settings:a,row:b,col:c})}function Ka(a){return h.map(a.match(/(\\.|[^\.])+/g),function(a){return a.replace(/\\./g,".")})}function R(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=R(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,
+c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=Ka(f);for(var i=0,h=j.length;i<h;i++){f=j[i].match(ba);g=j[i].match(T);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");i=0;for(h=a.length;i<h;i++)g.push(c(a[i],b,j));a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(T,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===
+k)return k;a=a[j[i]]}}return a};return function(b,d){return c(b,d,a)}}return function(b){return b[a]}}function S(a){if(h.isPlainObject(a))return S(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,e,d){a(b,"set",e,d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,e,d){var d=Ka(d),f;f=d[d.length-1];for(var g,j,i=0,h=d.length-1;i<h;i++){g=d[i].match(ba);j=d[i].match(T);if(g){d[i]=d[i].replace(ba,"");a[d[i]]=[];
+f=d.slice();f.splice(0,i+1);g=f.join(".");j=0;for(h=e.length;j<h;j++)f={},b(f,e[j],g),a[d[i]].push(f);return}j&&(d[i]=d[i].replace(T,""),a=a[d[i]](e));if(null===a[d[i]]||a[d[i]]===k)a[d[i]]={};a=a[d[i]]}if(f.match(T))a[f.replace(T,"")](e);else a[f.replace(ba,"")]=e};return function(c,e){return b(c,e,a)}}return function(b,e){b[a]=e}}function La(a){return D(a.aoData,"_aData")}function oa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function pa(a,b,c){for(var e=-1,d=0,f=a.length;d<
+f;d++)a[d]==b?e=d:a[d]>b&&a[d]--; -1!=e&&c===k&&a.splice(e,1)}function ca(a,b,c,e){var d=a.aoData[b],f,g=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=x(a,b,f,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===d.src)d._aData=na(a,d,e,e===k?k:d._aData).data;else{var j=d.anCells;if(j)if(e!==k)g(j[e],e);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}d._aSortData=null;d._aFilterData=null;g=a.aoColumns;if(e!==k)g[e].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;
+Ma(d)}}function na(a,b,c,e){var d=[],f=b.firstChild,g,j=0,i,o=a.aoColumns,l=a._rowReadObject,e=e||l?{}:[],q=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),S(a)(e,b.getAttribute(c)))}},a=function(a){if(c===k||c===j)g=o[j],i=h.trim(a.innerHTML),g&&g._bAttrSrc?(S(g.mData._)(e,i),q(g.mData.sort,a),q(g.mData.type,a),q(g.mData.filter,a)):l?(g._setter||(g._setter=S(g.mData)),g._setter(e,i)):e[j]=i;j++};if(f)for(;f;){b=f.nodeName.toUpperCase();if("TD"==b||"TH"==b)a(f),
+d.push(f);f=f.nextSibling}else{d=b.anCells;f=0;for(b=d.length;f<b;f++)a(d[f])}return{data:e,cells:d}}function Ja(a,b,c,e){var d=a.aoData[b],f=d._aData,g=[],j,i,h,l,q;if(null===d.nTr){j=c||Q.createElement("tr");d.nTr=j;d.anCells=g;j._DT_RowIndex=b;Ma(d);l=0;for(q=a.aoColumns.length;l<q;l++){h=a.aoColumns[l];i=c?e[l]:Q.createElement(h.sCellType);g.push(i);if(!c||h.mRender||h.mData!==l)i.innerHTML=x(a,b,l,"display");h.sClass&&(i.className+=" "+h.sClass);h.bVisible&&!c?j.appendChild(i):!h.bVisible&&c&&
+i.parentNode.removeChild(i);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,i,x(a,b,l),f,b,l)}w(a,"aoRowCreatedCallback",null,[j,f,b])}d.nTr.setAttribute("role","row")}function Ma(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var e=c.DT_RowClass.split(" ");a.__rowc=a.__rowc?Na(a.__rowc.concat(e)):e;h(b).removeClass(a.__rowc.join(" ")).addClass(c.DT_RowClass)}c.DT_RowAttr&&h(b).attr(c.DT_RowAttr);c.DT_RowData&&h(b).data(c.DT_RowData)}}function jb(a){var b,c,e,d,
+f,g=a.nTHead,j=a.nTFoot,i=0===h("th, td",g).length,o=a.oClasses,l=a.aoColumns;i&&(d=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],e=h(f.nTh).addClass(f.sClass),i&&e.appendTo(d),a.oFeatures.bSort&&(e.addClass(f.sSortingClass),!1!==f.bSortable&&(e.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=e.html()&&e.html(f.sTitle),Pa(a,"header")(a,e,f,o);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(o.sHeaderTH);
+h(j).find(">tr>th, >tr>td").addClass(o.sFooterTH);if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var e,d,f,g=[],j=[],i=a.aoColumns.length,o;if(b){c===k&&(c=!1);e=0;for(d=b.length;e<d;e++){g[e]=b[e].slice();g[e].nTr=b[e].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[e].splice(f,1);j.push([])}e=0;for(d=g.length;e<d;e++){if(a=g[e].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[e].length;f<b;f++)if(o=
+i=1,j[e][f]===k){a.appendChild(g[e][f].cell);for(j[e][f]=1;g[e+i]!==k&&g[e][f].cell==g[e+i][f].cell;)j[e+i][f]=1,i++;for(;g[e][f+o]!==k&&g[e][f].cell==g[e][f+o].cell;){for(c=0;c<i;c++)j[e+c][f+o]=1;o++}h(g[e][f].cell).attr("rowspan",i).attr("colspan",o)}}}}function M(a){var b=w(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,e=a.asStripeClasses,d=e.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==B(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=
+j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,o=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:o;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ja(a,l);l=q.nTr;if(0!==d){var n=e[c%d];q._sRowStripe!=n&&(h(l).removeClass(q._sRowStripe).addClass(n),q._sRowStripe=n)}w(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,
+1==a.iDraw&&"ajax"==B(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":d?e[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],La(a),g,o,i]);w(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],La(a),g,o,i]);e=h(a.nTBody);e.children().detach();e.append(h(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=
+!1}}function N(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&lb(a);e?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),e=a.oFeatures,d=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,o,l,q,n=0;n<f.length;n++){g=
+null;j=f[n];if("<"==j){i=h("<div/>")[0];o=f[n+1];if("'"==o||'"'==o){l="";for(q=2;f[n+q]!=o;)l+=f[n+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(o=l.split("."),i.id=o[0].substr(1,o[0].length-1),i.className=o[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;n+=q}d.append(i);d=h(i)}else if(">"==j)d=d.parent();else if("l"==j&&e.bPaginate&&e.bLengthChange)g=nb(a);else if("f"==j&&e.bFilter)g=ob(a);else if("r"==j&&e.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==
+j&&e.bInfo)g=rb(a);else if("p"==j&&e.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(o=i.length;q<o;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),d.append(g))}c.replaceWith(d)}function da(a,b){var c=h(b).children("tr"),e,d,f,g,j,i,o,l,q,n;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){e=c[f];for(d=e.firstChild;d;){if("TD"==d.nodeName.toUpperCase()||"TH"==d.nodeName.toUpperCase()){l=
+1*d.getAttribute("colspan");q=1*d.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;o=g;n=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][o+j]={cell:d,unique:n},a[f+g].nTr=e}d=d.nextSibling}}}function qa(a,b,c){var e=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,d=c.length;b<d;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!e[f]||!a.bSortCellsTop))e[f]=c[b][f].cell;return e}function ra(a,b,c){w(a,"aoServerParams","serverParams",[b]);
+if(b&&h.isArray(b)){var e={},d=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(d);c?(c=c[0],e[c]||(e[c]=[]),e[c].push(b.value)):e[b.name]=b.value});b=e}var f,g=a.ajax,j=a.oInstance,i=function(b){w(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var o=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&o?o:h.extend(!0,b,o);delete g.data}o={data:b,success:function(b){var c=b.error||b.sError;c&&I(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,
+c){var f=w(a,null,"xhr",[a,null,a.jqXHR]);-1===h.inArray(!0,f)&&("parsererror"==c?I(a,0,"Invalid JSON response",1):4===b.readyState&&I(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;w(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(o,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(o,g)),g.data=f)}function kb(a){return a.bAjaxDataGet?
+(a.iDraw++,C(a,!0),ra(a,tb(a),function(b){ub(a,b)}),!1):!0}function tb(a){var b=a.aoColumns,c=b.length,e=a.oFeatures,d=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,o,l,q=U(a);g=a._iDisplayStart;i=!1!==e.bPaginate?a._iDisplayLength:-1;var n=function(a,b){j.push({name:a,value:b})};n("sEcho",a.iDraw);n("iColumns",c);n("sColumns",D(b,"sName").join(","));n("iDisplayStart",g);n("iDisplayLength",i);var k={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:d.sSearch,regex:d.bRegex}};for(g=
+0;g<c;g++)o=b[g],l=f[g],i="function"==typeof o.mData?"function":o.mData,k.columns.push({data:i,name:o.sName,searchable:o.bSearchable,orderable:o.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),n("mDataProp_"+g,i),e.bFilter&&(n("sSearch_"+g,l.sSearch),n("bRegex_"+g,l.bRegex),n("bSearchable_"+g,o.bSearchable)),e.bSort&&n("bSortable_"+g,o.bSortable);e.bFilter&&(n("sSearch",d.sSearch),n("bRegex",d.bRegex));e.bSort&&(h.each(q,function(a,b){k.order.push({column:b.col,dir:b.dir});n("iSortCol_"+a,b.col);
+n("sSortDir_"+a,b.dir)}),n("iSortingCols",q.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:k:b?j:k}function ub(a,b){var c=sa(a,b),e=b.sEcho!==k?b.sEcho:b.draw,d=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(e){if(1*e<a.iDraw)return;a.iDraw=1*e}oa(a);a._iRecordsTotal=parseInt(d,10);a._iRecordsDisplay=parseInt(f,10);e=0;for(d=c.length;e<d;e++)K(a,c[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;
+M(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?R(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,e=a.oLanguage,d=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=e.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),
+f=function(){var b=!this.value?"":this.value;b!=d.sSearch&&(fa(a,{sSearch:b,bRegex:d.bRegex,bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),a._iDisplayStart=0,M(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===B(a)?400:0,i=h("input",b).val(d.sSearch).attr("placeholder",e.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?ua(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==
+Q.activeElement&&i.val(d.sSearch)}catch(f){}});return b[0]}function fa(a,b,c){var e=a.oPreviousSearch,d=a.aoPreSearchCols,f=function(a){e.sSearch=a.sSearch;e.bRegex=a.bRegex;e.bSmart=a.bSmart;e.bCaseInsensitive=a.bCaseInsensitive};Ha(a);if("ssp"!=B(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<d.length;b++)wb(a,d[b].sSearch,b,d[b].bEscapeRegex!==k?!d[b].bEscapeRegex:d[b].bRegex,d[b].bSmart,d[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered=
+!0;w(a,null,"search",[a])}function xb(a){for(var b=m.ext.search,c=a.aiDisplay,e,d,f=0,g=b.length;f<g;f++){for(var j=[],i=0,h=c.length;i<h;i++)d=c[i],e=a.aoData[d],b[f](a,e._aFilterData,d,e._aData,i)&&j.push(d);c.length=0;c.push.apply(c,j)}}function wb(a,b,c,e,d,f){if(""!==b)for(var g=a.aiDisplay,e=Qa(b,e,d,f),d=g.length-1;0<=d;d--)b=a.aoData[g[d]]._aFilterData[c],e.test(b)||g.splice(d,1)}function vb(a,b,c,e,d,f){var e=Qa(b,e,d,f),d=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==m.ext.search.length&&
+(c=!0);g=yb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||d.length>b.length||0!==b.indexOf(d)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)e.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Qa(a,b,c,e){a=b?a:va(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,e?"i":"")}function va(a){return a.replace(Yb,"\\$1")}
+function yb(a){var b=a.aoColumns,c,e,d,f,g,j,i,h,l=m.ext.type.search;c=!1;e=0;for(f=a.aoData.length;e<f;e++)if(h=a.aoData[e],!h._aFilterData){j=[];d=0;for(g=b.length;d<g;d++)c=b[d],c.bSearchable?(i=x(a,e,d,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(wa.innerHTML=i,i=Zb?wa.textContent:wa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c}
+function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,e=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),e.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return e[0]}function Bb(a){var b=
+a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,e=a._iDisplayStart+1,d=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,e,d,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,e=a._iDisplayStart+1,d=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===d;return b.replace(/_START_/g,c.call(a,e)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,
+c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(e/d))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/d)))}function ga(a){var b,c,e=a.iInitDisplayStart,d=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ga(a);b=0;for(c=d.length;b<c;b++)f=d[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));N(a);d=B(a);"ssp"!=d&&("ajax"==d?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)K(a,f[b]);
+a.iInitDisplayStart=e;N(a);C(a,!1);ta(a,c)},a):(C(a,!1),ta(a)))}else setTimeout(function(){ga(a)},200)}function ta(a,b){a._bInitComplete=!0;b&&X(a);w(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);w(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,e=a.aLengthMenu,d=h.isArray(e[0]),f=d?e[0]:e,e=d?e[1]:e,d=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)d[0][g]=new Option(e[g],
+f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",d[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());M(a)});h(a.nTable).bind("length.dt.DT",function(b,c,f){a===c&&h("select",i).val(f)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],e="function"===typeof c,d=function(a){M(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],
+f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),q,l=0;for(q=f.p.length;l<q;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,d)},sName:"pagination"}));return b}function Ta(a,b,c){var e=a._iDisplayStart,d=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===d?e=0:"number"===typeof b?(e=b*d,e>f&&(e=0)):
+"first"==b?e=0:"previous"==b?(e=0<=d?e-d:0,0>e&&(e=0)):"next"==b?e+d<f&&(e+=d):"last"==b?e=Math.floor((f-1)/d)*d:I(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==e;a._iDisplayStart=e;b&&(w(a,null,"page",[a]),c&&M(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");w(a,
+null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),o=h(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);c=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,
+width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({overflow:"auto",height:!d?null:s(d),width:!e?null:s(e)}).append(b));l&&c.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(o.removeAttr("id").css("margin-left",
+0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=c.children(),q=b[0],f=b[1],n=l?b[2]:null;if(e)h(f).on("scroll.DT",function(){var a=this.scrollLeft;q.scrollLeft=a;l&&(n.scrollLeft=a)});a.nScrollHead=q;a.nScrollBody=f;a.nScrollFoot=n;a.aoDrawCallback.push({fn:Y,sName:"scrolling"});return c[0]}function Y(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,f=b.iBarWidth,g=h(a.nScrollHead),j=g[0].style,i=g.children("div"),o=i[0].style,l=i.children("table"),i=a.nScrollBody,q=h(i),n=i.style,
+k=h(a.nScrollFoot).children("div"),p=k.children("table"),m=h(a.nTHead),r=h(a.nTable),t=r[0],O=t.style,L=a.nTFoot?h(a.nTFoot):null,ha=a.oBrowser,w=ha.bScrollOversize,v,u,y,x,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};r.children("thead, tfoot").remove();z=m.clone().prependTo(r);v=m.find("tr");y=z.find("tr");z.find("th, td").removeAttr("tabindex");L&&(x=L.clone().prependTo(r),u=L.find("tr"),x=x.find("tr"));
+c||(n.width="100%",g[0].style.width="100%");h.each(qa(a,z),function(b,c){D=la(a,b);c.style.width=a.aoColumns[D].sWidth});L&&G(function(a){a.style.width=""},x);b.bCollapse&&""!==d&&(n.height=q[0].offsetHeight+m[0].offsetHeight+"px");g=r.outerWidth();if(""===c){if(O.width="100%",w&&(r.find("tbody").height()>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(r.outerWidth()-f)}else""!==e?O.width=s(e):g==q.width()&&q.height()<r.height()?(O.width=s(g-f),r.outerWidth()>g-f&&(O.width=s(g))):O.width=
+s(g);g=r.outerWidth();G(E,y);G(function(a){C.push(a.innerHTML);A.push(s(h(a).css("width")))},y);G(function(a,b){a.style.width=A[b]},v);h(y).height(0);L&&(G(E,x),G(function(a){B.push(s(h(a).css("width")))},x),G(function(a,b){a.style.width=B[b]},u),h(x).height(0));G(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=A[b]},y);L&&G(function(a,b){a.innerHTML="";a.style.width=B[b]},x);if(r.outerWidth()<g){u=i.scrollHeight>i.offsetHeight||
+"scroll"==q.css("overflow-y")?g+f:g;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(u-f);(""===c||""!==e)&&I(a,1,"Possible column misalignment",6)}else u="100%";n.width=s(u);j.width=s(u);L&&(a.nScrollFoot.style.width=s(u));!d&&w&&(n.height=s(t.offsetHeight+f));d&&b.bCollapse&&(n.height=s(d),b=c&&t.offsetWidth>i.offsetWidth?f:0,t.offsetHeight<i.offsetHeight&&(n.height=s(t.offsetHeight+b)));b=r.outerWidth();l[0].style.width=s(b);o.width=s(b);l=r.height()>i.clientHeight||
+"scroll"==q.css("overflow-y");ha="padding"+(ha.bScrollbarLeft?"Left":"Right");o[ha]=l?f+"px":"0px";L&&(p[0].style.width=s(b),k[0].style.width=s(b),k[0].style[ha]=l?f+"px":"0px");q.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function G(a,b,c){for(var e=0,d=0,f=b.length,g,j;d<f;){g=b[d].firstChild;for(j=c?c[d].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,e):a(g,e),e++),g=g.nextSibling,j=c?j.nextSibling:null;d++}}function Ga(a){var b=a.nTable,c=a.aoColumns,e=a.oScroll,d=e.sY,f=e.sX,
+g=e.sXInner,j=c.length,e=Z(a,"bVisible"),i=h("th",a.nTHead),o=b.getAttribute("width"),l=b.parentNode,k=!1,n,m;(n=b.style.width)&&-1!==n.indexOf("%")&&(o=n);for(n=0;n<e.length;n++)m=c[e[n]],null!==m.sWidth&&(m.sWidth=Db(m.sWidthOrig,l),k=!0);if(!k&&!f&&!d&&j==aa(a)&&j==i.length)for(n=0;n<j;n++)c[n].sWidth=s(i.eq(n).width());else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var p=h("<tr/>").appendTo(j.find("tbody"));j.find("tfoot th, tfoot td").css("width",
+"");i=qa(a,j.find("thead")[0]);for(n=0;n<e.length;n++)m=c[e[n]],i[n].style.width=null!==m.sWidthOrig&&""!==m.sWidthOrig?s(m.sWidthOrig):"";if(a.aoData.length)for(n=0;n<e.length;n++)k=e[n],m=c[k],h(Eb(a,k)).clone(!1).append(m.sContentPadding).appendTo(p);j.appendTo(l);f&&g?j.width(g):f?(j.css("width","auto"),j.width()<l.offsetWidth&&j.width(l.offsetWidth)):d?j.width(l.offsetWidth):o&&j.width(o);Fb(a,j[0]);if(f){for(n=g=0;n<e.length;n++)m=c[e[n]],d=h(i[n]).outerWidth(),g+=null===m.sWidthOrig?d:parseInt(m.sWidth,
+10)+d-h(i[n]).width();j.width(s(g));b.style.width=s(g)}for(n=0;n<e.length;n++)if(m=c[e[n]],d=h(i[n]).width())m.sWidth=s(d);b.style.width=s(j.css("width"));j.remove()}o&&(b.style.width=s(o));if((o||f)&&!a._reszEvt)b=function(){h(Ea).bind("resize.DT-"+a.sInstance,ua(function(){X(a)}))},a.oBrowser.bScrollOversize?setTimeout(b,1E3):b(),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,e,d;return function(){var b=this,g=+new Date,j=arguments;e&&g<e+c?(clearTimeout(d),d=setTimeout(function(){e=k;a.apply(b,
+j)},c)):(e=g,a.apply(b,j))}}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",s(a)).appendTo(b||Q.body),e=c[0].offsetWidth;c.remove();return e}function Fb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(h(b).outerWidth()-c)}function Eb(a,b){var c=Gb(a,b);if(0>c)return null;var e=a.aoData[c];return!e.nTr?h("<td/>").html(x(a,c,b,"display"))[0]:e.anCells[b]}function Gb(a,b){for(var c,e=-1,d=-1,f=0,g=a.aoData.length;f<g;f++)c=x(a,f,b,"display")+"",c=c.replace($b,""),
+c.length>e&&(e=c.length,d=f);return d}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Hb(){var a=m.__scrollbarWidth;if(a===k){var b=h("<p/>").css({position:"absolute",top:0,left:0,width:"100%",height:150,padding:0,overflow:"scroll",visibility:"hidden"}).appendTo("body"),a=b[0].offsetWidth-b[0].clientWidth;m.__scrollbarWidth=a;b.remove()}return a}function U(a){var b,c,e=[],d=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var o=[];
+f=function(a){a.length&&!h.isArray(a[0])?o.push(a):o.push.apply(o,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<o.length;a++){i=o[a][0];f=d[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=d[g].sType||"string",o[a]._idx===k&&(o[a]._idx=h.inArray(o[a][1],d[g].asSorting)),e.push({src:i,col:g,dir:o[a][1],index:o[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return e}function lb(a){var b,c,e=[],d=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;
+Ha(a);h=U(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Ib(a,j.col);if("ssp"!=B(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)e[i[b]]=b;g===h.length?i.sort(function(a,b){var c,d,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=0;g<i;g++)if(j=h[g],c=k[j.col],d=m[j.col],c=c<d?-1:c>d?1:0,0!==c)return"asc"===j.dir?c:-c;c=e[a];d=e[b];return c<d?-1:c>d?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,r=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=r[i.col],i=d[i.type+
+"-"+i.dir]||d["string-"+i.dir],c=i(c,g),0!==c)return c;c=e[a];g=e[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,e=a.aoColumns,d=U(a),a=a.oLanguage.oAria,f=0,g=e.length;f<g;f++){c=e[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<d.length&&d[0].col==f?(i.setAttribute("aria-sort","asc"==d[0].dir?"ascending":"descending"),c=j[d[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",
+b)}}function Ua(a,b,c,e){var d=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof d[0]&&(d=a.aaSorting=[d]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,D(d,"0")),-1!==c?(b=g(d[c],!0),null===b&&1===d.length&&(b=0),null===b?d.splice(c,1):(d[c][1]=f[b],d[c]._idx=b)):(d.push([b,f[0],0]),d[d.length-1]._idx=0)):d.length&&d[0][0]==b?(b=g(d[0]),d.length=1,d[0][1]=f[b],d[0]._idx=b):(d.length=0,d.push([b,f[0]]),d[0]._idx=
+0);N(a);"function"==typeof e&&e(a)}function Oa(a,b,c,e){var d=a.aoColumns[c];Va(b,{},function(b){!1!==d.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,e);"ssp"!==B(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,e))})}function xa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,e=U(a),d=a.oFeatures,f,g;if(d.bSort&&d.bSortClasses){d=0;for(f=b.length;d<f;d++)g=b[d].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>d?d+1:3));d=0;for(f=e.length;d<f;d++)g=e[d].src,h(D(a.aoData,"anCells",
+g)).addClass(c+(2>d?d+1:3))}a.aLastSort=e}function Ib(a,b){var c=a.aoColumns[b],e=m.ext.order[c.sSortDataType],d;e&&(d=e.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||e)f=e?d[j]:x(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function ya(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),
+search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,e){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[e])}})};w(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Kb(a){var b,c,e=a.aoColumns;if(a.oFeatures.bStateSave){var d=a.fnStateLoadCallback.call(a.oInstance,a);if(d&&d.time&&(b=w(a,"aoStateLoadParams","stateLoadParams",[a,d]),-1===h.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&d.time<+new Date-1E3*b)&&e.length===
+d.columns.length))){a.oLoadedState=h.extend(!0,{},d);d.start!==k&&(a._iDisplayStart=d.start,a.iInitDisplayStart=d.start);d.length!==k&&(a._iDisplayLength=d.length);d.order!==k&&(a.aaSorting=[],h.each(d.order,function(b,c){a.aaSorting.push(c[0]>=e.length?[0,c[1]]:c)}));d.search!==k&&h.extend(a.oPreviousSearch,Ab(d.search));b=0;for(c=d.columns.length;b<c;b++){var f=d.columns[b];f.visible!==k&&(e[b].bVisible=f.visible);f.search!==k&&h.extend(a.aoPreSearchCols[b],Ab(f.search))}w(a,"aoStateLoaded","stateLoaded",
+[a,d])}}}function za(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function I(a,b,c,e){c="DataTables warning: "+(null!==a?"table id="+a.sTableId+" - ":"")+c;e&&(c+=". For more information about this error, please see http://datatables.net/tn/"+e);if(b)Ea.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,w(a,null,"error",[a,e,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,e,c)}}function E(a,b,c,e){h.isArray(c)?
+h.each(c,function(c,f){h.isArray(f)?E(a,b,f[0],f[1]):E(a,b,f)}):(e===k&&(e=c),b[c]!==k&&(a[e]=b[c]))}function Lb(a,b,c){var e,d;for(d in b)b.hasOwnProperty(d)&&(e=b[d],h.isPlainObject(e)?(h.isPlainObject(a[d])||(a[d]={}),h.extend(!0,a[d],e)):a[d]=c&&"data"!==d&&"aaData"!==d&&h.isArray(e)?e.slice():e);return a}function Va(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function z(a,
+b,c,e){c&&a[b].push({fn:c,sName:e})}function w(a,b,c,e){var d=[];b&&(d=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,e)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,e),d.push(b.result));return d}function Sa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),e=a._iDisplayLength;b>=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,e=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?e[c[b]]||e._:"string"===typeof c?e[c]||e._:e._}function B(a){return a.oFeatures.bServerSide?
+"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Wa(a,b){var c=[],c=Mb.numbers_length,e=Math.floor(c/2);b<=c?c=V(0,b):a<=e?(c=V(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-e?c=V(b-(c-2),b):(c=V(a-e+2,a+e-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Aa(b,a)},"num-fmt":function(b){return Aa(b,a,Xa)},"html-num":function(b){return Aa(b,a,Ba)},"html-num-fmt":function(b){return Aa(b,a,Ba,Xa)}},function(b,
+c){u.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(u.type.search[b+a]=u.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,u,t,r,v,Ya={},Ob=/[\r\n]/g,Ba=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$\u00a3\u20ac\u00a5%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,J=function(a){return!a||!0===a||
+"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var e="string"===typeof a;if(J(a))return!0;b&&e&&(a=Qb(a,b));c&&e&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return J(a)?!0:!(J(a)||"string"===typeof a)?null:Za(a.replace(Ba,""),b,c)?!0:null},D=function(a,b,c){var e=[],d=0,f=a.length;
+if(c!==k)for(;d<f;d++)a[d]&&a[d][b]&&e.push(a[d][b][c]);else for(;d<f;d++)a[d]&&e.push(a[d][b]);return e},ia=function(a,b,c,e){var d=[],f=0,g=b.length;if(e!==k)for(;f<g;f++)a[b[f]][c]&&d.push(a[b[f]][c][e]);else for(;f<g;f++)d.push(a[b[f]][c]);return d},V=function(a,b){var c=[],e;b===k?(b=0,e=a):(e=b,b=a);for(var d=b;d<e;d++)c.push(d);return c},Sb=function(a){for(var b=[],c=0,e=a.length;c<e;c++)a[c]&&b.push(a[c]);return b},Na=function(a){var b=[],c,e,d=a.length,f,g=0;e=0;a:for(;e<d;e++){c=a[e];for(f=
+0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,T=/\(\)$/,wa=h("<div>")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new t(za(this[u.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===
+k||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===k||a?b.draw(!1):(""!==e.sX||""!==e.sY)&&Y(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],h=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,h);(c===k||c)&&e.draw();return h};
+this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,e,d,h){d=this.api(!0);null===b||b===k?d.search(a,c,e,h):d.column(b).search(a,c,e,h);d.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var e=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==e||"th"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};
+this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===
+k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[u.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(d===k||d)&&h.columns.adjust();(e===k||e)&&h.draw();return 0};this.fnVersionCheck=u.fnVersionCheck;var b=this,c=a===k,e=this.length;c&&(a={});this.oApi=this.internal=u.internal;for(var d in m.ext.internal)d&&
+(this[d]=Nb(d));this.each(function(){var d={},d=1<e?Lb(d,a,!0):a,g=0,j,i=this.getAttribute("id"),o=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())I(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{eb(l);fb(l.column);H(l,l,!0);H(l.column,l.column,!0);H(l,h.extend(d,q.data()));var n=m.settings,g=0;for(j=n.length;g<j;g++){var r=n[g];if(r.nTable==this||r.nTHead.parentNode==this||r.nTFoot&&r.nTFoot.parentNode==this){g=d.bRetrieve!==k?d.bRetrieve:l.bRetrieve;if(c||g)return r.oInstance;
+if(d.bDestroy!==k?d.bDestroy:l.bDestroy){r.oInstance.fnDestroy();break}else{I(r,0,"Cannot reinitialise DataTable",3);return}}if(r.sTableId==this.id){n.splice(g,1);break}}if(null===i||""===i)this.id=i="DataTables_Table_"+m.ext._unique++;var p=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:i,sTableId:i});p.nTable=this;p.oApi=b.internal;p.oInit=d;n.push(p);p.oInstance=1===b.length?b:q.dataTable();eb(d);d.oLanguage&&P(d.oLanguage);d.aLengthMenu&&!d.iDisplayLength&&(d.iDisplayLength=
+h.isArray(d.aLengthMenu[0])?d.aLengthMenu[0][0]:d.aLengthMenu[0]);d=Lb(h.extend(!0,{},l),d);E(p.oFeatures,d,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));E(p,d,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback",
+"renderer","searchDelay",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);E(p.oScroll,d,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);E(p.oLanguage,d,"fnInfoCallback");z(p,"aoDrawCallback",d.fnDrawCallback,"user");z(p,"aoServerParams",d.fnServerParams,"user");z(p,"aoStateSaveParams",d.fnStateSaveParams,"user");z(p,"aoStateLoadParams",
+d.fnStateLoadParams,"user");z(p,"aoStateLoaded",d.fnStateLoaded,"user");z(p,"aoRowCallback",d.fnRowCallback,"user");z(p,"aoRowCreatedCallback",d.fnCreatedRow,"user");z(p,"aoHeaderCallback",d.fnHeaderCallback,"user");z(p,"aoFooterCallback",d.fnFooterCallback,"user");z(p,"aoInitComplete",d.fnInitComplete,"user");z(p,"aoPreDrawCallback",d.fnPreDrawCallback,"user");i=p.oClasses;d.bJQueryUI?(h.extend(i,m.ext.oJUIClasses,d.oClasses),d.sDom===l.sDom&&"lfrtip"===l.sDom&&(p.sDom='<"H"lfr>t<"F"ip>'),p.renderer)?
+h.isPlainObject(p.renderer)&&!p.renderer.header&&(p.renderer.header="jqueryui"):p.renderer="jqueryui":h.extend(i,m.ext.classes,d.oClasses);q.addClass(i.sTable);if(""!==p.oScroll.sX||""!==p.oScroll.sY)p.oScroll.iBarWidth=Hb();!0===p.oScroll.sX&&(p.oScroll.sX="100%");p.iInitDisplayStart===k&&(p.iInitDisplayStart=d.iDisplayStart,p._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(p.bDeferLoading=!0,g=h.isArray(d.iDeferLoading),p._iRecordsDisplay=g?d.iDeferLoading[0]:d.iDeferLoading,p._iRecordsTotal=
+g?d.iDeferLoading[1]:d.iDeferLoading);var t=p.oLanguage;h.extend(!0,t,d.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){P(a);H(l.oLanguage,a);h.extend(true,t,a);ga(p)},error:function(){ga(p)}}),o=!0);null===d.asStripeClasses&&(p.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=p.asStripeClasses,s=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return s.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),p.asDestroyStripes=g.slice());
+n=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(p.aoHeader,g[0]),n=qa(p));if(null===d.aoColumns){r=[];g=0;for(j=n.length;g<j;g++)r.push(null)}else r=d.aoColumns;g=0;for(j=r.length;g<j;g++)Fa(p,n?n[g]:null);ib(p,d.aoColumnDefs,r,function(a,b){ka(p,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h.each(na(p,s[0]).cells,function(a,b){var c=p.aoColumns[a];if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");if(d!==null||e!==
+null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ka(p,a)}}})}var v=p.oFeatures;d.bStateSave&&(v.bStateSave=!0,Kb(p,d),z(p,"aoDrawCallback",ya,"state_save"));if(d.aaSorting===k){n=p.aaSorting;g=0;for(j=n.length;g<j;g++)n[g][1]=p.aoColumns[g].asSorting[0]}xa(p);v.bSort&&z(p,"aoDrawCallback",function(){if(p.bSorted){var a=U(p),b={};h.each(a,function(a,c){b[c.src]=c.dir});w(p,null,"order",[p,a,b]);Jb(p)}});z(p,"aoDrawCallback",
+function(){(p.bSorted||B(p)==="ssp"||v.bDeferRender)&&xa(p)},"sc");gb(p);g=q.children("caption").each(function(){this._captionSide=q.css("caption-side")});j=q.children("thead");0===j.length&&(j=h("<thead/>").appendTo(this));p.nTHead=j[0];j=q.children("tbody");0===j.length&&(j=h("<tbody/>").appendTo(this));p.nTBody=j[0];j=q.children("tfoot");if(0===j.length&&0<g.length&&(""!==p.oScroll.sX||""!==p.oScroll.sY))j=h("<tfoot/>").appendTo(this);0===j.length||0===j.children().length?q.addClass(i.sNoFooter):
+0<j.length&&(p.nTFoot=j[0],da(p.aoFooter,p.nTFoot));if(d.aaData)for(g=0;g<d.aaData.length;g++)K(p,d.aaData[g]);else(p.bDeferLoading||"dom"==B(p))&&ma(p,h(p.nTBody).children("tr"));p.aiDisplay=p.aiDisplayMaster.slice();p.bInitialised=!0;!1===o&&ga(p)}});b=null;return this};var Tb=[],y=Array.prototype,cc=function(a){var b,c,e=m.settings,d=h.map(e,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,d),-1!==b?[e[b]]:
+null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,d);return-1!==b?e[b]:null}).toArray()};t=function(a,b){if(!(this instanceof t))return new t(a,b);var c=[],e=function(a){(a=cc(a))&&c.push.apply(c,a)};if(h.isArray(a))for(var d=0,f=a.length;d<f;d++)e(a[d]);else e(a);this.context=Na(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};
+t.extend(this,this,Tb)};m.Api=t;t.prototype={any:function(){return 0!==this.flatten().length},concat:y.concat,context:[],each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];if(y.filter)b=y.filter.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,b)},flatten:function(){var a=[];
+return new t(this.context,a.concat.apply(a,this.toArray()))},join:y.join,indexOf:y.indexOf||function(a,b){for(var c=b||0,e=this.length;c<e;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,e){var d=[],f,g,h,i,o,l=this.context,q,n,m=this.selector;"string"===typeof a&&(e=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var p=new t(l[g]);if("table"===b)f=c.call(p,l[g],g),f!==k&&d.push(f);else if("columns"===b||"rows"===b)f=c.call(p,l[g],this[g],g),f!==k&&d.push(f);else if("column"===b||"column-rows"===
+b||"row"===b||"cell"===b){n=this[g];"column-rows"===b&&(q=Ca(l[g],m.opts));i=0;for(o=n.length;i<o;i++)f=n[i],f="cell"===b?c.call(p,l[g],f.row,f.column,g,i):c.call(p,l[g],f,g,i,q),f!==k&&d.push(f)}}return d.length||e?(a=new t(l,a?d.concat.apply([],d):d),b=a.selector,b.rows=m.rows,b.cols=m.cols,b.opts=m.opts,a):this},lastIndexOf:y.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(y.map)b=y.map.call(this,a,this);else for(var c=
+0,e=this.length;c<e;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:y.pop,push:y.push,reduce:y.reduce||function(a,b){return hb(this,a,b,0,this.length,1)},reduceRight:y.reduceRight||function(a,b){return hb(this,a,b,this.length-1,-1,-1)},reverse:y.reverse,selector:null,shift:y.shift,sort:y.sort,splice:y.splice,toArray:function(){return y.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},
+unique:function(){return new t(this.context,Na(this))},unshift:y.unshift};t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var e,d,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);t.extend(d,d,c.methodExt);return d}};e=0;for(d=c.length;e<d;e++)f=c[e],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=r=function(a,b){if(h.isArray(a))for(var c=0,e=a.length;c<
+e;c++)t.register(a[c],b);else for(var d=a.split("."),f=Tb,g,j,c=0,e=d.length;c<e;c++){g=(j=-1!==d[c].indexOf("()"))?d[c].replace("()",""):d[c];var i;a:{i=0;for(var o=f.length;i<o;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===e-1?i.val=b:f=j?i.methodExt:i.propExt}};t.registerPlural=v=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?h.isArray(a[0])?new t(a.context,
+a[0]):a[0]:k:a})};r("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var e=h.map(c,function(a){return a.nTable}),a=h(e).filter(a).map(function(){var a=h.inArray(this,e);return c[a]}).toArray();b=new b(a)}else b=this;return b});r("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new t(b[0]):a});v("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});v("tables().body()","table().body()",
+function(){return this.iterator("table",function(a){return a.nTBody},1)});v("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});v("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});v("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});r("draw()",function(a){return this.iterator("table",function(b){N(b,
+!1===a)})});r("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});r("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,e=a.fnRecordsDisplay(),d=-1===c;return{page:d?0:Math.floor(b/c),pages:d?1:Math.ceil(e/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:e}});r("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:
+k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){if(c){var e=new t(a);e.one("draw",function(){c(e.ajax.json())})}"ssp"==B(a)?N(a,b):(C(a,!0),ra(a,[],function(c){oa(a);for(var c=sa(a,c),e=0,g=c.length;e<g;e++)K(a,c[e]);N(a,b);C(a,!1)}))};r("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});r("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});r("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c,
+!1===b,a)})});r("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});var $a=function(a,b,c,e,d){var f=[],g,j,i,o,l,q;i=typeof b;if(!b||"string"===i||"function"===i||b.length===k)b=[b];i=0;for(o=b.length;i<o;i++){j=
+b[i]&&b[i].split?b[i].split(","):[b[i]];l=0;for(q=j.length;l<q;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&f.push.apply(f,g)}a=u.selector[a];if(a.length){i=0;for(o=a.length;i<o;i++)f=a[i](e,d,f)}return f},ab=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},bb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},
+Ca=function(a,b){var c,e,d,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;e=b.order;d=b.page;if("ssp"==B(a))return"removed"===j?[]:V(0,c.length);if("current"==d){c=a._iDisplayStart;for(e=a.fnDisplayEnd();c<e;c++)f.push(g[c])}else if("current"==e||"applied"==e)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==e||"original"==e){c=0;for(e=a.aoData.length;c<e;c++)"none"==j?f.push(c):(d=h.inArray(c,g),(-1===d&&"removed"==j||0<=d&&
+"applied"==j)&&f.push(c))}return f};r("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=b;return $a("row",a,function(a){var b=Pb(a);if(b!==null&&!d)return[b];var j=Ca(c,d);if(b!==null&&h.inArray(b,j)!==-1)return[b];if(!a)return j;if(typeof a==="function")return h.map(j,function(b){var d=c.aoData[b];return a(b,d._aData,d.nTr)?b:null});b=Sb(ia(c.aoData,j,"nTr"));return a.nodeName&&h.inArray(a,b)!==-1?[a._DT_RowIndex]:h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},
+c,d)},1);c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});v("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var e=b.aoData[c];return"search"===a?e._aFilterData:e._aSortData},1)});v("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",
+function(b,c){ca(b,c,a)})});v("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});v("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,e){var d=b.aoData;d.splice(c,1);for(var f=0,g=d.length;f<g;f++)null!==d[f].nTr&&(d[f].nTr._DT_RowIndex=f);h.inArray(c,b.aiDisplay);pa(b.aiDisplayMaster,c);pa(b.aiDisplay,c);pa(a[e],c,!1);Sa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,
+f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(K(b,c));return h},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return bb(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length?
+a[0].aoData[this[0]].nTr||null:null});r("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:K(b,a)});return this.row(b[0])});var cb=function(a,b){var c=a.context;c.length&&(c=c[0].aoData[b!==k?b:a[0]],c._details&&(c._details.remove(),c._detailsShow=k,c._details=k))},Vb=function(a,b){var c=a.context;if(c.length&&a.length){var e=c[0].aoData[a[0]];if(e._details){(e._detailsShow=b)?e._details.insertAfter(e.nTr):
+e._details.detach();var d=c[0],f=new t(d),g=d.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){d===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(d===b)for(var c,e=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",e)}),f.on("destroy.dt.DT_details",
+function(a,b){if(d===b)for(var c=0,e=g.length;c<e;c++)g[c]._details&&cb(f,c)}))}}};r("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)cb(this);else if(c.length&&this.length){var e=c[0],c=c[0].aoData[this[0]],d=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?d.push(a):(c=h("<tr><td/></tr>").addClass(b),
+h("td",c).addClass(b).html(a)[0].colSpan=aa(e),d.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(d);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r(["row().child.show()","row().child().show()"],function(){Vb(this,!0);return this});r(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});r(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});r("row().child.isShown()",function(){var a=this.context;return a.length&&
+this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var dc=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,e,d){for(var c=[],e=0,f=d.length;e<f;e++)c.push(x(a,d[e],b));return c};r("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return $a("column",d,function(a){var b=Pb(a);if(a==="")return V(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var d=Ca(c,
+f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,d),i[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[la(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null})}else return h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray()},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});v("columns().header()",
+"column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});v("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});v("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});v("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});v("columns().cache()","column().cache()",
+function(a){return this.iterator("column-rows",function(b,c,e,d,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});v("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,e,d){return ia(a.aoData,d,"anCells",b)},1)});v("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,e){if(a===k)return c.aoColumns[e].bVisible;var d=c.aoColumns,f=d[e],g=c.aoData,j,i,m;if(a!==k&&f.bVisible!==a){if(a){var l=
+h.inArray(!0,D(d,"bVisible"),e+1);j=0;for(i=g.length;j<i;j++)m=g[j].nTr,d=g[j].anCells,m&&m.insertBefore(d[e],d[l]||null)}else h(D(c.aoData,"anCells",e)).detach();f.bVisible=a;ea(c,c.aoHeader);ea(c,c.aoFooter);if(b===k||b)X(c),(c.oScroll.sX||c.oScroll.sY)&&Y(c);w(c,null,"column-visibility",[c,e,a]);ya(c)}})});v("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});r("columns.adjust()",function(){return this.iterator("table",
+function(a){X(a)},1)});r("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return la(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});r("column()",function(a,b){return bb(this.columns(a,b))});r("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=ab(c),f=b.aoData,g=Ca(b,e),i=Sb(ia(f,g,"anCells")),
+j=h([].concat.apply([],i)),l,m=b.aoColumns.length,o,r,t,s,u,v;return $a("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){o=[];r=0;for(t=g.length;r<t;r++){l=g[r];for(s=0;s<m;s++){u={row:l,column:s};if(c){v=b.aoData[l];a(u,x(b,l,s),v.anCells?v.anCells[s]:null)&&o.push(u)}else o.push(u)}}return o}return h.isPlainObject(a)?[a]:j.filter(a).map(function(a,b){l=b.parentNode._DT_RowIndex;return{row:l,column:h.inArray(b,f[l].anCells)}}).toArray()},b,e)});var e=this.columns(b,c),d=this.rows(a,
+c),f,g,j,i,m,l=this.iterator("table",function(a,b){f=[];g=0;for(j=d[b].length;g<j;g++){i=0;for(m=e[b].length;i<m;i++)f.push({row:d[b][g],column:e[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});v("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b].anCells)?a[c]:k},1)});r("cells().data()",function(){return this.iterator("cell",function(a,b,c){return x(a,b,c)},1)});v("cells().cache()","cell().cache()",function(a){a=
+"search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,e){return b.aoData[c][a][e]},1)});v("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,e){return x(b,c,e,a)},1)});v("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});v("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,e){ca(b,c,a,e)})});r("cell()",
+function(a,b,c){return bb(this.cells(a,b,c))});r("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?x(b[0],c[0].row,c[0].column):k;Ia(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});r("order()",function(a,b){var c=this.context;if(a===k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});
+r("order.listener()",function(a,b,c){return this.iterator("table",function(e){Oa(e,a,b,c)})});r(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,e){var d=[];h.each(b[e],function(b,c){d.push([c,a])});c.aaSorting=d})});r("search()",function(a,b,c,e){var d=this.context;return a===k?0!==d.length?d[0].oPreviousSearch.sSearch:k:this.iterator("table",function(d){d.oFeatures.bFilter&&fa(d,h.extend({},d.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:
+b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),1)})});v("columns().search()","column().search()",function(a,b,c,e){return this.iterator("column",function(d,f){var g=d.aoPreSearchCols;if(a===k)return g[f].sSearch;d.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),fa(d,d.oPreviousSearch,1))})});r("state()",function(){return this.context.length?this.context[0].oSavedState:null});r("state.clear()",function(){return this.iterator("table",
+function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});r("state.save()",function(){return this.iterator("table",function(a){ya(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,e,d=0,f=a.length;d<f;d++)if(c=parseInt(b[d],10)||0,e=parseInt(a[d],10)||0,c!==e)return c>e;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,
+function(a,d){var f=d.nScrollHead?h("table",d.nScrollHead)[0]:null,g=d.nScrollFoot?h("table",d.nScrollFoot)[0]:null;if(d.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){return h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable})};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=H;r("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,
+b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var e=h(this.tables().nodes());e[b].apply(e,a);return this})});r("clear()",function(){return this.iterator("table",function(a){oa(a)})});r("settings()",function(){return new t(this.context,this.context)});r("init()",function(){var a=this.context;return a.length?a[0].oInit:null});r("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});r("destroy()",
+function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(d),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),q;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(Ea).unbind(".DT-"+b.sInstance);d!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&d!=j.parentNode&&(i.children("tfoot").detach(),
+i.append(j));i.detach();k.detach();b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(e.sSortable+" "+e.sSortableAsc+" "+e.sSortableDesc+" "+e.sSortableNone);b.bJUI&&(h("th span."+e.sSortIcon+", td span."+e.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+e.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(d,b.nTableReinsertBefore);f.children().detach();f.append(l);i.css("width",b.sDestroyWidth).removeClass(e.sTable);
+(q=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%q])});c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){r(b+"s().every()",function(a){return this.iterator(b,function(e,d,f){a.call((new t(e))[b](d,f))})})});r("i18n()",function(a,b,c){var e=this.context[0],a=R(a)(e.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.7";m.settings=
+[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",
+sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,
+fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,
+fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},
+sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,
+sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};W(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};W(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,
+bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],
+sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,
+bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==B(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==B(this)?1*this._iRecordsDisplay:
+this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e:Math.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};m.ext=u={buttons:{},classes:{},errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},
+header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(u,{afnFiltering:u.search,aTypes:u.type.detect,ofnSearch:u.type.search,oSort:u.type.order,afnSortData:u.order,aoFeatures:u.feature,oApi:u.internal,oStdClasses:u.classes,oPagination:u.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",
+sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",
+sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Da="",Da="",F=Da+"ui-state-default",ja=Da+"css_right ui-icon ui-icon-",Xb=Da+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,
+m.ext.classes,{sPageButton:"fg-button ui-button "+F,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:F+" sorting_asc",sSortDesc:F+" sorting_desc",sSortable:F+" sorting",sSortableAsc:F+" sorting_asc_disabled",sSortableDesc:F+" sorting_desc_disabled",sSortableNone:F+" sorting_disabled",sSortJUIAsc:ja+"triangle-1-n",sSortJUIDesc:ja+"triangle-1-s",sSortJUI:ja+"carat-2-n-s",
+sSortJUIAscAllowed:ja+"carat-1-n",sSortJUIDescAllowed:ja+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+F,sScrollFoot:"dataTables_scrollFoot "+F,sHeaderTH:F,sFooterTH:F,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,b){return["previous",
+Wa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Wa(a,b),"next","last"]},_numbers:Wa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i,k,l=0,m=function(b,e){var n,r,t,s,u=function(b){Ta(a,b.data.action,true)};n=0;for(r=e.length;n<r;n++){s=e[n];if(h.isArray(s)){t=h("<"+(s.DT_el||"div")+"/>").appendTo(b);m(t,s)}else{k=i="";switch(s){case "ellipsis":b.append('<span class="ellipsis">…</span>');break;
+case "first":i=j.sFirst;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "previous":i=j.sPrevious;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "next":i=j.sNext;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;case "last":i=j.sLast;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;default:i=s+1;k=d===s?g.sPageButtonActive:""}if(i){t=h("<a>",{"class":g.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(i).appendTo(b);
+Va(t,{action:s},u);l++}}}},n;try{n=h(Q.activeElement).data("dt-idx")}catch(r){}m(h(b).empty(),e);n&&h(b).find("[data-dt-idx="+n+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||J(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;
+return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return J(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ba,""):""},string:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Aa=function(a,b,c,e){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),
+e&&(a=a.replace(e,"")));return 1*a};h.extend(u.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return J(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return J(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});db("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,e){h(a.nTable).on("order.dt.DT",function(d,
+f,g,h){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+" "+e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){h("<div/>").addClass(e.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(e.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(d,f,g,h){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass);
+b.find("span."+e.sSortIcon).removeClass(e.sSortJUIAsc+" "+e.sSortJUIDesc+" "+e.sSortJUI+" "+e.sSortJUIAscAllowed+" "+e.sSortJUIDescAllowed).addClass(h[d]=="asc"?e.sSortJUIAsc:h[d]=="desc"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});m.render={number:function(a,b,c,e){return{display:function(d){if("number"!==typeof d&&"string"!==typeof d)return d;var f=0>d?"-":"",d=Math.abs(parseFloat(d)),g=parseInt(d,10),d=c?b+(d-g).toFixed(c).substring(2):"";return f+(e||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
+a)+d}}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub,_fnAjaxDataSrc:sa,_fnAddColumn:Fa,_fnColumnOptions:ka,_fnAdjustColumnSizing:X,_fnVisibleToColumnIndex:la,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:Z,_fnColumnTypes:Ha,_fnApplyColumnDefs:ib,_fnHungarianMap:W,_fnCamelToHungarian:H,_fnLanguageCompat:P,_fnBrowserDetect:gb,_fnAddData:K,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:
+null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:x,_fnSetCellData:Ia,_fnSplitObjNotation:Ka,_fnGetObjectDataFn:R,_fnSetObjectDataFn:S,_fnGetDataMaster:La,_fnClearTable:oa,_fnDeleteIndex:pa,_fnInvalidate:ca,_fnGetRowElements:na,_fnCreateTr:Ja,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:M,_fnReDraw:N,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Qa,
+_fnEscapeRegex:va,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:Y,_fnApplyToChildren:G,_fnCalculateColumnWidths:Ga,_fnThrottle:ua,_fnConvertToWidth:Db,_fnScrollingWidthAdjust:Fb,_fnGetWidestNode:Eb,_fnGetMaxLenString:Gb,_fnStringToCss:s,_fnScrollBarWidth:Hb,_fnSortFlatten:U,
+_fnSort:lb,_fnSortAria:Jb,_fnSortListener:Ua,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:I,_fnMap:E,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:w,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:B,_fnRowAttributes:Ma,_fnCalculateEnd:function(){}});h.fn.dataTable=m;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=
+b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],P):"object"===typeof exports?module.exports=P(require("jquery")):jQuery&&!jQuery.fn.dataTable&&P(jQuery)})(window,document);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.js
new file mode 100644
index 0000000..fdd413a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/media/js/jquery.js
@@ -0,0 +1,5 @@
+/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;
+
+return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){
+return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/Readme.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/Readme.md
new file mode 100644
index 0000000..dd952d8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables/Readme.md
@@ -0,0 +1,53 @@
+# DataTables plug-in for jQuery
+
+DataTables is a table enhancing plug-in for the [jQuery](//jquery.com) Javascript library, adding sorting, paging and filtering abilities to plain HTML tables with minimal effort. The stated goal of DataTables is:
+
+> To enhance the accessibility of data in HTML tables.
+
+To meet this goal, DataTables is developed with two distinct groups of users in mind:
+
+* You the developers using DataTables. For developers DataTables provides a wide array of options for how data should be obtained, displayed and acted upon, along with an extensive API for accessing and manipulating the table.
+
+* End users. For those using the interface DataTables presents, actions to get the most from the information contained in tables, such as sorting and filtering, along with paging and scrolling of the data in table, are easy to use, intuitive and fast.
+
+
+## Installation
+
+In most cases, to use DataTables all you need to do is include jQuery, the DataTables Javascript and DataTables CSS files in your HTML page. See the [DataTables manual](http://datatables.net/manual/installation#Including-Javascript-/-CSS) for details on how to do this using the latest version of DataTables.
+
+
+## Usage
+
+In its simplest case, DataTables can be initialised with a single line of Javascript:
+
+```js
+$('table').dataTable();
+```
+
+where the jQuery selector is used to obtain a reference to the table you want to enhance with DataTables. Optional configuration parameters can be passed in to DataTables to have it perform certain actions by using a configuration object as the parameter passed in to the DataTables constructor. For example:
+
+```js
+$('table').dataTable( {
+ paginate: false,
+ scrollY: 300
+} );
+```
+
+will disable paging and enable scrolling.
+
+A full list of the options available for DataTables are available in the [documentation](//datatables.net).
+
+
+## Documentation
+
+Full documentation of the DataTables options, API and pug-in interface are available on the [DataTables web-site](//datatables.net). The site also contains information on the wide variety of plug-ins that are available for DataTables, which can be used to enhance and customise your table even further.
+
+
+## Support
+
+Support for DataTables is available through the [DataTables forums](//datatables.net/forums) and [commercial support options](//datatables.net/support) are available.
+
+
+## License
+
+DataTables is release under the [MIT license](//datatables.net/license). You are free to use, modify and distribute this software, as long as the copyright header is left intact (specifically the comment block which starts with `/*!`.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/bower.json
new file mode 100644
index 0000000..871cd78
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/bower.json
@@ -0,0 +1,12 @@
+{
+ "name": "datatables-colreorder",
+ "version": "1.1.3",
+ "main": [
+ "js/dataTables.colReorder.js",
+ "css/dataTables.colReorder.css"
+ ],
+ "dependencies": {
+ "jquery": ">=1.7.0",
+ "datatables": ">=1.9.3"
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/css/dataTables.colReorder.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/css/dataTables.colReorder.css
new file mode 100644
index 0000000..bdd6aa0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/css/dataTables.colReorder.css
@@ -0,0 +1,14 @@
+/*
+ * Namespace DTCR - "DataTables ColReorder" plug-in
+ */
+
+table.DTCR_clonedTable {
+ background-color: rgba(255, 255, 255, 0.7);
+ z-index: 202;
+}
+
+div.DTCR_pointer {
+ width: 1px;
+ background-color: #0259C4;
+ z-index: 201;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/alt_insert.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/alt_insert.xml
new file mode 100644
index 0000000..2f89989
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/alt_insert.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="3">
+
+<css lib="datatables colreorder">
+div.DTCR_pointer {
+ margin-top: -15px;
+ margin-left: -9px;
+ width: 18px;
+ background: url('../images/insert.png') no-repeat top left;
+}
+</css>
+<js lib="jquery datatables colreorder">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ dom: 'Rlfrtip'
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColReorder">Alternative insert styling</title>
+
+<info><![CDATA[
+
+Using CSS it is easy to modify the insert bar to suit your web-site. This example shows how an arrow can be used to show the insert point rather than the straight bar used in the other examples by simply adding an extra CSS rule to include the image.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/col_filter.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/col_filter.xml
new file mode 100644
index 0000000..ba2f6c0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/col_filter.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="13">
+
+<css lib="datatables colreorder" />
+<js lib="jquery datatables colreorder">
+<![CDATA[
+$(document).ready(function() {
+ // Setup - add a text input to each footer cell
+ $('#example tfoot th').each( function () {
+ var title = $('#example thead th').eq( $(this).index() ).text();
+ $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
+ } );
+
+ // DataTable
+ var table = $('#example').DataTable( {
+ dom: 'Rlfrtip'
+ } );
+
+ // Apply the filter
+ $("#example tfoot input").on( 'keyup change', function () {
+ table
+ .column( $(this).parent().index()+':visible' )
+ .search( this.value )
+ .draw();
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColReorder">Individual column filtering</title>
+
+<info><![CDATA[
+
+This example of how to use ColReorder shows how it can with with DataTables' ability to do individual column filtering. The basic example is exactly the same as the DataTables column filtering example, but with ColReorder also added to the table (through the `R` option for `dt-init dom`).
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/colvis.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/colvis.xml
new file mode 100644
index 0000000..7b3e0a2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/colvis.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="9">
+
+<css lib="datatables colreorder colvis" />
+<js lib="jquery datatables colreorder colvis">
+<![CDATA[
+$(document).ready(function() {
+ var table = $('#example').DataTable( {
+ dom: 'RC<"clear">lfrtip',
+ columnDefs: [
+ { visible: false, targets: 1 }
+ ]
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColReorder">ColVis integration</title>
+
+<info>< for DataTables by updating the order of the list of columns whenever a reorder is done. This is shown in the example below, where one column has been initially hidden to add extra emphasis to ColVis.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/fixedcolumns.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/fixedcolumns.xml
new file mode 100644
index 0000000..3885dff
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/fixedcolumns.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html-wide" table-class="display nowrap" order="10">
+
+<css lib="datatables colreorder fixedcolumns" />
+<js lib="jquery datatables colreorder fixedcolumns">
+<![CDATA[
+
+$(document).ready(function() {
+ window.table = $('#example').DataTable( {
+ dom: 'Rlfrtip',
+ scrollX: true,
+ scrollCollapse: true,
+ columnDefs: [
+ { orderable: false, targets: 0 },
+ { orderable: false, targets: -1 }
+ ],
+ ordering: [[ 1, 'asc' ]],
+ colReorder: {
+ fixedColumnsLeft: 1,
+ fixedColumnsRight: 1
+ }
+ } );
+
+ window.fc = new $.fn.dataTable.FixedColumns( table, {
+ leftColumns: 1,
+ rightColumns: 1
+ } );
+} );
+
+]]>
+</js>
+
+<title lib="ColReorder">FixedColumns integration</title>
+
+<info><.
+
+ColReorder provides the `fixedColumnsLeft` and `fixedColumnsRight` options which allows you disallow reordering of the fixed columns (which is required).
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/fixedheader.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/fixedheader.xml
new file mode 100644
index 0000000..f41b728
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/fixedheader.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="11">
+
+<css lib="datatables colreorder fixedheader" />
+<js lib="jquery datatables colreorder fixedheader">
+<![CDATA[
+
+$(document).ready(function() {
+ var table = $('#example').dataTable( {
+ dom: 'Rlfrtip'
+ } );
+
+ new $.fn.dataTable.fixedHeader( table );
+} );
+
+]]>
+</js>
+
+<title lib="ColReorder">FixedHeader integration</title>
+
+<info><![CDATA[
+
+FixedHeader is a particularly useful plug-in for DataTables, allowing a table header to float at the top of a scrolling window. ColReorder works well with FixedHeader, allowing you to reorder columns even using the floating header, as shown in the example below.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/index.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/index.xml
new file mode 100755
index 0000000..3ed89ef
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/index.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="0">
+
+<title lib="ColReorder">ColReorder examples</title>
+
+<js lib="jquery" />
+<info><![CDATA[
+
+ColReorder adds the ability for the end user to click and drag column headers to reorder a table as they see fit, to DataTables. Key features include:
+
+* Very easy integration with DataTables
+* Tight integration with all other DataTables plug-ins
+* The ability to exclude the first (or more) column from being movable
+* Predefine a column order
+* Save staving integration with DataTables
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/jqueryui.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/jqueryui.xml
new file mode 100644
index 0000000..e387379
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/jqueryui.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="12">
+
+<css lib="jqueryui datatables-jqueryui colreorder" />
+<js lib="jquery datatables datatables-jqueryui colreorder">
+<![CDATA[
+
+$(document).ready(function() {
+ var table = $('#example').dataTable();
+
+ new $.fn.dataTable.ColReorder( table );
+} );
+
+]]>
+</js>
+
+<title lib="ColReorder">jQuery UI styling</title>
+
+<info><![CDATA[
+
+This example shows how the jQuery UI ThemeRoller option in DataTables can be used with ColReorder.
+
+The important thing to note here is that it is easier to use `new $.fn.dataTable.ColReorder()` to add ColReorder to the table rather than `dt-init dom` as the jQuery UI integration uses a complex expression for `dt-init dom`.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/new_init.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/new_init.xml
new file mode 100644
index 0000000..f85af5c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/new_init.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="2">
+
+<css lib="datatables colreorder" />
+<js lib="jquery datatables colreorder">
+<![CDATA[
+$(document).ready(function() {
+ var table = $('#example').DataTable();
+
+ new $.fn.dataTable.ColReorder( table );
+} );
+]]>
+</js>
+
+<title lib="ColReorder">Initialisation using `new`</title>
+
+<info><![CDATA[
+
+As well as providing the option to be initialised through the `R` option of `dt-init dom`, ColReorder can also be added to a DataTable using direct initialisation - `new $.fn.dataTable.ColReorder();` as shown in this example.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/predefined.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/predefined.xml
new file mode 100644
index 0000000..bc621cc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/predefined.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="7">
+
+<css lib="datatables colreorder" />
+<js lib="jquery datatables colreorder">
+<![CDATA[
+
+$(document).ready(function() {
+ $('#example').dataTable( {
+ dom: 'Rlfrtip',
+ colReorder: {
+ order: [ 4, 3, 2, 1, 0, 5 ]
+ }
+ } );
+} );
+
+]]>
+</js>
+
+<title lib="ColReorder">Predefined column ordering</title>
+
+<info><.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/realtime.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/realtime.xml
new file mode 100644
index 0000000..f54e0b1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/realtime.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="4">
+
+<css lib="datatables colreorder" />
+<js lib="jquery datatables colreorder">
+<![CDATA[
+
+$(document).ready(function() {
+ $('#example').dataTable( {
+ dom: 'Rlfrtip',
+ colReorder: {
+ realtime: true
+ }
+ } );
+} );
+
+]]>
+</js>
+
+<title lib="ColReorder">Realtime updating</title>
+
+<info><.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/reset.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/reset.xml
new file mode 100644
index 0000000..d426242
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/reset.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="8">
+
+<css lib="datatables colreorder" />
+<js lib="jquery datatables colreorder">
+<![CDATA[
+
+$(document).ready(function() {
+ var table = $('#example').DataTable( {
+ dom: 'Rlfrtip',
+ colReorder: {
+ order: [ 4, 3, 2, 1, 0 ]
+ }
+ } );
+
+ $('#reset').click( function (e) {
+ e.preventDefault();
+
+ table.colReorder.reset();
+ } );
+} );
+
+]]>
+</js>
+
+<title lib="ColReorder">Reset ordering API</title>
+
+<info><.
+
+]]></info>
+
+<demo-html>
+ <button id="reset">Reset to original HTML order</button>
+ <br/><br/>
+</demo-html>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/scrolling.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/scrolling.xml
new file mode 100644
index 0000000..07fac70
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/scrolling.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="6">
+
+<css lib="datatables colreorder" />
+<js lib="jquery datatables colreorder">
+<![CDATA[
+
+$(document).ready(function() {
+ $('#example').dataTable( {
+ dom: 'Rlfrtip',
+ scrollY: '200px',
+ paging: false
+ } );
+} );
+
+]]>
+</js>
+
+<title lib="ColReorder">Scrolling table</title>
+
+<info><![CDATA[
+
+This is a simple example to show ColReorder working with DataTables scrolling (`dt-init scrollY` and `dt-init scrollX`).
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/server_side.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/server_side.xml
new file mode 100644
index 0000000..5595a2f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/server_side.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="ajax" order="14">
+
+<css lib="datatables colreorder" />
+<js lib="jquery datatables colreorder">
+<![CDATA[
+
+$(document).ready(function() {
+ $('#example').dataTable( {
+ dom: 'Rlfrtip',
+ processing: true,
+ serverSide: true,
+ ajax: "../../../examples/server_side/scripts/objects.php",
+ columns: [
+ { data: "first_name" },
+ { data: "last_name" },
+ { data: "position" },
+ { data: "office" },
+ { data: "start_date" },
+ { data: "salary" }
+ ]
+ } );
+} );
+
+]]>
+</js>
+
+<title lib="ColReorder">Server-side processing</title>
+
+<info><![CDATA[
+
+Server-side processing can be exceptionally useful in DataTables when dealing with massive data sets, and ColReorder works with this as would be expected.
+
+It is recommend that you use object based data with server-side processing and ColReorder, as this provides easily understandable mapping between the the columns and the data relation on the server, otherwise you need to work out array indexes on each call!
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/simple.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/simple.xml
new file mode 100755
index 0000000..8b1557c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/simple.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="1">
+
+<css lib="datatables colreorder" />
+<js lib="jquery datatables colreorder">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ dom: 'Rlfrtip'
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColReorder">Basic initialisation</title>
+
+<info><![CDATA[
+
+This example shows the basic use case of the ColReorder plug-in. With ColReorder enabled for a table, the user has the ability to click and drag any table header cell, and drop it where they wish the column to be inserted. The insert point is shown visually, and the column reordering is done as soon as the mouse button is released.
+
+ColReorder is added to a DataTable through the `R` character that it adds to DataTables feature plug-ins. This means that you simply add the character `R` to the `dt-init dom` parameter for your table to add ColReorder - as shown in the example below.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/state_save.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/state_save.xml
new file mode 100644
index 0000000..63c590f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/examples/state_save.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="5">
+
+<css lib="datatables colreorder" />
+<js lib="jquery datatables colreorder">
+<![CDATA[
+
+$(document).ready(function() {
+ $('#example').dataTable( {
+ dom: 'Rlfrtip',
+ stateSave: true
+ } );
+} );
+
+]]>
+</js>
+
+<title lib="ColReorder">State saving</title>
+
+<info><![CDATA[
+
+A useful interaction pattern to use in DataTables is state saving, so when the end user reloads or revisits a page its previous state is retained. ColReorder works seamlessly with state saving in DataTables (`dt-init stateSave`), remembering and restoring the column positions, as well as everything else such as sorting and filtering.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/images/insert.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/images/insert.png
new file mode 100644
index 0000000..15d5522
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/images/insert.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/js/dataTables.colReorder.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/js/dataTables.colReorder.js
new file mode 100755
index 0000000..c3b2f1e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/js/dataTables.colReorder.js
@@ -0,0 +1,1372 @@
+/*! ColReorder 1.1.3
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary ColReorder
+ * @description Provide the ability to reorder columns in a DataTable
+ * @version 1.1.3
+ * @file dataTables.colReorder.js
+ * @author SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact www.sprymedia.co.uk/contact
+ * @copyright Copyright 2010-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ * MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function(window, document, undefined) {
+
+
+/**
+ * Switch the key value pairing of an index array to be value key (i.e. the old value is now the
+ * key). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].
+ * @method fnInvertKeyValues
+ * @param array aIn Array to switch around
+ * @returns array
+ */
+function fnInvertKeyValues( aIn )
+{
+ var aRet=[];
+ for ( var i=0, iLen=aIn.length ; i<iLen ; i++ )
+ {
+ aRet[ aIn[i] ] = i;
+ }
+ return aRet;
+}
+
+
+/**
+ * Modify an array by switching the position of two elements
+ * @method fnArraySwitch
+ * @param array aArray Array to consider, will be modified by reference (i.e. no return)
+ * @param int iFrom From point
+ * @param int iTo Insert point
+ * @returns void
+ */
+function fnArraySwitch( aArray, iFrom, iTo )
+{
+ var mStore = aArray.splice( iFrom, 1 )[0];
+ aArray.splice( iTo, 0, mStore );
+}
+
+
+/**
+ * Switch the positions of nodes in a parent node (note this is specifically designed for
+ * table rows). Note this function considers all element nodes under the parent!
+ * @method fnDomSwitch
+ * @param string sTag Tag to consider
+ * @param int iFrom Element to move
+ * @param int Point to element the element to (before this point), can be null for append
+ * @returns void
+ */
+function fnDomSwitch( nParent, iFrom, iTo )
+{
+ var anTags = [];
+ for ( var i=0, iLen=nParent.childNodes.length ; i<iLen ; i++ )
+ {
+ if ( nParent.childNodes[i].nodeType == 1 )
+ {
+ anTags.push( nParent.childNodes[i] );
+ }
+ }
+ var nStore = anTags[ iFrom ];
+
+ if ( iTo !== null )
+ {
+ nParent.insertBefore( nStore, anTags[iTo] );
+ }
+ else
+ {
+ nParent.appendChild( nStore );
+ }
+}
+
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+/**
+ * Plug-in for DataTables which will reorder the internal column structure by taking the column
+ * from one position (iFrom) and insert it into a given point (iTo).
+ * @method $.fn.dataTableExt.oApi.fnColReorder
+ * @param object oSettings DataTables settings object - automatically added by DataTables!
+ * @param int iFrom Take the column to be repositioned from this point
+ * @param int iTo and insert it into this point
+ * @returns void
+ */
+$.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
+{
+ var v110 = $.fn.dataTable.Api ? true : false;
+ var i, iLen, j, jLen, iCols=oSettings.aoColumns.length, nTrs, oCol;
+ var attrMap = function ( obj, prop, mapping ) {
+ if ( ! obj[ prop ] ) {
+ return;
+ }
+
+ var a = obj[ prop ].split('.');
+ var num = a.shift();
+
+ if ( isNaN( num*1 ) ) {
+ return;
+ }
+
+ obj[ prop ] = mapping[ num*1 ]+'.'+a.join('.');
+ };
+
+ /* Sanity check in the input */
+ if ( iFrom == iTo )
+ {
+ /* Pointless reorder */
+ return;
+ }
+
+ if ( iFrom < 0 || iFrom >= iCols )
+ {
+ this.oApi._fnLog( oSettings, 1, "ColReorder 'from' index is out of bounds: "+iFrom );
+ return;
+ }
+
+ if ( iTo < 0 || iTo >= iCols )
+ {
+ this.oApi._fnLog( oSettings, 1, "ColReorder 'to' index is out of bounds: "+iTo );
+ return;
+ }
+
+ /*
+ * Calculate the new column array index, so we have a mapping between the old and new
+ */
+ var aiMapping = [];
+ for ( i=0, iLen=iCols ; i<iLen ; i++ )
+ {
+ aiMapping[i] = i;
+ }
+ fnArraySwitch( aiMapping, iFrom, iTo );
+ var aiInvertMapping = fnInvertKeyValues( aiMapping );
+
+
+ /*
+ * Convert all internal indexing to the new column order indexes
+ */
+ /* Sorting */
+ for ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )
+ {
+ oSettings.aaSorting[i][0] = aiInvertMapping[ oSettings.aaSorting[i][0] ];
+ }
+
+ /* Fixed sorting */
+ if ( oSettings.aaSortingFixed !== null )
+ {
+ for ( i=0, iLen=oSettings.aaSortingFixed.length ; i<iLen ; i++ )
+ {
+ oSettings.aaSortingFixed[i][0] = aiInvertMapping[ oSettings.aaSortingFixed[i][0] ];
+ }
+ }
+
+ /* Data column sorting (the column which the sort for a given column should take place on) */
+ for ( i=0, iLen=iCols ; i<iLen ; i++ )
+ {
+ oCol = oSettings.aoColumns[i];
+ for ( j=0, jLen=oCol.aDataSort.length ; j<jLen ; j++ )
+ {
+ oCol.aDataSort[j] = aiInvertMapping[ oCol.aDataSort[j] ];
+ }
+
+ // Update the column indexes
+ if ( v110 ) {
+ oCol.idx = aiInvertMapping[ oCol.idx ];
+ }
+ }
+
+ if ( v110 ) {
+ // Update 1.10 optimised sort class removal variable
+ $.each( oSettings.aLastSort, function (i, val) {
+ oSettings.aLastSort[i].src = aiInvertMapping[ val.src ];
+ } );
+ }
+
+ /* Update the Get and Set functions for each column */
+ for ( i=0, iLen=iCols ; i<iLen ; i++ )
+ {
+ oCol = oSettings.aoColumns[i];
+
+ if ( typeof oCol.mData == 'number' ) {
+ oCol.mData = aiInvertMapping[ oCol.mData ];
+
+ // regenerate the get / set functions
+ oSettings.oApi._fnColumnOptions( oSettings, i, {} );
+ }
+ else if ( $.isPlainObject( oCol.mData ) ) {
+ // HTML5 data sourced
+ attrMap( oCol.mData, '_', aiInvertMapping );
+ attrMap( oCol.mData, 'filter', aiInvertMapping );
+ attrMap( oCol.mData, 'sort', aiInvertMapping );
+ attrMap( oCol.mData, 'type', aiInvertMapping );
+
+ // regenerate the get / set functions
+ oSettings.oApi._fnColumnOptions( oSettings, i, {} );
+ }
+ }
+
+
+ /*
+ * Move the DOM elements
+ */
+ if ( oSettings.aoColumns[iFrom].bVisible )
+ {
+ /* Calculate the current visible index and the point to insert the node before. The insert
+ * before needs to take into account that there might not be an element to insert before,
+ * in which case it will be null, and an appendChild should be used
+ */
+ var iVisibleIndex = this.oApi._fnColumnIndexToVisible( oSettings, iFrom );
+ var iInsertBeforeIndex = null;
+
+ i = iTo < iFrom ? iTo : iTo + 1;
+ while ( iInsertBeforeIndex === null && i < iCols )
+ {
+ iInsertBeforeIndex = this.oApi._fnColumnIndexToVisible( oSettings, i );
+ i++;
+ }
+
+ /* Header */
+ nTrs = oSettings.nTHead.getElementsByTagName('tr');
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+ {
+ fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );
+ }
+
+ /* Footer */
+ if ( oSettings.nTFoot !== null )
+ {
+ nTrs = oSettings.nTFoot.getElementsByTagName('tr');
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+ {
+ fnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );
+ }
+ }
+
+ /* Body */
+ for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+ {
+ if ( oSettings.aoData[i].nTr !== null )
+ {
+ fnDomSwitch( oSettings.aoData[i].nTr, iVisibleIndex, iInsertBeforeIndex );
+ }
+ }
+ }
+
+ /*
+ * Move the internal array elements
+ */
+ /* Columns */
+ fnArraySwitch( oSettings.aoColumns, iFrom, iTo );
+
+ /* Search columns */
+ fnArraySwitch( oSettings.aoPreSearchCols, iFrom, iTo );
+
+ /* Array array - internal data anodes cache */
+ for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+ {
+ var data = oSettings.aoData[i];
+
+ if ( v110 ) {
+ // DataTables 1.10+
+ if ( data.anCells ) {
+ fnArraySwitch( data.anCells, iFrom, iTo );
+ }
+
+ // For DOM sourced data, the invalidate will reread the cell into
+ // the data array, but for data sources as an array, they need to
+ // be flipped
+ if ( data.src !== 'dom' && $.isArray( data._aData ) ) {
+ fnArraySwitch( data._aData, iFrom, iTo );
+ }
+ }
+ else {
+ // DataTables 1.9-
+ if ( $.isArray( data._aData ) ) {
+ fnArraySwitch( data._aData, iFrom, iTo );
+ }
+ fnArraySwitch( data._anHidden, iFrom, iTo );
+ }
+ }
+
+ /* Reposition the header elements in the header layout array */
+ for ( i=0, iLen=oSettings.aoHeader.length ; i<iLen ; i++ )
+ {
+ fnArraySwitch( oSettings.aoHeader[i], iFrom, iTo );
+ }
+
+ if ( oSettings.aoFooter !== null )
+ {
+ for ( i=0, iLen=oSettings.aoFooter.length ; i<iLen ; i++ )
+ {
+ fnArraySwitch( oSettings.aoFooter[i], iFrom, iTo );
+ }
+ }
+
+ // In 1.10 we need to invalidate row cached data for sorting, filtering etc
+ if ( v110 ) {
+ var api = new $.fn.dataTable.Api( oSettings );
+ api.rows().invalidate();
+ }
+
+ /*
+ * Update DataTables' event handlers
+ */
+
+ /* Sort listener */
+ for ( i=0, iLen=iCols ; i<iLen ; i++ )
+ {
+ $(oSettings.aoColumns[i].nTh).off('click.DT');
+ this.oApi._fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
+ }
+
+
+ /* Fire an event so other plug-ins can update */
+ $(oSettings.oInstance).trigger( 'column-reorder', [ oSettings, {
+ "iFrom": iFrom,
+ "iTo": iTo,
+ "aiInvertMapping": aiInvertMapping
+ } ] );
+};
+
+
+/**
+ * ColReorder provides column visibility control for DataTables
+ * @class ColReorder
+ * @constructor
+ * @param {object} dt DataTables settings object
+ * @param {object} opts ColReorder options
+ */
+var ColReorder = function( dt, opts )
+{
+ var oDTSettings;
+
+ if ( $.fn.dataTable.Api ) {
+ oDTSettings = new $.fn.dataTable.Api( dt ).settings()[0];
+ }
+ // 1.9 compatibility
+ else if ( dt.fnSettings ) {
+ // DataTables object, convert to the settings object
+ oDTSettings = dt.fnSettings();
+ }
+ else if ( typeof dt === 'string' ) {
+ // jQuery selector
+ if ( $.fn.dataTable.fnIsDataTable( $(dt)[0] ) ) {
+ oDTSettings = $(dt).eq(0).dataTable().fnSettings();
+ }
+ }
+ else if ( dt.nodeName && dt.nodeName.toLowerCase() === 'table' ) {
+ // Table node
+ if ( $.fn.dataTable.fnIsDataTable( dt.nodeName ) ) {
+ oDTSettings = $(dt.nodeName).dataTable().fnSettings();
+ }
+ }
+ else if ( dt instanceof jQuery ) {
+ // jQuery object
+ if ( $.fn.dataTable.fnIsDataTable( dt[0] ) ) {
+ oDTSettings = dt.eq(0).dataTable().fnSettings();
+ }
+ }
+ else {
+ // DataTables settings object
+ oDTSettings = dt;
+ }
+
+ // Ensure that we can't initialise on the same table twice
+ if ( oDTSettings._colReorder ) {
+ throw "ColReorder already initialised on table #"+oDTSettings.nTable.id;
+ }
+
+ // Convert from camelCase to Hungarian, just as DataTables does
+ var camelToHungarian = $.fn.dataTable.camelToHungarian;
+ if ( camelToHungarian ) {
+ camelToHungarian( ColReorder.defaults, ColReorder.defaults, true );
+ camelToHungarian( ColReorder.defaults, opts || {} );
+ }
+
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Public class variables
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+ /**
+ * @namespace Settings object which contains customisable information for ColReorder instance
+ */
+ this.s = {
+ /**
+ * DataTables settings object
+ * @property dt
+ * @type Object
+ * @default null
+ */
+ "dt": null,
+
+ /**
+ * Initialisation object used for this instance
+ * @property init
+ * @type object
+ * @default {}
+ */
+ "init": $.extend( true, {}, ColReorder.defaults, opts ),
+
+ /**
+ * Number of columns to fix (not allow to be reordered)
+ * @property fixed
+ * @type int
+ * @default 0
+ */
+ "fixed": 0,
+
+ /**
+ * Number of columns to fix counting from right (not allow to be reordered)
+ * @property fixedRight
+ * @type int
+ * @default 0
+ */
+ "fixedRight": 0,
+
+ /**
+ * Callback function for once the reorder has been done
+ * @property reorderCallback
+ * @type function
+ * @default null
+ */
+ "reorderCallback": null,
+
+ /**
+ * @namespace Information used for the mouse drag
+ */
+ "mouse": {
+ "startX": -1,
+ "startY": -1,
+ "offsetX": -1,
+ "offsetY": -1,
+ "target": -1,
+ "targetIndex": -1,
+ "fromIndex": -1
+ },
+
+ /**
+ * Information which is used for positioning the insert cusor and knowing where to do the
+ * insert. Array of objects with the properties:
+ * x: x-axis position
+ * to: insert point
+ * @property aoTargets
+ * @type array
+ * @default []
+ */
+ "aoTargets": []
+ };
+
+
+ /**
+ * @namespace Common and useful DOM elements for the class instance
+ */
+ this.dom = {
+ /**
+ * Dragging element (the one the mouse is moving)
+ * @property drag
+ * @type element
+ * @default null
+ */
+ "drag": null,
+
+ /**
+ * The insert cursor
+ * @property pointer
+ * @type element
+ * @default null
+ */
+ "pointer": null
+ };
+
+
+ /* Constructor logic */
+ this.s.dt = oDTSettings;
+ this.s.dt._colReorder = this;
+ this._fnConstruct();
+
+ /* Add destroy callback */
+ oDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', $.proxy(this._fnDestroy, this), 'ColReorder');
+
+ return this;
+};
+
+
+
+ColReorder.prototype = {
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Public methods
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+ /**
+ * Reset the column ordering to the original ordering that was detected on
+ * start up.
+ * @return {this} Returns `this` for chaining.
+ *
+ * @example
+ * // DataTables initialisation with ColReorder
+ * var table = $('#example').dataTable( {
+ * "sDom": 'Rlfrtip'
+ * } );
+ *
+ * // Add click event to a button to reset the ordering
+ * $('#resetOrdering').click( function (e) {
+ * e.preventDefault();
+ * $.fn.dataTable.ColReorder( table ).fnReset();
+ * } );
+ */
+ "fnReset": function ()
+ {
+ var a = [];
+ for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
+ {
+ a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );
+ }
+
+ this._fnOrderColumns( a );
+
+ return this;
+ },
+
+ /**
+ * `Deprecated` - Get the current order of the columns, as an array.
+ * @return {array} Array of column identifiers
+ * @deprecated `fnOrder` should be used in preference to this method.
+ * `fnOrder` acts as a getter/setter.
+ */
+ "fnGetCurrentOrder": function ()
+ {
+ return this.fnOrder();
+ },
+
+ /**
+ * Get the current order of the columns, as an array. Note that the values
+ * given in the array are unique identifiers for each column. Currently
+ * these are the original ordering of the columns that was detected on
+ * start up, but this could potentially change in future.
+ * @return {array} Array of column identifiers
+ *
+ * @example
+ * // Get column ordering for the table
+ * var order = $.fn.dataTable.ColReorder( dataTable ).fnOrder();
+ *//**
+ * Set the order of the columns, from the positions identified in the
+ * ordering array given. Note that ColReorder takes a brute force approach
+ * to reordering, so it is possible multiple reordering events will occur
+ * before the final order is settled upon.
+ * @param {array} [set] Array of column identifiers in the new order. Note
+ * that every column must be included, uniquely, in this array.
+ * @return {this} Returns `this` for chaining.
+ *
+ * @example
+ * // Swap the first and second columns
+ * $.fn.dataTable.ColReorder( dataTable ).fnOrder( [1, 0, 2, 3, 4] );
+ *
+ * @example
+ * // Move the first column to the end for the table `#example`
+ * var curr = $.fn.dataTable.ColReorder( '#example' ).fnOrder();
+ * var first = curr.shift();
+ * curr.push( first );
+ * $.fn.dataTable.ColReorder( '#example' ).fnOrder( curr );
+ *
+ * @example
+ * // Reverse the table's order
+ * $.fn.dataTable.ColReorder( '#example' ).fnOrder(
+ * $.fn.dataTable.ColReorder( '#example' ).fnOrder().reverse()
+ * );
+ */
+ "fnOrder": function ( set )
+ {
+ if ( set === undefined )
+ {
+ var a = [];
+ for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
+ {
+ a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );
+ }
+ return a;
+ }
+
+ this._fnOrderColumns( fnInvertKeyValues( set ) );
+
+ return this;
+ },
+
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Private methods (they are of course public in JS, but recommended as private)
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+ /**
+ * Constructor logic
+ * @method _fnConstruct
+ * @returns void
+ * @private
+ */
+ "_fnConstruct": function ()
+ {
+ var that = this;
+ var iLen = this.s.dt.aoColumns.length;
+ var i;
+
+ /* Columns discounted from reordering - counting left to right */
+ if ( this.s.init.iFixedColumns )
+ {
+ this.s.fixed = this.s.init.iFixedColumns;
+ }
+
+ /* Columns discounted from reordering - counting right to left */
+ this.s.fixedRight = this.s.init.iFixedColumnsRight ?
+ this.s.init.iFixedColumnsRight :
+ 0;
+
+ /* Drop callback initialisation option */
+ if ( this.s.init.fnReorderCallback )
+ {
+ this.s.reorderCallback = this.s.init.fnReorderCallback;
+ }
+
+ /* Add event handlers for the drag and drop, and also mark the original column order */
+ for ( i = 0; i < iLen; i++ )
+ {
+ if ( i > this.s.fixed-1 && i < iLen - this.s.fixedRight )
+ {
+ this._fnMouseListener( i, this.s.dt.aoColumns[i].nTh );
+ }
+
+ /* Mark the original column order for later reference */
+ this.s.dt.aoColumns[i]._ColReorder_iOrigCol = i;
+ }
+
+ /* State saving */
+ this.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {
+ that._fnStateSave.call( that, oData );
+ }, "ColReorder_State" );
+
+ /* An initial column order has been specified */
+ var aiOrder = null;
+ if ( this.s.init.aiOrder )
+ {
+ aiOrder = this.s.init.aiOrder.slice();
+ }
+
+ /* State loading, overrides the column order given */
+ if ( this.s.dt.oLoadedState && typeof this.s.dt.oLoadedState.ColReorder != 'undefined' &&
+ this.s.dt.oLoadedState.ColReorder.length == this.s.dt.aoColumns.length )
+ {
+ aiOrder = this.s.dt.oLoadedState.ColReorder;
+ }
+
+ /* If we have an order to apply - do so */
+ if ( aiOrder )
+ {
+ /* We might be called during or after the DataTables initialisation. If before, then we need
+ * to wait until the draw is done, if after, then do what we need to do right away
+ */
+ if ( !that.s.dt._bInitComplete )
+ {
+ var bDone = false;
+ this.s.dt.aoDrawCallback.push( {
+ "fn": function () {
+ if ( !that.s.dt._bInitComplete && !bDone )
+ {
+ bDone = true;
+ var resort = fnInvertKeyValues( aiOrder );
+ that._fnOrderColumns.call( that, resort );
+ }
+ },
+ "sName": "ColReorder_Pre"
+ } );
+ }
+ else
+ {
+ var resort = fnInvertKeyValues( aiOrder );
+ that._fnOrderColumns.call( that, resort );
+ }
+ }
+ else {
+ this._fnSetColumnIndexes();
+ }
+ },
+
+
+ /**
+ * Set the column order from an array
+ * @method _fnOrderColumns
+ * @param array a An array of integers which dictate the column order that should be applied
+ * @returns void
+ * @private
+ */
+ "_fnOrderColumns": function ( a )
+ {
+ if ( a.length != this.s.dt.aoColumns.length )
+ {
+ this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "ColReorder - array reorder does not "+
+ "match known number of columns. Skipping." );
+ return;
+ }
+
+ for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+ {
+ var currIndex = $.inArray( i, a );
+ if ( i != currIndex )
+ {
+ /* Reorder our switching array */
+ fnArraySwitch( a, currIndex, i );
+
+ /* Do the column reorder in the table */
+ this.s.dt.oInstance.fnColReorder( currIndex, i );
+ }
+ }
+
+ /* When scrolling we need to recalculate the column sizes to allow for the shift */
+ if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+ {
+ this.s.dt.oInstance.fnAdjustColumnSizing( false );
+ }
+
+ /* Save the state */
+ this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
+
+ this._fnSetColumnIndexes();
+
+ if ( this.s.reorderCallback !== null )
+ {
+ this.s.reorderCallback.call( this );
+ }
+ },
+
+
+ /**
+ * Because we change the indexes of columns in the table, relative to their starting point
+ * we need to reorder the state columns to what they are at the starting point so we can
+ * then rearrange them again on state load!
+ * @method _fnStateSave
+ * @param object oState DataTables state
+ * @returns string JSON encoded cookie string for DataTables
+ * @private
+ */
+ "_fnStateSave": function ( oState )
+ {
+ var i, iLen, aCopy, iOrigColumn;
+ var oSettings = this.s.dt;
+ var columns = oSettings.aoColumns;
+
+ oState.ColReorder = [];
+
+ /* Sorting */
+ if ( oState.aaSorting ) {
+ // 1.10.0-
+ for ( i=0 ; i<oState.aaSorting.length ; i++ ) {
+ oState.aaSorting[i][0] = columns[ oState.aaSorting[i][0] ]._ColReorder_iOrigCol;
+ }
+
+ var aSearchCopy = $.extend( true, [], oState.aoSearchCols );
+
+ for ( i=0, iLen=columns.length ; i<iLen ; i++ )
+ {
+ iOrigColumn = columns[i]._ColReorder_iOrigCol;
+
+ /* Column filter */
+ oState.aoSearchCols[ iOrigColumn ] = aSearchCopy[i];
+
+ /* Visibility */
+ oState.abVisCols[ iOrigColumn ] = columns[i].bVisible;
+
+ /* Column reordering */
+ oState.ColReorder.push( iOrigColumn );
+ }
+ }
+ else if ( oState.order ) {
+ // 1.10.1+
+ for ( i=0 ; i<oState.order.length ; i++ ) {
+ oState.order[i][0] = columns[ oState.order[i][0] ]._ColReorder_iOrigCol;
+ }
+
+ var stateColumnsCopy = $.extend( true, [], oState.columns );
+
+ for ( i=0, iLen=columns.length ; i<iLen ; i++ )
+ {
+ iOrigColumn = columns[i]._ColReorder_iOrigCol;
+
+ /* Columns */
+ oState.columns[ iOrigColumn ] = stateColumnsCopy[i];
+
+ /* Column reordering */
+ oState.ColReorder.push( iOrigColumn );
+ }
+ }
+ },
+
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Mouse drop and drag
+ */
+
+ /**
+ * Add a mouse down listener to a particluar TH element
+ * @method _fnMouseListener
+ * @param int i Column index
+ * @param element nTh TH element clicked on
+ * @returns void
+ * @private
+ */
+ "_fnMouseListener": function ( i, nTh )
+ {
+ var that = this;
+ $(nTh).on( 'mousedown.ColReorder', function (e) {
+ e.preventDefault();
+ that._fnMouseDown.call( that, e, nTh );
+ } );
+ },
+
+
+ /**
+ * Mouse down on a TH element in the table header
+ * @method _fnMouseDown
+ * @param event e Mouse event
+ * @param element nTh TH element to be dragged
+ * @returns void
+ * @private
+ */
+ "_fnMouseDown": function ( e, nTh )
+ {
+ var that = this;
+
+ /* Store information about the mouse position */
+ var target = $(e.target).closest('th, td');
+ var offset = target.offset();
+ var idx = parseInt( $(nTh).attr('data-column-index'), 10 );
+
+ if ( idx === undefined ) {
+ return;
+ }
+
+ this.s.mouse.startX = e.pageX;
+ this.s.mouse.startY = e.pageY;
+ this.s.mouse.offsetX = e.pageX - offset.left;
+ this.s.mouse.offsetY = e.pageY - offset.top;
+ this.s.mouse.target = this.s.dt.aoColumns[ idx ].nTh;//target[0];
+ this.s.mouse.targetIndex = idx;
+ this.s.mouse.fromIndex = idx;
+
+ this._fnRegions();
+
+ /* Add event handlers to the document */
+ $(document)
+ .on( 'mousemove.ColReorder', function (e) {
+ that._fnMouseMove.call( that, e );
+ } )
+ .on( 'mouseup.ColReorder', function (e) {
+ that._fnMouseUp.call( that, e );
+ } );
+ },
+
+
+ /**
+ * Deal with a mouse move event while dragging a node
+ * @method _fnMouseMove
+ * @param event e Mouse event
+ * @returns void
+ * @private
+ */
+ "_fnMouseMove": function ( e )
+ {
+ var that = this;
+
+ if ( this.dom.drag === null )
+ {
+ /* Only create the drag element if the mouse has moved a specific distance from the start
+ * point - this allows the user to make small mouse movements when sorting and not have a
+ * possibly confusing drag element showing up
+ */
+ if ( Math.pow(
+ Math.pow(e.pageX - this.s.mouse.startX, 2) +
+ Math.pow(e.pageY - this.s.mouse.startY, 2), 0.5 ) < 5 )
+ {
+ return;
+ }
+ this._fnCreateDragNode();
+ }
+
+ /* Position the element - we respect where in the element the click occured */
+ this.dom.drag.css( {
+ left: e.pageX - this.s.mouse.offsetX,
+ top: e.pageY - this.s.mouse.offsetY
+ } );
+
+ /* Based on the current mouse position, calculate where the insert should go */
+ var bSet = false;
+ var lastToIndex = this.s.mouse.toIndex;
+
+ for ( var i=1, iLen=this.s.aoTargets.length ; i<iLen ; i++ )
+ {
+ if ( e.pageX < this.s.aoTargets[i-1].x + ((this.s.aoTargets[i].x-this.s.aoTargets[i-1].x)/2) )
+ {
+ this.dom.pointer.css( 'left', this.s.aoTargets[i-1].x );
+ this.s.mouse.toIndex = this.s.aoTargets[i-1].to;
+ bSet = true;
+ break;
+ }
+ }
+
+ // The insert element wasn't positioned in the array (less than
+ // operator), so we put it at the end
+ if ( !bSet )
+ {
+ this.dom.pointer.css( 'left', this.s.aoTargets[this.s.aoTargets.length-1].x );
+ this.s.mouse.toIndex = this.s.aoTargets[this.s.aoTargets.length-1].to;
+ }
+
+ // Perform reordering if realtime updating is on and the column has moved
+ if ( this.s.init.bRealtime && lastToIndex !== this.s.mouse.toIndex ) {
+ this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
+ this.s.mouse.fromIndex = this.s.mouse.toIndex;
+ this._fnRegions();
+ }
+ },
+
+
+ /**
+ * Finish off the mouse drag and insert the column where needed
+ * @method _fnMouseUp
+ * @param event e Mouse event
+ * @returns void
+ * @private
+ */
+ "_fnMouseUp": function ( e )
+ {
+ var that = this;
+
+ $(document).off( 'mousemove.ColReorder mouseup.ColReorder' );
+
+ if ( this.dom.drag !== null )
+ {
+ /* Remove the guide elements */
+ this.dom.drag.remove();
+ this.dom.pointer.remove();
+ this.dom.drag = null;
+ this.dom.pointer = null;
+
+ /* Actually do the reorder */
+ this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
+ this._fnSetColumnIndexes();
+
+ /* When scrolling we need to recalculate the column sizes to allow for the shift */
+ if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
+ {
+ this.s.dt.oInstance.fnAdjustColumnSizing( false );
+ }
+
+ /* Save the state */
+ this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
+
+ if ( this.s.reorderCallback !== null )
+ {
+ this.s.reorderCallback.call( this );
+ }
+ }
+ },
+
+
+ /**
+ * Calculate a cached array with the points of the column inserts, and the
+ * 'to' points
+ * @method _fnRegions
+ * @returns void
+ * @private
+ */
+ "_fnRegions": function ()
+ {
+ var aoColumns = this.s.dt.aoColumns;
+
+ this.s.aoTargets.splice( 0, this.s.aoTargets.length );
+
+ this.s.aoTargets.push( {
+ "x": $(this.s.dt.nTable).offset().left,
+ "to": 0
+ } );
+
+ var iToPoint = 0;
+ for ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ )
+ {
+ /* For the column / header in question, we want it's position to remain the same if the
+ * position is just to it's immediate left or right, so we only incremement the counter for
+ * other columns
+ */
+ if ( i != this.s.mouse.fromIndex )
+ {
+ iToPoint++;
+ }
+
+ if ( aoColumns[i].bVisible )
+ {
+ this.s.aoTargets.push( {
+ "x": $(aoColumns[i].nTh).offset().left + $(aoColumns[i].nTh).outerWidth(),
+ "to": iToPoint
+ } );
+ }
+ }
+
+ /* Disallow columns for being reordered by drag and drop, counting right to left */
+ if ( this.s.fixedRight !== 0 )
+ {
+ this.s.aoTargets.splice( this.s.aoTargets.length - this.s.fixedRight );
+ }
+
+ /* Disallow columns for being reordered by drag and drop, counting left to right */
+ if ( this.s.fixed !== 0 )
+ {
+ this.s.aoTargets.splice( 0, this.s.fixed );
+ }
+ },
+
+
+ /**
+ * Copy the TH element that is being drags so the user has the idea that they are actually
+ * moving it around the page.
+ * @method _fnCreateDragNode
+ * @returns void
+ * @private
+ */
+ "_fnCreateDragNode": function ()
+ {
+ var scrolling = this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "";
+
+ var origCell = this.s.dt.aoColumns[ this.s.mouse.targetIndex ].nTh;
+ var origTr = origCell.parentNode;
+ var origThead = origTr.parentNode;
+ var origTable = origThead.parentNode;
+ var cloneCell = $(origCell).clone();
+
+ // This is a slightly odd combination of jQuery and DOM, but it is the
+ // fastest and least resource intensive way I could think of cloning
+ // the table with just a single header cell in it.
+ this.dom.drag = $(origTable.cloneNode(false))
+ .addClass( 'DTCR_clonedTable' )
+ .append(
+ $(origThead.cloneNode(false)).append(
+ $(origTr.cloneNode(false)).append(
+ cloneCell[0]
+ )
+ )
+ )
+ .css( {
+ position: 'absolute',
+ top: 0,
+ left: 0,
+ width: $(origCell).outerWidth(),
+ height: $(origCell).outerHeight()
+ } )
+ .appendTo( 'body' );
+
+ this.dom.pointer = $('<div></div>')
+ .addClass( 'DTCR_pointer' )
+ .css( {
+ position: 'absolute',
+ top: scrolling ?
+ $('div.dataTables_scroll', this.s.dt.nTableWrapper).offset().top :
+ $(this.s.dt.nTable).offset().top,
+ height : scrolling ?
+ $('div.dataTables_scroll', this.s.dt.nTableWrapper).height() :
+ $(this.s.dt.nTable).height()
+ } )
+ .appendTo( 'body' );
+ },
+
+ /**
+ * Clean up ColReorder memory references and event handlers
+ * @method _fnDestroy
+ * @returns void
+ * @private
+ */
+ "_fnDestroy": function ()
+ {
+ var i, iLen;
+
+ for ( i=0, iLen=this.s.dt.aoDrawCallback.length ; i<iLen ; i++ )
+ {
+ if ( this.s.dt.aoDrawCallback[i].sName === 'ColReorder_Pre' )
+ {
+ this.s.dt.aoDrawCallback.splice( i, 1 );
+ break;
+ }
+ }
+
+ $(this.s.dt.nTHead).find( '*' ).off( '.ColReorder' );
+
+ $.each( this.s.dt.aoColumns, function (i, column) {
+ $(column.nTh).removeAttr('data-column-index');
+ } );
+
+ this.s.dt._colReorder = null;
+ this.s = null;
+ },
+
+
+ /**
+ * Add a data attribute to the column headers, so we know the index of
+ * the row to be reordered. This allows fast detection of the index, and
+ * for this plug-in to work with FixedHeader which clones the nodes.
+ * @private
+ */
+ "_fnSetColumnIndexes": function ()
+ {
+ $.each( this.s.dt.aoColumns, function (i, column) {
+ $(column.nTh).attr('data-column-index', i);
+ } );
+ }
+};
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static parameters
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * ColReorder default settings for initialisation
+ * @namespace
+ * @static
+ */
+ColReorder.defaults = {
+ /**
+ * Predefined ordering for the columns that will be applied automatically
+ * on initialisation. If not specified then the order that the columns are
+ * found to be in the HTML is the order used.
+ * @type array
+ * @default null
+ * @static
+ * @example
+ * // Using the `oColReorder` option in the DataTables options object
+ * $('#example').dataTable( {
+ * "sDom": 'Rlfrtip',
+ * "oColReorder": {
+ * "aiOrder": [ 4, 3, 2, 1, 0 ]
+ * }
+ * } );
+ *
+ * @example
+ * // Using `new` constructor
+ * $('#example').dataTable()
+ *
+ * new $.fn.dataTable.ColReorder( '#example', {
+ * "aiOrder": [ 4, 3, 2, 1, 0 ]
+ * } );
+ */
+ aiOrder: null,
+
+ /**
+ * Redraw the table's column ordering as the end user draws the column
+ * (`true`) or wait until the mouse is released (`false` - default). Note
+ * that this will perform a redraw on each reordering, which involves an
+ * Ajax request each time if you are using server-side processing in
+ * DataTables.
+ * @type boolean
+ * @default false
+ * @static
+ * @example
+ * // Using the `oColReorder` option in the DataTables options object
+ * $('#example').dataTable( {
+ * "sDom": 'Rlfrtip',
+ * "oColReorder": {
+ * "bRealtime": true
+ * }
+ * } );
+ *
+ * @example
+ * // Using `new` constructor
+ * $('#example').dataTable()
+ *
+ * new $.fn.dataTable.ColReorder( '#example', {
+ * "bRealtime": true
+ * } );
+ */
+ bRealtime: false,
+
+ /**
+ * Indicate how many columns should be fixed in position (counting from the
+ * left). This will typically be 1 if used, but can be as high as you like.
+ * @type int
+ * @default 0
+ * @static
+ * @example
+ * // Using the `oColReorder` option in the DataTables options object
+ * $('#example').dataTable( {
+ * "sDom": 'Rlfrtip',
+ * "oColReorder": {
+ * "iFixedColumns": 1
+ * }
+ * } );
+ *
+ * @example
+ * // Using `new` constructor
+ * $('#example').dataTable()
+ *
+ * new $.fn.dataTable.ColReorder( '#example', {
+ * "iFixedColumns": 1
+ * } );
+ */
+ iFixedColumns: 0,
+
+ /**
+ * As `iFixedColumnsRight` but counting from the right.
+ * @type int
+ * @default 0
+ * @static
+ * @example
+ * // Using the `oColReorder` option in the DataTables options object
+ * $('#example').dataTable( {
+ * "sDom": 'Rlfrtip',
+ * "oColReorder": {
+ * "iFixedColumnsRight": 1
+ * }
+ * } );
+ *
+ * @example
+ * // Using `new` constructor
+ * $('#example').dataTable()
+ *
+ * new $.fn.dataTable.ColReorder( '#example', {
+ * "iFixedColumnsRight": 1
+ * } );
+ */
+ iFixedColumnsRight: 0,
+
+ /**
+ * Callback function that is fired when columns are reordered
+ * @type function():void
+ * @default null
+ * @static
+ * @example
+ * // Using the `oColReorder` option in the DataTables options object
+ * $('#example').dataTable( {
+ * "sDom": 'Rlfrtip',
+ * "oColReorder": {
+ * "fnReorderCallback": function () {
+ * alert( 'Columns reordered' );
+ * }
+ * }
+ * } );
+ *
+ * @example
+ * // Using `new` constructor
+ * $('#example').dataTable()
+ *
+ * new $.fn.dataTable.ColReorder( '#example', {
+ * "fnReorderCallback": function () {
+ * alert( 'Columns reordered' );
+ * }
+ * } );
+ */
+ fnReorderCallback: null
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * ColReorder version
+ * @constant version
+ * @type String
+ * @default As code
+ */
+ColReorder.version = "1.1.3";
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables interfaces
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// Expose
+$.fn.dataTable.ColReorder = ColReorder;
+$.fn.DataTable.ColReorder = ColReorder;
+
+
+// Register a new feature with DataTables
+if ( typeof $.fn.dataTable == "function" &&
+ typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+ $.fn.dataTableExt.fnVersionCheck('1.9.3') )
+{
+ $.fn.dataTableExt.aoFeatures.push( {
+ "fnInit": function( settings ) {
+ var table = settings.oInstance;
+
+ if ( ! settings._colReorder ) {
+ var dtInit = settings.oInit;
+ var opts = dtInit.colReorder || dtInit.oColReorder || {};
+
+ new ColReorder( settings, opts );
+ }
+ else {
+ table.oApi._fnLog( settings, 1, "ColReorder attempted to initialise twice. Ignoring second" );
+ }
+
+ return null; /* No node for DataTables to insert */
+ },
+ "cFeature": "R",
+ "sFeature": "ColReorder"
+ } );
+}
+else {
+ alert( "Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download");
+}
+
+
+// API augmentation
+if ( $.fn.dataTable.Api ) {
+ $.fn.dataTable.Api.register( 'colReorder.reset()', function () {
+ return this.iterator( 'table', function ( ctx ) {
+ ctx._colReorder.fnReset();
+ } );
+ } );
+
+ $.fn.dataTable.Api.register( 'colReorder.order()', function ( set ) {
+ if ( set ) {
+ return this.iterator( 'table', function ( ctx ) {
+ ctx._colReorder.fnOrder( set );
+ } );
+ }
+
+ return this.context.length ?
+ this.context[0]._colReorder.fnOrder() :
+ null;
+ } );
+}
+
+return ColReorder;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+ define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+ // Node/CommonJS
+ factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.ColReorder ) {
+ // Otherwise simply initialise as normal, stopping multiple evaluation
+ factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/License.txt b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/License.txt
new file mode 100644
index 0000000..9ade2f1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/License.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2010-2015 SpryMedia Limited
+http://datatables.net
+
+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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/make.sh b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/make.sh
new file mode 100644
index 0000000..dd9c56b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/make.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+OUT_DIR=$1
+DEBUG=$2
+
+# Change into script's own dir
+cd $(dirname $0)
+
+DT_SRC=$(dirname $(dirname $(pwd)))
+DT_BUILT="${DT_SRC}/built/DataTables"
+. $DT_SRC/build/include.sh
+
+# Copy CSS
+rsync -r css $OUT_DIR
+css_compress $OUT_DIR/css/dataTables.colReorder.css
+
+# Copy images
+rsync -r images $OUT_DIR
+
+# Copy JS
+rsync -r js $OUT_DIR
+js_compress $OUT_DIR/js/dataTables.colReorder.js
+
+# Copy and build examples
+rsync -r examples $OUT_DIR
+examples_process $OUT_DIR
+
+# Readme and license
+cp Readme.md $OUT_DIR
+cp License.txt $OUT_DIR
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/Readme.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/Readme.md
new file mode 100644
index 0000000..217dd60
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colreorder/Readme.md
@@ -0,0 +1,39 @@
+# ColReorder
+
+ColReorder adds the ability for the end user to click and drag column headers to reorder a table as they see fit, to DataTables. Key features include:
+
+* Very easy integration with DataTables
+* Tight integration with all other DataTables plug-ins
+* The ability to exclude the first (or more) column from being movable
+* Predefine a column order
+* Save staving integration with DataTables
+
+
+# Installation
+
+To use ColReorder, first download DataTables ( http://datatables.net/download ) and place the unzipped ColReorder package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+ColReorder is initialised using the `$.fn.dataTable.ColReorder` constructor. For example:
+
+```js
+$(document).ready( function () {
+ $('#example').DataTable();
+
+ new $.fn.dataTable.ColReorder( table );
+} );
+```
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/colreorder/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of ColReorder and help make it better, please refer to its GitHub repo: https://github.com/DataTables/ColReorder
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/bower.json
new file mode 100644
index 0000000..2a7c9a5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/bower.json
@@ -0,0 +1,12 @@
+{
+ "name": "datatables-colvis",
+ "version": "1.1.2",
+ "main": [
+ "js/dataTables.colVis.js",
+ "css/dataTables.colVis.css"
+ ],
+ "dependencies": {
+ "jquery": ">=1.7.0",
+ "datatables": ">=1.7.0"
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/css/dataTables.colVis.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/css/dataTables.colVis.css
new file mode 100755
index 0000000..51f546d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/css/dataTables.colVis.css
@@ -0,0 +1,185 @@
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * ColVis styles
+ */
+div.ColVis {
+ float: right;
+ margin-bottom: 1em;
+}
+
+button.ColVis_Button,
+ul.ColVis_collection li {
+ position: relative;
+ float: left;
+ margin-right: 3px;
+ padding: 5px 8px;
+ border: 1px solid #999;
+ cursor: pointer;
+ *cursor: hand;
+ font-size: 0.88em;
+ color: black !important;
+ white-space: nowrap;
+
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ -ms-border-radius: 2px;
+ -o-border-radius: 2px;
+ border-radius: 2px;
+
+ -webkit-box-shadow: 1px 1px 3px #ccc;
+ -moz-box-shadow: 1px 1px 3px #ccc;
+ -ms-box-shadow: 1px 1px 3px #ccc;
+ -o-box-shadow: 1px 1px 3px #ccc;
+ box-shadow: 1px 1px 3px #ccc;
+
+ /* Generated by http://www.colorzilla.com/gradient-editor/ */
+ background: #ffffff; /* Old browsers */
+ background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
+ background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
+ background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
+ background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
+}
+
+.ColVis_Button:hover,
+ul.ColVis_collection li:hover {
+ border: 1px solid #666;
+ text-decoration: none !important;
+
+ -webkit-box-shadow: 1px 1px 3px #999;
+ -moz-box-shadow: 1px 1px 3px #999;
+ -ms-box-shadow: 1px 1px 3px #999;
+ -o-box-shadow: 1px 1px 3px #999;
+ box-shadow: 1px 1px 3px #999;
+
+ background: #f3f3f3; /* Old browsers */
+ background: -webkit-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* FF3.6+ */
+ background: -ms-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* IE10+ */
+ background: -o-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Opera 11.10+ */
+ background: linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */
+}
+
+button.ColVis_Button {
+ height: 30px;
+ padding: 3px 8px;
+}
+
+button.ColVis_Button::-moz-focus-inner {
+ border: none !important;
+ padding: 0;
+}
+
+button.ColVis_Button:active {
+ outline: none;
+}
+
+
+div.ColVis_collectionBackground {
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ background-color: black;
+ z-index: 1100;
+}
+
+ul.ColVis_collection {
+ list-style: none;
+ width: 150px;
+ padding: 8px 8px 4px 8px;
+ margin: 0;
+ border: 1px solid #ccc;
+ border: 1px solid rgba( 0, 0, 0, 0.4 );
+ background-color: #f3f3f3;
+ background-color: rgba( 255, 255, 255, 0.3 );
+ overflow: hidden;
+ z-index: 2002;
+
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -ms-border-radius: 5px;
+ -o-border-radius: 5px;
+ border-radius: 5px;
+
+ -webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+ -ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+ -o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+ box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+}
+
+ul.ColVis_collection li {
+ position: relative;
+ height: auto;
+ left: 0;
+ right: 0;
+ padding: 0.5em;
+
+ display: block;
+ float: none;
+ margin-bottom: 4px;
+
+ -webkit-box-shadow: 1px 1px 3px #999;
+ -moz-box-shadow: 1px 1px 3px #999;
+ -ms-box-shadow: 1px 1px 3px #999;
+ -o-box-shadow: 1px 1px 3px #999;
+ box-shadow: 1px 1px 3px #999;
+}
+
+ul.ColVis_collection li {
+ text-align: left;
+}
+
+ul.ColVis_collection li.ColVis_Button:hover {
+ border: 1px solid #999;
+ background-color: #f0f0f0;
+}
+
+ul.ColVis_collection li span {
+ display: inline-block;
+ padding-left: 0.5em;
+ cursor: pointer;
+}
+
+
+ul.ColVis_collection li.ColVis_Special {
+ border-color: #555;
+ background: rgb(237,237,237); /* Old browsers */
+ background: -webkit-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, rgba(237,237,237,1) 0%, rgba(214,214,214,1) 77%, rgba(232,232,232,1) 100%); /* FF3.6+ */
+ background: -ms-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* IE10+ */
+ background: -o-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Opera 11.10+ */
+ background: linear-gradient(to bottom, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ededed', endColorstr='#e8e8e8',GradientType=0 ); /* IE6-9 */
+}
+
+ul.ColVis_collection li.ColVis_Special:hover {
+ background: #e2e2e2; /* Old browsers */
+ background: -webkit-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Chrome10+,Safari5.1+ */
+ background: -moz-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* FF3.6+ */
+ background: -ms-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* IE10+ */
+ background: -o-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Opera 11.10+ */
+ background: linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#e2e2e2',GradientType=0 ); /* IE6-9 */
+}
+
+
+span.ColVis_radio {
+ display: inline-block;
+ width: 20px;
+}
+
+div.ColVis_catcher {
+ position: absolute;
+ z-index: 1101;
+}
+
+.disabled {
+ color: #999;
+}
+
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/css/dataTables.colvis.jqueryui.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/css/dataTables.colvis.jqueryui.css
new file mode 100644
index 0000000..0cdf0ba
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/css/dataTables.colvis.jqueryui.css
@@ -0,0 +1,41 @@
+
+button.ColVis_Button,
+ul.ColVis_collection li {
+ padding: 0.5em;
+}
+
+ul.ColVis_collection {
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+ z-index: 2002;
+}
+
+ul.ColVis_collection li {
+ clear: both;
+ display: block;
+ text-align: left;
+ margin: -1px 0 0 0;
+}
+
+ul.ColVis_collection li span {
+ display: inline-block;
+ padding-left: 0.5em;
+ cursor: pointer;
+}
+
+div.ColVis_collectionBackground {
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ background-color: black;
+ z-index: 1100;
+}
+
+
+div.ColVis_catcher {
+ position: absolute;
+ z-index: 1101;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/button_order.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/button_order.xml
new file mode 100644
index 0000000..f67e6e4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/button_order.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="6">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ dom: 'C<"clear">lfrtip',
+ colVis: {
+ order: 'alpha'
+ }
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColVis">Button ordering</title>
+
+<info><![CDATA[
+
+The list of columns that ColVis displays has two options for the order in which they are displayed. The default mode of operation is to show the buttons in the same order as they appear in the HTML table, but the second mode of operation is to show the buttons in alphabetical order. This is done by specifying the `order` option, set to `alpha`. Alphabetical button ordering is shown in this example.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/exclude_columns.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/exclude_columns.xml
new file mode 100644
index 0000000..2aaed9a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/exclude_columns.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="4">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ dom: 'C<"clear">lfrtip',
+ colVis: {
+ exclude: [ 0 ]
+ }
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColVis">Exclude columns from list</title>
+
+<info><.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/group_columns.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/group_columns.xml
new file mode 100644
index 0000000..c7bc963
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/group_columns.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="8">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ dom: 'C<"clear">lfrtip',
+ colVis: {
+ exclude: [],
+ groups: [
+ {
+ title: "Engine",
+ columns: [ 0, 3 ]
+ },
+ {
+ title: "Client",
+ columns: [ 1, 2 ]
+ }
+ ]
+ }
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColVis">Group columns</title>
+
+<info><![CDATA[
+
+It can be useful at times to show and hide multiple columns together - i.e. grouping them together. Groupings are defined by the `groups` array. Create a group button by naming it (using the `title` option) and specifying by index which columns belong to it (using the `columns` option).
+
+Note also that this ability to create groups can be used in combination `exclude` to remove individual columns from the list (should you wish them to only be used in the groups), or set `exclude = [ 'all' ]` to show only the grouping buttons (i.e. individual column control buttons will not be shown).
+
+For full information about the ColVis options, please refer to the [ColVis options documentation](//datatables.net/extensions/colvis/options).
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/index.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/index.xml
new file mode 100755
index 0000000..ac81b67
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/index.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="0">
+
+<title lib="ColVis">ColVis examples</title>
+
+<js lib="jquery" />
+<info><![CDATA[
+
+ColVis adds a button to the toolbars around DataTables which gives the end user of the table the ability to dynamically change the visibility of the columns in the table:
+
+* Dynamically show and hide columns in a table
+* Very easy integration with DataTables
+* Ability to exclude columns from being either hidden or shown
+* Save saving integration with DataTables
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/jqueryui.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/jqueryui.xml
new file mode 100644
index 0000000..e265c76
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/jqueryui.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="12">
+
+<css lib="jqueryui datatables-jqueryui colvis-jqueryui" />
+<js lib="jquery datatables datatables-jqueryui colvis">
+<![CDATA[
+$(document).ready(function() {
+ var table = $('#example').DataTable( {
+ jQueryUI: true
+ } );
+ var colvis = new $.fn.dataTable.ColVis( table );
+
+ $( colvis.button() ).insertBefore('div.dataTables_length');
+} );
+]]>
+</js>
+
+<title lib="ColVis">jQuery UI styling</title>
+
+<info><![CDATA[
+
+This example shows how the jQuery UI ThemeRoller option in DataTables can be used with ColVis.
+
+The important thing to note here is that it is easier to use `new $.fn.dataTable.ColVis()` to add ColVis to the table rather than `dt-init dom` as the jQuery UI integration uses a complex expression for `dt-init dom`.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/mouseover.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/mouseover.xml
new file mode 100644
index 0000000..8ad12b3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/mouseover.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="7">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ dom: 'C<"clear">lfrtip',
+ colVis: {
+ activate: "mouseover"
+ }
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColVis">Mouseover activation</title>
+
+<info><.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/new_init.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/new_init.xml
new file mode 100644
index 0000000..d7ef325
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/new_init.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="2">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ var table = $('#example').DataTable();
+ var colvis = new $.fn.dataTable.ColVis( table );
+
+ $( colvis.button() ).insertAfter('div.info');
+} );
+]]>
+</js>
+
+<title lib="ColVis">`new` initialisation</title>
+
+<info><.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/restore.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/restore.xml
new file mode 100644
index 0000000..195f575
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/restore.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="11">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ dom: 'C<"clear">lfrtip',
+ columnDefs: [
+ { visible: false, targets: 2 }
+ ],
+ colVis: {
+ restore: "Restore",
+ showAll: "Show all",
+ showNone: "Show none"
+ }
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColVis">Restore / show all</title>
+
+<info><.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/simple.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/simple.xml
new file mode 100755
index 0000000..1334596
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/simple.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="1">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ dom: 'C<"clear">lfrtip'
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColVis">Basic initialisation</title>
+
+<info><![CDATA[
+
+ColVis is a plug-in for DataTables which presents a list of all columns to a user and allows them to select which ones they wish to be visible. Click the 'Show / hide columns' button to be presented with a list of columns in the table, and click the buttons to show and hide them as you wish.
+
+ColVis is added to a DataTable by specifying the `C` option for `dt-init dom`. The example below shows the ColVis button added to the table with a clearing element after it.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/text.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/text.xml
new file mode 100644
index 0000000..f38ca56
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/text.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="3">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ "dom": 'C<"clear">lfrtip',
+ "colVis": {
+ "buttonText": "Change columns"
+ }
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColVis">Custom button text</title>
+
+<info><.
+
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/title_callback.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/title_callback.xml
new file mode 100644
index 0000000..f5b5d04
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/title_callback.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html" order="5">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ $('#example').DataTable( {
+ "dom": 'C<"clear">lfrtip',
+ "colVis": {
+ "label": function ( index, title, th ) {
+ return (index+1) +'. '+ title;
+ }
+ }
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColVis">Column button callback</title>
+
+<info><![CDATA[
+
+By default ColVis will use the information in the `dt-tag th` cell for each column as the button name to use in ColVis, which might not always be what you want (for example you might has HTML in the cell that you don't want in the button). The `label` callback provides the ability to customise the label used for the button.
+
+In this example the column index is prefixed to the column title.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/two_tables.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/two_tables.xml
new file mode 100644
index 0000000..d2196c9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/two_tables.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html-office-edin|html-office-london" table-id="" order="9">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ $('table.display').DataTable( {
+ dom: 'C<"clear">lfrtip',
+ displayLength: 5
+ } );
+} );
+]]>
+</js>
+
+<title lib="ColVis">Two tables with individual controls</title>
+
+<info><![CDATA[
+
+It can be useful to have DataTables initialise more than one table with a single call can for them to each have individual ColVis controllers. All this requires is a suitable jQuery selector to be used, and DataTables and ColVis will take care of the rest - as shown in this example.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/two_tables_identical.xml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/two_tables_identical.xml
new file mode 100644
index 0000000..60b3fdc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/examples/two_tables_identical.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dt-example table-type="html-office-edin|html-office-london" table-id="" order="10">
+
+<css lib="datatables colvis" />
+<js lib="jquery datatables colvis">
+<![CDATA[
+$(document).ready(function() {
+ var tables = $('table.display').DataTable( {
+ displayLength: 5
+ } );
+
+ // When the column visibility changes on the firs table, also change it on
+ // the others
+ tables.table(0).on('column-visibility', function ( e, settings, colIdx, visibility ) {
+ tables.tables(':gt(0)').column( colIdx ).visible( visibility );
+ } );
+
+ // Create ColVis on the first table only
+ var colvis = new $.fn.dataTable.ColVis( tables.table(0) );
+ $( colvis.button() ).insertAfter('div.info');
+} );
+]]>
+</js>
+
+<title lib="ColVis">Two tables with shared controls</title>
+
+<info><![CDATA[
+
+This example shows how the DataTables API can be used with ColVis to use a single ColVis control to effect other tables. This is done by applying ColVis to the first table and then listening for the `dt-event column-visibility` event and updating all other tables when triggered.
+
+This example makes use of the `dt-api tables()` and `dt-api table()` methods for working with multiple tables, and also initialised ColVis using the `new $.fn.dataTable.ColVis();` operator.
+
+]]></info>
+
+</dt-example>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/js/dataTables.colVis.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/js/dataTables.colVis.js
new file mode 100755
index 0000000..57a4326
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/js/dataTables.colVis.js
@@ -0,0 +1,1123 @@
+/*! ColVis 1.1.2
+ * ©2010-2015 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary ColVis
+ * @description Controls for column visibility in DataTables
+ * @version 1.1.2
+ * @file dataTables.colReorder.js
+ * @author SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact www.sprymedia.co.uk/contact
+ * @copyright Copyright 2010-2015 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ * MIT license - http://datatables.net/license/mit
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function(window, document, undefined) {
+
+
+var factory = function( $, DataTable ) {
+"use strict";
+
+/**
+ * ColVis provides column visibility control for DataTables
+ *
+ * @class ColVis
+ * @constructor
+ * @param {object} DataTables settings object. With DataTables 1.10 this can
+ * also be and API instance, table node, jQuery collection or jQuery selector.
+ * @param {object} ColVis configuration options
+ */
+var ColVis = function( oDTSettings, oInit )
+{
+ /* Santiy check that we are a new instance */
+ if ( !this.CLASS || this.CLASS != "ColVis" )
+ {
+ alert( "Warning: ColVis must be initialised with the keyword 'new'" );
+ }
+
+ if ( typeof oInit == 'undefined' )
+ {
+ oInit = {};
+ }
+
+ var camelToHungarian = $.fn.dataTable.camelToHungarian;
+ if ( camelToHungarian ) {
+ camelToHungarian( ColVis.defaults, ColVis.defaults, true );
+ camelToHungarian( ColVis.defaults, oInit );
+ }
+
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Public class variables
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+ /**
+ * @namespace Settings object which contains customisable information for
+ * ColVis instance. Augmented by ColVis.defaults
+ */
+ this.s = {
+ /**
+ * DataTables settings object
+ * @property dt
+ * @type Object
+ * @default null
+ */
+ "dt": null,
+
+ /**
+ * Customisation object
+ * @property oInit
+ * @type Object
+ * @default passed in
+ */
+ "oInit": oInit,
+
+ /**
+ * Flag to say if the collection is hidden
+ * @property hidden
+ * @type boolean
+ * @default true
+ */
+ "hidden": true,
+
+ /**
+ * Store the original visibility settings so they could be restored
+ * @property abOriginal
+ * @type Array
+ * @default []
+ */
+ "abOriginal": []
+ };
+
+
+ /**
+ * @namespace Common and useful DOM elements for the class instance
+ */
+ this.dom = {
+ /**
+ * Wrapper for the button - given back to DataTables as the node to insert
+ * @property wrapper
+ * @type Node
+ * @default null
+ */
+ "wrapper": null,
+
+ /**
+ * Activation button
+ * @property button
+ * @type Node
+ * @default null
+ */
+ "button": null,
+
+ /**
+ * Collection list node
+ * @property collection
+ * @type Node
+ * @default null
+ */
+ "collection": null,
+
+ /**
+ * Background node used for shading the display and event capturing
+ * @property background
+ * @type Node
+ * @default null
+ */
+ "background": null,
+
+ /**
+ * Element to position over the activation button to catch mouse events when using mouseover
+ * @property catcher
+ * @type Node
+ * @default null
+ */
+ "catcher": null,
+
+ /**
+ * List of button elements
+ * @property buttons
+ * @type Array
+ * @default []
+ */
+ "buttons": [],
+
+ /**
+ * List of group button elements
+ * @property groupButtons
+ * @type Array
+ * @default []
+ */
+ "groupButtons": [],
+
+ /**
+ * Restore button
+ * @property restore
+ * @type Node
+ * @default null
+ */
+ "restore": null
+ };
+
+ /* Store global reference */
+ ColVis.aInstances.push( this );
+
+ /* Constructor logic */
+ this.s.dt = $.fn.dataTable.Api ?
+ new $.fn.dataTable.Api( oDTSettings ).settings()[0] :
+ oDTSettings;
+
+ this._fnConstruct( oInit );
+ return this;
+};
+
+
+
+ColVis.prototype = {
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Public methods
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+ /**
+ * Get the ColVis instance's control button so it can be injected into the
+ * DOM
+ * @method button
+ * @returns {node} ColVis button
+ */
+ button: function ()
+ {
+ return this.dom.wrapper;
+ },
+
+ /**
+ * Alias of `rebuild` for backwards compatibility
+ * @method fnRebuild
+ */
+ "fnRebuild": function ()
+ {
+ this.rebuild();
+ },
+
+ /**
+ * Rebuild the list of buttons for this instance (i.e. if there is a column
+ * header update)
+ * @method fnRebuild
+ */
+ rebuild: function ()
+ {
+ /* Remove the old buttons */
+ for ( var i=this.dom.buttons.length-1 ; i>=0 ; i-- ) {
+ this.dom.collection.removeChild( this.dom.buttons[i] );
+ }
+ this.dom.buttons.splice( 0, this.dom.buttons.length );
+ this.dom.groupButtons.splice(0, this.dom.groupButtons.length);
+
+ if ( this.dom.restore ) {
+ this.dom.restore.parentNode( this.dom.restore );
+ }
+
+ /* Re-add them (this is not the optimal way of doing this, it is fast and effective) */
+ this._fnAddGroups();
+ this._fnAddButtons();
+
+ /* Update the checkboxes */
+ this._fnDrawCallback();
+ },
+
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Private methods (they are of course public in JS, but recommended as private)
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+ /**
+ * Constructor logic
+ * @method _fnConstruct
+ * @returns void
+ * @private
+ */
+ "_fnConstruct": function ( init )
+ {
+ this._fnApplyCustomisation( init );
+
+ var that = this;
+ var i, iLen;
+ this.dom.wrapper = document.createElement('div');
+ this.dom.wrapper.className = "ColVis";
+
+ this.dom.button = $( '<button />', {
+ 'class': !this.s.dt.bJUI ?
+ "ColVis_Button ColVis_MasterButton" :
+ "ColVis_Button ColVis_MasterButton ui-button ui-state-default"
+ } )
+ .append( '<span>'+this.s.buttonText+'</span>' )
+ .bind( this.s.activate=="mouseover" ? "mouseover" : "click", function (e) {
+ e.preventDefault();
+ that._fnCollectionShow();
+ } )
+ .appendTo( this.dom.wrapper )[0];
+
+ this.dom.catcher = this._fnDomCatcher();
+ this.dom.collection = this._fnDomCollection();
+ this.dom.background = this._fnDomBackground();
+
+ this._fnAddGroups();
+ this._fnAddButtons();
+
+ /* Store the original visibility information */
+ for ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
+ {
+ this.s.abOriginal.push( this.s.dt.aoColumns[i].bVisible );
+ }
+
+ /* Update on each draw */
+ this.s.dt.aoDrawCallback.push( {
+ "fn": function () {
+ that._fnDrawCallback.call( that );
+ },
+ "sName": "ColVis"
+ } );
+
+ /* If columns are reordered, then we need to update our exclude list and
+ * rebuild the displayed list
+ */
+ $(this.s.dt.oInstance).bind( 'column-reorder.dt', function ( e, oSettings, oReorder ) {
+ for ( i=0, iLen=that.s.aiExclude.length ; i<iLen ; i++ ) {
+ that.s.aiExclude[i] = oReorder.aiInvertMapping[ that.s.aiExclude[i] ];
+ }
+
+ var mStore = that.s.abOriginal.splice( oReorder.iFrom, 1 )[0];
+ that.s.abOriginal.splice( oReorder.iTo, 0, mStore );
+
+ that.fnRebuild();
+ } );
+
+ $(this.s.dt.oInstance).bind( 'destroy.dt', function () {
+ $(that.dom.wrapper).remove();
+ } );
+
+ // Set the initial state
+ this._fnDrawCallback();
+ },
+
+
+ /**
+ * Apply any customisation to the settings from the DataTables initialisation
+ * @method _fnApplyCustomisation
+ * @returns void
+ * @private
+ */
+ "_fnApplyCustomisation": function ( init )
+ {
+ $.extend( true, this.s, ColVis.defaults, init );
+
+ // Slightly messy overlap for the camelCase notation
+ if ( ! this.s.showAll && this.s.bShowAll ) {
+ this.s.showAll = this.s.sShowAll;
+ }
+
+ if ( ! this.s.restore && this.s.bRestore ) {
+ this.s.restore = this.s.sRestore;
+ }
+
+ // CamelCase to Hungarian for the column groups
+ var groups = this.s.groups;
+ var hungarianGroups = this.s.aoGroups;
+ if ( groups ) {
+ for ( var i=0, ien=groups.length ; i<ien ; i++ ) {
+ if ( groups[i].title ) {
+ hungarianGroups[i].sTitle = groups[i].title;
+ }
+ if ( groups[i].columns ) {
+ hungarianGroups[i].aiColumns = groups[i].columns;
+ }
+ }
+ }
+ },
+
+
+ /**
+ * On each table draw, check the visibility checkboxes as needed. This allows any process to
+ * update the table's column visibility and ColVis will still be accurate.
+ * @method _fnDrawCallback
+ * @returns void
+ * @private
+ */
+ "_fnDrawCallback": function ()
+ {
+ var columns = this.s.dt.aoColumns;
+ var buttons = this.dom.buttons;
+ var groups = this.s.aoGroups;
+ var button;
+
+ for ( var i=0, ien=buttons.length ; i<ien ; i++ ) {
+ button = buttons[i];
+
+ if ( button.__columnIdx !== undefined ) {
+ $('input', button).prop( 'checked', columns[ button.__columnIdx ].bVisible );
+ }
+ }
+
+ var allVisible = function ( columnIndeces ) {
+ for ( var k=0, kLen=columnIndeces.length ; k<kLen ; k++ )
+ {
+ if ( columns[columnIndeces[k]].bVisible === false ) { return false; }
+ }
+ return true;
+ };
+ var allHidden = function ( columnIndeces ) {
+ for ( var m=0 , mLen=columnIndeces.length ; m<mLen ; m++ )
+ {
+ if ( columns[columnIndeces[m]].bVisible === true ) { return false; }
+ }
+ return true;
+ };
+
+ for ( var j=0, jLen=groups.length ; j<jLen ; j++ )
+ {
+ if ( allVisible(groups[j].aiColumns) )
+ {
+ $('input', this.dom.groupButtons[j]).prop('checked', true);
+ $('input', this.dom.groupButtons[j]).prop('indeterminate', false);
+ }
+ else if ( allHidden(groups[j].aiColumns) )
+ {
+ $('input', this.dom.groupButtons[j]).prop('checked', false);
+ $('input', this.dom.groupButtons[j]).prop('indeterminate', false);
+ }
+ else
+ {
+ $('input', this.dom.groupButtons[j]).prop('indeterminate', true);
+ }
+ }
+ },
+
+
+ /**
+ * Loop through the groups (provided in the settings) and create a button for each.
+ * @method _fnAddgroups
+ * @returns void
+ * @private
+ */
+ "_fnAddGroups": function ()
+ {
+ var nButton;
+
+ if ( typeof this.s.aoGroups != 'undefined' )
+ {
+ for ( var i=0, iLen=this.s.aoGroups.length ; i<iLen ; i++ )
+ {
+ nButton = this._fnDomGroupButton( i );
+ this.dom.groupButtons.push( nButton );
+ this.dom.buttons.push( nButton );
+ this.dom.collection.appendChild( nButton );
+ }
+ }
+ },
+
+
+ /**
+ * Loop through the columns in the table and as a new button for each one.
+ * @method _fnAddButtons
+ * @returns void
+ * @private
+ */
+ "_fnAddButtons": function ()
+ {
+ var
+ nButton,
+ columns = this.s.dt.aoColumns;
+
+ if ( $.inArray( 'all', this.s.aiExclude ) === -1 ) {
+ for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
+ {
+ if ( $.inArray( i, this.s.aiExclude ) === -1 )
+ {
+ nButton = this._fnDomColumnButton( i );
+ nButton.__columnIdx = i;
+ this.dom.buttons.push( nButton );
+ }
+ }
+ }
+
+ if ( this.s.order === 'alpha' ) {
+ this.dom.buttons.sort( function ( a, b ) {
+ var titleA = columns[ a.__columnIdx ].sTitle;
+ var titleB = columns[ b.__columnIdx ].sTitle;
+
+ return titleA === titleB ?
+ 0 :
+ titleA < titleB ?
+ -1 :
+ 1;
+ } );
+ }
+
+ if ( this.s.restore )
+ {
+ nButton = this._fnDomRestoreButton();
+ nButton.className += " ColVis_Restore";
+ this.dom.buttons.push( nButton );
+ }
+
+ if ( this.s.showAll )
+ {
+ nButton = this._fnDomShowXButton( this.s.showAll, true );
+ nButton.className += " ColVis_ShowAll";
+ this.dom.buttons.push( nButton );
+ }
+
+ if ( this.s.showNone )
+ {
+ nButton = this._fnDomShowXButton( this.s.showNone, false );
+ nButton.className += " ColVis_ShowNone";
+ this.dom.buttons.push( nButton );
+ }
+
+ $(this.dom.collection).append( this.dom.buttons );
+ },
+
+
+ /**
+ * Create a button which allows a "restore" action
+ * @method _fnDomRestoreButton
+ * @returns {Node} Created button
+ * @private
+ */
+ "_fnDomRestoreButton": function ()
+ {
+ var
+ that = this,
+ dt = this.s.dt;
+
+ return $(
+ '<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+
+ this.s.restore+
+ '</li>'
+ )
+ .click( function (e) {
+ for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )
+ {
+ that.s.dt.oInstance.fnSetColumnVis( i, that.s.abOriginal[i], false );
+ }
+ that._fnAdjustOpenRows();
+ that.s.dt.oInstance.fnAdjustColumnSizing( false );
+ that.s.dt.oInstance.fnDraw( false );
+ } )[0];
+ },
+
+
+ /**
+ * Create a button which allows show all and show node actions
+ * @method _fnDomShowXButton
+ * @returns {Node} Created button
+ * @private
+ */
+ "_fnDomShowXButton": function ( str, action )
+ {
+ var
+ that = this,
+ dt = this.s.dt;
+
+ return $(
+ '<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+
+ str+
+ '</li>'
+ )
+ .click( function (e) {
+ for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )
+ {
+ if (that.s.aiExclude.indexOf(i) === -1)
+ {
+ that.s.dt.oInstance.fnSetColumnVis( i, action, false );
+ }
+ }
+ that._fnAdjustOpenRows();
+ that.s.dt.oInstance.fnAdjustColumnSizing( false );
+ that.s.dt.oInstance.fnDraw( false );
+ } )[0];
+ },
+
+
+ /**
+ * Create the DOM for a show / hide group button
+ * @method _fnDomGroupButton
+ * @param {int} i Group in question, order based on that provided in settings
+ * @returns {Node} Created button
+ * @private
+ */
+ "_fnDomGroupButton": function ( i )
+ {
+ var
+ that = this,
+ dt = this.s.dt,
+ oGroup = this.s.aoGroups[i];
+
+ return $(
+ '<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+
+ '<label>'+
+ '<input type="checkbox" />'+
+ '<span>'+oGroup.sTitle+'</span>'+
+ '</label>'+
+ '</li>'
+ )
+ .click( function (e) {
+ var showHide = !$('input', this).is(":checked");
+ if ( e.target.nodeName.toLowerCase() !== "li" )
+ {
+ showHide = ! showHide;
+ }
+
+ for ( var j=0 ; j < oGroup.aiColumns.length ; j++ )
+ {
+ that.s.dt.oInstance.fnSetColumnVis( oGroup.aiColumns[j], showHide );
+ }
+ } )[0];
+ },
+
+
+ /**
+ * Create the DOM for a show / hide button
+ * @method _fnDomColumnButton
+ * @param {int} i Column in question
+ * @returns {Node} Created button
+ * @private
+ */
+ "_fnDomColumnButton": function ( i )
+ {
+ var
+ that = this,
+ column = this.s.dt.aoColumns[i],
+ dt = this.s.dt;
+
+ var title = this.s.fnLabel===null ?
+ column.sTitle :
+ this.s.fnLabel( i, column.sTitle, column.nTh );
+
+ return $(
+ '<li '+(dt.bJUI ? 'class="ui-button ui-state-default"' : '')+'>'+
+ '<label>'+
+ '<input type="checkbox" />'+
+ '<span>'+title+'</span>'+
+ '</label>'+
+ '</li>'
+ )
+ .click( function (e) {
+ var showHide = !$('input', this).is(":checked");
+ if ( e.target.nodeName.toLowerCase() !== "li" )
+ {
+ if ( e.target.nodeName.toLowerCase() == "input" || that.s.fnStateChange === null )
+ {
+ showHide = ! showHide;
+ }
+ }
+
+ /* Need to consider the case where the initialiser created more than one table - change the
+ * API index that DataTables is using
+ */
+ var oldIndex = $.fn.dataTableExt.iApiIndex;
+ $.fn.dataTableExt.iApiIndex = that._fnDataTablesApiIndex.call(that);
+
+ // Optimisation for server-side processing when scrolling - don't do a full redraw
+ if ( dt.oFeatures.bServerSide )
+ {
+ that.s.dt.oInstance.fnSetColumnVis( i, showHide, false );
+ that.s.dt.oInstance.fnAdjustColumnSizing( false );
+ if (dt.oScroll.sX !== "" || dt.oScroll.sY !== "" )
+ {
+ that.s.dt.oInstance.oApi._fnScrollDraw( that.s.dt );
+ }
+ that._fnDrawCallback();
+ }
+ else
+ {
+ that.s.dt.oInstance.fnSetColumnVis( i, showHide );
+ }
+
+ $.fn.dataTableExt.iApiIndex = oldIndex; /* Restore */
+
+ if ( that.s.fnStateChange !== null )
+ {
+ if ( e.target.nodeName.toLowerCase() == "span" )
+ {
+ e.preventDefault();
+ }
+ that.s.fnStateChange.call( that, i, showHide );
+ }
+ } )[0];
+ },
+
+
+ /**
+ * Get the position in the DataTables instance array of the table for this
+ * instance of ColVis
+ * @method _fnDataTablesApiIndex
+ * @returns {int} Index
+ * @private
+ */
+ "_fnDataTablesApiIndex": function ()
+ {
+ for ( var i=0, iLen=this.s.dt.oInstance.length ; i<iLen ; i++ )
+ {
+ if ( this.s.dt.oInstance[i] == this.s.dt.nTable )
+ {
+ return i;
+ }
+ }
+ return 0;
+ },
+
+
+ /**
+ * Create the element used to contain list the columns (it is shown and
+ * hidden as needed)
+ * @method _fnDomCollection
+ * @returns {Node} div container for the collection
+ * @private
+ */
+ "_fnDomCollection": function ()
+ {
+ return $('<ul />', {
+ 'class': !this.s.dt.bJUI ?
+ "ColVis_collection" :
+ "ColVis_collection ui-buttonset ui-buttonset-multi"
+ } )
+ .css( {
+ 'display': 'none',
+ 'opacity': 0,
+ 'position': ! this.s.bCssPosition ?
+ 'absolute' :
+ ''
+ } )[0];
+ },
+
+
+ /**
+ * An element to be placed on top of the activate button to catch events
+ * @method _fnDomCatcher
+ * @returns {Node} div container for the collection
+ * @private
+ */
+ "_fnDomCatcher": function ()
+ {
+ var
+ that = this,
+ nCatcher = document.createElement('div');
+ nCatcher.className = "ColVis_catcher";
+
+ $(nCatcher).click( function () {
+ that._fnCollectionHide.call( that, null, null );
+ } );
+
+ return nCatcher;
+ },
+
+
+ /**
+ * Create the element used to shade the background, and capture hide events (it is shown and
+ * hidden as needed)
+ * @method _fnDomBackground
+ * @returns {Node} div container for the background
+ * @private
+ */
+ "_fnDomBackground": function ()
+ {
+ var that = this;
+
+ var background = $('<div></div>')
+ .addClass( 'ColVis_collectionBackground' )
+ .css( 'opacity', 0 )
+ .click( function () {
+ that._fnCollectionHide.call( that, null, null );
+ } );
+
+ /* When considering a mouse over action for the activation, we also consider a mouse out
+ * which is the same as a mouse over the background - without all the messing around of
+ * bubbling events. Use the catcher element to avoid messing around with bubbling
+ */
+ if ( this.s.activate == "mouseover" )
+ {
+ background.mouseover( function () {
+ that.s.overcollection = false;
+ that._fnCollectionHide.call( that, null, null );
+ } );
+ }
+
+ return background[0];
+ },
+
+
+ /**
+ * Show the show / hide list and the background
+ * @method _fnCollectionShow
+ * @returns void
+ * @private
+ */
+ "_fnCollectionShow": function ()
+ {
+ var that = this, i, iLen, iLeft;
+ var oPos = $(this.dom.button).offset();
+ var nHidden = this.dom.collection;
+ var nBackground = this.dom.background;
+ var iDivX = parseInt(oPos.left, 10);
+ var iDivY = parseInt(oPos.top + $(this.dom.button).outerHeight(), 10);
+
+ if ( ! this.s.bCssPosition )
+ {
+ nHidden.style.top = iDivY+"px";
+ nHidden.style.left = iDivX+"px";
+ }
+
+ $(nHidden).css( {
+ 'display': 'block',
+ 'opacity': 0
+ } );
+
+ nBackground.style.bottom ='0px';
+ nBackground.style.right = '0px';
+
+ var oStyle = this.dom.catcher.style;
+ oStyle.height = $(this.dom.button).outerHeight()+"px";
+ oStyle.width = $(this.dom.button).outerWidth()+"px";
+ oStyle.top = oPos.top+"px";
+ oStyle.left = iDivX+"px";
+
+ document.body.appendChild( nBackground );
+ document.body.appendChild( nHidden );
+ document.body.appendChild( this.dom.catcher );
+
+ /* This results in a very small delay for the end user but it allows the animation to be
+ * much smoother. If you don't want the animation, then the setTimeout can be removed
+ */
+ $(nHidden).animate({"opacity": 1}, that.s.iOverlayFade);
+ $(nBackground).animate({"opacity": 0.1}, that.s.iOverlayFade, 'linear', function () {
+ /* In IE6 if you set the checked attribute of a hidden checkbox, then this is not visually
+ * reflected. As such, we need to do it here, once it is visible. Unbelievable.
+ */
+ if ( $.browser && $.browser.msie && $.browser.version == "6.0" )
+ {
+ that._fnDrawCallback();
+ }
+ });
+
+ /* Visual corrections to try and keep the collection visible */
+ if ( !this.s.bCssPosition )
+ {
+ iLeft = ( this.s.sAlign=="left" ) ?
+ iDivX :
+ iDivX - $(nHidden).outerWidth() + $(this.dom.button).outerWidth();
+
+ nHidden.style.left = iLeft+"px";
+
+ var iDivWidth = $(nHidden).outerWidth();
+ var iDivHeight = $(nHidden).outerHeight();
+ var iDocWidth = $(document).width();
+
+ if ( iLeft + iDivWidth > iDocWidth )
+ {
+ nHidden.style.left = (iDocWidth-iDivWidth)+"px";
+ }
+ }
+
+ this.s.hidden = false;
+ },
+
+
+ /**
+ * Hide the show / hide list and the background
+ * @method _fnCollectionHide
+ * @returns void
+ * @private
+ */
+ "_fnCollectionHide": function ( )
+ {
+ var that = this;
+
+ if ( !this.s.hidden && this.dom.collection !== null )
+ {
+ this.s.hidden = true;
+
+ $(this.dom.collection).animate({"opacity": 0}, that.s.iOverlayFade, function (e) {
+ this.style.display = "none";
+ } );
+
+ $(this.dom.background).animate({"opacity": 0}, that.s.iOverlayFade, function (e) {
+ document.body.removeChild( that.dom.background );
+ document.body.removeChild( that.dom.catcher );
+ } );
+ }
+ },
+
+
+ /**
+ * Alter the colspan on any fnOpen rows
+ */
+ "_fnAdjustOpenRows": function ()
+ {
+ var aoOpen = this.s.dt.aoOpenRows;
+ var iVisible = this.s.dt.oApi._fnVisbleColumns( this.s.dt );
+
+ for ( var i=0, iLen=aoOpen.length ; i<iLen ; i++ ) {
+ aoOpen[i].nTr.getElementsByTagName('td')[0].colSpan = iVisible;
+ }
+ }
+};
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static object methods
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Rebuild the collection for a given table, or all tables if no parameter given
+ * @method ColVis.fnRebuild
+ * @static
+ * @param object oTable DataTable instance to consider - optional
+ * @returns void
+ */
+ColVis.fnRebuild = function ( oTable )
+{
+ var nTable = null;
+ if ( typeof oTable != 'undefined' )
+ {
+ nTable = $.fn.dataTable.Api ?
+ new $.fn.dataTable.Api( oTable ).table().node() :
+ oTable.fnSettings().nTable;
+ }
+
+ for ( var i=0, iLen=ColVis.aInstances.length ; i<iLen ; i++ )
+ {
+ if ( typeof oTable == 'undefined' || nTable == ColVis.aInstances[i].s.dt.nTable )
+ {
+ ColVis.aInstances[i].fnRebuild();
+ }
+ }
+};
+
+
+ColVis.defaults = {
+ /**
+ * Mode of activation. Can be 'click' or 'mouseover'
+ * @property activate
+ * @type string
+ * @default click
+ */
+ active: 'click',
+
+ /**
+ * Text used for the button
+ * @property buttonText
+ * @type string
+ * @default Show / hide columns
+ */
+ buttonText: 'Show / hide columns',
+
+ /**
+ * List of columns (integers) which should be excluded from the list
+ * @property aiExclude
+ * @type array
+ * @default []
+ */
+ aiExclude: [],
+
+ /**
+ * Show restore button
+ * @property bRestore
+ * @type boolean
+ * @default false
+ */
+ bRestore: false,
+
+ /**
+ * Restore button text
+ * @property sRestore
+ * @type string
+ * @default Restore original
+ */
+ sRestore: 'Restore original',
+
+ /**
+ * Show Show-All button
+ * @property bShowAll
+ * @type boolean
+ * @default false
+ */
+ bShowAll: false,
+
+ /**
+ * Show All button text
+ * @property sShowAll
+ * @type string
+ * @default Restore original
+ */
+ sShowAll: 'Show All',
+
+ /**
+ * Position of the collection menu when shown - align "left" or "right"
+ * @property sAlign
+ * @type string
+ * @default left
+ */
+ sAlign: 'left',
+
+ /**
+ * Callback function to tell the user when the state has changed
+ * @property fnStateChange
+ * @type function
+ * @default null
+ */
+ fnStateChange: null,
+
+ /**
+ * Overlay animation duration in mS
+ * @property iOverlayFade
+ * @type integer|false
+ * @default 500
+ */
+ iOverlayFade: 500,
+
+ /**
+ * Label callback for column names. Takes three parameters: 1. the
+ * column index, 2. the column title detected by DataTables and 3. the
+ * TH node for the column
+ * @property fnLabel
+ * @type function
+ * @default null
+ */
+ fnLabel: null,
+
+ /**
+ * Indicate if the column list should be positioned by Javascript,
+ * visually below the button or allow CSS to do the positioning
+ * @property bCssPosition
+ * @type boolean
+ * @default false
+ */
+ bCssPosition: false,
+
+ /**
+ * Group buttons
+ * @property aoGroups
+ * @type array
+ * @default []
+ */
+ aoGroups: [],
+
+ /**
+ * Button ordering - 'alpha' (alphabetical) or 'column' (table column
+ * order)
+ * @property order
+ * @type string
+ * @default column
+ */
+ order: 'column'
+};
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Static object properties
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Collection of all ColVis instances
+ * @property ColVis.aInstances
+ * @static
+ * @type Array
+ * @default []
+ */
+ColVis.aInstances = [];
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Constants
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * Name of this class
+ * @constant CLASS
+ * @type String
+ * @default ColVis
+ */
+ColVis.prototype.CLASS = "ColVis";
+
+
+/**
+ * ColVis version
+ * @constant VERSION
+ * @type String
+ * @default See code
+ */
+ColVis.VERSION = "1.1.2";
+ColVis.prototype.VERSION = ColVis.VERSION;
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/*
+ * Register a new feature with DataTables
+ */
+if ( typeof $.fn.dataTable == "function" &&
+ typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+ $.fn.dataTableExt.fnVersionCheck('1.7.0') )
+{
+ $.fn.dataTableExt.aoFeatures.push( {
+ "fnInit": function( oDTSettings ) {
+ var init = oDTSettings.oInit;
+ var colvis = new ColVis( oDTSettings, init.colVis || init.oColVis || {} );
+ return colvis.button();
+ },
+ "cFeature": "C",
+ "sFeature": "ColVis"
+ } );
+}
+else
+{
+ alert( "Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download");
+}
+
+
+// Make ColVis accessible from the DataTables instance
+$.fn.dataTable.ColVis = ColVis;
+$.fn.DataTable.ColVis = ColVis;
+
+
+return ColVis;
+}; // /factory
+
+
+// Define as an AMD module if possible
+if ( typeof define === 'function' && define.amd ) {
+ define( ['jquery', 'datatables'], factory );
+}
+else if ( typeof exports === 'object' ) {
+ // Node/CommonJS
+ factory( require('jquery'), require('datatables') );
+}
+else if ( jQuery && !jQuery.fn.dataTable.ColVis ) {
+ // Otherwise simply initialise as normal, stopping multiple evaluation
+ factory( jQuery, jQuery.fn.dataTable );
+}
+
+
+})(window, document);
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/License.txt b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/License.txt
new file mode 100644
index 0000000..9ade2f1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/License.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2010-2015 SpryMedia Limited
+http://datatables.net
+
+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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/make.sh b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/make.sh
new file mode 100644
index 0000000..03c492f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/make.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+OUT_DIR=$1
+DEBUG=$2
+
+# Change into script's own dir
+cd $(dirname $0)
+
+DT_SRC=$(dirname $(dirname $(pwd)))
+DT_BUILT="${DT_SRC}/built/DataTables"
+. $DT_SRC/build/include.sh
+
+# Copy CSS
+rsync -r css $OUT_DIR
+css_compress $OUT_DIR/css/dataTables.colVis.css
+
+# Copy JS
+rsync -r js $OUT_DIR
+js_compress $OUT_DIR/js/dataTables.colVis.js
+
+# Copy and build examples
+rsync -r examples $OUT_DIR
+examples_process $OUT_DIR
+
+# Readme and license
+cp Readme.md $OUT_DIR
+cp License.txt $OUT_DIR
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/README.md
new file mode 100644
index 0000000..62f432d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/datatables-colvis/README.md
@@ -0,0 +1,38 @@
+# ColVis
+
+ColVis adds a button to the toolbars around DataTables which gives the end user of the table the ability to dynamically change the visibility of the columns in the table:
+
+* Dynamically show and hide columns in a table
+* Very easy integration with DataTables
+* Ability to exclude columns from being either hidden or shown
+* Save saving integration with DataTables
+
+
+# Installation
+
+To use ColVis, first download DataTables ( http://datatables.net/download ) and place the unzipped ColVis package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
+
+
+# Basic usage
+
+ColVis is initialised using the `C` option that it adds to DataTables' `dom` option. For example:
+
+```js
+$(document).ready( function () {
+ $('#example').dataTable( {
+ "dom": 'C<"clear">lfrtip'
+ } );
+} );
+```
+
+
+# Documentation / support
+
+* Documentation: http://datatables.net/extensions/colvis/
+* DataTables support forums: http://datatables.net/forums
+
+
+# GitHub
+
+If you fancy getting involved with the development of ColVis and help make it better, please refer to its GitHub repo: https://github.com/DataTables/ColVis
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/bower.json
new file mode 100644
index 0000000..716617e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/bower.json
@@ -0,0 +1,23 @@
+{
+ "name": "font-awesome",
+ "description": "Font Awesome",
+ "version": "4.3.0",
+ "keywords": [],
+ "homepage": "http://fontawesome.io",
+ "dependencies": {},
+ "devDependencies": {},
+ "license": ["OFL-1.1", "MIT", "CC-BY-3.0"],
+ "main": [
+ "./css/font-awesome.css",
+ "./fonts/*"
+ ],
+ "ignore": [
+ "*/.*",
+ "*.json",
+ "src",
+ "*.yml",
+ "Gemfile",
+ "Gemfile.lock",
+ "*.md"
+ ]
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.css
new file mode 100644
index 0000000..2dcdc22
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.css
@@ -0,0 +1,1801 @@
+/*!
+ * Font Awesome 4.3.0 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.3.0');
+ src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.3.0#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;
+ transform: translate(0, 0);
+}
+/* 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;
+}
+.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 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ 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 {
+ 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-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: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-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.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-genderless:before,
+.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-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-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";
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.css.map
new file mode 100644
index 0000000..60763a8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.css.map
@@ -0,0 +1,7 @@
+{
+"version": 3,
+"mappings": "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",
+"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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.min.css
new file mode 100644
index 0000000..24fcc04
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/css/font-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ * Font Awesome 4.3.0 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.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#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;transform:translate(0, 0)}.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}.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{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{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{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-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: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-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.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-genderless:before,.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-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-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"}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/FontAwesome.otf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/FontAwesome.otf
new file mode 100644
index 0000000..f7936cc
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/FontAwesome.otf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.eot
new file mode 100644
index 0000000..33b2bb8
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.svg
new file mode 100644
index 0000000..1ee89d4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.svg
@@ -0,0 +1,565 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
+<metadata></metadata>
+<defs>
+<font id="fontawesomeregular" horiz-adv-x="1536" >
+<font-face units-per-em="1792" ascent="1536" descent="-256" />
+<missing-glyph horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" />
+<glyph unicode="	" horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" />
+<glyph unicode="¨" horiz-adv-x="1792" />
+<glyph unicode="©" horiz-adv-x="1792" />
+<glyph unicode="®" horiz-adv-x="1792" />
+<glyph unicode="´" horiz-adv-x="1792" />
+<glyph unicode="Æ" horiz-adv-x="1792" />
+<glyph unicode="Ø" horiz-adv-x="1792" />
+<glyph unicode=" " horiz-adv-x="768" />
+<glyph unicode=" " horiz-adv-x="1537" />
+<glyph unicode=" " horiz-adv-x="768" />
+<glyph unicode=" " horiz-adv-x="1537" />
+<glyph unicode=" " horiz-adv-x="512" />
+<glyph unicode=" " horiz-adv-x="384" />
+<glyph unicode=" " horiz-adv-x="256" />
+<glyph unicode=" " horiz-adv-x="256" />
+<glyph unicode=" " horiz-adv-x="192" />
+<glyph unicode=" " horiz-adv-x="307" />
+<glyph unicode=" " horiz-adv-x="85" />
+<glyph unicode=" " horiz-adv-x="307" />
+<glyph unicode=" " horiz-adv-x="384" />
+<glyph unicode="™" horiz-adv-x="1792" />
+<glyph unicode="∞" horiz-adv-x="1792" />
+<glyph unicode="≠" horiz-adv-x="1792" />
+<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
+<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
+<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
+<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
+<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
+<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
+<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
+<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
+<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
+<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
+<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
+<glyph unicode="" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
+<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
+<glyph unicode="" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
+<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
+<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
+<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
+<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
+<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
+<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
+<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
+<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
+<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
+<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
+<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
+<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
+<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
+<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
+<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
+<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
+<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
+<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
+<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
+<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
+<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
+<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
+<glyph unicode="" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
+<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
+<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
+<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
+<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
+<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
+<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
+<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
+<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
+<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
+<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
+<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
+<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
+<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
+<glyph unicode="" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" />
+<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
+<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
+<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
+<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
+<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
+<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
+<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
+<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
+<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
+<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
+<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
+<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
+<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
+<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
+<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
+<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
+<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
+<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
+<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
+<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
+<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
+<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
+<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
+<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
+<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
+<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
+<glyph unicode="" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
+<glyph unicode="" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
+<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
+<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
+<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
+<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
+<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
+<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
+<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
+<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
+<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
+<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
+<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" />
+<glyph unicode="" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
+<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
+<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
+<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
+<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
+<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
+<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
+<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
+<glyph unicode="" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
+<glyph unicode="" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
+<glyph unicode="" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
+<glyph unicode="" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
+<glyph unicode="" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
+<glyph unicode="" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
+<glyph unicode="" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
+<glyph unicode="" horiz-adv-x="2304" d="M1509 107q0 -14 -12 -29q-52 -59 -147.5 -83t-196.5 -24q-252 0 -346 107q-12 15 -12 29q0 17 12 29.5t29 12.5q15 0 30 -12q58 -49 125.5 -66t159.5 -17t160 17t127 66q15 12 30 12q17 0 29 -12.5t12 -29.5zM978 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5 t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM1622 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM415 793q-39 27 -88 27q-66 0 -113 -47t-47 -113q0 -72 54 -121q53 141 194 254zM2020 382q0 222 -249 387 q-128 85 -291.5 126.5t-331.5 41.5t-331.5 -41.5t-292.5 -126.5q-249 -165 -249 -387t249 -387q129 -85 292.5 -126.5t331.5 -41.5t331.5 41.5t291.5 126.5q249 165 249 387zM2137 660q0 66 -47 113t-113 47q-50 0 -93 -30q140 -114 192 -256q61 48 61 126zM1993 1335 q0 49 -34.5 83.5t-82.5 34.5q-49 0 -83.5 -34.5t-34.5 -83.5q0 -48 34.5 -82.5t83.5 -34.5q48 0 82.5 34.5t34.5 82.5zM2220 660q0 -65 -33 -122t-89 -90q5 -35 5 -66q0 -139 -79 -255.5t-208 -201.5q-140 -92 -313.5 -136.5t-354.5 -44.5t-355 44.5t-314 136.5 q-129 85 -208 201.5t-79 255.5q0 36 6 71q-53 33 -83.5 88.5t-30.5 118.5q0 100 71 171.5t172 71.5q91 0 159 -60q265 170 638 177l144 456q10 29 40 29q24 0 384 -90q24 55 74 88t110 33q82 0 141 -59t59 -142t-59 -141.5t-141 -58.5q-83 0 -141.5 58.5t-59.5 140.5 l-339 80l-125 -395q349 -15 603 -179q71 63 163 63q101 0 172 -71.5t71 -171.5z" />
+<glyph unicode="" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
+<glyph unicode="" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
+<glyph unicode="" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" />
+<glyph unicode="" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
+<glyph unicode="" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
+<glyph unicode="" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" />
+<glyph unicode="" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" />
+<glyph unicode="" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
+<glyph unicode="" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" />
+<glyph unicode="" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " />
+<glyph unicode="" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
+<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
+<glyph unicode="" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " />
+<glyph unicode="" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
+<glyph unicode="" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
+<glyph unicode="" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
+<glyph unicode="" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
+<glyph unicode="" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
+<glyph unicode="" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
+<glyph unicode="" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
+<glyph unicode="" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
+<glyph unicode="" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
+<glyph unicode="" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+<glyph unicode="" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
+<glyph unicode="" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
+<glyph unicode="" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" />
+<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
+<glyph unicode="" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
+<glyph unicode="" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
+<glyph unicode="" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
+<glyph unicode="" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
+<glyph unicode="" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" />
+<glyph unicode="" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
+<glyph unicode="" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" />
+<glyph unicode="" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
+<glyph unicode="" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
+<glyph unicode="" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
+<glyph unicode="" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
+<glyph unicode="" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
+<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
+<glyph unicode="" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
+<glyph unicode="" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
+<glyph unicode="" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
+<glyph unicode="" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
+<glyph unicode="" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
+<glyph unicode="" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
+<glyph unicode="" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
+<glyph unicode="" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
+<glyph unicode="" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
+<glyph unicode="" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
+<glyph unicode="" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
+<glyph unicode="" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
+<glyph unicode="" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
+<glyph unicode="" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h416q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-419 -420q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5 t431 200.5q144 12 276.5 -30.5t236.5 -129.5l419 419h-261q-14 0 -23 9t-9 23v64zM704 -128q117 0 223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123 t223.5 -45.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
+<glyph unicode="" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1728 1536q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-229 -230l156 -156q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-156 157l-99 -100q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5 t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5t431 200.5q144 12 276.5 -30.5t236.5 -129.5l99 99l-156 156q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l156 -156l229 229h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM1280 448q0 117 -45.5 223.5t-123 184t-184 123 t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="2048" d="M2029 685q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-131q-12 -119 -67 -226t-139 -183.5t-196.5 -121.5t-234.5 -45q-180 0 -330.5 91t-234.5 247 t-74 337q8 162 94 300t226.5 219.5t302.5 85.5q166 4 310.5 -71.5t235.5 -208.5t107 -296h131v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM640 128q104 0 198.5 40.5t163.5 109.5t109.5 163.5 t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
+<glyph unicode="" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
+<glyph unicode="" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
+<glyph unicode="" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
+<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
+<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
+<glyph unicode="" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
+<glyph unicode="" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
+<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
+<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+<glyph unicode="" horiz-adv-x="1792" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.ttf
new file mode 100644
index 0000000..ed9372f
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff
new file mode 100644
index 0000000..8b280b9
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff2 b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff2
new file mode 100644
index 0000000..3311d58
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff2 differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/animated.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/animated.less
new file mode 100644
index 0000000..66ad52a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/bordered-pulled.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/bordered-pulled.less
new file mode 100644
index 0000000..0c90eb5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/bordered-pulled.less
@@ -0,0 +1,16 @@
+// Bordered & Pulled
+// -------------------------
+
+.@{fa-css-prefix}-border {
+ padding: .2em .25em .15em;
+ border: solid .08em @fa-border-color;
+ border-radius: .1em;
+}
+
+.pull-right { float: right; }
+.pull-left { float: left; }
+
+.@{fa-css-prefix} {
+ &.pull-left { margin-right: .3em; }
+ &.pull-right { margin-left: .3em; }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/core.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/core.less
new file mode 100644
index 0000000..f814f1e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/core.less
@@ -0,0 +1,13 @@
+// Base Class Definition
+// -------------------------
+
+.@{fa-css-prefix} {
+ display: inline-block;
+ font: normal normal normal @fa-font-size-base/1 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;
+ transform: translate(0, 0); // ensures no half-pixel rendering in firefox
+
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/fixed-width.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/fixed-width.less
new file mode 100644
index 0000000..110289f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/font-awesome.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/font-awesome.less
new file mode 100644
index 0000000..1f45c63
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/font-awesome.less
@@ -0,0 +1,17 @@
+/*!
+ * Font Awesome 4.3.0 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";
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/icons.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/icons.less
new file mode 100644
index 0000000..c265de5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/icons.less
@@ -0,0 +1,596 @@
+/* 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}-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:before { content: @fa-var-pied-piper; }
+.@{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}-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}-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}-genderless:before,
+.@{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}-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}-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; }
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/larger.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/larger.less
new file mode 100644
index 0000000..c9d6467
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/list.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/list.less
new file mode 100644
index 0000000..0b44038
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/mixins.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/mixins.less
new file mode 100644
index 0000000..c97f460
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/mixins.less
@@ -0,0 +1,27 @@
+// Mixins
+// --------------------------
+
+.fa-icon() {
+ display: inline-block;
+ font: normal normal normal @fa-font-size-base/1 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;
+ transform: translate(0, 0); // ensures no half-pixel rendering in firefox
+
+}
+
+.fa-icon-rotate(@degrees, @rotation) {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
+ -webkit-transform: rotate(@degrees);
+ -ms-transform: rotate(@degrees);
+ transform: rotate(@degrees);
+}
+
+.fa-icon-flip(@horiz, @vert, @rotation) {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
+ -webkit-transform: scale(@horiz, @vert);
+ -ms-transform: scale(@horiz, @vert);
+ transform: scale(@horiz, @vert);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/path.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/path.less
new file mode 100644
index 0000000..9211e66
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/rotated-flipped.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/rotated-flipped.less
new file mode 100644
index 0000000..f6ba814
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/stacked.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/stacked.less
new file mode 100644
index 0000000..fc53fb0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/variables.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/variables.less
new file mode 100644
index 0000000..d526064
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/less/variables.less
@@ -0,0 +1,606 @@
+// Variables
+// --------------------------
+
+@fa-font-path: "../fonts";
+@fa-font-size-base: 14px;
+//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts"; // for referencing Bootstrap CDN font files directly
+@fa-css-prefix: fa;
+@fa-version: "4.3.0";
+@fa-border-color: #eee;
+@fa-inverse: #fff;
+@fa-li-width: (30em / 14);
+
+@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-ambulance: "\f0f9";
+@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-asterisk: "\f069";
+@fa-var-at: "\f1fa";
+@fa-var-automobile: "\f1b9";
+@fa-var-backward: "\f04a";
+@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-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-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-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-o: "\f133";
+@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-discover: "\f1f2";
+@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-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-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-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-comments: "\f086";
+@fa-var-comments-o: "\f0e6";
+@fa-var-compass: "\f14e";
+@fa-var-compress: "\f066";
+@fa-var-connectdevelop: "\f20e";
+@fa-var-copy: "\f0c5";
+@fa-var-copyright: "\f1f9";
+@fa-var-credit-card: "\f09d";
+@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-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-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-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-external-link: "\f08e";
+@fa-var-external-link-square: "\f14c";
+@fa-var-eye: "\f06e";
+@fa-var-eye-slash: "\f070";
+@fa-var-eyedropper: "\f1fb";
+@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-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-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-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: "\f1db";
+@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-gittip: "\f184";
+@fa-var-glass: "\f000";
+@fa-var-globe: "\f0ac";
+@fa-var-google: "\f1a0";
+@fa-var-google-plus: "\f0d5";
+@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-o-down: "\f0a7";
+@fa-var-hand-o-left: "\f0a5";
+@fa-var-hand-o-right: "\f0a4";
+@fa-var-hand-o-up: "\f0a6";
+@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-html5: "\f13b";
+@fa-var-ils: "\f20b";
+@fa-var-image: "\f03e";
+@fa-var-inbox: "\f01c";
+@fa-var-indent: "\f03c";
+@fa-var-info: "\f129";
+@fa-var-info-circle: "\f05a";
+@fa-var-inr: "\f156";
+@fa-var-instagram: "\f16d";
+@fa-var-institution: "\f19c";
+@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-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-marker: "\f041";
+@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-mobile: "\f10b";
+@fa-var-mobile-phone: "\f10b";
+@fa-var-money: "\f0d6";
+@fa-var-moon-o: "\f186";
+@fa-var-mortar-board: "\f19d";
+@fa-var-motorcycle: "\f21c";
+@fa-var-music: "\f001";
+@fa-var-navicon: "\f0c9";
+@fa-var-neuter: "\f22c";
+@fa-var-newspaper-o: "\f1ea";
+@fa-var-openid: "\f19b";
+@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-paw: "\f1b0";
+@fa-var-paypal: "\f1ed";
+@fa-var-pencil: "\f040";
+@fa-var-pencil-square: "\f14b";
+@fa-var-pencil-square-o: "\f044";
+@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: "\f1a7";
+@fa-var-pied-piper-alt: "\f1a8";
+@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-puzzle-piece: "\f12e";
+@fa-var-qq: "\f1d6";
+@fa-var-qrcode: "\f029";
+@fa-var-question: "\f128";
+@fa-var-question-circle: "\f059";
+@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-square: "\f1a2";
+@fa-var-refresh: "\f021";
+@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-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-save: "\f0c7";
+@fa-var-scissors: "\f0c4";
+@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-cart: "\f07a";
+@fa-var-sign-in: "\f090";
+@fa-var-sign-out: "\f08b";
+@fa-var-signal: "\f012";
+@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-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-stop: "\f04d";
+@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-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-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-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-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-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-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-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-video-camera: "\f03d";
+@fa-var-vimeo-square: "\f194";
+@fa-var-vine: "\f1ca";
+@fa-var-vk: "\f189";
+@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-wifi: "\f1eb";
+@fa-var-windows: "\f17a";
+@fa-var-won: "\f159";
+@fa-var-wordpress: "\f19a";
+@fa-var-wrench: "\f0ad";
+@fa-var-xing: "\f168";
+@fa-var-xing-square: "\f169";
+@fa-var-yahoo: "\f19e";
+@fa-var-yelp: "\f1e9";
+@fa-var-yen: "\f157";
+@fa-var-youtube: "\f167";
+@fa-var-youtube-play: "\f16a";
+@fa-var-youtube-square: "\f166";
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_animated.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_animated.scss
new file mode 100644
index 0000000..8a020db
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_bordered-pulled.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_bordered-pulled.scss
new file mode 100644
index 0000000..9d3fdf3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_bordered-pulled.scss
@@ -0,0 +1,16 @@
+// Bordered & Pulled
+// -------------------------
+
+.#{$fa-css-prefix}-border {
+ padding: .2em .25em .15em;
+ border: solid .08em $fa-border-color;
+ border-radius: .1em;
+}
+
+.pull-right { float: right; }
+.pull-left { float: left; }
+
+.#{$fa-css-prefix} {
+ &.pull-left { margin-right: .3em; }
+ &.pull-right { margin-left: .3em; }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_core.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_core.scss
new file mode 100644
index 0000000..5a2db9d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_core.scss
@@ -0,0 +1,13 @@
+// Base Class Definition
+// -------------------------
+
+.#{$fa-css-prefix} {
+ display: inline-block;
+ font: normal normal normal #{$fa-font-size-base}/1 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;
+ transform: translate(0, 0); // ensures no half-pixel rendering in firefox
+
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_fixed-width.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_fixed-width.scss
new file mode 100644
index 0000000..b221c98
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_icons.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_icons.scss
new file mode 100644
index 0000000..fbcfe81
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_icons.scss
@@ -0,0 +1,596 @@
+/* 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}-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:before { content: $fa-var-pied-piper; }
+.#{$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}-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}-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}-genderless:before,
+.#{$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}-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}-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; }
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_larger.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_larger.scss
new file mode 100644
index 0000000..41e9a81
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_list.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_list.scss
new file mode 100644
index 0000000..7d1e4d5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_mixins.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_mixins.scss
new file mode 100644
index 0000000..6b7f160
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_mixins.scss
@@ -0,0 +1,27 @@
+// Mixins
+// --------------------------
+
+@mixin fa-icon() {
+ display: inline-block;
+ font: normal normal normal #{$fa-font-size-base}/1 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;
+ transform: translate(0, 0); // ensures no half-pixel rendering in firefox
+
+}
+
+@mixin fa-icon-rotate($degrees, $rotation) {
+ 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) {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
+ -webkit-transform: scale($horiz, $vert);
+ -ms-transform: scale($horiz, $vert);
+ transform: scale($horiz, $vert);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_path.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_path.scss
new file mode 100644
index 0000000..bb457c2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_rotated-flipped.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_rotated-flipped.scss
new file mode 100644
index 0000000..a3558fd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_stacked.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_stacked.scss
new file mode 100644
index 0000000..aef7403
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_variables.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_variables.scss
new file mode 100644
index 0000000..9b7210e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/_variables.scss
@@ -0,0 +1,606 @@
+// Variables
+// --------------------------
+
+$fa-font-path: "../fonts" !default;
+$fa-font-size-base: 14px !default;
+//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts" !default; // for referencing Bootstrap CDN font files directly
+$fa-css-prefix: fa !default;
+$fa-version: "4.3.0" !default;
+$fa-border-color: #eee !default;
+$fa-inverse: #fff !default;
+$fa-li-width: (30em / 14) !default;
+
+$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-ambulance: "\f0f9";
+$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-asterisk: "\f069";
+$fa-var-at: "\f1fa";
+$fa-var-automobile: "\f1b9";
+$fa-var-backward: "\f04a";
+$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-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-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-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-o: "\f133";
+$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-discover: "\f1f2";
+$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-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-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-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-comments: "\f086";
+$fa-var-comments-o: "\f0e6";
+$fa-var-compass: "\f14e";
+$fa-var-compress: "\f066";
+$fa-var-connectdevelop: "\f20e";
+$fa-var-copy: "\f0c5";
+$fa-var-copyright: "\f1f9";
+$fa-var-credit-card: "\f09d";
+$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-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-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-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-external-link: "\f08e";
+$fa-var-external-link-square: "\f14c";
+$fa-var-eye: "\f06e";
+$fa-var-eye-slash: "\f070";
+$fa-var-eyedropper: "\f1fb";
+$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-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-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-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: "\f1db";
+$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-gittip: "\f184";
+$fa-var-glass: "\f000";
+$fa-var-globe: "\f0ac";
+$fa-var-google: "\f1a0";
+$fa-var-google-plus: "\f0d5";
+$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-o-down: "\f0a7";
+$fa-var-hand-o-left: "\f0a5";
+$fa-var-hand-o-right: "\f0a4";
+$fa-var-hand-o-up: "\f0a6";
+$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-html5: "\f13b";
+$fa-var-ils: "\f20b";
+$fa-var-image: "\f03e";
+$fa-var-inbox: "\f01c";
+$fa-var-indent: "\f03c";
+$fa-var-info: "\f129";
+$fa-var-info-circle: "\f05a";
+$fa-var-inr: "\f156";
+$fa-var-instagram: "\f16d";
+$fa-var-institution: "\f19c";
+$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-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-marker: "\f041";
+$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-mobile: "\f10b";
+$fa-var-mobile-phone: "\f10b";
+$fa-var-money: "\f0d6";
+$fa-var-moon-o: "\f186";
+$fa-var-mortar-board: "\f19d";
+$fa-var-motorcycle: "\f21c";
+$fa-var-music: "\f001";
+$fa-var-navicon: "\f0c9";
+$fa-var-neuter: "\f22c";
+$fa-var-newspaper-o: "\f1ea";
+$fa-var-openid: "\f19b";
+$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-paw: "\f1b0";
+$fa-var-paypal: "\f1ed";
+$fa-var-pencil: "\f040";
+$fa-var-pencil-square: "\f14b";
+$fa-var-pencil-square-o: "\f044";
+$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: "\f1a7";
+$fa-var-pied-piper-alt: "\f1a8";
+$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-puzzle-piece: "\f12e";
+$fa-var-qq: "\f1d6";
+$fa-var-qrcode: "\f029";
+$fa-var-question: "\f128";
+$fa-var-question-circle: "\f059";
+$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-square: "\f1a2";
+$fa-var-refresh: "\f021";
+$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-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-save: "\f0c7";
+$fa-var-scissors: "\f0c4";
+$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-cart: "\f07a";
+$fa-var-sign-in: "\f090";
+$fa-var-sign-out: "\f08b";
+$fa-var-signal: "\f012";
+$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-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-stop: "\f04d";
+$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-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-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-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-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-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-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-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-video-camera: "\f03d";
+$fa-var-vimeo-square: "\f194";
+$fa-var-vine: "\f1ca";
+$fa-var-vk: "\f189";
+$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-wifi: "\f1eb";
+$fa-var-windows: "\f17a";
+$fa-var-won: "\f159";
+$fa-var-wordpress: "\f19a";
+$fa-var-wrench: "\f0ad";
+$fa-var-xing: "\f168";
+$fa-var-xing-square: "\f169";
+$fa-var-yahoo: "\f19e";
+$fa-var-yelp: "\f1e9";
+$fa-var-yen: "\f157";
+$fa-var-youtube: "\f167";
+$fa-var-youtube-play: "\f16a";
+$fa-var-youtube-square: "\f166";
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/font-awesome.scss b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/font-awesome.scss
new file mode 100644
index 0000000..388ac6b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/font-awesome/scss/font-awesome.scss
@@ -0,0 +1,17 @@
+/*!
+ * Font Awesome 4.3.0 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";
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/prettify.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/prettify.min.css
new file mode 100644
index 0000000..d44b3a2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/prettify.min.css
@@ -0,0 +1 @@
+.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/prettify.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/prettify.min.js
new file mode 100644
index 0000000..7b99049
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/prettify.min.js
@@ -0,0 +1,30 @@
+!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
+(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:"0"<=a&&a<="7"?parseInt(e.substring(1),8):a==="u"||a==="x"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return e==="\\"||e==="-"||e==="]"||e==="^"?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),e=[],a=
+b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,f=b.length;a<f;++a){var h=b[a];if(/\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),l;a+2<f&&"-"===b[a+1]?(l=d(b[a+2]),a+=2):l=h;e.push([h,l]);l<65||h>122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=f[1]+1?f[1]=Math.max(f[1],h[1]):b.push(f=h);for(a=0;a<b.length;++a)h=b[a],c.push(g(h[0])),
+h[1]>h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(g(h[1])));c.push("]");return c.join("")}function s(e){for(var a=e.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],f=0,h=0;f<c;++f){var l=a[f];l==="("?++h:"\\"===l.charAt(0)&&(l=+l.substring(1))&&(l<=h?d[l]=-1:a[f]=g(l))}for(f=1;f<d.length;++f)-1===d[f]&&(d[f]=++x);for(h=f=0;f<c;++f)l=a[f],l==="("?(++h,d[h]||(a[f]="(?:")):"\\"===l.charAt(0)&&(l=+l.substring(1))&&l<=h&&
+(a[f]="\\"+d[l]);for(f=0;f<c;++f)"^"===a[f]&&"^"!==a[f+1]&&(a[f]="");if(e.ignoreCase&&m)for(f=0;f<c;++f)l=a[f],e=l.charAt(0),l.length>=2&&e==="["?a[f]=b(l):e!=="\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k<c;++k){var i=a[k];if(i.ignoreCase)j=!0;else if(/[a-z]/i.test(i.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){m=!0;j=!1;break}}for(var r={b:8,t:9,n:10,v:11,
+f:12,r:13},n=[],k=0,c=a.length;k<c;++k){i=a[k];if(i.global||i.multiline)throw Error(""+i);n.push("(?:"+s(i)+")")}return RegExp(n.join("|"),j?"gi":"g")}function T(a,d){function g(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)g(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)s[j]="\n",m[j<<1]=x++,m[j++<<1|1]=a}}else if(c==3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),s[j]=c,m[j<<1]=x,x+=c.length,m[j++<<1|1]=
+a)}var b=/(?:^|\s)nocode(?:\s|$)/,s=[],x=0,m=[],j=0;g(a);return{a:s.join("").replace(/\n$/,""),d:m}}function H(a,d,g,b){d&&(a={a:d,e:a},g(a),b.push.apply(b,a.g))}function U(a){for(var d=void 0,g=a.firstChild;g;g=g.nextSibling)var b=g.nodeType,d=b===1?d?a:g:b===3?V.test(g.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function g(a){for(var j=a.e,k=[j,"pln"],c=0,i=a.a.match(s)||[],r={},n=0,e=i.length;n<e;++n){var z=i[n],w=r[z],t=void 0,f;if(typeof w==="string")f=!1;else{var h=b[z.charAt(0)];
+if(h)t=z.match(h[1]),w=h[0];else{for(f=0;f<x;++f)if(h=d[f],t=z.match(h[1])){w=h[0];break}t||(w="pln")}if((f=w.length>=5&&"lang-"===w.substring(0,5))&&!(t&&typeof t[1]==="string"))f=!1,w="src";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c<i;++c){var r=
+g[c],n=r[3];if(n)for(var e=n.length;--e>=0;)b[n.charAt(e)]=r;r=r[1];n=""+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\S\s]/);s=S(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
+q,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&g.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),g.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,q])):d.push(["com",
+/^#[^\n\r]*/,q,"#"]));a.cStyleComments&&(g.push(["com",/^\/\/[^\n\r]*/,q]),g.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?"":"\n\r")?".":"[\\S\\s]";g.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+s+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+
+s+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&g.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&g.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),q]);d.push(["pln",/^\s+/,q," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");g.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,
+q],["pun",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if("br"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d=
+c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,j=a.ownerDocument,k=j.createElement("li");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i<c.length;++i)b(c[i]);d===(d|0)&&c[0].setAttribute("value",d);var r=j.createElement("ol");
+r.className="linenums";for(var d=Math.max(0,d-1|0)||0,i=0,n=c.length;i<n;++i)k=c[i],k.className="L"+(i+d)%10,k.firstChild||k.appendChild(j.createTextNode("\u00a0")),r.appendChild(k);a.appendChild(r)}function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return F[a]}function K(a){var d=a.h;try{var g=T(a.c,a.i),b=g.a;
+a.a=b;a.d=g.d;a.e=0;I(d,b)(a);var s=/\bMSIE\s(\d+)/.exec(navigator.userAgent),s=s&&+s[1]<=8,d=/\n/g,x=a.a,m=x.length,g=0,j=a.d,k=j.length,b=0,c=a.g,i=c.length,r=0;c[i]=m;var n,e;for(e=n=0;e<i;)c[e]!==c[e+2]?(c[n++]=c[e++],c[n++]=c[e++]):e+=2;i=n;for(e=n=0;e<i;){for(var p=c[e],w=c[e+1],t=e+2;t+2<=i&&c[t+1]===w;)t+=2;c[n++]=p;c[n++]=w;e=t}c.length=n;var f=a.c,h;if(f)h=f.style.display,f.style.display="none";try{for(;b<k;){var l=j[b+2]||m,B=c[r+2]||m,t=Math.min(l,B),A=j[b+1],G;if(A.nodeType!==1&&(G=x.substring(g,
+t))){s&&(G=G.replace(d,"\r"));A.nodeValue=G;var L=A.ownerDocument,o=L.createElement("span");o.className=c[r+1];var v=A.parentNode;v.replaceChild(o,A);o.appendChild(A);g<l&&(j[b+1]=A=L.createTextNode(x.substring(t,l)),v.insertBefore(A,o.nextSibling))}g=t;g>=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=["break,continue,do,else,for,if,return,while"],E=[[y,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],M=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],N=[E,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
+O=[N,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],P=[y,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
+Q=[y,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],W=[y,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],y=[y,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],R=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
+V=/\S/,X=v({keywords:[M,O,E,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",P,Q,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,["default-code"]);p(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
+/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);p(C([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
+["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);p(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);p(v({keywords:M,hashComments:!0,cStyleComments:!0,types:R}),["c","cc","cpp","cxx","cyc","m"]);p(v({keywords:"null,true,false"}),["json"]);p(v({keywords:O,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:R}),
+["cs"]);p(v({keywords:N,cStyleComments:!0}),["java"]);p(v({keywords:y,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);p(v({keywords:P,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);p(v({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);p(v({keywords:Q,
+hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);p(v({keywords:E,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);p(v({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);p(v({keywords:W,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
+p(C([],[["str",/^[\S\s]+/]]),["regex"]);var Y=D.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:v,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:D.prettyPrintOne=function(a,d,g){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;g&&J(b,g,!0);K({h:d,j:g,c:b,i:1});
+return b.innerHTML},prettyPrint:D.prettyPrint=function(a,d){function g(){for(var b=D.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;i<p.length&&c.now()<b;i++){for(var d=p[i],j=h,k=d;k=k.previousSibling;){var m=k.nodeType,o=(m===7||m===8)&&k.nodeValue;if(o?!/^\??prettify\b/.test(o):m!==3||/\S/.test(k.nodeValue))break;if(o){j={};o.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){j[b]=c});break}}k=d.className;if((j!==h||e.test(k))&&!v.test(k)){m=!1;for(o=d.parentNode;o;o=o.parentNode)if(f.test(o.tagName)&&
+o.className&&e.test(o.className)){m=!0;break}if(!m){d.className+=" prettyprinted";m=j.lang;if(!m){var m=k.match(n),y;if(!m&&(y=U(d))&&t.test(y.tagName))m=y.className.match(n);m&&(m=m[1])}if(w.test(d.tagName))o=1;else var o=d.currentStyle,u=s.defaultView,o=(o=o?o.whiteSpace:u&&u.getComputedStyle?u.getComputedStyle(d,q).getPropertyValue("white-space"):0)&&"pre"===o.substring(0,3);u=j.linenums;if(!(u=u==="true"||+u))u=(u=k.match(/\blinenums\b(?::(\d+))?/))?u[1]&&u[1].length?+u[1]:!0:!1;u&&J(d,u,o);r=
+{h:m,c:d,j:u,i:o};K(r)}}}i<p.length?setTimeout(g,250):"function"===typeof a&&a()}for(var b=d||document.body,s=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],p=[],m=0;m<b.length;++m)for(var j=0,k=b[m].length;j<k;++j)p.push(b[m][j]);var b=q,c=Date;c.now||(c={now:function(){return+new Date}});var i=0,r,n=/\blang(?:uage)?-([\w.]+)(?!\S)/,e=/\bprettyprint\b/,v=/\bprettyprinted\b/,w=/pre|xmp/i,t=/^code$/i,f=/^(?:pre|code|xmp)$/i,
+h={};g()}};typeof define==="function"&&define.amd&&define("google-code-prettify",[],function(){return Y})})();}()
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/run_prettify.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/run_prettify.min.js
new file mode 100644
index 0000000..9eb3e16
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bin/run_prettify.min.js
@@ -0,0 +1,34 @@
+!function(){var r=null;
+(function(){function X(e){function j(){try{J.doScroll("left")}catch(e){P(j,50);return}w("poll")}function w(j){if(!(j.type=="readystatechange"&&x.readyState!="complete")&&((j.type=="load"?n:x)[z](i+j.type,w,!1),!m&&(m=!0)))e.call(n,j.type||j)}var Y=x.addEventListener,m=!1,C=!0,t=Y?"addEventListener":"attachEvent",z=Y?"removeEventListener":"detachEvent",i=Y?"":"on";if(x.readyState=="complete")e.call(n,"lazy");else{if(x.createEventObject&&J.doScroll){try{C=!n.frameElement}catch(A){}C&&j()}x[t](i+"DOMContentLoaded",
+w,!1);x[t](i+"readystatechange",w,!1);n[t](i+"load",w,!1)}}function Q(){S&&X(function(){var e=K.length;$(e?function(){for(var j=0;j<e;++j)(function(e){P(function(){n.exports[K[e]].apply(n,arguments)},0)})(j)}:void 0)})}for(var n=window,P=n.setTimeout,x=document,J=x.documentElement,L=x.head||x.getElementsByTagName("head")[0]||J,z="",A=x.scripts,m=A.length;--m>=0;){var M=A[m],T=M.src.match(/^[^#?]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);if(T){z=T[1]||"";M.parentNode.removeChild(M);break}}var S=!0,D=
+[],N=[],K=[];z.replace(/[&?]([^&=]+)=([^&]+)/g,function(e,j,w){w=decodeURIComponent(w);j=decodeURIComponent(j);j=="autorun"?S=!/^[0fn]/i.test(w):j=="lang"?D.push(w):j=="skin"?N.push(w):j=="callback"&&K.push(w)});m=0;for(z=D.length;m<z;++m)(function(){var e=x.createElement("script");e.onload=e.onerror=e.onreadystatechange=function(){if(e&&(!e.readyState||/loaded|complete/.test(e.readyState)))e.onerror=e.onload=e.onreadystatechange=r,--R,R||P(Q,0),e.parentNode&&e.parentNode.removeChild(e),e=r};e.type=
+"text/javascript";e.src="https://google-code-prettify.googlecode.com/svn/loader/lang-"+encodeURIComponent(D[m])+".js";L.insertBefore(e,L.firstChild)})(D[m]);for(var R=D.length,A=[],m=0,z=N.length;m<z;++m)A.push("https://google-code-prettify.googlecode.com/svn/loader/skins/"+encodeURIComponent(N[m])+".css");A.push("https://google-code-prettify.googlecode.com/svn/loader/prettify.css");(function(e){function j(m){if(m!==w){var n=x.createElement("link");n.rel="stylesheet";n.type="text/css";if(m+1<w)n.error=
+n.onerror=function(){j(m+1)};n.href=e[m];L.appendChild(n)}}var w=e.length;j(0)})(A);var $=function(){window.PR_SHOULD_USE_CONTINUATION=!0;var e;(function(){function j(a){function d(f){var b=f.charCodeAt(0);if(b!==92)return b;var a=f.charAt(1);return(b=i[a])?b:"0"<=a&&a<="7"?parseInt(f.substring(1),8):a==="u"||a==="x"?parseInt(f.substring(2),16):f.charCodeAt(1)}function h(f){if(f<32)return(f<16?"\\x0":"\\x")+f.toString(16);f=String.fromCharCode(f);return f==="\\"||f==="-"||f==="]"||f==="^"?"\\"+f:
+f}function b(f){var b=f.substring(1,f.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),f=[],a=b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;a<g;++a){var k=b[a];if(/\\[bdsw]/i.test(k))c.push(k);else{var k=d(k),o;a+2<g&&"-"===b[a+1]?(o=d(b[a+2]),a+=2):o=k;f.push([k,o]);o<65||k>122||(o<65||k>90||f.push([Math.max(65,k)|32,Math.min(o,90)|32]),o<97||k>122||f.push([Math.max(97,k)&-33,Math.min(o,122)&-33]))}}f.sort(function(f,a){return f[0]-
+a[0]||a[1]-f[1]});b=[];g=[];for(a=0;a<f.length;++a)k=f[a],k[0]<=g[1]+1?g[1]=Math.max(g[1],k[1]):b.push(g=k);for(a=0;a<b.length;++a)k=b[a],c.push(h(k[0])),k[1]>k[0]&&(k[1]+1>k[0]&&c.push("-"),c.push(h(k[1])));c.push("]");return c.join("")}function e(f){for(var a=f.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],g=0,k=0;g<c;++g){var o=a[g];o==="("?++k:"\\"===o.charAt(0)&&(o=+o.substring(1))&&(o<=k?d[o]=-1:a[g]=h(o))}for(g=
+1;g<d.length;++g)-1===d[g]&&(d[g]=++j);for(k=g=0;g<c;++g)o=a[g],o==="("?(++k,d[k]||(a[g]="(?:")):"\\"===o.charAt(0)&&(o=+o.substring(1))&&o<=k&&(a[g]="\\"+d[o]);for(g=0;g<c;++g)"^"===a[g]&&"^"!==a[g+1]&&(a[g]="");if(f.ignoreCase&&F)for(g=0;g<c;++g)o=a[g],f=o.charAt(0),o.length>=2&&f==="["?a[g]=b(o):f!=="\\"&&(a[g]=o.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var j=0,F=!1,l=!1,I=0,c=a.length;I<c;++I){var p=a[I];if(p.ignoreCase)l=
+!0;else if(/[a-z]/i.test(p.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){F=!0;l=!1;break}}for(var i={b:8,t:9,n:10,v:11,f:12,r:13},q=[],I=0,c=a.length;I<c;++I){p=a[I];if(p.global||p.multiline)throw Error(""+p);q.push("(?:"+e(p)+")")}return RegExp(q.join("|"),l?"gi":"g")}function m(a,d){function h(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)h(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)e[l]="\n",F[l<<1]=j++,F[l++<<1|1]=a}}else if(c==
+3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),e[l]=c,F[l<<1]=j,j+=c.length,F[l++<<1|1]=a)}var b=/(?:^|\s)nocode(?:\s|$)/,e=[],j=0,F=[],l=0;h(a);return{a:e.join("").replace(/\n$/,""),d:F}}function n(a,d,h,b){d&&(a={a:d,e:a},h(a),b.push.apply(b,a.g))}function x(a){for(var d=void 0,h=a.firstChild;h;h=h.nextSibling)var b=h.nodeType,d=b===1?d?a:h:b===3?S.test(h.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function h(a){for(var l=a.e,j=[l,"pln"],c=
+0,p=a.a.match(e)||[],m={},q=0,f=p.length;q<f;++q){var B=p[q],y=m[B],u=void 0,g;if(typeof y==="string")g=!1;else{var k=b[B.charAt(0)];if(k)u=B.match(k[1]),y=k[0];else{for(g=0;g<i;++g)if(k=d[g],u=B.match(k[1])){y=k[0];break}u||(y="pln")}if((g=y.length>=5&&"lang-"===y.substring(0,5))&&!(u&&typeof u[1]==="string"))g=!1,y="src";g||(m[B]=y)}k=c;c+=B.length;if(g){g=u[1];var o=B.indexOf(g),H=o+g.length;u[2]&&(H=B.length-u[2].length,o=H-g.length);y=y.substring(5);n(l+k,B.substring(0,o),h,j);n(l+k+o,g,A(y,
+g),j);n(l+k+H,B.substring(H),h,j)}else j.push(l+k,y)}a.g=j}var b={},e;(function(){for(var h=a.concat(d),l=[],i={},c=0,p=h.length;c<p;++c){var m=h[c],q=m[3];if(q)for(var f=q.length;--f>=0;)b[q.charAt(f)]=m;m=m[1];q=""+m;i.hasOwnProperty(q)||(l.push(m),i[q]=r)}l.push(/[\S\s]/);e=j(l)})();var i=d.length;return h}function t(a){var d=[],h=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,
+r,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,r,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,r,"\"'"]);a.verbatimStrings&&h.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,r]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,r,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,
+r,"#"]),h.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,r])):d.push(["com",/^#[^\n\r]*/,r,"#"]));a.cStyleComments&&(h.push(["com",/^\/\/[^\n\r]*/,r]),h.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,r]));if(b=a.regexLiterals){var e=(b=b>1?"":"\n\r")?".":"[\\S\\s]";h.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+
+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+e+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+e+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&h.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&h.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),r]);d.push(["pln",/^\s+/,r," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");h.push(["lit",/^@[$_a-z][\w$@]*/i,r],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,r],["pln",/^[$_a-z][\w$@]*/i,r],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,
+r,"0123456789"],["pln",/^\\[\S\s]?/,r],["pun",RegExp(b),r]);return C(d,h)}function z(a,d,h){function b(a){var c=a.nodeType;if(c==1&&!j.test(a.className))if("br"===a.nodeName)e(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&h){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),e(a),c||a.parentNode.removeChild(a)}}
+function e(a){function b(a,c){var d=c?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),h=a.nextSibling;f.appendChild(d);for(var e=h;e;e=h)h=e.nextSibling,f.appendChild(e)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var j=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,l=a.ownerDocument,i=l.createElement("li");a.firstChild;)i.appendChild(a.firstChild);for(var c=[i],p=0;p<c.length;++p)b(c[p]);d===(d|0)&&c[0].setAttribute("value",
+d);var n=l.createElement("ol");n.className="linenums";for(var d=Math.max(0,d-1|0)||0,p=0,q=c.length;p<q;++p)i=c[p],i.className="L"+(p+d)%10,i.firstChild||i.appendChild(l.createTextNode("\u00a0")),n.appendChild(i);a.appendChild(n)}function i(a,d){for(var h=d.length;--h>=0;){var b=d[h];U.hasOwnProperty(b)?V.console&&console.warn("cannot override language handler %s",b):U[b]=a}}function A(a,d){if(!a||!U.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return U[a]}function D(a){var d=
+a.h;try{var h=m(a.c,a.i),b=h.a;a.a=b;a.d=h.d;a.e=0;A(d,b)(a);var e=/\bMSIE\s(\d+)/.exec(navigator.userAgent),e=e&&+e[1]<=8,d=/\n/g,i=a.a,j=i.length,h=0,l=a.d,n=l.length,b=0,c=a.g,p=c.length,t=0;c[p]=j;var q,f;for(f=q=0;f<p;)c[f]!==c[f+2]?(c[q++]=c[f++],c[q++]=c[f++]):f+=2;p=q;for(f=q=0;f<p;){for(var x=c[f],y=c[f+1],u=f+2;u+2<=p&&c[u+1]===y;)u+=2;c[q++]=x;c[q++]=y;f=u}c.length=q;var g=a.c,k;if(g)k=g.style.display,g.style.display="none";try{for(;b<n;){var o=l[b+2]||j,H=c[t+2]||j,u=Math.min(o,H),E=l[b+
+1],W;if(E.nodeType!==1&&(W=i.substring(h,u))){e&&(W=W.replace(d,"\r"));E.nodeValue=W;var Z=E.ownerDocument,s=Z.createElement("span");s.className=c[t+1];var z=E.parentNode;z.replaceChild(s,E);s.appendChild(E);h<o&&(l[b+1]=E=Z.createTextNode(i.substring(u,o)),z.insertBefore(E,s.nextSibling))}h=u;h>=o&&(b+=2);h>=H&&(t+=2)}}finally{if(g)g.style.display=k}}catch(v){V.console&&console.log(v&&v.stack||v)}}var V=window,G=["break,continue,do,else,for,if,return,while"],O=[[G,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],J=[O,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],K=[O,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
+L=[K,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],O=[O,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],M=[G,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
+N=[G,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],R=[G,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],G=[G,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],Q=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
+S=/\S/,T=t({keywords:[J,L,O,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",M,N,G],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),U={};i(T,["default-code"]);i(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
+/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);i(C([["pln",/^\s+/,r," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,r,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
+["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);i(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);i(t({keywords:J,hashComments:!0,cStyleComments:!0,types:Q}),["c","cc","cpp","cxx","cyc","m"]);i(t({keywords:"null,true,false"}),["json"]);i(t({keywords:L,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:Q}),
+["cs"]);i(t({keywords:K,cStyleComments:!0}),["java"]);i(t({keywords:G,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);i(t({keywords:M,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);i(t({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);i(t({keywords:N,
+hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);i(t({keywords:O,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);i(t({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);i(t({keywords:R,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
+i(C([],[["str",/^[\S\s]+/]]),["regex"]);var X=V.PR={createSimpleLexer:C,registerLangHandler:i,sourceDecorator:t,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:function(a,d,e){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;e&&z(b,e,!0);D({h:d,j:e,c:b,i:1});return b.innerHTML},
+prettyPrint:e=e=function(a,d){function e(){for(var b=V.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p<j.length&&c.now()<b;p++){for(var d=j[p],m=k,l=d;l=l.previousSibling;){var n=l.nodeType,s=(n===7||n===8)&&l.nodeValue;if(s?!/^\??prettify\b/.test(s):n!==3||/\S/.test(l.nodeValue))break;if(s){m={};s.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){m[b]=c});break}}l=d.className;if((m!==k||f.test(l))&&!w.test(l)){n=!1;for(s=d.parentNode;s;s=s.parentNode)if(g.test(s.tagName)&&s.className&&f.test(s.className)){n=
+!0;break}if(!n){d.className+=" prettyprinted";n=m.lang;if(!n){var n=l.match(q),A;if(!n&&(A=x(d))&&u.test(A.tagName))n=A.className.match(q);n&&(n=n[1])}if(y.test(d.tagName))s=1;else var s=d.currentStyle,v=i.defaultView,s=(s=s?s.whiteSpace:v&&v.getComputedStyle?v.getComputedStyle(d,r).getPropertyValue("white-space"):0)&&"pre"===s.substring(0,3);v=m.linenums;if(!(v=v==="true"||+v))v=(v=l.match(/\blinenums\b(?::(\d+))?/))?v[1]&&v[1].length?+v[1]:!0:!1;v&&z(d,v,s);t={h:n,c:d,j:v,i:s};D(t)}}}p<j.length?
+P(e,250):"function"===typeof a&&a()}for(var b=d||document.body,i=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],j=[],m=0;m<b.length;++m)for(var l=0,n=b[m].length;l<n;++l)j.push(b[m][l]);var b=r,c=Date;c.now||(c={now:function(){return+new Date}});var p=0,t,q=/\blang(?:uage)?-([\w.]+)(?!\S)/,f=/\bprettyprint\b/,w=/\bprettyprinted\b/,y=/pre|xmp/i,u=/^code$/i,g=/^(?:pre|code|xmp)$/i,k={};e()}};typeof define==="function"&&define.amd&&
+define("google-code-prettify",[],function(){return X})})();return e}();R||P(Q,0)})();}()
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bower.json
new file mode 100644
index 0000000..5980a67
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/bower.json
@@ -0,0 +1,16 @@
+{
+ "name": "google-code-prettify",
+ "version": "1.0.1",
+ "main": [
+ "./bin/prettify.min.css",
+ "./bin/prettify.min.js"
+ ],
+ "dependencies": {},
+ "ignore": [
+ "closure-compiler",
+ "js-modules",
+ "tests",
+ "yui-compressor",
+ "Makefile"
+ ]
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/CHANGES.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/CHANGES.html
new file mode 100644
index 0000000..de9e2b7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/CHANGES.html
@@ -0,0 +1,172 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>Change Log</title>
+ </head>
+ <body bgcolor="white">
+ <a style="float:right" href="README.html">README</a>
+
+ <h1>Known Issues</h1>
+ <ul>
+ <li>Perl formatting is really crappy. Partly because the author is lazy and
+ partly because Perl is
+ <a href="http://www.perlmonks.org/?node_id=663393">hard</a> to parse.
+ <li>On some browsers, <code><code></code> elements with newlines in the text
+ which use CSS to specify <code>white-space:pre</code> will have the newlines
+ improperly stripped if the element is not attached to the document at the time
+ the stripping is done. Also, on IE 6, all newlines will be stripped from
+ <code><code></code> elements because of the way IE6 produces
+ <code>innerHTML</code>. Workaround: use <code><pre></code> for code with
+ newlines.
+ </ul>
+
+ <h1>Change Log</h1>
+ <h2>29 March 2007</h2>
+ <ul>
+ <li>Added <a href="tests/prettify_test.html#PHP">tests</a> for PHP support
+ to address
+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=3"
+ >issue 3</a>.
+ <li>Fixed
+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=6"
+ >bug</a>: <code>prettyPrintOne</code> was not halting. This was not
+ reachable through the normal entry point.
+ <li>Fixed
+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=4"
+ >bug</a>: recursing into a script block or PHP tag that was not properly
+ closed would not silently drop the content.
+ (<a href="tests/prettify_test.html#issue4">test</a>)
+ <li>Fixed
+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=8"
+ >bug</a>: was eating tabs
+ (<a href="tests/prettify_test.html#issue8">test</a>)
+ <li>Fixed entity handling so that the caveat
+ <blockquote>
+ <p>Caveats: please properly escape less-thans. <tt>x&lt;y</tt>
+ instead of <tt>x<y</tt>, and use <tt>"</tt> instead of
+ <tt>&quot;</tt> for string delimiters.</p>
+ </blockquote>
+ is no longer applicable.
+ <li>Added noisefree's C#
+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=4"
+ >patch</a>
+ <li>Added a <a href="http://google-code-prettify.googlecode.com/files/prettify-small.zip">distribution</a> that has comments and
+ whitespace removed to reduce download size from 45.5kB to 12.8kB.
+ </ul>
+ <h2>4 Jul 2008</h2>
+ <ul>
+ <li>Added <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=17">language specific formatters</a> that are triggered by the presence
+ of a <code>lang-<language-file-extension></code></li>
+ <li>Fixed <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=29">bug</a>: python handling of <code>'''string'''</code>
+ <li>Fixed bug: <code>/</code> in regex <code>[charsets] should not end regex</code>
+ </ul>
+ <h2>5 Jul 2008</h2>
+ <ul>
+ <li>Defined language extensions for Lisp and Lua</code>
+ </ul>
+ <h2>14 Jul 2008</h2>
+ <ul>
+ <li>Language handlers for F#, OCAML, SQL</code>
+ <li>Support for <code>nocode</code> spans to allow embedding of line
+ numbers and code annotations which should not be styled or otherwise
+ affect the tokenization of prettified code.
+ See the issue 22
+ <a href="tests/prettify_test.html#issue22">testcase</a>.</code>
+ </ul>
+ <h2>6 Jan 2009</h2>
+ <ul>
+ <li>Language handlers for Visual Basic, Haskell, CSS, and WikiText</li>
+ <li>Added <tt>.mxml</tt> extension to the markup style handler for
+ Flex <a href="http://en.wikipedia.org/wiki/MXML">MXML files</a>. See
+ <a
+ href="http://code.google.com/p/google-code-prettify/issues/detail?id=37"
+ >issue 37</a>.
+ <li>Added <tt>.m</tt> extension to the C style handler so that Objective
+ C source files properly highlight. See
+ <a
+ href="http://code.google.com/p/google-code-prettify/issues/detail?id=58"
+ >issue 58</a>.
+ <li>Changed HTML lexer to use the same embedded source mechanism as the
+ wiki language handler, and changed to use the registered
+ CSS handler for STYLE element content.
+ </ul>
+ <h2>21 May 2009</h2>
+ <ul>
+ <li>Rewrote to improve performance on large files.
+ See <a href="http://mikesamuel.blogspot.com/2009/05/efficient-parsing-in-javascript.html">benchmarks</a>.</li>
+ <li>Fixed bugs with highlighting of Haskell line comments, Lisp
+ number literals, Lua strings, C preprocessor directives,
+ newlines in Wiki code on Windows, and newlines in IE6.</li>
+ </ul>
+ <h2>14 August 2009</h2>
+ <ul>
+ <li>Fixed prettifying of <code><code></code> blocks with embedded newlines.
+ </ul>
+ <h2>3 October 2009</h2>
+ <ul>
+ <li>Fixed prettifying of XML/HTML tags that contain uppercase letters.
+ </ul>
+ <h2>19 July 2010</h2>
+ <ul>
+ <li>Added support for line numbers. Bug
+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=22"
+ >22</a></li>
+ <li>Added YAML support. Bug
+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=123"
+ >123</a></li>
+ <li>Added VHDL support courtesy Le Poussin.</li>
+ <li>IE performance improvements. Bug
+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=102"
+ >102</a> courtesy jacobly.</li>
+ <li>A variety of markup formatting fixes courtesy smain and thezbyg.</li>
+ <li>Fixed copy and paste in IE[678].
+ <li>Changed output to use <code>&#160;</code> instead of
+ <code>&nbsp;</code> so that the output works when embedded in XML.
+ Bug
+ <a href="http://code.google.com/p/google-code-prettify/issues/detail?id=108"
+ >108</a>.</li>
+ </ul>
+ <h2>7 September 2010</h2>
+ <ul>
+ <li>Added support for coffeescript courtesy Cezary Bartoszuk.</li>
+ </ul>
+ <h2>4 March 2011</h2>
+ <ul>
+ <li>Added a <a href="http://google-code-prettify.googlecode.com/svn/trunk/styles/index.html">themes
+ gallery</a> to showcase contributed styles.</li>
+ <li>Added support for XQuery courtesy Patrick Wied, Nemerle
+ courtesy Zimin A.V., and Latex support courtesy Martin S.</li>
+ </ul>
+ <h2>29 March 2011</h2>
+ <ul>
+ <li>Fixed IE newline issues, and copying/pasting of prettified
+ source code from IE. This required significant internal changes
+ but involves no API changes.
+ <b>Caveat:</b> <code>prettyPrintOne</code> injects the HTML
+ passed to it into a <code><pre></code> element.
+ If the HTML comes from a trusted source, this may allow XSS.
+ Do not do this. This should not be a problem for existing apps
+ since the standard usage is to rewrite the HTML and then inject
+ it, so anyone doing that with untrusted HTML already has an XSS
+ vulnerability. If you sanitize and prettify HTML from an
+ untrusted source, sanitize first.
+ </ul>
+ <h2>4 February 2013</h2>
+ <ul>
+ <li>Language handlers for Dart, Erlang, Mumps, TCL, R, S., and others</li>
+ <li>Bug fix: VB REM style comments.</li>
+ <li>Bug fix: CSS color literals / ID selector confusion.</li>
+ <li>Bug fix: IE8 line breaks.</li>
+ </ul>
+ <h2>24 February 2013</h2>
+ <ul>
+ <li>Added a one script autoload&run mechanism and a way to
+ embed hints in processing instructions/comments.
+ See <a href="examples/quine.html">example</a>.
+ </ul>
+ <h2>4 March 2013</h2>
+ <ul>
+ <li>Matlab language handler courtesy Amro³</li>
+ </ul>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/COPYING b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/COPYING
new file mode 100644
index 0000000..b7f86df
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/COPYING
@@ -0,0 +1,191 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ Copyright 2011 Mike Samuel et al
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/examples/quine.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/examples/quine.html
new file mode 100644
index 0000000..b53bac0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/examples/quine.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>Making Quines Prettier</title>
+<!-- The defer is not necessary for autoloading, but is necessary for the
+ script at the bottom to work as a Quine. -->
+<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?autoload=true&skin=sunburst&lang=css" defer="defer"></script>
+<style>.operative { font-weight: bold; border:1px solid yellow }</style>
+</head>
+
+<body>
+<h1>Making Quines Prettier</h1>
+
+<p>
+Below is the content of this page prettified. The <code><pre></code>
+element is prettified because it has <code>class="prettyprint"</code> and
+because the sourced script loads a JavaScript library that styles source
+code.
+</p>
+
+<p>
+The line numbers to the left appear because the preceding comment
+<code><?prettify lang=html linenums=true?></code> turns on
+line-numbering and the
+<a href="http://google-code-prettify.googlecode.com/svn/trunk/styles/index.html">stylesheet</a>
+(see <code>skin=sunburst</code> in the <code><script src></code>)
+specifies that every fifth line should be numbered.
+</p>
+
+<!-- Language hints can be put in XML application directive style comments. -->
+<?prettify lang=html linenums=true?>
+<pre class="prettyprint" id="quine" style="border:4px solid #88c"></pre>
+
+<script>//<![CDATA[
+(function () {
+ function html(s) {
+ return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
+ }
+
+ var quineHtml = html(
+ '<!DOCTYPE html>\n<html>\n'
+ + document.documentElement.innerHTML
+ + '\n<\/html>\n');
+
+ // Highlight the operative parts:
+ quineHtml = quineHtml.replace(
+ /<script src[\s\S]*?><\/script>|<!--\?[\s\S]*?-->|<pre\b[\s\S]*?<\/pre>/g,
+ '<span class="operative">$&</span>');
+
+ document.getElementById("quine").innerHTML = quineHtml;
+})();
+//]]>
+</script></body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README.html
new file mode 100644
index 0000000..d1fd4a1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README.html
@@ -0,0 +1,233 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html>
+ <head>
+ <title>Javascript code prettifier</title>
+
+ <link href="src/prettify.css" type="text/css" rel="stylesheet" />
+
+ <script src="src/prettify.js" type="text/javascript"></script>
+
+ <style type="text/css">
+ body { margin-left: .5in }
+ h1, h2, h3, h4, .footer { margin-left: -.4in; }
+ a.Extension { display: inline-block; width: 5em; height:2.5em; border: 1px solid black; vertical-align: top; text-align: center }
+ </style>
+ </head>
+
+ <body onload="prettyPrint()" bgcolor="white">
+ <small style="float: right">Languages : <a href="README-zh-Hans.html">CH</a></small>
+ <h1>Javascript code prettifier</h1>
+
+ <h2>Setup</h2>
+ <ol>
+ <li><a href="http://code.google.com/p/google-code-prettify/downloads/list">Download</a> a distribution
+ <li>Include the script tag below in your document
+ <pre class="prettyprint">
+>script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js></script></pre>
+ <li>See <a href="http://code.google.com/p/google-code-prettify/wiki/GettingStarted">Getting Started</a> to configure that URL with options you need.</a>
+ <li>Look at the <a href="http://google-code-prettify.googlecode.com/svn/trunk/styles/index.html">skin gallery</a> and pick styles that suit you.</li>
+ </ol>
+
+ <h2>Usage</h2>
+ <p>Put code snippets in
+ <tt><pre class="prettyprint">...</pre></tt>
+ or <tt><code class="prettyprint">...</code></tt>
+ and it will automatically be pretty printed.
+
+ <table summary="code examples">
+ <tr>
+ <th>The original
+ <th>Prettier
+ <tr>
+ <td><pre style="border: 1px solid #888;padding: 2px"
+ ><a name="voila1"></a>class Voila {
+public:
+ // Voila
+ static const string VOILA = "Voila";
+
+ // will not interfere with embedded <a href="#voila1">tags</a>.
+}</pre>
+
+ <td><pre class="prettyprint"><a name="voila2"></a>class Voila {
+public:
+ // Voila
+ static const string VOILA = "Voila";
+
+ // will not interfere with embedded <a href="#voila2">tags</a>.
+}</pre>
+ </table>
+
+ <h2>FAQ</h2>
+ <h3 id="langs">For which languages does it work?</h3>
+ <p>The comments in <tt>prettify.js</tt> are authoritative but the lexer
+ should work on a number of languages including C and friends,
+ Java, Python, Bash, SQL, HTML, XML, CSS, Javascript, Makefiles,
+ and Rust.
+ It works passably on Ruby, PHP, VB, and Awk and a decent subset of Perl
+ and Ruby, but, because of commenting conventions, but doesn't work on
+ Smalltalk.</p>
+
+ <p>Other languages are supported via extensions:
+ <div>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-apollo.js">Apollo</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-basic.js">Basic</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-clj.js">Clojure</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-css.js">CSS</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-dart.js">Dart</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-erlang.js">Erlang</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-go.js">Go</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-hs.js">Haskell</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-lisp.js">Lisp, Scheme</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-llvm.js">Llvm</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-lua.js">Lua</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-matlab.js">Matlab</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-ml.js">MLs:F#, Ocaml,SML</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-mumps.js">Mumps</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-n.js">Nemerle</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-pascal.js">Pascal</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-proto.js">Protocol buffers</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-r.js">R, S</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-rd.js">RD</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-scala.js">Scala</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-sql.js">SQL</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-tcl.js">TCL</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-tex.js">Latek</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-vb.js">Visual Basic</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-vhdl.js">CHDL</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-wiki.js">Wiki</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-xq.js">XQ</a>
+ <a class="Extension" href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-yaml.js">YAML</a>
+ </div>
+
+ <p>If you'd like to add an extension for your favorite language, please
+ look at <tt>src/lang-lisp.js</tt> and file an
+ <a href="http://code.google.com/p/google-code-prettify/issues/list"
+ >issue</a> including your language extension, and a testcase.</p>
+
+ <h3>How do I specify the language of my code?</h3>
+ <p>You don't need to specify the language since <code>prettyprint()</code>
+ will guess. You can specify a language by specifying the language extension
+ along with the <code>prettyprint</code> class like so:</p>
+ <pre class="prettyprint lang-html"
+><pre class="prettyprint <b>lang-html</b>">
+ The lang-* class specifies the language file extensions.
+ File extensions supported by default include
+ "bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html",
+ "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh",
+ "xhtml", "xml", "xsl".
+</pre></pre>
+
+ <p>You may also use the
+ <a href="http://dev.w3.org/html5/spec-author-view/the-code-element.html#the-code-element"
+ >HTML 5</a> convention of embedding a <tt>code</tt> element inside the
+ <code>PRE</code> and using <code>language-java</code> style classes.
+ E.g. <xmp class="prettyprint"><pre class="prettyprint"><code class="language-java">...</code></pre></xmp>
+
+ <h3>It doesn't work on <tt><obfuscated code sample></tt>?</h3>
+ <p>Yes. Prettifying obfuscated code is like putting lipstick on a pig
+ — i.e. outside the scope of this tool.</p>
+
+ <h3>Which browsers does it work with?</h3>
+ <p>It's been tested with IE 6, Firefox 1.5 & 2, and Safari 2.0.4.
+ Look at <a href="tests/prettify_test.html">the test page</a> to see if it
+ works in your browser.</p>
+
+ <h3>What's changed?</h3>
+ <p>See the <a href="CHANGES.html">change log</a></p>
+
+ <h3>Why doesn't Prettyprinting of strings work on WordPress?</h3>
+ <p>Apparently wordpress does "smart quoting" which changes close quotes.
+ This causes end quotes to not match up with open quotes.
+ <p>This breaks prettifying as well as copying and pasting of code samples.
+ See
+ <a href="http://wordpress.org/support/topic/125038"
+ >WordPress's help center</a> for info on how to stop smart quoting of code
+ snippets.</p>
+
+ <h3 id="linenums">How do I put line numbers in my code?</h3>
+ <p>You can use the <code>linenums</code> class to turn on line
+ numbering. If your code doesn't start at line number 1, you can
+ add a colon and a line number to the end of that class as in
+ <code>linenums:52</code>.
+
+ <p>For example
+<pre class="prettyprint"><pre class="prettyprint linenums:<b>4</b>"
+>// This is line 4.
+foo();
+bar();
+baz();
+boo();
+far();
+faz();
+<pre></pre>
+ produces
+<pre class="prettyprint linenums:4"
+>// This is line 4.
+foo();
+bar();
+baz();
+boo();
+far();
+faz();
+</pre>
+
+ <h3>How do I prevent a portion of markup from being marked as code?</h3>
+ <p>You can use the <code>nocode</code> class to identify a span of markup
+ that is not code.
+<pre class="prettyprint"><pre class=prettyprint>
+int x = foo(); /* This is a comment <span class="nocode">This is not code</span>
+ Continuation of comment */
+int y = bar();
+</pre></pre>
+produces
+<pre class="prettyprint">
+int x = foo(); /* This is a comment <span class="nocode">This is not code</span>
+ Continuation of comment */
+int y = bar();
+</pre>
+
+ <p>For a more complete example see the issue22
+ <a href="tests/prettify_test.html#issue22">testcase</a>.</p>
+
+ <h3>I get an error message "a is not a function" or "opt_whenDone is not a function"</h3>
+ <p>If you are calling <code>prettyPrint</code> via an event handler, wrap it in a function.
+ Instead of doing
+ <blockquote>
+ <code class="prettyprint lang-js"
+ >addEventListener('load', prettyPrint, false);</code>
+ </blockquote>
+ wrap it in a closure like
+ <blockquote>
+ <code class="prettyprint lang-js"
+ >addEventListener('load', function (event) { prettyPrint() }, false);</code>
+ </blockquote>
+ so that the browser does not pass an event object to <code>prettyPrint</code> which
+ will confuse it.
+
+ <h3>How can I customize the colors and styles of my code?</h3>
+ <p>
+ Prettify adds <code><span></code> with <code>class</code>es describing
+ the kind of code. You can create CSS styles to matches these
+ classes.
+ See the
+ <a href="http://google-code-prettify.googlecode.com/svn/trunk/styles/index.html">
+ theme gallery</a> for examples.
+ </p>
+
+ <h3>I can't add classes to my code (because it comes from Markdown, etc.)</h3>
+ <p>
+ Instead of <code class="prettyprint"><pre class="prettyprint ..."></code> you can use a
+ comment or processing instructions that survives processing instructions :
+ <code><?prettify ...?></code> works as explained in
+ <a href="http://code.google.com/p/google-code-prettify/wiki/GettingStarted">Getting Started</a></p>
+
+ <br><br><br>
+
+ <div class="footer">
+<!-- Created: Tue Oct 3 17:51:56 PDT 2006 -->
+<!-- hhmts start -->Last modified: Mon Mar 4 14:16:04 EST 2013 <!-- hhmts end -->
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README.md
new file mode 100644
index 0000000..51e0fac
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README.md
@@ -0,0 +1,54 @@
+# Google Code Prettify
+
+Direct port of svn into git from http://google-code-prettify.googlecode.com/svn/trunk/
+
+## Install
+
+via [Bower](http://twitter.github.com/bower/)
+
+ bower install google-code-prettify
+
+or [Yeoman](http://yeoman.io/)
+
+ yeoman install google-code-prettify
+
+
+## Usage
+
+The prettify script is AMD compatible and can be used modularly. Here is an example of it in an AMD module:
+
+```javascript
+define(['jquery', 'prettify'], function($, prettify){
+ var code = null;
+ $('pre').addClass('prettyprint').each(function(idx, el){
+ code = el.firstChild;
+ code.innerHTML = prettify.prettyPrintOne(code.innerHTML);
+ })
+ );
+});
+```
+
+This version of google-code-prettify defines an anonymous module, which is more flexible. To allow your AMD loader to find google-code-prettify with a more convenient name, map a path to it as follows:
+
+```js
+// using RequireJS
+require.config({
+ prettify: 'bower_components/google-code-prettify/prettify'
+});
+
+// using curl.js
+curl.config({
+ prettify: 'bower_components/google-code-prettify/prettify'
+});
+```
+
+Or it may just be used in a global context like the following:
+
+```javascript
+(function(){
+ $('pre').addClass('prettyprint');
+ prettyPrint();
+})();
+```
+
+More information can be found in the original [README.html](http://google-code-prettify.googlecode.com/svn/trunk/README.html)
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README-zh-Hans.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README-zh-Hans.html
new file mode 100644
index 0000000..b92e3c0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/README-zh-Hans.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html>
+ <head>
+ <meta http-equiv="content-type" value="text/html; charset=UTF-8" />
+ <title>Javascript code prettifier</title>
+
+ <link href="src/prettify.css" type="text/css" rel="stylesheet" />
+
+ <script src="src/prettify.js" type="text/javascript"></script>
+
+ <style type="text/css">
+ body { margin-left: .5in }
+ h1, h2, h3, h4, .footer { margin-left: -.4in; }
+ </style>
+ </head>
+
+ <body onload="prettyPrint()" bgcolor="white">
+ <h1>Javascript code prettifier</h1>
+ <h1>Javascript 代码美容师</h1>
+ <h2>安装使用</h2>
+ <ol>
+ <li><a href="http://google-code-prettify.googlecode.com/files/prettify-small-5-Jul-2008.zip">下载</a> 文件
+ <li>在你的文件中包含这儿的脚本和样式表(你要保证这儿的 css 和 js 文件按在你的服务器上, 并且调整在 <tt>script</tt> 和 <tt>link</tt>标签中的路径)
+ <pre class="prettyprint">
+<link href="prettify.css" type="text/css" rel="stylesheet" />
+<script type="text/javascript" src="prettify.js"></script></pre>
+ <li>添加<code class="prettyprint">onload="prettyPrint()"</code> 到你的文件的 body 标签中.
+ <li>修改样式表,使用你自己喜欢的颜色.</li>
+ </ol>
+
+ <h2>使用方法<br></h2>
+ <p>在
+ <tt><pre class="prettyprint">...</pre></tt> 或 <tt><code class="prettyprint">...</code></tt>
+ 中间放上代码片段,它就会自动被美化了.
+
+ <table summary="code examples">
+ <tr>
+ <th>The original
+ <th>Prettier
+ <tr>
+ <td><pre style="border: 1px solid #888;padding: 2px"
+ ><a name="voila1"></a>class Voila {
+public:
+ // Voila
+ static const string VOILA = "Voila";
+
+ // will not interfere with embedded <a href="#voila1">tags</a>.
+}</pre>
+
+ <td><pre class="prettyprint"><a name="voila2"></a>class Voila {
+public:
+ // Voila
+ static const string VOILA = "Voila";
+
+ // will not interfere with embedded <a href="#voila2">tags</a>.
+}</pre>
+ </table>
+
+
+ <h2>常见问题</h2>
+ <h3 id="langs">它是为什么语言工作的?</h3>
+ <p><tt>prettify.js中的注释是权威的,但是它的语法分析程序可以在很多语言中使用</tt>,包括 C ,
+ Java, Python, Bash, SQL, HTML, XML, CSS, Javascript, 和 Makefiles.
+ 它在 Ruby, PHP, VB, 和 Awk 中还算可以,而且也可以在 Perl 和 Ruby的合适子集中起作用,但是, 因为注释的约定,它对
+ Smalltalk, 或 CAML类似的语言起作用.<br></p>
+
+
+ <p>LISP系列的语言可以使用一个拓展<a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-lisp.js"><code>lang-lisp.js</code></a>.</p><p>对于 <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-css"><code>CSS</code></a>,
+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-hs"><code>Haskell</code></a>,
+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-lua.js"><code>Lua</code></a>,
+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-ml.js"><code>OCAML, SML, F#</code></a>,
+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-vb.js"><code>Visual Basic</code></a>,
+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-sql.js"><code>SQL</code></a>,
+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-proto.js"><code>Protocol Buffers</code></a>, 和
+ <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-wiki.js"><code>WikiText</code></a>..也是类似的</p><p>如果你想给你喜欢的语言写个拓展版本, 请参阅<tt>src/lang-lisp.js</tt> ,并写一个包括你的语言的拓展的 <a href="http://code.google.com/p/google-code-prettify/issues/list"
+ >发布</a> 和一个测试用例.</p>
+
+ <h3>如何指定我的代码在哪种语言里?</h3>
+ <p>你不需要指定语言环境,因为 <code>prettyprint()</code>
+ 会对此进行猜测. 你可以使用<code> prettyprint </code>这个类通过指定语言的拓展名来指定语言,就像这样:</p>
+ <pre class="prettyprint lang-html"
+><pre class="prettyprint <b>lang-html</b>">
+ The lang-* class specifies the language file extensions.
+ File extensions supported by default include
+ "bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html",
+ "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh",
+ "xhtml", "xml", "xsl".
+</pre></pre>
+
+ <h3>它在混淆代码例子上不起作用吗?</h3>
+ <p>是的. 美化混淆代码就像给小猪涂口红,也就是不在这个工具的范围内. <br></p>
+
+ <h3>它可以在那些浏览器上工作?</h3>
+ <p>这个工具已经在 IE 6, Firefox 1.5 & 2, 和 Safari 2.0.4 上测试通过. 打开 <a href="tests/prettify_test.html">测试页面</a> ,看看它能不能在你的浏览器上起作用.</p>
+
+ <h3>有什么改变?</h3>
+ <p>查看 <a href="CHANGES.html">变化日志</a></p>
+
+ <h3> 为什么Prettyprinting 对WordPress中的字符串没用?</h3>
+ <p>很显然,wordpress 在 "smart quoting" 时会改变关闭符号.
+ 这使得关闭符号跟开始符号不配套.
+ <p>这和复制粘贴代码一样,破坏了美化作用. 去
+ <a href="http://wordpress.org/support/topic/125038"
+ >WordPress's help center</a> 查看更多关于如何关闭插入代码段时的"smart quoting"的信息.</p>
+
+ <h3>如何在我的代码中加入行号? (Out of date -- see <a href="README.html">English version</a>)</h3>
+ <p>你可以使用 <code>nocode</code> 类来标记 span 标记不是代码.
+<pre><pre class=prettyprint>
+<span class="<b>nocode</b>">1:</span> /* This is line 1 of my code
+<span class="<b>nocode</b>">2:</span> * and here's line 2 */
+<span class="<b>nocode</b>">3:</span> print("I'm line number 3");
+</pre></pre>得到
+<pre class=prettyprint>
+<span class="nocode">1:</span> /* This is line 1 of my code
+<span class="nocode">2:</span> * and here's line 2 */
+<span class="nocode">3:</span> print("I'm line number 3");
+</pre>
+
+ <p>查看一个更完整的例子: issue22
+ <a href="tests/prettify_test.html#issue22">testcase</a>.</p>
+
+ <h3>我得到了这样一条错误信息 "a is not a function" 或 "opt_whenDone is not a function"</h3>
+ <p>如果你通过事件句柄条用 <code>prettyPrint</code> , 把它隐藏到一个函数中. <br></p><p>不要这么写
+ </p><blockquote>
+ <code class="prettyprint lang-js"
+ >addEventListener('load', prettyPrint, false);</code>
+ </blockquote>而要这么写
+ <blockquote>
+ <code class="prettyprint lang-js"
+ >addEventListener('load', function (event) { prettyPrint() }, false);</code>
+ </blockquote>这样的话,浏览器就不会把时间对象传递给 <code>prettyPrint</code> ,事件对象会让它困惑的.
+
+ <br><br><br>
+
+ <div class="footer">
+<!-- Created: Tue Oct 3 17:51:56 PDT 2006 -->
+<!-- hhmts start -->
+Last modified: Wed Jan 7 13:25:42 PST 2009<br><!-- hhmts end -->
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-apollo.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-apollo.js
new file mode 100644
index 0000000..9fa1d24
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-apollo.js
@@ -0,0 +1,51 @@
+// Copyright (C) 2009 Onno Hommes.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for the AGC/AEA Assembly Language as described
+ * at http://virtualagc.googlecode.com
+ * <p>
+ * This file could be used by goodle code to allow syntax highlight for
+ * Virtual AGC SVN repository or if you don't want to commonize
+ * the header for the agc/aea html assembly listing.
+ *
+ * @author ohommes@alumni.cmu.edu
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // A line comment that starts with ;
+ [PR['PR_COMMENT'], /^#[^\r\n]*/, null, '#'],
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double quoted, possibly multi-line, string.
+ [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"']
+ ],
+ [
+ [PR['PR_KEYWORD'], /^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,null],
+ [PR['PR_TYPE'], /^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],
+ // A single quote possibly followed by a word that optionally ends with
+ // = ! or ?.
+ [PR['PR_LITERAL'],
+ /^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],
+ // Any word including labels that optionally ends with = ! or ?.
+ [PR['PR_PLAIN'],
+ /^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],
+ // A printable non-space non-special character
+ [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0()\"\\\';]+/]
+ ]),
+ ['apollo', 'agc', 'aea']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-basic.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-basic.js
new file mode 100644
index 0000000..b3c33fd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-basic.js
@@ -0,0 +1,32 @@
+// Contributed by peter dot kofler at code minus cop dot org
+
+/**
+ * @fileoverview
+ * Registers a language handler for Basic.
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-basic">(my BASIC code)</pre>
+ *
+ * @author peter dot kofler at code minus cop dot org
+ */
+
+PR.registerLangHandler(
+ PR.createSimpleLexer(
+ [ // shortcutStylePatterns
+ // "single-line-string"
+ [PR.PR_STRING, /^(?:"(?:[^\\"\r\n]|\\.)*(?:"|$))/, null, '"'],
+ // Whitespace
+ [PR.PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']
+ ],
+ [ // fallthroughStylePatterns
+ // A line comment that starts with REM
+ [PR.PR_COMMENT, /^REM[^\r\n]*/, null],
+ [PR.PR_KEYWORD, /^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/, null],
+ [PR.PR_PLAIN, /^[A-Z][A-Z0-9]?(?:\$|%)?/i, null],
+ // Literals .0, 0, 0.0 0E13
+ [PR.PR_LITERAL, /^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?/i, null, '0123456789'],
+ [PR.PR_PUNCTUATION, /^.[^\s\w\.$%"]*/, null]
+ // [PR.PR_PUNCTUATION, /^[-,:;!<>=\+^\/\*]+/]
+ ]),
+ ['basic','cbm']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-clj.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-clj.js
new file mode 100644
index 0000000..0758335
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-clj.js
@@ -0,0 +1,64 @@
+/**
+ * @license Copyright (C) 2011 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview
+ * Registers a language handler for Clojure.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-lisp">(my lisp code)</pre>
+ * The lang-cl class identifies the language as common lisp.
+ * This file supports the following language extensions:
+ * lang-clj - Clojure
+ *
+ *
+ * I used lang-lisp.js as the basis for this adding the clojure specific
+ * keywords and syntax.
+ *
+ * "Name" = 'Clojure'
+ * "Author" = 'Rich Hickey'
+ * "Version" = '1.2'
+ * "About" = 'Clojure is a lisp for the jvm with concurrency primitives and a richer set of types.'
+ *
+ *
+ * I used <a href="http://clojure.org/Reference">Clojure.org Reference</a> as
+ * the basis for the reserved word list.
+ *
+ *
+ * @author jwall@google.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // clojure has more paren types than minimal lisp.
+ ['opn', /^[\(\{\[]+/, null, '([{'],
+ ['clo', /^[\)\}\]]+/, null, ')]}'],
+ // A line comment that starts with ;
+ [PR['PR_COMMENT'], /^;[^\r\n]*/, null, ';'],
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double quoted, possibly multi-line, string.
+ [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"']
+ ],
+ [
+ // clojure has a much larger set of keywords
+ [PR['PR_KEYWORD'], /^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/, null],
+ [PR['PR_TYPE'], /^:[0-9a-zA-Z\-]+/]
+ ]),
+ ['clj']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-css.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-css.js
new file mode 100644
index 0000000..879dad2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-css.js
@@ -0,0 +1,159 @@
+// Copyright (C) 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for CSS.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-css"></pre>
+ *
+ *
+ * http://www.w3.org/TR/CSS21/grammar.html Section G2 defines the lexical
+ * grammar. This scheme does not recognize keywords containing escapes.
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+// This file is a call to a function defined in prettify.js which defines a
+// lexical scanner for CSS and maps tokens to styles.
+
+// The call to PR['registerLangHandler'] is quoted so that Closure Compiler
+// will not rename the call so that this language extensions can be
+// compiled/minified separately from one another. Other symbols defined in
+// prettify.js are similarly quoted.
+
+// The call is structured thus:
+// PR['registerLangHandler'](
+// PR['createSimpleLexer'](
+// shortcutPatterns,
+// fallThroughPatterns),
+// [languageId0, ..., languageIdN])
+
+// Langugage IDs
+// =============
+// The language IDs are typically the file extensions of source files for
+// that language so that users can syntax highlight arbitrary files based
+// on just the extension. This is heuristic, but works pretty well in
+// practice.
+
+// Patterns
+// ========
+// Lexers are typically implemented as a set of regular expressions.
+// The SimpleLexer function takes regular expressions, styles, and some
+// pragma-info and produces a lexer. A token description looks like
+// [STYLE_NAME, /regular-expression/, pragmas]
+
+// Initially, simple lexer's inner loop looked like:
+
+// while sourceCode is not empty:
+// try each regular expression in order until one matches
+// remove the matched portion from sourceCode
+
+// This was really slow for large files because some JS interpreters
+// do a buffer copy on the matched portion which is O(n*n)
+
+// The current loop now looks like
+
+// 1. use js-modules/combinePrefixPatterns.js to
+// combine all regular expressions into one
+// 2. use a single global regular expresion match to extract all tokens
+// 3. for each token try regular expressions in order until one matches it
+// and classify it using the associated style
+
+// This is a lot more efficient but it does mean that lookahead and lookbehind
+// can't be used across boundaries to classify tokens.
+
+// Sometimes we need lookahead and lookbehind and sometimes we want to handle
+// embedded language -- JavaScript or CSS embedded in HTML, or inline assembly
+// in C.
+
+// If a particular pattern has a numbered group, and its style pattern starts
+// with "lang-" as in
+// ['lang-js', /<script>(.*?)<\/script>/]
+// then the token classification step breaks the token into pieces.
+// Group 1 is re-parsed using the language handler for "lang-js", and the
+// surrounding portions are reclassified using the current language handler.
+// This mechanism gives us both lookahead, lookbehind, and language embedding.
+
+// Shortcut Patterns
+// =================
+// A shortcut pattern is one that is tried before other patterns if the first
+// character in the token is in the string of characters.
+// This very effectively lets us make quick correct decisions for common token
+// types.
+
+// All other patterns are fall-through patterns.
+
+
+
+// The comments inline below refer to productions in the CSS specification's
+// lexical grammar. See link above.
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ // Shortcut patterns.
+ [
+ // The space production <s>
+ [PR['PR_PLAIN'], /^[ \t\r\n\f]+/, null, ' \t\r\n\f']
+ ],
+ // Fall-through patterns.
+ [
+ // Quoted strings. <string1> and <string2>
+ [PR['PR_STRING'],
+ /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, null],
+ [PR['PR_STRING'],
+ /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, null],
+ ['lang-css-str', /^url\(([^\)\"\']+)\)/i],
+ [PR['PR_KEYWORD'],
+ /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,
+ null],
+ // A property name -- an identifier followed by a colon.
+ ['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],
+ // A C style block comment. The <comment> production.
+ [PR['PR_COMMENT'], /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
+ // Escaping text spans
+ [PR['PR_COMMENT'], /^(?:<!--|-->)/],
+ // A number possibly containing a suffix.
+ [PR['PR_LITERAL'], /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
+ // A hex color
+ [PR['PR_LITERAL'], /^#(?:[0-9a-f]{3}){1,2}\b/i],
+ // An identifier
+ [PR['PR_PLAIN'],
+ /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],
+ // A run of punctuation
+ [PR['PR_PUNCTUATION'], /^[^\s\w\'\"]+/]
+ ]),
+ ['css']);
+// Above we use embedded languages to highlight property names (identifiers
+// followed by a colon) differently from identifiers in values.
+PR['registerLangHandler'](
+ PR['createSimpleLexer']([],
+ [
+ [PR['PR_KEYWORD'],
+ /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]
+ ]),
+ ['css-kw']);
+// The content of an unquoted URL literal like url(http://foo/img.png) should
+// be colored as string content. This language handler is used above in the
+// URL production to do so.
+PR['registerLangHandler'](
+ PR['createSimpleLexer']([],
+ [
+ [PR['PR_STRING'], /^[^\)\"\']+/]
+ ]),
+ ['css-str']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-dart.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-dart.js
new file mode 100644
index 0000000..744f6cf
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-dart.js
@@ -0,0 +1,88 @@
+// Copyright (C) 2013 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler Dart.
+ * Loosely structured based on the DartLexer in Pygments: http://pygments.org/.
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-dart">(Dart code)</pre>
+ *
+ * @author armstrong.timothy@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace.
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0']
+ ],
+ [
+ // Script tag.
+ [PR['PR_COMMENT'], /^#!(?:.*)/],
+
+ // `import`, `library`, `part of`, `part`, `as`, `show`, and `hide`
+ // keywords.
+ [PR['PR_KEYWORD'], /^\b(?:import|library|part of|part|as|show|hide)\b/i],
+
+ // Single-line comments.
+ [PR['PR_COMMENT'], /^\/\/(?:.*)/],
+
+ // Multiline comments.
+ [PR['PR_COMMENT'], /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//], // */
+
+ // `class` and `interface` keywords.
+ [PR['PR_KEYWORD'], /^\b(?:class|interface)\b/i],
+
+ // General keywords.
+ [PR['PR_KEYWORD'], /^\b(?:assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\b/i],
+
+ // Declaration keywords.
+ [PR['PR_KEYWORD'], /^\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\b/i],
+
+ // Keywords for types.
+ [PR['PR_TYPE'], /^\b(?:bool|double|Dynamic|int|num|Object|String|void)\b/i],
+
+ // Keywords for constants.
+ [PR['PR_KEYWORD'], /^\b(?:false|null|true)\b/i],
+
+ // Multiline strings, single- and double-quoted.
+ [PR['PR_STRING'], /^r?[\']{3}[\s|\S]*?[^\\][\']{3}/],
+ [PR['PR_STRING'], /^r?[\"]{3}[\s|\S]*?[^\\][\"]{3}/],
+
+ // Normal and raw strings, single- and double-quoted.
+ [PR['PR_STRING'], /^r?\'(\'|(?:[^\n\r\f])*?[^\\]\')/],
+ [PR['PR_STRING'], /^r?\"(\"|(?:[^\n\r\f])*?[^\\]\")/],
+
+ // Identifiers.
+ [PR['PR_PLAIN'], /^[a-z_$][a-z0-9_]*/i],
+
+ // Operators.
+ [PR['PR_PUNCTUATION'], /^[~!%^&*+=|?:<>/-]/],
+
+ // Hex numbers.
+ [PR['PR_LITERAL'], /^\b0x[0-9a-f]+/i],
+
+ // Decimal numbers.
+ [PR['PR_LITERAL'], /^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],
+ [PR['PR_LITERAL'], /^\b\.\d+(?:e[+-]?\d+)?/i],
+
+ // Punctuation.
+ [PR['PR_PUNCTUATION'], /^[(){}\[\],.;]/]
+ ]),
+ ['dart']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-erlang.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-erlang.js
new file mode 100644
index 0000000..ea782c2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-erlang.js
@@ -0,0 +1,92 @@
+// Copyright (C) 2013 Andrew Allen
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for Erlang.
+ *
+ * Derived from https://raw.github.com/erlang/otp/dev/lib/compiler/src/core_parse.yrl
+ * Modified from Mike Samuel's Haskell plugin for google-code-prettify
+ *
+ * @author achew22@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace
+ // whitechar -> newline | vertab | space | tab | uniWhite
+ // newline -> return linefeed | return | linefeed | formfeed
+ [PR['PR_PLAIN'], /^[\t\n\x0B\x0C\r ]+/, null, '\t\n\x0B\x0C\r '],
+ // Single line double-quoted strings.
+ [PR['PR_STRING'], /^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,
+ null, '"'],
+
+ // Handle atoms
+ [PR['PR_LITERAL'], /^[a-z][a-zA-Z0-9_]*/],
+ // Handle single quoted atoms
+ [PR['PR_LITERAL'], /^\'(?:[^\'\\\n\x0C\r]|\\[^&])+\'?/,
+ null, "'"],
+
+ // Handle macros. Just to be extra clear on this one, it detects the ?
+ // then uses the regexp to end it so be very careful about matching
+ // all the terminal elements
+ [PR['PR_LITERAL'], /^\?[^ \t\n({]+/, null, "?"],
+
+
+
+ // decimal -> digit{digit}
+ // octal -> octit{octit}
+ // hexadecimal -> hexit{hexit}
+ // integer -> decimal
+ // | 0o octal | 0O octal
+ // | 0x hexadecimal | 0X hexadecimal
+ // float -> decimal . decimal [exponent]
+ // | decimal exponent
+ // exponent -> (e | E) [+ | -] decimal
+ [PR['PR_LITERAL'],
+ /^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,
+ null, '0123456789']
+ ],
+ [
+ // TODO: catch @declarations inside comments
+
+ // Comments in erlang are started with % and go till a newline
+ [PR['PR_COMMENT'], /^%[^\n]*/],
+
+ // Catch macros
+ //[PR['PR_TAG'], /?[^( \n)]+/],
+
+ /**
+ * %% Keywords (atoms are assumed to always be single-quoted).
+ * 'module' 'attributes' 'do' 'let' 'in' 'letrec'
+ * 'apply' 'call' 'primop'
+ * 'case' 'of' 'end' 'when' 'fun' 'try' 'catch' 'receive' 'after'
+ */
+ [PR['PR_KEYWORD'], /^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
+
+ /**
+ * Catch definitions (usually defined at the top of the file)
+ * Anything that starts -something
+ */
+ [PR['PR_KEYWORD'], /^-[a-z_]+/],
+
+ // Catch variables
+ [PR['PR_TYPE'], /^[A-Z_][a-zA-Z0-9_]*/],
+
+ // matches the symbol production
+ [PR['PR_PUNCTUATION'], /^[.,;]/]
+ ]),
+ ['erlang', 'erl']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-go.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-go.js
new file mode 100644
index 0000000..f329e29
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-go.js
@@ -0,0 +1,58 @@
+// Copyright (C) 2010 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for the Go language..
+ * <p>
+ * Based on the lexical grammar at
+ * http://golang.org/doc/go_spec.html#Lexical_elements
+ * <p>
+ * Go uses a minimal style for highlighting so the below does not distinguish
+ * strings, keywords, literals, etc. by design.
+ * From a discussion with the Go designers:
+ * <pre>
+ * On Thursday, July 22, 2010, Mike Samuel <...> wrote:
+ * > On Thu, Jul 22, 2010, Rob 'Commander' Pike <...> wrote:
+ * >> Personally, I would vote for the subdued style godoc presents at http://golang.org
+ * >>
+ * >> Not as fancy as some like, but a case can be made it's the official style.
+ * >> If people want more colors, I wouldn't fight too hard, in the interest of
+ * >> encouragement through familiarity, but even then I would ask to shy away
+ * >> from technicolor starbursts.
+ * >
+ * > Like http://golang.org/pkg/go/scanner/ where comments are blue and all
+ * > other content is black? I can do that.
+ * </pre>
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace is made up of spaces, tabs and newline characters.
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // Not escaped as a string. See note on minimalism above.
+ [PR['PR_PLAIN'], /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])+(?:\'|$)|`[^`]*(?:`|$))/, null, '"\'']
+ ],
+ [
+ // Block comments are delimited by /* and */.
+ // Single-line comments begin with // and extend to the end of a line.
+ [PR['PR_COMMENT'], /^(?:\/\/[^\r\n]*|\/\*[\s\S]*?\*\/)/],
+ [PR['PR_PLAIN'], /^(?:[^\/\"\'`]|\/(?![\/\*]))+/i]
+ ]),
+ ['go']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-hs.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-hs.js
new file mode 100644
index 0000000..4a15cf0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-hs.js
@@ -0,0 +1,101 @@
+// Copyright (C) 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for Haskell.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-hs">(my lisp code)</pre>
+ * The lang-cl class identifies the language as common lisp.
+ * This file supports the following language extensions:
+ * lang-cl - Common Lisp
+ * lang-el - Emacs Lisp
+ * lang-lisp - Lisp
+ * lang-scm - Scheme
+ *
+ *
+ * I used http://www.informatik.uni-freiburg.de/~thiemann/haskell/haskell98-report-html/syntax-iso.html
+ * as the basis, but ignore the way the ncomment production nests since this
+ * makes the lexical grammar irregular. It might be possible to support
+ * ncomments using the lookbehind filter.
+ *
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace
+ // whitechar -> newline | vertab | space | tab | uniWhite
+ // newline -> return linefeed | return | linefeed | formfeed
+ [PR['PR_PLAIN'], /^[\t\n\x0B\x0C\r ]+/, null, '\t\n\x0B\x0C\r '],
+ // Single line double and single-quoted strings.
+ // char -> ' (graphic<' | \> | space | escape<\&>) '
+ // string -> " {graphic<" | \> | space | escape | gap}"
+ // escape -> \ ( charesc | ascii | decimal | o octal
+ // | x hexadecimal )
+ // charesc -> a | b | f | n | r | t | v | \ | " | ' | &
+ [PR['PR_STRING'], /^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,
+ null, '"'],
+ [PR['PR_STRING'], /^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,
+ null, "'"],
+ // decimal -> digit{digit}
+ // octal -> octit{octit}
+ // hexadecimal -> hexit{hexit}
+ // integer -> decimal
+ // | 0o octal | 0O octal
+ // | 0x hexadecimal | 0X hexadecimal
+ // float -> decimal . decimal [exponent]
+ // | decimal exponent
+ // exponent -> (e | E) [+ | -] decimal
+ [PR['PR_LITERAL'],
+ /^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,
+ null, '0123456789']
+ ],
+ [
+ // Haskell does not have a regular lexical grammar due to the nested
+ // ncomment.
+ // comment -> dashes [ any<symbol> {any}] newline
+ // ncomment -> opencom ANYseq {ncomment ANYseq}closecom
+ // dashes -> '--' {'-'}
+ // opencom -> '{-'
+ // closecom -> '-}'
+ [PR['PR_COMMENT'], /^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],
+ // reservedid -> case | class | data | default | deriving | do
+ // | else | if | import | in | infix | infixl | infixr
+ // | instance | let | module | newtype | of | then
+ // | type | where | _
+ [PR['PR_KEYWORD'], /^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/, null],
+ // qvarid -> [ modid . ] varid
+ // qconid -> [ modid . ] conid
+ // varid -> (small {small | large | digit | ' })<reservedid>
+ // conid -> large {small | large | digit | ' }
+ // modid -> conid
+ // small -> ascSmall | uniSmall | _
+ // ascSmall -> a | b | ... | z
+ // uniSmall -> any Unicode lowercase letter
+ // large -> ascLarge | uniLarge
+ // ascLarge -> A | B | ... | Z
+ // uniLarge -> any uppercase or titlecase Unicode letter
+ [PR['PR_PLAIN'], /^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],
+ // matches the symbol production
+ [PR['PR_PUNCTUATION'], /^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]
+ ]),
+ ['hs']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-lisp.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-lisp.js
new file mode 100644
index 0000000..ae44ccc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-lisp.js
@@ -0,0 +1,94 @@
+// Copyright (C) 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for Common Lisp and related languages.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-lisp">(my lisp code)</pre>
+ * The lang-cl class identifies the language as common lisp.
+ * This file supports the following language extensions:
+ * lang-cl - Common Lisp
+ * lang-el - Emacs Lisp
+ * lang-lisp - Lisp
+ * lang-scm - Scheme
+ * lang-lsp - FAT 8.3 filename version of lang-lisp.
+ *
+ *
+ * I used http://www.devincook.com/goldparser/doc/meta-language/grammar-LISP.htm
+ * as the basis, but added line comments that start with ; and changed the atom
+ * production to disallow unquoted semicolons.
+ *
+ * "Name" = 'LISP'
+ * "Author" = 'John McCarthy'
+ * "Version" = 'Minimal'
+ * "About" = 'LISP is an abstract language that organizes ALL'
+ * | 'data around "lists".'
+ *
+ * "Start Symbol" = [s-Expression]
+ *
+ * {Atom Char} = {Printable} - {Whitespace} - [()"\'']
+ *
+ * Atom = ( {Atom Char} | '\'{Printable} )+
+ *
+ * [s-Expression] ::= [Quote] Atom
+ * | [Quote] '(' [Series] ')'
+ * | [Quote] '(' [s-Expression] '.' [s-Expression] ')'
+ *
+ * [Series] ::= [s-Expression] [Series]
+ * |
+ *
+ * [Quote] ::= '' !Quote = do not evaluate
+ * |
+ *
+ *
+ * I used <a href="http://gigamonkeys.com/book/">Practical Common Lisp</a> as
+ * the basis for the reserved word list.
+ *
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ ['opn', /^\(+/, null, '('],
+ ['clo', /^\)+/, null, ')'],
+ // A line comment that starts with ;
+ [PR['PR_COMMENT'], /^;[^\r\n]*/, null, ';'],
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double quoted, possibly multi-line, string.
+ [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"']
+ ],
+ [
+ [PR['PR_KEYWORD'], /^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/, null],
+ [PR['PR_LITERAL'],
+ /^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],
+ // A single quote possibly followed by a word that optionally ends with
+ // = ! or ?.
+ [PR['PR_LITERAL'],
+ /^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],
+ // A word that optionally ends with = ! or ?.
+ [PR['PR_PLAIN'],
+ /^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],
+ // A printable non-space non-special character
+ [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0()\"\\\';]+/]
+ ]),
+ ['cl', 'el', 'lisp', 'lsp', 'scm', 'ss', 'rkt']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-llvm.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-llvm.js
new file mode 100644
index 0000000..517ff15
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-llvm.js
@@ -0,0 +1,61 @@
+// Copyright (C) 2013 Nikhil Dabas
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for LLVM.
+ * From https://gist.github.com/ndabas/2850418
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-llvm">(my LLVM code)</pre>
+ *
+ *
+ * The regular expressions were adapted from:
+ * https://github.com/hansstimer/llvm.tmbundle/blob/76fedd8f50fd6108b1780c51d79fbe3223de5f34/Syntaxes/LLVM.tmLanguage
+ *
+ * http://llvm.org/docs/LangRef.html#constants describes the language grammar.
+ *
+ * @author Nikhil Dabas
+ */
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double quoted, possibly multi-line, string.
+ [PR['PR_STRING'], /^!?\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'],
+ // comment.llvm
+ [PR['PR_COMMENT'], /^;[^\r\n]*/, null, ';']
+ ],
+ [
+ // variable.llvm
+ [PR['PR_PLAIN'], /^[%@!](?:[-a-zA-Z$._][-a-zA-Z$._0-9]*|\d+)/],
+
+ // According to http://llvm.org/docs/LangRef.html#well-formedness
+ // These reserved words cannot conflict with variable names, because none of them start with a prefix character ('%' or '@').
+ [PR['PR_KEYWORD'], /^[A-Za-z_][0-9A-Za-z_]*/, null],
+
+ // constant.numeric.float.llvm
+ [PR['PR_LITERAL'], /^\d+\.\d+/],
+
+ // constant.numeric.integer.llvm
+ [PR['PR_LITERAL'], /^(?:\d+|0[xX][a-fA-F0-9]+)/],
+
+ // punctuation
+ [PR['PR_PUNCTUATION'], /^[()\[\]{},=*<>:]|\.\.\.$/]
+ ]),
+ ['llvm', 'll']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-lua.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-lua.js
new file mode 100644
index 0000000..7a3f976
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-lua.js
@@ -0,0 +1,59 @@
+// Copyright (C) 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for Lua.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-lua">(my Lua code)</pre>
+ *
+ *
+ * I used http://www.lua.org/manual/5.1/manual.html#2.1
+ * Because of the long-bracket concept used in strings and comments, Lua does
+ * not have a regular lexical grammar, but luckily it fits within the space
+ * of irregular grammars supported by javascript regular expressions.
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double or single quoted, possibly multi-line, string.
+ [PR['PR_STRING'], /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/, null, '"\'']
+ ],
+ [
+ // A comment is either a line comment that starts with two dashes, or
+ // two dashes preceding a long bracketed block.
+ [PR['PR_COMMENT'], /^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],
+ // A long bracketed block not preceded by -- is a string.
+ [PR['PR_STRING'], /^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],
+ [PR['PR_KEYWORD'], /^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/, null],
+ // A number is a hex integer literal, a decimal real literal, or in
+ // scientific notation.
+ [PR['PR_LITERAL'],
+ /^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
+ // An identifier
+ [PR['PR_PLAIN'], /^[a-z_]\w*/i],
+ // A run of punctuation
+ [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]
+ ]),
+ ['lua']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-matlab.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-matlab.js
new file mode 100644
index 0000000..ac67ecb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-matlab.js
@@ -0,0 +1,180 @@
+// Copyright (c) 2013 by Amro <amroamroamro@gmail.com>
+//
+// 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.
+
+/**
+ * @fileoverview
+ * Registers a language handler for MATLAB.
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code inside an HTML tag like
+ * <pre class="prettyprint lang-matlab">
+ * </pre>
+ *
+ * @see https://github.com/amroamroamro/prettify-matlab
+ */
+(function (PR) {
+ /*
+ PR_PLAIN: plain text
+ PR_STRING: string literals
+ PR_KEYWORD: keywords
+ PR_COMMENT: comments
+ PR_TYPE: types
+ PR_LITERAL: literal values (1, null, true, ..)
+ PR_PUNCTUATION: punctuation string
+ PR_SOURCE: embedded source
+ PR_DECLARATION: markup declaration such as a DOCTYPE
+ PR_TAG: sgml tag
+ PR_ATTRIB_NAME: sgml attribute name
+ PR_ATTRIB_VALUE: sgml attribute value
+ */
+ var PR_IDENTIFIER = "ident",
+ PR_CONSTANT = "const",
+ PR_FUNCTION = "fun",
+ PR_FUNCTION_TOOLBOX = "fun_tbx",
+ PR_SYSCMD = "syscmd",
+ PR_CODE_OUTPUT = "codeoutput",
+ PR_ERROR = "err",
+ PR_WARNING = "wrn",
+ PR_TRANSPOSE = "transpose",
+ PR_LINE_CONTINUATION = "linecont";
+
+ // Refer to: http://www.mathworks.com/help/matlab/functionlist-alpha.html
+ var coreFunctions = [
+ 'abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:\.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers\.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event\.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab\.io\.MatFile|matlab\.mixin\.(?:Copyable|Heterogeneous(?:\.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta\.(?:class(?:\.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:\.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:\.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:\.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf\.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:\.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:\.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:\.isPlatformSupported)?|VideoWriter(?:\.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom'
+ ].join("|");
+ var statsFunctions = [
+ 'addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:\.(?:fit|make|template))?|Ensemble|KNN(?:\.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:\.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:\.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:\.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:\.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:\.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:\.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:\.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest'
+ ].join("|");
+ var imageFunctions = [
+ 'adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration\.metric\.(?:MattesMutualInformation|MeanSquares)|registration\.optimizer\.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb'
+ ].join("|");
+ var optimFunctions = [
+ 'bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog'
+ ].join("|");
+
+ // identifiers: variable/function name, or a chain of variable names joined by dots (obj.method, struct.field1.field2, etc..)
+ // valid variable names (start with letter, and contains letters, digits, and underscores).
+ // we match "xx.yy" as a whole so that if "xx" is plain and "yy" is not, we dont get a false positive for "yy"
+ //var reIdent = '(?:[a-zA-Z][a-zA-Z0-9_]*)';
+ //var reIdentChain = '(?:' + reIdent + '(?:\.' + reIdent + ')*' + ')';
+
+ // patterns that always start with a known character. Must have a shortcut string.
+ var shortcutStylePatterns = [
+ // whitespaces: space, tab, carriage return, line feed, line tab, form-feed, non-break space
+ [PR.PR_PLAIN, /^[ \t\r\n\v\f\xA0]+/, null, " \t\r\n\u000b\u000c\u00a0"],
+
+ // block comments
+ //TODO: chokes on nested block comments
+ //TODO: false positives when the lines with %{ and %} contain non-spaces
+ //[PR.PR_COMMENT, /^%(?:[^\{].*|\{(?:%|%*[^\}%])*(?:\}+%?)?)/, null],
+ [PR.PR_COMMENT, /^%\{[^%]*%+(?:[^\}%][^%]*%+)*\}/, null],
+
+ // single-line comments
+ [PR.PR_COMMENT, /^%[^\r\n]*/, null, "%"],
+
+ // system commands
+ [PR_SYSCMD, /^![^\r\n]*/, null, "!"]
+ ];
+
+ // patterns that will be tried in order if the shortcut ones fail. May have shortcuts.
+ var fallthroughStylePatterns = [
+ // line continuation
+ [PR_LINE_CONTINUATION, /^\.\.\.\s*[\r\n]/, null],
+
+ // error message
+ [PR_ERROR, /^\?\?\? [^\r\n]*/, null],
+
+ // warning message
+ [PR_WARNING, /^Warning: [^\r\n]*/, null],
+
+ // command prompt/output
+ //[PR_CODE_OUTPUT, /^>>\s+[^\r\n]*[\r\n]{1,2}[^=]*=[^\r\n]*[\r\n]{1,2}[^\r\n]*/, null], // full command output (both loose/compact format): `>> EXP\nVAR =\n VAL`
+ [PR_CODE_OUTPUT, /^>>\s+/, null], // only the command prompt `>> `
+ [PR_CODE_OUTPUT, /^octave:\d+>\s+/, null], // Octave command prompt `octave:1> `
+
+ // identifier (chain) or closing-parenthesis/brace/bracket, and IS followed by transpose operator
+ // this way we dont misdetect the transpose operator ' as the start of a string
+ ["lang-matlab-operators", /^((?:[a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*|\)|\]|\}|\.)')/, null],
+
+ // identifier (chain), and NOT followed by transpose operator
+ // this must come AFTER the "is followed by transpose" step (otherwise it chops the last char of identifier)
+ ["lang-matlab-identifiers", /^([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)(?!')/, null],
+
+ // single-quoted strings: allow for escaping with '', no multilines
+ //[PR.PR_STRING, /(?:(?<=(?:\(|\[|\{|\s|=|;|,|:))|^)'(?:[^']|'')*'(?=(?:\)|\]|\}|\s|=|;|,|:|~|<|>|&|-|\+|\*|\.|\^|\|))/, null], // string vs. transpose (check before/after context using negative/positive lookbehind/lookahead)
+ [PR.PR_STRING, /^'(?:[^']|'')*'/, null], // "'"
+
+ // floating point numbers: 1, 1.0, 1i, -1.1E-1
+ [PR.PR_LITERAL, /^[+\-]?\.?\d+(?:\.\d*)?(?:[Ee][+\-]?\d+)?[ij]?/, null],
+
+ // parentheses, braces, brackets
+ [PR.PR_TAG, /^(?:\{|\}|\(|\)|\[|\])/, null], // "{}()[]"
+
+ // other operators
+ [PR.PR_PUNCTUATION, /^(?:<|>|=|~|@|&|;|,|:|!|\-|\+|\*|\^|\.|\||\\|\/)/, null]
+ ];
+
+ var identifiersPatterns = [
+ // list of keywords (`iskeyword`)
+ [PR.PR_KEYWORD, /^\b(?:break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while)\b/, null],
+
+ // some specials variables/constants
+ [PR_CONSTANT, /^\b(?:true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout)\b/, null],
+
+ // some data types
+ [PR.PR_TYPE, /^\b(?:cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse)\b/, null],
+
+ // commonly used builtin functions from core MATLAB and a few popular toolboxes
+ [PR_FUNCTION, new RegExp('^\\b(?:' + coreFunctions + ')\\b'), null],
+ [PR_FUNCTION_TOOLBOX, new RegExp('^\\b(?:' + statsFunctions + ')\\b'), null],
+ [PR_FUNCTION_TOOLBOX, new RegExp('^\\b(?:' + imageFunctions + ')\\b'), null],
+ [PR_FUNCTION_TOOLBOX, new RegExp('^\\b(?:' + optimFunctions + ')\\b'), null],
+
+ // plain identifier (user-defined variable/function name)
+ [PR_IDENTIFIER, /^[a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*/, null]
+ ];
+
+ var operatorsPatterns = [
+ // forward to identifiers to match
+ ["lang-matlab-identifiers", /^([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)/, null],
+
+ // parentheses, braces, brackets
+ [PR.PR_TAG, /^(?:\{|\}|\(|\)|\[|\])/, null], // "{}()[]"
+
+ // other operators
+ [PR.PR_PUNCTUATION, /^(?:<|>|=|~|@|&|;|,|:|!|\-|\+|\*|\^|\.|\||\\|\/)/, null],
+
+ // transpose operators
+ [PR_TRANSPOSE, /^'/, null]
+ ];
+
+ PR.registerLangHandler(
+ PR.createSimpleLexer([], identifiersPatterns),
+ ["matlab-identifiers"]
+ );
+ PR.registerLangHandler(
+ PR.createSimpleLexer([], operatorsPatterns),
+ ["matlab-operators"]
+ );
+ PR.registerLangHandler(
+ PR.createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns),
+ ["matlab"]
+ );
+})(window['PR']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-ml.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-ml.js
new file mode 100644
index 0000000..b5a4c17
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-ml.js
@@ -0,0 +1,56 @@
+// Copyright (C) 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for OCaml, SML, F# and similar languages.
+ *
+ * Based on the lexical grammar at
+ * http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html#_Toc270597388
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace is made up of spaces, tabs and newline characters.
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // #if ident/#else/#endif directives delimit conditional compilation
+ // sections
+ [PR['PR_COMMENT'],
+ /^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,
+ null, '#'],
+ // A double or single quoted, possibly multi-line, string.
+ // F# allows escaped newlines in strings.
+ [PR['PR_STRING'], /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])(?:\'|$))/, null, '"\'']
+ ],
+ [
+ // Block comments are delimited by (* and *) and may be
+ // nested. Single-line comments begin with // and extend to
+ // the end of a line.
+ // TODO: (*...*) comments can be nested. This does not handle that.
+ [PR['PR_COMMENT'], /^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],
+ [PR['PR_KEYWORD'], /^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
+ // A number is a hex integer literal, a decimal real literal, or in
+ // scientific notation.
+ [PR['PR_LITERAL'],
+ /^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
+ [PR['PR_PLAIN'], /^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],
+ // A printable non-space non-special character
+ [PR['PR_PUNCTUATION'], /^[^\t\n\r \xA0\"\'\w]+/]
+ ]),
+ ['fs', 'ml']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-mumps.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-mumps.js
new file mode 100644
index 0000000..1372772
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-mumps.js
@@ -0,0 +1,139 @@
+// Copyright (C) 2011 Kitware Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for MUMPS.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-mumps">(my SQL code)</pre>
+ *
+ * Commands, intrinsic functions and variables taken from ISO/IEC 11756:1999(E)
+ *
+ * @author chris.harris@kitware.com
+ *
+ * Known issues:
+ *
+ * - Currently can't distinguish between keywords and local or global variables having the same name
+ * for exampe SET IF="IF?"
+ * - m file are already used for MatLab hence using mumps.
+ */
+
+(function () {
+
+
+var commands = 'B|BREAK|' +
+ 'C|CLOSE|' +
+ 'D|DO|' +
+ 'E|ELSE|' +
+ 'F|FOR|' +
+ 'G|GOTO|' +
+ 'H|HALT|' +
+ 'H|HANG|' +
+ 'I|IF|' +
+ 'J|JOB|' +
+ 'K|KILL|' +
+ 'L|LOCK|' +
+ 'M|MERGE|' +
+ 'N|NEW|' +
+ 'O|OPEN|' +
+ 'Q|QUIT|' +
+ 'R|READ|' +
+ 'S|SET|' +
+ 'TC|TCOMMIT|' +
+ 'TRE|TRESTART|' +
+ 'TRO|TROLLBACK|' +
+ 'TS|TSTART|' +
+ 'U|USE|' +
+ 'V|VIEW|' +
+ 'W|WRITE|' +
+ 'X|XECUTE';
+
+var intrinsicVariables = 'D|DEVICE|' +
+ 'EC|ECODE|' +
+ 'ES|ESTACK|' +
+ 'ET|ETRAP|' +
+ 'H|HOROLOG|' +
+ 'I|IO|' +
+ 'J|JOB|' +
+ 'K|KEY|' +
+ 'P|PRINCIPAL|' +
+ 'Q|QUIT|' +
+ 'ST|STACK|' +
+ 'S|STORAGE|' +
+ 'SY|SYSTEM|' +
+ 'T|TEST|' +
+ 'TL|TLEVEL|' +
+ 'TR|TRESTART|' +
+ 'X|' +
+ 'Y|' +
+ 'Z[A-Z]*|';
+
+var intrinsicFunctions = 'A|ASCII|' +
+ 'C|CHAR|' +
+ 'D|DATA|' +
+ 'E|EXTRACT|' +
+ 'F|FIND|' +
+ 'FN|FNUMBER|' +
+ 'G|GET|' +
+ 'J|JUSTIFY|' +
+ 'L|LENGTH|' +
+ 'NA|NAME|' +
+ 'O|ORDER|' +
+ 'P|PIECE|' +
+ 'QL|QLENGTH|' +
+ 'QS|QSUBSCRIPT|' +
+ 'Q|QUERY|' +
+ 'R|RANDOM|' +
+ 'RE|REVERSE|' +
+ 'S|SELECT|' +
+ 'ST|STACK|' +
+ 'T|TEXT|' +
+ 'TR|TRANSLATE|' +
+ 'V|VIEW|' *
+ 'Z[A-Z]*|';
+
+var intrinsic = intrinsicVariables + intrinsicFunctions;
+
+
+var shortcutStylePatterns = [
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double or single quoted, possibly multi-line, string.
+ [PR['PR_STRING'], /^(?:"(?:[^"]|\\.)*")/, null, '"']
+ ];
+
+var fallthroughStylePatterns = [
+ // A line comment that starts with ;
+ [PR['PR_COMMENT'], /^;[^\r\n]*/, null, ';'],
+ // Add intrinsic variables and functions as declarations, there not really but it mean
+ // they will hilighted differently from commands.
+ [PR['PR_DECLARATION'], new RegExp('^(?:\\$(?:' + intrinsic + '))\\b', 'i'), null],
+ // Add commands as keywords
+ [PR['PR_KEYWORD'], new RegExp('^(?:[^\\$]' + commands + ')\\b', 'i'), null],
+ // A number is a decimal real literal or in scientific notation.
+ [PR['PR_LITERAL'],
+ /^[+-]?(?:(?:\.\d+|\d+(?:\.\d*)?)(?:E[+\-]?\d+)?)/i],
+ // An identifier
+ [PR['PR_PLAIN'], /^[a-z][a-zA-Z0-9]*/i],
+ // Exclude $ % and ^
+ [PR['PR_PUNCTUATION'], /^[^\w\t\n\r\xA0\"\$;%\^]|_/]
+ ];
+// Can't use m as its already used for MatLab
+PR.registerLangHandler(PR.createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns), ['mumps']);
+})();
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-n.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-n.js
new file mode 100644
index 0000000..33cf116
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-n.js
@@ -0,0 +1,65 @@
+// Copyright (C) 2011 Zimin A.V.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for the Nemerle language.
+ * http://nemerle.org
+ * @author Zimin A.V.
+ */
+(function () {
+ // http://nemerle.org/wiki/index.php?title=Base_keywords
+ var keywords = 'abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|'
+ + 'fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|'
+ + 'null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|'
+ + 'syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|'
+ + 'assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|'
+ + 'otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield';
+
+ PR['registerLangHandler'](PR['createSimpleLexer'](
+ // shortcutStylePatterns
+ [
+ [PR['PR_STRING'], /^(?:\'(?:[^\\\'\r\n]|\\.)*\'|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, null, '"'],
+ [PR['PR_COMMENT'], /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, null, '#'],
+ [PR['PR_PLAIN'], /^\s+/, null, ' \r\n\t\xA0']
+ ],
+ // fallthroughStylePatterns
+ [
+ [PR['PR_STRING'], /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null],
+ [PR['PR_STRING'], /^<#(?:[^#>])*(?:#>|$)/, null],
+ [PR['PR_STRING'], /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, null],
+ [PR['PR_COMMENT'], /^\/\/[^\r\n]*/, null],
+ [PR['PR_COMMENT'], /^\/\*[\s\S]*?(?:\*\/|$)/, null],
+ [PR['PR_KEYWORD'], new RegExp('^(?:' + keywords + ')\\b'), null],
+ [PR['PR_TYPE'], /^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/, null],
+ [PR['PR_LITERAL'], /^@[a-z_$][a-z_$@0-9]*/i, null],
+ [PR['PR_TYPE'], /^@[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
+ [PR['PR_PLAIN'], /^'?[A-Za-z_$][a-z_$@0-9]*/i, null],
+ [PR['PR_LITERAL'], new RegExp(
+ '^(?:'
+ // A hex number
+ + '0x[a-f0-9]+'
+ // or an octal or decimal number,
+ + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
+ // possibly in scientific notation
+ + '(?:e[+\\-]?\\d+)?'
+ + ')'
+ // with an optional modifier like UL for unsigned long
+ + '[a-z]*', 'i'), null, '0123456789'],
+
+ [PR['PR_PUNCTUATION'], /^.[^\s\w\.$@\'\"\`\/\#]*/, null]
+ ]),
+ ['n', 'nemerle']);
+})();
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-pascal.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-pascal.js
new file mode 100644
index 0000000..8612517
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-pascal.js
@@ -0,0 +1,32 @@
+// Contributed by peter dot kofler at code minus cop dot org
+
+/**
+ * @fileoverview
+ * Registers a language handler for (Turbo) Pascal.
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-pascal">(my Pascal code)</pre>
+ *
+ * @author peter dot kofler at code minus cop dot org
+ */
+
+PR.registerLangHandler(
+ PR.createSimpleLexer(
+ [ // shortcutStylePatterns
+ // 'single-line-string'
+ [PR.PR_STRING, /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$))/, null, '\''],
+ // Whitespace
+ [PR.PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']
+ ],
+ [ // fallthroughStylePatterns
+ // A cStyleComments comment (* *) or {}
+ [PR.PR_COMMENT, /^\(\*[\s\S]*?(?:\*\)|$)|^\{[\s\S]*?(?:\}|$)/, null],
+ [PR.PR_KEYWORD, /^(?:ABSOLUTE|AND|ARRAY|ASM|ASSEMBLER|BEGIN|CASE|CONST|CONSTRUCTOR|DESTRUCTOR|DIV|DO|DOWNTO|ELSE|END|EXTERNAL|FOR|FORWARD|FUNCTION|GOTO|IF|IMPLEMENTATION|IN|INLINE|INTERFACE|INTERRUPT|LABEL|MOD|NOT|OBJECT|OF|OR|PACKED|PROCEDURE|PROGRAM|RECORD|REPEAT|SET|SHL|SHR|THEN|TO|TYPE|UNIT|UNTIL|USES|VAR|VIRTUAL|WHILE|WITH|XOR)\b/i, null],
+ [PR.PR_LITERAL, /^(?:true|false|self|nil)/i, null],
+ [PR.PR_PLAIN, /^[a-z][a-z0-9]*/i, null],
+ // Literals .0, 0, 0.0 0E13
+ [PR.PR_LITERAL, /^(?:\$[a-f0-9]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?)/i, null, '0123456789'],
+ [PR.PR_PUNCTUATION, /^.[^\s\w\.$@\'\/]*/, null]
+ ]),
+ ['pascal']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-proto.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-proto.js
new file mode 100644
index 0000000..5395491
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-proto.js
@@ -0,0 +1,35 @@
+// Copyright (C) 2006 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for Protocol Buffers as described at
+ * http://code.google.com/p/protobuf/.
+ *
+ * Based on the lexical grammar at
+ * http://research.microsoft.com/fsharp/manual/spec2.aspx#_Toc202383715
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](PR['sourceDecorator']({
+ 'keywords': (
+ 'bytes,default,double,enum,extend,extensions,false,'
+ + 'group,import,max,message,option,'
+ + 'optional,package,repeated,required,returns,rpc,service,'
+ + 'syntax,to,true'),
+ 'types': /^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,
+ 'cStyleComments': true
+ }), ['proto']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-r.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-r.js
new file mode 100644
index 0000000..3d19db0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-r.js
@@ -0,0 +1,57 @@
+// Copyright (C) 2012 Jeffrey B. Arnold
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for S, S-plus, and R source code.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-r"> code </pre>
+ *
+ * Language definition from
+ * http://cran.r-project.org/doc/manuals/R-lang.html.
+ * Many of the regexes are shared with the pygments SLexer,
+ * http://pygments.org/.
+ *
+ * Original: https://raw.github.com/jrnold/prettify-lang-r-bugs/master/lang-r.js
+ *
+ * @author jeffrey.arnold@gmail.com
+ */
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'],
+ [PR['PR_STRING'], /^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/, null, "'"]
+ ],
+ [
+ [PR['PR_COMMENT'], /^#.*/],
+ [PR['PR_KEYWORD'], /^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],
+ // hex numbes
+ [PR['PR_LITERAL'], /^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],
+ // Decimal numbers
+ [PR['PR_LITERAL'], /^[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],
+ // builtin symbols
+ [PR['PR_LITERAL'], /^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|[0-9]+))(?![A-Za-z0-9_.])/],
+ // assignment, operators, and parens, etc.
+ [PR['PR_PUNCTUATION'], /^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],
+ // valid variable names
+ [PR['PR_PLAIN'], /^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],
+ // string backtick
+ [PR['PR_STRING'], /^`.+`/]
+ ]),
+ ['r', 's', 'R', 'S', 'Splus']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-rd.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-rd.js
new file mode 100644
index 0000000..2aa78d5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-rd.js
@@ -0,0 +1,47 @@
+// Copyright (C) 2012 Jeffrey Arnold
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview
+ * Support for R documentation (Rd) files
+ *
+ * Minimal highlighting or Rd files, basically just highlighting
+ * macros. It does not try to identify verbatim or R-like regions of
+ * macros as that is too complicated for a lexer. Descriptions of the
+ * Rd format can be found
+ * http://cran.r-project.org/doc/manuals/R-exts.html and
+ * http://developer.r-project.org/parseRd.pdf.
+ *
+ * @author Jeffrey Arnold
+ */
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // all comments begin with '%'
+ [PR['PR_COMMENT'], /^%[^\r\n]*/, null, '%']
+ ],
+ [// special macros with no args
+ [PR['PR_LITERAL'], /^\\(?:cr|l?dots|R|tab)\b/],
+ // macros
+ [PR['PR_KEYWORD'], /^\\[a-zA-Z@]+/],
+ // highlighted as macros, since technically they are
+ [PR['PR_KEYWORD'], /^#(?:ifn?def|endif)/ ],
+ // catch escaped brackets
+ [PR['PR_PLAIN'], /^\\[{}]/],
+ // punctuation
+ [PR['PR_PUNCTUATION'], /^[{}()\[\]]+/]
+ ]),
+ ['Rd', 'rd']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-scala.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-scala.js
new file mode 100644
index 0000000..db9b484
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-scala.js
@@ -0,0 +1,54 @@
+// Copyright (C) 2010 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for Scala.
+ *
+ * Derived from http://lampsvn.epfl.ch/svn-repos/scala/scala-documentation/trunk/src/reference/SyntaxSummary.tex
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double or single quoted string
+ // or a triple double-quoted multi-line string.
+ [PR['PR_STRING'],
+ /^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/,
+ null, '"'],
+ [PR['PR_LITERAL'], /^`(?:[^\r\n\\`]|\\.)*`?/, null, '`'],
+ [PR['PR_PUNCTUATION'], /^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/, null,
+ '!#%&()*+,-:;<=>?@[\\]^{|}~']
+ ],
+ [
+ // A symbol literal is a single quote followed by an identifier with no
+ // single quote following
+ // A character literal has single quotes on either side
+ [PR['PR_STRING'], /^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/],
+ [PR['PR_LITERAL'], /^'[a-zA-Z_$][\w$]*(?!['$\w])/],
+ [PR['PR_KEYWORD'], /^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
+ [PR['PR_LITERAL'], /^(?:true|false|null|this)\b/],
+ [PR['PR_LITERAL'], /^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],
+ // Treat upper camel case identifiers as types.
+ [PR['PR_TYPE'], /^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],
+ [PR['PR_PLAIN'], /^[$a-zA-Z_][\w$]*/],
+ [PR['PR_COMMENT'], /^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],
+ [PR['PR_PUNCTUATION'], /^(?:\.+|\/)/]
+ ]),
+ ['scala']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-sql.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-sql.js
new file mode 100644
index 0000000..9f1d6cb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-sql.js
@@ -0,0 +1,58 @@
+// Copyright (C) 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for SQL.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-sql">(my SQL code)</pre>
+ *
+ *
+ * http://savage.net.au/SQL/sql-99.bnf.html is the basis for the grammar, and
+ * http://msdn.microsoft.com/en-us/library/aa238507(SQL.80).aspx and
+ * http://meta.stackoverflow.com/q/92352/137403 as the bases for the keyword
+ * list.
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double or single quoted, possibly multi-line, string.
+ [PR['PR_STRING'], /^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/, null,
+ '"\'']
+ ],
+ [
+ // A comment is either a line comment that starts with two dashes, or
+ // two dashes preceding a long bracketed block.
+ [PR['PR_COMMENT'], /^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],
+ [PR['PR_KEYWORD'], /^(?:ADD|ALL|ALTER|AND|ANY|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONNECT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOLLOWING|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|MATCH|MATCHED|MERGE|NATURAL|NATIONAL|NOCHECK|NONCLUSTERED|NOCYCLE|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PARTITION|PERCENT|PIVOT|PLAN|PRECEDING|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|ROWS?|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|START|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNBOUNDED|UNION|UNIQUE|UNPIVOT|UPDATE|UPDATETEXT|USE|USER|USING|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WITHIN|WRITETEXT|XML)(?=[^\w-]|$)/i, null],
+ // A number is a hex integer literal, a decimal real literal, or in
+ // scientific notation.
+ [PR['PR_LITERAL'],
+ /^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
+ // An identifier
+ [PR['PR_PLAIN'], /^[a-z_][\w-]*/i],
+ // A run of punctuation
+ [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]
+ ]),
+ ['sql']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-tcl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-tcl.js
new file mode 100644
index 0000000..60ff663
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-tcl.js
@@ -0,0 +1,62 @@
+// Copyright (C) 2012 Pyrios.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for TCL
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-tcl">proc foo {} {puts bar}</pre>
+ *
+ * I copy-pasted lang-lisp.js, so this is probably not 100% accurate.
+ * I used http://wiki.tcl.tk/1019 for the keywords, but tried to only
+ * include as keywords that had more impact on the program flow
+ * rather than providing convenience. For example, I included 'if'
+ * since that provides branching, but left off 'open' since that is more
+ * like a proc. Add more if it makes sense.
+ *
+ * @author pyrios@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ ['opn', /^\{+/, null, '{'],
+ ['clo', /^\}+/, null, '}'],
+ // A line comment that starts with ;
+ [PR['PR_COMMENT'], /^#[^\r\n]*/, null, '#'],
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double quoted, possibly multi-line, string.
+ [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"']
+ ],
+ [
+ [PR['PR_KEYWORD'], /^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/, null],
+ [PR['PR_LITERAL'],
+ /^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],
+ // A single quote possibly followed by a word that optionally ends with
+ // = ! or ?.
+ [PR['PR_LITERAL'],
+ /^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],
+ // A word that optionally ends with = ! or ?.
+ [PR['PR_PLAIN'],
+ /^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],
+ // A printable non-space non-special character
+ [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0()\"\\\';]+/]
+ ]),
+ ['tcl']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-tex.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-tex.js
new file mode 100644
index 0000000..e8c2f7b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-tex.js
@@ -0,0 +1,46 @@
+// Copyright (C) 2011 Martin S.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview
+ * Support for tex highlighting as discussed on
+ * <a href="http://meta.tex.stackexchange.com/questions/872/text-immediate-following-double-backslashes-is-highlighted-as-macro-inside-a-code/876#876">meta.tex.stackexchange.com</a>.
+ *
+ * @author Martin S.
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // all comments begin with '%'
+ [PR['PR_COMMENT'], /^%[^\r\n]*/, null, '%']
+ ],
+ [
+ //[PR['PR_DECLARATION'], /^\\([egx]?def|(new|renew|provide)(command|environment))\b/],
+ // any command starting with a \ and contains
+ // either only letters (a-z,A-Z), '@' (internal macros)
+ [PR['PR_KEYWORD'], /^\\[a-zA-Z@]+/],
+ // or contains only one character
+ [PR['PR_KEYWORD'], /^\\./],
+ // Highlight dollar for math mode and ampersam for tabular
+ [PR['PR_TYPE'], /^[$&]/],
+ // numeric measurement values with attached units
+ [PR['PR_LITERAL'],
+ /[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],
+ // punctuation usually occurring within commands
+ [PR['PR_PUNCTUATION'], /^[{}()\[\]=]+/]
+ ]),
+ ['latex', 'tex']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-vb.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-vb.js
new file mode 100644
index 0000000..592d526
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-vb.js
@@ -0,0 +1,66 @@
+// Copyright (C) 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for various flavors of basic.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-vb"></pre>
+ *
+ *
+ * http://msdn.microsoft.com/en-us/library/aa711638(VS.71).aspx defines the
+ * visual basic grammar lexical grammar.
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0\u2028\u2029]+/, null, '\t\n\r \xA0\u2028\u2029'],
+ // A double quoted string with quotes escaped by doubling them.
+ // A single character can be suffixed with C.
+ [PR['PR_STRING'], /^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i, null,
+ '"\u201C\u201D'],
+ // A comment starts with a single quote and runs until the end of the
+ // line.
+ // VB6 apparently allows _ as an escape sequence for newlines though
+ // this is not a documented feature of VB.net.
+ // http://meta.stackoverflow.com/q/121497/137403
+ [PR['PR_COMMENT'], /^[\'\u2018\u2019](?:_(?:\r\n?|[^\r]?)|[^\r\n_\u2028\u2029])*/, null, '\'\u2018\u2019']
+ ],
+ [
+ [PR['PR_KEYWORD'], /^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i, null],
+ // A second comment form
+ [PR['PR_COMMENT'], /^REM\b[^\r\n\u2028\u2029]*/i],
+ // A boolean, numeric, or date literal.
+ [PR['PR_LITERAL'],
+ /^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],
+ // An identifier. Keywords can be turned into identifers
+ // with square brackets, and there may be optional type
+ // characters after a normal identifier in square brackets.
+ [PR['PR_PLAIN'], /^(?:(?:[a-z]|_\w)\w*(?:\[[%&@!#]+\])?|\[(?:[a-z]|_\w)\w*\])/i],
+ // A run of punctuation
+ [PR['PR_PUNCTUATION'],
+ /^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],
+ // Square brackets
+ [PR['PR_PUNCTUATION'], /^(?:\[|\])/]
+ ]),
+ ['vb', 'vbs']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-vhdl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-vhdl.js
new file mode 100644
index 0000000..f6410bc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-vhdl.js
@@ -0,0 +1,34 @@
+/**
+ * @fileoverview
+ * Registers a language handler for VHDL '93.
+ *
+ * Based on the lexical grammar and keywords at
+ * http://www.iis.ee.ethz.ch/~zimmi/download/vhdl93_syntax.html
+ *
+ * @author benoit@ryder.fr
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0']
+ ],
+ [
+ // String, character or bit string
+ [PR['PR_STRING'], /^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],
+ // Comment, from two dashes until end of line.
+ [PR['PR_COMMENT'], /^--[^\r\n]*/],
+ [PR['PR_KEYWORD'], /^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i, null],
+ // Type, predefined or standard
+ [PR['PR_TYPE'], /^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i, null],
+ // Predefined attributes
+ [PR['PR_TYPE'], /^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i, null],
+ // Number, decimal or based literal
+ [PR['PR_LITERAL'], /^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i],
+ // Identifier, basic or extended
+ [PR['PR_PLAIN'], /^(?:[a-z]\w*|\\[^\\]*\\)/i],
+ // Punctuation
+ [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]
+ ]),
+ ['vhdl', 'vhd']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-wiki.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-wiki.js
new file mode 100644
index 0000000..660423e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-wiki.js
@@ -0,0 +1,53 @@
+// Copyright (C) 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for Wiki pages.
+ *
+ * Based on WikiSyntax at http://code.google.com/p/support/wiki/WikiSyntax
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Whitespace
+ [PR['PR_PLAIN'], /^[\t \xA0a-gi-z0-9]+/, null,
+ '\t \xA0abcdefgijklmnopqrstuvwxyz0123456789'],
+ // Wiki formatting
+ [PR['PR_PUNCTUATION'], /^[=*~\^\[\]]+/, null, '=*~^[]']
+ ],
+ [
+ // Meta-info like #summary, #labels, etc.
+ ['lang-wiki.meta', /(?:^^|\r\n?|\n)(#[a-z]+)\b/],
+ // A WikiWord
+ [PR['PR_LITERAL'], /^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/
+ ],
+ // A preformatted block in an unknown language
+ ['lang-', /^\{\{\{([\s\S]+?)\}\}\}/],
+ // A block of source code in an unknown language
+ ['lang-', /^`([^\r\n`]+)`/],
+ // An inline URL.
+ [PR['PR_STRING'],
+ /^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],
+ [PR['PR_PLAIN'], /^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]
+ ]),
+ ['wiki']);
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer']([[PR['PR_KEYWORD'], /^#[a-z]+/i, null, '#']], []),
+ ['wiki.meta']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-xq.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-xq.js
new file mode 100644
index 0000000..38ffd72
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-xq.js
@@ -0,0 +1,67 @@
+// Copyright (C) 2011 Patrick Wied
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for XQuery.
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-xq"></pre>
+ *
+ *
+ * @author Patrick Wied ( patpa7p@live.de )
+ * @version 2010-09-28
+ */
+
+// Falls back to plain for stylesheets that don't style fun.
+var PR_FUNCTION = 'fun pln';
+// Falls back to plaiin for stylesheets that don't style var.
+var PR_VARIABLE = 'var pln';
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ // Matching $var-ia_bles
+ [PR_VARIABLE, /^\$[A-Za-z0-9_\-]+/, null, "$"]
+ ],
+ [
+ // Matching lt and gt operators
+ // Not the best matching solution but you have to differentiate between the gt operator and the tag closing char
+ [PR['PR_PLAIN'], /^[\s=][<>][\s=]/],
+ // Matching @Attributes
+ [PR['PR_LITERAL'], /^\@[\w-]+/],
+ // Matching xml tags
+ [PR['PR_TAG'], /^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
+ // Matching single or multiline xquery comments -> (: <text> :)
+ [PR['PR_COMMENT'], /^\(:[\s\S]*?:\)/],
+ // Tokenizing /{}:=;*,[]() as plain
+ [PR['PR_PLAIN'], /^[\/\{\};,\[\]\(\)]$/],
+ // Matching a double or single quoted, possibly multi-line, string.
+ // with the special condition that a { in a string changes to xquery context
+ [PR['PR_STRING'], /^(?:\"(?:[^\"\\\{]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\\{]|\\[\s\S])*(?:\'|$))/, null, '"\''],
+ // Matching standard xquery keywords
+ [PR['PR_KEYWORD'], /^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\b/],
+ // Matching standard xquery types
+ [PR['PR_TYPE'], /^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\b/, null],
+ // Matching standard xquery functions
+ [PR_FUNCTION, /^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\b/],
+ // Matching normal words if none of the previous regular expressions matched
+ [PR['PR_PLAIN'], /^[A-Za-z0-9_\-\:]+/],
+ // Matching whitespaces
+ [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/]
+ ]),
+ ['xq', 'xquery']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-yaml.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-yaml.js
new file mode 100644
index 0000000..c2e52b2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/lang-yaml.js
@@ -0,0 +1,27 @@
+// Contributed by ribrdb @ code.google.com
+
+/**
+ * @fileoverview
+ * Registers a language handler for YAML.
+ *
+ * @author ribrdb
+ */
+
+PR['registerLangHandler'](
+ PR['createSimpleLexer'](
+ [
+ [PR['PR_PUNCTUATION'], /^[:|>?]+/, null, ':|>?'],
+ [PR['PR_DECLARATION'], /^%(?:YAML|TAG)[^#\r\n]+/, null, '%'],
+ [PR['PR_TYPE'], /^[&]\S+/, null, '&'],
+ [PR['PR_TYPE'], /^!\S*/, null, '!'],
+ [PR['PR_STRING'], /^"(?:[^\\"]|\\.)*(?:"|$)/, null, '"'],
+ [PR['PR_STRING'], /^'(?:[^']|'')*(?:'|$)/, null, "'"],
+ [PR['PR_COMMENT'], /^#[^\r\n]*/, null, '#'],
+ [PR['PR_PLAIN'], /^\s+/, null, ' \t\r\n']
+ ],
+ [
+ [PR['PR_DECLARATION'], /^(?:---|\.\.\.)(?:[\r\n]|$)/],
+ [PR['PR_PUNCTUATION'], /^-/],
+ [PR['PR_KEYWORD'], /^\w+:[ \r\n]/],
+ [PR['PR_PLAIN'], /^\w+/]
+ ]), ['yaml', 'yml']);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/prettify.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/prettify.css
new file mode 100644
index 0000000..400fd74
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/prettify.css
@@ -0,0 +1,52 @@
+/* Pretty printing styles. Used with prettify.js. */
+
+/* SPAN elements with the classes below are added by prettyprint. */
+.pln { color: #000 } /* plain text */
+
+@media screen {
+ .str { color: #080 } /* string content */
+ .kwd { color: #008 } /* a keyword */
+ .com { color: #800 } /* a comment */
+ .typ { color: #606 } /* a type name */
+ .lit { color: #066 } /* a literal value */
+ /* punctuation, lisp open bracket, lisp close bracket */
+ .pun, .opn, .clo { color: #660 }
+ .tag { color: #008 } /* a markup tag name */
+ .atn { color: #606 } /* a markup attribute name */
+ .atv { color: #080 } /* a markup attribute value */
+ .dec, .var { color: #606 } /* a declaration; a variable name */
+ .fun { color: red } /* a function name */
+}
+
+/* Use higher contrast and text-weight for printable form. */
+@media print, projection {
+ .str { color: #060 }
+ .kwd { color: #006; font-weight: bold }
+ .com { color: #600; font-style: italic }
+ .typ { color: #404; font-weight: bold }
+ .lit { color: #044 }
+ .pun, .opn, .clo { color: #440 }
+ .tag { color: #006; font-weight: bold }
+ .atn { color: #404 }
+ .atv { color: #060 }
+}
+
+/* Put a border around prettyprinted code snippets. */
+pre.prettyprint { padding: 2px; border: 1px solid #888 }
+
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
+li.L0,
+li.L1,
+li.L2,
+li.L3,
+li.L5,
+li.L6,
+li.L7,
+li.L8 { list-style-type: none }
+/* Alternate shading for lines */
+li.L1,
+li.L3,
+li.L5,
+li.L7,
+li.L9 { background: #eee }
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/prettify.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/prettify.js
new file mode 100644
index 0000000..10c9fb7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/prettify.js
@@ -0,0 +1,1655 @@
+// Copyright (C) 2006 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * some functions for browser-side pretty printing of code contained in html.
+ *
+ * <p>
+ * For a fairly comprehensive set of languages see the
+ * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
+ * file that came with this source. At a minimum, the lexer should work on a
+ * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
+ * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk
+ * and a subset of Perl, but, because of commenting conventions, doesn't work on
+ * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
+ * <p>
+ * Usage: <ol>
+ * <li> include this source file in an html page via
+ * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
+ * <li> define style rules. See the example page for examples.
+ * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
+ * {@code class=prettyprint.}
+ * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
+ * printer needs to do more substantial DOM manipulations to support that, so
+ * some css styles may not be preserved.
+ * </ol>
+ * That's it. I wanted to keep the API as simple as possible, so there's no
+ * need to specify which language the code is in, but if you wish, you can add
+ * another class to the {@code <pre>} or {@code <code>} element to specify the
+ * language, as in {@code <pre class="prettyprint lang-java">}. Any class that
+ * starts with "lang-" followed by a file extension, specifies the file type.
+ * See the "lang-*.js" files in this directory for code that implements
+ * per-language file handlers.
+ * <p>
+ * Change log:<br>
+ * cbeust, 2006/08/22
+ * <blockquote>
+ * Java annotations (start with "@") are now captured as literals ("lit")
+ * </blockquote>
+ * @requires console
+ */
+
+// JSLint declarations
+/*global console, document, navigator, setTimeout, window, define */
+
+/** @define {boolean} */
+var IN_GLOBAL_SCOPE = true;
+
+/**
+ * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
+ * UI events.
+ * If set to {@code false}, {@code prettyPrint()} is synchronous.
+ */
+window['PR_SHOULD_USE_CONTINUATION'] = true;
+
+/**
+ * Pretty print a chunk of code.
+ * @param {string} sourceCodeHtml The HTML to pretty print.
+ * @param {string} opt_langExtension The language name to use.
+ * Typically, a filename extension like 'cpp' or 'java'.
+ * @param {number|boolean} opt_numberLines True to number lines,
+ * or the 1-indexed number of the first line in sourceCodeHtml.
+ * @return {string} code as html, but prettier
+ */
+var prettyPrintOne;
+/**
+ * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
+ * {@code class=prettyprint} and prettify them.
+ *
+ * @param {Function} opt_whenDone called when prettifying is done.
+ * @param {HTMLElement|HTMLDocument} opt_root an element or document
+ * containing all the elements to pretty print.
+ * Defaults to {@code document.body}.
+ */
+var prettyPrint;
+
+
+(function () {
+ var win = window;
+ // Keyword lists for various languages.
+ // We use things that coerce to strings to make them compact when minified
+ // and to defeat aggressive optimizers that fold large string constants.
+ var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
+ var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
+ "double,enum,extern,float,goto,inline,int,long,register,short,signed," +
+ "sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];
+ var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
+ "new,operator,private,protected,public,this,throw,true,try,typeof"];
+ var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
+ "concept,concept_map,const_cast,constexpr,decltype,delegate," +
+ "dynamic_cast,explicit,export,friend,generic,late_check," +
+ "mutable,namespace,nullptr,property,reinterpret_cast,static_assert," +
+ "static_cast,template,typeid,typename,using,virtual,where"];
+ var JAVA_KEYWORDS = [COMMON_KEYWORDS,
+ "abstract,assert,boolean,byte,extends,final,finally,implements,import," +
+ "instanceof,interface,null,native,package,strictfp,super,synchronized," +
+ "throws,transient"];
+ var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
+ "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
+ "fixed,foreach,from,group,implicit,in,internal,into,is,let," +
+ "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," +
+ "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," +
+ "var,virtual,where"];
+ var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
+ "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
+ "throw,true,try,unless,until,when,while,yes";
+ var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
+ "debugger,eval,export,function,get,null,set,undefined,var,with," +
+ "Infinity,NaN"];
+ var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
+ "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
+ "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
+ var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
+ "elif,except,exec,finally,from,global,import,in,is,lambda," +
+ "nonlocal,not,or,pass,print,raise,try,with,yield," +
+ "False,True,None"];
+ var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
+ "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
+ "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
+ "BEGIN,END"];
+ var RUST_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "as,assert,const,copy,drop," +
+ "enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv," +
+ "pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"];
+ var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
+ "function,in,local,set,then,until"];
+ var ALL_KEYWORDS = [
+ CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS,
+ PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
+ var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;
+
+ // token style names. correspond to css classes
+ /**
+ * token style for a string literal
+ * @const
+ */
+ var PR_STRING = 'str';
+ /**
+ * token style for a keyword
+ * @const
+ */
+ var PR_KEYWORD = 'kwd';
+ /**
+ * token style for a comment
+ * @const
+ */
+ var PR_COMMENT = 'com';
+ /**
+ * token style for a type
+ * @const
+ */
+ var PR_TYPE = 'typ';
+ /**
+ * token style for a literal value. e.g. 1, null, true.
+ * @const
+ */
+ var PR_LITERAL = 'lit';
+ /**
+ * token style for a punctuation string.
+ * @const
+ */
+ var PR_PUNCTUATION = 'pun';
+ /**
+ * token style for plain text.
+ * @const
+ */
+ var PR_PLAIN = 'pln';
+
+ /**
+ * token style for an sgml tag.
+ * @const
+ */
+ var PR_TAG = 'tag';
+ /**
+ * token style for a markup declaration such as a DOCTYPE.
+ * @const
+ */
+ var PR_DECLARATION = 'dec';
+ /**
+ * token style for embedded source.
+ * @const
+ */
+ var PR_SOURCE = 'src';
+ /**
+ * token style for an sgml attribute name.
+ * @const
+ */
+ var PR_ATTRIB_NAME = 'atn';
+ /**
+ * token style for an sgml attribute value.
+ * @const
+ */
+ var PR_ATTRIB_VALUE = 'atv';
+
+ /**
+ * A class that indicates a section of markup that is not code, e.g. to allow
+ * embedding of line numbers within code listings.
+ * @const
+ */
+ var PR_NOCODE = 'nocode';
+
+
+
+ /**
+ * A set of tokens that can precede a regular expression literal in
+ * javascript
+ * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
+ * has the full list, but I've removed ones that might be problematic when
+ * seen in languages that don't support regular expression literals.
+ *
+ * <p>Specifically, I've removed any keywords that can't precede a regexp
+ * literal in a syntactically legal javascript program, and I've removed the
+ * "in" keyword since it's not a keyword in many languages, and might be used
+ * as a count of inches.
+ *
+ * <p>The link above does not accurately describe EcmaScript rules since
+ * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
+ * very well in practice.
+ *
+ * @private
+ * @const
+ */
+ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
+
+ // CAVEAT: this does not properly handle the case where a regular
+ // expression immediately follows another since a regular expression may
+ // have flags for case-sensitivity and the like. Having regexp tokens
+ // adjacent is not valid in any language I'm aware of, so I'm punting.
+ // TODO: maybe style special characters inside a regexp as punctuation.
+
+ /**
+ * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
+ * matches the union of the sets of strings matched by the input RegExp.
+ * Since it matches globally, if the input strings have a start-of-input
+ * anchor (/^.../), it is ignored for the purposes of unioning.
+ * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
+ * @return {RegExp} a global regex.
+ */
+ function combinePrefixPatterns(regexs) {
+ var capturedGroupIndex = 0;
+
+ var needToFoldCase = false;
+ var ignoreCase = false;
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.ignoreCase) {
+ ignoreCase = true;
+ } else if (/[a-z]/i.test(regex.source.replace(
+ /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
+ needToFoldCase = true;
+ ignoreCase = false;
+ break;
+ }
+ }
+
+ var escapeCharToCodeUnit = {
+ 'b': 8,
+ 't': 9,
+ 'n': 0xa,
+ 'v': 0xb,
+ 'f': 0xc,
+ 'r': 0xd
+ };
+
+ function decodeEscape(charsetPart) {
+ var cc0 = charsetPart.charCodeAt(0);
+ if (cc0 !== 92 /* \\ */) {
+ return cc0;
+ }
+ var c1 = charsetPart.charAt(1);
+ cc0 = escapeCharToCodeUnit[c1];
+ if (cc0) {
+ return cc0;
+ } else if ('0' <= c1 && c1 <= '7') {
+ return parseInt(charsetPart.substring(1), 8);
+ } else if (c1 === 'u' || c1 === 'x') {
+ return parseInt(charsetPart.substring(2), 16);
+ } else {
+ return charsetPart.charCodeAt(1);
+ }
+ }
+
+ function encodeEscape(charCode) {
+ if (charCode < 0x20) {
+ return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
+ }
+ var ch = String.fromCharCode(charCode);
+ return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
+ ? "\\" + ch : ch;
+ }
+
+ function caseFoldCharset(charSet) {
+ var charsetParts = charSet.substring(1, charSet.length - 1).match(
+ new RegExp(
+ '\\\\u[0-9A-Fa-f]{4}'
+ + '|\\\\x[0-9A-Fa-f]{2}'
+ + '|\\\\[0-3][0-7]{0,2}'
+ + '|\\\\[0-7]{1,2}'
+ + '|\\\\[\\s\\S]'
+ + '|-'
+ + '|[^-\\\\]',
+ 'g'));
+ var ranges = [];
+ var inverse = charsetParts[0] === '^';
+
+ var out = ['['];
+ if (inverse) { out.push('^'); }
+
+ for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
+ var p = charsetParts[i];
+ if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
+ out.push(p);
+ } else {
+ var start = decodeEscape(p);
+ var end;
+ if (i + 2 < n && '-' === charsetParts[i + 1]) {
+ end = decodeEscape(charsetParts[i + 2]);
+ i += 2;
+ } else {
+ end = start;
+ }
+ ranges.push([start, end]);
+ // If the range might intersect letters, then expand it.
+ // This case handling is too simplistic.
+ // It does not deal with non-latin case folding.
+ // It works for latin source code identifiers though.
+ if (!(end < 65 || start > 122)) {
+ if (!(end < 65 || start > 90)) {
+ ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
+ }
+ if (!(end < 97 || start > 122)) {
+ ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
+ }
+ }
+ }
+ }
+
+ // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
+ // -> [[1, 12], [14, 14], [16, 17]]
+ ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
+ var consolidatedRanges = [];
+ var lastRange = [];
+ for (var i = 0; i < ranges.length; ++i) {
+ var range = ranges[i];
+ if (range[0] <= lastRange[1] + 1) {
+ lastRange[1] = Math.max(lastRange[1], range[1]);
+ } else {
+ consolidatedRanges.push(lastRange = range);
+ }
+ }
+
+ for (var i = 0; i < consolidatedRanges.length; ++i) {
+ var range = consolidatedRanges[i];
+ out.push(encodeEscape(range[0]));
+ if (range[1] > range[0]) {
+ if (range[1] + 1 > range[0]) { out.push('-'); }
+ out.push(encodeEscape(range[1]));
+ }
+ }
+ out.push(']');
+ return out.join('');
+ }
+
+ function allowAnywhereFoldCaseAndRenumberGroups(regex) {
+ // Split into character sets, escape sequences, punctuation strings
+ // like ('(', '(?:', ')', '^'), and runs of characters that do not
+ // include any of the above.
+ var parts = regex.source.match(
+ new RegExp(
+ '(?:'
+ + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
+ + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
+ + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
+ + '|\\\\[0-9]+' // a back-reference or octal escape
+ + '|\\\\[^ux0-9]' // other escape sequence
+ + '|\\(\\?[:!=]' // start of a non-capturing group
+ + '|[\\(\\)\\^]' // start/end of a group, or line start
+ + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
+ + ')',
+ 'g'));
+ var n = parts.length;
+
+ // Maps captured group numbers to the number they will occupy in
+ // the output or to -1 if that has not been determined, or to
+ // undefined if they need not be capturing in the output.
+ var capturedGroups = [];
+
+ // Walk over and identify back references to build the capturedGroups
+ // mapping.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ // groups are 1-indexed, so max group index is count of '('
+ ++groupIndex;
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue) {
+ if (decimalValue <= groupIndex) {
+ capturedGroups[decimalValue] = -1;
+ } else {
+ // Replace with an unambiguous escape sequence so that
+ // an octal escape sequence does not turn into a backreference
+ // to a capturing group from an earlier regex.
+ parts[i] = encodeEscape(decimalValue);
+ }
+ }
+ }
+ }
+
+ // Renumber groups and reduce capturing groups to non-capturing groups
+ // where possible.
+ for (var i = 1; i < capturedGroups.length; ++i) {
+ if (-1 === capturedGroups[i]) {
+ capturedGroups[i] = ++capturedGroupIndex;
+ }
+ }
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ ++groupIndex;
+ if (!capturedGroups[groupIndex]) {
+ parts[i] = '(?:';
+ }
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ parts[i] = '\\' + capturedGroups[decimalValue];
+ }
+ }
+ }
+
+ // Remove any prefix anchors so that the output will match anywhere.
+ // ^^ really does mean an anchored match though.
+ for (var i = 0; i < n; ++i) {
+ if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
+ }
+
+ // Expand letters to groups to handle mixing of case-sensitive and
+ // case-insensitive patterns if necessary.
+ if (regex.ignoreCase && needToFoldCase) {
+ for (var i = 0; i < n; ++i) {
+ var p = parts[i];
+ var ch0 = p.charAt(0);
+ if (p.length >= 2 && ch0 === '[') {
+ parts[i] = caseFoldCharset(p);
+ } else if (ch0 !== '\\') {
+ // TODO: handle letters in numeric escapes.
+ parts[i] = p.replace(
+ /[a-zA-Z]/g,
+ function (ch) {
+ var cc = ch.charCodeAt(0);
+ return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
+ });
+ }
+ }
+ }
+
+ return parts.join('');
+ }
+
+ var rewritten = [];
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.global || regex.multiline) { throw new Error('' + regex); }
+ rewritten.push(
+ '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
+ }
+
+ return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
+ }
+
+ /**
+ * Split markup into a string of source code and an array mapping ranges in
+ * that string to the text nodes in which they appear.
+ *
+ * <p>
+ * The HTML DOM structure:</p>
+ * <pre>
+ * (Element "p"
+ * (Element "b"
+ * (Text "print ")) ; #1
+ * (Text "'Hello '") ; #2
+ * (Element "br") ; #3
+ * (Text " + 'World';")) ; #4
+ * </pre>
+ * <p>
+ * corresponds to the HTML
+ * {@code <p><b>print </b>'Hello '<br> + 'World';</p>}.</p>
+ *
+ * <p>
+ * It will produce the output:</p>
+ * <pre>
+ * {
+ * sourceCode: "print 'Hello '\n + 'World';",
+ * // 1 2
+ * // 012345678901234 5678901234567
+ * spans: [0, #1, 6, #2, 14, #3, 15, #4]
+ * }
+ * </pre>
+ * <p>
+ * where #1 is a reference to the {@code "print "} text node above, and so
+ * on for the other text nodes.
+ * </p>
+ *
+ * <p>
+ * The {@code} spans array is an array of pairs. Even elements are the start
+ * indices of substrings, and odd elements are the text nodes (or BR elements)
+ * that contain the text for those substrings.
+ * Substrings continue until the next index or the end of the source.
+ * </p>
+ *
+ * @param {Node} node an HTML DOM subtree containing source-code.
+ * @param {boolean} isPreformatted true if white-space in text nodes should
+ * be considered significant.
+ * @return {Object} source code and the text nodes in which they occur.
+ */
+ function extractSourceSpans(node, isPreformatted) {
+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
+
+ var chunks = [];
+ var length = 0;
+ var spans = [];
+ var k = 0;
+
+ function walk(node) {
+ var type = node.nodeType;
+ if (type == 1) { // Element
+ if (nocode.test(node.className)) { return; }
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ walk(child);
+ }
+ var nodeName = node.nodeName.toLowerCase();
+ if ('br' === nodeName || 'li' === nodeName) {
+ chunks[k] = '\n';
+ spans[k << 1] = length++;
+ spans[(k++ << 1) | 1] = node;
+ }
+ } else if (type == 3 || type == 4) { // Text
+ var text = node.nodeValue;
+ if (text.length) {
+ if (!isPreformatted) {
+ text = text.replace(/[ \t\r\n]+/g, ' ');
+ } else {
+ text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
+ }
+ // TODO: handle tabs here?
+ chunks[k] = text;
+ spans[k << 1] = length;
+ length += text.length;
+ spans[(k++ << 1) | 1] = node;
+ }
+ }
+ }
+
+ walk(node);
+
+ return {
+ sourceCode: chunks.join('').replace(/\n$/, ''),
+ spans: spans
+ };
+ }
+
+ /**
+ * Apply the given language handler to sourceCode and add the resulting
+ * decorations to out.
+ * @param {number} basePos the index of sourceCode within the chunk of source
+ * whose decorations are already present on out.
+ */
+ function appendDecorations(basePos, sourceCode, langHandler, out) {
+ if (!sourceCode) { return; }
+ var job = {
+ sourceCode: sourceCode,
+ basePos: basePos
+ };
+ langHandler(job);
+ out.push.apply(out, job.decorations);
+ }
+
+ var notWs = /\S/;
+
+ /**
+ * Given an element, if it contains only one child element and any text nodes
+ * it contains contain only space characters, return the sole child element.
+ * Otherwise returns undefined.
+ * <p>
+ * This is meant to return the CODE element in {@code <pre><code ...>} when
+ * there is a single child element that contains all the non-space textual
+ * content, but not to return anything where there are multiple child elements
+ * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
+ * is textual content.
+ */
+ function childContentWrapper(element) {
+ var wrapper = undefined;
+ for (var c = element.firstChild; c; c = c.nextSibling) {
+ var type = c.nodeType;
+ wrapper = (type === 1) // Element Node
+ ? (wrapper ? element : c)
+ : (type === 3) // Text Node
+ ? (notWs.test(c.nodeValue) ? element : wrapper)
+ : wrapper;
+ }
+ return wrapper === element ? undefined : wrapper;
+ }
+
+ /** Given triples of [style, pattern, context] returns a lexing function,
+ * The lexing function interprets the patterns to find token boundaries and
+ * returns a decoration list of the form
+ * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
+ * where index_n is an index into the sourceCode, and style_n is a style
+ * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
+ * all characters in sourceCode[index_n-1:index_n].
+ *
+ * The stylePatterns is a list whose elements have the form
+ * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
+ *
+ * Style is a style constant like PR_PLAIN, or can be a string of the
+ * form 'lang-FOO', where FOO is a language extension describing the
+ * language of the portion of the token in $1 after pattern executes.
+ * E.g., if style is 'lang-lisp', and group 1 contains the text
+ * '(hello (world))', then that portion of the token will be passed to the
+ * registered lisp handler for formatting.
+ * The text before and after group 1 will be restyled using this decorator
+ * so decorators should take care that this doesn't result in infinite
+ * recursion. For example, the HTML lexer rule for SCRIPT elements looks
+ * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
+ * '<script>foo()<\/script>', which would cause the current decorator to
+ * be called with '<script>' which would not match the same rule since
+ * group 1 must not be empty, so it would be instead styled as PR_TAG by
+ * the generic tag rule. The handler registered for the 'js' extension would
+ * then be called with 'foo()', and finally, the current decorator would
+ * be called with '<\/script>' which would not match the original rule and
+ * so the generic tag rule would identify it as a tag.
+ *
+ * Pattern must only match prefixes, and if it matches a prefix, then that
+ * match is considered a token with the same style.
+ *
+ * Context is applied to the last non-whitespace, non-comment token
+ * recognized.
+ *
+ * Shortcut is an optional string of characters, any of which, if the first
+ * character, gurantee that this pattern and only this pattern matches.
+ *
+ * @param {Array} shortcutStylePatterns patterns that always start with
+ * a known character. Must have a shortcut string.
+ * @param {Array} fallthroughStylePatterns patterns that will be tried in
+ * order if the shortcut ones fail. May have shortcuts.
+ *
+ * @return {function (Object)} a
+ * function that takes source code and returns a list of decorations.
+ */
+ function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
+ var shortcuts = {};
+ var tokenizer;
+ (function () {
+ var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
+ var allRegexs = [];
+ var regexKeys = {};
+ for (var i = 0, n = allPatterns.length; i < n; ++i) {
+ var patternParts = allPatterns[i];
+ var shortcutChars = patternParts[3];
+ if (shortcutChars) {
+ for (var c = shortcutChars.length; --c >= 0;) {
+ shortcuts[shortcutChars.charAt(c)] = patternParts;
+ }
+ }
+ var regex = patternParts[1];
+ var k = '' + regex;
+ if (!regexKeys.hasOwnProperty(k)) {
+ allRegexs.push(regex);
+ regexKeys[k] = null;
+ }
+ }
+ allRegexs.push(/[\0-\uffff]/);
+ tokenizer = combinePrefixPatterns(allRegexs);
+ })();
+
+ var nPatterns = fallthroughStylePatterns.length;
+
+ /**
+ * Lexes job.sourceCode and produces an output array job.decorations of
+ * style classes preceded by the position at which they start in
+ * job.sourceCode in order.
+ *
+ * @param {Object} job an object like <pre>{
+ * sourceCode: {string} sourceText plain text,
+ * basePos: {int} position of job.sourceCode in the larger chunk of
+ * sourceCode.
+ * }</pre>
+ */
+ var decorate = function (job) {
+ var sourceCode = job.sourceCode, basePos = job.basePos;
+ /** Even entries are positions in source in ascending order. Odd enties
+ * are style markers (e.g., PR_COMMENT) that run from that position until
+ * the end.
+ * @type {Array.<number|string>}
+ */
+ var decorations = [basePos, PR_PLAIN];
+ var pos = 0; // index into sourceCode
+ var tokens = sourceCode.match(tokenizer) || [];
+ var styleCache = {};
+
+ for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
+ var token = tokens[ti];
+ var style = styleCache[token];
+ var match = void 0;
+
+ var isEmbedded;
+ if (typeof style === 'string') {
+ isEmbedded = false;
+ } else {
+ var patternParts = shortcuts[token.charAt(0)];
+ if (patternParts) {
+ match = token.match(patternParts[1]);
+ style = patternParts[0];
+ } else {
+ for (var i = 0; i < nPatterns; ++i) {
+ patternParts = fallthroughStylePatterns[i];
+ match = token.match(patternParts[1]);
+ if (match) {
+ style = patternParts[0];
+ break;
+ }
+ }
+
+ if (!match) { // make sure that we make progress
+ style = PR_PLAIN;
+ }
+ }
+
+ isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
+ if (isEmbedded && !(match && typeof match[1] === 'string')) {
+ isEmbedded = false;
+ style = PR_SOURCE;
+ }
+
+ if (!isEmbedded) { styleCache[token] = style; }
+ }
+
+ var tokenStart = pos;
+ pos += token.length;
+
+ if (!isEmbedded) {
+ decorations.push(basePos + tokenStart, style);
+ } else { // Treat group 1 as an embedded block of source code.
+ var embeddedSource = match[1];
+ var embeddedSourceStart = token.indexOf(embeddedSource);
+ var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
+ if (match[2]) {
+ // If embeddedSource can be blank, then it would match at the
+ // beginning which would cause us to infinitely recurse on the
+ // entire token, so we catch the right context in match[2].
+ embeddedSourceEnd = token.length - match[2].length;
+ embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
+ }
+ var lang = style.substring(5);
+ // Decorate the left of the embedded source
+ appendDecorations(
+ basePos + tokenStart,
+ token.substring(0, embeddedSourceStart),
+ decorate, decorations);
+ // Decorate the embedded source
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceStart,
+ embeddedSource,
+ langHandlerForExtension(lang, embeddedSource),
+ decorations);
+ // Decorate the right of the embedded section
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceEnd,
+ token.substring(embeddedSourceEnd),
+ decorate, decorations);
+ }
+ }
+ job.decorations = decorations;
+ };
+ return decorate;
+ }
+
+ /** returns a function that produces a list of decorations from source text.
+ *
+ * This code treats ", ', and ` as string delimiters, and \ as a string
+ * escape. It does not recognize perl's qq() style strings.
+ * It has no special handling for double delimiter escapes as in basic, or
+ * the tripled delimiters used in python, but should work on those regardless
+ * although in those cases a single string literal may be broken up into
+ * multiple adjacent string literals.
+ *
+ * It recognizes C, C++, and shell style comments.
+ *
+ * @param {Object} options a set of optional parameters.
+ * @return {function (Object)} a function that examines the source code
+ * in the input job and builds the decoration list.
+ */
+ function sourceDecorator(options) {
+ var shortcutStylePatterns = [], fallthroughStylePatterns = [];
+ if (options['tripleQuotedStrings']) {
+ // '''multi-line-string''', 'single-line-string', and double-quoted
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
+ null, '\'"']);
+ } else if (options['multiLineStrings']) {
+ // 'multi-line-string', "multi-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
+ null, '\'"`']);
+ } else {
+ // 'single-line-string', "single-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING,
+ /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
+ null, '"\'']);
+ }
+ if (options['verbatimStrings']) {
+ // verbatim-string-literal production from the C# grammar. See issue 93.
+ fallthroughStylePatterns.push(
+ [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
+ }
+ var hc = options['hashComments'];
+ if (hc) {
+ if (options['cStyleComments']) {
+ if (hc > 1) { // multiline hash comments
+ shortcutStylePatterns.push(
+ [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
+ } else {
+ // Stop C preprocessor declarations at an unclosed open comment
+ shortcutStylePatterns.push(
+ [PR_COMMENT, /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
+ null, '#']);
+ }
+ // #include <stdio.h>
+ fallthroughStylePatterns.push(
+ [PR_STRING,
+ /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
+ null]);
+ } else {
+ shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
+ }
+ }
+ if (options['cStyleComments']) {
+ fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
+ fallthroughStylePatterns.push(
+ [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
+ }
+ var regexLiterals = options['regexLiterals'];
+ if (regexLiterals) {
+ /**
+ * @const
+ */
+ var regexExcls = regexLiterals > 1
+ ? '' // Multiline regex literals
+ : '\n\r';
+ /**
+ * @const
+ */
+ var regexAny = regexExcls ? '.' : '[\\S\\s]';
+ /**
+ * @const
+ */
+ var REGEX_LITERAL = (
+ // A regular expression literal starts with a slash that is
+ // not followed by * or / so that it is not confused with
+ // comments.
+ '/(?=[^/*' + regexExcls + '])'
+ // and then contains any number of raw characters,
+ + '(?:[^/\\x5B\\x5C' + regexExcls + ']'
+ // escape sequences (\x5C),
+ + '|\\x5C' + regexAny
+ // or non-nesting character sets (\x5B\x5D);
+ + '|\\x5B(?:[^\\x5C\\x5D' + regexExcls + ']'
+ + '|\\x5C' + regexAny + ')*(?:\\x5D|$))+'
+ // finally closed by a /.
+ + '/');
+ fallthroughStylePatterns.push(
+ ['lang-regex',
+ RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
+ ]);
+ }
+
+ var types = options['types'];
+ if (types) {
+ fallthroughStylePatterns.push([PR_TYPE, types]);
+ }
+
+ var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
+ if (keywords.length) {
+ fallthroughStylePatterns.push(
+ [PR_KEYWORD,
+ new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
+ null]);
+ }
+
+ shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
+
+ var punctuation =
+ // The Bash man page says
+
+ // A word is a sequence of characters considered as a single
+ // unit by GRUB. Words are separated by metacharacters,
+ // which are the following plus space, tab, and newline: { }
+ // | & $ ; < >
+ // ...
+
+ // A word beginning with # causes that word and all remaining
+ // characters on that line to be ignored.
+
+ // which means that only a '#' after /(?:^|[{}|&$;<>\s])/ starts a
+ // comment but empirically
+ // $ echo {#}
+ // {#}
+ // $ echo \$#
+ // $#
+ // $ echo }#
+ // }#
+
+ // so /(?:^|[|&;<>\s])/ is more appropriate.
+
+ // http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC3
+ // suggests that this definition is compatible with a
+ // default mode that tries to use a single token definition
+ // to recognize both bash/python style comments and C
+ // preprocessor directives.
+
+ // This definition of punctuation does not include # in the list of
+ // follow-on exclusions, so # will not be broken before if preceeded
+ // by a punctuation character. We could try to exclude # after
+ // [|&;<>] but that doesn't seem to cause many major problems.
+ // If that does turn out to be a problem, we should change the below
+ // when hc is truthy to include # in the run of punctuation characters
+ // only when not followint [|&;<>].
+ '^.[^\\s\\w.$@\'"`/\\\\]*';
+ if (options['regexLiterals']) {
+ punctuation += '(?!\s*\/)';
+ }
+
+ fallthroughStylePatterns.push(
+ // TODO(mikesamuel): recognize non-latin letters and numerals in idents
+ [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_TYPE, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
+ [PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_LITERAL,
+ new RegExp(
+ '^(?:'
+ // A hex number
+ + '0x[a-f0-9]+'
+ // or an octal or decimal number,
+ + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
+ // possibly in scientific notation
+ + '(?:e[+\\-]?\\d+)?'
+ + ')'
+ // with an optional modifier like UL for unsigned long
+ + '[a-z]*', 'i'),
+ null, '0123456789'],
+ // Don't treat escaped quotes in bash as starting strings.
+ // See issue 144.
+ [PR_PLAIN, /^\\[\s\S]?/, null],
+ [PR_PUNCTUATION, new RegExp(punctuation), null]);
+
+ return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
+ }
+
+ var decorateSource = sourceDecorator({
+ 'keywords': ALL_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ });
+
+ /**
+ * Given a DOM subtree, wraps it in a list, and puts each line into its own
+ * list item.
+ *
+ * @param {Node} node modified in place. Its content is pulled into an
+ * HTMLOListElement, and each line is moved into a separate list item.
+ * This requires cloning elements, so the input might not have unique
+ * IDs after numbering.
+ * @param {boolean} isPreformatted true iff white-space in text nodes should
+ * be treated as significant.
+ */
+ function numberLines(node, opt_startLineNum, isPreformatted) {
+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
+ var lineBreak = /\r\n?|\n/;
+
+ var document = node.ownerDocument;
+
+ var li = document.createElement('li');
+ while (node.firstChild) {
+ li.appendChild(node.firstChild);
+ }
+ // An array of lines. We split below, so this is initialized to one
+ // un-split line.
+ var listItems = [li];
+
+ function walk(node) {
+ var type = node.nodeType;
+ if (type == 1 && !nocode.test(node.className)) { // Element
+ if ('br' === node.nodeName) {
+ breakAfter(node);
+ // Discard the <BR> since it is now flush against a </LI>.
+ if (node.parentNode) {
+ node.parentNode.removeChild(node);
+ }
+ } else {
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ walk(child);
+ }
+ }
+ } else if ((type == 3 || type == 4) && isPreformatted) { // Text
+ var text = node.nodeValue;
+ var match = text.match(lineBreak);
+ if (match) {
+ var firstLine = text.substring(0, match.index);
+ node.nodeValue = firstLine;
+ var tail = text.substring(match.index + match[0].length);
+ if (tail) {
+ var parent = node.parentNode;
+ parent.insertBefore(
+ document.createTextNode(tail), node.nextSibling);
+ }
+ breakAfter(node);
+ if (!firstLine) {
+ // Don't leave blank text nodes in the DOM.
+ node.parentNode.removeChild(node);
+ }
+ }
+ }
+ }
+
+ // Split a line after the given node.
+ function breakAfter(lineEndNode) {
+ // If there's nothing to the right, then we can skip ending the line
+ // here, and move root-wards since splitting just before an end-tag
+ // would require us to create a bunch of empty copies.
+ while (!lineEndNode.nextSibling) {
+ lineEndNode = lineEndNode.parentNode;
+ if (!lineEndNode) { return; }
+ }
+
+ function breakLeftOf(limit, copy) {
+ // Clone shallowly if this node needs to be on both sides of the break.
+ var rightSide = copy ? limit.cloneNode(false) : limit;
+ var parent = limit.parentNode;
+ if (parent) {
+ // We clone the parent chain.
+ // This helps us resurrect important styling elements that cross lines.
+ // E.g. in <i>Foo<br>Bar</i>
+ // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
+ var parentClone = breakLeftOf(parent, 1);
+ // Move the clone and everything to the right of the original
+ // onto the cloned parent.
+ var next = limit.nextSibling;
+ parentClone.appendChild(rightSide);
+ for (var sibling = next; sibling; sibling = next) {
+ next = sibling.nextSibling;
+ parentClone.appendChild(sibling);
+ }
+ }
+ return rightSide;
+ }
+
+ var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
+
+ // Walk the parent chain until we reach an unattached LI.
+ for (var parent;
+ // Check nodeType since IE invents document fragments.
+ (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
+ copiedListItem = parent;
+ }
+ // Put it on the list of lines for later processing.
+ listItems.push(copiedListItem);
+ }
+
+ // Split lines while there are lines left to split.
+ for (var i = 0; // Number of lines that have been split so far.
+ i < listItems.length; // length updated by breakAfter calls.
+ ++i) {
+ walk(listItems[i]);
+ }
+
+ // Make sure numeric indices show correctly.
+ if (opt_startLineNum === (opt_startLineNum|0)) {
+ listItems[0].setAttribute('value', opt_startLineNum);
+ }
+
+ var ol = document.createElement('ol');
+ ol.className = 'linenums';
+ var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
+ for (var i = 0, n = listItems.length; i < n; ++i) {
+ li = listItems[i];
+ // Stick a class on the LIs so that stylesheets can
+ // color odd/even rows, or any other row pattern that
+ // is co-prime with 10.
+ li.className = 'L' + ((i + offset) % 10);
+ if (!li.firstChild) {
+ li.appendChild(document.createTextNode('\xA0'));
+ }
+ ol.appendChild(li);
+ }
+
+ node.appendChild(ol);
+ }
+ /**
+ * Breaks {@code job.sourceCode} around style boundaries in
+ * {@code job.decorations} and modifies {@code job.sourceNode} in place.
+ * @param {Object} job like <pre>{
+ * sourceCode: {string} source as plain text,
+ * sourceNode: {HTMLElement} the element containing the source,
+ * spans: {Array.<number|Node>} alternating span start indices into source
+ * and the text node or element (e.g. {@code <BR>}) corresponding to that
+ * span.
+ * decorations: {Array.<number|string} an array of style classes preceded
+ * by the position at which they start in job.sourceCode in order
+ * }</pre>
+ * @private
+ */
+ function recombineTagsAndDecorations(job) {
+ var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
+ isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
+ var newlineRe = /\n/g;
+
+ var source = job.sourceCode;
+ var sourceLength = source.length;
+ // Index into source after the last code-unit recombined.
+ var sourceIndex = 0;
+
+ var spans = job.spans;
+ var nSpans = spans.length;
+ // Index into spans after the last span which ends at or before sourceIndex.
+ var spanIndex = 0;
+
+ var decorations = job.decorations;
+ var nDecorations = decorations.length;
+ // Index into decorations after the last decoration which ends at or before
+ // sourceIndex.
+ var decorationIndex = 0;
+
+ // Remove all zero-length decorations.
+ decorations[nDecorations] = sourceLength;
+ var decPos, i;
+ for (i = decPos = 0; i < nDecorations;) {
+ if (decorations[i] !== decorations[i + 2]) {
+ decorations[decPos++] = decorations[i++];
+ decorations[decPos++] = decorations[i++];
+ } else {
+ i += 2;
+ }
+ }
+ nDecorations = decPos;
+
+ // Simplify decorations.
+ for (i = decPos = 0; i < nDecorations;) {
+ var startPos = decorations[i];
+ // Conflate all adjacent decorations that use the same style.
+ var startDec = decorations[i + 1];
+ var end = i + 2;
+ while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
+ end += 2;
+ }
+ decorations[decPos++] = startPos;
+ decorations[decPos++] = startDec;
+ i = end;
+ }
+
+ nDecorations = decorations.length = decPos;
+
+ var sourceNode = job.sourceNode;
+ var oldDisplay;
+ if (sourceNode) {
+ oldDisplay = sourceNode.style.display;
+ sourceNode.style.display = 'none';
+ }
+ try {
+ var decoration = null;
+ while (spanIndex < nSpans) {
+ var spanStart = spans[spanIndex];
+ var spanEnd = spans[spanIndex + 2] || sourceLength;
+
+ var decEnd = decorations[decorationIndex + 2] || sourceLength;
+
+ var end = Math.min(spanEnd, decEnd);
+
+ var textNode = spans[spanIndex + 1];
+ var styledText;
+ if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s
+ // Don't introduce spans around empty text nodes.
+ && (styledText = source.substring(sourceIndex, end))) {
+ // This may seem bizarre, and it is. Emitting LF on IE causes the
+ // code to display with spaces instead of line breaks.
+ // Emitting Windows standard issue linebreaks (CRLF) causes a blank
+ // space to appear at the beginning of every line but the first.
+ // Emitting an old Mac OS 9 line separator makes everything spiffy.
+ if (isIE8OrEarlier) {
+ styledText = styledText.replace(newlineRe, '\r');
+ }
+ textNode.nodeValue = styledText;
+ var document = textNode.ownerDocument;
+ var span = document.createElement('span');
+ span.className = decorations[decorationIndex + 1];
+ var parentNode = textNode.parentNode;
+ parentNode.replaceChild(span, textNode);
+ span.appendChild(textNode);
+ if (sourceIndex < spanEnd) { // Split off a text node.
+ spans[spanIndex + 1] = textNode
+ // TODO: Possibly optimize by using '' if there's no flicker.
+ = document.createTextNode(source.substring(end, spanEnd));
+ parentNode.insertBefore(textNode, span.nextSibling);
+ }
+ }
+
+ sourceIndex = end;
+
+ if (sourceIndex >= spanEnd) {
+ spanIndex += 2;
+ }
+ if (sourceIndex >= decEnd) {
+ decorationIndex += 2;
+ }
+ }
+ } finally {
+ if (sourceNode) {
+ sourceNode.style.display = oldDisplay;
+ }
+ }
+ }
+
+ /** Maps language-specific file extensions to handlers. */
+ var langHandlerRegistry = {};
+ /** Register a language handler for the given file extensions.
+ * @param {function (Object)} handler a function from source code to a list
+ * of decorations. Takes a single argument job which describes the
+ * state of the computation. The single parameter has the form
+ * {@code {
+ * sourceCode: {string} as plain text.
+ * decorations: {Array.<number|string>} an array of style classes
+ * preceded by the position at which they start in
+ * job.sourceCode in order.
+ * The language handler should assigned this field.
+ * basePos: {int} the position of source in the larger source chunk.
+ * All positions in the output decorations array are relative
+ * to the larger source chunk.
+ * } }
+ * @param {Array.<string>} fileExtensions
+ */
+ function registerLangHandler(handler, fileExtensions) {
+ for (var i = fileExtensions.length; --i >= 0;) {
+ var ext = fileExtensions[i];
+ if (!langHandlerRegistry.hasOwnProperty(ext)) {
+ langHandlerRegistry[ext] = handler;
+ } else if (win['console']) {
+ console['warn']('cannot override language handler %s', ext);
+ }
+ }
+ }
+ function langHandlerForExtension(extension, source) {
+ if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
+ // Treat it as markup if the first non whitespace character is a < and
+ // the last non-whitespace character is a >.
+ extension = /^\s*</.test(source)
+ ? 'default-markup'
+ : 'default-code';
+ }
+ return langHandlerRegistry[extension];
+ }
+ registerLangHandler(decorateSource, ['default-code']);
+ registerLangHandler(
+ createSimpleLexer(
+ [],
+ [
+ [PR_PLAIN, /^[^<?]+/],
+ [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
+ [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
+ // Unescaped content in an unknown language
+ ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
+ ['lang-', /^<%([\s\S]+?)(?:%>|$)/],
+ [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
+ ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
+ // Unescaped content in javascript. (Or possibly vbscript).
+ ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
+ // Contains unescaped stylesheet content
+ ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
+ ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i]
+ ]),
+ ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
+ registerLangHandler(
+ createSimpleLexer(
+ [
+ [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'],
+ [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
+ ],
+ [
+ [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
+ [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
+ ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
+ [PR_PUNCTUATION, /^[=<>\/]+/],
+ ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i],
+ ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i],
+ ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i],
+ ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i],
+ ['lang-css', /^style\s*=\s*\'([^\']+)\'/i],
+ ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i]
+ ]),
+ ['in.tag']);
+ registerLangHandler(
+ createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CPP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'types': C_TYPES
+ }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': 'null,true,false'
+ }), ['json']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CSHARP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'verbatimStrings': true,
+ 'types': C_TYPES
+ }), ['cs']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JAVA_KEYWORDS,
+ 'cStyleComments': true
+ }), ['java']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': SH_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true
+ }), ['bash', 'bsh', 'csh', 'sh']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PYTHON_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'tripleQuotedStrings': true
+ }), ['cv', 'py', 'python']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PERL_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': 2 // multiline regex literals
+ }), ['perl', 'pl', 'pm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': RUBY_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ }), ['rb', 'ruby']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JSCRIPT_KEYWORDS,
+ 'cStyleComments': true,
+ 'regexLiterals': true
+ }), ['javascript', 'js']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': COFFEE_KEYWORDS,
+ 'hashComments': 3, // ### style block comments
+ 'cStyleComments': true,
+ 'multilineStrings': true,
+ 'tripleQuotedStrings': true,
+ 'regexLiterals': true
+ }), ['coffee']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': RUST_KEYWORDS,
+ 'cStyleComments': true,
+ 'multilineStrings': true
+ }), ['rc', 'rs', 'rust']);
+ registerLangHandler(
+ createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
+
+ function applyDecorator(job) {
+ var opt_langExtension = job.langExtension;
+
+ try {
+ // Extract tags, and convert the source code to plain text.
+ var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
+ /** Plain text. @type {string} */
+ var source = sourceAndSpans.sourceCode;
+ job.sourceCode = source;
+ job.spans = sourceAndSpans.spans;
+ job.basePos = 0;
+
+ // Apply the appropriate language handler
+ langHandlerForExtension(opt_langExtension, source)(job);
+
+ // Integrate the decorations and tags back into the source code,
+ // modifying the sourceNode in place.
+ recombineTagsAndDecorations(job);
+ } catch (e) {
+ if (win['console']) {
+ console['log'](e && e['stack'] || e);
+ }
+ }
+ }
+
+ /**
+ * Pretty print a chunk of code.
+ * @param sourceCodeHtml {string} The HTML to pretty print.
+ * @param opt_langExtension {string} The language name to use.
+ * Typically, a filename extension like 'cpp' or 'java'.
+ * @param opt_numberLines {number|boolean} True to number lines,
+ * or the 1-indexed number of the first line in sourceCodeHtml.
+ */
+ function $prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
+ var container = document.createElement('div');
+ // This could cause images to load and onload listeners to fire.
+ // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
+ // We assume that the inner HTML is from a trusted source.
+ // The pre-tag is required for IE8 which strips newlines from innerHTML
+ // when it is injected into a <pre> tag.
+ // http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie
+ // http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript
+ container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>';
+ container = container.firstChild;
+ if (opt_numberLines) {
+ numberLines(container, opt_numberLines, true);
+ }
+
+ var job = {
+ langExtension: opt_langExtension,
+ numberLines: opt_numberLines,
+ sourceNode: container,
+ pre: 1
+ };
+ applyDecorator(job);
+ return container.innerHTML;
+ }
+
+ /**
+ * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
+ * {@code class=prettyprint} and prettify them.
+ *
+ * @param {Function} opt_whenDone called when prettifying is done.
+ * @param {HTMLElement|HTMLDocument} opt_root an element or document
+ * containing all the elements to pretty print.
+ * Defaults to {@code document.body}.
+ */
+ function $prettyPrint(opt_whenDone, opt_root) {
+ var root = opt_root || document.body;
+ var doc = root.ownerDocument || document;
+ function byTagName(tn) { return root.getElementsByTagName(tn); }
+ // fetch a list of nodes to rewrite
+ var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
+ var elements = [];
+ for (var i = 0; i < codeSegments.length; ++i) {
+ for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
+ elements.push(codeSegments[i][j]);
+ }
+ }
+ codeSegments = null;
+
+ var clock = Date;
+ if (!clock['now']) {
+ clock = { 'now': function () { return +(new Date); } };
+ }
+
+ // The loop is broken into a series of continuations to make sure that we
+ // don't make the browser unresponsive when rewriting a large page.
+ var k = 0;
+ var prettyPrintingJob;
+
+ var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
+ var prettyPrintRe = /\bprettyprint\b/;
+ var prettyPrintedRe = /\bprettyprinted\b/;
+ var preformattedTagNameRe = /pre|xmp/i;
+ var codeRe = /^code$/i;
+ var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
+ var EMPTY = {};
+
+ function doWork() {
+ var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
+ clock['now']() + 250 /* ms */ :
+ Infinity);
+ for (; k < elements.length && clock['now']() < endTime; k++) {
+ var cs = elements[k];
+
+ // Look for a preceding comment like
+ // <?prettify lang="..." linenums="..."?>
+ var attrs = EMPTY;
+ {
+ for (var preceder = cs; (preceder = preceder.previousSibling);) {
+ var nt = preceder.nodeType;
+ // <?foo?> is parsed by HTML 5 to a comment node (8)
+ // like <!--?foo?-->, but in XML is a processing instruction
+ var value = (nt === 7 || nt === 8) && preceder.nodeValue;
+ if (value
+ ? !/^\??prettify\b/.test(value)
+ : (nt !== 3 || /\S/.test(preceder.nodeValue))) {
+ // Skip over white-space text nodes but not others.
+ break;
+ }
+ if (value) {
+ attrs = {};
+ value.replace(
+ /\b(\w+)=([\w:.%+-]+)/g,
+ function (_, name, value) { attrs[name] = value; });
+ break;
+ }
+ }
+ }
+
+ var className = cs.className;
+ if ((attrs !== EMPTY || prettyPrintRe.test(className))
+ // Don't redo this if we've already done it.
+ // This allows recalling pretty print to just prettyprint elements
+ // that have been added to the page since last call.
+ && !prettyPrintedRe.test(className)) {
+
+ // make sure this is not nested in an already prettified element
+ var nested = false;
+ for (var p = cs.parentNode; p; p = p.parentNode) {
+ var tn = p.tagName;
+ if (preCodeXmpRe.test(tn)
+ && p.className && prettyPrintRe.test(p.className)) {
+ nested = true;
+ break;
+ }
+ }
+ if (!nested) {
+ // Mark done. If we fail to prettyprint for whatever reason,
+ // we shouldn't try again.
+ cs.className += ' prettyprinted';
+
+ // If the classes includes a language extensions, use it.
+ // Language extensions can be specified like
+ // <pre class="prettyprint lang-cpp">
+ // the language extension "cpp" is used to find a language handler
+ // as passed to PR.registerLangHandler.
+ // HTML5 recommends that a language be specified using "language-"
+ // as the prefix instead. Google Code Prettify supports both.
+ // http://dev.w3.org/html5/spec-author-view/the-code-element.html
+ var langExtension = attrs['lang'];
+ if (!langExtension) {
+ langExtension = className.match(langExtensionRe);
+ // Support <pre class="prettyprint"><code class="language-c">
+ var wrapper;
+ if (!langExtension && (wrapper = childContentWrapper(cs))
+ && codeRe.test(wrapper.tagName)) {
+ langExtension = wrapper.className.match(langExtensionRe);
+ }
+
+ if (langExtension) { langExtension = langExtension[1]; }
+ }
+
+ var preformatted;
+ if (preformattedTagNameRe.test(cs.tagName)) {
+ preformatted = 1;
+ } else {
+ var currentStyle = cs['currentStyle'];
+ var defaultView = doc.defaultView;
+ var whitespace = (
+ currentStyle
+ ? currentStyle['whiteSpace']
+ : (defaultView
+ && defaultView.getComputedStyle)
+ ? defaultView.getComputedStyle(cs, null)
+ .getPropertyValue('white-space')
+ : 0);
+ preformatted = whitespace
+ && 'pre' === whitespace.substring(0, 3);
+ }
+
+ // Look for a class like linenums or linenums:<n> where <n> is the
+ // 1-indexed number of the first line.
+ var lineNums = attrs['linenums'];
+ if (!(lineNums = lineNums === 'true' || +lineNums)) {
+ lineNums = className.match(/\blinenums\b(?::(\d+))?/);
+ lineNums =
+ lineNums
+ ? lineNums[1] && lineNums[1].length
+ ? +lineNums[1] : true
+ : false;
+ }
+ if (lineNums) { numberLines(cs, lineNums, preformatted); }
+
+ // do the pretty printing
+ prettyPrintingJob = {
+ langExtension: langExtension,
+ sourceNode: cs,
+ numberLines: lineNums,
+ pre: preformatted
+ };
+ applyDecorator(prettyPrintingJob);
+ }
+ }
+ }
+ if (k < elements.length) {
+ // finish up in a continuation
+ setTimeout(doWork, 250);
+ } else if ('function' === typeof opt_whenDone) {
+ opt_whenDone();
+ }
+ }
+
+ doWork();
+ }
+
+ /**
+ * Contains functions for creating and registering new language handlers.
+ * @type {Object}
+ */
+ var PR = win['PR'] = {
+ 'createSimpleLexer': createSimpleLexer,
+ 'registerLangHandler': registerLangHandler,
+ 'sourceDecorator': sourceDecorator,
+ 'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
+ 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
+ 'PR_COMMENT': PR_COMMENT,
+ 'PR_DECLARATION': PR_DECLARATION,
+ 'PR_KEYWORD': PR_KEYWORD,
+ 'PR_LITERAL': PR_LITERAL,
+ 'PR_NOCODE': PR_NOCODE,
+ 'PR_PLAIN': PR_PLAIN,
+ 'PR_PUNCTUATION': PR_PUNCTUATION,
+ 'PR_SOURCE': PR_SOURCE,
+ 'PR_STRING': PR_STRING,
+ 'PR_TAG': PR_TAG,
+ 'PR_TYPE': PR_TYPE,
+ 'prettyPrintOne':
+ IN_GLOBAL_SCOPE
+ ? (win['prettyPrintOne'] = $prettyPrintOne)
+ : (prettyPrintOne = $prettyPrintOne),
+ 'prettyPrint': prettyPrint =
+ IN_GLOBAL_SCOPE
+ ? (win['prettyPrint'] = $prettyPrint)
+ : (prettyPrint = $prettyPrint)
+ };
+
+ // Make PR available via the Asynchronous Module Definition (AMD) API.
+ // Per https://github.com/amdjs/amdjs-api/wiki/AMD:
+ // The Asynchronous Module Definition (AMD) API specifies a
+ // mechanism for defining modules such that the module and its
+ // dependencies can be asynchronously loaded.
+ // ...
+ // To allow a clear indicator that a global define function (as
+ // needed for script src browser loading) conforms to the AMD API,
+ // any global define function SHOULD have a property called "amd"
+ // whose value is an object. This helps avoid conflict with any
+ // other existing JavaScript code that could have defined a define()
+ // function that does not conform to the AMD API.
+ if (typeof define === "function" && define['amd']) {
+ define("google-code-prettify", [], function () {
+ return PR;
+ });
+ }
+})();
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/run_prettify.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/run_prettify.js
new file mode 100644
index 0000000..dd136b9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/src/run_prettify.js
@@ -0,0 +1,1905 @@
+// Copyright (C) 2013 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+// Looks at query parameters to decide which language handlers and style-sheets
+// to load.
+
+// Query Parameter Format Effect Default
+// +------------------+---------------+------------------------------+--------+
+// | autorun= | true | false | If true then prettyPrint() | "true" |
+// | | | is called on page load. | |
+// +------------------+---------------+------------------------------+--------+
+// | lang= | language name | Loads the language handler | Can |
+// | | | named "lang-<NAME>.js". | appear |
+// | | | See available handlers at | many |
+// | | | http://code.google.com/p/ | times. |
+// | | | google-code-prettify/source/ | |
+// | | | browse/trunk/src | |
+// +------------------+---------------+------------------------------+--------+
+// | skin= | skin name | Loads the skin stylesheet | none. |
+// | | | named "<NAME>.css". | |
+// | | | http://code.google.com/p/ | |
+// | | | google-code-prettify/source/ | |
+// | | | browse/trunk/styles | |
+// +------------------+---------------+------------------------------+--------+
+// | callback= | JS identifier | When "prettyPrint" finishes | none |
+// | | | window.exports[js_ident] is | |
+// | | | called. | |
+// | | | The callback must be under | |
+// | | | exports to reduce the risk | |
+// | | | of XSS via query parameter | |
+// | | | injection. | |
+// +------------------+---------------+------------------------------+--------+
+
+// Exmaples
+// .../prettify.js?lang=css&skin=sunburst
+// 1. Loads the CSS language handler which can be used to prettify CSS
+// stylesheets, HTML <style> element bodies and style="..." attributes
+// values.
+// 2. Loads the sunburst.css stylesheet instead of the default prettify.css
+// stylesheet.
+// A gallery of stylesheets is available at
+// https://google-code-prettify.googlecode.com/svn/trunk/styles/index.html
+// 3. Since autorun=false is not specified, calls prettyPrint() on page load.
+
+
+/** @define {boolean} */
+var IN_GLOBAL_SCOPE = false;
+
+(function () {
+ "use strict";
+
+ var win = window;
+ var setTimeout = win.setTimeout;
+ var doc = document;
+ var root = doc.documentElement;
+ var head = doc['head'] || doc.getElementsByTagName("head")[0] || root;
+
+ // From http://javascript.nwbox.com/ContentLoaded/contentloaded.js
+ // Author: Diego Perini (diego.perini at gmail.com)
+ // Summary: cross-browser wrapper for DOMContentLoaded
+ // Updated: 20101020
+ // License: MIT
+ // Version: 1.2
+ function contentLoaded(callback) {
+ var addEventListener = doc['addEventListener'];
+ var done = false, top = true,
+ add = addEventListener ? 'addEventListener' : 'attachEvent',
+ rem = addEventListener ? 'removeEventListener' : 'detachEvent',
+ pre = addEventListener ? '' : 'on',
+
+ init = function(e) {
+ if (e.type == 'readystatechange' && doc.readyState != 'complete') {
+ return;
+ }
+ (e.type == 'load' ? win : doc)[rem](pre + e.type, init, false);
+ if (!done && (done = true)) { callback.call(win, e.type || e); }
+ },
+
+ poll = function() {
+ try {
+ root.doScroll('left');
+ } catch(e) {
+ setTimeout(poll, 50);
+ return;
+ }
+ init('poll');
+ };
+
+ if (doc.readyState == 'complete') {
+ callback.call(win, 'lazy');
+ } else {
+ if (doc.createEventObject && root.doScroll) {
+ try { top = !win.frameElement; } catch(e) { }
+ if (top) { poll(); }
+ }
+ doc[add](pre + 'DOMContentLoaded', init, false);
+ doc[add](pre + 'readystatechange', init, false);
+ win[add](pre + 'load', init, false);
+ }
+ }
+
+ // Given a list of URLs to stylesheets, loads the first that loads without
+ // triggering an error event.
+ function loadStylesheetsFallingBack(stylesheets) {
+ var n = stylesheets.length;
+ function load(i) {
+ if (i === n) { return; }
+ var link = doc.createElement('link');
+ link.rel = 'stylesheet';
+ link.type = 'text/css';
+ if (i + 1 < n) {
+ // http://pieisgood.org/test/script-link-events/ indicates that many
+ // versions of IE do not support onerror on <link>s, though
+ // http://msdn.microsoft.com/en-us/library/ie/ms535848(v=vs.85).aspx
+ // indicates that recent IEs do support error.
+ link.error = link.onerror = function () { load(i + 1); };
+ }
+ link.href = stylesheets[i];
+ head.appendChild(link);
+ }
+ load(0);
+ }
+
+ var scriptQuery = '';
+ // Look for the <script> node that loads this script to get its parameters.
+ // This starts looking at the end instead of just considering the last
+ // because deferred and async scripts run out of order.
+ // If the script is loaded twice, then this will run in reverse order.
+ for (var scripts = doc.scripts, i = scripts.length; --i >= 0;) {
+ var script = scripts[i];
+ var match = script.src.match(
+ /^[^?#]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);
+ if (match) {
+ scriptQuery = match[1] || '';
+ // Remove the script from the DOM so that multiple runs at least run
+ // multiple times even if parameter sets are interpreted in reverse
+ // order.
+ script.parentNode.removeChild(script);
+ break;
+ }
+ }
+
+ // Pull parameters into local variables.
+ var autorun = true;
+ var langs = [];
+ var skins = [];
+ var callbacks = [];
+ scriptQuery.replace(
+ /[?&]([^&=]+)=([^&]+)/g,
+ function (_, name, value) {
+ value = decodeURIComponent(value);
+ name = decodeURIComponent(name);
+ if (name == 'autorun') { autorun = !/^[0fn]/i.test(value); } else
+ if (name == 'lang') { langs.push(value); } else
+ if (name == 'skin') { skins.push(value); } else
+ if (name == 'callback') { callbacks.push(value); }
+ });
+
+ // Use https to avoid mixed content warnings in client pages and to
+ // prevent a MITM from rewrite prettify mid-flight.
+ // This only works if this script is loaded via https : something
+ // over which we exercise no control.
+ var LOADER_BASE_URL =
+ 'https://google-code-prettify.googlecode.com/svn/loader';
+
+ for (var i = 0, n = langs.length; i < n; ++i) (function (lang) {
+ var script = doc.createElement("script");
+
+ // Excerpted from jQuery.ajaxTransport("script") to fire events when
+ // a script is finished loading.
+ // Attach handlers for each script
+ script.onload = script.onerror = script.onreadystatechange = function () {
+ if (script && (
+ !script.readyState || /loaded|complete/.test(script.readyState))) {
+ // Handle memory leak in IE
+ script.onerror = script.onload = script.onreadystatechange = null;
+
+ --pendingLanguages;
+ checkPendingLanguages();
+
+ // Remove the script
+ if (script.parentNode) {
+ script.parentNode.removeChild(script);
+ }
+
+ script = null;
+ }
+ };
+
+ script.type = 'text/javascript';
+ script.src = LOADER_BASE_URL
+ + '/lang-' + encodeURIComponent(langs[i]) + '.js';
+
+ // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
+ head.insertBefore(script, head.firstChild);
+ })(langs[i]);
+
+ var pendingLanguages = langs.length;
+ function checkPendingLanguages() {
+ if (!pendingLanguages) {
+ setTimeout(onLangsLoaded, 0);
+ }
+ }
+
+ var skinUrls = [];
+ for (var i = 0, n = skins.length; i < n; ++i) {
+ skinUrls.push(LOADER_BASE_URL
+ + '/skins/' + encodeURIComponent(skins[i]) + '.css');
+ }
+ skinUrls.push(LOADER_BASE_URL + '/prettify.css');
+ loadStylesheetsFallingBack(skinUrls);
+
+ var prettyPrint = (function () {
+ // Copyright (C) 2006 Google Inc.
+ //
+ // Licensed under the Apache License, Version 2.0 (the "License");
+ // you may not use this file except in compliance with the License.
+ // You may obtain a copy of the License at
+ //
+ // http://www.apache.org/licenses/LICENSE-2.0
+ //
+ // Unless required by applicable law or agreed to in writing, software
+ // distributed under the License is distributed on an "AS IS" BASIS,
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ // See the License for the specific language governing permissions and
+ // limitations under the License.
+
+
+ /**
+ * @fileoverview
+ * some functions for browser-side pretty printing of code contained in html.
+ *
+ * <p>
+ * For a fairly comprehensive set of languages see the
+ * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
+ * file that came with this source. At a minimum, the lexer should work on a
+ * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
+ * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk
+ * and a subset of Perl, but, because of commenting conventions, doesn't work on
+ * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
+ * <p>
+ * Usage: <ol>
+ * <li> include this source file in an html page via
+ * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
+ * <li> define style rules. See the example page for examples.
+ * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
+ * {@code class=prettyprint.}
+ * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
+ * printer needs to do more substantial DOM manipulations to support that, so
+ * some css styles may not be preserved.
+ * </ol>
+ * That's it. I wanted to keep the API as simple as possible, so there's no
+ * need to specify which language the code is in, but if you wish, you can add
+ * another class to the {@code <pre>} or {@code <code>} element to specify the
+ * language, as in {@code <pre class="prettyprint lang-java">}. Any class that
+ * starts with "lang-" followed by a file extension, specifies the file type.
+ * See the "lang-*.js" files in this directory for code that implements
+ * per-language file handlers.
+ * <p>
+ * Change log:<br>
+ * cbeust, 2006/08/22
+ * <blockquote>
+ * Java annotations (start with "@") are now captured as literals ("lit")
+ * </blockquote>
+ * @requires console
+ */
+
+ // JSLint declarations
+ /*global console, document, navigator, setTimeout, window, define */
+
+ /**
+ * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
+ * UI events.
+ * If set to {@code false}, {@code prettyPrint()} is synchronous.
+ */
+ window['PR_SHOULD_USE_CONTINUATION'] = true;
+
+ /**
+ * Pretty print a chunk of code.
+ * @param {string} sourceCodeHtml The HTML to pretty print.
+ * @param {string} opt_langExtension The language name to use.
+ * Typically, a filename extension like 'cpp' or 'java'.
+ * @param {number|boolean} opt_numberLines True to number lines,
+ * or the 1-indexed number of the first line in sourceCodeHtml.
+ * @return {string} code as html, but prettier
+ */
+ var prettyPrintOne;
+ /**
+ * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
+ * {@code class=prettyprint} and prettify them.
+ *
+ * @param {Function} opt_whenDone called when prettifying is done.
+ * @param {HTMLElement|HTMLDocument} opt_root an element or document
+ * containing all the elements to pretty print.
+ * Defaults to {@code document.body}.
+ */
+ var prettyPrint;
+
+
+ (function () {
+ var win = window;
+ // Keyword lists for various languages.
+ // We use things that coerce to strings to make them compact when minified
+ // and to defeat aggressive optimizers that fold large string constants.
+ var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
+ var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
+ "double,enum,extern,float,goto,inline,int,long,register,short,signed," +
+ "sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];
+ var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
+ "new,operator,private,protected,public,this,throw,true,try,typeof"];
+ var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
+ "concept,concept_map,const_cast,constexpr,decltype,delegate," +
+ "dynamic_cast,explicit,export,friend,generic,late_check," +
+ "mutable,namespace,nullptr,property,reinterpret_cast,static_assert," +
+ "static_cast,template,typeid,typename,using,virtual,where"];
+ var JAVA_KEYWORDS = [COMMON_KEYWORDS,
+ "abstract,assert,boolean,byte,extends,final,finally,implements,import," +
+ "instanceof,interface,null,native,package,strictfp,super,synchronized," +
+ "throws,transient"];
+ var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
+ "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
+ "fixed,foreach,from,group,implicit,in,internal,into,is,let," +
+ "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," +
+ "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," +
+ "var,virtual,where"];
+ var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
+ "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
+ "throw,true,try,unless,until,when,while,yes";
+ var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
+ "debugger,eval,export,function,get,null,set,undefined,var,with," +
+ "Infinity,NaN"];
+ var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
+ "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
+ "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
+ var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
+ "elif,except,exec,finally,from,global,import,in,is,lambda," +
+ "nonlocal,not,or,pass,print,raise,try,with,yield," +
+ "False,True,None"];
+ var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
+ "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
+ "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
+ "BEGIN,END"];
+ var RUST_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "as,assert,const,copy,drop," +
+ "enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv," +
+ "pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"];
+ var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
+ "function,in,local,set,then,until"];
+ var ALL_KEYWORDS = [
+ CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS,
+ PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
+ var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;
+
+ // token style names. correspond to css classes
+ /**
+ * token style for a string literal
+ * @const
+ */
+ var PR_STRING = 'str';
+ /**
+ * token style for a keyword
+ * @const
+ */
+ var PR_KEYWORD = 'kwd';
+ /**
+ * token style for a comment
+ * @const
+ */
+ var PR_COMMENT = 'com';
+ /**
+ * token style for a type
+ * @const
+ */
+ var PR_TYPE = 'typ';
+ /**
+ * token style for a literal value. e.g. 1, null, true.
+ * @const
+ */
+ var PR_LITERAL = 'lit';
+ /**
+ * token style for a punctuation string.
+ * @const
+ */
+ var PR_PUNCTUATION = 'pun';
+ /**
+ * token style for plain text.
+ * @const
+ */
+ var PR_PLAIN = 'pln';
+
+ /**
+ * token style for an sgml tag.
+ * @const
+ */
+ var PR_TAG = 'tag';
+ /**
+ * token style for a markup declaration such as a DOCTYPE.
+ * @const
+ */
+ var PR_DECLARATION = 'dec';
+ /**
+ * token style for embedded source.
+ * @const
+ */
+ var PR_SOURCE = 'src';
+ /**
+ * token style for an sgml attribute name.
+ * @const
+ */
+ var PR_ATTRIB_NAME = 'atn';
+ /**
+ * token style for an sgml attribute value.
+ * @const
+ */
+ var PR_ATTRIB_VALUE = 'atv';
+
+ /**
+ * A class that indicates a section of markup that is not code, e.g. to allow
+ * embedding of line numbers within code listings.
+ * @const
+ */
+ var PR_NOCODE = 'nocode';
+
+
+
+ /**
+ * A set of tokens that can precede a regular expression literal in
+ * javascript
+ * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
+ * has the full list, but I've removed ones that might be problematic when
+ * seen in languages that don't support regular expression literals.
+ *
+ * <p>Specifically, I've removed any keywords that can't precede a regexp
+ * literal in a syntactically legal javascript program, and I've removed the
+ * "in" keyword since it's not a keyword in many languages, and might be used
+ * as a count of inches.
+ *
+ * <p>The link above does not accurately describe EcmaScript rules since
+ * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
+ * very well in practice.
+ *
+ * @private
+ * @const
+ */
+ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
+
+ // CAVEAT: this does not properly handle the case where a regular
+ // expression immediately follows another since a regular expression may
+ // have flags for case-sensitivity and the like. Having regexp tokens
+ // adjacent is not valid in any language I'm aware of, so I'm punting.
+ // TODO: maybe style special characters inside a regexp as punctuation.
+
+ /**
+ * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
+ * matches the union of the sets of strings matched by the input RegExp.
+ * Since it matches globally, if the input strings have a start-of-input
+ * anchor (/^.../), it is ignored for the purposes of unioning.
+ * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
+ * @return {RegExp} a global regex.
+ */
+ function combinePrefixPatterns(regexs) {
+ var capturedGroupIndex = 0;
+
+ var needToFoldCase = false;
+ var ignoreCase = false;
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.ignoreCase) {
+ ignoreCase = true;
+ } else if (/[a-z]/i.test(regex.source.replace(
+ /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
+ needToFoldCase = true;
+ ignoreCase = false;
+ break;
+ }
+ }
+
+ var escapeCharToCodeUnit = {
+ 'b': 8,
+ 't': 9,
+ 'n': 0xa,
+ 'v': 0xb,
+ 'f': 0xc,
+ 'r': 0xd
+ };
+
+ function decodeEscape(charsetPart) {
+ var cc0 = charsetPart.charCodeAt(0);
+ if (cc0 !== 92 /* \\ */) {
+ return cc0;
+ }
+ var c1 = charsetPart.charAt(1);
+ cc0 = escapeCharToCodeUnit[c1];
+ if (cc0) {
+ return cc0;
+ } else if ('0' <= c1 && c1 <= '7') {
+ return parseInt(charsetPart.substring(1), 8);
+ } else if (c1 === 'u' || c1 === 'x') {
+ return parseInt(charsetPart.substring(2), 16);
+ } else {
+ return charsetPart.charCodeAt(1);
+ }
+ }
+
+ function encodeEscape(charCode) {
+ if (charCode < 0x20) {
+ return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
+ }
+ var ch = String.fromCharCode(charCode);
+ return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
+ ? "\\" + ch : ch;
+ }
+
+ function caseFoldCharset(charSet) {
+ var charsetParts = charSet.substring(1, charSet.length - 1).match(
+ new RegExp(
+ '\\\\u[0-9A-Fa-f]{4}'
+ + '|\\\\x[0-9A-Fa-f]{2}'
+ + '|\\\\[0-3][0-7]{0,2}'
+ + '|\\\\[0-7]{1,2}'
+ + '|\\\\[\\s\\S]'
+ + '|-'
+ + '|[^-\\\\]',
+ 'g'));
+ var ranges = [];
+ var inverse = charsetParts[0] === '^';
+
+ var out = ['['];
+ if (inverse) { out.push('^'); }
+
+ for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
+ var p = charsetParts[i];
+ if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
+ out.push(p);
+ } else {
+ var start = decodeEscape(p);
+ var end;
+ if (i + 2 < n && '-' === charsetParts[i + 1]) {
+ end = decodeEscape(charsetParts[i + 2]);
+ i += 2;
+ } else {
+ end = start;
+ }
+ ranges.push([start, end]);
+ // If the range might intersect letters, then expand it.
+ // This case handling is too simplistic.
+ // It does not deal with non-latin case folding.
+ // It works for latin source code identifiers though.
+ if (!(end < 65 || start > 122)) {
+ if (!(end < 65 || start > 90)) {
+ ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
+ }
+ if (!(end < 97 || start > 122)) {
+ ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
+ }
+ }
+ }
+ }
+
+ // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
+ // -> [[1, 12], [14, 14], [16, 17]]
+ ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
+ var consolidatedRanges = [];
+ var lastRange = [];
+ for (var i = 0; i < ranges.length; ++i) {
+ var range = ranges[i];
+ if (range[0] <= lastRange[1] + 1) {
+ lastRange[1] = Math.max(lastRange[1], range[1]);
+ } else {
+ consolidatedRanges.push(lastRange = range);
+ }
+ }
+
+ for (var i = 0; i < consolidatedRanges.length; ++i) {
+ var range = consolidatedRanges[i];
+ out.push(encodeEscape(range[0]));
+ if (range[1] > range[0]) {
+ if (range[1] + 1 > range[0]) { out.push('-'); }
+ out.push(encodeEscape(range[1]));
+ }
+ }
+ out.push(']');
+ return out.join('');
+ }
+
+ function allowAnywhereFoldCaseAndRenumberGroups(regex) {
+ // Split into character sets, escape sequences, punctuation strings
+ // like ('(', '(?:', ')', '^'), and runs of characters that do not
+ // include any of the above.
+ var parts = regex.source.match(
+ new RegExp(
+ '(?:'
+ + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
+ + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
+ + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
+ + '|\\\\[0-9]+' // a back-reference or octal escape
+ + '|\\\\[^ux0-9]' // other escape sequence
+ + '|\\(\\?[:!=]' // start of a non-capturing group
+ + '|[\\(\\)\\^]' // start/end of a group, or line start
+ + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
+ + ')',
+ 'g'));
+ var n = parts.length;
+
+ // Maps captured group numbers to the number they will occupy in
+ // the output or to -1 if that has not been determined, or to
+ // undefined if they need not be capturing in the output.
+ var capturedGroups = [];
+
+ // Walk over and identify back references to build the capturedGroups
+ // mapping.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ // groups are 1-indexed, so max group index is count of '('
+ ++groupIndex;
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue) {
+ if (decimalValue <= groupIndex) {
+ capturedGroups[decimalValue] = -1;
+ } else {
+ // Replace with an unambiguous escape sequence so that
+ // an octal escape sequence does not turn into a backreference
+ // to a capturing group from an earlier regex.
+ parts[i] = encodeEscape(decimalValue);
+ }
+ }
+ }
+ }
+
+ // Renumber groups and reduce capturing groups to non-capturing groups
+ // where possible.
+ for (var i = 1; i < capturedGroups.length; ++i) {
+ if (-1 === capturedGroups[i]) {
+ capturedGroups[i] = ++capturedGroupIndex;
+ }
+ }
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ ++groupIndex;
+ if (!capturedGroups[groupIndex]) {
+ parts[i] = '(?:';
+ }
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ parts[i] = '\\' + capturedGroups[decimalValue];
+ }
+ }
+ }
+
+ // Remove any prefix anchors so that the output will match anywhere.
+ // ^^ really does mean an anchored match though.
+ for (var i = 0; i < n; ++i) {
+ if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
+ }
+
+ // Expand letters to groups to handle mixing of case-sensitive and
+ // case-insensitive patterns if necessary.
+ if (regex.ignoreCase && needToFoldCase) {
+ for (var i = 0; i < n; ++i) {
+ var p = parts[i];
+ var ch0 = p.charAt(0);
+ if (p.length >= 2 && ch0 === '[') {
+ parts[i] = caseFoldCharset(p);
+ } else if (ch0 !== '\\') {
+ // TODO: handle letters in numeric escapes.
+ parts[i] = p.replace(
+ /[a-zA-Z]/g,
+ function (ch) {
+ var cc = ch.charCodeAt(0);
+ return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
+ });
+ }
+ }
+ }
+
+ return parts.join('');
+ }
+
+ var rewritten = [];
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.global || regex.multiline) { throw new Error('' + regex); }
+ rewritten.push(
+ '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
+ }
+
+ return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
+ }
+
+ /**
+ * Split markup into a string of source code and an array mapping ranges in
+ * that string to the text nodes in which they appear.
+ *
+ * <p>
+ * The HTML DOM structure:</p>
+ * <pre>
+ * (Element "p"
+ * (Element "b"
+ * (Text "print ")) ; #1
+ * (Text "'Hello '") ; #2
+ * (Element "br") ; #3
+ * (Text " + 'World';")) ; #4
+ * </pre>
+ * <p>
+ * corresponds to the HTML
+ * {@code <p><b>print </b>'Hello '<br> + 'World';</p>}.</p>
+ *
+ * <p>
+ * It will produce the output:</p>
+ * <pre>
+ * {
+ * sourceCode: "print 'Hello '\n + 'World';",
+ * // 1 2
+ * // 012345678901234 5678901234567
+ * spans: [0, #1, 6, #2, 14, #3, 15, #4]
+ * }
+ * </pre>
+ * <p>
+ * where #1 is a reference to the {@code "print "} text node above, and so
+ * on for the other text nodes.
+ * </p>
+ *
+ * <p>
+ * The {@code} spans array is an array of pairs. Even elements are the start
+ * indices of substrings, and odd elements are the text nodes (or BR elements)
+ * that contain the text for those substrings.
+ * Substrings continue until the next index or the end of the source.
+ * </p>
+ *
+ * @param {Node} node an HTML DOM subtree containing source-code.
+ * @param {boolean} isPreformatted true if white-space in text nodes should
+ * be considered significant.
+ * @return {Object} source code and the text nodes in which they occur.
+ */
+ function extractSourceSpans(node, isPreformatted) {
+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
+
+ var chunks = [];
+ var length = 0;
+ var spans = [];
+ var k = 0;
+
+ function walk(node) {
+ var type = node.nodeType;
+ if (type == 1) { // Element
+ if (nocode.test(node.className)) { return; }
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ walk(child);
+ }
+ var nodeName = node.nodeName.toLowerCase();
+ if ('br' === nodeName || 'li' === nodeName) {
+ chunks[k] = '\n';
+ spans[k << 1] = length++;
+ spans[(k++ << 1) | 1] = node;
+ }
+ } else if (type == 3 || type == 4) { // Text
+ var text = node.nodeValue;
+ if (text.length) {
+ if (!isPreformatted) {
+ text = text.replace(/[ \t\r\n]+/g, ' ');
+ } else {
+ text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
+ }
+ // TODO: handle tabs here?
+ chunks[k] = text;
+ spans[k << 1] = length;
+ length += text.length;
+ spans[(k++ << 1) | 1] = node;
+ }
+ }
+ }
+
+ walk(node);
+
+ return {
+ sourceCode: chunks.join('').replace(/\n$/, ''),
+ spans: spans
+ };
+ }
+
+ /**
+ * Apply the given language handler to sourceCode and add the resulting
+ * decorations to out.
+ * @param {number} basePos the index of sourceCode within the chunk of source
+ * whose decorations are already present on out.
+ */
+ function appendDecorations(basePos, sourceCode, langHandler, out) {
+ if (!sourceCode) { return; }
+ var job = {
+ sourceCode: sourceCode,
+ basePos: basePos
+ };
+ langHandler(job);
+ out.push.apply(out, job.decorations);
+ }
+
+ var notWs = /\S/;
+
+ /**
+ * Given an element, if it contains only one child element and any text nodes
+ * it contains contain only space characters, return the sole child element.
+ * Otherwise returns undefined.
+ * <p>
+ * This is meant to return the CODE element in {@code <pre><code ...>} when
+ * there is a single child element that contains all the non-space textual
+ * content, but not to return anything where there are multiple child elements
+ * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
+ * is textual content.
+ */
+ function childContentWrapper(element) {
+ var wrapper = undefined;
+ for (var c = element.firstChild; c; c = c.nextSibling) {
+ var type = c.nodeType;
+ wrapper = (type === 1) // Element Node
+ ? (wrapper ? element : c)
+ : (type === 3) // Text Node
+ ? (notWs.test(c.nodeValue) ? element : wrapper)
+ : wrapper;
+ }
+ return wrapper === element ? undefined : wrapper;
+ }
+
+ /** Given triples of [style, pattern, context] returns a lexing function,
+ * The lexing function interprets the patterns to find token boundaries and
+ * returns a decoration list of the form
+ * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
+ * where index_n is an index into the sourceCode, and style_n is a style
+ * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
+ * all characters in sourceCode[index_n-1:index_n].
+ *
+ * The stylePatterns is a list whose elements have the form
+ * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
+ *
+ * Style is a style constant like PR_PLAIN, or can be a string of the
+ * form 'lang-FOO', where FOO is a language extension describing the
+ * language of the portion of the token in $1 after pattern executes.
+ * E.g., if style is 'lang-lisp', and group 1 contains the text
+ * '(hello (world))', then that portion of the token will be passed to the
+ * registered lisp handler for formatting.
+ * The text before and after group 1 will be restyled using this decorator
+ * so decorators should take care that this doesn't result in infinite
+ * recursion. For example, the HTML lexer rule for SCRIPT elements looks
+ * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
+ * '<script>foo()<\/script>', which would cause the current decorator to
+ * be called with '<script>' which would not match the same rule since
+ * group 1 must not be empty, so it would be instead styled as PR_TAG by
+ * the generic tag rule. The handler registered for the 'js' extension would
+ * then be called with 'foo()', and finally, the current decorator would
+ * be called with '<\/script>' which would not match the original rule and
+ * so the generic tag rule would identify it as a tag.
+ *
+ * Pattern must only match prefixes, and if it matches a prefix, then that
+ * match is considered a token with the same style.
+ *
+ * Context is applied to the last non-whitespace, non-comment token
+ * recognized.
+ *
+ * Shortcut is an optional string of characters, any of which, if the first
+ * character, gurantee that this pattern and only this pattern matches.
+ *
+ * @param {Array} shortcutStylePatterns patterns that always start with
+ * a known character. Must have a shortcut string.
+ * @param {Array} fallthroughStylePatterns patterns that will be tried in
+ * order if the shortcut ones fail. May have shortcuts.
+ *
+ * @return {function (Object)} a
+ * function that takes source code and returns a list of decorations.
+ */
+ function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
+ var shortcuts = {};
+ var tokenizer;
+ (function () {
+ var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
+ var allRegexs = [];
+ var regexKeys = {};
+ for (var i = 0, n = allPatterns.length; i < n; ++i) {
+ var patternParts = allPatterns[i];
+ var shortcutChars = patternParts[3];
+ if (shortcutChars) {
+ for (var c = shortcutChars.length; --c >= 0;) {
+ shortcuts[shortcutChars.charAt(c)] = patternParts;
+ }
+ }
+ var regex = patternParts[1];
+ var k = '' + regex;
+ if (!regexKeys.hasOwnProperty(k)) {
+ allRegexs.push(regex);
+ regexKeys[k] = null;
+ }
+ }
+ allRegexs.push(/[\0-\uffff]/);
+ tokenizer = combinePrefixPatterns(allRegexs);
+ })();
+
+ var nPatterns = fallthroughStylePatterns.length;
+
+ /**
+ * Lexes job.sourceCode and produces an output array job.decorations of
+ * style classes preceded by the position at which they start in
+ * job.sourceCode in order.
+ *
+ * @param {Object} job an object like <pre>{
+ * sourceCode: {string} sourceText plain text,
+ * basePos: {int} position of job.sourceCode in the larger chunk of
+ * sourceCode.
+ * }</pre>
+ */
+ var decorate = function (job) {
+ var sourceCode = job.sourceCode, basePos = job.basePos;
+ /** Even entries are positions in source in ascending order. Odd enties
+ * are style markers (e.g., PR_COMMENT) that run from that position until
+ * the end.
+ * @type {Array.<number|string>}
+ */
+ var decorations = [basePos, PR_PLAIN];
+ var pos = 0; // index into sourceCode
+ var tokens = sourceCode.match(tokenizer) || [];
+ var styleCache = {};
+
+ for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
+ var token = tokens[ti];
+ var style = styleCache[token];
+ var match = void 0;
+
+ var isEmbedded;
+ if (typeof style === 'string') {
+ isEmbedded = false;
+ } else {
+ var patternParts = shortcuts[token.charAt(0)];
+ if (patternParts) {
+ match = token.match(patternParts[1]);
+ style = patternParts[0];
+ } else {
+ for (var i = 0; i < nPatterns; ++i) {
+ patternParts = fallthroughStylePatterns[i];
+ match = token.match(patternParts[1]);
+ if (match) {
+ style = patternParts[0];
+ break;
+ }
+ }
+
+ if (!match) { // make sure that we make progress
+ style = PR_PLAIN;
+ }
+ }
+
+ isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
+ if (isEmbedded && !(match && typeof match[1] === 'string')) {
+ isEmbedded = false;
+ style = PR_SOURCE;
+ }
+
+ if (!isEmbedded) { styleCache[token] = style; }
+ }
+
+ var tokenStart = pos;
+ pos += token.length;
+
+ if (!isEmbedded) {
+ decorations.push(basePos + tokenStart, style);
+ } else { // Treat group 1 as an embedded block of source code.
+ var embeddedSource = match[1];
+ var embeddedSourceStart = token.indexOf(embeddedSource);
+ var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
+ if (match[2]) {
+ // If embeddedSource can be blank, then it would match at the
+ // beginning which would cause us to infinitely recurse on the
+ // entire token, so we catch the right context in match[2].
+ embeddedSourceEnd = token.length - match[2].length;
+ embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
+ }
+ var lang = style.substring(5);
+ // Decorate the left of the embedded source
+ appendDecorations(
+ basePos + tokenStart,
+ token.substring(0, embeddedSourceStart),
+ decorate, decorations);
+ // Decorate the embedded source
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceStart,
+ embeddedSource,
+ langHandlerForExtension(lang, embeddedSource),
+ decorations);
+ // Decorate the right of the embedded section
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceEnd,
+ token.substring(embeddedSourceEnd),
+ decorate, decorations);
+ }
+ }
+ job.decorations = decorations;
+ };
+ return decorate;
+ }
+
+ /** returns a function that produces a list of decorations from source text.
+ *
+ * This code treats ", ', and ` as string delimiters, and \ as a string
+ * escape. It does not recognize perl's qq() style strings.
+ * It has no special handling for double delimiter escapes as in basic, or
+ * the tripled delimiters used in python, but should work on those regardless
+ * although in those cases a single string literal may be broken up into
+ * multiple adjacent string literals.
+ *
+ * It recognizes C, C++, and shell style comments.
+ *
+ * @param {Object} options a set of optional parameters.
+ * @return {function (Object)} a function that examines the source code
+ * in the input job and builds the decoration list.
+ */
+ function sourceDecorator(options) {
+ var shortcutStylePatterns = [], fallthroughStylePatterns = [];
+ if (options['tripleQuotedStrings']) {
+ // '''multi-line-string''', 'single-line-string', and double-quoted
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
+ null, '\'"']);
+ } else if (options['multiLineStrings']) {
+ // 'multi-line-string', "multi-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
+ null, '\'"`']);
+ } else {
+ // 'single-line-string', "single-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING,
+ /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
+ null, '"\'']);
+ }
+ if (options['verbatimStrings']) {
+ // verbatim-string-literal production from the C# grammar. See issue 93.
+ fallthroughStylePatterns.push(
+ [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
+ }
+ var hc = options['hashComments'];
+ if (hc) {
+ if (options['cStyleComments']) {
+ if (hc > 1) { // multiline hash comments
+ shortcutStylePatterns.push(
+ [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
+ } else {
+ // Stop C preprocessor declarations at an unclosed open comment
+ shortcutStylePatterns.push(
+ [PR_COMMENT, /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
+ null, '#']);
+ }
+ // #include <stdio.h>
+ fallthroughStylePatterns.push(
+ [PR_STRING,
+ /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
+ null]);
+ } else {
+ shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
+ }
+ }
+ if (options['cStyleComments']) {
+ fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
+ fallthroughStylePatterns.push(
+ [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
+ }
+ var regexLiterals = options['regexLiterals'];
+ if (regexLiterals) {
+ /**
+ * @const
+ */
+ var regexExcls = regexLiterals > 1
+ ? '' // Multiline regex literals
+ : '\n\r';
+ /**
+ * @const
+ */
+ var regexAny = regexExcls ? '.' : '[\\S\\s]';
+ /**
+ * @const
+ */
+ var REGEX_LITERAL = (
+ // A regular expression literal starts with a slash that is
+ // not followed by * or / so that it is not confused with
+ // comments.
+ '/(?=[^/*' + regexExcls + '])'
+ // and then contains any number of raw characters,
+ + '(?:[^/\\x5B\\x5C' + regexExcls + ']'
+ // escape sequences (\x5C),
+ + '|\\x5C' + regexAny
+ // or non-nesting character sets (\x5B\x5D);
+ + '|\\x5B(?:[^\\x5C\\x5D' + regexExcls + ']'
+ + '|\\x5C' + regexAny + ')*(?:\\x5D|$))+'
+ // finally closed by a /.
+ + '/');
+ fallthroughStylePatterns.push(
+ ['lang-regex',
+ RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
+ ]);
+ }
+
+ var types = options['types'];
+ if (types) {
+ fallthroughStylePatterns.push([PR_TYPE, types]);
+ }
+
+ var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
+ if (keywords.length) {
+ fallthroughStylePatterns.push(
+ [PR_KEYWORD,
+ new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
+ null]);
+ }
+
+ shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
+
+ var punctuation =
+ // The Bash man page says
+
+ // A word is a sequence of characters considered as a single
+ // unit by GRUB. Words are separated by metacharacters,
+ // which are the following plus space, tab, and newline: { }
+ // | & $ ; < >
+ // ...
+
+ // A word beginning with # causes that word and all remaining
+ // characters on that line to be ignored.
+
+ // which means that only a '#' after /(?:^|[{}|&$;<>\s])/ starts a
+ // comment but empirically
+ // $ echo {#}
+ // {#}
+ // $ echo \$#
+ // $#
+ // $ echo }#
+ // }#
+
+ // so /(?:^|[|&;<>\s])/ is more appropriate.
+
+ // http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC3
+ // suggests that this definition is compatible with a
+ // default mode that tries to use a single token definition
+ // to recognize both bash/python style comments and C
+ // preprocessor directives.
+
+ // This definition of punctuation does not include # in the list of
+ // follow-on exclusions, so # will not be broken before if preceeded
+ // by a punctuation character. We could try to exclude # after
+ // [|&;<>] but that doesn't seem to cause many major problems.
+ // If that does turn out to be a problem, we should change the below
+ // when hc is truthy to include # in the run of punctuation characters
+ // only when not followint [|&;<>].
+ '^.[^\\s\\w.$@\'"`/\\\\]*';
+ if (options['regexLiterals']) {
+ punctuation += '(?!\s*\/)';
+ }
+
+ fallthroughStylePatterns.push(
+ // TODO(mikesamuel): recognize non-latin letters and numerals in idents
+ [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_TYPE, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
+ [PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_LITERAL,
+ new RegExp(
+ '^(?:'
+ // A hex number
+ + '0x[a-f0-9]+'
+ // or an octal or decimal number,
+ + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
+ // possibly in scientific notation
+ + '(?:e[+\\-]?\\d+)?'
+ + ')'
+ // with an optional modifier like UL for unsigned long
+ + '[a-z]*', 'i'),
+ null, '0123456789'],
+ // Don't treat escaped quotes in bash as starting strings.
+ // See issue 144.
+ [PR_PLAIN, /^\\[\s\S]?/, null],
+ [PR_PUNCTUATION, new RegExp(punctuation), null]);
+
+ return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
+ }
+
+ var decorateSource = sourceDecorator({
+ 'keywords': ALL_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ });
+
+ /**
+ * Given a DOM subtree, wraps it in a list, and puts each line into its own
+ * list item.
+ *
+ * @param {Node} node modified in place. Its content is pulled into an
+ * HTMLOListElement, and each line is moved into a separate list item.
+ * This requires cloning elements, so the input might not have unique
+ * IDs after numbering.
+ * @param {boolean} isPreformatted true iff white-space in text nodes should
+ * be treated as significant.
+ */
+ function numberLines(node, opt_startLineNum, isPreformatted) {
+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
+ var lineBreak = /\r\n?|\n/;
+
+ var document = node.ownerDocument;
+
+ var li = document.createElement('li');
+ while (node.firstChild) {
+ li.appendChild(node.firstChild);
+ }
+ // An array of lines. We split below, so this is initialized to one
+ // un-split line.
+ var listItems = [li];
+
+ function walk(node) {
+ var type = node.nodeType;
+ if (type == 1 && !nocode.test(node.className)) { // Element
+ if ('br' === node.nodeName) {
+ breakAfter(node);
+ // Discard the <BR> since it is now flush against a </LI>.
+ if (node.parentNode) {
+ node.parentNode.removeChild(node);
+ }
+ } else {
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ walk(child);
+ }
+ }
+ } else if ((type == 3 || type == 4) && isPreformatted) { // Text
+ var text = node.nodeValue;
+ var match = text.match(lineBreak);
+ if (match) {
+ var firstLine = text.substring(0, match.index);
+ node.nodeValue = firstLine;
+ var tail = text.substring(match.index + match[0].length);
+ if (tail) {
+ var parent = node.parentNode;
+ parent.insertBefore(
+ document.createTextNode(tail), node.nextSibling);
+ }
+ breakAfter(node);
+ if (!firstLine) {
+ // Don't leave blank text nodes in the DOM.
+ node.parentNode.removeChild(node);
+ }
+ }
+ }
+ }
+
+ // Split a line after the given node.
+ function breakAfter(lineEndNode) {
+ // If there's nothing to the right, then we can skip ending the line
+ // here, and move root-wards since splitting just before an end-tag
+ // would require us to create a bunch of empty copies.
+ while (!lineEndNode.nextSibling) {
+ lineEndNode = lineEndNode.parentNode;
+ if (!lineEndNode) { return; }
+ }
+
+ function breakLeftOf(limit, copy) {
+ // Clone shallowly if this node needs to be on both sides of the break.
+ var rightSide = copy ? limit.cloneNode(false) : limit;
+ var parent = limit.parentNode;
+ if (parent) {
+ // We clone the parent chain.
+ // This helps us resurrect important styling elements that cross lines.
+ // E.g. in <i>Foo<br>Bar</i>
+ // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
+ var parentClone = breakLeftOf(parent, 1);
+ // Move the clone and everything to the right of the original
+ // onto the cloned parent.
+ var next = limit.nextSibling;
+ parentClone.appendChild(rightSide);
+ for (var sibling = next; sibling; sibling = next) {
+ next = sibling.nextSibling;
+ parentClone.appendChild(sibling);
+ }
+ }
+ return rightSide;
+ }
+
+ var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
+
+ // Walk the parent chain until we reach an unattached LI.
+ for (var parent;
+ // Check nodeType since IE invents document fragments.
+ (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
+ copiedListItem = parent;
+ }
+ // Put it on the list of lines for later processing.
+ listItems.push(copiedListItem);
+ }
+
+ // Split lines while there are lines left to split.
+ for (var i = 0; // Number of lines that have been split so far.
+ i < listItems.length; // length updated by breakAfter calls.
+ ++i) {
+ walk(listItems[i]);
+ }
+
+ // Make sure numeric indices show correctly.
+ if (opt_startLineNum === (opt_startLineNum|0)) {
+ listItems[0].setAttribute('value', opt_startLineNum);
+ }
+
+ var ol = document.createElement('ol');
+ ol.className = 'linenums';
+ var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
+ for (var i = 0, n = listItems.length; i < n; ++i) {
+ li = listItems[i];
+ // Stick a class on the LIs so that stylesheets can
+ // color odd/even rows, or any other row pattern that
+ // is co-prime with 10.
+ li.className = 'L' + ((i + offset) % 10);
+ if (!li.firstChild) {
+ li.appendChild(document.createTextNode('\xA0'));
+ }
+ ol.appendChild(li);
+ }
+
+ node.appendChild(ol);
+ }
+ /**
+ * Breaks {@code job.sourceCode} around style boundaries in
+ * {@code job.decorations} and modifies {@code job.sourceNode} in place.
+ * @param {Object} job like <pre>{
+ * sourceCode: {string} source as plain text,
+ * sourceNode: {HTMLElement} the element containing the source,
+ * spans: {Array.<number|Node>} alternating span start indices into source
+ * and the text node or element (e.g. {@code <BR>}) corresponding to that
+ * span.
+ * decorations: {Array.<number|string} an array of style classes preceded
+ * by the position at which they start in job.sourceCode in order
+ * }</pre>
+ * @private
+ */
+ function recombineTagsAndDecorations(job) {
+ var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
+ isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
+ var newlineRe = /\n/g;
+
+ var source = job.sourceCode;
+ var sourceLength = source.length;
+ // Index into source after the last code-unit recombined.
+ var sourceIndex = 0;
+
+ var spans = job.spans;
+ var nSpans = spans.length;
+ // Index into spans after the last span which ends at or before sourceIndex.
+ var spanIndex = 0;
+
+ var decorations = job.decorations;
+ var nDecorations = decorations.length;
+ // Index into decorations after the last decoration which ends at or before
+ // sourceIndex.
+ var decorationIndex = 0;
+
+ // Remove all zero-length decorations.
+ decorations[nDecorations] = sourceLength;
+ var decPos, i;
+ for (i = decPos = 0; i < nDecorations;) {
+ if (decorations[i] !== decorations[i + 2]) {
+ decorations[decPos++] = decorations[i++];
+ decorations[decPos++] = decorations[i++];
+ } else {
+ i += 2;
+ }
+ }
+ nDecorations = decPos;
+
+ // Simplify decorations.
+ for (i = decPos = 0; i < nDecorations;) {
+ var startPos = decorations[i];
+ // Conflate all adjacent decorations that use the same style.
+ var startDec = decorations[i + 1];
+ var end = i + 2;
+ while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
+ end += 2;
+ }
+ decorations[decPos++] = startPos;
+ decorations[decPos++] = startDec;
+ i = end;
+ }
+
+ nDecorations = decorations.length = decPos;
+
+ var sourceNode = job.sourceNode;
+ var oldDisplay;
+ if (sourceNode) {
+ oldDisplay = sourceNode.style.display;
+ sourceNode.style.display = 'none';
+ }
+ try {
+ var decoration = null;
+ while (spanIndex < nSpans) {
+ var spanStart = spans[spanIndex];
+ var spanEnd = spans[spanIndex + 2] || sourceLength;
+
+ var decEnd = decorations[decorationIndex + 2] || sourceLength;
+
+ var end = Math.min(spanEnd, decEnd);
+
+ var textNode = spans[spanIndex + 1];
+ var styledText;
+ if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s
+ // Don't introduce spans around empty text nodes.
+ && (styledText = source.substring(sourceIndex, end))) {
+ // This may seem bizarre, and it is. Emitting LF on IE causes the
+ // code to display with spaces instead of line breaks.
+ // Emitting Windows standard issue linebreaks (CRLF) causes a blank
+ // space to appear at the beginning of every line but the first.
+ // Emitting an old Mac OS 9 line separator makes everything spiffy.
+ if (isIE8OrEarlier) {
+ styledText = styledText.replace(newlineRe, '\r');
+ }
+ textNode.nodeValue = styledText;
+ var document = textNode.ownerDocument;
+ var span = document.createElement('span');
+ span.className = decorations[decorationIndex + 1];
+ var parentNode = textNode.parentNode;
+ parentNode.replaceChild(span, textNode);
+ span.appendChild(textNode);
+ if (sourceIndex < spanEnd) { // Split off a text node.
+ spans[spanIndex + 1] = textNode
+ // TODO: Possibly optimize by using '' if there's no flicker.
+ = document.createTextNode(source.substring(end, spanEnd));
+ parentNode.insertBefore(textNode, span.nextSibling);
+ }
+ }
+
+ sourceIndex = end;
+
+ if (sourceIndex >= spanEnd) {
+ spanIndex += 2;
+ }
+ if (sourceIndex >= decEnd) {
+ decorationIndex += 2;
+ }
+ }
+ } finally {
+ if (sourceNode) {
+ sourceNode.style.display = oldDisplay;
+ }
+ }
+ }
+
+ /** Maps language-specific file extensions to handlers. */
+ var langHandlerRegistry = {};
+ /** Register a language handler for the given file extensions.
+ * @param {function (Object)} handler a function from source code to a list
+ * of decorations. Takes a single argument job which describes the
+ * state of the computation. The single parameter has the form
+ * {@code {
+ * sourceCode: {string} as plain text.
+ * decorations: {Array.<number|string>} an array of style classes
+ * preceded by the position at which they start in
+ * job.sourceCode in order.
+ * The language handler should assigned this field.
+ * basePos: {int} the position of source in the larger source chunk.
+ * All positions in the output decorations array are relative
+ * to the larger source chunk.
+ * } }
+ * @param {Array.<string>} fileExtensions
+ */
+ function registerLangHandler(handler, fileExtensions) {
+ for (var i = fileExtensions.length; --i >= 0;) {
+ var ext = fileExtensions[i];
+ if (!langHandlerRegistry.hasOwnProperty(ext)) {
+ langHandlerRegistry[ext] = handler;
+ } else if (win['console']) {
+ console['warn']('cannot override language handler %s', ext);
+ }
+ }
+ }
+ function langHandlerForExtension(extension, source) {
+ if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
+ // Treat it as markup if the first non whitespace character is a < and
+ // the last non-whitespace character is a >.
+ extension = /^\s*</.test(source)
+ ? 'default-markup'
+ : 'default-code';
+ }
+ return langHandlerRegistry[extension];
+ }
+ registerLangHandler(decorateSource, ['default-code']);
+ registerLangHandler(
+ createSimpleLexer(
+ [],
+ [
+ [PR_PLAIN, /^[^<?]+/],
+ [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
+ [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
+ // Unescaped content in an unknown language
+ ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
+ ['lang-', /^<%([\s\S]+?)(?:%>|$)/],
+ [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
+ ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
+ // Unescaped content in javascript. (Or possibly vbscript).
+ ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
+ // Contains unescaped stylesheet content
+ ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
+ ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i]
+ ]),
+ ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
+ registerLangHandler(
+ createSimpleLexer(
+ [
+ [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'],
+ [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
+ ],
+ [
+ [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
+ [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
+ ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
+ [PR_PUNCTUATION, /^[=<>\/]+/],
+ ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i],
+ ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i],
+ ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i],
+ ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i],
+ ['lang-css', /^style\s*=\s*\'([^\']+)\'/i],
+ ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i]
+ ]),
+ ['in.tag']);
+ registerLangHandler(
+ createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CPP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'types': C_TYPES
+ }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': 'null,true,false'
+ }), ['json']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CSHARP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'verbatimStrings': true,
+ 'types': C_TYPES
+ }), ['cs']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JAVA_KEYWORDS,
+ 'cStyleComments': true
+ }), ['java']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': SH_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true
+ }), ['bash', 'bsh', 'csh', 'sh']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PYTHON_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'tripleQuotedStrings': true
+ }), ['cv', 'py', 'python']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PERL_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': 2 // multiline regex literals
+ }), ['perl', 'pl', 'pm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': RUBY_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ }), ['rb', 'ruby']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JSCRIPT_KEYWORDS,
+ 'cStyleComments': true,
+ 'regexLiterals': true
+ }), ['javascript', 'js']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': COFFEE_KEYWORDS,
+ 'hashComments': 3, // ### style block comments
+ 'cStyleComments': true,
+ 'multilineStrings': true,
+ 'tripleQuotedStrings': true,
+ 'regexLiterals': true
+ }), ['coffee']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': RUST_KEYWORDS,
+ 'cStyleComments': true,
+ 'multilineStrings': true
+ }), ['rc', 'rs', 'rust']);
+ registerLangHandler(
+ createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
+
+ function applyDecorator(job) {
+ var opt_langExtension = job.langExtension;
+
+ try {
+ // Extract tags, and convert the source code to plain text.
+ var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
+ /** Plain text. @type {string} */
+ var source = sourceAndSpans.sourceCode;
+ job.sourceCode = source;
+ job.spans = sourceAndSpans.spans;
+ job.basePos = 0;
+
+ // Apply the appropriate language handler
+ langHandlerForExtension(opt_langExtension, source)(job);
+
+ // Integrate the decorations and tags back into the source code,
+ // modifying the sourceNode in place.
+ recombineTagsAndDecorations(job);
+ } catch (e) {
+ if (win['console']) {
+ console['log'](e && e['stack'] || e);
+ }
+ }
+ }
+
+ /**
+ * Pretty print a chunk of code.
+ * @param sourceCodeHtml {string} The HTML to pretty print.
+ * @param opt_langExtension {string} The language name to use.
+ * Typically, a filename extension like 'cpp' or 'java'.
+ * @param opt_numberLines {number|boolean} True to number lines,
+ * or the 1-indexed number of the first line in sourceCodeHtml.
+ */
+ function $prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
+ var container = document.createElement('div');
+ // This could cause images to load and onload listeners to fire.
+ // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
+ // We assume that the inner HTML is from a trusted source.
+ // The pre-tag is required for IE8 which strips newlines from innerHTML
+ // when it is injected into a <pre> tag.
+ // http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie
+ // http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript
+ container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>';
+ container = container.firstChild;
+ if (opt_numberLines) {
+ numberLines(container, opt_numberLines, true);
+ }
+
+ var job = {
+ langExtension: opt_langExtension,
+ numberLines: opt_numberLines,
+ sourceNode: container,
+ pre: 1
+ };
+ applyDecorator(job);
+ return container.innerHTML;
+ }
+
+ /**
+ * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
+ * {@code class=prettyprint} and prettify them.
+ *
+ * @param {Function} opt_whenDone called when prettifying is done.
+ * @param {HTMLElement|HTMLDocument} opt_root an element or document
+ * containing all the elements to pretty print.
+ * Defaults to {@code document.body}.
+ */
+ function $prettyPrint(opt_whenDone, opt_root) {
+ var root = opt_root || document.body;
+ var doc = root.ownerDocument || document;
+ function byTagName(tn) { return root.getElementsByTagName(tn); }
+ // fetch a list of nodes to rewrite
+ var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
+ var elements = [];
+ for (var i = 0; i < codeSegments.length; ++i) {
+ for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
+ elements.push(codeSegments[i][j]);
+ }
+ }
+ codeSegments = null;
+
+ var clock = Date;
+ if (!clock['now']) {
+ clock = { 'now': function () { return +(new Date); } };
+ }
+
+ // The loop is broken into a series of continuations to make sure that we
+ // don't make the browser unresponsive when rewriting a large page.
+ var k = 0;
+ var prettyPrintingJob;
+
+ var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
+ var prettyPrintRe = /\bprettyprint\b/;
+ var prettyPrintedRe = /\bprettyprinted\b/;
+ var preformattedTagNameRe = /pre|xmp/i;
+ var codeRe = /^code$/i;
+ var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
+ var EMPTY = {};
+
+ function doWork() {
+ var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
+ clock['now']() + 250 /* ms */ :
+ Infinity);
+ for (; k < elements.length && clock['now']() < endTime; k++) {
+ var cs = elements[k];
+
+ // Look for a preceding comment like
+ // <?prettify lang="..." linenums="..."?>
+ var attrs = EMPTY;
+ {
+ for (var preceder = cs; (preceder = preceder.previousSibling);) {
+ var nt = preceder.nodeType;
+ // <?foo?> is parsed by HTML 5 to a comment node (8)
+ // like <!--?foo?-->, but in XML is a processing instruction
+ var value = (nt === 7 || nt === 8) && preceder.nodeValue;
+ if (value
+ ? !/^\??prettify\b/.test(value)
+ : (nt !== 3 || /\S/.test(preceder.nodeValue))) {
+ // Skip over white-space text nodes but not others.
+ break;
+ }
+ if (value) {
+ attrs = {};
+ value.replace(
+ /\b(\w+)=([\w:.%+-]+)/g,
+ function (_, name, value) { attrs[name] = value; });
+ break;
+ }
+ }
+ }
+
+ var className = cs.className;
+ if ((attrs !== EMPTY || prettyPrintRe.test(className))
+ // Don't redo this if we've already done it.
+ // This allows recalling pretty print to just prettyprint elements
+ // that have been added to the page since last call.
+ && !prettyPrintedRe.test(className)) {
+
+ // make sure this is not nested in an already prettified element
+ var nested = false;
+ for (var p = cs.parentNode; p; p = p.parentNode) {
+ var tn = p.tagName;
+ if (preCodeXmpRe.test(tn)
+ && p.className && prettyPrintRe.test(p.className)) {
+ nested = true;
+ break;
+ }
+ }
+ if (!nested) {
+ // Mark done. If we fail to prettyprint for whatever reason,
+ // we shouldn't try again.
+ cs.className += ' prettyprinted';
+
+ // If the classes includes a language extensions, use it.
+ // Language extensions can be specified like
+ // <pre class="prettyprint lang-cpp">
+ // the language extension "cpp" is used to find a language handler
+ // as passed to PR.registerLangHandler.
+ // HTML5 recommends that a language be specified using "language-"
+ // as the prefix instead. Google Code Prettify supports both.
+ // http://dev.w3.org/html5/spec-author-view/the-code-element.html
+ var langExtension = attrs['lang'];
+ if (!langExtension) {
+ langExtension = className.match(langExtensionRe);
+ // Support <pre class="prettyprint"><code class="language-c">
+ var wrapper;
+ if (!langExtension && (wrapper = childContentWrapper(cs))
+ && codeRe.test(wrapper.tagName)) {
+ langExtension = wrapper.className.match(langExtensionRe);
+ }
+
+ if (langExtension) { langExtension = langExtension[1]; }
+ }
+
+ var preformatted;
+ if (preformattedTagNameRe.test(cs.tagName)) {
+ preformatted = 1;
+ } else {
+ var currentStyle = cs['currentStyle'];
+ var defaultView = doc.defaultView;
+ var whitespace = (
+ currentStyle
+ ? currentStyle['whiteSpace']
+ : (defaultView
+ && defaultView.getComputedStyle)
+ ? defaultView.getComputedStyle(cs, null)
+ .getPropertyValue('white-space')
+ : 0);
+ preformatted = whitespace
+ && 'pre' === whitespace.substring(0, 3);
+ }
+
+ // Look for a class like linenums or linenums:<n> where <n> is the
+ // 1-indexed number of the first line.
+ var lineNums = attrs['linenums'];
+ if (!(lineNums = lineNums === 'true' || +lineNums)) {
+ lineNums = className.match(/\blinenums\b(?::(\d+))?/);
+ lineNums =
+ lineNums
+ ? lineNums[1] && lineNums[1].length
+ ? +lineNums[1] : true
+ : false;
+ }
+ if (lineNums) { numberLines(cs, lineNums, preformatted); }
+
+ // do the pretty printing
+ prettyPrintingJob = {
+ langExtension: langExtension,
+ sourceNode: cs,
+ numberLines: lineNums,
+ pre: preformatted
+ };
+ applyDecorator(prettyPrintingJob);
+ }
+ }
+ }
+ if (k < elements.length) {
+ // finish up in a continuation
+ setTimeout(doWork, 250);
+ } else if ('function' === typeof opt_whenDone) {
+ opt_whenDone();
+ }
+ }
+
+ doWork();
+ }
+
+ /**
+ * Contains functions for creating and registering new language handlers.
+ * @type {Object}
+ */
+ var PR = win['PR'] = {
+ 'createSimpleLexer': createSimpleLexer,
+ 'registerLangHandler': registerLangHandler,
+ 'sourceDecorator': sourceDecorator,
+ 'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
+ 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
+ 'PR_COMMENT': PR_COMMENT,
+ 'PR_DECLARATION': PR_DECLARATION,
+ 'PR_KEYWORD': PR_KEYWORD,
+ 'PR_LITERAL': PR_LITERAL,
+ 'PR_NOCODE': PR_NOCODE,
+ 'PR_PLAIN': PR_PLAIN,
+ 'PR_PUNCTUATION': PR_PUNCTUATION,
+ 'PR_SOURCE': PR_SOURCE,
+ 'PR_STRING': PR_STRING,
+ 'PR_TAG': PR_TAG,
+ 'PR_TYPE': PR_TYPE,
+ 'prettyPrintOne':
+ IN_GLOBAL_SCOPE
+ ? (win['prettyPrintOne'] = $prettyPrintOne)
+ : (prettyPrintOne = $prettyPrintOne),
+ 'prettyPrint': prettyPrint =
+ IN_GLOBAL_SCOPE
+ ? (win['prettyPrint'] = $prettyPrint)
+ : (prettyPrint = $prettyPrint)
+ };
+
+ // Make PR available via the Asynchronous Module Definition (AMD) API.
+ // Per https://github.com/amdjs/amdjs-api/wiki/AMD:
+ // The Asynchronous Module Definition (AMD) API specifies a
+ // mechanism for defining modules such that the module and its
+ // dependencies can be asynchronously loaded.
+ // ...
+ // To allow a clear indicator that a global define function (as
+ // needed for script src browser loading) conforms to the AMD API,
+ // any global define function SHOULD have a property called "amd"
+ // whose value is an object. This helps avoid conflict with any
+ // other existing JavaScript code that could have defined a define()
+ // function that does not conform to the AMD API.
+ if (typeof define === "function" && define['amd']) {
+ define("google-code-prettify", [], function () {
+ return PR;
+ });
+ }
+ })();
+ return prettyPrint;
+ })();
+
+ // If this script is deferred or async and the document is already
+ // loaded we need to wait for language handlers to load before performing
+ // any autorun.
+ function onLangsLoaded() {
+ if (autorun) {
+ contentLoaded(
+ function () {
+ var n = callbacks.length;
+ var callback = n ? function () {
+ for (var i = 0; i < n; ++i) {
+ (function (i) {
+ setTimeout(
+ function () {
+ win['exports'][callbacks[i]].apply(win, arguments);
+ }, 0);
+ })(i);
+ }
+ } : void 0;
+ prettyPrint(callback);
+ });
+ }
+ }
+ checkPendingLanguages();
+
+}());
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/demo.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/demo.html
new file mode 100644
index 0000000..9c9acad
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/demo.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html><head>
+<script src="../src/prettify.js"></script>
+<script src="../src/lang-css.js"></script>
+<style>
+body { margin: 0; padding: 0 }
+pre { margin: 0 }
+</style>
+</head>
+<script>
+// This page displays some code styled using a theme named in the
+// query part of the URL.
+var themeName = decodeURIComponent(document.location.search.replace(/^\?/, ''));
+
+// Call out to the parent so that it can resize the iframe once this
+// document's body is loaded.
+function adjustHeightInParent() {
+ if (parent !== window) {
+ try {
+ var div = document.body.getElementsByTagName('div')[0];
+ parent.adjustChildIframeSize(
+ themeName, div.offsetWidth, div.offsetHeight);
+ } catch (ex) {
+ // Can happen when this page is opened in its own tab.
+ }
+ }
+}
+
+// Load the necessary CSS
+(function () {
+ document.title = 'Theme ' + themeName;
+ // Load the stylesheet that we're demoing.
+ var link = document.createElement('link');
+ link.rel = 'stylesheet';
+ link.type = 'text/css';
+ link.href = themeName === 'default'
+ ? '../src/prettify.css' : themeName + '.css';
+ document.getElementsByTagName('head')[0].appendChild(link);
+})();
+</script>
+
+<body onload="prettyPrint(); adjustHeightInParent()">
+<div style="width: 40em; display: inline-block">
+<pre class="prettyprint lang-html linenums">
+<script type="text/javascript">
+// Say hello world until the user starts questioning
+// the meaningfulness of their existence.
+function helloWorld(world) {
+ for (var i = 42; --i >= 0;) {
+ alert('Hello ' + String(world));
+ }
+}
+</script>
+<style>
+p { color: pink }
+b { color: blue }
+u { color: "umber" }
+</style>
+</pre>
+</div>
+</body></html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/desert.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/desert.css
new file mode 100644
index 0000000..b2b73cd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/desert.css
@@ -0,0 +1,34 @@
+/* desert scheme ported from vim to google prettify */
+pre.prettyprint { display: block; background-color: #333 }
+pre .nocode { background-color: none; color: #000 }
+pre .str { color: #ffa0a0 } /* string - pink */
+pre .kwd { color: #f0e68c; font-weight: bold }
+pre .com { color: #87ceeb } /* comment - skyblue */
+pre .typ { color: #98fb98 } /* type - lightgreen */
+pre .lit { color: #cd5c5c } /* literal - darkred */
+pre .pun { color: #fff } /* punctuation */
+pre .pln { color: #fff } /* plaintext */
+pre .tag { color: #f0e68c; font-weight: bold } /* html/xml tag - lightyellow */
+pre .atn { color: #bdb76b; font-weight: bold } /* attribute name - khaki */
+pre .atv { color: #ffa0a0 } /* attribute value - pink */
+pre .dec { color: #98fb98 } /* decimal - lightgreen */
+
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE } /* IE indents via margin-left */
+li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
+/* Alternate shading for lines */
+li.L1,li.L3,li.L5,li.L7,li.L9 { }
+
+@media print {
+ pre.prettyprint { background-color: none }
+ pre .str, code .str { color: #060 }
+ pre .kwd, code .kwd { color: #006; font-weight: bold }
+ pre .com, code .com { color: #600; font-style: italic }
+ pre .typ, code .typ { color: #404; font-weight: bold }
+ pre .lit, code .lit { color: #044 }
+ pre .pun, code .pun { color: #440 }
+ pre .pln, code .pln { color: #000 }
+ pre .tag, code .tag { color: #006; font-weight: bold }
+ pre .atn, code .atn { color: #404 }
+ pre .atv, code .atv { color: #060 }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/doxy.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/doxy.css
new file mode 100644
index 0000000..bf3a266
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/doxy.css
@@ -0,0 +1,64 @@
+/* Doxy pretty-printing styles. Used with prettify.js. */
+
+pre .str, code .str { color: #fec243; } /* string - eggyolk gold */
+pre .kwd, code .kwd { color: #8470FF; } /* keyword - light slate blue */
+pre .com, code .com { color: #32cd32; font-style: italic; } /* comment - green */
+pre .typ, code .typ { color: #6ecbcc; } /* type - turq green */
+pre .lit, code .lit { color: #d06; } /* literal - cherry red */
+pre .pun, code .pun { color: #8B8970; } /* punctuation - lemon chiffon4 */
+pre .pln, code .pln { color: #f0f0f0; } /* plaintext - white */
+pre .tag, code .tag { color: #9c9cff; } /* html/xml tag (bluey) */
+pre .htm, code .htm { color: #dda0dd; } /* html tag light purply*/
+pre .xsl, code .xsl { color: #d0a0d0; } /* xslt tag light purply*/
+pre .atn, code .atn { color: #46eeee; font-weight: normal;} /* html/xml attribute name - lt turquoise */
+pre .atv, code .atv { color: #EEB4B4; } /* html/xml attribute value - rosy brown2 */
+pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
+
+a {
+ text-decoration: none;
+}
+pre.prettyprint, code.prettyprint {
+ font-family:'Droid Sans Mono','CPMono_v07 Bold','Droid Sans';
+ font-weight: bold;
+ font-size: 9pt;
+ background-color: #0f0f0f;
+ -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
+ -o-border-radius: 8px;
+ -ms-border-radius: 8px;
+ -khtml-border-radius: 8px;
+ border-radius: 8px;
+} /* background is black (well, just a tad less dark ) */
+
+pre.prettyprint {
+ width: 95%;
+ margin: 1em auto;
+ padding: 1em;
+ white-space: pre-wrap;
+}
+
+pre.prettyprint a, code.prettyprint a {
+ text-decoration:none;
+}
+/* Specify class=linenums on a pre to get line numbering; line numbers themselves are the same color as punctuation */
+ol.linenums { margin-top: 0; margin-bottom: 0; color: #8B8970; } /* IE indents via margin-left */
+li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
+/* Alternate shading for lines */
+li.L1,li.L3,li.L5,li.L7,li.L9 { }
+
+/* print is mostly unchanged from default at present */
+@media print {
+ pre.prettyprint, code.prettyprint { background-color: #fff; }
+ pre .str, code .str { color: #088; }
+ pre .kwd, code .kwd { color: #006; font-weight: bold; }
+ pre .com, code .com { color: #0C3; font-style: italic; }
+ pre .typ, code .typ { color: #404; font-weight: bold; }
+ pre .lit, code .lit { color: #044; }
+ pre .pun, code .pun { color: #440; }
+ pre .pln, code .pln { color: #000; }
+ pre .tag, code .tag { color: #b66ff7; font-weight: bold; }
+ pre .htm, code .htm { color: #606; font-weight: bold; }
+ pre .xsl, code .xsl { color: #606; font-weight: bold; }
+ pre .atn, code .atn { color: #c71585; font-weight: normal; }
+ pre .atv, code .atv { color: #088; font-weight: normal; }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/index.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/index.html
new file mode 100644
index 0000000..abd6ef5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/index.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html><head>
+<title>Prettify Themes Gallery</title>
+<style type="text/css">
+iframe { width: 100%; border-style: none; margin: 0; padding: 0 }
+</style>
+<script>
+var allThemes = [
+ { name: 'default' },
+ { name: 'desert',
+ authorHtml: '<a href="http://code.google.com/u/@VhJeSlJYBhVMWgF7/">'
+ + 'techto…@<\/a>' },
+ { name: 'sunburst', authorHtml: 'David Leibovic' },
+ { name: 'sons-of-obsidian',
+ authorHtml: '<a href="http://CodeTunnel.com/blog/post/71'
+ + '/google-code-prettify-obsidian-theme">Alex Ford<\/a>' },
+ { name: 'doxy', authorHtml: 'Robert Sperberg' },
+];
+
+// Called by the demo.html frames loaded per theme to
+// size the iframes properly and to allow them to tile
+// the page nicely.
+function adjustChildIframeSize(themeName, width, height) {
+ if (typeof console != 'undefined') {
+ try {
+ console.log('adjusting ' + themeName + ' to ' + width + 'x' + height);
+ } catch (ex) {
+ // Don't bother logging log failure.
+ }
+ }
+
+ var container = document.getElementById(themeName).parentNode;
+ container.style.width = (+width + 16) + 'px';
+ container.style.display = 'inline-block';
+ var iframe = container.getElementsByTagName('iframe')[0];
+ iframe.style.height = (+height + 16) + 'px';
+}
+</script>
+</head>
+
+<body>
+<noscript>This page requires JavaScript</noscript>
+
+<h1>Gallery of themes for
+<a href="http://code.google.com/p/google-code-prettify/">code prettify</a></h1>
+<p>
+Click on a theme name for a link to the file in revision control.
+Print preview this page to see how the themes work on the printed page.
+</p>
+<script>(function () {
+ // Produce an iframe per theme.
+ // We pass the threme name to the iframe via its URI query, and
+ // it loads prettify and the theme CSS, and calls back to this page
+ // to resize the iframe.
+ for (var i = 0, n = allThemes.length; i < n; ++i) {
+ var theme = allThemes[i];
+ if (!theme) { continue; }
+ var iframe = document.createElement('iframe');
+ iframe.name = theme.name;
+ iframe.src = 'demo.html?' + encodeURIComponent(theme.name);
+ var header = document.createElement('h2');
+ header.id = theme.name;
+ var linkToThemeSrc = document.createElement('a');
+ linkToThemeSrc.href = (
+ 'http://code.google.com/p/google-code-prettify/source/browse/trunk/' +
+ (theme.name === 'default'
+ ? 'src/prettify.css'
+ : 'styles/' + encodeURIComponent(theme.name) + '.css'));
+ linkToThemeSrc.appendChild(document.createTextNode(
+ theme.name.replace(/\b[a-z]/g, // Capitalize first letter of each word
+ function (letter) { return letter.toUpperCase(); })));
+ header.appendChild(linkToThemeSrc);
+
+ var attribution;
+ if (theme.authorHtml) {
+ attribution = document.createElement('span');
+ attribution.className = 'attribution';
+ attribution.innerHTML = 'by ' + theme.authorHtml;
+ }
+
+ var div = document.createElement('div');
+ div.appendChild(header);
+ if (attribution) { div.appendChild(attribution); }
+ div.appendChild(iframe);
+ document.body.appendChild(div);
+ }
+})()</script>
+
+</body></html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/sons-of-obsidian.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/sons-of-obsidian.css
new file mode 100644
index 0000000..8553db6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/sons-of-obsidian.css
@@ -0,0 +1,118 @@
+/*
+ * Derived from einaros's Sons of Obsidian theme at
+ * http://studiostyl.es/schemes/son-of-obsidian by
+ * Alex Ford of CodeTunnel:
+ * http://CodeTunnel.com/blog/post/71/google-code-prettify-obsidian-theme
+ */
+
+.str
+{
+ color: #EC7600;
+}
+.kwd
+{
+ color: #93C763;
+}
+.com
+{
+ color: #66747B;
+}
+.typ
+{
+ color: #678CB1;
+}
+.lit
+{
+ color: #FACD22;
+}
+.pun
+{
+ color: #F1F2F3;
+}
+.pln
+{
+ color: #F1F2F3;
+}
+.tag
+{
+ color: #8AC763;
+}
+.atn
+{
+ color: #E0E2E4;
+}
+.atv
+{
+ color: #EC7600;
+}
+.dec
+{
+ color: purple;
+}
+pre.prettyprint
+{
+ border: 0px solid #888;
+}
+ol.linenums
+{
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.prettyprint {
+ background: #000;
+}
+li.L0, li.L1, li.L2, li.L3, li.L4, li.L5, li.L6, li.L7, li.L8, li.L9
+{
+ color: #555;
+ list-style-type: decimal;
+}
+li.L1, li.L3, li.L5, li.L7, li.L9 {
+ background: #111;
+}
+@media print
+{
+ .str
+ {
+ color: #060;
+ }
+ .kwd
+ {
+ color: #006;
+ font-weight: bold;
+ }
+ .com
+ {
+ color: #600;
+ font-style: italic;
+ }
+ .typ
+ {
+ color: #404;
+ font-weight: bold;
+ }
+ .lit
+ {
+ color: #044;
+ }
+ .pun
+ {
+ color: #440;
+ }
+ .pln
+ {
+ color: #000;
+ }
+ .tag
+ {
+ color: #006;
+ font-weight: bold;
+ }
+ .atn
+ {
+ color: #404;
+ }
+ .atv
+ {
+ color: #060;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/sunburst.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/sunburst.css
new file mode 100644
index 0000000..011d33e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/google-code-prettify/styles/sunburst.css
@@ -0,0 +1,51 @@
+/* Pretty printing styles. Used with prettify.js. */
+/* Vim sunburst theme by David Leibovic */
+
+pre .str, code .str { color: #65B042; } /* string - green */
+pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
+pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
+pre .typ, code .typ { color: #89bdff; } /* type - light blue */
+pre .lit, code .lit { color: #3387CC; } /* literal - blue */
+pre .pun, code .pun { color: #fff; } /* punctuation - white */
+pre .pln, code .pln { color: #fff; } /* plaintext - white */
+pre .tag, code .tag { color: #89bdff; } /* html/xml tag - light blue */
+pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name - khaki */
+pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
+pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
+
+pre.prettyprint, code.prettyprint {
+ background-color: #000;
+ -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
+ -o-border-radius: 8px;
+ -ms-border-radius: 8px;
+ -khtml-border-radius: 8px;
+ border-radius: 8px;
+}
+
+pre.prettyprint {
+ width: 95%;
+ margin: 1em auto;
+ padding: 1em;
+ white-space: pre-wrap;
+}
+
+
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
+li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
+/* Alternate shading for lines */
+li.L1,li.L3,li.L5,li.L7,li.L9 { }
+
+@media print {
+ pre .str, code .str { color: #060; }
+ pre .kwd, code .kwd { color: #006; font-weight: bold; }
+ pre .com, code .com { color: #600; font-style: italic; }
+ pre .typ, code .typ { color: #404; font-weight: bold; }
+ pre .lit, code .lit { color: #044; }
+ pre .pun, code .pun { color: #440; }
+ pre .pln, code .pln { color: #000; }
+ pre .tag, code .tag { color: #006; font-weight: bold; }
+ pre .atn, code .atn { color: #404; }
+ pre .atv, code .atv { color: #060; }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/bower.json
new file mode 100644
index 0000000..0c80cd5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/bower.json
@@ -0,0 +1,28 @@
+{
+ "name": "jquery",
+ "version": "2.1.4",
+ "main": "dist/jquery.js",
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "build",
+ "dist/cdn",
+ "speed",
+ "test",
+ "*.md",
+ "AUTHORS.txt",
+ "Gruntfile.js",
+ "package.json"
+ ],
+ "devDependencies": {
+ "sizzle": "2.1.1-jquery.2.1.2",
+ "requirejs": "2.1.10",
+ "qunit": "1.14.0",
+ "sinon": "1.8.1"
+ },
+ "keywords": [
+ "jquery",
+ "javascript",
+ "library"
+ ]
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.js
new file mode 100644
index 0000000..eed1777
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.js
@@ -0,0 +1,9210 @@
+/*!
+ * jQuery JavaScript Library v2.1.4
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-04-28T16:01Z
+ */
+
+(function( global, factory ) {
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//
+
+var arr = [];
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+ // Use the correct document accordingly with window argument (sandbox)
+ document = window.document,
+
+ version = "2.1.4",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android<4.1
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num != null ?
+
+ // Return just the one element from the set
+ ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+ // Return all the elements in a clean array
+ slice.call( this );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray,
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ // parseFloat NaNs numeric-cast false positives (null|true|false|"")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ // adding 1 corrects loss of precision from parseFloat (#15100)
+ return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
+ },
+
+ isPlainObject: function( obj ) {
+ // Not plain objects:
+ // - Any object or value whose internal [[Class]] property is not "[object Object]"
+ // - DOM nodes
+ // - window
+ if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.constructor &&
+ !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
+ return false;
+ }
+
+ // If the function hasn't returned already, we're confident that
+ // |obj| is a plain object, created by {} or constructed with new Object
+ return true;
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+ // Support: Android<4.0, iOS<6 (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call(obj) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ var script,
+ indirect = eval;
+
+ code = jQuery.trim( code );
+
+ if ( code ) {
+ // If the code includes a valid, prologue position
+ // strict mode pragma, execute code by injecting a
+ // script tag into the document.
+ if ( code.indexOf("use strict") === 1 ) {
+ script = document.createElement("script");
+ script.text = code;
+ document.head.appendChild( script ).parentNode.removeChild( script );
+ } else {
+ // Otherwise, avoid the DOM node creation, insertion
+ // and removal by using an indirect global eval
+ indirect( code );
+ }
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Support: IE9-11+
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ // args is for internal usage only
+ each: function( obj, callback, args ) {
+ var value,
+ i = 0,
+ length = obj.length,
+ isArray = isArraylike( obj );
+
+ if ( args ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android<4.1
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArraylike( Object(arr) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value,
+ i = 0,
+ length = elems.length,
+ isArray = isArraylike( elems ),
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+
+ // Support: iOS 8.2 (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = "length" in obj && obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.nodeType === 1 && length ) {
+ return true;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.2.0-pre
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-12-16
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // http://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + characterEncoding + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var match, elem, m, nodeType,
+ // QSA vars
+ i, groups, old, nid, newContext, newSelector;
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+
+ context = context || document;
+ results = results || [];
+ nodeType = context.nodeType;
+
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ if ( !seed && documentIsHTML ) {
+
+ // Try to shortcut find operations when possible (e.g., not under DocumentFragment)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document (jQuery #6963)
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && support.getElementsByClassName ) {
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // QSA path
+ if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ nid = old = expando;
+ newContext = context;
+ newSelector = nodeType !== 1 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + toSelector( groups[i] );
+ }
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = attrs.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, parent,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // If no document and documentElement is available, return
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Set our document
+ document = doc;
+ docElem = doc.documentElement;
+ parent = doc.defaultView;
+
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ // IE6-8 do not support the defaultView property so parent will be undefined
+ if ( parent && parent !== parent.top ) {
+ // IE11 does not have attachEvent, so all must suffer
+ if ( parent.addEventListener ) {
+ parent.addEventListener( "unload", unloadHandler, false );
+ } else if ( parent.attachEvent ) {
+ parent.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Support tests
+ ---------------------------------------------------------------------- */
+ documentIsHTML = !isXML( doc );
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [ m ] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
+ "<select id='" + expando + "-\f]' msallowcapture=''>" +
+ "<option selected=''></option></select>";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( div.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibing-combinator selector` fails
+ if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( div ) {
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = doc.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( div.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully does not implement inclusive descendent
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === doc ? -1 :
+ b === doc ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, outerCache, node, diff, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+ // Seek `elem` from a previously-cached index
+ outerCache = parent[ expando ] || (parent[ expando ] = {});
+ cache = outerCache[ type ] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = cache[0] === dirruns && cache[2];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ // Use previously-cached element index if available
+ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+ diff = cache[1];
+
+ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ } else {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+ if ( (oldCache = outerCache[ dir ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ outerCache[ dir ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is no seed and only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = "<a href='#'></a>";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = "<input/>";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ });
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ });
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
+ });
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ }));
+};
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i,
+ len = this.length,
+ ret = [],
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ }) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], false) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], true) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+});
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ init = jQuery.fn.init = function( selector, context ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Support: Blackberry 4.6
+ // gEBID returns nodes no longer in the document (#6963)
+ if ( elem && elem.parentNode ) {
+ // Inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return typeof rootjQuery.ready !== "undefined" ?
+ rootjQuery.ready( selector ) :
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.extend({
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+ },
+
+ sibling: function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+ }
+});
+
+jQuery.fn.extend({
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter(function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && (pos ?
+ pos.index(cur) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector(cur, selectors)) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.unique(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+});
+
+function sibling( cur, dir ) {
+ while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.unique( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+});
+var rnotwhite = (/\S+/g);
+
+
+
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
+
+ var // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // Flag to know if list is currently firing
+ firing,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+ add( arg );
+ }
+ });
+ })( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away
+ } else if ( memory ) {
+ firingStart = start;
+ fire( memory );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+ // Handle firing indexes
+ if ( firing ) {
+ if ( index <= firingLength ) {
+ firingLength--;
+ }
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ });
+ }
+ return this;
+ },
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ firingLength = 0;
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( list && ( !fired || stack ) ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ if ( firing ) {
+ stack.push( args );
+ } else {
+ fire( args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var tuples = [
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[1] ](function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .done( newDefer.resolve )
+ .fail( newDefer.reject )
+ .progress( newDefer.notify );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+ }
+ });
+ });
+ fns = null;
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[1] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(function() {
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[0] ] = function() {
+ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[0] + "With" ] = list.fireWith;
+ });
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // Add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject )
+ .progress( updateFunc( i, progressContexts, progressValues ) );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // If we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+});
+
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+};
+
+jQuery.extend({
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ jQuery( document ).off( "ready" );
+ }
+ }
+});
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed, false );
+ window.removeEventListener( "load", completed, false );
+ jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
+ // We once tried to use readyState "interactive" here, but it caused issues like the one
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ setTimeout( jQuery.ready );
+
+ } else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed, false );
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ len ? fn( elems[0], key ) : emptyGet;
+};
+
+
+/**
+ * Determines whether an object can have data
+ */
+jQuery.acceptData = function( owner ) {
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ /* jshint -W018 */
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+function Data() {
+ // Support: Android<4,
+ // Old WebKit does not have Object.preventExtensions/freeze method,
+ // return new empty object instead with no [[set]] accessor
+ Object.defineProperty( this.cache = {}, 0, {
+ get: function() {
+ return {};
+ }
+ });
+
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+Data.accepts = jQuery.acceptData;
+
+Data.prototype = {
+ key: function( owner ) {
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return the key for a frozen object.
+ if ( !Data.accepts( owner ) ) {
+ return 0;
+ }
+
+ var descriptor = {},
+ // Check if the owner object already has a cache key
+ unlock = owner[ this.expando ];
+
+ // If not, create one
+ if ( !unlock ) {
+ unlock = Data.uid++;
+
+ // Secure it in a non-enumerable, non-writable property
+ try {
+ descriptor[ this.expando ] = { value: unlock };
+ Object.defineProperties( owner, descriptor );
+
+ // Support: Android<4
+ // Fallback to a less secure definition
+ } catch ( e ) {
+ descriptor[ this.expando ] = unlock;
+ jQuery.extend( owner, descriptor );
+ }
+ }
+
+ // Ensure the cache object
+ if ( !this.cache[ unlock ] ) {
+ this.cache[ unlock ] = {};
+ }
+
+ return unlock;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ // There may be an unlock assigned to this node,
+ // if there is no entry for this "owner", create one inline
+ // and set the unlock as though an owner entry had always existed
+ unlock = this.key( owner ),
+ cache = this.cache[ unlock ];
+
+ // Handle: [ owner, key, value ] args
+ if ( typeof data === "string" ) {
+ cache[ data ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+ // Fresh assignments by object are shallow copied
+ if ( jQuery.isEmptyObject( cache ) ) {
+ jQuery.extend( this.cache[ unlock ], data );
+ // Otherwise, copy the properties one-by-one to the cache object
+ } else {
+ for ( prop in data ) {
+ cache[ prop ] = data[ prop ];
+ }
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ // Either a valid cache is found, or will be created.
+ // New caches will be created and the unlock returned,
+ // allowing direct access to the newly created
+ // empty data object. A valid owner object must be provided.
+ var cache = this.cache[ this.key( owner ) ];
+
+ return key === undefined ?
+ cache : cache[ key ];
+ },
+ access: function( owner, key, value ) {
+ var stored;
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ((key && typeof key === "string") && value === undefined) ) {
+
+ stored = this.get( owner, key );
+
+ return stored !== undefined ?
+ stored : this.get( owner, jQuery.camelCase(key) );
+ }
+
+ // [*]When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i, name, camel,
+ unlock = this.key( owner ),
+ cache = this.cache[ unlock ];
+
+ if ( key === undefined ) {
+ this.cache[ unlock ] = {};
+
+ } else {
+ // Support array or space separated string of keys
+ if ( jQuery.isArray( key ) ) {
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = key.concat( key.map( jQuery.camelCase ) );
+ } else {
+ camel = jQuery.camelCase( key );
+ // Try the string as a key before any manipulation
+ if ( key in cache ) {
+ name = [ key, camel ];
+ } else {
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ name = camel;
+ name = name in cache ?
+ [ name ] : ( name.match( rnotwhite ) || [] );
+ }
+ }
+
+ i = name.length;
+ while ( i-- ) {
+ delete cache[ name[ i ] ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ return !jQuery.isEmptyObject(
+ this.cache[ owner[ this.expando ] ] || {}
+ );
+ },
+ discard: function( owner ) {
+ if ( owner[ this.expando ] ) {
+ delete this.cache[ owner[ this.expando ] ];
+ }
+ }
+};
+var data_priv = new Data();
+
+var data_user = new Data();
+
+
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ data_user.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend({
+ hasData: function( elem ) {
+ return data_user.hasData( elem ) || data_priv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return data_user.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ data_user.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to data_priv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return data_priv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ data_priv.remove( elem, name );
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = data_user.get( elem );
+
+ if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE11+
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.slice(5) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ data_priv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ data_user.set( this, key );
+ });
+ }
+
+ return access( this, function( value ) {
+ var data,
+ camelKey = jQuery.camelCase( key );
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+ // Attempt to get data from the cache
+ // with the key as-is
+ data = data_user.get( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to get data from the cache
+ // with the key camelized
+ data = data_user.get( elem, camelKey );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, camelKey, undefined );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ this.each(function() {
+ // First, attempt to store a copy or reference of any
+ // data that might've been store with a camelCased key.
+ var data = data_user.get( this, camelKey );
+
+ // For HTML5 data-* attribute interop, we have to
+ // store property names with dashes in a camelCase form.
+ // This might not apply to all properties...*
+ data_user.set( this, camelKey, value );
+
+ // *... In the case of properties that might _actually_
+ // have dashes, we need to also store a copy of that
+ // unchanged property.
+ if ( key.indexOf("-") !== -1 && data !== undefined ) {
+ data_user.set( this, key, value );
+ }
+ });
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ data_user.remove( this, key );
+ });
+ }
+});
+
+
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = data_priv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray( data ) ) {
+ queue = data_priv.access( elem, type, jQuery.makeArray(data) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return data_priv.get( elem, key ) || data_priv.access( elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ data_priv.remove( elem, [ type + "queue", key ] );
+ })
+ });
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = data_priv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+});
+var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHidden = function( elem, el ) {
+ // isHidden might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+ };
+
+var rcheckableType = (/^(?:checkbox|radio)$/i);
+
+
+
+(function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Safari<=5.1
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Safari<=5.1, Android<4.2
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE<=11+
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+})();
+var strundefined = typeof undefined;
+
+
+
+support.focusinBubbles = "onfocusin" in window;
+
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = data_priv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !(events = elemData.events) ) {
+ events = elemData.events = {};
+ }
+ if ( !(eventHandle = elemData.handle) ) {
+ eventHandle = elemData.handle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !(handlers = events[ type ]) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = data_priv.hasData( elem ) && data_priv.get( elem );
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ delete elemData.handle;
+ data_priv.remove( elem, "events" );
+ }
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+
+ var i, cur, tmp, bubbleType, ontype, handle, special,
+ eventPath = [ elem || document ],
+ type = hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf(":") < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === (elem.ownerDocument || document) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
+ event.result = handle.apply( cur, data );
+ if ( event.result === false ) {
+ event.preventDefault();
+ }
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+ jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
+
+ var i, j, ret, matched, handleObj,
+ handlerQueue = [],
+ args = slice.call( arguments ),
+ handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+ // a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( (event.result = ret) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, matches, sel, handleObj,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ // Black-hole SVG <use> instance trees (#13180)
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.disabled !== true || event.type !== "click" ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) >= 0 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, handlers: matches });
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+ }
+
+ return handlerQueue;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var eventDoc, doc, body,
+ button = original.button;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop, copy,
+ type = event.type,
+ originalEvent = event,
+ fixHook = this.fixHooks[ type ];
+
+ if ( !fixHook ) {
+ this.fixHooks[ type ] = fixHook =
+ rmouseEvent.test( type ) ? this.mouseHooks :
+ rkeyEvent.test( type ) ? this.keyHooks :
+ {};
+ }
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = new jQuery.Event( originalEvent );
+
+ i = copy.length;
+ while ( i-- ) {
+ prop = copy[ i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Support: Cordova 2.5 (WebKit) (#13255)
+ // All events should have a target; Cordova deviceready doesn't
+ if ( !event.target ) {
+ event.target = document;
+ }
+
+ // Support: Safari 6.0+, Chrome<28
+ // Target should not be a text node (#504, #13143)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ this.focus();
+ return false;
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+ // Support: Android<4.0
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e && e.preventDefault ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e && e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && e.stopImmediatePropagation ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// Support: Chrome 15+
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// Support: Firefox, Chrome, Safari
+// Create "bubbling" focus and blur events
+if ( !support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler on the document while someone wants focusin/focusout
+ var handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ var doc = this.ownerDocument || this,
+ attaches = data_priv.access( doc, fix );
+
+ if ( !attaches ) {
+ doc.addEventListener( orig, handler, true );
+ }
+ data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
+ },
+ teardown: function() {
+ var doc = this.ownerDocument || this,
+ attaches = data_priv.access( doc, fix ) - 1;
+
+ if ( !attaches ) {
+ doc.removeEventListener( orig, handler, true );
+ data_priv.remove( doc, fix );
+
+ } else {
+ data_priv.access( doc, fix, attaches );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[0];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+});
+
+
+var
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ rtagName = /<([\w:]+)/,
+ rhtml = /<|&#?\w+;/,
+ rnoInnerhtml = /<(?:script|style|link)/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /^$|\/(?:java|ecma)script/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+ // We have to close these tags to support XHTML (#13200)
+ wrapMap = {
+
+ // Support: IE9
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+ thead: [ 1, "<table>", "</table>" ],
+ col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ _default: [ 0, "", "" ]
+ };
+
+// Support: IE9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// Support: 1.x compatibility
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+ return jQuery.nodeName( elem, "table" ) &&
+ jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
+
+ elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+ elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+
+ if ( match ) {
+ elem.type = match[ 1 ];
+ } else {
+ elem.removeAttribute("type");
+ }
+
+ return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ data_priv.set(
+ elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+function cloneCopyEvent( src, dest ) {
+ var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // 1. Copy private data: events, handlers, etc.
+ if ( data_priv.hasData( src ) ) {
+ pdataOld = data_priv.access( src );
+ pdataCur = data_priv.set( dest, pdataOld );
+ events = pdataOld.events;
+
+ if ( events ) {
+ delete pdataCur.handle;
+ pdataCur.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+ }
+
+ // 2. Copy user data
+ if ( data_user.hasData( src ) ) {
+ udataOld = data_user.access( src );
+ udataCur = jQuery.extend( {}, udataOld );
+
+ data_user.set( dest, udataCur );
+ }
+}
+
+function getAll( context, tag ) {
+ var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
+ context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
+ [];
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], ret ) :
+ ret;
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+ var nodeName = dest.nodeName.toLowerCase();
+
+ // Fails to persist the checked state of a cloned checkbox or radio button.
+ if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+ dest.checked = src.checked;
+
+ // Fails to return the selected option to the default selected state when cloning options
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var i, l, srcElements, destElements,
+ clone = elem.cloneNode( true ),
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ // Fix IE cloning issues
+ if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+ !jQuery.isXMLDoc( elem ) ) {
+
+ // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ fixInput( srcElements[ i ], destElements[ i ] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ // Return the cloned set
+ return clone;
+ },
+
+ buildFragment: function( elems, context, scripts, selection ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+ // Support: QtWebKit, PhantomJS
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement("div") );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: QtWebKit, PhantomJS
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( (elem = nodes[ i++ ]) ) {
+
+ // #4087 - If origin and destination elements are the same, and this is
+ // that element, do not do anything
+ if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( (elem = tmp[ j++ ]) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+ },
+
+ cleanData: function( elems ) {
+ var data, elem, type, key,
+ special = jQuery.event.special,
+ i = 0;
+
+ for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
+ if ( jQuery.acceptData( elem ) ) {
+ key = elem[ data_priv.expando ];
+
+ if ( key && (data = data_priv.cache[ key ]) ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+ if ( data_priv.cache[ key ] ) {
+ // Discard any remaining `private` data
+ delete data_priv.cache[ key ];
+ }
+ }
+ }
+ // Discard any remaining `user` data
+ delete data_user.cache[ elem[ data_user.expando ] ];
+ }
+ }
+});
+
+jQuery.fn.extend({
+ text: function( value ) {
+ return access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().each(function() {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ this.textContent = value;
+ }
+ });
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ });
+ },
+
+ after: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ });
+ },
+
+ remove: function( selector, keepData /* Internal Use Only */ ) {
+ var elem,
+ elems = selector ? jQuery.filter( selector, this ) : this,
+ i = 0;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem ) );
+ }
+
+ if ( elem.parentNode ) {
+ if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+ setGlobalEval( getAll( elem, "script" ) );
+ }
+ elem.parentNode.removeChild( elem );
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; (elem = this[i]) != null; i++ ) {
+ if ( elem.nodeType === 1 ) {
+
+ // Prevent memory leaks
+ jQuery.cleanData( getAll( elem, false ) );
+
+ // Remove any remaining nodes
+ elem.textContent = "";
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map(function() {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ return access( this, function( value ) {
+ var elem = this[ 0 ] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined && elem.nodeType === 1 ) {
+ return elem.innerHTML;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+ value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+ try {
+ for ( ; i < l; i++ ) {
+ elem = this[ i ] || {};
+
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch( e ) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var arg = arguments[ 0 ];
+
+ // Make the changes, replacing each context element with the new content
+ this.domManip( arguments, function( elem ) {
+ arg = this.parentNode;
+
+ jQuery.cleanData( getAll( this ) );
+
+ if ( arg ) {
+ arg.replaceChild( elem, this );
+ }
+ });
+
+ // Force removal if there was no new content (e.g., from empty arguments)
+ return arg && (arg.length || arg.nodeType) ? this : this.remove();
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, callback ) {
+
+ // Flatten any nested arrays
+ args = concat.apply( [], args );
+
+ var fragment, first, scripts, hasScripts, node, doc,
+ i = 0,
+ l = this.length,
+ set = this,
+ iNoClone = l - 1,
+ value = args[ 0 ],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction ||
+ ( l > 1 && typeof value === "string" &&
+ !support.checkClone && rchecked.test( value ) ) ) {
+ return this.each(function( index ) {
+ var self = set.eq( index );
+ if ( isFunction ) {
+ args[ 0 ] = value.call( this, index, self.html() );
+ }
+ self.domManip( args, callback );
+ });
+ }
+
+ if ( l ) {
+ fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ if ( first ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+ // Support: QtWebKit
+ // jQuery.merge because push.apply(_, arraylike) throws
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( this[ i ], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+ // Optional AJAX dependency, but won't run scripts if not present
+ if ( jQuery._evalUrl ) {
+ jQuery._evalUrl( node.src );
+ }
+ } else {
+ jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return this;
+ }
+});
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1,
+ i = 0;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone( true );
+ jQuery( insert[ i ] )[ original ]( elems );
+
+ // Support: QtWebKit
+ // .get() because push.apply(_, arraylike) throws
+ push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+
+var iframe,
+ elemdisplay = {};
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+ var style,
+ elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+ // getDefaultComputedStyle might be reliably used only on attached element
+ display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
+
+ // Use of this method is a temporary fix (more like optimization) until something better comes along,
+ // since it was removed from specification and supported only in FF
+ style.display : jQuery.css( elem[ 0 ], "display" );
+
+ // We don't have any data stored on the element,
+ // so use "detach" method as fast way to get rid of the element
+ elem.detach();
+
+ return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+ var doc = document,
+ display = elemdisplay[ nodeName ];
+
+ if ( !display ) {
+ display = actualDisplay( nodeName, doc );
+
+ // If the simple way fails, read from inside an iframe
+ if ( display === "none" || !display ) {
+
+ // Use the already-created iframe if possible
+ iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
+
+ // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+ doc = iframe[ 0 ].contentDocument;
+
+ // Support: IE
+ doc.write();
+ doc.close();
+
+ display = actualDisplay( nodeName, doc );
+ iframe.detach();
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return display;
+}
+var rmargin = (/^margin/);
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+ // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
+ // IE throws on elements created in popups
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+ if ( elem.ownerDocument.defaultView.opener ) {
+ return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+ }
+
+ return window.getComputedStyle( elem, null );
+ };
+
+
+
+function curCSS( elem, name, computed ) {
+ var width, minWidth, maxWidth, ret,
+ style = elem.style;
+
+ computed = computed || getStyles( elem );
+
+ // Support: IE9
+ // getPropertyValue is only needed for .css('filter') (#12537)
+ if ( computed ) {
+ ret = computed.getPropertyValue( name ) || computed[ name ];
+ }
+
+ if ( computed ) {
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // Support: iOS < 6
+ // A tribute to the "awesome hack by Dean Edwards"
+ // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+ // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret !== undefined ?
+ // Support: IE
+ // IE returns zIndex value as an integer.
+ ret + "" :
+ ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+ // Define the hook, we'll check on the first run if it's really needed.
+ return {
+ get: function() {
+ if ( conditionFn() ) {
+ // Hook not needed (or it's not possible to use it due
+ // to missing dependency), remove it.
+ delete this.get;
+ return;
+ }
+
+ // Hook needed; redefine it so that the support test is not executed again.
+ return (this.get = hookFn).apply( this, arguments );
+ }
+ };
+}
+
+
+(function() {
+ var pixelPositionVal, boxSizingReliableVal,
+ docElem = document.documentElement,
+ container = document.createElement( "div" ),
+ div = document.createElement( "div" );
+
+ if ( !div.style ) {
+ return;
+ }
+
+ // Support: IE9-11+
+ // Style of cloned element affects source element cloned (#8908)
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
+ "position:absolute";
+ container.appendChild( div );
+
+ // Executing both pixelPosition & boxSizingReliable tests require only one layout
+ // so they're executed at the same time to save the second computation.
+ function computePixelPositionAndBoxSizingReliable() {
+ div.style.cssText =
+ // Support: Firefox<29, Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
+ "box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
+ "border:1px;padding:1px;width:4px;position:absolute";
+ div.innerHTML = "";
+ docElem.appendChild( container );
+
+ var divStyle = window.getComputedStyle( div, null );
+ pixelPositionVal = divStyle.top !== "1%";
+ boxSizingReliableVal = divStyle.width === "4px";
+
+ docElem.removeChild( container );
+ }
+
+ // Support: node.js jsdom
+ // Don't assume that getComputedStyle is a property of the global object
+ if ( window.getComputedStyle ) {
+ jQuery.extend( support, {
+ pixelPosition: function() {
+
+ // This test is executed only once but we still do memoizing
+ // since we can use the boxSizingReliable pre-computing.
+ // No need to check if the test was already performed, though.
+ computePixelPositionAndBoxSizingReliable();
+ return pixelPositionVal;
+ },
+ boxSizingReliable: function() {
+ if ( boxSizingReliableVal == null ) {
+ computePixelPositionAndBoxSizingReliable();
+ }
+ return boxSizingReliableVal;
+ },
+ reliableMarginRight: function() {
+
+ // Support: Android 2.3
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. (#3333)
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // This support function is only executed once so no memoizing is needed.
+ var ret,
+ marginDiv = div.appendChild( document.createElement( "div" ) );
+
+ // Reset CSS: box-sizing; display; margin; border; padding
+ marginDiv.style.cssText = div.style.cssText =
+ // Support: Firefox<29, Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
+ "box-sizing:content-box;display:block;margin:0;border:0;padding:0";
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+ docElem.appendChild( container );
+
+ ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
+
+ docElem.removeChild( container );
+ div.removeChild( marginDiv );
+
+ return ret;
+ }
+ });
+ }
+})();
+
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+jQuery.swap = function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+
+var
+ // Swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+ // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
+ rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: "0",
+ fontWeight: "400"
+ },
+
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+ // Shortcut for names that are not vendor prefixed
+ if ( name in style ) {
+ return name;
+ }
+
+ // Check for vendor prefixed names
+ var capName = name[0].toUpperCase() + name.slice(1),
+ origName = name,
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in style ) {
+ return name;
+ }
+ }
+
+ return origName;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+ var matches = rnumsplit.exec( value );
+ return matches ?
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+ // Both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // At this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+ // At this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // At this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var valueIsBorderBox = true,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ styles = getStyles( elem ),
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // Some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, styles );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
+ // Check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox &&
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // Use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+function showHide( elements, show ) {
+ var display, elem, hidden,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ values[ index ] = data_priv.get( elem, "olddisplay" );
+ display = elem.style.display;
+ if ( show ) {
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !values[ index ] && display === "none" ) {
+ elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( elem.style.display === "" && isHidden( elem ) ) {
+ values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+ }
+ } else {
+ hidden = isHidden( elem );
+
+ if ( display !== "none" || !hidden ) {
+ data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( index = 0; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+ elem.style.display = show ? values[ index ] || "" : "none";
+ }
+ }
+
+ return elements;
+}
+
+jQuery.extend({
+
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "columnCount": true,
+ "fillOpacity": true,
+ "flexGrow": true,
+ "flexShrink": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ "float": "cssFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+ // Gets hook for the prefixed version, then unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // Convert "+=" or "-=" to relative numbers (#7345)
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that null and NaN values aren't set (#7116)
+ if ( value == null || value !== value ) {
+ return;
+ }
+
+ // If a number, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // Support: IE9-11+
+ // background-* props affect original clone's values
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+ style[ name ] = value;
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var val, num, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+ // Try prefixed name followed by the unprefixed name
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ // Convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Make numeric if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+ }
+ return val;
+ }
+});
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+
+ // Certain elements can have dimension info if we invisibly show them
+ // but it must have a current display style that would benefit
+ return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
+ jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ }) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var styles = extra && getStyles( elem );
+ return setPositiveNumber( elem, value, extra ?
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ ) : 0
+ );
+ }
+ };
+});
+
+// Support: Android 2.3
+jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
+ function( elem, computed ) {
+ if ( computed ) {
+ return jQuery.swap( elem, { "display": "inline-block" },
+ curCSS, [ elem, "marginRight" ] );
+ }
+ }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // Assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+});
+
+jQuery.fn.extend({
+ css: function( name, value ) {
+ return access( this, function( elem, name, value ) {
+ var styles, len,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ },
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each(function() {
+ if ( isHidden( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ });
+ }
+});
+
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || "swing";
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ if ( tween.elem[ tween.prop ] != null &&
+ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // Passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails.
+ // Simple values such as "10px" are parsed to Float;
+ // complex values such as "rotate(1rad)" are returned as-is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+ // Use step hook for back compat.
+ // Use cssHook if its there.
+ // Use .style if available and use plain properties where available.
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE9
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p * Math.PI ) / 2;
+ }
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+ fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
+ rrun = /queueHooks$/,
+ animationPrefilters = [ defaultPrefilter ],
+ tweeners = {
+ "*": [ function( prop, value ) {
+ var tween = this.createTween( prop, value ),
+ target = tween.cur(),
+ parts = rfxnum.exec( value ),
+ unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+ rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+ scale = 1,
+ maxIterations = 20;
+
+ if ( start && start[ 3 ] !== unit ) {
+ // Trust units reported by jQuery.css
+ unit = unit || start[ 3 ];
+
+ // Make sure we update the tween properties later on
+ parts = parts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ start = +target || 1;
+
+ do {
+ // If previous iteration zeroed out, double until we get *something*.
+ // Use string for doubling so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur(),
+ // break the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+ }
+
+ // Update tween properties
+ if ( parts ) {
+ start = tween.start = +start || +target || 0;
+ tween.unit = unit;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[ 1 ] ?
+ start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+ +parts[ 2 ];
+ }
+
+ return tween;
+ } ]
+ };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout(function() {
+ fxNow = undefined;
+ });
+ return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ i = 0,
+ attrs = { height: type };
+
+ // If we include width, step value is 1 to do all cssExpand values,
+ // otherwise step value is 2 to skip over Left and Right
+ includeWidth = includeWidth ? 1 : 0;
+ for ( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+ // We're done with this property
+ return tween;
+ }
+ }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+ /* jshint validthis: true */
+ var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = data_priv.get( elem, "fxshow" );
+
+ // Handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always(function() {
+ // Ensure the complete handler is called before this completes
+ anim.always(function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+
+ // Height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE9-10 do not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ display = jQuery.css( elem, "display" );
+
+ // Test default display if display is currently "none"
+ checkDisplay = display === "none" ?
+ data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+ if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
+ style.display = "inline-block";
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ anim.always(function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ });
+ }
+
+ // show/hide pass
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+
+ // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+ hidden = true;
+ } else {
+ continue;
+ }
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+
+ // Any non-fx value stops us from restoring the original display value
+ } else {
+ display = undefined;
+ }
+ }
+
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = data_priv.access( elem, "fxshow", {} );
+ }
+
+ // Store state if its toggle - enables .stop().toggle() to "reverse"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done(function() {
+ jQuery( elem ).hide();
+ });
+ }
+ anim.done(function() {
+ var prop;
+
+ data_priv.remove( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ });
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+
+ // If this is a noop like .hide().hide(), restore an overwritten display value
+ } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
+ style.display = display;
+ }
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // Not quite $.extend, this won't overwrite existing keys.
+ // Reusing 'index' because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = animationPrefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+ // Don't match elem in the :animated selector
+ delete tick.elem;
+ }),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+ // Support: Android 2.3
+ // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise({
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, { specialEasing: {} }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+ // If we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // Resolve when we played the last frame; otherwise, reject
+ if ( gotoEnd ) {
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ }),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ })
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.split(" ");
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ tweeners[ prop ] = tweeners[ prop ] || [];
+ tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ animationPrefilters.unshift( callback );
+ } else {
+ animationPrefilters.push( callback );
+ }
+ }
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // Normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.fn.extend({
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // Show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // Animate to the value specified
+ .end().animate({ opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || data_priv.get( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = data_priv.get( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Start the next in the queue if the last step wasn't forced.
+ // Timers currently will call their complete callbacks, which
+ // will dequeue but only if they were gotoEnd.
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each(function() {
+ var index,
+ data = data_priv.get( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // Enable finishing flag on private data
+ data.finish = true;
+
+ // Empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // Look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // Turn off finishing flag
+ delete data.finish;
+ });
+ }
+});
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+ var timer,
+ i = 0,
+ timers = jQuery.timers;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ jQuery.timers.push( timer );
+ if ( timer() ) {
+ jQuery.fx.start();
+ } else {
+ jQuery.timers.pop();
+ }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ clearInterval( timerId );
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+};
+
+
+(function() {
+ var input = document.createElement( "input" ),
+ select = document.createElement( "select" ),
+ opt = select.appendChild( document.createElement( "option" ) );
+
+ input.type = "checkbox";
+
+ // Support: iOS<=5.1, Android<=4.2+
+ // Default value for a checkbox should be "on"
+ support.checkOn = input.value !== "";
+
+ // Support: IE<=11+
+ // Must access selectedIndex to make default options select
+ support.optSelected = opt.selected;
+
+ // Support: Android<=2.3
+ // Options inside disabled selects are incorrectly marked as disabled
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Support: IE<=11+
+ // An input loses its value after becoming a radio
+ input = document.createElement( "input" );
+ input.value = "t";
+ input.type = "radio";
+ support.radioValue = input.value === "t";
+})();
+
+
+var nodeHook, boolHook,
+ attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ }
+});
+
+jQuery.extend({
+ attr: function( elem, name, value ) {
+ var hooks, ret,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === strundefined ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+
+ } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name, propName,
+ i = 0,
+ attrNames = value && value.match( rnotwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( (name = attrNames[i++]) ) {
+ propName = jQuery.propFix[ name ] || name;
+
+ // Boolean attributes get special treatment (#10870)
+ if ( jQuery.expr.match.bool.test( name ) ) {
+ // Set corresponding property to false
+ elem[ propName ] = false;
+ }
+
+ elem.removeAttribute( name );
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !support.radioValue && value === "radio" &&
+ jQuery.nodeName( elem, "input" ) ) {
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ }
+});
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = attrHandle[ name ] || jQuery.find.attr;
+
+ attrHandle[ name ] = function( elem, name, isXML ) {
+ var ret, handle;
+ if ( !isXML ) {
+ // Avoid an infinite loop by temporarily removing this function from the getter
+ handle = attrHandle[ name ];
+ attrHandle[ name ] = ret;
+ ret = getter( elem, name, isXML ) != null ?
+ name.toLowerCase() :
+ null;
+ attrHandle[ name ] = handle;
+ }
+ return ret;
+ };
+});
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i;
+
+jQuery.fn.extend({
+ prop: function( name, value ) {
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ return this.each(function() {
+ delete this[ jQuery.propFix[ name ] || name ];
+ });
+ }
+});
+
+jQuery.extend({
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // Don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+ ret :
+ ( elem[ name ] = value );
+
+ } else {
+ return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+ ret :
+ elem[ name ];
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
+ elem.tabIndex :
+ -1;
+ }
+ }
+ }
+});
+
+if ( !support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+ if ( parent && parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ return null;
+ }
+ };
+}
+
+jQuery.each([
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+
+
+
+var rclass = /[\t\r\n\f]/g;
+
+jQuery.fn.extend({
+ addClass: function( value ) {
+ var classes, elem, cur, clazz, j, finalValue,
+ proceed = typeof value === "string" && value,
+ i = 0,
+ len = this.length;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call( this, j, this.className ) );
+ });
+ }
+
+ if ( proceed ) {
+ // The disjunction here is for better compressibility (see removeClass)
+ classes = ( value || "" ).match( rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ " "
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+
+ // only assign if different to avoid unneeded rendering.
+ finalValue = jQuery.trim( cur );
+ if ( elem.className !== finalValue ) {
+ elem.className = finalValue;
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, clazz, j, finalValue,
+ proceed = arguments.length === 0 || typeof value === "string" && value,
+ i = 0,
+ len = this.length;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, this.className ) );
+ });
+ }
+ if ( proceed ) {
+ classes = ( value || "" ).match( rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ ""
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = value ? jQuery.trim( cur ) : "";
+ if ( elem.className !== finalValue ) {
+ elem.className = finalValue;
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // Toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ classNames = value.match( rnotwhite ) || [];
+
+ while ( (className = classNames[ i++ ]) ) {
+ // Check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( type === strundefined || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ data_priv.set( this, "__className__", this.className );
+ }
+
+ // If the element has a class name or if we're passed `false`,
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+});
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend({
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // Handle most common string cases
+ ret.replace(rreturn, "") :
+ // Handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+
+ } else if ( typeof val === "number" ) {
+ val += "";
+
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map( val, function( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+ // Support: IE10-11+
+ // option.text throws exceptions (#14686, #14858)
+ jQuery.trim( jQuery.text( elem ) );
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // IE6-9 doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+ if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
+ optionSet = true;
+ }
+ }
+
+ // Force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ }
+});
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ };
+ if ( !support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ };
+ }
+});
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+});
+
+jQuery.fn.extend({
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+ }
+});
+
+
+var nonce = jQuery.now();
+
+var rquery = (/\?/);
+
+
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+ return JSON.parse( data + "" );
+};
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+ var xml, tmp;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+
+ // Support: IE9
+ try {
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data, "text/xml" );
+ } catch ( e ) {
+ xml = undefined;
+ }
+
+ if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+};
+
+
+var
+ rhash = /#.*$/,
+ rts = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat( "*" ),
+
+ // Document location
+ ajaxLocation = window.location.href,
+
+ // Segment location into parts
+ ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+ // For each dataType in the dataTypeExpression
+ while ( (dataType = dataTypes[i++]) ) {
+ // Prepend if requested
+ if ( dataType[0] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+ // Otherwise append
+ } else {
+ (structure[ dataType ] = structure[ dataType ] || []).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ });
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var ct, type, finalDataType, firstDataType,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while ( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s[ "throws" ] ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ type: "GET",
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var transport,
+ // URL without anti-cache param
+ cacheURL,
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks("once memory"),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // The jqXHR state
+ state = 0,
+ // Default abort message
+ strAbort = "canceled",
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( (match = rheaders.exec( responseHeadersString )) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ var lname = name.toLowerCase();
+ if ( !state ) {
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( state < 2 ) {
+ for ( code in map ) {
+ // Lazy-add the new callback in a way that preserves old ones
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ } else {
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR ).complete = completeDeferred.add;
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (prefilters might expect it)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
+ .replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+ // A cross-domain request is in order when we have a protocol:host:port mismatch
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+ fireGlobals = jQuery.event && s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger("ajaxStart");
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ cacheURL = s.url;
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+ s.url = rts.test( cacheURL ) ?
+
+ // If there is already a '_' parameter, set its value
+ cacheURL.replace( rts, "$1_=" + nonce++ ) :
+
+ // Otherwise add one to the end
+ cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
+ }
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // Aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout(function() {
+ jqXHR.abort("timeout");
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader("etag");
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+ // Extract error from statusText and normalize for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger("ajaxStop");
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // Shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ });
+ };
+});
+
+
+jQuery._evalUrl = function( url ) {
+ return jQuery.ajax({
+ url: url,
+ type: "GET",
+ dataType: "script",
+ async: false,
+ global: false,
+ "throws": true
+ });
+};
+
+
+jQuery.fn.extend({
+ wrapAll: function( html ) {
+ var wrap;
+
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[ 0 ] ) {
+
+ // The elements to wrap the target around
+ wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+ if ( this[ 0 ].parentNode ) {
+ wrap.insertBefore( this[ 0 ] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstElementChild ) {
+ elem = elem.firstElementChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function( i ) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ }
+});
+
+
+jQuery.expr.filters.hidden = function( elem ) {
+ // Support: Opera <= 12.12
+ // Opera reports offsetWidths and offsetHeights less than zero on some elements
+ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
+};
+jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+};
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+};
+
+jQuery.fn.extend({
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map(function() {
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ })
+ .filter(function() {
+ var type = this.type;
+
+ // Use .is( ":disabled" ) so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !rcheckableType.test( type ) );
+ })
+ .map(function( i, elem ) {
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val ) {
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+
+jQuery.ajaxSettings.xhr = function() {
+ try {
+ return new XMLHttpRequest();
+ } catch( e ) {}
+};
+
+var xhrId = 0,
+ xhrCallbacks = {},
+ xhrSuccessStatus = {
+ // file protocol always yields status code 0, assume 200
+ 0: 200,
+ // Support: IE9
+ // #1450: sometimes IE returns 1223 when it should be 204
+ 1223: 204
+ },
+ xhrSupported = jQuery.ajaxSettings.xhr();
+
+// Support: IE9
+// Open requests must be manually aborted on unload (#5280)
+// See https://support.microsoft.com/kb/2856746 for more info
+if ( window.attachEvent ) {
+ window.attachEvent( "onunload", function() {
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]();
+ }
+ });
+}
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport(function( options ) {
+ var callback;
+
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( support.cors || xhrSupported && !options.crossDomain ) {
+ return {
+ send: function( headers, complete ) {
+ var i,
+ xhr = options.xhr(),
+ id = ++xhrId;
+
+ xhr.open( options.type, options.url, options.async, options.username, options.password );
+
+ // Apply custom fields if provided
+ if ( options.xhrFields ) {
+ for ( i in options.xhrFields ) {
+ xhr[ i ] = options.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( options.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( options.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !options.crossDomain && !headers["X-Requested-With"] ) {
+ headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ // Set headers
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+
+ // Callback
+ callback = function( type ) {
+ return function() {
+ if ( callback ) {
+ delete xhrCallbacks[ id ];
+ callback = xhr.onload = xhr.onerror = null;
+
+ if ( type === "abort" ) {
+ xhr.abort();
+ } else if ( type === "error" ) {
+ complete(
+ // file: protocol always yields status 0; see #8605, #14207
+ xhr.status,
+ xhr.statusText
+ );
+ } else {
+ complete(
+ xhrSuccessStatus[ xhr.status ] || xhr.status,
+ xhr.statusText,
+ // Support: IE9
+ // Accessing binary-data responseText throws an exception
+ // (#11426)
+ typeof xhr.responseText === "string" ? {
+ text: xhr.responseText
+ } : undefined,
+ xhr.getAllResponseHeaders()
+ );
+ }
+ }
+ };
+ };
+
+ // Listen to events
+ xhr.onload = callback();
+ xhr.onerror = callback("error");
+
+ // Create the abort callback
+ callback = xhrCallbacks[ id ] = callback("abort");
+
+ try {
+ // Do send the request (this may raise an exception)
+ xhr.send( options.hasContent && options.data || null );
+ } catch ( e ) {
+ // #14683: Only rethrow if this hasn't been notified as an error yet
+ if ( callback ) {
+ throw e;
+ }
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /(?:java|ecma)script/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+ var script, callback;
+ return {
+ send: function( _, complete ) {
+ script = jQuery("<script>").prop({
+ async: true,
+ charset: s.scriptCharset,
+ src: s.url
+ }).on(
+ "load error",
+ callback = function( evt ) {
+ script.remove();
+ callback = null;
+ if ( evt ) {
+ complete( evt.type === "error" ? 404 : 200, evt.type );
+ }
+ }
+ );
+ document.head.appendChild( script[ 0 ] );
+ },
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+});
+
+
+
+
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always(function() {
+ // Restore preexisting value
+ window[ callbackName ] = overwritten;
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+ // make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ });
+
+ // Delegate to script
+ return "script";
+ }
+});
+
+
+
+
+// data: string of html
+// context (optional): If specified, the fragment will be created in this context, defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
+
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
+
+ if ( scripts && scripts.length ) {
+ jQuery( scripts ).remove();
+ }
+
+ return jQuery.merge( [], parsed.childNodes );
+};
+
+
+// Keep a copy of the old load method
+var _load = jQuery.fn.load;
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+ }
+
+ var selector, type, response,
+ self = this,
+ off = url.indexOf(" ");
+
+ if ( off >= 0 ) {
+ selector = jQuery.trim( url.slice( off ) );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax({
+ url: url,
+
+ // if "type" variable is undefined, then "GET" method will be used
+ type: type,
+ dataType: "html",
+ data: params
+ }).done(function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ }).complete( callback && function( jqXHR, status ) {
+ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+ });
+ }
+
+ return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
+ jQuery.fn[ type ] = function( fn ) {
+ return this.on( type, fn );
+ };
+});
+
+
+
+
+jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+};
+
+
+
+
+var docElem = window.document.documentElement;
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+ setOffset: function( elem, options, i ) {
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+ position = jQuery.css( elem, "position" ),
+ curElem = jQuery( elem ),
+ props = {};
+
+ // Set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ curOffset = curElem.offset();
+ curCSSTop = jQuery.css( elem, "top" );
+ curCSSLeft = jQuery.css( elem, "left" );
+ calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+ ( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
+
+ // Need to be able to calculate position if either
+ // top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+jQuery.fn.extend({
+ offset: function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var docElem, win,
+ elem = this[ 0 ],
+ box = { top: 0, left: 0 },
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ // Support: BlackBerry 5, iOS 3 (original iPhone)
+ // If we don't have gBCR, just use 0,0 rather than error
+ if ( typeof elem.getBoundingClientRect !== strundefined ) {
+ box = elem.getBoundingClientRect();
+ }
+ win = getWindow( doc );
+ return {
+ top: box.top + win.pageYOffset - docElem.clientTop,
+ left: box.left + win.pageXOffset - docElem.clientLeft
+ };
+ },
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ elem = this[ 0 ],
+ parentOffset = { top: 0, left: 0 };
+
+ // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+ // Assume getBoundingClientRect is there when computed position is fixed
+ offset = elem.getBoundingClientRect();
+
+ } else {
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+ }
+
+ // Subtract parent offsets and element margins
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || docElem;
+
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ return offsetParent || docElem;
+ });
+ }
+});
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+ var top = "pageYOffset" === prop;
+
+ jQuery.fn[ method ] = function( val ) {
+ return access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? win[ prop ] : elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : window.pageXOffset,
+ top ? val : window.pageYOffset
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+// Support: Safari<7+, Chrome<37+
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+ function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+ // If curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ );
+});
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+ // Margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+ // whichever is greatest
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ });
+});
+
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+ return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function() {
+ return jQuery;
+ });
+}
+
+
+
+
+var
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( typeof noGlobal === strundefined ) {
+ window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.min.js
new file mode 100644
index 0000000..fad9ab1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.min.js
@@ -0,0 +1,5 @@
+/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){
+return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)),
+void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n});
+//# sourceMappingURL=jquery.min.map
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.min.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.min.map
new file mode 100644
index 0000000..95fc122
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/dist/jquery.min.map
@@ -0,0 +1 @@
+{"version":3,"file":"jquery.min.js","sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","support","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","call","get","num","pushStack","elems","ret","merge","prevObject","each","callback","args","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","parseFloat","nodeType","isEmptyObject","globalEval","code","script","indirect","eval","trim","createElement","text","head","appendChild","parentNode","removeChild","camelCase","string","nodeName","toLowerCase","value","isArraylike","makeArray","results","Object","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","guid","proxy","tmp","now","Date","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","pop","push_native","list","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","e","els","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","div","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","is","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","until","truncate","sibling","n","targets","l","closest","pos","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","reverse","rnotwhite","optionsCache","createOptions","object","flag","Callbacks","memory","fired","firing","firingStart","firingLength","firingIndex","stack","once","fire","data","stopOnFalse","disable","remove","lock","locked","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","resolveWith","progressContexts","resolveContexts","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","completed","removeEventListener","readyState","setTimeout","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","defineProperty","uid","accepts","descriptor","unlock","defineProperties","set","prop","stored","camel","hasData","discard","data_priv","data_user","rbrace","rmultiDash","dataAttr","parseJSON","removeData","_data","_removeData","camelKey","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","el","css","rcheckableType","fragment","createDocumentFragment","checkClone","cloneNode","noCloneChecked","strundefined","focusinBubbles","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","event","types","handleObjIn","eventHandle","events","t","handleObj","special","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","trigger","onlyHandlers","bubbleType","ontype","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","props","fixHooks","keyHooks","original","which","charCode","keyCode","mouseHooks","eventDoc","body","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","originalEvent","fixHook","load","blur","click","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","relatedTarget","attaches","on","one","origFn","rxhtmlTag","rtagName","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","getAll","fixInput","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","buildFragment","scripts","selection","wrap","nodes","createTextNode","cleanData","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","detach","hasScripts","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","actualDisplay","style","display","getDefaultComputedStyle","defaultDisplay","write","close","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","pixelPositionVal","boxSizingReliableVal","container","backgroundClip","clearCloneStyle","cssText","computePixelPositionAndBoxSizingReliable","divStyle","pixelPosition","boxSizingReliable","reliableMarginRight","marginDiv","marginRight","swap","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","showHide","show","hidden","cssHooks","opacity","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","Tween","easing","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","*","createTween","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","opts","oldfire","checkDisplay","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","Animation","properties","stopped","tick","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","rejectWith","timer","complete","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","optDisabled","radioValue","nodeHook","boolHook","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","rfocusable","removeProp","for","class","notxml","hasAttribute","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","JSON","parse","parseXML","DOMParser","parseFromString","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","processData","async","contentType","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","status","abort","statusText","finalText","success","method","crossDomain","param","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","xhrId","xhrCallbacks","xhrSuccessStatus",1223,"xhrSupported","cors","open","username","xhrFields","onload","onerror","responseText","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","left","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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"}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/MIT-LICENSE.txt b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/MIT-LICENSE.txt
new file mode 100644
index 0000000..cdd31b5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/MIT-LICENSE.txt
@@ -0,0 +1,21 @@
+Copyright 2014 jQuery Foundation and other contributors
+http://jquery.com/
+
+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/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax.js
new file mode 100644
index 0000000..5c7b4ad
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax.js
@@ -0,0 +1,786 @@
+define([
+ "./core",
+ "./var/rnotwhite",
+ "./ajax/var/nonce",
+ "./ajax/var/rquery",
+ "./core/init",
+ "./ajax/parseJSON",
+ "./ajax/parseXML",
+ "./deferred"
+], function( jQuery, rnotwhite, nonce, rquery ) {
+
+var
+ rhash = /#.*$/,
+ rts = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat( "*" ),
+
+ // Document location
+ ajaxLocation = window.location.href,
+
+ // Segment location into parts
+ ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+ // For each dataType in the dataTypeExpression
+ while ( (dataType = dataTypes[i++]) ) {
+ // Prepend if requested
+ if ( dataType[0] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+ // Otherwise append
+ } else {
+ (structure[ dataType ] = structure[ dataType ] || []).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ });
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var ct, type, finalDataType, firstDataType,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while ( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s[ "throws" ] ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ type: "GET",
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var transport,
+ // URL without anti-cache param
+ cacheURL,
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks("once memory"),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // The jqXHR state
+ state = 0,
+ // Default abort message
+ strAbort = "canceled",
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( (match = rheaders.exec( responseHeadersString )) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ var lname = name.toLowerCase();
+ if ( !state ) {
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( state < 2 ) {
+ for ( code in map ) {
+ // Lazy-add the new callback in a way that preserves old ones
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ } else {
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR ).complete = completeDeferred.add;
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (prefilters might expect it)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
+ .replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+ // A cross-domain request is in order when we have a protocol:host:port mismatch
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+ fireGlobals = jQuery.event && s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger("ajaxStart");
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ cacheURL = s.url;
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+ s.url = rts.test( cacheURL ) ?
+
+ // If there is already a '_' parameter, set its value
+ cacheURL.replace( rts, "$1_=" + nonce++ ) :
+
+ // Otherwise add one to the end
+ cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
+ }
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // Aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout(function() {
+ jqXHR.abort("timeout");
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader("etag");
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+ // Extract error from statusText and normalize for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger("ajaxStop");
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // Shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ });
+ };
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/jsonp.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/jsonp.js
new file mode 100644
index 0000000..ff0d538
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/jsonp.js
@@ -0,0 +1,89 @@
+define([
+ "../core",
+ "./var/nonce",
+ "./var/rquery",
+ "../ajax"
+], function( jQuery, nonce, rquery ) {
+
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always(function() {
+ // Restore preexisting value
+ window[ callbackName ] = overwritten;
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+ // make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ });
+
+ // Delegate to script
+ return "script";
+ }
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/load.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/load.js
new file mode 100644
index 0000000..bff25b1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/load.js
@@ -0,0 +1,75 @@
+define([
+ "../core",
+ "../core/parseHTML",
+ "../ajax",
+ "../traversing",
+ "../manipulation",
+ "../selector",
+ // Optional event/alias dependency
+ "../event/alias"
+], function( jQuery ) {
+
+// Keep a copy of the old load method
+var _load = jQuery.fn.load;
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+ }
+
+ var selector, type, response,
+ self = this,
+ off = url.indexOf(" ");
+
+ if ( off >= 0 ) {
+ selector = jQuery.trim( url.slice( off ) );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax({
+ url: url,
+
+ // if "type" variable is undefined, then "GET" method will be used
+ type: type,
+ dataType: "html",
+ data: params
+ }).done(function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ }).complete( callback && function( jqXHR, status ) {
+ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+ });
+ }
+
+ return this;
+};
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/parseJSON.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/parseJSON.js
new file mode 100644
index 0000000..3a96d15
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/parseJSON.js
@@ -0,0 +1,13 @@
+define([
+ "../core"
+], function( jQuery ) {
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+ return JSON.parse( data + "" );
+};
+
+return jQuery.parseJSON;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/parseXML.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/parseXML.js
new file mode 100644
index 0000000..9eeb625
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/parseXML.js
@@ -0,0 +1,28 @@
+define([
+ "../core"
+], function( jQuery ) {
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+ var xml, tmp;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+
+ // Support: IE9
+ try {
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data, "text/xml" );
+ } catch ( e ) {
+ xml = undefined;
+ }
+
+ if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+};
+
+return jQuery.parseXML;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/script.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/script.js
new file mode 100644
index 0000000..f44329d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/script.js
@@ -0,0 +1,64 @@
+define([
+ "../core",
+ "../ajax"
+], function( jQuery ) {
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /(?:java|ecma)script/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+ var script, callback;
+ return {
+ send: function( _, complete ) {
+ script = jQuery("<script>").prop({
+ async: true,
+ charset: s.scriptCharset,
+ src: s.url
+ }).on(
+ "load error",
+ callback = function( evt ) {
+ script.remove();
+ callback = null;
+ if ( evt ) {
+ complete( evt.type === "error" ? 404 : 200, evt.type );
+ }
+ }
+ );
+ document.head.appendChild( script[ 0 ] );
+ },
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/var/nonce.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/var/nonce.js
new file mode 100644
index 0000000..0871aae
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/var/nonce.js
@@ -0,0 +1,5 @@
+define([
+ "../../core"
+], function( jQuery ) {
+ return jQuery.now();
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/var/rquery.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/var/rquery.js
new file mode 100644
index 0000000..500a77a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/var/rquery.js
@@ -0,0 +1,3 @@
+define(function() {
+ return (/\?/);
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/xhr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/xhr.js
new file mode 100644
index 0000000..c2b43c9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/ajax/xhr.js
@@ -0,0 +1,136 @@
+define([
+ "../core",
+ "../var/support",
+ "../ajax"
+], function( jQuery, support ) {
+
+jQuery.ajaxSettings.xhr = function() {
+ try {
+ return new XMLHttpRequest();
+ } catch( e ) {}
+};
+
+var xhrId = 0,
+ xhrCallbacks = {},
+ xhrSuccessStatus = {
+ // file protocol always yields status code 0, assume 200
+ 0: 200,
+ // Support: IE9
+ // #1450: sometimes IE returns 1223 when it should be 204
+ 1223: 204
+ },
+ xhrSupported = jQuery.ajaxSettings.xhr();
+
+// Support: IE9
+// Open requests must be manually aborted on unload (#5280)
+// See https://support.microsoft.com/kb/2856746 for more info
+if ( window.attachEvent ) {
+ window.attachEvent( "onunload", function() {
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]();
+ }
+ });
+}
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport(function( options ) {
+ var callback;
+
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( support.cors || xhrSupported && !options.crossDomain ) {
+ return {
+ send: function( headers, complete ) {
+ var i,
+ xhr = options.xhr(),
+ id = ++xhrId;
+
+ xhr.open( options.type, options.url, options.async, options.username, options.password );
+
+ // Apply custom fields if provided
+ if ( options.xhrFields ) {
+ for ( i in options.xhrFields ) {
+ xhr[ i ] = options.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( options.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( options.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !options.crossDomain && !headers["X-Requested-With"] ) {
+ headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ // Set headers
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+
+ // Callback
+ callback = function( type ) {
+ return function() {
+ if ( callback ) {
+ delete xhrCallbacks[ id ];
+ callback = xhr.onload = xhr.onerror = null;
+
+ if ( type === "abort" ) {
+ xhr.abort();
+ } else if ( type === "error" ) {
+ complete(
+ // file: protocol always yields status 0; see #8605, #14207
+ xhr.status,
+ xhr.statusText
+ );
+ } else {
+ complete(
+ xhrSuccessStatus[ xhr.status ] || xhr.status,
+ xhr.statusText,
+ // Support: IE9
+ // Accessing binary-data responseText throws an exception
+ // (#11426)
+ typeof xhr.responseText === "string" ? {
+ text: xhr.responseText
+ } : undefined,
+ xhr.getAllResponseHeaders()
+ );
+ }
+ }
+ };
+ };
+
+ // Listen to events
+ xhr.onload = callback();
+ xhr.onerror = callback("error");
+
+ // Create the abort callback
+ callback = xhrCallbacks[ id ] = callback("abort");
+
+ try {
+ // Do send the request (this may raise an exception)
+ xhr.send( options.hasContent && options.data || null );
+ } catch ( e ) {
+ // #14683: Only rethrow if this hasn't been notified as an error yet
+ if ( callback ) {
+ throw e;
+ }
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes.js
new file mode 100644
index 0000000..fa2ef1e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes.js
@@ -0,0 +1,11 @@
+define([
+ "./core",
+ "./attributes/attr",
+ "./attributes/prop",
+ "./attributes/classes",
+ "./attributes/val"
+], function( jQuery ) {
+
+// Return jQuery for attributes-only inclusion
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/attr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/attr.js
new file mode 100644
index 0000000..a4414d1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/attr.js
@@ -0,0 +1,141 @@
+define([
+ "../core",
+ "../var/rnotwhite",
+ "../var/strundefined",
+ "../core/access",
+ "./support",
+ "../selector"
+], function( jQuery, rnotwhite, strundefined, access, support ) {
+
+var nodeHook, boolHook,
+ attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ }
+});
+
+jQuery.extend({
+ attr: function( elem, name, value ) {
+ var hooks, ret,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === strundefined ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+
+ } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name, propName,
+ i = 0,
+ attrNames = value && value.match( rnotwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( (name = attrNames[i++]) ) {
+ propName = jQuery.propFix[ name ] || name;
+
+ // Boolean attributes get special treatment (#10870)
+ if ( jQuery.expr.match.bool.test( name ) ) {
+ // Set corresponding property to false
+ elem[ propName ] = false;
+ }
+
+ elem.removeAttribute( name );
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !support.radioValue && value === "radio" &&
+ jQuery.nodeName( elem, "input" ) ) {
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ }
+});
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = attrHandle[ name ] || jQuery.find.attr;
+
+ attrHandle[ name ] = function( elem, name, isXML ) {
+ var ret, handle;
+ if ( !isXML ) {
+ // Avoid an infinite loop by temporarily removing this function from the getter
+ handle = attrHandle[ name ];
+ attrHandle[ name ] = ret;
+ ret = getter( elem, name, isXML ) != null ?
+ name.toLowerCase() :
+ null;
+ attrHandle[ name ] = handle;
+ }
+ return ret;
+ };
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/classes.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/classes.js
new file mode 100644
index 0000000..1011384
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/classes.js
@@ -0,0 +1,158 @@
+define([
+ "../core",
+ "../var/rnotwhite",
+ "../var/strundefined",
+ "../data/var/data_priv",
+ "../core/init"
+], function( jQuery, rnotwhite, strundefined, data_priv ) {
+
+var rclass = /[\t\r\n\f]/g;
+
+jQuery.fn.extend({
+ addClass: function( value ) {
+ var classes, elem, cur, clazz, j, finalValue,
+ proceed = typeof value === "string" && value,
+ i = 0,
+ len = this.length;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call( this, j, this.className ) );
+ });
+ }
+
+ if ( proceed ) {
+ // The disjunction here is for better compressibility (see removeClass)
+ classes = ( value || "" ).match( rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ " "
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+
+ // only assign if different to avoid unneeded rendering.
+ finalValue = jQuery.trim( cur );
+ if ( elem.className !== finalValue ) {
+ elem.className = finalValue;
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, clazz, j, finalValue,
+ proceed = arguments.length === 0 || typeof value === "string" && value,
+ i = 0,
+ len = this.length;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, this.className ) );
+ });
+ }
+ if ( proceed ) {
+ classes = ( value || "" ).match( rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ ""
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = value ? jQuery.trim( cur ) : "";
+ if ( elem.className !== finalValue ) {
+ elem.className = finalValue;
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // Toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ classNames = value.match( rnotwhite ) || [];
+
+ while ( (className = classNames[ i++ ]) ) {
+ // Check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( type === strundefined || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ data_priv.set( this, "__className__", this.className );
+ }
+
+ // If the element has a class name or if we're passed `false`,
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/prop.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/prop.js
new file mode 100644
index 0000000..d4ee8b6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/prop.js
@@ -0,0 +1,94 @@
+define([
+ "../core",
+ "../core/access",
+ "./support"
+], function( jQuery, access, support ) {
+
+var rfocusable = /^(?:input|select|textarea|button)$/i;
+
+jQuery.fn.extend({
+ prop: function( name, value ) {
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ return this.each(function() {
+ delete this[ jQuery.propFix[ name ] || name ];
+ });
+ }
+});
+
+jQuery.extend({
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // Don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+ ret :
+ ( elem[ name ] = value );
+
+ } else {
+ return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+ ret :
+ elem[ name ];
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
+ elem.tabIndex :
+ -1;
+ }
+ }
+ }
+});
+
+if ( !support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+ if ( parent && parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ return null;
+ }
+ };
+}
+
+jQuery.each([
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/support.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/support.js
new file mode 100644
index 0000000..5db5c52
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/support.js
@@ -0,0 +1,35 @@
+define([
+ "../var/support"
+], function( support ) {
+
+(function() {
+ var input = document.createElement( "input" ),
+ select = document.createElement( "select" ),
+ opt = select.appendChild( document.createElement( "option" ) );
+
+ input.type = "checkbox";
+
+ // Support: iOS<=5.1, Android<=4.2+
+ // Default value for a checkbox should be "on"
+ support.checkOn = input.value !== "";
+
+ // Support: IE<=11+
+ // Must access selectedIndex to make default options select
+ support.optSelected = opt.selected;
+
+ // Support: Android<=2.3
+ // Options inside disabled selects are incorrectly marked as disabled
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Support: IE<=11+
+ // An input loses its value after becoming a radio
+ input = document.createElement( "input" );
+ input.value = "t";
+ input.type = "radio";
+ support.radioValue = input.value === "t";
+})();
+
+return support;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/val.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/val.js
new file mode 100644
index 0000000..4a1358a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/attributes/val.js
@@ -0,0 +1,161 @@
+define([
+ "../core",
+ "./support",
+ "../core/init"
+], function( jQuery, support ) {
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend({
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // Handle most common string cases
+ ret.replace(rreturn, "") :
+ // Handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+
+ } else if ( typeof val === "number" ) {
+ val += "";
+
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map( val, function( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+ // Support: IE10-11+
+ // option.text throws exceptions (#14686, #14858)
+ jQuery.trim( jQuery.text( elem ) );
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // IE6-9 doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+ if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
+ optionSet = true;
+ }
+ }
+
+ // Force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ }
+});
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ };
+ if ( !support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ };
+ }
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/callbacks.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/callbacks.js
new file mode 100644
index 0000000..17572bb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/callbacks.js
@@ -0,0 +1,205 @@
+define([
+ "./core",
+ "./var/rnotwhite"
+], function( jQuery, rnotwhite ) {
+
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
+
+ var // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // Flag to know if list is currently firing
+ firing,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+ add( arg );
+ }
+ });
+ })( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away
+ } else if ( memory ) {
+ firingStart = start;
+ fire( memory );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+ // Handle firing indexes
+ if ( firing ) {
+ if ( index <= firingLength ) {
+ firingLength--;
+ }
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ });
+ }
+ return this;
+ },
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ firingLength = 0;
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( list && ( !fired || stack ) ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ if ( firing ) {
+ stack.push( args );
+ } else {
+ fire( args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core.js
new file mode 100644
index 0000000..6f471ee
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core.js
@@ -0,0 +1,502 @@
+define([
+ "./var/arr",
+ "./var/slice",
+ "./var/concat",
+ "./var/push",
+ "./var/indexOf",
+ "./var/class2type",
+ "./var/toString",
+ "./var/hasOwn",
+ "./var/support"
+], function( arr, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
+
+var
+ // Use the correct document accordingly with window argument (sandbox)
+ document = window.document,
+
+ version = "@VERSION",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android<4.1
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num != null ?
+
+ // Return just the one element from the set
+ ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+ // Return all the elements in a clean array
+ slice.call( this );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray,
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ // parseFloat NaNs numeric-cast false positives (null|true|false|"")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ // adding 1 corrects loss of precision from parseFloat (#15100)
+ return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
+ },
+
+ isPlainObject: function( obj ) {
+ // Not plain objects:
+ // - Any object or value whose internal [[Class]] property is not "[object Object]"
+ // - DOM nodes
+ // - window
+ if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.constructor &&
+ !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
+ return false;
+ }
+
+ // If the function hasn't returned already, we're confident that
+ // |obj| is a plain object, created by {} or constructed with new Object
+ return true;
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+ // Support: Android<4.0, iOS<6 (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call(obj) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ var script,
+ indirect = eval;
+
+ code = jQuery.trim( code );
+
+ if ( code ) {
+ // If the code includes a valid, prologue position
+ // strict mode pragma, execute code by injecting a
+ // script tag into the document.
+ if ( code.indexOf("use strict") === 1 ) {
+ script = document.createElement("script");
+ script.text = code;
+ document.head.appendChild( script ).parentNode.removeChild( script );
+ } else {
+ // Otherwise, avoid the DOM node creation, insertion
+ // and removal by using an indirect global eval
+ indirect( code );
+ }
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Support: IE9-11+
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ // args is for internal usage only
+ each: function( obj, callback, args ) {
+ var value,
+ i = 0,
+ length = obj.length,
+ isArray = isArraylike( obj );
+
+ if ( args ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android<4.1
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArraylike( Object(arr) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value,
+ i = 0,
+ length = elems.length,
+ isArray = isArraylike( elems ),
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+
+ // Support: iOS 8.2 (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = "length" in obj && obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.nodeType === 1 && length ) {
+ return true;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/access.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/access.js
new file mode 100644
index 0000000..b6110c8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/access.js
@@ -0,0 +1,60 @@
+define([
+ "../core"
+], function( jQuery ) {
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ len ? fn( elems[0], key ) : emptyGet;
+};
+
+return access;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/init.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/init.js
new file mode 100644
index 0000000..7e83a04
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/init.js
@@ -0,0 +1,123 @@
+// Initialize a jQuery object
+define([
+ "../core",
+ "./var/rsingleTag",
+ "../traversing/findFilter"
+], function( jQuery, rsingleTag ) {
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ init = jQuery.fn.init = function( selector, context ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Support: Blackberry 4.6
+ // gEBID returns nodes no longer in the document (#6963)
+ if ( elem && elem.parentNode ) {
+ // Inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return typeof rootjQuery.ready !== "undefined" ?
+ rootjQuery.ready( selector ) :
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+return init;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/parseHTML.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/parseHTML.js
new file mode 100644
index 0000000..64cf2a1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/parseHTML.js
@@ -0,0 +1,39 @@
+define([
+ "../core",
+ "./var/rsingleTag",
+ "../manipulation" // buildFragment
+], function( jQuery, rsingleTag ) {
+
+// data: string of html
+// context (optional): If specified, the fragment will be created in this context, defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
+
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
+
+ if ( scripts && scripts.length ) {
+ jQuery( scripts ).remove();
+ }
+
+ return jQuery.merge( [], parsed.childNodes );
+};
+
+return jQuery.parseHTML;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/ready.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/ready.js
new file mode 100644
index 0000000..db1a6e6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/ready.js
@@ -0,0 +1,97 @@
+define([
+ "../core",
+ "../core/init",
+ "../deferred"
+], function( jQuery ) {
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+};
+
+jQuery.extend({
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ jQuery( document ).off( "ready" );
+ }
+ }
+});
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed, false );
+ window.removeEventListener( "load", completed, false );
+ jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
+ // We once tried to use readyState "interactive" here, but it caused issues like the one
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ setTimeout( jQuery.ready );
+
+ } else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed, false );
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/var/rsingleTag.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/var/rsingleTag.js
new file mode 100644
index 0000000..7e7090b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/core/var/rsingleTag.js
@@ -0,0 +1,4 @@
+define(function() {
+ // Match a standalone tag
+ return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css.js
new file mode 100644
index 0000000..d481617
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css.js
@@ -0,0 +1,450 @@
+define([
+ "./core",
+ "./var/pnum",
+ "./core/access",
+ "./css/var/rmargin",
+ "./css/var/rnumnonpx",
+ "./css/var/cssExpand",
+ "./css/var/isHidden",
+ "./css/var/getStyles",
+ "./css/curCSS",
+ "./css/defaultDisplay",
+ "./css/addGetHookIf",
+ "./css/support",
+ "./data/var/data_priv",
+
+ "./core/init",
+ "./css/swap",
+ "./core/ready",
+ "./selector" // contains
+], function( jQuery, pnum, access, rmargin, rnumnonpx, cssExpand, isHidden,
+ getStyles, curCSS, defaultDisplay, addGetHookIf, support, data_priv ) {
+
+var
+ // Swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+ // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
+ rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: "0",
+ fontWeight: "400"
+ },
+
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+ // Shortcut for names that are not vendor prefixed
+ if ( name in style ) {
+ return name;
+ }
+
+ // Check for vendor prefixed names
+ var capName = name[0].toUpperCase() + name.slice(1),
+ origName = name,
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in style ) {
+ return name;
+ }
+ }
+
+ return origName;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+ var matches = rnumsplit.exec( value );
+ return matches ?
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+ // Both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // At this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+ // At this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // At this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var valueIsBorderBox = true,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ styles = getStyles( elem ),
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // Some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, styles );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
+ // Check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox &&
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // Use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+function showHide( elements, show ) {
+ var display, elem, hidden,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ values[ index ] = data_priv.get( elem, "olddisplay" );
+ display = elem.style.display;
+ if ( show ) {
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !values[ index ] && display === "none" ) {
+ elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( elem.style.display === "" && isHidden( elem ) ) {
+ values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+ }
+ } else {
+ hidden = isHidden( elem );
+
+ if ( display !== "none" || !hidden ) {
+ data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( index = 0; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+ elem.style.display = show ? values[ index ] || "" : "none";
+ }
+ }
+
+ return elements;
+}
+
+jQuery.extend({
+
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "columnCount": true,
+ "fillOpacity": true,
+ "flexGrow": true,
+ "flexShrink": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ "float": "cssFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+ // Gets hook for the prefixed version, then unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // Convert "+=" or "-=" to relative numbers (#7345)
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that null and NaN values aren't set (#7116)
+ if ( value == null || value !== value ) {
+ return;
+ }
+
+ // If a number, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // Support: IE9-11+
+ // background-* props affect original clone's values
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+ style[ name ] = value;
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var val, num, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+ // Try prefixed name followed by the unprefixed name
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ // Convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Make numeric if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+ }
+ return val;
+ }
+});
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+
+ // Certain elements can have dimension info if we invisibly show them
+ // but it must have a current display style that would benefit
+ return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
+ jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ }) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var styles = extra && getStyles( elem );
+ return setPositiveNumber( elem, value, extra ?
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ ) : 0
+ );
+ }
+ };
+});
+
+// Support: Android 2.3
+jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
+ function( elem, computed ) {
+ if ( computed ) {
+ return jQuery.swap( elem, { "display": "inline-block" },
+ curCSS, [ elem, "marginRight" ] );
+ }
+ }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // Assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+});
+
+jQuery.fn.extend({
+ css: function( name, value ) {
+ return access( this, function( elem, name, value ) {
+ var styles, len,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ },
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each(function() {
+ if ( isHidden( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ });
+ }
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/addGetHookIf.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/addGetHookIf.js
new file mode 100644
index 0000000..e12f359
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/addGetHookIf.js
@@ -0,0 +1,22 @@
+define(function() {
+
+function addGetHookIf( conditionFn, hookFn ) {
+ // Define the hook, we'll check on the first run if it's really needed.
+ return {
+ get: function() {
+ if ( conditionFn() ) {
+ // Hook not needed (or it's not possible to use it due
+ // to missing dependency), remove it.
+ delete this.get;
+ return;
+ }
+
+ // Hook needed; redefine it so that the support test is not executed again.
+ return (this.get = hookFn).apply( this, arguments );
+ }
+ };
+}
+
+return addGetHookIf;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/curCSS.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/curCSS.js
new file mode 100644
index 0000000..90e508c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/curCSS.js
@@ -0,0 +1,57 @@
+define([
+ "../core",
+ "./var/rnumnonpx",
+ "./var/rmargin",
+ "./var/getStyles",
+ "../selector" // contains
+], function( jQuery, rnumnonpx, rmargin, getStyles ) {
+
+function curCSS( elem, name, computed ) {
+ var width, minWidth, maxWidth, ret,
+ style = elem.style;
+
+ computed = computed || getStyles( elem );
+
+ // Support: IE9
+ // getPropertyValue is only needed for .css('filter') (#12537)
+ if ( computed ) {
+ ret = computed.getPropertyValue( name ) || computed[ name ];
+ }
+
+ if ( computed ) {
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // Support: iOS < 6
+ // A tribute to the "awesome hack by Dean Edwards"
+ // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+ // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret !== undefined ?
+ // Support: IE
+ // IE returns zIndex value as an integer.
+ ret + "" :
+ ret;
+}
+
+return curCSS;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/defaultDisplay.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/defaultDisplay.js
new file mode 100644
index 0000000..046ae91
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/defaultDisplay.js
@@ -0,0 +1,70 @@
+define([
+ "../core",
+ "../manipulation" // appendTo
+], function( jQuery ) {
+
+var iframe,
+ elemdisplay = {};
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+ var style,
+ elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+ // getDefaultComputedStyle might be reliably used only on attached element
+ display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
+
+ // Use of this method is a temporary fix (more like optimization) until something better comes along,
+ // since it was removed from specification and supported only in FF
+ style.display : jQuery.css( elem[ 0 ], "display" );
+
+ // We don't have any data stored on the element,
+ // so use "detach" method as fast way to get rid of the element
+ elem.detach();
+
+ return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+ var doc = document,
+ display = elemdisplay[ nodeName ];
+
+ if ( !display ) {
+ display = actualDisplay( nodeName, doc );
+
+ // If the simple way fails, read from inside an iframe
+ if ( display === "none" || !display ) {
+
+ // Use the already-created iframe if possible
+ iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
+
+ // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+ doc = iframe[ 0 ].contentDocument;
+
+ // Support: IE
+ doc.write();
+ doc.close();
+
+ display = actualDisplay( nodeName, doc );
+ iframe.detach();
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return display;
+}
+
+return defaultDisplay;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/hiddenVisibleSelectors.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/hiddenVisibleSelectors.js
new file mode 100644
index 0000000..c7f1c7e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/hiddenVisibleSelectors.js
@@ -0,0 +1,15 @@
+define([
+ "../core",
+ "../selector"
+], function( jQuery ) {
+
+jQuery.expr.filters.hidden = function( elem ) {
+ // Support: Opera <= 12.12
+ // Opera reports offsetWidths and offsetHeights less than zero on some elements
+ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
+};
+jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+};
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/support.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/support.js
new file mode 100644
index 0000000..b9eaf14
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/support.js
@@ -0,0 +1,96 @@
+define([
+ "../core",
+ "../var/support"
+], function( jQuery, support ) {
+
+(function() {
+ var pixelPositionVal, boxSizingReliableVal,
+ docElem = document.documentElement,
+ container = document.createElement( "div" ),
+ div = document.createElement( "div" );
+
+ if ( !div.style ) {
+ return;
+ }
+
+ // Support: IE9-11+
+ // Style of cloned element affects source element cloned (#8908)
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
+ "position:absolute";
+ container.appendChild( div );
+
+ // Executing both pixelPosition & boxSizingReliable tests require only one layout
+ // so they're executed at the same time to save the second computation.
+ function computePixelPositionAndBoxSizingReliable() {
+ div.style.cssText =
+ // Support: Firefox<29, Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
+ "box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
+ "border:1px;padding:1px;width:4px;position:absolute";
+ div.innerHTML = "";
+ docElem.appendChild( container );
+
+ var divStyle = window.getComputedStyle( div, null );
+ pixelPositionVal = divStyle.top !== "1%";
+ boxSizingReliableVal = divStyle.width === "4px";
+
+ docElem.removeChild( container );
+ }
+
+ // Support: node.js jsdom
+ // Don't assume that getComputedStyle is a property of the global object
+ if ( window.getComputedStyle ) {
+ jQuery.extend( support, {
+ pixelPosition: function() {
+
+ // This test is executed only once but we still do memoizing
+ // since we can use the boxSizingReliable pre-computing.
+ // No need to check if the test was already performed, though.
+ computePixelPositionAndBoxSizingReliable();
+ return pixelPositionVal;
+ },
+ boxSizingReliable: function() {
+ if ( boxSizingReliableVal == null ) {
+ computePixelPositionAndBoxSizingReliable();
+ }
+ return boxSizingReliableVal;
+ },
+ reliableMarginRight: function() {
+
+ // Support: Android 2.3
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. (#3333)
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // This support function is only executed once so no memoizing is needed.
+ var ret,
+ marginDiv = div.appendChild( document.createElement( "div" ) );
+
+ // Reset CSS: box-sizing; display; margin; border; padding
+ marginDiv.style.cssText = div.style.cssText =
+ // Support: Firefox<29, Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
+ "box-sizing:content-box;display:block;margin:0;border:0;padding:0";
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+ docElem.appendChild( container );
+
+ ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
+
+ docElem.removeChild( container );
+ div.removeChild( marginDiv );
+
+ return ret;
+ }
+ });
+ }
+})();
+
+return support;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/swap.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/swap.js
new file mode 100644
index 0000000..ce16435
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/swap.js
@@ -0,0 +1,28 @@
+define([
+ "../core"
+], function( jQuery ) {
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+jQuery.swap = function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+return jQuery.swap;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/cssExpand.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/cssExpand.js
new file mode 100644
index 0000000..91e90a8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/cssExpand.js
@@ -0,0 +1,3 @@
+define(function() {
+ return [ "Top", "Right", "Bottom", "Left" ];
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/getStyles.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/getStyles.js
new file mode 100644
index 0000000..413acd0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/getStyles.js
@@ -0,0 +1,12 @@
+define(function() {
+ return function( elem ) {
+ // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
+ // IE throws on elements created in popups
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+ if ( elem.ownerDocument.defaultView.opener ) {
+ return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+ }
+
+ return window.getComputedStyle( elem, null );
+ };
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/isHidden.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/isHidden.js
new file mode 100644
index 0000000..15ab81a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/isHidden.js
@@ -0,0 +1,13 @@
+define([
+ "../../core",
+ "../../selector"
+ // css is assumed
+], function( jQuery ) {
+
+ return function( elem, el ) {
+ // isHidden might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+ };
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/rmargin.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/rmargin.js
new file mode 100644
index 0000000..da0438d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/rmargin.js
@@ -0,0 +1,3 @@
+define(function() {
+ return (/^margin/);
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/rnumnonpx.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/rnumnonpx.js
new file mode 100644
index 0000000..c93be28
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/css/var/rnumnonpx.js
@@ -0,0 +1,5 @@
+define([
+ "../../var/pnum"
+], function( pnum ) {
+ return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data.js
new file mode 100644
index 0000000..f9af9ae
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data.js
@@ -0,0 +1,178 @@
+define([
+ "./core",
+ "./var/rnotwhite",
+ "./core/access",
+ "./data/var/data_priv",
+ "./data/var/data_user"
+], function( jQuery, rnotwhite, access, data_priv, data_user ) {
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ data_user.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend({
+ hasData: function( elem ) {
+ return data_user.hasData( elem ) || data_priv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return data_user.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ data_user.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to data_priv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return data_priv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ data_priv.remove( elem, name );
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = data_user.get( elem );
+
+ if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE11+
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.slice(5) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ data_priv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ data_user.set( this, key );
+ });
+ }
+
+ return access( this, function( value ) {
+ var data,
+ camelKey = jQuery.camelCase( key );
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+ // Attempt to get data from the cache
+ // with the key as-is
+ data = data_user.get( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to get data from the cache
+ // with the key camelized
+ data = data_user.get( elem, camelKey );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, camelKey, undefined );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ this.each(function() {
+ // First, attempt to store a copy or reference of any
+ // data that might've been store with a camelCased key.
+ var data = data_user.get( this, camelKey );
+
+ // For HTML5 data-* attribute interop, we have to
+ // store property names with dashes in a camelCase form.
+ // This might not apply to all properties...*
+ data_user.set( this, camelKey, value );
+
+ // *... In the case of properties that might _actually_
+ // have dashes, we need to also store a copy of that
+ // unchanged property.
+ if ( key.indexOf("-") !== -1 && data !== undefined ) {
+ data_user.set( this, key, value );
+ }
+ });
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ data_user.remove( this, key );
+ });
+ }
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/accepts.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/accepts.js
new file mode 100644
index 0000000..291c7b4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/accepts.js
@@ -0,0 +1,20 @@
+define([
+ "../core"
+], function( jQuery ) {
+
+/**
+ * Determines whether an object can have data
+ */
+jQuery.acceptData = function( owner ) {
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ /* jshint -W018 */
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+return jQuery.acceptData;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/Data.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/Data.js
new file mode 100644
index 0000000..85afd64
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/Data.js
@@ -0,0 +1,181 @@
+define([
+ "../core",
+ "../var/rnotwhite",
+ "./accepts"
+], function( jQuery, rnotwhite ) {
+
+function Data() {
+ // Support: Android<4,
+ // Old WebKit does not have Object.preventExtensions/freeze method,
+ // return new empty object instead with no [[set]] accessor
+ Object.defineProperty( this.cache = {}, 0, {
+ get: function() {
+ return {};
+ }
+ });
+
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+Data.accepts = jQuery.acceptData;
+
+Data.prototype = {
+ key: function( owner ) {
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return the key for a frozen object.
+ if ( !Data.accepts( owner ) ) {
+ return 0;
+ }
+
+ var descriptor = {},
+ // Check if the owner object already has a cache key
+ unlock = owner[ this.expando ];
+
+ // If not, create one
+ if ( !unlock ) {
+ unlock = Data.uid++;
+
+ // Secure it in a non-enumerable, non-writable property
+ try {
+ descriptor[ this.expando ] = { value: unlock };
+ Object.defineProperties( owner, descriptor );
+
+ // Support: Android<4
+ // Fallback to a less secure definition
+ } catch ( e ) {
+ descriptor[ this.expando ] = unlock;
+ jQuery.extend( owner, descriptor );
+ }
+ }
+
+ // Ensure the cache object
+ if ( !this.cache[ unlock ] ) {
+ this.cache[ unlock ] = {};
+ }
+
+ return unlock;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ // There may be an unlock assigned to this node,
+ // if there is no entry for this "owner", create one inline
+ // and set the unlock as though an owner entry had always existed
+ unlock = this.key( owner ),
+ cache = this.cache[ unlock ];
+
+ // Handle: [ owner, key, value ] args
+ if ( typeof data === "string" ) {
+ cache[ data ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+ // Fresh assignments by object are shallow copied
+ if ( jQuery.isEmptyObject( cache ) ) {
+ jQuery.extend( this.cache[ unlock ], data );
+ // Otherwise, copy the properties one-by-one to the cache object
+ } else {
+ for ( prop in data ) {
+ cache[ prop ] = data[ prop ];
+ }
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ // Either a valid cache is found, or will be created.
+ // New caches will be created and the unlock returned,
+ // allowing direct access to the newly created
+ // empty data object. A valid owner object must be provided.
+ var cache = this.cache[ this.key( owner ) ];
+
+ return key === undefined ?
+ cache : cache[ key ];
+ },
+ access: function( owner, key, value ) {
+ var stored;
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ((key && typeof key === "string") && value === undefined) ) {
+
+ stored = this.get( owner, key );
+
+ return stored !== undefined ?
+ stored : this.get( owner, jQuery.camelCase(key) );
+ }
+
+ // [*]When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i, name, camel,
+ unlock = this.key( owner ),
+ cache = this.cache[ unlock ];
+
+ if ( key === undefined ) {
+ this.cache[ unlock ] = {};
+
+ } else {
+ // Support array or space separated string of keys
+ if ( jQuery.isArray( key ) ) {
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = key.concat( key.map( jQuery.camelCase ) );
+ } else {
+ camel = jQuery.camelCase( key );
+ // Try the string as a key before any manipulation
+ if ( key in cache ) {
+ name = [ key, camel ];
+ } else {
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ name = camel;
+ name = name in cache ?
+ [ name ] : ( name.match( rnotwhite ) || [] );
+ }
+ }
+
+ i = name.length;
+ while ( i-- ) {
+ delete cache[ name[ i ] ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ return !jQuery.isEmptyObject(
+ this.cache[ owner[ this.expando ] ] || {}
+ );
+ },
+ discard: function( owner ) {
+ if ( owner[ this.expando ] ) {
+ delete this.cache[ owner[ this.expando ] ];
+ }
+ }
+};
+
+return Data;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/var/data_priv.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/var/data_priv.js
new file mode 100644
index 0000000..24399e4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/var/data_priv.js
@@ -0,0 +1,5 @@
+define([
+ "../Data"
+], function( Data ) {
+ return new Data();
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/var/data_user.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/var/data_user.js
new file mode 100644
index 0000000..24399e4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/data/var/data_user.js
@@ -0,0 +1,5 @@
+define([
+ "../Data"
+], function( Data ) {
+ return new Data();
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/deferred.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/deferred.js
new file mode 100644
index 0000000..98f9c31
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/deferred.js
@@ -0,0 +1,149 @@
+define([
+ "./core",
+ "./var/slice",
+ "./callbacks"
+], function( jQuery, slice ) {
+
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var tuples = [
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[1] ](function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .done( newDefer.resolve )
+ .fail( newDefer.reject )
+ .progress( newDefer.notify );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+ }
+ });
+ });
+ fns = null;
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[1] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(function() {
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[0] ] = function() {
+ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[0] + "With" ] = list.fireWith;
+ });
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // Add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject )
+ .progress( updateFunc( i, progressContexts, progressValues ) );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // If we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/deprecated.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/deprecated.js
new file mode 100644
index 0000000..1b068bc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/deprecated.js
@@ -0,0 +1,13 @@
+define([
+ "./core",
+ "./traversing"
+], function( jQuery ) {
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+ return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/dimensions.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/dimensions.js
new file mode 100644
index 0000000..e6cb04c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/dimensions.js
@@ -0,0 +1,50 @@
+define([
+ "./core",
+ "./core/access",
+ "./css"
+], function( jQuery, access ) {
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+ // Margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+ // whichever is greatest
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ });
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects.js
new file mode 100644
index 0000000..90226bd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects.js
@@ -0,0 +1,648 @@
+define([
+ "./core",
+ "./var/pnum",
+ "./css/var/cssExpand",
+ "./css/var/isHidden",
+ "./css/defaultDisplay",
+ "./data/var/data_priv",
+
+ "./core/init",
+ "./effects/Tween",
+ "./queue",
+ "./css",
+ "./deferred",
+ "./traversing"
+], function( jQuery, pnum, cssExpand, isHidden, defaultDisplay, data_priv ) {
+
+var
+ fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
+ rrun = /queueHooks$/,
+ animationPrefilters = [ defaultPrefilter ],
+ tweeners = {
+ "*": [ function( prop, value ) {
+ var tween = this.createTween( prop, value ),
+ target = tween.cur(),
+ parts = rfxnum.exec( value ),
+ unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+ rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+ scale = 1,
+ maxIterations = 20;
+
+ if ( start && start[ 3 ] !== unit ) {
+ // Trust units reported by jQuery.css
+ unit = unit || start[ 3 ];
+
+ // Make sure we update the tween properties later on
+ parts = parts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ start = +target || 1;
+
+ do {
+ // If previous iteration zeroed out, double until we get *something*.
+ // Use string for doubling so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur(),
+ // break the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+ }
+
+ // Update tween properties
+ if ( parts ) {
+ start = tween.start = +start || +target || 0;
+ tween.unit = unit;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[ 1 ] ?
+ start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+ +parts[ 2 ];
+ }
+
+ return tween;
+ } ]
+ };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout(function() {
+ fxNow = undefined;
+ });
+ return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ i = 0,
+ attrs = { height: type };
+
+ // If we include width, step value is 1 to do all cssExpand values,
+ // otherwise step value is 2 to skip over Left and Right
+ includeWidth = includeWidth ? 1 : 0;
+ for ( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+ // We're done with this property
+ return tween;
+ }
+ }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+ /* jshint validthis: true */
+ var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = data_priv.get( elem, "fxshow" );
+
+ // Handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always(function() {
+ // Ensure the complete handler is called before this completes
+ anim.always(function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+
+ // Height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE9-10 do not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ display = jQuery.css( elem, "display" );
+
+ // Test default display if display is currently "none"
+ checkDisplay = display === "none" ?
+ data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+ if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
+ style.display = "inline-block";
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ anim.always(function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ });
+ }
+
+ // show/hide pass
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+
+ // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+ hidden = true;
+ } else {
+ continue;
+ }
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+
+ // Any non-fx value stops us from restoring the original display value
+ } else {
+ display = undefined;
+ }
+ }
+
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = data_priv.access( elem, "fxshow", {} );
+ }
+
+ // Store state if its toggle - enables .stop().toggle() to "reverse"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done(function() {
+ jQuery( elem ).hide();
+ });
+ }
+ anim.done(function() {
+ var prop;
+
+ data_priv.remove( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ });
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+
+ // If this is a noop like .hide().hide(), restore an overwritten display value
+ } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
+ style.display = display;
+ }
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // Not quite $.extend, this won't overwrite existing keys.
+ // Reusing 'index' because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = animationPrefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+ // Don't match elem in the :animated selector
+ delete tick.elem;
+ }),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+ // Support: Android 2.3
+ // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise({
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, { specialEasing: {} }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+ // If we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // Resolve when we played the last frame; otherwise, reject
+ if ( gotoEnd ) {
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ }),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ })
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.split(" ");
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ tweeners[ prop ] = tweeners[ prop ] || [];
+ tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ animationPrefilters.unshift( callback );
+ } else {
+ animationPrefilters.push( callback );
+ }
+ }
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // Normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.fn.extend({
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // Show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // Animate to the value specified
+ .end().animate({ opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || data_priv.get( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = data_priv.get( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Start the next in the queue if the last step wasn't forced.
+ // Timers currently will call their complete callbacks, which
+ // will dequeue but only if they were gotoEnd.
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each(function() {
+ var index,
+ data = data_priv.get( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // Enable finishing flag on private data
+ data.finish = true;
+
+ // Empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // Look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // Turn off finishing flag
+ delete data.finish;
+ });
+ }
+});
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+ var timer,
+ i = 0,
+ timers = jQuery.timers;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ jQuery.timers.push( timer );
+ if ( timer() ) {
+ jQuery.fx.start();
+ } else {
+ jQuery.timers.pop();
+ }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ clearInterval( timerId );
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+};
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects/animatedSelector.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects/animatedSelector.js
new file mode 100644
index 0000000..bc5a3d6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects/animatedSelector.js
@@ -0,0 +1,13 @@
+define([
+ "../core",
+ "../selector",
+ "../effects"
+], function( jQuery ) {
+
+jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+};
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects/Tween.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects/Tween.js
new file mode 100644
index 0000000..9acd8d0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/effects/Tween.js
@@ -0,0 +1,114 @@
+define([
+ "../core",
+ "../css"
+], function( jQuery ) {
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || "swing";
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ if ( tween.elem[ tween.prop ] != null &&
+ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // Passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails.
+ // Simple values such as "10px" are parsed to Float;
+ // complex values such as "rotate(1rad)" are returned as-is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+ // Use step hook for back compat.
+ // Use cssHook if its there.
+ // Use .style if available and use plain properties where available.
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE9
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p * Math.PI ) / 2;
+ }
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event.js
new file mode 100644
index 0000000..8f04b89
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event.js
@@ -0,0 +1,868 @@
+define([
+ "./core",
+ "./var/strundefined",
+ "./var/rnotwhite",
+ "./var/hasOwn",
+ "./var/slice",
+ "./event/support",
+ "./data/var/data_priv",
+
+ "./core/init",
+ "./data/accepts",
+ "./selector"
+], function( jQuery, strundefined, rnotwhite, hasOwn, slice, support, data_priv ) {
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = data_priv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !(events = elemData.events) ) {
+ events = elemData.events = {};
+ }
+ if ( !(eventHandle = elemData.handle) ) {
+ eventHandle = elemData.handle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !(handlers = events[ type ]) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = data_priv.hasData( elem ) && data_priv.get( elem );
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ delete elemData.handle;
+ data_priv.remove( elem, "events" );
+ }
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+
+ var i, cur, tmp, bubbleType, ontype, handle, special,
+ eventPath = [ elem || document ],
+ type = hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf(":") < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === (elem.ownerDocument || document) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
+ event.result = handle.apply( cur, data );
+ if ( event.result === false ) {
+ event.preventDefault();
+ }
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+ jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
+
+ var i, j, ret, matched, handleObj,
+ handlerQueue = [],
+ args = slice.call( arguments ),
+ handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+ // a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( (event.result = ret) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, matches, sel, handleObj,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ // Black-hole SVG <use> instance trees (#13180)
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.disabled !== true || event.type !== "click" ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) >= 0 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, handlers: matches });
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+ }
+
+ return handlerQueue;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var eventDoc, doc, body,
+ button = original.button;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop, copy,
+ type = event.type,
+ originalEvent = event,
+ fixHook = this.fixHooks[ type ];
+
+ if ( !fixHook ) {
+ this.fixHooks[ type ] = fixHook =
+ rmouseEvent.test( type ) ? this.mouseHooks :
+ rkeyEvent.test( type ) ? this.keyHooks :
+ {};
+ }
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = new jQuery.Event( originalEvent );
+
+ i = copy.length;
+ while ( i-- ) {
+ prop = copy[ i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Support: Cordova 2.5 (WebKit) (#13255)
+ // All events should have a target; Cordova deviceready doesn't
+ if ( !event.target ) {
+ event.target = document;
+ }
+
+ // Support: Safari 6.0+, Chrome<28
+ // Target should not be a text node (#504, #13143)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ this.focus();
+ return false;
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+ // Support: Android<4.0
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e && e.preventDefault ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e && e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && e.stopImmediatePropagation ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// Support: Chrome 15+
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// Support: Firefox, Chrome, Safari
+// Create "bubbling" focus and blur events
+if ( !support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler on the document while someone wants focusin/focusout
+ var handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ var doc = this.ownerDocument || this,
+ attaches = data_priv.access( doc, fix );
+
+ if ( !attaches ) {
+ doc.addEventListener( orig, handler, true );
+ }
+ data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
+ },
+ teardown: function() {
+ var doc = this.ownerDocument || this,
+ attaches = data_priv.access( doc, fix ) - 1;
+
+ if ( !attaches ) {
+ doc.removeEventListener( orig, handler, true );
+ data_priv.remove( doc, fix );
+
+ } else {
+ data_priv.access( doc, fix, attaches );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[0];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/ajax.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/ajax.js
new file mode 100644
index 0000000..278c403
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/ajax.js
@@ -0,0 +1,13 @@
+define([
+ "../core",
+ "../event"
+], function( jQuery ) {
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
+ jQuery.fn[ type ] = function( fn ) {
+ return this.on( type, fn );
+ };
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/alias.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/alias.js
new file mode 100644
index 0000000..7e79175
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/alias.js
@@ -0,0 +1,39 @@
+define([
+ "../core",
+ "../event"
+], function( jQuery ) {
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+});
+
+jQuery.fn.extend({
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+ }
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/support.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/support.js
new file mode 100644
index 0000000..85060db
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/event/support.js
@@ -0,0 +1,9 @@
+define([
+ "../var/support"
+], function( support ) {
+
+support.focusinBubbles = "onfocusin" in window;
+
+return support;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/exports/amd.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/exports/amd.js
new file mode 100644
index 0000000..9a9846f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/exports/amd.js
@@ -0,0 +1,24 @@
+define([
+ "../core"
+], function( jQuery ) {
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function() {
+ return jQuery;
+ });
+}
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/exports/global.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/exports/global.js
new file mode 100644
index 0000000..6513287
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/exports/global.js
@@ -0,0 +1,32 @@
+define([
+ "../core",
+ "../var/strundefined"
+], function( jQuery, strundefined ) {
+
+var
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( typeof noGlobal === strundefined ) {
+ window.jQuery = window.$ = jQuery;
+}
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/intro.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/intro.js
new file mode 100644
index 0000000..d7d4368
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/intro.js
@@ -0,0 +1,44 @@
+/*!
+ * jQuery JavaScript Library v@VERSION
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: @DATE
+ */
+
+(function( global, factory ) {
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//"use strict";
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/jquery.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/jquery.js
new file mode 100644
index 0000000..d3857e9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/jquery.js
@@ -0,0 +1,37 @@
+define([
+ "./core",
+ "./selector",
+ "./traversing",
+ "./callbacks",
+ "./deferred",
+ "./core/ready",
+ "./data",
+ "./queue",
+ "./queue/delay",
+ "./attributes",
+ "./event",
+ "./event/alias",
+ "./manipulation",
+ "./manipulation/_evalUrl",
+ "./wrap",
+ "./css",
+ "./css/hiddenVisibleSelectors",
+ "./serialize",
+ "./ajax",
+ "./ajax/xhr",
+ "./ajax/script",
+ "./ajax/jsonp",
+ "./ajax/load",
+ "./event/ajax",
+ "./effects",
+ "./effects/animatedSelector",
+ "./offset",
+ "./dimensions",
+ "./deprecated",
+ "./exports/amd",
+ "./exports/global"
+], function( jQuery ) {
+
+return jQuery;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation.js
new file mode 100644
index 0000000..c627962
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation.js
@@ -0,0 +1,580 @@
+define([
+ "./core",
+ "./var/concat",
+ "./var/push",
+ "./core/access",
+ "./manipulation/var/rcheckableType",
+ "./manipulation/support",
+ "./data/var/data_priv",
+ "./data/var/data_user",
+
+ "./core/init",
+ "./data/accepts",
+ "./traversing",
+ "./selector",
+ "./event"
+], function( jQuery, concat, push, access, rcheckableType, support, data_priv, data_user ) {
+
+var
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ rtagName = /<([\w:]+)/,
+ rhtml = /<|&#?\w+;/,
+ rnoInnerhtml = /<(?:script|style|link)/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /^$|\/(?:java|ecma)script/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+ // We have to close these tags to support XHTML (#13200)
+ wrapMap = {
+
+ // Support: IE9
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+ thead: [ 1, "<table>", "</table>" ],
+ col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ _default: [ 0, "", "" ]
+ };
+
+// Support: IE9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// Support: 1.x compatibility
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+ return jQuery.nodeName( elem, "table" ) &&
+ jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
+
+ elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+ elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+
+ if ( match ) {
+ elem.type = match[ 1 ];
+ } else {
+ elem.removeAttribute("type");
+ }
+
+ return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ data_priv.set(
+ elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+function cloneCopyEvent( src, dest ) {
+ var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // 1. Copy private data: events, handlers, etc.
+ if ( data_priv.hasData( src ) ) {
+ pdataOld = data_priv.access( src );
+ pdataCur = data_priv.set( dest, pdataOld );
+ events = pdataOld.events;
+
+ if ( events ) {
+ delete pdataCur.handle;
+ pdataCur.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+ }
+
+ // 2. Copy user data
+ if ( data_user.hasData( src ) ) {
+ udataOld = data_user.access( src );
+ udataCur = jQuery.extend( {}, udataOld );
+
+ data_user.set( dest, udataCur );
+ }
+}
+
+function getAll( context, tag ) {
+ var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
+ context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
+ [];
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], ret ) :
+ ret;
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+ var nodeName = dest.nodeName.toLowerCase();
+
+ // Fails to persist the checked state of a cloned checkbox or radio button.
+ if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+ dest.checked = src.checked;
+
+ // Fails to return the selected option to the default selected state when cloning options
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var i, l, srcElements, destElements,
+ clone = elem.cloneNode( true ),
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ // Fix IE cloning issues
+ if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+ !jQuery.isXMLDoc( elem ) ) {
+
+ // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ fixInput( srcElements[ i ], destElements[ i ] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ // Return the cloned set
+ return clone;
+ },
+
+ buildFragment: function( elems, context, scripts, selection ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+ // Support: QtWebKit, PhantomJS
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement("div") );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: QtWebKit, PhantomJS
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( (elem = nodes[ i++ ]) ) {
+
+ // #4087 - If origin and destination elements are the same, and this is
+ // that element, do not do anything
+ if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( (elem = tmp[ j++ ]) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+ },
+
+ cleanData: function( elems ) {
+ var data, elem, type, key,
+ special = jQuery.event.special,
+ i = 0;
+
+ for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
+ if ( jQuery.acceptData( elem ) ) {
+ key = elem[ data_priv.expando ];
+
+ if ( key && (data = data_priv.cache[ key ]) ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+ if ( data_priv.cache[ key ] ) {
+ // Discard any remaining `private` data
+ delete data_priv.cache[ key ];
+ }
+ }
+ }
+ // Discard any remaining `user` data
+ delete data_user.cache[ elem[ data_user.expando ] ];
+ }
+ }
+});
+
+jQuery.fn.extend({
+ text: function( value ) {
+ return access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().each(function() {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ this.textContent = value;
+ }
+ });
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ });
+ },
+
+ after: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ });
+ },
+
+ remove: function( selector, keepData /* Internal Use Only */ ) {
+ var elem,
+ elems = selector ? jQuery.filter( selector, this ) : this,
+ i = 0;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem ) );
+ }
+
+ if ( elem.parentNode ) {
+ if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+ setGlobalEval( getAll( elem, "script" ) );
+ }
+ elem.parentNode.removeChild( elem );
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; (elem = this[i]) != null; i++ ) {
+ if ( elem.nodeType === 1 ) {
+
+ // Prevent memory leaks
+ jQuery.cleanData( getAll( elem, false ) );
+
+ // Remove any remaining nodes
+ elem.textContent = "";
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map(function() {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ return access( this, function( value ) {
+ var elem = this[ 0 ] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined && elem.nodeType === 1 ) {
+ return elem.innerHTML;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+ value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+ try {
+ for ( ; i < l; i++ ) {
+ elem = this[ i ] || {};
+
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch( e ) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var arg = arguments[ 0 ];
+
+ // Make the changes, replacing each context element with the new content
+ this.domManip( arguments, function( elem ) {
+ arg = this.parentNode;
+
+ jQuery.cleanData( getAll( this ) );
+
+ if ( arg ) {
+ arg.replaceChild( elem, this );
+ }
+ });
+
+ // Force removal if there was no new content (e.g., from empty arguments)
+ return arg && (arg.length || arg.nodeType) ? this : this.remove();
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, callback ) {
+
+ // Flatten any nested arrays
+ args = concat.apply( [], args );
+
+ var fragment, first, scripts, hasScripts, node, doc,
+ i = 0,
+ l = this.length,
+ set = this,
+ iNoClone = l - 1,
+ value = args[ 0 ],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction ||
+ ( l > 1 && typeof value === "string" &&
+ !support.checkClone && rchecked.test( value ) ) ) {
+ return this.each(function( index ) {
+ var self = set.eq( index );
+ if ( isFunction ) {
+ args[ 0 ] = value.call( this, index, self.html() );
+ }
+ self.domManip( args, callback );
+ });
+ }
+
+ if ( l ) {
+ fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ if ( first ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+ // Support: QtWebKit
+ // jQuery.merge because push.apply(_, arraylike) throws
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( this[ i ], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+ // Optional AJAX dependency, but won't run scripts if not present
+ if ( jQuery._evalUrl ) {
+ jQuery._evalUrl( node.src );
+ }
+ } else {
+ jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return this;
+ }
+});
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1,
+ i = 0;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone( true );
+ jQuery( insert[ i ] )[ original ]( elems );
+
+ // Support: QtWebKit
+ // .get() because push.apply(_, arraylike) throws
+ push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/_evalUrl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/_evalUrl.js
new file mode 100644
index 0000000..6704749
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/_evalUrl.js
@@ -0,0 +1,18 @@
+define([
+ "../ajax"
+], function( jQuery ) {
+
+jQuery._evalUrl = function( url ) {
+ return jQuery.ajax({
+ url: url,
+ type: "GET",
+ dataType: "script",
+ async: false,
+ global: false,
+ "throws": true
+ });
+};
+
+return jQuery._evalUrl;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/support.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/support.js
new file mode 100644
index 0000000..822a014
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/support.js
@@ -0,0 +1,32 @@
+define([
+ "../var/support"
+], function( support ) {
+
+(function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Safari<=5.1
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Safari<=5.1, Android<4.2
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE<=11+
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+})();
+
+return support;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/var/rcheckableType.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/var/rcheckableType.js
new file mode 100644
index 0000000..c27a15d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/manipulation/var/rcheckableType.js
@@ -0,0 +1,3 @@
+define(function() {
+ return (/^(?:checkbox|radio)$/i);
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/offset.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/offset.js
new file mode 100644
index 0000000..4c34fd0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/offset.js
@@ -0,0 +1,207 @@
+define([
+ "./core",
+ "./var/strundefined",
+ "./core/access",
+ "./css/var/rnumnonpx",
+ "./css/curCSS",
+ "./css/addGetHookIf",
+ "./css/support",
+
+ "./core/init",
+ "./css",
+ "./selector" // contains
+], function( jQuery, strundefined, access, rnumnonpx, curCSS, addGetHookIf, support ) {
+
+var docElem = window.document.documentElement;
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+ setOffset: function( elem, options, i ) {
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+ position = jQuery.css( elem, "position" ),
+ curElem = jQuery( elem ),
+ props = {};
+
+ // Set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ curOffset = curElem.offset();
+ curCSSTop = jQuery.css( elem, "top" );
+ curCSSLeft = jQuery.css( elem, "left" );
+ calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+ ( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
+
+ // Need to be able to calculate position if either
+ // top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+jQuery.fn.extend({
+ offset: function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var docElem, win,
+ elem = this[ 0 ],
+ box = { top: 0, left: 0 },
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ // Support: BlackBerry 5, iOS 3 (original iPhone)
+ // If we don't have gBCR, just use 0,0 rather than error
+ if ( typeof elem.getBoundingClientRect !== strundefined ) {
+ box = elem.getBoundingClientRect();
+ }
+ win = getWindow( doc );
+ return {
+ top: box.top + win.pageYOffset - docElem.clientTop,
+ left: box.left + win.pageXOffset - docElem.clientLeft
+ };
+ },
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ elem = this[ 0 ],
+ parentOffset = { top: 0, left: 0 };
+
+ // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+ // Assume getBoundingClientRect is there when computed position is fixed
+ offset = elem.getBoundingClientRect();
+
+ } else {
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+ }
+
+ // Subtract parent offsets and element margins
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || docElem;
+
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ return offsetParent || docElem;
+ });
+ }
+});
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+ var top = "pageYOffset" === prop;
+
+ jQuery.fn[ method ] = function( val ) {
+ return access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? win[ prop ] : elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : window.pageXOffset,
+ top ? val : window.pageYOffset
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+// Support: Safari<7+, Chrome<37+
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+ function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+ // If curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ );
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/outro.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/outro.js
new file mode 100644
index 0000000..be4600a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/outro.js
@@ -0,0 +1 @@
+}));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/queue.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/queue.js
new file mode 100644
index 0000000..199c56d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/queue.js
@@ -0,0 +1,142 @@
+define([
+ "./core",
+ "./data/var/data_priv",
+ "./deferred",
+ "./callbacks"
+], function( jQuery, data_priv ) {
+
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = data_priv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray( data ) ) {
+ queue = data_priv.access( elem, type, jQuery.makeArray(data) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return data_priv.get( elem, key ) || data_priv.access( elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ data_priv.remove( elem, [ type + "queue", key ] );
+ })
+ });
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = data_priv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/queue/delay.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/queue/delay.js
new file mode 100644
index 0000000..4b4498c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/queue/delay.js
@@ -0,0 +1,22 @@
+define([
+ "../core",
+ "../queue",
+ "../effects" // Delay is optional because of this dependency
+], function( jQuery ) {
+
+// Based off of the plugin by Clint Helfers, with permission.
+// http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+};
+
+return jQuery.fn.delay;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector.js
new file mode 100644
index 0000000..01e9733
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector.js
@@ -0,0 +1 @@
+define([ "./selector-sizzle" ]);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector-native.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector-native.js
new file mode 100644
index 0000000..d8163c2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector-native.js
@@ -0,0 +1,172 @@
+define([
+ "./core"
+], function( jQuery ) {
+
+/*
+ * Optional (non-Sizzle) selector module for custom builds.
+ *
+ * Note that this DOES NOT SUPPORT many documented jQuery
+ * features in exchange for its smaller size:
+ *
+ * Attribute not equal selector
+ * Positional selectors (:first; :eq(n); :odd; etc.)
+ * Type selectors (:input; :checkbox; :button; etc.)
+ * State-based selectors (:animated; :visible; :hidden; etc.)
+ * :has(selector)
+ * :not(complex selector)
+ * custom selectors via Sizzle extensions
+ * Leading combinators (e.g., $collection.find("> *"))
+ * Reliable functionality on XML fragments
+ * Requiring all parts of a selector to match elements under context
+ * (e.g., $div.find("div > *") now matches children of $div)
+ * Matching against non-elements
+ * Reliable sorting of disconnected nodes
+ * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
+ *
+ * If any of these are unacceptable tradeoffs, either use Sizzle or
+ * customize this stub for the project's specific needs.
+ */
+
+var docElem = window.document.documentElement,
+ selector_hasDuplicate,
+ matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector,
+ selector_sortOrder = function( a, b ) {
+ // Flag for duplicate removal
+ if ( a === b ) {
+ selector_hasDuplicate = true;
+ return 0;
+ }
+
+ var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
+
+ if ( compare ) {
+ // Disconnected nodes
+ if ( compare & 1 ) {
+
+ // Choose the first element that is related to our document
+ if ( a === document || jQuery.contains(document, a) ) {
+ return -1;
+ }
+ if ( b === document || jQuery.contains(document, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ }
+
+ // Not directly comparable, sort on existence of method
+ return a.compareDocumentPosition ? -1 : 1;
+ };
+
+jQuery.extend({
+ find: function( selector, context, results, seed ) {
+ var elem, nodeType,
+ i = 0;
+
+ results = results || [];
+ context = context || document;
+
+ // Same basic safeguard as Sizzle
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ // Early return if context is not an element or document
+ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( seed ) {
+ while ( (elem = seed[i++]) ) {
+ if ( jQuery.find.matchesSelector(elem, selector) ) {
+ results.push( elem );
+ }
+ }
+ } else {
+ jQuery.merge( results, context.querySelectorAll(selector) );
+ }
+
+ return results;
+ },
+ unique: function( results ) {
+ var elem,
+ duplicates = [],
+ i = 0,
+ j = 0;
+
+ selector_hasDuplicate = false;
+ results.sort( selector_sortOrder );
+
+ if ( selector_hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ return results;
+ },
+ text: function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += jQuery.text( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ return elem.textContent;
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+ },
+ contains: function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && adown.contains(bup) );
+ },
+ isXMLDoc: function( elem ) {
+ return (elem.ownerDocument || elem).documentElement.nodeName !== "HTML";
+ },
+ expr: {
+ attrHandle: {},
+ match: {
+ bool: /^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,
+ needsContext: /^[\x20\t\r\n\f]*[>+~]/
+ }
+ }
+});
+
+jQuery.extend( jQuery.find, {
+ matches: function( expr, elements ) {
+ return jQuery.find( expr, null, null, elements );
+ },
+ matchesSelector: function( elem, expr ) {
+ return matches.call( elem, expr );
+ },
+ attr: function( elem, name ) {
+ return elem.getAttribute( name );
+ }
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector-sizzle.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector-sizzle.js
new file mode 100644
index 0000000..7d3926b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/selector-sizzle.js
@@ -0,0 +1,14 @@
+define([
+ "./core",
+ "sizzle"
+], function( jQuery, Sizzle ) {
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/serialize.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/serialize.js
new file mode 100644
index 0000000..0d6dfec
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/serialize.js
@@ -0,0 +1,111 @@
+define([
+ "./core",
+ "./manipulation/var/rcheckableType",
+ "./core/init",
+ "./traversing", // filter
+ "./attributes/prop"
+], function( jQuery, rcheckableType ) {
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+};
+
+jQuery.fn.extend({
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map(function() {
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ })
+ .filter(function() {
+ var type = this.type;
+
+ // Use .is( ":disabled" ) so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !rcheckableType.test( type ) );
+ })
+ .map(function( i, elem ) {
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val ) {
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.js
new file mode 100644
index 0000000..89aecbc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.js
@@ -0,0 +1,2067 @@
+/*!
+ * Sizzle CSS Selector Engine v2.2.0-pre
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-12-16
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // http://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + characterEncoding + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var match, elem, m, nodeType,
+ // QSA vars
+ i, groups, old, nid, newContext, newSelector;
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+
+ context = context || document;
+ results = results || [];
+ nodeType = context.nodeType;
+
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ if ( !seed && documentIsHTML ) {
+
+ // Try to shortcut find operations when possible (e.g., not under DocumentFragment)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document (jQuery #6963)
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && support.getElementsByClassName ) {
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // QSA path
+ if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ nid = old = expando;
+ newContext = context;
+ newSelector = nodeType !== 1 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + toSelector( groups[i] );
+ }
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = attrs.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, parent,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // If no document and documentElement is available, return
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Set our document
+ document = doc;
+ docElem = doc.documentElement;
+ parent = doc.defaultView;
+
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ // IE6-8 do not support the defaultView property so parent will be undefined
+ if ( parent && parent !== parent.top ) {
+ // IE11 does not have attachEvent, so all must suffer
+ if ( parent.addEventListener ) {
+ parent.addEventListener( "unload", unloadHandler, false );
+ } else if ( parent.attachEvent ) {
+ parent.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Support tests
+ ---------------------------------------------------------------------- */
+ documentIsHTML = !isXML( doc );
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [ m ] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
+ "<select id='" + expando + "-\f]' msallowcapture=''>" +
+ "<option selected=''></option></select>";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( div.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibing-combinator selector` fails
+ if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( div ) {
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = doc.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( div.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully does not implement inclusive descendent
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === doc ? -1 :
+ b === doc ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, outerCache, node, diff, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+ // Seek `elem` from a previously-cached index
+ outerCache = parent[ expando ] || (parent[ expando ] = {});
+ cache = outerCache[ type ] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = cache[0] === dirruns && cache[2];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ // Use previously-cached element index if available
+ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+ diff = cache[1];
+
+ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ } else {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+ if ( (oldCache = outerCache[ dir ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ outerCache[ dir ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is no seed and only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = "<a href='#'></a>";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = "<input/>";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+// EXPOSE
+if ( typeof define === "function" && define.amd ) {
+ define(function() { return Sizzle; });
+// Sizzle requires that there be a global window in Common-JS like environments
+} else if ( typeof module !== "undefined" && module.exports ) {
+ module.exports = Sizzle;
+} else {
+ window.Sizzle = Sizzle;
+}
+// EXPOSE
+
+})( window );
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.min.js
new file mode 100644
index 0000000..cf4d1a6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.min.js
@@ -0,0 +1,3 @@
+/*! Sizzle v2.2.0-pre | (c) 2008, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),"function"==typeof define&&define.amd?define(function(){return gb}):"undefined"!=typeof module&&module.exports?module.exports=gb:a.Sizzle=gb}(window);
+//# sourceMappingURL=sizzle.min.map
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.min.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.min.map
new file mode 100644
index 0000000..e39754e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/sizzle/dist/sizzle.min.map
@@ -0,0 +1 @@
+{"version":3,"file":"sizzle.min.js","sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","characterEncoding","identifier","replace","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","parentNode","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","toLowerCase","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","div","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","type","name","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","val","undefined","specified","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","last","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","div1","defaultValue","define","amd","module","exports"],"mappings":"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"}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing.js
new file mode 100644
index 0000000..d9ff0ae
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing.js
@@ -0,0 +1,199 @@
+define([
+ "./core",
+ "./var/indexOf",
+ "./traversing/var/rneedsContext",
+ "./core/init",
+ "./traversing/findFilter",
+ "./selector"
+], function( jQuery, indexOf, rneedsContext ) {
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.extend({
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+ },
+
+ sibling: function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+ }
+});
+
+jQuery.fn.extend({
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter(function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && (pos ?
+ pos.index(cur) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector(cur, selectors)) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.unique(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+});
+
+function sibling( cur, dir ) {
+ while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.unique( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing/findFilter.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing/findFilter.js
new file mode 100644
index 0000000..dd70a73
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing/findFilter.js
@@ -0,0 +1,100 @@
+define([
+ "../core",
+ "../var/indexOf",
+ "./var/rneedsContext",
+ "../selector"
+], function( jQuery, indexOf, rneedsContext ) {
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ });
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ });
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
+ });
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ }));
+};
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i,
+ len = this.length,
+ ret = [],
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ }) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], false) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], true) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+});
+
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing/var/rneedsContext.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing/var/rneedsContext.js
new file mode 100644
index 0000000..3d6ae40
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/traversing/var/rneedsContext.js
@@ -0,0 +1,6 @@
+define([
+ "../../core",
+ "../../selector"
+], function( jQuery ) {
+ return jQuery.expr.match.needsContext;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/arr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/arr.js
new file mode 100644
index 0000000..b18fc9c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/arr.js
@@ -0,0 +1,3 @@
+define(function() {
+ return [];
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/class2type.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/class2type.js
new file mode 100644
index 0000000..e674c3b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/class2type.js
@@ -0,0 +1,4 @@
+define(function() {
+ // [[Class]] -> type pairs
+ return {};
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/concat.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/concat.js
new file mode 100644
index 0000000..7dcf77e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/concat.js
@@ -0,0 +1,5 @@
+define([
+ "./arr"
+], function( arr ) {
+ return arr.concat;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/hasOwn.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/hasOwn.js
new file mode 100644
index 0000000..32c002a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/hasOwn.js
@@ -0,0 +1,5 @@
+define([
+ "./class2type"
+], function( class2type ) {
+ return class2type.hasOwnProperty;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/indexOf.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/indexOf.js
new file mode 100644
index 0000000..cdbe3c7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/indexOf.js
@@ -0,0 +1,5 @@
+define([
+ "./arr"
+], function( arr ) {
+ return arr.indexOf;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/pnum.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/pnum.js
new file mode 100644
index 0000000..4070447
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/pnum.js
@@ -0,0 +1,3 @@
+define(function() {
+ return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/push.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/push.js
new file mode 100644
index 0000000..ad6f0a1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/push.js
@@ -0,0 +1,5 @@
+define([
+ "./arr"
+], function( arr ) {
+ return arr.push;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/rnotwhite.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/rnotwhite.js
new file mode 100644
index 0000000..7c69bec
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/rnotwhite.js
@@ -0,0 +1,3 @@
+define(function() {
+ return (/\S+/g);
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/slice.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/slice.js
new file mode 100644
index 0000000..614d46c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/slice.js
@@ -0,0 +1,5 @@
+define([
+ "./arr"
+], function( arr ) {
+ return arr.slice;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/strundefined.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/strundefined.js
new file mode 100644
index 0000000..04e16b0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/strundefined.js
@@ -0,0 +1,3 @@
+define(function() {
+ return typeof undefined;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/support.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/support.js
new file mode 100644
index 0000000..b25dbc7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/support.js
@@ -0,0 +1,4 @@
+define(function() {
+ // All support tests are defined in their respective modules.
+ return {};
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/toString.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/toString.js
new file mode 100644
index 0000000..ca92d22
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/var/toString.js
@@ -0,0 +1,5 @@
+define([
+ "./class2type"
+], function( class2type ) {
+ return class2type.toString;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/wrap.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/wrap.js
new file mode 100644
index 0000000..4958251
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/jquery/src/wrap.js
@@ -0,0 +1,79 @@
+define([
+ "./core",
+ "./core/init",
+ "./manipulation", // clone
+ "./traversing" // parent, contents
+], function( jQuery ) {
+
+jQuery.fn.extend({
+ wrapAll: function( html ) {
+ var wrap;
+
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[ 0 ] ) {
+
+ // The elements to wrap the target around
+ wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+ if ( this[ 0 ].parentNode ) {
+ wrap.insertBefore( this[ 0 ] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstElementChild ) {
+ elem = elem.firstElementChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function( i ) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ }
+});
+
+return jQuery;
+});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/bower.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/bower.json
new file mode 100644
index 0000000..589795e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/bower.json
@@ -0,0 +1,26 @@
+{
+ "name": "matchHeight",
+ "version": "0.6.0",
+ "homepage": "https://github.com/liabru/jquery-match-height",
+ "authors": [
+ "Liam Brummitt <liam@brm.io> (http://brm.io/)"
+ ],
+ "description": "a more robust, responsive equal heights plugin for jQuery",
+ "main": "jquery.matchHeight-min.js",
+ "keywords": [
+ "matchHeight",
+ "equal",
+ "match",
+ "height",
+ "equalize",
+ "columns"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "tests"
+ ]
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/CHANGELOG.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/CHANGELOG.md
new file mode 100644
index 0000000..8f3c185
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/CHANGELOG.md
@@ -0,0 +1,43 @@
+# jquery.matchHeight.js Changelog
+
+[brm.io/jquery-match-height](http://brm.io/jquery-match-height/)
+
+----------
+
+## 0.6.0
+
+- added options parameter
+- added `property` option
+- added `target` option
+- added callback events
+- added maintain scroll
+- added inline-block support
+- added hidden elements support
+- improved performance and throttling
+- improved demo
+
+- fixed declaration order issue when using requirejs
+- fixed issues for people using build concatenation
+- fixed data api issue with missing data-mh
+- fixed IE8 border calculation
+- fixed Safari row detection
+- fixed inline style preservation
+
+## 0.5.2
+
+- improved demo
+- added matchHeight('remove')
+- added update throttling
+- removed forced `display:block` after application
+
+## 0.5.1
+
+- fixed IE8 NaN bug when parsing 'auto' properties
+- fixed IE8 window resize event loop bug
+- fixed compatibility with older jQuery versions
+- added bower package file
+- added jquery package file
+
+## 0.5.0 - 2014-03-02
+
+- initial release
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/jquery.matchHeight.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/jquery.matchHeight.js
new file mode 100644
index 0000000..656609b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/jquery.matchHeight.js
@@ -0,0 +1,353 @@
+/**
+* jquery.matchHeight.js master
+* http://brm.io/jquery-match-height/
+* License: MIT
+*/
+
+;(function($) {
+ /*
+ * internal
+ */
+
+ var _previousResizeWidth = -1,
+ _updateTimeout = -1;
+
+ /*
+ * _parse
+ * value parse utility function
+ */
+
+ var _parse = function(value) {
+ // parse value and convert NaN to 0
+ return parseFloat(value) || 0;
+ };
+
+ /*
+ * _rows
+ * utility function returns array of jQuery selections representing each row
+ * (as displayed after float wrapping applied by browser)
+ */
+
+ var _rows = function(elements) {
+ var tolerance = 1,
+ $elements = $(elements),
+ lastTop = null,
+ rows = [];
+
+ // group elements by their top position
+ $elements.each(function(){
+ var $that = $(this),
+ top = $that.offset().top - _parse($that.css('margin-top')),
+ lastRow = rows.length > 0 ? rows[rows.length - 1] : null;
+
+ if (lastRow === null) {
+ // first item on the row, so just push it
+ rows.push($that);
+ } else {
+ // if the row top is the same, add to the row group
+ if (Math.floor(Math.abs(lastTop - top)) <= tolerance) {
+ rows[rows.length - 1] = lastRow.add($that);
+ } else {
+ // otherwise start a new row group
+ rows.push($that);
+ }
+ }
+
+ // keep track of the last row top
+ lastTop = top;
+ });
+
+ return rows;
+ };
+
+ /*
+ * _parseOptions
+ * handle plugin options
+ */
+
+ var _parseOptions = function(options) {
+ var opts = {
+ byRow: true,
+ property: 'height',
+ target: null,
+ remove: false
+ };
+
+ if (typeof options === 'object') {
+ return $.extend(opts, options);
+ }
+
+ if (typeof options === 'boolean') {
+ opts.byRow = options;
+ } else if (options === 'remove') {
+ opts.remove = true;
+ }
+
+ return opts;
+ };
+
+ /*
+ * matchHeight
+ * plugin definition
+ */
+
+ var matchHeight = $.fn.matchHeight = function(options) {
+ var opts = _parseOptions(options);
+
+ // handle remove
+ if (opts.remove) {
+ var that = this;
+
+ // remove fixed height from all selected elements
+ this.css(opts.property, '');
+
+ // remove selected elements from all groups
+ $.each(matchHeight._groups, function(key, group) {
+ group.elements = group.elements.not(that);
+ });
+
+ // TODO: cleanup empty groups
+
+ return this;
+ }
+
+ if (this.length <= 1 && !opts.target) {
+ return this;
+ }
+
+ // keep track of this group so we can re-apply later on load and resize events
+ matchHeight._groups.push({
+ elements: this,
+ options: opts
+ });
+
+ // match each element's height to the tallest element in the selection
+ matchHeight._apply(this, opts);
+
+ return this;
+ };
+
+ /*
+ * plugin global options
+ */
+
+ matchHeight._groups = [];
+ matchHeight._throttle = 80;
+ matchHeight._maintainScroll = false;
+ matchHeight._beforeUpdate = null;
+ matchHeight._afterUpdate = null;
+
+ /*
+ * matchHeight._apply
+ * apply matchHeight to given elements
+ */
+
+ matchHeight._apply = function(elements, options) {
+ var opts = _parseOptions(options),
+ $elements = $(elements),
+ rows = [$elements];
+
+ // take note of scroll position
+ var scrollTop = $(window).scrollTop(),
+ htmlHeight = $('html').outerHeight(true);
+
+ // get hidden parents
+ var $hiddenParents = $elements.parents().filter(':hidden');
+
+ // cache the original inline style
+ $hiddenParents.each(function() {
+ var $that = $(this);
+ $that.data('style-cache', $that.attr('style'));
+ });
+
+ // temporarily must force hidden parents visible
+ $hiddenParents.css('display', 'block');
+
+ // get rows if using byRow, otherwise assume one row
+ if (opts.byRow && !opts.target) {
+
+ // must first force an arbitrary equal height so floating elements break evenly
+ $elements.each(function() {
+ var $that = $(this),
+ display = $that.css('display') === 'inline-block' ? 'inline-block' : 'block';
+
+ // cache the original inline style
+ $that.data('style-cache', $that.attr('style'));
+
+ $that.css({
+ 'display': display,
+ 'padding-top': '0',
+ 'padding-bottom': '0',
+ 'margin-top': '0',
+ 'margin-bottom': '0',
+ 'border-top-width': '0',
+ 'border-bottom-width': '0',
+ 'height': '100px'
+ });
+ });
+
+ // get the array of rows (based on element top position)
+ rows = _rows($elements);
+
+ // revert original inline styles
+ $elements.each(function() {
+ var $that = $(this);
+ $that.attr('style', $that.data('style-cache') || '');
+ });
+ }
+
+ $.each(rows, function(key, row) {
+ var $row = $(row),
+ targetHeight = 0;
+
+ if (!opts.target) {
+ // skip apply to rows with only one item
+ if (opts.byRow && $row.length <= 1) {
+ $row.css(opts.property, '');
+ return;
+ }
+
+ // iterate the row and find the max height
+ $row.each(function(){
+ var $that = $(this),
+ display = $that.css('display') === 'inline-block' ? 'inline-block' : 'block';
+
+ // ensure we get the correct actual height (and not a previously set height value)
+ var css = { 'display': display };
+ css[opts.property] = '';
+ $that.css(css);
+
+ // find the max height (including padding, but not margin)
+ if ($that.outerHeight(false) > targetHeight) {
+ targetHeight = $that.outerHeight(false);
+ }
+
+ // revert display block
+ $that.css('display', '');
+ });
+ } else {
+ // if target set, use the height of the target element
+ targetHeight = opts.target.outerHeight(false);
+ }
+
+ // iterate the row and apply the height to all elements
+ $row.each(function(){
+ var $that = $(this),
+ verticalPadding = 0;
+
+ // don't apply to a target
+ if (opts.target && $that.is(opts.target)) {
+ return;
+ }
+
+ // handle padding and border correctly (required when not using border-box)
+ if ($that.css('box-sizing') !== 'border-box') {
+ verticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width'));
+ verticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom'));
+ }
+
+ // set the height (accounting for padding and border)
+ $that.css(opts.property, targetHeight - verticalPadding);
+ });
+ });
+
+ // revert hidden parents
+ $hiddenParents.each(function() {
+ var $that = $(this);
+ $that.attr('style', $that.data('style-cache') || null);
+ });
+
+ // restore scroll position if enabled
+ if (matchHeight._maintainScroll) {
+ $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true));
+ }
+
+ return this;
+ };
+
+ /*
+ * matchHeight._applyDataApi
+ * applies matchHeight to all elements with a data-match-height attribute
+ */
+
+ matchHeight._applyDataApi = function() {
+ var groups = {};
+
+ // generate groups by their groupId set by elements using data-match-height
+ $('[data-match-height], [data-mh]').each(function() {
+ var $this = $(this),
+ groupId = $this.attr('data-mh') || $this.attr('data-match-height');
+
+ if (groupId in groups) {
+ groups[groupId] = groups[groupId].add($this);
+ } else {
+ groups[groupId] = $this;
+ }
+ });
+
+ // apply matchHeight to each group
+ $.each(groups, function() {
+ this.matchHeight(true);
+ });
+ };
+
+ /*
+ * matchHeight._update
+ * updates matchHeight on all current groups with their correct options
+ */
+
+ var _update = function(event) {
+ if (matchHeight._beforeUpdate) {
+ matchHeight._beforeUpdate(event, matchHeight._groups);
+ }
+
+ $.each(matchHeight._groups, function() {
+ matchHeight._apply(this.elements, this.options);
+ });
+
+ if (matchHeight._afterUpdate) {
+ matchHeight._afterUpdate(event, matchHeight._groups);
+ }
+ };
+
+ matchHeight._update = function(throttle, event) {
+ // prevent update if fired from a resize event
+ // where the viewport width hasn't actually changed
+ // fixes an event looping bug in IE8
+ if (event && event.type === 'resize') {
+ var windowWidth = $(window).width();
+ if (windowWidth === _previousResizeWidth) {
+ return;
+ }
+ _previousResizeWidth = windowWidth;
+ }
+
+ // throttle updates
+ if (!throttle) {
+ _update(event);
+ } else if (_updateTimeout === -1) {
+ _updateTimeout = setTimeout(function() {
+ _update(event);
+ _updateTimeout = -1;
+ }, matchHeight._throttle);
+ }
+ };
+
+ /*
+ * bind events
+ */
+
+ // apply on DOM ready event
+ $(matchHeight._applyDataApi);
+
+ // update heights on load and resize events
+ $(window).bind('load', function(event) {
+ matchHeight._update(false, event);
+ });
+
+ // throttled update heights on resize events
+ $(window).bind('resize orientationchange', function(event) {
+ matchHeight._update(true, event);
+ });
+
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/jquery.matchHeight-min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/jquery.matchHeight-min.js
new file mode 100644
index 0000000..226af87
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/jquery.matchHeight-min.js
@@ -0,0 +1,11 @@
+/**
+* jquery.matchHeight-min.js master
+* http://brm.io/jquery-match-height/
+* License: MIT
+*/
+(function(c){var n=-1,f=-1,g=function(a){return parseFloat(a)||0},r=function(a){var b=null,d=[];c(a).each(function(){var a=c(this),k=a.offset().top-g(a.css("margin-top")),l=0<d.length?d[d.length-1]:null;null===l?d.push(a):1>=Math.floor(Math.abs(b-k))?d[d.length-1]=l.add(a):d.push(a);b=k});return d},p=function(a){var b={byRow:!0,property:"height",target:null,remove:!1};if("object"===typeof a)return c.extend(b,a);"boolean"===typeof a?b.byRow=a:"remove"===a&&(b.remove=!0);return b},b=c.fn.matchHeight=
+function(a){a=p(a);if(a.remove){var e=this;this.css(a.property,"");c.each(b._groups,function(a,b){b.elements=b.elements.not(e)});return this}if(1>=this.length&&!a.target)return this;b._groups.push({elements:this,options:a});b._apply(this,a);return this};b._groups=[];b._throttle=80;b._maintainScroll=!1;b._beforeUpdate=null;b._afterUpdate=null;b._apply=function(a,e){var d=p(e),h=c(a),k=[h],l=c(window).scrollTop(),f=c("html").outerHeight(!0),m=h.parents().filter(":hidden");m.each(function(){var a=c(this);
+a.data("style-cache",a.attr("style"))});m.css("display","block");d.byRow&&!d.target&&(h.each(function(){var a=c(this),b="inline-block"===a.css("display")?"inline-block":"block";a.data("style-cache",a.attr("style"));a.css({display:b,"padding-top":"0","padding-bottom":"0","margin-top":"0","margin-bottom":"0","border-top-width":"0","border-bottom-width":"0",height:"100px"})}),k=r(h),h.each(function(){var a=c(this);a.attr("style",a.data("style-cache")||"")}));c.each(k,function(a,b){var e=c(b),f=0;if(d.target)f=
+d.target.outerHeight(!1);else{if(d.byRow&&1>=e.length){e.css(d.property,"");return}e.each(function(){var a=c(this),b={display:"inline-block"===a.css("display")?"inline-block":"block"};b[d.property]="";a.css(b);a.outerHeight(!1)>f&&(f=a.outerHeight(!1));a.css("display","")})}e.each(function(){var a=c(this),b=0;d.target&&a.is(d.target)||("border-box"!==a.css("box-sizing")&&(b+=g(a.css("border-top-width"))+g(a.css("border-bottom-width")),b+=g(a.css("padding-top"))+g(a.css("padding-bottom"))),a.css(d.property,
+f-b))})});m.each(function(){var a=c(this);a.attr("style",a.data("style-cache")||null)});b._maintainScroll&&c(window).scrollTop(l/f*c("html").outerHeight(!0));return this};b._applyDataApi=function(){var a={};c("[data-match-height], [data-mh]").each(function(){var b=c(this),d=b.attr("data-mh")||b.attr("data-match-height");a[d]=d in a?a[d].add(b):b});c.each(a,function(){this.matchHeight(!0)})};var q=function(a){b._beforeUpdate&&b._beforeUpdate(a,b._groups);c.each(b._groups,function(){b._apply(this.elements,
+this.options)});b._afterUpdate&&b._afterUpdate(a,b._groups)};b._update=function(a,e){if(e&&"resize"===e.type){var d=c(window).width();if(d===n)return;n=d}a?-1===f&&(f=setTimeout(function(){q(e);f=-1},b._throttle)):q(e)};c(b._applyDataApi);c(window).bind("load",function(a){b._update(!1,a)});c(window).bind("resize orientationchange",function(a){b._update(!0,a)})})(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/lib/jquery-1.11.0.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/lib/jquery-1.11.0.min.js
new file mode 100644
index 0000000..73f33fb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/lib/jquery-1.11.0.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
+}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
+},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/LICENSE b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/LICENSE
new file mode 100644
index 0000000..d434f8f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Liam Brummitt
+
+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.
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/matchHeight.jquery.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/matchHeight.jquery.json
new file mode 100644
index 0000000..0626cb4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/matchHeight.jquery.json
@@ -0,0 +1,32 @@
+{
+ "name": "matchHeight",
+ "title": "jQuery matchHeight",
+ "description": "A more robust equal heights plugin for jQuery",
+ "keywords": [
+ "matchHeight",
+ "equal",
+ "match",
+ "height",
+ "equalize",
+ "columns"
+ ],
+ "version": "0.5.2",
+ "author": {
+ "name": "liabru",
+ "url": "http://brm.io"
+ },
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://github.com/liabru/jquery-match-height/blob/master/LICENSE"
+ }
+ ],
+ "demo": "http://brm.io/jquery-match-height-demo/",
+ "bugs": "https://github.com/liabru/jquery-match-height/issues",
+ "homepage": "http://brm.io/jquery-match-height/",
+ "docs": "http://brm.io/jquery-match-height/",
+ "download": "https://github.com/liabru/jquery-match-height",
+ "dependencies": {
+ "jquery": ">=1.5"
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/README.md
new file mode 100644
index 0000000..27c3883
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/README.md
@@ -0,0 +1,197 @@
+# jquery.matchHeight.js #
+
+> *matchHeight* makes the height of all selected elements exactly equal.<br>
+It handles many edge cases that cause similar plugins to fail.
+
+[brm.io/jquery-match-height](http://brm.io/jquery-match-height/)
+
+### Demo
+
+See the [jquery.matchHeight.js demo](http://brm.io/jquery-match-height-demo).
+
+[](http://brm.io/jquery-match-height-demo)
+
+### Features
+
+- match the heights for groups of elements automatically
+- use the maximum height or define a specific target element
+- anywhere on the page and anywhere in the DOM
+- responsive (updates on window resize)
+- row aware (handles floating elements and wrapping)
+- accounts for `box-sizing` and mixed `padding`, `margin`, `border` values
+- handles images and other media (updates after loading)
+- supports hidden or none-visible elements (e.g. those inside tab controls)
+- throttled to balance performance and smoothness
+- easily removed when needed
+- maintain scroll position
+- data attributes API
+- callback events
+- tested in IE8+, Chrome, Firefox, Chrome Android
+
+### Status
+
+Current version is `v0.6.0`. <br>
+Use the master build for the latest features. <br>
+Please report any [issues](https://github.com/liabru/jquery-match-height/issues) you find.
+
+### Install
+
+[jQuery](http://jquery.com/download/) is required, so include it first.
+<br>Download [jquery.matchHeight.js](https://github.com/liabru/jquery-match-height/blob/master/jquery.matchHeight.js) and include the script in your HTML file:
+
+ <script src="jquery.matchHeight.js" type="text/javascript"></script>
+
+#### Or install using [Bower](http://bower.io/)
+
+ bower install matchHeight
+
+### Usage
+
+ $(elements).matchHeight(options);
+
+Where options is an optional parameter. <br>
+See below for a description of the available options and defaults.
+
+Call this on the [DOM ready](http://api.jquery.com/ready/) event (the plugin will automatically update on window load). <br>
+See below for examples or the included [test.html](https://github.com/liabru/jquery-match-height/blob/master/test.html).
+
+Also see the [Data API](#data-api) below for a simple, alternative inline usage.
+
+### Options
+
+The default options are:
+
+ $(elements).matchHeight({
+ byRow: true,
+ property: 'height',
+ target: null,
+ remove: false
+ });
+
+Where:
+
+- `byRow` is `true` or `false` to enable row detection
+- `property` is the CSS property name to set (e.g. `'height'` or `'min-height'`)
+- `target` is an optional element to use instead of the element with maximum height
+- `remove` is `true` or `false` to remove previous bindings instead of applying new ones
+
+### Examples
+
+ $(function() {
+ $('.item').matchHeight();
+ });
+
+The above will set all elements with the class `item` to the height of the tallest.<br>
+If the items are on multiple rows, the items of each row will be set to the tallest of that row (see `byRow`).
+
+ $(function() {
+ $('.item').matchHeight({
+ target: $('.sidebar')
+ });
+ });
+
+The above will set all elements with the class `item` to the height of the first item with class `sidebar`.
+
+ <div data-mh="my-group">My text</div>
+ <div data-mh="my-group">Some other text</div>
+ <div data-mh="my-other-group">Even more text</div>
+ <div data-mh="my-other-group">The last bit of text</div>
+
+The above will set both elements in `my-group` to the same height as each other.
+It will set both elements in `my-other-group` to be the same height as each other.
+
+See the included [test.html](https://github.com/liabru/jquery-match-height/blob/master/test.html) for a working example.
+
+### Data API
+
+Use the data attribute `data-mh="group-name"` where `group-name` is an arbitrary string to identify which elements should be considered as a group.
+
+All elements with the same group name will be set to the same height when the page is loaded, regardless of their position in the DOM, without any extra code required.
+
+Note that `byRow` will be enabled when using the data API, if you don't want this (or require other options) then use the alternative method above.
+
+### Advanced Usage
+
+There are a few internal properties and functions you should know about:
+
+#### Manually trigger an update
+
+ $.fn.matchHeight._update()
+
+If you need to manually trigger an update of all currently set groups, for example if you've modified some content.
+
+#### Callback events
+
+Since matchHeight automatically handles updating the layout after certain window events, you can supply functions as global callbacks if you need to be notified:
+
+ $.fn.matchHeight._beforeUpdate = function(event, groups) {
+ // do something before any updates are applied
+ }
+
+ $.fn.matchHeight._afterUpdate = function(event, groups) {
+ // do something after all updates are applied
+ }
+
+Where `event` a jQuery event object (e.g. `load`, `resize`, `orientationchange`) and `groups` is a reference to `$.fn.matchHeight._groups` (see below).
+
+#### Manually apply match height
+
+ $.fn.matchHeight._apply(elements, options)
+
+Use the apply function directly if you wish to avoid the automatic update functionality.
+
+#### Throttling resize updates
+
+ $.fn.matchHeight._throttle = 80;
+
+By default, the `_update` method is throttled to execute at a maximum rate of once every `80ms`.
+Decreasing the above `_throttle` property will update your layout quicker, appearing smoother during resize, at the expense of performance.
+If you experience lagging or freezing during resize, you should increase the `_throttle` property.
+
+#### Maintain scroll position
+
+ $.fn.matchHeight._maintainScroll = true;
+
+Under certain conditions where the size of the page is dynamically changing, such as during resize or when adding new elements, browser bugs cause the page scroll position to change unexpectedly.
+
+If you are observing this behaviour, use the above line to automatically attempt to force scroll position to be maintained (approximately). This is a global setting and by default it is `false`.
+
+#### Accessing current group bindings
+
+ $.fn.matchHeight._groups
+
+The array that contains all element groups that have had `matchHeight` applied. Used internally for automatically updating on resize events, but you may modify this array if you need to manually access any groups (e.g. if you're deleting elements).
+
+### Known limitations
+
+#### CSS transitions and animations are not supported
+
+You should ensure that there are no transitions or other animations that will delay the height changes of the elements you are matching, including any `transition: all` rules. Otherwise the plugin will produce unexpected results, as animations can't be accounted for.
+
+#### Delayed webfonts may cause incorrect height
+
+Some browsers [do not wait](http://www.stevesouders.com/blog/2009/10/13/font-face-and-performance/) for webfonts to load before firing the window load event, so if the font loads too slowly the plugin may produce unexpected results.
+
+If this is a problem, you should call `_update` once your font has loaded by using something like the [webfontloader](https://github.com/typekit/webfontloader) script.
+
+#### Content changes require a manual update
+
+If you change the content inside an element that has had `matchHeight` applied, then you must manually call `$.fn.matchHeight._update()` afterwards. This will update of all currently set equal heights groups.
+
+### Changelog
+
+To see what's new or changed in the latest version, see the [changelog](https://github.com/liabru/jquery-match-height/blob/master/CHANGELOG.md)
+
+### License
+
+jquery.matchHeight.js is licensed under [The MIT License (MIT)](http://opensource.org/licenses/MIT)
+<br/>Copyright (c) 2014 Liam Brummitt
+
+This license is also supplied with the release and source code.
+<br/>As stated in the license, absolutely no warranty is provided.
+
+##### Why not use CSS?
+
+Making robust, responsive equal height columns for _arbitrary content_ is [difficult or impossible](http://filamentgroup.com/lab/setting_equal_heights_with_jquery/) to do with CSS alone (at least without hacks or trickery, in a backwards compatible way).
+
+Note you should probably ensure your layout is still usable if JavaScript is disabled.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.css
new file mode 100644
index 0000000..b0e9485
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.css
@@ -0,0 +1,280 @@
+/* test page styling */
+
+* {
+ padding: 0;
+ margin: 0;
+}
+
+body {
+ background: #033649;
+ font-family: Georgia, Times, "Times New Roman", serif;
+ color: #fff;
+ border: 9px solid #fff;
+}
+
+h1 {
+ color: #fff;
+ display: block;
+ margin: 0 0 1em 0;
+ font-weight: normal;
+ font-size: 30px;
+}
+
+h2 {
+ color: #ddd;
+ display: block;
+ margin: 0 0 1em 0;
+ font-weight: normal;
+ font-size: 24px;
+}
+
+p, ul li {
+ margin: 0 0 1em 0;
+ color: #bebebe;
+ font-size: 12px;
+}
+
+ul {
+ list-style: square;
+}
+
+.nav {
+ margin: 0 0 2em 0;
+ font-size: 16px;
+}
+
+a, a:link, a:visited, a:active, a:hover {
+ color: #ccc;
+ text-decoration: none;
+ border-bottom: 1px solid #555;
+ padding: 0 0 2px 0;
+}
+
+.container {
+ width: 80%;
+ margin: 0 auto;
+ padding: 60px 20px;
+}
+
+.nav-sep {
+ padding: 0 5px;
+}
+
+.controls {
+ overflow: hidden;
+ margin: 60px 0 30px 0;
+}
+
+.controls .checkbox {
+ float: left;
+ font-size: 13px;
+ color: #ddd;
+ margin: 5px 20px 5px 0;
+}
+
+.btn-remove,
+.btn-hidden {
+ margin: -8px 20px 0 20px;
+ line-height: 1;
+ border: 0;
+ background: #ddd;
+ color: #555;
+ padding: 7px 10px;
+}
+
+/* test items */
+
+.items-container,
+.data-test-items,
+.target-items {
+ overflow: hidden;
+ margin: 0 -1%;
+}
+
+.item {
+ display: block;
+ float: left;
+ width: 23%;
+ background: #00A0B0;
+}
+
+.item p {
+ color: rgba(255,255,255,0.6);
+ line-height: 1.5;
+ font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
+}
+
+.item h2,
+.item h3,
+.item h4 {
+ color: #fff;
+ margin: 0 0 1em 0;
+ font-weight: normal;
+}
+
+.item h2 {
+ font-size: 24px;
+}
+
+.item h3 {
+ font-size: 20px;
+}
+
+.item h4 {
+ font-size: 16px;
+}
+
+.item-0 { background: #00A0B0; border-color: #008795 !important; }
+.item-1 { background: #6A4A3C; border-color: #52392e !important; }
+.item-2 { background: #CC333F; border-color: #ad2b35 !important; }
+.item-3 { background: #EB6841; border-color: #ca5938 !important; }
+.item-4 { background: #EDC951; border-color: #d8b74a !important; }
+.item-5 { background: #00A0B0; border-color: #008795 !important; }
+.item-6 { background: #6A4A3C; border-color: #52392e !important; }
+.item-7 { background: #CC333F; border-color: #ad2b35 !important; }
+.item-8 { background: #EB6841; border-color: #ca5938 !important; }
+.item-9 { background: #EDC951; border-color: #d8b74a !important; }
+.item-10 { background: #00A0B0; border-color: #008795 !important; }
+.item-11 { background: #6A4A3C; border-color: #52392e !important; }
+
+.item img {
+ display: block;
+ max-width: 100%;
+}
+
+.item p:last-child {
+ margin-bottom: 0;
+}
+
+.items-container.big-items .item {
+ width: 48%;
+}
+
+/* test margins */
+
+.test-margin .item {
+ margin: 1%;
+}
+
+/* test a mix of padding amounts */
+
+.test-padding .item {
+ padding: 20px;
+}
+
+.test-padding .item-5 {
+ padding: 30px;
+}
+
+.test-padding .item-6 {
+ padding: 40px;
+}
+
+.test-padding .item-7 {
+ padding: 50px;
+}
+
+/* test a mix of border widths */
+
+.test-border .item {
+ border: 1px solid #eee;
+}
+
+.test-border .item-2 {
+ border: 3px solid #eee;
+}
+
+.test-border .item-3 {
+ border: 6px solid #eee;
+}
+
+.test-border .item-5 {
+ border: 8px solid #eee;
+}
+
+.test-border .item-8 {
+ border: 10px solid #eee;
+}
+
+/* test border-box */
+
+.test-border-box .item {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+/* test fixed height items */
+
+.items-container.fixed-items .item-0 {
+ height: 150px;
+}
+
+.items-container.fixed-items .item-1 {
+ height: 190px;
+}
+
+.items-container.fixed-items .item-2 {
+ height: 230px;
+}
+
+.items-container.fixed-items .item-3 {
+ height: 250px;
+}
+
+/* test target */
+
+.target-items .item {
+ overflow-y: auto;
+}
+
+/* test responsive */
+
+@media only screen and (max-width: 1024px) {
+ .item,
+ .items-container.big-items .item {
+ width: 48%;
+ }
+}
+
+@media only screen and (max-width: 640px) {
+ .test-margin .item,
+ .test-margin .items-container.big-items .item {
+ width: 99%;
+ margin-left: 0;
+ margin-right: 0;
+ }
+}
+
+/* test hidden */
+
+.test-hidden .hidden-items > .item-0,
+.test-hidden .hidden-items > .item-2 {
+ display: none;
+}
+
+.test-hidden .hidden-items > .item-1,
+.test-hidden .hidden-items > .item-3 {
+ visibility: hidden;
+}
+
+.test-hidden .hidden-items .items-container {
+ display: none;
+}
+
+.hidden-items .items-container .item {
+ width: 48%;
+}
+
+/* test inline-block */
+
+.inline-block-items {
+ text-align: center;
+}
+
+.inline-block-items .item {
+ display: inline-block;
+ vertical-align: top;
+ /*width: 20%;*/
+ float: none;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.html
new file mode 100644
index 0000000..c066466
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.html
@@ -0,0 +1,322 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <!-- IE testing -->
+ <!-- <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">-->
+ <!-- <meta http-equiv="X-UA-Compatible" content="IE=9">-->
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="robots" content="noindex">
+ <title>jquery.matchHeight Tests</title>
+ <link rel="stylesheet" href="./test.css">
+ <script type="text/javascript" src="./lib/jquery-1.11.0.min.js"></script>
+ <script type="text/javascript" src="./jquery.matchHeight.js"></script>
+ <script type="text/javascript" src="./test.js"></script>
+ <script type="text/javascript">
+ (function() {
+
+ /* matchHeight example */
+
+ $(function() {
+ // apply your matchHeight on DOM ready (they will be automatically re-applied on load or resize)
+
+ // get test settings
+ var byRow = $('body').hasClass('test-rows');
+
+ // apply matchHeight to each item container's items
+ $('.items-container').each(function() {
+ $(this).children('.item').matchHeight({
+ byRow: byRow
+ });
+ });
+
+ // test target
+ $('.target-items').each(function() {
+ $(this).children('.item-0, .item-2, .item-3').matchHeight({
+ target: $(this).find('.item-1')
+ });
+ });
+
+ // example of removing matchHeight
+ $('.btn-remove').click(function() {
+ $('.item').matchHeight({
+ remove: true
+ });
+ });
+
+ // button to show hidden elements
+ $('.btn-hidden').click(function() {
+ $('body').removeClass('test-hidden');
+ });
+
+ // example of update callbacks (uncomment to test)
+ $.fn.matchHeight._beforeUpdate = function(event, groups) {
+ //var eventType = event ? event.type + ' event, ' : '';
+ //console.log("beforeUpdate, " + eventType + groups.length + " groups");
+ }
+
+ $.fn.matchHeight._afterUpdate = function(event, groups) {
+ //var eventType = event ? event.type + ' event, ' : '';
+ //console.log("afterUpdate, " + eventType + groups.length + " groups");
+ }
+ });
+
+ })();
+ </script>
+ </head>
+ <body class="test-match-height test-rows test-responsive test-border-box test-margin test-padding test-hidden">
+ <div class="container">
+ <h1>jquery.matchHeight Tests</h1>
+
+ <div class="nav"><a href="http://brm.io/jquery-match-height/">Project page</a> <span class="nav-sep">·</span> <a href="https://github.com/liabru/jquery-match-height">GitHub</a></div>
+
+ <ul>
+ <li>A more robust equal heights plugin that correctly handles mixed padding, margin, border, box-sizing, rows, groups</li>
+ <li>Handles images and responsive layouts by automatically updating when needed</li>
+ <li>To test, apply different combinations of options below to try different edge case scenarios</li>
+ <li>Resize the browser to test the responsive updating</li>
+ </ul>
+
+ <div class="controls">
+ <div class="checkbox">
+ <label>
+ <input class="option" type="checkbox" value="test-padding" checked>
+ padding
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input class="option" type="checkbox" value="test-margin" checked>
+ margin
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input class="option" type="checkbox" value="test-border" checked>
+ border
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input class="option" type="checkbox" value="test-border-box" checked>
+ border-box
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input class="option" type="checkbox" value="test-rows" checked>
+ by row
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input class="btn-remove" type="submit" value="remove matchHeight">
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input class="btn-hidden" type="submit" value="show hidden">
+ </label>
+ </div>
+ </div>
+
+ <div class="items-container">
+ <div class="item item-0">
+ <h2>Lorem ipsum</h2>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p>
+ <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p>
+ </div>
+ <div class="item item-1">
+ <h3>Lorem ipsum dolor</h3>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p>
+ </div>
+ <div class="item item-2">
+ <h4>Lorem ipsum dolor sit amet.</h4>
+ <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel. Nullam odio eros, sagittis vitae lectus id, pretium viverra lectus. Etiam auctor dolor non dui ultricies pulvinar.</p>
+ </div>
+
+ <div class="item item-3">
+ <h3>Lorem ipsum dolor</h3>
+ <p>Aenean semper.</p>
+ </div>
+ <div class="item item-4">
+ <h3>Lorem ipsum dolor</h3>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ </div>
+ <div class="item item-5">
+ <h3>Lorem ipsum dolor</h3>
+ <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p>
+ </div>
+ <div class="item item-6">
+ <h3>Lorem ipsum dolor</h3>
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
+ </div>
+ <div class="item item-7">
+ <h3>Lorem ipsum dolor</h3>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p>
+ </div>
+
+ <div class="item item-8">
+ <img src="http://placehold.it/800x150/fafafa/666" alt="a test image">
+ </div>
+ <div class="item item-9">
+ <img src="http://placehold.it/800x180/fafafa/666" alt="a test image">
+ </div>
+ <div class="item item-10">
+ <img src="http://placehold.it/800x200/fafafa/666" alt="a test image">
+ </div>
+ <div class="item item-11">
+ <img src="http://placehold.it/800x220/fafafa/666" alt="a test image">
+ </div>
+ </div>
+
+ <div class="items-container big-items">
+ <div class="item item-0">
+ <h3>Lorem ipsum dolor</h3>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p>
+ <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ </div>
+ <div class="item item-1">
+ <div class="items-container">
+ <div class="item item-2">
+ <p>Aenean</p>
+ </div>
+ <div class="item item-3">
+ <p>Lorem</p>
+ </div>
+ <div class="item item-4">
+ <p>Phasellus</p>
+ </div>
+ <div class="item item-5">
+ <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p>
+ </div>
+ <div class="item item-6">
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
+ </div>
+ <div class="item item-7">
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="data-test-items">
+ <div class="item item-0" data-match-height="items-a">
+ <h3>data-match-height="items-a"</h3>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p>
+ </div>
+ <div class="item item-1" data-match-height="items-a">
+ <h3>data-match-height="items-a"</h3>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ </div>
+ <div class="item item-2" data-mh="items-b">
+ <h3>data-mh="items-b"</h3>
+ <p>In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ </div>
+ <div class="item item-3" data-mh="items-b">
+ <h3>data-mh="items-b"</h3>
+ <p>Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ </div>
+ </div>
+
+ <div class="target-items">
+ <div class="item item-0">
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p>
+ <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ </div>
+ <div class="item item-1">
+ <h3>Target</h3>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ </div>
+ <div class="item item-2">
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis. Phasellus hendrerit erat sed porta imperdiet. Vivamus viverra ipsum tortor, et congue mauris porttitor ut.</p>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ </div>
+ <div class="item item-3">
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam.</p>
+ <p>Aenean semper felis ipsum, vulputate consequat dui elementum vel.</p>
+ <p>Phasellus ut nibh fermentum, vulputate urna vel, semper diam. Nunc sollicitudin felis ut pellentesque fermentum. In erat mi, pulvinar sit amet tincidunt vitae, gravida id felis.</p>
+ </div>
+ </div>
+
+ <div class="items-container fixed-items">
+ <div class="item item-0">
+ <p>Fixed height</p>
+ </div>
+ <div class="item item-1">
+ <p>Fixed height</p>
+ </div>
+ <div class="item item-2">
+ <p>Fixed height</p>
+ </div>
+ <div class="item item-3">
+ <p>Fixed height</p>
+ </div>
+ </div>
+
+ <div class="items-container inline-block-items">
+ <div class="item item-0">
+ <p>display: inline-block</p>
+ </div>
+ <div class="item item-1">
+ <p>display: inline-block</p>
+ </div>
+ <div class="item item-2">
+ <p>display: inline-block</p>
+ </div>
+ <div class="item item-3">
+ <p>display: inline-block</p>
+ </div>
+ <div class="item item-4">
+ <p>display: inline-block</p>
+ </div>
+ <div class="item item-5">
+ <p>display: inline-block</p>
+ </div>
+ <div class="item item-6">
+ <p>display: inline-block</p>
+ </div>
+ <div class="item item-7">
+ <p>display: inline-block</p>
+ </div>
+ </div>
+
+ <div class="items-container hidden-items">
+ <div class="item item-0">
+ <p>display: none</p>
+ </div>
+ <div class="item item-1">
+ <p>visibility: hidden</p>
+ </div>
+ <div class="item item-2">
+ <div class="items-container">
+ <div class="item item-0">
+ <p>parent display: none</p>
+ </div>
+ <div class="item item-0">
+ <p>parent display: none</p>
+ </div>
+ </div>
+ </div>
+ <div class="item item-3">
+ <div class="items-container">
+ <div class="item item-1">
+ <p>parent visibility: hidden</p>
+ </div>
+ <div class="item item-1">
+ <p>parent visibility: hidden</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.js
new file mode 100644
index 0000000..4cf74c1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/components/matchHeight/test.js
@@ -0,0 +1,33 @@
+/* see test.html for example matchHeight usage */
+
+/* testing page code only, you wont need this! */
+
+(function() {
+
+ $(function() {
+ bindTestOptions();
+ });
+
+ var bindTestOptions = function() {
+ resetTestOptions();
+ $('.option').change(resetTestOptions);
+ };
+
+ var resetTestOptions = function() {
+ // update test options
+ $('.option').each(function() {
+ var $this = $(this);
+ $('body').toggleClass($this.val(), $this.prop('checked'));
+ });
+
+ // update byRow option
+ var byRow = $('body').hasClass('test-rows');
+ $.each($.fn.matchHeight._groups, function() {
+ this.options.byRow = byRow;
+ });
+
+ // update all heights
+ $.fn.matchHeight._update();
+ };
+
+})();
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.css
new file mode 100644
index 0000000..6cab17c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.css
@@ -0,0 +1,9746 @@
+/* PatternFly */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 300;
+ src: url('../fonts/OpenSans-Light-webfont.eot');
+ src: url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-Light-webfont.woff') format('woff'), url('../fonts/OpenSans-Light-webfont.ttf') format('truetype'), url('../fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: url('../fonts/OpenSans-Regular-webfont.eot');
+ src: url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), url('../fonts/OpenSans-Regular-webfont.ttf') format('truetype'), url('../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+ src: url('../fonts/OpenSans-Semibold-webfont.eot');
+ src: url('../fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-Semibold-webfont.woff') format('woff'), url('../fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), url('../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 700;
+ src: url('../fonts/OpenSans-Bold-webfont.eot');
+ src: url('../fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-Bold-webfont.woff') format('woff'), url('../fonts/OpenSans-Bold-webfont.ttf') format('truetype'), url('../fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 800;
+ src: url('../fonts/OpenSans-ExtraBold-webfont.eot');
+ src: url('../fonts/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-ExtraBold-webfont.woff') format('woff'), url('../fonts/OpenSans-ExtraBold-webfont.ttf') format('truetype'), url('../fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') format('svg');
+}
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+ font-family: sans-serif;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+}
+body {
+ margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ vertical-align: baseline;
+}
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+[hidden],
+template {
+ display: none;
+}
+a {
+ background-color: transparent;
+}
+a:active,
+a:hover {
+ outline: 0;
+}
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+b,
+strong {
+ font-weight: bold;
+}
+dfn {
+ font-style: italic;
+}
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+mark {
+ background: #ff0;
+ color: #000;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+sup {
+ top: -0.5em;
+}
+sub {
+ bottom: -0.25em;
+}
+img {
+ border: 0;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+figure {
+ margin: 1em 40px;
+}
+hr {
+ box-sizing: content-box;
+ height: 0;
+}
+pre {
+ overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit;
+ font: inherit;
+ margin: 0;
+}
+button {
+ overflow: visible;
+}
+button,
+select {
+ text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+input {
+ line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box;
+ padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: textfield;
+ box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+legend {
+ border: 0;
+ padding: 0;
+}
+textarea {
+ overflow: auto;
+}
+optgroup {
+ font-weight: bold;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td,
+th {
+ padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+ *,
+ *:before,
+ *:after {
+ background: transparent !important;
+ color: #000 !important;
+ box-shadow: none !important;
+ text-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ .navbar {
+ display: none;
+ }
+ .btn > .caret,
+ .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+ }
+ .label {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #ddd !important;
+ }
+}
+@font-face {
+ font-family: 'Glyphicons Halflings';
+ src: url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot');
+ src: url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+ content: "\2a";
+}
+.glyphicon-plus:before {
+ content: "\2b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
+}
+.glyphicon-minus:before {
+ content: "\2212";
+}
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+.glyphicon-glass:before {
+ content: "\e001";
+}
+.glyphicon-music:before {
+ content: "\e002";
+}
+.glyphicon-search:before {
+ content: "\e003";
+}
+.glyphicon-heart:before {
+ content: "\e005";
+}
+.glyphicon-star:before {
+ content: "\e006";
+}
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+.glyphicon-user:before {
+ content: "\e008";
+}
+.glyphicon-film:before {
+ content: "\e009";
+}
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+.glyphicon-th:before {
+ content: "\e011";
+}
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+.glyphicon-ok:before {
+ content: "\e013";
+}
+.glyphicon-remove:before {
+ content: "\e014";
+}
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+.glyphicon-off:before {
+ content: "\e017";
+}
+.glyphicon-signal:before {
+ content: "\e018";
+}
+.glyphicon-cog:before {
+ content: "\e019";
+}
+.glyphicon-trash:before {
+ content: "\e020";
+}
+.glyphicon-home:before {
+ content: "\e021";
+}
+.glyphicon-file:before {
+ content: "\e022";
+}
+.glyphicon-time:before {
+ content: "\e023";
+}
+.glyphicon-road:before {
+ content: "\e024";
+}
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+.glyphicon-download:before {
+ content: "\e026";
+}
+.glyphicon-upload:before {
+ content: "\e027";
+}
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+.glyphicon-lock:before {
+ content: "\e033";
+}
+.glyphicon-flag:before {
+ content: "\e034";
+}
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+.glyphicon-tag:before {
+ content: "\e041";
+}
+.glyphicon-tags:before {
+ content: "\e042";
+}
+.glyphicon-book:before {
+ content: "\e043";
+}
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+.glyphicon-print:before {
+ content: "\e045";
+}
+.glyphicon-camera:before {
+ content: "\e046";
+}
+.glyphicon-font:before {
+ content: "\e047";
+}
+.glyphicon-bold:before {
+ content: "\e048";
+}
+.glyphicon-italic:before {
+ content: "\e049";
+}
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+.glyphicon-list:before {
+ content: "\e056";
+}
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+.glyphicon-picture:before {
+ content: "\e060";
+}
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+.glyphicon-tint:before {
+ content: "\e064";
+}
+.glyphicon-edit:before {
+ content: "\e065";
+}
+.glyphicon-share:before {
+ content: "\e066";
+}
+.glyphicon-check:before {
+ content: "\e067";
+}
+.glyphicon-move:before {
+ content: "\e068";
+}
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+.glyphicon-backward:before {
+ content: "\e071";
+}
+.glyphicon-play:before {
+ content: "\e072";
+}
+.glyphicon-pause:before {
+ content: "\e073";
+}
+.glyphicon-stop:before {
+ content: "\e074";
+}
+.glyphicon-forward:before {
+ content: "\e075";
+}
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+.glyphicon-eject:before {
+ content: "\e078";
+}
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+.glyphicon-gift:before {
+ content: "\e102";
+}
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+.glyphicon-fire:before {
+ content: "\e104";
+}
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+.glyphicon-plane:before {
+ content: "\e108";
+}
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+.glyphicon-random:before {
+ content: "\e110";
+}
+.glyphicon-comment:before {
+ content: "\e111";
+}
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+.glyphicon-bell:before {
+ content: "\e123";
+}
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+.glyphicon-globe:before {
+ content: "\e135";
+}
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+.glyphicon-filter:before {
+ content: "\e138";
+}
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+.glyphicon-link:before {
+ content: "\e144";
+}
+.glyphicon-phone:before {
+ content: "\e145";
+}
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+.glyphicon-usd:before {
+ content: "\e148";
+}
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+.glyphicon-sort:before {
+ content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+.glyphicon-expand:before {
+ content: "\e158";
+}
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+.glyphicon-flash:before {
+ content: "\e162";
+}
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+.glyphicon-record:before {
+ content: "\e165";
+}
+.glyphicon-save:before {
+ content: "\e166";
+}
+.glyphicon-open:before {
+ content: "\e167";
+}
+.glyphicon-saved:before {
+ content: "\e168";
+}
+.glyphicon-import:before {
+ content: "\e169";
+}
+.glyphicon-export:before {
+ content: "\e170";
+}
+.glyphicon-send:before {
+ content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+.glyphicon-header:before {
+ content: "\e180";
+}
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+.glyphicon-tower:before {
+ content: "\e184";
+}
+.glyphicon-stats:before {
+ content: "\e185";
+}
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+.glyphicon-cd:before {
+ content: "\e201";
+}
+.glyphicon-save-file:before {
+ content: "\e202";
+}
+.glyphicon-open-file:before {
+ content: "\e203";
+}
+.glyphicon-level-up:before {
+ content: "\e204";
+}
+.glyphicon-copy:before {
+ content: "\e205";
+}
+.glyphicon-paste:before {
+ content: "\e206";
+}
+.glyphicon-alert:before {
+ content: "\e209";
+}
+.glyphicon-equalizer:before {
+ content: "\e210";
+}
+.glyphicon-king:before {
+ content: "\e211";
+}
+.glyphicon-queen:before {
+ content: "\e212";
+}
+.glyphicon-pawn:before {
+ content: "\e213";
+}
+.glyphicon-bishop:before {
+ content: "\e214";
+}
+.glyphicon-knight:before {
+ content: "\e215";
+}
+.glyphicon-baby-formula:before {
+ content: "\e216";
+}
+.glyphicon-tent:before {
+ content: "\26fa";
+}
+.glyphicon-blackboard:before {
+ content: "\e218";
+}
+.glyphicon-bed:before {
+ content: "\e219";
+}
+.glyphicon-apple:before {
+ content: "\f8ff";
+}
+.glyphicon-erase:before {
+ content: "\e221";
+}
+.glyphicon-hourglass:before {
+ content: "\231b";
+}
+.glyphicon-lamp:before {
+ content: "\e223";
+}
+.glyphicon-duplicate:before {
+ content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+ content: "\e225";
+}
+.glyphicon-scissors:before {
+ content: "\e226";
+}
+.glyphicon-bitcoin:before {
+ content: "\e227";
+}
+.glyphicon-btc:before {
+ content: "\e227";
+}
+.glyphicon-xbt:before {
+ content: "\e227";
+}
+.glyphicon-yen:before {
+ content: "\00a5";
+}
+.glyphicon-jpy:before {
+ content: "\00a5";
+}
+.glyphicon-ruble:before {
+ content: "\20bd";
+}
+.glyphicon-rub:before {
+ content: "\20bd";
+}
+.glyphicon-scale:before {
+ content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+ content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+ content: "\e232";
+}
+.glyphicon-education:before {
+ content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+ content: "\e234";
+}
+.glyphicon-option-vertical:before {
+ content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+ content: "\e236";
+}
+.glyphicon-modal-window:before {
+ content: "\e237";
+}
+.glyphicon-oil:before {
+ content: "\e238";
+}
+.glyphicon-grain:before {
+ content: "\e239";
+}
+.glyphicon-sunglasses:before {
+ content: "\e240";
+}
+.glyphicon-text-size:before {
+ content: "\e241";
+}
+.glyphicon-text-color:before {
+ content: "\e242";
+}
+.glyphicon-text-background:before {
+ content: "\e243";
+}
+.glyphicon-object-align-top:before {
+ content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+ content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+ content: "\e246";
+}
+.glyphicon-object-align-left:before {
+ content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+ content: "\e248";
+}
+.glyphicon-object-align-right:before {
+ content: "\e249";
+}
+.glyphicon-triangle-right:before {
+ content: "\e250";
+}
+.glyphicon-triangle-left:before {
+ content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+ content: "\e252";
+}
+.glyphicon-triangle-top:before {
+ content: "\e253";
+}
+.glyphicon-console:before {
+ content: "\e254";
+}
+.glyphicon-superscript:before {
+ content: "\e255";
+}
+.glyphicon-subscript:before {
+ content: "\e256";
+}
+.glyphicon-menu-left:before {
+ content: "\e257";
+}
+.glyphicon-menu-right:before {
+ content: "\e258";
+}
+.glyphicon-menu-down:before {
+ content: "\e259";
+}
+.glyphicon-menu-up:before {
+ content: "\e260";
+}
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+html {
+ font-size: 10px;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ line-height: 1.66666667;
+ color: #333333;
+ background-color: #ffffff;
+}
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+a {
+ color: #0099d3;
+ text-decoration: none;
+}
+a:hover,
+a:focus {
+ color: #00618a;
+ text-decoration: underline;
+}
+a:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+figure {
+ margin: 0;
+}
+img {
+ vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+}
+.img-rounded {
+ border-radius: 1px;
+}
+.img-thumbnail {
+ padding: 4px;
+ line-height: 1.66666667;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 1px;
+ -webkit-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+ display: inline-block;
+ max-width: 100%;
+ height: auto;
+}
+.img-circle {
+ border-radius: 50%;
+}
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ padding: 0;
+ 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;
+}
+[role="button"] {
+ cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.1;
+ color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+ font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+ font-size: 75%;
+}
+h1,
+.h1 {
+ font-size: 24px;
+}
+h2,
+.h2 {
+ font-size: 22px;
+}
+h3,
+.h3 {
+ font-size: 16px;
+}
+h4,
+.h4 {
+ font-size: 15px;
+}
+h5,
+.h5 {
+ font-size: 13px;
+}
+h6,
+.h6 {
+ font-size: 11px;
+}
+p {
+ margin: 0 0 10px;
+}
+.lead {
+ margin-bottom: 20px;
+ font-size: 13px;
+ font-weight: 300;
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .lead {
+ font-size: 18px;
+ }
+}
+small,
+.small {
+ font-size: 91%;
+}
+mark,
+.mark {
+ background-color: #fcf8e3;
+ padding: .2em;
+}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+.text-center {
+ text-align: center;
+}
+.text-justify {
+ text-align: justify;
+}
+.text-nowrap {
+ white-space: nowrap;
+}
+.text-lowercase {
+ text-transform: lowercase;
+}
+.text-uppercase {
+ text-transform: uppercase;
+}
+.text-capitalize {
+ text-transform: capitalize;
+}
+.text-muted {
+ color: #999999;
+}
+.text-primary {
+ color: #00a8e1;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+ color: #0082ae;
+}
+.text-success {
+ color: #3c763d;
+}
+a.text-success:hover,
+a.text-success:focus {
+ color: #2b542c;
+}
+.text-info {
+ color: #31708f;
+}
+a.text-info:hover,
+a.text-info:focus {
+ color: #245269;
+}
+.text-warning {
+ color: #ec7a08;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+ color: #bb6106;
+}
+.text-danger {
+ color: #a94442;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+ color: #843534;
+}
+.bg-primary {
+ color: #fff;
+ background-color: #00a8e1;
+}
+a.bg-primary:hover,
+a.bg-primary:focus {
+ background-color: #0082ae;
+}
+.bg-success {
+ background-color: #dff0d8;
+}
+a.bg-success:hover,
+a.bg-success:focus {
+ background-color: #c1e2b3;
+}
+.bg-info {
+ background-color: #d9edf7;
+}
+a.bg-info:hover,
+a.bg-info:focus {
+ background-color: #afd9ee;
+}
+.bg-warning {
+ background-color: #fcf8e3;
+}
+a.bg-warning:hover,
+a.bg-warning:focus {
+ background-color: #f7ecb5;
+}
+.bg-danger {
+ background-color: #f2dede;
+}
+a.bg-danger:hover,
+a.bg-danger:focus {
+ background-color: #e4b9b9;
+}
+.page-header {
+ padding-bottom: 9px;
+ margin: 40px 0 20px;
+ border-bottom: 1px solid #eeeeee;
+}
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+ margin-left: -5px;
+}
+.list-inline > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+dl {
+ margin-top: 0;
+ margin-bottom: 20px;
+}
+dt,
+dd {
+ line-height: 1.66666667;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+}
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #999999;
+}
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ font-size: 15px;
+ border-left: 5px solid #eeeeee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+ margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+ display: block;
+ font-size: 80%;
+ line-height: 1.66666667;
+ color: #999999;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+ text-align: right;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+ content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+ content: '\00A0 \2014';
+}
+address {
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 1.66666667;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, monospace;
+}
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ background-color: #f9f2f4;
+ border-radius: 1px;
+}
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #ffffff;
+ background-color: #333333;
+ border-radius: 1px;
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ box-shadow: none;
+}
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 11px;
+ line-height: 1.66666667;
+ word-break: break-all;
+ word-wrap: break-word;
+ color: #333333;
+ background-color: #fcfcfc;
+ border: 1px solid #cccccc;
+ border-radius: 1px;
+}
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.container {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+@media (min-width: 768px) {
+ .container {
+ width: 760px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 980px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ width: 1180px;
+ }
+}
+.container-fluid {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+.row {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+ float: left;
+}
+.col-xs-12 {
+ width: 100%;
+}
+.col-xs-11 {
+ width: 91.66666667%;
+}
+.col-xs-10 {
+ width: 83.33333333%;
+}
+.col-xs-9 {
+ width: 75%;
+}
+.col-xs-8 {
+ width: 66.66666667%;
+}
+.col-xs-7 {
+ width: 58.33333333%;
+}
+.col-xs-6 {
+ width: 50%;
+}
+.col-xs-5 {
+ width: 41.66666667%;
+}
+.col-xs-4 {
+ width: 33.33333333%;
+}
+.col-xs-3 {
+ width: 25%;
+}
+.col-xs-2 {
+ width: 16.66666667%;
+}
+.col-xs-1 {
+ width: 8.33333333%;
+}
+.col-xs-pull-12 {
+ right: 100%;
+}
+.col-xs-pull-11 {
+ right: 91.66666667%;
+}
+.col-xs-pull-10 {
+ right: 83.33333333%;
+}
+.col-xs-pull-9 {
+ right: 75%;
+}
+.col-xs-pull-8 {
+ right: 66.66666667%;
+}
+.col-xs-pull-7 {
+ right: 58.33333333%;
+}
+.col-xs-pull-6 {
+ right: 50%;
+}
+.col-xs-pull-5 {
+ right: 41.66666667%;
+}
+.col-xs-pull-4 {
+ right: 33.33333333%;
+}
+.col-xs-pull-3 {
+ right: 25%;
+}
+.col-xs-pull-2 {
+ right: 16.66666667%;
+}
+.col-xs-pull-1 {
+ right: 8.33333333%;
+}
+.col-xs-pull-0 {
+ right: auto;
+}
+.col-xs-push-12 {
+ left: 100%;
+}
+.col-xs-push-11 {
+ left: 91.66666667%;
+}
+.col-xs-push-10 {
+ left: 83.33333333%;
+}
+.col-xs-push-9 {
+ left: 75%;
+}
+.col-xs-push-8 {
+ left: 66.66666667%;
+}
+.col-xs-push-7 {
+ left: 58.33333333%;
+}
+.col-xs-push-6 {
+ left: 50%;
+}
+.col-xs-push-5 {
+ left: 41.66666667%;
+}
+.col-xs-push-4 {
+ left: 33.33333333%;
+}
+.col-xs-push-3 {
+ left: 25%;
+}
+.col-xs-push-2 {
+ left: 16.66666667%;
+}
+.col-xs-push-1 {
+ left: 8.33333333%;
+}
+.col-xs-push-0 {
+ left: auto;
+}
+.col-xs-offset-12 {
+ margin-left: 100%;
+}
+.col-xs-offset-11 {
+ margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+ margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+ margin-left: 75%;
+}
+.col-xs-offset-8 {
+ margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+ margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+ margin-left: 50%;
+}
+.col-xs-offset-5 {
+ margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+ margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+ margin-left: 25%;
+}
+.col-xs-offset-2 {
+ margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+ margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+ margin-left: 0%;
+}
+@media (min-width: 768px) {
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ float: left;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666667%;
+ }
+ .col-sm-10 {
+ width: 83.33333333%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666667%;
+ }
+ .col-sm-7 {
+ width: 58.33333333%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.66666667%;
+ }
+ .col-sm-1 {
+ width: 8.33333333%;
+ }
+ .col-sm-pull-12 {
+ right: 100%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-sm-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-sm-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-sm-pull-0 {
+ right: auto;
+ }
+ .col-sm-push-12 {
+ left: 100%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666667%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666667%;
+ }
+ .col-sm-push-7 {
+ left: 58.33333333%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666667%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-2 {
+ left: 16.66666667%;
+ }
+ .col-sm-push-1 {
+ left: 8.33333333%;
+ }
+ .col-sm-push-0 {
+ left: auto;
+ }
+ .col-sm-offset-12 {
+ margin-left: 100%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-sm-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 992px) {
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ float: left;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666667%;
+ }
+ .col-md-10 {
+ width: 83.33333333%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666667%;
+ }
+ .col-md-7 {
+ width: 58.33333333%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.66666667%;
+ }
+ .col-md-1 {
+ width: 8.33333333%;
+ }
+ .col-md-pull-12 {
+ right: 100%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-md-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-md-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-md-pull-0 {
+ right: auto;
+ }
+ .col-md-push-12 {
+ left: 100%;
+ }
+ .col-md-push-11 {
+ left: 91.66666667%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-8 {
+ left: 66.66666667%;
+ }
+ .col-md-push-7 {
+ left: 58.33333333%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-5 {
+ left: 41.66666667%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-2 {
+ left: 16.66666667%;
+ }
+ .col-md-push-1 {
+ left: 8.33333333%;
+ }
+ .col-md-push-0 {
+ left: auto;
+ }
+ .col-md-offset-12 {
+ margin-left: 100%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 1200px) {
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ float: left;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666667%;
+ }
+ .col-lg-10 {
+ width: 83.33333333%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666667%;
+ }
+ .col-lg-7 {
+ width: 58.33333333%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.66666667%;
+ }
+ .col-lg-1 {
+ width: 8.33333333%;
+ }
+ .col-lg-pull-12 {
+ right: 100%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-lg-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-lg-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-lg-pull-0 {
+ right: auto;
+ }
+ .col-lg-push-12 {
+ left: 100%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666667%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666667%;
+ }
+ .col-lg-push-7 {
+ left: 58.33333333%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666667%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-2 {
+ left: 16.66666667%;
+ }
+ .col-lg-push-1 {
+ left: 8.33333333%;
+ }
+ .col-lg-push-0 {
+ left: auto;
+ }
+ .col-lg-offset-12 {
+ margin-left: 100%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0%;
+ }
+}
+table {
+ background-color: transparent;
+}
+caption {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ color: #999999;
+ text-align: left;
+}
+th {
+ text-align: left;
+}
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 10px;
+ line-height: 1.66666667;
+ vertical-align: top;
+ border-top: 1px solid #d1d1d1;
+}
+.table > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #d1d1d1;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+ border-top: 0;
+}
+.table > tbody + tbody {
+ border-top: 2px solid #d1d1d1;
+}
+.table .table {
+ background-color: #ffffff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+ padding: 5px;
+}
+.table-bordered {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: #f5f5f5;
+}
+.table-hover > tbody > tr:hover {
+ background-color: #d5ecf9;
+}
+table col[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-column;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-cell;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+ background-color: #d5ecf9;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+ background-color: #bfe2f6;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+ background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+ background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+ background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+ background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+ background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+ background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+ background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+ background-color: #ebcccc;
+}
+.table-responsive {
+ overflow-x: auto;
+ min-height: 0.01%;
+}
+@media screen and (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid #d1d1d1;
+ }
+ .table-responsive > .table {
+ margin-bottom: 0;
+ }
+ .table-responsive > .table > thead > tr > th,
+ .table-responsive > .table > tbody > tr > th,
+ .table-responsive > .table > tfoot > tr > th,
+ .table-responsive > .table > thead > tr > td,
+ .table-responsive > .table > tbody > tr > td,
+ .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+ }
+ .table-responsive > .table-bordered {
+ border: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+ }
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+ }
+}
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+ min-width: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 18px;
+ line-height: inherit;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+label {
+ display: inline-block;
+ max-width: 100%;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ line-height: normal;
+}
+input[type="file"] {
+ display: block;
+}
+input[type="range"] {
+ display: block;
+ width: 100%;
+}
+select[multiple],
+select[size] {
+ height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+output {
+ display: block;
+ padding-top: 3px;
+ font-size: 12px;
+ line-height: 1.66666667;
+ color: #333333;
+}
+.form-control {
+ display: block;
+ width: 100%;
+ height: 26px;
+ padding: 2px 6px;
+ font-size: 12px;
+ line-height: 1.66666667;
+ color: #333333;
+ background-color: #ffffff;
+ background-image: none;
+ border: 1px solid #bababa;
+ border-radius: 1px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.form-control::-moz-placeholder {
+ color: #999999;
+ opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+ color: #999999;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999999;
+}
+.form-control:-moz-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control::-moz-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control:-ms-input-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ background-color: #f8f8f8;
+ opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+}
+textarea.form-control {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ input[type="date"].form-control,
+ input[type="time"].form-control,
+ input[type="datetime-local"].form-control,
+ input[type="month"].form-control {
+ line-height: 26px;
+ }
+ input[type="date"].input-sm,
+ input[type="time"].input-sm,
+ input[type="datetime-local"].input-sm,
+ input[type="month"].input-sm,
+ .input-group-sm input[type="date"],
+ .input-group-sm input[type="time"],
+ .input-group-sm input[type="datetime-local"],
+ .input-group-sm input[type="month"] {
+ line-height: 22px;
+ }
+ input[type="date"].input-lg,
+ input[type="time"].input-lg,
+ input[type="datetime-local"].input-lg,
+ input[type="month"].input-lg,
+ .input-group-lg input[type="date"],
+ .input-group-lg input[type="time"],
+ .input-group-lg input[type="datetime-local"],
+ .input-group-lg input[type="month"] {
+ line-height: 33px;
+ }
+}
+.form-group {
+ margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ position: absolute;
+ margin-left: -20px;
+ margin-top: 4px \9;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+ position: relative;
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ vertical-align: middle;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
+}
+.form-control-static {
+ padding-top: 3px;
+ padding-bottom: 3px;
+ margin-bottom: 0;
+ min-height: 32px;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-sm {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+select.input-sm {
+ height: 22px;
+ line-height: 22px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+ height: auto;
+}
+.form-group-sm .form-control {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+.form-group-sm select.form-control {
+ height: 22px;
+ line-height: 22px;
+}
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+ height: auto;
+}
+.form-group-sm .form-control-static {
+ height: 22px;
+ min-height: 31px;
+ padding: 3px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+}
+.input-lg {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+select.input-lg {
+ height: 33px;
+ line-height: 33px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+ height: auto;
+}
+.form-group-lg .form-control {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+.form-group-lg select.form-control {
+ height: 33px;
+ line-height: 33px;
+}
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+ height: auto;
+}
+.form-group-lg .form-control-static {
+ height: 33px;
+ min-height: 34px;
+ padding: 7px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+}
+.has-feedback {
+ position: relative;
+}
+.has-feedback .form-control {
+ padding-right: 32.5px;
+}
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 26px;
+ height: 26px;
+ line-height: 26px;
+ text-align: center;
+ pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+ width: 33px;
+ height: 33px;
+ line-height: 33px;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+ width: 22px;
+ height: 22px;
+ line-height: 22px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+ color: #3c763d;
+}
+.has-success .form-control {
+ border-color: #3c763d;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+ color: #3c763d;
+ border-color: #3c763d;
+ background-color: #dff0d8;
+}
+.has-success .form-control-feedback {
+ color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+ color: #ec7a08;
+}
+.has-warning .form-control {
+ border-color: #ec7a08;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-warning .form-control:focus {
+ border-color: #bb6106;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+}
+.has-warning .input-group-addon {
+ color: #ec7a08;
+ border-color: #ec7a08;
+ background-color: #fcf8e3;
+}
+.has-warning .form-control-feedback {
+ color: #ec7a08;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+ color: #a94442;
+}
+.has-error .form-control {
+ border-color: #a94442;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-error .form-control:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+ color: #a94442;
+ border-color: #a94442;
+ background-color: #f2dede;
+}
+.has-error .form-control-feedback {
+ color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+ top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+ top: 0;
+}
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
+}
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .form-inline .form-control-static {
+ display: inline-block;
+ }
+ .form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .form-inline .input-group .input-group-addon,
+ .form-inline .input-group .input-group-btn,
+ .form-inline .input-group .form-control {
+ width: auto;
+ }
+ .form-inline .input-group > .form-control {
+ width: 100%;
+ }
+ .form-inline .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio label,
+ .form-inline .checkbox label {
+ padding-left: 0;
+ }
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .form-inline .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 3px;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 23px;
+}
+.form-horizontal .form-group {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ text-align: right;
+ margin-bottom: 0;
+ padding-top: 3px;
+ }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+ right: 20px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-lg .control-label {
+ padding-top: 8.9999998px;
+ font-size: 14px;
+ }
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 3px;
+ font-size: 11px;
+ }
+}
+.btn {
+ display: inline-block;
+ margin-bottom: 0;
+ font-weight: 600;
+ text-align: center;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ background-image: none;
+ border: 1px solid transparent;
+ white-space: nowrap;
+ padding: 2px 6px;
+ font-size: 12px;
+ line-height: 1.66666667;
+ border-radius: 1px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+ color: #4d5258;
+ text-decoration: none;
+}
+.btn:active,
+.btn.active {
+ outline: 0;
+ background-image: none;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ cursor: not-allowed;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+ pointer-events: none;
+}
+.btn-default {
+ color: #4d5258;
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.btn-default:focus,
+.btn-default.focus {
+ color: #4d5258;
+ background-color: #d5d5d5;
+ border-color: #777777;
+}
+.btn-default:hover {
+ color: #4d5258;
+ background-color: #d5d5d5;
+ border-color: #989898;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ color: #4d5258;
+ background-color: #d5d5d5;
+ border-color: #989898;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+ color: #4d5258;
+ background-color: #c3c3c3;
+ border-color: #777777;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.btn-default .badge {
+ color: #eeeeee;
+ background-color: #4d5258;
+}
+.btn-primary {
+ color: #ffffff;
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00141d;
+}
+.btn-primary:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+ color: #ffffff;
+ background-color: #004d78;
+ border-color: #00141d;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.btn-primary .badge {
+ color: #0085cf;
+ background-color: #ffffff;
+}
+.btn-success {
+ color: #ffffff;
+ background-color: #3f9c35;
+ border-color: #37892f;
+}
+.btn-success:focus,
+.btn-success.focus {
+ color: #ffffff;
+ background-color: #307628;
+ border-color: #112a0e;
+}
+.btn-success:hover {
+ color: #ffffff;
+ background-color: #307628;
+ border-color: #255b1f;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ color: #ffffff;
+ background-color: #307628;
+ border-color: #255b1f;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+ color: #ffffff;
+ background-color: #255b1f;
+ border-color: #112a0e;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ background-image: none;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #3f9c35;
+ border-color: #37892f;
+}
+.btn-success .badge {
+ color: #3f9c35;
+ background-color: #ffffff;
+}
+.btn-info {
+ color: #ffffff;
+ background-color: #006e9c;
+ border-color: #005c83;
+}
+.btn-info:focus,
+.btn-info.focus {
+ color: #ffffff;
+ background-color: #004a69;
+ border-color: #000203;
+}
+.btn-info:hover {
+ color: #ffffff;
+ background-color: #004a69;
+ border-color: #003145;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ color: #ffffff;
+ background-color: #004a69;
+ border-color: #003145;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+ color: #ffffff;
+ background-color: #003145;
+ border-color: #000203;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ background-image: none;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #006e9c;
+ border-color: #005c83;
+}
+.btn-info .badge {
+ color: #006e9c;
+ background-color: #ffffff;
+}
+.btn-warning {
+ color: #ffffff;
+ background-color: #ec7a08;
+ border-color: #d36d07;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+ color: #ffffff;
+ background-color: #bb6106;
+ border-color: #582e03;
+}
+.btn-warning:hover {
+ color: #ffffff;
+ background-color: #bb6106;
+ border-color: #984f05;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ color: #ffffff;
+ background-color: #bb6106;
+ border-color: #984f05;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+ color: #ffffff;
+ background-color: #984f05;
+ border-color: #582e03;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ background-image: none;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #ec7a08;
+ border-color: #d36d07;
+}
+.btn-warning .badge {
+ color: #ec7a08;
+ background-color: #ffffff;
+}
+.btn-danger {
+ color: #ffffff;
+ background-color: #a30000;
+ border-color: #781919;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+ color: #ffffff;
+ background-color: #700000;
+ border-color: #0e0303;
+}
+.btn-danger:hover {
+ color: #ffffff;
+ background-color: #700000;
+ border-color: #450e0e;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ color: #ffffff;
+ background-color: #700000;
+ border-color: #450e0e;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+ color: #ffffff;
+ background-color: #4c0000;
+ border-color: #0e0303;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #a30000;
+ border-color: #781919;
+}
+.btn-danger .badge {
+ color: #a30000;
+ background-color: #ffffff;
+}
+.btn-link {
+ color: #0099d3;
+ font-weight: normal;
+ border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+ color: #00618a;
+ text-decoration: underline;
+ background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #999999;
+ text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+ padding: 1px 5px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ display: none;
+}
+.collapse.in {
+ display: block;
+}
+tr.collapse.in {
+ display: table-row;
+}
+tbody.collapse.in {
+ display: table-row-group;
+}
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition-property: height, visibility;
+ transition-property: height, visibility;
+ -webkit-transition-duration: 0.35s;
+ transition-duration: 0.35s;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
+}
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 0 dashed;
+ border-top: 0 solid \9;
+ border-right: 0 solid transparent;
+ border-left: 0 solid transparent;
+}
+.dropup,
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle:focus {
+ outline: 0;
+}
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ font-size: 12px;
+ text-align: left;
+ background-color: #ffffff;
+ border: 1px solid #b6b6b6;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ margin: 9px 0;
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 4px 1px;
+ overflow: hidden;
+}
+.dropdown-menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.66666667;
+ color: #333333;
+ white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ text-decoration: none;
+ color: #4d5258;
+ background-color: #d4edfa;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ text-decoration: none;
+ outline: 0;
+ background-color: #0099d3;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #999999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ cursor: not-allowed;
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.open > a {
+ outline: 0;
+}
+.dropdown-menu-right {
+ left: auto;
+ right: 0;
+}
+.dropdown-menu-left {
+ left: 0;
+ right: auto;
+}
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 11px;
+ line-height: 1.66666667;
+ color: #999999;
+ white-space: nowrap;
+}
+.dropdown-backdrop {
+ position: fixed;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+ z-index: 990;
+}
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 0 dashed;
+ border-bottom: 0 solid \9;
+ content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+ .navbar-right .dropdown-menu {
+ left: auto;
+ right: 0;
+ }
+ .navbar-right .dropdown-menu-left {
+ left: 0;
+ right: auto;
+ }
+}
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+ margin-left: -1px;
+}
+.btn-toolbar {
+ margin-left: -5px;
+}
+.btn-toolbar .btn,
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+ float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+ margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-left: 8px;
+ padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn .caret {
+ margin-left: 0;
+}
+.btn-lg .caret {
+ border-width: 0 0 0;
+ border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+ border-width: 0 0 0;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-top-right-radius: 1px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-bottom-left-radius: 1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+ float: none;
+ display: table-cell;
+ width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+ width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+ left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+.input-group {
+ position: relative;
+ display: table;
+ border-collapse: separate;
+}
+.input-group[class*="col-"] {
+ float: none;
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-group .form-control {
+ position: relative;
+ z-index: 2;
+ float: left;
+ width: 100%;
+ margin-bottom: 0;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+ height: 33px;
+ line-height: 33px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+ height: 22px;
+ line-height: 22px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+.input-group-addon {
+ padding: 2px 6px;
+ font-size: 12px;
+ font-weight: normal;
+ line-height: 1;
+ color: #333333;
+ text-align: center;
+ background-color: #eeeeee;
+ border: 1px solid #bababa;
+ border-radius: 1px;
+}
+.input-group-addon.input-sm {
+ padding: 2px 6px;
+ font-size: 11px;
+ border-radius: 1px;
+}
+.input-group-addon.input-lg {
+ padding: 6px 10px;
+ font-size: 14px;
+ border-radius: 1px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.input-group-addon:first-child {
+ border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.input-group-addon:last-child {
+ border-left: 0;
+}
+.input-group-btn {
+ position: relative;
+ font-size: 0;
+ white-space: nowrap;
+}
+.input-group-btn > .btn {
+ position: relative;
+}
+.input-group-btn > .btn + .btn {
+ margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+ z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+ margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+ z-index: 2;
+ margin-left: -1px;
+}
+.nav {
+ margin-bottom: 0;
+ padding-left: 0;
+ list-style: none;
+}
+.nav > li {
+ position: relative;
+ display: block;
+}
+.nav > li > a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+.nav > li.disabled > a {
+ color: #999999;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #999999;
+ text-decoration: none;
+ background-color: transparent;
+ cursor: not-allowed;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #eeeeee;
+ border-color: #0099d3;
+}
+.nav .nav-divider {
+ margin: 9px 0;
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 4px 1px;
+ overflow: hidden;
+}
+.nav > li > a > img {
+ max-width: none;
+}
+.nav-tabs {
+ border-bottom: 1px solid #e9e8e8;
+}
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ margin-right: 2px;
+ line-height: 1.66666667;
+ border: 1px solid transparent;
+ border-radius: 1px 1px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: transparent transparent #e9e8e8;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #0099d3;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-bottom-color: transparent;
+ cursor: default;
+}
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-tabs.nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs.nav-justified > li > a {
+ margin-right: 0;
+ border-radius: 1px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+ border: 1px solid #e9e8e8;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li > a {
+ border-bottom: 1px solid #e9e8e8;
+ border-radius: 1px 1px 0 0;
+ }
+ .nav-tabs.nav-justified > .active > a,
+ .nav-tabs.nav-justified > .active > a:hover,
+ .nav-tabs.nav-justified > .active > a:focus {
+ border-bottom-color: #ffffff;
+ }
+}
+.nav-pills > li {
+ float: left;
+}
+.nav-pills > li > a {
+ border-radius: 1px;
+}
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ color: #ffffff;
+ background-color: #00a8e1;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li + li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+.nav-justified {
+ width: 100%;
+}
+.nav-justified > li {
+ float: none;
+}
+.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+ margin-right: 0;
+ border-radius: 1px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+ border: 1px solid #e9e8e8;
+}
+@media (min-width: 768px) {
+ .nav-tabs-justified > li > a {
+ border-bottom: 1px solid #e9e8e8;
+ border-radius: 1px 1px 0 0;
+ }
+ .nav-tabs-justified > .active > a,
+ .nav-tabs-justified > .active > a:hover,
+ .nav-tabs-justified > .active > a:focus {
+ border-bottom-color: #ffffff;
+ }
+}
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar {
+ position: relative;
+ min-height: 50px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 1px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+.navbar-collapse {
+ overflow-x: visible;
+ padding-right: 20px;
+ padding-left: 20px;
+ border-top: 1px solid transparent;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+ -webkit-overflow-scrolling: touch;
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+ }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+ margin-right: -20px;
+ margin-left: -20px;
+}
+@media (min-width: 768px) {
+ .container > .navbar-header,
+ .container-fluid > .navbar-header,
+ .container > .navbar-collapse,
+ .container-fluid > .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+.navbar-static-top {
+ z-index: 1000;
+ border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+@media (min-width: 768px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0;
+ border-width: 1px 0 0;
+}
+.navbar-brand {
+ float: left;
+ padding: 15px 20px;
+ font-size: 14px;
+ line-height: 20px;
+ height: 50px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
+}
+.navbar-brand > img {
+ display: block;
+}
+@media (min-width: 768px) {
+ .navbar > .container .navbar-brand,
+ .navbar > .container-fluid .navbar-brand {
+ margin-left: -20px;
+ }
+}
+.navbar-toggle {
+ position: relative;
+ float: right;
+ margin-right: 20px;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 1px;
+}
+.navbar-toggle:focus {
+ outline: 0;
+}
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+.navbar-nav {
+ margin: 7.5px -20px;
+}
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 20px;
+}
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ }
+}
+.navbar-form {
+ margin-left: -20px;
+ margin-right: -20px;
+ padding: 10px 20px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control-static {
+ display: inline-block;
+ }
+ .navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .navbar-form .input-group .input-group-addon,
+ .navbar-form .input-group .input-group-btn,
+ .navbar-form .input-group .form-control {
+ width: auto;
+ }
+ .navbar-form .input-group > .form-control {
+ width: 100%;
+ }
+ .navbar-form .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio label,
+ .navbar-form .checkbox label {
+ padding-left: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .navbar-form .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+@media (max-width: 767px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+ .navbar-form .form-group:last-child {
+ margin-bottom: 0;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-form {
+ width: auto;
+ border: 0;
+ margin-left: 0;
+ margin-right: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+}
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ margin-bottom: 0;
+ border-top-right-radius: 1px;
+ border-top-left-radius: 1px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.navbar-btn {
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+.navbar-btn.btn-sm {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-btn.btn-xs {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-text {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+ .navbar-text {
+ float: left;
+ margin-left: 20px;
+ margin-right: 20px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-left {
+ float: left !important;
+ float: left;
+ }
+ .navbar-right {
+ float: right !important;
+ float: right;
+ margin-right: -20px;
+ }
+ .navbar-right ~ .navbar-right {
+ margin-right: 0;
+ }
+}
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+ color: #777777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
+}
+.navbar-default .navbar-text {
+ color: #777777;
+}
+.navbar-default .navbar-nav > li > a {
+ color: #777777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+ border-color: #dddddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #dddddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #888888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ background-color: #e7e7e7;
+ color: #555555;
+}
+@media (max-width: 767px) {
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777777;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+ }
+}
+.navbar-default .navbar-link {
+ color: #777777;
+}
+.navbar-default .navbar-link:hover {
+ color: #333333;
+}
+.navbar-default .btn-link {
+ color: #777777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+ color: #333333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #cccccc;
+}
+.navbar-inverse {
+ background-color: #222222;
+ border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-nav > li > a {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+ border-color: #333333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #ffffff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+ background-color: #080808;
+ color: #ffffff;
+}
+@media (max-width: 767px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #bfbfbf;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+ }
+}
+.navbar-inverse .navbar-link {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-link:hover {
+ color: #ffffff;
+}
+.navbar-inverse .btn-link {
+ color: #bfbfbf;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+ color: #ffffff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444444;
+}
+.breadcrumb {
+ padding: 8px 15px;
+ margin-bottom: 20px;
+ list-style: none;
+ background-color: transparent;
+ border-radius: 1px;
+}
+.breadcrumb > li {
+ display: inline-block;
+}
+.breadcrumb > li + li:before {
+ content: "\f105\00a0";
+ padding: 0 5px;
+ color: #4d5258;
+}
+.breadcrumb > .active {
+ color: #4d5258;
+}
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 1px;
+}
+.pagination > li {
+ display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 2px 6px;
+ line-height: 1.66666667;
+ text-decoration: none;
+ color: #0099d3;
+ background-color: #f5f5f5;
+ border: 1px solid #bbbbbb;
+ margin-left: -1px;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ z-index: 3;
+ color: #00618a;
+ background-color: #ededed;
+ border-color: #dddddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #00a8e1;
+ border-color: #00a8e1;
+ cursor: default;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #999999;
+ background-color: #ffffff;
+ border-color: #dddddd;
+ cursor: not-allowed;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pager {
+ padding-left: 0;
+ margin: 20px 0;
+ list-style: none;
+ text-align: center;
+}
+.pager li {
+ display: inline;
+}
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #f5f5f5;
+ border: 1px solid #bbbbbb;
+ border-radius: 0;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #ededed;
+}
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #969696;
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+}
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #ffffff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.label:empty {
+ display: none;
+}
+.btn .label {
+ position: relative;
+ top: -1px;
+}
+.label-default {
+ background-color: #999999;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #808080;
+}
+.label-primary {
+ background-color: #00a8e1;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #0082ae;
+}
+.label-success {
+ background-color: #3f9c35;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #307628;
+}
+.label-info {
+ background-color: #006e9c;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #004a69;
+}
+.label-warning {
+ background-color: #ec7a08;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #bb6106;
+}
+.label-danger {
+ background-color: #cc0000;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #990000;
+}
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 11px;
+ font-weight: bold;
+ color: #ffffff;
+ line-height: 1;
+ vertical-align: middle;
+ white-space: nowrap;
+ text-align: center;
+ background-color: #999999;
+ border-radius: 1px;
+}
+.badge:empty {
+ display: none;
+}
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+ top: 0;
+ padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+ color: #0099d3;
+ background-color: #ffffff;
+}
+.list-group-item > .badge {
+ float: right;
+}
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
+}
+.jumbotron {
+ padding-top: 30px;
+ padding-bottom: 30px;
+ margin-bottom: 30px;
+ color: inherit;
+ background-color: #eeeeee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+ color: inherit;
+}
+.jumbotron p {
+ margin-bottom: 15px;
+ font-size: 18px;
+ font-weight: 200;
+}
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+ border-radius: 1px;
+}
+.jumbotron .container {
+ max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding-top: 48px;
+ padding-bottom: 48px;
+ }
+ .container .jumbotron,
+ .container-fluid .jumbotron {
+ padding-left: 60px;
+ padding-right: 60px;
+ }
+ .jumbotron h1,
+ .jumbotron .h1 {
+ font-size: 54px;
+ }
+}
+.thumbnail {
+ display: block;
+ padding: 4px;
+ margin-bottom: 20px;
+ line-height: 1.66666667;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 1px;
+ -webkit-transition: border 0.2s ease-in-out;
+ -o-transition: border 0.2s ease-in-out;
+ transition: border 0.2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+ margin-left: auto;
+ margin-right: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+ border-color: #0099d3;
+}
+.thumbnail .caption {
+ padding: 9px;
+ color: #333333;
+}
+.alert {
+ padding: 7px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 1px;
+}
+.alert h4 {
+ margin-top: 0;
+ color: inherit;
+}
+.alert .alert-link {
+ font-weight: 500;
+}
+.alert > p,
+.alert > ul {
+ margin-bottom: 0;
+}
+.alert > p + p {
+ margin-top: 5px;
+}
+.alert-dismissable,
+.alert-dismissible {
+ padding-right: 27px;
+}
+.alert-dismissable .close,
+.alert-dismissible .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
+}
+.alert-success {
+ background-color: #ffffff;
+ border-color: #3f9c35;
+ color: #333333;
+}
+.alert-success hr {
+ border-top-color: #37892f;
+}
+.alert-success .alert-link {
+ color: #1a1a1a;
+}
+.alert-info {
+ background-color: #ffffff;
+ border-color: #cccccc;
+ color: #333333;
+}
+.alert-info hr {
+ border-top-color: #bfbfbf;
+}
+.alert-info .alert-link {
+ color: #1a1a1a;
+}
+.alert-warning {
+ background-color: #ffffff;
+ border-color: #ec7a08;
+ color: #333333;
+}
+.alert-warning hr {
+ border-top-color: #d36d07;
+}
+.alert-warning .alert-link {
+ color: #1a1a1a;
+}
+.alert-danger {
+ background-color: #ffffff;
+ border-color: #cc0000;
+ color: #333333;
+}
+.alert-danger hr {
+ border-top-color: #b30000;
+}
+.alert-danger .alert-link {
+ color: #1a1a1a;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+.progress {
+ overflow: hidden;
+ height: 20px;
+ margin-bottom: 20px;
+ background-color: #ededed;
+ border-radius: 1px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+.progress-bar {
+ float: left;
+ width: 0%;
+ height: 100%;
+ font-size: 11px;
+ line-height: 20px;
+ color: #ffffff;
+ text-align: center;
+ background-color: #00a8e1;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+ background-color: #3f9c35;
+}
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.progress-bar-info {
+ background-color: #006e9c;
+}
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.progress-bar-warning {
+ background-color: #ec7a08;
+}
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.progress-bar-danger {
+ background-color: #cc0000;
+}
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.media {
+ margin-top: 15px;
+}
+.media:first-child {
+ margin-top: 0;
+}
+.media,
+.media-body {
+ zoom: 1;
+ overflow: hidden;
+}
+.media-body {
+ width: 10000px;
+}
+.media-object {
+ display: block;
+}
+.media-object.img-thumbnail {
+ max-width: none;
+}
+.media-right,
+.media > .pull-right {
+ padding-left: 10px;
+}
+.media-left,
+.media > .pull-left {
+ padding-right: 10px;
+}
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+.media-middle {
+ vertical-align: middle;
+}
+.media-bottom {
+ vertical-align: bottom;
+}
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
+.list-group {
+ margin-bottom: 20px;
+ padding-left: 0;
+}
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+ background-color: #ffffff;
+ border: 1px solid #f2f2f2;
+}
+.list-group-item:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+a.list-group-item,
+button.list-group-item {
+ color: #555555;
+}
+a.list-group-item .list-group-item-heading,
+button.list-group-item .list-group-item-heading {
+ color: #333333;
+}
+a.list-group-item:hover,
+button.list-group-item:hover,
+a.list-group-item:focus,
+button.list-group-item:focus {
+ text-decoration: none;
+ color: #555555;
+ background-color: #d4edfa;
+}
+button.list-group-item {
+ width: 100%;
+ text-align: left;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+ background-color: #eeeeee;
+ color: #999999;
+ cursor: not-allowed;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+ color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+ color: #999999;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #00a8e1;
+ border-color: #00a8e1;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+ color: inherit;
+}
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+ color: #aeeaff;
+}
+.list-group-item-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+}
+a.list-group-item-success,
+button.list-group-item-success {
+ color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-success:hover,
+button.list-group-item-success:hover,
+a.list-group-item-success:focus,
+button.list-group-item-success:focus {
+ color: #3c763d;
+ background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+button.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+button.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus,
+button.list-group-item-success.active:focus {
+ color: #fff;
+ background-color: #3c763d;
+ border-color: #3c763d;
+}
+.list-group-item-info {
+ color: #31708f;
+ background-color: #d9edf7;
+}
+a.list-group-item-info,
+button.list-group-item-info {
+ color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-info:hover,
+button.list-group-item-info:hover,
+a.list-group-item-info:focus,
+button.list-group-item-info:focus {
+ color: #31708f;
+ background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+button.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+button.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus,
+button.list-group-item-info.active:focus {
+ color: #fff;
+ background-color: #31708f;
+ border-color: #31708f;
+}
+.list-group-item-warning {
+ color: #ec7a08;
+ background-color: #fcf8e3;
+}
+a.list-group-item-warning,
+button.list-group-item-warning {
+ color: #ec7a08;
+}
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-warning:hover,
+button.list-group-item-warning:hover,
+a.list-group-item-warning:focus,
+button.list-group-item-warning:focus {
+ color: #ec7a08;
+ background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+button.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+button.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus,
+button.list-group-item-warning.active:focus {
+ color: #fff;
+ background-color: #ec7a08;
+ border-color: #ec7a08;
+}
+.list-group-item-danger {
+ color: #a94442;
+ background-color: #f2dede;
+}
+a.list-group-item-danger,
+button.list-group-item-danger {
+ color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-danger:hover,
+button.list-group-item-danger:hover,
+a.list-group-item-danger:focus,
+button.list-group-item-danger:focus {
+ color: #a94442;
+ background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+button.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+button.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus,
+button.list-group-item-danger.active:focus {
+ color: #fff;
+ background-color: #a94442;
+ border-color: #a94442;
+}
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+.panel {
+ margin-bottom: 20px;
+ background-color: #ffffff;
+ border: 1px solid transparent;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 14px;
+ color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+ color: inherit;
+}
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #cecdcd;
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+ margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+ border-width: 1px 0;
+ border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+ border-top: 0;
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+ border-bottom: 0;
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+.list-group + .panel-footer {
+ border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+ margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+ border-top-left-radius: 0px;
+ border-top-right-radius: 0px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+ border-top-left-radius: 0px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+ border-top-right-radius: 0px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+ border-bottom-left-radius: 0px;
+ border-bottom-right-radius: 0px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+ border-bottom-left-radius: 0px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+ border-bottom-right-radius: 0px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+ border-top: 1px solid #d1d1d1;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+ border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+ border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+ border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+ border-bottom: 0;
+}
+.panel > .table-responsive {
+ border: 0;
+ margin-bottom: 0;
+}
+.panel-group {
+ margin-bottom: 20px;
+}
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 1px;
+}
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+.panel-group .panel-heading {
+ border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+ border-top: 1px solid #cecdcd;
+}
+.panel-group .panel-footer {
+ border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #cecdcd;
+}
+.panel-default {
+ border-color: #dddddd;
+}
+.panel-default > .panel-heading {
+ color: #333333;
+ background-color: #f5f5f5;
+ border-color: #dddddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #dddddd;
+}
+.panel-default > .panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #dddddd;
+}
+.panel-primary {
+ border-color: #00a8e1;
+}
+.panel-primary > .panel-heading {
+ color: #ffffff;
+ background-color: #00a8e1;
+ border-color: #00a8e1;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #00a8e1;
+}
+.panel-primary > .panel-heading .badge {
+ color: #00a8e1;
+ background-color: #ffffff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #00a8e1;
+}
+.panel-success {
+ border-color: #3f9c35;
+}
+.panel-success > .panel-heading {
+ color: #ffffff;
+ background-color: #3f9c35;
+ border-color: #3f9c35;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #3f9c35;
+}
+.panel-success > .panel-heading .badge {
+ color: #3f9c35;
+ background-color: #ffffff;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #3f9c35;
+}
+.panel-info {
+ border-color: #006e9c;
+}
+.panel-info > .panel-heading {
+ color: #ffffff;
+ background-color: #006e9c;
+ border-color: #006e9c;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #006e9c;
+}
+.panel-info > .panel-heading .badge {
+ color: #006e9c;
+ background-color: #ffffff;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #006e9c;
+}
+.panel-warning {
+ border-color: #ec7a08;
+}
+.panel-warning > .panel-heading {
+ color: #ffffff;
+ background-color: #ec7a08;
+ border-color: #ec7a08;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ec7a08;
+}
+.panel-warning > .panel-heading .badge {
+ color: #ec7a08;
+ background-color: #ffffff;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ec7a08;
+}
+.panel-danger {
+ border-color: #cc0000;
+}
+.panel-danger > .panel-heading {
+ color: #ffffff;
+ background-color: #cc0000;
+ border-color: #cc0000;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #cc0000;
+}
+.panel-danger > .panel-heading .badge {
+ color: #cc0000;
+ background-color: #ffffff;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #cc0000;
+}
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
+ overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ height: 100%;
+ width: 100%;
+ border: 0;
+}
+.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 1px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+.well-lg {
+ padding: 24px;
+ border-radius: 1px;
+}
+.well-sm {
+ padding: 9px;
+ border-radius: 1px;
+}
+.close {
+ float: right;
+ font-size: 18px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.close:hover,
+.close:focus {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+.modal-open {
+ overflow: hidden;
+}
+.modal {
+ display: none;
+ overflow: hidden;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1050;
+ -webkit-overflow-scrolling: touch;
+ outline: 0;
+}
+.modal.fade .modal-dialog {
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+ -webkit-transition: -webkit-transform 0.3s ease-out;
+ -moz-transition: -moz-transform 0.3s ease-out;
+ -o-transition: -o-transform 0.3s ease-out;
+ transition: transform 0.3s ease-out;
+}
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px;
+}
+.modal-content {
+ position: relative;
+ background-color: #ffffff;
+ border: 1px solid #999999;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 1px;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ background-clip: padding-box;
+ outline: 0;
+}
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000000;
+}
+.modal-backdrop.fade {
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.modal-backdrop.in {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.modal-header {
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+ min-height: 16.66666667px;
+}
+.modal-header .close {
+ margin-top: -2px;
+}
+.modal-title {
+ margin: 0;
+ line-height: 1.66666667;
+}
+.modal-body {
+ position: relative;
+ padding: 15px;
+}
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+ margin-left: 5px;
+ margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
+}
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+@media (min-width: 768px) {
+ .modal-dialog {
+ width: 600px;
+ margin: 30px auto;
+ }
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ }
+ .modal-sm {
+ width: 300px;
+ }
+}
+@media (min-width: 992px) {
+ .modal-lg {
+ width: 900px;
+ }
+}
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.66666667;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ font-size: 11px;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.tooltip.in {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.tooltip.top {
+ margin-top: -3px;
+ padding: 8px 0;
+}
+.tooltip.right {
+ margin-left: 3px;
+ padding: 0 8px;
+}
+.tooltip.bottom {
+ margin-top: 3px;
+ padding: 8px 0;
+}
+.tooltip.left {
+ margin-left: -3px;
+ padding: 0 8px;
+}
+.tooltip-inner {
+ max-width: 220px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ background-color: #434343;
+ border-radius: 1px;
+}
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -8px;
+ border-width: 8px 8px 0;
+ border-top-color: #434343;
+}
+.tooltip.top-left .tooltip-arrow {
+ bottom: 0;
+ right: 8px;
+ margin-bottom: -8px;
+ border-width: 8px 8px 0;
+ border-top-color: #434343;
+}
+.tooltip.top-right .tooltip-arrow {
+ bottom: 0;
+ left: 8px;
+ margin-bottom: -8px;
+ border-width: 8px 8px 0;
+ border-top-color: #434343;
+}
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -8px;
+ border-width: 8px 8px 8px 0;
+ border-right-color: #434343;
+}
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -8px;
+ border-width: 8px 0 8px 8px;
+ border-left-color: #434343;
+}
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -8px;
+ border-width: 0 8px 8px;
+ border-bottom-color: #434343;
+}
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ right: 8px;
+ margin-top: -8px;
+ border-width: 0 8px 8px;
+ border-bottom-color: #434343;
+}
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ left: 8px;
+ margin-top: -8px;
+ border-width: 0 8px 8px;
+ border-bottom-color: #434343;
+}
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ max-width: 220px;
+ padding: 1px;
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.66666667;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ font-size: 12px;
+ background-color: #ffffff;
+ background-clip: padding-box;
+ border: 1px solid #cccccc;
+ border: 1px solid #bbbbbb;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+}
+.popover.top {
+ margin-top: -10px;
+}
+.popover.right {
+ margin-left: 10px;
+}
+.popover.bottom {
+ margin-top: 10px;
+}
+.popover.left {
+ margin-left: -10px;
+}
+.popover-title {
+ margin: 0;
+ padding: 8px 14px;
+ font-size: 12px;
+ background-color: #f5f5f5;
+ border-bottom: 1px solid #e8e8e8;
+ border-radius: 0px 0px 0 0;
+}
+.popover-content {
+ padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.popover > .arrow {
+ border-width: 11px;
+}
+.popover > .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+.popover.top > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: #bbbbbb;
+ bottom: -11px;
+}
+.popover.top > .arrow:after {
+ content: " ";
+ bottom: 1px;
+ margin-left: -10px;
+ border-bottom-width: 0;
+ border-top-color: #ffffff;
+}
+.popover.right > .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: #bbbbbb;
+}
+.popover.right > .arrow:after {
+ content: " ";
+ left: 1px;
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #ffffff;
+}
+.popover.bottom > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999999;
+ border-bottom-color: #bbbbbb;
+ top: -11px;
+}
+.popover.bottom > .arrow:after {
+ content: " ";
+ top: 1px;
+ margin-left: -10px;
+ border-top-width: 0;
+ border-bottom-color: #ffffff;
+}
+.popover.left > .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999999;
+ border-left-color: #bbbbbb;
+}
+.popover.left > .arrow:after {
+ content: " ";
+ right: 1px;
+ border-right-width: 0;
+ border-left-color: #ffffff;
+ bottom: -10px;
+}
+.carousel {
+ position: relative;
+}
+.carousel-inner {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+}
+.carousel-inner > .item {
+ display: none;
+ position: relative;
+ -webkit-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ line-height: 1;
+}
+@media all and (transform-3d), (-webkit-transform-3d) {
+ .carousel-inner > .item {
+ -webkit-transition: -webkit-transform 0.6s ease-in-out;
+ -moz-transition: -moz-transform 0.6s ease-in-out;
+ -o-transition: -o-transform 0.6s ease-in-out;
+ transition: transform 0.6s ease-in-out;
+ -webkit-backface-visibility: hidden;
+ -moz-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000px;
+ -moz-perspective: 1000px;
+ perspective: 1000px;
+ }
+ .carousel-inner > .item.next,
+ .carousel-inner > .item.active.right {
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.prev,
+ .carousel-inner > .item.active.left {
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.next.left,
+ .carousel-inner > .item.prev.right,
+ .carousel-inner > .item.active {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ left: 0;
+ }
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ display: block;
+}
+.carousel-inner > .active {
+ left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.carousel-inner > .next {
+ left: 100%;
+}
+.carousel-inner > .prev {
+ left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+ left: 0;
+}
+.carousel-inner > .active.left {
+ left: -100%;
+}
+.carousel-inner > .active.right {
+ left: 100%;
+}
+.carousel-control {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 15%;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+ font-size: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+}
+.carousel-control.right {
+ left: auto;
+ right: 0;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+}
+.carousel-control:hover,
+.carousel-control:focus {
+ outline: 0;
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ margin-top: -10px;
+ z-index: 5;
+ display: inline-block;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+ left: 50%;
+ margin-left: -10px;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+ right: 50%;
+ margin-right: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ line-height: 1;
+ font-family: serif;
+}
+.carousel-control .icon-prev:before {
+ content: '\2039';
+}
+.carousel-control .icon-next:before {
+ content: '\203a';
+}
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ margin-left: -30%;
+ padding-left: 0;
+ list-style: none;
+ text-align: center;
+}
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ border: 1px solid #ffffff;
+ border-radius: 10px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
+}
+.carousel-indicators .active {
+ margin: 0;
+ width: 12px;
+ height: 12px;
+ background-color: #ffffff;
+}
+.carousel-caption {
+ position: absolute;
+ left: 15%;
+ right: 15%;
+ bottom: 20px;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.carousel-caption .btn {
+ text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ font-size: 30px;
+ }
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .icon-prev {
+ margin-left: -15px;
+ }
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-next {
+ margin-right: -15px;
+ }
+ .carousel-caption {
+ left: 20%;
+ right: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-footer:before,
+.modal-footer:after {
+ content: " ";
+ display: table;
+}
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-footer:after {
+ clear: both;
+}
+.center-block {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+.pull-right {
+ float: right !important;
+}
+.pull-left {
+ float: left !important;
+}
+.hide {
+ display: none !important;
+}
+.show {
+ display: block !important;
+}
+.invisible {
+ visibility: hidden;
+}
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+.hidden {
+ display: none !important;
+}
+.affix {
+ position: fixed;
+}
+@-ms-viewport {
+ width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+ display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ table.visible-xs {
+ display: table !important;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-block {
+ display: block !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline {
+ display: inline !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ table.visible-sm {
+ display: table !important;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-block {
+ display: block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ table.visible-md {
+ display: table !important;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-block {
+ display: block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ table.visible-lg {
+ display: table !important;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-block {
+ display: block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+}
+.visible-print {
+ display: none !important;
+}
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ table.visible-print {
+ display: table !important;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
+}
+.visible-print-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-block {
+ display: block !important;
+ }
+}
+.visible-print-inline {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline {
+ display: inline !important;
+ }
+}
+.visible-print-inline-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline-block {
+ display: inline-block !important;
+ }
+}
+@media print {
+ .hidden-print {
+ display: none !important;
+ }
+}
+/*!
+ * Font Awesome 4.3.0 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('../../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.3.0');
+ src: url('../../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.3.0#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;
+ transform: translate(0, 0);
+}
+/* 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;
+}
+.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 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ 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 {
+ 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-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: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-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.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-genderless:before,
+.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-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-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";
+}
+.alert {
+ border-width: 2px;
+ padding-left: 34px;
+ position: relative;
+}
+.alert .alert-link {
+ color: #0099d3;
+}
+.alert .alert-link:hover {
+ color: #00618a;
+}
+.alert > .pficon {
+ font-size: 20px;
+ position: absolute;
+ left: 7px;
+ top: 7px;
+}
+.alert .pficon-info {
+ color: #72767b;
+}
+.alert-dismissable .close {
+ right: -16px;
+ top: 1px;
+}
+.badge {
+ margin-left: 6px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 6px;
+}
+.breadcrumb {
+ padding-left: 0;
+}
+.breadcrumb > .active strong {
+ font-weight: 600;
+}
+.breadcrumb > li {
+ display: inline;
+ /* IE8 */
+}
+.breadcrumb > li + li:before {
+ color: #999999;
+ content: "\f101";
+ font-family: "FontAwesome";
+ font-size: 11px;
+ padding: 0 9px 0 7px;
+}
+.btn {
+ -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
+}
+.btn:active {
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ background-color: #f8f8f8 !important;
+ background-image: none !important;
+ border-color: #d1d1d1 !important;
+ color: #969696 !important;
+ opacity: 1;
+}
+.btn.disabled:active,
+.btn[disabled]:active,
+fieldset[disabled] .btn:active {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn.disabled.btn-link,
+.btn[disabled].btn-link,
+fieldset[disabled] .btn.btn-link {
+ background-color: transparent !important;
+ border: 0;
+}
+.btn-danger {
+ background-color: #a30000;
+ background-image: -webkit-linear-gradient(top, #cc0000 0%, #a30000 100%);
+ background-image: -o-linear-gradient(top, #cc0000 0%, #a30000 100%);
+ background-image: linear-gradient(to bottom, #cc0000 0%, #a30000 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);
+ border-color: #781919;
+ color: #ffffff;
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ background-color: #a30000;
+ background-image: none;
+ border-color: #781919;
+ color: #ffffff;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open .dropdown-toggle.btn-danger.focus {
+ background-color: #8a0000;
+ border-color: #5a1313;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #a30000;
+ border-color: #781919;
+}
+.btn-default {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.btn-default:hover,
+.btn-default:focus,
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open .dropdown-toggle.btn-default.focus {
+ background-color: #e2e2e2;
+ border-color: #a5a5a5;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.btn-link,
+.btn-link:active {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-primary {
+ background-color: #0085cf;
+ background-image: -webkit-linear-gradient(top, #00a8e1 0%, #0085cf 100%);
+ background-image: -o-linear-gradient(top, #00a8e1 0%, #0085cf 100%);
+ background-image: linear-gradient(to bottom, #00a8e1 0%, #0085cf 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00a8e1', endColorstr='#ff0085cf', GradientType=0);
+ border-color: #006e9c;
+ color: #ffffff;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ background-color: #0085cf;
+ background-image: none;
+ border-color: #006e9c;
+ color: #ffffff;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open .dropdown-toggle.btn-primary.focus {
+ background-color: #0075b6;
+ border-color: #005578;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.btn-xs,
+.btn-group-xs .btn,
+.btn-group-xs > .btn {
+ font-weight: 400;
+}
+.caret {
+ font-family: "FontAwesome";
+ font-weight: normal;
+ height: 9px;
+ position: relative;
+ vertical-align: baseline;
+ width: 12px;
+}
+.caret:before {
+ bottom: 0;
+ content: "\f107";
+ left: 0;
+ line-height: 12px;
+ position: absolute;
+ text-align: center;
+ top: -1px;
+ right: 0;
+}
+.dropdown-menu .divider {
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 4px 1px;
+ overflow: hidden;
+}
+.dropdown-menu > li > a {
+ border-color: transparent;
+ border-style: solid;
+ border-width: 1px 0;
+ padding: 1px 10px;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ border-color: #b3d3e7;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dropdown-menu > li > a:active {
+ background-color: #0099d3;
+ border-color: #0076b7;
+ color: #ffffff !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ background-color: #0099d3 !important;
+ border-color: #0076b7 !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ border-color: transparent;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ border-color: transparent;
+}
+.dropdown-header {
+ padding-left: 10px;
+ padding-right: 10px;
+ text-transform: uppercase;
+}
+.btn-group > .dropdown-menu,
+.input-group-btn > .dropdown-menu {
+ margin-top: -1px;
+}
+.dropup .dropdown-menu {
+ margin-bottom: -1px;
+}
+.dropdown-submenu {
+ position: relative;
+}
+.dropdown-submenu:hover > a {
+ background-color: #d4edfa;
+ border-color: #b3d3e7;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+ display: block;
+}
+.dropdown-submenu.pull-left {
+ float: none !important;
+}
+.dropdown-submenu.pull-left > .dropdown-menu {
+ left: auto;
+ margin-left: 10px;
+ right: 100%;
+}
+.dropdown-submenu > a {
+ padding-right: 20px !important;
+}
+.dropdown-submenu > a:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 2px;
+}
+.dropdown-submenu > .dropdown-menu {
+ left: 100%;
+ margin-top: 0;
+ top: -6px;
+}
+.dropup .dropdown-submenu > .dropdown-menu {
+ bottom: -5px;
+ top: auto;
+}
+.open .dropdown-submenu.active > .dropdown-menu {
+ display: block;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ border-color: #d4d4d4 !important;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #969696;
+}
+.form-control:hover {
+ border-color: #7bb2dd;
+}
+.has-error .form-control:hover {
+ border-color: #843534;
+}
+.has-success .form-control:hover {
+ border-color: #2b542c;
+}
+.has-warning .form-control:hover {
+ border-color: #bb6106;
+}
+.input-group .input-group-btn .btn {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+label {
+ font-weight: 600;
+}
+.label {
+ border-radius: 0;
+ font-size: 100%;
+ font-weight: 600;
+}
+h1 .label,
+h2 .label,
+h3 .label,
+h4 .label,
+h5 .label,
+h6 .label {
+ font-size: 75%;
+}
+.list-group {
+ border-top: 1px solid #e9e8e8;
+}
+.list-group .list-group-item:first-child {
+ border-top: 0;
+}
+.list-group-item {
+ border-left: 0;
+ border-right: 0;
+}
+.list-group-item-heading {
+ font-weight: 700;
+}
+.modal-header {
+ background-color: #f8f8f8;
+ border-bottom: none;
+ padding: 10px 18px;
+}
+.modal-header .close {
+ margin-top: 2px;
+}
+.modal-title {
+ font-size: 13px;
+ font-weight: 700;
+}
+.modal-footer {
+ border-top: none;
+ margin-top: 15px;
+ padding: 14px 15px 15px;
+}
+.modal-footer > .btn {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+.modal-footer > .btn > .fa-angle-left {
+ margin-right: 5px;
+}
+.modal-footer > .btn > .fa-angle-right {
+ margin-left: 5px;
+}
+.pager li > a,
+.pager li > span {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+ font-weight: 600;
+ line-height: 22px;
+ padding: 2px 14px;
+}
+.pager li > a:hover,
+.pager li > span:hover,
+.pager li > a:focus,
+.pager li > span:focus,
+.pager li > a:active,
+.pager li > span:active,
+.pager li > a.active,
+.pager li > span.active,
+.open .dropdown-toggle.pager li > a,
+.open .dropdown-toggle.pager li > span {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.pager li > a:active,
+.pager li > span:active,
+.pager li > a.active,
+.pager li > span.active,
+.open .dropdown-toggle.pager li > a,
+.open .dropdown-toggle.pager li > span {
+ background-image: none;
+}
+.pager li > a:active:hover,
+.pager li > span:active:hover,
+.pager li > a.active:hover,
+.pager li > span.active:hover,
+.open .dropdown-toggle.pager li > a:hover,
+.open .dropdown-toggle.pager li > span:hover,
+.pager li > a:active:focus,
+.pager li > span:active:focus,
+.pager li > a.active:focus,
+.pager li > span.active:focus,
+.open .dropdown-toggle.pager li > a:focus,
+.open .dropdown-toggle.pager li > span:focus,
+.pager li > a:active.focus,
+.pager li > span:active.focus,
+.pager li > a.active.focus,
+.pager li > span.active.focus,
+.open .dropdown-toggle.pager li > a.focus,
+.open .dropdown-toggle.pager li > span.focus {
+ background-color: #e2e2e2;
+ border-color: #a5a5a5;
+}
+.pager li > a.disabled,
+.pager li > span.disabled,
+.pager li > a[disabled],
+.pager li > span[disabled],
+fieldset[disabled] .pager li > a,
+fieldset[disabled] .pager li > span,
+.pager li > a.disabled:hover,
+.pager li > span.disabled:hover,
+.pager li > a[disabled]:hover,
+.pager li > span[disabled]:hover,
+fieldset[disabled] .pager li > a:hover,
+fieldset[disabled] .pager li > span:hover,
+.pager li > a.disabled:focus,
+.pager li > span.disabled:focus,
+.pager li > a[disabled]:focus,
+.pager li > span[disabled]:focus,
+fieldset[disabled] .pager li > a:focus,
+fieldset[disabled] .pager li > span:focus,
+.pager li > a.disabled:active,
+.pager li > span.disabled:active,
+.pager li > a[disabled]:active,
+.pager li > span[disabled]:active,
+fieldset[disabled] .pager li > a:active,
+fieldset[disabled] .pager li > span:active,
+.pager li > a.disabled.active,
+.pager li > span.disabled.active,
+.pager li > a[disabled].active,
+.pager li > span[disabled].active,
+fieldset[disabled] .pager li > a.active,
+fieldset[disabled] .pager li > span.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.pager li > a > .i,
+.pager li > span > .i {
+ font-size: 18px;
+ vertical-align: top;
+ margin: 2px 0;
+}
+.pager li > a:hover > a:focus {
+ color: #4d5258;
+}
+.pager li a:active {
+ background-image: none;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ outline: 0;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > a:active,
+.pager .disabled > span {
+ background: #f5f5f5;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #969696;
+ cursor: default;
+}
+.pager .next > a > .i,
+.pager .next > span > .i {
+ margin-left: 5px;
+}
+.pager .previous > a > .i,
+.pager .previous > span > .i {
+ margin-right: 5px;
+}
+.pager-sm li > a,
+.pager-sm li > span {
+ font-weight: 400;
+ line-height: 16px;
+ padding: 1px 10px;
+}
+.pager-sm li > a > .i,
+.pager-sm li > span > .i {
+ font-size: 12px;
+}
+.pagination > li > a,
+.pagination > li > span {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+ cursor: default;
+ font-weight: 600;
+ padding: 2px 10px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus,
+.pagination > li > a:active,
+.pagination > li > span:active,
+.pagination > li > a.active,
+.pagination > li > span.active,
+.open .dropdown-toggle.pagination > li > a,
+.open .dropdown-toggle.pagination > li > span {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.pagination > li > a:active,
+.pagination > li > span:active,
+.pagination > li > a.active,
+.pagination > li > span.active,
+.open .dropdown-toggle.pagination > li > a,
+.open .dropdown-toggle.pagination > li > span {
+ background-image: none;
+}
+.pagination > li > a:active:hover,
+.pagination > li > span:active:hover,
+.pagination > li > a.active:hover,
+.pagination > li > span.active:hover,
+.open .dropdown-toggle.pagination > li > a:hover,
+.open .dropdown-toggle.pagination > li > span:hover,
+.pagination > li > a:active:focus,
+.pagination > li > span:active:focus,
+.pagination > li > a.active:focus,
+.pagination > li > span.active:focus,
+.open .dropdown-toggle.pagination > li > a:focus,
+.open .dropdown-toggle.pagination > li > span:focus,
+.pagination > li > a:active.focus,
+.pagination > li > span:active.focus,
+.pagination > li > a.active.focus,
+.pagination > li > span.active.focus,
+.open .dropdown-toggle.pagination > li > a.focus,
+.open .dropdown-toggle.pagination > li > span.focus {
+ background-color: #e2e2e2;
+ border-color: #a5a5a5;
+}
+.pagination > li > a.disabled,
+.pagination > li > span.disabled,
+.pagination > li > a[disabled],
+.pagination > li > span[disabled],
+fieldset[disabled] .pagination > li > a,
+fieldset[disabled] .pagination > li > span,
+.pagination > li > a.disabled:hover,
+.pagination > li > span.disabled:hover,
+.pagination > li > a[disabled]:hover,
+.pagination > li > span[disabled]:hover,
+fieldset[disabled] .pagination > li > a:hover,
+fieldset[disabled] .pagination > li > span:hover,
+.pagination > li > a.disabled:focus,
+.pagination > li > span.disabled:focus,
+.pagination > li > a[disabled]:focus,
+.pagination > li > span[disabled]:focus,
+fieldset[disabled] .pagination > li > a:focus,
+fieldset[disabled] .pagination > li > span:focus,
+.pagination > li > a.disabled:active,
+.pagination > li > span.disabled:active,
+.pagination > li > a[disabled]:active,
+.pagination > li > span[disabled]:active,
+fieldset[disabled] .pagination > li > a:active,
+fieldset[disabled] .pagination > li > span:active,
+.pagination > li > a.disabled.active,
+.pagination > li > span.disabled.active,
+.pagination > li > a[disabled].active,
+.pagination > li > span[disabled].active,
+fieldset[disabled] .pagination > li > a.active,
+fieldset[disabled] .pagination > li > span.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.pagination > li > a > .i,
+.pagination > li > span > .i {
+ font-size: 15px;
+ vertical-align: top;
+ margin: 2px 0;
+}
+.pagination > li > a:active,
+.pagination > li > span:active {
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ background-color: #eeeeee;
+ border-color: #bbbbbb;
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ color: #4d5258;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ cursor: default;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ font-weight: 400;
+}
+.pagination-sm > li > a > .i,
+.pagination-sm > li > span > .i {
+ font-size: 12px;
+ margin-top: 2px;
+}
+.panel-title {
+ font-weight: 700;
+}
+.panel-group .panel {
+ color: #4d5258;
+}
+.panel-group .panel + .panel {
+ margin-top: -1px;
+}
+.panel-group .panel-default {
+ border-color: #bebdbd;
+ border-top-color: #c4c3c3;
+}
+.panel-group .panel-heading {
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.panel-group .panel-heading + .panel-collapse .panel-body {
+ border-top: 1px solid #cecdcd;
+}
+.panel-group .panel-title {
+ font-weight: 500;
+ line-height: 1;
+}
+.panel-group .panel-title > a {
+ color: #4d5258;
+ font-weight: 600;
+}
+.panel-group .panel-title > a:before {
+ content: "\f107";
+ font-family: "FontAwesome";
+ font-size: 13px;
+ margin-right: 5px;
+ vertical-align: 0;
+}
+.panel-group .panel-title > a:focus {
+ outline: none;
+ text-decoration: none;
+}
+.panel-group .panel-title > a:hover {
+ text-decoration: none;
+}
+.panel-group .panel-title > a.collapsed:before {
+ content: "\f105";
+ margin-left: 4px;
+ margin-right: 7px;
+}
+.popover {
+ -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.08);
+ box-shadow: 0 2px 2px rgba(0, 0, 0, 0.08);
+ padding: 0;
+}
+.popover-content {
+ color: #4d5258;
+ line-height: 18px;
+ padding: 10px 14px;
+}
+.popover-title {
+ border-bottom: none;
+ border-radius: 0;
+ color: #4d5258;
+ font-size: 13px;
+ font-weight: 700;
+ min-height: 34px;
+}
+.popover-title .close {
+ height: 22px;
+ position: absolute;
+ right: 8px;
+ top: 6px;
+}
+.popover-title.closable {
+ padding-right: 30px;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+.progress {
+ -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.25);
+ box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.25);
+}
+.progress.progress-label-left,
+.progress.progress-label-top-right {
+ overflow: visible;
+ position: relative;
+}
+.progress.progress-label-left {
+ margin-left: 40px;
+}
+.progress.progress-sm {
+ height: 14px;
+ margin-bottom: 14px;
+}
+.progress.progress-xs {
+ height: 6px;
+ margin-bottom: 6px;
+}
+td > .progress:first-child:last-child {
+ margin-bottom: 0;
+ margin-top: 3px;
+}
+.progress-bar {
+ box-shadow: none;
+}
+.progress-label-left .progress-bar span,
+.progress-label-top-right .progress-bar span {
+ color: #333333;
+ font-size: 14px;
+ position: absolute;
+ text-align: right;
+}
+.progress-label-left .progress-bar span {
+ left: -40px;
+ top: 0;
+ width: 35px;
+}
+.progress-label-top-right .progress-bar span {
+ max-width: 25%;
+ overflow: hidden;
+ right: 0;
+ text-overflow: ellipsis;
+ top: -31px;
+ white-space: nowrap;
+}
+.progress-label-left.progress-sm .progress-bar span,
+.progress-label-top-right.progress-sm .progress-bar span {
+ font-size: 12px;
+}
+.progress-sm .progress-bar {
+ line-height: 14px;
+}
+.progress-xs .progress-bar {
+ line-height: 6px;
+}
+.progress-description {
+ margin-bottom: 10px;
+ max-width: 74%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.progress-description .count {
+ font-size: 20.004px;
+ font-weight: 300;
+ line-height: 1;
+ margin-right: 5px;
+}
+.progress-description .fa,
+.progress-description .pficon {
+ font-size: 14px;
+ margin-right: 3px;
+}
+.progress-description .tooltip {
+ white-space: normal;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 2px 10px 3px;
+}
+.table > thead > tr > th > a:hover,
+.table > tbody > tr > th > a:hover,
+.table > tfoot > tr > th > a:hover,
+.table > thead > tr > td > a:hover,
+.table > tbody > tr > td > a:hover,
+.table > tfoot > tr > td > a:hover {
+ text-decoration: none;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+}
+.table > thead {
+ background-clip: padding-box;
+ background-color: #f9f9f9;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.table-bordered {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 1px;
+}
+.table-striped > tbody > tr:nth-of-type(even) {
+ background-color: #f5f5f5;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: transparent;
+}
+.table-hover > tbody > tr:hover > td,
+.table-hover > tbody > tr:hover > th {
+ background-color: #d5ecf9;
+ border-bottom-color: #a7cadf;
+}
+.nav-tabs {
+ font-size: 14px;
+}
+.nav-tabs > li > a {
+ color: #4d5258;
+ margin-right: -1px;
+ padding-bottom: 5px;
+ padding-top: 5px;
+}
+.nav-tabs > li > a:active,
+.nav-tabs > li > a:focus,
+.nav-tabs > li > a:hover {
+ background: transparent;
+ border-color: #e9e8e8;
+ color: #222222;
+}
+.nav-tabs > li > .dropdown-menu {
+ border-top: 0;
+ border-color: #e9e8e8;
+}
+.nav-tabs > li > .dropdown-menu.pull-right {
+ right: -1px;
+}
+.nav-tabs + .nav-tabs-pf {
+ font-size: 12px;
+}
+.nav-tabs + .nav-tabs-pf > li:first-child > a {
+ padding-left: 15px;
+}
+.nav-tabs + .nav-tabs-pf > li:first-child > a:before {
+ left: 15px !important;
+}
+.nav-tabs .open > a,
+.nav-tabs .open > a:hover,
+.nav-tabs .open > a:focus {
+ background-color: transparent;
+ border-color: #e9e8e8;
+}
+@media (min-width: 768px) {
+ .nav-tabs-pf.nav-justified {
+ border-bottom: 1px solid #e9e8e8;
+ }
+}
+.nav-tabs-pf.nav-justified > li:first-child > a {
+ padding-left: 15px;
+}
+.nav-tabs-pf.nav-justified > li > a {
+ border-bottom: 0;
+}
+.nav-tabs-pf.nav-justified > li > a:before {
+ left: 0 !important;
+ right: 0 !important;
+}
+.nav-tabs-pf > li {
+ margin-bottom: 0;
+}
+.nav-tabs-pf > li.active > a:before {
+ background: #0099d3;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 15px;
+ position: absolute;
+ right: 15px;
+}
+.nav-tabs-pf > li.active > a,
+.nav-tabs-pf > li.active > a:active,
+.nav-tabs-pf > li.active > a:focus,
+.nav-tabs-pf > li.active > a:hover {
+ background-color: transparent;
+ border: 0 !important;
+ color: #0099d3;
+}
+.nav-tabs-pf > li.active > a:before,
+.nav-tabs-pf > li.active > a:active:before,
+.nav-tabs-pf > li.active > a:focus:before,
+.nav-tabs-pf > li.active > a:hover:before {
+ background: #0099d3;
+}
+.nav-tabs-pf > li:first-child > a {
+ padding-left: 0;
+}
+.nav-tabs-pf > li:first-child > a:before {
+ left: 0 !important;
+}
+.nav-tabs-pf > li > a {
+ border: 0;
+ line-height: 1;
+ margin-right: 0;
+ padding-bottom: 10px;
+ padding-top: 10px;
+}
+.nav-tabs-pf > li > a:active:before,
+.nav-tabs-pf > li > a:focus:before,
+.nav-tabs-pf > li > a:hover:before {
+ background: #aaaaaa;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 15px;
+ position: absolute;
+ right: 15px;
+}
+.nav-tabs-pf > li > .dropdown-menu {
+ left: 15px;
+ margin-top: 1px;
+}
+.nav-tabs-pf > li > .dropdown-menu.pull-right {
+ left: auto;
+ right: 15px;
+}
+.nav-tabs-pf .open > a,
+.nav-tabs-pf .open > a:hover,
+.nav-tabs-pf .open > a:focus {
+ background-color: transparent;
+}
+.tooltip {
+ font-size: 12px;
+ line-height: 1.4;
+}
+.tooltip-inner {
+ padding: 7px 12px;
+ text-align: left;
+}
+h1,
+.h1,
+h2,
+.h2 {
+ font-weight: 300;
+}
+.page-header .actions {
+ margin-top: 8px;
+}
+.page-header .actions a > .pficon {
+ margin-right: 4px;
+}
+@media (min-width: 767px) {
+ .page-header-bleed-left {
+ margin-left: -20px;
+ }
+ .page-header-bleed-right {
+ margin-right: -20px;
+ }
+ .page-header-bleed-right .actions {
+ margin-right: 20px;
+ }
+}
+/*# sourceMappingURL=patternfly.css.map */
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.css.map
new file mode 100644
index 0000000..c17efee
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["less/fonts.less","components/bootstrap/less/normalize.less","components/bootstrap/less/print.less","components/bootstrap/less/glyphicons.less","components/bootstrap/less/scaffolding.less","components/bootstrap/less/mixins/vendor-prefixes.less","less/variables.less","components/bootstrap/less/mixins/tab-focus.less","components/bootstrap/less/thumbnails.less","components/bootstrap/less/carousel.less","components/bootstrap/less/mixins/image.less","components/bootstrap/less/type.less","components/bootstrap/less/mixins/text-emphasis.less","components/bootstrap/less/mixins/background-variant.less","components/bootstrap/less/mixins/text-overflow.less","components/bootstrap/less/code.less","components/bootstrap/less/grid.less","components/bootstrap/less/mixins/grid.less","components/bootstrap/less/mixins/grid-framework.less","components/bootstrap/less/tables.less","components/bootstrap/less/mixins/table-row.less","components/bootstrap/less/forms.less","components/bootstrap/less/mixins/forms.less","less/mixins.less","components/bootstrap/less/buttons.less","components/bootstrap/less/mixins/buttons.less","components/bootstrap/less/mixins/opacity.less","components/bootstrap/less/button-groups.less","components/bootstrap/less/component-animations.less","components/bootstrap/less/dropdowns.less","components/bootstrap/less/mixins/nav-divider.less","components/bootstrap/less/mixins/reset-filter.less","components/bootstrap/less/mixins/border-radius.less","components/bootstrap/less/input-groups.less","components/bootstrap/less/navs.less","components/bootstrap/less/navbar.less","components/bootstrap/less/mixins/nav-vertical-align.less","components/bootstrap/less/utilities.less","components/font-awesome/less/bordered-pulled.less","components/bootstrap/less/breadcrumbs.less","components/bootstrap/less/pagination.less","components/bootstrap/less/mixins/pagination.less","components/bootstrap/less/pager.less","components/bootstrap/less/labels.less","components/bootstrap/less/mixins/labels.less","components/bootstrap/less/badges.less","components/bootstrap/less/jumbotron.less","components/bootstrap/less/alerts.less","components/bootstrap/less/mixins/alerts.less","components/bootstrap/less/progress-bars.less","components/bootstrap/less/mixins/gradients.less","components/bootstrap/less/mixins/progress-bar.less","components/bootstrap/less/media.less","components/bootstrap/less/list-group.less","components/bootstrap/less/mixins/list-group.less","components/bootstrap/less/panels.less","components/bootstrap/less/mixins/panels.less","components/bootstrap/less/responsive-embed.less","components/bootstrap/less/wells.less","components/bootstrap/less/close.less","components/bootstrap/less/modals.less","components/bootstrap/less/tooltip.less","components/bootstrap/less/mixins/reset-text.less","components/bootstrap/less/popovers.less","components/bootstrap/less/mixins/clearfix.less","components/bootstrap/less/mixins/center-block.less","components/bootstrap/less/mixins/hide-text.less","components/bootstrap/less/responsive-utilities.less","components/bootstrap/less/mixins/responsive-visibility.less","components/font-awesome/less/path.less","components/font-awesome/less/core.less","components/font-awesome/less/larger.less","components/font-awesome/less/fixed-width.less","components/font-awesome/less/list.less","components/font-awesome/less/animated.less","components/font-awesome/less/rotated-flipped.less","components/font-awesome/less/mixins.less","components/font-awesome/less/stacked.less","components/font-awesome/less/icons.less","components/font-awesome/less/variables.less","less/alerts.less","less/badges.less","less/breadcrumbs.less","less/buttons.less","less/dropdowns.less","less/forms.less","less/labels.less","less/list-group.less","less/modals.less","less/pager.less","less/pagination.less","less/panels.less","less/popovers.less","less/progress-bars.less","less/tables.less","less/tabs.less","less/tooltip.less","less/type.less"],"names":[],"mappings":"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","sourcesContent":["//\n// Fonts\n// --------------------------------------------------\n\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 300;\n src: url('@{font-path}/OpenSans-Light-webfont.eot');\n src: url('@{font-path}/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-Light-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-Light-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');\n}\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: url('@{font-path}/OpenSans-Regular-webfont.eot');\n src: url('@{font-path}/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-Regular-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-Regular-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');\n}\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 600;\n src: url('@{font-path}/OpenSans-Semibold-webfont.eot');\n src: url('@{font-path}/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-Semibold-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-Semibold-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');\n}\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: url('@{font-path}/OpenSans-Bold-webfont.eot');\n src: url('@{font-path}/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-Bold-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-Bold-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');\n}\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 800;\n src: url('@{font-path}/OpenSans-ExtraBold-webfont.eot');\n src: url('@{font-path}/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-ExtraBold-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-ExtraBold-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') format('svg');\n}","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","//\n// Variables\n// --------------------------------------------------\n// Bootstrap overrides and PatternFly-specific variables\n\n// PatternFly-specific\n// -------------------\n@btn-default-bg-img-start: #fafafa;\n@btn-default-bg-img-stop: #ededed;\n@btn-xs-font-weight: 400;\n@card-pf-accented-border-top-color: #39a5dc;\n@card-pf-bg-color: #fff;\n@card-pf-border-color: #d1d1d1;\n@card-pf-border-top-color: transparent;\n@card-pf-container-bg-color: #f5f5f5;\n@card-pf-footer-bg-color: #fafafa;\n@dropdown-divider-margin: 4px 1px;\n@dropdown-link-active-border-color: #0076b7;\n@dropdown-link-hover-border-color: #b3d3e7;\n@dropdown-link-focus-color: #fff;\n@font-family-monospace: Menlo, Monaco, Consolas, monospace;\n@fa-font-path: \"../../components/font-awesome/fonts\";\n@font-path: \"../fonts\";\n@gray-light-pf: #aaa;\n@gray-pf: #4d5258;\n@icon-font-name-fa: \"FontAwesome\";\n@icon-font-name-pf: \"PatternFlyIcons-webfont\";\n@icon-prefix: pficon;\n@img-bg-login: \"bg-login.jpg\";\n@img-path: \"../img\";\n@img-spinner: \"spinner.gif\";\n@img-spinner-lg: \"spinner-lg.gif\";\n@img-spinner-sm: \"spinner-sm.gif\";\n@img-spinner-xs: \"spinner-xs.gif\";\n@input-border-disabled: #d4d4d4;\n@input-border-hover: #7BB2DD;\n@list-group-top-border: #e9e8e8;\n@login-bg-color: #080808;\n@login-container-bg-color: #181818;\n@login-container-bg-color-rgba: rgba(255, 255, 255, 0.055);\n@modal-title-padding-horizontal: 18px;\n@modal-title-padding-vertical: 10px;\n@navbar-pf-active-color: #f1f1f1;\n@navbar-pf-bg-color: #030303; //#393F45\n@navbar-pf-border-color: #199dde;\n@navbar-pf-color: #cfcfcf;\n@navbar-pf-icon-bar-bg-color: #fff;\n@navbar-pf-navbar-navbar-brand-min-width: 270px;\n@navbar-pf-navbar-navbar-brand-padding: 8px 0 7px;\n@navbar-pf-navbar-navbar-persistent-bg-color: #f6f6f6;\n@navbar-pf-navbar-navbar-persistent-border-color: #cecdcd;\n@pagination-padding-small-vertical: 0;\n@panel-default-border-color: #bebdbd;\n@sidebar-pf-bg: #fafafa;\n@sidebar-pf-border-color: #d0d0d0;\n@table-border-hover: #a7cadf;\n@table-cell-padding-bottom: 3px;\n@table-cell-padding-top: 2px;\n// Reference variables declared in block above\n@img-path-alt: @img-path;\n@navbar-pf-navbar-header-border-color: lighten(@navbar-pf-bg-color, 15%);\n@navbar-pf-navbar-nav-active-active-bg-color: lighten(@navbar-pf-bg-color, 8%);\n@navbar-pf-navbar-nav-active-active-open-bg-color: lighten(@navbar-pf-bg-color, 11%);\n@navbar-pf-navbar-nav-active-bg-color: lighten(@navbar-pf-bg-color, 12.5%);\n@navbar-pf-navbar-primary-bg-color-start: lighten(@navbar-pf-bg-color, 10%); // #474C50;\n@navbar-pf-navbar-primary-bg-color-stop: @navbar-pf-bg-color; // #383F43;\n@navbar-pf-navbar-utility-border-color: lighten(@navbar-pf-bg-color, 15.5%);\n@navbar-pf-navbar-utility-color: @navbar-pf-color;\n@navbar-pf-navbar-utility-hover-bg-color: lighten(@navbar-pf-bg-color, 12.5%);\n@nav-tabs-color: @gray-pf;\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-context-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 8.5%);\n@navbar-pf-navbar-primary-context-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 11%);\n@navbar-pf-navbar-primary-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 10%);\n@navbar-pf-navbar-primary-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 10%);\n@navbar-pf-navbar-primary-hover-border-color: lighten(@navbar-pf-navbar-header-border-color, 20%);\n@navbar-pf-navbar-primary-context-border-color: lighten(@navbar-pf-navbar-header-border-color, 8%);\n@navbar-pf-navbar-primary-context-border-top-color: lighten(@navbar-pf-navbar-header-border-color, 7%);\n@navbar-pf-navbar-utility-hover-border-color: lighten(@navbar-pf-navbar-utility-border-color, 5%);\n@navbar-pf-navbar-utility-open-bg-color: lighten(@navbar-pf-navbar-utility-hover-bg-color, 7.5%);\n@navbar-pf-navbar-utility-open-border-color: lighten(@navbar-pf-navbar-utility-hover-border-color, 5%);\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-active-bg-color-start: lighten(@navbar-pf-navbar-primary-hover-bg-color-start, 5%);\n@navbar-pf-navbar-primary-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-hover-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-active-border-color: lighten(@navbar-pf-navbar-primary-hover-border-color, 5%);\n@navbar-pf-navbar-primary-context-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-context-bg-color-start, 5%);\n@navbar-pf-navbar-primary-context-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-context-hover-border-color: lighten(@navbar-pf-navbar-primary-context-border-color, 5%);\n@navbar-pf-navbar-primary-context-hover-border-top-color: lighten(@navbar-pf-navbar-primary-context-border-top-color, 6%);\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-context-active-bg-color-start: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-start, 5%);\n@navbar-pf-navbar-primary-context-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-context-active-border-color: lighten(@navbar-pf-navbar-primary-context-hover-border-color, 5%);\n@navbar-pf-navbar-primary-context-active-border-top-color: lighten(@navbar-pf-navbar-primary-context-hover-border-top-color, 6%);\n// References variable declared in block above\n@navbar-pf-navbar-primary-context-active-border-right-color: @navbar-pf-navbar-primary-context-active-border-color;\n\n\n// Bootstrap overrides\n// -------------------\n@alert-info-border: #ccc;\n@alert-link-font-weight: 500;\n@alert-padding: 7px;\n@body-bg: #ffffff;\n@border-radius-base: 1px;\n@brand-danger: #cc0000;\n@brand-info: #006e9c;\n@brand-primary: #00a8e1;\n@brand-success: #3f9c35;\n@brand-warning: #ec7a08;\n@breadcrumb-bg: transparent;\n@breadcrumb-separator: \"\\f105\";\n@btn-danger-bg: #a30000;\n@btn-danger-border: #781919;\n@btn-default-border: #b7b7b7;\n@btn-font-weight: 600;\n@btn-primary-bg: #0085cf;\n@btn-primary-border: #006e9c;\n@caret-width-base: 0;\n@dropdown-border: #b6b6b6;\n@dropdown-divider-bg: #e5e5e5;\n@dropdown-link-active-color: #fff;\n@dropdown-link-hover-bg: #d4edfa;\n@font-family-base: \"Open Sans\", Helvetica, Arial, sans-serif;\n@font-size-base: 12px;\n@gray-dark: lighten(#000, 20%); // #333\n@gray-darker: lighten(#000, 13.5%); // #222\n@gray-light: lighten(#000, 60%); // #999\n@gray-lighter: lighten(#000, 93.5%); // #eee\n@grid-gutter-width: 40px;\n@icon-font-path: \"../../components/bootstrap/dist/fonts/\";\n@input-bg-disabled: #F8F8F8;\n@input-border: #BABABA;\n@line-height-base: 1.66666667; // 20/12\n@link-color: #0099d3;\n@list-group-border: #f2f2f2;\n@list-group-border-radius: 0;\n@list-group-hover-bg: #d4edfa;\n@link-hover-color: #00618a;\n@nav-tabs-border-color: #e9e8e8;\n@nav-tabs-link-hover-border-color: transparent;\n@padding-large-horizontal: 10px;\n@padding-base-horizontal: 6px;\n@padding-base-vertical: 2px;\n@padding-large-vertical: 6px;\n@pager-border-radius: 0;\n@pager-disabled-color: #969696;\n@pagination-bg: #f5f5f5;\n@pagination-border: #bbbbbb;\n@pagination-hover-bg: #ededed;\n@panel-inner-border: #cecdcd;\n@popover-arrow-color: #fff;\n@popover-arrow-outer-color: #bbb;\n@popover-border-color: #bbb;\n@popover-max-width: 220px;\n@popover-title-bg: #f5f5f5;\n@pre-bg: #fcfcfc;\n@progress-bg: #ededed;\n@table-bg-accent: #f5f5f5;\n@table-bg-hover: #d5ecf9;\n@table-border-color: #d1d1d1;\n@table-cell-padding: 10px;\n@tooltip-arrow-width: 8px;\n@tooltip-bg: #434343;\n@tooltip-max-width: 220px;\n// Reference variables declared in block above\n@alert-danger-bg: @body-bg;\n@alert-danger-border: @brand-danger;\n@alert-danger-text: @gray-dark;\n@alert-info-bg: @body-bg;\n@alert-info-text: @gray-dark;\n@alert-success-bg: @body-bg;\n@alert-success-border: @brand-success;\n@alert-success-text: @gray-dark;\n@alert-warning-bg: @body-bg;\n@alert-warning-border: @brand-warning;\n@alert-warning-text: @gray-dark;\n@badge-border-radius: @border-radius-base;\n@border-radius-large: @border-radius-base;\n@border-radius-small: @border-radius-base;\n@breadcrumb-active-color: @gray-pf;\n@breadcrumb-color: @gray-pf;\n@btn-default-bg: @gray-lighter;\n@btn-default-color: @gray-pf;\n@caret-width-large: @caret-width-base;\n@dropdown-fallback-border: @dropdown-border;\n@dropdown-link-active-bg: @link-color;\n@dropdown-link-hover-color: @gray-pf;\n@font-size-h1: ceil(@font-size-base * 2); // ~24px\n@font-size-h2: ceil(@font-size-base * 1.8333); // ~22px\n@font-size-h3: ceil(@font-size-base * 1.3333); // ~16px\n@font-size-h5: ceil(@font-size-base * 1.0833); // ~13px\n@font-size-large: ceil(@font-size-base * 1.1666); // ~14px\n@font-size-small: ceil(@font-size-base * .9166); // ~11px\n@input-color: @gray-dark;\n@nav-tabs-active-link-hover-color: @link-color;\n@nav-tabs-justified-link-border-color: @nav-tabs-border-color;\n@padding-small-horizontal: @padding-base-horizontal;\n@padding-small-vertical: @padding-base-vertical;\n@panel-danger-border: @brand-danger;\n@panel-danger-heading-bg: @brand-danger;\n@panel-info-border: @brand-info;\n@panel-info-heading-bg: @brand-info;\n@panel-primary-text: @body-bg;\n@panel-success-border: @brand-success;\n@panel-success-heading-bg: @brand-success;\n@panel-warning-border: @brand-warning;\n@panel-warning-heading-bg: @brand-warning;\n@state-warning-text: @brand-warning;\n// Reference variable declared in block above\n@panel-danger-text: @panel-primary-text;\n@panel-info-text: @panel-primary-text;\n@panel-success-text: @panel-primary-text;\n@panel-warning-text: @panel-primary-text;\n\n// PatternFly-specific variables based on Bootstrap overides\n// ---------------------------------------------------------\n@btn-danger-bg-img-start: @brand-danger;\n@btn-danger-bg-img-stop: @btn-danger-bg;\n@btn-primary-bg-img-start: @brand-primary;\n@btn-primary-bg-img-stop: @btn-primary-bg;\n@dropdown-link-focus-bg: @link-color;\n@line-height-computed: floor((@font-size-base * @line-height-base));\n@progress-sm: @line-height-computed - 6;\n@progress-xs: @line-height-computed - 14;\n@syntax-1: @btn-danger-bg;\n@syntax-2: @gray-dark;\n@syntax-3: @brand-success;\n@syntax-4: @brand-info;\n@tooltip-font-size: @font-size-base;\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n .transition-transform(~'0.6s ease-in-out');\n .backface-visibility(~'hidden');\n .perspective(1000px);\n\n &.next,\n &.active.right {\n .translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n .translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n .translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 8.3, iOS doesn't support `datetime` or `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n &.form-control {\n line-height: @input-height-base;\n }\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n min-height: (@line-height-computed + @font-size-base);\n\n &.input-lg,\n &.input-sm {\n padding-left: 0;\n padding-right: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n .form-control {\n height: @input-height-small;\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n border-radius: @input-border-radius-small;\n }\n select.form-control {\n height: @input-height-small;\n line-height: @input-height-small;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-small;\n min-height: (@line-height-computed + @font-size-small);\n padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n }\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n .form-control {\n height: @input-height-large;\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n border-radius: @input-border-radius-large;\n }\n select.form-control {\n height: @input-height-large;\n line-height: @input-height-large;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-large;\n min-height: (@line-height-computed + @font-size-large);\n padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: floor((@grid-gutter-width / 2));\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: ((@padding-large-vertical * @line-height-large) + 1);\n font-size: @font-size-large;\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n font-size: @font-size-small;\n }\n }\n }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Mixins\n// --------------------------------------------------\n// Bootstrap overrides and PatternFly-specific mixins\n\n// Bootstrap overrides\n// -------------------\n\n// Button variants\n.button-variant(@color; @background; @background-image-start; @background-image-stop; @border) {\n background-color: @background;\n #gradient > .vertical(@background-image-start, @background-image-stop);\n border-color: @border;\n color: @color;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-color: @background;\n background-image: none;\n border-color: @border;\n color: @color;\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n &:hover,\n &:focus,\n &.focus {\n background-color: darken(@background, 5%);\n border-color: darken(@border, 7%);\n }\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border\n }\n }\n}\n\n// Form control outline\n.form-control-outline(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0 !important;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Gradients\n#gradient {\n .striped(@color: rgba(0,0,0,.15); @angle: -45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);\n background-image: linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);\n }\n}\n\n// Horizontal dividers\n.nav-divider(@color: #e5e5e5, @margin: 4px 1px) {\n background-color: @color;\n height: 1px;\n margin: @margin;\n overflow: hidden;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &:-moz-placeholder { color: @color; font-style: italic; } // Firefox 4-18\n &::-moz-placeholder { color: @color; font-style: italic;} // Firefox 19+\n &:-ms-input-placeholder { color: @color; font-style: italic; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; font-style: italic; } // Safari and Chrome\n}\n\n// PatternFly-specific\n// -------------------\n\n.tab-indicator(@background: @gray-light-pf, @left: 15px, @right: 15px) {\n &:before {\n background: @background;\n bottom: -1px;\n content: '';\n display: block;\n height: 2px;\n left: @left;\n position: absolute;\n right: @right;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @btn-border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @btn-border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","// Bordered & Pulled\n// -------------------------\n\n.@{fa-css-prefix}-border {\n padding: .2em .25em .15em;\n border: solid .08em @fa-border-color;\n border-radius: .1em;\n}\n\n.pull-right { float: right; }\n.pull-left { float: left; }\n\n.@{fa-css-prefix} {\n &.pull-left { margin-right: .3em; }\n &.pull-right { margin-left: .3em; }\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a&,\n button& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n > .panel-heading + .panel-collapse > .list-group {\n .list-group-item:first-child {\n .border-top-radius(0);\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-small;\n\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n",".reset-text() {\n font-family: @font-family-base;\n // We deliberately do NOT reset font-size.\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: @line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-base;\n\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table !important; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n","/* FONT PATH\n * -------------------------- */\n\n@font-face {\n font-family: 'FontAwesome';\n src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');\n src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),\n url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),\n url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),\n url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),\n url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');\n// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts\n font-weight: normal;\n font-style: normal;\n}\n","// Base Class Definition\n// -------------------------\n\n.@{fa-css-prefix} {\n display: inline-block;\n font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration\n font-size: inherit; // can't have font-size inherit on line above, so need to override\n text-rendering: auto; // optimizelegibility throws things off #1094\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n transform: translate(0, 0); // ensures no half-pixel rendering in firefox\n\n}\n","// Icon Sizes\n// -------------------------\n\n/* makes the font 33% larger relative to the icon container */\n.@{fa-css-prefix}-lg {\n font-size: (4em / 3);\n line-height: (3em / 4);\n vertical-align: -15%;\n}\n.@{fa-css-prefix}-2x { font-size: 2em; }\n.@{fa-css-prefix}-3x { font-size: 3em; }\n.@{fa-css-prefix}-4x { font-size: 4em; }\n.@{fa-css-prefix}-5x { font-size: 5em; }\n","// Fixed Width Icons\n// -------------------------\n.@{fa-css-prefix}-fw {\n width: (18em / 14);\n text-align: center;\n}\n","// List Icons\n// -------------------------\n\n.@{fa-css-prefix}-ul {\n padding-left: 0;\n margin-left: @fa-li-width;\n list-style-type: none;\n > li { position: relative; }\n}\n.@{fa-css-prefix}-li {\n position: absolute;\n left: -@fa-li-width;\n width: @fa-li-width;\n top: (2em / 14);\n text-align: center;\n &.@{fa-css-prefix}-lg {\n left: (-@fa-li-width + (4em / 14));\n }\n}\n","// Animated Icons\n// --------------------------\n\n.@{fa-css-prefix}-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.@{fa-css-prefix}-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n","// Rotated & Flipped Icons\n// -------------------------\n\n.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }\n.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }\n.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }\n\n.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }\n.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }\n\n// Hook for IE8-9\n// -------------------------\n\n:root .@{fa-css-prefix}-rotate-90,\n:root .@{fa-css-prefix}-rotate-180,\n:root .@{fa-css-prefix}-rotate-270,\n:root .@{fa-css-prefix}-flip-horizontal,\n:root .@{fa-css-prefix}-flip-vertical {\n filter: none;\n}\n","// Mixins\n// --------------------------\n\n.fa-icon() {\n display: inline-block;\n font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration\n font-size: inherit; // can't have font-size inherit on line above, so need to override\n text-rendering: auto; // optimizelegibility throws things off #1094\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n transform: translate(0, 0); // ensures no half-pixel rendering in firefox\n\n}\n\n.fa-icon-rotate(@degrees, @rotation) {\n filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n\n.fa-icon-flip(@horiz, @vert, @rotation) {\n filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);\n -webkit-transform: scale(@horiz, @vert);\n -ms-transform: scale(@horiz, @vert);\n transform: scale(@horiz, @vert);\n}\n","// Stacked Icons\n// -------------------------\n\n.@{fa-css-prefix}-stack {\n position: relative;\n display: inline-block;\n width: 2em;\n height: 2em;\n line-height: 2em;\n vertical-align: middle;\n}\n.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {\n position: absolute;\n left: 0;\n width: 100%;\n text-align: center;\n}\n.@{fa-css-prefix}-stack-1x { line-height: inherit; }\n.@{fa-css-prefix}-stack-2x { font-size: 2em; }\n.@{fa-css-prefix}-inverse { color: @fa-inverse; }\n","/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n readers do not read off random characters that represent icons */\n\n.@{fa-css-prefix}-glass:before { content: @fa-var-glass; }\n.@{fa-css-prefix}-music:before { content: @fa-var-music; }\n.@{fa-css-prefix}-search:before { content: @fa-var-search; }\n.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; }\n.@{fa-css-prefix}-heart:before { content: @fa-var-heart; }\n.@{fa-css-prefix}-star:before { content: @fa-var-star; }\n.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; }\n.@{fa-css-prefix}-user:before { content: @fa-var-user; }\n.@{fa-css-prefix}-film:before { content: @fa-var-film; }\n.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; }\n.@{fa-css-prefix}-th:before { content: @fa-var-th; }\n.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; }\n.@{fa-css-prefix}-check:before { content: @fa-var-check; }\n.@{fa-css-prefix}-remove:before,\n.@{fa-css-prefix}-close:before,\n.@{fa-css-prefix}-times:before { content: @fa-var-times; }\n.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; }\n.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; }\n.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; }\n.@{fa-css-prefix}-signal:before { content: @fa-var-signal; }\n.@{fa-css-prefix}-gear:before,\n.@{fa-css-prefix}-cog:before { content: @fa-var-cog; }\n.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; }\n.@{fa-css-prefix}-home:before { content: @fa-var-home; }\n.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; }\n.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; }\n.@{fa-css-prefix}-road:before { content: @fa-var-road; }\n.@{fa-css-prefix}-download:before { content: @fa-var-download; }\n.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; }\n.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; }\n.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; }\n.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; }\n.@{fa-css-prefix}-rotate-right:before,\n.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; }\n.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; }\n.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }\n.@{fa-css-prefix}-lock:before { content: @fa-var-lock; }\n.@{fa-css-prefix}-flag:before { content: @fa-var-flag; }\n.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; }\n.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; }\n.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; }\n.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; }\n.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; }\n.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; }\n.@{fa-css-prefix}-tag:before { content: @fa-var-tag; }\n.@{fa-css-prefix}-tags:before { content: @fa-var-tags; }\n.@{fa-css-prefix}-book:before { content: @fa-var-book; }\n.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; }\n.@{fa-css-prefix}-print:before { content: @fa-var-print; }\n.@{fa-css-prefix}-camera:before { content: @fa-var-camera; }\n.@{fa-css-prefix}-font:before { content: @fa-var-font; }\n.@{fa-css-prefix}-bold:before { content: @fa-var-bold; }\n.@{fa-css-prefix}-italic:before { content: @fa-var-italic; }\n.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; }\n.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; }\n.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }\n.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; }\n.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; }\n.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; }\n.@{fa-css-prefix}-list:before { content: @fa-var-list; }\n.@{fa-css-prefix}-dedent:before,\n.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; }\n.@{fa-css-prefix}-indent:before { content: @fa-var-indent; }\n.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; }\n.@{fa-css-prefix}-photo:before,\n.@{fa-css-prefix}-image:before,\n.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; }\n.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; }\n.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; }\n.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; }\n.@{fa-css-prefix}-tint:before { content: @fa-var-tint; }\n.@{fa-css-prefix}-edit:before,\n.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; }\n.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; }\n.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; }\n.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; }\n.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; }\n.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; }\n.@{fa-css-prefix}-backward:before { content: @fa-var-backward; }\n.@{fa-css-prefix}-play:before { content: @fa-var-play; }\n.@{fa-css-prefix}-pause:before { content: @fa-var-pause; }\n.@{fa-css-prefix}-stop:before { content: @fa-var-stop; }\n.@{fa-css-prefix}-forward:before { content: @fa-var-forward; }\n.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; }\n.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; }\n.@{fa-css-prefix}-eject:before { content: @fa-var-eject; }\n.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; }\n.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; }\n.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; }\n.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; }\n.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }\n.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }\n.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }\n.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }\n.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; }\n.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; }\n.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; }\n.@{fa-css-prefix}-ban:before { content: @fa-var-ban; }\n.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; }\n.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; }\n.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; }\n.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; }\n.@{fa-css-prefix}-mail-forward:before,\n.@{fa-css-prefix}-share:before { content: @fa-var-share; }\n.@{fa-css-prefix}-expand:before { content: @fa-var-expand; }\n.@{fa-css-prefix}-compress:before { content: @fa-var-compress; }\n.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }\n.@{fa-css-prefix}-minus:before { content: @fa-var-minus; }\n.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; }\n.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; }\n.@{fa-css-prefix}-gift:before { content: @fa-var-gift; }\n.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; }\n.@{fa-css-prefix}-fire:before { content: @fa-var-fire; }\n.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }\n.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; }\n.@{fa-css-prefix}-warning:before,\n.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; }\n.@{fa-css-prefix}-plane:before { content: @fa-var-plane; }\n.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; }\n.@{fa-css-prefix}-random:before { content: @fa-var-random; }\n.@{fa-css-prefix}-comment:before { content: @fa-var-comment; }\n.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; }\n.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; }\n.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; }\n.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; }\n.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; }\n.@{fa-css-prefix}-folder:before { content: @fa-var-folder; }\n.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; }\n.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; }\n.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; }\n.@{fa-css-prefix}-bar-chart-o:before,\n.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; }\n.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; }\n.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; }\n.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; }\n.@{fa-css-prefix}-key:before { content: @fa-var-key; }\n.@{fa-css-prefix}-gears:before,\n.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }\n.@{fa-css-prefix}-comments:before { content: @fa-var-comments; }\n.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; }\n.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; }\n.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; }\n.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; }\n.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }\n.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; }\n.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; }\n.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; }\n.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; }\n.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; }\n.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; }\n.@{fa-css-prefix}-upload:before { content: @fa-var-upload; }\n.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; }\n.@{fa-css-prefix}-phone:before { content: @fa-var-phone; }\n.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; }\n.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }\n.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }\n.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }\n.@{fa-css-prefix}-facebook-f:before,\n.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }\n.@{fa-css-prefix}-github:before { content: @fa-var-github; }\n.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }\n.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }\n.@{fa-css-prefix}-rss:before { content: @fa-var-rss; }\n.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; }\n.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }\n.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }\n.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; }\n.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; }\n.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; }\n.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; }\n.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; }\n.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; }\n.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; }\n.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; }\n.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; }\n.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }\n.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; }\n.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }\n.@{fa-css-prefix}-filter:before { content: @fa-var-filter; }\n.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; }\n.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; }\n.@{fa-css-prefix}-group:before,\n.@{fa-css-prefix}-users:before { content: @fa-var-users; }\n.@{fa-css-prefix}-chain:before,\n.@{fa-css-prefix}-link:before { content: @fa-var-link; }\n.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }\n.@{fa-css-prefix}-flask:before { content: @fa-var-flask; }\n.@{fa-css-prefix}-cut:before,\n.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; }\n.@{fa-css-prefix}-copy:before,\n.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; }\n.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; }\n.@{fa-css-prefix}-save:before,\n.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; }\n.@{fa-css-prefix}-square:before { content: @fa-var-square; }\n.@{fa-css-prefix}-navicon:before,\n.@{fa-css-prefix}-reorder:before,\n.@{fa-css-prefix}-bars:before { content: @fa-var-bars; }\n.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }\n.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; }\n.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; }\n.@{fa-css-prefix}-underline:before { content: @fa-var-underline; }\n.@{fa-css-prefix}-table:before { content: @fa-var-table; }\n.@{fa-css-prefix}-magic:before { content: @fa-var-magic; }\n.@{fa-css-prefix}-truck:before { content: @fa-var-truck; }\n.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; }\n.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; }\n.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; }\n.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; }\n.@{fa-css-prefix}-money:before { content: @fa-var-money; }\n.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; }\n.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; }\n.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; }\n.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; }\n.@{fa-css-prefix}-columns:before { content: @fa-var-columns; }\n.@{fa-css-prefix}-unsorted:before,\n.@{fa-css-prefix}-sort:before { content: @fa-var-sort; }\n.@{fa-css-prefix}-sort-down:before,\n.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; }\n.@{fa-css-prefix}-sort-up:before,\n.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; }\n.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }\n.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; }\n.@{fa-css-prefix}-rotate-left:before,\n.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }\n.@{fa-css-prefix}-legal:before,\n.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; }\n.@{fa-css-prefix}-dashboard:before,\n.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; }\n.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; }\n.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; }\n.@{fa-css-prefix}-flash:before,\n.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; }\n.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; }\n.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; }\n.@{fa-css-prefix}-paste:before,\n.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; }\n.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; }\n.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; }\n.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; }\n.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; }\n.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; }\n.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; }\n.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; }\n.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; }\n.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; }\n.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; }\n.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; }\n.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; }\n.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; }\n.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; }\n.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; }\n.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; }\n.@{fa-css-prefix}-beer:before { content: @fa-var-beer; }\n.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; }\n.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; }\n.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; }\n.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; }\n.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; }\n.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; }\n.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; }\n.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; }\n.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; }\n.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; }\n.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }\n.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }\n.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; }\n.@{fa-css-prefix}-mobile-phone:before,\n.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; }\n.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; }\n.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }\n.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; }\n.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; }\n.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }\n.@{fa-css-prefix}-mail-reply:before,\n.@{fa-css-prefix}-reply:before { content: @fa-var-reply; }\n.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; }\n.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; }\n.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; }\n.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; }\n.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; }\n.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; }\n.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; }\n.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; }\n.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; }\n.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; }\n.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; }\n.@{fa-css-prefix}-code:before { content: @fa-var-code; }\n.@{fa-css-prefix}-mail-reply-all:before,\n.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; }\n.@{fa-css-prefix}-star-half-empty:before,\n.@{fa-css-prefix}-star-half-full:before,\n.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; }\n.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; }\n.@{fa-css-prefix}-crop:before { content: @fa-var-crop; }\n.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; }\n.@{fa-css-prefix}-unlink:before,\n.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; }\n.@{fa-css-prefix}-question:before { content: @fa-var-question; }\n.@{fa-css-prefix}-info:before { content: @fa-var-info; }\n.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; }\n.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; }\n.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; }\n.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; }\n.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; }\n.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; }\n.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; }\n.@{fa-css-prefix}-shield:before { content: @fa-var-shield; }\n.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; }\n.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; }\n.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }\n.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; }\n.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; }\n.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; }\n.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; }\n.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; }\n.@{fa-css-prefix}-html5:before { content: @fa-var-html5; }\n.@{fa-css-prefix}-css3:before { content: @fa-var-css3; }\n.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; }\n.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; }\n.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; }\n.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; }\n.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; }\n.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; }\n.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; }\n.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; }\n.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; }\n.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; }\n.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; }\n.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; }\n.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; }\n.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; }\n.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; }\n.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; }\n.@{fa-css-prefix}-compass:before { content: @fa-var-compass; }\n.@{fa-css-prefix}-toggle-down:before,\n.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; }\n.@{fa-css-prefix}-toggle-up:before,\n.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; }\n.@{fa-css-prefix}-toggle-right:before,\n.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; }\n.@{fa-css-prefix}-euro:before,\n.@{fa-css-prefix}-eur:before { content: @fa-var-eur; }\n.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; }\n.@{fa-css-prefix}-dollar:before,\n.@{fa-css-prefix}-usd:before { content: @fa-var-usd; }\n.@{fa-css-prefix}-rupee:before,\n.@{fa-css-prefix}-inr:before { content: @fa-var-inr; }\n.@{fa-css-prefix}-cny:before,\n.@{fa-css-prefix}-rmb:before,\n.@{fa-css-prefix}-yen:before,\n.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; }\n.@{fa-css-prefix}-ruble:before,\n.@{fa-css-prefix}-rouble:before,\n.@{fa-css-prefix}-rub:before { content: @fa-var-rub; }\n.@{fa-css-prefix}-won:before,\n.@{fa-css-prefix}-krw:before { content: @fa-var-krw; }\n.@{fa-css-prefix}-bitcoin:before,\n.@{fa-css-prefix}-btc:before { content: @fa-var-btc; }\n.@{fa-css-prefix}-file:before { content: @fa-var-file; }\n.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; }\n.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; }\n.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; }\n.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; }\n.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; }\n.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; }\n.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; }\n.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; }\n.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; }\n.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; }\n.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; }\n.@{fa-css-prefix}-xing:before { content: @fa-var-xing; }\n.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; }\n.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; }\n.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; }\n.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; }\n.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }\n.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; }\n.@{fa-css-prefix}-adn:before { content: @fa-var-adn; }\n.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; }\n.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; }\n.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; }\n.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; }\n.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; }\n.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; }\n.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; }\n.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; }\n.@{fa-css-prefix}-apple:before { content: @fa-var-apple; }\n.@{fa-css-prefix}-windows:before { content: @fa-var-windows; }\n.@{fa-css-prefix}-android:before { content: @fa-var-android; }\n.@{fa-css-prefix}-linux:before { content: @fa-var-linux; }\n.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; }\n.@{fa-css-prefix}-skype:before { content: @fa-var-skype; }\n.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; }\n.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }\n.@{fa-css-prefix}-female:before { content: @fa-var-female; }\n.@{fa-css-prefix}-male:before { content: @fa-var-male; }\n.@{fa-css-prefix}-gittip:before,\n.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; }\n.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }\n.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }\n.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }\n.@{fa-css-prefix}-bug:before { content: @fa-var-bug; }\n.@{fa-css-prefix}-vk:before { content: @fa-var-vk; }\n.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; }\n.@{fa-css-prefix}-renren:before { content: @fa-var-renren; }\n.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; }\n.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; }\n.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; }\n.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; }\n.@{fa-css-prefix}-toggle-left:before,\n.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; }\n.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; }\n.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; }\n.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; }\n.@{fa-css-prefix}-turkish-lira:before,\n.@{fa-css-prefix}-try:before { content: @fa-var-try; }\n.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; }\n.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; }\n.@{fa-css-prefix}-slack:before { content: @fa-var-slack; }\n.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; }\n.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; }\n.@{fa-css-prefix}-openid:before { content: @fa-var-openid; }\n.@{fa-css-prefix}-institution:before,\n.@{fa-css-prefix}-bank:before,\n.@{fa-css-prefix}-university:before { content: @fa-var-university; }\n.@{fa-css-prefix}-mortar-board:before,\n.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; }\n.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; }\n.@{fa-css-prefix}-google:before { content: @fa-var-google; }\n.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; }\n.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; }\n.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; }\n.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; }\n.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; }\n.@{fa-css-prefix}-digg:before { content: @fa-var-digg; }\n.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; }\n.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; }\n.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; }\n.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; }\n.@{fa-css-prefix}-language:before { content: @fa-var-language; }\n.@{fa-css-prefix}-fax:before { content: @fa-var-fax; }\n.@{fa-css-prefix}-building:before { content: @fa-var-building; }\n.@{fa-css-prefix}-child:before { content: @fa-var-child; }\n.@{fa-css-prefix}-paw:before { content: @fa-var-paw; }\n.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; }\n.@{fa-css-prefix}-cube:before { content: @fa-var-cube; }\n.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; }\n.@{fa-css-prefix}-behance:before { content: @fa-var-behance; }\n.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; }\n.@{fa-css-prefix}-steam:before { content: @fa-var-steam; }\n.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; }\n.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; }\n.@{fa-css-prefix}-automobile:before,\n.@{fa-css-prefix}-car:before { content: @fa-var-car; }\n.@{fa-css-prefix}-cab:before,\n.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; }\n.@{fa-css-prefix}-tree:before { content: @fa-var-tree; }\n.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; }\n.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; }\n.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; }\n.@{fa-css-prefix}-database:before { content: @fa-var-database; }\n.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; }\n.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; }\n.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; }\n.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; }\n.@{fa-css-prefix}-file-photo-o:before,\n.@{fa-css-prefix}-file-picture-o:before,\n.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; }\n.@{fa-css-prefix}-file-zip-o:before,\n.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; }\n.@{fa-css-prefix}-file-sound-o:before,\n.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; }\n.@{fa-css-prefix}-file-movie-o:before,\n.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; }\n.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; }\n.@{fa-css-prefix}-vine:before { content: @fa-var-vine; }\n.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; }\n.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; }\n.@{fa-css-prefix}-life-bouy:before,\n.@{fa-css-prefix}-life-buoy:before,\n.@{fa-css-prefix}-life-saver:before,\n.@{fa-css-prefix}-support:before,\n.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }\n.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; }\n.@{fa-css-prefix}-ra:before,\n.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; }\n.@{fa-css-prefix}-ge:before,\n.@{fa-css-prefix}-empire:before { content: @fa-var-empire; }\n.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; }\n.@{fa-css-prefix}-git:before { content: @fa-var-git; }\n.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; }\n.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; }\n.@{fa-css-prefix}-qq:before { content: @fa-var-qq; }\n.@{fa-css-prefix}-wechat:before,\n.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; }\n.@{fa-css-prefix}-send:before,\n.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; }\n.@{fa-css-prefix}-send-o:before,\n.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; }\n.@{fa-css-prefix}-history:before { content: @fa-var-history; }\n.@{fa-css-prefix}-genderless:before,\n.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; }\n.@{fa-css-prefix}-header:before { content: @fa-var-header; }\n.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; }\n.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; }\n.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; }\n.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; }\n.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; }\n.@{fa-css-prefix}-soccer-ball-o:before,\n.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; }\n.@{fa-css-prefix}-tty:before { content: @fa-var-tty; }\n.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; }\n.@{fa-css-prefix}-plug:before { content: @fa-var-plug; }\n.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; }\n.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; }\n.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; }\n.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; }\n.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; }\n.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; }\n.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; }\n.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; }\n.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; }\n.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; }\n.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; }\n.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; }\n.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; }\n.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; }\n.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; }\n.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; }\n.@{fa-css-prefix}-trash:before { content: @fa-var-trash; }\n.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; }\n.@{fa-css-prefix}-at:before { content: @fa-var-at; }\n.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; }\n.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; }\n.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; }\n.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; }\n.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; }\n.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; }\n.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; }\n.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; }\n.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; }\n.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; }\n.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; }\n.@{fa-css-prefix}-bus:before { content: @fa-var-bus; }\n.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; }\n.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; }\n.@{fa-css-prefix}-cc:before { content: @fa-var-cc; }\n.@{fa-css-prefix}-shekel:before,\n.@{fa-css-prefix}-sheqel:before,\n.@{fa-css-prefix}-ils:before { content: @fa-var-ils; }\n.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; }\n.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; }\n.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; }\n.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; }\n.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; }\n.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; }\n.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; }\n.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; }\n.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; }\n.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; }\n.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; }\n.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; }\n.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; }\n.@{fa-css-prefix}-ship:before { content: @fa-var-ship; }\n.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; }\n.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; }\n.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; }\n.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; }\n.@{fa-css-prefix}-venus:before { content: @fa-var-venus; }\n.@{fa-css-prefix}-mars:before { content: @fa-var-mars; }\n.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; }\n.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; }\n.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; }\n.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; }\n.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; }\n.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; }\n.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; }\n.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; }\n.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; }\n.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; }\n.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; }\n.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; }\n.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; }\n.@{fa-css-prefix}-server:before { content: @fa-var-server; }\n.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; }\n.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; }\n.@{fa-css-prefix}-hotel:before,\n.@{fa-css-prefix}-bed:before { content: @fa-var-bed; }\n.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; }\n.@{fa-css-prefix}-train:before { content: @fa-var-train; }\n.@{fa-css-prefix}-subway:before { content: @fa-var-subway; }\n.@{fa-css-prefix}-medium:before { content: @fa-var-medium; }\n","// Variables\n// --------------------------\n\n@fa-font-path: \"../fonts\";\n@fa-font-size-base: 14px;\n//@fa-font-path: \"//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts\"; // for referencing Bootstrap CDN font files directly\n@fa-css-prefix: fa;\n@fa-version: \"4.3.0\";\n@fa-border-color: #eee;\n@fa-inverse: #fff;\n@fa-li-width: (30em / 14);\n\n@fa-var-adjust: \"\\f042\";\n@fa-var-adn: \"\\f170\";\n@fa-var-align-center: \"\\f037\";\n@fa-var-align-justify: \"\\f039\";\n@fa-var-align-left: \"\\f036\";\n@fa-var-align-right: \"\\f038\";\n@fa-var-ambulance: \"\\f0f9\";\n@fa-var-anchor: \"\\f13d\";\n@fa-var-android: \"\\f17b\";\n@fa-var-angellist: \"\\f209\";\n@fa-var-angle-double-down: \"\\f103\";\n@fa-var-angle-double-left: \"\\f100\";\n@fa-var-angle-double-right: \"\\f101\";\n@fa-var-angle-double-up: \"\\f102\";\n@fa-var-angle-down: \"\\f107\";\n@fa-var-angle-left: \"\\f104\";\n@fa-var-angle-right: \"\\f105\";\n@fa-var-angle-up: \"\\f106\";\n@fa-var-apple: \"\\f179\";\n@fa-var-archive: \"\\f187\";\n@fa-var-area-chart: \"\\f1fe\";\n@fa-var-arrow-circle-down: \"\\f0ab\";\n@fa-var-arrow-circle-left: \"\\f0a8\";\n@fa-var-arrow-circle-o-down: \"\\f01a\";\n@fa-var-arrow-circle-o-left: \"\\f190\";\n@fa-var-arrow-circle-o-right: \"\\f18e\";\n@fa-var-arrow-circle-o-up: \"\\f01b\";\n@fa-var-arrow-circle-right: \"\\f0a9\";\n@fa-var-arrow-circle-up: \"\\f0aa\";\n@fa-var-arrow-down: \"\\f063\";\n@fa-var-arrow-left: \"\\f060\";\n@fa-var-arrow-right: \"\\f061\";\n@fa-var-arrow-up: \"\\f062\";\n@fa-var-arrows: \"\\f047\";\n@fa-var-arrows-alt: \"\\f0b2\";\n@fa-var-arrows-h: \"\\f07e\";\n@fa-var-arrows-v: \"\\f07d\";\n@fa-var-asterisk: \"\\f069\";\n@fa-var-at: \"\\f1fa\";\n@fa-var-automobile: \"\\f1b9\";\n@fa-var-backward: \"\\f04a\";\n@fa-var-ban: \"\\f05e\";\n@fa-var-bank: \"\\f19c\";\n@fa-var-bar-chart: \"\\f080\";\n@fa-var-bar-chart-o: \"\\f080\";\n@fa-var-barcode: \"\\f02a\";\n@fa-var-bars: \"\\f0c9\";\n@fa-var-bed: \"\\f236\";\n@fa-var-beer: \"\\f0fc\";\n@fa-var-behance: \"\\f1b4\";\n@fa-var-behance-square: \"\\f1b5\";\n@fa-var-bell: \"\\f0f3\";\n@fa-var-bell-o: \"\\f0a2\";\n@fa-var-bell-slash: \"\\f1f6\";\n@fa-var-bell-slash-o: \"\\f1f7\";\n@fa-var-bicycle: \"\\f206\";\n@fa-var-binoculars: \"\\f1e5\";\n@fa-var-birthday-cake: \"\\f1fd\";\n@fa-var-bitbucket: \"\\f171\";\n@fa-var-bitbucket-square: \"\\f172\";\n@fa-var-bitcoin: \"\\f15a\";\n@fa-var-bold: \"\\f032\";\n@fa-var-bolt: \"\\f0e7\";\n@fa-var-bomb: \"\\f1e2\";\n@fa-var-book: \"\\f02d\";\n@fa-var-bookmark: \"\\f02e\";\n@fa-var-bookmark-o: \"\\f097\";\n@fa-var-briefcase: \"\\f0b1\";\n@fa-var-btc: \"\\f15a\";\n@fa-var-bug: \"\\f188\";\n@fa-var-building: \"\\f1ad\";\n@fa-var-building-o: \"\\f0f7\";\n@fa-var-bullhorn: \"\\f0a1\";\n@fa-var-bullseye: \"\\f140\";\n@fa-var-bus: \"\\f207\";\n@fa-var-buysellads: \"\\f20d\";\n@fa-var-cab: \"\\f1ba\";\n@fa-var-calculator: \"\\f1ec\";\n@fa-var-calendar: \"\\f073\";\n@fa-var-calendar-o: \"\\f133\";\n@fa-var-camera: \"\\f030\";\n@fa-var-camera-retro: \"\\f083\";\n@fa-var-car: \"\\f1b9\";\n@fa-var-caret-down: \"\\f0d7\";\n@fa-var-caret-left: \"\\f0d9\";\n@fa-var-caret-right: \"\\f0da\";\n@fa-var-caret-square-o-down: \"\\f150\";\n@fa-var-caret-square-o-left: \"\\f191\";\n@fa-var-caret-square-o-right: \"\\f152\";\n@fa-var-caret-square-o-up: \"\\f151\";\n@fa-var-caret-up: \"\\f0d8\";\n@fa-var-cart-arrow-down: \"\\f218\";\n@fa-var-cart-plus: \"\\f217\";\n@fa-var-cc: \"\\f20a\";\n@fa-var-cc-amex: \"\\f1f3\";\n@fa-var-cc-discover: \"\\f1f2\";\n@fa-var-cc-mastercard: \"\\f1f1\";\n@fa-var-cc-paypal: \"\\f1f4\";\n@fa-var-cc-stripe: \"\\f1f5\";\n@fa-var-cc-visa: \"\\f1f0\";\n@fa-var-certificate: \"\\f0a3\";\n@fa-var-chain: \"\\f0c1\";\n@fa-var-chain-broken: \"\\f127\";\n@fa-var-check: \"\\f00c\";\n@fa-var-check-circle: \"\\f058\";\n@fa-var-check-circle-o: \"\\f05d\";\n@fa-var-check-square: \"\\f14a\";\n@fa-var-check-square-o: \"\\f046\";\n@fa-var-chevron-circle-down: \"\\f13a\";\n@fa-var-chevron-circle-left: \"\\f137\";\n@fa-var-chevron-circle-right: \"\\f138\";\n@fa-var-chevron-circle-up: \"\\f139\";\n@fa-var-chevron-down: \"\\f078\";\n@fa-var-chevron-left: \"\\f053\";\n@fa-var-chevron-right: \"\\f054\";\n@fa-var-chevron-up: \"\\f077\";\n@fa-var-child: \"\\f1ae\";\n@fa-var-circle: \"\\f111\";\n@fa-var-circle-o: \"\\f10c\";\n@fa-var-circle-o-notch: \"\\f1ce\";\n@fa-var-circle-thin: \"\\f1db\";\n@fa-var-clipboard: \"\\f0ea\";\n@fa-var-clock-o: \"\\f017\";\n@fa-var-close: \"\\f00d\";\n@fa-var-cloud: \"\\f0c2\";\n@fa-var-cloud-download: \"\\f0ed\";\n@fa-var-cloud-upload: \"\\f0ee\";\n@fa-var-cny: \"\\f157\";\n@fa-var-code: \"\\f121\";\n@fa-var-code-fork: \"\\f126\";\n@fa-var-codepen: \"\\f1cb\";\n@fa-var-coffee: \"\\f0f4\";\n@fa-var-cog: \"\\f013\";\n@fa-var-cogs: \"\\f085\";\n@fa-var-columns: \"\\f0db\";\n@fa-var-comment: \"\\f075\";\n@fa-var-comment-o: \"\\f0e5\";\n@fa-var-comments: \"\\f086\";\n@fa-var-comments-o: \"\\f0e6\";\n@fa-var-compass: \"\\f14e\";\n@fa-var-compress: \"\\f066\";\n@fa-var-connectdevelop: \"\\f20e\";\n@fa-var-copy: \"\\f0c5\";\n@fa-var-copyright: \"\\f1f9\";\n@fa-var-credit-card: \"\\f09d\";\n@fa-var-crop: \"\\f125\";\n@fa-var-crosshairs: \"\\f05b\";\n@fa-var-css3: \"\\f13c\";\n@fa-var-cube: \"\\f1b2\";\n@fa-var-cubes: \"\\f1b3\";\n@fa-var-cut: \"\\f0c4\";\n@fa-var-cutlery: \"\\f0f5\";\n@fa-var-dashboard: \"\\f0e4\";\n@fa-var-dashcube: \"\\f210\";\n@fa-var-database: \"\\f1c0\";\n@fa-var-dedent: \"\\f03b\";\n@fa-var-delicious: \"\\f1a5\";\n@fa-var-desktop: \"\\f108\";\n@fa-var-deviantart: \"\\f1bd\";\n@fa-var-diamond: \"\\f219\";\n@fa-var-digg: \"\\f1a6\";\n@fa-var-dollar: \"\\f155\";\n@fa-var-dot-circle-o: \"\\f192\";\n@fa-var-download: \"\\f019\";\n@fa-var-dribbble: \"\\f17d\";\n@fa-var-dropbox: \"\\f16b\";\n@fa-var-drupal: \"\\f1a9\";\n@fa-var-edit: \"\\f044\";\n@fa-var-eject: \"\\f052\";\n@fa-var-ellipsis-h: \"\\f141\";\n@fa-var-ellipsis-v: \"\\f142\";\n@fa-var-empire: \"\\f1d1\";\n@fa-var-envelope: \"\\f0e0\";\n@fa-var-envelope-o: \"\\f003\";\n@fa-var-envelope-square: \"\\f199\";\n@fa-var-eraser: \"\\f12d\";\n@fa-var-eur: \"\\f153\";\n@fa-var-euro: \"\\f153\";\n@fa-var-exchange: \"\\f0ec\";\n@fa-var-exclamation: \"\\f12a\";\n@fa-var-exclamation-circle: \"\\f06a\";\n@fa-var-exclamation-triangle: \"\\f071\";\n@fa-var-expand: \"\\f065\";\n@fa-var-external-link: \"\\f08e\";\n@fa-var-external-link-square: \"\\f14c\";\n@fa-var-eye: \"\\f06e\";\n@fa-var-eye-slash: \"\\f070\";\n@fa-var-eyedropper: \"\\f1fb\";\n@fa-var-facebook: \"\\f09a\";\n@fa-var-facebook-f: \"\\f09a\";\n@fa-var-facebook-official: \"\\f230\";\n@fa-var-facebook-square: \"\\f082\";\n@fa-var-fast-backward: \"\\f049\";\n@fa-var-fast-forward: \"\\f050\";\n@fa-var-fax: \"\\f1ac\";\n@fa-var-female: \"\\f182\";\n@fa-var-fighter-jet: \"\\f0fb\";\n@fa-var-file: \"\\f15b\";\n@fa-var-file-archive-o: \"\\f1c6\";\n@fa-var-file-audio-o: \"\\f1c7\";\n@fa-var-file-code-o: \"\\f1c9\";\n@fa-var-file-excel-o: \"\\f1c3\";\n@fa-var-file-image-o: \"\\f1c5\";\n@fa-var-file-movie-o: \"\\f1c8\";\n@fa-var-file-o: \"\\f016\";\n@fa-var-file-pdf-o: \"\\f1c1\";\n@fa-var-file-photo-o: \"\\f1c5\";\n@fa-var-file-picture-o: \"\\f1c5\";\n@fa-var-file-powerpoint-o: \"\\f1c4\";\n@fa-var-file-sound-o: \"\\f1c7\";\n@fa-var-file-text: \"\\f15c\";\n@fa-var-file-text-o: \"\\f0f6\";\n@fa-var-file-video-o: \"\\f1c8\";\n@fa-var-file-word-o: \"\\f1c2\";\n@fa-var-file-zip-o: \"\\f1c6\";\n@fa-var-files-o: \"\\f0c5\";\n@fa-var-film: \"\\f008\";\n@fa-var-filter: \"\\f0b0\";\n@fa-var-fire: \"\\f06d\";\n@fa-var-fire-extinguisher: \"\\f134\";\n@fa-var-flag: \"\\f024\";\n@fa-var-flag-checkered: \"\\f11e\";\n@fa-var-flag-o: \"\\f11d\";\n@fa-var-flash: \"\\f0e7\";\n@fa-var-flask: \"\\f0c3\";\n@fa-var-flickr: \"\\f16e\";\n@fa-var-floppy-o: \"\\f0c7\";\n@fa-var-folder: \"\\f07b\";\n@fa-var-folder-o: \"\\f114\";\n@fa-var-folder-open: \"\\f07c\";\n@fa-var-folder-open-o: \"\\f115\";\n@fa-var-font: \"\\f031\";\n@fa-var-forumbee: \"\\f211\";\n@fa-var-forward: \"\\f04e\";\n@fa-var-foursquare: \"\\f180\";\n@fa-var-frown-o: \"\\f119\";\n@fa-var-futbol-o: \"\\f1e3\";\n@fa-var-gamepad: \"\\f11b\";\n@fa-var-gavel: \"\\f0e3\";\n@fa-var-gbp: \"\\f154\";\n@fa-var-ge: \"\\f1d1\";\n@fa-var-gear: \"\\f013\";\n@fa-var-gears: \"\\f085\";\n@fa-var-genderless: \"\\f1db\";\n@fa-var-gift: \"\\f06b\";\n@fa-var-git: \"\\f1d3\";\n@fa-var-git-square: \"\\f1d2\";\n@fa-var-github: \"\\f09b\";\n@fa-var-github-alt: \"\\f113\";\n@fa-var-github-square: \"\\f092\";\n@fa-var-gittip: \"\\f184\";\n@fa-var-glass: \"\\f000\";\n@fa-var-globe: \"\\f0ac\";\n@fa-var-google: \"\\f1a0\";\n@fa-var-google-plus: \"\\f0d5\";\n@fa-var-google-plus-square: \"\\f0d4\";\n@fa-var-google-wallet: \"\\f1ee\";\n@fa-var-graduation-cap: \"\\f19d\";\n@fa-var-gratipay: \"\\f184\";\n@fa-var-group: \"\\f0c0\";\n@fa-var-h-square: \"\\f0fd\";\n@fa-var-hacker-news: \"\\f1d4\";\n@fa-var-hand-o-down: \"\\f0a7\";\n@fa-var-hand-o-left: \"\\f0a5\";\n@fa-var-hand-o-right: \"\\f0a4\";\n@fa-var-hand-o-up: \"\\f0a6\";\n@fa-var-hdd-o: \"\\f0a0\";\n@fa-var-header: \"\\f1dc\";\n@fa-var-headphones: \"\\f025\";\n@fa-var-heart: \"\\f004\";\n@fa-var-heart-o: \"\\f08a\";\n@fa-var-heartbeat: \"\\f21e\";\n@fa-var-history: \"\\f1da\";\n@fa-var-home: \"\\f015\";\n@fa-var-hospital-o: \"\\f0f8\";\n@fa-var-hotel: \"\\f236\";\n@fa-var-html5: \"\\f13b\";\n@fa-var-ils: \"\\f20b\";\n@fa-var-image: \"\\f03e\";\n@fa-var-inbox: \"\\f01c\";\n@fa-var-indent: \"\\f03c\";\n@fa-var-info: \"\\f129\";\n@fa-var-info-circle: \"\\f05a\";\n@fa-var-inr: \"\\f156\";\n@fa-var-instagram: \"\\f16d\";\n@fa-var-institution: \"\\f19c\";\n@fa-var-ioxhost: \"\\f208\";\n@fa-var-italic: \"\\f033\";\n@fa-var-joomla: \"\\f1aa\";\n@fa-var-jpy: \"\\f157\";\n@fa-var-jsfiddle: \"\\f1cc\";\n@fa-var-key: \"\\f084\";\n@fa-var-keyboard-o: \"\\f11c\";\n@fa-var-krw: \"\\f159\";\n@fa-var-language: \"\\f1ab\";\n@fa-var-laptop: \"\\f109\";\n@fa-var-lastfm: \"\\f202\";\n@fa-var-lastfm-square: \"\\f203\";\n@fa-var-leaf: \"\\f06c\";\n@fa-var-leanpub: \"\\f212\";\n@fa-var-legal: \"\\f0e3\";\n@fa-var-lemon-o: \"\\f094\";\n@fa-var-level-down: \"\\f149\";\n@fa-var-level-up: \"\\f148\";\n@fa-var-life-bouy: \"\\f1cd\";\n@fa-var-life-buoy: \"\\f1cd\";\n@fa-var-life-ring: \"\\f1cd\";\n@fa-var-life-saver: \"\\f1cd\";\n@fa-var-lightbulb-o: \"\\f0eb\";\n@fa-var-line-chart: \"\\f201\";\n@fa-var-link: \"\\f0c1\";\n@fa-var-linkedin: \"\\f0e1\";\n@fa-var-linkedin-square: \"\\f08c\";\n@fa-var-linux: \"\\f17c\";\n@fa-var-list: \"\\f03a\";\n@fa-var-list-alt: \"\\f022\";\n@fa-var-list-ol: \"\\f0cb\";\n@fa-var-list-ul: \"\\f0ca\";\n@fa-var-location-arrow: \"\\f124\";\n@fa-var-lock: \"\\f023\";\n@fa-var-long-arrow-down: \"\\f175\";\n@fa-var-long-arrow-left: \"\\f177\";\n@fa-var-long-arrow-right: \"\\f178\";\n@fa-var-long-arrow-up: \"\\f176\";\n@fa-var-magic: \"\\f0d0\";\n@fa-var-magnet: \"\\f076\";\n@fa-var-mail-forward: \"\\f064\";\n@fa-var-mail-reply: \"\\f112\";\n@fa-var-mail-reply-all: \"\\f122\";\n@fa-var-male: \"\\f183\";\n@fa-var-map-marker: \"\\f041\";\n@fa-var-mars: \"\\f222\";\n@fa-var-mars-double: \"\\f227\";\n@fa-var-mars-stroke: \"\\f229\";\n@fa-var-mars-stroke-h: \"\\f22b\";\n@fa-var-mars-stroke-v: \"\\f22a\";\n@fa-var-maxcdn: \"\\f136\";\n@fa-var-meanpath: \"\\f20c\";\n@fa-var-medium: \"\\f23a\";\n@fa-var-medkit: \"\\f0fa\";\n@fa-var-meh-o: \"\\f11a\";\n@fa-var-mercury: \"\\f223\";\n@fa-var-microphone: \"\\f130\";\n@fa-var-microphone-slash: \"\\f131\";\n@fa-var-minus: \"\\f068\";\n@fa-var-minus-circle: \"\\f056\";\n@fa-var-minus-square: \"\\f146\";\n@fa-var-minus-square-o: \"\\f147\";\n@fa-var-mobile: \"\\f10b\";\n@fa-var-mobile-phone: \"\\f10b\";\n@fa-var-money: \"\\f0d6\";\n@fa-var-moon-o: \"\\f186\";\n@fa-var-mortar-board: \"\\f19d\";\n@fa-var-motorcycle: \"\\f21c\";\n@fa-var-music: \"\\f001\";\n@fa-var-navicon: \"\\f0c9\";\n@fa-var-neuter: \"\\f22c\";\n@fa-var-newspaper-o: \"\\f1ea\";\n@fa-var-openid: \"\\f19b\";\n@fa-var-outdent: \"\\f03b\";\n@fa-var-pagelines: \"\\f18c\";\n@fa-var-paint-brush: \"\\f1fc\";\n@fa-var-paper-plane: \"\\f1d8\";\n@fa-var-paper-plane-o: \"\\f1d9\";\n@fa-var-paperclip: \"\\f0c6\";\n@fa-var-paragraph: \"\\f1dd\";\n@fa-var-paste: \"\\f0ea\";\n@fa-var-pause: \"\\f04c\";\n@fa-var-paw: \"\\f1b0\";\n@fa-var-paypal: \"\\f1ed\";\n@fa-var-pencil: \"\\f040\";\n@fa-var-pencil-square: \"\\f14b\";\n@fa-var-pencil-square-o: \"\\f044\";\n@fa-var-phone: \"\\f095\";\n@fa-var-phone-square: \"\\f098\";\n@fa-var-photo: \"\\f03e\";\n@fa-var-picture-o: \"\\f03e\";\n@fa-var-pie-chart: \"\\f200\";\n@fa-var-pied-piper: \"\\f1a7\";\n@fa-var-pied-piper-alt: \"\\f1a8\";\n@fa-var-pinterest: \"\\f0d2\";\n@fa-var-pinterest-p: \"\\f231\";\n@fa-var-pinterest-square: \"\\f0d3\";\n@fa-var-plane: \"\\f072\";\n@fa-var-play: \"\\f04b\";\n@fa-var-play-circle: \"\\f144\";\n@fa-var-play-circle-o: \"\\f01d\";\n@fa-var-plug: \"\\f1e6\";\n@fa-var-plus: \"\\f067\";\n@fa-var-plus-circle: \"\\f055\";\n@fa-var-plus-square: \"\\f0fe\";\n@fa-var-plus-square-o: \"\\f196\";\n@fa-var-power-off: \"\\f011\";\n@fa-var-print: \"\\f02f\";\n@fa-var-puzzle-piece: \"\\f12e\";\n@fa-var-qq: \"\\f1d6\";\n@fa-var-qrcode: \"\\f029\";\n@fa-var-question: \"\\f128\";\n@fa-var-question-circle: \"\\f059\";\n@fa-var-quote-left: \"\\f10d\";\n@fa-var-quote-right: \"\\f10e\";\n@fa-var-ra: \"\\f1d0\";\n@fa-var-random: \"\\f074\";\n@fa-var-rebel: \"\\f1d0\";\n@fa-var-recycle: \"\\f1b8\";\n@fa-var-reddit: \"\\f1a1\";\n@fa-var-reddit-square: \"\\f1a2\";\n@fa-var-refresh: \"\\f021\";\n@fa-var-remove: \"\\f00d\";\n@fa-var-renren: \"\\f18b\";\n@fa-var-reorder: \"\\f0c9\";\n@fa-var-repeat: \"\\f01e\";\n@fa-var-reply: \"\\f112\";\n@fa-var-reply-all: \"\\f122\";\n@fa-var-retweet: \"\\f079\";\n@fa-var-rmb: \"\\f157\";\n@fa-var-road: \"\\f018\";\n@fa-var-rocket: \"\\f135\";\n@fa-var-rotate-left: \"\\f0e2\";\n@fa-var-rotate-right: \"\\f01e\";\n@fa-var-rouble: \"\\f158\";\n@fa-var-rss: \"\\f09e\";\n@fa-var-rss-square: \"\\f143\";\n@fa-var-rub: \"\\f158\";\n@fa-var-ruble: \"\\f158\";\n@fa-var-rupee: \"\\f156\";\n@fa-var-save: \"\\f0c7\";\n@fa-var-scissors: \"\\f0c4\";\n@fa-var-search: \"\\f002\";\n@fa-var-search-minus: \"\\f010\";\n@fa-var-search-plus: \"\\f00e\";\n@fa-var-sellsy: \"\\f213\";\n@fa-var-send: \"\\f1d8\";\n@fa-var-send-o: \"\\f1d9\";\n@fa-var-server: \"\\f233\";\n@fa-var-share: \"\\f064\";\n@fa-var-share-alt: \"\\f1e0\";\n@fa-var-share-alt-square: \"\\f1e1\";\n@fa-var-share-square: \"\\f14d\";\n@fa-var-share-square-o: \"\\f045\";\n@fa-var-shekel: \"\\f20b\";\n@fa-var-sheqel: \"\\f20b\";\n@fa-var-shield: \"\\f132\";\n@fa-var-ship: \"\\f21a\";\n@fa-var-shirtsinbulk: \"\\f214\";\n@fa-var-shopping-cart: \"\\f07a\";\n@fa-var-sign-in: \"\\f090\";\n@fa-var-sign-out: \"\\f08b\";\n@fa-var-signal: \"\\f012\";\n@fa-var-simplybuilt: \"\\f215\";\n@fa-var-sitemap: \"\\f0e8\";\n@fa-var-skyatlas: \"\\f216\";\n@fa-var-skype: \"\\f17e\";\n@fa-var-slack: \"\\f198\";\n@fa-var-sliders: \"\\f1de\";\n@fa-var-slideshare: \"\\f1e7\";\n@fa-var-smile-o: \"\\f118\";\n@fa-var-soccer-ball-o: \"\\f1e3\";\n@fa-var-sort: \"\\f0dc\";\n@fa-var-sort-alpha-asc: \"\\f15d\";\n@fa-var-sort-alpha-desc: \"\\f15e\";\n@fa-var-sort-amount-asc: \"\\f160\";\n@fa-var-sort-amount-desc: \"\\f161\";\n@fa-var-sort-asc: \"\\f0de\";\n@fa-var-sort-desc: \"\\f0dd\";\n@fa-var-sort-down: \"\\f0dd\";\n@fa-var-sort-numeric-asc: \"\\f162\";\n@fa-var-sort-numeric-desc: \"\\f163\";\n@fa-var-sort-up: \"\\f0de\";\n@fa-var-soundcloud: \"\\f1be\";\n@fa-var-space-shuttle: \"\\f197\";\n@fa-var-spinner: \"\\f110\";\n@fa-var-spoon: \"\\f1b1\";\n@fa-var-spotify: \"\\f1bc\";\n@fa-var-square: \"\\f0c8\";\n@fa-var-square-o: \"\\f096\";\n@fa-var-stack-exchange: \"\\f18d\";\n@fa-var-stack-overflow: \"\\f16c\";\n@fa-var-star: \"\\f005\";\n@fa-var-star-half: \"\\f089\";\n@fa-var-star-half-empty: \"\\f123\";\n@fa-var-star-half-full: \"\\f123\";\n@fa-var-star-half-o: \"\\f123\";\n@fa-var-star-o: \"\\f006\";\n@fa-var-steam: \"\\f1b6\";\n@fa-var-steam-square: \"\\f1b7\";\n@fa-var-step-backward: \"\\f048\";\n@fa-var-step-forward: \"\\f051\";\n@fa-var-stethoscope: \"\\f0f1\";\n@fa-var-stop: \"\\f04d\";\n@fa-var-street-view: \"\\f21d\";\n@fa-var-strikethrough: \"\\f0cc\";\n@fa-var-stumbleupon: \"\\f1a4\";\n@fa-var-stumbleupon-circle: \"\\f1a3\";\n@fa-var-subscript: \"\\f12c\";\n@fa-var-subway: \"\\f239\";\n@fa-var-suitcase: \"\\f0f2\";\n@fa-var-sun-o: \"\\f185\";\n@fa-var-superscript: \"\\f12b\";\n@fa-var-support: \"\\f1cd\";\n@fa-var-table: \"\\f0ce\";\n@fa-var-tablet: \"\\f10a\";\n@fa-var-tachometer: \"\\f0e4\";\n@fa-var-tag: \"\\f02b\";\n@fa-var-tags: \"\\f02c\";\n@fa-var-tasks: \"\\f0ae\";\n@fa-var-taxi: \"\\f1ba\";\n@fa-var-tencent-weibo: \"\\f1d5\";\n@fa-var-terminal: \"\\f120\";\n@fa-var-text-height: \"\\f034\";\n@fa-var-text-width: \"\\f035\";\n@fa-var-th: \"\\f00a\";\n@fa-var-th-large: \"\\f009\";\n@fa-var-th-list: \"\\f00b\";\n@fa-var-thumb-tack: \"\\f08d\";\n@fa-var-thumbs-down: \"\\f165\";\n@fa-var-thumbs-o-down: \"\\f088\";\n@fa-var-thumbs-o-up: \"\\f087\";\n@fa-var-thumbs-up: \"\\f164\";\n@fa-var-ticket: \"\\f145\";\n@fa-var-times: \"\\f00d\";\n@fa-var-times-circle: \"\\f057\";\n@fa-var-times-circle-o: \"\\f05c\";\n@fa-var-tint: \"\\f043\";\n@fa-var-toggle-down: \"\\f150\";\n@fa-var-toggle-left: \"\\f191\";\n@fa-var-toggle-off: \"\\f204\";\n@fa-var-toggle-on: \"\\f205\";\n@fa-var-toggle-right: \"\\f152\";\n@fa-var-toggle-up: \"\\f151\";\n@fa-var-train: \"\\f238\";\n@fa-var-transgender: \"\\f224\";\n@fa-var-transgender-alt: \"\\f225\";\n@fa-var-trash: \"\\f1f8\";\n@fa-var-trash-o: \"\\f014\";\n@fa-var-tree: \"\\f1bb\";\n@fa-var-trello: \"\\f181\";\n@fa-var-trophy: \"\\f091\";\n@fa-var-truck: \"\\f0d1\";\n@fa-var-try: \"\\f195\";\n@fa-var-tty: \"\\f1e4\";\n@fa-var-tumblr: \"\\f173\";\n@fa-var-tumblr-square: \"\\f174\";\n@fa-var-turkish-lira: \"\\f195\";\n@fa-var-twitch: \"\\f1e8\";\n@fa-var-twitter: \"\\f099\";\n@fa-var-twitter-square: \"\\f081\";\n@fa-var-umbrella: \"\\f0e9\";\n@fa-var-underline: \"\\f0cd\";\n@fa-var-undo: \"\\f0e2\";\n@fa-var-university: \"\\f19c\";\n@fa-var-unlink: \"\\f127\";\n@fa-var-unlock: \"\\f09c\";\n@fa-var-unlock-alt: \"\\f13e\";\n@fa-var-unsorted: \"\\f0dc\";\n@fa-var-upload: \"\\f093\";\n@fa-var-usd: \"\\f155\";\n@fa-var-user: \"\\f007\";\n@fa-var-user-md: \"\\f0f0\";\n@fa-var-user-plus: \"\\f234\";\n@fa-var-user-secret: \"\\f21b\";\n@fa-var-user-times: \"\\f235\";\n@fa-var-users: \"\\f0c0\";\n@fa-var-venus: \"\\f221\";\n@fa-var-venus-double: \"\\f226\";\n@fa-var-venus-mars: \"\\f228\";\n@fa-var-viacoin: \"\\f237\";\n@fa-var-video-camera: \"\\f03d\";\n@fa-var-vimeo-square: \"\\f194\";\n@fa-var-vine: \"\\f1ca\";\n@fa-var-vk: \"\\f189\";\n@fa-var-volume-down: \"\\f027\";\n@fa-var-volume-off: \"\\f026\";\n@fa-var-volume-up: \"\\f028\";\n@fa-var-warning: \"\\f071\";\n@fa-var-wechat: \"\\f1d7\";\n@fa-var-weibo: \"\\f18a\";\n@fa-var-weixin: \"\\f1d7\";\n@fa-var-whatsapp: \"\\f232\";\n@fa-var-wheelchair: \"\\f193\";\n@fa-var-wifi: \"\\f1eb\";\n@fa-var-windows: \"\\f17a\";\n@fa-var-won: \"\\f159\";\n@fa-var-wordpress: \"\\f19a\";\n@fa-var-wrench: \"\\f0ad\";\n@fa-var-xing: \"\\f168\";\n@fa-var-xing-square: \"\\f169\";\n@fa-var-yahoo: \"\\f19e\";\n@fa-var-yelp: \"\\f1e9\";\n@fa-var-yen: \"\\f157\";\n@fa-var-youtube: \"\\f167\";\n@fa-var-youtube-play: \"\\f16a\";\n@fa-var-youtube-square: \"\\f166\";\n\n","//\n// Alerts\n// --------------------------------------------------\n\n.alert {\n border-width: 2px;\n padding-left: 34px;\n position: relative;\n .alert-link {\n color: @link-color;\n &:hover {\n color: @link-hover-color;\n }\n }\n > .pficon {\n font-size: 20px;\n position: absolute;\n left: 7px;\n top: 7px;\n }\n .pficon-info {\n color: #72767b;\n }\n}\n\n.alert-dismissable .close {\n right: -16px;\n top: 1px;\n}","//\n// Badges\n// --------------------------------------------------\n\n.badge {\n margin-left: 6px;\n}\n\n.nav-pills > li > a > .badge {\n margin-left: 6px;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n.breadcrumb {\n padding-left: 0;\n > .active strong {\n font-weight: 600;\n }\n > li {\n display: inline; /* IE8 */\n + li:before {\n color: @gray-light;\n content: @fa-var-angle-double-right;\n font-family: @icon-font-name-fa;\n font-size: @font-size-base - 1;\n padding: 0 9px 0 7px;\n }\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n.btn {\n .box-shadow(0 2px 3px rgba(0,0,0,.1));\n &:active {\n .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n background-color: #f8f8f8 !important;\n background-image: none !important;\n border-color: #d1d1d1 !important;\n color: #969696 !important;\n opacity: 1;\n &:active {\n .box-shadow(none);\n }\n &.btn-link {\n background-color: transparent !important;\n border: 0;\n }\n }\n}\n\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-bg-img-start; @btn-danger-bg-img-stop; @btn-danger-border);\n}\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);\n}\n\n.btn-link {\n &, &:active {\n .box-shadow(none);\n }\n}\n\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-bg-img-start; @btn-primary-bg-img-stop; @btn-primary-border);\n}\n\n.btn-xs, .btn-group-xs .btn {\n font-weight: @btn-xs-font-weight;\n}","//\n// Dropdowns\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n// Modified to use Font Awesome's angle-down icon\n.caret {\n font-family: @icon-font-name-fa;\n font-weight: normal;\n height: @font-size-base - 3;\n position: relative;\n vertical-align: baseline;\n width: @font-size-base;\n &:before {\n bottom: 0;\n content: @fa-var-angle-down;\n left: 0;\n line-height: @font-size-base;\n position: absolute;\n text-align: center;\n top: -1px;\n right: 0;\n }\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg, @dropdown-divider-margin);\n }\n // Links within the dropdown menu\n > li > a {\n border-color: transparent;\n border-style: solid;\n border-width: 1px 0;\n padding: 1px 10px;\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover, &:focus {\n border-color: @dropdown-link-hover-border-color;\n .reset-filter();\n }\n &:active {\n background-color: @dropdown-link-focus-bg;\n border-color: @dropdown-link-active-border-color;\n color: @dropdown-link-focus-color !important;\n .reset-filter();\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n background-color: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n .reset-filter();\n }\n}\n\n// Disabled state\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n border-color: transparent;\n }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disabled > a {\n &:hover,\n &:focus {\n border-color: transparent;\n }\n}\n\n// Dropdown section headers\n.dropdown-header {\n padding-left: 10px;\n padding-right: 10px;\n text-transform: uppercase;\n}\n\n// Position Menu closer to button\n.btn-group, .input-group-btn {\n > .dropdown-menu {\n margin-top: -1px;\n }\n}\n\n// Position Menu closer to button (dropup-menu)\n.dropup .dropdown-menu {\n margin-bottom: -1px;\n}\n\n// Add back styles for dropdown-submenu\n.dropdown-submenu {\n position:relative;\n &:hover {\n > a {\n background-color: @dropdown-link-hover-bg;\n border-color: @dropdown-link-hover-border-color;\n }\n > .dropdown-menu {\n display: block;\n }\n }\n &.pull-left {\n float: none !important;\n > .dropdown-menu {\n left: auto;\n margin-left: 10px;\n right: 100%;\n }\n }\n > a {\n padding-right: 20px !important;\n &:after {\n content: @fa-var-angle-right;\n font-family: @icon-font-name-fa;\n display: block;\n position: absolute;\n right: 10px;\n top: 2px;\n }\n }\n > .dropdown-menu {\n left: 100%;\n margin-top: 0;\n top: -6px;\n }\n .dropup & > .dropdown-menu {\n bottom: -5px;\n top: auto;\n }\n .open &.active > .dropdown-menu {\n display: block;\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n.form-control {\n &[disabled], &[readonly], fieldset[disabled] & {\n border-color: @input-border-disabled !important;\n .box-shadow(none);\n color: #969696;\n }\n &:hover {\n border-color: @input-border-hover;\n .has-error & {\n border-color: darken(@state-danger-text, 10%);\n }\n .has-success & {\n border-color: darken(@state-success-text, 10%);\n }\n .has-warning & {\n border-color: darken(@state-warning-text, 10%);\n }\n }\n}\n\n.input-group .input-group-btn .btn {\n .box-shadow(none);\n}\n\nlabel {\n font-weight: 600;\n}","//\n// Labels\n// --------------------------------------------------\n\n.label {\n border-radius: 0;\n font-size: 100%;\n font-weight: 600;\n h1 &, h2 &, h3 &, h4 &, h5 &, h6 & {\n font-size: 75%;\n }\n}","//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-top: 1px solid @list-group-top-border;\n .list-group-item:first-child {\n border-top: 0;\n }\n}\n.list-group-item {\n border-left: 0;\n border-right: 0;\n}\n\n.list-group-item-heading {\n font-weight: 700;\n}","//\n// Modals\n// --------------------------------------------------\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n background-color: #f8f8f8;\n border-bottom: none;\n padding: @modal-title-padding-vertical @modal-title-padding-horizontal;\n}\n// Close icon\n.modal-header .close {\n margin-top: 2px;\n}\n\n// Title text within header\n.modal-title {\n font-size: 13px;\n font-weight: 700;\n}\n\n// Footer (for actions)\n.modal-footer {\n border-top: none;\n margin-top: 15px;\n padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;\n > .btn {\n padding-left: 10px;\n padding-right: 10px;\n > .fa-angle-left {\n margin-right: 5px;\n }\n > .fa-angle-right {\n margin-left: 5px;\n }\n }\n}","//\n// Pager\n// --------------------------------------------------\n\n.pager {\n li {\n > a,\n > span {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);\n color: @gray-pf;\n font-weight: 600;\n line-height: 22px;\n padding: 2px 14px;\n > .i {\n font-size: 18px;\n vertical-align: top;\n margin: 2px 0;\n }\n }\n > a:hover\n > a:focus {\n color: @gray-pf;\n }\n a:active {\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n outline: 0;\n }\n }\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > a:active,\n > span {\n background: @pagination-bg;\n .box-shadow(none);\n color: @pager-disabled-color;\n cursor: default;\n }\n }\n .next {\n > a,\n > span {\n > .i {\n margin-left: 5px;\n }\n }\n }\n .previous {\n > a,\n > span {\n > .i {\n margin-right: 5px;\n }\n }\n }\n}\n\n.pager-sm {\n li {\n > a,\n > span {\n font-weight: 400;\n line-height: 16px;\n padding: 1px 10px;\n > .i {\n font-size: 12px;\n }\n }\n }\n}\n","//\n// Pagination\n// --------------------------------------------------\n\n.pagination {\n > li {\n > a,\n > span {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);\n cursor: default;\n font-weight: 600;\n padding: @padding-base-vertical @padding-large-horizontal;\n > .i {\n font-size: 15px;\n vertical-align: top;\n margin: 2px 0;\n }\n }\n }\n > li > a,\n > li > span {\n &:active {\n .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));\n }\n }\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n background-color: @btn-default-bg;\n border-color: @pagination-border;\n .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));\n color: @btn-default-color;\n #gradient > .vertical(@btn-default-bg-img-start; @btn-default-bg-img-stop);\n }\n }\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n .box-shadow(none);\n cursor: default;\n #gradient > .vertical(@btn-default-bg-img-start; @btn-default-bg-img-stop);\n }\n }\n}\n\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n > li {\n > a,\n > span {\n font-weight: 400;\n > .i {\n font-size: 12px;\n margin-top: 2px;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n.panel-title {\n font-weight: 700;\n}\n\n//\n// Collapsable panels (aka, accordion)\n// --------------------------------------------------\n\n.panel-group {\n .panel {\n color: @gray-pf;\n + .panel {\n margin-top: -1px;\n }\n }\n .panel-default {\n border-color: @panel-default-border-color;\n border-top-color: #c4c3c3;\n }\n .panel-heading {\n #gradient > .vertical(@btn-default-bg-img-start, @btn-default-bg-img-stop);\n + .panel-collapse .panel-body {\n border-top: 1px solid @panel-inner-border;\n }\n }\n .panel-title {\n font-weight: 500;\n line-height: 1;\n > a {\n color: @gray-pf;\n font-weight: @btn-font-weight;\n &:before {\n content: \"\\f107\";\n font-family: @icon-font-name-fa;\n font-size: 13px;\n margin-right: 5px;\n vertical-align: 0;\n }\n &:focus {\n outline: none;\n text-decoration: none;\n }\n &:hover {\n text-decoration: none;\n }\n &.collapsed:before {\n content: \"\\f105\";\n margin-left: 4px;\n margin-right: 7px;\n }\n }\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n.popover {\n .box-shadow(0 2px 2px rgba(0,0,0,.08));\n padding: 0;\n}\n\n.popover-content {\n color: @gray-pf;\n line-height: 18px;\n padding: 10px 14px;\n}\n\n.popover-title {\n border-bottom: none;\n border-radius: 0;\n color: @gray-pf;\n font-size: @font-size-base + 1;\n font-weight: 700;\n min-height: 34px;\n .close {\n height: 22px;\n position: absolute;\n right: 8px;\n top: 6px;\n }\n &.closable {\n padding-right: 30px;\n }\n}","//\n// Progress Bar\n// --------------------------------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 0 0; }\n to { background-position: 40px 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 0 0; }\n to { background-position: 40px 0; }\n}\n\n.progress {\n .box-shadow(inset 0 0 1px rgba(0, 0, 0, 0.25));\n &.progress-label-left, &.progress-label-top-right {\n overflow: visible;\n position: relative;\n }\n &.progress-label-left {\n margin-left: 40px;\n }\n &.progress-sm {\n height: @progress-sm;\n margin-bottom: @progress-sm;\n }\n &.progress-xs {\n height: @progress-xs;\n margin-bottom: @progress-xs;\n }\n td > &:first-child:last-child {\n margin-bottom: 0;\n margin-top: 3px;\n }\n}\n\n.progress-bar {\n box-shadow: none;\n .progress-label-left & span, .progress-label-top-right & span {\n color: @text-color;\n font-size: @font-size-large;\n position: absolute;\n text-align: right;\n }\n .progress-label-left & span {\n left: -40px;\n top: 0;\n width: 35px;\n }\n .progress-label-top-right & span {\n max-width: 25%;\n overflow: hidden;\n right: 0;\n text-overflow: ellipsis;\n top: -(@line-height-computed*1.5+1);\n white-space: nowrap;\n }\n .progress-label-left.progress-sm & span, .progress-label-top-right.progress-sm & span {\n font-size: @font-size-base;\n }\n .progress-sm & {\n line-height: @progress-sm;\n }\n .progress-xs & {\n line-height: @progress-xs;\n }\n}\n\n.progress-description {\n margin-bottom: @line-height-computed/2;\n max-width: 74%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n .count {\n font-size: @font-size-base*1.667;\n font-weight: 300;\n line-height: 1;\n margin-right: 5px;\n }\n .fa, .pficon {\n font-size: 14px;\n margin-right: 3px;\n }\n .tooltip {\n white-space: normal;\n }\n}","//\n// Tables\n// --------------------------------------------------\n\n.table {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding-top @table-cell-padding @table-cell-padding-bottom;\n > a:hover {\n text-decoration: none;\n }\n }\n > th {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 600;\n }\n }\n }\n > thead {\n background-clip: padding-box;\n background-color: #f9f9f9;\n #gradient > .vertical(@start-color: #fafafa; @end-color: #ededed; @start-percent: 0%; @end-percent: 100%);\n }\n}\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 1px;\n }\n }\n}\n\n.table-striped {\n > tbody > tr{\n &:nth-of-type(even) {\n background-color: @table-bg-accent;\n }\n &:nth-of-type(odd) {\n background-color: transparent;\n }\n }\n}\n\n.table-hover {\n > tbody > tr:hover {\n > td,\n > th {\n background-color: @table-bg-hover;\n border-bottom-color: @table-border-hover;\n }\n }\n}\n","//\n// Tabs\n// --------------------------------------------------\n\n.nav-tabs {\n font-size: @font-size-large;\n > li {\n > a {\n color: @nav-tabs-color;\n margin-right: -1px;\n padding-bottom: 5px;\n padding-top: 5px;\n &:active,\n &:focus,\n &:hover {\n background: transparent;\n border-color: @nav-tabs-border-color;\n color: @gray-darker;\n }\n }\n > .dropdown-menu {\n border-top: 0;\n border-color: @nav-tabs-border-color;\n &.pull-right {\n right: -1px;\n }\n }\n }\n + .nav-tabs-pf {\n font-size: @font-size-base;\n > li:first-child > a {\n padding-left: 15px;\n &:before {\n left: 15px !important;\n }\n }\n }\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: transparent;\n border-color: @nav-tabs-border-color;\n }\n }\n}\n\n.nav-tabs-pf {\n &.nav-justified {\n @media (min-width: @grid-float-breakpoint) {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n }\n > li {\n &:first-child > a {\n padding-left: 15px;\n }\n > a {\n border-bottom: 0;\n &:before {\n left: 0 !important;\n right: 0 !important;\n }\n }\n }\n }\n > li {\n margin-bottom: 0;\n &.active > a {\n .tab-indicator(@background: @nav-tabs-active-link-hover-color);\n &,\n &:active,\n &:focus,\n &:hover {\n background-color: transparent;\n border: 0 !important;\n color: @link-color;\n &:before {\n background: @nav-tabs-active-link-hover-color;\n }\n }\n }\n &:first-child {\n > a {\n padding-left: 0;\n &:before {\n left: 0 !important;\n }\n }\n }\n > a {\n border: 0;\n line-height: 1;\n margin-right: 0;\n padding-bottom: 10px;\n padding-top: 10px;\n &:active,\n &:focus,\n &:hover {\n .tab-indicator()\n }\n }\n > .dropdown-menu {\n left: 15px;\n margin-top: 1px;\n &.pull-right {\n left: auto;\n right: 15px;\n }\n }\n }\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: transparent;\n }\n }\n}","//\n// Tooltips\n// --------------------------------------------------\n\n// Base class\n.tooltip {\n font-size: @tooltip-font-size;\n line-height: 1.4\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n padding: 7px 12px;\n text-align: left;\n}","//\n// Typography\n// --------------------------------------------------\n\nh1, .h1, h2, .h2 { font-weight: 300; }\n\n.page-header .actions {\n margin-top: 8px;\n a > .pficon {\n margin-right: 4px;\n }\n}\n\n@media (min-width: @grid-float-breakpoint-max) {\n .page-header-bleed-left {\n margin-left: -@grid-gutter-width/2;\n }\n .page-header-bleed-right {\n margin-right: -@grid-gutter-width/2;\n .actions {\n margin-right: @grid-gutter-width/2;\n }\n }\n}"]}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.min.css
new file mode 100644
index 0000000..dc444e1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.min.css
@@ -0,0 +1,9 @@
+body,figure{margin:0}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left}.fa,.glyphicon{-moz-osx-font-smoothing:grayscale}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:url(../fonts/OpenSans-Light-webfont.eot);src:url(../fonts/OpenSans-Light-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-Light-webfont.woff) format('woff'),url(../fonts/OpenSans-Light-webfont.ttf) format('truetype'),url(../fonts/OpenSans-Light-webfont.svg#OpenSansLight) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:url(../fonts/OpenSans-Regular-webfont.eot);src:url(../fonts/OpenSans-Regular-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-Regular-webfont.woff) format('woff'),url(../fonts/OpenSans-Regular-webfont.ttf) format('truetype'),url(../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:url(../fonts/OpenSans-Semibold-webfont.eot);src:url(../fonts/OpenSans-Semibold-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-Semibold-webfont.woff) format('woff'),url(../fonts/OpenSans-Semibold-webfont.ttf) format('truetype'),url(../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:url(../fonts/OpenSans-Bold-webfont.eot);src:url(../fonts/OpenSans-Bold-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-Bold-webfont.woff) format('woff'),url(../fonts/OpenSans-Bold-webfont.ttf) format('truetype'),url(../fonts/OpenSans-Bold-webfont.svg#OpenSansBold) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:url(../fonts/OpenSans-ExtraBold-webfont.eot);src:url(../fonts/OpenSans-ExtraBold-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-ExtraBold-webfont.woff) format('woff'),url(../fonts/OpenSans-ExtraBold-webfont.ttf) format('truetype'),url(../fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold) format('svg')}/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:10px;-webkit-tap-highlight-color:transparent}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0;vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.img-thumbnail,body{background-color:#fff}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}@font-face{font-family:'Glyphicons Halflings';src:url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot);src:url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff) format('woff'),url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.66666667;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#0099d3;text-decoration:none}a:focus,a:hover{color:#00618a;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:1px}.img-thumbnail{padding:4px;line-height:1.66666667;border:1px solid #ddd;border-radius:1px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;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}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#999}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:24px}.h2,h2{font-size:22px}.h3,h3{font-size:16px}.h4,h4{font-size:15px}.h5,h5{font-size:13px}.h6,h6{font-size:11px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:13px;font-weight:300;line-height:1.4}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.66666667}dt,kbd kbd{font-weight:700}@media (min-width:768px){.lead{font-size:18px}}.small,small{font-size:91%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{list-style:none;padding-left:0}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999}.text-primary{color:#00a8e1}a.text-primary:focus,a.text-primary:hover{color:#0082ae}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#ec7a08}a.text-warning:focus,a.text-warning:hover{color:#bb6106}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#00a8e1}a.bg-primary:focus,a.bg-primary:hover{background-color:#0082ae}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}ol,ul{margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:15px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#999}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}caption,th{text-align:left}code,kbd{padding:2px 4px;font-size:90%;border-radius:1px}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}.checkbox label,.checkbox-inline,.radio label,.radio-inline{margin-bottom:0;cursor:pointer;padding-left:20px;font-weight:400}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:11px;word-break:break-all;word-wrap:break-word;color:#333;background-color:#fcfcfc;border:1px solid #ccc;border-radius:1px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:20px;padding-right:20px}.pre-scrollable{overflow-y:scroll}@media (min-width:768px){.container{width:760px}}@media (min-width:992px){.container{width:980px}}@media (min-width:1200px){.container{width:1180px}}.row{margin-left:-20px;margin-right:-20px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:20px;padding-right:20px}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:10px;padding-bottom:10px;color:#999}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{line-height:1.66666667;vertical-align:top;border-top:1px solid #d1d1d1}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #d1d1d1}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #d1d1d1}.table .table{background-color:#fff}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#d5ecf9}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#bfe2f6}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #d1d1d1}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;font-size:18px;line-height:inherit;color:#333;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{display:block;font-size:12px;line-height:1.66666667;color:#333}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:3px}.form-control{width:100%;height:26px;padding:2px 6px;background-color:#fff;border:1px solid #bababa;border-radius:1px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{opacity:1;color:#999;font-style:italic}.form-control:-ms-input-placeholder{color:#999;font-style:italic}.form-control::-webkit-input-placeholder{color:#999;font-style:italic}.form-control:-moz-placeholder{color:#999;font-style:italic}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#f8f8f8;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:26px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:22px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:33px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.collapsing,.dropdown,.dropup,.has-feedback{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;vertical-align:middle}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:3px;padding-bottom:3px;margin-bottom:0;min-height:32px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{font-size:11px;padding:2px 6px;border-radius:1px}.input-sm{height:22px;line-height:1.5}select.input-sm{height:22px;line-height:22px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:22px;line-height:1.5}.form-group-sm select.form-control{height:22px;line-height:22px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:22px;min-height:31px;padding:3px 6px;font-size:11px;line-height:1.5}.form-group-lg .form-control,.input-lg{font-size:14px;padding:6px 10px;border-radius:1px}.input-lg{height:33px;line-height:1.3333333}select.input-lg{height:33px;line-height:33px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:33px;line-height:1.3333333}.form-group-lg select.form-control{height:33px;line-height:33px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:33px;min-height:34px;padding:7px 10px;font-size:14px;line-height:1.3333333}.has-feedback .form-control{padding-right:32.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:26px;height:26px;line-height:26px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:33px;height:33px;line-height:33px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:22px;height:22px;line-height:22px}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#ec7a08}.has-warning .form-control{border-color:#ec7a08;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60}.has-warning .input-group-addon{color:#ec7a08;border-color:#ec7a08;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:3px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:23px}.form-horizontal .form-group{margin-left:-20px;margin-right:-20px}.form-horizontal .has-feedback .form-control-feedback{right:20px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:3px}.form-horizontal .form-group-lg .control-label{padding-top:9px;font-size:14px}.form-horizontal .form-group-sm .control-label{padding-top:3px;font-size:11px}}.btn{display:inline-block;margin-bottom:0;font-weight:600;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:2px 6px;font-size:12px;line-height:1.66666667;border-radius:1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#4d5258;text-decoration:none}.btn.active,.btn:active{outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default.focus,.btn-default:focus{color:#4d5258;background-color:#d5d5d5;border-color:#777}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#4d5258;background-color:#d5d5d5;border-color:#989898}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#4d5258;background-color:#c3c3c3;border-color:#777}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#eee;border-color:#b7b7b7}.btn-default .badge{color:#eee;background-color:#4d5258}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#00649c;border-color:#00141d}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#00649c;border-color:#00435f}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#004d78;border-color:#00141d}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0085cf;border-color:#006e9c}.btn-primary .badge{color:#0085cf;background-color:#fff}.btn-success{color:#fff;background-color:#3f9c35;border-color:#37892f}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#307628;border-color:#112a0e}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#307628;border-color:#255b1f}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#255b1f;border-color:#112a0e}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#3f9c35;border-color:#37892f}.btn-success .badge{color:#3f9c35;background-color:#fff}.btn-info{color:#fff;background-color:#006e9c;border-color:#005c83}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#004a69;border-color:#000203}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#004a69;border-color:#003145}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#003145;border-color:#000203}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#006e9c;border-color:#005c83}.btn-info .badge{color:#006e9c;background-color:#fff}.btn-warning{color:#fff;background-color:#ec7a08;border-color:#d36d07}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#bb6106;border-color:#582e03}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#bb6106;border-color:#984f05}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#984f05;border-color:#582e03}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ec7a08;border-color:#d36d07}.btn-warning .badge{color:#ec7a08;background-color:#fff}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#700000;border-color:#0e0303}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#700000;border-color:#450e0e}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#4c0000;border-color:#0e0303}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#781919}.btn-danger .badge{color:#a30000;background-color:#fff}.btn-link{color:#0099d3;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#00618a;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:6px 10px;font-size:14px;line-height:1.3333333;border-radius:1px}.btn-group-sm>.btn,.btn-sm{padding:2px 6px;font-size:11px;line-height:1.5;border-radius:1px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:1px}.dropdown-header,.dropdown-menu>li>a{white-space:nowrap;line-height:1.66666667}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;margin-left:2px;border-top:0 dashed;border-top:0 solid\9;border-right:0 solid transparent;border-left:0 solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;text-align:left;background-color:#fff;border:1px solid #b6b6b6;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-menu>li>a{display:block;clear:both;font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#4d5258;background-color:#d4edfa}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#999}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:11px;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{left:auto;top:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:0 dashed;border-bottom:0 solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn-lg .caret,.dropup .btn-lg .caret{border-width:0}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:1px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:33px;padding:6px 10px;font-size:14px;line-height:1.3333333;border-radius:1px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:33px;line-height:33px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:22px;padding:2px 6px;font-size:11px;line-height:1.5;border-radius:1px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:22px;line-height:22px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.nav>li,.nav>li>a{position:relative;display:block}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:2px 6px;font-size:12px;font-weight:400;line-height:1;color:#333;text-align:center;background-color:#eee;border:1px solid #bababa;border-radius:1px}.input-group-addon.input-sm{padding:2px 6px;font-size:11px;border-radius:1px}.input-group-addon.input-lg{padding:6px 10px;font-size:14px;border-radius:1px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#0099d3}.nav .nav-divider{background-color:#e5e5e5;height:1px;margin:4px 1px;overflow:hidden}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #e9e8e8}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{line-height:1.66666667;border:1px solid transparent;border-radius:1px 1px 0 0}.nav-tabs>li>a:hover{border-color:transparent transparent #e9e8e8}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#0099d3;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:1px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #e9e8e8}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #e9e8e8;border-radius:1px 1px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:1px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#00a8e1}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:1px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #e9e8e8}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #e9e8e8;border-radius:1px 1px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:20px;padding-left:20px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:1px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-20px;margin-left:-20px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 20px;font-size:14px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-20px}}.navbar-toggle{position:relative;float:right;margin-right:20px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:1px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -20px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-danger,.progress-striped .progress-bar-info,.progress-striped .progress-bar-success,.progress-striped .progress-bar-warning{background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 20px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:12px -20px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.btn .badge,.btn .label{position:relative;top:-1px}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:1px 1px 0 0}.navbar-btn{margin-top:12px;margin-bottom:12px}.navbar-btn.btn-sm,.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:20px;margin-right:20px}.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-20px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#bfbfbf}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#bfbfbf}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#bfbfbf}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#bfbfbf}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#bfbfbf}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:transparent;border-radius:1px}.breadcrumb>.active{color:#4d5258}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:1px}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;line-height:1.66666667;text-decoration:none;border:1px solid #bbb;margin-left:-1px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span,.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#00618a;background-color:#ededed;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#999;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:6px 10px;font-size:14px;line-height:1.3333333}.badge,.label{text-align:center;line-height:1;white-space:nowrap}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;border:1px solid #bbb;border-radius:0}.badge,.container .jumbotron,.container-fluid .jumbotron{border-radius:1px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#ededed}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#969696;background-color:#f5f5f5;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;color:#fff;vertical-align:baseline}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:focus,.label-default[href]:hover{background-color:grey}.label-primary{background-color:#00a8e1}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#0082ae}.label-success{background-color:#3f9c35}.label-success[href]:focus,.label-success[href]:hover{background-color:#307628}.label-info{background-color:#006e9c}.label-info[href]:focus,.label-info[href]:hover{background-color:#004a69}.label-warning{background-color:#ec7a08}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#bb6106}.label-danger{background-color:#c00}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#900}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:11px;font-weight:700;color:#fff;vertical-align:middle;background-color:#999}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#0099d3;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.alert-danger,.alert-info,.alert-success,.alert-warning,.thumbnail{background-color:#fff}.jumbotron p{margin-bottom:15px;font-size:18px;font-weight:200}.alert,.thumbnail{margin-bottom:20px}.jumbotron>hr{border-top-color:#d5d5d5}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:54px}}.thumbnail{padding:4px;line-height:1.66666667;border:1px solid #ddd;border-radius:1px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#0099d3}.thumbnail .caption{padding:9px;color:#333}.alert{padding:7px;border:1px solid transparent;border-radius:1px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:500}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:27px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{right:0;bottom:0;left:0}.alert-success{border-color:#3f9c35;color:#333}.alert-success hr{border-top-color:#37892f}.alert-success .alert-link{color:#1a1a1a}.alert-info{border-color:#ccc;color:#333}.alert-info hr{border-top-color:#bfbfbf}.alert-info .alert-link{color:#1a1a1a}.alert-warning{border-color:#ec7a08;color:#333}.alert-warning hr{border-top-color:#d36d07}.alert-warning .alert-link{color:#1a1a1a}.alert-danger{border-color:#c00;color:#333}.alert-danger hr{border-top-color:#b30000}.alert-danger .alert-link{color:#1a1a1a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;background-color:#ededed;border-radius:1px}.progress-bar{float:left;width:0;height:100%;font-size:11px;line-height:20px;color:#fff;text-align:center;background-color:#00a8e1;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3f9c35}.progress-striped .progress-bar-success{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.progress-bar-info{background-color:#006e9c}.progress-striped .progress-bar-info{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.progress-bar-warning{background-color:#ec7a08}.progress-striped .progress-bar-warning{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.progress-bar-danger{background-color:#c00}.progress-striped .progress-bar-danger{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #f2f2f2}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#d4edfa}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#999}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#00a8e1;border-color:#00a8e1}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#aeeaff}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#ec7a08;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#ec7a08}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#ec7a08;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#ec7a08;border-color:#ec7a08}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:1px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-heading,.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-footer,.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel-title{margin-top:0;font-size:14px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #cecdcd}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:0}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:0}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:0}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #d1d1d1}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:1px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #cecdcd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #cecdcd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#00a8e1}.panel-primary>.panel-heading{color:#fff;background-color:#00a8e1;border-color:#00a8e1}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#00a8e1}.panel-primary>.panel-heading .badge{color:#00a8e1;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#00a8e1}.panel-success{border-color:#3f9c35}.panel-success>.panel-heading{color:#fff;background-color:#3f9c35;border-color:#3f9c35}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3f9c35}.panel-success>.panel-heading .badge{color:#3f9c35;background-color:#fff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3f9c35}.panel-info{border-color:#006e9c}.panel-info>.panel-heading{color:#fff;background-color:#006e9c;border-color:#006e9c}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#006e9c}.panel-info>.panel-heading .badge{color:#006e9c;background-color:#fff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#006e9c}.panel-warning{border-color:#ec7a08}.panel-warning>.panel-heading{color:#fff;background-color:#ec7a08;border-color:#ec7a08}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ec7a08}.panel-warning>.panel-heading .badge{color:#ec7a08;background-color:#fff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ec7a08}.panel-danger{border-color:#c00}.panel-danger>.panel-heading{color:#fff;background-color:#c00;border-color:#c00}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#c00}.panel-danger>.panel-heading .badge{color:#c00;background-color:#fff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#c00}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:1px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well-lg,.well-sm{border-radius:1px}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px}.well-sm{padding:9px}.close{float:right;font-size:18px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.popover{line-height:1.66666667}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.btn-danger,.btn-default,.btn-primary,.carousel-control.left,.carousel-control.right,.pager li>a,.pager li>span{background-repeat:repeat-x}.modal{display:none;position:fixed;top:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:1px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{top:0;border-width:0 8px 8px;border-bottom-color:#434343}.modal-backdrop{position:fixed;top:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{text-align:right}.popover,.tooltip{text-decoration:none;position:absolute;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-8px;border-width:8px 8px 0;border-top-color:#434343}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{z-index:1070;display:block;text-align:start;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:8px 0}.tooltip.right{margin-left:3px;padding:0 8px}.tooltip.bottom{margin-top:3px;padding:8px 0}.tooltip.left{margin-left:-3px;padding:0 8px}.tooltip-inner{max-width:220px;color:#fff;background-color:#434343;border-radius:1px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-8px;border-width:8px 8px 0;border-top-color:#434343}.tooltip.top-left .tooltip-arrow{right:8px}.tooltip.top-right .tooltip-arrow{left:8px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-8px;border-width:8px 8px 8px 0;border-right-color:#434343}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-8px;border-width:8px 0 8px 8px;border-left-color:#434343}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-8px}.tooltip.bottom-left .tooltip-arrow{right:8px;margin-top:-8px}.tooltip.bottom-right .tooltip-arrow{left:8px;margin-top:-8px}.popover{top:0;left:0;z-index:1060;display:none;max-width:220px;text-align:start;font-size:12px;background-color:#fff;border:1px solid #bbb;border-radius:1px}.carousel-caption,.carousel-control{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6)}.caret:before,.carousel-caption,.carousel-control,.carousel-indicators,.fa-fw,.fa-li{text-align:center}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;background-color:#f5f5f5}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#bbb;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{content:" ";bottom:-10px}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#bbb}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#bbb;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#bbb}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px}.carousel-caption .btn,.text-hide{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}.fa,.fa-stack{display:inline-block}/*!
+ * Font Awesome 4.3.0 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(../../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.3.0);src:url(../../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.breadcrumb>li+li:before,.caret,.dropdown-submenu>a:after,.panel-group .panel-title>a:before{font-family:"FontAwesome"}.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}.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}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.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(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{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{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-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;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-close:before,.fa-remove: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-cog:before,.fa-gear: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-repeat:before,.fa-rotate-right: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-image:before,.fa-photo: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-exclamation-triangle:before,.fa-warning: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-cogs:before,.fa-gears: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-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-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder: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-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste: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-chain-broken:before,.fa-unlink: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-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won: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-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira: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-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board: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: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-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-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-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.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-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless: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-futbol-o:before,.fa-soccer-ball-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-ils:before,.fa-shekel:before,.fa-sheqel: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-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-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-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.alert{border-width:2px;padding-left:34px;position:relative}.alert .alert-link{color:#0099d3}.alert .alert-link:hover{color:#00618a}.alert>.pficon{font-size:20px;position:absolute;left:7px;top:7px}.alert .pficon-info{color:#72767b}.alert-dismissable .close{right:-16px;top:1px}.badge,.nav-pills>li>a>.badge{margin-left:6px}.breadcrumb{padding-left:0}.breadcrumb>.active strong{font-weight:600}.btn-group-xs .btn,.btn-group-xs>.btn,.btn-xs,.caret{font-weight:400}.breadcrumb>li{display:inline}.breadcrumb>li+li:before{color:#999;content:"\f101";font-size:11px;padding:0 9px 0 7px}.btn{-webkit-box-shadow:0 2px 3px rgba(0,0,0,.1);box-shadow:0 2px 3px rgba(0,0,0,.1)}.btn:active{-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#f8f8f8!important;background-image:none!important;border-color:#d1d1d1!important;color:#969696!important;opacity:1}.btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none}.btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0}.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0,#a30000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#781919;color:#fff}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#781919;color:#fff}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open .dropdown-toggle.btn-danger.focus,.open .dropdown-toggle.btn-danger:focus,.open .dropdown-toggle.btn-danger:hover{background-color:#8a0000;border-color:#5a1313}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#781919}.btn-default{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#b7b7b7;color:#4d5258}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open .dropdown-toggle.btn-default.focus,.open .dropdown-toggle.btn-default:focus,.open .dropdown-toggle.btn-default:hover{background-color:#e2e2e2;border-color:#a5a5a5}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#eee;border-color:#b7b7b7}.btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none}.btn-primary{background-color:#0085cf;background-image:-webkit-linear-gradient(top,#00a8e1 0,#0085cf 100%);background-image:-o-linear-gradient(top,#00a8e1 0,#0085cf 100%);background-image:linear-gradient(to bottom,#00a8e1 0,#0085cf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00a8e1', endColorstr='#ff0085cf', GradientType=0);border-color:#006e9c;color:#fff}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#0085cf;background-image:none;border-color:#006e9c;color:#fff}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary.focus,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#0075b6;border-color:#005578}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0085cf;border-color:#006e9c}.caret{height:9px;position:relative;vertical-align:baseline;width:12px}.label,label{font-weight:600}.caret:before{bottom:0;content:"\f107";left:0;line-height:12px;position:absolute;top:-1px;right:0}.dropdown-menu .divider{background-color:#e5e5e5;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{border-color:transparent;border-style:solid;border-width:1px 0;padding:1px 10px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{border-color:#b3d3e7;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>li>a:active{background-color:#0099d3;border-color:#0076b7;color:#fff!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0099d3!important;border-color:#0076b7!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.pager li>a,.pager li>span,.pagination>li>a,.pagination>li>span{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-header{padding-left:10px;padding-right:10px;text-transform:uppercase}.btn-group>.dropdown-menu,.input-group-btn>.dropdown-menu{margin-top:-1px}.dropup .dropdown-menu{margin-bottom:-1px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a{background-color:#d4edfa;border-color:#b3d3e7}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:auto;margin-left:10px;right:100%}.dropdown-submenu>a{padding-right:20px!important}.dropdown-submenu>a:after{content:"\f105";display:block;position:absolute;right:10px;top:2px}.dropdown-submenu>.dropdown-menu{left:100%;margin-top:0;top:-6px}.dropup .dropdown-submenu>.dropdown-menu{bottom:-5px;top:auto}.open .dropdown-submenu.active>.dropdown-menu{display:block}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{border-color:#d4d4d4!important;-webkit-box-shadow:none;box-shadow:none;color:#969696}.form-control:hover{border-color:#7bb2dd}.has-error .form-control:hover{border-color:#843534}.has-success .form-control:hover{border-color:#2b542c}.has-warning .form-control:hover{border-color:#bb6106}.input-group .input-group-btn .btn{-webkit-box-shadow:none;box-shadow:none}.label{border-radius:0;font-size:100%}.list-group-item-heading,.modal-title{font-weight:700}h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%}.list-group{border-top:1px solid #e9e8e8}.list-group .list-group-item:first-child{border-top:0}.list-group-item{border-left:0;border-right:0}.modal-header{min-height:16.67px;background-color:#f8f8f8;border-bottom:none;padding:10px 18px}.modal-header .close{margin-top:2px}.modal-title{font-size:13px}.modal-footer{border-top:none;margin-top:15px;padding:14px 15px 15px}.modal-footer>.btn{padding-left:10px;padding-right:10px}.modal-footer>.btn>.fa-angle-left{margin-right:5px}.modal-footer>.btn>.fa-angle-right{margin-left:5px}.pager li>a,.pager li>span{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);border-color:#b7b7b7;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li a:active,.pager li>a.active,.pager li>a:active,.pager li>span.active,.pager li>span:active{background-image:none}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>a:focus,.pager li>a:hover,.pager li>span.active,.pager li>span:active,.pager li>span:focus,.pager li>span:hover{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.open .dropdown-toggle.pager li>a.focus,.open .dropdown-toggle.pager li>a:focus,.open .dropdown-toggle.pager li>a:hover,.open .dropdown-toggle.pager li>span.focus,.open .dropdown-toggle.pager li>span:focus,.open .dropdown-toggle.pager li>span:hover,.pager li>a.active.focus,.pager li>a.active:focus,.pager li>a.active:hover,.pager li>a:active.focus,.pager li>a:active:focus,.pager li>a:active:hover,.pager li>span.active.focus,.pager li>span.active:focus,.pager li>span.active:hover,.pager li>span:active.focus,.pager li>span:active:focus,.pager li>span:active:hover{background-color:#e2e2e2;border-color:#a5a5a5}.pager li>a.disabled,.pager li>a.disabled.active,.pager li>a.disabled:active,.pager li>a.disabled:focus,.pager li>a.disabled:hover,.pager li>a[disabled],.pager li>a[disabled].active,.pager li>a[disabled]:active,.pager li>a[disabled]:focus,.pager li>a[disabled]:hover,.pager li>span.disabled,.pager li>span.disabled.active,.pager li>span.disabled:active,.pager li>span.disabled:focus,.pager li>span.disabled:hover,.pager li>span[disabled],.pager li>span[disabled].active,.pager li>span[disabled]:active,.pager li>span[disabled]:focus,.pager li>span[disabled]:hover,fieldset[disabled] .pager li>a,fieldset[disabled] .pager li>a.active,fieldset[disabled] .pager li>a:active,fieldset[disabled] .pager li>a:focus,fieldset[disabled] .pager li>a:hover,fieldset[disabled] .pager li>span,fieldset[disabled] .pager li>span.active,fieldset[disabled] .pager li>span:active,fieldset[disabled] .pager li>span:focus,fieldset[disabled] .pager li>span:hover{background-color:#eee;border-color:#b7b7b7}.pager li>a>.i,.pager li>span>.i{font-size:18px;vertical-align:top;margin:2px 0}.pager li>a:hover>a:focus{color:#4d5258}.pager li a:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125);outline:0}.pager .disabled>a,.pager .disabled>a:active,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{background:#f5f5f5;-webkit-box-shadow:none;box-shadow:none;color:#969696;cursor:default}.pager .next>a>.i,.pager .next>span>.i{margin-left:5px}.pager .previous>a>.i,.pager .previous>span>.i{margin-right:5px}.pager-sm li>a,.pager-sm li>span{font-weight:400;line-height:16px;padding:1px 10px}.pager-sm li>a>.i,.pager-sm li>span>.i{font-size:12px}.pagination>li>a,.pagination>li>span{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;border-color:#b7b7b7;color:#4d5258;cursor:default;font-weight:600;padding:2px 10px}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span.active,.pagination>li>span:active,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>span.active,.pagination>li>span:active{background-image:none}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover,.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover,.panel-group .panel-heading,.table>thead{background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.open .dropdown-toggle.pagination>li>a.focus,.open .dropdown-toggle.pagination>li>a:focus,.open .dropdown-toggle.pagination>li>a:hover,.open .dropdown-toggle.pagination>li>span.focus,.open .dropdown-toggle.pagination>li>span:focus,.open .dropdown-toggle.pagination>li>span:hover,.pagination>li>a.active.focus,.pagination>li>a.active:focus,.pagination>li>a.active:hover,.pagination>li>a:active.focus,.pagination>li>a:active:focus,.pagination>li>a:active:hover,.pagination>li>span.active.focus,.pagination>li>span.active:focus,.pagination>li>span.active:hover,.pagination>li>span:active.focus,.pagination>li>span:active:focus,.pagination>li>span:active:hover{background-color:#e2e2e2;border-color:#a5a5a5}.pagination>li>a.disabled,.pagination>li>a.disabled.active,.pagination>li>a.disabled:active,.pagination>li>a.disabled:focus,.pagination>li>a.disabled:hover,.pagination>li>a[disabled],.pagination>li>a[disabled].active,.pagination>li>a[disabled]:active,.pagination>li>a[disabled]:focus,.pagination>li>a[disabled]:hover,.pagination>li>span.disabled,.pagination>li>span.disabled.active,.pagination>li>span.disabled:active,.pagination>li>span.disabled:focus,.pagination>li>span.disabled:hover,.pagination>li>span[disabled],.pagination>li>span[disabled].active,.pagination>li>span[disabled]:active,.pagination>li>span[disabled]:focus,.pagination>li>span[disabled]:hover,fieldset[disabled] .pagination>li>a,fieldset[disabled] .pagination>li>a.active,fieldset[disabled] .pagination>li>a:active,fieldset[disabled] .pagination>li>a:focus,fieldset[disabled] .pagination>li>a:hover,fieldset[disabled] .pagination>li>span,fieldset[disabled] .pagination>li>span.active,fieldset[disabled] .pagination>li>span:active,fieldset[disabled] .pagination>li>span:focus,fieldset[disabled] .pagination>li>span:hover{background-color:#eee;border-color:#b7b7b7}.pagination>li>a>.i,.pagination>li>span>.i{font-size:15px;vertical-align:top;margin:2px 0}.pagination>li>a:active,.pagination>li>span:active{-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#eee;border-color:#bbb;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2);color:#4d5258;background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%)}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{-webkit-box-shadow:none;box-shadow:none;cursor:default;background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%)}.pagination-sm>li>a,.pagination-sm>li>span{padding:2px 6px;font-size:11px;line-height:1.5;font-weight:400}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a>.i,.pagination-sm>li>span>.i{font-size:12px;margin-top:2px}.panel-title{font-weight:700}.panel-group .panel{color:#4d5258}.panel-group .panel+.panel{margin-top:-1px}.panel-group .panel-default{border-color:#c4c3c3 #bebdbd #bebdbd}.panel-group .panel-heading{background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%)}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #cecdcd}.panel-group .panel-title{font-weight:500;line-height:1}.panel-group .panel-title>a{color:#4d5258;font-weight:600}.panel-group .panel-title>a:before{content:"\f107";font-size:13px;margin-right:5px;vertical-align:0}.panel-group .panel-title>a:focus{outline:0;text-decoration:none}.panel-group .panel-title>a:hover{text-decoration:none}.panel-group .panel-title>a.collapsed:before{content:"\f105";margin-left:4px;margin-right:7px}.popover{-webkit-box-shadow:0 2px 2px rgba(0,0,0,.08);box-shadow:0 2px 2px rgba(0,0,0,.08);padding:0}.popover-content{color:#4d5258;line-height:18px;padding:10px 14px}.popover-title{border-bottom:none;border-radius:0;color:#4d5258;font-size:13px;font-weight:700;min-height:34px}.popover-title .close{height:22px;position:absolute;right:8px;top:6px}.popover-title.closable{padding-right:30px}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{-webkit-box-shadow:inset 0 0 1px rgba(0,0,0,.25);box-shadow:inset 0 0 1px rgba(0,0,0,.25)}.progress.progress-label-left,.progress.progress-label-top-right{overflow:visible;position:relative}.progress.progress-label-left{margin-left:40px}.progress.progress-sm{height:14px;margin-bottom:14px}.progress.progress-xs{height:6px;margin-bottom:6px}td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}.progress-bar{box-shadow:none}.progress-label-left .progress-bar span,.progress-label-top-right .progress-bar span{color:#333;font-size:14px;position:absolute;text-align:right}.progress-label-left .progress-bar span{left:-40px;top:0;width:35px}.progress-label-top-right .progress-bar span{max-width:25%;overflow:hidden;right:0;text-overflow:ellipsis;top:-31px;white-space:nowrap}.progress-label-left.progress-sm .progress-bar span,.progress-label-top-right.progress-sm .progress-bar span{font-size:12px}.progress-sm .progress-bar{line-height:14px}.progress-xs .progress-bar{line-height:6px}.progress-description{margin-bottom:10px;max-width:74%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-description .count{font-size:20px;font-weight:300;line-height:1;margin-right:5px}.progress-description .fa,.progress-description .pficon{font-size:14px;margin-right:3px}.progress-description .tooltip{white-space:normal}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:2px 10px 3px}.nav-tabs+.nav-tabs-pf>li:first-child>a,.nav-tabs-pf.nav-justified>li:first-child>a{padding-left:15px}.table>tbody>tr>td>a:hover,.table>tbody>tr>th>a:hover,.table>tfoot>tr>td>a:hover,.table>tfoot>tr>th>a:hover,.table>thead>tr>td>a:hover,.table>thead>tr>th>a:hover{text-decoration:none}.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>th{font-family:'Open Sans';font-style:normal;font-weight:600}.table>thead{background-clip:padding-box;background-color:#f9f9f9;background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%)}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #d1d1d1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:1px}.table-striped>tbody>tr:nth-of-type(even){background-color:#f5f5f5}.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#d5ecf9;border-bottom-color:#a7cadf}.nav-tabs{font-size:14px}.nav-tabs+.nav-tabs-pf,.tooltip{font-size:12px}.nav-tabs>li>a{color:#4d5258;margin-right:-1px;padding-bottom:5px;padding-top:5px}.nav-tabs>li>a:active,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background:0 0;border-color:#e9e8e8;color:#222}.nav-tabs>li>.dropdown-menu{border-top:0;border-color:#e9e8e8}.nav-tabs>li>.dropdown-menu.pull-right{right:-1px}.nav-tabs+.nav-tabs-pf>li:first-child>a:before{left:15px!important}.nav-tabs .open>a,.nav-tabs .open>a:focus,.nav-tabs .open>a:hover{background-color:transparent;border-color:#e9e8e8}@media (min-width:768px){.nav-tabs-pf.nav-justified{border-bottom:1px solid #e9e8e8}}.nav-tabs-pf.nav-justified>li>a{border-bottom:0}.nav-tabs-pf.nav-justified>li>a:before{left:0!important;right:0!important}.nav-tabs-pf>li{margin-bottom:0}.nav-tabs-pf>li.active>a:before{background:#0099d3;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li.active>a,.nav-tabs-pf>li.active>a:active,.nav-tabs-pf>li.active>a:focus,.nav-tabs-pf>li.active>a:hover{background-color:transparent;border:0!important;color:#0099d3}.nav-tabs-pf>li.active>a:active:before,.nav-tabs-pf>li.active>a:before,.nav-tabs-pf>li.active>a:focus:before,.nav-tabs-pf>li.active>a:hover:before{background:#0099d3}.nav-tabs-pf>li:first-child>a{padding-left:0}.nav-tabs-pf>li:first-child>a:before{left:0!important}.nav-tabs-pf>li>a{border:0;line-height:1;margin-right:0;padding-bottom:10px;padding-top:10px}.nav-tabs-pf>li>a:active:before,.nav-tabs-pf>li>a:focus:before,.nav-tabs-pf>li>a:hover:before{background:#aaa;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li>.dropdown-menu{left:15px;margin-top:1px}.nav-tabs-pf>li>.dropdown-menu.pull-right{left:auto;right:15px}.nav-tabs-pf .open>a,.nav-tabs-pf .open>a:focus,.nav-tabs-pf .open>a:hover{background-color:transparent}.tooltip{line-height:1.4}.tooltip-inner{padding:7px 12px;text-align:left}.h1,.h2,h1,h2{font-weight:300}.page-header .actions{margin-top:8px}.page-header .actions a>.pficon{margin-right:4px}@media (min-width:767px){.page-header-bleed-left{margin-left:-20px}.page-header-bleed-right{margin-right:-20px}.page-header-bleed-right .actions{margin-right:20px}}
+/*# sourceMappingURL=patternfly.min.css.map */
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.min.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.min.css.map
new file mode 100644
index 0000000..29027aa
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["components/bootstrap/less/scaffolding.less","components/bootstrap/less/navbar.less","components/bootstrap/less/code.less","components/bootstrap/less/button-groups.less","components/bootstrap/less/mixins/grid-framework.less","components/bootstrap/less/dropdowns.less","components/font-awesome/less/core.less","components/bootstrap/less/glyphicons.less","less/fonts.less","components/bootstrap/less/normalize.less","components/bootstrap/less/print.less","components/bootstrap/less/buttons.less","components/bootstrap/less/mixins/buttons.less","components/bootstrap/less/forms.less","components/bootstrap/less/mixins/vendor-prefixes.less","less/variables.less","components/bootstrap/less/mixins/tab-focus.less","components/bootstrap/less/carousel.less","components/bootstrap/less/thumbnails.less","components/bootstrap/less/mixins/image.less","components/bootstrap/less/type.less","components/bootstrap/less/tables.less","components/bootstrap/less/mixins/text-emphasis.less","components/bootstrap/less/mixins/background-variant.less","components/bootstrap/less/mixins/text-overflow.less","components/bootstrap/less/input-groups.less","components/bootstrap/less/grid.less","components/bootstrap/less/mixins/grid.less","components/bootstrap/less/mixins/table-row.less","components/bootstrap/less/mixins/forms.less","less/mixins.less","components/bootstrap/less/component-animations.less","components/bootstrap/less/mixins/opacity.less","components/bootstrap/less/mixins/reset-filter.less","components/bootstrap/less/navs.less","components/bootstrap/less/mixins/border-radius.less","components/bootstrap/less/responsive-embed.less","components/bootstrap/less/modals.less","components/bootstrap/less/progress-bars.less","components/bootstrap/less/mixins/nav-vertical-align.less","components/bootstrap/less/mixins/progress-bar.less","components/bootstrap/less/mixins/gradients.less","components/bootstrap/less/badges.less","components/bootstrap/less/labels.less","components/bootstrap/less/alerts.less","components/bootstrap/less/utilities.less","components/font-awesome/less/bordered-pulled.less","components/bootstrap/less/breadcrumbs.less","components/bootstrap/less/pagination.less","components/bootstrap/less/pager.less","components/bootstrap/less/mixins/pagination.less","components/bootstrap/less/jumbotron.less","components/bootstrap/less/mixins/labels.less","components/bootstrap/less/media.less","components/bootstrap/less/mixins/alerts.less","components/bootstrap/less/list-group.less","components/bootstrap/less/mixins/list-group.less","components/bootstrap/less/panels.less","components/bootstrap/less/mixins/panels.less","components/bootstrap/less/wells.less","components/bootstrap/less/close.less","components/bootstrap/less/popovers.less","less/buttons.less","less/pager.less","components/bootstrap/less/tooltip.less","less/tables.less","components/bootstrap/less/mixins/reset-text.less","less/dropdowns.less","components/font-awesome/less/fixed-width.less","components/font-awesome/less/list.less","components/bootstrap/less/mixins/hide-text.less","components/bootstrap/less/mixins/clearfix.less","components/bootstrap/less/mixins/center-block.less","components/bootstrap/less/responsive-utilities.less","components/bootstrap/less/mixins/responsive-visibility.less","components/font-awesome/less/stacked.less","components/font-awesome/less/path.less","less/breadcrumbs.less","less/panels.less","components/font-awesome/less/larger.less","components/font-awesome/less/animated.less","components/font-awesome/less/rotated-flipped.less","components/font-awesome/less/mixins.less","components/font-awesome/less/icons.less","less/alerts.less","less/badges.less","less/labels.less","less/forms.less","less/pagination.less","less/list-group.less","less/modals.less","less/popovers.less","less/progress-bars.less","less/tabs.less","less/tooltip.less","less/type.less"],"names":[],"mappings":"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B,MAAA,aADiB,eACjB,MAAA,YAIW,eACX,MAAA,KAhBiB,gBACjB,KAAA,KADiB,gBACjB,KAAA,aADiB,gBACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,YAIW,eACX,KAAA,KAcmB,kBACnB,YAAA,KADmB,kBACnB,YAAA,aADmB,kBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,YADmB,iBACnB,YAAA,EsBT+B,yBtBzB/B,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UACE,MAAA,KAOU,WACZ,MAAA,KADY,WACZ,MAAA,aADY,WACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,YAciB,gBACjB,MAAA,KADiB,gBACjB,MAAA,aADiB,gBACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,YAIW,eACX,MAAA,KAhBiB,gBACjB,KAAA,KADiB,gBACjB,KAAA,aADiB,gBACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,YAIW,eACX,KAAA,KAcmB,kBACnB,YAAA,KADmB,kBACnB,YAAA,aADmB,kBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,YADmB,iBACnB,YAAA,GsBA+B,yBtBlC/B,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UACE,MAAA,KAOU,WACZ,MAAA,KADY,WACZ,MAAA,aADY,WACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,YAciB,gBACjB,MAAA,KADiB,gBACjB,MAAA,aADiB,gBACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,YAIW,eACX,MAAA,KAhBiB,gBACjB,KAAA,KADiB,gBACjB,KAAA,aADiB,gBACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,YAIW,eACX,KAAA,KAcmB,kBACnB,YAAA,KADmB,kBACnB,YAAA,aADmB,kBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,YADmB,iBACnB,YAAA,GsBS+B,0BtB3C/B,UAAA,WAA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"}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.css
new file mode 100644
index 0000000..0484910
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.css
@@ -0,0 +1,3394 @@
+/* PatternFly additions to Bootstrap */
+.form-search .combobox-container,
+.form-inline .combobox-container {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: top;
+}
+.form-search .combobox-container .input-group-addon,
+.form-inline .combobox-container .input-group-addon {
+ width: auto;
+}
+.combobox-selected .caret {
+ display: none;
+}
+/* :not doesn't work in IE8 */
+.combobox-container:not(.combobox-selected) .glyphicon-remove {
+ display: none;
+}
+.typeahead-long {
+ max-height: 300px;
+ overflow-y: auto;
+}
+.control-group.error .combobox-container .add-on {
+ color: #B94A48;
+ border-color: #B94A48;
+}
+.control-group.error .combobox-container .caret {
+ border-top-color: #B94A48;
+}
+.control-group.warning .combobox-container .add-on {
+ color: #C09853;
+ border-color: #C09853;
+}
+.control-group.warning .combobox-container .caret {
+ border-top-color: #C09853;
+}
+.control-group.success .combobox-container .add-on {
+ color: #468847;
+ border-color: #468847;
+}
+.control-group.success .combobox-container .caret {
+ border-top-color: #468847;
+}
+.datepicker {
+ padding: 4px;
+ border-radius: 4px;
+ direction: ltr;
+}
+.datepicker-inline {
+ width: 220px;
+}
+.datepicker.datepicker-rtl {
+ direction: rtl;
+}
+.datepicker.datepicker-rtl table tr td span {
+ float: right;
+}
+.datepicker-dropdown {
+ top: 0;
+ left: 0;
+}
+.datepicker-dropdown:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-top: 0;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+}
+.datepicker-dropdown:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-top: 0;
+ position: absolute;
+}
+.datepicker-dropdown.datepicker-orient-left:before {
+ left: 6px;
+}
+.datepicker-dropdown.datepicker-orient-left:after {
+ left: 7px;
+}
+.datepicker-dropdown.datepicker-orient-right:before {
+ right: 6px;
+}
+.datepicker-dropdown.datepicker-orient-right:after {
+ right: 7px;
+}
+.datepicker-dropdown.datepicker-orient-top:before {
+ top: -7px;
+}
+.datepicker-dropdown.datepicker-orient-top:after {
+ top: -6px;
+}
+.datepicker-dropdown.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #999;
+}
+.datepicker-dropdown.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #fff;
+}
+.datepicker > div {
+ display: none;
+}
+.datepicker.days .datepicker-days,
+.datepicker.months .datepicker-months,
+.datepicker.years .datepicker-years {
+ display: block;
+}
+.datepicker table {
+ margin: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.datepicker table tr td,
+.datepicker table tr th {
+ text-align: center;
+ width: 30px;
+ height: 30px;
+ border-radius: 4px;
+ border: none;
+}
+.table-striped .datepicker table tr td,
+.table-striped .datepicker table tr th {
+ background-color: transparent;
+}
+.datepicker table tr td.day:hover,
+.datepicker table tr td.day.focused {
+ background: #eeeeee;
+ cursor: pointer;
+}
+.datepicker table tr td.old,
+.datepicker table tr td.new {
+ color: #999999;
+}
+.datepicker table tr td.disabled,
+.datepicker table tr td.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td.today,
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today.disabled:hover {
+ color: #000000;
+ background-color: #ffdb99;
+ border-color: #ffb733;
+}
+.datepicker table tr td.today:focus,
+.datepicker table tr td.today:hover:focus,
+.datepicker table tr td.today.disabled:focus,
+.datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today.focus,
+.datepicker table tr td.today:hover.focus,
+.datepicker table tr td.today.disabled.focus,
+.datepicker table tr td.today.disabled:hover.focus {
+ color: #000000;
+ background-color: #ffc966;
+ border-color: #b37400;
+}
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today:hover:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover:hover {
+ color: #000000;
+ background-color: #ffc966;
+ border-color: #f59e00;
+}
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.today,
+.open > .dropdown-toggle.datepicker table tr td.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+ color: #000000;
+ background-color: #ffc966;
+ border-color: #f59e00;
+}
+.datepicker table tr td.today:active:hover,
+.datepicker table tr td.today:hover:active:hover,
+.datepicker table tr td.today.disabled:active:hover,
+.datepicker table tr td.today.disabled:hover:active:hover,
+.datepicker table tr td.today.active:hover,
+.datepicker table tr td.today:hover.active:hover,
+.datepicker table tr td.today.disabled.active:hover,
+.datepicker table tr td.today.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.today:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today:active:focus,
+.datepicker table tr td.today:hover:active:focus,
+.datepicker table tr td.today.disabled:active:focus,
+.datepicker table tr td.today.disabled:hover:active:focus,
+.datepicker table tr td.today.active:focus,
+.datepicker table tr td.today:hover.active:focus,
+.datepicker table tr td.today.disabled.active:focus,
+.datepicker table tr td.today.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.today:focus,
+.open > .dropdown-toggle.datepicker table tr td.today:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today:active.focus,
+.datepicker table tr td.today:hover:active.focus,
+.datepicker table tr td.today.disabled:active.focus,
+.datepicker table tr td.today.disabled:hover:active.focus,
+.datepicker table tr td.today.active.focus,
+.datepicker table tr td.today:hover.active.focus,
+.datepicker table tr td.today.disabled.active.focus,
+.datepicker table tr td.today.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.today.focus,
+.open > .dropdown-toggle.datepicker table tr td.today:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover.focus {
+ color: #000000;
+ background-color: #ffbc42;
+ border-color: #b37400;
+}
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.today,
+.open > .dropdown-toggle.datepicker table tr td.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today:hover.disabled,
+.datepicker table tr td.today.disabled.disabled,
+.datepicker table tr td.today.disabled:hover.disabled,
+.datepicker table tr td.today[disabled],
+.datepicker table tr td.today:hover[disabled],
+.datepicker table tr td.today.disabled[disabled],
+.datepicker table tr td.today.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.today,
+fieldset[disabled] .datepicker table tr td.today:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today:hover.disabled:hover,
+.datepicker table tr td.today.disabled.disabled:hover,
+.datepicker table tr td.today.disabled:hover.disabled:hover,
+.datepicker table tr td.today[disabled]:hover,
+.datepicker table tr td.today:hover[disabled]:hover,
+.datepicker table tr td.today.disabled[disabled]:hover,
+.datepicker table tr td.today.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.today:hover,
+fieldset[disabled] .datepicker table tr td.today:hover:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today.disabled:focus,
+.datepicker table tr td.today:hover.disabled:focus,
+.datepicker table tr td.today.disabled.disabled:focus,
+.datepicker table tr td.today.disabled:hover.disabled:focus,
+.datepicker table tr td.today[disabled]:focus,
+.datepicker table tr td.today:hover[disabled]:focus,
+.datepicker table tr td.today.disabled[disabled]:focus,
+.datepicker table tr td.today.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.today:focus,
+fieldset[disabled] .datepicker table tr td.today:hover:focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today.disabled.focus,
+.datepicker table tr td.today:hover.disabled.focus,
+.datepicker table tr td.today.disabled.disabled.focus,
+.datepicker table tr td.today.disabled:hover.disabled.focus,
+.datepicker table tr td.today[disabled].focus,
+.datepicker table tr td.today:hover[disabled].focus,
+.datepicker table tr td.today.disabled[disabled].focus,
+.datepicker table tr td.today.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td.today.focus,
+fieldset[disabled] .datepicker table tr td.today:hover.focus,
+fieldset[disabled] .datepicker table tr td.today.disabled.focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover.focus,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today:hover.disabled:active,
+.datepicker table tr td.today.disabled.disabled:active,
+.datepicker table tr td.today.disabled:hover.disabled:active,
+.datepicker table tr td.today[disabled]:active,
+.datepicker table tr td.today:hover[disabled]:active,
+.datepicker table tr td.today.disabled[disabled]:active,
+.datepicker table tr td.today.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.today:active,
+fieldset[disabled] .datepicker table tr td.today:hover:active,
+fieldset[disabled] .datepicker table tr td.today.disabled:active,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today:hover.disabled.active,
+.datepicker table tr td.today.disabled.disabled.active,
+.datepicker table tr td.today.disabled:hover.disabled.active,
+.datepicker table tr td.today[disabled].active,
+.datepicker table tr td.today:hover[disabled].active,
+.datepicker table tr td.today.disabled[disabled].active,
+.datepicker table tr td.today.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.today.active,
+fieldset[disabled] .datepicker table tr td.today:hover.active,
+fieldset[disabled] .datepicker table tr td.today.disabled.active,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
+ background-color: #ffdb99;
+ border-color: #ffb733;
+}
+.datepicker table tr td.today .badge,
+.datepicker table tr td.today:hover .badge,
+.datepicker table tr td.today.disabled .badge,
+.datepicker table tr td.today.disabled:hover .badge {
+ color: #ffdb99;
+ background-color: #000000;
+}
+.datepicker table tr td.today:hover:hover {
+ color: #000;
+}
+.datepicker table tr td.today.active:hover {
+ color: #fff;
+}
+.datepicker table tr td.range,
+.datepicker table tr td.range:hover,
+.datepicker table tr td.range.disabled,
+.datepicker table tr td.range.disabled:hover {
+ background: #eeeeee;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today,
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today.disabled:hover {
+ color: #000000;
+ background-color: #f7ca77;
+ border-color: #f1a417;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today:focus,
+.datepicker table tr td.range.today:hover:focus,
+.datepicker table tr td.range.today.disabled:focus,
+.datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today.focus,
+.datepicker table tr td.range.today:hover.focus,
+.datepicker table tr td.range.today.disabled.focus,
+.datepicker table tr td.range.today.disabled:hover.focus {
+ color: #000000;
+ background-color: #f4b747;
+ border-color: #815608;
+}
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today:hover:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover:hover {
+ color: #000000;
+ background-color: #f4b747;
+ border-color: #bf800c;
+}
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.range.today,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+ color: #000000;
+ background-color: #f4b747;
+ border-color: #bf800c;
+}
+.datepicker table tr td.range.today:active:hover,
+.datepicker table tr td.range.today:hover:active:hover,
+.datepicker table tr td.range.today.disabled:active:hover,
+.datepicker table tr td.range.today.disabled:hover:active:hover,
+.datepicker table tr td.range.today.active:hover,
+.datepicker table tr td.range.today:hover.active:hover,
+.datepicker table tr td.range.today.disabled.active:hover,
+.datepicker table tr td.range.today.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today:active:focus,
+.datepicker table tr td.range.today:hover:active:focus,
+.datepicker table tr td.range.today.disabled:active:focus,
+.datepicker table tr td.range.today.disabled:hover:active:focus,
+.datepicker table tr td.range.today.active:focus,
+.datepicker table tr td.range.today:hover.active:focus,
+.datepicker table tr td.range.today.disabled.active:focus,
+.datepicker table tr td.range.today.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today:focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today:active.focus,
+.datepicker table tr td.range.today:hover:active.focus,
+.datepicker table tr td.range.today.disabled:active.focus,
+.datepicker table tr td.range.today.disabled:hover:active.focus,
+.datepicker table tr td.range.today.active.focus,
+.datepicker table tr td.range.today:hover.active.focus,
+.datepicker table tr td.range.today.disabled.active.focus,
+.datepicker table tr td.range.today.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover.focus {
+ color: #000000;
+ background-color: #f2aa25;
+ border-color: #815608;
+}
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.range.today,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today:hover.disabled,
+.datepicker table tr td.range.today.disabled.disabled,
+.datepicker table tr td.range.today.disabled:hover.disabled,
+.datepicker table tr td.range.today[disabled],
+.datepicker table tr td.range.today:hover[disabled],
+.datepicker table tr td.range.today.disabled[disabled],
+.datepicker table tr td.range.today.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.range.today,
+fieldset[disabled] .datepicker table tr td.range.today:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today:hover.disabled:hover,
+.datepicker table tr td.range.today.disabled.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover.disabled:hover,
+.datepicker table tr td.range.today[disabled]:hover,
+.datepicker table tr td.range.today:hover[disabled]:hover,
+.datepicker table tr td.range.today.disabled[disabled]:hover,
+.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.range.today:hover,
+fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today.disabled:focus,
+.datepicker table tr td.range.today:hover.disabled:focus,
+.datepicker table tr td.range.today.disabled.disabled:focus,
+.datepicker table tr td.range.today.disabled:hover.disabled:focus,
+.datepicker table tr td.range.today[disabled]:focus,
+.datepicker table tr td.range.today:hover[disabled]:focus,
+.datepicker table tr td.range.today.disabled[disabled]:focus,
+.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.range.today:focus,
+fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today.disabled.focus,
+.datepicker table tr td.range.today:hover.disabled.focus,
+.datepicker table tr td.range.today.disabled.disabled.focus,
+.datepicker table tr td.range.today.disabled:hover.disabled.focus,
+.datepicker table tr td.range.today[disabled].focus,
+.datepicker table tr td.range.today:hover[disabled].focus,
+.datepicker table tr td.range.today.disabled[disabled].focus,
+.datepicker table tr td.range.today.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td.range.today.focus,
+fieldset[disabled] .datepicker table tr td.range.today:hover.focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled.focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.focus,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today:hover.disabled:active,
+.datepicker table tr td.range.today.disabled.disabled:active,
+.datepicker table tr td.range.today.disabled:hover.disabled:active,
+.datepicker table tr td.range.today[disabled]:active,
+.datepicker table tr td.range.today:hover[disabled]:active,
+.datepicker table tr td.range.today.disabled[disabled]:active,
+.datepicker table tr td.range.today.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.range.today:active,
+fieldset[disabled] .datepicker table tr td.range.today:hover:active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today:hover.disabled.active,
+.datepicker table tr td.range.today.disabled.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.disabled.active,
+.datepicker table tr td.range.today[disabled].active,
+.datepicker table tr td.range.today:hover[disabled].active,
+.datepicker table tr td.range.today.disabled[disabled].active,
+.datepicker table tr td.range.today.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.range.today.active,
+fieldset[disabled] .datepicker table tr td.range.today:hover.active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
+ background-color: #f7ca77;
+ border-color: #f1a417;
+}
+.datepicker table tr td.range.today .badge,
+.datepicker table tr td.range.today:hover .badge,
+.datepicker table tr td.range.today.disabled .badge,
+.datepicker table tr td.range.today.disabled:hover .badge {
+ color: #f7ca77;
+ background-color: #000000;
+}
+.datepicker table tr td.selected,
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected.disabled:hover {
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #555555;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.selected:focus,
+.datepicker table tr td.selected:hover:focus,
+.datepicker table tr td.selected.disabled:focus,
+.datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected.focus,
+.datepicker table tr td.selected:hover.focus,
+.datepicker table tr td.selected.disabled.focus,
+.datepicker table tr td.selected.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #808080;
+ border-color: #161616;
+}
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected:hover:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover:hover {
+ color: #ffffff;
+ background-color: #808080;
+ border-color: #373737;
+}
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.selected,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+ color: #ffffff;
+ background-color: #808080;
+ border-color: #373737;
+}
+.datepicker table tr td.selected:active:hover,
+.datepicker table tr td.selected:hover:active:hover,
+.datepicker table tr td.selected.disabled:active:hover,
+.datepicker table tr td.selected.disabled:hover:active:hover,
+.datepicker table tr td.selected.active:hover,
+.datepicker table tr td.selected:hover.active:hover,
+.datepicker table tr td.selected.disabled.active:hover,
+.datepicker table tr td.selected.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected:active:focus,
+.datepicker table tr td.selected:hover:active:focus,
+.datepicker table tr td.selected.disabled:active:focus,
+.datepicker table tr td.selected.disabled:hover:active:focus,
+.datepicker table tr td.selected.active:focus,
+.datepicker table tr td.selected:hover.active:focus,
+.datepicker table tr td.selected.disabled.active:focus,
+.datepicker table tr td.selected.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.selected:focus,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected:active.focus,
+.datepicker table tr td.selected:hover:active.focus,
+.datepicker table tr td.selected.disabled:active.focus,
+.datepicker table tr td.selected.disabled:hover:active.focus,
+.datepicker table tr td.selected.active.focus,
+.datepicker table tr td.selected:hover.active.focus,
+.datepicker table tr td.selected.disabled.active.focus,
+.datepicker table tr td.selected.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.focus,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #6e6e6e;
+ border-color: #161616;
+}
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.selected,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected:hover.disabled,
+.datepicker table tr td.selected.disabled.disabled,
+.datepicker table tr td.selected.disabled:hover.disabled,
+.datepicker table tr td.selected[disabled],
+.datepicker table tr td.selected:hover[disabled],
+.datepicker table tr td.selected.disabled[disabled],
+.datepicker table tr td.selected.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.selected,
+fieldset[disabled] .datepicker table tr td.selected:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected:hover.disabled:hover,
+.datepicker table tr td.selected.disabled.disabled:hover,
+.datepicker table tr td.selected.disabled:hover.disabled:hover,
+.datepicker table tr td.selected[disabled]:hover,
+.datepicker table tr td.selected:hover[disabled]:hover,
+.datepicker table tr td.selected.disabled[disabled]:hover,
+.datepicker table tr td.selected.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.selected:hover,
+fieldset[disabled] .datepicker table tr td.selected:hover:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected.disabled:focus,
+.datepicker table tr td.selected:hover.disabled:focus,
+.datepicker table tr td.selected.disabled.disabled:focus,
+.datepicker table tr td.selected.disabled:hover.disabled:focus,
+.datepicker table tr td.selected[disabled]:focus,
+.datepicker table tr td.selected:hover[disabled]:focus,
+.datepicker table tr td.selected.disabled[disabled]:focus,
+.datepicker table tr td.selected.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.selected:focus,
+fieldset[disabled] .datepicker table tr td.selected:hover:focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected.disabled.focus,
+.datepicker table tr td.selected:hover.disabled.focus,
+.datepicker table tr td.selected.disabled.disabled.focus,
+.datepicker table tr td.selected.disabled:hover.disabled.focus,
+.datepicker table tr td.selected[disabled].focus,
+.datepicker table tr td.selected:hover[disabled].focus,
+.datepicker table tr td.selected.disabled[disabled].focus,
+.datepicker table tr td.selected.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td.selected.focus,
+fieldset[disabled] .datepicker table tr td.selected:hover.focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled.focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover.focus,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected:hover.disabled:active,
+.datepicker table tr td.selected.disabled.disabled:active,
+.datepicker table tr td.selected.disabled:hover.disabled:active,
+.datepicker table tr td.selected[disabled]:active,
+.datepicker table tr td.selected:hover[disabled]:active,
+.datepicker table tr td.selected.disabled[disabled]:active,
+.datepicker table tr td.selected.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.selected:active,
+fieldset[disabled] .datepicker table tr td.selected:hover:active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected:hover.disabled.active,
+.datepicker table tr td.selected.disabled.disabled.active,
+.datepicker table tr td.selected.disabled:hover.disabled.active,
+.datepicker table tr td.selected[disabled].active,
+.datepicker table tr td.selected:hover[disabled].active,
+.datepicker table tr td.selected.disabled[disabled].active,
+.datepicker table tr td.selected.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.selected.active,
+fieldset[disabled] .datepicker table tr td.selected:hover.active,
+fieldset[disabled] .datepicker table tr td.selected.disabled.active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
+ background-color: #999999;
+ border-color: #555555;
+}
+.datepicker table tr td.selected .badge,
+.datepicker table tr td.selected:hover .badge,
+.datepicker table tr td.selected.disabled .badge,
+.datepicker table tr td.selected.disabled:hover .badge {
+ color: #999999;
+ background-color: #ffffff;
+}
+.datepicker table tr td.active,
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active.disabled:hover {
+ color: #ffffff;
+ background-color: #0085cf;
+ border-color: #006e9c;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.active:focus,
+.datepicker table tr td.active:hover:focus,
+.datepicker table tr td.active.disabled:focus,
+.datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active.focus,
+.datepicker table tr td.active:hover.focus,
+.datepicker table tr td.active.disabled.focus,
+.datepicker table tr td.active.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00141d;
+}
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active:hover:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.active,
+.open > .dropdown-toggle.datepicker table tr td.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.datepicker table tr td.active:active:hover,
+.datepicker table tr td.active:hover:active:hover,
+.datepicker table tr td.active.disabled:active:hover,
+.datepicker table tr td.active.disabled:hover:active:hover,
+.datepicker table tr td.active.active:hover,
+.datepicker table tr td.active:hover.active:hover,
+.datepicker table tr td.active.disabled.active:hover,
+.datepicker table tr td.active.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.active:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active:active:focus,
+.datepicker table tr td.active:hover:active:focus,
+.datepicker table tr td.active.disabled:active:focus,
+.datepicker table tr td.active.disabled:hover:active:focus,
+.datepicker table tr td.active.active:focus,
+.datepicker table tr td.active:hover.active:focus,
+.datepicker table tr td.active.disabled.active:focus,
+.datepicker table tr td.active.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.active:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active:active.focus,
+.datepicker table tr td.active:hover:active.focus,
+.datepicker table tr td.active.disabled:active.focus,
+.datepicker table tr td.active.disabled:hover:active.focus,
+.datepicker table tr td.active.active.focus,
+.datepicker table tr td.active:hover.active.focus,
+.datepicker table tr td.active.disabled.active.focus,
+.datepicker table tr td.active.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.active:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #004d78;
+ border-color: #00141d;
+}
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.active,
+.open > .dropdown-toggle.datepicker table tr td.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active:hover.disabled,
+.datepicker table tr td.active.disabled.disabled,
+.datepicker table tr td.active.disabled:hover.disabled,
+.datepicker table tr td.active[disabled],
+.datepicker table tr td.active:hover[disabled],
+.datepicker table tr td.active.disabled[disabled],
+.datepicker table tr td.active.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.active,
+fieldset[disabled] .datepicker table tr td.active:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active:hover.disabled:hover,
+.datepicker table tr td.active.disabled.disabled:hover,
+.datepicker table tr td.active.disabled:hover.disabled:hover,
+.datepicker table tr td.active[disabled]:hover,
+.datepicker table tr td.active:hover[disabled]:hover,
+.datepicker table tr td.active.disabled[disabled]:hover,
+.datepicker table tr td.active.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.active:hover,
+fieldset[disabled] .datepicker table tr td.active:hover:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active.disabled:focus,
+.datepicker table tr td.active:hover.disabled:focus,
+.datepicker table tr td.active.disabled.disabled:focus,
+.datepicker table tr td.active.disabled:hover.disabled:focus,
+.datepicker table tr td.active[disabled]:focus,
+.datepicker table tr td.active:hover[disabled]:focus,
+.datepicker table tr td.active.disabled[disabled]:focus,
+.datepicker table tr td.active.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.active:focus,
+fieldset[disabled] .datepicker table tr td.active:hover:focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active.disabled.focus,
+.datepicker table tr td.active:hover.disabled.focus,
+.datepicker table tr td.active.disabled.disabled.focus,
+.datepicker table tr td.active.disabled:hover.disabled.focus,
+.datepicker table tr td.active[disabled].focus,
+.datepicker table tr td.active:hover[disabled].focus,
+.datepicker table tr td.active.disabled[disabled].focus,
+.datepicker table tr td.active.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td.active.focus,
+fieldset[disabled] .datepicker table tr td.active:hover.focus,
+fieldset[disabled] .datepicker table tr td.active.disabled.focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover.focus,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active:hover.disabled:active,
+.datepicker table tr td.active.disabled.disabled:active,
+.datepicker table tr td.active.disabled:hover.disabled:active,
+.datepicker table tr td.active[disabled]:active,
+.datepicker table tr td.active:hover[disabled]:active,
+.datepicker table tr td.active.disabled[disabled]:active,
+.datepicker table tr td.active.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.active:active,
+fieldset[disabled] .datepicker table tr td.active:hover:active,
+fieldset[disabled] .datepicker table tr td.active.disabled:active,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active:hover.disabled.active,
+.datepicker table tr td.active.disabled.disabled.active,
+.datepicker table tr td.active.disabled:hover.disabled.active,
+.datepicker table tr td.active[disabled].active,
+.datepicker table tr td.active:hover[disabled].active,
+.datepicker table tr td.active.disabled[disabled].active,
+.datepicker table tr td.active.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.active.active,
+fieldset[disabled] .datepicker table tr td.active:hover.active,
+fieldset[disabled] .datepicker table tr td.active.disabled.active,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.datepicker table tr td.active .badge,
+.datepicker table tr td.active:hover .badge,
+.datepicker table tr td.active.disabled .badge,
+.datepicker table tr td.active.disabled:hover .badge {
+ color: #0085cf;
+ background-color: #ffffff;
+}
+.datepicker table tr td span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ border-radius: 4px;
+}
+.datepicker table tr td span:hover {
+ background: #eeeeee;
+}
+.datepicker table tr td span.disabled,
+.datepicker table tr td span.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td span.active,
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active.disabled:hover {
+ color: #ffffff;
+ background-color: #0085cf;
+ border-color: #006e9c;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td span.active:focus,
+.datepicker table tr td span.active:hover:focus,
+.datepicker table tr td span.active.disabled:focus,
+.datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active.focus,
+.datepicker table tr td span.active:hover.focus,
+.datepicker table tr td span.active.disabled.focus,
+.datepicker table tr td span.active.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00141d;
+}
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active:hover:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td span.active,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.datepicker table tr td span.active:active:hover,
+.datepicker table tr td span.active:hover:active:hover,
+.datepicker table tr td span.active.disabled:active:hover,
+.datepicker table tr td span.active.disabled:hover:active:hover,
+.datepicker table tr td span.active.active:hover,
+.datepicker table tr td span.active:hover.active:hover,
+.datepicker table tr td span.active.disabled.active:hover,
+.datepicker table tr td span.active.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active:active:focus,
+.datepicker table tr td span.active:hover:active:focus,
+.datepicker table tr td span.active.disabled:active:focus,
+.datepicker table tr td span.active.disabled:hover:active:focus,
+.datepicker table tr td span.active.active:focus,
+.datepicker table tr td span.active:hover.active:focus,
+.datepicker table tr td span.active.disabled.active:focus,
+.datepicker table tr td span.active.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td span.active:focus,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active:active.focus,
+.datepicker table tr td span.active:hover:active.focus,
+.datepicker table tr td span.active.disabled:active.focus,
+.datepicker table tr td span.active.disabled:hover:active.focus,
+.datepicker table tr td span.active.active.focus,
+.datepicker table tr td span.active:hover.active.focus,
+.datepicker table tr td span.active.disabled.active.focus,
+.datepicker table tr td span.active.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.focus,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #004d78;
+ border-color: #00141d;
+}
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td span.active,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active:hover.disabled,
+.datepicker table tr td span.active.disabled.disabled,
+.datepicker table tr td span.active.disabled:hover.disabled,
+.datepicker table tr td span.active[disabled],
+.datepicker table tr td span.active:hover[disabled],
+.datepicker table tr td span.active.disabled[disabled],
+.datepicker table tr td span.active.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td span.active,
+fieldset[disabled] .datepicker table tr td span.active:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active:hover.disabled:hover,
+.datepicker table tr td span.active.disabled.disabled:hover,
+.datepicker table tr td span.active.disabled:hover.disabled:hover,
+.datepicker table tr td span.active[disabled]:hover,
+.datepicker table tr td span.active:hover[disabled]:hover,
+.datepicker table tr td span.active.disabled[disabled]:hover,
+.datepicker table tr td span.active.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td span.active:hover,
+fieldset[disabled] .datepicker table tr td span.active:hover:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active.disabled:focus,
+.datepicker table tr td span.active:hover.disabled:focus,
+.datepicker table tr td span.active.disabled.disabled:focus,
+.datepicker table tr td span.active.disabled:hover.disabled:focus,
+.datepicker table tr td span.active[disabled]:focus,
+.datepicker table tr td span.active:hover[disabled]:focus,
+.datepicker table tr td span.active.disabled[disabled]:focus,
+.datepicker table tr td span.active.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td span.active:focus,
+fieldset[disabled] .datepicker table tr td span.active:hover:focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active.disabled.focus,
+.datepicker table tr td span.active:hover.disabled.focus,
+.datepicker table tr td span.active.disabled.disabled.focus,
+.datepicker table tr td span.active.disabled:hover.disabled.focus,
+.datepicker table tr td span.active[disabled].focus,
+.datepicker table tr td span.active:hover[disabled].focus,
+.datepicker table tr td span.active.disabled[disabled].focus,
+.datepicker table tr td span.active.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td span.active.focus,
+fieldset[disabled] .datepicker table tr td span.active:hover.focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled.focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active:hover.disabled:active,
+.datepicker table tr td span.active.disabled.disabled:active,
+.datepicker table tr td span.active.disabled:hover.disabled:active,
+.datepicker table tr td span.active[disabled]:active,
+.datepicker table tr td span.active:hover[disabled]:active,
+.datepicker table tr td span.active.disabled[disabled]:active,
+.datepicker table tr td span.active.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td span.active:active,
+fieldset[disabled] .datepicker table tr td span.active:hover:active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active:hover.disabled.active,
+.datepicker table tr td span.active.disabled.disabled.active,
+.datepicker table tr td span.active.disabled:hover.disabled.active,
+.datepicker table tr td span.active[disabled].active,
+.datepicker table tr td span.active:hover[disabled].active,
+.datepicker table tr td span.active.disabled[disabled].active,
+.datepicker table tr td span.active.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td span.active.active,
+fieldset[disabled] .datepicker table tr td span.active:hover.active,
+fieldset[disabled] .datepicker table tr td span.active.disabled.active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.datepicker table tr td span.active .badge,
+.datepicker table tr td span.active:hover .badge,
+.datepicker table tr td span.active.disabled .badge,
+.datepicker table tr td span.active.disabled:hover .badge {
+ color: #0085cf;
+ background-color: #ffffff;
+}
+.datepicker table tr td span.old,
+.datepicker table tr td span.new {
+ color: #999999;
+}
+.datepicker .datepicker-switch {
+ width: 145px;
+}
+.datepicker thead tr:first-child th,
+.datepicker tfoot tr th {
+ cursor: pointer;
+}
+.datepicker thead tr:first-child th:hover,
+.datepicker tfoot tr th:hover {
+ background: #eeeeee;
+}
+.datepicker .cw {
+ font-size: 10px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+}
+.datepicker thead tr:first-child .cw {
+ cursor: default;
+ background-color: transparent;
+}
+.input-group.date .input-group-addon {
+ cursor: pointer;
+}
+.input-daterange {
+ width: 100%;
+}
+.input-daterange input {
+ text-align: center;
+}
+.input-daterange input:first-child {
+ border-radius: 3px 0 0 3px;
+}
+.input-daterange input:last-child {
+ border-radius: 0 3px 3px 0;
+}
+.input-daterange .input-group-addon {
+ width: auto;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: 1.66666667;
+ text-align: center;
+ text-shadow: 0 1px 0 #fff;
+ vertical-align: middle;
+ background-color: #eeeeee;
+ border: solid #bababa;
+ border-width: 1px 0;
+ margin-left: -5px;
+ margin-right: -5px;
+}
+.bootstrap-select {
+ width: 220px \0;
+ /*IE9 and below*/
+}
+.bootstrap-select > .dropdown-toggle {
+ width: 100%;
+ padding-right: 25px;
+}
+.has-error .bootstrap-select .dropdown-toggle,
+.error .bootstrap-select .dropdown-toggle {
+ border-color: #b94a48;
+}
+.bootstrap-select.fit-width {
+ width: auto !important;
+}
+.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
+ width: 220px;
+}
+.bootstrap-select .dropdown-toggle:focus {
+ outline: thin dotted #333333 !important;
+ outline: 5px auto -webkit-focus-ring-color !important;
+ outline-offset: -2px;
+}
+.bootstrap-select.form-control {
+ margin-bottom: 0;
+ padding: 0;
+ border: none;
+}
+.bootstrap-select.form-control:not([class*="col-"]) {
+ width: 100%;
+}
+.bootstrap-select.form-control.input-group-btn {
+ z-index: auto;
+}
+.bootstrap-select.btn-group:not(.input-group-btn),
+.bootstrap-select.btn-group[class*="col-"] {
+ float: none;
+ display: inline-block;
+ margin-left: 0;
+}
+.bootstrap-select.btn-group.dropdown-menu-right,
+.bootstrap-select.btn-group[class*="col-"].dropdown-menu-right,
+.row .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right {
+ float: right;
+}
+.form-inline .bootstrap-select.btn-group,
+.form-horizontal .bootstrap-select.btn-group,
+.form-group .bootstrap-select.btn-group {
+ margin-bottom: 0;
+}
+.form-group-lg .bootstrap-select.btn-group.form-control,
+.form-group-sm .bootstrap-select.btn-group.form-control {
+ padding: 0;
+}
+.form-inline .bootstrap-select.btn-group .form-control {
+ width: 100%;
+}
+.bootstrap-select.btn-group.disabled,
+.bootstrap-select.btn-group > .disabled {
+ cursor: not-allowed;
+}
+.bootstrap-select.btn-group.disabled:focus,
+.bootstrap-select.btn-group > .disabled:focus {
+ outline: none !important;
+}
+.bootstrap-select.btn-group .dropdown-toggle .filter-option {
+ display: inline-block;
+ overflow: hidden;
+ width: 100%;
+ text-align: left;
+}
+.bootstrap-select.btn-group .dropdown-toggle .caret {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ margin-top: -2px;
+ vertical-align: middle;
+}
+.bootstrap-select.btn-group[class*="col-"] .dropdown-toggle {
+ width: 100%;
+}
+.bootstrap-select.btn-group .dropdown-menu {
+ min-width: 100%;
+ z-index: 1035;
+ box-sizing: border-box;
+}
+.bootstrap-select.btn-group .dropdown-menu.inner {
+ position: static;
+ float: none;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ box-shadow: none;
+}
+.bootstrap-select.btn-group .dropdown-menu li {
+ position: relative;
+}
+.bootstrap-select.btn-group .dropdown-menu li.active small {
+ color: #fff;
+}
+.bootstrap-select.btn-group .dropdown-menu li.disabled a {
+ cursor: not-allowed;
+}
+.bootstrap-select.btn-group .dropdown-menu li a {
+ cursor: pointer;
+}
+.bootstrap-select.btn-group .dropdown-menu li a.opt {
+ position: relative;
+ padding-left: 2.25em;
+}
+.bootstrap-select.btn-group .dropdown-menu li a span.check-mark {
+ display: none;
+}
+.bootstrap-select.btn-group .dropdown-menu li a span.text {
+ display: inline-block;
+}
+.bootstrap-select.btn-group .dropdown-menu li small {
+ padding-left: 0.5em;
+}
+.bootstrap-select.btn-group .dropdown-menu .notify {
+ position: absolute;
+ bottom: 5px;
+ width: 96%;
+ margin: 0 2%;
+ min-height: 26px;
+ padding: 3px 5px;
+ background: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ pointer-events: none;
+ opacity: 0.9;
+ box-sizing: border-box;
+}
+.bootstrap-select.btn-group .no-results {
+ padding: 3px;
+ background: #f5f5f5;
+ margin: 0 5px;
+ white-space: nowrap;
+}
+.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {
+ position: static;
+}
+.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {
+ position: static;
+ top: auto;
+ margin-top: -1px;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {
+ position: absolute;
+ display: inline-block;
+ right: 15px;
+ margin-top: 5px;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {
+ margin-right: 34px;
+}
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle {
+ z-index: 1036;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:before {
+ content: '';
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid rgba(204, 204, 204, 0.2);
+ position: absolute;
+ bottom: -4px;
+ left: 9px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:after {
+ content: '';
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid white;
+ position: absolute;
+ bottom: -4px;
+ left: 10px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {
+ bottom: auto;
+ top: -3px;
+ border-top: 7px solid rgba(204, 204, 204, 0.2);
+ border-bottom: 0;
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {
+ bottom: auto;
+ top: -3px;
+ border-top: 6px solid white;
+ border-bottom: 0;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {
+ right: 12px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {
+ right: 13px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {
+ display: block;
+}
+.bs-searchbox,
+.bs-actionsbox,
+.bs-donebutton {
+ padding: 4px 8px;
+}
+.bs-actionsbox {
+ float: left;
+ width: 100%;
+ box-sizing: border-box;
+}
+.bs-actionsbox .btn-group button {
+ width: 50%;
+}
+.bs-donebutton {
+ float: left;
+ width: 100%;
+ box-sizing: border-box;
+}
+.bs-donebutton .btn-group button {
+ width: 100%;
+}
+.bs-searchbox + .bs-actionsbox {
+ padding: 0 8px 4px;
+}
+.bs-searchbox .form-control {
+ margin-bottom: 0;
+ width: 100%;
+}
+select.bs-select-hidden,
+select.selectpicker {
+ display: none !important;
+}
+select.mobile-device {
+ position: absolute !important;
+ top: 0;
+ left: 0;
+ display: block !important;
+ width: 100%;
+ height: 100% !important;
+ opacity: 0;
+}
+/*-- Chart --*/
+.c3 svg {
+ font: 10px sans-serif;
+}
+.c3 path,
+.c3 line {
+ fill: none;
+ stroke: #000;
+}
+.c3 text {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+.c3-legend-item-tile,
+.c3-xgrid-focus,
+.c3-ygrid,
+.c3-event-rect,
+.c3-bars path {
+ shape-rendering: crispEdges;
+}
+.c3-chart-arc path {
+ stroke: #fff;
+}
+.c3-chart-arc text {
+ fill: #fff;
+ font-size: 13px;
+}
+/*-- Axis --*/
+/*-- Grid --*/
+.c3-grid line {
+ stroke: #aaa;
+}
+.c3-grid text {
+ fill: #aaa;
+}
+.c3-xgrid,
+.c3-ygrid {
+ stroke-dasharray: 3 3;
+}
+/*-- Text on Chart --*/
+.c3-text.c3-empty {
+ fill: #808080;
+ font-size: 2em;
+}
+/*-- Line --*/
+.c3-line {
+ stroke-width: 1px;
+}
+/*-- Point --*/
+.c3-circle._expanded_ {
+ stroke-width: 1px;
+ stroke: white;
+}
+.c3-selected-circle {
+ fill: white;
+ stroke-width: 2px;
+}
+/*-- Bar --*/
+.c3-bar {
+ stroke-width: 0;
+}
+.c3-bar._expanded_ {
+ fill-opacity: 0.75;
+}
+/*-- Focus --*/
+.c3-target.c3-focused {
+ opacity: 1;
+}
+.c3-target.c3-focused path.c3-line,
+.c3-target.c3-focused path.c3-step {
+ stroke-width: 2px;
+}
+.c3-target.c3-defocused {
+ opacity: 0.3 !important;
+}
+/*-- Region --*/
+.c3-region {
+ fill: steelblue;
+ fill-opacity: 0.1;
+}
+/*-- Brush --*/
+.c3-brush .extent {
+ fill-opacity: 0.1;
+}
+/*-- Select - Drag --*/
+/*-- Legend --*/
+.c3-legend-item {
+ font-size: 12px;
+}
+.c3-legend-item-hidden {
+ opacity: 0.15;
+}
+.c3-legend-background {
+ opacity: 0.75;
+ fill: white;
+ stroke: lightgray;
+ stroke-width: 1;
+}
+/*-- Tooltip --*/
+.c3-tooltip-container {
+ z-index: 10;
+}
+.c3-tooltip {
+ border-collapse: collapse;
+ border-spacing: 0;
+ background-color: #fff;
+ empty-cells: show;
+ -webkit-box-shadow: 7px 7px 12px -9px #777777;
+ -moz-box-shadow: 7px 7px 12px -9px #777777;
+ box-shadow: 7px 7px 12px -9px #777777;
+ opacity: 0.9;
+}
+.c3-tooltip tr {
+ border: 1px solid #CCC;
+}
+.c3-tooltip th {
+ background-color: #aaa;
+ font-size: 14px;
+ padding: 2px 5px;
+ text-align: left;
+ color: #FFF;
+}
+.c3-tooltip td {
+ font-size: 13px;
+ padding: 3px 6px;
+ background-color: #fff;
+ border-left: 1px dotted #999;
+}
+.c3-tooltip td > span {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin-right: 6px;
+}
+.c3-tooltip td.value {
+ text-align: right;
+}
+/*-- Area --*/
+.c3-area {
+ stroke-width: 0;
+ opacity: 0.2;
+}
+/*-- Arc --*/
+.c3-chart-arcs-title {
+ dominant-baseline: middle;
+ font-size: 1.3em;
+}
+.c3-chart-arcs .c3-chart-arcs-background {
+ fill: #e0e0e0;
+ stroke: none;
+}
+.c3-chart-arcs .c3-chart-arcs-gauge-unit {
+ fill: #000;
+ font-size: 16px;
+}
+.c3-chart-arcs .c3-chart-arcs-gauge-max {
+ fill: #777;
+}
+.c3-chart-arcs .c3-chart-arcs-gauge-min {
+ fill: #777;
+}
+.c3-chart-arc .c3-gauge-value {
+ fill: #000;
+ /* font-size: 28px !important;*/
+}
+.blank-slate-pf {
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 1px;
+ margin-bottom: 20px;
+ padding: 30px;
+ text-align: center;
+}
+@media (min-width: 768px) {
+ .blank-slate-pf {
+ padding: 60px 60px;
+ }
+}
+@media (min-width: 992px) {
+ .blank-slate-pf {
+ padding: 90px 120px;
+ }
+}
+.blank-slate-pf .blank-slate-pf-icon {
+ color: #999999;
+ font-size: 57.6px;
+ line-height: 57.6px;
+}
+.blank-slate-pf .blank-slate-pf-main-action {
+ margin-top: 20px;
+}
+.blank-slate-pf .blank-slate-pf-secondary-action {
+ margin-top: 20px;
+}
+.combobox-container.combobox-selected .glyphicon-remove {
+ display: inline-block;
+}
+.combobox-container .caret {
+ margin-left: 0;
+}
+.combobox-container .combobox::-ms-clear {
+ display: none;
+}
+.combobox-container .dropdown-menu {
+ margin-top: -1px;
+ width: 100%;
+}
+.combobox-container .glyphicon-remove {
+ display: none;
+ top: auto;
+ width: 12px;
+}
+.combobox-container .glyphicon-remove:before {
+ content: "\e60b";
+ font-family: "PatternFlyIcons-webfont";
+}
+.combobox-container .input-group-addon {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+ position: relative;
+}
+.combobox-container .input-group-addon:hover,
+.combobox-container .input-group-addon:focus,
+.combobox-container .input-group-addon:active,
+.combobox-container .input-group-addon.active,
+.open .dropdown-toggle.combobox-container .input-group-addon {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.combobox-container .input-group-addon:active,
+.combobox-container .input-group-addon.active,
+.open .dropdown-toggle.combobox-container .input-group-addon {
+ background-image: none;
+}
+.combobox-container .input-group-addon:active:hover,
+.combobox-container .input-group-addon.active:hover,
+.open .dropdown-toggle.combobox-container .input-group-addon:hover,
+.combobox-container .input-group-addon:active:focus,
+.combobox-container .input-group-addon.active:focus,
+.open .dropdown-toggle.combobox-container .input-group-addon:focus,
+.combobox-container .input-group-addon:active.focus,
+.combobox-container .input-group-addon.active.focus,
+.open .dropdown-toggle.combobox-container .input-group-addon.focus {
+ background-color: #e2e2e2;
+ border-color: #a5a5a5;
+}
+.combobox-container .input-group-addon.disabled,
+.combobox-container .input-group-addon[disabled],
+fieldset[disabled] .combobox-container .input-group-addon,
+.combobox-container .input-group-addon.disabled:hover,
+.combobox-container .input-group-addon[disabled]:hover,
+fieldset[disabled] .combobox-container .input-group-addon:hover,
+.combobox-container .input-group-addon.disabled:focus,
+.combobox-container .input-group-addon[disabled]:focus,
+fieldset[disabled] .combobox-container .input-group-addon:focus,
+.combobox-container .input-group-addon.disabled:active,
+.combobox-container .input-group-addon[disabled]:active,
+fieldset[disabled] .combobox-container .input-group-addon:active,
+.combobox-container .input-group-addon.disabled.active,
+.combobox-container .input-group-addon[disabled].active,
+fieldset[disabled] .combobox-container .input-group-addon.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.combobox-container .input-group-addon:active {
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+}
+.datepicker {
+ border-radius: 1px;
+}
+.datepicker .datepicker-switch,
+.datepicker tfoot .today {
+ font-size: 14px;
+ font-weight: 500;
+}
+.datepicker .next,
+.datepicker .prev {
+ font-weight: 500;
+}
+.datepicker table tr td,
+.datepicker table tr th {
+ border-radius: 1px;
+}
+.datepicker table tr td.active.active,
+.datepicker table tr td.active.active:hover,
+.datepicker table tr td.active.active.disabled,
+.datepicker table tr td.active.active.disabled:hover {
+ background: #0099d3 !important;
+ color: #fff !important;
+ text-shadow: none;
+}
+.datepicker table tr td.day:hover,
+.datepicker table tr td.day.focused {
+ background: #d4edfa;
+}
+.datepicker table tr td.selected,
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected.disabled:hover {
+ text-shadow: none;
+}
+.datepicker table tr td span {
+ border-radius: 1px;
+}
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active.active:hover,
+.datepicker table tr td span.active.active.disabled,
+.datepicker table tr td span.active.active.disabled:hover {
+ background: #0099d3;
+ text-shadow: none;
+}
+.datepicker table tr td span:hover {
+ background: #d4edfa;
+}
+.datepicker thead tr:first-child th:hover,
+.datepicker tfoot tr th:hover {
+ background: #d4edfa;
+}
+.input-daterange input:first-child {
+ border-radius: 1px 0 0 1px;
+}
+.input-daterange input:last-child {
+ border-radius: 0 1px 1px 0;
+}
+.input-daterange .input-group-addon {
+ background-color: #eeeeee;
+ border-color: #bababa;
+ line-height: 1.66666667;
+ padding: 2px 6px;
+}
+.bootstrap-select.btn-group.form-control {
+ margin-bottom: 0;
+}
+.bootstrap-select.btn-group .btn {
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.bootstrap-select.btn-group .btn:hover {
+ border-color: #7bb2dd;
+}
+.bootstrap-select.btn-group .btn .caret {
+ margin-top: -4px;
+}
+.bootstrap-select.btn-group .btn:focus {
+ border-color: #66afe9;
+ outline: 0 !important;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.has-error .bootstrap-select.btn-group .btn {
+ border-color: #a94442;
+}
+.has-error .bootstrap-select.btn-group .btn:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+}
+.has-success .bootstrap-select.btn-group .btn {
+ border-color: #3c763d;
+}
+.has-success .bootstrap-select.btn-group .btn:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+}
+.has-warning .bootstrap-select.btn-group .btn {
+ border-color: #ec7a08;
+}
+.has-warning .bootstrap-select.btn-group .btn:focus {
+ border-color: #bb6106;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+}
+.bootstrap-select.btn-group .dropdown-menu > .active > a,
+.bootstrap-select.btn-group .dropdown-menu > .active > a:active {
+ background-color: #d4edfa !important;
+ border-color: #b3d3e7 !important;
+ color: #333333 !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .active > a small,
+.bootstrap-select.btn-group .dropdown-menu > .active > a:active small {
+ color: #999999 !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .disabled > a {
+ color: #999999 !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .selected > a {
+ background-color: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #fff !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .selected > a small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+}
+.bootstrap-select.btn-group .dropdown-menu .divider {
+ background: #e5e5e5 !important;
+ margin: 4px 1px !important;
+}
+.bootstrap-select.btn-group .dropdown-menu dt {
+ color: #969696;
+ font-weight: normal;
+ padding: 1px 10px;
+}
+.bootstrap-select.btn-group .dropdown-menu li > a.opt {
+ padding: 1px 10px;
+}
+.bootstrap-select.btn-group .dropdown-menu li a:active small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+}
+.bootstrap-select.btn-group .dropdown-menu li a:hover small,
+.bootstrap-select.btn-group .dropdown-menu li a:focus small {
+ color: #999999;
+}
+.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small,
+.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small {
+ color: #999999;
+}
+.treeview .list-group {
+ border-top: 0;
+}
+.treeview .list-group-item {
+ background: transparent;
+ border-bottom: 1px solid transparent !important;
+ border-top: 1px solid transparent !important;
+ margin-bottom: 0;
+ padding: 0 10px;
+}
+.treeview .list-group-item:hover {
+ background: #d4edfa !important;
+ border-color: #b3d3e7 !important;
+}
+.treeview .list-group-item.node-selected {
+ background: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #ffffff !important;
+}
+.treeview span.icon {
+ display: inline-block;
+ font-size: 13px;
+ min-width: 10px;
+ text-align: center;
+}
+.treeview span.icon > [class*="fa-angle"] {
+ font-size: 15px;
+}
+.treeview span.indent {
+ margin-right: 5px;
+}
+.container-cards-pf {
+ margin-top: 20px;
+}
+.card-pf {
+ background: #ffffff;
+ border-top: 2px solid transparent;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.175);
+ padding: 0 20px;
+ margin: 0 -10px 20px;
+}
+.card-pf.card-pf-accented {
+ border-top-color: #39a5dc;
+}
+.card-pf-body {
+ margin: 20px 0;
+ padding: 0 0 20px;
+}
+.card-pf-body > *:last-child {
+ margin-bottom: 0;
+}
+.card-pf-footer {
+ background-color: #fafafa;
+ border-top: 1px solid #d1d1d1;
+ margin: 0 -20px !important;
+ padding: 20px 20px 10px;
+}
+.card-pf-footer a .fa,
+.card-pf-footer a .pficon {
+ margin-right: 5px;
+}
+.card-pf-heading {
+ border-bottom: 1px solid #d1d1d1;
+ margin: 0 -20px 20px;
+ padding: 0 20px 0;
+}
+.card-pf-title {
+ font-size: 16px;
+ font-weight: 300;
+ margin: 20px 0;
+ padding: 0;
+}
+.cards-pf {
+ background: #f5f5f5;
+}
+.row-cards-pf {
+ margin-left: -10px;
+ margin-right: -10px;
+}
+.c3 path {
+ stroke: #d1d1d1;
+}
+.c3 svg {
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+}
+.c3-axis-x .tick line {
+ stroke: #d1d1d1;
+}
+.c3-axis-y .tick line {
+ display: none;
+}
+.c3-chart-arc path {
+ stroke: #fff;
+}
+.c3-grid line {
+ stroke: #d1d1d1;
+}
+.c3-line {
+ stroke-width: 2px;
+}
+.c3-tooltip {
+ background: #434343;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.c3-tooltip td {
+ background: transparent;
+ border: 0;
+ color: #fff;
+ font-size: 12px;
+ padding: 5px 10px;
+}
+.c3-tooltip th {
+ background: transparent;
+ font-size: 12px;
+ padding: 5px 10px 0;
+}
+.c3-tooltip tr {
+ border: 0;
+}
+.c3-tooltip tr + tr > td {
+ padding-top: 0;
+}
+.c3-tooltip-sparkline {
+ background: #434343;
+ color: #fff;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+ padding: 2px 6px;
+}
+.c3-xgrid,
+.c3-ygrid {
+ stroke-dasharray: 0 0;
+}
+.close {
+ text-shadow: none;
+ opacity: 0.6;
+ filter: alpha(opacity=60);
+}
+.close:hover,
+.close:focus {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.ColVis_Button:active:focus {
+ outline: none;
+}
+.ColVis_catcher {
+ position: absolute;
+ z-index: 999;
+}
+.ColVis_collection {
+ background-color: #ffffff;
+ border: 1px solid #b6b6b6;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+ list-style: none;
+ margin: -1px 0 0 0;
+ padding: 5px 10px;
+ width: 150px;
+ z-index: 1000;
+}
+.ColVis_collection label {
+ font-weight: normal;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding-left: 20px;
+}
+.ColVis_collectionBackground {
+ background-color: #fff;
+ height: 100%;
+ left: 0;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 998;
+}
+.dataTables_header {
+ background-color: #f6f6f6;
+ border: 1px solid #d1d1d1;
+ border-bottom: none;
+ padding: 5px;
+ position: relative;
+ text-align: center;
+}
+.dataTables_header .btn {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.dataTables_header .ColVis {
+ position: absolute;
+ right: 5px;
+ text-align: left;
+ top: 5px;
+}
+.dataTables_header .ColVis + .dataTables_info {
+ padding-right: 30px;
+}
+.dataTables_header .dataTables_filter {
+ position: absolute;
+}
+.dataTables_header .dataTables_filter input {
+ border: 1px solid #bbb;
+ height: 24px;
+}
+@media (max-width: 767px) {
+ .dataTables_header .dataTables_filter input {
+ width: 100px;
+ }
+}
+.dataTables_header .dataTables_info {
+ padding: 2px 0;
+}
+@media (max-width: 480px) {
+ .dataTables_header .dataTables_info {
+ text-align: right;
+ }
+}
+.dataTables_header .dataTables_info b {
+ font-weight: bold;
+}
+.dataTables_footer {
+ background-color: #fff;
+ border: 1px solid #d1d1d1;
+ border-top: none;
+ overflow: hidden;
+}
+.dataTables_paginate {
+ background: #fafafa;
+ float: right;
+ margin: 0;
+}
+.dataTables_paginate .pagination {
+ float: left;
+ margin: 0;
+}
+.dataTables_paginate .pagination > li > span {
+ border-color: #ffffff #e1e1e1 #f4f4f4;
+ border-width: 0 1px;
+ font-size: 16px;
+ font-weight: normal;
+ padding: 0;
+ text-align: center;
+ width: 31px;
+}
+.dataTables_paginate .pagination > li > span:hover,
+.dataTables_paginate .pagination > li > span:focus {
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dataTables_paginate .pagination > li.last > span {
+ border-right: none;
+}
+.dataTables_paginate .pagination > li.disabled > span {
+ background: #f5f5f5;
+ border-left-color: #ececec;
+ border-right-color: #ececec;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dataTables_paginate .pagination-input {
+ float: left;
+ font-size: 12px;
+ line-height: 1em;
+ padding: 4px 15px 0;
+ text-align: right;
+}
+.dataTables_paginate .pagination-input .paginate_input {
+ border: 1px solid #d3d3d3;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ font-size: 12px;
+ font-weight: 600;
+ height: 19px;
+ margin-right: 8px;
+ padding-right: 3px;
+ text-align: right;
+ width: 30px;
+}
+.dataTables_paginate .pagination-input .paginate_of {
+ position: relative;
+}
+.dataTables_paginate .pagination-input .paginate_of b {
+ margin-left: 3px;
+}
+.dataTables_wrapper {
+ margin: 20px 0;
+}
+@media (max-width: 767px) {
+ .dataTables_wrapper .table-responsive {
+ margin-bottom: 0;
+ }
+}
+.DTCR_clonedTable {
+ background-color: rgba(255, 255, 255, 0.7);
+ z-index: 202;
+}
+.DTCR_pointer {
+ background-color: #0099d3;
+ width: 1px;
+ z-index: 201;
+}
+table.datatable {
+ margin-bottom: 0;
+ max-width: none !important;
+}
+table.datatable thead .sorting,
+table.datatable thead .sorting_asc,
+table.datatable thead .sorting_desc,
+table.datatable thead .sorting_asc_disabled,
+table.datatable thead .sorting_desc_disabled {
+ cursor: pointer;
+ *cursor: hand;
+}
+table.datatable thead .sorting_asc,
+table.datatable thead .sorting_desc {
+ border: 0;
+ color: #0099d3 !important;
+ display: block;
+ position: relative;
+}
+table.datatable thead .sorting_asc:after,
+table.datatable thead .sorting_desc:after {
+ content: "\f107";
+ font-family: "FontAwesome";
+ font-size: 10px;
+ font-weight: normal;
+ height: 9px;
+ left: 7px;
+ line-height: 12px;
+ position: relative;
+ top: 2px;
+ vertical-align: baseline;
+ width: 12px;
+}
+table.datatable thead .sorting_asc:before,
+table.datatable thead .sorting_desc:before {
+ background: #0099d3;
+ content: '';
+ height: 2px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+}
+table.datatable thead .sorting_asc:after {
+ content: "\f106";
+ top: -3px;
+}
+table.datatable th:active {
+ outline: none;
+}
+@font-face {
+ font-family: 'PatternFlyIcons-webfont';
+ src: url('../fonts/PatternFlyIcons-webfont.eot');
+ src: url('../fonts/PatternFlyIcons-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/PatternFlyIcons-webfont.ttf') format('truetype'), url('../fonts/PatternFlyIcons-webfont.woff') format('woff'), url('../fonts/PatternFlyIcons-webfont.svg#PatternFlyIcons-webfont') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+[class^="pficon-"],
+[class*=" pficon-"] {
+ display: inline-block;
+ font-family: 'PatternFlyIcons-webfont';
+ font-style: normal;
+ font-variant: normal;
+ font-weight: normal;
+ line-height: 1;
+ speak: none;
+ text-transform: none;
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.pficon-screen:before {
+ content: "\e600";
+}
+.pficon-save:before {
+ content: "\e601";
+}
+.pficon-ok:before {
+ color: #3f9c35;
+ content: "\e602";
+}
+.pficon-messages:before,
+.pficon-flag:before {
+ content: "\e603";
+}
+.pficon-info:before {
+ content: "\e604";
+}
+.pficon-help:before {
+ content: "\e605";
+}
+.pficon-folder-open:before {
+ content: "\e606";
+}
+.pficon-folder-close:before {
+ content: "\e607";
+}
+.pficon-edit:before {
+ content: "\e60a";
+}
+.pficon-close:before {
+ content: "\e60b";
+}
+.pficon-user:before {
+ content: "\e60e";
+}
+.pficon-users:before {
+ content: "\e60f";
+}
+.pficon-add-circle-o:before {
+ content: "\e61b";
+}
+.pficon-warning-triangle-o:before {
+ color: #ec7a08;
+ content: "\e61c";
+}
+.pficon-error-circle-o:before {
+ color: #cc0000;
+ content: "\e61d";
+}
+.pficon-service:before {
+ content: "\e61e";
+}
+.pficon-image:before {
+ content: "\e61f";
+}
+.pficon-settings:before {
+ content: "\e610";
+}
+.pficon-delete:before {
+ content: "\e611";
+}
+.pficon-print:before {
+ content: "\e612";
+}
+.pficon-refresh:before,
+.pficon-restart:before {
+ content: "\e613";
+}
+.pficon-running:before {
+ content: "\e614";
+}
+.pficon-import:before {
+ content: "\e615";
+}
+.pficon-export:before {
+ content: "\e616";
+}
+.pficon-history:before {
+ content: "\e617";
+}
+.pficon-home:before {
+ content: "\e618";
+}
+.pficon-cluster:before {
+ content: "\e620";
+}
+.pficon-container-node:before {
+ content: "\e621";
+}
+.pficon-project:before {
+ content: "\e622";
+}
+.pficon-registry:before {
+ content: "\e623";
+}
+.pficon-replicator:before {
+ content: "\e624";
+}
+.pficon-route:before {
+ content: "\e625";
+}
+.pficon-openshift:before {
+ content: "\e626";
+}
+.pficon-kubernetes:before {
+ content: "\e627";
+}
+.navbar-nav > li > .dropdown-menu.infotip {
+ border-top-width: 1px !important;
+ margin-top: 10px;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-nav .open .dropdown-menu.infotip {
+ background-color: #fff !important;
+ margin-top: 0;
+ }
+}
+.infotip {
+ min-width: 235px;
+ padding: 0;
+}
+.infotip .list-group {
+ border-top: 0;
+ margin: 0;
+ padding: 8px 0;
+}
+.infotip .list-group .list-group-item {
+ border: none;
+ margin: 0 15px 0 34px;
+ padding: 5px 0;
+}
+.infotip .list-group .list-group-item > .i {
+ color: #4d5258;
+ font-size: 13px;
+ left: -20px;
+ position: absolute;
+ top: 8px;
+}
+.infotip .list-group .list-group-item > a {
+ color: #4d5258;
+ line-height: 13px;
+}
+.infotip .list-group .list-group-item > .close {
+ float: right;
+}
+.infotip .footer {
+ background-color: #f5f5f5;
+ padding: 6px 15px;
+}
+.infotip .footer a:hover {
+ color: #0099d3;
+}
+.infotip .arrow,
+.infotip .arrow:after {
+ border-color: transparent;
+ border-style: solid;
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+.infotip .arrow {
+ border-width: 11px;
+}
+.infotip .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+.infotip.bottom .arrow,
+.infotip.bottom-left .arrow,
+.infotip.bottom-right .arrow {
+ border-bottom-color: #999999;
+ border-bottom-color: #bbbbbb;
+ border-top-width: 0;
+ left: 50%;
+ margin-left: -11px;
+ top: -11px;
+}
+.infotip.bottom .arrow:after,
+.infotip.bottom-left .arrow:after,
+.infotip.bottom-right .arrow:after {
+ border-top-width: 0;
+ border-bottom-color: #ffffff;
+ content: " ";
+ margin-left: -10px;
+ top: 1px;
+}
+.infotip.bottom-left .arrow {
+ left: 20%;
+}
+.infotip.bottom-right .arrow {
+ left: 80%;
+}
+.infotip.top .arrow {
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: #bbbbbb;
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+}
+.infotip.top .arrow:after {
+ border-bottom-width: 0;
+ border-top-color: #f5f5f5;
+ bottom: 1px;
+ content: " ";
+ margin-left: -10px;
+}
+.infotip.right .arrow {
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: #bbbbbb;
+ left: -11px;
+ margin-top: -11px;
+ top: 50%;
+}
+.infotip.right .arrow:after {
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #ffffff;
+ content: " ";
+ left: 1px;
+}
+.infotip.left .arrow {
+ border-left-color: #999999;
+ border-left-color: #bbbbbb;
+ border-right-width: 0;
+ margin-top: -11px;
+ right: -11px;
+ top: 50%;
+}
+.infotip.left .arrow:after {
+ border-left-color: #ffffff;
+ border-right-width: 0;
+ bottom: -10px;
+ content: " ";
+ right: 1px;
+}
+.login-pf {
+ height: 100%;
+}
+.login-pf #brand {
+ position: relative;
+ top: -70px;
+}
+.login-pf #brand img {
+ display: block;
+ height: 18px;
+ margin: 0 auto;
+ max-width: 100%;
+}
+@media (min-width: 768px) {
+ .login-pf #brand img {
+ margin: 0;
+ text-align: left;
+ }
+}
+.login-pf #badge {
+ display: block;
+ margin: 20px auto 70px;
+ position: relative;
+ text-align: center;
+}
+@media (min-width: 768px) {
+ .login-pf #badge {
+ float: right;
+ margin-right: 64px;
+ margin-top: 50px;
+ }
+}
+.login-pf body {
+ background: #080808 url("../img/bg-login.jpg") repeat-x 50% 0;
+ background-size: auto;
+}
+@media (min-width: 768px) {
+ .login-pf body {
+ background-size: 100% auto;
+ }
+}
+.login-pf .container {
+ background-color: #181818;
+ background-color: rgba(255, 255, 255, 0.055);
+ clear: right;
+ color: #fff;
+ padding-bottom: 40px;
+ padding-top: 20px;
+ width: auto;
+}
+@media (min-width: 768px) {
+ .login-pf .container {
+ bottom: 13%;
+ padding-left: 80px;
+ position: absolute;
+ width: 100%;
+ }
+}
+.login-pf .container [class^='alert'] {
+ background: transparent;
+ color: #fff;
+}
+.login-pf .container .details p:first-child {
+ border-top: 1px solid #474747;
+ padding-top: 25px;
+ margin-top: 25px;
+}
+@media (min-width: 768px) {
+ .login-pf .container .details {
+ border-left: 1px solid #474747;
+ padding-left: 40px;
+ }
+ .login-pf .container .details p:first-child {
+ border-top: 0;
+ padding-top: 0;
+ margin-top: 0;
+ }
+}
+.login-pf .container .details p {
+ margin-bottom: 2px;
+}
+.login-pf .container .form-horizontal .control-label {
+ font-size: 13px;
+ font-weight: 400;
+ text-align: left;
+}
+.login-pf .container .form-horizontal .form-group:last-child,
+.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child {
+ margin-bottom: 0;
+}
+.login-pf .container .help-block {
+ color: #fff;
+}
+@media (min-width: 768px) {
+ .login-pf .container .login {
+ padding-right: 40px;
+ }
+}
+.login-pf .container .submit {
+ text-align: right;
+}
+.navbar-pf {
+ background: #030303;
+ border: 0;
+ border-radius: 0;
+ border-top: 3px solid #199dde;
+ margin-bottom: 0;
+ min-height: 0;
+}
+.navbar-pf .navbar-brand {
+ color: #f1f1f1;
+ height: auto;
+ padding: 12px 0;
+ margin: 0 0 0 20px;
+}
+.navbar-pf .navbar-brand img {
+ display: block;
+}
+.navbar-pf .navbar-collapse {
+ border-top: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ padding: 0;
+}
+.navbar-pf .navbar-header {
+ border-bottom: 1px solid #292929;
+ float: none;
+}
+.navbar-pf .navbar-nav {
+ margin: 0;
+}
+.navbar-pf .navbar-nav > .active > a,
+.navbar-pf .navbar-nav > .active > a:hover,
+.navbar-pf .navbar-nav > .active > a:focus {
+ background-color: #232323;
+ color: #f1f1f1;
+}
+.navbar-pf .navbar-nav > li > a {
+ color: #cfcfcf;
+ line-height: 1;
+ padding: 10px 20px;
+ text-shadow: none;
+}
+.navbar-pf .navbar-nav > li > a:hover,
+.navbar-pf .navbar-nav > li > a:focus {
+ color: #f1f1f1;
+}
+.navbar-pf .navbar-nav > .open > a,
+.navbar-pf .navbar-nav > .open > a:hover,
+.navbar-pf .navbar-nav > .open > a:focus {
+ background-color: #232323;
+ color: #f1f1f1;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-nav .active .navbar-persistent,
+ .navbar-pf .navbar-nav .active .dropdown-menu,
+ .navbar-pf .navbar-nav .open .dropdown-menu {
+ background-color: #171717 !important;
+ margin-left: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent > .active > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu > .active > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a,
+ .navbar-pf .navbar-nav .active .navbar-persistent > .active > a:hover,
+ .navbar-pf .navbar-nav .active .dropdown-menu > .active > a:hover,
+ .navbar-pf .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a:hover,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a:hover,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a:hover,
+ .navbar-pf .navbar-nav .active .navbar-persistent > .active > a:focus,
+ .navbar-pf .navbar-nav .active .dropdown-menu > .active > a:focus,
+ .navbar-pf .navbar-nav .open .dropdown-menu > .active > a:focus,
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a:focus,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a:focus,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a:focus {
+ background-color: #1f1f1f !important;
+ color: #f1f1f1;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent > li > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu > li > a {
+ background-color: transparent;
+ border: 0;
+ color: #cfcfcf;
+ outline: none;
+ padding-left: 30px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent > li > a:hover,
+ .navbar-pf .navbar-nav .active .dropdown-menu > li > a:hover,
+ .navbar-pf .navbar-nav .open .dropdown-menu > li > a:hover {
+ color: #f1f1f1;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .divider,
+ .navbar-pf .navbar-nav .active .dropdown-menu .divider,
+ .navbar-pf .navbar-nav .open .dropdown-menu .divider {
+ background-color: #292929;
+ margin: 0 1px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding-bottom: 0;
+ padding-left: 30px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle {
+ color: #f1f1f1;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left {
+ float: none !important;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu > a:after,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu > a:after,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu > a:after {
+ display: none;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header {
+ padding-left: 45px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu {
+ border: 0;
+ bottom: auto;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ display: block;
+ float: none;
+ margin: 0;
+ min-width: 0;
+ padding: 0;
+ position: relative;
+ left: auto;
+ right: auto;
+ top: auto;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu > li > a {
+ padding: 5px 15px 5px 45px;
+ line-height: 20px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu > li > a {
+ padding-left: 60px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu {
+ display: block;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu > a:after {
+ display: inline-block !important;
+ position: relative;
+ right: auto;
+ top: 1px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu {
+ display: none;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu > a:after {
+ display: none !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu {
+ background-color: #fff !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a:active {
+ background-color: #d4edfa !important;
+ border-color: #b3d3e7 !important;
+ color: #333333 !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a small,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a:active small {
+ color: #999999 !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .disabled > a {
+ color: #999999 !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a:active {
+ background-color: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #fff !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a small,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a:active small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li > a.opt {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ color: #333333;
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:active small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:hover small,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:focus small {
+ color: #999999;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select > .open > .dropdown-menu {
+ padding-bottom: 5px;
+ padding-top: 5px;
+ }
+}
+.navbar-pf .navbar-persistent {
+ display: none;
+}
+.navbar-pf .active > .navbar-persistent {
+ display: block;
+}
+.navbar-pf .navbar-primary {
+ float: none;
+}
+.navbar-pf .navbar-primary .context {
+ border-bottom: 1px solid #292929;
+}
+.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,
+.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*="span"] {
+ margin: 8px 20px 9px;
+ width: auto;
+}
+.navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a {
+ position: relative;
+}
+.navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a:after {
+ content: "\f107";
+ display: inline-block;
+ font-family: "FontAwesome";
+ font-weight: normal;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a:after {
+ height: 10px;
+ margin-left: 4px;
+ vertical-align: baseline;
+ }
+}
+.navbar-pf .navbar-toggle {
+ border: 0;
+ margin: 0;
+ padding: 10px 20px;
+}
+.navbar-pf .navbar-toggle:hover,
+.navbar-pf .navbar-toggle:focus {
+ background-color: transparent;
+ outline: none;
+}
+.navbar-pf .navbar-toggle:hover .icon-bar,
+.navbar-pf .navbar-toggle:focus .icon-bar {
+ -webkit-box-shadow: 0 0 3px #ffffff;
+ box-shadow: 0 0 3px #ffffff;
+}
+.navbar-pf .navbar-toggle .icon-bar {
+ background-color: #ffffff;
+}
+.navbar-pf .navbar-utility {
+ border-bottom: 1px solid #292929;
+}
+.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle {
+ padding-left: 36px;
+ position: relative;
+}
+.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user {
+ left: 20px;
+ position: absolute;
+ top: 10px;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-utility > li + li {
+ border-top: 1px solid #292929;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-pf .navbar-brand {
+ padding: 8px 0 7px;
+ }
+ .navbar-pf .navbar-nav > li > a {
+ padding-bottom: 14px;
+ padding-top: 14px;
+ }
+ .navbar-pf .navbar-persistent {
+ font-size: 14px;
+ }
+ .navbar-pf .navbar-primary {
+ font-size: 14px;
+ background-image: -webkit-linear-gradient(top, #1d1d1d 0%, #030303 100%);
+ background-image: -o-linear-gradient(top, #1d1d1d 0%, #030303 100%);
+ background-image: linear-gradient(to bottom, #1d1d1d 0%, #030303 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1d1d1d', endColorstr='#ff030303', GradientType=0);
+ }
+ .navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu {
+ top: auto;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu {
+ bottom: -5px;
+ top: auto;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li {
+ position: static;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li.active {
+ margin-bottom: 32px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li.active > .navbar-persistent {
+ display: block;
+ left: 0;
+ position: absolute;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent {
+ background: #f6f6f6;
+ border-bottom: 1px solid #cecdcd;
+ padding: 0;
+ width: 100%;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent a {
+ text-decoration: none !important;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:before,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:hover:before {
+ background: #0099d3;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 20px;
+ position: absolute;
+ right: 20px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active > a,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active > a:hover,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:hover > a {
+ color: #0099d3 !important;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active .active > a {
+ color: #f1f1f1;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu:hover > .dropdown-menu {
+ display: none;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-menu {
+ display: block;
+ left: 20px;
+ margin-top: 1px;
+ top: 100%;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-toggle {
+ color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-toggle:after {
+ border-top-color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu > .dropdown-toggle {
+ padding-right: 35px !important;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu > .dropdown-toggle:after {
+ position: absolute;
+ right: 20px;
+ top: 10px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover:before,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open:before {
+ background: #aaaaaa;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 20px;
+ position: absolute;
+ right: 20px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover > a,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open > a {
+ color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover > a:after,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open > a:after {
+ border-top-color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a {
+ background-color: transparent;
+ display: block;
+ line-height: 1;
+ padding: 9px 20px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a.dropdown-toggle {
+ padding-right: 35px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a.dropdown-toggle:after {
+ font-size: 15px;
+ position: absolute;
+ right: 20px;
+ top: 9px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a:hover {
+ color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li a {
+ color: #4d5258;
+ }
+ .navbar-pf .navbar-primary > li > a {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ position: relative;
+ margin: -1px 0 0;
+ }
+ .navbar-pf .navbar-primary > li > a:hover {
+ background-color: #1d1d1d;
+ border-top-color: #5c5c5c;
+ color: #cfcfcf;
+ background-image: -webkit-linear-gradient(top, #363636 0%, #1d1d1d 100%);
+ background-image: -o-linear-gradient(top, #363636 0%, #1d1d1d 100%);
+ background-image: linear-gradient(to bottom, #363636 0%, #1d1d1d 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff363636', endColorstr='#ff1d1d1d', GradientType=0);
+ }
+ .navbar-pf .navbar-primary > .active > a,
+ .navbar-pf .navbar-primary > .active > a:hover,
+ .navbar-pf .navbar-primary > .active > a:focus,
+ .navbar-pf .navbar-primary > .open > a,
+ .navbar-pf .navbar-primary > .open > a:hover,
+ .navbar-pf .navbar-primary > .open > a:focus {
+ background-color: #303030;
+ border-bottom-color: #303030;
+ border-top-color: #696969;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #f1f1f1;
+ background-image: -webkit-linear-gradient(top, #434343 0%, #303030 100%);
+ background-image: -o-linear-gradient(top, #434343 0%, #303030 100%);
+ background-image: linear-gradient(to bottom, #434343 0%, #303030 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434343', endColorstr='#ff303030', GradientType=0);
+ }
+ .navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option {
+ max-width: 160px;
+ text-overflow: ellipsis;
+ }
+ .navbar-pf .navbar-primary li.context.dropdown {
+ border-bottom: 0;
+ }
+ .navbar-pf .navbar-primary li.context > a,
+ .navbar-pf .navbar-primary li.context.context-bootstrap-select {
+ background-color: #1f1f1f;
+ border-bottom-color: #3e3e3e;
+ border-right: 1px solid #3e3e3e;
+ border-top-color: #3b3b3b;
+ font-weight: 600;
+ background-image: -webkit-linear-gradient(top, #323232 0%, #1f1f1f 100%);
+ background-image: -o-linear-gradient(top, #323232 0%, #1f1f1f 100%);
+ background-image: linear-gradient(to bottom, #323232 0%, #1f1f1f 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff323232', endColorstr='#ff1f1f1f', GradientType=0);
+ }
+ .navbar-pf .navbar-primary li.context > a:hover,
+ .navbar-pf .navbar-primary li.context.context-bootstrap-select:hover {
+ background-color: #323232;
+ border-bottom-color: #4a4a4a;
+ border-right-color: #4a4a4a;
+ border-top-color: #4a4a4a;
+ background-image: -webkit-linear-gradient(top, #3f3f3f 0%, #323232 100%);
+ background-image: -o-linear-gradient(top, #3f3f3f 0%, #323232 100%);
+ background-image: linear-gradient(to bottom, #3f3f3f 0%, #323232 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3f3f3f', endColorstr='#ff323232', GradientType=0);
+ }
+ .navbar-pf .navbar-primary li.context.open > a {
+ background-color: #454545;
+ border-bottom-color: #575757;
+ border-right-color: #575757;
+ border-top-color: #5a5a5a;
+ background-image: -webkit-linear-gradient(top, #4c4c4c 0%, #454545 100%);
+ background-image: -o-linear-gradient(top, #4c4c4c 0%, #454545 100%);
+ background-image: linear-gradient(to bottom, #4c4c4c 0%, #454545 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4c4c4c', endColorstr='#ff454545', GradientType=0);
+ }
+ .navbar-pf .navbar-utility {
+ border-bottom: 0;
+ font-size: 11px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
+ .navbar-pf .navbar-utility > .active > a,
+ .navbar-pf .navbar-utility > .active > a:hover,
+ .navbar-pf .navbar-utility > .active > a:focus,
+ .navbar-pf .navbar-utility > .open > a,
+ .navbar-pf .navbar-utility > .open > a:hover,
+ .navbar-pf .navbar-utility > .open > a:focus {
+ background: #363636;
+ color: #cfcfcf;
+ }
+ .navbar-pf .navbar-utility > li > a {
+ border-left: 1px solid #2b2b2b;
+ color: #cfcfcf !important;
+ padding: 7px 10px;
+ }
+ .navbar-pf .navbar-utility > li > a:hover {
+ background: #232323;
+ border-left-color: #373737;
+ }
+ .navbar-pf .navbar-utility > li.open > a {
+ border-left-color: #444444;
+ color: #f1f1f1 !important;
+ }
+ .navbar-pf .navbar-utility li.dropdown > .dropdown-toggle {
+ padding-left: 26px;
+ }
+ .navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user {
+ left: 10px;
+ top: 7px;
+ }
+ .navbar-pf .navbar-utility .open .dropdown-menu {
+ left: auto;
+ right: 0;
+ }
+ .navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu {
+ left: auto;
+ right: 100%;
+ }
+ .navbar-pf .open .dropdown-menu {
+ border-top-width: 0 !important;
+ }
+ .navbar-pf .open.bootstrap-select .dropdown-menu,
+ .navbar-pf .open .dropdown-submenu > .dropdown-menu {
+ border-top-width: 1px !important;
+ }
+}
+@media (max-width: 360px) {
+ .navbar-pf .navbar-brand {
+ margin-left: 10px;
+ width: 75%;
+ }
+ .navbar-pf .navbar-brand img {
+ height: auto;
+ max-width: 100%;
+ }
+ .navbar-pf .navbar-toggle {
+ padding-left: 0;
+ }
+}
+.search-pf.has-button {
+ border-collapse: separate;
+ display: table;
+}
+.search-pf.has-button .form-group {
+ display: table-cell;
+ width: 100%;
+}
+.search-pf.has-button .form-group .btn {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ float: left;
+ margin-left: -1px;
+}
+.search-pf.has-button .form-group .btn.btn-lg {
+ font-size: 14.5px;
+}
+.search-pf.has-button .form-group .btn.btn-sm {
+ font-size: 10.7px;
+}
+.search-pf.has-button .form-group .form-control {
+ float: left;
+}
+.search-pf .has-clear .clear {
+ background: transparent;
+ background: rgba(255, 255, 255, 0);
+ border: 0;
+ height: 25px;
+ line-height: 1;
+ padding: 0;
+ position: absolute;
+ right: 1px;
+ top: 1px;
+ width: 28px;
+}
+.search-pf .has-clear .clear:focus {
+ outline: none;
+}
+.search-pf .has-clear .form-control {
+ padding-right: 30px;
+}
+.search-pf .has-clear .form-control::-ms-clear {
+ display: none;
+}
+.search-pf .has-clear .input-lg + .clear {
+ height: 31px;
+ width: 28px;
+}
+.search-pf .has-clear .input-sm + .clear {
+ height: 20px;
+ width: 28px;
+}
+.search-pf .has-clear .input-sm + .clear span {
+ font-size: 10px;
+}
+.search-pf .has-clear .search-pf-input-group {
+ position: relative;
+}
+.sidebar-header {
+ border-bottom: 1px solid #e9e9e9;
+ padding-bottom: 11px;
+ margin: 50px 0 20px;
+}
+.sidebar-header .actions {
+ margin-top: -2px;
+}
+.sidebar-pf .sidebar-header + .list-group {
+ border-top: 0;
+ margin-top: -10px;
+}
+.sidebar-pf .sidebar-header + .list-group .list-group-item {
+ background: transparent;
+ border-color: #e9e9e9;
+ padding-left: 0;
+}
+.sidebar-pf .sidebar-header + .list-group .list-group-item-heading {
+ font-size: 12px;
+}
+.sidebar-pf .nav-category h2 {
+ color: #999999;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 21px;
+ margin: 0;
+ padding: 8px 0;
+}
+.sidebar-pf .nav-category + .nav-category {
+ margin-top: 10px;
+}
+.sidebar-pf .nav-pills > li.active > a {
+ background: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #fff;
+}
+@media (min-width: 768px) {
+ .sidebar-pf .nav-pills > li.active > a:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 1px;
+ }
+}
+.sidebar-pf .nav-pills > li.active > a .fa {
+ color: #fff;
+}
+.sidebar-pf .nav-pills > li > a {
+ border-bottom: 1px solid transparent;
+ border-radius: 0;
+ border-top: 1px solid transparent;
+ color: #333333;
+ font-size: 13px;
+ line-height: 21px;
+ padding: 1px 20px;
+}
+.sidebar-pf .nav-pills > li > a:hover {
+ background: #d4edfa;
+ border-color: #b3d3e7;
+}
+.sidebar-pf .nav-pills > li > a .fa {
+ color: #6a7079;
+ font-size: 15px;
+ margin-right: 10px;
+ text-align: center;
+ vertical-align: middle;
+ width: 15px;
+}
+.sidebar-pf .nav-stacked {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+.sidebar-pf .nav-stacked li + li {
+ margin-top: 0;
+}
+.sidebar-pf .panel {
+ background: transparent;
+}
+.sidebar-pf .panel-body {
+ padding: 6px 20px;
+}
+.sidebar-pf .panel-body .nav-pills > li > a {
+ padding-left: 37px;
+}
+.sidebar-pf .panel-heading {
+ padding: 9px 20px;
+}
+.sidebar-pf .panel-title {
+ font-size: 12px;
+}
+.sidebar-pf .panel-title > a:before {
+ display: inline-block;
+ margin-left: 1px;
+ margin-right: 4px;
+ width: 9px;
+}
+.sidebar-pf .panel-title > a.collapsed:before {
+ margin-left: 3px;
+ margin-right: 2px;
+}
+@media (min-width: 767px) {
+ .sidebar-header-bleed-left {
+ margin-left: -20px;
+ }
+ .sidebar-header-bleed-left > h2 {
+ margin-left: 20px;
+ }
+ .sidebar-header-bleed-right {
+ margin-right: -20px;
+ }
+ .sidebar-header-bleed-right .actions {
+ margin-right: 20px;
+ }
+ .sidebar-header-bleed-right > h2 {
+ margin-right: 20px;
+ }
+ .sidebar-header-bleed-right + .list-group {
+ margin-right: -20px;
+ }
+ .sidebar-pf .panel-group .panel-default,
+ .sidebar-pf .treeview {
+ border-left: 0;
+ border-right: 0;
+ margin-left: -20px;
+ margin-right: -20px;
+ }
+ .sidebar-pf .treeview {
+ margin-top: 5px;
+ }
+ .sidebar-pf .treeview .list-group-item {
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+ .sidebar-pf .treeview .list-group-item.node-selected:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 1px;
+ }
+}
+@media (min-width: 768px) {
+ .sidebar-pf {
+ background: #fafafa;
+ }
+ .sidebar-pf.sidebar-pf-left {
+ border-right: 1px solid #d0d0d0;
+ }
+ .sidebar-pf.sidebar-pf-right {
+ border-left: 1px solid #d0d0d0;
+ }
+ .sidebar-pf > .nav-category,
+ .sidebar-pf > .nav-stacked {
+ margin-top: 5px;
+ }
+}
+@-webkit-keyframes rotation {
+ from {
+ -webkit-transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(359deg);
+ }
+}
+@keyframes rotation {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(359deg);
+ }
+}
+.spinner {
+ -webkit-animation: rotation .6s infinite linear;
+ animation: rotation .6s infinite linear;
+ border-bottom: 4px solid rgba(0, 0, 0, 0.25);
+ border-left: 4px solid rgba(0, 0, 0, 0.25);
+ border-right: 4px solid rgba(0, 0, 0, 0.25);
+ border-radius: 100%;
+ border-top: 4px solid rgba(0, 0, 0, 0.75);
+ height: 24px;
+ margin: 0 auto;
+ position: relative;
+ width: 24px;
+}
+.spinner.spinner-inline {
+ display: inline-block;
+ margin-right: 3px;
+}
+.spinner.spinner-lg {
+ border-width: 5px;
+ height: 30px;
+ width: 30px;
+}
+.spinner.spinner-sm {
+ border-width: 3px;
+ height: 18px;
+ width: 18px;
+}
+.spinner.spinner-xs {
+ border-width: 2px;
+ height: 12px;
+ width: 12px;
+}
+.ie9 .spinner {
+ background: url("../img/spinner.gif") no-repeat;
+ border: 0;
+}
+.ie9 .spinner.spinner-lg {
+ background-image: url("../img/spinner-lg.gif");
+}
+.ie9 .spinner.spinner-sm {
+ background-image: url("../img/spinner-sm.gif");
+}
+.ie9 .spinner.spinner-xs {
+ background-image: url("../img/spinner-xs.gif");
+}
+.prettyprint .atn,
+.prettyprint .com,
+.prettyprint .fun,
+.prettyprint .var {
+ color: #3f9c35;
+}
+.prettyprint .atv,
+.prettyprint .str {
+ color: #a30000;
+}
+.prettyprint .clo,
+.prettyprint .dec,
+.prettyprint .kwd,
+.prettyprint .opn,
+.prettyprint .pln,
+.prettyprint .pun {
+ color: #333333;
+}
+.prettyprint .lit,
+.prettyprint .tag,
+.prettyprint .typ {
+ color: #006e9c;
+}
+.prettyprint ol.linenums {
+ margin-bottom: 0;
+}
+/*# sourceMappingURL=patternfly-additions.css.map */
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.css.map
new file mode 100644
index 0000000..2bfac51
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["components/bootstrap-combobox/less/combobox.less","components/bootstrap-datepicker/less/datepicker3.less","components/bootstrap/less/mixins/buttons.less","components/bootstrap-select/less/bootstrap-select.less","components/c3/c3.css","less/blank-slate.less","less/bootstrap-combobox.less","less/variables.less","less/mixins.less","components/bootstrap/less/mixins/gradients.less","components/bootstrap/less/mixins/vendor-prefixes.less","less/bootstrap-datepicker.less","less/bootstrap-select.less","less/bootstrap-treeview.less","less/cards.less","less/charts.less","components/bootstrap/less/mixins/opacity.less","less/close.less","less/datatables.less","components/bootstrap/less/mixins/reset-filter.less","components/font-awesome/less/variables.less","less/icons.less","less/infotip.less","less/login.less","less/navbar.less","less/search.less","less/sidebar.less","less/spinner.less","less/syntax-highlighting.less"],"names":[],"mappings":"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","sourcesContent":[".form-search, .form-inline {\n .combobox-container {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: top;\n .input-group-addon{\n width: auto;\n }\n }\n}\n\n.combobox-selected .caret {\n display: none;\n}\n\n/* :not doesn't work in IE8 */\n.combobox-container:not(.combobox-selected) .glyphicon-remove {\n display: none;\n}\n\n.typeahead-long {\n max-height: 300px;\n overflow-y: auto;\n}\n\n.control-group.error .combobox-container{\n .add-on {\n color: #B94A48;\n border-color: #B94A48;\n }\n .caret {\n border-top-color: #B94A48;\n }\n}\n\n.control-group.warning .combobox-container {\n .add-on {\n color: #C09853;\n border-color: #C09853;\n }\n .caret {\n border-top-color: #C09853;\n }\n}\n\n.control-group.success .combobox-container{\n .add-on {\n color: #468847;\n border-color: #468847;\n }\n .caret {\n border-top-color: #468847;\n }\n}\n",".datepicker {\n\tpadding: 4px;\n\tborder-radius: 4px;\n\t&-inline {\n\t\twidth: 220px;\n\t}\n\tdirection: ltr;\n\t&&-rtl {\n\t\tdirection: rtl;\n\t\ttable tr td span {\n\t\t\tfloat: right;\n\t\t}\n\t}\n\t&-dropdown {\n\t\ttop: 0;\n\t\tleft: 0;\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left: 7px solid transparent;\n\t\t\tborder-right: 7px solid transparent;\n\t\t\tborder-bottom: 7px solid #ccc;\n\t\t\tborder-top: 0;\n\t\t\tborder-bottom-color: rgba(0,0,0,.2);\n\t\t\tposition: absolute;\n\t\t}\n\t\t&:after {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left: 6px solid transparent;\n\t\t\tborder-right: 6px solid transparent;\n\t\t\tborder-bottom: 6px solid #fff;\n\t\t\tborder-top: 0;\n\t\t\tposition: absolute;\n\t\t}\n\t\t&.datepicker-orient-left:before { left: 6px; }\n\t\t&.datepicker-orient-left:after { left: 7px; }\n\t\t&.datepicker-orient-right:before { right: 6px; }\n\t\t&.datepicker-orient-right:after { right: 7px; }\n\t\t&.datepicker-orient-top:before { top: -7px; }\n\t\t&.datepicker-orient-top:after { top: -6px; }\n\t\t&.datepicker-orient-bottom:before {\n\t\t\tbottom: -7px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top: 7px solid #999;\n\t\t}\n\t\t&.datepicker-orient-bottom:after {\n\t\t\tbottom: -6px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top: 6px solid #fff;\n\t\t}\n\t}\n\t> div {\n\t\tdisplay: none;\n\t}\n\t&.days .datepicker-days,\n\t&.months .datepicker-months,\n\t&.years .datepicker-years {\n\t\tdisplay: block;\n\t}\n\ttable {\n\t\tmargin: 0;\n\t\t-webkit-touch-callout: none;\n\t\t-webkit-user-select: none;\n\t\t-khtml-user-select: none;\n\t\t-moz-user-select: none;\n\t\t-ms-user-select: none;\n\t\tuser-select: none;\n\t\ttr {\n\t\t\ttd, th {\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\tborder-radius: 4px;\n\n\t\t\t\tborder: none;\n\t\t\t}\n\t\t}\n\t}\n\t// Inline display inside a table presents some problems with\n\t// border and background colors.\n\t.table-striped & table tr {\n\t\ttd, th {\n\t\t\tbackground-color:transparent;\n\t\t}\n\t}\n\ttable tr td {\n\t\t&.day:hover, &.day.focused {\n\t\t\tbackground: @gray-lighter;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&.old,\n\t\t&.new {\n\t\t\tcolor: @btn-link-disabled-color;\n\t\t}\n\t\t&.disabled,\n\t\t&.disabled:hover {\n\t\t\tbackground: none;\n\t\t\tcolor: @btn-link-disabled-color;\n\t\t\tcursor: default;\n\t\t}\n\t\t&.today,\n\t\t&.today:hover,\n\t\t&.today.disabled,\n\t\t&.today.disabled:hover {\n\t\t\t@today-bg: lighten(orange, 30%);\n\t\t\t.button-variant(#000, @today-bg, darken(@today-bg, 20%));\n\t\t}\n\t\t&.today:hover:hover { // Thank bootstrap 2.0 for this selector...\n\t\t\t// TODO: Bump min BS to 2.1, use @textColor in buttonBackground above\n\t\t\tcolor: #000;\n\t\t}\n\t\t&.today.active:hover {\n\t\t\tcolor: #fff;\n\t\t}\n\t\t&.range,\n\t\t&.range:hover,\n\t\t&.range.disabled,\n\t\t&.range.disabled:hover {\n\t\t\tbackground:@gray-lighter;\n\t\t\tborder-radius: 0;\n\t\t}\n\t\t&.range.today,\n\t\t&.range.today:hover,\n\t\t&.range.today.disabled,\n\t\t&.range.today.disabled:hover {\n\t\t\t@today-bg: mix(orange, @gray-lighter, 50%);\n\t\t\t.button-variant(#000, @today-bg, darken(@today-bg, 20%));\n\t\t\tborder-radius: 0;\n\t\t}\n\t\t&.selected,\n\t\t&.selected:hover,\n\t\t&.selected.disabled,\n\t\t&.selected.disabled:hover {\n\t\t\t.button-variant(#fff, @gray-light, @gray);\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\t&.active,\n\t\t&.active:hover,\n\t\t&.active.disabled,\n\t\t&.active.disabled:hover {\n\t\t\t.button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border);\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\tspan {\n\t\t\tdisplay: block;\n\t\t\twidth: 23%;\n\t\t\theight: 54px;\n\t\t\tline-height: 54px;\n\t\t\tfloat: left;\n\t\t\tmargin: 1%;\n\t\t\tcursor: pointer;\n\t\t\tborder-radius: 4px;\n\t\t\t&:hover {\n\t\t\t\tbackground: @gray-lighter;\n\t\t\t}\n\t\t\t&.disabled,\n\t\t\t&.disabled:hover {\n\t\t\t\tbackground: none;\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t\tcursor: default;\n\t\t\t}\n\t\t\t&.active,\n\t\t\t&.active:hover,\n\t\t\t&.active.disabled,\n\t\t\t&.active.disabled:hover {\n\t\t\t\t.button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border);\n\t\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t\t}\n\t\t\t&.old,\n\t\t\t&.new {\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t}\n\t\t}\n\t}\n\n\t.datepicker-switch {\n\t\twidth: 145px;\n\t}\n\n\tthead tr:first-child th,\n\ttfoot tr th {\n\t\tcursor: pointer;\n\t\t&:hover {\n\t\t\tbackground: @gray-lighter;\n\t\t}\n\t}\n\n\t// Basic styling for calendar-week cells\n\t.cw {\n\t\tfont-size: 10px;\n\t\twidth: 12px;\n\t\tpadding: 0 2px 0 5px;\n\t\tvertical-align: middle;\n\t}\n\tthead tr:first-child .cw {\n\t\tcursor: default;\n\t\tbackground-color: transparent;\n\t}\n}\n.input-group.date .input-group-addon {\n\tcursor: pointer;\n}\n.input-daterange {\n\twidth: 100%;\n\tinput {\n\t\ttext-align:center;\n\t}\n\tinput:first-child {\n\t\tborder-radius: 3px 0 0 3px;\n\t}\n\tinput:last-child {\n\t\tborder-radius: 0 3px 3px 0;\n\t}\n\t.input-group-addon {\n\t\twidth: auto;\n\t\tmin-width: 16px;\n\t\tpadding: 4px 5px;\n\t\tfont-weight: normal;\n\t\tline-height: @line-height-base;\n\t\ttext-align: center;\n\t\ttext-shadow: 0 1px 0 #fff;\n\t\tvertical-align: middle;\n\t\tbackground-color: @input-group-addon-bg;\n\t\tborder: solid @input-group-addon-border-color;\n\t\tborder-width: 1px 0;\n\t\tmargin-left:-5px;\n\t\tmargin-right:-5px;\n\t}\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","@import \"variables\";\n\n// Mixins\n.cursor-disabled() {\n cursor: not-allowed;\n}\n\n// Rules\n.bootstrap-select {\n width: 220px \\0; /*IE9 and below*/\n\n // The selectpicker button\n > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n }\n\n // Error display\n .has-error & .dropdown-toggle,\n .error & .dropdown-toggle {\n border-color: @color-red-error;\n }\n\n &.fit-width {\n width: auto !important;\n }\n\n &:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: @width-default;\n }\n\n .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n }\n}\n\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n\n &:not([class*=\"col-\"]) {\n width: 100%;\n }\n\n &.input-group-btn {\n z-index: auto;\n }\n}\n\n// The selectpicker components\n.bootstrap-select.btn-group {\n &:not(.input-group-btn),\n &[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n }\n\n // Forces the pull to the right, if necessary\n &,\n &[class*=\"col-\"],\n .row &[class*=\"col-\"] {\n &.dropdown-menu-right {\n float: right;\n }\n }\n\n .form-inline &,\n .form-horizontal &,\n .form-group & {\n margin-bottom: 0;\n }\n\n .form-group-lg &.form-control,\n .form-group-sm &.form-control {\n padding: 0;\n }\n\n // Set the width of the live search (and any other form control within an inline form)\n // see https://github.com/silviomoreto/bootstrap-select/issues/685\n .form-inline & .form-control {\n width: 100%;\n }\n\n &.disabled,\n > .disabled {\n .cursor-disabled();\n\n &:focus {\n outline: none !important;\n }\n }\n\n // The selectpicker button\n .dropdown-toggle {\n .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n }\n\n .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n }\n }\n\n &[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n }\n\n // The selectpicker dropdown\n .dropdown-menu {\n min-width: 100%;\n z-index: @zindex-select-dropdown;\n box-sizing: border-box;\n\n &.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n }\n\n li {\n position: relative;\n\n &.active small {\n color: #fff;\n }\n\n &.disabled a {\n .cursor-disabled();\n }\n\n a {\n cursor: pointer;\n\n &.opt {\n position: relative;\n padding-left: 2.25em;\n }\n\n span.check-mark {\n display: none;\n }\n\n span.text {\n display: inline-block;\n }\n }\n\n small {\n padding-left: 0.5em;\n }\n }\n\n .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: rgb(245, 245, 245);\n border: 1px solid rgb(227, 227, 227);\n box-shadow: inset 0 1px 1px fade(rgb(0, 0, 0), 5%);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n }\n }\n\n .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n }\n\n &.fit-width .dropdown-toggle {\n .filter-option {\n position: static;\n }\n\n .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n }\n }\n\n &.show-tick .dropdown-menu li {\n &.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n }\n\n a span.text {\n margin-right: 34px;\n }\n }\n}\n\n.bootstrap-select.show-menu-arrow {\n &.open > .dropdown-toggle {\n z-index: (@zindex-select-dropdown + 1);\n }\n\n .dropdown-toggle {\n &:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid @color-grey-arrow;\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n }\n\n &:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n }\n }\n\n &.dropup .dropdown-toggle {\n &:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid @color-grey-arrow;\n border-bottom: 0;\n }\n\n &:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n }\n }\n\n &.pull-right .dropdown-toggle {\n &:before {\n right: 12px;\n left: auto;\n }\n\n &:after {\n right: 13px;\n left: auto;\n }\n }\n\n &.open > .dropdown-toggle {\n &:before,\n &:after {\n display: block;\n }\n }\n}\n\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n\n.bs-actionsbox {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 50%;\n }\n}\n\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 100%;\n }\n}\n\n.bs-searchbox {\n & + .bs-actionsbox {\n padding: 0 8px 4px;\n }\n\n & .form-control {\n margin-bottom: 0;\n width: 100%;\n }\n}\n\nselect.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\n\nselect.mobile-device {\n position: absolute !important;\n top: 0;\n left: 0;\n display: block !important;\n width: 100%;\n height: 100% !important;\n opacity: 0;\n}\n","/*-- Chart --*/\n.c3 svg {\n font: 10px sans-serif; }\n\n.c3 path, .c3 line {\n fill: none;\n stroke: #000; }\n\n.c3 text {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none; }\n\n.c3-legend-item-tile, .c3-xgrid-focus, .c3-ygrid, .c3-event-rect, .c3-bars path {\n shape-rendering: crispEdges; }\n\n.c3-chart-arc path {\n stroke: #fff; }\n\n.c3-chart-arc text {\n fill: #fff;\n font-size: 13px; }\n\n/*-- Axis --*/\n/*-- Grid --*/\n.c3-grid line {\n stroke: #aaa; }\n\n.c3-grid text {\n fill: #aaa; }\n\n.c3-xgrid, .c3-ygrid {\n stroke-dasharray: 3 3; }\n\n/*-- Text on Chart --*/\n.c3-text.c3-empty {\n fill: #808080;\n font-size: 2em; }\n\n/*-- Line --*/\n.c3-line {\n stroke-width: 1px; }\n\n/*-- Point --*/\n.c3-circle._expanded_ {\n stroke-width: 1px;\n stroke: white; }\n\n.c3-selected-circle {\n fill: white;\n stroke-width: 2px; }\n\n/*-- Bar --*/\n.c3-bar {\n stroke-width: 0; }\n\n.c3-bar._expanded_ {\n fill-opacity: 0.75; }\n\n/*-- Focus --*/\n.c3-target.c3-focused {\n opacity: 1; }\n\n.c3-target.c3-focused path.c3-line, .c3-target.c3-focused path.c3-step {\n stroke-width: 2px; }\n\n.c3-target.c3-defocused {\n opacity: 0.3 !important; }\n\n/*-- Region --*/\n.c3-region {\n fill: steelblue;\n fill-opacity: 0.1; }\n\n/*-- Brush --*/\n.c3-brush .extent {\n fill-opacity: 0.1; }\n\n/*-- Select - Drag --*/\n/*-- Legend --*/\n.c3-legend-item {\n font-size: 12px; }\n\n.c3-legend-item-hidden {\n opacity: 0.15; }\n\n.c3-legend-background {\n opacity: 0.75;\n fill: white;\n stroke: lightgray;\n stroke-width: 1; }\n\n/*-- Tooltip --*/\n.c3-tooltip-container {\n z-index: 10; }\n\n.c3-tooltip {\n border-collapse: collapse;\n border-spacing: 0;\n background-color: #fff;\n empty-cells: show;\n -webkit-box-shadow: 7px 7px 12px -9px #777777;\n -moz-box-shadow: 7px 7px 12px -9px #777777;\n box-shadow: 7px 7px 12px -9px #777777;\n opacity: 0.9; }\n\n.c3-tooltip tr {\n border: 1px solid #CCC; }\n\n.c3-tooltip th {\n background-color: #aaa;\n font-size: 14px;\n padding: 2px 5px;\n text-align: left;\n color: #FFF; }\n\n.c3-tooltip td {\n font-size: 13px;\n padding: 3px 6px;\n background-color: #fff;\n border-left: 1px dotted #999; }\n\n.c3-tooltip td > span {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin-right: 6px; }\n\n.c3-tooltip td.value {\n text-align: right; }\n\n/*-- Area --*/\n.c3-area {\n stroke-width: 0;\n opacity: 0.2; }\n\n/*-- Arc --*/\n.c3-chart-arcs-title {\n dominant-baseline: middle;\n font-size: 1.3em; }\n\n.c3-chart-arcs .c3-chart-arcs-background {\n fill: #e0e0e0;\n stroke: none; }\n\n.c3-chart-arcs .c3-chart-arcs-gauge-unit {\n fill: #000;\n font-size: 16px; }\n\n.c3-chart-arcs .c3-chart-arcs-gauge-max {\n fill: #777; }\n\n.c3-chart-arcs .c3-chart-arcs-gauge-min {\n fill: #777; }\n\n.c3-chart-arc .c3-gauge-value {\n fill: #000;\n /* font-size: 28px !important;*/ }\n","//\n// Blank Slate\n// --------------------------------------------------\n\n.blank-slate-pf{\n @media (min-width: @screen-sm-min) {\n padding: @jumbotron-padding*2 @jumbotron-padding*2;\n }\n @media (min-width: @screen-md-min) {\n padding: @jumbotron-padding*3 @jumbotron-padding*4;\n }\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n margin-bottom: 20px;\n padding: @jumbotron-padding;\n text-align: center;\n .blank-slate-pf-icon{\n color: @gray-light;\n font-size: @font-size-h1 * 2.4;\n line-height: @font-size-h1 * 2.4;\n }\n .blank-slate-pf-main-action{\n margin-top: @line-height-computed;\n }\n .blank-slate-pf-secondary-action{\n margin-top: @line-height-computed;\n }\n}","//\n// Bootstrap-Combobox\n// --------------------------------------------------\n\n.combobox-container {\n &.combobox-selected .glyphicon-remove {\n display: inline-block;\n }\n .caret {\n margin-left: 0;\n }\n .combobox::-ms-clear {\n display: none;\n }\n .dropdown-menu {\n margin-top: -1px;\n width: 100%;\n }\n .glyphicon-remove {\n display: none;\n top: auto;\n width: 12px;\n &:before {\n content: \"\\e60b\";\n font-family: @icon-font-name-pf;\n }\n }\n .input-group-addon {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);\n position: relative; // IE8\n &:active {\n .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));\n }\n }\n}","//\n// Variables\n// --------------------------------------------------\n// Bootstrap overrides and PatternFly-specific variables\n\n// PatternFly-specific\n// -------------------\n@btn-default-bg-img-start: #fafafa;\n@btn-default-bg-img-stop: #ededed;\n@btn-xs-font-weight: 400;\n@card-pf-accented-border-top-color: #39a5dc;\n@card-pf-bg-color: #fff;\n@card-pf-border-color: #d1d1d1;\n@card-pf-border-top-color: transparent;\n@card-pf-container-bg-color: #f5f5f5;\n@card-pf-footer-bg-color: #fafafa;\n@dropdown-divider-margin: 4px 1px;\n@dropdown-link-active-border-color: #0076b7;\n@dropdown-link-hover-border-color: #b3d3e7;\n@dropdown-link-focus-color: #fff;\n@font-family-monospace: Menlo, Monaco, Consolas, monospace;\n@fa-font-path: \"../../components/font-awesome/fonts\";\n@font-path: \"../fonts\";\n@gray-light-pf: #aaa;\n@gray-pf: #4d5258;\n@icon-font-name-fa: \"FontAwesome\";\n@icon-font-name-pf: \"PatternFlyIcons-webfont\";\n@icon-prefix: pficon;\n@img-bg-login: \"bg-login.jpg\";\n@img-path: \"../img\";\n@img-spinner: \"spinner.gif\";\n@img-spinner-lg: \"spinner-lg.gif\";\n@img-spinner-sm: \"spinner-sm.gif\";\n@img-spinner-xs: \"spinner-xs.gif\";\n@input-border-disabled: #d4d4d4;\n@input-border-hover: #7BB2DD;\n@list-group-top-border: #e9e8e8;\n@login-bg-color: #080808;\n@login-container-bg-color: #181818;\n@login-container-bg-color-rgba: rgba(255, 255, 255, 0.055);\n@modal-title-padding-horizontal: 18px;\n@modal-title-padding-vertical: 10px;\n@navbar-pf-active-color: #f1f1f1;\n@navbar-pf-bg-color: #030303; //#393F45\n@navbar-pf-border-color: #199dde;\n@navbar-pf-color: #cfcfcf;\n@navbar-pf-icon-bar-bg-color: #fff;\n@navbar-pf-navbar-navbar-brand-min-width: 270px;\n@navbar-pf-navbar-navbar-brand-padding: 8px 0 7px;\n@navbar-pf-navbar-navbar-persistent-bg-color: #f6f6f6;\n@navbar-pf-navbar-navbar-persistent-border-color: #cecdcd;\n@pagination-padding-small-vertical: 0;\n@panel-default-border-color: #bebdbd;\n@sidebar-pf-bg: #fafafa;\n@sidebar-pf-border-color: #d0d0d0;\n@table-border-hover: #a7cadf;\n@table-cell-padding-bottom: 3px;\n@table-cell-padding-top: 2px;\n// Reference variables declared in block above\n@img-path-alt: @img-path;\n@navbar-pf-navbar-header-border-color: lighten(@navbar-pf-bg-color, 15%);\n@navbar-pf-navbar-nav-active-active-bg-color: lighten(@navbar-pf-bg-color, 8%);\n@navbar-pf-navbar-nav-active-active-open-bg-color: lighten(@navbar-pf-bg-color, 11%);\n@navbar-pf-navbar-nav-active-bg-color: lighten(@navbar-pf-bg-color, 12.5%);\n@navbar-pf-navbar-primary-bg-color-start: lighten(@navbar-pf-bg-color, 10%); // #474C50;\n@navbar-pf-navbar-primary-bg-color-stop: @navbar-pf-bg-color; // #383F43;\n@navbar-pf-navbar-utility-border-color: lighten(@navbar-pf-bg-color, 15.5%);\n@navbar-pf-navbar-utility-color: @navbar-pf-color;\n@navbar-pf-navbar-utility-hover-bg-color: lighten(@navbar-pf-bg-color, 12.5%);\n@nav-tabs-color: @gray-pf;\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-context-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 8.5%);\n@navbar-pf-navbar-primary-context-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 11%);\n@navbar-pf-navbar-primary-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 10%);\n@navbar-pf-navbar-primary-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 10%);\n@navbar-pf-navbar-primary-hover-border-color: lighten(@navbar-pf-navbar-header-border-color, 20%);\n@navbar-pf-navbar-primary-context-border-color: lighten(@navbar-pf-navbar-header-border-color, 8%);\n@navbar-pf-navbar-primary-context-border-top-color: lighten(@navbar-pf-navbar-header-border-color, 7%);\n@navbar-pf-navbar-utility-hover-border-color: lighten(@navbar-pf-navbar-utility-border-color, 5%);\n@navbar-pf-navbar-utility-open-bg-color: lighten(@navbar-pf-navbar-utility-hover-bg-color, 7.5%);\n@navbar-pf-navbar-utility-open-border-color: lighten(@navbar-pf-navbar-utility-hover-border-color, 5%);\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-active-bg-color-start: lighten(@navbar-pf-navbar-primary-hover-bg-color-start, 5%);\n@navbar-pf-navbar-primary-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-hover-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-active-border-color: lighten(@navbar-pf-navbar-primary-hover-border-color, 5%);\n@navbar-pf-navbar-primary-context-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-context-bg-color-start, 5%);\n@navbar-pf-navbar-primary-context-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-context-hover-border-color: lighten(@navbar-pf-navbar-primary-context-border-color, 5%);\n@navbar-pf-navbar-primary-context-hover-border-top-color: lighten(@navbar-pf-navbar-primary-context-border-top-color, 6%);\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-context-active-bg-color-start: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-start, 5%);\n@navbar-pf-navbar-primary-context-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-context-active-border-color: lighten(@navbar-pf-navbar-primary-context-hover-border-color, 5%);\n@navbar-pf-navbar-primary-context-active-border-top-color: lighten(@navbar-pf-navbar-primary-context-hover-border-top-color, 6%);\n// References variable declared in block above\n@navbar-pf-navbar-primary-context-active-border-right-color: @navbar-pf-navbar-primary-context-active-border-color;\n\n\n// Bootstrap overrides\n// -------------------\n@alert-info-border: #ccc;\n@alert-link-font-weight: 500;\n@alert-padding: 7px;\n@body-bg: #ffffff;\n@border-radius-base: 1px;\n@brand-danger: #cc0000;\n@brand-info: #006e9c;\n@brand-primary: #00a8e1;\n@brand-success: #3f9c35;\n@brand-warning: #ec7a08;\n@breadcrumb-bg: transparent;\n@breadcrumb-separator: \"\\f105\";\n@btn-danger-bg: #a30000;\n@btn-danger-border: #781919;\n@btn-default-border: #b7b7b7;\n@btn-font-weight: 600;\n@btn-primary-bg: #0085cf;\n@btn-primary-border: #006e9c;\n@caret-width-base: 0;\n@dropdown-border: #b6b6b6;\n@dropdown-divider-bg: #e5e5e5;\n@dropdown-link-active-color: #fff;\n@dropdown-link-hover-bg: #d4edfa;\n@font-family-base: \"Open Sans\", Helvetica, Arial, sans-serif;\n@font-size-base: 12px;\n@gray-dark: lighten(#000, 20%); // #333\n@gray-darker: lighten(#000, 13.5%); // #222\n@gray-light: lighten(#000, 60%); // #999\n@gray-lighter: lighten(#000, 93.5%); // #eee\n@grid-gutter-width: 40px;\n@icon-font-path: \"../../components/bootstrap/dist/fonts/\";\n@input-bg-disabled: #F8F8F8;\n@input-border: #BABABA;\n@line-height-base: 1.66666667; // 20/12\n@link-color: #0099d3;\n@list-group-border: #f2f2f2;\n@list-group-border-radius: 0;\n@list-group-hover-bg: #d4edfa;\n@link-hover-color: #00618a;\n@nav-tabs-border-color: #e9e8e8;\n@nav-tabs-link-hover-border-color: transparent;\n@padding-large-horizontal: 10px;\n@padding-base-horizontal: 6px;\n@padding-base-vertical: 2px;\n@padding-large-vertical: 6px;\n@pager-border-radius: 0;\n@pager-disabled-color: #969696;\n@pagination-bg: #f5f5f5;\n@pagination-border: #bbbbbb;\n@pagination-hover-bg: #ededed;\n@panel-inner-border: #cecdcd;\n@popover-arrow-color: #fff;\n@popover-arrow-outer-color: #bbb;\n@popover-border-color: #bbb;\n@popover-max-width: 220px;\n@popover-title-bg: #f5f5f5;\n@pre-bg: #fcfcfc;\n@progress-bg: #ededed;\n@table-bg-accent: #f5f5f5;\n@table-bg-hover: #d5ecf9;\n@table-border-color: #d1d1d1;\n@table-cell-padding: 10px;\n@tooltip-arrow-width: 8px;\n@tooltip-bg: #434343;\n@tooltip-max-width: 220px;\n// Reference variables declared in block above\n@alert-danger-bg: @body-bg;\n@alert-danger-border: @brand-danger;\n@alert-danger-text: @gray-dark;\n@alert-info-bg: @body-bg;\n@alert-info-text: @gray-dark;\n@alert-success-bg: @body-bg;\n@alert-success-border: @brand-success;\n@alert-success-text: @gray-dark;\n@alert-warning-bg: @body-bg;\n@alert-warning-border: @brand-warning;\n@alert-warning-text: @gray-dark;\n@badge-border-radius: @border-radius-base;\n@border-radius-large: @border-radius-base;\n@border-radius-small: @border-radius-base;\n@breadcrumb-active-color: @gray-pf;\n@breadcrumb-color: @gray-pf;\n@btn-default-bg: @gray-lighter;\n@btn-default-color: @gray-pf;\n@caret-width-large: @caret-width-base;\n@dropdown-fallback-border: @dropdown-border;\n@dropdown-link-active-bg: @link-color;\n@dropdown-link-hover-color: @gray-pf;\n@font-size-h1: ceil(@font-size-base * 2); // ~24px\n@font-size-h2: ceil(@font-size-base * 1.8333); // ~22px\n@font-size-h3: ceil(@font-size-base * 1.3333); // ~16px\n@font-size-h5: ceil(@font-size-base * 1.0833); // ~13px\n@font-size-large: ceil(@font-size-base * 1.1666); // ~14px\n@font-size-small: ceil(@font-size-base * .9166); // ~11px\n@input-color: @gray-dark;\n@nav-tabs-active-link-hover-color: @link-color;\n@nav-tabs-justified-link-border-color: @nav-tabs-border-color;\n@padding-small-horizontal: @padding-base-horizontal;\n@padding-small-vertical: @padding-base-vertical;\n@panel-danger-border: @brand-danger;\n@panel-danger-heading-bg: @brand-danger;\n@panel-info-border: @brand-info;\n@panel-info-heading-bg: @brand-info;\n@panel-primary-text: @body-bg;\n@panel-success-border: @brand-success;\n@panel-success-heading-bg: @brand-success;\n@panel-warning-border: @brand-warning;\n@panel-warning-heading-bg: @brand-warning;\n@state-warning-text: @brand-warning;\n// Reference variable declared in block above\n@panel-danger-text: @panel-primary-text;\n@panel-info-text: @panel-primary-text;\n@panel-success-text: @panel-primary-text;\n@panel-warning-text: @panel-primary-text;\n\n// PatternFly-specific variables based on Bootstrap overides\n// ---------------------------------------------------------\n@btn-danger-bg-img-start: @brand-danger;\n@btn-danger-bg-img-stop: @btn-danger-bg;\n@btn-primary-bg-img-start: @brand-primary;\n@btn-primary-bg-img-stop: @btn-primary-bg;\n@dropdown-link-focus-bg: @link-color;\n@line-height-computed: floor((@font-size-base * @line-height-base));\n@progress-sm: @line-height-computed - 6;\n@progress-xs: @line-height-computed - 14;\n@syntax-1: @btn-danger-bg;\n@syntax-2: @gray-dark;\n@syntax-3: @brand-success;\n@syntax-4: @brand-info;\n@tooltip-font-size: @font-size-base;\n","//\n// Mixins\n// --------------------------------------------------\n// Bootstrap overrides and PatternFly-specific mixins\n\n// Bootstrap overrides\n// -------------------\n\n// Button variants\n.button-variant(@color; @background; @background-image-start; @background-image-stop; @border) {\n background-color: @background;\n #gradient > .vertical(@background-image-start, @background-image-stop);\n border-color: @border;\n color: @color;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-color: @background;\n background-image: none;\n border-color: @border;\n color: @color;\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n &:hover,\n &:focus,\n &.focus {\n background-color: darken(@background, 5%);\n border-color: darken(@border, 7%);\n }\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border\n }\n }\n}\n\n// Form control outline\n.form-control-outline(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0 !important;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Gradients\n#gradient {\n .striped(@color: rgba(0,0,0,.15); @angle: -45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);\n background-image: linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);\n }\n}\n\n// Horizontal dividers\n.nav-divider(@color: #e5e5e5, @margin: 4px 1px) {\n background-color: @color;\n height: 1px;\n margin: @margin;\n overflow: hidden;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &:-moz-placeholder { color: @color; font-style: italic; } // Firefox 4-18\n &::-moz-placeholder { color: @color; font-style: italic;} // Firefox 19+\n &:-ms-input-placeholder { color: @color; font-style: italic; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; font-style: italic; } // Safari and Chrome\n}\n\n// PatternFly-specific\n// -------------------\n\n.tab-indicator(@background: @gray-light-pf, @left: 15px, @right: 15px) {\n &:before {\n background: @background;\n bottom: -1px;\n content: '';\n display: block;\n height: 2px;\n left: @left;\n position: absolute;\n right: @right;\n }\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","//\n// Bootstrap-Datepicker\n// --------------------------------------------------\n\n.datepicker {\n border-radius: @border-radius-base;\n .datepicker-switch, tfoot .today {\n font-size: @font-size-large;\n font-weight: 500;\n }\n .next, .prev {\n font-weight: 500;\n }\n table tr {\n td, th {\n border-radius: @border-radius-base;\n }\n td {\n &.active.active,\n &.active.active:hover,\n &.active.active.disabled,\n &.active.active.disabled:hover {\n background: @dropdown-link-active-bg !important;\n color: #fff !important;\n text-shadow: none;\n }\n &.day:hover, &.day.focused {\n background: @dropdown-link-hover-bg;\n }\n &.selected,\n &.selected:hover,\n &.selected.disabled,\n &.selected.disabled:hover {\n text-shadow: none;\n }\n span {\n border-radius: @border-radius-base;\n &.active.active,\n &.active.active:hover,\n &.active.active.disabled,\n &.active.active.disabled:hover {\n background: @dropdown-link-active-bg;\n text-shadow: none;\n }\n &:hover {\n background: @dropdown-link-hover-bg;\n }\n }\n }\n }\n thead tr:first-child th, tfoot tr th {\n &:hover {\n background: @dropdown-link-hover-bg;\n }\n }\n}\n\n.input-daterange {\n input:first-child {\n border-radius: @border-radius-base 0 0 @border-radius-base;\n }\n input:last-child {\n border-radius: 0 @border-radius-base @border-radius-base 0;\n }\n .input-group-addon {\n background-color: @input-group-addon-bg;\n border-color: @input-group-addon-border-color;\n line-height: @line-height-base;\n padding: @padding-base-vertical @padding-base-horizontal;\n }\n}","//\n// Bootstrap-select\n// --------------------------------------------------\n\n.bootstrap-select.btn-group {\n &.form-control {\n margin-bottom: 0;\n }\n .btn {\n &:hover {\n border-color: @input-border-hover;\n }\n .caret {\n margin-top: -4px;\n }\n .form-control-outline();\n .has-error & {\n border-color: @state-danger-text;\n &:focus {\n border-color: darken(@state-danger-text, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-danger-text, 20%);\n .box-shadow(@shadow);\n }\n }\n .has-success & {\n border-color: @state-success-text;\n &:focus {\n border-color: darken(@state-success-text, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-success-text, 20%);\n .box-shadow(@shadow);\n }\n }\n .has-warning & {\n border-color: @state-warning-text;\n &:focus {\n border-color: darken(@state-warning-text, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-warning-text, 20%);\n .box-shadow(@shadow);\n }\n }\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n }\n .dropdown-menu { // Also see navbar.less\n > .active > a {\n &, &:active {\n background-color: @dropdown-link-hover-bg !important;\n border-color: @dropdown-link-hover-border-color !important;\n color: @gray-dark !important;\n small {\n color: @gray-light !important;\n }\n }\n }\n > .disabled > a {\n color: @gray-light !important;\n }\n > .selected > a {\n background-color: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n color: #fff !important;\n small {\n color: #70c8e7 !important;\n color:rgba(225, 255, 255, 0.5) !important;\n }\n }\n .divider {\n background: @dropdown-divider-bg !important;\n margin: @dropdown-divider-margin !important;\n }\n dt {\n color: #969696;\n font-weight:normal;\n padding: 1px 10px;\n }\n li {\n & > a.opt {\n padding: 1px 10px;\n }\n & a {\n &:active small {\n color: #70c8e7 !important;\n color:rgba(225, 255, 255, 0.5) !important;\n }\n &:hover, &:focus {\n small {\n color: @gray-light;\n }\n }\n }\n &:not(.disabled) {\n a:hover, a:focus {\n small {\n color: @gray-light;\n }\n }\n }\n }\n }\n}","//\n// Bootstrap Tree View\n// --------------------------------------------------\n\n.treeview {\n .list-group {\n border-top: 0;\n }\n .list-group-item {\n background: transparent;\n border-bottom: 1px solid transparent !important;\n border-top: 1px solid transparent !important;\n margin-bottom: 0;\n padding: 0 10px;\n &:hover {\n background: @dropdown-link-hover-bg !important;\n border-color: @dropdown-link-hover-border-color !important;\n }\n &.node-selected {\n background: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n color: @dropdown-link-active-color !important;\n }\n }\n span.icon {\n display: inline-block;\n font-size: @font-size-base + 1;\n min-width: 10px;\n text-align: center;\n > [class*=\"fa-angle\"] {\n font-size: @font-size-base + 3;\n }\n }\n span.indent {\n margin-right: 5px;\n }\n}","//\n// Cards\n// --------------------------------------------------\n\n.container-cards-pf {\n margin-top: @grid-gutter-width/2;\n}\n\n.card-pf {\n background: @card-pf-bg-color;\n border-top: 2px solid @card-pf-border-top-color;\n .box-shadow(0 1px 1px rgba(0,0,0,.175));\n padding: 0 @grid-gutter-width/2;\n margin: 0 (-(@grid-gutter-width/4)) @grid-gutter-width/2;\n &.card-pf-accented {\n border-top-color: @card-pf-accented-border-top-color;\n }\n}\n\n.card-pf-body {\n margin: @grid-gutter-width/2 0;\n padding: 0 0 @grid-gutter-width/2;\n > *:last-child {\n margin-bottom: 0;\n }\n}\n\n.card-pf-footer {\n background-color: @card-pf-footer-bg-color;\n border-top: 1px solid @card-pf-border-color;\n margin: 0 (-(@grid-gutter-width/2)) !important;\n padding: @grid-gutter-width/2 @grid-gutter-width/2 @grid-gutter-width/4;\n a > {\n .fa, .pficon {\n margin-right: 5px;\n }\n }\n}\n\n.card-pf-heading {\n border-bottom: 1px solid @card-pf-border-color;\n margin: 0 (-(@grid-gutter-width/2)) @grid-gutter-width/2;\n padding: 0 @grid-gutter-width/2 0;\n}\n\n.card-pf-title {\n font-size: @font-size-h3;\n font-weight: 300;\n margin: @grid-gutter-width/2 0;\n padding: 0;\n}\n\n.cards-pf {\n background: @card-pf-container-bg-color;\n}\n\n.row-cards-pf {\n margin-left: -(@grid-gutter-width/4);\n margin-right: -(@grid-gutter-width/4);\n}\n","//\n// Charts\n// --------------------------------------------------\n\n.c3 {\n path {\n stroke: @table-border-color;\n }\n svg {\n font-family: @font-family-base;\n }\n}\n\n.c3-axis-x .tick line {\n stroke: @table-border-color;\n}\n\n.c3-axis-y .tick line {\n display: none;\n}\n\n.c3-chart-arc path {\n stroke: #fff;\n}\n\n.c3-grid line { \n stroke: @table-border-color;\n}\n\n.c3-line {\n stroke-width: 2px;\n}\n\n.c3-tooltip {\n background: @tooltip-bg;\n .box-shadow(none);\n .opacity(@tooltip-opacity);\n\n td {\n background: transparent;\n border: 0;\n color: #fff;\n font-size: @font-size-base;\n padding: 5px 10px;\n }\n\n th {\n background: transparent;\n font-size: @font-size-base;\n padding: 5px 10px 0;\n }\n\n tr {\n border: 0;\n + tr > td {\n padding-top: 0;\n }\n }\n}\n\n.c3-tooltip-sparkline {\n background: @tooltip-bg;\n color: #fff;\n .opacity(@tooltip-opacity);\n padding: 2px 6px;\n}\n\n.c3-xgrid, .c3-ygrid {\n stroke-dasharray: 0 0;\n}\n\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n text-shadow: none;\n .opacity(.6);\n &:hover,\n &:focus {\n .opacity(.9);\n }\n}\n","//\n// Datatables\n// --------------------------------------------------\n\n.ColVis_Button {\n &:active {\n &:focus {\n outline: none;\n }\n }\n}\n\n.ColVis_catcher {\n position: absolute;\n z-index: 999;\n}\n\n.ColVis_collection {\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n list-style: none;\n margin: -1px 0 0 0;\n padding: 5px 10px;\n width: 150px;\n z-index: @zindex-dropdown;\n label {\n font-weight: normal;\n margin-bottom: 5px;\n margin-top: 5px;\n padding-left: 20px;\n }\n}\n\n.ColVis_collectionBackground {\n background-color: #fff;\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 998;\n}\n\n.dataTables_header {\n background-color: #f6f6f6;\n border: 1px solid @table-border-color;\n border-bottom: none;\n padding: 5px;\n position: relative;\n text-align: center;\n .btn {\n .box-shadow(none);\n }\n .ColVis {\n position: absolute;\n right: 5px;\n text-align: left;\n top: 5px;\n + .dataTables_info {\n padding-right: 30px;\n }\n }\n .dataTables_filter {\n position: absolute;\n input {\n border: 1px solid #bbb;\n height: 24px;\n @media (max-width: @screen-xs-max) {\n width: 100px;\n }\n }\n }\n .dataTables_info {\n padding: 2px 0;\n @media (max-width: @screen-xs) {\n text-align: right;\n }\n b {\n font-weight: bold;\n }\n }\n}\n\n.dataTables_footer {\n background-color: #fff;\n border: 1px solid @table-border-color;\n border-top: none;\n overflow: hidden;\n}\n\n.dataTables_paginate {\n background: #fafafa;\n float: right;\n margin: 0;\n .pagination {\n float: left;\n margin: 0;\n > li {\n > span {\n border-color: #ffffff #e1e1e1 #f4f4f4;\n border-width: 0 1px;\n font-size: @font-size-base + 4;\n font-weight: normal;\n padding: 0;\n text-align: center;\n width: 31px;\n &:hover,\n &:focus {\n .reset-filter();\n }\n }\n &.last > span {\n border-right: none;\n }\n &.disabled > span {\n background: #f5f5f5;\n border-left-color: #ececec;\n border-right-color: #ececec;\n .reset-filter();\n }\n }\n }\n .pagination-input {\n float: left;\n font-size: @font-size-base;\n line-height: 1em;\n padding: 4px 15px 0;\n text-align: right;\n .paginate_input {\n border: 1px solid #d3d3d3;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n font-size: @font-size-base;\n font-weight: 600;\n height: 19px;\n margin-right: 8px;\n padding-right: 3px;\n text-align: right;\n width: 30px;\n }\n .paginate_of {\n position: relative;\n b {\n margin-left: 3px;\n }\n }\n }\n}\n\n.dataTables_wrapper {\n margin: @line-height-computed 0;\n @media (max-width: @screen-xs-max) {\n .table-responsive {\n margin-bottom: 0;\n }\n }\n}\n\n.DTCR_clonedTable {\n background-color: rgba(255, 255, 255, 0.7);\n z-index: 202;\n}\n\n.DTCR_pointer {\n background-color: @link-color;\n width: 1px;\n z-index: 201;\n}\n\ntable.datatable {\n margin-bottom: 0;\n max-width: none !important;\n thead {\n .sorting,\n .sorting_asc,\n .sorting_desc,\n .sorting_asc_disabled,\n .sorting_desc_disabled {\n cursor: pointer;\n *cursor: hand;\n }\n .sorting_asc,\n .sorting_desc {\n border: 0;\n color: @link-color !important;\n display: block;\n position: relative;\n &:after {\n content: @fa-var-angle-down;\n font-family: @icon-font-name-fa;\n font-size: @font-size-base - 2;\n font-weight: normal;\n height: @font-size-base - 3;\n left: 7px;\n line-height: @font-size-base;\n position: relative;\n top: 2px;\n vertical-align: baseline;\n width: @font-size-base;\n }\n &:before {\n background: @link-color;\n content: '';\n height: 2px;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n }\n }\n .sorting_asc:after {\n content: @fa-var-angle-up;\n top: -3px;\n }\n }\n th:active {\n outline: none;\n }\n}","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","// Variables\n// --------------------------\n\n@fa-font-path: \"../fonts\";\n@fa-font-size-base: 14px;\n//@fa-font-path: \"//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts\"; // for referencing Bootstrap CDN font files directly\n@fa-css-prefix: fa;\n@fa-version: \"4.3.0\";\n@fa-border-color: #eee;\n@fa-inverse: #fff;\n@fa-li-width: (30em / 14);\n\n@fa-var-adjust: \"\\f042\";\n@fa-var-adn: \"\\f170\";\n@fa-var-align-center: \"\\f037\";\n@fa-var-align-justify: \"\\f039\";\n@fa-var-align-left: \"\\f036\";\n@fa-var-align-right: \"\\f038\";\n@fa-var-ambulance: \"\\f0f9\";\n@fa-var-anchor: \"\\f13d\";\n@fa-var-android: \"\\f17b\";\n@fa-var-angellist: \"\\f209\";\n@fa-var-angle-double-down: \"\\f103\";\n@fa-var-angle-double-left: \"\\f100\";\n@fa-var-angle-double-right: \"\\f101\";\n@fa-var-angle-double-up: \"\\f102\";\n@fa-var-angle-down: \"\\f107\";\n@fa-var-angle-left: \"\\f104\";\n@fa-var-angle-right: \"\\f105\";\n@fa-var-angle-up: \"\\f106\";\n@fa-var-apple: \"\\f179\";\n@fa-var-archive: \"\\f187\";\n@fa-var-area-chart: \"\\f1fe\";\n@fa-var-arrow-circle-down: \"\\f0ab\";\n@fa-var-arrow-circle-left: \"\\f0a8\";\n@fa-var-arrow-circle-o-down: \"\\f01a\";\n@fa-var-arrow-circle-o-left: \"\\f190\";\n@fa-var-arrow-circle-o-right: \"\\f18e\";\n@fa-var-arrow-circle-o-up: \"\\f01b\";\n@fa-var-arrow-circle-right: \"\\f0a9\";\n@fa-var-arrow-circle-up: \"\\f0aa\";\n@fa-var-arrow-down: \"\\f063\";\n@fa-var-arrow-left: \"\\f060\";\n@fa-var-arrow-right: \"\\f061\";\n@fa-var-arrow-up: \"\\f062\";\n@fa-var-arrows: \"\\f047\";\n@fa-var-arrows-alt: \"\\f0b2\";\n@fa-var-arrows-h: \"\\f07e\";\n@fa-var-arrows-v: \"\\f07d\";\n@fa-var-asterisk: \"\\f069\";\n@fa-var-at: \"\\f1fa\";\n@fa-var-automobile: \"\\f1b9\";\n@fa-var-backward: \"\\f04a\";\n@fa-var-ban: \"\\f05e\";\n@fa-var-bank: \"\\f19c\";\n@fa-var-bar-chart: \"\\f080\";\n@fa-var-bar-chart-o: \"\\f080\";\n@fa-var-barcode: \"\\f02a\";\n@fa-var-bars: \"\\f0c9\";\n@fa-var-bed: \"\\f236\";\n@fa-var-beer: \"\\f0fc\";\n@fa-var-behance: \"\\f1b4\";\n@fa-var-behance-square: \"\\f1b5\";\n@fa-var-bell: \"\\f0f3\";\n@fa-var-bell-o: \"\\f0a2\";\n@fa-var-bell-slash: \"\\f1f6\";\n@fa-var-bell-slash-o: \"\\f1f7\";\n@fa-var-bicycle: \"\\f206\";\n@fa-var-binoculars: \"\\f1e5\";\n@fa-var-birthday-cake: \"\\f1fd\";\n@fa-var-bitbucket: \"\\f171\";\n@fa-var-bitbucket-square: \"\\f172\";\n@fa-var-bitcoin: \"\\f15a\";\n@fa-var-bold: \"\\f032\";\n@fa-var-bolt: \"\\f0e7\";\n@fa-var-bomb: \"\\f1e2\";\n@fa-var-book: \"\\f02d\";\n@fa-var-bookmark: \"\\f02e\";\n@fa-var-bookmark-o: \"\\f097\";\n@fa-var-briefcase: \"\\f0b1\";\n@fa-var-btc: \"\\f15a\";\n@fa-var-bug: \"\\f188\";\n@fa-var-building: \"\\f1ad\";\n@fa-var-building-o: \"\\f0f7\";\n@fa-var-bullhorn: \"\\f0a1\";\n@fa-var-bullseye: \"\\f140\";\n@fa-var-bus: \"\\f207\";\n@fa-var-buysellads: \"\\f20d\";\n@fa-var-cab: \"\\f1ba\";\n@fa-var-calculator: \"\\f1ec\";\n@fa-var-calendar: \"\\f073\";\n@fa-var-calendar-o: \"\\f133\";\n@fa-var-camera: \"\\f030\";\n@fa-var-camera-retro: \"\\f083\";\n@fa-var-car: \"\\f1b9\";\n@fa-var-caret-down: \"\\f0d7\";\n@fa-var-caret-left: \"\\f0d9\";\n@fa-var-caret-right: \"\\f0da\";\n@fa-var-caret-square-o-down: \"\\f150\";\n@fa-var-caret-square-o-left: \"\\f191\";\n@fa-var-caret-square-o-right: \"\\f152\";\n@fa-var-caret-square-o-up: \"\\f151\";\n@fa-var-caret-up: \"\\f0d8\";\n@fa-var-cart-arrow-down: \"\\f218\";\n@fa-var-cart-plus: \"\\f217\";\n@fa-var-cc: \"\\f20a\";\n@fa-var-cc-amex: \"\\f1f3\";\n@fa-var-cc-discover: \"\\f1f2\";\n@fa-var-cc-mastercard: \"\\f1f1\";\n@fa-var-cc-paypal: \"\\f1f4\";\n@fa-var-cc-stripe: \"\\f1f5\";\n@fa-var-cc-visa: \"\\f1f0\";\n@fa-var-certificate: \"\\f0a3\";\n@fa-var-chain: \"\\f0c1\";\n@fa-var-chain-broken: \"\\f127\";\n@fa-var-check: \"\\f00c\";\n@fa-var-check-circle: \"\\f058\";\n@fa-var-check-circle-o: \"\\f05d\";\n@fa-var-check-square: \"\\f14a\";\n@fa-var-check-square-o: \"\\f046\";\n@fa-var-chevron-circle-down: \"\\f13a\";\n@fa-var-chevron-circle-left: \"\\f137\";\n@fa-var-chevron-circle-right: \"\\f138\";\n@fa-var-chevron-circle-up: \"\\f139\";\n@fa-var-chevron-down: \"\\f078\";\n@fa-var-chevron-left: \"\\f053\";\n@fa-var-chevron-right: \"\\f054\";\n@fa-var-chevron-up: \"\\f077\";\n@fa-var-child: \"\\f1ae\";\n@fa-var-circle: \"\\f111\";\n@fa-var-circle-o: \"\\f10c\";\n@fa-var-circle-o-notch: \"\\f1ce\";\n@fa-var-circle-thin: \"\\f1db\";\n@fa-var-clipboard: \"\\f0ea\";\n@fa-var-clock-o: \"\\f017\";\n@fa-var-close: \"\\f00d\";\n@fa-var-cloud: \"\\f0c2\";\n@fa-var-cloud-download: \"\\f0ed\";\n@fa-var-cloud-upload: \"\\f0ee\";\n@fa-var-cny: \"\\f157\";\n@fa-var-code: \"\\f121\";\n@fa-var-code-fork: \"\\f126\";\n@fa-var-codepen: \"\\f1cb\";\n@fa-var-coffee: \"\\f0f4\";\n@fa-var-cog: \"\\f013\";\n@fa-var-cogs: \"\\f085\";\n@fa-var-columns: \"\\f0db\";\n@fa-var-comment: \"\\f075\";\n@fa-var-comment-o: \"\\f0e5\";\n@fa-var-comments: \"\\f086\";\n@fa-var-comments-o: \"\\f0e6\";\n@fa-var-compass: \"\\f14e\";\n@fa-var-compress: \"\\f066\";\n@fa-var-connectdevelop: \"\\f20e\";\n@fa-var-copy: \"\\f0c5\";\n@fa-var-copyright: \"\\f1f9\";\n@fa-var-credit-card: \"\\f09d\";\n@fa-var-crop: \"\\f125\";\n@fa-var-crosshairs: \"\\f05b\";\n@fa-var-css3: \"\\f13c\";\n@fa-var-cube: \"\\f1b2\";\n@fa-var-cubes: \"\\f1b3\";\n@fa-var-cut: \"\\f0c4\";\n@fa-var-cutlery: \"\\f0f5\";\n@fa-var-dashboard: \"\\f0e4\";\n@fa-var-dashcube: \"\\f210\";\n@fa-var-database: \"\\f1c0\";\n@fa-var-dedent: \"\\f03b\";\n@fa-var-delicious: \"\\f1a5\";\n@fa-var-desktop: \"\\f108\";\n@fa-var-deviantart: \"\\f1bd\";\n@fa-var-diamond: \"\\f219\";\n@fa-var-digg: \"\\f1a6\";\n@fa-var-dollar: \"\\f155\";\n@fa-var-dot-circle-o: \"\\f192\";\n@fa-var-download: \"\\f019\";\n@fa-var-dribbble: \"\\f17d\";\n@fa-var-dropbox: \"\\f16b\";\n@fa-var-drupal: \"\\f1a9\";\n@fa-var-edit: \"\\f044\";\n@fa-var-eject: \"\\f052\";\n@fa-var-ellipsis-h: \"\\f141\";\n@fa-var-ellipsis-v: \"\\f142\";\n@fa-var-empire: \"\\f1d1\";\n@fa-var-envelope: \"\\f0e0\";\n@fa-var-envelope-o: \"\\f003\";\n@fa-var-envelope-square: \"\\f199\";\n@fa-var-eraser: \"\\f12d\";\n@fa-var-eur: \"\\f153\";\n@fa-var-euro: \"\\f153\";\n@fa-var-exchange: \"\\f0ec\";\n@fa-var-exclamation: \"\\f12a\";\n@fa-var-exclamation-circle: \"\\f06a\";\n@fa-var-exclamation-triangle: \"\\f071\";\n@fa-var-expand: \"\\f065\";\n@fa-var-external-link: \"\\f08e\";\n@fa-var-external-link-square: \"\\f14c\";\n@fa-var-eye: \"\\f06e\";\n@fa-var-eye-slash: \"\\f070\";\n@fa-var-eyedropper: \"\\f1fb\";\n@fa-var-facebook: \"\\f09a\";\n@fa-var-facebook-f: \"\\f09a\";\n@fa-var-facebook-official: \"\\f230\";\n@fa-var-facebook-square: \"\\f082\";\n@fa-var-fast-backward: \"\\f049\";\n@fa-var-fast-forward: \"\\f050\";\n@fa-var-fax: \"\\f1ac\";\n@fa-var-female: \"\\f182\";\n@fa-var-fighter-jet: \"\\f0fb\";\n@fa-var-file: \"\\f15b\";\n@fa-var-file-archive-o: \"\\f1c6\";\n@fa-var-file-audio-o: \"\\f1c7\";\n@fa-var-file-code-o: \"\\f1c9\";\n@fa-var-file-excel-o: \"\\f1c3\";\n@fa-var-file-image-o: \"\\f1c5\";\n@fa-var-file-movie-o: \"\\f1c8\";\n@fa-var-file-o: \"\\f016\";\n@fa-var-file-pdf-o: \"\\f1c1\";\n@fa-var-file-photo-o: \"\\f1c5\";\n@fa-var-file-picture-o: \"\\f1c5\";\n@fa-var-file-powerpoint-o: \"\\f1c4\";\n@fa-var-file-sound-o: \"\\f1c7\";\n@fa-var-file-text: \"\\f15c\";\n@fa-var-file-text-o: \"\\f0f6\";\n@fa-var-file-video-o: \"\\f1c8\";\n@fa-var-file-word-o: \"\\f1c2\";\n@fa-var-file-zip-o: \"\\f1c6\";\n@fa-var-files-o: \"\\f0c5\";\n@fa-var-film: \"\\f008\";\n@fa-var-filter: \"\\f0b0\";\n@fa-var-fire: \"\\f06d\";\n@fa-var-fire-extinguisher: \"\\f134\";\n@fa-var-flag: \"\\f024\";\n@fa-var-flag-checkered: \"\\f11e\";\n@fa-var-flag-o: \"\\f11d\";\n@fa-var-flash: \"\\f0e7\";\n@fa-var-flask: \"\\f0c3\";\n@fa-var-flickr: \"\\f16e\";\n@fa-var-floppy-o: \"\\f0c7\";\n@fa-var-folder: \"\\f07b\";\n@fa-var-folder-o: \"\\f114\";\n@fa-var-folder-open: \"\\f07c\";\n@fa-var-folder-open-o: \"\\f115\";\n@fa-var-font: \"\\f031\";\n@fa-var-forumbee: \"\\f211\";\n@fa-var-forward: \"\\f04e\";\n@fa-var-foursquare: \"\\f180\";\n@fa-var-frown-o: \"\\f119\";\n@fa-var-futbol-o: \"\\f1e3\";\n@fa-var-gamepad: \"\\f11b\";\n@fa-var-gavel: \"\\f0e3\";\n@fa-var-gbp: \"\\f154\";\n@fa-var-ge: \"\\f1d1\";\n@fa-var-gear: \"\\f013\";\n@fa-var-gears: \"\\f085\";\n@fa-var-genderless: \"\\f1db\";\n@fa-var-gift: \"\\f06b\";\n@fa-var-git: \"\\f1d3\";\n@fa-var-git-square: \"\\f1d2\";\n@fa-var-github: \"\\f09b\";\n@fa-var-github-alt: \"\\f113\";\n@fa-var-github-square: \"\\f092\";\n@fa-var-gittip: \"\\f184\";\n@fa-var-glass: \"\\f000\";\n@fa-var-globe: \"\\f0ac\";\n@fa-var-google: \"\\f1a0\";\n@fa-var-google-plus: \"\\f0d5\";\n@fa-var-google-plus-square: \"\\f0d4\";\n@fa-var-google-wallet: \"\\f1ee\";\n@fa-var-graduation-cap: \"\\f19d\";\n@fa-var-gratipay: \"\\f184\";\n@fa-var-group: \"\\f0c0\";\n@fa-var-h-square: \"\\f0fd\";\n@fa-var-hacker-news: \"\\f1d4\";\n@fa-var-hand-o-down: \"\\f0a7\";\n@fa-var-hand-o-left: \"\\f0a5\";\n@fa-var-hand-o-right: \"\\f0a4\";\n@fa-var-hand-o-up: \"\\f0a6\";\n@fa-var-hdd-o: \"\\f0a0\";\n@fa-var-header: \"\\f1dc\";\n@fa-var-headphones: \"\\f025\";\n@fa-var-heart: \"\\f004\";\n@fa-var-heart-o: \"\\f08a\";\n@fa-var-heartbeat: \"\\f21e\";\n@fa-var-history: \"\\f1da\";\n@fa-var-home: \"\\f015\";\n@fa-var-hospital-o: \"\\f0f8\";\n@fa-var-hotel: \"\\f236\";\n@fa-var-html5: \"\\f13b\";\n@fa-var-ils: \"\\f20b\";\n@fa-var-image: \"\\f03e\";\n@fa-var-inbox: \"\\f01c\";\n@fa-var-indent: \"\\f03c\";\n@fa-var-info: \"\\f129\";\n@fa-var-info-circle: \"\\f05a\";\n@fa-var-inr: \"\\f156\";\n@fa-var-instagram: \"\\f16d\";\n@fa-var-institution: \"\\f19c\";\n@fa-var-ioxhost: \"\\f208\";\n@fa-var-italic: \"\\f033\";\n@fa-var-joomla: \"\\f1aa\";\n@fa-var-jpy: \"\\f157\";\n@fa-var-jsfiddle: \"\\f1cc\";\n@fa-var-key: \"\\f084\";\n@fa-var-keyboard-o: \"\\f11c\";\n@fa-var-krw: \"\\f159\";\n@fa-var-language: \"\\f1ab\";\n@fa-var-laptop: \"\\f109\";\n@fa-var-lastfm: \"\\f202\";\n@fa-var-lastfm-square: \"\\f203\";\n@fa-var-leaf: \"\\f06c\";\n@fa-var-leanpub: \"\\f212\";\n@fa-var-legal: \"\\f0e3\";\n@fa-var-lemon-o: \"\\f094\";\n@fa-var-level-down: \"\\f149\";\n@fa-var-level-up: \"\\f148\";\n@fa-var-life-bouy: \"\\f1cd\";\n@fa-var-life-buoy: \"\\f1cd\";\n@fa-var-life-ring: \"\\f1cd\";\n@fa-var-life-saver: \"\\f1cd\";\n@fa-var-lightbulb-o: \"\\f0eb\";\n@fa-var-line-chart: \"\\f201\";\n@fa-var-link: \"\\f0c1\";\n@fa-var-linkedin: \"\\f0e1\";\n@fa-var-linkedin-square: \"\\f08c\";\n@fa-var-linux: \"\\f17c\";\n@fa-var-list: \"\\f03a\";\n@fa-var-list-alt: \"\\f022\";\n@fa-var-list-ol: \"\\f0cb\";\n@fa-var-list-ul: \"\\f0ca\";\n@fa-var-location-arrow: \"\\f124\";\n@fa-var-lock: \"\\f023\";\n@fa-var-long-arrow-down: \"\\f175\";\n@fa-var-long-arrow-left: \"\\f177\";\n@fa-var-long-arrow-right: \"\\f178\";\n@fa-var-long-arrow-up: \"\\f176\";\n@fa-var-magic: \"\\f0d0\";\n@fa-var-magnet: \"\\f076\";\n@fa-var-mail-forward: \"\\f064\";\n@fa-var-mail-reply: \"\\f112\";\n@fa-var-mail-reply-all: \"\\f122\";\n@fa-var-male: \"\\f183\";\n@fa-var-map-marker: \"\\f041\";\n@fa-var-mars: \"\\f222\";\n@fa-var-mars-double: \"\\f227\";\n@fa-var-mars-stroke: \"\\f229\";\n@fa-var-mars-stroke-h: \"\\f22b\";\n@fa-var-mars-stroke-v: \"\\f22a\";\n@fa-var-maxcdn: \"\\f136\";\n@fa-var-meanpath: \"\\f20c\";\n@fa-var-medium: \"\\f23a\";\n@fa-var-medkit: \"\\f0fa\";\n@fa-var-meh-o: \"\\f11a\";\n@fa-var-mercury: \"\\f223\";\n@fa-var-microphone: \"\\f130\";\n@fa-var-microphone-slash: \"\\f131\";\n@fa-var-minus: \"\\f068\";\n@fa-var-minus-circle: \"\\f056\";\n@fa-var-minus-square: \"\\f146\";\n@fa-var-minus-square-o: \"\\f147\";\n@fa-var-mobile: \"\\f10b\";\n@fa-var-mobile-phone: \"\\f10b\";\n@fa-var-money: \"\\f0d6\";\n@fa-var-moon-o: \"\\f186\";\n@fa-var-mortar-board: \"\\f19d\";\n@fa-var-motorcycle: \"\\f21c\";\n@fa-var-music: \"\\f001\";\n@fa-var-navicon: \"\\f0c9\";\n@fa-var-neuter: \"\\f22c\";\n@fa-var-newspaper-o: \"\\f1ea\";\n@fa-var-openid: \"\\f19b\";\n@fa-var-outdent: \"\\f03b\";\n@fa-var-pagelines: \"\\f18c\";\n@fa-var-paint-brush: \"\\f1fc\";\n@fa-var-paper-plane: \"\\f1d8\";\n@fa-var-paper-plane-o: \"\\f1d9\";\n@fa-var-paperclip: \"\\f0c6\";\n@fa-var-paragraph: \"\\f1dd\";\n@fa-var-paste: \"\\f0ea\";\n@fa-var-pause: \"\\f04c\";\n@fa-var-paw: \"\\f1b0\";\n@fa-var-paypal: \"\\f1ed\";\n@fa-var-pencil: \"\\f040\";\n@fa-var-pencil-square: \"\\f14b\";\n@fa-var-pencil-square-o: \"\\f044\";\n@fa-var-phone: \"\\f095\";\n@fa-var-phone-square: \"\\f098\";\n@fa-var-photo: \"\\f03e\";\n@fa-var-picture-o: \"\\f03e\";\n@fa-var-pie-chart: \"\\f200\";\n@fa-var-pied-piper: \"\\f1a7\";\n@fa-var-pied-piper-alt: \"\\f1a8\";\n@fa-var-pinterest: \"\\f0d2\";\n@fa-var-pinterest-p: \"\\f231\";\n@fa-var-pinterest-square: \"\\f0d3\";\n@fa-var-plane: \"\\f072\";\n@fa-var-play: \"\\f04b\";\n@fa-var-play-circle: \"\\f144\";\n@fa-var-play-circle-o: \"\\f01d\";\n@fa-var-plug: \"\\f1e6\";\n@fa-var-plus: \"\\f067\";\n@fa-var-plus-circle: \"\\f055\";\n@fa-var-plus-square: \"\\f0fe\";\n@fa-var-plus-square-o: \"\\f196\";\n@fa-var-power-off: \"\\f011\";\n@fa-var-print: \"\\f02f\";\n@fa-var-puzzle-piece: \"\\f12e\";\n@fa-var-qq: \"\\f1d6\";\n@fa-var-qrcode: \"\\f029\";\n@fa-var-question: \"\\f128\";\n@fa-var-question-circle: \"\\f059\";\n@fa-var-quote-left: \"\\f10d\";\n@fa-var-quote-right: \"\\f10e\";\n@fa-var-ra: \"\\f1d0\";\n@fa-var-random: \"\\f074\";\n@fa-var-rebel: \"\\f1d0\";\n@fa-var-recycle: \"\\f1b8\";\n@fa-var-reddit: \"\\f1a1\";\n@fa-var-reddit-square: \"\\f1a2\";\n@fa-var-refresh: \"\\f021\";\n@fa-var-remove: \"\\f00d\";\n@fa-var-renren: \"\\f18b\";\n@fa-var-reorder: \"\\f0c9\";\n@fa-var-repeat: \"\\f01e\";\n@fa-var-reply: \"\\f112\";\n@fa-var-reply-all: \"\\f122\";\n@fa-var-retweet: \"\\f079\";\n@fa-var-rmb: \"\\f157\";\n@fa-var-road: \"\\f018\";\n@fa-var-rocket: \"\\f135\";\n@fa-var-rotate-left: \"\\f0e2\";\n@fa-var-rotate-right: \"\\f01e\";\n@fa-var-rouble: \"\\f158\";\n@fa-var-rss: \"\\f09e\";\n@fa-var-rss-square: \"\\f143\";\n@fa-var-rub: \"\\f158\";\n@fa-var-ruble: \"\\f158\";\n@fa-var-rupee: \"\\f156\";\n@fa-var-save: \"\\f0c7\";\n@fa-var-scissors: \"\\f0c4\";\n@fa-var-search: \"\\f002\";\n@fa-var-search-minus: \"\\f010\";\n@fa-var-search-plus: \"\\f00e\";\n@fa-var-sellsy: \"\\f213\";\n@fa-var-send: \"\\f1d8\";\n@fa-var-send-o: \"\\f1d9\";\n@fa-var-server: \"\\f233\";\n@fa-var-share: \"\\f064\";\n@fa-var-share-alt: \"\\f1e0\";\n@fa-var-share-alt-square: \"\\f1e1\";\n@fa-var-share-square: \"\\f14d\";\n@fa-var-share-square-o: \"\\f045\";\n@fa-var-shekel: \"\\f20b\";\n@fa-var-sheqel: \"\\f20b\";\n@fa-var-shield: \"\\f132\";\n@fa-var-ship: \"\\f21a\";\n@fa-var-shirtsinbulk: \"\\f214\";\n@fa-var-shopping-cart: \"\\f07a\";\n@fa-var-sign-in: \"\\f090\";\n@fa-var-sign-out: \"\\f08b\";\n@fa-var-signal: \"\\f012\";\n@fa-var-simplybuilt: \"\\f215\";\n@fa-var-sitemap: \"\\f0e8\";\n@fa-var-skyatlas: \"\\f216\";\n@fa-var-skype: \"\\f17e\";\n@fa-var-slack: \"\\f198\";\n@fa-var-sliders: \"\\f1de\";\n@fa-var-slideshare: \"\\f1e7\";\n@fa-var-smile-o: \"\\f118\";\n@fa-var-soccer-ball-o: \"\\f1e3\";\n@fa-var-sort: \"\\f0dc\";\n@fa-var-sort-alpha-asc: \"\\f15d\";\n@fa-var-sort-alpha-desc: \"\\f15e\";\n@fa-var-sort-amount-asc: \"\\f160\";\n@fa-var-sort-amount-desc: \"\\f161\";\n@fa-var-sort-asc: \"\\f0de\";\n@fa-var-sort-desc: \"\\f0dd\";\n@fa-var-sort-down: \"\\f0dd\";\n@fa-var-sort-numeric-asc: \"\\f162\";\n@fa-var-sort-numeric-desc: \"\\f163\";\n@fa-var-sort-up: \"\\f0de\";\n@fa-var-soundcloud: \"\\f1be\";\n@fa-var-space-shuttle: \"\\f197\";\n@fa-var-spinner: \"\\f110\";\n@fa-var-spoon: \"\\f1b1\";\n@fa-var-spotify: \"\\f1bc\";\n@fa-var-square: \"\\f0c8\";\n@fa-var-square-o: \"\\f096\";\n@fa-var-stack-exchange: \"\\f18d\";\n@fa-var-stack-overflow: \"\\f16c\";\n@fa-var-star: \"\\f005\";\n@fa-var-star-half: \"\\f089\";\n@fa-var-star-half-empty: \"\\f123\";\n@fa-var-star-half-full: \"\\f123\";\n@fa-var-star-half-o: \"\\f123\";\n@fa-var-star-o: \"\\f006\";\n@fa-var-steam: \"\\f1b6\";\n@fa-var-steam-square: \"\\f1b7\";\n@fa-var-step-backward: \"\\f048\";\n@fa-var-step-forward: \"\\f051\";\n@fa-var-stethoscope: \"\\f0f1\";\n@fa-var-stop: \"\\f04d\";\n@fa-var-street-view: \"\\f21d\";\n@fa-var-strikethrough: \"\\f0cc\";\n@fa-var-stumbleupon: \"\\f1a4\";\n@fa-var-stumbleupon-circle: \"\\f1a3\";\n@fa-var-subscript: \"\\f12c\";\n@fa-var-subway: \"\\f239\";\n@fa-var-suitcase: \"\\f0f2\";\n@fa-var-sun-o: \"\\f185\";\n@fa-var-superscript: \"\\f12b\";\n@fa-var-support: \"\\f1cd\";\n@fa-var-table: \"\\f0ce\";\n@fa-var-tablet: \"\\f10a\";\n@fa-var-tachometer: \"\\f0e4\";\n@fa-var-tag: \"\\f02b\";\n@fa-var-tags: \"\\f02c\";\n@fa-var-tasks: \"\\f0ae\";\n@fa-var-taxi: \"\\f1ba\";\n@fa-var-tencent-weibo: \"\\f1d5\";\n@fa-var-terminal: \"\\f120\";\n@fa-var-text-height: \"\\f034\";\n@fa-var-text-width: \"\\f035\";\n@fa-var-th: \"\\f00a\";\n@fa-var-th-large: \"\\f009\";\n@fa-var-th-list: \"\\f00b\";\n@fa-var-thumb-tack: \"\\f08d\";\n@fa-var-thumbs-down: \"\\f165\";\n@fa-var-thumbs-o-down: \"\\f088\";\n@fa-var-thumbs-o-up: \"\\f087\";\n@fa-var-thumbs-up: \"\\f164\";\n@fa-var-ticket: \"\\f145\";\n@fa-var-times: \"\\f00d\";\n@fa-var-times-circle: \"\\f057\";\n@fa-var-times-circle-o: \"\\f05c\";\n@fa-var-tint: \"\\f043\";\n@fa-var-toggle-down: \"\\f150\";\n@fa-var-toggle-left: \"\\f191\";\n@fa-var-toggle-off: \"\\f204\";\n@fa-var-toggle-on: \"\\f205\";\n@fa-var-toggle-right: \"\\f152\";\n@fa-var-toggle-up: \"\\f151\";\n@fa-var-train: \"\\f238\";\n@fa-var-transgender: \"\\f224\";\n@fa-var-transgender-alt: \"\\f225\";\n@fa-var-trash: \"\\f1f8\";\n@fa-var-trash-o: \"\\f014\";\n@fa-var-tree: \"\\f1bb\";\n@fa-var-trello: \"\\f181\";\n@fa-var-trophy: \"\\f091\";\n@fa-var-truck: \"\\f0d1\";\n@fa-var-try: \"\\f195\";\n@fa-var-tty: \"\\f1e4\";\n@fa-var-tumblr: \"\\f173\";\n@fa-var-tumblr-square: \"\\f174\";\n@fa-var-turkish-lira: \"\\f195\";\n@fa-var-twitch: \"\\f1e8\";\n@fa-var-twitter: \"\\f099\";\n@fa-var-twitter-square: \"\\f081\";\n@fa-var-umbrella: \"\\f0e9\";\n@fa-var-underline: \"\\f0cd\";\n@fa-var-undo: \"\\f0e2\";\n@fa-var-university: \"\\f19c\";\n@fa-var-unlink: \"\\f127\";\n@fa-var-unlock: \"\\f09c\";\n@fa-var-unlock-alt: \"\\f13e\";\n@fa-var-unsorted: \"\\f0dc\";\n@fa-var-upload: \"\\f093\";\n@fa-var-usd: \"\\f155\";\n@fa-var-user: \"\\f007\";\n@fa-var-user-md: \"\\f0f0\";\n@fa-var-user-plus: \"\\f234\";\n@fa-var-user-secret: \"\\f21b\";\n@fa-var-user-times: \"\\f235\";\n@fa-var-users: \"\\f0c0\";\n@fa-var-venus: \"\\f221\";\n@fa-var-venus-double: \"\\f226\";\n@fa-var-venus-mars: \"\\f228\";\n@fa-var-viacoin: \"\\f237\";\n@fa-var-video-camera: \"\\f03d\";\n@fa-var-vimeo-square: \"\\f194\";\n@fa-var-vine: \"\\f1ca\";\n@fa-var-vk: \"\\f189\";\n@fa-var-volume-down: \"\\f027\";\n@fa-var-volume-off: \"\\f026\";\n@fa-var-volume-up: \"\\f028\";\n@fa-var-warning: \"\\f071\";\n@fa-var-wechat: \"\\f1d7\";\n@fa-var-weibo: \"\\f18a\";\n@fa-var-weixin: \"\\f1d7\";\n@fa-var-whatsapp: \"\\f232\";\n@fa-var-wheelchair: \"\\f193\";\n@fa-var-wifi: \"\\f1eb\";\n@fa-var-windows: \"\\f17a\";\n@fa-var-won: \"\\f159\";\n@fa-var-wordpress: \"\\f19a\";\n@fa-var-wrench: \"\\f0ad\";\n@fa-var-xing: \"\\f168\";\n@fa-var-xing-square: \"\\f169\";\n@fa-var-yahoo: \"\\f19e\";\n@fa-var-yelp: \"\\f1e9\";\n@fa-var-yen: \"\\f157\";\n@fa-var-youtube: \"\\f167\";\n@fa-var-youtube-play: \"\\f16a\";\n@fa-var-youtube-square: \"\\f166\";\n\n","//\n// Icons\n// --------------------------------------------------\n// Custom icons and selections from IcoMoon - Free (http://icomoon.io/#icons)\n\n@font-face {\n font-family: '@{icon-font-name-pf}';\n src:url('@{font-path}/@{icon-font-name-pf}.eot');\n src:url('@{font-path}/@{icon-font-name-pf}.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/@{icon-font-name-pf}.ttf') format('truetype'),\n url('@{font-path}/@{icon-font-name-pf}.woff') format('woff'),\n url('@{font-path}/@{icon-font-name-pf}.svg#@{icon-font-name-pf}') format('svg');\n font-weight: normal;\n font-style: normal;\n}\n\n[class^=\"@{icon-prefix}-\"], [class*=\" @{icon-prefix}-\"] {\n display: inline-block;\n font-family: '@{icon-font-name-pf}';\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n speak: none;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.@{icon-prefix}-screen:before {\n content: \"\\e600\";\n}\n.@{icon-prefix}-save:before {\n content: \"\\e601\";\n}\n.@{icon-prefix}-ok:before {\n color: @brand-success;\n content: \"\\e602\";\n}\n.@{icon-prefix}-messages:before, // class name deprecated\n.@{icon-prefix}-flag:before {\n content: \"\\e603\";\n}\n.@{icon-prefix}-info:before {\n content: \"\\e604\";\n}\n.@{icon-prefix}-help:before {\n content: \"\\e605\";\n}\n.@{icon-prefix}-folder-open:before {\n content: \"\\e606\";\n}\n.@{icon-prefix}-folder-close:before {\n content: \"\\e607\";\n}\n.@{icon-prefix}-edit:before {\n content: \"\\e60a\";\n}\n.@{icon-prefix}-close:before {\n content: \"\\e60b\";\n}\n.@{icon-prefix}-user:before {\n content: \"\\e60e\";\n}\n.@{icon-prefix}-users:before {\n content: \"\\e60f\";\n}\n.@{icon-prefix}-add-circle-o:before {\n content: \"\\e61b\";\n}\n.@{icon-prefix}-warning-triangle-o:before {\n color: @brand-warning;\n content: \"\\e61c\";\n}\n.@{icon-prefix}-error-circle-o:before {\n color: @brand-danger;\n content: \"\\e61d\";\n}\n.@{icon-prefix}-service:before {\n content: \"\\e61e\";\n}\n.@{icon-prefix}-image:before {\n content: \"\\e61f\";\n}\n.@{icon-prefix}-settings:before {\n content: \"\\e610\";\n}\n.@{icon-prefix}-delete:before {\n content: \"\\e611\";\n}\n.@{icon-prefix}-print:before {\n content: \"\\e612\";\n}\n.@{icon-prefix}-refresh:before, // class name deprecated\n.@{icon-prefix}-restart:before {\n content: \"\\e613\";\n}\n.@{icon-prefix}-running:before {\n content: \"\\e614\";\n}\n.@{icon-prefix}-import:before {\n content: \"\\e615\";\n}\n.@{icon-prefix}-export:before {\n content: \"\\e616\";\n}\n.@{icon-prefix}-history:before {\n content: \"\\e617\";\n}\n.@{icon-prefix}-home:before {\n content: \"\\e618\";\n}\n.@{icon-prefix}-cluster:before {\n content: \"\\e620\";\n}\n.@{icon-prefix}-container-node:before {\n content: \"\\e621\";\n}\n.@{icon-prefix}-project:before {\n content: \"\\e622\";\n}\n.@{icon-prefix}-registry:before {\n content: \"\\e623\";\n}\n.@{icon-prefix}-replicator:before {\n content: \"\\e624\";\n}\n.@{icon-prefix}-route:before {\n content: \"\\e625\";\n}\n.@{icon-prefix}-openshift:before {\n content: \"\\e626\";\n}\n.@{icon-prefix}-kubernetes:before {\n content: \"\\e627\";\n}","//\n// Info Tip\n// --------------------------------------------------\n\n// Overwrites for navbar.less\n.navbar-nav > li > .dropdown-menu.infotip {\n border-top-width: 1px !important;\n margin-top: @popover-arrow-width;\n}\n\n// Overwrites for PatternFly - navbar.less\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar-pf .navbar-nav .open .dropdown-menu.infotip {\n background-color: #fff !important;\n margin-top: 0;\n }\n}\n\n// Extends \"dropdown-menu\"\n.infotip {\n min-width: 235px;\n padding: 0;\n .list-group {\n border-top: 0;\n margin: 0;\n padding: 8px 0;\n .list-group-item {\n border: none;\n margin: 0 15px 0 34px;\n padding: 5px 0;\n > .i {\n color: @gray-pf;\n font-size: 13px;\n left: -20px;\n position: absolute;\n top: 8px;\n }\n > a {\n color: @gray-pf;\n line-height: 13px;\n }\n > .close {\n float: right;\n }\n }\n }\n .footer {\n background-color: #f5f5f5;\n padding: 6px 15px;\n a:hover {\n color: @link-color;\n }\n }\n}\n\n// Arrows (Copy from popovers.less)\n//\n// .arrow is outer, .arrow:after is inner\n\n.infotip .arrow {\n &,\n &:after {\n border-color: transparent;\n border-style: solid;\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n }\n}\n.infotip .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.infotip .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.infotip {\n &.bottom .arrow,\n &.bottom-left .arrow,\n &.bottom-right .arrow {\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n border-top-width: 0;\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n top: -@popover-arrow-outer-width;\n &:after {\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n content: \" \";\n margin-left: -@popover-arrow-width;\n top: 1px;\n }\n }\n &.bottom-left .arrow {\n left: 20%;\n }\n // Default:\n &.bottom-right .arrow {\n left: 80%;\n }\n &.top .arrow {\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n &:after {\n border-bottom-width: 0;\n border-top-color: #f5f5f5;\n bottom: 1px;\n content: \" \";\n margin-left: -@popover-arrow-width;\n }\n }\n &.right .arrow {\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n top: 50%;\n &:after {\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n content: \" \";\n left: 1px;\n }\n }\n &.left .arrow {\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n border-right-width: 0;\n margin-top: -@popover-arrow-outer-width;\n right: -@popover-arrow-outer-width;\n top: 50%;\n &:after {\n border-left-color: @popover-arrow-color;\n border-right-width: 0;\n bottom: -@popover-arrow-width;\n content: \" \";\n right: 1px;\n }\n }\n}","//\n// Login\n// --------------------------------------------------\n\n.login-pf {\n height: 100%;\n #brand {\n position: relative;\n top: -70px;\n img {\n display: block;\n height: 18px;\n margin: 0 auto;\n max-width: 100%;\n @media (min-width: @screen-sm-min) {\n margin: 0;\n text-align: left;\n }\n }\n }\n #badge {\n display: block;\n margin: 20px auto 70px;\n position: relative;\n text-align: center;\n @media (min-width: @screen-sm-min) { \n float: right;\n margin-right: 64px;\n margin-top: 50px;\n }\n }\n body {\n background: @login-bg-color url(\"@{img-path}/@{img-bg-login}\") repeat-x 50% 0;\n background-size: auto;\n @media (min-width: @screen-sm-min) {\n background-size: 100% auto;\n }\n }\n .container {\n background-color: @login-container-bg-color;\n background-color: @login-container-bg-color-rgba;\n clear: right;\n color: #fff;\n padding-bottom: 40px;\n padding-top: 20px;\n width: auto;\n @media (min-width: @screen-sm-min) { \n bottom: 13%;\n padding-left: 80px;\n position: absolute;\n width: 100%;\n }\n [class^='alert'] {\n background: transparent;\n color: #fff;\n }\n .details {\n p:first-child {\n border-top: 1px solid #474747;\n padding-top: 25px;\n margin-top: 25px;\n }\n @media (min-width: @screen-sm-min) {\n p:first-child {\n border-top: 0;\n padding-top: 0;\n margin-top: 0;\n }\n border-left: 1px solid #474747;\n padding-left: 40px;\n }\n p {\n margin-bottom: 2px;\n }\n }\n .form-horizontal {\n .control-label {\n font-size: @font-size-base + 1;\n font-weight: 400;\n text-align: left;\n }\n .form-group:last-child {\n &, .help-block:last-child {\n margin-bottom: 0;\n }\n }\n }\n .help-block {\n color: #fff;\n }\n .login {\n @media (min-width: @screen-sm-min) {\n padding-right: 40px;\n }\n }\n .submit {\n text-align: right;\n }\n }\n}\n","//\n// Navbar\n// --------------------------------------------------\n\n.navbar-pf {\n background: @navbar-pf-bg-color;\n border: 0;\n border-radius: 0;\n border-top: 3px solid @navbar-pf-border-color;\n margin-bottom: 0;\n min-height: 0;\n .navbar-brand {\n color: @navbar-pf-active-color;\n height: auto;\n padding: 12px 0;\n margin: 0 0 0 20px;\n img {\n display: block;\n }\n }\n .navbar-collapse {\n border-top: 0;\n .box-shadow(none);\n padding: 0;\n }\n .navbar-header {\n border-bottom: 1px solid @navbar-pf-navbar-header-border-color;\n float: none;\n }\n .navbar-nav {\n margin: 0;\n > .active > a, > .active > a:hover, > .active > a:focus {\n background-color: @navbar-pf-navbar-nav-active-bg-color;\n color: @navbar-pf-active-color;\n }\n > li > a {\n color: @navbar-pf-color;\n line-height: 1;\n padding: 10px 20px;\n text-shadow: none;\n &:hover, &:focus {\n color: @navbar-pf-active-color;\n }\n }\n > .open {\n > a {\n &, &:hover, &:focus {\n background-color: @navbar-pf-navbar-nav-active-bg-color;\n color: @navbar-pf-active-color;\n }\n }\n }\n @media (max-width: @grid-float-breakpoint-max) {\n .active .navbar-persistent, .active .dropdown-menu, .open .dropdown-menu {\n background-color: @navbar-pf-navbar-nav-active-active-bg-color !important;\n margin-left: 0;\n padding-bottom: 0;\n padding-top: 0;\n > .active > a, .dropdown-submenu.open > a {\n &, &:hover, &:focus {\n background-color: @navbar-pf-navbar-nav-active-active-open-bg-color !important;\n color: @navbar-pf-active-color;\n }\n }\n > li > a {\n background-color: transparent;\n border: 0;\n color: @navbar-pf-color;\n outline: none;\n padding-left: 30px;\n &:hover {\n color: @navbar-pf-active-color;\n }\n }\n .divider {\n background-color: @navbar-pf-navbar-header-border-color;\n margin: 0 1px;\n }\n .dropdown-header {\n padding-bottom: 0;\n padding-left: 30px;\n }\n .dropdown-submenu {\n &.open .dropdown-toggle {\n color: @navbar-pf-active-color;\n }\n &.pull-left {\n float: none !important;\n }\n > a:after {\n display: none;\n }\n .dropdown-header {\n padding-left: 45px;\n }\n .dropdown-menu {\n border: 0;\n bottom: auto;\n .box-shadow(none);\n display: block;\n float: none;\n margin: 0;\n min-width: 0;\n padding: 0;\n position: relative;\n left: auto;\n right: auto;\n top: auto;\n > li > a {\n padding: 5px 15px 5px 45px;\n line-height: 20px;\n }\n .dropdown-menu > li > a {\n padding-left: 60px;\n }\n }\n }\n }\n .active .navbar-persistent {\n .dropdown-submenu {\n &.open .dropdown-menu {\n display: block;\n }\n > a:after {\n display: inline-block !important;\n position: relative;\n right: auto;\n top: 1px;\n }\n .dropdown-menu {\n display: none;\n }\n .dropdown-submenu > a:after {\n display: none !important;\n }\n }\n }\n .context-bootstrap-select { // Also see bootstrap-select.less\n .open > .dropdown-menu {\n background-color: #fff !important;\n > .active > a {\n &, &:active {\n background-color: @dropdown-link-hover-bg !important;\n border-color: @dropdown-link-hover-border-color !important;\n color: @gray-dark !important;\n small {\n color: @gray-light !important;\n }\n }\n }\n > .disabled > a {\n color: @gray-light !important;\n }\n > .selected > a {\n &, &:active {\n background-color: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n color: #fff !important;\n small {\n color: #70c8e7 !important;\n color:rgba(225, 255, 255, 0.5) !important;\n }\n }\n }\n li {\n > a.opt {\n border-bottom: 1px solid transparent;\n border-top: 1px solid transparent;\n color: @gray-dark;\n padding-left: 10px;\n padding-right: 10px;\n }\n & a {\n &:active small {\n color: #70c8e7 !important;\n color:rgba(225, 255, 255, 0.5) !important;\n }\n &:hover, &:focus {\n small {\n color: @gray-light;\n }\n }\n }\n }\n }\n > .open > .dropdown-menu {\n padding-bottom: 5px;\n padding-top: 5px;\n }\n }\n }\n }\n .navbar-persistent {\n display: none;\n }\n .active > .navbar-persistent {\n display: block;\n }\n .navbar-primary {\n float: none;\n .context {\n border-bottom: 1px solid @navbar-pf-navbar-header-border-color;\n &.context-bootstrap-select .bootstrap-select.btn-group {\n &, &[class*=\"span\"] {\n margin: 8px 20px 9px;\n width: auto; // known bug: IE8 will make it as wide as the longest string\n }\n }\n }\n > li > .navbar-persistent > .dropdown-submenu > a {\n position: relative;\n &:after {\n content: @fa-var-angle-down;\n display: inline-block;\n font-family: @icon-font-name-fa;\n font-weight: normal;\n @media (max-width: @grid-float-breakpoint-max) {\n height: 10px;\n margin-left: 4px;\n vertical-align: baseline;\n }\n }\n }\n }\n .navbar-toggle {\n border: 0;\n margin: 0;\n padding: 10px 20px;\n &:hover, &:focus {\n background-color: transparent;\n outline: none;\n .icon-bar {\n .box-shadow(0 0 3px rgba(255,255,255,1));\n }\n }\n .icon-bar {\n background-color: @navbar-pf-icon-bar-bg-color;\n }\n }\n .navbar-utility {\n border-bottom: 1px solid @navbar-pf-navbar-header-border-color;\n li.dropdown > .dropdown-toggle {\n padding-left: 36px;\n position: relative;\n .pficon-user {\n left: 20px;\n position: absolute;\n top: 10px;\n }\n }\n @media (max-width: @grid-float-breakpoint-max) {\n > li + li {\n border-top: 1px solid @navbar-pf-navbar-header-border-color;\n }\n }\n }\n}\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-pf {\n .navbar-brand {\n padding: @navbar-pf-navbar-navbar-brand-padding;\n }\n .navbar-nav > li > a {\n padding-bottom: 14px;\n padding-top: 14px;\n }\n .navbar-persistent {\n font-size: @font-size-large;\n }\n .navbar-primary {\n font-size: @font-size-large;\n #gradient > .vertical(@navbar-pf-navbar-primary-bg-color-start, @navbar-pf-navbar-primary-bg-color-stop);\n &.persistent-secondary {\n .context {\n .dropdown-menu {\n top: auto;\n }\n }\n .dropup .dropdown-menu {\n bottom: -5px;\n top: auto;\n }\n > li {\n position: static;\n &.active {\n margin-bottom: 32px;\n > .navbar-persistent {\n display: block;\n left: 0;\n position: absolute;\n }\n }\n > .navbar-persistent {\n background: @navbar-pf-navbar-navbar-persistent-bg-color;\n border-bottom: 1px solid @navbar-pf-navbar-navbar-persistent-border-color;\n padding: 0;\n width: 100%;\n a {\n text-decoration: none !important;\n }\n > li {\n &.active {\n &, &:hover {\n .tab-indicator(@background: @nav-tabs-active-link-hover-color, @left: 20px, @right: 20px);\n }\n > a, > a:hover, &:hover > a {\n color: @link-color !important;\n }\n .active > a { \n color: @navbar-pf-active-color;\n }\n }\n &.dropdown-submenu {\n &:hover > .dropdown-menu {\n display: none;\n }\n &.open {\n > .dropdown-menu {\n display: block;\n left: 20px;\n margin-top: 1px;\n top: 100%;\n }\n > .dropdown-toggle {\n color: @gray-darker;\n &:after {\n border-top-color: @gray-darker;\n }\n }\n }\n > .dropdown-toggle {\n padding-right: 35px !important;\n &:after {\n position: absolute;\n right: 20px;\n top: 10px;\n }\n }\n }\n &:hover, &.open {\n .tab-indicator(@left: 20px, @right: 20px);\n > a {\n color: @gray-darker;\n &:after {\n border-top-color: @gray-darker;\n }\n }\n }\n > a {\n background-color: transparent;\n display: block;\n line-height: 1;\n padding: 9px 20px;\n &.dropdown-toggle {\n padding-right: 35px;\n &:after {\n font-size: @font-size-large + 1;\n position: absolute;\n right: 20px;\n top: 9px;\n }\n }\n &:hover {\n color: @gray-darker;\n }\n }\n a {\n color: @gray-pf;\n }\n }\n }\n }\n }\n > li > a {\n border-bottom: 1px solid transparent;\n border-top: 1px solid transparent;\n position: relative;\n margin: -1px 0 0;\n &:hover {\n background-color: @navbar-pf-navbar-primary-hover-bg-color-stop;\n border-top-color: @navbar-pf-navbar-primary-hover-border-color;\n color: @navbar-pf-color;\n #gradient > .vertical(@navbar-pf-navbar-primary-hover-bg-color-start, @navbar-pf-navbar-primary-hover-bg-color-stop);\n }\n }\n > .active > a, > .active > a:hover, > .active > a:focus, > .open > a, > .open > a:hover, > .open > a:focus {\n background-color: @navbar-pf-navbar-primary-active-bg-color-stop;\n border-bottom-color: @navbar-pf-navbar-primary-active-bg-color-stop;\n border-top-color: @navbar-pf-navbar-primary-active-border-color;\n .box-shadow(none);\n color: @navbar-pf-active-color;\n #gradient > .vertical(@navbar-pf-navbar-primary-active-bg-color-start, @navbar-pf-navbar-primary-active-bg-color-stop);\n }\n li.context {\n &.context-bootstrap-select .filter-option {\n max-width: 160px;\n text-overflow: ellipsis;\n }\n &.dropdown {\n border-bottom: 0;\n }\n > a, &.context-bootstrap-select {\n background-color: @navbar-pf-navbar-primary-context-bg-color-stop;\n border-bottom-color: @navbar-pf-navbar-primary-context-border-color;\n border-right: 1px solid @navbar-pf-navbar-primary-context-border-color;\n border-top-color: @navbar-pf-navbar-primary-context-border-top-color;\n font-weight: 600;\n #gradient > .vertical(@navbar-pf-navbar-primary-context-bg-color-start, @navbar-pf-navbar-primary-context-bg-color-stop);\n &:hover {\n background-color: @navbar-pf-navbar-primary-context-hover-bg-color-stop;\n border-bottom-color: @navbar-pf-navbar-primary-context-hover-border-color;\n border-right-color: @navbar-pf-navbar-primary-context-hover-border-color;\n border-top-color: @navbar-pf-navbar-primary-context-hover-border-top-color;\n #gradient > .vertical(@navbar-pf-navbar-primary-context-hover-bg-color-start, @navbar-pf-navbar-primary-context-hover-bg-color-stop);\n }\n }\n &.open > a {\n background-color: @navbar-pf-navbar-primary-context-active-bg-color-stop;\n border-bottom-color: @navbar-pf-navbar-primary-context-active-border-color;\n border-right-color: @navbar-pf-navbar-primary-context-active-border-right-color;\n border-top-color: @navbar-pf-navbar-primary-context-active-border-top-color;\n #gradient > .vertical(@navbar-pf-navbar-primary-context-active-bg-color-start, @navbar-pf-navbar-primary-context-active-bg-color-stop);\n }\n }\n }\n .navbar-utility {\n border-bottom: 0;\n font-size: @font-size-small;\n position: absolute;\n right: 0;\n top: 0;\n > .active > a, > .active > a:hover, > .active > a:focus, > .open > a, > .open > a:hover, > .open > a:focus {\n background: @navbar-pf-navbar-utility-open-bg-color;\n color: @navbar-pf-navbar-utility-color;\n }\n > li > a {\n border-left: 1px solid @navbar-pf-navbar-utility-border-color;\n color: @navbar-pf-navbar-utility-color !important;\n padding: 7px 10px;\n &:hover {\n background: @navbar-pf-navbar-utility-hover-bg-color;\n border-left-color: @navbar-pf-navbar-utility-hover-border-color;\n }\n }\n > li.open > a {\n border-left-color: @navbar-pf-navbar-utility-open-border-color;\n color: @navbar-pf-active-color !important;\n }\n li.dropdown > .dropdown-toggle {\n padding-left: 26px;\n .pficon-user {\n left: 10px;\n top: 7px;\n }\n }\n .open .dropdown-menu {\n left: auto;\n right: 0;\n .dropdown-menu {\n left: auto;\n right: 100%;\n }\n }\n }\n .open {\n .dropdown-menu {\n border-top-width: 0 !important;\n }\n &.bootstrap-select .dropdown-menu, .dropdown-submenu > .dropdown-menu {\n border-top-width: 1px !important;\n }\n }\n }\n}\n@media (max-width: 360px) {\n .navbar-pf {\n .navbar-brand {\n margin-left: 10px;\n width: 75%;\n img {\n height: auto;\n max-width: 100%;\n }\n }\n .navbar-toggle {\n padding-left: 0;\n }\n }\n}","//\n// Search\n// --------------------------------------------------\n\n.search-pf {\n &.has-button {\n border-collapse: separate;\n display: table;\n .form-group {\n display: table-cell;\n width: 100%;\n .btn {\n .box-shadow(none);\n float: left;\n margin-left: -1px;\n &.btn-lg {\n font-size: @font-size-large + .5; // to make button height consistent across browsers!\n }\n &.btn-sm {\n font-size: @font-size-small - .3; // to make button height consistent across browsers!\n }\n }\n .form-control {\n float: left;\n }\n }\n }\n .has-clear {\n .clear {\n background: transparent; // IE8\n background: rgba(255,255,255,0); // to make the whole button clickable in IE9+ \n border: 0;\n height: @input-height-base - 1;\n line-height: 1;\n padding: 0;\n position: absolute;\n right: 1px;\n top: 1px;\n width: 28px;\n &:focus {\n outline: none;\n }\n }\n .form-control {\n padding-right: 30px;\n &::-ms-clear {\n display: none;\n }\n }\n .input-lg + .clear {\n height: @input-height-large - 2;\n width: 28px;\n }\n .input-sm + .clear {\n height: @input-height-small - 2;\n width: 28px;\n span {\n font-size: @font-size-base - 2;\n }\n }\n .search-pf-input-group {\n position: relative;\n }\n }\n}","//\n// Sidebar\n// --------------------------------------------------\n\n.sidebar-header {\n border-bottom: 1px solid darken(@page-header-border-color, 2%);\n padding-bottom: ((@line-height-computed / 2) + 1);\n margin: (@line-height-computed * 2)+10 0 @line-height-computed;\n .actions {\n margin-top: -2px;\n }\n}\n\n.sidebar-pf {\n .sidebar-header + .list-group {\n border-top: 0;\n margin-top: -@grid-gutter-width/2/2;\n .list-group-item {\n background: transparent;\n border-color: darken(@page-header-border-color, 2%);\n padding-left: 0;\n }\n .list-group-item-heading {\n font-size: @font-size-base;\n }\n }\n .nav-category {\n h2 {\n color: @dropdown-header-color;\n font-size: @font-size-base;\n font-weight: 400;\n line-height: @line-height-computed + 1;\n margin: 0;\n padding: 8px 0;\n }\n + .nav-category {\n margin-top: @grid-gutter-width/4;\n }\n }\n .nav-pills > li {\n &.active > a {\n background: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n color: #fff;\n @media (min-width: @grid-float-breakpoint) {\n &:after {\n content: @fa-var-angle-right;\n font-family: @icon-font-name-fa;\n display: block;\n position: absolute;\n right: @grid-gutter-width/2/2;\n top: 1px;\n }\n }\n .fa {\n color: #fff;\n }\n }\n > a {\n border-bottom: 1px solid transparent;\n border-radius: 0;\n border-top: 1px solid transparent;\n color: @text-color;\n font-size: @font-size-base + 1;\n line-height: @line-height-computed + 1;\n padding: 1px @grid-gutter-width/2;\n &:hover {\n background: @dropdown-link-hover-bg;\n border-color: @dropdown-link-hover-border-color;\n }\n .fa {\n color: lighten(@gray-pf, 12%);\n font-size: @font-size-base + 3;\n margin-right: @grid-gutter-width/4;\n text-align: center;\n vertical-align: middle;\n width: @font-size-base + 3;\n }\n }\n }\n .nav-stacked {\n margin-left: -@grid-gutter-width/2;\n margin-right: -@grid-gutter-width/2;\n li + li {\n margin-top: 0;\n }\n }\n .panel {\n background: transparent;\n }\n .panel-body {\n padding: 6px @grid-gutter-width/2;\n .nav-pills > li > a {\n padding-left: @grid-gutter-width/2 + 17;\n }\n }\n .panel-heading {\n padding: 9px @grid-gutter-width/2;\n }\n .panel-title {\n font-size: @font-size-base;\n > a {\n &:before {\n display: inline-block;\n margin-left: 1px;\n margin-right: 4px;\n width: 9px;\n }\n &.collapsed:before {\n margin-left: 3px;\n margin-right: 2px;\n }\n }\n }\n}\n\n@media (min-width: @grid-float-breakpoint-max) {\n .sidebar-header-bleed-left {\n margin-left: -@grid-gutter-width/2;\n > h2 {\n margin-left: @grid-gutter-width/2;\n }\n }\n .sidebar-header-bleed-right {\n margin-right: -@grid-gutter-width/2;\n .actions {\n margin-right: @grid-gutter-width/2;\n }\n > h2 {\n margin-right: @grid-gutter-width/2;\n }\n + .list-group {\n margin-right: -@grid-gutter-width/2;\n }\n }\n .sidebar-pf {\n .panel-group .panel-default, .treeview {\n border-left: 0;\n border-right: 0;\n margin-left: -@grid-gutter-width/2;\n margin-right: -@grid-gutter-width/2;\n }\n .treeview {\n margin-top: 5px;\n .list-group-item {\n padding-left: @grid-gutter-width/2;\n padding-right: @grid-gutter-width/2;\n &.node-selected:after {\n content: @fa-var-angle-right;\n font-family: @icon-font-name-fa;\n display: block;\n position: absolute;\n right: @grid-gutter-width/2/2;\n top: 1px;\n }\n }\n }\n }\n}\n\n@media (min-width: @grid-float-breakpoint) {\n .sidebar-pf {\n background: @sidebar-pf-bg;\n &.sidebar-pf-left {\n border-right: 1px solid @sidebar-pf-border-color;\n }\n &.sidebar-pf-right {\n border-left: 1px solid @sidebar-pf-border-color;\n }\n > .nav-category, > .nav-stacked {\n margin-top: 5px;\n }\n }\n}","//\n// Spinner\n// --------------------------------------------------\n\n@-webkit-keyframes rotation {\n from {-webkit-transform: rotate(0deg);}\n to {-webkit-transform: rotate(359deg);}\n}\n\n@keyframes rotation {\n from {transform: rotate(0deg);}\n to {transform: rotate(359deg);}\n}\n\n.spinner {\n -webkit-animation: rotation .6s infinite linear;\n animation: rotation .6s infinite linear;\n border-bottom: 4px solid rgba(0,0,0,.25);\n border-left: 4px solid rgba(0,0,0,.25);\n border-right: 4px solid rgba(0,0,0,.25);\n border-radius: 100%;\n border-top: 4px solid rgba(0,0,0,.75);\n height: @font-size-base*2;\n margin: 0 auto;\n position: relative;\n width: @font-size-base*2;\n &.spinner-inline {\n display: inline-block;\n margin-right: 3px;\n }\n &.spinner-lg {\n border-width: 5px;\n height: @font-size-base*2.5;\n width: @font-size-base*2.5;\n }\n &.spinner-sm {\n border-width: 3px;\n height: @font-size-base*1.5;\n width: @font-size-base*1.5;\n }\n &.spinner-xs {\n border-width: 2px;\n height: @font-size-base;\n width: @font-size-base;\n }\n}\n\n.ie9 .spinner {\n background: url(\"@{img-path}/@{img-spinner}\") no-repeat;\n border: 0;\n &.spinner-lg {\n background-image: url(\"@{img-path}/@{img-spinner-lg}\");\n }\n &.spinner-sm {\n background-image: url(\"@{img-path}/@{img-spinner-sm}\");\n }\n &.spinner-xs {\n background-image: url(\"@{img-path}/@{img-spinner-xs}\");\n }\n}\n","//\n// Syntax Highlighting for google-code-prettify\n// --------------------------------------------------\n\n.prettyprint {\n .atn, .com, .fun, .var {\n color: @syntax-3;\n }\n\n .atv, .str {\n color: @syntax-1;\n }\n\n .clo, .dec, .kwd, .opn, .pln, .pun {\n color: @syntax-2;\n }\n\n .lit, .tag, .typ {\n color: @syntax-4;\n }\n\n ol.linenums {\n margin-bottom: 0;\n }\n}"]}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.min.css
new file mode 100644
index 0000000..427cdd0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.min.css
@@ -0,0 +1,2 @@
+.form-inline .combobox-container,.form-search .combobox-container{display:inline-block;margin-bottom:0;vertical-align:top}.form-inline .combobox-container .input-group-addon,.form-search .combobox-container .input-group-addon{width:auto}.combobox-container:not(.combobox-selected) .glyphicon-remove,.combobox-selected .caret{display:none}.typeahead-long{max-height:300px;overflow-y:auto}.control-group.error .combobox-container .add-on{color:#B94A48;border-color:#B94A48}.control-group.error .combobox-container .caret{border-top-color:#B94A48}.control-group.warning .combobox-container .add-on{color:#C09853;border-color:#C09853}.control-group.warning .combobox-container .caret{border-top-color:#C09853}.control-group.success .combobox-container .add-on{color:#468847;border-color:#468847}.control-group.success .combobox-container .caret{border-top-color:#468847}.datepicker-dropdown:after,.datepicker-dropdown:before{content:'';position:absolute;display:inline-block;border-top:0}.datepicker{padding:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2)}.datepicker-dropdown:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-khtml-user-select:none;-ms-user-select:none;user-select:none}.c3 text,.datepicker table{-webkit-user-select:none;-moz-user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.disabled.focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover.focus,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.focus,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover.focus,.datepicker table tr td.today:hover:focus{color:#000;background-color:#ffc966;border-color:#b37400}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:hover,.open>.dropdown-toggle.datepicker table tr td.today,.open>.dropdown-toggle.datepicker table tr td.today.disabled,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffc966;border-color:#f59e00}.datepicker table tr td.today.active.focus,.datepicker table tr td.today.active:focus,.datepicker table tr td.today.active:hover,.datepicker table tr td.today.disabled.active.focus,.datepicker table tr td.today.disabled.active:focus,.datepicker table tr td.today.disabled.active:hover,.datepicker table tr td.today.disabled:active.focus,.datepicker table tr td.today.disabled:active:focus,.datepicker table tr td.today.disabled:active:hover,.datepicker table tr td.today.disabled:hover.active.focus,.datepicker table tr td.today.disabled:hover.active:focus,.datepicker table tr td.today.disabled:hover.active:hover,.datepicker table tr td.today.disabled:hover:active.focus,.datepicker table tr td.today.disabled:hover:active:focus,.datepicker table tr td.today.disabled:hover:active:hover,.datepicker table tr td.today:active.focus,.datepicker table tr td.today:active:focus,.datepicker table tr td.today:active:hover,.datepicker table tr td.today:hover.active.focus,.datepicker table tr td.today:hover.active:focus,.datepicker table tr td.today:hover.active:hover,.datepicker table tr td.today:hover:active.focus,.datepicker table tr td.today:hover:active:focus,.datepicker table tr td.today:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td.today.disabled.focus,.open>.dropdown-toggle.datepicker table tr td.today.disabled:focus,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td.today.focus,.open>.dropdown-toggle.datepicker table tr td.today:focus,.open>.dropdown-toggle.datepicker table tr td.today:hover,.open>.dropdown-toggle.datepicker table tr td.today:hover.focus,.open>.dropdown-toggle.datepicker table tr td.today:hover:focus,.open>.dropdown-toggle.datepicker table tr td.today:hover:hover{color:#000;background-color:#ffbc42;border-color:#b37400}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open>.dropdown-toggle.datepicker table tr td.today,.open>.dropdown-toggle.datepicker table tr td.today.disabled,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled.focus,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled.focus,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled.focus,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled].focus,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled].focus,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled.focus,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled].focus,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled].focus,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled.focus,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover.focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today.focus,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover.focus,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today .badge,.datepicker table tr td.today.disabled .badge,.datepicker table tr td.today.disabled:hover .badge,.datepicker table tr td.today:hover .badge{color:#ffdb99;background-color:#000}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open>.dropdown-toggle.datepicker table tr td.active,.open>.dropdown-toggle.datepicker table tr td.active.disabled,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.active:hover,.open>.dropdown-toggle.datepicker table tr td.range.today,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.range.today:hover,.open>.dropdown-toggle.datepicker table tr td.selected,.open>.dropdown-toggle.datepicker table tr td.selected.disabled,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.disabled.focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover.focus,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.focus,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover.focus,.datepicker table tr td.range.today:hover:focus{color:#000;background-color:#f4b747;border-color:#815608}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:hover,.open>.dropdown-toggle.datepicker table tr td.range.today,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4b747;border-color:#bf800c}.datepicker table tr td.range.today.active.focus,.datepicker table tr td.range.today.active:focus,.datepicker table tr td.range.today.active:hover,.datepicker table tr td.range.today.disabled.active.focus,.datepicker table tr td.range.today.disabled.active:focus,.datepicker table tr td.range.today.disabled.active:hover,.datepicker table tr td.range.today.disabled:active.focus,.datepicker table tr td.range.today.disabled:active:focus,.datepicker table tr td.range.today.disabled:active:hover,.datepicker table tr td.range.today.disabled:hover.active.focus,.datepicker table tr td.range.today.disabled:hover.active:focus,.datepicker table tr td.range.today.disabled:hover.active:hover,.datepicker table tr td.range.today.disabled:hover:active.focus,.datepicker table tr td.range.today.disabled:hover:active:focus,.datepicker table tr td.range.today.disabled:hover:active:hover,.datepicker table tr td.range.today:active.focus,.datepicker table tr td.range.today:active:focus,.datepicker table tr td.range.today:active:hover,.datepicker table tr td.range.today:hover.active.focus,.datepicker table tr td.range.today:hover.active:focus,.datepicker table tr td.range.today:hover.active:hover,.datepicker table tr td.range.today:hover:active.focus,.datepicker table tr td.range.today:hover:active:focus,.datepicker table tr td.range.today:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled.focus,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:focus,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td.range.today.focus,.open>.dropdown-toggle.datepicker table tr td.range.today:focus,.open>.dropdown-toggle.datepicker table tr td.range.today:hover,.open>.dropdown-toggle.datepicker table tr td.range.today:hover.focus,.open>.dropdown-toggle.datepicker table tr td.range.today:hover:focus,.open>.dropdown-toggle.datepicker table tr td.range.today:hover:hover{color:#000;background-color:#f2aa25;border-color:#815608}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled.focus,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled.focus,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled.focus,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled].focus,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled].focus,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled.focus,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled].focus,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled].focus,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled.focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today.focus,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover.focus,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today .badge,.datepicker table tr td.range.today.disabled .badge,.datepicker table tr td.range.today.disabled:hover .badge,.datepicker table tr td.range.today:hover .badge{color:#f7ca77;background-color:#000}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555}.datepicker table tr td.selected.disabled.focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover.focus,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.focus,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover.focus,.datepicker table tr td.selected:hover:focus{color:#fff;background-color:grey;border-color:#161616}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:hover,.open>.dropdown-toggle.datepicker table tr td.selected,.open>.dropdown-toggle.datepicker table tr td.selected.disabled,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:grey;border-color:#373737}.datepicker table tr td.selected.active.focus,.datepicker table tr td.selected.active:focus,.datepicker table tr td.selected.active:hover,.datepicker table tr td.selected.disabled.active.focus,.datepicker table tr td.selected.disabled.active:focus,.datepicker table tr td.selected.disabled.active:hover,.datepicker table tr td.selected.disabled:active.focus,.datepicker table tr td.selected.disabled:active:focus,.datepicker table tr td.selected.disabled:active:hover,.datepicker table tr td.selected.disabled:hover.active.focus,.datepicker table tr td.selected.disabled:hover.active:focus,.datepicker table tr td.selected.disabled:hover.active:hover,.datepicker table tr td.selected.disabled:hover:active.focus,.datepicker table tr td.selected.disabled:hover:active:focus,.datepicker table tr td.selected.disabled:hover:active:hover,.datepicker table tr td.selected:active.focus,.datepicker table tr td.selected:active:focus,.datepicker table tr td.selected:active:hover,.datepicker table tr td.selected:hover.active.focus,.datepicker table tr td.selected:hover.active:focus,.datepicker table tr td.selected:hover.active:hover,.datepicker table tr td.selected:hover:active.focus,.datepicker table tr td.selected:hover:active:focus,.datepicker table tr td.selected:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td.selected.disabled.focus,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:focus,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td.selected.focus,.open>.dropdown-toggle.datepicker table tr td.selected:focus,.open>.dropdown-toggle.datepicker table tr td.selected:hover,.open>.dropdown-toggle.datepicker table tr td.selected:hover.focus,.open>.dropdown-toggle.datepicker table tr td.selected:hover:focus,.open>.dropdown-toggle.datepicker table tr td.selected:hover:hover{color:#fff;background-color:#6e6e6e;border-color:#161616}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled.focus,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled.focus,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled.focus,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled].focus,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled].focus,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled.focus,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled].focus,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled].focus,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled.focus,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected.focus,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover.focus,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.selected .badge,.datepicker table tr td.selected.disabled .badge,.datepicker table tr td.selected.disabled:hover .badge,.datepicker table tr td.selected:hover .badge{color:#999;background-color:#fff}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#0085cf;border-color:#006e9c;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.disabled.focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover.focus,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.focus,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover.focus,.datepicker table tr td.active:hover:focus{color:#fff;background-color:#00649c;border-color:#00141d}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:hover,.open>.dropdown-toggle.datepicker table tr td.active,.open>.dropdown-toggle.datepicker table tr td.active.disabled,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:#00649c;border-color:#00435f}.datepicker table tr td.active.active.focus,.datepicker table tr td.active.active:focus,.datepicker table tr td.active.active:hover,.datepicker table tr td.active.disabled.active.focus,.datepicker table tr td.active.disabled.active:focus,.datepicker table tr td.active.disabled.active:hover,.datepicker table tr td.active.disabled:active.focus,.datepicker table tr td.active.disabled:active:focus,.datepicker table tr td.active.disabled:active:hover,.datepicker table tr td.active.disabled:hover.active.focus,.datepicker table tr td.active.disabled:hover.active:focus,.datepicker table tr td.active.disabled:hover.active:hover,.datepicker table tr td.active.disabled:hover:active.focus,.datepicker table tr td.active.disabled:hover:active:focus,.datepicker table tr td.active.disabled:hover:active:hover,.datepicker table tr td.active:active.focus,.datepicker table tr td.active:active:focus,.datepicker table tr td.active:active:hover,.datepicker table tr td.active:hover.active.focus,.datepicker table tr td.active:hover.active:focus,.datepicker table tr td.active:hover.active:hover,.datepicker table tr td.active:hover:active.focus,.datepicker table tr td.active:hover:active:focus,.datepicker table tr td.active:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td.active.disabled.focus,.open>.dropdown-toggle.datepicker table tr td.active.disabled:focus,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td.active.focus,.open>.dropdown-toggle.datepicker table tr td.active:focus,.open>.dropdown-toggle.datepicker table tr td.active:hover,.open>.dropdown-toggle.datepicker table tr td.active:hover.focus,.open>.dropdown-toggle.datepicker table tr td.active:hover:focus,.open>.dropdown-toggle.datepicker table tr td.active:hover:hover{color:#fff;background-color:#004d78;border-color:#00141d}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled.focus,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled.focus,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled.focus,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled].focus,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled].focus,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled.focus,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled].focus,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled].focus,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled.focus,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover.focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active.focus,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover.focus,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#0085cf;border-color:#006e9c}.datepicker table tr td.active .badge,.datepicker table tr td.active.disabled .badge,.datepicker table tr td.active.disabled:hover .badge,.datepicker table tr td.active:hover .badge{color:#0085cf;background-color:#fff}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#0085cf;border-color:#006e9c;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover.focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.focus,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover.focus,.datepicker table tr td span.active:hover:focus{color:#fff;background-color:#00649c;border-color:#00141d}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:hover,.open>.dropdown-toggle.datepicker table tr td span.active,.open>.dropdown-toggle.datepicker table tr td span.active.disabled,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:#00649c;border-color:#00435f}.datepicker table tr td span.active.active.focus,.datepicker table tr td span.active.active:focus,.datepicker table tr td span.active.active:hover,.datepicker table tr td span.active.disabled.active.focus,.datepicker table tr td span.active.disabled.active:focus,.datepicker table tr td span.active.disabled.active:hover,.datepicker table tr td span.active.disabled:active.focus,.datepicker table tr td span.active.disabled:active:focus,.datepicker table tr td span.active.disabled:active:hover,.datepicker table tr td span.active.disabled:hover.active.focus,.datepicker table tr td span.active.disabled:hover.active:focus,.datepicker table tr td span.active.disabled:hover.active:hover,.datepicker table tr td span.active.disabled:hover:active.focus,.datepicker table tr td span.active.disabled:hover:active:focus,.datepicker table tr td span.active.disabled:hover:active:hover,.datepicker table tr td span.active:active.focus,.datepicker table tr td span.active:active:focus,.datepicker table tr td span.active:active:hover,.datepicker table tr td span.active:hover.active.focus,.datepicker table tr td span.active:hover.active:focus,.datepicker table tr td span.active:hover.active:hover,.datepicker table tr td span.active:hover:active.focus,.datepicker table tr td span.active:hover:active:focus,.datepicker table tr td span.active:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td span.active.disabled.focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td span.active.focus,.open>.dropdown-toggle.datepicker table tr td span.active:focus,.open>.dropdown-toggle.datepicker table tr td span.active:hover,.open>.dropdown-toggle.datepicker table tr td span.active:hover.focus,.open>.dropdown-toggle.datepicker table tr td span.active:hover:focus,.open>.dropdown-toggle.datepicker table tr td span.active:hover:hover{color:#fff;background-color:#004d78;border-color:#00141d}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open>.dropdown-toggle.datepicker table tr td span.active,.open>.dropdown-toggle.datepicker table tr td span.active.disabled,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled.focus,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled.focus,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled].focus,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled].focus,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled.focus,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled].focus,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled].focus,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active.focus,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover.focus,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#0085cf;border-color:#006e9c}.datepicker table tr td span.active .badge,.datepicker table tr td span.active.disabled .badge,.datepicker table tr td span.active.disabled:hover .badge,.datepicker table tr td span.active:hover .badge{color:#0085cf;background-color:#fff}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li.disabled a,.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange .input-group-addon{width:auto;min-width:16px;font-weight:400;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;border:solid #bababa;border-width:1px 0;margin-left:-5px;margin-right:-5px}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle,.bootstrap-select.form-control:not([class*=col-]),.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select .dropdown-toggle:focus{outline:#333 dotted thin!important;outline:-webkit-focus-ring-color auto 5px!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li a,table.datatable thead .sorting,table.datatable thead .sorting_asc,table.datatable thead .sorting_asc_disabled,table.datatable thead .sorting_desc,table.datatable thead .sorting_desc_disabled{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1036}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%}select.bs-select-hidden,select.selectpicker{display:none!important}select.mobile-device{position:absolute!important;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}.c3-tooltip td>span,.combobox-container.combobox-selected .glyphicon-remove{display:inline-block}.c3 svg{font:10px sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid text{fill:#aaa}.c3-text.c3-empty{fill:grey;font-size:2em}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-moz-box-shadow:7px 7px 12px -9px #777}.c3-tooltip th{background-color:#aaa;text-align:left;color:#FFF}.c3-tooltip td{background-color:#fff}.c3-tooltip td>span{width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 path,.c3-axis-x .tick line{stroke:#d1d1d1}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max,.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}.blank-slate-pf{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:1px;margin-bottom:20px;padding:30px;text-align:center}.datepicker,.datepicker table tr td,.datepicker table tr td span,.datepicker table tr th{border-radius:1px}@media (min-width:768px){.blank-slate-pf{padding:60px}}@media (min-width:992px){.blank-slate-pf{padding:90px 120px}}.blank-slate-pf .blank-slate-pf-icon{color:#999;font-size:57.6px;line-height:57.6px}.blank-slate-pf .blank-slate-pf-main-action,.blank-slate-pf .blank-slate-pf-secondary-action{margin-top:20px}.combobox-container .caret{margin-left:0}.combobox-container .combobox::-ms-clear{display:none}.combobox-container .dropdown-menu{margin-top:-1px;width:100%}.combobox-container .glyphicon-remove{display:none;top:auto;width:12px}.combobox-container .glyphicon-remove:before{content:"\e60b";font-family:"PatternFlyIcons-webfont"}.combobox-container .input-group-addon{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#b7b7b7;color:#4d5258;position:relative}.c3-tooltip,.c3-tooltip-sparkline{opacity:.9;filter:alpha(opacity=90)}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.combobox-container .input-group-addon:focus,.combobox-container .input-group-addon:hover,.open .dropdown-toggle.combobox-container .input-group-addon{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.open .dropdown-toggle.combobox-container .input-group-addon{background-image:none}.combobox-container .input-group-addon.active.focus,.combobox-container .input-group-addon.active:focus,.combobox-container .input-group-addon.active:hover,.combobox-container .input-group-addon:active.focus,.combobox-container .input-group-addon:active:focus,.combobox-container .input-group-addon:active:hover,.open .dropdown-toggle.combobox-container .input-group-addon.focus,.open .dropdown-toggle.combobox-container .input-group-addon:focus,.open .dropdown-toggle.combobox-container .input-group-addon:hover{background-color:#e2e2e2;border-color:#a5a5a5}.combobox-container .input-group-addon.disabled,.combobox-container .input-group-addon.disabled.active,.combobox-container .input-group-addon.disabled:active,.combobox-container .input-group-addon.disabled:focus,.combobox-container .input-group-addon.disabled:hover,.combobox-container .input-group-addon[disabled],.combobox-container .input-group-addon[disabled].active,.combobox-container .input-group-addon[disabled]:active,.combobox-container .input-group-addon[disabled]:focus,.combobox-container .input-group-addon[disabled]:hover,fieldset[disabled] .combobox-container .input-group-addon,fieldset[disabled] .combobox-container .input-group-addon.active,fieldset[disabled] .combobox-container .input-group-addon:active,fieldset[disabled] .combobox-container .input-group-addon:focus,fieldset[disabled] .combobox-container .input-group-addon:hover{background-color:#eee;border-color:#b7b7b7}.combobox-container .input-group-addon:active{-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}.datepicker .datepicker-switch,.datepicker tfoot .today{font-size:14px;font-weight:500}.datepicker .next,.datepicker .prev{font-weight:500}.datepicker table tr td.active.active,.datepicker table tr td.active.active.disabled,.datepicker table tr td.active.active.disabled:hover,.datepicker table tr td.active.active:hover{background:#0099d3!important;color:#fff!important;text-shadow:none}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#d4edfa}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{text-shadow:none}.datepicker table tr td span.active.active,.datepicker table tr td span.active.active.disabled,.datepicker table tr td span.active.active.disabled:hover,.datepicker table tr td span.active.active:hover{background:#0099d3;text-shadow:none}.datepicker table tr td span:hover,.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#d4edfa}.input-daterange input:first-child{border-radius:1px 0 0 1px}.input-daterange input:last-child{border-radius:0 1px 1px 0}.input-daterange .input-group-addon{background-color:#eee;border-color:#bababa;line-height:1.66666667;padding:2px 6px}.bootstrap-select.btn-group.form-control{margin-bottom:0}.bootstrap-select.btn-group .btn{-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-select.btn-group .btn:hover{border-color:#7bb2dd}.bootstrap-select.btn-group .btn .caret{margin-top:-4px}.bootstrap-select.btn-group .btn:focus{border-color:#66afe9;outline:0!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ColVis_Button:active:focus,.search-pf .has-clear .clear:focus,table.datatable th:active{outline:0}.has-error .bootstrap-select.btn-group .btn{border-color:#a94442}.has-error .bootstrap-select.btn-group .btn:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-success .bootstrap-select.btn-group .btn{border-color:#3c763d}.has-success .bootstrap-select.btn-group .btn:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-warning .bootstrap-select.btn-group .btn{border-color:#ec7a08}.has-warning .bootstrap-select.btn-group .btn:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60}.bootstrap-select.btn-group .dropdown-menu>.active>a,.bootstrap-select.btn-group .dropdown-menu>.active>a:active{background-color:#d4edfa!important;border-color:#b3d3e7!important;color:#333!important}.bootstrap-select.btn-group .dropdown-menu>.active>a small,.bootstrap-select.btn-group .dropdown-menu>.active>a:active small,.bootstrap-select.btn-group .dropdown-menu>.disabled>a{color:#999!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a{background-color:#0099d3!important;border-color:#0076b7!important;color:#fff!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu .divider{background:#e5e5e5!important;margin:4px 1px!important}.bootstrap-select.btn-group .dropdown-menu dt{color:#969696;font-weight:400;padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li>a.opt{padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li a:active small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu li a:focus small,.bootstrap-select.btn-group .dropdown-menu li a:hover small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small{color:#999}.treeview .list-group{border-top:0}.treeview .list-group-item{background:0 0;border-bottom:1px solid transparent!important;border-top:1px solid transparent!important;margin-bottom:0;padding:0 10px}.treeview .list-group-item:hover{background:#d4edfa!important;border-color:#b3d3e7!important}.treeview .list-group-item.node-selected{background:#0099d3!important;border-color:#0076b7!important;color:#fff!important}.treeview span.icon{display:inline-block;font-size:13px;min-width:10px;text-align:center}.treeview span.icon>[class*=fa-angle]{font-size:15px}.treeview span.indent{margin-right:5px}.container-cards-pf{margin-top:20px}.card-pf{background:#fff;border-top:2px solid transparent;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.175);box-shadow:0 1px 1px rgba(0,0,0,.175);padding:0 20px;margin:0 -10px 20px}.card-pf.card-pf-accented{border-top-color:#39a5dc}.card-pf-body{margin:20px 0;padding:0 0 20px}.card-pf-body>:last-child{margin-bottom:0}.card-pf-footer{background-color:#fafafa;border-top:1px solid #d1d1d1;margin:0 -20px!important;padding:20px 20px 10px}.card-pf-footer a .fa,.card-pf-footer a .pficon{margin-right:5px}.card-pf-heading{border-bottom:1px solid #d1d1d1;margin:0 -20px 20px;padding:0 20px}.card-pf-title{font-size:16px;font-weight:300;margin:20px 0;padding:0}.cards-pf{background:#f5f5f5}.row-cards-pf{margin-left:-10px;margin-right:-10px}.c3 svg{font-family:"Open Sans",Helvetica,Arial,sans-serif}.c3-axis-y .tick line{display:none}.c3-chart-arc path{stroke:#fff}.c3-grid line{stroke:#d1d1d1}.c3-line{stroke-width:2px}.c3-tooltip{background:#434343;-webkit-box-shadow:none;box-shadow:none}.c3-tooltip td,.c3-tooltip th{background:0 0;font-size:12px}.c3-tooltip td{border:0;color:#fff;padding:5px 10px}.c3-tooltip th{padding:5px 10px 0}.c3-tooltip tr{border:0}.c3-tooltip tr+tr>td{padding-top:0}.c3-tooltip-sparkline{background:#434343;color:#fff;padding:2px 6px}.c3-xgrid,.c3-ygrid{stroke-dasharray:0 0}.close{text-shadow:none;opacity:.6;filter:alpha(opacity=60)}.close:focus,.close:hover{opacity:.9;filter:alpha(opacity=90)}.dataTables_paginate .pagination>li.disabled>span,.dataTables_paginate .pagination>li>span:focus,.dataTables_paginate .pagination>li>span:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.ColVis_catcher{position:absolute;z-index:999}.ColVis_collection{background-color:#fff;border:1px solid #b6b6b6;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box;list-style:none;margin:-1px 0 0;padding:5px 10px;width:150px;z-index:1000}.ColVis_collection label{font-weight:400;margin-bottom:5px;margin-top:5px;padding-left:20px}.ColVis_collectionBackground{background-color:#fff;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}.dataTables_header{background-color:#f6f6f6;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative;text-align:center}.dataTables_header .btn{-webkit-box-shadow:none;box-shadow:none}.dataTables_header .ColVis{position:absolute;right:5px;text-align:left;top:5px}.dataTables_header .ColVis+.dataTables_info{padding-right:30px}.dataTables_header .dataTables_filter{position:absolute}.dataTables_header .dataTables_filter input{border:1px solid #bbb;height:24px}@media (max-width:767px){.dataTables_header .dataTables_filter input{width:100px}}.dataTables_header .dataTables_info{padding:2px 0}@media (max-width:480px){.dataTables_header .dataTables_info{text-align:right}}.dataTables_header .dataTables_info b{font-weight:700}.dataTables_footer{background-color:#fff;border:1px solid #d1d1d1;border-top:none;overflow:hidden}.dataTables_paginate{background:#fafafa;float:right;margin:0}.dataTables_paginate .pagination{float:left;margin:0}.dataTables_paginate .pagination>li>span{border-color:#fff #e1e1e1 #f4f4f4;border-width:0 1px;font-size:16px;font-weight:400;padding:0;text-align:center;width:31px}.dataTables_paginate .pagination>li.last>span{border-right:none}.dataTables_paginate .pagination>li.disabled>span{background:#f5f5f5;border-left-color:#ececec;border-right-color:#ececec}.dataTables_paginate .pagination-input{float:left;font-size:12px;line-height:1em;padding:4px 15px 0;text-align:right}.dataTables_paginate .pagination-input .paginate_input{border:1px solid #d3d3d3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);font-size:12px;font-weight:600;height:19px;margin-right:8px;padding-right:3px;text-align:right;width:30px}.dataTables_paginate .pagination-input .paginate_of{position:relative}.dataTables_paginate .pagination-input .paginate_of b{margin-left:3px}.dataTables_wrapper{margin:20px 0}.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}.DTCR_pointer{background-color:#0099d3;width:1px;z-index:201}table.datatable{margin-bottom:0;max-width:none!important}table.datatable thead .sorting_asc,table.datatable thead .sorting_desc{border:0;color:#0099d3!important;display:block;position:relative}table.datatable thead .sorting_asc:after,table.datatable thead .sorting_desc:after{content:"\f107";font-family:"FontAwesome";font-size:10px;font-weight:400;height:9px;left:7px;line-height:12px;position:relative;top:2px;vertical-align:baseline;width:12px}table.datatable thead .sorting_asc:before,table.datatable thead .sorting_desc:before{background:#0099d3;content:'';height:2px;position:absolute;left:0;top:0;width:100%}table.datatable thead .sorting_asc:after{content:"\f106";top:-3px}@font-face{font-family:'PatternFlyIcons-webfont';src:url(../fonts/PatternFlyIcons-webfont.eot);src:url(../fonts/PatternFlyIcons-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/PatternFlyIcons-webfont.ttf) format('truetype'),url(../fonts/PatternFlyIcons-webfont.woff) format('woff'),url(../fonts/PatternFlyIcons-webfont.svg#PatternFlyIcons-webfont) format('svg');font-weight:400;font-style:normal}[class*=" pficon-"],[class^=pficon-]{display:inline-block;font-family:'PatternFlyIcons-webfont';font-style:normal;font-variant:normal;font-weight:400;line-height:1;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pficon-screen:before{content:"\e600"}.pficon-save:before{content:"\e601"}.pficon-ok:before{color:#3f9c35;content:"\e602"}.pficon-flag:before,.pficon-messages:before{content:"\e603"}.pficon-info:before{content:"\e604"}.pficon-help:before{content:"\e605"}.pficon-folder-open:before{content:"\e606"}.pficon-folder-close:before{content:"\e607"}.pficon-edit:before{content:"\e60a"}.pficon-close:before{content:"\e60b"}.pficon-user:before{content:"\e60e"}.pficon-users:before{content:"\e60f"}.pficon-add-circle-o:before{content:"\e61b"}.pficon-warning-triangle-o:before{color:#ec7a08;content:"\e61c"}.pficon-error-circle-o:before{color:#c00;content:"\e61d"}.pficon-service:before{content:"\e61e"}.pficon-image:before{content:"\e61f"}.pficon-settings:before{content:"\e610"}.pficon-delete:before{content:"\e611"}.pficon-print:before{content:"\e612"}.pficon-refresh:before,.pficon-restart:before{content:"\e613"}.pficon-running:before{content:"\e614"}.pficon-import:before{content:"\e615"}.pficon-export:before{content:"\e616"}.pficon-history:before{content:"\e617"}.pficon-home:before{content:"\e618"}.pficon-cluster:before{content:"\e620"}.pficon-container-node:before{content:"\e621"}.pficon-project:before{content:"\e622"}.pficon-registry:before{content:"\e623"}.pficon-replicator:before{content:"\e624"}.pficon-route:before{content:"\e625"}.pficon-openshift:before{content:"\e626"}.pficon-kubernetes:before{content:"\e627"}.navbar-nav>li>.dropdown-menu.infotip{border-top-width:1px!important;margin-top:10px}@media (max-width:767px){.dataTables_wrapper .table-responsive{margin-bottom:0}.navbar-pf .navbar-nav .open .dropdown-menu.infotip{background-color:#fff!important;margin-top:0}}.infotip{min-width:235px;padding:0}.infotip .list-group{border-top:0;margin:0;padding:8px 0}.infotip .list-group .list-group-item{border:none;margin:0 15px 0 34px;padding:5px 0}.infotip .list-group .list-group-item>.i{color:#4d5258;font-size:13px;left:-20px;position:absolute;top:8px}.infotip .list-group .list-group-item>a{color:#4d5258;line-height:13px}.infotip .list-group .list-group-item>.close{float:right}.infotip .footer{background-color:#f5f5f5;padding:6px 15px}.infotip .footer a:hover{color:#0099d3}.infotip .arrow,.infotip .arrow:after{border-color:transparent;border-style:solid;display:block;height:0;position:absolute;width:0}.infotip .arrow{border-width:11px}.infotip .arrow:after{border-width:10px;content:""}.infotip.bottom .arrow,.infotip.bottom-left .arrow,.infotip.bottom-right .arrow{border-bottom-color:#bbb;border-top-width:0;left:50%;margin-left:-11px;top:-11px}.infotip.bottom .arrow:after,.infotip.bottom-left .arrow:after,.infotip.bottom-right .arrow:after{border-top-width:0;border-bottom-color:#fff;content:" ";margin-left:-10px;top:1px}.infotip.bottom-left .arrow{left:20%}.infotip.bottom-right .arrow{left:80%}.infotip.top .arrow{border-bottom-width:0;border-top-color:#bbb;bottom:-11px;left:50%;margin-left:-11px}.infotip.top .arrow:after{border-bottom-width:0;border-top-color:#f5f5f5;bottom:1px;content:" ";margin-left:-10px}.infotip.left .arrow:after,.infotip.right .arrow:after{bottom:-10px;content:" "}.infotip.right .arrow{border-left-width:0;border-right-color:#bbb;left:-11px;margin-top:-11px;top:50%}.infotip.right .arrow:after{border-left-width:0;border-right-color:#fff;left:1px}.infotip.left .arrow{border-left-color:#bbb;border-right-width:0;margin-top:-11px;right:-11px;top:50%}.infotip.left .arrow:after{border-left-color:#fff;border-right-width:0;right:1px}.login-pf{height:100%}.login-pf #brand{position:relative;top:-70px}.login-pf #brand img{display:block;height:18px;margin:0 auto;max-width:100%}@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}}.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}.login-pf body{background:url(../img/bg-login.jpg) 50% 0 repeat-x #080808;background-size:auto}.login-pf .container{background-color:#181818;background-color:rgba(255,255,255,.055);clear:right;color:#fff;padding-bottom:40px;padding-top:20px;width:auto}@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}.login-pf body{background-size:100% auto}.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}}.login-pf .container [class^=alert]{background:0 0;color:#fff}.login-pf .container .details p:first-child{border-top:1px solid #474747;padding-top:25px;margin-top:25px}.login-pf .container .details p{margin-bottom:2px}.login-pf .container .form-horizontal .form-group:last-child,.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child,.navbar-pf{margin-bottom:0}.login-pf .container .form-horizontal .control-label{font-size:13px;font-weight:400;text-align:left}.login-pf .container .help-block{color:#fff}@media (min-width:768px){.login-pf .container .details{border-left:1px solid #474747;padding-left:40px}.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}.login-pf .container .login{padding-right:40px}}.login-pf .container .submit{text-align:right}.navbar-pf{background:#030303;border:0;border-radius:0;border-top:3px solid #199dde;min-height:0}.navbar-pf .navbar-brand{color:#f1f1f1;height:auto;padding:12px 0;margin:0 0 0 20px}.navbar-pf .navbar-brand img{display:block}.navbar-pf .navbar-collapse{border-top:0;-webkit-box-shadow:none;box-shadow:none;padding:0}.navbar-pf .navbar-header{border-bottom:1px solid #292929;float:none}.navbar-pf .navbar-nav{margin:0}.navbar-pf .navbar-nav>.active>a,.navbar-pf .navbar-nav>.active>a:focus,.navbar-pf .navbar-nav>.active>a:hover{background-color:#232323;color:#f1f1f1}.navbar-pf .navbar-nav>li>a{color:#cfcfcf;line-height:1;padding:10px 20px;text-shadow:none}.navbar-pf .navbar-nav>li>a:focus,.navbar-pf .navbar-nav>li>a:hover{color:#f1f1f1}.navbar-pf .navbar-nav>.open>a,.navbar-pf .navbar-nav>.open>a:focus,.navbar-pf .navbar-nav>.open>a:hover{background-color:#232323;color:#f1f1f1}@media (max-width:767px){.navbar-pf .navbar-nav .active .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent,.navbar-pf .navbar-nav .open .dropdown-menu{background-color:#171717!important;margin-left:0;padding-bottom:0;padding-top:0}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#1f1f1f!important;color:#f1f1f1}.navbar-pf .navbar-nav .active .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent>li>a,.navbar-pf .navbar-nav .open .dropdown-menu>li>a{background-color:transparent;border:0;color:#cfcfcf;outline:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .dropdown-menu>li>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .navbar-persistent>li>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .open .dropdown-menu>li>a:hover{color:#f1f1f1}.navbar-pf .navbar-nav .active .dropdown-menu .divider,.navbar-pf .navbar-nav .active .navbar-persistent .divider,.navbar-pf .navbar-nav .open .dropdown-menu .divider{background-color:#292929;margin:0 1px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header{padding-bottom:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left{float:none!important}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu>a:after,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu>a:after{display:none}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header{padding-left:45px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu{border:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;display:block;float:none;margin:0;min-width:0;padding:0;position:relative;left:auto;right:auto;top:auto}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu>li>a{padding:5px 15px 5px 45px;line-height:20px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a{padding-left:60px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu{display:block}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after{display:inline-block!important;position:relative;right:auto;top:1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu>a:after{display:none!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu{background-color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active{background-color:#d4edfa!important;border-color:#b3d3e7!important;color:#333!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.disabled>a{color:#999!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active{background-color:#0099d3!important;border-color:#0076b7!important;color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li>a.opt{border-bottom:1px solid transparent;border-top:1px solid transparent;color:#333;padding-left:10px;padding-right:10px}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:active small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:focus small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:hover small{color:#999}.navbar-pf .navbar-nav .context-bootstrap-select>.open>.dropdown-menu{padding-bottom:5px;padding-top:5px}}.navbar-pf .navbar-persistent{display:none}.navbar-pf .active>.navbar-persistent{display:block}.navbar-pf .navbar-primary{float:none}.navbar-pf .navbar-primary .context{border-bottom:1px solid #292929}.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*=span]{margin:8px 20px 9px;width:auto}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a{position:relative}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{content:"\f107";display:inline-block;font-family:"FontAwesome";font-weight:400}@media (max-width:767px){.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{height:10px;margin-left:4px;vertical-align:baseline}}.navbar-pf .navbar-toggle{border:0;margin:0;padding:10px 20px}.navbar-pf .navbar-toggle:focus,.navbar-pf .navbar-toggle:hover{background-color:transparent;outline:0}.navbar-pf .navbar-toggle:focus .icon-bar,.navbar-pf .navbar-toggle:hover .icon-bar{-webkit-box-shadow:0 0 3px #fff;box-shadow:0 0 3px #fff}.navbar-pf .navbar-toggle .icon-bar{background-color:#fff}.navbar-pf .navbar-utility{border-bottom:1px solid #292929}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:36px;position:relative}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:20px;position:absolute;top:10px}@media (max-width:767px){.navbar-pf .navbar-utility>li+li{border-top:1px solid #292929}}@media (min-width:768px){.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a:after{border-top-color:#222}.navbar-pf .navbar-brand{padding:8px 0 7px}.navbar-pf .navbar-nav>li>a{padding-bottom:14px;padding-top:14px}.navbar-pf .navbar-persistent{font-size:14px}.navbar-pf .navbar-primary{font-size:14px;background-image:-webkit-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:-o-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:linear-gradient(to bottom,#1d1d1d 0,#030303 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1d1d1d', endColorstr='#ff030303', GradientType=0)}.navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu{top:auto}.navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu{bottom:-5px;top:auto}.navbar-pf .navbar-primary.persistent-secondary>li{position:static}.navbar-pf .navbar-primary.persistent-secondary>li.active{margin-bottom:32px}.navbar-pf .navbar-primary.persistent-secondary>li.active>.navbar-persistent{display:block;left:0;position:absolute}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent{background:#f6f6f6;border-bottom:1px solid #cecdcd;padding:0;width:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent a{text-decoration:none!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover:before{background:#0099d3;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a:hover{color:#0099d3!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active .active>a{color:#f1f1f1}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a:hover{color:#222}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu:hover>.dropdown-menu{display:none}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-menu{display:block;left:20px;margin-top:1px;top:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle{padding-right:35px!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle:after{position:absolute;right:20px;top:10px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover:before{background:#aaa;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a{background-color:transparent;display:block;line-height:1;padding:9px 20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle{padding-right:35px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle:after{font-size:15px;position:absolute;right:20px;top:9px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li a{color:#4d5258}.navbar-pf .navbar-primary>li>a{border-bottom:1px solid transparent;border-top:1px solid transparent;position:relative;margin:-1px 0 0}.navbar-pf .navbar-primary>li>a:hover{background-color:#1d1d1d;border-top-color:#5c5c5c;color:#cfcfcf;background-image:-webkit-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:-o-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:linear-gradient(to bottom,#363636 0,#1d1d1d 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff363636', endColorstr='#ff1d1d1d', GradientType=0)}.navbar-pf .navbar-primary>.active>a,.navbar-pf .navbar-primary>.active>a:focus,.navbar-pf .navbar-primary>.active>a:hover,.navbar-pf .navbar-primary>.open>a,.navbar-pf .navbar-primary>.open>a:focus,.navbar-pf .navbar-primary>.open>a:hover{background-color:#303030;border-bottom-color:#303030;border-top-color:#696969;-webkit-box-shadow:none;box-shadow:none;color:#f1f1f1;background-image:-webkit-linear-gradient(top,#434343 0,#303030 100%);background-image:-o-linear-gradient(top,#434343 0,#303030 100%);background-image:linear-gradient(to bottom,#434343 0,#303030 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434343', endColorstr='#ff303030', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:160px;text-overflow:ellipsis}.navbar-pf .navbar-primary li.context.dropdown{border-bottom:0}.navbar-pf .navbar-primary li.context.context-bootstrap-select,.navbar-pf .navbar-primary li.context>a{background-color:#1f1f1f;border-bottom-color:#3e3e3e;border-right:1px solid #3e3e3e;border-top-color:#3b3b3b;font-weight:600;background-image:-webkit-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:-o-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:linear-gradient(to bottom,#323232 0,#1f1f1f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff323232', endColorstr='#ff1f1f1f', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select:hover,.navbar-pf .navbar-primary li.context>a:hover{background-color:#323232;border-bottom-color:#4a4a4a;border-right-color:#4a4a4a;border-top-color:#4a4a4a;background-image:-webkit-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:-o-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:linear-gradient(to bottom,#3f3f3f 0,#323232 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3f3f3f', endColorstr='#ff323232', GradientType=0)}.navbar-pf .navbar-primary li.context.open>a{background-color:#454545;border-bottom-color:#575757;border-right-color:#575757;border-top-color:#5a5a5a;background-image:-webkit-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:-o-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:linear-gradient(to bottom,#4c4c4c 0,#454545 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4c4c4c', endColorstr='#ff454545', GradientType=0)}.navbar-pf .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}.navbar-pf .navbar-utility>.active>a,.navbar-pf .navbar-utility>.active>a:focus,.navbar-pf .navbar-utility>.active>a:hover,.navbar-pf .navbar-utility>.open>a,.navbar-pf .navbar-utility>.open>a:focus,.navbar-pf .navbar-utility>.open>a:hover{background:#363636;color:#cfcfcf}.navbar-pf .navbar-utility>li>a{border-left:1px solid #2b2b2b;color:#cfcfcf!important;padding:7px 10px}.navbar-pf .navbar-utility>li>a:hover{background:#232323;border-left-color:#373737}.navbar-pf .navbar-utility>li.open>a{border-left-color:#444;color:#f1f1f1!important}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:26px}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:10px;top:7px}.navbar-pf .navbar-utility .open .dropdown-menu{left:auto;right:0}.navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu{left:auto;right:100%}.navbar-pf .open .dropdown-menu{border-top-width:0!important}.navbar-pf .open .dropdown-submenu>.dropdown-menu,.navbar-pf .open.bootstrap-select .dropdown-menu{border-top-width:1px!important}}@media (max-width:360px){.navbar-pf .navbar-brand{margin-left:10px;width:75%}.navbar-pf .navbar-brand img{height:auto;max-width:100%}.navbar-pf .navbar-toggle{padding-left:0}}.search-pf.has-button{border-collapse:separate;display:table}.search-pf.has-button .form-group{display:table-cell;width:100%}.search-pf.has-button .form-group .btn{-webkit-box-shadow:none;box-shadow:none;float:left;margin-left:-1px}.search-pf.has-button .form-group .btn.btn-lg{font-size:14.5px}.search-pf.has-button .form-group .btn.btn-sm{font-size:10.7px}.search-pf.has-button .form-group .form-control{float:left}.search-pf .has-clear .clear{background:0 0;background:rgba(255,255,255,0);border:0;height:25px;line-height:1;padding:0;position:absolute;right:1px;top:1px;width:28px}.search-pf .has-clear .form-control{padding-right:30px}.search-pf .has-clear .form-control::-ms-clear{display:none}.search-pf .has-clear .input-lg+.clear{height:31px;width:28px}.search-pf .has-clear .input-sm+.clear{height:20px;width:28px}.search-pf .has-clear .input-sm+.clear span{font-size:10px}.search-pf .has-clear .search-pf-input-group{position:relative}.sidebar-header{border-bottom:1px solid #e9e9e9;padding-bottom:11px;margin:50px 0 20px}.sidebar-header .actions{margin-top:-2px}.sidebar-pf .sidebar-header+.list-group{border-top:0;margin-top:-10px}.sidebar-pf .sidebar-header+.list-group .list-group-item{background:0 0;border-color:#e9e9e9;padding-left:0}.sidebar-pf .sidebar-header+.list-group .list-group-item-heading{font-size:12px}.sidebar-pf .nav-category h2{color:#999;font-size:12px;font-weight:400;line-height:21px;margin:0;padding:8px 0}.sidebar-pf .nav-category+.nav-category{margin-top:10px}.sidebar-pf .nav-pills>li.active>a{background:#0099d3!important;border-color:#0076b7!important;color:#fff}@media (min-width:768px){.sidebar-pf .nav-pills>li.active>a:after{content:"\f105";font-family:"FontAwesome";display:block;position:absolute;right:10px;top:1px}}.sidebar-pf .nav-pills>li.active>a .fa{color:#fff}.sidebar-pf .nav-pills>li>a{border-bottom:1px solid transparent;border-radius:0;border-top:1px solid transparent;color:#333;font-size:13px;line-height:21px;padding:1px 20px}.sidebar-pf .nav-pills>li>a:hover{background:#d4edfa;border-color:#b3d3e7}.sidebar-pf .nav-pills>li>a .fa{color:#6a7079;font-size:15px;margin-right:10px;text-align:center;vertical-align:middle;width:15px}.sidebar-pf .nav-stacked{margin-left:-20px;margin-right:-20px}.sidebar-pf .nav-stacked li+li{margin-top:0}.sidebar-pf .panel{background:0 0}.sidebar-pf .panel-body{padding:6px 20px}.sidebar-pf .panel-body .nav-pills>li>a{padding-left:37px}.sidebar-pf .panel-heading{padding:9px 20px}.sidebar-pf .panel-title{font-size:12px}.sidebar-pf .panel-title>a:before{display:inline-block;margin-left:1px;margin-right:4px;width:9px}.sidebar-pf .panel-title>a.collapsed:before{margin-left:3px;margin-right:2px}@media (min-width:767px){.sidebar-header-bleed-left{margin-left:-20px}.sidebar-header-bleed-left>h2{margin-left:20px}.sidebar-header-bleed-right{margin-right:-20px}.sidebar-header-bleed-right .actions,.sidebar-header-bleed-right>h2{margin-right:20px}.sidebar-header-bleed-right+.list-group{margin-right:-20px}.sidebar-pf .panel-group .panel-default,.sidebar-pf .treeview{border-left:0;border-right:0;margin-left:-20px;margin-right:-20px}.sidebar-pf .treeview{margin-top:5px}.sidebar-pf .treeview .list-group-item{padding-left:20px;padding-right:20px}.sidebar-pf .treeview .list-group-item.node-selected:after{content:"\f105";font-family:"FontAwesome";display:block;position:absolute;right:10px;top:1px}}@media (min-width:768px){.sidebar-pf{background:#fafafa}.sidebar-pf.sidebar-pf-left{border-right:1px solid #d0d0d0}.sidebar-pf.sidebar-pf-right{border-left:1px solid #d0d0d0}.sidebar-pf>.nav-category,.sidebar-pf>.nav-stacked{margin-top:5px}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(0,0,0,.25);border-left:4px solid rgba(0,0,0,.25);border-right:4px solid rgba(0,0,0,.25);border-radius:100%;border-top:4px solid rgba(0,0,0,.75);height:24px;margin:0 auto;position:relative;width:24px}.spinner.spinner-inline{display:inline-block;margin-right:3px}.spinner.spinner-lg{border-width:5px;height:30px;width:30px}.spinner.spinner-sm{border-width:3px;height:18px;width:18px}.spinner.spinner-xs{border-width:2px;height:12px;width:12px}.ie9 .spinner{background:url(../img/spinner.gif) no-repeat;border:0}.ie9 .spinner.spinner-lg{background-image:url(../img/spinner-lg.gif)}.ie9 .spinner.spinner-sm{background-image:url(../img/spinner-sm.gif)}.ie9 .spinner.spinner-xs{background-image:url(../img/spinner-xs.gif)}.prettyprint .atn,.prettyprint .com,.prettyprint .fun,.prettyprint .var{color:#3f9c35}.prettyprint .atv,.prettyprint .str{color:#a30000}.prettyprint .clo,.prettyprint .dec,.prettyprint .kwd,.prettyprint .opn,.prettyprint .pln,.prettyprint .pun{color:#333}.prettyprint .lit,.prettyprint .tag,.prettyprint .typ{color:#006e9c}.prettyprint ol.linenums{margin-bottom:0}
+/*# sourceMappingURL=patternfly-additions.min.css.map */
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.min.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.min.css.map
new file mode 100644
index 0000000..4a410df
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/css/patternfly-additions.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["components/bootstrap-combobox/less/combobox.less","components/bootstrap-datepicker/less/datepicker3.less","components/bootstrap-select/less/bootstrap-select.less","components/c3/c3.css","components/bootstrap/less/mixins/buttons.less","less/datatables.less","less/bootstrap-combobox.less","less/charts.less","less/blank-slate.less","less/bootstrap-datepicker.less","less/mixins.less","components/bootstrap/less/mixins/gradients.less","components/bootstrap/less/mixins/opacity.less","components/bootstrap/less/mixins/vendor-prefixes.less","less/bootstrap-select.less","less/search.less","less/navbar.less","less/bootstrap-treeview.less","less/cards.less","less/variables.less","less/close.less","components/bootstrap/less/mixins/reset-filter.less","less/icons.less","less/infotip.less","less/login.less","less/sidebar.less","less/spinner.less","less/syntax-highlighting.less"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.eot
new file mode 100755
index 0000000..1f639a1
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.svg
new file mode 100755
index 0000000..6a2607b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansbold_italic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1352" d="M0 0zM-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371z M1065 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123zM1081 0h-301l237 1118h301z" />
+<glyph unicode="fl" horiz-adv-x="1352" d="M0 0zM-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371z M1081 0h-301l330 1556h301z" />
+<glyph unicode="ffi" horiz-adv-x="2048" d="M-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49 l-79 -224q-69 31 -134 31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 -404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 -1010q-77 -371 -403 -371zM1778 0h-301l237 1118h301zM1761 1380q0 87 48 131.5 t135 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-152 0 -152 123z" />
+<glyph unicode="ffl" horiz-adv-x="2048" d="M-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49 l-79 -224q-69 31 -134 31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 -404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 -1010q-77 -371 -403 -371zM1778 0h-301l329 1556h301z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="586" d="M391 485h-241l157 977h340zM25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode=""" horiz-adv-x="928" d="M549 1462l-152 -528h-196l71 528h277zM954 1462l-151 -528h-199l74 528h276z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M1036 846l-69 -232h258l-19 -206h-297l-116 -408h-220l117 408h-194l-115 -408h-215l113 408h-238l18 206h277l70 232h-252l18 209h289l119 407h217l-117 -407h199l116 407h215l-116 -407h239l-18 -209h-279zM553 614h197l69 232h-196z" />
+<glyph unicode="$" d="M1034 496q0 -184 -125.5 -291.5t-367.5 -124.5l-39 -199h-140l44 201q-209 12 -355 86v266q198 -107 404 -117l71 322q-163 61 -241 151t-78 214q0 173 127 279.5t350 121.5l35 151h139l-33 -151q166 -22 295 -90l-106 -232q-132 65 -242 74l-63 -299q131 -51 195 -99.5 t97 -113t33 -149.5zM594 322q63 9 102 45t39 98q0 46 -24.5 75.5t-59.5 43.5zM633 1157q-62 -7 -96.5 -41t-34.5 -94q0 -79 80 -111z" />
+<glyph unicode="%" horiz-adv-x="1753" d="M518 1274q-63 0 -110.5 -128.5t-47.5 -277.5q0 -96 56 -96q65 0 112 131t47 275q0 96 -57 96zM821 1165q0 -166 -56 -310t-151 -217t-217 -73q-139 0 -210.5 83.5t-71.5 236.5q0 169 55.5 311.5t148.5 214.5t216 72q137 0 211.5 -80t74.5 -238zM1554 1462l-1083 -1462 h-240l1088 1462h235zM1376 690q-39 0 -75 -56t-59 -154t-23 -195t55 -97q41 0 77 55t59.5 154.5t23.5 196.5q0 96 -58 96zM1679 590q0 -167 -54 -313.5t-148 -220.5t-215 -74q-144 0 -216.5 78.5t-72.5 222.5q0 177 53 322.5t148 219.5t219 74q137 0 211.5 -78.5 t74.5 -230.5z" />
+<glyph unicode="&" horiz-adv-x="1450" d="M1325 0h-350l-72 98q-175 -118 -403 -118q-209 0 -320.5 97.5t-111.5 280.5q0 145 78.5 248.5t273.5 200.5q-76 130 -76 258q0 195 117.5 307.5t316.5 112.5q169 0 266 -82.5t97 -224.5q0 -280 -365 -426l195 -263q44 57 80.5 121.5t78.5 173.5h300q-133 -313 -310 -497z M541 623q-88 -51 -123 -104.5t-35 -131.5q0 -65 45.5 -108t116.5 -43q115 0 221 59zM662 920q113 59 155.5 111t42.5 112q0 57 -30 82.5t-70 25.5q-66 0 -102.5 -46.5t-36.5 -119.5q0 -46 12 -92t29 -73z" />
+<glyph unicode="'" horiz-adv-x="522" d="M549 1462l-152 -528h-196l71 528h277z" />
+<glyph unicode="(" horiz-adv-x="694" d="M74 281q0 339 122.5 626.5t381.5 554.5h262q-255 -278 -377.5 -573.5t-122.5 -618.5q0 -308 117 -594h-234q-149 266 -149 605z" />
+<glyph unicode=")" horiz-adv-x="694" d="M618 858q0 -342 -124 -630.5t-379 -551.5h-262q499 545 499 1192q0 307 -116 594h233q149 -264 149 -604z" />
+<glyph unicode="*" horiz-adv-x="1116" d="M885 1522l-113 -353l387 29l-18 -254l-338 43l160 -336l-246 -73l-90 337l-197 -278l-207 164l275 248l-326 92l86 237l338 -174l33 369z" />
+<glyph unicode="+" d="M475 612h-366v219h366v369h219v-369h367v-219h-367v-364h-219v364z" />
+<glyph unicode="," horiz-adv-x="569" d="M377 238l8 -23q-118 -255 -262 -479h-225q74 167 194 502h285z" />
+<glyph unicode="-" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="." horiz-adv-x="584" d="M25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode="/" horiz-adv-x="862" d="M1014 1462l-809 -1462h-295l809 1462h295z" />
+<glyph unicode="0" d="M1110 1012q0 -470 -168.5 -751t-472.5 -281q-198 0 -300.5 122t-102.5 365q0 297 84 537t228 360.5t333 120.5q399 0 399 -473zM684 1235q-80 0 -149.5 -104t-117.5 -302t-48 -368q0 -115 27.5 -173.5t97.5 -58.5q81 0 150.5 106t116 301t46.5 386q0 111 -30.5 162 t-92.5 51z" />
+<glyph unicode="1" d="M688 0h-305l180 829q35 152 76 287q-9 -8 -61.5 -47t-262.5 -170l-133 215l566 348h249z" />
+<glyph unicode="2" d="M913 0h-962l43 213l477 424q180 159 248.5 254.5t68.5 179.5q0 75 -41 114.5t-110 39.5q-66 0 -135.5 -33.5t-171.5 -118.5l-146 203q132 112 252 159.5t250 47.5q190 0 301 -98t111 -259q0 -107 -41 -201t-122.5 -188t-266.5 -245l-269 -222v-10h568z" />
+<glyph unicode="3" d="M1104 1149q0 -156 -94.5 -262t-261.5 -135v-4q131 -26 198.5 -106.5t67.5 -201.5q0 -133 -74 -238t-212 -163.5t-327 -58.5q-239 0 -387 79v267q84 -50 182 -75.5t191 -25.5q158 0 243 63.5t85 176.5q0 172 -258 172h-138l46 221h73q167 0 263 62t96 172q0 67 -43 104 t-121 37q-134 0 -287 -100l-127 204q124 81 232.5 113.5t246.5 32.5q190 0 298 -90.5t108 -243.5z" />
+<glyph unicode="4" d="M1028 303h-170l-63 -303h-293l63 303h-590l48 234l770 925h311l-195 -919h170zM616 543l58 248q12 58 40 164t42 141h-6q-35 -63 -132 -181l-313 -372h311z" />
+<glyph unicode="5" d="M623 922q183 0 289 -103t106 -287q0 -167 -71.5 -292t-208.5 -192.5t-330 -67.5q-117 0 -218.5 23t-162.5 58v269q174 -99 352 -99q154 0 241 71t87 194q0 94 -57.5 141t-166.5 47q-102 0 -213 -33l-104 78l207 733h755l-55 -262h-489l-88 -293q72 15 127 15z" />
+<glyph unicode="6" d="M88 469q0 202 61 395.5t167.5 335t256.5 213.5t357 72q125 0 223 -27l-51 -246q-84 25 -191 25q-194 0 -313.5 -108t-185.5 -345h4q115 166 311 166q157 0 242.5 -97t85.5 -273q0 -169 -71 -313.5t-190.5 -215.5t-277.5 -71q-212 0 -320 127t-108 362zM530 227 q99 0 161.5 94t62.5 236q0 71 -33.5 113.5t-102.5 42.5q-60 0 -114.5 -35.5t-87.5 -95.5t-33 -160q0 -91 40 -143t107 -52z" />
+<glyph unicode="7" d="M78 0l737 1202h-629l56 260h975l-41 -194l-752 -1268h-346z" />
+<glyph unicode="8" d="M721 1485q123 0 215.5 -42t141 -118t48.5 -174q0 -134 -80.5 -233.5t-230.5 -151.5q217 -141 217 -365q0 -122 -63.5 -218.5t-181 -149.5t-273.5 -53q-214 0 -336.5 100t-122.5 270q0 298 348 426q-165 132 -165 299q0 119 58 212.5t168 145.5t257 52zM582 643 q-116 -45 -173 -107t-57 -153q0 -81 50 -128.5t135 -47.5q93 0 147.5 53.5t54.5 138.5q0 73 -36.5 131.5t-120.5 112.5zM694 1260q-76 0 -121 -46.5t-45 -119.5q0 -132 123 -201q185 72 185 221q0 68 -39.5 107t-102.5 39z" />
+<glyph unicode="9" d="M1092 1001q0 -280 -99 -533t-264 -370.5t-403 -117.5q-128 0 -240 32v256q111 -41 227 -41q121 0 207.5 49t144 138.5t99.5 257.5h-4q-111 -158 -295 -158q-163 0 -252.5 103.5t-89.5 285.5q0 166 73 305.5t196 208t286 68.5q203 0 308.5 -123t105.5 -361zM645 1237 q-65 0 -115.5 -42t-78 -114t-27.5 -153q0 -87 37.5 -131.5t105.5 -44.5q60 0 111.5 36.5t82 100t30.5 158.5q0 84 -35.5 137t-110.5 53z" />
+<glyph unicode=":" horiz-adv-x="584" d="M207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5zM25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode=";" horiz-adv-x="584" d="M385 215q-118 -255 -262 -479h-225q74 167 194 502h285zM207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5z" />
+<glyph unicode="<" d="M1061 203l-952 438v143l952 496v-240l-643 -317l643 -281v-239z" />
+<glyph unicode="=" d="M109 807v217h952v-217h-952zM109 418v219h952v-219h-952z" />
+<glyph unicode=">" d="M109 442l643 281l-643 317v240l952 -496v-143l-952 -438v239z" />
+<glyph unicode="?" horiz-adv-x="940" d="M260 485l14 78q19 103 73.5 177t172.5 155q124 84 157.5 127t33.5 96q0 119 -133 119q-50 0 -106.5 -16t-201.5 -84l-92 221q230 125 445 125q177 0 280 -87.5t103 -244.5q0 -83 -28.5 -149.5t-82.5 -123t-190 -147.5q-64 -43 -96.5 -73t-52.5 -64.5t-38 -108.5h-258z M166 115q0 91 55 144.5t150 53.5q68 0 108.5 -38t40.5 -107q0 -87 -55 -141t-143 -54q-74 0 -115 38t-41 104z" />
+<glyph unicode="@" horiz-adv-x="1753" d="M1733 840q0 -173 -64 -321t-177.5 -231t-254.5 -83q-88 0 -144.5 38.5t-72.5 108.5h-6q-50 -77 -113 -112t-147 -35q-127 0 -198 79.5t-71 229.5q0 147 67.5 276.5t187.5 205t268 75.5q185 0 327 -55l-106 -420q-11 -44 -19 -76.5t-8 -64.5q0 -68 58 -68q66 0 124 64 t92.5 171t34.5 214q0 213 -123.5 325.5t-359.5 112.5q-203 0 -366.5 -94t-255 -266t-91.5 -392q0 -243 134 -380.5t376 -137.5q117 0 219.5 20t221.5 66v-186q-230 -90 -465 -90q-217 0 -378 85.5t-246 241.5t-85 359q0 279 120.5 497t343 341.5t497.5 123.5 q318 0 499 -163.5t181 -458.5zM995 889q-82 0 -145.5 -51.5t-100 -137t-36.5 -174.5q0 -65 24.5 -102t69.5 -37q141 0 213 270l57 222q-36 10 -82 10z" />
+<glyph unicode="A" horiz-adv-x="1286" d="M842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333z" />
+<glyph unicode="B" horiz-adv-x="1270" d="M788 1462q229 0 346 -81.5t117 -243.5q0 -150 -83 -247.5t-236 -129.5v-6q100 -26 159.5 -96.5t59.5 -180.5q0 -229 -153 -353t-423 -124h-522l309 1462h426zM545 883h149q121 0 181.5 48.5t60.5 139.5q0 137 -170 137h-152zM412 256h180q117 0 183.5 58t66.5 161 q0 162 -183 162h-165z" />
+<glyph unicode="C" horiz-adv-x="1253" d="M905 1227q-132 0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5q0 262 104 482.5t278 335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19z" />
+<glyph unicode="D" horiz-adv-x="1386" d="M1323 909q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451l309 1462h396q270 0 417.5 -143t147.5 -410zM518 256q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115l-202 -952h106z" />
+<glyph unicode="E" horiz-adv-x="1110" d="M870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512z" />
+<glyph unicode="F" horiz-adv-x="1087" d="M358 0h-305l309 1462h814l-54 -254h-508l-79 -377h473l-56 -253h-473z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M754 821h563l-162 -762q-134 -46 -248.5 -62.5t-242.5 -16.5q-259 0 -400 147t-141 422q0 268 107 484.5t301 334t448 117.5q218 0 410 -99l-115 -251q-74 40 -148 64t-161 24q-153 0 -273.5 -83t-189 -236.5t-68.5 -330.5q0 -172 72.5 -252.5t222.5 -80.5q76 0 170 24 l66 299h-267z" />
+<glyph unicode="H" horiz-adv-x="1434" d="M1135 0h-306l134 631h-471l-134 -631h-305l309 1462h306l-121 -573h471l121 573h305z" />
+<glyph unicode="I" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305z" />
+<glyph unicode="J" horiz-adv-x="678" d="M-135 -430q-94 0 -187 27v253q88 -20 164 -20q99 0 160.5 60.5t89.5 191.5l293 1380h305l-303 -1423q-52 -245 -175.5 -357t-346.5 -112z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M1141 0h-338l-211 592l-125 -70l-109 -522h-305l309 1462h306l-152 -702l158 205l409 497h361l-594 -700z" />
+<glyph unicode="L" horiz-adv-x="1061" d="M53 0l309 1462h306l-256 -1206h512l-54 -256h-817z" />
+<glyph unicode="M" horiz-adv-x="1802" d="M838 369l551 1093h423l-309 -1462h-280l145 692q53 247 105 441h-5l-569 -1133h-281l-61 1133h-4q-11 -88 -38 -231t-187 -902h-275l309 1462h404l68 -1093h4z" />
+<glyph unicode="N" horiz-adv-x="1546" d="M1247 0h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 -688h-275l309 1462h357l340 -1077h4q12 76 39 217t180 860h274z" />
+<glyph unicode="O" horiz-adv-x="1495" d="M1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357 q0 142 -65 219.5t-183 77.5z" />
+<glyph unicode="P" horiz-adv-x="1188" d="M522 774h56q142 0 223.5 69t81.5 185q0 180 -195 180h-74zM1190 1036q0 -241 -169.5 -378.5t-467.5 -137.5h-86l-109 -520h-305l309 1462h338q242 0 366 -106.5t124 -319.5z" />
+<glyph unicode="Q" horiz-adv-x="1495" d="M1432 938q0 -316 -122.5 -555.5t-334.5 -337.5l254 -393h-359l-178 328h-26q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87 t155.5 246t56 357q0 142 -65 219.5t-183 77.5z" />
+<glyph unicode="R" horiz-adv-x="1247" d="M530 813h78q131 0 204 57t73 174q0 82 -47.5 123t-149.5 41h-74zM477 561l-119 -561h-305l309 1462h359q237 0 356 -102t119 -299q0 -158 -83 -271.5t-239 -168.5l261 -621h-332l-207 561h-119z" />
+<glyph unicode="S" horiz-adv-x="1085" d="M946 432q0 -209 -148 -330.5t-401 -121.5q-221 0 -356 90v274q193 -108 358 -108q112 0 175 42.5t63 116.5q0 43 -13.5 75.5t-38.5 60.5t-124 102q-138 99 -194 196t-56 209q0 129 62 230.5t176.5 158t263.5 56.5q217 0 397 -99l-109 -233q-156 74 -288 74 q-83 0 -136 -45t-53 -119q0 -61 33 -106.5t148 -120.5q121 -80 181 -176.5t60 -225.5z" />
+<glyph unicode="T" horiz-adv-x="1087" d="M571 0h-305l254 1204h-352l55 258h1010l-55 -258h-353z" />
+<glyph unicode="U" horiz-adv-x="1415" d="M1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306z" />
+<glyph unicode="V" horiz-adv-x="1208" d="M535 299q78 221 110 283l432 880h316l-748 -1462h-334l-127 1462h295l51 -880q4 -45 4 -133q-2 -103 -6 -150h7z" />
+<glyph unicode="W" horiz-adv-x="1831" d="M1006 1018q-46 -146 -115 -299l-324 -719h-338l-45 1462h287l6 -798q0 -52 -4 -173t-10 -174h6q22 64 67 180.5t60 145.5l369 819h270l21 -873q0 -146 -9 -272h6q43 129 131 349l330 796h309l-647 -1462h-346l-22 721l-2 139q0 88 4 158h-4z" />
+<glyph unicode="X" horiz-adv-x="1241" d="M1124 0h-331l-172 543l-396 -543h-342l576 764l-238 698h320l153 -518l363 518h344l-545 -725z" />
+<glyph unicode="Y" horiz-adv-x="1155" d="M627 870l374 592h342l-618 -903l-119 -559h-303l119 559l-236 903h312z" />
+<glyph unicode="Z" horiz-adv-x="1098" d="M920 0h-981l38 201l777 1005h-543l53 256h936l-41 -202l-782 -1004h596z" />
+<glyph unicode="[" horiz-adv-x="678" d="M436 -324h-473l381 1786h473l-45 -211h-215l-291 -1364h215z" />
+<glyph unicode="\" horiz-adv-x="862" d="M481 1462l224 -1462h-267l-217 1462h260z" />
+<glyph unicode="]" horiz-adv-x="678" d="M-92 -113h213l291 1364h-215l45 211h473l-381 -1786h-471z" />
+<glyph unicode="^" horiz-adv-x="1081" d="M20 520l619 950h147l277 -950h-223l-174 633l-402 -633h-244z" />
+<glyph unicode="_" horiz-adv-x="819" d="M635 -324h-821l30 140h822z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M934 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="a" horiz-adv-x="1217" d="M406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M813 1139q146 0 230.5 -108t84.5 -298t-68 -367.5t-187 -281.5t-263 -104q-194 0 -276 163h-8l-58 -143h-231l330 1556h301l-62 -288q-41 -182 -84 -299h8q78 98 142.5 134t140.5 36zM692 895q-68 0 -130 -65t-102 -180.5t-40 -250.5q0 -80 37 -128t102 -48q67 0 128 69 t98.5 189.5t37.5 237.5q0 176 -131 176z" />
+<glyph unicode="c" horiz-adv-x="989" d="M506 -20q-201 0 -308.5 107.5t-107.5 303.5q0 212 74.5 385.5t209.5 268t308 94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 -175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 58.5v-246q-152 -79 -336 -79z" />
+<glyph unicode="d" horiz-adv-x="1217" d="M406 -20q-147 0 -231.5 107t-84.5 300q0 196 71.5 374.5t188.5 278t258 99.5q82 0 141.5 -37t112.5 -127h8l2 28q6 110 25 195l76 358h301l-330 -1556h-229l14 145h-4q-71 -87 -148.5 -126t-170.5 -39zM532 223q66 0 128.5 68.5t100.5 182.5t38 245q0 80 -37.5 128 t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234q0 -176 137 -176z" />
+<glyph unicode="e" horiz-adv-x="1141" d="M696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5t147.5 -52.5 q87 0 158 19t172 67v-227q-172 -86 -390 -86z" />
+<glyph unicode="f" horiz-adv-x="764" d="M-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371z" />
+<glyph unicode="g" horiz-adv-x="1108" d="M1186 1116l-35 -166l-174 -41q16 -52 16 -118q0 -195 -121 -308.5t-329 -113.5q-59 0 -99 10q-84 -27 -84 -78q0 -34 30 -49t89 -23l137 -18q163 -21 237.5 -84.5t74.5 -183.5q0 -211 -156 -323t-446 -112q-208 0 -324.5 75.5t-116.5 207.5q0 102 68.5 175.5t214.5 121.5 q-74 47 -74 133q0 71 44.5 122.5t146.5 98.5q-65 49 -96 112t-31 153q0 199 125.5 315.5t341.5 116.5q83 0 166 -23h395zM365 -6q-106 -14 -160.5 -57t-54.5 -109q0 -115 194 -115q151 0 228 45t77 127q0 39 -32.5 60t-137.5 35zM614 948q-77 0 -124.5 -76.5t-47.5 -191.5 q0 -119 103 -119q75 0 121.5 76.5t46.5 193.5t-99 117z" />
+<glyph unicode="h" horiz-adv-x="1237" d="M977 0h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301l330 1556h301q-39 -181 -60 -278t-86 -309h8q62 77 138 123.5t176 46.5q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180z" />
+<glyph unicode="i" horiz-adv-x="608" d="M322 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123zM338 0h-301l237 1118h301z" />
+<glyph unicode="j" horiz-adv-x="608" d="M-90 -492q-104 0 -174 25v242q61 -21 114 -21q137 0 173 170l253 1194h302l-265 -1239q-77 -371 -403 -371zM324 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123z" />
+<glyph unicode="k" horiz-adv-x="1163" d="M920 1118h344l-498 -504l285 -614h-336l-183 420l-120 -72l-74 -348h-301l330 1556h301l-148 -694q-8 -41 -29 -117l-28 -102h4z" />
+<glyph unicode="l" horiz-adv-x="608" d="M338 0h-301l330 1556h301z" />
+<glyph unicode="m" horiz-adv-x="1853" d="M844 1139q219 0 262 -228h6q68 110 160.5 169t197.5 59q136 0 207.5 -85t71.5 -237q0 -76 -23 -180l-133 -637h-301l138 653q16 68 16 119q0 123 -98 123q-92 0 -166.5 -112t-118.5 -318l-96 -465h-301l137 653q16 68 16 119q0 123 -98 123q-92 0 -167 -114t-118 -318 l-98 -463h-301l237 1118h230l-21 -207h6q146 228 355 228z" />
+<glyph unicode="n" horiz-adv-x="1237" d="M977 0h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301l237 1118h230l-21 -207h6q146 228 355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180z" />
+<glyph unicode="o" horiz-adv-x="1198" d="M805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5q196 0 310 -118 t114 -325z" />
+<glyph unicode="p" horiz-adv-x="1219" d="M813 1139q146 0 230.5 -107.5t84.5 -300.5q0 -191 -68.5 -367.5t-187.5 -280t-262 -103.5q-83 0 -143 37t-111 126h-8q-12 -159 -43 -295l-72 -340h-301l342 1610h230l-17 -170h9q138 191 317 191zM692 895q-68 0 -131.5 -67.5t-102 -180t-38.5 -248.5q0 -80 37 -128 t102 -48q67 0 128 69t98.5 189.5t37.5 237.5q0 176 -131 176z" />
+<glyph unicode="q" horiz-adv-x="1217" d="M391 -20q-88 0 -156 47.5t-106.5 138.5t-38.5 219q0 198 72 377.5t189 278t257 98.5q86 0 152.5 -37.5t124.5 -126.5h8l57 143h232l-342 -1610h-301q47 218 73 337.5t84 304.5h-8q-72 -94 -143 -132t-154 -38zM535 223q64 0 127.5 70t100 181t36.5 245q0 80 -37.5 128 t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234q0 -88 36.5 -132t103.5 -44z" />
+<glyph unicode="r" horiz-adv-x="862" d="M842 1139q59 0 96 -11l-66 -290q-45 16 -100 16q-116 0 -203.5 -91.5t-124.5 -262.5l-106 -500h-301l237 1118h230l-21 -207h6q147 228 353 228z" />
+<glyph unicode="s" horiz-adv-x="969" d="M829 369q0 -188 -124.5 -288.5t-346.5 -100.5q-107 0 -186.5 15t-148.5 50v248q157 -90 319 -90q80 0 131 32.5t51 88.5q0 43 -37 77t-131 86q-121 68 -169 135.5t-48 159.5q0 170 110.5 263.5t315.5 93.5q201 0 363 -95l-99 -215q-140 84 -258 84q-57 0 -92 -25.5 t-35 -68.5q0 -39 32 -68.5t120 -74.5q123 -63 178 -137t55 -170z" />
+<glyph unicode="t" horiz-adv-x="840" d="M514 223q65 0 162 35v-225q-111 -53 -266 -53q-150 0 -220.5 63t-70.5 195q0 50 12 112l115 539h-152l29 147l196 84l132 236h194l-49 -238h283l-50 -229h-282l-115 -539q-6 -30 -6 -53q0 -74 88 -74z" />
+<glyph unicode="u" horiz-adv-x="1237" d="M262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213z" />
+<glyph unicode="v" horiz-adv-x="1049" d="M455 301q55 153 92 223l297 594h323l-604 -1118h-323l-138 1118h295l45 -586q7 -133 7 -231h6z" />
+<glyph unicode="w" horiz-adv-x="1614" d="M856 860q-62 -178 -123 -319l-233 -541h-324l-51 1118h281l4 -495l-4 -167l-7 -171h4q6 20 14 41.5t51 136.5t46 119l231 536h328v-536q0 -142 -10 -297h6l28 80q73 208 95 258l219 495h307l-530 -1118h-330l-6 520q0 155 10 340h-6z" />
+<glyph unicode="x" horiz-adv-x="1087" d="M379 573l-225 545h321l115 -334l244 334h354l-467 -561l244 -557h-326l-125 342l-264 -342h-350z" />
+<glyph unicode="y" horiz-adv-x="1063" d="M102 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49z" />
+<glyph unicode="z" horiz-adv-x="932" d="M748 0h-795l35 180l575 705h-397l51 233h750l-43 -200l-566 -685h439z" />
+<glyph unicode="{" horiz-adv-x="727" d="M201 319q0 140 -209 140l45 229q122 0 192.5 41.5t92.5 138.5l61 285q38 170 131 239.5t270 69.5h84l-49 -225q-90 -2 -130.5 -34.5t-55.5 -106.5l-66 -297q-45 -207 -276 -236v-8q85 -26 126.5 -82.5t41.5 -134.5q0 -44 -15 -113l-36 -178q-7 -28 -7 -51q0 -54 33.5 -74 t91.5 -20v-226h-53q-167 0 -253.5 63.5t-86.5 184.5q0 57 14 125l39 184q15 69 15 86z" />
+<glyph unicode="|" d="M455 1550h219v-2015h-219v2015z" />
+<glyph unicode="}" horiz-adv-x="727" d="M256 1462q340 0 340 -248q0 -56 -14 -124l-39 -185q-15 -69 -15 -86q0 -139 209 -139l-45 -229q-122 0 -192.5 -42t-91.5 -139l-62 -284q-37 -170 -130.5 -240t-270.5 -70h-45v226q93 3 137 35.5t59 105.5l66 297q25 111 95 166t181 69v9q-168 51 -168 217q0 43 15 112 l37 179q6 30 6 51q0 54 -36.5 74t-109.5 20l41 225h33z" />
+<glyph unicode="~" d="M342 672q-54 0 -116.5 -33t-116.5 -88v231q101 109 256 109q64 0 117 -14t139 -50q64 -27 111 -41t95 -14q51 0 112 30.5t122 90.5v-231q-103 -109 -256 -109q-59 0 -109 11.5t-147 51.5q-89 38 -127 47t-80 9z" />
+<glyph unicode="¡" horiz-adv-x="586" d="M182 606h242l-158 -977h-340zM549 977q0 -92 -55.5 -145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108q0 85 54 139.5t144 54.5q73 0 114.5 -37t41.5 -104z" />
+<glyph unicode="¢" d="M575 -20h-188l49 210q-134 36 -203 136t-69 258q0 193 62.5 355t178 262.5t267.5 123.5l33 158h188l-35 -158q118 -14 225 -65l-92 -230q-53 23 -105 40t-118 17q-133 0 -216 -143t-83 -336q0 -96 45 -144t127 -48q75 0 140 23.5t134 58.5v-246q-136 -71 -299 -80z" />
+<glyph unicode="£" d="M872 1485q195 0 369 -86l-113 -232q-141 68 -237 68q-75 0 -123 -39.5t-68 -132.5l-47 -229h299l-45 -220h-299l-18 -84q-42 -195 -209 -270h655l-55 -260h-993l49 246q196 48 244 264l22 104h-192l45 220h192l49 247q41 197 162 300.5t313 103.5z" />
+<glyph unicode="¤" d="M190 723q0 102 54 197l-129 127l147 147l127 -127q91 53 197 53q105 0 196 -55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 -145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 -54 197zM397 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
+<glyph unicode="¥" d="M608 872l371 590h311l-506 -747h203l-39 -178h-252l-28 -138h252l-37 -178h-252l-47 -221h-291l47 221h-252l37 178h252l29 138h-252l39 178h196l-192 747h297z" />
+<glyph unicode="¦" d="M455 1550h219v-815h-219v815zM455 350h219v-815h-219v815z" />
+<glyph unicode="§" horiz-adv-x="995" d="M150 760q0 89 47.5 163t154.5 142q-42 34 -70 84.5t-28 107.5q0 149 117 234.5t313 85.5q172 0 344 -88l-82 -193q-147 84 -282 84q-144 0 -144 -106q0 -43 40.5 -76t127.5 -72q242 -106 242 -303q0 -188 -193 -303q38 -35 64 -85.5t26 -108.5q0 -161 -126 -253.5 t-345 -92.5q-204 0 -336 75v224q172 -105 345 -105q99 0 144.5 35t45.5 92q0 39 -33 72.5t-127 79.5q-117 57 -181 131t-64 176zM506 967q-51 -25 -82 -70.5t-31 -99.5t43.5 -96.5t143.5 -88.5q49 31 75.5 78.5t26.5 95.5q0 109 -176 181z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M397 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M932 1010q-111 0 -163 -73t-52 -214q0 -134 55.5 -203t159.5 -69q43 0 108.5 15.5t124.5 43.5v-191q-131 -57 -262 -57q-196 0 -307 122.5t-111 336.5q0 225 117.5 351t325.5 126q142 0 284 -72l-75 -174q-114 58 -205 58zM125 731q0 200 100 375t275 276t377 101 q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 -305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5t-80.5 303.5t-222 223.5t-307.5 83 q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304z" />
+<glyph unicode="ª" horiz-adv-x="772" d="M369 752q-103 0 -160 70t-57 198q0 117 46 228t123 171t177 60q120 0 180 -103h6l39 90h154l-158 -702h-154l8 92h-2q-80 -104 -202 -104zM442 903q45 0 84 41.5t65.5 120t26.5 154.5q0 106 -88 106q-73 0 -123.5 -96t-50.5 -215q0 -111 86 -111z" />
+<glyph unicode="«" horiz-adv-x="1151" d="M72 569l401 463l191 -155l-279 -334l135 -350l-246 -103l-202 461v18zM559 569l402 463l190 -155l-279 -334l136 -350l-246 -103l-203 461v18z" />
+<glyph unicode="¬" d="M1061 248h-219v364h-733v219h952v-583z" />
+<glyph unicode="­" horiz-adv-x="659" d="M41 424zM41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M1237 899q0 -86 -44 -149.5t-130 -96.5l197 -360h-254l-138 297h-67v-297h-230v874h308q173 0 265.5 -67.5t92.5 -200.5zM801 758h51q72 0 113 31t41 92q0 59 -35.5 88.5t-116.5 29.5h-53v-241zM125 731q0 200 100 375t275 276t377 101q199 0 373.5 -99t276 -275.5 t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 -305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5t-80.5 303.5t-222 223.5t-307.5 83q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304z " />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036l45 201h1036z" />
+<glyph unicode="°" horiz-adv-x="877" d="M164 1137q0 93 46.5 173.5t127.5 126.5t172 46q93 0 173.5 -47t126.5 -127t46 -172q0 -93 -46 -173t-126 -125.5t-174 -45.5q-93 0 -173 45t-126.5 125t-46.5 174zM354 1137q0 -63 45.5 -108.5t110.5 -45.5q66 0 111 46t45 108q0 63 -45.5 110t-110.5 47t-110.5 -47.5 t-45.5 -109.5z" />
+<glyph unicode="±" d="M475 674h-366v219h366v369h219v-369h367v-219h-367v-365h-219v365zM109 0v219h952v-219h-952z" />
+<glyph unicode="²" horiz-adv-x="776" d="M707 586h-648l35 166l273 219q111 91 141 122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 -95h347z" />
+<glyph unicode="³" horiz-adv-x="776" d="M813 1270q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176q0 -131 -107 -209t-285 -78q-75 0 -145.5 15.5t-120.5 40.5v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127l34 160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66 l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 -155.5z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M483 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="µ" horiz-adv-x="1249" d="M424 348q0 -60 31.5 -92.5t79.5 -32.5q90 0 162.5 106.5t117.5 319.5l98 469h301l-237 -1118h-229l18 176h-6q-117 -196 -266 -196q-51 0 -89.5 19.5t-58.5 47.5h-6q-8 -66 -21.5 -139t-82.5 -400h-304l342 1610h301l-135 -645q-16 -70 -16 -125z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1202 -260h-162v1616h-166v-1616h-161v819q-62 -18 -146 -18q-216 0 -318 125t-102 376q0 256 107.5 385t343.5 129h604v-1816z" />
+<glyph unicode="·" horiz-adv-x="584" d="M131 553zM131 695q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M262 -250q0 -116 -83 -179t-234 -63q-86 0 -152 23v168q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178z" />
+<glyph unicode="¹" horiz-adv-x="776" d="M528 1462h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81l-102 165z" />
+<glyph unicode="º" horiz-adv-x="754" d="M809 1194q0 -128 -48.5 -232.5t-132.5 -157t-196 -52.5q-134 0 -202 75t-68 211q0 197 104 319t277 122q129 0 197.5 -73.5t68.5 -211.5zM522 1315q-64 0 -107.5 -89.5t-43.5 -199.5q0 -111 80 -111q63 0 105 85.5t42 207.5q0 107 -76 107z" />
+<glyph unicode="»" horiz-adv-x="1151" d="M1079 535l-401 -463l-191 155l279 334l-135 350l246 103l202 -461v-18zM592 535l-402 -463l-190 155l279 334l-136 350l246 103l203 -461v-18z" />
+<glyph unicode="¼" horiz-adv-x="1804" d="M97 0zM1500 1462l-1084 -1462h-239l1087 1462h236zM496 1462h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81l-102 165zM1573 152h-119l-32 -151h-238l33 151h-373l31 174l475 557h260l-121 -563h119zM1252 320l58 231l22 74q-13 -20 -43 -58 t-211 -247h174z" />
+<glyph unicode="½" horiz-adv-x="1804" d="M97 0zM1588 1h-648l35 166l273 219q111 91 141 122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 -95h347zM496 1462h207l-186 -876h-246l84 397 q24 109 55 207q-16 -15 -80 -60l-131 -81l-102 165zM1500 1462l-1084 -1462h-239l1087 1462h236z" />
+<glyph unicode="¾" horiz-adv-x="1804" d="M133 0zM1633 1462l-1084 -1462h-239l1087 1462h236zM1634 152h-119l-32 -151h-238l33 151h-373l31 174l475 557h260l-121 -563h119zM1313 320l58 231l22 74q-13 -20 -43 -58t-211 -247h174zM854 1270q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176q0 -131 -107 -209 t-285 -78q-75 0 -145.5 15.5t-120.5 40.5v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127l34 160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 -155.5z" />
+<glyph unicode="¿" horiz-adv-x="940" d="M678 606l-14 -78q-19 -105 -76.5 -180t-169.5 -151q-122 -83 -156.5 -126t-34.5 -98q0 -118 133 -118q50 0 106.5 16t201.5 84l92 -221q-221 -125 -445 -125q-177 0 -280 87.5t-103 244.5q0 82 28.5 148.5t83.5 124t189 146.5q93 62 128 106.5t51 106.5l8 33h258z M772 977q0 -92 -55.5 -145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108q0 86 54.5 140t143.5 54q73 0 114.5 -37t41.5 -104z" />
+<glyph unicode="À" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM965 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM735 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Â" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM1235 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z " />
+<glyph unicode="Ã" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM999 1579q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5 t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="Ä" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM516 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM918 1720q0 78 42 118t120 40 q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="Å" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM1087 1567q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170z M930 1565q0 45 -27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69.5 26t27.5 71z" />
+<glyph unicode="Æ" horiz-adv-x="1833" d="M1593 0h-817l74 348h-426l-219 -348h-328l922 1462h1104l-54 -254h-512l-67 -321h477l-55 -254h-478l-79 -377h512zM905 608l127 600h-80l-364 -600h317z" />
+<glyph unicode="Ç" horiz-adv-x="1253" d="M123 0zM905 1227q-132 0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5q0 262 104 482.5t278 335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19z M825 -250q0 -116 -83 -179t-234 -63q-86 0 -152 23v168q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178z" />
+<glyph unicode="È" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM906 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM608 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Ê" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM1177 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="Ë" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM438 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM840 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5 t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="Ì" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM667 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM414 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Î" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM937 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="Ï" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM222 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM624 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="Ð" horiz-adv-x="1386" d="M1323 909q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451l125 596h-141l55 254h139l131 612h396q270 0 417.5 -143t147.5 -410zM518 256q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115l-75 -358h237l-55 -254h-238l-71 -340h106z" />
+<glyph unicode="Ñ" horiz-adv-x="1546" d="M53 0zM1247 0h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 -688h-275l309 1462h357l340 -1077h4q12 76 39 217t180 860h274zM1114 1579q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36 t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="Ò" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM1053 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM753 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Ô" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM1308 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="Õ" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM1071 1579q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="Ö" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM585 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM987 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="×" d="M428 723l-299 301l152 154l301 -299l305 299l153 -150l-305 -305l301 -303l-149 -152l-305 301l-301 -299l-150 152z" />
+<glyph unicode="Ø" horiz-adv-x="1495" d="M1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-180 0 -304 71l-108 -137l-154 115l121 151q-98 138 -98 357q0 265 99 487.5t273 341.5t402 119q182 0 305 -76l105 131l151 -117l-117 -145q91 -134 91 -340zM870 1233q-126 0 -229 -91.5t-160 -252.5t-57 -352 q0 -32 8 -101l596 754q-69 43 -158 43zM1133 930l-5 80l-589 -740q59 -37 153 -37q124 0 226 89t158.5 247.5t56.5 360.5z" />
+<glyph unicode="Ù" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM1002 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311 q36 -148 115 -303v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM757 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5 t-194 -158.5h-209v25z" />
+<glyph unicode="Û" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM1284 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217 v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="Ü" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM565 1720q0 78 42.5 118t119.5 40q133 0 133 -108 q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM967 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="Ý" horiz-adv-x="1155" d="M186 0zM627 870l374 592h342l-618 -903l-119 -559h-303l119 559l-236 903h312zM606 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Þ" horiz-adv-x="1188" d="M1143 807q0 -243 -170.5 -378.5t-466.5 -135.5h-86l-62 -293h-305l309 1462h306l-50 -229h35q242 0 366 -106.5t124 -319.5zM475 547h55q139 0 222.5 66.5t83.5 185.5q0 180 -195 180h-74z" />
+<glyph unicode="ß" horiz-adv-x="1350" d="M846 1567q208 0 331 -90t123 -240q0 -114 -49 -192t-178 -152q-73 -42 -96 -68.5t-23 -54.5q0 -23 22 -49.5t79 -69.5q107 -83 144.5 -150.5t37.5 -150.5q0 -170 -123.5 -270t-337.5 -100q-187 0 -297 61v240q128 -78 258 -78q101 0 148 33t47 86q0 40 -26.5 75 t-108.5 97q-94 72 -129 130t-35 126q0 84 45 145t162 127q66 37 104.5 76t38.5 96q0 62 -39.5 98.5t-124.5 36.5q-96 0 -156 -51.5t-85 -171.5l-254 -1219q-43 -198 -147 -288.5t-277 -90.5q-90 0 -160 25v242q61 -21 115 -21q133 0 170 178l254 1207q47 224 182 326 t385 102z" />
+<glyph unicode="à" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM869 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="á" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM598 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="â" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM1120 1240h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="ã" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM884 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="ä" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM397 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="å" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM1023 1479q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170zM866 1477q0 45 -27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69.5 26t27.5 71z " />
+<glyph unicode="æ" horiz-adv-x="1786" d="M1206 -20q-109 0 -179.5 27t-117.5 87l-16 -94h-188l14 145h-6q-71 -88 -146.5 -126.5t-167.5 -38.5q-146 0 -227.5 109t-81.5 296q0 200 68.5 375.5t185 277t258.5 101.5q96 0 160.5 -38.5t114.5 -125.5h6l57 143h188l-18 -90q44 49 120.5 80t168.5 31 q157 0 246.5 -83.5t89.5 -221.5q0 -187 -167 -288.5t-476 -101.5h-52l-2 -19v-19q0 -96 55.5 -147.5t159.5 -51.5q66 0 152 23t162 63v-227q-179 -86 -361 -86zM518 223q72 0 134 68t99 184.5t37 243.5q0 80 -33 128t-102 48q-68 0 -128 -69t-95 -185.5t-35 -241.5 q0 -84 32.5 -130t90.5 -46zM1341 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95z" />
+<glyph unicode="ç" horiz-adv-x="989" d="M90 0zM506 -20q-201 0 -308.5 107.5t-107.5 303.5q0 212 74.5 385.5t209.5 268t308 94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 -175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 58.5v-246q-152 -79 -336 -79z M653 -250q0 -116 -83 -179t-234 -63q-86 0 -152 23v168q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178z" />
+<glyph unicode="è" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM849 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM528 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="ê" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM1101 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="ë" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM365 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM767 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="ì" horiz-adv-x="608" d="M37 0zM338 0h-301l237 1118h301zM579 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="608" d="M37 0zM338 0h-301l237 1118h301zM291 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="î" horiz-adv-x="608" d="M36 0zM338 0h-301l237 1118h301zM845 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="ï" horiz-adv-x="608" d="M37 0zM338 0h-301l237 1118h301zM126 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM528 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="ð" horiz-adv-x="1182" d="M618 1309q-34 34 -124 80l118 186q134 -61 232 -139l237 131l76 -152l-192 -106q81 -107 113 -235t32 -279q0 -249 -69.5 -432.5t-203.5 -283t-323 -99.5q-216 0 -329 110t-113 316q0 165 64.5 301t180.5 212t265 76q83 0 151.5 -31t114.5 -94h6q-20 213 -117 310 l-231 -131l-88 147zM528 205q66 0 122.5 55.5t89 148.5t32.5 193q0 77 -38.5 122.5t-108.5 45.5q-73 0 -130 -53t-88.5 -143t-31.5 -197q0 -81 39 -126.5t114 -45.5z" />
+<glyph unicode="ñ" horiz-adv-x="1237" d="M37 0zM977 0h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301l237 1118h230l-21 -207h6q146 228 355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180zM909 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28 t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="ò" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM845 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="ó" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM571 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="ô" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM1109 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="õ" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM865 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="ö" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM386 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM788 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="÷" d="M109 612v219h952v-219h-952zM444 373q0 76 37 113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 -110.5t-102 -40.5t-102.5 39t-37.5 112z" />
+<glyph unicode="ø" horiz-adv-x="1198" d="M1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-123 0 -225 53l-109 -135l-141 108l119 148q-72 107 -72 256q0 213 71.5 379.5t206.5 258t316 91.5q131 0 227 -56l70 88l145 -110l-84 -105q66 -107 66 -260zM662 903q-81 0 -144.5 -62.5t-98 -169.5t-34.5 -233 v-12l365 453q-35 24 -88 24zM543 215q114 0 193 133t79 318v16l-358 -444q11 -8 35.5 -15.5t50.5 -7.5z" />
+<glyph unicode="ù" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM845 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311 q36 -148 115 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM610 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209 v25z" />
+<glyph unicode="û" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM1143 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25 q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="ü" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM411 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 -43.5q-135 0 -135 110zM813 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="ý" horiz-adv-x="1063" d="M0 0zM102 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49zM497 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="þ" horiz-adv-x="1219" d="M813 1139q150 0 232.5 -106.5t82.5 -301.5q0 -199 -69 -381t-182 -276t-250 -94q-178 0 -271 163h-8q-12 -159 -43 -295l-72 -340h-301l435 2048h301l-66 -307q-29 -131 -80 -280h8q131 170 283 170zM682 895q-71 0 -130 -65t-95.5 -184.5t-36.5 -246.5q0 -80 33.5 -128 t105.5 -48q69 0 129 65t97.5 183.5t37.5 247.5q0 88 -37.5 132t-103.5 44z" />
+<glyph unicode="ÿ" horiz-adv-x="1063" d="M0 0zM102 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49zM310 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5 q-135 0 -135 110zM712 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="ı" horiz-adv-x="608" d="M338 0h-301l237 1118h301z" />
+<glyph unicode="Œ" horiz-adv-x="1845" d="M1606 0h-760q-93 -20 -180 -20q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q140 0 209 -23h809l-53 -254h-512l-68 -321h477l-55 -254h-477l-80 -377h512zM688 240q88 0 158 32l194 916q-62 39 -168 39q-121 0 -222 -91.5t-158.5 -251.5 t-57.5 -347q0 -147 66.5 -222t187.5 -75z" />
+<glyph unicode="œ" horiz-adv-x="1806" d="M1198 -20q-116 0 -208 38.5t-138 106.5q-63 -68 -147 -106.5t-207 -38.5q-187 0 -297.5 117t-110.5 317q0 216 69 380.5t200 254.5t309 90q209 0 313 -160q154 160 399 160q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-476 -101.5h-51l-2 -21v-20q0 -91 51 -143.5 t147 -52.5q87 0 158 19t172 67v-227q-93 -46 -185.5 -66t-203.5 -20zM645 893q-71 0 -127 -60.5t-90.5 -176.5t-34.5 -242q0 -91 36.5 -140t109.5 -49q109 0 179 134.5t70 336.5q0 96 -37 146.5t-106 50.5zM1362 922q-88 0 -165.5 -78.5t-102.5 -196.5h45q155 0 241 48.5 t86 131.5q0 95 -104 95z" />
+<glyph unicode="Ÿ" horiz-adv-x="1155" d="M186 0zM627 870l374 592h342l-618 -903l-119 -559h-303l119 559l-236 903h312zM432 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM834 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5 q-135 0 -135 110z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M1120 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M1034 1479q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170zM877 1477q0 45 -27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69.5 26t27.5 71z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M866 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="–" horiz-adv-x="983" d="M41 436l49 230h852l-49 -230h-852z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M41 436l49 230h1835l-49 -230h-1835z" />
+<glyph unicode="‘" horiz-adv-x="440" d="M123 961l-8 22q103 227 262 479h225q-91 -213 -194 -501h-285z" />
+<glyph unicode="’" horiz-adv-x="440" d="M586 1462l8 -22q-103 -227 -262 -479h-226q89 206 195 501h285z" />
+<glyph unicode="‚" horiz-adv-x="569" d="M377 238l8 -23q-103 -227 -262 -479h-225q88 207 194 502h285z" />
+<glyph unicode="“" horiz-adv-x="887" d="M569 961l-8 22q103 227 262 479h226q-97 -227 -195 -501h-285zM123 961l-8 22q103 227 262 479h225q-91 -213 -194 -501h-285z" />
+<glyph unicode="”" horiz-adv-x="887" d="M586 1462l8 -22q-103 -227 -262 -479h-226q89 206 195 501h285zM1032 1462l8 -22q-103 -227 -262 -479h-225q23 53 46.5 111t148.5 390h284z" />
+<glyph unicode="„" horiz-adv-x="1018" d="M377 238l8 -23q-103 -227 -262 -479h-225q88 207 194 502h285zM825 238l9 -23q-100 -221 -263 -479h-225q24 57 49 118.5t146 383.5h284z" />
+<glyph unicode="•" horiz-adv-x="739" d="M104 686q0 106 42.5 194t120 136.5t182.5 48.5q120 0 182.5 -67t62.5 -191q0 -177 -91.5 -277t-248.5 -100q-117 0 -183.5 67t-66.5 189z" />
+<glyph unicode="…" horiz-adv-x="1706" d="M25 0zM25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM586 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM1147 115q0 90 53.5 144t150.5 54 q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="664" d="M72 569l401 463l191 -155l-279 -334l135 -350l-246 -103l-202 461v18z" />
+<glyph unicode="›" horiz-adv-x="664" d="M592 535l-402 -463l-190 155l279 334l-136 350l246 103l203 -461v-18z" />
+<glyph unicode="⁄" horiz-adv-x="256" d="M791 1462l-1084 -1462h-239l1087 1462h236z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="776" d="M776 737h-119l-32 -151h-238l33 151h-373l31 174l475 557h260l-121 -563h119zM455 905l58 231l22 74q-13 -20 -43 -58t-211 -247h174z" />
+<glyph unicode="€" d="M899 1237q-97 0 -176 -74.5t-135 -212.5h348l-39 -176h-360q-11 -34 -25 -115h299l-37 -178h-280q0 -120 44.5 -181.5t147.5 -61.5q133 0 283 63v-258q-126 -63 -330 -63q-446 0 -446 501h-152l37 178h127q9 67 22 115h-125l39 176h135q87 252 250.5 393.5t374.5 141.5 q100 0 179 -23t165 -80l-125 -223q-87 49 -131 63.5t-90 14.5z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M471 741h-168v572h-197v149h564v-149h-199v-572zM1047 741l-166 529h-7l5 -111v-418h-164v721h248l159 -510l170 510h240v-721h-168v408l4 121h-6l-174 -529h-141z" />
+<glyph unicode="" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" />
+<glyph horiz-adv-x="1217" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.ttf
new file mode 100755
index 0000000..242d6b2
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.woff
new file mode 100755
index 0000000..ed760c0
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-BoldItalic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.eot
new file mode 100755
index 0000000..5d20d91
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.svg
new file mode 100755
index 0000000..3ed7be4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansbold" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1417" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM940 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM1258 0h-305v1118 h305v-1118z" />
+<glyph unicode="fl" horiz-adv-x="1417" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1258 0h-305v1556h305v-1556z" />
+<glyph unicode="ffi" horiz-adv-x="2208" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1571 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224 q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1730 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM2048 0h-305v1118h305v-1118z" />
+<glyph unicode="ffl" horiz-adv-x="2208" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1571 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224 q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM2048 0h-305v1556h305v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="586" d="M416 485h-244l-51 977h346zM117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode=""" horiz-adv-x="967" d="M412 1462l-41 -528h-197l-41 528h279zM834 1462l-41 -528h-197l-41 528h279z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M999 844l-47 -232h258v-206h-297l-77 -406h-220l78 406h-194l-76 -406h-215l74 406h-238v206h277l47 232h-252v209h289l77 407h219l-77 -407h198l78 407h215l-78 -407h240v-209h-279zM539 612h196l47 232h-196z" />
+<glyph unicode="$" d="M1092 457q0 -159 -115 -255.5t-322 -115.5v-205h-137v201q-244 5 -428 86v264q87 -43 209.5 -76t218.5 -39v310l-67 26q-198 78 -280.5 169.5t-82.5 226.5q0 145 113.5 238.5t316.5 113.5v153h137v-149q229 -10 414 -92l-94 -234q-156 64 -320 78v-295 q195 -75 277.5 -130t121 -121t38.5 -154zM791 442q0 42 -34 71t-102 60v-249q136 23 136 118zM389 1049q0 -44 30.5 -72.5t98.5 -58.5v235q-129 -19 -129 -104z" />
+<glyph unicode="%" horiz-adv-x="1845" d="M315 1024q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 -72.5 -61.5t-22.5 -188.5zM758 1026q0 -230 -89 -345.5t-261 -115.5q-165 0 -255 118.5t-90 342.5q0 457 345 457q169 0 259.5 -118.5t90.5 -338.5zM1446 1462l-811 -1462h-240l811 1462h240z M1339 440q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 -72.5 -61.5t-22.5 -188.5zM1782 442q0 -229 -89 -344.5t-261 -115.5q-165 0 -255 118.5t-90 341.5q0 457 345 457q169 0 259.5 -118.5t90.5 -338.5z" />
+<glyph unicode="&" horiz-adv-x="1536" d="M1536 0h-377l-115 113q-191 -133 -432 -133q-244 0 -387 112t-143 303q0 137 60.5 233.5t207.5 180.5q-75 86 -109 164.5t-34 171.5q0 152 116.5 245t311.5 93q186 0 297.5 -86.5t111.5 -231.5q0 -119 -69 -217.5t-223 -187.5l284 -277q71 117 123 301h318 q-36 -135 -99 -263.5t-143 -227.5zM403 424q0 -86 64.5 -137t165.5 -51q126 0 227 61l-332 330q-58 -44 -91.5 -92t-33.5 -111zM762 1133q0 53 -36 83.5t-93 30.5q-67 0 -105.5 -32t-38.5 -91q0 -88 95 -194q86 48 132 94.5t46 108.5z" />
+<glyph unicode="'" horiz-adv-x="545" d="M412 1462l-41 -528h-197l-41 528h279z" />
+<glyph unicode="(" horiz-adv-x="694" d="M82 561q0 265 77.5 496t223.5 405h250q-141 -193 -213 -424t-72 -475q0 -245 73.5 -473.5t209.5 -413.5h-248q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="694" d="M612 561q0 -263 -77.5 -490t-223.5 -395h-248q135 184 209 412.5t74 474.5q0 244 -72 475t-213 424h250q147 -175 224 -406.5t77 -494.5z" />
+<glyph unicode="*" horiz-adv-x="1116" d="M688 1556l-41 -368l373 104l33 -252l-340 -24l223 -297l-227 -121l-156 313l-137 -311l-236 119l221 297l-338 26l39 250l365 -104l-41 368h262z" />
+<glyph unicode="+" d="M475 612h-387v219h387v390h219v-390h387v-219h-387v-385h-219v385z" />
+<glyph unicode="," horiz-adv-x="594" d="M459 215q-52 -202 -176 -479h-220q65 266 101 502h280z" />
+<glyph unicode="-" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="." horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="/" horiz-adv-x="846" d="M836 1462l-545 -1462h-277l545 1462h277z" />
+<glyph unicode="0" d="M1096 731q0 -383 -125.5 -567t-386.5 -184q-253 0 -381.5 190t-128.5 561q0 387 125 570.5t385 183.5q253 0 382.5 -192t129.5 -562zM381 731q0 -269 46.5 -385.5t156.5 -116.5q108 0 156 118t48 384q0 269 -48.5 386.5t-155.5 117.5q-109 0 -156 -117.5t-47 -386.5z" />
+<glyph unicode="1" d="M846 0h-309v846l3 139l5 152q-77 -77 -107 -101l-168 -135l-149 186l471 375h254v-1462z" />
+<glyph unicode="2" d="M1104 0h-1022v215l367 371q163 167 213 231.5t72 119.5t22 114q0 88 -48.5 131t-129.5 43q-85 0 -165 -39t-167 -111l-168 199q108 92 179 130t155 58.5t188 20.5q137 0 242 -50t163 -140t58 -206q0 -101 -35.5 -189.5t-110 -181.5t-262.5 -265l-188 -177v-14h637v-260z " />
+<glyph unicode="3" d="M1047 1135q0 -137 -83 -233t-233 -132v-6q177 -22 268 -107.5t91 -230.5q0 -211 -153 -328.5t-437 -117.5q-238 0 -422 79v263q85 -43 187 -70t202 -27q153 0 226 52t73 167q0 103 -84 146t-268 43h-111v237h113q170 0 248.5 44.5t78.5 152.5q0 166 -208 166 q-72 0 -146.5 -24t-165.5 -83l-143 213q200 144 477 144q227 0 358.5 -92t131.5 -256z" />
+<glyph unicode="4" d="M1137 303h-176v-303h-302v303h-624v215l641 944h285v-919h176v-240zM659 543v248q0 62 5 180t8 137h-8q-37 -82 -89 -160l-268 -405h352z" />
+<glyph unicode="5" d="M614 934q212 0 337.5 -119t125.5 -326q0 -245 -151 -377t-432 -132q-244 0 -394 79v267q79 -42 184 -68.5t199 -26.5q283 0 283 232q0 221 -293 221q-53 0 -117 -10.5t-104 -22.5l-123 66l55 745h793v-262h-522l-27 -287l35 7q61 14 151 14z" />
+<glyph unicode="6" d="M72 621q0 434 183.5 646t549.5 212q125 0 196 -15v-247q-89 20 -176 20q-159 0 -259.5 -48t-150.5 -142t-59 -267h13q99 170 317 170q196 0 307 -123t111 -340q0 -234 -132 -370.5t-366 -136.5q-162 0 -282.5 75t-186 219t-65.5 347zM600 227q99 0 152 66.5t53 189.5 q0 107 -49.5 168.5t-149.5 61.5q-94 0 -160.5 -61t-66.5 -142q0 -119 62.5 -201t158.5 -82z" />
+<glyph unicode="7" d="M227 0l549 1200h-721v260h1049v-194l-553 -1266h-324z" />
+<glyph unicode="8" d="M586 1481q210 0 338.5 -95.5t128.5 -257.5q0 -112 -62 -199.5t-200 -156.5q164 -88 235.5 -183.5t71.5 -209.5q0 -180 -141 -289.5t-371 -109.5q-240 0 -377 102t-137 289q0 125 66.5 222t213.5 171q-125 79 -180 169t-55 197q0 157 130 254t339 97zM358 389 q0 -86 60 -134t164 -48q115 0 172 49.5t57 130.5q0 67 -56.5 125.5t-183.5 124.5q-213 -98 -213 -248zM584 1255q-79 0 -127.5 -40.5t-48.5 -108.5q0 -60 38.5 -107.5t139.5 -97.5q98 46 137 94t39 111q0 69 -50 109t-128 40z" />
+<glyph unicode="9" d="M1098 838q0 -432 -182 -645t-551 -213q-130 0 -197 14v248q84 -21 176 -21q155 0 255 45.5t153 143t61 268.5h-12q-58 -94 -134 -132t-190 -38q-191 0 -301 122.5t-110 340.5q0 235 133.5 371.5t363.5 136.5q162 0 283.5 -76t186.5 -220.5t65 -344.5zM569 1231 q-96 0 -150 -66t-54 -190q0 -106 49 -168t149 -62q94 0 161 61.5t67 141.5q0 119 -62.5 201t-159.5 82z" />
+<glyph unicode=":" horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode=";" horiz-adv-x="594" d="M444 238l15 -23q-52 -202 -176 -479h-220q65 266 101 502h280zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode="<" d="M1081 203l-993 438v143l993 496v-240l-684 -317l684 -281v-239z" />
+<glyph unicode="=" d="M88 805v219h993v-219h-993zM88 418v219h993v-219h-993z" />
+<glyph unicode=">" d="M88 442l684 281l-684 317v240l993 -496v-143l-993 -438v239z" />
+<glyph unicode="?" horiz-adv-x="977" d="M276 485v74q0 96 41 167t150 151q105 75 138.5 122t33.5 105q0 65 -48 99t-134 34q-150 0 -342 -98l-109 219q223 125 473 125q206 0 327.5 -99t121.5 -264q0 -110 -50 -190t-190 -180q-96 -71 -121.5 -108t-25.5 -97v-60h-265zM244 143q0 84 45 127t131 43 q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M1735 752q0 -144 -46 -263.5t-130 -187.5t-195 -68q-74 0 -131 35.5t-82 93.5h-16q-108 -129 -275 -129q-177 0 -279 106.5t-102 291.5q0 211 134 340t350 129q86 0 189.5 -16.5t170.5 -39.5l-23 -489q0 -139 76 -139q64 0 102 93.5t38 244.5q0 161 -67 284.5 t-188.5 188.5t-277.5 65q-202 0 -351 -83t-228.5 -239.5t-79.5 -361.5q0 -276 147.5 -423.5t427.5 -147.5q106 0 233 23.5t250 68.5v-192q-214 -91 -475 -91q-380 0 -592.5 200t-212.5 556q0 247 108.5 448.5t309 316t461.5 114.5q220 0 393 -90t267 -256t94 -383zM711 627 q0 -211 172 -211q90 0 137 63.5t57 206.5l13 221q-51 11 -115 11q-125 0 -194.5 -78t-69.5 -213z" />
+<glyph unicode="A" horiz-adv-x="1413" d="M1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381z" />
+<glyph unicode="B" horiz-adv-x="1376" d="M184 1462h455q311 0 451.5 -88.5t140.5 -281.5q0 -131 -61.5 -215t-163.5 -101v-10q139 -31 200.5 -116t61.5 -226q0 -200 -144.5 -312t-392.5 -112h-547v1462zM494 883h180q126 0 182.5 39t56.5 129q0 84 -61.5 120.5t-194.5 36.5h-163v-325zM494 637v-381h202 q128 0 189 49t61 150q0 182 -260 182h-192z" />
+<glyph unicode="C" horiz-adv-x="1305" d="M805 1225q-175 0 -271 -131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 -488 193.5t-169 555.5q0 228 83 399.5t238.5 263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29z" />
+<glyph unicode="D" horiz-adv-x="1516" d="M1397 745q0 -361 -205.5 -553t-593.5 -192h-414v1462h459q358 0 556 -189t198 -528zM1075 737q0 471 -416 471h-165v-952h133q448 0 448 481z" />
+<glyph unicode="E" horiz-adv-x="1147" d="M1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256z" />
+<glyph unicode="F" horiz-adv-x="1124" d="M489 0h-305v1462h838v-254h-533v-377h496v-253h-496v-578z" />
+<glyph unicode="G" horiz-adv-x="1483" d="M739 821h580v-758q-141 -46 -265.5 -64.5t-254.5 -18.5q-331 0 -505.5 194.5t-174.5 558.5q0 354 202.5 552t561.5 198q225 0 434 -90l-103 -248q-160 80 -333 80q-201 0 -322 -135t-121 -363q0 -238 97.5 -363.5t283.5 -125.5q97 0 197 20v305h-277v258z" />
+<glyph unicode="H" horiz-adv-x="1567" d="M1382 0h-309v631h-579v-631h-310v1462h310v-573h579v573h309v-1462z" />
+<glyph unicode="I" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310z" />
+<glyph unicode="J" horiz-adv-x="678" d="M31 -430q-105 0 -183 22v258q80 -20 146 -20q102 0 146 63.5t44 198.5v1370h310v-1368q0 -256 -117 -390t-346 -134z" />
+<glyph unicode="K" horiz-adv-x="1360" d="M1360 0h-352l-383 616l-131 -94v-522h-310v1462h310v-669l122 172l396 497h344l-510 -647z" />
+<glyph unicode="L" horiz-adv-x="1157" d="M184 0v1462h310v-1206h593v-256h-903z" />
+<glyph unicode="M" horiz-adv-x="1931" d="M803 0l-352 1147h-9q19 -350 19 -467v-680h-277v1462h422l346 -1118h6l367 1118h422v-1462h-289v692q0 49 1.5 113t13.5 340h-9l-377 -1145h-284z" />
+<glyph unicode="N" horiz-adv-x="1665" d="M1481 0h-394l-636 1106h-9q19 -293 19 -418v-688h-277v1462h391l635 -1095h7q-15 285 -15 403v692h279v-1462z" />
+<glyph unicode="O" horiz-adv-x="1630" d="M1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" />
+<glyph unicode="P" horiz-adv-x="1286" d="M494 774h102q143 0 214 56.5t71 164.5q0 109 -59.5 161t-186.5 52h-141v-434zM1194 1006q0 -236 -147.5 -361t-419.5 -125h-133v-520h-310v1462h467q266 0 404.5 -114.5t138.5 -341.5z" />
+<glyph unicode="Q" horiz-adv-x="1630" d="M1511 733q0 -258 -91.5 -432.5t-268.5 -255.5l352 -393h-397l-268 328h-23q-336 0 -516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" />
+<glyph unicode="R" horiz-adv-x="1352" d="M494 813h100q147 0 217 49t70 154q0 104 -71.5 148t-221.5 44h-94v-395zM494 561v-561h-310v1462h426q298 0 441 -108.5t143 -329.5q0 -129 -71 -229.5t-201 -157.5q330 -493 430 -637h-344l-349 561h-165z" />
+<glyph unicode="S" horiz-adv-x="1128" d="M1047 406q0 -198 -142.5 -312t-396.5 -114q-234 0 -414 88v288q148 -66 250.5 -93t187.5 -27q102 0 156.5 39t54.5 116q0 43 -24 76.5t-70.5 64.5t-189.5 99q-134 63 -201 121t-107 135t-40 180q0 194 131.5 305t363.5 111q114 0 217.5 -27t216.5 -76l-100 -241 q-117 48 -193.5 67t-150.5 19q-88 0 -135 -41t-47 -107q0 -41 19 -71.5t60.5 -59t196.5 -102.5q205 -98 281 -196.5t76 -241.5z" />
+<glyph unicode="T" horiz-adv-x="1186" d="M748 0h-310v1204h-397v258h1104v-258h-397v-1204z" />
+<glyph unicode="U" horiz-adv-x="1548" d="M1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309z" />
+<glyph unicode="V" horiz-adv-x="1331" d="M1018 1462h313l-497 -1462h-338l-496 1462h313l275 -870q23 -77 47.5 -179.5t30.5 -142.5q11 92 75 322z" />
+<glyph unicode="W" horiz-adv-x="1980" d="M1608 0h-353l-198 768q-11 41 -37.5 169.5t-30.5 172.5q-6 -54 -30 -173.5t-37 -170.5l-197 -766h-352l-373 1462h305l187 -798q49 -221 71 -383q6 57 27.5 176.5t40.5 185.5l213 819h293l213 -819q14 -55 35 -168t32 -194q10 78 32 194.5t40 188.5l186 798h305z" />
+<glyph unicode="X" horiz-adv-x="1366" d="M1366 0h-354l-340 553l-340 -553h-332l485 754l-454 708h342l315 -526l309 526h334l-459 -725z" />
+<glyph unicode="Y" horiz-adv-x="1278" d="M639 860l305 602h334l-485 -893v-569h-308v559l-485 903h336z" />
+<glyph unicode="Z" horiz-adv-x="1186" d="M1137 0h-1088v201l701 1005h-682v256h1050v-200l-700 -1006h719v-256z" />
+<glyph unicode="[" horiz-adv-x="678" d="M627 -324h-484v1786h484v-211h-224v-1364h224v-211z" />
+<glyph unicode="\" horiz-adv-x="846" d="M289 1462l545 -1462h-277l-545 1462h277z" />
+<glyph unicode="]" horiz-adv-x="678" d="M51 -113h223v1364h-223v211h484v-1786h-484v211z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M8 520l438 950h144l495 -950h-239l-322 643l-280 -643h-236z" />
+<glyph unicode="_" horiz-adv-x="842" d="M846 -324h-850v140h850v-140z" />
+<glyph unicode="`" horiz-adv-x="1243" d="M707 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="a" horiz-adv-x="1237" d="M870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48t-65 -134 q0 -129 148 -129q106 0 169.5 61t63.5 162v92z" />
+<glyph unicode="b" horiz-adv-x="1296" d="M782 1139q198 0 310 -154.5t112 -423.5q0 -277 -115.5 -429t-314.5 -152q-197 0 -309 143h-21l-51 -123h-233v1556h305v-362q0 -69 -12 -221h12q107 166 317 166zM684 895q-113 0 -165 -69.5t-54 -229.5v-33q0 -180 53.5 -258t169.5 -78q94 0 149.5 86.5t55.5 251.5 t-56 247.5t-153 82.5z" />
+<glyph unicode="c" horiz-adv-x="1053" d="M614 -20q-522 0 -522 573q0 285 142 435.5t407 150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18z" />
+<glyph unicode="d" horiz-adv-x="1296" d="M514 -20q-197 0 -309.5 153t-112.5 424q0 275 114.5 428.5t315.5 153.5q211 0 322 -164h10q-23 125 -23 223v358h306v-1556h-234l-59 145h-13q-104 -165 -317 -165zM621 223q117 0 171.5 68t59.5 231v33q0 180 -55.5 258t-180.5 78q-102 0 -158.5 -86.5t-56.5 -251.5 t57 -247.5t163 -82.5z" />
+<glyph unicode="e" horiz-adv-x="1210" d="M623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z" />
+<glyph unicode="f" horiz-adv-x="793" d="M778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229z" />
+<glyph unicode="g" horiz-adv-x="1157" d="M1133 1118v-155l-175 -45q48 -75 48 -168q0 -180 -125.5 -280.5t-348.5 -100.5l-55 3l-45 5q-47 -36 -47 -80q0 -66 168 -66h190q184 0 280.5 -79t96.5 -232q0 -196 -163.5 -304t-469.5 -108q-234 0 -357.5 81.5t-123.5 228.5q0 101 63 169t185 97q-47 20 -82 65.5 t-35 96.5q0 64 37 106.5t107 83.5q-88 38 -139.5 122t-51.5 198q0 183 119 283t340 100q47 0 111.5 -8.5t82.5 -12.5h390zM270 -158q0 -63 60.5 -99t169.5 -36q164 0 257 45t93 123q0 63 -55 87t-170 24h-158q-84 0 -140.5 -39.5t-56.5 -104.5zM381 752q0 -91 41.5 -144 t126.5 -53q86 0 126 53t40 144q0 202 -166 202q-168 0 -168 -202z" />
+<glyph unicode="h" horiz-adv-x="1346" d="M1192 0h-305v653q0 242 -180 242q-128 0 -185 -87t-57 -282v-526h-305v1556h305v-317q0 -37 -7 -174l-7 -90h16q102 164 324 164q197 0 299 -106t102 -304v-729z" />
+<glyph unicode="i" horiz-adv-x="625" d="M147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM465 0h-305v1118h305v-1118z" />
+<glyph unicode="j" horiz-adv-x="625" d="M70 -492q-117 0 -201 25v240q70 -19 143 -19q77 0 112.5 43t35.5 127v1194h305v-1239q0 -178 -103 -274.5t-292 -96.5zM147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150z" />
+<glyph unicode="k" horiz-adv-x="1270" d="M453 608l133 170l313 340h344l-444 -485l471 -633h-352l-322 453l-131 -105v-348h-305v1556h305v-694l-16 -254h4z" />
+<glyph unicode="l" horiz-adv-x="625" d="M465 0h-305v1556h305v-1556z" />
+<glyph unicode="m" horiz-adv-x="2011" d="M1161 0h-305v653q0 121 -40.5 181.5t-127.5 60.5q-117 0 -170 -86t-53 -283v-526h-305v1118h233l41 -143h17q45 77 130 120.5t195 43.5q251 0 340 -164h27q45 78 132.5 121t197.5 43q190 0 287.5 -97.5t97.5 -312.5v-729h-306v653q0 121 -40.5 181.5t-127.5 60.5 q-112 0 -167.5 -80t-55.5 -254v-561z" />
+<glyph unicode="n" horiz-adv-x="1346" d="M1192 0h-305v653q0 121 -43 181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305v1118h233l41 -143h17q51 81 140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729z" />
+<glyph unicode="o" horiz-adv-x="1268" d="M403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z" />
+<glyph unicode="p" horiz-adv-x="1296" d="M774 -20q-197 0 -309 143h-16q16 -140 16 -162v-453h-305v1610h248l43 -145h14q107 166 317 166q198 0 310 -153t112 -425q0 -179 -52.5 -311t-149.5 -201t-228 -69zM684 895q-113 0 -165 -69.5t-54 -229.5v-33q0 -180 53.5 -258t169.5 -78q205 0 205 338 q0 165 -50.5 247.5t-158.5 82.5z" />
+<glyph unicode="q" horiz-adv-x="1296" d="M623 219q116 0 170 66.5t59 232.5v37q0 180 -55.5 258t-178.5 78q-215 0 -215 -338q0 -168 53.5 -251t166.5 -83zM514 -20q-198 0 -310 152.5t-112 424.5q0 274 114.5 428t313.5 154q106 0 185 -40t139 -124h8l27 143h258v-1610h-306v469q0 61 13 168h-13 q-49 -81 -130 -123t-187 -42z" />
+<glyph unicode="r" horiz-adv-x="930" d="M784 1139q62 0 103 -9l-23 -286q-37 10 -90 10q-146 0 -227.5 -75t-81.5 -210v-569h-305v1118h231l45 -188h15q52 94 140.5 151.5t192.5 57.5z" />
+<glyph unicode="s" horiz-adv-x="1018" d="M940 332q0 -172 -119.5 -262t-357.5 -90q-122 0 -208 16.5t-161 48.5v252q85 -40 191.5 -67t187.5 -27q166 0 166 96q0 36 -22 58.5t-76 51t-144 66.5q-129 54 -189.5 100t-88 105.5t-27.5 146.5q0 149 115.5 230.5t327.5 81.5q202 0 393 -88l-92 -220q-84 36 -157 59 t-149 23q-135 0 -135 -73q0 -41 43.5 -71t190.5 -89q131 -53 192 -99t90 -106t29 -143z" />
+<glyph unicode="t" horiz-adv-x="889" d="M631 223q80 0 192 35v-227q-114 -51 -280 -51q-183 0 -266.5 92.5t-83.5 277.5v539h-146v129l168 102l88 236h195v-238h313v-229h-313v-539q0 -65 36.5 -96t96.5 -31z" />
+<glyph unicode="u" horiz-adv-x="1346" d="M952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234z" />
+<glyph unicode="v" horiz-adv-x="1165" d="M426 0l-426 1118h319l216 -637q36 -121 45 -229h6q5 96 45 229l215 637h319l-426 -1118h-313z" />
+<glyph unicode="w" horiz-adv-x="1753" d="M1079 0l-86 391l-116 494h-7l-204 -885h-328l-318 1118h304l129 -495q31 -133 63 -367h6q4 76 35 241l16 85l138 536h336l131 -536q4 -22 12.5 -65t16.5 -91.5t14.5 -95t7.5 -74.5h6q9 72 32 197.5t33 169.5l134 495h299l-322 -1118h-332z" />
+<glyph unicode="x" horiz-adv-x="1184" d="M389 571l-360 547h346l217 -356l219 356h346l-364 -547l381 -571h-347l-235 383l-236 -383h-346z" />
+<glyph unicode="y" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55z" />
+<glyph unicode="z" horiz-adv-x="999" d="M938 0h-883v180l518 705h-487v233h834v-198l-504 -687h522v-233z" />
+<glyph unicode="{" horiz-adv-x="807" d="M287 270q0 87 -65.5 133t-190.5 46v239q126 0 191 44t65 126v8v318q0 153 97 215.5t341 62.5v-225q-99 -3 -136.5 -38t-37.5 -103v-299q-6 -188 -234 -222v-12q234 -35 234 -212v-9v-299q0 -68 37 -103t137 -38v-226q-244 0 -341 62.5t-97 216.5v315z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M455 1550h219v-2015h-219v2015z" />
+<glyph unicode="}" horiz-adv-x="807" d="M520 -45q0 -112 -41 -169t-135.5 -83.5t-261.5 -26.5v226q99 2 136.5 36t37.5 105v299v11q0 86 59 139.5t174 70.5v12q-227 34 -233 222v299q0 70 -37 104t-137 37v225q167 0 262 -26.5t135.5 -84t40.5 -167.5v-318v-10q0 -84 61.5 -126t194.5 -42v-239 q-125 0 -190.5 -41t-65.5 -138v-315z" />
+<glyph unicode="~" d="M322 672q-55 0 -117.5 -33.5t-116.5 -87.5v231q103 109 256 109q73 0 137.5 -16t139.5 -48q129 -55 227 -55q53 0 116 32t117 89v-231q-101 -109 -256 -109q-66 0 -126 13t-150 50q-131 56 -227 56z" />
+<glyph unicode="¡" horiz-adv-x="586" d="M168 606h244l51 -975h-346zM467 948q0 -84 -45 -127t-131 -43q-83 0 -128.5 44t-45.5 126q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126z" />
+<glyph unicode="¢" d="M563 176q-420 59 -420 565q0 261 104.5 403t315.5 173v166h178v-158q166 -9 299 -74l-90 -235q-72 29 -134 47t-124 18q-121 0 -179 -83.5t-58 -254.5q0 -327 237 -327q82 0 148 15.5t166 60.5v-254q-127 -61 -265 -70v-188h-178v196z" />
+<glyph unicode="£" d="M700 1483q195 0 390 -82l-93 -230q-157 64 -272 64q-78 0 -120 -44.5t-42 -127.5v-193h375v-219h-375v-143q0 -170 -151 -248h718v-260h-1048v248q103 44 141.5 101t38.5 157v145h-178v219h178v195q0 201 114.5 309.5t323.5 108.5z" />
+<glyph unicode="¤" d="M188 723q0 102 54 197l-129 127l147 147l127 -127q91 53 197 53q105 0 196 -55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 -145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 -54 197zM395 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
+<glyph unicode="¥" d="M584 860l264 602h313l-383 -747h195v-178h-246v-138h246v-178h-246v-221h-287v221h-247v178h247v138h-247v178h190l-377 747h316z" />
+<glyph unicode="¦" horiz-adv-x="1128" d="M455 1550h219v-815h-219v815zM455 350h219v-815h-219v815z" />
+<glyph unicode="§" horiz-adv-x="995" d="M121 805q0 79 36 144.5t97 105.5q-133 84 -133 233q0 131 111.5 210t293.5 79q170 0 363 -84l-82 -190q-68 32 -138.5 57.5t-148.5 25.5q-81 0 -118 -23t-37 -71q0 -49 49.5 -86t163.5 -82q163 -64 240 -148.5t77 -193.5q0 -177 -125 -260q62 -40 93.5 -92.5t31.5 -126.5 q0 -148 -119.5 -235.5t-320.5 -87.5q-203 0 -349 79v207q81 -41 180 -69.5t169 -28.5q194 0 194 117q0 39 -18.5 63t-63.5 49.5t-125 59.5q-183 74 -252 152.5t-69 195.5zM344 827q0 -67 65 -119t181 -98q78 57 78 146q0 68 -50.5 115t-183.5 96q-37 -14 -63.5 -53.5 t-26.5 -86.5z" />
+<glyph unicode="¨" horiz-adv-x="1243" d="M279 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM682 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M895 1010q-97 0 -150 -74t-53 -205q0 -280 203 -280q57 0 123 15t123 44v-191q-120 -57 -252 -57q-204 0 -316 125t-112 346q0 220 110.5 342.5t309.5 122.5q149 0 305 -78l-74 -168q-113 58 -217 58zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 -223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223t-304 81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304z" />
+<glyph unicode="ª" horiz-adv-x="784" d="M561 764l-31 110q-43 -58 -105 -90t-136 -32q-117 0 -179.5 58.5t-62.5 164.5q0 109 82.5 163.5t267.5 63.5l99 4q0 117 -127 117q-81 0 -217 -61l-66 135q66 32 145.5 57t178.5 25q137 0 211.5 -71t74.5 -202v-442h-135zM252 977q0 -38 23 -56t55 -18q77 0 121.5 41.5 t44.5 106.5v36l-99 -6q-145 -10 -145 -104z" />
+<glyph unicode="«" horiz-adv-x="1260" d="M82 573l371 455l219 -119l-279 -348l279 -348l-219 -119l-371 453v26zM588 573l370 455l220 -119l-279 -348l279 -348l-220 -119l-370 453v26z" />
+<glyph unicode="¬" d="M1081 248h-219v364h-774v219h993v-583z" />
+<glyph unicode="­" horiz-adv-x="659" d="M61 424zM61 424v250h537v-250h-537z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M1157 905q0 -170 -143 -233l237 -400h-254l-178 338h-47v-338h-229v916h264q181 0 265.5 -70t84.5 -213zM772 778h31q66 0 94.5 28.5t28.5 94.5q0 65 -28 92t-97 27h-29v-242zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370 t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 -223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223t-304 81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304z" />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v201h1036v-201z" />
+<glyph unicode="°" horiz-adv-x="877" d="M92 1137q0 92 46 172t126 127t174 47q92 0 172.5 -46t127 -127t46.5 -173q0 -93 -46.5 -173.5t-126.5 -125.5t-173 -45q-145 0 -245.5 99.5t-100.5 244.5zM283 1137q0 -64 44.5 -109t110.5 -45t111 46t45 108q0 63 -45.5 110t-110.5 47q-64 0 -109.5 -46t-45.5 -111z" />
+<glyph unicode="±" d="M475 674h-387v219h387v389h219v-389h387v-219h-387v-385h-219v385zM88 0v219h993v-219h-993z" />
+<glyph unicode="²" horiz-adv-x="776" d="M702 586h-647v168l224 219q102 100 130.5 144.5t28.5 94.5q0 38 -24 58t-64 20q-81 0 -180 -88l-123 152q147 129 336 129q137 0 216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200z" />
+<glyph unicode="³" horiz-adv-x="776" d="M666 1249q0 -143 -170 -198v-13q94 -20 146 -75t52 -134q0 -121 -88 -190.5t-274 -69.5q-143 0 -273 70v190q148 -90 271 -90q143 0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 63t-76 25q-47 0 -89 -19t-99 -59l-101 141 q62 47 137.5 78t178.5 31q127 0 208 -64t81 -168z" />
+<glyph unicode="´" horiz-adv-x="1243" d="M332 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="µ" horiz-adv-x="1352" d="M465 465q0 -121 44 -181.5t138 -60.5q126 0 183 86.5t57 282.5v526h305v-1118h-231l-43 150h-15q-42 -85 -102 -127.5t-148 -42.5q-62 0 -114 23t-84 67l5 -85l5 -157v-320h-305v1610h305v-653z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1167 -260h-161v1616h-166v-1616h-162v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h604v-1816z" />
+<glyph unicode="·" horiz-adv-x="584" d="M117 723q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M418 -250q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21v168q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5z" />
+<glyph unicode="¹" horiz-adv-x="776" d="M584 586h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61l-109 127l301 235h191v-876z" />
+<glyph unicode="º" horiz-adv-x="795" d="M737 1116q0 -171 -91.5 -267.5t-250.5 -96.5q-153 0 -245.5 98.5t-92.5 265.5q0 169 89.5 266t252.5 97q152 0 245 -98.5t93 -264.5zM260 1116q0 -100 32.5 -150.5t104.5 -50.5t103.5 50.5t31.5 150.5t-31.5 149.5t-103.5 49.5t-104.5 -49.5t-32.5 -149.5z" />
+<glyph unicode="»" horiz-adv-x="1260" d="M1178 547l-371 -453l-219 119l278 348l-278 348l219 119l371 -455v-26zM672 547l-371 -453l-219 119l278 348l-278 348l219 119l371 -455v-26z" />
+<glyph unicode="¼" horiz-adv-x="1804" d="M46 0zM538 586h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61l-109 127l301 235h191v-876zM1370 1462l-811 -1462h-239l811 1462h239zM1682 152h-125v-151h-238v151h-383v154l385 577h236v-563h125v-168zM1319 320v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77l-127 -191 h198z" />
+<glyph unicode="½" horiz-adv-x="1804" d="M46 0zM538 586h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61l-109 127l301 235h191v-876zM1370 1462l-811 -1462h-239l811 1462h239zM1716 1h-647v168l224 219q102 100 130.5 144.5t28.5 94.5q0 38 -24 58t-64 20q-81 0 -180 -88l-123 152q147 129 336 129 q137 0 216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200z" />
+<glyph unicode="¾" horiz-adv-x="1804" d="M90 0zM697 1249q0 -143 -170 -198v-13q94 -20 146 -75t52 -134q0 -121 -88 -190.5t-274 -69.5q-143 0 -273 70v190q148 -90 271 -90q143 0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 63t-76 25q-47 0 -89 -19t-99 -59l-101 141 q62 47 137.5 78t178.5 31q127 0 208 -64t81 -168zM1441 1462l-811 -1462h-239l811 1462h239zM1712 152h-125v-151h-238v151h-383v154l385 577h236v-563h125v-168zM1349 320v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77l-127 -191h198z" />
+<glyph unicode="¿" horiz-adv-x="977" d="M713 606v-74q0 -98 -44.5 -169t-152.5 -148q-109 -78 -137.5 -122t-28.5 -107q0 -57 43.5 -94t132.5 -37q79 0 169 29t186 71l102 -221q-98 -56 -221.5 -90.5t-229.5 -34.5q-220 0 -345.5 96.5t-125.5 265.5q0 108 48.5 187t191.5 184q95 70 121.5 107t26.5 98v59h264z M745 948q0 -84 -45 -127t-131 -43q-83 0 -128.5 44t-45.5 126q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126z" />
+<glyph unicode="À" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM713 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="Á" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM541 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Â" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM938 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Ã" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM543 1684q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16 q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="Ä" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM365 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM768 1743 q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="Å" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM959 1567q0 -108 -71 -174t-183 -66t-180 64t-68 174q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169zM801 1565 q0 45 -27 70.5t-69 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69 26t27 71z" />
+<glyph unicode="Æ" horiz-adv-x="1950" d="M1829 0h-873v348h-491l-150 -348h-315l655 1462h1174v-254h-563v-321h526v-254h-526v-377h563v-256zM578 608h378v590h-127z" />
+<glyph unicode="Ç" horiz-adv-x="1305" d="M119 0zM805 1225q-175 0 -271 -131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 -488 193.5t-169 555.5q0 228 83 399.5t238.5 263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29zM959 -250q0 -128 -75.5 -185t-233.5 -57 q-78 0 -146 21v168q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5z" />
+<glyph unicode="È" horiz-adv-x="1147" d="M184 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM634 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="É" horiz-adv-x="1147" d="M184 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM424 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Ê" horiz-adv-x="1147" d="M175 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM841 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Ë" horiz-adv-x="1147" d="M184 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM272 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM675 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99 q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="Ì" horiz-adv-x="678" d="M0 0zM184 0v1462h310v-1462h-310zM317 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="Í" horiz-adv-x="678" d="M167 0zM184 0v1462h310v-1462h-310zM167 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Î" horiz-adv-x="678" d="M0 0zM184 0v1462h310v-1462h-310zM570 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Ï" horiz-adv-x="678" d="M0 0zM184 0v1462h310v-1462h-310zM-3 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM400 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5 t-40.5 100.5z" />
+<glyph unicode="Ð" horiz-adv-x="1516" d="M47 850h137v612h459q358 0 556 -189t198 -528q0 -361 -205.5 -553t-593.5 -192h-414v596h-137v254zM1075 737q0 232 -104 351.5t-314 119.5h-163v-358h237v-254h-237v-340h131q450 0 450 481z" />
+<glyph unicode="Ñ" horiz-adv-x="1665" d="M184 0zM1481 0h-394l-636 1106h-9q19 -293 19 -418v-688h-277v1462h391l635 -1095h7q-15 285 -15 403v692h279v-1462zM668 1684q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149 q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="Ò" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM824 1579q-63 44 -185 142.5t-190 164.5v21h342 q63 -101 235 -301v-27h-202z" />
+<glyph unicode="Ó" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM658 1579v27q172 200 235 301h342v-21 q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Ô" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM1047 1579q-157 93 -234 176q-78 -81 -229 -176h-203 v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Õ" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM652 1684q-31 0 -59.5 -26.5t-41.5 -80.5h-149 q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="Ö" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM474 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37 t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM877 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="×" d="M428 723l-299 301l152 154l301 -299l305 299l153 -150l-305 -305l301 -303l-149 -152l-305 301l-301 -299l-150 152z" />
+<glyph unicode="Ø" horiz-adv-x="1630" d="M1511 733q0 -363 -180 -558t-516 -195q-197 0 -336 65l-90 -135l-162 108l90 136q-198 194 -198 581q0 365 180.5 557.5t517.5 192.5q198 0 344 -70l84 125l160 -104l-88 -131q194 -194 194 -572zM444 733q0 -191 56 -307l506 756q-84 45 -189 45q-185 0 -279 -124.5 t-94 -369.5zM1186 733q0 180 -51 297l-500 -751q76 -39 180 -39q371 0 371 493z" />
+<glyph unicode="Ù" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM750 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="Ú" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM602 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Û" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM1006 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357 q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Ü" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM433 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5 q-64 0 -101.5 35t-37.5 98zM836 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="Ý" horiz-adv-x="1278" d="M0 0zM639 860l305 602h334l-485 -893v-569h-308v559l-485 903h336zM461 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Þ" horiz-adv-x="1286" d="M1194 770q0 -229 -142.5 -353t-404.5 -124h-153v-293h-310v1462h310v-229h178q254 0 388 -119t134 -344zM494 543h100q145 0 216 52.5t71 174.5q0 107 -63.5 159t-199.5 52h-124v-438z" />
+<glyph unicode="ß" horiz-adv-x="1456" d="M1249 1241q0 -64 -21 -112.5t-53 -86.5t-69 -67t-69 -53t-53 -45t-21 -43q0 -27 26.5 -53t92.5 -66q146 -91 198.5 -140t78 -110t25.5 -139q0 -172 -116.5 -259t-343.5 -87q-99 0 -171 14.5t-132 48.5v242q53 -36 135.5 -61t146.5 -25q168 0 168 123q0 41 -16 66.5 t-57 55.5t-115 72q-126 72 -175 131.5t-49 140.5q0 64 35 117t105 102q77 55 108 95t31 86q0 60 -63.5 100.5t-163.5 40.5q-116 0 -181 -52.5t-65 -148.5v-1128h-305v1139q0 201 146.5 314.5t404.5 113.5q244 0 391 -88.5t147 -237.5z" />
+<glyph unicode="à" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM614 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="á" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM441 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="â" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM843 1240q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="ã" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM467 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36 t-73 16.5z" />
+<glyph unicode="ä" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM285 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM688 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36 q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="å" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM883 1479q0 -108 -71 -174t-183 -66t-180 64t-68 174q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169zM725 1477q0 45 -27 70.5t-69 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69 26t27 71z" />
+<glyph unicode="æ" horiz-adv-x="1878" d="M1329 -20q-137 0 -249.5 50.5t-184.5 155.5q-98 -117 -196.5 -161.5t-256.5 -44.5q-161 0 -258.5 94.5t-97.5 259.5q0 178 121 262.5t362 93.5l191 6v84q0 69 -44.5 102t-121.5 33q-140 0 -305 -77l-99 202q189 101 422 101q227 0 342 -131q66 64 152.5 96.5t206.5 32.5 q221 0 349 -137.5t128 -370.5v-148h-723q5 -130 77 -203t202 -73q196 0 380 88v-236q-79 -39 -171 -59t-226 -20zM760 518l-113 -4q-124 -4 -186 -47.5t-62 -134.5q0 -129 140 -129q101 0 161 61t60 162v92zM1307 922q-217 0 -234 -236h430q-2 112 -55 174t-141 62z" />
+<glyph unicode="ç" horiz-adv-x="1053" d="M92 0zM614 -20q-522 0 -522 573q0 285 142 435.5t407 150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18zM805 -250q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21 v168q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5z" />
+<glyph unicode="è" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M620 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="é" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M447 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="ê" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M860 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="ë" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M297 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="ì" horiz-adv-x="625" d="M0 0zM465 0h-305v1118h305v-1118zM274 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="í" horiz-adv-x="625" d="M145 0zM465 0h-305v1118h305v-1118zM145 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="î" horiz-adv-x="625" d="M0 0zM465 0h-305v1118h305v-1118zM544 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="ï" horiz-adv-x="625" d="M0 0zM465 0h-305v1118h305v-1118zM-29 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM374 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5 t-40.5 100.5z" />
+<glyph unicode="ð" horiz-adv-x="1268" d="M510 1303q-80 53 -152 92l101 176q144 -65 258 -141l225 139l100 -154l-170 -104q156 -143 230 -324.5t74 -413.5q0 -280 -145 -436.5t-400 -156.5q-245 0 -392 137t-147 372q0 233 130 369.5t351 136.5q205 0 275 -98l8 4q-67 162 -192 281l-230 -142l-100 156zM864 532 q0 108 -61 173t-168 65q-121 0 -176.5 -68.5t-55.5 -214.5q0 -140 60 -211t172 -71q123 0 176 82t53 245z" />
+<glyph unicode="ñ" horiz-adv-x="1346" d="M160 0zM1192 0h-305v653q0 121 -43 181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305v1118h233l41 -143h17q51 81 140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729zM508 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82 q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="ò" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M612 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="ó" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M467 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="ô" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M864 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="õ" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M469 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="ö" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M291 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM694 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="÷" d="M88 612v219h993v-219h-993zM444 373q0 76 37 113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 -110.5t-102 -40.5t-102.5 39t-37.5 112z" />
+<glyph unicode="ø" horiz-adv-x="1268" d="M1176 561q0 -273 -144 -427t-401 -154q-126 0 -234 45l-67 -101l-154 105l68 100q-152 156 -152 432q0 274 143 426t402 152q132 0 248 -52l55 82l152 -108l-58 -84q142 -155 142 -416zM403 561q0 -94 19 -166l317 475q-43 23 -106 23q-122 0 -176 -82.5t-54 -249.5z M864 561q0 81 -12 141l-309 -462q38 -15 92 -15q122 0 175.5 84.5t53.5 251.5z" />
+<glyph unicode="ù" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM620 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="ú" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM498 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="û" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM901 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357 q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="ü" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM326 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5 t-103 -36.5q-64 0 -101.5 35t-37.5 98zM729 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="ý" horiz-adv-x="1165" d="M0 0zM0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM393 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5 h-203z" />
+<glyph unicode="þ" horiz-adv-x="1296" d="M465 973q50 81 131 123.5t186 42.5q198 0 310 -154.5t112 -423.5q0 -273 -111.5 -427t-310.5 -154q-213 0 -317 137h-14l7 -62l7 -94v-453h-305v2048h305v-391l-7 -120l-7 -72h14zM684 895q-113 0 -165 -69.5t-54 -229.5v-33q0 -180 53.5 -258t169.5 -78q205 0 205 338 q0 165 -50.5 247.5t-158.5 82.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1165" d="M0 0zM0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM243 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5 t-103 -36.5q-64 0 -101.5 35t-37.5 98zM646 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="ı" horiz-adv-x="625" d="M465 0h-305v1118h305v-1118z" />
+<glyph unicode="Œ" horiz-adv-x="1993" d="M1872 0h-873q-38 -9 -109 -14.5t-116 -5.5q-319 0 -487 197t-168 558q0 363 169.5 556.5t487.5 193.5q61 0 127 -7t101 -16h868v-254h-563v-321h526v-254h-526v-377h563v-256zM776 1227q-166 0 -252 -125.5t-86 -368.5q0 -244 86 -368.5t250 -124.5q65 0 126 10.5 t99 28.5v907q-35 19 -101.5 30t-121.5 11z" />
+<glyph unicode="œ" horiz-adv-x="2003" d="M1446 -20q-271 0 -420 155q-141 -155 -391 -155q-162 0 -286 70t-190.5 202t-66.5 309q0 277 141.5 427.5t399.5 150.5q112 0 212 -39.5t171 -116.5q144 156 383 156q244 0 380 -135t136 -373v-148h-746v-8q7 -127 81.5 -197.5t207.5 -70.5q107 0 200 21t193 67v-236 q-81 -39 -175.5 -59t-229.5 -20zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1405 922q-94 0 -156 -57.5t-71 -178.5h450q-2 111 -60.5 173.5t-162.5 62.5z" />
+<glyph unicode="Ÿ" horiz-adv-x="1278" d="M0 0zM639 860l305 602h334l-485 -893v-569h-308v559l-485 903h336zM297 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97 t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="ˆ" horiz-adv-x="1243" d="M852 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M842 1479q0 -108 -71 -174t-183 -66t-180 64t-68 174q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169zM684 1477q0 45 -27 70.5t-69 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69 26t27 71z" />
+<glyph unicode="˜" horiz-adv-x="1243" d="M457 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M82 436v230h860v-230h-860z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M82 436v230h1884v-230h-1884z" />
+<glyph unicode="‘" horiz-adv-x="444" d="M39 961l-14 22q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280z" />
+<glyph unicode="’" horiz-adv-x="444" d="M406 1462l14 -22q-50 -197 -176 -479h-219q69 296 100 501h281z" />
+<glyph unicode="‚" horiz-adv-x="596" d="M459 215q-52 -202 -176 -479h-220q65 266 101 502h280z" />
+<glyph unicode="“" horiz-adv-x="911" d="M492 983q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280zM25 983q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280z" />
+<glyph unicode="”" horiz-adv-x="911" d="M420 1440q-50 -197 -176 -479h-219q69 296 100 501h281zM887 1440q-50 -197 -176 -479h-219q69 296 100 501h280z" />
+<glyph unicode="„" horiz-adv-x="1061" d="M459 215q-52 -202 -176 -479h-220q65 266 101 502h280zM926 215q-52 -202 -176 -479h-220q65 266 101 502h280z" />
+<glyph unicode="•" horiz-adv-x="770" d="M98 748q0 154 74 235.5t213 81.5q137 0 212 -82t75 -235q0 -152 -75.5 -235t-211.5 -83q-138 0 -212.5 83t-74.5 235z" />
+<glyph unicode="…" horiz-adv-x="1751" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM700 143q0 84 45 127t132 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-85 0 -131 44.5t-46 125.5zM1284 143q0 84 45 127t131 43 q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="754" d="M82 573l371 455l219 -119l-279 -348l279 -348l-219 -119l-371 453v26z" />
+<glyph unicode="›" horiz-adv-x="754" d="M672 547l-371 -453l-219 119l278 348l-278 348l219 119l371 -455v-26z" />
+<glyph unicode="⁄" horiz-adv-x="266" d="M657 1462l-811 -1462h-239l811 1462h239z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="776" d="M758 737h-125v-151h-238v151h-383v154l385 577h236v-563h125v-168zM395 905v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77l-127 -191h198z" />
+<glyph unicode="€" d="M803 1225q-122 0 -201 -70.5t-102 -204.5h403v-176h-418l-2 -35v-47l2 -33h355v-178h-338q51 -243 321 -243q143 0 275 57v-256q-116 -59 -293 -59q-245 0 -403 133t-199 368h-137v178h118q-4 23 -4 62l2 53h-116v176h133q37 242 199 382.5t405 140.5q188 0 352 -82 l-98 -232q-69 31 -129 48.5t-125 17.5z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M381 741h-168v572h-197v149h564v-149h-199v-572zM956 741l-165 529h-7l4 -111v-418h-163v721h247l160 -510l170 510h240v-721h-168v408l4 121h-6l-174 -529h-142z" />
+<glyph unicode="" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" />
+<glyph horiz-adv-x="1296" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf
new file mode 100755
index 0000000..2109c95
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.woff
new file mode 100755
index 0000000..1205787
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Bold-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.eot
new file mode 100755
index 0000000..77184af
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.svg
new file mode 100755
index 0000000..8f080c1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansextrabold_italic" horiz-adv-x="1243" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1505" d="M0 0zM-2 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h211l-66 -291h-209l-205 -959 q-43 -192 -153.5 -283.5t-292.5 -91.5zM1250 0h-387l239 1133h389zM1149 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
+<glyph unicode="fl" horiz-adv-x="1505" d="M0 0zM-2 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h211l-66 -291h-209l-205 -959 q-43 -192 -153.5 -283.5t-292.5 -91.5zM1250 0h-387l329 1556h387z" />
+<glyph unicode="ffi" horiz-adv-x="2163" d="M715 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 30t51.5 95l191 897h-330l-205 -959q-43 -192 -153.5 -283.5t-292.5 -91.5q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5 q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h331l17 69q41 185 142.5 275t279.5 90q80 0 155 -16t127 -42l-98 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h210l-65 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5zM1907 0h-387l239 1133h389zM1806 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
+<glyph unicode="ffl" horiz-adv-x="2159" d="M715 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 30t51.5 95l191 897h-330l-205 -959q-43 -192 -153.5 -283.5t-292.5 -91.5q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5 q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h331l17 69q41 185 142.5 275t279.5 90q80 0 155 -16t127 -42l-98 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h210l-65 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5zM1903 0h-387l329 1556h387z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="623" d="M453 516h-328l156 946h426zM12 127q0 107 65 170t179 63q87 0 133.5 -40.5t46.5 -114.5q0 -110 -63.5 -170t-173.5 -60q-88 0 -137.5 38.5t-49.5 113.5z" />
+<glyph unicode=""" horiz-adv-x="930" d="M596 1462l-158 -528h-256l72 528h342zM1038 1462l-157 -528h-258l73 528h342z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M1067 831l-57 -200h243l-20 -238h-293l-111 -393h-270l113 393h-168l-113 -393h-270l112 393h-219l21 238h266l57 200h-235l20 242h285l111 389h270l-111 -389h168l111 389h270l-110 -389h221l-21 -242h-270zM571 631h168l58 200h-168z" />
+<glyph unicode="$" horiz-adv-x="1188" d="M1067 481q0 -178 -133 -290t-361 -125l-38 -187h-168l41 191q-221 16 -347 92v311q126 -59 228 -86t203 -27q174 0 174 105q0 40 -32.5 72.5t-139.5 83.5q-139 62 -214 160t-75 227q0 176 133.5 288t357.5 127l29 133h168l-31 -137q161 -15 314 -90l-140 -270 q-158 71 -295 71q-66 0 -103.5 -28t-37.5 -68q0 -53 39 -89.5t158 -94.5q140 -68 205 -155.5t65 -213.5z" />
+<glyph unicode="%" horiz-adv-x="1878" d="M1630 1462l-1081 -1462h-297l1089 1462h289zM498 1241q-50 0 -88.5 -110t-38.5 -240q0 -84 53 -84q52 0 89.5 110.5t37.5 239.5q0 43 -12 63.5t-41 20.5zM842 1161q0 -165 -56.5 -303t-158 -215.5t-230.5 -77.5q-159 0 -238 83.5t-79 238.5q0 173 54 309.5t154.5 211.5 t237.5 75q147 0 231.5 -85t84.5 -237zM1475 655q-50 0 -88.5 -110t-38.5 -240q0 -84 53 -84q52 0 89.5 110.5t37.5 239.5q0 44 -12 64t-41 20zM1819 575q0 -164 -56 -302t-158 -215.5t-231 -77.5q-159 0 -238 83t-79 238q0 173 54 309.5t154.5 211.5t237.5 75 q147 0 231.5 -85t84.5 -237z" />
+<glyph unicode="&" horiz-adv-x="1501" d="M8 385q0 159 87.5 264.5t271.5 165.5q-37 46 -60.5 118.5t-23.5 131.5q0 197 126 308.5t355 111.5q189 0 302.5 -88t113.5 -236q0 -130 -80 -233t-262 -197l129 -186q36 36 75.5 114.5t63.5 161.5h383q-46 -161 -128.5 -305.5t-189.5 -253.5l191 -262h-442l-43 61 q-155 -81 -349 -81q-244 0 -382 106.5t-138 298.5zM745 1221q-49 0 -79.5 -34.5t-30.5 -94.5q0 -76 51 -144q72 31 106.5 79.5t34.5 107.5q0 35 -22 60.5t-60 25.5zM571 287q77 0 138 26l-193 279q-117 -52 -117 -168q0 -62 47.5 -99.5t124.5 -37.5z" />
+<glyph unicode="'" horiz-adv-x="487" d="M596 1462l-158 -528h-256l72 528h342z" />
+<glyph unicode="(" horiz-adv-x="766" d="M68 326q0 330 124.5 619t387.5 558h323q-260 -281 -384 -576t-124 -618q0 -150 32.5 -326t84.5 -307h-293q-67 120 -109 299t-42 351zM720 1485z" />
+<glyph unicode=")" horiz-adv-x="766" d="M694 854q0 -341 -123 -628t-378 -550h-326q256 277 378 571.5t122 622.5q0 150 -32.5 322.5t-86.5 310.5h295q71 -124 111 -298t40 -351zM420 1485z" />
+<glyph unicode="*" horiz-adv-x="1110" d="M909 1509l-116 -331l368 30l-22 -301l-310 41l148 -311l-285 -86l-80 303l-166 -244l-249 185l254 229l-299 84l100 278l319 -165l31 350z" />
+<glyph unicode="+" horiz-adv-x="1159" d="M455 586h-353v272h353v352h270v-352h352v-272h-352v-348h-270v348z" />
+<glyph unicode="," horiz-adv-x="627" d="M432 238l8 -23q-116 -262 -256 -479h-288q53 121 147 387l41 115h348z" />
+<glyph unicode="-" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="." horiz-adv-x="627" d="M0 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115z" />
+<glyph unicode="/" horiz-adv-x="956" d="M1092 1483l-838 -1503h-344l838 1503h344z" />
+<glyph unicode="0" horiz-adv-x="1188" d="M1157 983q0 -298 -85 -529.5t-235 -352.5t-348 -121q-210 0 -318 126t-108 359q0 295 85 533.5t235 362.5t348 124q135 0 230.5 -62.5t145.5 -174.5t50 -265zM686 1169q-55 0 -110 -111t-89 -282t-34 -319q0 -84 15 -123t60 -39q58 0 111.5 94.5t91 265.5t37.5 336 q0 85 -18.5 131.5t-63.5 46.5z" />
+<glyph unicode="1" horiz-adv-x="1188" d="M774 0h-389l174 799q28 132 76 256q-78 -68 -131 -103l-203 -125l-151 252l620 383h311z" />
+<glyph unicode="2" horiz-adv-x="1188" d="M948 0h-1005l53 256l483 436q248 221 248 361q0 49 -26 73.5t-66 24.5q-120 0 -281 -147l-186 258q234 221 541 221q183 0 295 -99.5t112 -269.5q0 -152 -87 -285t-298 -315l-205 -176v-12h490z" />
+<glyph unicode="3" horiz-adv-x="1188" d="M1126 1137q0 -148 -89.5 -245t-252.5 -130v-8q129 -25 202 -111.5t73 -212.5q0 -216 -178 -333t-482 -117q-116 0 -217.5 20.5t-167.5 58.5v332q167 -100 377 -100q138 0 206.5 46.5t68.5 133.5q0 54 -27 81t-86 39.5t-166 12.5h-84l53 291h78q147 0 229 46.5t82 127.5 q0 46 -36 74t-99 28q-117 0 -270 -84l-158 248q126 81 243.5 114.5t258.5 33.5q201 0 321.5 -93t120.5 -253z" />
+<glyph unicode="4" horiz-adv-x="1188" d="M1065 283h-150l-59 -283h-377l60 283h-549l51 256l762 923h360l-186 -884h149zM600 578l49 194q29 107 60 211h-9q-51 -97 -114 -172l-195 -233h209z" />
+<glyph unicode="5" horiz-adv-x="1188" d="M655 958q181 0 293.5 -117.5t112.5 -316.5q0 -261 -161 -402.5t-466 -141.5q-129 0 -244.5 22t-169.5 61v324q79 -45 181 -70.5t184 -25.5q277 0 277 192q0 76 -50.5 123t-136.5 47q-53 0 -111 -10t-92 -22l-122 92l215 749h813l-68 -323h-471l-59 -185q35 4 75 4z" />
+<glyph unicode="6" horiz-adv-x="1188" d="M971 1483q102 0 233 -31l-63 -303q-95 25 -183 25q-145 0 -237 -34t-151.5 -108.5t-106.5 -224.5h8q106 170 307 170q160 0 244 -103t84 -299q0 -175 -68.5 -311.5t-197 -210t-297.5 -73.5q-225 0 -345 124t-120 367q0 105 26 254q85 392 298.5 575t568.5 183zM561 287 q66 0 109 76.5t43 181.5q0 129 -92 129q-68 0 -113 -73t-45 -181q0 -66 26.5 -99.5t71.5 -33.5z" />
+<glyph unicode="7" horiz-adv-x="1188" d="M35 0l717 1135h-574l70 327h1030l-51 -231l-744 -1231h-448z" />
+<glyph unicode="8" horiz-adv-x="1188" d="M725 1485q200 0 316 -92.5t116 -241.5q0 -128 -77.5 -228.5t-202.5 -140.5q92 -71 140 -158t48 -204q0 -206 -141 -323t-387 -117q-225 0 -356.5 99t-131.5 259q0 301 332 418q-156 121 -156 309q0 121 60.5 216.5t174 149.5t265.5 54zM584 608q-170 -90 -170 -223 q0 -54 36.5 -88.5t96.5 -34.5q70 0 112.5 42t42.5 110q0 115 -118 194zM707 1202q-48 0 -83.5 -39.5t-35.5 -97.5q0 -38 23.5 -77t62.5 -58q58 22 92.5 71t34.5 103q0 49 -28.5 73.5t-65.5 24.5z" />
+<glyph unicode="9" horiz-adv-x="1188" d="M1137 952q0 -293 -103 -519.5t-285.5 -339.5t-431.5 -113q-115 0 -211 30v314q92 -37 203 -37q187 0 291.5 87t144.5 281h-8q-59 -95 -132 -134.5t-169 -39.5q-151 0 -239 110t-88 296q0 176 65.5 310.5t190 210t297.5 75.5q230 0 352.5 -137.5t122.5 -393.5zM672 1176 q-73 0 -121.5 -71t-48.5 -173q0 -144 92 -144q74 0 125 70.5t51 171.5q0 66 -27.5 106t-70.5 40z" />
+<glyph unicode=":" horiz-adv-x="627" d="M0 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM195 915q0 110 65 171t176 61q82 0 132 -37.5t50 -116.5q0 -119 -59 -175t-190 -56q-79 0 -126.5 37.5t-47.5 115.5z" />
+<glyph unicode=";" horiz-adv-x="627" d="M420 238l8 -23q-116 -262 -256 -479h-289q65 147 148 387l41 115h348zM195 915q0 110 65 171t176 61q82 0 132 -37.5t50 -116.5q0 -119 -59 -175t-190 -56q-79 0 -126.5 37.5t-47.5 115.5z" />
+<glyph unicode="<" horiz-adv-x="1159" d="M1061 176l-973 451v172l973 508v-299l-576 -283l576 -252v-297z" />
+<glyph unicode="=" horiz-adv-x="1159" d="M102 774v266h975v-266h-975zM102 399v271h975v-271h-975z" />
+<glyph unicode=">" horiz-adv-x="1159" d="M109 473l575 252l-575 283v299l972 -508v-172l-972 -451v297z" />
+<glyph unicode="?" horiz-adv-x="999" d="M256 516l12 64q15 80 42 138t71 104t141 110q89 58 125.5 95t36.5 77q0 70 -90 70q-126 0 -313 -109l-119 283q231 135 461 135q201 0 319.5 -90t118.5 -248q0 -89 -27.5 -156t-79 -120.5t-170.5 -125.5q-100 -60 -142.5 -100t-55.5 -84l-15 -43h-315zM176 127 q0 107 65 170t179 63q87 0 133.5 -40.5t46.5 -114.5q0 -110 -63.5 -170t-174.5 -60q-87 0 -136.5 39t-49.5 113z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M1774 827q0 -170 -69.5 -314t-191 -225t-266.5 -81q-170 0 -219 129h-10q-48 -65 -111.5 -97t-156.5 -32q-117 0 -191 83.5t-74 221.5q0 156 74 294.5t196.5 211t276.5 72.5q155 0 336 -70l-100 -414q-23 -94 -23 -137q0 -41 39 -41q64 0 116 48.5t81.5 138.5t29.5 206 q0 213 -133.5 322.5t-382.5 109.5q-187 0 -336.5 -91.5t-232 -258t-82.5 -379.5q0 -145 55 -254t153.5 -168t223.5 -59q103 0 234 24.5t245 69.5v-225q-90 -43 -223.5 -70.5t-251.5 -27.5q-209 0 -367.5 83.5t-244.5 240t-86 362.5q0 288 117 511t335.5 347.5t485.5 124.5 q355 0 554.5 -174t199.5 -482zM1012 868q-73 0 -128.5 -47.5t-87.5 -127t-32 -161.5q0 -104 78 -104q61 0 99.5 51.5t74.5 188.5l47 190q-23 10 -51 10z" />
+<glyph unicode="A" horiz-adv-x="1384" d="M858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166z" />
+<glyph unicode="B" horiz-adv-x="1298" d="M342 1462h487q217 0 329 -82.5t112 -236.5q0 -288 -297 -377v-8q88 -29 140 -101.5t52 -177.5q0 -229 -152.5 -354t-432.5 -125h-547zM614 901h72q88 0 133 38t45 122q0 102 -127 102h-63zM555 612l-66 -307h82q86 0 143.5 48.5t57.5 121.5q0 69 -33 103t-116 34h-68z " />
+<glyph unicode="C" horiz-adv-x="1290" d="M881 1159q-108 0 -195 -78t-136.5 -215t-49.5 -297q0 -134 56 -200t161 -66q83 0 168 20.5t200 69.5v-323q-203 -90 -440 -90q-260 0 -400.5 148.5t-140.5 420.5q0 266 101.5 488t276 335t399.5 113q265 0 481 -131l-148 -305q-93 55 -171 82.5t-162 27.5z" />
+<glyph unicode="D" horiz-adv-x="1401" d="M1337 909q0 -280 -99 -485.5t-287.5 -314.5t-446.5 -109h-471l309 1462h416q276 0 427.5 -144.5t151.5 -408.5zM563 324q110 0 196.5 70t134.5 199.5t48 295.5q0 125 -54 189.5t-151 64.5h-71l-172 -819h69z" />
+<glyph unicode="E" horiz-adv-x="1151" d="M901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477z" />
+<glyph unicode="F" horiz-adv-x="1165" d="M424 0h-391l309 1462h862l-67 -317h-471l-58 -279h436l-69 -319h-438z" />
+<glyph unicode="G" horiz-adv-x="1430" d="M731 856h610l-167 -795q-250 -81 -521 -81q-261 0 -405 152t-144 431q0 267 110 482t301.5 327.5t445.5 112.5q266 0 448 -107l-147 -309q-153 90 -306 90q-132 0 -233.5 -72.5t-162 -214.5t-60.5 -303q0 -264 209 -264q63 0 133 14l51 232h-229z" />
+<glyph unicode="H" horiz-adv-x="1462" d="M1163 0h-391l125 596h-346l-127 -596h-391l309 1462h391l-112 -542h348l112 542h392z" />
+<glyph unicode="I" horiz-adv-x="727" d="M31 0l309 1462h397l-309 -1462h-397z" />
+<glyph unicode="J" horiz-adv-x="764" d="M-115 -461q-106 0 -213 29v319q99 -24 174 -24q107 0 162 59t84 195l289 1345h391l-299 -1394q-43 -200 -113 -312.5t-182.5 -164.5t-292.5 -52z" />
+<glyph unicode="K" horiz-adv-x="1370" d="M1241 0h-438l-174 578l-97 -56l-108 -522h-391l309 1462h391l-135 -624l38 59q88 143 130 195l297 370h459l-551 -674z" />
+<glyph unicode="L" horiz-adv-x="1079" d="M33 0l309 1462h391l-241 -1143h477l-68 -319h-868z" />
+<glyph unicode="M" horiz-adv-x="1862" d="M588 0v1049h-8q-67 -417 -86 -512l-113 -537h-348l309 1462h518v-1038h8l478 1038h526l-313 -1462h-351l117 549q50 228 108 436l15 64h-8l-482 -1049h-370z" />
+<glyph unicode="N" horiz-adv-x="1618" d="M1319 0h-455l-289 1028h-8q-29 -291 -57 -418l-129 -610h-348l309 1462h455l286 -983h9q29 236 57 371l131 612h348z" />
+<glyph unicode="O" horiz-adv-x="1509" d="M897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83t128 224 t46.5 308z" />
+<glyph unicode="P" horiz-adv-x="1276" d="M1251 1024q0 -252 -171.5 -395.5t-469.5 -143.5h-86l-100 -485h-391l309 1462h373q259 0 397.5 -113.5t138.5 -324.5zM594 805h63q91 0 147 58.5t56 148.5q0 59 -36 95t-99 36h-59z" />
+<glyph unicode="Q" horiz-adv-x="1509" d="M903 1485q258 0 400.5 -149.5t142.5 -413.5q0 -280 -114 -509t-310 -339l238 -422h-439l-162 328h-12q-258 0 -400.5 149.5t-142.5 413.5q0 265 102.5 486t282 338.5t414.5 117.5zM870 1157q-103 0 -188.5 -83t-133.5 -226t-48 -309q0 -115 47.5 -172.5t134.5 -57.5 q102 0 186.5 81t133.5 224.5t49 311.5q0 114 -47 172.5t-134 58.5z" />
+<glyph unicode="R" horiz-adv-x="1331" d="M537 532l-113 -532h-391l309 1462h387q252 0 386 -100t134 -301q0 -156 -71 -272t-211 -177l224 -516l40 -96h-426l-195 532h-73zM600 829h51q95 0 151 54.5t56 152.5q0 62 -34.5 94.5t-100.5 32.5h-53z" />
+<glyph unicode="S" horiz-adv-x="1122" d="M977 449q0 -222 -147 -345.5t-410 -123.5q-110 0 -208 24.5t-169 71.5v350q84 -53 192.5 -89t196.5 -36q74 0 112 31t38 88q0 27 -12 50.5t-34 47t-118 103.5q-117 94 -170 192t-53 215q0 131 65.5 235.5t185 162t267.5 57.5q239 0 430 -107l-135 -297q-171 88 -291 88 q-64 0 -98.5 -28t-34.5 -82q0 -49 33.5 -91.5t127.5 -113.5q118 -87 175 -183t57 -220z" />
+<glyph unicode="T" horiz-adv-x="1130" d="M627 0h-391l237 1139h-317l69 323h1028l-71 -323h-318z" />
+<glyph unicode="U" horiz-adv-x="1436" d="M1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391z" />
+<glyph unicode="V" horiz-adv-x="1264" d="M1001 1462h414l-725 -1462h-436l-104 1462h382l27 -801v-51q0 -144 -16 -256h8q14 64 44.5 157.5t55.5 145.5z" />
+<glyph unicode="W" horiz-adv-x="1915" d="M487 354l40 104l94 232l335 772h336v-792q0 -156 -26 -316q10 28 133 346l303 762h387l-635 -1462h-461v620q0 155 13 324q-33 -133 -118 -349l-253 -595h-434l-49 1462h370l-10 -733q-6 -267 -25 -375z" />
+<glyph unicode="X" horiz-adv-x="1358" d="M1235 0h-432l-146 498l-338 -498h-444l563 776l-223 686h416l123 -469l309 469h448l-538 -725z" />
+<glyph unicode="Y" horiz-adv-x="1237" d="M657 920l312 542h436l-612 -895l-121 -567h-391l120 567l-237 895h403z" />
+<glyph unicode="Z" horiz-adv-x="1104" d="M942 0h-1034l47 242l690 901h-479l67 319h986l-52 -245l-700 -898h543z" />
+<glyph unicode="[" horiz-adv-x="737" d="M477 -344h-530l393 1847h530l-55 -254h-215l-285 -1339h215zM491 1485zM182 -324z" />
+<glyph unicode="\" horiz-adv-x="956" d="M530 1483l248 -1503h-319l-238 1503h309z" />
+<glyph unicode="]" horiz-adv-x="737" d="M-80 -90h213l285 1339h-215l55 254h528l-393 -1847h-526zM533 1485zM65 -324z" />
+<glyph unicode="^" horiz-adv-x="1096" d="M-6 502l631 960h172l284 -960h-274l-156 569l-360 -569h-297z" />
+<glyph unicode="_" horiz-adv-x="922" d="M745 -379h-929l57 246h930z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M975 1241h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="a" d="M565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310z" />
+<glyph unicode="b" d="M657 -20q-83 0 -145 32t-125 113h-8l-49 -125h-307l329 1556h387l-49 -231q-38 -175 -90 -301h8q48 59 77.5 81.5t66.5 35t86 12.5q155 0 238 -111.5t83 -320.5q0 -178 -70.5 -362t-182.5 -281.5t-249 -97.5zM678 842q-50 0 -95 -57t-71.5 -154t-26.5 -197q0 -65 19 -104 t59 -39q49 0 96 59t76 156t29 192q0 144 -86 144z" />
+<glyph unicode="c" horiz-adv-x="1032" d="M506 -20q-199 0 -310.5 120.5t-111.5 341.5q0 201 76.5 364.5t215 255t314.5 91.5q195 0 367 -80l-123 -287q-133 60 -225 60q-62 0 -115 -48t-87 -143.5t-34 -187.5q0 -91 30 -133.5t95 -42.5q72 0 139.5 23t143.5 63v-307q-80 -44 -168.5 -67t-206.5 -23z" />
+<glyph unicode="d" horiz-adv-x="1237" d="M586 1153q75 0 126 -30.5t111 -121.5h8l2 37q7 138 25 217l62 301h391l-330 -1556h-309l10 123h-8q-57 -79 -120 -111t-148 -32q-158 0 -240 111.5t-82 320.5q0 178 71.5 363t183.5 281.5t247 96.5zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 144 -80 144 q-49 0 -96 -59t-76 -155.5t-29 -193.5q0 -143 86 -143z" />
+<glyph unicode="e" horiz-adv-x="1186" d="M532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5h29 q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22z" />
+<glyph unicode="f" horiz-adv-x="840" d="M-2 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h211l-66 -291h-209l-205 -959 q-43 -192 -153.5 -283.5t-292.5 -91.5z" />
+<glyph unicode="g" horiz-adv-x="1145" d="M1235 1133l-41 -207l-160 -52q10 -40 10 -94q0 -191 -130 -308.5t-339 -117.5q-76 0 -124 13q-20 -11 -34 -22t-14 -30q0 -43 111 -59l137 -18q174 -25 250 -91.5t76 -189.5q0 -215 -168.5 -332t-478.5 -117q-212 0 -337.5 75.5t-125.5 209.5q0 98 68 169t212 118 q-37 23 -60.5 60t-23.5 79q0 71 51 126t152 101q-131 103 -131 281q0 196 136 311t368 115q51 0 107.5 -6t89.5 -14h399zM197 -152q0 -86 170 -86q125 0 190.5 29t65.5 82q0 36 -33 54.5t-115 27.5l-115 12q-78 -11 -120.5 -41.5t-42.5 -77.5zM500 692q0 -94 67 -94 q52 0 85.5 68.5t33.5 158.5q0 95 -61 95q-38 0 -66 -33.5t-43.5 -87.5t-15.5 -107z" />
+<glyph unicode="h" horiz-adv-x="1274" d="M639 0l129 618q18 78 18 142q0 43 -22 64.5t-53 21.5q-125 0 -185 -293l-116 -553h-387l329 1556h387l-53 -249q-35 -158 -88 -283h8q101 129 273 129q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 -602h-387z" />
+<glyph unicode="i" horiz-adv-x="666" d="M410 0h-387l239 1133h389zM309 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
+<glyph unicode="j" horiz-adv-x="666" d="M-57 -492q-110 0 -207 27v303q56 -18 112 -18q142 0 175 147l247 1166h387l-260 -1227q-40 -193 -157 -295.5t-297 -102.5zM317 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -94 -55 -151.5t-170 -57.5q-191 0 -191 141z" />
+<glyph unicode="k" horiz-adv-x="1264" d="M348 1556h387l-139 -663q-17 -77 -68 -223h9q84 127 153 200l242 263h442l-491 -512l274 -621h-438l-139 391l-101 -53l-69 -338h-387z" />
+<glyph unicode="l" horiz-adv-x="666" d="M410 0h-387l329 1556h387z" />
+<glyph unicode="m" horiz-adv-x="1896" d="M645 0l131 631q15 90 15 121q0 94 -72 94q-68 0 -113.5 -74.5t-77.5 -220.5l-118 -551h-387l239 1133h309l-16 -187h8q61 114 137 160.5t191 46.5q117 0 180.5 -53.5t89.5 -153.5h8q65 106 149 156.5t195 50.5q141 0 214 -84.5t73 -249.5q0 -97 -22 -205l-125 -614h-387 l129 631q14 56 14 133q0 40 -19 61t-51 21q-74 0 -119.5 -76t-76.5 -227l-111 -543h-387z" />
+<glyph unicode="n" horiz-adv-x="1274" d="M786 760q0 43 -22 64.5t-53 21.5q-57 0 -105.5 -71t-79.5 -222l-116 -553h-387l239 1133h309l-12 -158h8q55 95 129.5 136.5t182.5 41.5q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 -602h-387l129 618q18 78 18 142z" />
+<glyph unicode="o" d="M520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5z" />
+<glyph unicode="p" d="M651 -20q-143 0 -231 145h-8q-12 -166 -56 -371l-51 -246h-387l344 1625h309l-12 -127h8q96 147 258 147q156 0 245 -111.5t89 -306.5q0 -203 -70 -382.5t-185.5 -276t-252.5 -96.5zM678 842q-50 0 -95 -57t-71.5 -154t-26.5 -197q0 -65 23 -104t65 -39q48 0 92 57 t71.5 153t27.5 197q0 144 -86 144z" />
+<glyph unicode="q" d="M586 1153q89 0 145.5 -33t118.5 -127h8l53 140h310l-344 -1625h-392l68 293q25 116 90 310h-8q-55 -74 -114 -102.5t-134 -28.5q-89 0 -158 50.5t-107 148t-38 229.5q0 181 71.5 366.5t183 282t247.5 96.5zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 144 -80 144 q-49 0 -96 -59t-76 -155.5t-29 -193.5q0 -143 86 -143z" />
+<glyph unicode="r" horiz-adv-x="895" d="M901 1153q56 0 80 -8l-84 -383q-54 22 -123 22q-103 0 -164.5 -70.5t-93.5 -215.5l-106 -498h-387l239 1133h309l-18 -189h8q65 112 141 160.5t199 48.5z" />
+<glyph unicode="s" horiz-adv-x="1028" d="M891 393q0 -199 -130 -306t-374 -107q-222 0 -356 63v311q92 -50 171 -70t160 -20q68 0 102 18.5t34 51.5q0 35 -26 60.5t-130 84.5q-106 58 -154.5 133t-48.5 183q0 172 121 265t344 93q112 0 204 -26t179 -80l-121 -252q-66 43 -136.5 68.5t-121.5 25.5q-76 0 -76 -68 q0 -29 31.5 -51t102.5 -57q225 -112 225 -320z" />
+<glyph unicode="t" horiz-adv-x="936" d="M567 291q66 0 183 47v-291q-136 -67 -340 -67q-148 0 -224.5 63.5t-76.5 208.5q0 76 24 188l84 402h-154l41 190l218 88l137 240h258l-49 -227h288l-63 -291h-289l-84 -383q-16 -77 -16 -105q0 -63 63 -63z" />
+<glyph unicode="u" horiz-adv-x="1274" d="M487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141z" />
+<glyph unicode="v" horiz-adv-x="1114" d="M233 0l-145 1133h385l27 -603q0 -73 -8 -118h8q1 14 18 63t36 90t265 568h414l-612 -1133h-388z" />
+<glyph unicode="w" horiz-adv-x="1686" d="M840 0l20 449q2 73 11.5 209t21.5 219h-8q-60 -233 -121 -390l-189 -487h-407l-66 1133h365v-512q0 -182 -8 -259h8q46 177 88 295l172 476h428l-20 -476q-9 -129 -33 -295h8q7 22 15.5 47.5t48.5 140t241 583.5h385l-538 -1133h-422z" />
+<glyph unicode="x" horiz-adv-x="1159" d="M545 328l-211 -328h-453l473 578l-207 555h422l76 -314l186 314h459l-465 -576l228 -557h-428z" />
+<glyph unicode="y" horiz-adv-x="1114" d="M82 1133h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307q46 -12 109 -12q87 0 142.5 36.5t98.5 114.5l23 41z" />
+<glyph unicode="z" horiz-adv-x="993" d="M803 0h-844l43 221l502 613h-348l67 299h811l-53 -242l-496 -592h383z" />
+<glyph unicode="{" horiz-adv-x="735" d="M432 45q0 -88 113 -88v-281h-82q-183 0 -272 68.5t-89 208.5q0 63 15 127l37 174q6 24 6 43q0 75 -42 106t-134 31l53 287q119 0 175 38.5t77 133.5l55 246q28 124 76.5 190t130 99.5t203.5 33.5h129l-62 -280q-81 -2 -120 -29.5t-56 -99.5l-53 -258 q-20 -96 -85.5 -151.5t-193.5 -70.5v-8q90 -29 130 -87t40 -146q0 -17 -10 -74l-35 -164q-6 -30 -6 -49z" />
+<glyph unicode="|" horiz-adv-x="1159" d="M442 1548h271v-2013h-271v2013z" />
+<glyph unicode="}" horiz-adv-x="735" d="M-49 -324h-74v281q73 3 109 13.5t54 33.5t30 82l53 258q21 99 88 154t190 67v8q-170 55 -170 234q0 12 11 74l34 163q7 29 7 50q0 88 -136 88l54 280h61q168 0 259 -70.5t91 -203.5q0 -69 -14 -129l-37 -174q-6 -26 -6 -43q0 -66 44.5 -100.5t148.5 -34.5l-58 -287 q-121 0 -182.5 -40.5t-81.5 -133.5l-55 -246q-37 -171 -137.5 -247.5t-282.5 -76.5z" />
+<glyph unicode="~" horiz-adv-x="1159" d="M336 645q-52 0 -114.5 -30t-125.5 -91v285q107 109 262 109q61 0 110.5 -11.5t152.5 -52.5q67 -28 114 -41.5t99 -13.5q51 0 115.5 32t121.5 89v-285q-107 -109 -262 -109q-62 0 -113.5 12.5t-148.5 51.5q-75 31 -118.5 43t-92.5 12z" />
+<glyph unicode="¡" horiz-adv-x="623" d="M145 608h328l-156 -946h-426zM586 1001q0 -107 -65 -170t-179 -63q-87 0 -133.5 40.5t-46.5 115.5q0 109 64 169t173 60q89 0 138 -39.5t49 -112.5zM107 -324z" />
+<glyph unicode="¢" horiz-adv-x="1188" d="M602 -20h-229l51 208q-270 74 -270 398q0 306 140.5 510t371.5 239l32 148h230l-33 -150q122 -19 231 -76l-122 -286q-79 37 -128 48t-98 11q-63 0 -115 -49.5t-84 -146.5t-32 -207q0 -79 31 -113.5t90 -34.5q72 0 140 25t142 65v-311q-145 -78 -307 -90z" />
+<glyph unicode="£" horiz-adv-x="1188" d="M850 1483q89 0 177 -19t196 -67l-144 -299q-66 31 -114 47t-99 16q-35 0 -56.5 -24.5t-35.5 -92.5l-24 -114h251l-57 -279h-252l-20 -94q-16 -74 -69.5 -133.5t-133.5 -93.5h604l-72 -330h-1019l63 313q76 21 120.5 49t69 69.5t41.5 123.5l21 96h-188l57 279h188l23 129 q26 149 85 243t150.5 137.5t237.5 43.5z" />
+<glyph unicode="¤" horiz-adv-x="1188" d="M190 723q0 92 46 184l-130 125l185 185l127 -125q96 43 182 43q96 0 184 -48l125 130l189 -179l-129 -129q43 -82 43 -186q0 -94 -43 -186l123 -123l-183 -183l-125 123q-96 -41 -184 -41q-108 0 -186 39l-123 -119l-182 183l127 123q-46 90 -46 184zM451 723 q0 -64 43 -108t106 -44q65 0 110.5 44.5t45.5 107.5q0 61 -44.5 106t-111.5 45q-64 0 -106.5 -44t-42.5 -107z" />
+<glyph unicode="¥" horiz-adv-x="1188" d="M639 975l293 487h393l-489 -733h184l-45 -205h-223l-27 -129h223l-43 -205h-223l-41 -190h-379l41 190h-227l43 205h227l25 129h-226l45 205h179l-187 733h385z" />
+<glyph unicode="¦" horiz-adv-x="1159" d="M444 1546h271v-841h-271v841zM444 395h271v-839h-271v839z" />
+<glyph unicode="§" horiz-adv-x="1036" d="M158 776q0 84 46 156t132 125q-38 38 -59 89.5t-21 102.5q0 160 116 244t339 84q184 0 360 -102l-100 -224q-91 58 -159.5 79.5t-133.5 21.5q-60 0 -85.5 -22.5t-25.5 -51.5q0 -33 14 -53.5t46.5 -43t89.5 -48.5q244 -113 244 -312q0 -99 -38 -171t-130 -124 q32 -38 50.5 -90.5t18.5 -109.5q0 -170 -127 -260.5t-358 -90.5q-110 0 -197 25.5t-143 69.5v249q85 -52 173 -86t185 -34q69 0 109.5 28.5t40.5 75.5q0 38 -31 70.5t-104 72.5q-130 71 -191 152t-61 178zM524 940q-37 -19 -59.5 -54t-22.5 -69q0 -43 37 -84t125 -90 q74 51 74 127q0 54 -36.5 95t-117.5 75z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M336 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM823 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="©" horiz-adv-x="1688" d="M913 971q-80 0 -126 -61t-46 -179q0 -128 44 -185t135 -57q138 0 258 68v-231q-126 -64 -273 -64q-213 0 -328.5 125t-115.5 348q0 220 113.5 341.5t320.5 121.5q166 0 332 -82l-92 -205q-114 60 -222 60zM113 731q0 202 101.5 378t275.5 275t374 99t375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-206 0 -380 102.5t-272.5 276.5t-98.5 372zM276 731q0 -158 78.5 -294t215 -215t294.5 -79q157 0 293 77.5t215.5 214t79.5 296.5q0 158 -78.5 294.5t-215 215t-294.5 78.5t-295.5 -79.5t-215 -215.5t-77.5 -293z" />
+<glyph unicode="ª" horiz-adv-x="827" d="M483 1475q64 0 111.5 -20t101.5 -79h9l36 86h199l-170 -721h-195l9 86h-9q-89 -98 -223 -98q-60 0 -108 31.5t-76.5 91.5t-28.5 149q0 120 45 232t123 177t176 65zM481 911q46 0 79 38.5t51 100t18 128.5q0 53 -19.5 83.5t-52.5 30.5q-39 0 -72.5 -40.5t-53 -107.5 t-19.5 -132q0 -48 19 -74.5t50 -26.5z" />
+<glyph unicode="«" horiz-adv-x="1276" d="M61 563l408 518l264 -204l-266 -334l111 -330l-334 -137l-183 477v10zM608 592l424 495l260 -210l-278 -306l123 -358l-334 -137l-195 506v10z" />
+<glyph unicode="¬" horiz-adv-x="1159" d="M1057 858v-620h-271v348h-704v272h975z" />
+<glyph unicode="­" horiz-adv-x="674" d="M23 393zM23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="®" horiz-adv-x="1688" d="M1245 918q0 -91 -44.5 -153t-139.5 -97l211 -355h-285l-160 320h-12v-320h-280v875h290q214 0 317 -70.5t103 -199.5zM815 809h10q78 0 108 22t30 76t-35.5 70t-104.5 16h-8v-184zM113 731q0 202 101.5 378t275.5 275t374 99t375 -100t276 -275t101 -377q0 -197 -97 -370 t-272 -277t-383 -104q-206 0 -380 102.5t-272.5 276.5t-98.5 372zM276 731q0 -158 78.5 -294t215 -215t294.5 -79q157 0 293 77.5t215.5 214t79.5 296.5q0 158 -78.5 294.5t-215 215t-294.5 78.5t-295.5 -79.5t-215 -215.5t-77.5 -293z" />
+<glyph unicode="¯" horiz-adv-x="922" d="M183 1554zM1112 1554h-929l57 246h930z" />
+<glyph unicode="°" horiz-adv-x="864" d="M166 1114q0 97 49 182.5t135 136t185 50.5q98 0 184 -50t135 -136.5t49 -182.5q0 -98 -49.5 -183t-135.5 -133t-183 -48q-99 0 -185 49t-135 133t-49 182zM403 1114q0 -51 39.5 -89t92.5 -38q52 0 91.5 38t39.5 89q0 53 -38.5 93t-92.5 40q-55 0 -93.5 -39.5t-38.5 -93.5 z" />
+<glyph unicode="±" horiz-adv-x="1159" d="M455 694h-353v271h353v352h270v-352h352v-271h-352v-350h-270v350zM102 0v270h975v-270h-975z" />
+<glyph unicode="²" horiz-adv-x="848" d="M727 584h-704l43 204l276 211q108 83 144 124t36 75q0 51 -63 51q-35 0 -85 -18t-104 -62l-118 191q84 65 172.5 94t216.5 29q134 0 218.5 -61t84.5 -156q0 -70 -31.5 -129.5t-102 -121t-251.5 -175.5h319z" />
+<glyph unicode="³" horiz-adv-x="848" d="M821 1272q0 -91 -55.5 -146t-175.5 -84v-8q92 -23 129 -69.5t37 -112.5q0 -127 -104 -205t-275 -78q-106 0 -177.5 16t-133.5 54v225q63 -43 131.5 -62.5t124.5 -19.5q151 0 151 80q0 68 -113 68h-120l43 194h96q71 0 114.5 21.5t43.5 66.5q0 28 -22 43t-54 15 q-79 0 -185 -66l-100 182q83 52 161 73.5t181 21.5q137 0 220 -57t83 -152z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M453 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="µ" horiz-adv-x="1288" d="M545 -20q-102 0 -131 77h-8q-10 -134 -48 -303l-53 -246h-387l344 1625h387l-129 -617q-18 -78 -18 -141q0 -44 22.5 -65t53.5 -21q52 0 82.5 26t53.5 87t48 180l117 551h387l-240 -1133h-289l6 123h-8q-68 -143 -190 -143z" />
+<glyph unicode="¶" horiz-adv-x="1317" d="M1186 -260h-191v1587h-157v-1587h-191v819q-54 -18 -125 -18q-216 0 -318 125t-102 376q0 256 107.5 385t343.5 129h633v-1816z" />
+<glyph unicode="·" horiz-adv-x="627" d="M115 684q0 106 65 168.5t178 62.5q82 0 131.5 -40.5t49.5 -114.5q0 -117 -65.5 -173.5t-178.5 -56.5q-86 0 -133 40t-47 114z" />
+<glyph unicode="¸" horiz-adv-x="383" d="M287 -236q0 -121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205q30 -9 78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195z" />
+<glyph unicode="¹" horiz-adv-x="848" d="M541 1462h252l-187 -878h-317l82 364q21 102 55 207l-74 -59l-119 -78l-118 184z" />
+<glyph unicode="º" horiz-adv-x="817" d="M602 1182q0 45 -11.5 68.5t-43.5 23.5q-60 0 -97.5 -73t-37.5 -185q0 -84 55 -84q59 0 97 70.5t38 179.5zM874 1182q0 -134 -51 -237t-149.5 -160.5t-231.5 -57.5q-144 0 -223.5 75.5t-79.5 201.5q0 213 116.5 344t317.5 131q143 0 222 -79t79 -218z" />
+<glyph unicode="»" horiz-adv-x="1276" d="M1214 561l-407 -518l-264 205l266 334l-111 329l334 138l182 -478v-10zM668 532l-424 -497l-258 213l276 305l-121 358l332 138l195 -506v-11z" />
+<glyph unicode="¼" horiz-adv-x="1991" d="M79 0zM1720 122h-113l-26 -123h-289l27 123h-398l31 178l490 577h325l-119 -557h113zM1360 320q62 239 73 274t15 44q-13 -18 -35 -48.5t-215 -269.5h162zM1575 1462l-1083 -1462h-297l1089 1462h291zM505 1462h252l-187 -878h-317l82 364q21 102 55 207l-74 -59 l-119 -78l-118 184z" />
+<glyph unicode="½" horiz-adv-x="1991" d="M104 0zM1706 -1h-704l43 204l276 211q108 83 144 124t36 75q0 51 -63 51q-35 0 -85 -18t-104 -62l-118 191q84 65 172.5 94t216.5 29q134 0 218.5 -61t84.5 -156q0 -70 -31.5 -129.5t-102 -121t-251.5 -175.5h319zM530 1462h252l-187 -878h-317l82 364q21 102 55 207 l-74 -59l-119 -78l-118 184zM1599 1462l-1083 -1462h-297l1089 1462h291z" />
+<glyph unicode="¾" horiz-adv-x="1991" d="M195 0zM1767 122h-113l-26 -123h-289l27 123h-398l31 178l490 577h325l-119 -557h113zM1407 320q62 239 73 274t15 44q-13 -18 -35 -48.5t-215 -269.5h162zM950 1272q0 -91 -55.5 -146t-175.5 -84v-8q92 -23 129 -69.5t37 -112.5q0 -127 -104 -205t-275 -78 q-106 0 -177.5 16t-133.5 54v225q63 -43 131.5 -62.5t124.5 -19.5q151 0 151 80q0 68 -113 68h-120l43 194h96q71 0 114.5 21.5t43.5 66.5q0 28 -22 43t-54 15q-79 0 -185 -66l-100 182q83 52 161 73.5t181 21.5q137 0 220 -57t83 -152zM1743 1462l-1083 -1462h-297 l1089 1462h291z" />
+<glyph unicode="¿" horiz-adv-x="999" d="M721 612l-12 -63q-15 -82 -43 -140t-72.5 -104.5t-138.5 -107.5q-89 -58 -125.5 -95t-36.5 -77q0 -37 22.5 -53.5t67.5 -16.5q124 0 313 108l119 -282q-227 -135 -461 -135q-201 0 -319.5 90t-118.5 248q0 89 27.5 155.5t77.5 119t172 126.5q100 60 142.5 101t55.5 83 l15 43h315zM801 1001q0 -107 -65 -170t-179 -63q-87 0 -133.5 40.5t-46.5 115.5q0 109 64 169t173 60q89 0 138 -39.5t49 -112.5zM285 -324z" />
+<glyph unicode="À" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM1041 1579h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM709 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Â" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM1335 1579h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Ã" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM1043 1577q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5 q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="Ä" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM502 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM989 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143 t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="Å" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM1145 1552q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5zM965 1550 q0 38 -26.5 62t-61.5 24q-36 0 -62.5 -24t-26.5 -62q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59z" />
+<glyph unicode="Æ" horiz-adv-x="1937" d="M1688 0h-869l58 274h-418l-170 -274h-414l909 1462h1213l-66 -317h-477l-47 -230h444l-71 -317h-445l-57 -276h477zM948 602l113 543h-68l-331 -543h286z" />
+<glyph unicode="Ç" horiz-adv-x="1290" d="M104 0zM881 1159q-108 0 -195 -78t-136.5 -215t-49.5 -297q0 -134 56 -200t161 -66q83 0 168 20.5t200 69.5v-323q-203 -90 -440 -90q-260 0 -400.5 148.5t-140.5 420.5q0 266 101.5 488t276 335t399.5 113q265 0 481 -131l-148 -305q-93 55 -171 82.5t-162 27.5z M813 -236q0 -121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205q30 -9 78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195z" />
+<glyph unicode="È" horiz-adv-x="1151" d="M33 0zM901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477zM933 1579h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1151" d="M33 0zM901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477zM578 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Ê" horiz-adv-x="1151" d="M33 0zM901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477zM1239 1579h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Ë" horiz-adv-x="1151" d="M33 0zM901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477zM383 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM870 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z " />
+<glyph unicode="Ì" horiz-adv-x="727" d="M31 0zM31 0l309 1462h397l-309 -1462h-397zM749 1579h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="727" d="M31 0zM31 0l309 1462h397l-309 -1462h-397zM345 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Î" horiz-adv-x="727" d="M31 0zM31 0l309 1462h397l-309 -1462h-397zM1015 1579h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Ï" horiz-adv-x="727" d="M31 0zM31 0l309 1462h397l-309 -1462h-397zM159 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM646 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="Ð" horiz-adv-x="1401" d="M80 883h139l123 579h430q271 0 418 -143.5t147 -409.5q0 -434 -213 -671.5t-598 -237.5h-493l119 563h-142zM563 324q111 0 198 71.5t134 204t47 301.5q0 116 -54 179t-151 63h-71l-56 -260h178l-69 -320h-176l-49 -239h69z" />
+<glyph unicode="Ñ" horiz-adv-x="1618" d="M33 0zM1319 0h-455l-289 1028h-8q-29 -291 -57 -418l-129 -610h-348l309 1462h455l286 -983h9q29 236 57 371l131 612h348zM1137 1577q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5 q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="Ò" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM1102 1579h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM717 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Ô" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM1368 1579h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Õ" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM1073 1577q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="Ö" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM512 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM999 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="×" horiz-adv-x="1159" d="M387 723l-285 287l187 190l289 -285l292 285l191 -184l-293 -293l287 -291l-185 -188l-292 288l-289 -286l-185 188z" />
+<glyph unicode="Ø" horiz-adv-x="1509" d="M879 1485q182 0 315 -72l92 115l156 -119l-99 -125q103 -143 103 -362q0 -258 -98.5 -480.5t-271 -342t-392.5 -119.5q-192 0 -324 69l-106 -135l-160 117l117 145q-107 141 -107 367q0 262 101 484.5t275.5 340t398.5 117.5zM500 539l467 589q-45 33 -115 33 q-94 0 -175 -82t-129 -224t-48 -306v-10zM700 303q95 0 176 81.5t128 222.5t47 308l-465 -583q46 -29 114 -29z" />
+<glyph unicode="Ù" horiz-adv-x="1436" d="M125 0zM1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391zM1045 1579h-236q-82 75 -152 159t-102 148v21h396 q29 -157 94 -303v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1436" d="M125 0zM1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391zM725 1602q123 102 282 305h439v-15 q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Û" horiz-adv-x="1436" d="M125 0zM1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391zM1376 1579h-266q-46 41 -156 174 q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Ü" horiz-adv-x="1436" d="M125 0zM1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391zM533 1722q0 187 201 187q170 0 170 -125 q0 -189 -201 -189q-88 0 -129 31t-41 96zM1020 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="Ý" horiz-adv-x="1237" d="M164 0zM657 920l312 542h436l-612 -895l-121 -567h-391l120 567l-237 895h403zM615 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Þ" horiz-adv-x="1276" d="M342 1462h391l-45 -211q251 0 385.5 -114t134.5 -326q0 -250 -170.5 -393.5t-470.5 -143.5h-86l-57 -274h-391zM551 594h63q94 0 148.5 49t54.5 156q0 58 -41.5 95.5t-107.5 37.5h-45z" />
+<glyph unicode="ß" horiz-adv-x="1460" d="M-53 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 30t51.5 95l244 1151q53 249 201.5 360t417.5 111q243 0 379.5 -99t136.5 -274q0 -118 -51 -198t-162 -132q-117 -56 -117 -102q0 -29 20.5 -50.5t87.5 -56.5q95 -51 140 -118t45 -164q0 -117 -58.5 -205.5 t-170 -138t-271.5 -49.5q-161 0 -274 45v299q59 -29 136.5 -45.5t133.5 -16.5q59 0 87 22t28 50q0 32 -19.5 53.5t-113.5 83.5q-88 56 -127 111.5t-39 130.5q0 92 42 150.5t165 125.5q71 40 100 76t29 80q0 58 -41.5 88.5t-116.5 30.5q-78 0 -132.5 -50t-74.5 -147 l-252 -1184q-43 -192 -153.5 -283.5t-292.5 -91.5z" />
+<glyph unicode="à" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM890 1241h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="á" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM531 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="â" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM1198 1238h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="ã" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM885 1239q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="ä" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM331 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM818 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="å" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM1025 1491q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5zM845 1489q0 38 -26.5 62t-61.5 24q-36 0 -62.5 -24t-26.5 -62q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59z " />
+<glyph unicode="æ" horiz-adv-x="1788" d="M1192 -20q-179 0 -262 112l-31 -92h-227l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q92 0 152 -38t110 -122h8l53 140h207v-95q58 56 132.5 85.5t146.5 29.5q157 0 251.5 -86.5t94.5 -228.5 q0 -201 -157 -308.5t-451 -107.5h-60v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-99 -58 -182.5 -80t-192.5 -22zM565 291q76 0 134.5 123t58.5 284q0 65 -23 104.5t-65 39.5q-49 0 -93 -57.5t-71 -155t-27 -195.5q0 -143 86 -143zM1292 891q-61 0 -114 -69.5 t-64 -157.5h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22z" />
+<glyph unicode="ç" horiz-adv-x="1032" d="M84 0zM506 -20q-199 0 -310.5 120.5t-111.5 341.5q0 201 76.5 364.5t215 255t314.5 91.5q195 0 367 -80l-123 -287q-133 60 -225 60q-62 0 -115 -48t-87 -143.5t-34 -187.5q0 -91 30 -133.5t95 -42.5q72 0 139.5 23t143.5 63v-307q-80 -44 -168.5 -67t-206.5 -23z M684 -236q0 -121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205q30 -9 78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195z" />
+<glyph unicode="è" horiz-adv-x="1186" d="M84 0zM532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5 h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22zM919 1241h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="1186" d="M84 0zM532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5 h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22zM523 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="ê" horiz-adv-x="1186" d="M84 0zM532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5 h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22zM1213 1241h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="ë" horiz-adv-x="1186" d="M84 0zM532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5 h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22zM336 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM823 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ì" horiz-adv-x="666" d="M23 0zM410 0h-387l239 1133h389zM657 1241h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="666" d="M23 0zM410 0h-387l239 1133h389zM294 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="î" horiz-adv-x="666" d="M0 0zM410 0h-387l239 1133h389zM929 1241h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="ï" horiz-adv-x="666" d="M23 0zM410 0h-387l239 1133h389zM91 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM578 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ð" horiz-adv-x="1155" d="M580 1319q-29 25 -95 74l115 180q136 -61 231 -137l238 110l82 -166l-184 -90q71 -88 114 -249t43 -324q0 -360 -154.5 -548.5t-449.5 -188.5q-201 0 -318.5 119t-117.5 327q0 170 62.5 305t178.5 209t267 74q130 0 203 -88l10 4q-19 142 -90 246l-273 -127l-82 168z M555 260q53 0 93 44.5t63.5 119t23.5 147.5q0 76 -18.5 119t-65.5 43q-81 0 -130.5 -101t-49.5 -224q0 -148 84 -148z" />
+<glyph unicode="ñ" horiz-adv-x="1274" d="M23 0zM786 760q0 43 -22 64.5t-53 21.5q-57 0 -105.5 -71t-79.5 -222l-116 -553h-387l239 1133h309l-12 -158h8q55 95 129.5 136.5t182.5 41.5q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 -602h-387l129 618q18 78 18 142zM903 1239q-33 0 -65 8t-61 22t-46 23 q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="ò" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM894 1241 h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="ó" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM533 1264 q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="ô" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM1183 1241 h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="õ" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM861 1239 q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="ö" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM317 1384 q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM804 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="÷" horiz-adv-x="1159" d="M102 586v272h975v-272h-975zM432 373q0 83 41 127.5t117 44.5q74 0 114.5 -44.5t40.5 -127.5q0 -81 -41.5 -126.5t-113.5 -45.5q-74 0 -116 46t-42 126zM432 1071q0 83 41 127.5t117 44.5q74 0 114.5 -44.5t40.5 -127.5q0 -81 -41.5 -126.5t-113.5 -45.5q-74 0 -116 46 t-42 126z" />
+<glyph unicode="ø" horiz-adv-x="1286" d="M549 -20q-127 0 -238 49l-118 -140l-127 109l112 131q-94 117 -94 287q0 207 81.5 377.5t230.5 265t347 94.5q136 0 250 -57l105 121l127 -109l-105 -123q82 -114 82 -268q0 -208 -81 -377.5t-229 -264.5t-343 -95zM702 877q-67 0 -125 -55t-92 -153t-36 -218l335 397 q-35 29 -82 29zM590 260q107 0 172 101.5t74 287.5l-318 -375q29 -14 72 -14z" />
+<glyph unicode="ù" horiz-adv-x="1274" d="M96 0zM487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141zM902 1241h-236q-82 75 -152 159 t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1274" d="M96 0zM487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141zM584 1264q123 102 282 305h439v-15 q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="û" horiz-adv-x="1274" d="M96 0zM487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141zM1221 1241h-266q-46 41 -156 174 q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="ü" horiz-adv-x="1274" d="M96 0zM487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141zM371 1384q0 187 201 187 q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM858 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ý" horiz-adv-x="1114" d="M0 0zM82 1133h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307q46 -12 109 -12q87 0 142.5 36.5t98.5 114.5l23 41zM492 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="þ" d="M678 842q-50 0 -95 -57t-71.5 -154t-26.5 -197q0 -65 23 -104t65 -39q48 0 92 57t71.5 153t27.5 197q0 144 -86 144zM836 1153q151 0 237 -112t86 -306q0 -203 -70 -382.5t-185.5 -276t-252.5 -96.5q-143 0 -231 145h-8q-12 -166 -56 -371l-51 -246h-387l434 2048h387 l-49 -231q-38 -175 -90 -301h8q44 59 96.5 94t131.5 35z" />
+<glyph unicode="ÿ" horiz-adv-x="1114" d="M0 0zM82 1133h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307q46 -12 109 -12q87 0 142.5 36.5t98.5 114.5l23 41zM259 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96z M746 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ı" horiz-adv-x="666" d="M410 0h-387l239 1133h389z" />
+<glyph unicode="Œ" horiz-adv-x="1909" d="M1659 0h-815q-104 -20 -197 -20q-256 0 -399.5 146.5t-143.5 401.5q0 196 58.5 379t164.5 313t252.5 197.5t323.5 67.5q94 0 191 -23h874l-67 -319h-478l-47 -225h445l-72 -322h-444l-58 -272h477zM682 309q96 0 180 41l162 762q-53 49 -154 49q-96 0 -182.5 -88 t-137 -235t-50.5 -312q0 -217 182 -217z" />
+<glyph unicode="œ" horiz-adv-x="1802" d="M1149 -20q-203 0 -295 112q-124 -112 -334 -112q-209 0 -322.5 113t-113.5 323q0 209 79 380t217.5 264t319.5 93q187 0 277 -125q144 125 373 125q188 0 297.5 -86t109.5 -229q0 -203 -157 -309.5t-451 -106.5h-59v-16q0 -148 163 -148q79 0 155 23.5t173 74.5v-274 q-114 -58 -210.5 -80t-221.5 -22zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM1307 891q-60 0 -112.5 -68t-66.5 -159h29q110 0 172 41t62 110q0 32 -20.5 54t-63.5 22z" />
+<glyph unicode="Ÿ" horiz-adv-x="1237" d="M164 0zM657 920l312 542h436l-612 -895l-121 -567h-391l120 567l-237 895h403zM397 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM884 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M1190 1241h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M1059 1491q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5zM879 1489q0 38 -26.5 62t-61.5 24q-36 0 -62.5 -24t-26.5 -62q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M885 1239q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode=" " horiz-adv-x="959" />
+<glyph unicode=" " horiz-adv-x="1919" />
+<glyph unicode=" " horiz-adv-x="959" />
+<glyph unicode=" " horiz-adv-x="1919" />
+<glyph unicode=" " horiz-adv-x="639" />
+<glyph unicode=" " horiz-adv-x="479" />
+<glyph unicode=" " horiz-adv-x="319" />
+<glyph unicode=" " horiz-adv-x="319" />
+<glyph unicode=" " horiz-adv-x="239" />
+<glyph unicode=" " horiz-adv-x="383" />
+<glyph unicode=" " horiz-adv-x="106" />
+<glyph unicode="‐" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="‑" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="‒" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="–" horiz-adv-x="983" d="M33 416l57 274h871l-60 -274h-868z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M33 416l57 274h1854l-60 -274h-1851z" />
+<glyph unicode="‘" horiz-adv-x="500" d="M119 961l-10 22q104 235 258 479h288q-26 -62 -53 -131t-135 -370h-348z" />
+<glyph unicode="’" horiz-adv-x="500" d="M631 1462l8 -22q-92 -212 -256 -479h-289q34 81 67.5 167.5t121.5 333.5h348z" />
+<glyph unicode="‚" horiz-adv-x="621" d="M432 238l8 -23q-94 -223 -256 -479h-288q25 59 50 123t138 379h348z" />
+<glyph unicode="“" horiz-adv-x="997" d="M614 961l-8 22q109 246 256 479h289q-49 -115 -100 -258l-88 -243h-349zM119 961l-10 22q104 235 258 479h288q-26 -62 -53 -131t-135 -370h-348z" />
+<glyph unicode="”" horiz-adv-x="997" d="M631 1462l8 -22q-92 -212 -256 -479h-289q49 117 100 258l89 243h348zM1128 1462l7 -22q-39 -91 -110 -226t-144 -253h-289q41 98 99 258l89 243h348z" />
+<glyph unicode="„" horiz-adv-x="1122" d="M432 238l8 -23q-94 -223 -256 -479h-288q25 59 50 123t138 379h348zM934 238l8 -23q-51 -116 -124.5 -251t-133.5 -228h-287q61 148 147 387l42 115h348z" />
+<glyph unicode="•" horiz-adv-x="803" d="M86 688q0 118 47 214t133.5 150t200.5 54q148 0 221.5 -77.5t73.5 -223.5q0 -194 -101.5 -305t-281.5 -111q-137 0 -215 80t-78 219zM594 1133z" />
+<glyph unicode="…" horiz-adv-x="1800" d="M12 0zM12 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM600 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM1186 127q0 109 65 171t179 62q84 0 132 -40t48 -115 q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115z" />
+<glyph unicode=" " horiz-adv-x="383" />
+<glyph unicode="‹" horiz-adv-x="719" d="M61 563l408 518l264 -204l-266 -334l111 -330l-334 -137l-183 477v10z" />
+<glyph unicode="›" horiz-adv-x="719" d="M657 561l-407 -518l-264 205l266 334l-111 329l332 138l184 -478v-10z" />
+<glyph unicode="⁄" horiz-adv-x="248" d="M817 1462l-1083 -1462h-297l1089 1462h291z" />
+<glyph unicode=" " horiz-adv-x="479" />
+<glyph unicode="⁴" horiz-adv-x="848" d="M815 707h-113l-26 -123h-289l27 123h-398l31 178l490 577h325l-119 -557h113zM455 905q62 239 73 274t15 44q-13 -18 -35 -48.5t-215 -269.5h162z" />
+<glyph unicode="€" horiz-adv-x="1188" d="M905 1178q-142 0 -219 -195h297l-45 -205h-309q-18 -59 -25 -123h246l-43 -204h-227q0 -82 27.5 -113t105.5 -31q75 0 145 18.5t148 49.5v-330q-126 -65 -355 -65q-231 0 -341.5 114t-116.5 357h-140l43 204h109l22 123h-106l47 205h117q84 243 243 373.5t377 130.5 q115 0 202 -25t173 -80l-154 -282q-120 78 -221 78z" />
+<glyph unicode="™" horiz-adv-x="1577" d="M469 741h-197v545h-170v176h537v-176h-170v-545zM1049 741l-144 510h-8q6 -64 6 -110v-400h-192v721h286l138 -479l149 479h277v-721h-195v400q0 74 6 110h-8l-152 -510h-163z" />
+<glyph unicode="" horiz-adv-x="1135" d="M0 1135h1135v-1135h-1135v1135z" />
+<glyph horiz-adv-x="1245" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.ttf
new file mode 100755
index 0000000..26a07e9
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.woff
new file mode 100755
index 0000000..45395d1
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBoldItalic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.eot
new file mode 100755
index 0000000..1e29ad5
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.svg
new file mode 100755
index 0000000..2780050
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansextrabold" horiz-adv-x="1200" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1511" d="M45 0zM1374 0h-391v1133h391v-1133zM973 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172zM827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5 t-20.5 -89.5v-30h241v-293z" />
+<glyph unicode="fl" horiz-adv-x="1507" d="M45 0zM1372 0h-391v1556h391v-1556zM827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293z" />
+<glyph unicode="ffi" horiz-adv-x="2357" d="M45 0zM827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293zM1673 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98 q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293zM2220 0h-391v1133h391v-1133zM1819 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172z" />
+<glyph unicode="ffl" horiz-adv-x="2353" d="M45 0zM827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293zM1673 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98 q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293zM2218 0h-391v1556h391v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="594" d="M463 516h-330l-51 946h432zM86 166q0 91 54 141.5t157 50.5q102 0 154.5 -50.5t52.5 -141.5q0 -90 -54.5 -140.5t-152.5 -50.5q-99 0 -155 50.5t-56 140.5z" />
+<glyph unicode=""" horiz-adv-x="1073" d="M477 1462l-41 -528h-274l-41 528h356zM952 1462l-41 -528h-274l-41 528h356z" />
+<glyph unicode="#" horiz-adv-x="1356" d="M1042 813l-30 -168h243v-254h-290l-74 -391h-268l73 391h-168l-71 -391h-267l72 391h-225v254h274l31 168h-238v260h287l72 389h268l-74 -389h166l72 389h268l-73 -389h229v-260h-277zM578 645h165l31 168h-166z" />
+<glyph unicode="$" d="M504 68q-219 10 -422 98v332q116 -59 252 -98.5t239 -39.5q85 0 124.5 20.5t39.5 68.5q0 33 -28.5 56t-95 52t-179.5 70q-127 47 -205 105.5t-113.5 131t-35.5 180.5q0 165 106 258t318 115v137h207v-135q199 -11 401 -98l-119 -285q-209 94 -377 94q-80 0 -112.5 -19.5 t-32.5 -57.5q0 -33 23.5 -54.5t81.5 -48t161 -61.5q209 -74 300 -168.5t91 -243.5q0 -168 -106.5 -273t-310.5 -130v-193h-207v187zM613 1462z" />
+<glyph unicode="%" horiz-adv-x="1942" d="M338 1022q0 -115 19 -166t57 -51t56.5 50t18.5 167q0 115 -18.5 166t-56.5 51q-39 0 -57.5 -52t-18.5 -165zM791 1026q0 -220 -99 -340.5t-282 -120.5q-172 0 -272.5 124.5t-100.5 336.5q0 220 98 338.5t275 118.5q175 0 278 -123t103 -334zM1520 1462l-811 -1462h-297 l811 1462h297zM1450 440q0 -115 19 -166t57 -51q43 0 59.5 58.5t16.5 158.5t-16.5 158.5t-59.5 58.5q-39 0 -57.5 -52t-18.5 -165zM1903 444q0 -219 -99.5 -339.5t-281.5 -120.5q-172 0 -272.5 124.5t-100.5 335.5q0 220 98 338.5t275 118.5q175 0 278 -123t103 -334z" />
+<glyph unicode="&" horiz-adv-x="1636" d="M1141 0l-99 102q-90 -57 -147.5 -78.5t-129 -32.5t-163.5 -11q-158 0 -279.5 54t-186 151t-64.5 221q0 262 272 401q-62 70 -96.5 148.5t-34.5 177.5q0 160 123.5 254t339.5 94q211 0 328.5 -93.5t117.5 -254.5q0 -111 -63.5 -205.5t-200.5 -177.5l199 -189 q75 115 104 260h406q-30 -138 -94.5 -276.5t-145.5 -237.5l320 -307h-506zM475 434q0 -63 45 -103t119 -40q57 0 100 15t66 34l-248 252q-82 -61 -82 -158zM770 1133q0 49 -28.5 70.5t-71.5 21.5q-42 0 -73.5 -25t-31.5 -80q0 -75 88 -155q57 32 87 76.5t30 91.5z" />
+<glyph unicode="'" horiz-adv-x="598" d="M477 1462l-41 -528h-274l-41 528h356z" />
+<glyph unicode="(" horiz-adv-x="735" d="M74 582q0 290 71 523t209 398h326q-126 -175 -194 -412t-68 -507q0 -261 66 -495.5t194 -412.5h-324q-137 158 -208.5 388t-71.5 518zM493 1485z" />
+<glyph unicode=")" horiz-adv-x="735" d="M662 582q0 -283 -71.5 -514.5t-209.5 -391.5h-324q126 172 193 408.5t67 499.5q0 265 -66 501.5t-196 417.5h326q139 -166 210 -402t71 -519zM247 1485z" />
+<glyph unicode="*" horiz-adv-x="1100" d="M702 1556l-38 -352l356 101l37 -295l-314 -21l207 -278l-260 -138l-143 283l-123 -281l-272 136l206 278l-313 25l45 291l348 -101l-39 352h303z" />
+<glyph unicode="+" horiz-adv-x="1159" d="M444 588h-372v268h372v367h269v-367h372v-268h-372v-361h-269v361z" />
+<glyph unicode="," horiz-adv-x="633" d="M498 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342z" />
+<glyph unicode="-" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="." horiz-adv-x="592" d="M86 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141z" />
+<glyph unicode="/" horiz-adv-x="905" d="M901 1483l-545 -1503h-346l545 1503h346z" />
+<glyph unicode="0" d="M1128 729q0 -388 -130 -568.5t-398 -180.5q-262 0 -395 188.5t-133 560.5q0 390 130 572t398 182q261 0 394.5 -189.5t133.5 -564.5zM465 729q0 -248 31 -341t104 -93q74 0 104.5 96t30.5 338q0 243 -31 340.5t-104 97.5t-104 -94t-31 -344z" />
+<glyph unicode="1" d="M942 0h-401v774q0 141 6 258q-37 -45 -92 -94l-166 -137l-205 252l502 409h356v-1462z" />
+<glyph unicode="2" d="M1122 0h-1061v260l357 361q153 160 200 218.5t65.5 100.5t18.5 88q0 57 -37 90t-104 33q-69 0 -139.5 -39.5t-159.5 -116.5l-217 254q113 101 190 144.5t167.5 66.5t203.5 23q142 0 253.5 -50t173 -142.5t61.5 -207.5q0 -86 -21.5 -159t-66.5 -143.5t-119.5 -148.5 t-317.5 -296v-10h553v-326z" />
+<glyph unicode="3" d="M1073 1145q0 -136 -83 -233.5t-240 -141.5v-6q366 -46 366 -346q0 -204 -161.5 -321t-448.5 -117q-118 0 -218.5 17t-217.5 62v328q96 -49 195.5 -72.5t183.5 -23.5q130 0 189.5 36.5t59.5 114.5q0 60 -31 92.5t-100 49t-180 16.5h-90v297h92q301 0 301 154 q0 58 -44.5 86t-119.5 28q-140 0 -290 -94l-164 264q116 80 237.5 114t278.5 34q227 0 356 -90t129 -248z" />
+<glyph unicode="4" d="M1169 283h-161v-283h-390v283h-583v290l608 889h365v-884h161v-295zM618 578v170q0 48 3.5 129.5t5.5 85.5h-11q-34 -77 -77 -144l-162 -241h241z" />
+<glyph unicode="5" d="M664 958q126 0 227.5 -58.5t158 -165.5t56.5 -247q0 -245 -147.5 -376t-446.5 -131q-256 0 -418 79v324q87 -40 196.5 -66t188.5 -26q110 0 169 46.5t59 137.5q0 84 -60 131t-182 47q-93 0 -201 -35l-145 72l55 772h834v-329h-498l-18 -193q78 15 111 16.5t61 1.5z" />
+<glyph unicode="6" d="M70 618q0 306 87.5 495.5t258 279.5t420.5 90q89 0 208 -17v-309q-100 19 -217 19q-198 0 -295 -87t-106 -284h12q90 170 289 170q195 0 302.5 -125.5t107.5 -349.5q0 -241 -136 -380.5t-380 -139.5q-259 0 -405 168t-146 470zM612 293q63 0 102.5 47.5t39.5 151.5 q0 178 -138 178q-68 0 -110.5 -46t-42.5 -112q0 -96 41 -157.5t108 -61.5z" />
+<glyph unicode="7" d="M209 0l502 1133h-633v327h1055v-233l-515 -1227h-409z" />
+<glyph unicode="8" d="M604 1483q231 0 359.5 -93t128.5 -264q0 -116 -60.5 -203.5t-191.5 -152.5q162 -92 228.5 -183.5t66.5 -197.5q0 -195 -141 -302t-394 -107q-258 0 -395 104.5t-137 300.5q0 127 61 216.5t205 162.5q-116 78 -169.5 167.5t-53.5 196.5q0 168 131 261.5t362 93.5zM430 401 q0 -62 44 -99.5t122 -37.5q176 0 176 129q0 49 -38.5 96.5t-137.5 106.5q-89 -47 -127.5 -94.5t-38.5 -100.5zM602 1198q-51 0 -86 -29.5t-35 -76.5q0 -86 117 -152q71 41 97 75t26 77q0 48 -35 77t-84 29z" />
+<glyph unicode="9" d="M1133 793q0 -429 -185 -621t-592 -192q-134 0 -204 10v313q86 -16 172 -16q212 0 327 87.5t125 276.5h-12q-39 -72 -77 -104t-93 -49t-137 -17q-190 0 -297 127t-107 350q0 243 138.5 381t379.5 138q268 0 415 -178t147 -506zM582 1161q-65 0 -105.5 -47t-40.5 -151 q0 -82 35 -130.5t107 -48.5q65 0 113 47t48 113q0 89 -44.5 153t-112.5 64z" />
+<glyph unicode=":" horiz-adv-x="592" d="M86 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM86 956q0 91 55 141t158 50q99 0 152 -50t53 -141q0 -90 -54 -141t-151 -51q-102 0 -157.5 51t-55.5 141z" />
+<glyph unicode=";" horiz-adv-x="608" d="M498 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342zM92 956q0 91 53.5 141t157.5 50q100 0 153.5 -50.5t53.5 -140.5t-54 -141t-153 -51q-102 0 -156.5 50.5t-54.5 141.5z" />
+<glyph unicode="<" horiz-adv-x="1159" d="M1083 178l-1011 449v172l1011 506v-297l-620 -283l620 -252v-295z" />
+<glyph unicode="=" horiz-adv-x="1159" d="M72 815v268h1015v-268h-1015zM72 358v271h1015v-271h-1015z" />
+<glyph unicode=">" horiz-adv-x="1159" d="M72 473l620 252l-620 283v297l1011 -506v-172l-1011 -449v295z" />
+<glyph unicode="?" horiz-adv-x="1034" d="M295 516v86q0 98 40 165.5t142 131.5q81 51 116.5 92t35.5 94q0 42 -38 66.5t-99 24.5q-151 0 -353 -107l-139 272q249 142 520 142q223 0 350 -98t127 -267q0 -121 -56.5 -209.5t-180.5 -167.5q-105 -68 -131.5 -99.5t-26.5 -74.5v-51h-307zM252 166q0 92 53.5 142 t157.5 50q100 0 153.5 -50.5t53.5 -141.5t-55.5 -141t-151.5 -50q-99 0 -155 49.5t-56 141.5z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M1755 756q0 -141 -48.5 -263t-134.5 -191t-196 -69q-79 0 -143 31.5t-100 87.5h-15q-107 -119 -260 -119q-183 0 -281 107t-98 299q0 141 62 249.5t179 167t271 58.5q81 0 178.5 -16.5t178.5 -44.5l-21 -422l-2 -94q0 -86 49 -86q52 0 84.5 87t32.5 220q0 239 -135 369 t-383 130q-190 0 -330.5 -79t-214.5 -226.5t-74 -345.5q0 -255 142.5 -393.5t402.5 -138.5q116 0 250.5 25t263.5 71v-229q-224 -95 -500 -95q-388 0 -609.5 202.5t-221.5 561.5q0 253 114.5 453.5t316 309t456.5 108.5q234 0 413.5 -89t276 -253.5t96.5 -382.5zM760 641 q0 -100 36.5 -145t96.5 -45q77 0 113 62t47 220l10 156q-40 6 -68 6q-108 0 -171.5 -67t-63.5 -187z" />
+<glyph unicode="A" horiz-adv-x="1487" d="M1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311z" />
+<glyph unicode="B" horiz-adv-x="1380" d="M158 1462h510q298 0 442.5 -88.5t144.5 -275.5q0 -123 -63 -210t-166 -112v-10q136 -36 197 -120t61 -218q0 -199 -149.5 -313.5t-407.5 -114.5h-569v1462zM553 901h119q85 0 131.5 35t46.5 104q0 123 -186 123h-111v-262zM553 612v-307h139q185 0 185 156 q0 73 -49.5 112t-143.5 39h-131z" />
+<glyph unicode="C" horiz-adv-x="1329" d="M809 1159q-141 0 -220 -115.5t-79 -318.5q0 -422 321 -422q97 0 188 27t183 65v-334q-183 -81 -414 -81q-331 0 -507.5 192t-176.5 555q0 227 85.5 399t246 264.5t377.5 92.5q237 0 453 -103l-121 -311q-81 38 -162 64t-174 26z" />
+<glyph unicode="D" horiz-adv-x="1503" d="M1399 762q0 -366 -201.5 -564t-566.5 -198h-473v1462h506q352 0 543.5 -180t191.5 -520zM989 748q0 201 -79.5 298t-241.5 97h-115v-819h88q180 0 264 104.5t84 319.5z" />
+<glyph unicode="E" horiz-adv-x="1124" d="M1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322z" />
+<glyph unicode="F" horiz-adv-x="1104" d="M547 0h-389v1462h864v-317h-475v-279h438v-317h-438v-549z" />
+<glyph unicode="G" horiz-adv-x="1516" d="M745 856h631v-788q-257 -88 -565 -88q-338 0 -522.5 196t-184.5 559q0 354 202 551t566 197q138 0 260.5 -26t213.5 -66l-125 -310q-158 78 -347 78q-173 0 -267.5 -112.5t-94.5 -321.5q0 -205 85.5 -312.5t246.5 -107.5q88 0 162 17v229h-261v305z" />
+<glyph unicode="H" horiz-adv-x="1569" d="M1411 0h-397v596h-459v-596h-397v1462h397v-542h459v542h397v-1462z" />
+<glyph unicode="I" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397z" />
+<glyph unicode="J" horiz-adv-x="721" d="M43 -459q-108 0 -205 21v307q32 -6 68 -13.5t78 -7.5q98 0 140 59t42 202v1353h397v-1319q0 -297 -130 -449.5t-390 -152.5z" />
+<glyph unicode="K" horiz-adv-x="1407" d="M1407 0h-446l-289 559l-117 -70v-489h-397v1462h397v-635q30 59 121 187l307 448h432l-461 -655z" />
+<glyph unicode="L" horiz-adv-x="1192" d="M158 0v1462h395v-1143h563v-319h-958z" />
+<glyph unicode="M" horiz-adv-x="1980" d="M795 0l-299 1053h-9q21 -269 21 -418v-635h-350v1462h526l305 -1038h8l299 1038h527v-1462h-363v641q0 50 1.5 111t13.5 299h-9l-295 -1051h-376z" />
+<glyph unicode="N" horiz-adv-x="1708" d="M1550 0h-518l-534 1030h-9q19 -243 19 -371v-659h-350v1462h516l532 -1016h6q-14 221 -14 355v661h352v-1462z" />
+<glyph unicode="O" horiz-adv-x="1632" d="M1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428z" />
+<glyph unicode="P" horiz-adv-x="1294" d="M1219 997q0 -245 -144.5 -378.5t-410.5 -133.5h-111v-485h-395v1462h506q277 0 416 -121t139 -344zM553 807h72q89 0 141.5 50t52.5 138q0 148 -164 148h-102v-336z" />
+<glyph unicode="Q" horiz-adv-x="1632" d="M1526 733q0 -497 -316 -670l357 -411h-492l-258 325l-1 1v1l-1 1q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428z" />
+<glyph unicode="R" horiz-adv-x="1386" d="M553 532v-532h-395v1462h479q596 0 596 -432q0 -254 -248 -393l426 -637h-448l-310 532h-100zM553 829h74q207 0 207 183q0 151 -203 151h-78v-334z" />
+<glyph unicode="S" horiz-adv-x="1182" d="M1114 444q0 -136 -69 -241.5t-199 -164t-305 -58.5q-146 0 -245 20.5t-206 71.5v352q113 -58 235 -90.5t224 -32.5q88 0 129 30.5t41 78.5q0 30 -16.5 52.5t-53 45.5t-194.5 94q-143 65 -214.5 126t-106 140t-34.5 187q0 202 147 315t404 113q227 0 463 -105l-121 -305 q-205 94 -354 94q-77 0 -112 -27t-35 -67q0 -43 44.5 -77t241.5 -124q189 -85 262.5 -182.5t73.5 -245.5z" />
+<glyph unicode="T" horiz-adv-x="1210" d="M803 0h-395v1139h-357v323h1108v-323h-356v-1139z" />
+<glyph unicode="U" horiz-adv-x="1550" d="M1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395z" />
+<glyph unicode="V" horiz-adv-x="1421" d="M979 1462h442l-479 -1462h-465l-477 1462h444l199 -741q62 -247 68 -344q7 70 28 175t37 165z" />
+<glyph unicode="W" horiz-adv-x="2128" d="M1737 0h-467l-140 637q-10 40 -31.5 159t-31.5 199q-8 -65 -26 -161.5t-35.5 -177.5t-145.5 -656h-467l-362 1462h381l159 -733q54 -243 74 -387q13 102 46.5 277t62.5 290l129 553h366l125 -553q32 -133 65 -307t44 -260q13 111 71 385l162 735h381z" />
+<glyph unicode="X" horiz-adv-x="1481" d="M1475 0h-457l-285 457l-282 -457h-447l485 748l-456 714h438l264 -452l254 452h451l-463 -745z" />
+<glyph unicode="Y" horiz-adv-x="1360" d="M680 920l252 542h428l-481 -891v-571h-398v559l-481 903h430z" />
+<glyph unicode="Z" horiz-adv-x="1251" d="M1200 0h-1139v244l633 899h-618v319h1108v-243l-633 -900h649v-319z" />
+<glyph unicode="[" horiz-adv-x="664" d="M616 -344h-499v1847h499v-254h-182v-1339h182v-254zM355 1485z" />
+<glyph unicode="\" horiz-adv-x="905" d="M352 1483l545 -1503h-346l-545 1503h346z" />
+<glyph unicode="]" horiz-adv-x="664" d="M47 -90h182v1339h-182v254h500v-1847h-500v254zM317 1485z" />
+<glyph unicode="^" horiz-adv-x="1075" d="M-16 502l440 966h170l508 -966h-295l-289 577l-124 -291l-124 -286h-286z" />
+<glyph unicode="_" horiz-adv-x="1024" d="M1028 -379h-1032v246h1032v-246z" />
+<glyph unicode="`" horiz-adv-x="1225" d="M696 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="a" horiz-adv-x="1276" d="M874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104z" />
+<glyph unicode="b" horiz-adv-x="1317" d="M827 1153q185 0 293.5 -155t108.5 -429q0 -276 -109.5 -432.5t-304.5 -156.5q-63 0 -112 13.5t-87.5 37.5t-89.5 80h-24l-62 -111h-305v1556h391v-352q0 -63 -14 -217h14q57 88 131.5 127t169.5 39zM684 846q-82 0 -120 -57t-38 -179v-55q0 -139 38 -199.5t124 -60.5 q69 0 106 70.5t37 207.5q0 273 -147 273z" />
+<glyph unicode="c" horiz-adv-x="1104" d="M651 -20q-278 0 -421.5 150t-143.5 431q0 282 155 437t441 155q197 0 371 -86l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 -272q172 0 330 100v-311q-151 -100 -363 -100z" />
+<glyph unicode="d" horiz-adv-x="1317" d="M487 -20q-121 0 -211.5 69t-140 203t-49.5 313q0 276 111 432t305 156q95 0 166.5 -38t130.5 -128h8q-19 133 -19 266v303h394v-1556h-295l-84 143h-15q-101 -163 -301 -163zM647 289q94 0 132.5 59t41.5 182v31q0 150 -43 213.5t-135 63.5q-77 0 -119.5 -72.5 t-42.5 -206.5q0 -132 43 -201t123 -69z" />
+<glyph unicode="e" horiz-adv-x="1266" d="M682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49z" />
+<glyph unicode="f" horiz-adv-x="846" d="M827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293z" />
+<glyph unicode="g" horiz-adv-x="1241" d="M1204 1133v-189l-155 -57q32 -58 32 -135q0 -183 -128.5 -284t-383.5 -101q-63 0 -100 8q-14 -26 -14 -49q0 -29 47 -44.5t123 -15.5h188q381 0 381 -321q0 -207 -176.5 -322t-495.5 -115q-241 0 -371.5 80.5t-130.5 231.5q0 203 252 262q-52 22 -90.5 71t-38.5 97 q0 53 29 93.5t121 96.5q-88 39 -138.5 122t-50.5 202q0 185 126 287t360 102q31 0 107 -7t112 -13h395zM350 -141q0 -48 52 -77.5t139 -29.5q142 0 227.5 35.5t85.5 91.5q0 45 -52 63.5t-149 18.5h-153q-63 0 -106.5 -29.5t-43.5 -72.5zM473 762q0 -174 121 -174 q56 0 86.5 43t30.5 129q0 176 -117 176q-121 0 -121 -174z" />
+<glyph unicode="h" horiz-adv-x="1372" d="M848 0v618q0 228 -135 228q-96 0 -141.5 -80.5t-45.5 -267.5v-498h-391v1556h391v-221q0 -150 -16 -342h18q56 88 133 124t179 36q190 0 295.5 -109.5t105.5 -306.5v-737h-393z" />
+<glyph unicode="i" horiz-adv-x="666" d="M528 0h-391v1133h391v-1133zM127 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172z" />
+<glyph unicode="j" horiz-adv-x="664" d="M106 -492q-48 0 -110.5 7.5t-99.5 17.5v305q64 -18 120 -18q119 0 119 170v1143h391v-1225q0 -187 -109.5 -293.5t-310.5 -106.5zM125 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172z" />
+<glyph unicode="k" horiz-adv-x="1350" d="M514 637q71 113 121 176l254 320h436l-393 -482l418 -651h-447l-248 406l-127 -97v-309h-393v1556h393v-612q0 -157 -22 -307h8z" />
+<glyph unicode="l" horiz-adv-x="662" d="M526 0h-391v1556h391v-1556z" />
+<glyph unicode="m" horiz-adv-x="2048" d="M1526 0v616q0 115 -31.5 172.5t-99.5 57.5q-90 0 -132 -77t-42 -241v-528h-392v616q0 115 -30 172.5t-97 57.5q-92 0 -134 -82t-42 -268v-496h-391v1133h295l49 -140h23q45 78 130.5 119t194.5 41q245 0 344 -149h31q48 70 133.5 109.5t188.5 39.5q201 0 297 -103 t96 -313v-737h-391z" />
+<glyph unicode="n" horiz-adv-x="1372" d="M850 0v618q0 113 -32.5 170.5t-104.5 57.5q-99 0 -143 -79t-44 -271v-496h-391v1133h295l49 -140h23q50 80 138.5 120t203.5 40q188 0 292.5 -109t104.5 -307v-737h-391z" />
+<glyph unicode="o" horiz-adv-x="1305" d="M1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5z" />
+<glyph unicode="p" horiz-adv-x="1317" d="M815 -20q-86 0 -154 28.5t-135 102.5h-18q18 -119 18 -148v-455h-391v1625h318l55 -144h18q109 164 301 164q188 0 295 -156t107 -428q0 -274 -111.5 -431.5t-302.5 -157.5zM684 846q-86 0 -120.5 -61.5t-37.5 -182.5v-31q0 -146 39 -211t123 -65q75 0 109 64.5t34 213.5 q0 146 -34 209.5t-113 63.5z" />
+<glyph unicode="q" horiz-adv-x="1317" d="M492 -20q-190 0 -298 156t-108 429q0 276 110.5 432t301.5 156q205 0 309 -160h8l29 140h338v-1625h-391v469q0 34 12 166h-12q-96 -163 -299 -163zM651 283q89 0 129.5 55t40.5 186v47q0 150 -41 214.5t-135 64.5q-162 0 -162 -291q0 -148 41 -212t127 -64z" />
+<glyph unicode="r" horiz-adv-x="961" d="M819 1153q51 0 97 -8l22 -4l-35 -369q-48 12 -133 12q-128 0 -186 -58.5t-58 -168.5v-557h-391v1133h291l61 -181h19q49 90 136.5 145.5t176.5 55.5z" />
+<glyph unicode="s" horiz-adv-x="1092" d="M1010 348q0 -182 -124 -275t-356 -93q-126 0 -219 13.5t-190 49.5v313q91 -40 199.5 -66t193.5 -26q127 0 127 58q0 30 -35.5 53.5t-206.5 91.5q-156 64 -218 145.5t-62 206.5q0 158 122 246t345 88q112 0 210.5 -24.5t204.5 -71.5l-106 -252q-78 35 -165 59.5t-142 24.5 q-96 0 -96 -47q0 -29 33.5 -49.5t193.5 -83.5q119 -49 177.5 -96t86 -110.5t27.5 -154.5z" />
+<glyph unicode="t" horiz-adv-x="942" d="M690 289q79 0 189 39v-285q-79 -34 -150.5 -48.5t-167.5 -14.5q-197 0 -284 96.5t-87 296.5v467h-137v159l174 123l101 238h256v-227h278v-293h-278v-441q0 -110 106 -110z" />
+<glyph unicode="u" horiz-adv-x="1372" d="M942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295z" />
+<glyph unicode="v" horiz-adv-x="1251" d="M432 0l-432 1133h408l192 -670q1 -5 4 -17t6 -28.5t5.5 -35t2.5 -34.5h7q0 52 18 113l201 672h407l-432 -1133h-387z" />
+<glyph unicode="w" horiz-adv-x="1864" d="M1110 0l-128 540l-30 163l-20 131h-6q-49 -280 -66 -353l-115 -481h-411l-309 1133h385l92 -435q44 -224 51 -372h6q3 92 55 350l105 457h432l96 -463q46 -221 58 -344h6q6 76 20 189.5t31 182.5l100 435h377l-311 -1133h-418z" />
+<glyph unicode="x" horiz-adv-x="1290" d="M375 578l-346 555h444l172 -318l176 318h445l-355 -555l369 -578h-444l-191 344l-190 -344h-445z" />
+<glyph unicode="y" horiz-adv-x="1249" d="M-2 1133h412l192 -650q14 -51 19 -123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 -160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5z" />
+<glyph unicode="z" horiz-adv-x="1038" d="M987 0h-938v223l469 611h-442v299h889v-242l-449 -592h471v-299z" />
+<glyph unicode="{" horiz-adv-x="887" d="M61 719q115 0 180.5 44.5t65.5 125.5v254q0 139 49 208t159.5 100.5t305.5 31.5v-279q-89 -3 -120.5 -13.5t-50.5 -32.5t-19 -60v-271q0 -113 -56.5 -173.5t-183.5 -78.5v-12q128 -20 184 -79t56 -167v-276q0 -39 21 -61t56 -32.5t113 -13.5v-278q-197 0 -307 32 t-158.5 101.5t-48.5 210.5v248q0 80 -67 125t-179 45v301z" />
+<glyph unicode="|" horiz-adv-x="1042" d="M387 1556h268v-2002h-268v2002z" />
+<glyph unicode="}" horiz-adv-x="887" d="M825 418q-111 0 -178 -45t-67 -125v-248q0 -140 -49 -210t-159 -102t-306 -32v278q108 4 149 29.5t41 77.5v276q0 108 56 167t184 79v12q-127 18 -183.5 78.5t-56.5 173.5v271q0 39 -19.5 60.5t-50 32t-120.5 13.5v279q196 0 306 -31.5t159 -100.5t49 -208v-254 q0 -81 65 -125.5t180 -44.5v-301z" />
+<glyph unicode="~" horiz-adv-x="1159" d="M305 647q-110 0 -233 -121v281q104 108 264 108q69 0 130 -13.5t150 -49.5q131 -55 238 -55q50 0 112.5 32t118.5 89v-281q-105 -109 -264 -109q-71 0 -133.5 15t-146.5 49q-131 55 -236 55z" />
+<glyph unicode="¡" horiz-adv-x="594" d="M133 612h330l51 -946h-432zM510 963q0 -91 -53.5 -142t-157.5 -51q-102 0 -154.5 50.5t-52.5 142.5q0 90 54 140t153 50q101 0 156 -50.5t55 -139.5z" />
+<glyph unicode="¢" d="M565 1483h207v-154q171 -9 324 -84l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 -272q172 0 330 100v-311q-127 -82 -285 -98v-180h-207v186q-212 31 -324 176t-112 397q0 240 113 388.5t323 189.5v166z" />
+<glyph unicode="£" d="M723 1485q210 0 405 -82l-110 -289q-148 55 -252 55q-58 0 -85.5 -33t-27.5 -104v-106h344v-277h-344v-96q0 -150 -159 -227h671v-326h-1061v313q81 47 109.5 76.5t41.5 67.5t13 94v98h-166v277h166v118q0 215 117 328t338 113z" />
+<glyph unicode="¤" horiz-adv-x="1159" d="M180 723q0 89 41 176l-125 119l180 182l123 -123q84 41 172 41q91 0 177 -45l120 127l185 -174l-127 -125q41 -76 41 -178q0 -94 -41 -176l121 -119l-179 -178l-120 119q-89 -39 -177 -39q-100 0 -176 37l-119 -115l-178 178l123 119q-41 82 -41 174zM436 723 q0 -56 40.5 -95.5t94.5 -39.5q58 0 100 38.5t42 96.5t-42 97.5t-100 39.5q-56 0 -95.5 -40.5t-39.5 -96.5z" />
+<glyph unicode="¥" d="M600 958l193 504h399l-363 -712h195v-211h-242v-117h242v-209h-242v-213h-364v213h-246v209h246v117h-246v211h190l-354 712h400z" />
+<glyph unicode="¦" horiz-adv-x="1042" d="M387 1556h268v-839h-268v839zM387 393h268v-839h-268v839z" />
+<glyph unicode="§" horiz-adv-x="1024" d="M106 803q0 64 43 125t121 108q-141 102 -141 246q0 137 111 216t295 79q191 0 370 -86l-98 -221q-73 40 -146.5 63t-128.5 23q-108 0 -108 -74q0 -43 45.5 -79t128.5 -70q175 -71 252.5 -152t77.5 -178q0 -77 -32 -137.5t-116 -120.5q125 -94 125 -244 q0 -149 -116.5 -237.5t-319.5 -88.5q-204 0 -352 86v244q79 -44 182 -76t172 -32q139 0 139 96q0 42 -31 72.5t-139 78.5q-141 63 -205.5 112t-96.5 108t-32 139zM397 834q0 -51 44 -91t155 -98q41 47 41 107q0 57 -42 100t-140 84q-58 -32 -58 -102z" />
+<glyph unicode="¨" horiz-adv-x="1233" d="M223 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM702 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="©" horiz-adv-x="1688" d="M887 971q-81 0 -126.5 -61t-45.5 -179q0 -128 43.5 -185t134.5 -57q138 0 258 68v-231q-126 -64 -272 -64q-212 0 -328.5 124t-116.5 349q0 217 113 340t321 123q166 0 322 -78l-92 -205q-106 56 -211 56zM92 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272 t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM256 731q0 -158 79.5 -295.5t215.5 -215t293 -77.5q158 0 294 78.5t215 215t79 294.5q0 157 -77.5 293t-214 215.5t-296.5 79.5q-158 0 -294.5 -78.5t-215 -215 t-78.5 -294.5z" />
+<glyph unicode="ª" horiz-adv-x="813" d="M571 741l-45 127q-48 -76 -104.5 -107.5t-138.5 -31.5q-109 0 -171.5 63.5t-62.5 174.5q0 116 77 171t267 64l88 4v6q0 41 -25.5 58.5t-76.5 17.5q-57 0 -107.5 -15t-103.5 -40l-76 166q108 51 180.5 65.5t163.5 14.5q139 0 218 -75.5t79 -213.5v-449h-162zM301 979 q0 -32 18 -50t52 -18q50 0 80 38.5t30 97.5v22l-84 -6q-96 -6 -96 -84z" />
+<glyph unicode="«" horiz-adv-x="1395" d="M74 588l389 483l280 -149l-272 -347l272 -348l-280 -147l-389 481v27zM649 588l387 483l283 -149l-275 -347l275 -348l-283 -147l-387 481v27z" />
+<glyph unicode="¬" horiz-adv-x="1159" d="M1085 238h-270v350h-743v268h1013v-618z" />
+<glyph unicode="­" horiz-adv-x="651" d="M43 393zM43 393v312h565v-312h-565z" />
+<glyph unicode="®" horiz-adv-x="1688" d="M1204 918q0 -87 -33 -146.5t-108 -95.5l194 -363h-290l-146 320h-35v-320h-280v875h291q407 0 407 -270zM786 809h11q58 0 91.5 21.5t33.5 76.5q0 47 -27.5 66.5t-95.5 19.5h-13v-184zM92 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272t104 -383 q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM256 731q0 -158 79.5 -295.5t215.5 -215t293 -77.5q158 0 294 78.5t215 215t79 294.5q0 157 -77.5 293t-214 215.5t-296.5 79.5q-158 0 -294.5 -78.5t-215 -215t-78.5 -294.5z" />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v246h1036v-246z" />
+<glyph unicode="°" horiz-adv-x="864" d="M63 1114q0 97 49 182.5t135 136t185 50.5t185 -50.5t135 -135.5t49 -183q0 -97 -48.5 -181t-134 -133.5t-186.5 -49.5q-99 0 -185 49t-135 133t-49 182zM301 1114q0 -50 38.5 -88.5t92.5 -38.5t92.5 39t38.5 88q0 52 -37.5 92.5t-93.5 40.5t-93.5 -40.5t-37.5 -92.5z" />
+<glyph unicode="±" horiz-adv-x="1159" d="M444 684h-372v268h372v367h269v-367h372v-268h-372v-360h-269v360zM72 0v268h1013v-268h-1013z" />
+<glyph unicode="²" horiz-adv-x="817" d="M750 586h-674v207l215 213q84 84 116.5 129t32.5 79q0 58 -65 58q-81 0 -172 -88l-142 166q80 73 167.5 104t203.5 31q142 0 219.5 -63t77.5 -175q0 -46 -13 -87t-40.5 -84.5t-74.5 -91t-198 -173.5h347v-225z" />
+<glyph unicode="³" horiz-adv-x="817" d="M725 1266q0 -78 -37 -132.5t-125 -86.5v-9q97 -24 144 -76t47 -139q0 -120 -98 -187t-277 -67q-185 0 -309 70v233q117 -81 297 -81q116 0 116 67q0 41 -32.5 56.5t-102.5 15.5h-104v194h80q71 0 105 18.5t34 59.5q0 25 -21 46.5t-71 21.5t-94 -17t-97 -57l-117 170 q149 115 343 115q146 0 232.5 -57.5t86.5 -157.5z" />
+<glyph unicode="´" horiz-adv-x="1225" d="M264 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="µ" horiz-adv-x="1376" d="M526 518q0 -115 33.5 -172t112.5 -57q93 0 134.5 83t41.5 265v496h393v-1133h-293l-53 152h-16q-34 -88 -90.5 -130t-122.5 -42q-56 0 -90 20t-62 63q12 -90 12 -235v-320h-391v1625h391v-615z" />
+<glyph unicode="¶" horiz-adv-x="1317" d="M1186 -260h-191v1587h-157v-1587h-191v819q-54 -18 -125 -18q-216 0 -318 125t-102 376q0 256 107.5 385t343.5 129h633v-1816z" />
+<glyph unicode="·" horiz-adv-x="592" d="M86 723q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -141.5t-150.5 -51.5q-100 0 -156.5 51t-56.5 142z" />
+<glyph unicode="¸" horiz-adv-x="383" d="M397 -252q0 -109 -75 -174.5t-199 -65.5q-136 0 -213 29v205q83 -27 147 -27q52 0 52 47q0 33 -41 58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5z" />
+<glyph unicode="¹" horiz-adv-x="817" d="M616 586h-282v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98l-146 170l340 274h219v-876z" />
+<glyph unicode="º" horiz-adv-x="803" d="M756 1104q0 -174 -95.5 -274.5t-261.5 -100.5q-159 0 -254.5 102.5t-95.5 272.5q0 177 94.5 276t259.5 99q157 0 255 -103t98 -272zM301 1104q0 -87 24 -129.5t76 -42.5q99 0 99 172q0 174 -99 174q-100 0 -100 -174z" />
+<glyph unicode="»" horiz-adv-x="1395" d="M1321 561l-387 -481l-285 147l275 348l-275 347l285 149l387 -483v-27zM745 561l-387 -481l-282 147l272 348l-272 347l282 149l387 -483v-27z" />
+<glyph unicode="¼" horiz-adv-x="1919" d="M0 0zM1798 140h-125v-139h-275v139h-370v188l350 555h295v-542h125v-201zM1398 341v166q0 69 7 135q-40 -100 -62 -133l-102 -168h157zM1412 1462l-754 -1462h-301l753 1462h302zM547 586h-282v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98l-146 170l340 274 h219v-876z" />
+<glyph unicode="½" horiz-adv-x="1921" d="M0 0zM1829 1h-674v207l215 213q84 84 116.5 129t32.5 79q0 58 -65 58q-81 0 -172 -88l-142 166q80 73 167.5 104t203.5 31q142 0 219.5 -63t77.5 -175q0 -46 -13 -87t-40.5 -84.5t-74.5 -91t-198 -173.5h347v-225zM1436 1462l-754 -1462h-301l753 1462h302zM547 586h-282 v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98l-146 170l340 274h219v-876z" />
+<glyph unicode="¾" horiz-adv-x="1921" d="M83 0zM1870 140h-125v-139h-275v139h-370v188l350 555h295v-542h125v-201zM1470 341v166q0 69 7 135q-40 -100 -62 -133l-102 -168h157zM745 1266q0 -78 -37 -132.5t-125 -86.5v-9q97 -24 144 -76t47 -139q0 -120 -98 -187t-277 -67q-185 0 -309 70v233q117 -81 297 -81 q116 0 116 67q0 41 -32.5 56.5t-102.5 15.5h-104v194h80q71 0 105 18.5t34 59.5q0 25 -21 46.5t-71 21.5t-94 -17t-97 -57l-117 170q149 115 343 115q146 0 232.5 -57.5t86.5 -157.5zM1520 1462l-754 -1462h-301l753 1462h302z" />
+<glyph unicode="¿" horiz-adv-x="1034" d="M739 612v-86q0 -98 -40 -165.5t-142 -131.5q-57 -36 -90 -66t-47 -55.5t-14 -64.5q0 -42 37.5 -66t99.5 -24q148 0 352 106l139 -272q-243 -141 -520 -141q-223 0 -350 98t-127 266q0 120 55 208t182 169q100 64 129 97t29 77v51h307zM782 963q0 -93 -53 -143t-158 -50 q-101 0 -153.5 50t-52.5 143q0 90 54 140t152 50q101 0 156 -49.5t55 -140.5z" />
+<glyph unicode="À" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM704 1579q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="Á" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM532 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Â" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM948 1579q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29 h-254z" />
+<glyph unicode="Ã" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM926 1577q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5 q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="Ä" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM352 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5 q-78 0 -124 41t-46 115zM831 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="Å" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM1011 1616q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 183.5q0 116 71.5 185t192.5 69 q118 0 195 -70t77 -182zM823 1614q0 38 -24.5 61t-59.5 23t-59.5 -23t-24.5 -61q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5z" />
+<glyph unicode="Æ" horiz-adv-x="1937" d="M1839 0h-870v274h-437l-100 -274h-442l628 1462h1221v-317h-473v-230h438v-317h-438v-276h473v-322zM653 602h316v526h-111z" />
+<glyph unicode="Ç" horiz-adv-x="1329" d="M104 0zM809 1159q-141 0 -220 -115.5t-79 -318.5q0 -422 321 -422q97 0 188 27t183 65v-334q-183 -81 -414 -81q-331 0 -507.5 192t-176.5 555q0 227 85.5 399t246 264.5t377.5 92.5q237 0 453 -103l-121 -311q-81 38 -162 64t-174 26zM964 -252q0 -109 -75 -174.5 t-199 -65.5q-136 0 -213 29v205q83 -27 147 -27q52 0 52 47q0 33 -41 58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5z" />
+<glyph unicode="È" horiz-adv-x="1124" d="M154 0zM1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322zM586 1579q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="É" horiz-adv-x="1124" d="M158 0zM1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322zM362 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Ê" horiz-adv-x="1124" d="M151 0zM1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322zM804 1579q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="Ë" horiz-adv-x="1124" d="M158 0zM1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322zM187 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM666 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115 q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="Ì" horiz-adv-x="713" d="M0 0zM158 0v1462h397v-1462h-397zM316 1579q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="Í" horiz-adv-x="713" d="M156 0zM158 0v1462h397v-1462h-397zM156 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Î" horiz-adv-x="713" d="M0 0zM158 0v1462h397v-1462h-397zM558 1579q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="Ï" horiz-adv-x="713" d="M0 0zM158 0v1462h397v-1462h-397zM-55 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM424 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
+<glyph unicode="Ð" horiz-adv-x="1503" d="M1399 762q0 -366 -201.5 -564t-566.5 -198h-473v563h-127v320h127v579h506q352 0 543.5 -180t191.5 -520zM989 748q0 201 -79.5 298t-241.5 97h-115v-260h211v-320h-211v-239h88q180 0 264 104.5t84 319.5z" />
+<glyph unicode="Ñ" horiz-adv-x="1708" d="M158 0zM1550 0h-518l-534 1030h-9q19 -243 19 -371v-659h-350v1462h516l532 -1016h6q-14 221 -14 355v661h352v-1462zM1030 1577q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25 t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="Ò" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM829 1579 q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="Ó" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM583 1579v29 q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Ô" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM1016 1579q-84 48 -201 150 q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="Õ" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM997 1577q-45 0 -90.5 15 t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="Ö" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM403 1751q0 75 46 116.5 t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM882 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="×" horiz-adv-x="1159" d="M387 723l-266 268l182 189l270 -267l275 267l188 -183l-274 -274l270 -272l-184 -185l-275 271l-270 -269l-180 187z" />
+<glyph unicode="Ø" horiz-adv-x="1632" d="M1526 733q0 -369 -181 -561t-530 -192q-177 0 -307 43l-84 -132l-193 125l84 125q-211 194 -211 594q0 365 182.5 557.5t530.5 192.5q191 0 330 -55l76 118l190 -114l-82 -125q195 -189 195 -576zM1110 733q0 125 -18 211l-394 -620q54 -15 117 -15q150 0 222.5 103 t72.5 321zM520 733q0 -155 29 -239l403 639q-68 28 -135 28q-297 0 -297 -428z" />
+<glyph unicode="Ù" horiz-adv-x="1550" d="M150 0zM1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395zM712 1579q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="Ú" horiz-adv-x="1550" d="M150 0zM1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395zM561 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Û" horiz-adv-x="1550" d="M150 0zM1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395zM975 1579q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393 q94 -137 256 -299v-29h-254z" />
+<glyph unicode="Ü" horiz-adv-x="1550" d="M150 0zM1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395zM362 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5 t-125.5 -42.5q-78 0 -124 41t-46 115zM841 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="Ý" horiz-adv-x="1360" d="M0 0zM680 920l252 542h428l-481 -891v-571h-398v559l-481 903h430zM471 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Þ" horiz-adv-x="1284" d="M1219 784q0 -245 -144.5 -378.5t-410.5 -133.5h-111v-272h-395v1462h395v-213h111q277 0 416 -121t139 -344zM553 594h72q89 0 141.5 50t52.5 138q0 148 -164 148h-102v-336z" />
+<glyph unicode="ß" horiz-adv-x="1536" d="M1339 1190q0 -57 -20 -103.5t-49.5 -84t-64.5 -66.5t-64.5 -52t-49.5 -41t-20 -32q0 -23 24.5 -44t93.5 -58q169 -95 228.5 -173t59.5 -202q0 -174 -115 -264t-338 -90q-136 0 -221.5 12.5t-149.5 46.5v291q49 -30 131.5 -55t147.5 -25q61 0 99 23.5t38 62.5 q0 28 -14.5 47t-50.5 42.5t-121 68.5q-126 67 -175 124.5t-49 137.5q0 122 140 218q75 52 107 91.5t32 83.5q0 51 -49.5 85t-140.5 34q-222 0 -222 -209v-1059h-391v1100q0 215 167 341t446 126q276 0 433.5 -99.5t157.5 -277.5z" />
+<glyph unicode="à" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM636 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="á" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM434 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="â" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM850 1238q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="ã" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM840 1239q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="ä" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM268 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM747 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
+<glyph unicode="å" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM925 1491q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 183.5q0 116 71.5 185t192.5 69q118 0 195 -70t77 -182zM737 1489q0 38 -24.5 61t-59.5 23t-59.5 -23t-24.5 -61q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5z " />
+<glyph unicode="æ" horiz-adv-x="1915" d="M1341 -20q-280 0 -430 190q-80 -83 -141.5 -120.5t-138.5 -53.5t-197 -16q-162 0 -261 101.5t-99 270.5q0 345 497 363l183 6v18q0 138 -136 138q-138 0 -313 -80l-110 256q190 100 454 100q201 0 336 -94q70 49 153 71.5t199 22.5q229 0 360.5 -136.5t131.5 -383.5v-172 h-696q4 -90 74 -146.5t186 -56.5q194 0 364 86v-281q-94 -48 -191 -65.5t-225 -17.5zM756 506l-84 -4q-106 -4 -152.5 -38.5t-46.5 -107.5q0 -100 113 -100q69 0 119.5 45t50.5 117v88zM1315 887q-162 0 -176 -180h340q-2 82 -48 131t-116 49z" />
+<glyph unicode="ç" horiz-adv-x="1104" d="M86 0zM651 -20q-278 0 -421.5 150t-143.5 431q0 282 155 437t441 155q197 0 371 -86l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 -272q172 0 330 100v-311q-151 -100 -363 -100zM848 -252q0 -109 -75 -174.5t-199 -65.5q-136 0 -213 29 v205q83 -27 147 -27q52 0 52 47q0 33 -41 58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5z" />
+<glyph unicode="è" horiz-adv-x="1266" d="M86 0zM682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49zM621 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="é" horiz-adv-x="1266" d="M86 0zM682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49zM471 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="ê" horiz-adv-x="1266" d="M86 0zM682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49zM858 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="ë" horiz-adv-x="1266" d="M86 0zM682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49zM252 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM731 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
+<glyph unicode="ì" horiz-adv-x="666" d="M0 0zM528 0h-391v1133h391v-1133zM302 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="í" horiz-adv-x="666" d="M107 0zM528 0h-391v1133h391v-1133zM107 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="î" horiz-adv-x="666" d="M0 0zM528 0h-391v1133h391v-1133zM533 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="ï" horiz-adv-x="666" d="M0 0zM528 0h-391v1133h391v-1133zM-61 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM418 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
+<glyph unicode="ð" horiz-adv-x="1313" d="M1217 580q0 -275 -152.5 -437.5t-415.5 -162.5q-259 0 -410 139t-151 379q0 239 130.5 377.5t348.5 138.5q192 0 244 -84l8 4q-67 130 -143 207l-182 -119l-117 184l143 92l-149 93l108 182q174 -73 266 -135l209 137l115 -182l-145 -97q159 -157 226 -327.5t67 -388.5z M817 545q0 84 -45 136t-119 52q-92 0 -128 -56t-36 -177q0 -242 164 -242q91 0 127.5 71t36.5 216z" />
+<glyph unicode="ñ" horiz-adv-x="1372" d="M135 0zM850 0v618q0 113 -32.5 170.5t-104.5 57.5q-99 0 -143 -79t-44 -271v-496h-391v1133h295l49 -140h23q50 80 138.5 120t203.5 40q188 0 292.5 -109t104.5 -307v-737h-391zM870 1239q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5 t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="ò" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM607 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="ó" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM416 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="ô" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM852 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="õ" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM827 1239q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="ö" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM239 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM718 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="÷" horiz-adv-x="1159" d="M72 588v268h1013v-268h-1013zM422 332q0 82 39.5 126t116.5 44q75 0 116 -43.5t41 -126.5q0 -80 -43.5 -125t-113.5 -45q-71 0 -113.5 44t-42.5 126zM422 1112q0 82 39.5 126t116.5 44q75 0 116 -43.5t41 -126.5q0 -80 -43.5 -125t-113.5 -45q-71 0 -113.5 44t-42.5 126z " />
+<glyph unicode="ø" horiz-adv-x="1362" d="M274 113q-188 158 -188 456q0 277 157 430.5t441 153.5q125 0 234 -39l71 111l168 -105l-67 -104q184 -158 184 -447q0 -280 -156.5 -434.5t-439.5 -154.5q-125 0 -229 34l-84 -131l-170 107zM461 569q0 -99 12 -147l289 448q-36 13 -82 13q-114 0 -166.5 -74t-52.5 -240 zM899 569q0 86 -10 131l-283 -442q27 -8 76 -8q114 0 165.5 73t51.5 246z" />
+<glyph unicode="ù" horiz-adv-x="1372" d="M133 0zM942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295zM607 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29 h-260z" />
+<glyph unicode="ú" horiz-adv-x="1372" d="M133 0zM942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295zM471 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144 h-260z" />
+<glyph unicode="û" horiz-adv-x="1372" d="M133 0zM942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295zM883 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153 t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="ü" horiz-adv-x="1372" d="M133 0zM942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295zM272 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5 q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM751 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="ý" horiz-adv-x="1249" d="M0 0zM-2 1133h412l192 -650q14 -51 19 -123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 -160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5zM401 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260 z" />
+<glyph unicode="þ" horiz-adv-x="1317" d="M526 987q43 78 122 122t179 44q185 0 293.5 -154t108.5 -430q0 -271 -111.5 -430t-304.5 -159q-173 0 -287 129h-14l7 -60l7 -92v-449h-391v2048h391v-344q0 -106 -18 -225h18zM682 846q-85 0 -119 -61.5t-37 -184.5v-29q0 -146 39 -211t123 -65q80 0 111.5 70.5 t31.5 207.5q0 134 -33 203.5t-116 69.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1249" d="M0 0zM-2 1133h412l192 -650q14 -51 19 -123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 -160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5zM216 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5 q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM695 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="ı" horiz-adv-x="666" d="M528 0h-391v1133h391v-1133z" />
+<glyph unicode="Œ" horiz-adv-x="1960" d="M1862 0h-844q-34 -8 -110.5 -14t-133.5 -6q-319 0 -494.5 200t-175.5 555q0 359 175 554.5t497 195.5q67 0 143.5 -7t106.5 -16h836v-317h-473v-230h436v-317h-436v-276h473v-322zM778 1161q-125 0 -191.5 -109.5t-66.5 -318.5q0 -205 64.5 -314.5t191.5 -109.5 q141 0 217 43v760q-34 23 -93 36t-122 13z" />
+<glyph unicode="œ" horiz-adv-x="2007" d="M1434 -20q-238 0 -383 137q-151 -137 -402 -137q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q226 0 375 -127q155 127 400 127q227 0 359 -136t132 -384v-172h-696q4 -90 74 -146.5t186 -56.5q194 0 364 86v-281q-92 -47 -187 -65t-228 -18zM485 569 q0 -146 38 -222.5t130 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-89 0 -127.5 -74t-38.5 -219zM1407 887q-162 0 -176 -180h340q-2 82 -48 131t-116 49z" />
+<glyph unicode="Ÿ" horiz-adv-x="1360" d="M0 0zM680 920l252 542h428l-481 -891v-571h-398v559l-481 903h430zM268 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM747 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5 t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="ˆ" horiz-adv-x="1237" d="M817 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="˚" horiz-adv-x="1120" d="M829 1491q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 183.5q0 116 71.5 185t192.5 69q118 0 195 -70t77 -182zM641 1489q0 38 -24.5 61t-59.5 23t-59.5 -23t-24.5 -61q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5z" />
+<glyph unicode="˜" horiz-adv-x="1225" d="M772 1239q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode=" " horiz-adv-x="959" />
+<glyph unicode=" " horiz-adv-x="1919" />
+<glyph unicode=" " horiz-adv-x="959" />
+<glyph unicode=" " horiz-adv-x="1919" />
+<glyph unicode=" " horiz-adv-x="639" />
+<glyph unicode=" " horiz-adv-x="479" />
+<glyph unicode=" " horiz-adv-x="319" />
+<glyph unicode=" " horiz-adv-x="319" />
+<glyph unicode=" " horiz-adv-x="239" />
+<glyph unicode=" " horiz-adv-x="383" />
+<glyph unicode=" " horiz-adv-x="106" />
+<glyph unicode="‐" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="‑" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="‒" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M74 414v276h876v-276h-876z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M74 414v276h1896v-276h-1896z" />
+<glyph unicode="‘" horiz-adv-x="512" d="M35 877l-15 22q100 391 177 561h278q-67 -312 -98 -583h-342z" />
+<glyph unicode="’" horiz-adv-x="512" d="M477 1460l15 -22q-92 -366 -177 -561h-278q68 317 98 583h342z" />
+<glyph unicode="‚" horiz-adv-x="633" d="M57 0zM498 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342z" />
+<glyph unicode="“" horiz-adv-x="1022" d="M545 877l-15 22q100 391 177 561h278q-67 -312 -98 -583h-342zM35 877l-15 22q100 391 177 561h278q-67 -312 -98 -583h-342z" />
+<glyph unicode="”" horiz-adv-x="1022" d="M477 1460l15 -22q-92 -366 -177 -561h-278q68 317 98 583h342zM987 1460l14 -22q-93 -371 -176 -561h-278q68 317 98 583h342z" />
+<glyph unicode="„" horiz-adv-x="1143" d="M498 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342zM1008 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342z" />
+<glyph unicode="•" horiz-adv-x="803" d="M74 748q0 174 84.5 267t242.5 93t243 -94.5t85 -265.5q0 -172 -87 -266.5t-241 -94.5q-155 0 -241 93t-86 268zM668 1133z" />
+<glyph unicode="…" horiz-adv-x="1776" d="M86 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM678 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM1270 166q0 92 54.5 142t158.5 50 q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141z" />
+<glyph unicode=" " horiz-adv-x="383" />
+<glyph unicode="‹" horiz-adv-x="819" d="M74 588l389 483l280 -149l-272 -347l272 -348l-280 -147l-389 481v27z" />
+<glyph unicode="›" horiz-adv-x="819" d="M745 561l-387 -481l-282 147l272 348l-272 347l282 149l387 -483v-27z" />
+<glyph unicode="⁄" horiz-adv-x="188" d="M621 1462l-754 -1462h-301l753 1462h302z" />
+<glyph unicode=" " horiz-adv-x="479" />
+<glyph unicode="⁴" horiz-adv-x="817" d="M799 725h-125v-139h-275v139h-370v188l350 555h295v-542h125v-201zM399 926v166q0 69 7 135q-40 -100 -62 -133l-102 -168h157z" />
+<glyph unicode="€" d="M829 1159q-112 0 -171.5 -53.5t-71.5 -142.5h338v-205h-353l-2 -29v-14l2 -44v1h287v-205h-264q33 -164 260 -164q145 0 266 55v-323q-102 -55 -291 -55q-253 0 -412 126t-206 361h-156v205h129l-2 21v22l2 43h-129v205h148q51 255 212.5 387.5t413.5 132.5 q180 0 349 -76l-119 -299q-120 51 -230 51z" />
+<glyph unicode="™" horiz-adv-x="1577" d="M403 741h-196v545h-170v176h536v-176h-170v-545zM983 741l-143 510h-9q7 -56 7 -110v-400h-193v721h287l137 -479l150 479h276v-721h-195v400q0 68 7 110h-9l-151 -510h-164z" />
+<glyph unicode="" horiz-adv-x="1135" d="M0 1135h1135v-1135h-1135v1135z" />
+<glyph horiz-adv-x="1317" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.ttf
new file mode 100755
index 0000000..6b9118e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.woff
new file mode 100755
index 0000000..a7b99d2
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.eot
new file mode 100755
index 0000000..0c8a0ae
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.svg
new file mode 100755
index 0000000..e1075dc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansitalic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1165" d="M0 0zM-104 -492q-69 0 -125 21v141q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098 q-39 -189 -120 -276t-213 -87zM870 0h-168l234 1096h168zM983 1376q0 56 32 91.5t83 35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-40 0 -66 24.5t-26 69.5z" />
+<glyph unicode="fl" horiz-adv-x="1165" d="M0 0zM-104 -492q-69 0 -125 21v141q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098 q-39 -189 -120 -276t-213 -87zM868 0h-168l332 1556h168z" />
+<glyph unicode="ffi" horiz-adv-x="1815" d="M545 -492q-71 0 -125 21v141q61 -22 115 -22q68 0 111 57.5t69 181.5l227 1082h-481l-232 -1098q-39 -189 -120 -276t-213 -87q-69 0 -125 21v141q64 -22 112 -22q70 0 114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5 t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11t92.5 -26l-45 -129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 -1098q-43 -195 -123.5 -279t-210.5 -84z M1522 0h-168l233 1096h168zM1634 1376q0 54 32 90.5t83 36.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-38 0 -65 24.5t-27 69.5z" />
+<glyph unicode="ffl" horiz-adv-x="1815" d="M1520 0h-168l331 1556h168zM545 -492q-71 0 -125 21v141q61 -22 115 -22q68 0 111 57.5t69 181.5l227 1082h-481l-232 -1098q-39 -189 -120 -276t-213 -87q-69 0 -125 21v141q64 -22 112 -22q70 0 114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5 t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11t92.5 -26l-45 -129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 -1098 q-43 -195 -123.5 -279t-210.5 -84z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="530" d="M555 1462l-274 -1059h-109q49 307 176 1059h207zM43 78q0 76 39.5 120t107.5 44q45 0 73 -27.5t28 -81.5q0 -68 -39 -115t-105 -47q-49 0 -76.5 28t-27.5 79z" />
+<glyph unicode=""" horiz-adv-x="791" d="M485 1462l-153 -528h-107l72 528h188zM834 1462l-154 -528h-107l72 528h189z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M1036 899l-98 -340h285l-13 -129h-309l-125 -430h-139l129 430h-303l-127 -430h-133l121 430h-261l13 129h284l101 340h-277l13 127h301l123 436h139l-125 -436h305l127 436h133l-125 -436h264l-12 -127h-291zM500 559h303l96 340h-303z" />
+<glyph unicode="$" d="M942 492q0 -162 -112.5 -263t-309.5 -123l-49 -225h-133l49 223q-195 14 -315 72v154q82 -41 175.5 -63.5t166.5 -22.5l98 452q-139 49 -201.5 123.5t-62.5 188.5q0 159 108 255t299 113l39 176h133l-39 -178q159 -12 283 -76l-63 -135q-121 63 -248 72l-94 -440 q149 -55 212.5 -125t63.5 -178zM549 250q107 13 170 75t63 154q0 54 -33 96t-114 74zM627 1235q-108 -11 -167 -69t-59 -156q0 -53 34.5 -97.5t107.5 -70.5z" />
+<glyph unicode="%" horiz-adv-x="1624" d="M1468 1462l-1085 -1462h-152l1086 1462h151zM1284 772q-67 0 -119.5 -64.5t-84 -188.5t-31.5 -240q0 -173 106 -173q65 0 117 65t86.5 198.5t34.5 236.5q0 166 -109 166zM1532 621q0 -107 -31.5 -236t-82 -217.5t-121 -138t-156.5 -49.5q-110 0 -171 74.5t-61 219.5 q0 166 50.5 318.5t136.5 228.5t200 76q116 0 176 -71.5t60 -204.5zM543 1358q-66 0 -119 -63t-85 -187.5t-32 -243.5q0 -172 107 -172q52 0 94 39.5t73.5 114t50.5 175t19 171.5q0 166 -108 166zM791 1206q0 -108 -32 -237.5t-82.5 -217.5t-120.5 -137t-157 -49 q-109 0 -170 75t-61 220q0 166 50.5 318.5t136.5 228.5t200 76q116 0 176 -72t60 -205z" />
+<glyph unicode="&" horiz-adv-x="1372" d="M737 1348q-105 0 -163 -60t-58 -170q0 -120 82 -235q139 71 191 110t83 85t31 104q0 77 -42.5 121.5t-123.5 44.5zM471 119q87 0 168 33t195 124l-306 433q-128 -67 -184 -116t-85.5 -107.5t-29.5 -131.5q0 -106 66.5 -170.5t175.5 -64.5zM66 342q0 148 90 257.5 t303 211.5q-103 165 -103 309q0 164 106 264.5t281 100.5q149 0 236.5 -79t87.5 -212q0 -78 -32.5 -137t-87.5 -108t-127.5 -90t-153.5 -83l278 -389q127 110 199 295h168q-101 -236 -283 -412l203 -270h-201l-117 166q-120 -100 -230 -143t-247 -43q-168 0 -269 96 t-101 266z" />
+<glyph unicode="'" horiz-adv-x="444" d="M485 1462l-153 -528h-107l72 528h188z" />
+<glyph unicode="(" horiz-adv-x="584" d="M82 272q0 339 120 627t384 563h157q-246 -270 -371.5 -570t-125.5 -618q0 -339 114 -598h-131q-147 266 -147 596z" />
+<glyph unicode=")" horiz-adv-x="584" d="M500 864q0 -341 -121.5 -629.5t-382.5 -558.5h-156q496 551 496 1188q0 341 -113 598h131q146 -269 146 -598z" />
+<glyph unicode="*" horiz-adv-x="1130" d="M854 1528l-123 -383l422 18l-8 -157l-393 47l180 -383l-166 -52l-113 406l-258 -344l-116 121l309 284l-373 109l55 154l371 -185l41 400z" />
+<glyph unicode="+" d="M516 651h-389v142h389v391h141v-391h390v-142h-390v-387h-141v387z" />
+<glyph unicode="," horiz-adv-x="492" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187z" />
+<glyph unicode="-" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="." horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
+<glyph unicode="/" horiz-adv-x="717" d="M893 1462l-813 -1462h-174l813 1462h174z" />
+<glyph unicode="0" d="M1092 1014q0 -295 -78.5 -539t-214 -369.5t-314.5 -125.5q-176 0 -270 127.5t-94 369.5q0 270 82 514.5t216.5 369t307.5 124.5q365 0 365 -471zM717 1341q-113 0 -209 -115.5t-155.5 -323t-59.5 -423.5q0 -172 50 -264t161 -92q115 0 209 114t150.5 328t56.5 453 q0 323 -203 323z" />
+<glyph unicode="1" d="M588 0h-172l196 913q59 261 88 359q-50 -53 -139 -111l-178 -110l-80 127l449 284h149z" />
+<glyph unicode="2" d="M911 0h-899l31 147l465 420q102 93 176.5 163.5t123 133t72 124t23.5 136.5q0 99 -60 157t-163 58q-77 0 -150.5 -28.5t-162.5 -96.5l-82 115q191 154 413 154q176 0 278.5 -88.5t102.5 -243.5q0 -111 -39.5 -204t-131 -197t-294.5 -281l-352 -307v-8h678z" />
+<glyph unicode="3" d="M1073 1159q0 -156 -101 -264.5t-280 -140.5v-9q124 -23 195 -106.5t71 -208.5q0 -133 -62 -234.5t-181 -158.5t-283 -57q-210 0 -385 79v164q94 -49 199 -75.5t190 -26.5q162 0 252 79.5t90 217.5q0 131 -79 198.5t-220 67.5h-131l31 143h139q165 0 274 87t109 227 q0 92 -58 146t-157 54q-80 0 -157 -27t-175 -93l-80 118q195 144 424 144q179 0 277 -87t98 -237z" />
+<glyph unicode="4" d="M1067 334h-233l-72 -334h-164l74 334h-656l29 158l834 978h196l-207 -983h232zM705 487q46 220 78 373t116 445h-8q-17 -29 -66.5 -96.5t-72.5 -96.5l-533 -625h486z" />
+<glyph unicode="5" d="M598 893q182 0 289.5 -104.5t107.5 -282.5q0 -161 -73 -283t-204 -182.5t-308 -60.5q-193 0 -330 79v164q164 -102 334 -102q191 0 298 96t107 268q0 126 -73.5 199.5t-204.5 73.5q-48 0 -97 -6.5t-139 -30.5l-74 57l197 684h668l-33 -153h-522l-127 -439q87 23 184 23z " />
+<glyph unicode="6" d="M133 424q0 209 60.5 415t163.5 351.5t246 219t327 73.5q111 0 184 -23l-35 -145q-68 22 -170 22q-212 0 -356.5 -149t-212.5 -443h8q59 79 146.5 126t193.5 47q154 0 244 -98.5t90 -270.5q0 -161 -66.5 -294.5t-180.5 -204t-261 -70.5q-182 0 -281.5 115t-99.5 329z M532 121q94 0 167.5 54t114 149t40.5 208q0 248 -221 248q-66 0 -128 -28.5t-110 -76t-72 -104.5t-24 -155q0 -137 60.5 -216t172.5 -79z" />
+<glyph unicode="7" d="M174 0l768 1313h-719l31 149h891l-27 -139l-764 -1323h-180z" />
+<glyph unicode="8" d="M741 1485q174 0 271.5 -86.5t97.5 -235.5q0 -129 -78 -225t-266 -176q127 -78 180 -165t53 -202q0 -122 -60 -217.5t-172.5 -146.5t-264.5 -51q-190 0 -298 98.5t-108 267.5q0 148 95 256t296 184q-95 69 -135.5 144.5t-40.5 171.5q0 111 54.5 198.5t153.5 136t222 48.5z M608 700q-185 -60 -261.5 -143.5t-76.5 -202.5q0 -107 69 -170t181 -63q139 0 222 74t83 196q0 99 -52 174t-165 135zM729 1341q-114 0 -182 -65.5t-68 -175.5q0 -82 39 -144t127 -116q161 60 228 131.5t67 173.5q0 90 -57.5 143t-153.5 53z" />
+<glyph unicode="9" d="M1067 1034q0 -194 -56 -406.5t-147.5 -360t-221.5 -217.5t-302 -70q-136 0 -242 34v158q134 -47 246 -47q202 0 327 141t189 441h-10q-51 -75 -132.5 -118.5t-180.5 -43.5q-169 0 -261 98.5t-92 288.5q0 153 64.5 280.5t180 199t259.5 71.5q180 0 279.5 -114.5 t99.5 -334.5zM682 1341q-150 0 -241 -113t-91 -290q0 -124 54.5 -190t162.5 -66q76 0 140 28.5t108.5 81.5t65 114t20.5 151q0 131 -59 207.5t-160 76.5z" />
+<glyph unicode=":" horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM203 956q0 77 40 122.5t111 45.5q97 0 97 -104q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26.5t-27 75.5z" />
+<glyph unicode=";" horiz-adv-x="518" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187zM203 956q0 77 40 122.5t111 45.5q97 0 97 -104q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26.5t-27 75.5z" />
+<glyph unicode="<" d="M1040 242l-919 422v98l919 479v-149l-747 -371l747 -328v-151z" />
+<glyph unicode="=" d="M127 858v139h920v-139h-920zM127 444v142h920v-142h-920z" />
+<glyph unicode=">" d="M121 393l745 328l-745 371v149l919 -479v-98l-919 -422v151z" />
+<glyph unicode="?" horiz-adv-x="874" d="M260 403q22 130 72.5 213.5t165.5 174.5q128 100 168 144t63 94t23 112q0 93 -51.5 143.5t-147.5 50.5q-81 0 -155 -25.5t-140 -56.5l-61 129q92 51 192 76t182 25q167 0 259 -84t92 -238q0 -123 -65.5 -226.5t-225.5 -223.5q-125 -91 -169 -147.5t-67 -160.5h-135z M158 74q0 77 40 122.5t111 45.5q44 0 70.5 -26t26.5 -79q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26t-27 77z" />
+<glyph unicode="@" horiz-adv-x="1735" d="M1679 852q0 -179 -55 -324t-155 -227t-222 -82q-197 0 -213 184h-8q-111 -184 -291 -184q-115 0 -180.5 75.5t-65.5 209.5q0 157 68 284t188.5 199t260.5 72q65 0 127.5 -12t150.5 -48q-64 -242 -98 -368t-31 -172q0 -117 102 -117q78 0 141.5 67t100.5 183.5t37 243.5 q0 239 -128 367t-370 128q-228 0 -406.5 -107t-277 -295.5t-98.5 -416.5q0 -270 143.5 -418.5t409.5 -148.5q197 0 420 86v-127q-219 -90 -443 -90q-314 0 -494.5 184.5t-180.5 505.5q0 261 126.5 485.5t343.5 347.5t486 123q191 0 329 -75.5t210.5 -213.5t72.5 -319z M985 938q-94 0 -174 -55t-126 -153t-46 -212q0 -93 33 -134.5t98 -41.5q187 0 272 315l70 258q-63 23 -127 23z" />
+<glyph unicode="A" horiz-adv-x="1137" d="M813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394z" />
+<glyph unicode="B" horiz-adv-x="1225" d="M770 1462q432 0 432 -336q0 -141 -87 -238t-245 -126v-10q115 -32 176.5 -110.5t61.5 -188.5q0 -212 -152 -332.5t-407 -120.5h-463l309 1462h375zM434 836h248q156 0 249 73t93 199q0 104 -66.5 155.5t-209.5 51.5h-211zM287 145h266q181 0 278 80.5t97 227.5 q0 116 -74.5 177.5t-214.5 61.5h-236z" />
+<glyph unicode="C" horiz-adv-x="1198" d="M942 1331q-174 0 -311.5 -97t-218 -284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 -164 -45t-188 -14q-242 0 -380 149.5t-138 407.5q0 261 105.5 485.5t283.5 342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69z" />
+<glyph unicode="D" horiz-adv-x="1364" d="M1300 877q0 -261 -105 -461t-300 -308t-457 -108h-352l309 1462h342q276 0 419.5 -149.5t143.5 -435.5zM449 147q202 0 355 91.5t234.5 258.5t81.5 382t-103 325.5t-302 110.5h-178l-250 -1168h162z" />
+<glyph unicode="E" horiz-adv-x="1047" d="M821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565z" />
+<glyph unicode="F" horiz-adv-x="967" d="M258 0h-172l309 1462h735l-30 -153h-568l-110 -533h528l-32 -153h-529z" />
+<glyph unicode="G" horiz-adv-x="1386" d="M821 766h459l-154 -711q-216 -75 -419 -75q-264 0 -410.5 144.5t-146.5 403.5q0 269 101.5 489.5t281.5 343t399 122.5q117 0 219.5 -20t206.5 -64l-66 -152q-77 34 -165.5 59t-194.5 25q-169 0 -307.5 -101.5t-215.5 -283.5t-77 -407q0 -190 102.5 -299t286.5 -109 q154 0 260 39l96 444h-289z" />
+<glyph unicode="H" horiz-adv-x="1389" d="M1085 0h-167l143 688h-660l-145 -688h-170l309 1462h170l-131 -622h660l133 622h168z" />
+<glyph unicode="I" horiz-adv-x="559" d="M86 0l311 1462h168l-311 -1462h-168z" />
+<glyph unicode="J" horiz-adv-x="547" d="M-166 -385q-105 0 -153 25l6 147q69 -20 145 -20q100 0 165.5 62.5t90.5 182.5l307 1450h170l-309 -1468q-79 -379 -422 -379z" />
+<glyph unicode="K" horiz-adv-x="1141" d="M1034 0h-186q-72 181 -146.5 359.5t-146.5 361.5l-174 -131l-125 -590h-170l309 1462h170l-151 -710l700 710h209l-639 -637z" />
+<glyph unicode="L" horiz-adv-x="971" d="M86 0l309 1462h170l-276 -1308h565l-33 -154h-735z" />
+<glyph unicode="M" horiz-adv-x="1714" d="M676 0l-166 1296h-8q-7 -72 -28.5 -197.5t-37.5 -199.5l-190 -899h-162l309 1462h244l149 -1204h9l659 1204h266l-303 -1462h-174q126 590 193 905.5t94 392.5h-6l-717 -1298h-131z" />
+<glyph unicode="N" horiz-adv-x="1438" d="M1139 0h-181l-460 1223h-6q-32 -221 -74 -418l-172 -805h-162l309 1462h180l459 -1220h6q30 224 72 405l174 815h164z" />
+<glyph unicode="O" horiz-adv-x="1475" d="M1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5t70 403 q0 199 -94 310.5t-261 111.5z" />
+<glyph unicode="P" horiz-adv-x="1159" d="M1159 1085q0 -248 -164 -379t-481 -131h-135l-123 -575h-170l309 1462h330q214 0 324 -94.5t110 -282.5zM410 721h133q216 0 328 91t112 267q0 125 -69.5 180.5t-213.5 55.5h-163z" />
+<glyph unicode="Q" horiz-adv-x="1475" d="M874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q158 0 279 100t187.5 280.5t66.5 399.5q0 199 -94 310.5t-261 111.5zM725 -18l-17 -2h-16q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424 q0 -333 -139 -576t-375 -321l274 -358h-219z" />
+<glyph unicode="R" horiz-adv-x="1165" d="M385 608l-129 -608h-170l309 1462h320q446 0 446 -366q0 -348 -368 -449l239 -647h-186l-209 608h-252zM532 1313q-102 -494 -116 -559h168q193 0 297 85t104 244q0 121 -67.5 175.5t-219.5 54.5h-166z" />
+<glyph unicode="S" horiz-adv-x="1028" d="M913 424q0 -211 -140.5 -327.5t-395.5 -116.5q-106 0 -186.5 14.5t-151.5 48.5v170q162 -84 340 -84q162 0 257 75.5t95 207.5q0 78 -52.5 137.5t-195.5 140.5q-151 85 -209.5 170t-58.5 201q0 187 132 304.5t347 117.5q99 0 184.5 -19t180.5 -65l-66 -150 q-66 38 -148 60t-151 22q-134 0 -215.5 -69.5t-81.5 -188.5q0 -54 17 -92.5t54 -72.5t142 -95q147 -88 198.5 -138t78 -110.5t26.5 -140.5z" />
+<glyph unicode="T" horiz-adv-x="1020" d="M487 0h-172l277 1311h-406l33 151h985l-30 -151h-408z" />
+<glyph unicode="U" horiz-adv-x="1384" d="M1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170z" />
+<glyph unicode="V" horiz-adv-x="1122" d="M479 197q61 144 162 338l479 927h191l-781 -1462h-180l-162 1462h170l97 -930q20 -196 20 -335h4z" />
+<glyph unicode="W" horiz-adv-x="1745" d="M1257 0h-170l-49 965q-8 136 -8 282h-6q-25 -72 -61 -154.5t-504 -1092.5h-174l-62 1462h170l31 -901l2 -88q0 -98 -10 -258h6q89 243 156 383l405 864h178l43 -860q9 -153 9 -304l-1 -83h9q75 224 131 354l387 893h182z" />
+<glyph unicode="X" horiz-adv-x="1063" d="M956 0h-180l-213 641l-481 -641h-186l596 776l-263 686h172l203 -563l443 563h186l-555 -694z" />
+<glyph unicode="Y" horiz-adv-x="1030" d="M537 715l489 747h193l-627 -921l-113 -541h-172l119 549l-238 913h170z" />
+<glyph unicode="Z" horiz-adv-x="1087" d="M885 0h-901l28 137l924 1170h-655l32 155h858l-26 -139l-924 -1169h697z" />
+<glyph unicode="[" horiz-adv-x="586" d="M371 -324h-387l381 1786h387l-31 -141h-227l-318 -1503h227z" />
+<glyph unicode="\" horiz-adv-x="717" d="M375 1462l217 -1462h-154l-217 1462h154z" />
+<glyph unicode="]" horiz-adv-x="586" d="M-119 -182h225l320 1503h-227l30 141h389l-380 -1786h-388z" />
+<glyph unicode="^" horiz-adv-x="1059" d="M53 553l598 920h109l266 -920h-145l-201 747l-467 -747h-160z" />
+<glyph unicode="_" horiz-adv-x="807" d="M623 -324h-811l30 140h811z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M903 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="a" horiz-adv-x="1157" d="M639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233t-51 -310 q0 -114 47 -170.5t132 -56.5z" />
+<glyph unicode="b" horiz-adv-x="1182" d="M545 -20q-97 0 -170.5 51t-110.5 139h-10l-70 -170h-125l330 1556h168q-51 -242 -78.5 -370.5t-75.5 -300.5h9q93 118 183.5 173.5t186.5 55.5q141 0 220 -99t79 -272q0 -209 -68.5 -386.5t-191 -277t-276.5 -99.5zM731 975q-96 0 -195.5 -95t-158 -239t-58.5 -295 q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227z" />
+<glyph unicode="c" horiz-adv-x="922" d="M506 -20q-194 0 -301 107t-107 302q0 200 74 369t204.5 263.5t293.5 94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 47v-143q-124 -63 -276 -63z" />
+<glyph unicode="d" horiz-adv-x="1182" d="M639 1114q194 0 281 -190h10q17 155 45 274l78 358h166l-330 -1556h-139l22 209h-8q-101 -125 -189 -177t-182 -52q-139 0 -217 98t-78 272q0 214 72 392t194.5 275t274.5 97zM449 119q94 0 194 93.5t158.5 239t58.5 296.5q0 111 -54 169t-157 58q-101 0 -187.5 -82.5 t-139 -232t-52.5 -314.5q0 -227 179 -227z" />
+<glyph unicode="e" horiz-adv-x="1010" d="M492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35z" />
+<glyph unicode="f" horiz-adv-x="641" d="M-104 -492q-69 0 -125 21v141q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098 q-39 -189 -120 -276t-213 -87z" />
+<glyph unicode="g" horiz-adv-x="1026" d="M1100 1096l-25 -107l-211 -24q41 -62 41 -158q0 -191 -116.5 -304.5t-311.5 -113.5q-55 0 -84 8q-139 -53 -139 -131q0 -41 33 -54.5t96 -21.5l117 -14q181 -22 262.5 -88t81.5 -194q0 -184 -146 -285t-411 -101q-194 0 -304 73.5t-110 207.5q0 105 72 182t233 131 q-78 41 -78 121q0 69 51 118.5t142 92.5q-63 32 -103 94.5t-40 145.5q0 194 119.5 318t305.5 124q78 0 154 -20h371zM35 -195q0 -77 65 -122t193 -45q182 0 284.5 63.5t102.5 179.5q0 62 -54 98t-184 50l-159 16q-120 -25 -184 -88t-64 -152zM313 680q0 -85 45 -129.5 t125 -44.5q79 0 138 42t90.5 115.5t31.5 159.5q0 82 -44 125t-126 43q-78 0 -136.5 -40.5t-91 -113t-32.5 -157.5z" />
+<glyph unicode="h" horiz-adv-x="1182" d="M729 0l148 692q18 94 18 135q0 148 -147 148q-89 0 -173.5 -59t-149 -171.5t-97.5 -271.5l-101 -473h-168l330 1556h168q-18 -82 -34.5 -159t-34 -156.5t-38 -166.5t-47.5 -189h11q94 123 185.5 176t191.5 53q131 0 202.5 -72t71.5 -204q0 -62 -23 -166 q-39 -193 -145 -672h-168z" />
+<glyph unicode="i" horiz-adv-x="520" d="M227 0h-168l234 1096h168zM340 1376q0 56 32 91.5t83 35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-40 0 -66 24.5t-26 69.5z" />
+<glyph unicode="j" horiz-adv-x="520" d="M-135 -492q-69 0 -123 21v141q61 -22 119 -22q125 0 168 205l264 1243h166l-266 -1258q-36 -171 -114.5 -250.5t-213.5 -79.5zM340 1376q0 56 32 91.5t83 35.5q86 0 86 -90q0 -55 -33.5 -93t-77.5 -38q-38 0 -64 24.5t-26 69.5z" />
+<glyph unicode="k" horiz-adv-x="999" d="M330 559l526 537h201l-469 -467l295 -629h-187l-235 524l-152 -123l-82 -401h-170l330 1556h170l-129 -602t-102 -395h4z" />
+<glyph unicode="l" horiz-adv-x="520" d="M225 0h-168l332 1556h168z" />
+<glyph unicode="m" horiz-adv-x="1786" d="M696 0l148 692q18 94 18 135q0 70 -31 109t-106 39q-84 0 -163.5 -60t-140 -171.5t-93.5 -268.5l-101 -475h-168l234 1096h139l-22 -203h10q87 119 173.5 171t178.5 52q113 0 174 -65t72 -181h8q86 125 183 185.5t196 60.5q127 0 196.5 -68t69.5 -198q0 -68 -22 -178 l-144 -672h-170l148 692q20 104 20 146q0 62 -34.5 99.5t-108.5 37.5q-81 0 -160 -58t-138.5 -164.5t-90.5 -252.5l-107 -500h-168z" />
+<glyph unicode="n" horiz-adv-x="1182" d="M729 0l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 -60t-149 -171t-97.5 -269l-101 -475h-168l234 1096h139l-22 -203h10q96 122 185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 -180l-143 -672h-170z" />
+<glyph unicode="o" horiz-adv-x="1149" d="M643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5z" />
+<glyph unicode="p" horiz-adv-x="1182" d="M545 -20q-97 0 -170 50t-113 140h-10l-4 -38q-3 -25 -10.5 -70t-114.5 -554h-166l336 1588h139l-26 -209h8q179 227 372 227q137 0 216 -97.5t79 -273.5q0 -212 -69 -389t-191 -275.5t-276 -98.5zM731 975q-96 0 -195.5 -95t-158 -239t-58.5 -295q0 -110 55.5 -168.5 t160.5 -58.5q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227z" />
+<glyph unicode="q" horiz-adv-x="1182" d="M641 1116q94 0 165.5 -50.5t108.5 -141.5h13l67 172h125l-336 -1588h-166l101 480q9 45 57 221h-8q-95 -121 -185 -175t-186 -54q-140 0 -219.5 97.5t-79.5 272.5q0 212 72.5 392t196 277t274.5 97zM449 119q92 0 190 92t158.5 237t60.5 300q0 105 -54.5 166t-152.5 61 q-101 0 -189 -84.5t-140 -233t-52 -311.5q0 -227 179 -227z" />
+<glyph unicode="r" horiz-adv-x="811" d="M752 1116q69 0 120 -14l-36 -150q-53 13 -105 13q-91 0 -170.5 -60t-139 -166.5t-87.5 -236.5l-107 -502h-168l234 1096h139l-22 -203h10q72 95 119 136.5t98.5 64t114.5 22.5z" />
+<glyph unicode="s" horiz-adv-x="877" d="M735 311q0 -156 -110.5 -243.5t-311.5 -87.5q-169 0 -305 69v158q70 -42 151 -65t150 -23q126 0 190 50t64 128q0 57 -35 96t-151 107q-130 73 -184 143t-54 166q0 138 101 222.5t266 84.5q171 0 330 -74l-54 -137l-56 25q-101 43 -220 43q-93 0 -146 -43.5t-53 -112.5 q0 -56 35.5 -96t146.5 -103q107 -60 153.5 -103t69.5 -92.5t23 -111.5z" />
+<glyph unicode="t" horiz-adv-x="664" d="M395 117q55 0 144 26v-129q-34 -14 -84 -24t-80 -10q-125 0 -191.5 59.5t-66.5 177.5q0 66 18 150l127 602h-172l14 73l185 78l125 228h98l-55 -252h274l-26 -127h-273l-129 -604q-18 -87 -18 -132q0 -56 29 -86t81 -30z" />
+<glyph unicode="u" horiz-adv-x="1182" d="M451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170z" />
+<glyph unicode="v" horiz-adv-x="946" d="M223 0l-125 1096h168l64 -613q24 -258 24 -362h6q127 275 179 371l325 604h178l-591 -1096h-228z" />
+<glyph unicode="w" horiz-adv-x="1468" d="M831 0l-32 602q-4 94 -4 172v156h-9l-50 -118l-83 -189l-291 -623h-202l-43 1096h164l18 -594v-88q0 -147 -8 -269h6q47 124 137 322l295 629h182l37 -594q6 -168 6 -262v-53l-2 -42h6q28 86 83 218.5t323 732.5h178l-506 -1096h-205z" />
+<glyph unicode="x" horiz-adv-x="979" d="M467 434l-346 -434h-195l475 565l-239 531h170l174 -412l330 412h194l-455 -539l252 -557h-168z" />
+<glyph unicode="y" horiz-adv-x="946" d="M98 1096h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136z" />
+<glyph unicode="z" horiz-adv-x="909" d="M690 0h-719l23 117l694 854h-479l27 125h657l-29 -140l-680 -831h531z" />
+<glyph unicode="{" horiz-adv-x="715" d="M442 -324q-141 0 -216.5 52.5t-75.5 171.5q0 52 20 141q33 146 51.5 227.5t14.5 102.5q0 143 -209 143l32 143q118 0 189.5 43.5t93.5 147.5l68 326q34 160 117.5 224t254.5 64h33l-31 -141q-105 0 -151 -36.5t-66 -123.5l-71 -321q-28 -123 -91 -184t-167 -78v-5 q151 -41 151 -213q0 -59 -18 -131l-47 -211q-15 -58 -15 -98q0 -53 36.5 -77.5t119.5 -24.5v-142h-23z" />
+<glyph unicode="|" d="M541 1556h139v-2052h-139v2052z" />
+<glyph unicode="}" horiz-adv-x="715" d="M285 1462q144 0 220.5 -52.5t76.5 -170.5q0 -48 -21 -141l-49 -219q-16 -68 -16 -111q0 -143 209 -143l-33 -144q-119 0 -190 -43t-93 -147l-67 -326q-36 -164 -119 -226.5t-264 -62.5h-13v142q115 0 167 36t71 123l72 322q25 117 88 179.5t170 80.5v6q-150 42 -150 211 q0 59 18 131l50 213q14 65 14 99q0 53 -40.5 77.5t-139.5 24.5l28 141h11z" />
+<glyph unicode="~" d="M348 713q-54 0 -118.5 -34.5t-114.5 -86.5v151q98 109 243 109q69 0 127 -14.5t144 -51.5q64 -27 112.5 -41t98.5 -14q55 0 119.5 33t115.5 88v-150q-100 -110 -244 -110q-72 0 -135 16.5t-135 48.5q-75 32 -120 44t-93 12z" />
+<glyph unicode="¡" horiz-adv-x="530" d="M260 684h109l-176 -1057h-207zM250 950q0 76 40.5 122t110.5 46q44 0 70.5 -26t26.5 -80q0 -71 -40.5 -117.5t-105.5 -46.5q-48 0 -75 25.5t-27 76.5z" />
+<glyph unicode="¢" d="M582 -20h-125l43 215q-132 34 -203.5 137.5t-71.5 257.5q0 185 63.5 344t178.5 258.5t260 120.5l35 170h123l-37 -168q119 -9 217 -49l-47 -142q-109 52 -219 52q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -125 66 -198t184 -73q72 0 136 20t126 48v-143 q-123 -62 -286 -66z" />
+<glyph unicode="£" d="M842 1481q184 0 336 -86l-66 -133q-146 79 -278 79q-213 0 -263 -237l-69 -326h370l-26 -127h-371l-47 -219q-22 -98 -66 -166.5t-124 -111.5h725l-33 -154h-953l27 141q205 46 258 289l47 221h-200l26 127h201l76 350q75 353 430 353z" />
+<glyph unicode="¤" d="M229 723q0 117 68 215l-129 129l92 92l127 -129q103 70 217 70t215 -70l129 129l92 -90l-129 -129q70 -104 70 -217q0 -119 -70 -217l127 -127l-90 -90l-129 127q-98 -68 -215 -68q-119 0 -217 70l-127 -127l-90 90l127 127q-68 96 -68 215zM358 723q0 -103 71.5 -174.5 t174.5 -71.5q104 0 177 71.5t73 174.5q0 104 -73 177t-177 73q-102 0 -174 -72.5t-72 -177.5z" />
+<glyph unicode="¥" d="M582 715l491 747h187l-533 -770h231l-28 -133h-297l-33 -160h297l-29 -133h-295l-57 -266h-154l56 266h-291l29 133h290l33 160h-291l29 133h225l-202 770h163z" />
+<glyph unicode="¦" d="M541 1556h139v-776h-139v776zM541 281h139v-777h-139v777z" />
+<glyph unicode="§" horiz-adv-x="995" d="M174 770q0 201 238 307q-119 70 -119 203q0 127 103.5 206t279.5 79q189 0 321 -68l-53 -123q-148 60 -266 60q-102 0 -162.5 -40.5t-60.5 -109.5q0 -49 38 -83.5t162 -90.5q100 -44 149 -83.5t75 -89.5t26 -114q0 -97 -61 -180t-172 -139q114 -71 114 -189 q0 -152 -114 -237.5t-318 -85.5q-176 0 -295 61v148q56 -34 136.5 -56t156.5 -22q133 0 204 44.5t71 129.5q0 48 -50.5 89t-152.5 87q-138 61 -194 130.5t-56 166.5zM514 1010q-82 -26 -135 -87.5t-53 -131.5t50.5 -117t198.5 -111q80 44 127.5 107t47.5 131 q0 60 -49.5 105.5t-186.5 103.5z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M457 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M928 1059q-125 0 -191.5 -87t-66.5 -241q0 -169 65 -249.5t193 -80.5q82 0 211 43v-122q-66 -28 -113 -38t-104 -10q-192 0 -297 119.5t-105 339.5q0 208 110 330.5t300 122.5q130 0 248 -60l-60 -120q-106 53 -190 53zM139 731q0 200 100 375t275 276t377 101 q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5 q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5z" />
+<glyph unicode="ª" horiz-adv-x="686" d="M498 1479q114 0 153 -103h6l37 90h86l-139 -665h-92l14 117h-4q-40 -56 -90 -93t-123 -37q-77 0 -126.5 60t-49.5 166q0 127 41.5 234.5t116.5 169t170 61.5zM381 891q61 0 112.5 49t86 137.5t34.5 167.5q0 62 -28.5 96.5t-85.5 34.5q-92 0 -154.5 -103t-62.5 -243 q0 -139 98 -139z" />
+<glyph unicode="«" horiz-adv-x="958" d="M88 584l391 374l78 -81l-297 -328l172 -387l-113 -49l-231 442v29zM483 541l367 405l86 -69l-283 -365l158 -350l-113 -49l-215 397v31z" />
+<glyph unicode="¬" d="M1047 793v-529h-140v387h-780v142h920z" />
+<glyph unicode="­" horiz-adv-x="639" d="M55 469zM55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M139 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5 q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM1194 915q0 -78 -47.5 -141t-132.5 -98l227 -385h-149l-207 352h-113v-352h-127v880h229q163 0 241.5 -63t78.5 -193zM772 762h92q195 0 195 149q0 76 -47.5 107t-149.5 31h-90v-287z " />
+<glyph unicode="¯" horiz-adv-x="782" d="M1012 1556h-785l33 132h787z" />
+<glyph unicode="°" horiz-adv-x="877" d="M215 1171q0 128 90.5 220t220.5 92q83 0 155.5 -41.5t114.5 -114t42 -156.5q0 -128 -90.5 -218.5t-221.5 -90.5t-221 90.5t-90 218.5zM328 1171q0 -80 58 -138t140 -58q83 0 140 58.5t57 137.5q0 82 -57.5 140.5t-139.5 58.5q-80 0 -139 -58.5t-59 -140.5z" />
+<glyph unicode="±" d="M516 643h-389v141h389v392h141v-392h390v-141h-390v-387h-141v387zM127 0v141h920v-141h-920z" />
+<glyph unicode="²" horiz-adv-x="717" d="M657 586h-561l23 106l264 228q115 100 158.5 149.5t63.5 93t20 90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90q125 101 274 101q109 0 171.5 -56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 -187h395z" />
+<glyph unicode="³" horiz-adv-x="717" d="M549 1036q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5q-125 0 -233 56v127q125 -72 239 -72q205 0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151 q0 -180 -207 -234v-4z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M532 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="µ" horiz-adv-x="1194" d="M295 266q0 -147 147 -147q89 0 172 59t148.5 171t99.5 269l105 478h163l-233 -1096h-139l24 205h-12q-93 -121 -183 -173t-188 -52q-112 0 -163 96h-9q-11 -78 -22.5 -148t-83.5 -420h-164l336 1588h168l-148 -695q-18 -92 -18 -135z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1206 -260h-114v1661h-213v-1661h-115v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h557v-1816z" />
+<glyph unicode="·" horiz-adv-x="518" d="M170 587zM170 690q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M211 -276q0 -98 -81 -157t-214 -59q-41 0 -86 9v100q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155z" />
+<glyph unicode="¹" horiz-adv-x="717" d="M537 1462h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5l-51 90z" />
+<glyph unicode="º" horiz-adv-x="688" d="M745 1219q0 -191 -88.5 -311t-240.5 -120q-113 0 -180.5 71t-67.5 196q0 117 42 215.5t117.5 153.5t174.5 55q117 0 180 -67t63 -193zM500 1376q-102 0 -160.5 -87.5t-58.5 -229.5q0 -85 38 -127.5t107 -42.5q94 0 152.5 88.5t58.5 232.5q0 166 -137 166z" />
+<glyph unicode="»" horiz-adv-x="958" d="M872 485l-393 -370l-78 82l297 323l-172 391l113 50l233 -447v-29zM477 528l-368 -401l-86 70l282 360l-158 354l113 50l217 -402v-31z" />
+<glyph unicode="¼" horiz-adv-x="1518" d="M123 0zM1362 1462l-1086 -1462h-153l1085 1462h154zM483 1462h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5l-51 90zM1327 203h-129l-43 -202h-127l43 202h-365l23 101l481 579h133l-121 -563h127zM1095 320q69 322 90 395 q-20 -36 -110 -149l-205 -246h225z" />
+<glyph unicode="½" horiz-adv-x="1518" d="M66 0zM427 1462h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5l-51 90zM1305 1462l-1086 -1462h-153l1085 1462h154zM1343 1h-561l23 106l264 228q115 100 158.5 149.5t63.5 93t20 90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90 q125 101 274 101q109 0 171.5 -56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 -187h395z" />
+<glyph unicode="¾" horiz-adv-x="1565" d="M87 0zM517 1036q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5q-125 0 -233 56v127q125 -72 239 -72q205 0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151 q0 -180 -207 -234v-4zM1512 1462l-1086 -1462h-153l1085 1462h154zM1477 203h-129l-43 -202h-127l43 202h-365l23 101l481 579h133l-121 -563h127zM1245 320q69 322 90 395q-20 -36 -110 -149l-205 -246h225z" />
+<glyph unicode="¿" horiz-adv-x="874" d="M657 680q-22 -130 -72 -212t-165 -175l-95 -75q-159 -127 -159 -275q0 -93 51.5 -144t147.5 -51q80 0 154 25.5t140 56.5l62 -129q-90 -48 -189 -74t-186 -26q-168 0 -259 83.5t-91 237.5q0 124 66 228t225 223q132 98 172.5 152.5t62.5 154.5h135zM760 1010 q0 -77 -40.5 -122.5t-111.5 -45.5q-43 0 -69.5 26t-26.5 78q0 71 40 118.5t107 47.5q47 0 74 -25.5t27 -76.5z" />
+<glyph unicode="À" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM863 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM679 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Â" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM1080 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27 z" />
+<glyph unicode="Ã" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM934 1581q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18 t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="Ä" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM523 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM887 1716q0 46 28 79.5 t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="Å" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM991 1585q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152zM887 1583 q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5z" />
+<glyph unicode="Æ" horiz-adv-x="1673" d="M1448 0h-737l98 465h-438l-293 -465h-197l938 1462h938l-33 -153h-565l-100 -469h528l-28 -150h-529l-115 -538h566zM840 621l147 688h-84l-434 -688h371z" />
+<glyph unicode="Ç" horiz-adv-x="1198" d="M150 0zM942 1331q-174 0 -311.5 -97t-218 -284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 -164 -45t-188 -14q-242 0 -380 149.5t-138 407.5q0 261 105.5 485.5t283.5 342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69zM758 -276 q0 -98 -81 -157t-214 -59q-41 0 -86 9v100q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155z" />
+<glyph unicode="È" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM898 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM657 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Ê" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM1084 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="Ë" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM523 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM887 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34 q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="Ì" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM593 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM412 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Î" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM808 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="Ï" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM265 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM629 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="Ð" horiz-adv-x="1364" d="M1300 877q0 -261 -105 -461t-300 -308t-457 -108h-352l135 649h-149l32 150h150l141 663h342q276 0 419.5 -149.5t143.5 -435.5zM449 147q202 0 355 91.5t234.5 258.5t81.5 382t-103 325.5t-302 110.5h-178l-111 -516h330l-33 -150h-330l-106 -502h162z" />
+<glyph unicode="Ñ" horiz-adv-x="1438" d="M84 0zM1139 0h-181l-460 1223h-6q-32 -221 -74 -418l-172 -805h-162l309 1462h180l459 -1220h6q30 224 72 405l174 815h164zM1102 1581q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5 t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="Ò" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM1007 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM821 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Ô" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM1227 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="Õ" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM1067 1581q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="Ö" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM664 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1028 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="×" d="M487 723l-319 321l98 99l320 -320l323 320l99 -96l-324 -324l322 -322l-97 -96l-323 320l-320 -318l-96 96z" />
+<glyph unicode="Ø" horiz-adv-x="1475" d="M1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-200 0 -332 96l-129 -160l-112 92l137 170q-106 136 -106 371q0 264 96 482t263.5 336t377.5 118q99 0 178.5 -27t151.5 -84l131 166l114 -92l-149 -184q48 -62 73 -156t25 -201zM874 1333q-157 0 -281 -101 t-192.5 -281t-68.5 -398q0 -135 41 -227l737 919q-90 88 -236 88zM1229 911q0 118 -33 205l-733 -911q91 -74 233 -74q152 0 272.5 97.5t190.5 279.5t70 403z" />
+<glyph unicode="Ù" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM991 1579h-104q-61 61 -128.5 154 t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM823 1606q56 60 125.5 151.5t106.5 149.5 h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Û" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM1217 1579h-103q-57 48 -161 189 q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="Ü" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM643 1716q0 46 28 79.5t74 33.5 q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1007 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="Ý" horiz-adv-x="1030" d="M188 0zM537 715l489 747h193l-627 -921l-113 -541h-172l119 549l-238 913h170zM616 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Þ" horiz-adv-x="1159" d="M1106 829q0 -248 -164 -379t-483 -131h-133l-70 -319h-170l309 1462h170l-53 -256h160q213 0 323.5 -95t110.5 -282zM354 465h135q215 0 328 91t113 267q0 126 -70 181t-215 55h-166z" />
+<glyph unicode="ß" horiz-adv-x="1182" d="M-133 -492q-69 0 -123 21v143q61 -22 111 -22q65 0 107 47.5t65 157.5l280 1314q43 200 156 299t307 99q162 0 252 -71t90 -196q0 -57 -21 -106.5t-61.5 -95t-178.5 -150.5q-110 -83 -110 -151q0 -56 95 -122q47 -34 101 -87.5t79.5 -110t25.5 -123.5 q0 -175 -108.5 -274.5t-292.5 -99.5q-175 0 -268 71v160q51 -41 118.5 -66.5t129.5 -25.5q113 0 181 58t68 159q0 40 -10.5 71t-33.5 59t-89 83q-88 69 -122.5 124t-34.5 115q0 53 18.5 96t49.5 78.5t124 104.5q80 56 111 87.5t48 65t17 70.5q0 64 -52.5 100.5t-141.5 36.5 q-119 0 -186 -62.5t-95 -190.5l-274 -1303q-40 -189 -121 -276t-211 -87z" />
+<glyph unicode="à" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM824 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="á" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM600 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="â" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM1005 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="ã" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM856 1243q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="ä" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM454 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM818 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="å" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM951 1456q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152zM847 1454q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5z" />
+<glyph unicode="æ" horiz-adv-x="1669" d="M1165 -20q-108 0 -189.5 39.5t-121.5 119.5l-31 -139h-114l26 209h-8q-109 -132 -191.5 -180.5t-177.5 -48.5q-122 0 -191 99t-69 269q0 206 70.5 385t191.5 281t263 102q82 0 145 -48.5t102 -143.5h11l67 172h109l-31 -146q123 166 332 166q119 0 192.5 -68t73.5 -184 q0 -182 -166.5 -283.5t-472.5 -101.5h-39l-4 -80q0 -131 62.5 -204.5t193.5 -73.5q55 0 116.5 16.5t178.5 67.5v-150q-164 -75 -328 -75zM412 119q95 0 188.5 91.5t153 240.5t59.5 299q0 103 -45.5 164t-122.5 61q-99 0 -187 -86.5t-138 -231.5t-50 -309q0 -114 37 -171.5 t105 -57.5zM1325 973q-117 0 -211 -94.5t-141 -260.5h14q226 0 348.5 58.5t122.5 169.5q0 61 -35 94t-98 33z" />
+<glyph unicode="ç" horiz-adv-x="922" d="M98 0zM506 -20q-194 0 -301 107t-107 302q0 200 74 369t204.5 263.5t293.5 94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 47v-143q-124 -63 -276 -63zM592 -276q0 -98 -81 -157 t-214 -59q-41 0 -86 9v100q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155z" />
+<glyph unicode="è" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM777 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM585 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="ê" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM966 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="ë" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM413 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM777 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34 q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="ì" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM492 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM324 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="î" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM708 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="ï" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM161 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM525 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="ð" horiz-adv-x="1165" d="M676 1343q-66 58 -146 113l95 117q118 -84 188 -154l260 146l64 -105l-240 -133q87 -115 126.5 -240.5t39.5 -269.5q0 -253 -71.5 -447t-203 -292t-311.5 -98q-182 0 -284.5 104t-102.5 289q0 160 67.5 298t187 217t267.5 79q105 0 181.5 -45.5t111.5 -124.5l6 2v17 q0 136 -36.5 240t-110.5 197l-270 -149l-56 108zM487 121q107 0 190 56t134 168t51 226q0 118 -65.5 187t-178.5 69q-109 0 -189 -57.5t-123.5 -161t-43.5 -231.5q0 -126 57.5 -191t167.5 -65z" />
+<glyph unicode="ñ" horiz-adv-x="1182" d="M59 0zM729 0l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 -60t-149 -171t-97.5 -269l-101 -475h-168l234 1096h139l-22 -203h10q96 122 185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 -180l-143 -672h-170zM871 1243 q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="ò" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM798 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="ó" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM589 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="ô" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM997 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="õ" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM844 1243q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="ö" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM433 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM797 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="÷" d="M127 651v142h920v-142h-920zM475 373q0 121 111 121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 31t-29.5 90zM475 1071q0 121 111 121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 31t-29.5 90z" />
+<glyph unicode="ø" horiz-adv-x="1149" d="M1047 705q0 -189 -69.5 -360t-191.5 -266t-276 -95q-146 0 -246 65l-98 -125l-105 82l109 135q-68 103 -68 265q0 194 73.5 361t195.5 255t272 88q146 0 252 -68l104 129l105 -79l-119 -129q62 -97 62 -258zM647 971q-108 0 -195.5 -73t-137.5 -202t-50 -280 q0 -92 17 -137l518 645q-54 47 -152 47zM885 688q0 84 -13 119l-514 -641q57 -45 158 -45q103 0 188.5 71.5t133 200.5t47.5 295z" />
+<glyph unicode="ù" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM800 1241h-104q-61 61 -128.5 154t-95.5 153v21 h181q43 -136 147 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM636 1268q56 60 125.5 151.5t106.5 149.5h190 v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="û" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM1024 1241h-103q-57 48 -161 189 q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="ü" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM457 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="ý" horiz-adv-x="946" d="M0 0zM98 1096h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136zM500 1268q56 60 125.5 151.5t106.5 149.5h190v-21 q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="þ" horiz-adv-x="1182" d="M545 -20q-98 0 -172 51t-113 139h-10q-8 -104 -25 -176l-102 -486h-166l432 2048h168q-95 -441 -115 -522t-39 -149h9q101 125 189 177t183 52q139 0 218 -97.5t79 -273.5q0 -212 -69 -389t-191 -275.5t-276 -98.5zM731 975q-96 0 -195.5 -95t-158 -239t-58.5 -295 q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227z" />
+<glyph unicode="ÿ" horiz-adv-x="946" d="M0 0zM98 1096h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136zM335 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM699 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="ı" horiz-adv-x="520" d="M227 0h-168l234 1096h168z" />
+<glyph unicode="Œ" horiz-adv-x="1751" d="M1524 0h-674q-78 -20 -158 -20q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q152 0 237 -23h709l-31 -153h-565l-100 -469h528l-31 -150h-528l-115 -538h565zM696 131q69 0 123 19l246 1161q-76 22 -191 22q-157 0 -281 -101t-192.5 -281t-68.5 -398 q0 -199 98 -310.5t266 -111.5z" />
+<glyph unicode="œ" horiz-adv-x="1769" d="M1251 -20q-270 0 -356 225q-69 -107 -171.5 -164t-225.5 -57q-184 0 -292 114t-108 308q0 193 75 360t201 255.5t281 88.5q270 0 359 -225q75 109 177.5 170t221.5 61q139 0 217 -65.5t78 -186.5q0 -183 -164.5 -284t-468.5 -101h-41l-4 -80q0 -131 61.5 -204.5 t190.5 -73.5q75 0 145 24.5t150 59.5v-150q-162 -75 -326 -75zM649 969q-109 0 -196 -73t-135 -202t-48 -284q0 -141 62 -214t172 -73q177 0 278 160.5t101 427.5q0 124 -59.5 191t-174.5 67zM1413 973q-125 0 -220.5 -94.5t-139.5 -260.5h18q231 0 351 61t120 177 q0 48 -32 82.5t-97 34.5z" />
+<glyph unicode="Ÿ" horiz-adv-x="1030" d="M188 0zM537 715l489 747h193l-627 -921l-113 -541h-172l119 549l-238 913h170zM452 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM816 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22 t-23.5 62z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M1014 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M989 1456q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152zM885 1454q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M838 1243q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="‑" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="‒" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="–" horiz-adv-x="983" d="M55 469l35 160h823l-34 -160h-824z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M55 469l35 160h1806l-34 -160h-1807z" />
+<glyph unicode="‘" horiz-adv-x="348" d="M129 961l-6 22q98 211 270 479h127q-147 -345 -203 -501h-188z" />
+<glyph unicode="’" horiz-adv-x="348" d="M516 1462l8 -22q-40 -91 -111 -218.5t-159 -260.5h-129q134 298 203 501h188z" />
+<glyph unicode="‚" horiz-adv-x="492" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187z" />
+<glyph unicode="“" horiz-adv-x="719" d="M500 961l-8 22q80 181 272 479h127q-162 -379 -203 -501h-188zM129 961l-6 22q98 211 270 479h127q-147 -345 -203 -501h-188z" />
+<glyph unicode="”" horiz-adv-x="719" d="M516 1462l8 -22q-40 -91 -111 -218.5t-159 -260.5h-129q134 298 203 501h188zM885 1462l10 -22q-94 -206 -274 -479h-127q57 126 115.5 272.5t86.5 228.5h189z" />
+<glyph unicode="„" horiz-adv-x="858" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187zM659 238l9 -23q-95 -205 -271 -479h-129q140 316 203 502h188z" />
+<glyph unicode="•" horiz-adv-x="774" d="M199 684q0 145 73.5 231t198.5 86q92 0 139 -49t47 -141q0 -141 -74 -230t-202 -89q-89 0 -135.5 49.5t-46.5 142.5z" />
+<glyph unicode="…" horiz-adv-x="1563" d="M43 0zM563 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM1085 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM43 74q0 77 40.5 122.5 t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="580" d="M88 578l391 380l78 -81l-297 -334l172 -381l-113 -49l-231 436v29z" />
+<glyph unicode="›" horiz-adv-x="580" d="M492 496l-392 -381l-77 82l296 333l-172 381l113 50l232 -437v-28z" />
+<glyph unicode="⁄" horiz-adv-x="268" d="M752 1462l-1086 -1462h-153l1085 1462h154z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="717" d="M713 788h-129l-43 -202h-127l43 202h-365l23 101l481 579h133l-121 -563h127zM481 905q69 322 90 395q-20 -36 -110 -149l-205 -246h225z" />
+<glyph unicode="€" d="M928 1329q-140 0 -254 -99t-189 -298h426l-26 -133h-441q-21 -65 -32 -164h381l-29 -131h-361q0 -373 297 -373q123 0 256 55v-147q-127 -59 -278 -59q-212 0 -328.5 133.5t-116.5 378.5v12h-170l27 131h154q8 80 30 164h-151l27 133h159q97 267 259.5 408t369.5 141 q89 0 160 -21.5t141 -70.5l-80 -138q-113 78 -231 78z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M438 741h-121v617h-196v104h516v-104h-199v-617zM1014 741l-189 551h-6q4 -52 4 -121v-430h-118v721h180l182 -557l193 557h170v-721h-121v430q0 73 4 121h-6l-197 -551h-96z" />
+<glyph unicode="" horiz-adv-x="1095" d="M0 1095h1095v-1095h-1095v1095z" />
+<glyph horiz-adv-x="1182" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.ttf
new file mode 100755
index 0000000..12d25d9
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.woff
new file mode 100755
index 0000000..ff652e6
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Italic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.eot
new file mode 100755
index 0000000..8f44592
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.svg
new file mode 100755
index 0000000..431d7e3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.svg
@@ -0,0 +1,1835 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sanslight_italic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="ff" horiz-adv-x="1155" d="M-131 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76q73 0 166 -31 l-24 -80q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z" />
+<glyph unicode="fi" horiz-adv-x="1040" d="M0 0zM739 0h-98l231 1087h96zM915 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31 l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z" />
+<glyph unicode="fl" horiz-adv-x="1042" d="M0 0zM737 0h-94l334 1556h94zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248 l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z" />
+<glyph unicode="ffi" horiz-adv-x="1616" d="M0 0zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76 q73 0 166 -31l-24 -80q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z M1315 0h-98l231 1087h96zM1491 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" />
+<glyph unicode="ffl" horiz-adv-x="1626" d="M0 0zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76 q73 0 166 -31l-24 -80q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z M1321 0h-94l334 1556h94z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="502" d="M248 377h-62l203 1085h119zM80 57q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-68 -34.5q-67 0 -67 73z" />
+<glyph unicode=""" horiz-adv-x="721" d="M455 1462l-146 -528h-61l80 528h127zM784 1462l-145 -528h-61l79 528h127z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M389 530l119 398h-297l8 80h311l134 454h90l-136 -454h365l135 454h86l-135 -454h285l-8 -80h-302l-118 -398h303l-8 -79h-320l-133 -451h-90l135 451h-360l-134 -451h-88l134 451h-283l8 79h299zM475 530h363l120 398h-362z" />
+<glyph unicode="$" d="M928 467q0 -151 -110.5 -243t-297.5 -103l-53 -240h-82l51 240q-79 2 -158 18t-137 43v94q65 -34 153.5 -53.5t160.5 -19.5l110 512q-110 53 -153 91t-66.5 87.5t-23.5 116.5q0 155 105.5 250.5t272.5 99.5l41 192h80l-41 -192q149 -5 277 -68l-35 -78q-110 61 -256 70 l-109 -514q124 -60 172.5 -99.5t73.5 -88.5t25 -115zM537 203q142 7 223.5 74.5t81.5 183.5q0 76 -48 129.5t-157 97.5zM686 1284q-134 -9 -205 -80t-71 -186q0 -78 37 -128.5t137 -96.5z" />
+<glyph unicode="%" horiz-adv-x="1556" d="M1458 1462l-1139 -1462h-106l1135 1462h110zM1520 612q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 223.5q0 160 52 312t138 229.5t193 77.5q121 0 176.5 -71.5t55.5 -211.5zM1284 821q-80 0 -146.5 -72.5t-106.5 -202.5t-40 -263q0 -116 41 -174t113 -58 q130 0 209.5 166.5t79.5 386.5q0 109 -36 163t-114 54zM760 1198q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 223.5q0 160 52 312t138 229.5t193 77.5q232 0 232 -283zM524 1407q-79 0 -145 -71.5t-107 -203t-41 -264.5q0 -115 41 -173t113 -58 q84 0 148.5 72t102.5 204t38 277q0 109 -36 163t-114 54z" />
+<glyph unicode="&" horiz-adv-x="1331" d="M748 1395q-125 0 -194 -68t-69 -192q0 -132 109 -281q203 89 279.5 163.5t76.5 182.5q0 91 -56.5 143t-145.5 52zM465 63q108 0 211.5 42.5t222.5 146.5l-352 493q-164 -79 -232 -134.5t-103.5 -124t-35.5 -158.5q0 -119 78 -192t211 -73zM78 324q0 162 99 277.5 t325 215.5l-41 67q-78 128 -78 251q0 157 101 253.5t264 96.5q145 0 227 -76.5t82 -206.5q0 -85 -41 -154t-121 -128t-256 -138l330 -463q73 75 135.5 176.5t91.5 186.5h111q-102 -247 -285 -436l184 -246h-123l-131 184q-121 -108 -242 -156t-266 -48q-167 0 -266.5 94 t-99.5 250z" />
+<glyph unicode="'" horiz-adv-x="403" d="M461 1462l-146 -528h-61l80 528h127z" />
+<glyph unicode="(" horiz-adv-x="526" d="M104 270q0 343 122 633t382 559h105q-259 -276 -384.5 -568t-125.5 -618q0 -317 127 -600h-80q-146 262 -146 594z" />
+<glyph unicode=")" horiz-adv-x="526" d="M453 868q0 -345 -123.5 -636t-380.5 -556h-105q257 274 383.5 566.5t126.5 619.5q0 148 -28.5 294t-98.5 306h80q146 -262 146 -594z" />
+<glyph unicode="*" horiz-adv-x="1137" d="M834 1540l-109 -405l438 8l-8 -107l-416 29l181 -401l-115 -37l-135 417l-285 -348l-78 78l318 318l-392 125l39 102l394 -168l47 408z" />
+<glyph unicode="+" d="M563 672h-401v100h401v404h101v-404h401v-100h-401v-400h-101v400z" />
+<glyph unicode="," horiz-adv-x="451" d="M250 238l8 -23q-34 -92 -114 -233.5t-160 -245.5h-74q79 132 141 271t88 231h111z" />
+<glyph unicode="-" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="." horiz-adv-x="485" d="M82 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
+<glyph unicode="/" horiz-adv-x="641" d="M827 1462l-817 -1462h-110l815 1462h112z" />
+<glyph unicode="0" d="M1075 1016q0 -201 -41 -405t-116.5 -346t-183.5 -213.5t-242 -71.5q-176 0 -264.5 126.5t-88.5 387.5q0 186 44.5 381.5t124 334t187 207t240.5 68.5q340 0 340 -469zM723 1397q-134 0 -241.5 -113t-173.5 -329t-66 -451q0 -222 62.5 -329t197.5 -107q139 0 244 112 t166 337t61 489q0 199 -59.5 295t-190.5 96z" />
+<glyph unicode="1" d="M537 0h-105l225 1055q19 92 74 293q-42 -36 -75.5 -61t-249.5 -161l-52 78l406 258h90z" />
+<glyph unicode="2" d="M909 0h-870l22 104l449 402q198 177 284 276.5t126.5 186.5t40.5 180q0 112 -66 178t-197 66q-176 0 -333 -129l-54 73q180 146 394 146q173 0 268.5 -85t95.5 -237q0 -110 -43.5 -208.5t-141.5 -211.5t-311 -303l-383 -338v-4h736z" />
+<glyph unicode="3" d="M1049 1174q0 -162 -106 -275t-286 -143v-4q117 -24 185.5 -115.5t68.5 -226.5q0 -134 -64 -233t-179.5 -148t-274.5 -49q-96 0 -184.5 20.5t-153.5 52.5v101q172 -86 344 -86q197 0 303.5 89.5t106.5 252.5q0 145 -89 223t-247 78h-117l21 96h110q209 0 333 95.5 t124 258.5q0 114 -63.5 175t-188.5 61q-167 0 -344 -131l-49 75q84 67 188 104.5t218 37.5q161 0 252.5 -82.5t91.5 -226.5z" />
+<glyph unicode="4" d="M1071 371h-264l-80 -371h-96l80 371h-688l20 96l881 1010h118l-215 -1018h265zM729 459q79 369 119 558.5t86 354.5h-4q-66 -91 -129 -166l-651 -747h579z" />
+<glyph unicode="5" d="M582 879q188 0 292.5 -102t104.5 -279q0 -237 -148 -377.5t-407 -140.5q-84 0 -177.5 20t-158.5 51v107q170 -90 340 -90q208 0 328.5 114.5t120.5 313.5q0 140 -85 219.5t-225 79.5q-133 0 -243 -41l-66 49l193 659h624l-18 -96h-541l-149 -516q98 29 215 29z" />
+<glyph unicode="6" d="M170 428q0 283 105 544.5t269.5 385t383.5 123.5q123 0 182 -21l-18 -90q-86 23 -170 23q-233 0 -393.5 -174t-233.5 -502h8q68 94 164 143t211 49q161 0 250.5 -100.5t89.5 -282.5q0 -156 -60 -281t-171 -195t-257 -70q-171 0 -265.5 119t-94.5 329zM543 68 q112 0 196.5 58.5t130 162t45.5 229.5q0 146 -67 224.5t-195 78.5q-81 0 -154 -31.5t-129 -87t-78 -115t-22 -173.5q0 -164 72.5 -255t200.5 -91z" />
+<glyph unicode="7" d="M244 0l796 1366h-766l23 96h858l-20 -110l-779 -1352h-112z" />
+<glyph unicode="8" d="M737 1485q163 0 258 -85t95 -229q0 -138 -84 -234.5t-285 -172.5q130 -78 190 -170.5t60 -208.5t-58 -208t-165.5 -144.5t-260.5 -52.5q-178 0 -283.5 92.5t-105.5 253.5q0 159 100.5 268.5t321.5 187.5q-100 72 -144 152t-44 180q0 159 114 265t291 106zM610 733 q-218 -73 -313.5 -167.5t-95.5 -225.5q0 -136 77.5 -206.5t219.5 -70.5q168 0 270 91t102 233q0 104 -62 189t-198 157zM727 1399q-130 0 -214.5 -82t-84.5 -203q0 -91 41.5 -159t157.5 -142q192 62 279 144t87 206q0 109 -70.5 172.5t-195.5 63.5z" />
+<glyph unicode="9" d="M1059 1032q0 -288 -101.5 -548t-263.5 -382t-393 -122q-114 0 -186 22v90q87 -29 192 -29q474 0 627 674h-8q-140 -192 -367 -192q-162 0 -255 105t-93 284q0 155 59.5 281t170.5 196t257 70q174 0 267.5 -115.5t93.5 -333.5zM686 1393q-112 0 -197.5 -58.5 t-130.5 -162.5t-45 -230q0 -145 67.5 -225t192.5 -80q83 0 157.5 32.5t129 87.5t76.5 114t22 176q0 166 -71 256t-201 90z" />
+<glyph unicode=":" horiz-adv-x="485" d="M260 989q0 57 25.5 89t68.5 32q66 0 66 -72q0 -55 -25 -89t-67 -34q-68 0 -68 74zM102 55q0 56 25.5 88.5t69.5 32.5q65 0 65 -72q0 -55 -25.5 -88.5t-66.5 -33.5q-68 0 -68 73z" />
+<glyph unicode=";" horiz-adv-x="485" d="M287 238l8 -23q-35 -96 -118.5 -242t-156.5 -237h-73q79 132 141 271t88 231h111zM266 989q0 57 25.5 89t68.5 32q66 0 66 -72q0 -55 -25 -89t-67 -34q-68 0 -68 74z" />
+<glyph unicode="<" d="M1051 262l-914 414v74l914 471v-103l-801 -399l801 -350v-107z" />
+<glyph unicode="=" d="M168 885v100h903v-100h-903zM168 461v98h903v-98h-903z" />
+<glyph unicode=">" d="M170 369l801 350l-801 399v103l915 -471v-74l-915 -414v107z" />
+<glyph unicode="?" horiz-adv-x="799" d="M242 362l6 29q29 132 82 206.5t157 147.5q118 84 175 145.5t86.5 127.5t29.5 141q0 108 -67.5 170t-182.5 62q-139 0 -307 -101l-39 86q85 49 171.5 78t187.5 29q159 0 250.5 -84.5t91.5 -229.5q0 -127 -66 -234t-231 -226q-85 -61 -132.5 -108.5t-73 -95t-46.5 -143.5 h-92zM170 59q0 56 25 88.5t69 32.5q66 0 66 -71q0 -54 -24.5 -88.5t-67.5 -34.5q-68 0 -68 73z" />
+<glyph unicode="@" horiz-adv-x="1724" d="M1688 858q0 -179 -56 -323.5t-154.5 -227t-211.5 -82.5q-98 0 -154.5 55t-56.5 144h-4q-54 -97 -132.5 -148t-168.5 -51q-112 0 -178 73t-66 202q0 156 63 283t178 198.5t261 71.5q122 0 252 -52l-84 -315q-39 -140 -39 -221q0 -71 34.5 -111.5t100.5 -40.5 q86 0 160 73.5t117.5 198t43.5 251.5q0 156 -65 277t-187 188t-292 67q-235 0 -424.5 -108.5t-295.5 -304t-106 -439.5q0 -288 155 -449t435 -161q207 0 420 82v-90q-210 -82 -428 -82q-203 0 -357.5 82.5t-238.5 239t-84 370.5q0 276 121.5 493.5t337 337t473.5 119.5 q189 0 330.5 -72.5t221 -213t79.5 -314.5zM1008 969q-113 0 -204.5 -59t-142.5 -165.5t-51 -238.5q0 -92 40.5 -142.5t113.5 -50.5q101 0 180.5 89t124.5 255l78 289q-66 23 -139 23z" />
+<glyph unicode="A" horiz-adv-x="1059" d="M805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449z" />
+<glyph unicode="B" horiz-adv-x="1202" d="M412 1462h379q190 0 290.5 -84t100.5 -241q0 -153 -90 -249t-254 -124v-4q125 -31 188.5 -113.5t63.5 -204.5q0 -205 -140.5 -323.5t-390.5 -118.5h-457zM377 811h278q206 0 313 81t107 238q0 119 -78 180.5t-229 61.5h-272zM358 721l-135 -631h342q201 0 309.5 87.5 t108.5 256.5q0 145 -90 216t-275 71h-260z" />
+<glyph unicode="C" horiz-adv-x="1169" d="M961 1389q-197 0 -351.5 -104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410q0 266 104.5 488t284.5 341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17z" />
+<glyph unicode="D" horiz-adv-x="1350" d="M1288 879q0 -253 -109.5 -461.5t-300.5 -313t-446 -104.5h-330l310 1462h305q282 0 426.5 -147.5t144.5 -435.5zM430 90q226 0 394.5 94.5t261 275.5t92.5 412q0 498 -476 498h-206l-275 -1280h209z" />
+<glyph unicode="E" horiz-adv-x="1067" d="M829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627z" />
+<glyph unicode="F" horiz-adv-x="981" d="M205 0h-103l310 1462h708l-20 -94h-604l-134 -620h570l-21 -95h-569z" />
+<glyph unicode="G" horiz-adv-x="1374" d="M856 735h406l-150 -682q-211 -73 -405 -73q-257 0 -397 146t-140 421q0 265 105 483.5t283.5 335.5t395.5 117q113 0 203 -19t184 -59l-38 -94q-110 46 -189.5 62t-167.5 16q-184 0 -339 -107.5t-244 -301.5t-89 -433q0 -229 114.5 -352t326.5 -123q155 0 309 47l117 526 h-303z" />
+<glyph unicode="H" horiz-adv-x="1366" d="M1063 0h-100l151 719h-760l-149 -719h-103l310 1462h102l-139 -649h760l137 649h100z" />
+<glyph unicode="I" horiz-adv-x="504" d="M102 0l310 1462h98l-309 -1462h-99z" />
+<glyph unicode="J" horiz-adv-x="477" d="M-180 -360q-48 0 -88 8t-56 16l11 92q57 -20 137 -20q213 0 262 241l309 1485h105l-314 -1491q-35 -170 -125 -250.5t-241 -80.5z" />
+<glyph unicode="K" horiz-adv-x="1122" d="M979 0h-111l-342 788l-190 -153l-131 -635h-103l310 1462h102l-158 -723l133 121l680 602h138l-699 -610z" />
+<glyph unicode="L" horiz-adv-x="938" d="M102 0l310 1462h102l-289 -1366h621l-23 -96h-721z" />
+<glyph unicode="M" horiz-adv-x="1669" d="M772 205l733 1257h150l-301 -1462h-101l191 901q79 369 100 447h-6l-780 -1348h-51l-222 1348h-6q-20 -154 -78 -426l-196 -922h-96l309 1462h143l205 -1257h6z" />
+<glyph unicode="N" horiz-adv-x="1372" d="M1069 0h-86l-516 1284h-8q-23 -149 -48 -273t-214 -1011h-95l310 1462h80l522 -1294h8q23 176 74 416l188 878h94z" />
+<glyph unicode="O" horiz-adv-x="1464" d="M1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5 q0 240 -104.5 364t-310.5 124z" />
+<glyph unicode="P" horiz-adv-x="1145" d="M1145 1102q0 -500 -610 -500h-201l-129 -602h-103l310 1462h315q202 0 310 -92.5t108 -267.5zM350 694h191q252 0 373.5 96.5t121.5 305.5q0 274 -329 274h-211z" />
+<glyph unicode="Q" horiz-adv-x="1464" d="M1403 911q0 -216 -70 -418t-186.5 -324t-274.5 -167l267 -350h-142l-231 332l-74 -4q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128 q169 0 300 98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124z" />
+<glyph unicode="R" horiz-adv-x="1145" d="M336 633l-131 -633h-103l310 1462h303q430 0 430 -360q0 -182 -103.5 -303t-281.5 -152q201 -591 221 -647h-111l-211 633h-323zM358 725h252q208 0 317 95.5t109 281.5q0 268 -329 268h-211z" />
+<glyph unicode="S" horiz-adv-x="1020" d="M895 403q0 -126 -65.5 -224.5t-179.5 -148.5t-269 -50q-88 0 -172.5 17t-171.5 58v109q163 -92 348 -92q188 0 295.5 86.5t107.5 232.5q0 61 -17 104.5t-52.5 78.5t-91 68t-131.5 75q-150 76 -209.5 164t-59.5 206t59 207.5t165 139t237 49.5q99 0 180 -17.5t168 -60.5 l-32 -94q-66 40 -151.5 63t-164.5 23q-163 0 -259.5 -82.5t-96.5 -218.5q0 -103 49 -170t182 -133q154 -79 213.5 -130t89 -113t29.5 -147z" />
+<glyph unicode="T" horiz-adv-x="985" d="M438 0h-102l289 1368h-432l20 94h973l-19 -94h-440z" />
+<glyph unicode="U" horiz-adv-x="1370" d="M1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101z" />
+<glyph unicode="V" horiz-adv-x="1079" d="M457 147q51 111 124 247l572 1068h117l-799 -1462h-88l-182 1462h100l117 -950q26 -217 35 -365h4z" />
+<glyph unicode="W" horiz-adv-x="1702" d="M1018 1341q-27 -76 -62 -153.5t-563 -1187.5h-82l-73 1462h100l47 -1031l4 -165l-2 -86h6q85 226 170 398l434 884h105l61 -878q19 -266 19 -410h6q30 86 61.5 163t493.5 1125h108q-169 -365 -330.5 -731t-328.5 -731h-78l-78 1075q-11 142 -11 219l1 47h-8z" />
+<glyph unicode="X" horiz-adv-x="971" d="M879 0h-107l-254 678l-526 -678h-127l608 766l-272 696h106l240 -626l483 626h119l-555 -719z" />
+<glyph unicode="Y" horiz-adv-x="965" d="M494 645l544 817h117l-631 -932l-108 -530h-105l119 545l-237 917h100z" />
+<glyph unicode="Z" d="M913 0h-925l22 92l1069 1276h-764l23 94h887l-19 -88l-1069 -1280h799z" />
+<glyph unicode="[" horiz-adv-x="537" d="M369 -324h-426l376 1786h429l-19 -90h-330l-340 -1605h330z" />
+<glyph unicode="\" horiz-adv-x="641" d="M295 1462l242 -1462h-82l-246 1462h86z" />
+<glyph unicode="]" horiz-adv-x="537" d="M203 1462h426l-377 -1786h-428l18 91h330l340 1605h-330z" />
+<glyph unicode="^" horiz-adv-x="1047" d="M70 569l587 906h91l260 -906h-105l-217 809l-500 -809h-116z" />
+<glyph unicode="_" horiz-adv-x="801" d="M625 -291h-807l18 86h807z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M766 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="a" horiz-adv-x="1133" d="M655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82t-164 -245.5 t-64 -325.5q0 -152 50 -223.5t151 -71.5z" />
+<glyph unicode="b" horiz-adv-x="1151" d="M500 -16q-113 0 -186 59t-97 166h-6l-55 -209h-80l327 1556h95q-131 -628 -162 -751h6q93 156 199 229.5t231 73.5q281 0 281 -375q0 -203 -76 -380t-201 -273t-276 -96zM750 1018q-91 0 -180 -61.5t-160.5 -169.5t-106.5 -235t-35 -206q0 -129 64 -202.5t166 -73.5 q124 0 224 83t164 245t64 325q0 152 -49 223.5t-151 71.5z" />
+<glyph unicode="c" horiz-adv-x="887" d="M477 -20q-174 0 -274.5 110.5t-100.5 306.5q0 193 73.5 361.5t198.5 257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 -222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 -57 -273 -57z" />
+<glyph unicode="d" horiz-adv-x="1133" d="M655 1104q230 0 279 -219h4q12 66 143 671h99l-330 -1556h-82l45 274h-6q-173 -294 -424 -294q-281 0 -281 374q0 193 71.5 370t197.5 278.5t284 101.5zM406 70q89 0 178.5 62.5t160 168t106.5 231t36 209.5q0 126 -61.5 201.5t-168.5 75.5q-124 0 -224 -83t-164 -242.5 t-64 -327.5q0 -295 201 -295z" />
+<glyph unicode="e" horiz-adv-x="928" d="M469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5t-162.5 -308.5h49 q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5z" />
+<glyph unicode="f" horiz-adv-x="578" d="M-131 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190q-33 -161 -104 -234.5 t-195 -73.5z" />
+<glyph unicode="g" horiz-adv-x="1040" d="M1100 1087l-17 -79l-243 -11q26 -28 43.5 -84t17.5 -114q0 -109 -54.5 -206.5t-148 -145.5t-213.5 -48q-63 0 -77 9q-80 -33 -124 -73t-44 -81t31.5 -64.5t113.5 -31.5l121 -11q346 -31 346 -264q0 -112 -65 -197.5t-187 -131.5t-291 -46q-186 0 -291.5 72t-105.5 203 q0 236 309 334q-78 42 -78 123q0 123 191 202q-71 36 -110.5 105.5t-39.5 157.5q0 111 53.5 204t148 146t206.5 53q69 0 147 -21h361zM14 -207q0 -101 81 -150t224 -49q203 0 317 74.5t114 204.5q0 85 -62.5 130.5t-218.5 57.5l-160 15q-157 -45 -226 -114.5t-69 -168.5z M285 711q0 -112 58.5 -170t164.5 -58q88 0 154 37t102.5 114t36.5 169q0 104 -56 161.5t-157 57.5q-93 0 -161 -43t-105 -116t-37 -152z" />
+<glyph unicode="h" horiz-adv-x="1143" d="M764 0l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -188t-103.5 -286l-102 -477h-98l332 1556h96l-86 -411q-44 -200 -66 -279h6q78 113 186.5 175.5t229.5 62.5q124 0 192 -65t68 -183q0 -70 -24 -182l-148 -674h-98z" />
+<glyph unicode="i" horiz-adv-x="475" d="M174 0h-98l231 1087h96zM350 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" />
+<glyph unicode="j" horiz-adv-x="475" d="M-166 -492q-62 0 -113 19v92q47 -22 113 -22q82 0 128.5 51.5t72.5 177.5l266 1261h96l-268 -1271q-35 -165 -106.5 -236.5t-188.5 -71.5zM350 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" />
+<glyph unicode="k" horiz-adv-x="944" d="M270 477l609 610h125l-474 -469l297 -618h-106l-264 559l-205 -188l-80 -371h-96l330 1556h96l-166 -780l-70 -299h4z" />
+<glyph unicode="l" horiz-adv-x="475" d="M170 0h-94l334 1556h94z" />
+<glyph unicode="m" horiz-adv-x="1751" d="M711 0l147 674q25 125 25 162q0 182 -154 182q-106 0 -200 -67.5t-159 -188.5t-100 -287l-100 -475h-98l231 1087h80l-33 -210h6q80 113 181.5 170t212.5 57q106 0 163 -67t60 -195h6q77 129 181 195.5t222 66.5q117 0 182.5 -61.5t65.5 -176.5q0 -29 -2.5 -56.5 t-19.5 -119.5l-152 -690h-100l149 680q25 120 25 176q0 77 -43 119.5t-119 42.5q-157 0 -277.5 -137.5t-168.5 -362.5l-109 -518h-102z" />
+<glyph unicode="n" horiz-adv-x="1143" d="M764 0l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 -477h-98l231 1087h82l-37 -221h6q164 238 416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98z" />
+<glyph unicode="o" horiz-adv-x="1124" d="M649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83z" />
+<glyph unicode="p" horiz-adv-x="1149" d="M498 -16q-230 0 -279 219h-4q-13 -72 -149 -695h-99l336 1579h82l-45 -274h6q91 153 195.5 224t228.5 71q135 0 208 -92.5t73 -282.5q0 -195 -72 -371t-197.5 -277t-283.5 -101zM748 1018q-87 0 -174 -58.5t-161.5 -167.5t-110.5 -237.5t-36 -208.5q0 -125 61.5 -200.5 t168.5 -75.5q124 0 225 84t164 243.5t63 325.5q0 295 -200 295z" />
+<glyph unicode="q" horiz-adv-x="1157" d="M651 1104q109 0 183.5 -58t99.5 -167h6l55 208h80l-327 -1556h-95l98 470l64 282h-6q-93 -156 -199 -229.5t-231 -73.5q-281 0 -281 374q0 201 75.5 379t200.5 274.5t277 96.5zM401 70q92 0 182 62.5t160.5 171.5t105 236.5t34.5 200.5q0 130 -63.5 203.5t-166.5 73.5 q-124 0 -224 -83t-164 -245t-64 -325q0 -143 45.5 -219t154.5 -76z" />
+<glyph unicode="r" horiz-adv-x="752" d="M713 1106q69 0 123 -14l-21 -93q-47 15 -113 15q-94 0 -179 -64t-153 -192t-100 -277l-100 -481h-98l231 1087h80l-29 -204h6q73 94 123 135.5t106.5 64.5t123.5 23z" />
+<glyph unicode="s" horiz-adv-x="827" d="M713 295q0 -144 -103 -229.5t-280 -85.5q-173 0 -305 75v107q74 -46 153 -71t148 -25q138 0 211 57.5t73 163.5q0 42 -15.5 74t-50 61.5t-132.5 85.5q-148 80 -200 145.5t-52 159.5q0 128 98.5 209.5t259.5 81.5q75 0 158.5 -17.5t140.5 -46.5l-35 -88q-136 64 -264 64 q-116 0 -186 -53t-70 -138q0 -55 17 -88t60.5 -68.5t119.5 -76.5q114 -63 161.5 -103.5t70 -86.5t22.5 -107z" />
+<glyph unicode="t" horiz-adv-x="616" d="M694 1087l-18 -81h-283l-135 -635q-22 -99 -22 -164q0 -139 126 -139q68 0 152 26v-86q-101 -28 -170 -28q-99 0 -153 54.5t-54 158.5q0 73 29 206l129 607h-182l14 67l184 17l97 253h55l-55 -256h286z" />
+<glyph unicode="u" horiz-adv-x="1143" d="M381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100z" />
+<glyph unicode="v" horiz-adv-x="895" d="M276 0l-172 1087h101l108 -735q26 -165 33 -254h6q51 115 129 256l406 733h102l-600 -1087h-113z" />
+<glyph unicode="w" horiz-adv-x="1393" d="M838 0l-60 686q-14 224 -14 266h-6q-34 -92 -144 -290l-356 -662h-117l-20 1087h92l13 -821l-3 -157h6q61 134 150 297l373 681h77l64 -681q14 -147 14 -297h6l24 61l101 236l320 681h96l-508 -1087h-108z" />
+<glyph unicode="x" horiz-adv-x="922" d="M442 483l-393 -483h-121l471 559l-245 528h100l207 -462l373 462h120l-448 -534l258 -553h-98z" />
+<glyph unicode="y" horiz-adv-x="920" d="M123 1087h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184z" />
+<glyph unicode="z" horiz-adv-x="887" d="M700 0h-729l15 72l776 932h-543l17 83h659l-18 -83l-762 -920h602z" />
+<glyph unicode="{" horiz-adv-x="709" d="M424 -324q-256 0 -256 199q0 45 16 115l56 252q18 90 18 127q0 159 -199 159l21 78q126 0 191 49t89 158l89 393q30 135 106 195.5t215 60.5h29l-17 -86q-86 -2 -129 -20.5t-69.5 -61.5t-44.5 -120l-74 -338q-30 -134 -91.5 -194.5t-164.5 -78.5v-4q68 -18 105.5 -68.5 t37.5 -121.5q0 -52 -24 -164l-47 -225q-13 -58 -13 -101q0 -61 37.5 -89t138.5 -28v-86h-20z" />
+<glyph unicode="|" d="M584 1561h100v-2071h-100v2071z" />
+<glyph unicode="}" horiz-adv-x="709" d="M332 1462q131 0 189.5 -51t58.5 -147q0 -41 -17 -115l-55 -252q-19 -95 -19 -127q0 -77 49.5 -118.5t149.5 -41.5l-20 -78q-125 0 -191 -48.5t-90 -157.5l-88 -394q-32 -139 -108.5 -197.5t-213.5 -58.5h-18v86q96 2 138 21t68.5 61t43.5 121l74 338q27 126 87.5 189.5 t168.5 82.5v5q-75 20 -109.5 72.5t-34.5 117.5q0 55 18 131l54 258q12 61 12 101q0 44 -18 69t-54 36t-116 11l20 86h21z" />
+<glyph unicode="~" d="M350 745q-49 0 -108 -30.5t-115 -89.5v94q108 110 233 110q61 0 115 -13.5t156 -57.5q126 -58 219 -58q54 0 107.5 29t117.5 96v-96q-111 -113 -233 -113q-117 0 -271 72q-62 29 -112.5 43t-108.5 14z" />
+<glyph unicode="¡" horiz-adv-x="502" d="M264 711h62l-203 -1086h-119zM432 1030q0 -56 -25 -88.5t-69 -32.5q-66 0 -66 72q0 55 25 89t68 34q67 0 67 -74z" />
+<glyph unicode="¢" d="M578 -20h-93l45 215q-132 25 -206 132.5t-74 272.5q0 184 63.5 341t178 253t256.5 111l36 178h90l-38 -176q116 -4 217 -43l-29 -90q-107 47 -217 47q-130 0 -233 -76t-162.5 -221t-59.5 -322q0 -164 74.5 -247t208.5 -83q127 0 264 60v-92q-118 -58 -281 -58z" />
+<glyph unicode="£" d="M879 1479q170 0 313 -78l-39 -84l-54 26q-108 50 -231 50q-134 0 -220.5 -74.5t-117.5 -220.5l-73 -340h409l-18 -82h-408l-57 -268q-50 -225 -188 -314h759l-20 -94h-938l16 84q93 11 165.5 95.5t107.5 236.5l57 260h-199l17 82h198l76 350q41 187 155 279t290 92z" />
+<glyph unicode="¤" d="M262 723q0 118 74 225l-129 129l63 64l127 -129q105 78 230 78q118 0 223 -78l131 129l61 -62l-129 -129q78 -106 78 -227q0 -135 -78 -227l129 -127l-61 -62l-131 127q-104 -76 -223 -76q-126 0 -228 80l-129 -129l-61 62l127 127q-74 98 -74 225zM350 723 q0 -116 80 -196.5t197 -80.5t198.5 81t81.5 196q0 75 -36.5 140t-102.5 104t-141 39q-114 0 -195.5 -82t-81.5 -201z" />
+<glyph unicode="¥" d="M584 645l544 817h117l-559 -823h266l-16 -76h-315l-39 -190h317l-18 -84h-316l-59 -289h-105l64 289h-299l18 84h299l41 190h-301l17 76h258l-215 823h100z" />
+<glyph unicode="¦" d="M578 1561h100v-756h-100v756zM578 246h100v-756h-100v756z" />
+<glyph unicode="§" horiz-adv-x="995" d="M211 778q0 101 69.5 182t198.5 130q-64 31 -103.5 85.5t-39.5 120.5q0 74 46 134.5t132.5 94.5t202.5 34q163 0 289 -58l-31 -80q-138 54 -264 54q-124 0 -202.5 -46.5t-78.5 -123.5q0 -59 46 -104.5t183 -106.5q112 -52 158.5 -89.5t71 -85t24.5 -110.5 q0 -197 -249 -317q122 -64 122 -197q0 -86 -48 -153.5t-139.5 -105.5t-221.5 -38q-157 0 -275 53v99q47 -27 126 -46.5t153 -19.5q149 0 228 52.5t79 150.5q0 62 -42.5 106t-166.5 96q-155 65 -211.5 130t-56.5 159zM559 1038q-119 -30 -187.5 -97.5t-68.5 -154.5 q0 -57 24.5 -96.5t81 -73t187.5 -81.5q103 49 162 113.5t59 156.5q0 72 -57.5 126t-200.5 107z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M836 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM492 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M944 1092q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q85 0 199 43v-88q-104 -45 -209 -45q-187 0 -288 116t-101 330q0 207 110 332t297 125q119 0 227 -52l-36 -83q-99 45 -191 45zM147 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM240 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330t-240.5 241t-330.5 89q-182 0 -335 -92t-238.5 -243t-85.5 -325z" />
+<glyph unicode="ª" horiz-adv-x="643" d="M487 1485q55 0 97.5 -29t66.5 -86h6l35 103h66l-137 -650h-72l22 125h-4q-96 -137 -223 -137q-80 0 -127 56.5t-47 164.5q0 189 90.5 321t226.5 132zM369 885q66 0 133.5 75.5t97.5 184.5q16 51 16 123q0 58 -36 100.5t-93 42.5q-94 0 -161.5 -111.5t-67.5 -271.5 q0 -143 111 -143z" />
+<glyph unicode="«" horiz-adv-x="860" d="M426 932l57 -49l-317 -336l213 -385l-64 -39l-254 418l2 26zM786 932l58 -49l-314 -336l209 -385l-63 -39l-254 418l2 26z" />
+<glyph unicode="¬" d="M1028 772v-500h-100v400h-803v100h903z" />
+<glyph unicode="­" horiz-adv-x="629" d="M77 502zM77 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M758 731h112q93 0 144 46.5t51 135.5q0 172 -197 172h-110v-354zM1169 918q0 -80 -39.5 -141t-109.5 -93l237 -393h-120l-211 360h-168v-360h-101v880h211q143 0 222 -62t79 -191zM150 731q0 207 103.5 382t276.5 272.5t371 97.5q200 0 375 -100t276 -275t101 -377 q0 -197 -97 -370t-272 -277t-383 -104q-204 0 -376.5 100.5t-273.5 273t-101 377.5zM242 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330t-240.5 241t-330.5 89q-182 0 -335 -92t-238.5 -243t-85.5 -325z" />
+<glyph unicode="¯" horiz-adv-x="655" d="M1001 1556h-653l53 97h654z" />
+<glyph unicode="°" horiz-adv-x="877" d="M242 1190q0 120 85 206.5t208 86.5q122 0 207 -86.5t85 -206.5q0 -122 -85.5 -207.5t-206.5 -85.5q-122 0 -207.5 85.5t-85.5 207.5zM315 1190q0 -89 64.5 -153t155.5 -64q92 0 155.5 64t63.5 153q0 90 -64 155.5t-155 65.5q-90 0 -155 -65.5t-65 -155.5z" />
+<glyph unicode="±" d="M528 629h-401v98h401v406h101v-406h401v-98h-401v-400h-101v400zM127 0v100h903v-100h-903z" />
+<glyph unicode="²" horiz-adv-x="643" d="M604 586h-522l16 80l297 258q137 118 182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 -223h416z" />
+<glyph unicode="³" horiz-adv-x="643" d="M705 1276q0 -85 -48.5 -148t-154.5 -88v-4q66 -16 105.5 -68t39.5 -124q0 -77 -39 -141t-109 -99t-161 -35q-59 0 -123.5 15.5t-105.5 40.5v90q46 -28 108 -48t125 -20q99 0 159 52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5t66.5 129.5 q0 68 -37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 159 -56.5t59 -148.5z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M580 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="µ" horiz-adv-x="1171" d="M238 242q0 -82 48.5 -127t135.5 -45q110 0 207 64.5t162.5 182.5t101.5 285l104 485h99l-234 -1087h-78l29 205h-6q-164 -221 -404 -221q-85 0 -139 32.5t-76 89.5h-6q-18 -132 -51 -284l-63 -314h-97l338 1579h101l-152 -698q-20 -96 -20 -147z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1208 -260h-100v1722h-227v-1722h-101v819q-64 -18 -145 -18q-216 0 -318 125t-102 376q0 260 109 387t342 127h542v-1816z" />
+<glyph unicode="·" horiz-adv-x="485" d="M207 625zM207 698q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M197 -289q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152z" />
+<glyph unicode="¹" horiz-adv-x="643" d="M512 1462h80l-186 -876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 -93.5l-39 59z" />
+<glyph unicode="º" horiz-adv-x="655" d="M518 1479q105 0 165 -64t60 -180q0 -115 -40 -214t-114 -156.5t-175 -57.5q-114 0 -169 67.5t-55 184.5q0 112 41.5 209.5t116 154t170.5 56.5zM508 1405q-70 0 -124 -46.5t-84 -124.5t-30 -167q0 -186 156 -186q73 0 125.5 46.5t81.5 127.5t29 176q0 83 -39 128.5 t-115 45.5z" />
+<glyph unicode="»" horiz-adv-x="860" d="M451 123l-58 49l314 336l-209 385l63 39l254 -418l-2 -27zM90 123l-57 49l313 336l-209 385l64 39l254 -418l-2 -27z" />
+<glyph unicode="¼" horiz-adv-x="1481" d="M129 0zM1319 230h-131l-49 -229h-82l49 229h-391l21 76l506 577h86l-125 -581h133zM1121 302q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392h291zM1323 1462l-1087 -1462h-107l1086 1462h108zM509 1462h80l-186 -876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59 t15 49.5q-34 -31 -60 -51.5t-143 -93.5l-39 59z" />
+<glyph unicode="½" horiz-adv-x="1458" d="M53 0zM1278 1h-522l16 80l297 258q137 118 182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 -223h416zM431 1462h80l-186 -876h-84l118 569q5 21 11.5 50.5 t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 -93.5l-39 59zM1247 1462l-1087 -1462h-107l1086 1462h108z" />
+<glyph unicode="¾" horiz-adv-x="1458" d="M71 0zM1380 230h-131l-49 -229h-82l49 229h-391l21 76l506 577h86l-125 -581h133zM1182 302q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392h291zM667 1276q0 -85 -48.5 -148t-154.5 -88v-4q66 -16 105.5 -68t39.5 -124q0 -77 -39 -141t-109 -99t-161 -35 q-59 0 -123.5 15.5t-105.5 40.5v90q46 -28 108 -48t125 -20q99 0 159 52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5t66.5 129.5q0 68 -37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 159 -56.5t59 -148.5zM1407 1462l-1087 -1462 h-107l1086 1462h108z" />
+<glyph unicode="¿" horiz-adv-x="799" d="M641 717l-6 -29q-28 -127 -79 -200t-161 -154q-118 -84 -175 -145.5t-86.5 -127.5t-29.5 -141q0 -106 65.5 -168.5t184.5 -62.5q141 0 308 100l38 -86q-85 -49 -170.5 -77.5t-187.5 -28.5q-159 0 -250.5 84.5t-91.5 228.5q0 133 70 240.5t227 220.5q85 61 133.5 109 t73 95t45.5 142h92zM713 1020q0 -56 -25.5 -88.5t-69.5 -32.5q-65 0 -65 72q0 56 25 89.5t67 33.5q68 0 68 -74z" />
+<glyph unicode="À" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM815 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM668 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Â" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM1007 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5 t92.5 -146.5v-29z" />
+<glyph unicode="Ã" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM911 1587q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5 q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode="Ä" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM879 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM535 1704q0 49 20.5 78t56.5 29q54 0 54 -64 q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="Å" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM945 1600q0 -92 -57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142zM867 1598 q0 57 -33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93t33 -90t90 -33q56 0 90.5 36t34.5 93z" />
+<glyph unicode="Æ" horiz-adv-x="1640" d="M1403 0h-727l110 522h-444l-328 -522h-131l946 1462h883l-20 -94h-625l-117 -553h590l-20 -94h-588l-135 -627h626zM408 627h401l156 741h-88z" />
+<glyph unicode="Ç" horiz-adv-x="1169" d="M170 0zM961 1389q-197 0 -351.5 -104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410q0 266 104.5 488t284.5 341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17zM752 -289 q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152z" />
+<glyph unicode="È" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM891 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM654 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Ê" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM1036 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="Ë" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM902 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM558 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="Ì" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM525 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM419 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Î" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM738 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="Ï" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM604 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM260 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="Ð" horiz-adv-x="1352" d="M1288 879q0 -253 -109.5 -461.5t-300.5 -313t-446 -104.5h-330l144 676h-156l21 96h155l146 690h305q282 0 426.5 -147.5t144.5 -435.5zM430 90q226 0 394.5 94.5t261 275.5t92.5 412q0 498 -476 498h-206l-129 -598h378l-20 -96h-379l-125 -586h209z" />
+<glyph unicode="Ñ" horiz-adv-x="1372" d="M102 0zM1069 0h-86l-516 1284h-8q-23 -149 -48 -273t-214 -1011h-95l310 1462h80l522 -1294h8q23 176 74 416l188 878h94zM1062 1587q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14 t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode="Ò" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM989 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM844 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Ô" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM1171 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="Õ" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM1077 1587q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z " />
+<glyph unicode="Ö" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM1031 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM687 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="×" d="M551 723l-330 332l70 69l330 -329l333 329l68 -67l-332 -334l332 -332l-68 -67l-333 329l-330 -327l-68 67z" />
+<glyph unicode="Ø" horiz-adv-x="1464" d="M1403 911q0 -187 -52 -365.5t-144.5 -304.5t-223 -193.5t-291.5 -67.5q-215 0 -348 112l-139 -170l-66 64l146 172q-113 149 -113 401q0 263 94 479.5t256.5 330.5t370.5 114q219 0 352 -121l133 168l70 -53l-145 -183q45 -51 72.5 -161t27.5 -222zM879 1389 q-134 0 -244 -59.5t-188.5 -170t-124.5 -267.5t-46 -319q0 -105 21.5 -191t56.5 -138l826 1032q-107 113 -301 113zM1294 901q0 85 -17.5 172t-43.5 129l-821 -1030q107 -100 293 -100q170 0 301 100t209.5 296.5t78.5 432.5z" />
+<glyph unicode="Ù" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM946 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303 v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM838 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5 t-192.5 -146.5h-67v21z" />
+<glyph unicode="Û" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM1148 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54 v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="Ü" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM1022 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29 q-55 0 -55 63zM678 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="Ý" horiz-adv-x="965" d="M193 0zM494 645l544 817h117l-631 -932l-108 -530h-105l119 545l-237 917h100zM563 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Þ" horiz-adv-x="1145" d="M1087 836q0 -247 -153 -373.5t-457 -126.5h-201l-71 -336h-103l310 1462h102l-57 -266h213q200 0 308.5 -92.5t108.5 -267.5zM293 428h190q256 0 376 98.5t120 302.5q0 275 -330 275h-211z" />
+<glyph unicode="ß" horiz-adv-x="1094" d="M-162 -492q-73 0 -119 23v90q53 -24 115 -24q79 0 123 50.5t66 153.5l305 1409q80 357 405 357q137 0 215 -61.5t78 -174.5q0 -75 -44.5 -140.5t-166.5 -148.5q-107 -76 -141.5 -124.5t-34.5 -106.5q0 -51 34 -88.5t93 -75.5q96 -63 138 -133.5t42 -165.5 q0 -170 -106.5 -269t-286.5 -99q-143 0 -234 65v109q45 -36 112.5 -59t129.5 -23q132 0 208.5 71t76.5 195q0 75 -31.5 129t-109.5 108q-82 58 -119 110.5t-37 121.5q0 57 21 103t60.5 88.5t137.5 113.5q101 70 131.5 116t30.5 101q0 70 -55 110t-150 40q-129 0 -205 -76 t-108 -229l-291 -1377q-33 -152 -103.5 -220.5t-179.5 -68.5z" />
+<glyph unicode="à" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM809 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="á" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM586 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="â" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM955 1243h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="ã" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM858 1249q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173 t-124.5 -55z" />
+<glyph unicode="ä" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM835 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM491 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="å" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM927 1448q0 -92 -57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142zM849 1446q0 57 -33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93t33 -90t90 -33q56 0 90.5 36 t34.5 93z" />
+<glyph unicode="æ" horiz-adv-x="1602" d="M1155 -20q-123 0 -211 60t-117 165l-39 -205h-77l41 254h-9q-94 -142 -189 -208t-208 -66q-120 0 -182 94t-62 270q0 206 70.5 384.5t192.5 277t274 98.5q106 0 166 -56.5t74 -156.5h10l59 192h66l-35 -186q139 207 350 207q112 0 175 -61.5t63 -172.5 q0 -179 -158.5 -271.5t-470.5 -92.5h-39q-8 -51 -8 -96q0 -161 69.5 -250.5t217.5 -89.5q69 0 133.5 21t130.5 52v-94q-80 -37 -147 -53t-140 -16zM369 70q67 0 138.5 42t134 117.5t106 170.5t63.5 199t20 165q0 118 -49 186t-141 68q-123 0 -223 -86t-156.5 -240 t-56.5 -340q0 -150 42.5 -216t121.5 -66zM1317 1018q-119 0 -232 -115.5t-172 -308.5h48q263 0 383 67t120 203q0 71 -38.5 112.5t-108.5 41.5z" />
+<glyph unicode="ç" horiz-adv-x="887" d="M102 0zM477 -20q-174 0 -274.5 110.5t-100.5 306.5q0 193 73.5 361.5t198.5 257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 -222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 -57 -273 -57zM574 -289 q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152z" />
+<glyph unicode="è" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM751 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM532 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="ê" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM904 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="ë" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM780 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM436 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ì" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM454 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM284 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="î" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM642 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="ï" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM515 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM171 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ð" horiz-adv-x="1124" d="M713 1364q-54 60 -158 139l59 68q32 -26 81 -66t100 -94l266 150l39 -74l-256 -141q87 -116 131.5 -276t44.5 -335q0 -355 -141.5 -555t-399.5 -200q-177 0 -277 106.5t-100 294.5q0 170 63 301.5t178.5 203.5t262.5 72q107 0 188 -49.5t121 -142.5h5q0 139 -43 289 t-115 243l-295 -163l-39 73zM489 70q118 0 208.5 61t144 186.5t53.5 270.5q0 77 -35 142t-100 101.5t-156 36.5q-124 0 -213.5 -61.5t-137.5 -169.5t-48 -248q0 -153 73.5 -236t210.5 -83z" />
+<glyph unicode="ñ" horiz-adv-x="1143" d="M76 0zM764 0l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 -477h-98l231 1087h82l-37 -221h6q164 238 416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98zM874 1249q-40 0 -77.5 19t-75.5 45 q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode="ò" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM744 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="ó" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM573 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="ô" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM941 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="õ" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM839 1249q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode="ö" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM812 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM468 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="÷" d="M168 672v100h903v-100h-903zM522 373q0 106 96 106q48 0 73.5 -27.5t25.5 -78.5q0 -57 -29 -82t-70 -25q-96 0 -96 107zM522 1071q0 107 96 107q46 0 72.5 -27.5t26.5 -79.5q0 -57 -29 -81.5t-70 -24.5q-96 0 -96 106z" />
+<glyph unicode="ø" horiz-adv-x="1124" d="M164 127q-66 106 -66 276q0 191 73 358t197 257t281 90q150 0 250 -82l109 133l65 -53l-117 -143q70 -105 70 -263q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-163 0 -254 83l-110 -135l-64 54zM924 702q0 101 -35 179l-608 -742q67 -73 202 -73q127 0 225.5 77.5 t157 228t58.5 330.5zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -125 32 -197l605 739q-74 72 -197 72z" />
+<glyph unicode="ù" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM774 1241h-66q-50 52 -114 144.5 t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM627 1262q66 51 150.5 142 t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="û" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM957 1241h-49q-70 60 -161 207 q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="ü" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM827 1366q0 49 20.5 78t56.5 29 q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM483 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ý" horiz-adv-x="920" d="M0 0zM123 1087h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184zM505 1262q66 51 150.5 142t129.5 165h137v-23 q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="þ" horiz-adv-x="1163" d="M498 -16q-230 0 -279 219h-4q-13 -72 -149 -695h-99l434 2048h99q-114 -535 -164 -751h6q93 156 199 229.5t231 73.5q133 0 206 -92.5t73 -282.5q0 -195 -72 -371t-197.5 -277t-283.5 -101zM748 1018q-86 0 -172.5 -57.5t-162.5 -169.5t-111.5 -238t-35.5 -207 q0 -125 61.5 -200.5t168.5 -75.5q124 0 225 84t164 243.5t63 325.5q0 295 -200 295z" />
+<glyph unicode="ÿ" horiz-adv-x="920" d="M0 0zM123 1087h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184zM698 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77 t-55 -29q-55 0 -55 63zM354 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ı" horiz-adv-x="475" d="M174 0h-98l231 1087h96z" />
+<glyph unicode="Œ" horiz-adv-x="1767" d="M1530 0h-666q-25 -6 -77.5 -13t-94.5 -7q-251 0 -385.5 149.5t-134.5 429.5q0 263 96 482t262 330.5t381 111.5q130 0 240 -21h688l-20 -94h-625l-117 -553h590l-20 -94h-588l-135 -627h626zM705 72q68 0 116 12l271 1290q-110 15 -189 15q-182 0 -321.5 -98.5 t-222.5 -293.5t-83 -424q0 -245 109 -373t320 -128z" />
+<glyph unicode="œ" horiz-adv-x="1720" d="M1262 -20q-135 0 -228 69t-125 201q-65 -127 -179 -198.5t-257 -71.5q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90q141 0 237 -74.5t126 -212.5q70 132 182.5 207.5t241.5 75.5q114 0 182 -61t68 -166q0 -181 -163.5 -276t-486.5 -95h-32 q-7 -38 -7 -98q0 -165 74 -251.5t213 -86.5q133 0 277 73v-94q-140 -69 -299 -69zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83zM1423 1018q-131 0 -243 -115t-162 -309h49q516 0 516 270 q0 70 -44.5 112t-115.5 42z" />
+<glyph unicode="Ÿ" horiz-adv-x="965" d="M193 0zM494 645l544 817h117l-631 -932l-108 -530h-105l119 545l-237 917h100zM798 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM454 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M958 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M967 1448q0 -92 -57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142zM889 1446q0 57 -33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93t33 -90t90 -33q56 0 90.5 36t34.5 93z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M831 1249q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="‑" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="‒" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="–" horiz-adv-x="983" d="M66 502l18 90h807l-17 -90h-808z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M68 502l18 90h1788l-16 -90h-1790z" />
+<glyph unicode="‘" horiz-adv-x="299" d="M133 961l-4 22q41 100 116 231t161 248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" />
+<glyph unicode="’" horiz-adv-x="299" d="M475 1462l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 106 129.5 242.5t103.5 258.5h113z" />
+<glyph unicode="‚" horiz-adv-x="451" d="M246 238l4 -23q-40 -97 -115.5 -230t-161.5 -249h-73q68 110 131.5 248t101.5 254h113z" />
+<glyph unicode="“" horiz-adv-x="631" d="M133 961l-4 22q41 100 116 231t161 248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113zM467 961l-4 22q43 104 120 238.5t156 240.5h74q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" />
+<glyph unicode="”" horiz-adv-x="631" d="M809 1462l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 106 129.5 242.5t103.5 258.5h113zM475 1462l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 106 129.5 242.5t103.5 258.5h113z" />
+<glyph unicode="„" horiz-adv-x="776" d="M561 238l4 -23q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 108 129 242.5t105 259.5h112zM227 238l4 -23q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q73 119 135.5 254.5t98.5 247.5h112z" />
+<glyph unicode="•" horiz-adv-x="793" d="M248 682q0 137 63 213t172 76q76 0 116 -39.5t40 -118.5q0 -125 -66 -207t-176 -82q-149 0 -149 158z" />
+<glyph unicode="…" horiz-adv-x="1489" d="M69 0zM69 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM569 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM1071 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="537" d="M451 932l57 -49l-318 -336l213 -385l-63 -39l-254 418l2 26z" />
+<glyph unicode="›" horiz-adv-x="537" d="M94 123l-57 49l317 336l-213 385l64 39l254 -418l-2 -27z" />
+<glyph unicode="⁄" horiz-adv-x="274" d="M731 1462l-1087 -1462h-107l1086 1462h108z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="643" d="M657 815h-131l-49 -229h-82l49 229h-391l21 76l506 577h86l-125 -581h133zM459 887q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392h291z" />
+<glyph unicode="€" d="M991 1389q-186 0 -330.5 -120.5t-226.5 -346.5h457l-21 -82h-460q-30 -98 -39 -217h442l-20 -82h-424q0 -243 89 -356t265 -113q115 0 252 57v-94q-129 -55 -270 -55q-209 0 -325 139.5t-116 394.5v27h-184l16 82h172q5 101 35 217h-170l19 82h174q95 273 270 417 t399 144q166 0 287 -90l-53 -82q-102 78 -238 78z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M477 741h-86v643h-217v78h522v-78h-219v-643zM1077 741l-221 609h-6l4 -201v-408h-82v721h125l221 -606l223 606h125v-721h-86v398l4 207h-6l-227 -605h-74z" />
+<glyph unicode="" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph horiz-adv-x="1133" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+<hkern g1="uniFB00" u2="”" k="-123" />
+<hkern g1="uniFB00" u2="’" k="-123" />
+<hkern g1="uniFB00" u2="'" k="-123" />
+<hkern g1="uniFB00" u2=""" k="-123" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.ttf
new file mode 100755
index 0000000..01dda28
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.woff
new file mode 100755
index 0000000..43e8b9e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-LightItalic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.eot
new file mode 100755
index 0000000..1486840
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.svg
new file mode 100755
index 0000000..11a472c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.svg
@@ -0,0 +1,1831 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sanslight" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1077" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM895 0h-99v1087h99v-1087zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71 t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="fl" horiz-adv-x="1077" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM895 0h-99v1556h99v-1556z" />
+<glyph unicode="ffi" horiz-adv-x="1692" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1200 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5 q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1510 0h-99v1087h99v-1087zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="ffl" horiz-adv-x="1692" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1200 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5 q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1510 0h-99v1556h99v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="492" d="M276 377h-61l-29 1085h119zM164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode=""" horiz-adv-x="723" d="M260 1462l-33 -528h-61l-33 528h127zM590 1462l-33 -528h-61l-33 528h127z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M967 928l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301zM440 530h363l78 398h-363z" />
+<glyph unicode="$" d="M991 440q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5t-172.5 50.5v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144 t80 -204zM881 444q0 85 -63 140.5t-200 95.5v-471q122 13 192.5 75t70.5 160zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143z" />
+<glyph unicode="%" horiz-adv-x="1653" d="M211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM688 1026q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5zM1063 438 q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5zM1540 438q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337zM1280 1462l-811 -1462h-96l811 1462h96z" />
+<glyph unicode="&" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM578 70q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138q0 -143 93 -224t258 -81zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" />
+<glyph unicode="'" horiz-adv-x="393" d="M260 1462l-33 -528h-61l-33 528h127z" />
+<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="557" d="M475 561q0 -263 -77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5h113q147 -175 224 -406.5t77 -494.5z" />
+<glyph unicode="*" horiz-adv-x="1128" d="M631 1556l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340l-390 39l19 131l401 -104l-39 405h146z" />
+<glyph unicode="+" d="M625 764h434v-82h-434v-432h-82v432h-432v82h432v434h82v-434z" />
+<glyph unicode="," horiz-adv-x="440" d="M295 238l12 -21q-75 -265 -174 -481h-65q77 275 110 502h117z" />
+<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="/" horiz-adv-x="698" d="M674 1462l-545 -1462h-104l544 1462h105z" />
+<glyph unicode="0" d="M1055 735q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" />
+<glyph unicode="1" d="M682 0h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243l-57 71l397 297h86v-1462z" />
+<glyph unicode="2" d="M1028 0h-915v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96z" />
+<glyph unicode="3" d="M979 1118q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5 q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5z" />
+<glyph unicode="4" d="M1141 373h-252v-373h-94v373h-752v67l725 1030h121v-1011h252v-86zM795 459v418q0 302 14 507h-8q-20 -37 -123 -188l-516 -737h633z" />
+<glyph unicode="5" d="M537 879q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29z" />
+<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM610 68q164 0 255 103 t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5q0 -111 49.5 -213.5t134 -162.5t186.5 -60z" />
+<glyph unicode="7" d="M334 0l602 1366h-827v96h946v-73l-604 -1389h-117z" />
+<glyph unicode="8" d="M582 1487q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM580 1397q-141 0 -226.5 -69.5t-85.5 -190.5q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70z" />
+<glyph unicode="9" d="M1036 842q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346z M559 1397q-158 0 -252 -106.5t-94 -291.5q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5z" />
+<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode=";" horiz-adv-x="487" d="M303 238l12 -21q-75 -265 -174 -481h-65q29 97 62 245.5t48 256.5h117zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="<" d="M1059 266l-948 416v61l948 474v-95l-823 -405l823 -355v-96z" />
+<glyph unicode="=" d="M111 885v82h948v-82h-948zM111 477v82h948v-82h-948z" />
+<glyph unicode=">" d="M111 362l823 355l-823 405v95l948 -474v-61l-948 -416v96z" />
+<glyph unicode="?" horiz-adv-x="862" d="M293 377v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75q-79 0 -148 -17.5t-149 -56.5l-37 80q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5 t-50 -93.5t-15.5 -146v-14h-82zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="@" horiz-adv-x="1815" d="M1702 725q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5 q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5 t89.5 -383.5zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" />
+<glyph unicode="A" horiz-adv-x="1229" d="M911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" />
+<glyph unicode="B" horiz-adv-x="1284" d="M207 1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448v1462zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212t-314.5 66h-295v-561zM309 721v-631h344q406 0 406 330 q0 301 -428 301h-322z" />
+<glyph unicode="C" horiz-adv-x="1272" d="M831 1391q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80z" />
+<glyph unicode="D" horiz-adv-x="1446" d="M1317 745q0 -368 -193 -556.5t-567 -188.5h-350v1462h395q350 0 532.5 -183t182.5 -534zM1206 741q0 314 -159.5 472.5t-468.5 158.5h-269v-1282h242q655 0 655 651z" />
+<glyph unicode="E" horiz-adv-x="1130" d="M1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94z" />
+<glyph unicode="F" horiz-adv-x="1028" d="M309 0h-102v1462h801v-94h-699v-620h660v-95h-660v-653z" />
+<glyph unicode="G" horiz-adv-x="1481" d="M782 737h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96z" />
+<glyph unicode="H" horiz-adv-x="1473" d="M1266 0h-103v719h-854v-719h-102v1462h102v-649h854v649h103v-1462z" />
+<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
+<glyph unicode="J" horiz-adv-x="506" d="M-33 -369q-92 0 -151 27v88q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369z" />
+<glyph unicode="K" horiz-adv-x="1190" d="M1190 0h-125l-561 772l-195 -172v-600h-102v1462h102v-760l162 162l573 598h130l-599 -618z" />
+<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" />
+<glyph unicode="M" horiz-adv-x="1767" d="M850 0l-545 1350h-8q8 -124 8 -254v-1096h-98v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65z" />
+<glyph unicode="N" horiz-adv-x="1477" d="M1270 0h-103l-866 1298h-8q12 -232 12 -350v-948h-98v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462z" />
+<glyph unicode="O" horiz-adv-x="1565" d="M1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
+<glyph unicode="P" horiz-adv-x="1198" d="M1087 1042q0 -212 -144 -325t-408 -113h-226v-604h-102v1462h358q522 0 522 -420zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="Q" horiz-adv-x="1565" d="M1436 733q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="R" horiz-adv-x="1217" d="M309 637v-637h-102v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
+<glyph unicode="S" horiz-adv-x="1116" d="M1014 377q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76 q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5z" />
+<glyph unicode="T" horiz-adv-x="1073" d="M588 0h-103v1366h-475v96h1053v-96h-475v-1366z" />
+<glyph unicode="U" horiz-adv-x="1473" d="M1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102z" />
+<glyph unicode="V" horiz-adv-x="1182" d="M1071 1462h111l-547 -1462h-90l-545 1462h109l368 -995q84 -225 113 -338q20 75 79 233z" />
+<glyph unicode="W" horiz-adv-x="1827" d="M1372 0h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86l-402 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103z" />
+<glyph unicode="X" horiz-adv-x="1102" d="M1102 0h-117l-432 682l-440 -682h-113l492 762l-447 700h115l395 -626l401 626h109l-453 -698z" />
+<glyph unicode="Y" horiz-adv-x="1081" d="M543 662l428 800h110l-487 -897v-565h-105v557l-489 905h117z" />
+<glyph unicode="Z" horiz-adv-x="1180" d="M1098 0h-1016v76l856 1290h-817v96h954v-76l-858 -1290h881v-96z" />
+<glyph unicode="[" horiz-adv-x="653" d="M602 -324h-428v1786h428v-94h-330v-1597h330v-95z" />
+<glyph unicode="\" horiz-adv-x="698" d="M127 1462l547 -1462h-103l-546 1462h102z" />
+<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" />
+<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" />
+<glyph unicode="_" horiz-adv-x="842" d="M846 -266h-850v82h850v-82z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M776 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="a" horiz-adv-x="1085" d="M842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M641 1108q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46zM639 1018q-192 0 -275 -110t-83 -363v-17q0 -246 86.5 -353t269.5 -107 q178 0 268 124.5t90 354.5q0 471 -356 471z" />
+<glyph unicode="c" horiz-adv-x="973" d="M616 -20q-233 0 -365 147t-132 410q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51z" />
+<glyph unicode="d" horiz-adv-x="1219" d="M580 1108q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408q0 282 118 431t343 149zM580 1018q-178 0 -267.5 -125t-89.5 -363q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5 t-273.5 110.5z" />
+<glyph unicode="e" horiz-adv-x="1124" d="M621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5z" />
+<glyph unicode="f" horiz-adv-x="614" d="M586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86z" />
+<glyph unicode="g" horiz-adv-x="1071" d="M1030 1087v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220q0 112 69.5 186 t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M940 0v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98z" />
+<glyph unicode="i" horiz-adv-x="463" d="M281 0h-99v1087h99v-1087zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="j" horiz-adv-x="463" d="M37 -492q-80 0 -135 25v86q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="k" horiz-adv-x="991" d="M279 477l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99v1556h99v-780l-7 -299h5z" />
+<glyph unicode="l" horiz-adv-x="463" d="M281 0h-99v1556h99v-1556z" />
+<glyph unicode="m" horiz-adv-x="1808" d="M1540 0v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M940 0v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98z" />
+<glyph unicode="o" horiz-adv-x="1200" d="M1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
+<glyph unicode="p" horiz-adv-x="1219" d="M647 -20q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5zM645 68q167 0 258.5 124t91.5 347q0 479 -346 479q-190 0 -279 -104.5t-89 -340.5v-32 q0 -255 85.5 -364t278.5 -109z" />
+<glyph unicode="q" horiz-adv-x="1219" d="M569 -20q-214 0 -332 142t-118 410q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190zM571 68q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124t-91.5 -364q0 -229 89.5 -345.5 t258.5 -116.5z" />
+<glyph unicode="r" horiz-adv-x="797" d="M610 1108q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99v1087h84l10 -196h7q67 120 143 168.5t184 48.5z" />
+<glyph unicode="s" horiz-adv-x="954" d="M856 283q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44 t-78 -122q0 -85 60.5 -136t236.5 -114q147 -53 214 -95.5t100.5 -96.5t33.5 -127z" />
+<glyph unicode="t" horiz-adv-x="686" d="M469 68q94 0 164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98z" />
+<glyph unicode="v" horiz-adv-x="940" d="M420 0l-420 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
+<glyph unicode="w" horiz-adv-x="1481" d="M1051 0l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98l-311 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104z" />
+<glyph unicode="x" horiz-adv-x="1020" d="M449 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
+<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
+<glyph unicode="z" horiz-adv-x="944" d="M858 0h-776v63l645 936h-598v88h727v-63l-649 -936h651v-88z" />
+<glyph unicode="{" horiz-adv-x="723" d="M389 -27q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322z" />
+<glyph unicode="|" horiz-adv-x="1108" d="M508 1561h92v-2067h-92v2067z" />
+<glyph unicode="}" horiz-adv-x="723" d="M334 295q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5t-277.5 -75.5v91q141 2 201.5 52.5 t60.5 153.5v322z" />
+<glyph unicode="~" d="M334 745q-49 0 -108 -30.5t-115 -89.5v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57z" />
+<glyph unicode="¡" horiz-adv-x="492" d="M215 711h61l29 -1086h-119zM166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="¢" d="M602 190q-186 30 -288.5 175t-102.5 380q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210z" />
+<glyph unicode="£" d="M412 676v-256q0 -116 -35 -196t-113 -128h809v-96h-995v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411z" />
+<glyph unicode="¤" d="M991 723q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142l-59 60l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258zM584 395 q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233t94.5 -232t229.5 -96z" />
+<glyph unicode="¥" d="M586 666l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278l-430 788h117z" />
+<glyph unicode="¦" horiz-adv-x="1108" d="M508 1561h92v-764h-92v764zM508 258h92v-764h-92v764z" />
+<glyph unicode="§" horiz-adv-x="1057" d="M145 813q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5 q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5zM246 825q0 -65 31.5 -104t105.5 -75t250 -99 q82 41 126 98t44 121q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" />
+<glyph unicode="¨" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M897 1092q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115t-101.5 331q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100 t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329z " />
+<glyph unicode="ª" horiz-adv-x="686" d="M512 813l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5 q-116 -6 -177 -36.5t-61 -98.5z" />
+<glyph unicode="«" horiz-adv-x="885" d="M82 543l309 393l62 -43l-254 -363l254 -362l-62 -43l-309 391v27zM442 543l310 393l61 -43l-254 -363l254 -362l-61 -43l-310 391v27z" />
+<glyph unicode="¬" d="M1038 764v-494h-82v412h-845v82h927z" />
+<glyph unicode="­" horiz-adv-x="659" d="M92 512zM92 512v82h475v-82h-475z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354zM1120 918q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101v880h211q143 0 222 -62t79 -191zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377 q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329z" />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v82h1036v-82z" />
+<glyph unicode="°" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" />
+<glyph unicode="±" d="M111 1zM111 1v82h948v-82h-948zM625 764h434v-82h-434v-432h-82v432h-432v82h432v434h82v-434z" />
+<glyph unicode="²" horiz-adv-x="688" d="M629 586h-576v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88z" />
+<glyph unicode="³" horiz-adv-x="688" d="M616 1260q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78 l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163z" />
+<glyph unicode="´" horiz-adv-x="1182" d="M393 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="µ" horiz-adv-x="1221" d="M281 1087v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99v1579h99z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1106 -260h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h543v-1816z" />
+<glyph unicode="·" horiz-adv-x="487" d="M162 623zM162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M393 -291q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174z" />
+<glyph unicode="¹" horiz-adv-x="688" d="M350 1462h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145l-47 77z" />
+<glyph unicode="º" horiz-adv-x="739" d="M670 1141q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
+<glyph unicode="»" horiz-adv-x="885" d="M803 518l-309 -393l-62 43l254 362l-254 363l62 43l309 -391v-27zM442 518l-309 -393l-61 43l254 362l-254 363l61 43l309 -391v-27z" />
+<glyph unicode="¼" horiz-adv-x="1516" d="M59 0zM333 1462h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145l-47 77zM1148 1462l-811 -1462h-94l811 1462h94zM1392 242h-129v-241h-90v241h-413v60l407 581h96v-563h129v-78zM1173 320v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5h309z" />
+<glyph unicode="½" horiz-adv-x="1516" d="M11 0zM285 1462h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145l-47 77zM1073 1462l-811 -1462h-94l811 1462h94zM1403 1h-576v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5 q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88z" />
+<glyph unicode="¾" horiz-adv-x="1516" d="M41 0zM616 1260q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5 q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163zM1300 1462l-811 -1462h-94l811 1462h94zM1495 242h-129v-241h-90v241h-413v60l407 581h96v-563h129v-78zM1276 320v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5h309z" />
+<glyph unicode="¿" horiz-adv-x="862" d="M569 711v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99t-104.5 269q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94 t15 145.5v15h82zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="À" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM720 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="Á" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Â" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Ã" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM784 1581q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59 q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="Ä" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="Å" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM836 1610q0 -97 -60 -155t-157 -58t-157 58t-60 155q0 94 60 152.5t157 58.5t157 -59t60 -152zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="Æ" horiz-adv-x="1653" d="M1528 0h-717v516h-475l-227 -516h-111l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94zM377 608h434v760h-100z" />
+<glyph unicode="Ç" horiz-adv-x="1272" d="M129 0zM831 1391q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80zM911 -291q0 -100 -67.5 -150.5t-188.5 -50.5 q-68 0 -94 11v88q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174z" />
+<glyph unicode="È" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM697 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="É" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM463 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Ê" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM315 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Ë" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="Ì" horiz-adv-x="516" d="M0 0zM207 0v1462h102v-1462h-102zM320 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="Í" horiz-adv-x="516" d="M191 0zM207 0v1462h102v-1462h-102zM191 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Î" horiz-adv-x="516" d="M0 0zM207 0v1462h102v-1462h-102zM-32 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Ï" horiz-adv-x="516" d="M5 0zM207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="Ð" horiz-adv-x="1466" d="M1317 745q0 -368 -193 -556.5t-567 -188.5h-350v678h-160v94h160v690h395q350 0 532.5 -183t182.5 -534zM1206 741q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588h242q655 0 655 651z" />
+<glyph unicode="Ñ" horiz-adv-x="1477" d="M207 0zM1270 0h-103l-866 1298h-8q12 -232 12 -350v-948h-98v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462zM897 1581q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59 q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="Ò" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM885 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="Ó" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Ô" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Õ" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM940 1581q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="Ö" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="×" d="M584 780l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408l-407 407l57 58z" />
+<glyph unicode="Ø" horiz-adv-x="1565" d="M1436 733q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570zM1325 733q0 315 -139 486l-742 -1037q133 -106 338 -106 q264 0 403.5 170t139.5 487zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="Ù" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM833 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="Ú" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM633 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Û" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM444 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Ü" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66 t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="Ý" horiz-adv-x="1081" d="M0 0zM543 662l428 800h110l-487 -897v-565h-105v557l-489 905h117zM434 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Þ" horiz-adv-x="1198" d="M1087 778q0 -212 -144 -325t-408 -113h-226v-340h-102v1462h102v-264h256q522 0 522 -420zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="ß" horiz-adv-x="1194" d="M961 1284q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5 q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5z" />
+<glyph unicode="à" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM638 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="á" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM422 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="â" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM251 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="ã" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM697 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5 h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="ä" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="å" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM759 1456q0 -97 -60 -155t-157 -58t-157 58t-60 155q0 94 60 152.5t157 58.5t157 -59t60 -152zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="æ" horiz-adv-x="1731" d="M1243 -20q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715 q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14zM434 70q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5q0 -102 61 -158.5t170 -56.5zM1217 1020q-284 0 -314 -402h604q0 188 -77.5 295t-212.5 107z" />
+<glyph unicode="ç" horiz-adv-x="973" d="M119 0zM616 -20q-233 0 -365 147t-132 410q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51zM723 -291q0 -100 -67.5 -150.5t-188.5 -50.5 q-68 0 -94 11v88q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174z" />
+<glyph unicode="è" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM685 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="é" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM452 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="ê" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM290 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="ë" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ì" horiz-adv-x="463" d="M0 0zM281 0h-99v1087h99v-1087zM349 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="í" horiz-adv-x="463" d="M107 0zM281 0h-99v1087h99v-1087zM107 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="î" horiz-adv-x="463" d="M0 0zM281 0h-99v1087h99v-1087zM-58 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="ï" horiz-adv-x="463" d="M0 0zM281 0h-99v1087h99v-1087zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ð" horiz-adv-x="1174" d="M1055 559q0 -276 -124 -427.5t-349 -151.5q-214 0 -339.5 130t-125.5 361q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121 q154 -151 230.5 -353t76.5 -431zM950 557q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364z" />
+<glyph unicode="ñ" horiz-adv-x="1208" d="M182 0zM940 0v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98zM779 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5 t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="ò" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM718 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="ó" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM499 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="ô" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM309 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="õ" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM761 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="ö" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="÷" d="M111 682v82h948v-82h-948zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="ø" horiz-adv-x="1200" d="M1081 545q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM977 545q0 190 -72 309l-543 -702q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5z" />
+<glyph unicode="ù" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM687 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="ú" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM495 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="û" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM313 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70 v16z" />
+<glyph unicode="ü" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86 t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ý" horiz-adv-x="940" d="M0 0zM0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1257q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="þ" horiz-adv-x="1219" d="M281 918q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99v2048h99v-391l-7 -247h7zM645 68q167 0 258.5 124t91.5 347q0 479 -348 479q-193 0 -279.5 -105t-86.5 -354v-18 q0 -255 85.5 -364t278.5 -109z" />
+<glyph unicode="ÿ" horiz-adv-x="940" d="M0 0zM0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ı" horiz-adv-x="463" d="M281 0h-99v1087h99v-1087z" />
+<glyph unicode="Œ" horiz-adv-x="1839" d="M1714 0h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94zM782 80q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5q0 -315 140.5 -484t401.5 -169z" />
+<glyph unicode="œ" horiz-adv-x="1942" d="M1438 -20q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197t-252 -69q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56 v-90q-92 -40 -170 -54.5t-172 -14.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1409 1020q-155 0 -242 -104t-102 -298h653q0 189 -82 295.5t-227 106.5z" />
+<glyph unicode="Ÿ" horiz-adv-x="1081" d="M0 0zM543 662l428 800h110l-487 -897v-565h-105v557l-489 905h117zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ˆ" horiz-adv-x="1182" d="M299 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M805 1456q0 -97 -60 -155t-157 -58t-157 58t-60 155q0 94 60 152.5t157 58.5t157 -59t60 -152zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="˜" horiz-adv-x="1182" d="M780 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
+<glyph unicode="‘" horiz-adv-x="297" d="M41 961l-12 20q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="’" horiz-adv-x="297" d="M256 1462l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117z" />
+<glyph unicode="‚" horiz-adv-x="451" d="M68 0zM295 238l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117z" />
+<glyph unicode="“" horiz-adv-x="614" d="M358 961l-12 20q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117zM41 961l-12 20q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="”" horiz-adv-x="614" d="M256 1462l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117zM573 1462l13 -20q-36 -128 -85 -261t-89 -220h-66q30 98 63 248.5t48 252.5h116z" />
+<glyph unicode="„" horiz-adv-x="768" d="M68 0zM295 238l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117zM612 238l13 -20q-36 -128 -85 -261t-89 -220h-66q30 98 63 248.5t48 252.5h116z" />
+<glyph unicode="•" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
+<glyph unicode="…" horiz-adv-x="1466" d="M162 0zM162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="524" d="M82 543l309 393l62 -43l-254 -363l254 -362l-62 -43l-309 391v27z" />
+<glyph unicode="›" horiz-adv-x="524" d="M442 518l-309 -393l-61 43l254 362l-254 363l61 43l309 -391v-27z" />
+<glyph unicode="⁄" horiz-adv-x="246" d="M573 1462l-811 -1462h-94l811 1462h94z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="688" d="M657 827h-129v-241h-90v241h-413v60l407 581h96v-563h129v-78zM438 905v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5h309z" />
+<glyph unicode="€" d="M803 1397q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180v82h172q-4 38 -4 113l4 102h-172v82h184 q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72z" />
+<glyph unicode="™" horiz-adv-x="1485" d="M313 741h-86v643h-217v78h522v-78h-219v-643zM913 741l-221 609h-6l4 -201v-408h-82v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74z" />
+<glyph unicode="−" d="M111 682v82h948v-82h-948z" />
+<glyph unicode="" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph horiz-adv-x="1219" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.ttf
new file mode 100755
index 0000000..63af664
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.woff
new file mode 100755
index 0000000..e786074
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Light-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.eot
new file mode 100755
index 0000000..6bbc3cf
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.svg
new file mode 100755
index 0000000..25a3952
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.svg
@@ -0,0 +1,1831 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansregular" horiz-adv-x="1171" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1212" d="M29 0zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1036 0h-166v1096h166v-1096zM856 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5 q-42 0 -70 27.5t-28 83.5z" />
+<glyph unicode="fl" horiz-adv-x="1212" d="M29 0zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1036 0h-166v1556h166v-1556z" />
+<glyph unicode="ffi" horiz-adv-x="1909" d="M29 0zM1358 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31 q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1731 0h-166v1096h166v-1096zM1551 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+<glyph unicode="ffl" horiz-adv-x="1909" d="M29 0zM1358 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31 q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1731 0h-166v1556h166v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="547" d="M326 403h-105l-51 1059h207zM152 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z" />
+<glyph unicode=""" horiz-adv-x="821" d="M319 1462l-40 -528h-105l-41 528h186zM688 1462l-41 -528h-104l-41 528h186z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M981 899l-66 -340h283v-129h-307l-84 -430h-137l84 430h-303l-82 -430h-136l80 430h-262v129h287l68 340h-277v127h299l82 436h139l-82 -436h305l84 436h134l-84 -436h264v-127h-289zM475 559h303l66 340h-303z" />
+<glyph unicode="$" d="M1036 449q0 -136 -102 -224.5t-285 -111.5v-232h-129v223q-112 0 -217 17.5t-172 48.5v156q83 -37 191.5 -60.5t197.5 -23.5v440q-205 65 -287.5 151t-82.5 222q0 131 101.5 215t268.5 102v182h129v-180q184 -5 355 -74l-52 -131q-149 59 -303 70v-434q157 -50 235 -97.5 t115 -109t37 -149.5zM866 436q0 72 -44.5 116.5t-172.5 88.5v-389q217 30 217 184zM319 1057q0 -76 45 -122t156 -87v387q-99 -16 -150 -62.5t-51 -115.5z" />
+<glyph unicode="%" horiz-adv-x="1686" d="M242 1026q0 -170 37 -255t120 -85q164 0 164 340q0 338 -164 338q-83 0 -120 -84t-37 -254zM700 1026q0 -228 -76.5 -344.5t-224.5 -116.5q-140 0 -217.5 119t-77.5 342q0 227 74.5 342t220.5 115q145 0 223 -119t78 -338zM1122 440q0 -171 37 -255.5t121 -84.5t124 83.5 t40 256.5q0 171 -40 253.5t-124 82.5t-121 -82.5t-37 -253.5zM1581 440q0 -227 -76.5 -343.5t-224.5 -116.5q-142 0 -218.5 119t-76.5 341q0 227 74.5 342t220.5 115q142 0 221.5 -117.5t79.5 -339.5zM1323 1462l-811 -1462h-147l811 1462h147z" />
+<glyph unicode="&" horiz-adv-x="1495" d="M414 1171q0 -69 36 -131.5t123 -150.5q129 75 179.5 138.5t50.5 146.5q0 77 -51.5 125.5t-137.5 48.5q-89 0 -144.5 -48t-55.5 -129zM569 129q241 0 400 154l-437 424q-111 -68 -157 -112.5t-68 -95.5t-22 -116q0 -117 77.5 -185.5t206.5 -68.5zM113 379q0 130 69.5 230 t249.5 202q-85 95 -115.5 144t-48.5 102t-18 110q0 150 98 234t273 84q162 0 255 -83.5t93 -232.5q0 -107 -68 -197.5t-225 -183.5l407 -391q56 62 89.5 145.5t56.5 182.5h168q-68 -286 -205 -434l299 -291h-229l-185 178q-118 -106 -240 -152t-272 -46q-215 0 -333.5 106 t-118.5 293z" />
+<glyph unicode="'" horiz-adv-x="453" d="M319 1462l-40 -528h-105l-41 528h186z" />
+<glyph unicode="(" horiz-adv-x="606" d="M82 561q0 265 77.5 496t223.5 405h162q-144 -193 -216.5 -424t-72.5 -475q0 -240 74 -469t213 -418h-160q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="606" d="M524 561q0 -263 -77.5 -490t-223.5 -395h-160q139 188 213 417.5t74 469.5q0 244 -72.5 475t-216.5 424h162q147 -175 224 -406.5t77 -494.5z" />
+<glyph unicode="*" horiz-adv-x="1130" d="M657 1556l-43 -395l398 111l26 -182l-381 -31l248 -326l-172 -94l-176 362l-160 -362l-176 94l242 326l-377 31l29 182l391 -111l-43 395h194z" />
+<glyph unicode="+" d="M653 791h412v-138h-412v-426h-139v426h-410v138h410v428h139v-428z" />
+<glyph unicode="," horiz-adv-x="502" d="M350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182z" />
+<glyph unicode="-" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="." horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+<glyph unicode="/" horiz-adv-x="752" d="M731 1462l-545 -1462h-166l545 1462h166z" />
+<glyph unicode="0" d="M1069 733q0 -379 -119.5 -566t-365.5 -187q-236 0 -359 191.5t-123 561.5q0 382 119 567t363 185q238 0 361.5 -193t123.5 -559zM270 733q0 -319 75 -464.5t239 -145.5q166 0 240.5 147.5t74.5 462.5t-74.5 461.5t-240.5 146.5q-164 0 -239 -144.5t-75 -463.5z" />
+<glyph unicode="1" d="M715 0h-162v1042q0 130 8 246q-21 -21 -47 -44t-238 -195l-88 114l387 299h140v-1462z" />
+<glyph unicode="2" d="M1061 0h-961v143l385 387q176 178 232 254t84 148t28 155q0 117 -71 185.5t-197 68.5q-91 0 -172.5 -30t-181.5 -109l-88 113q202 168 440 168q206 0 323 -105.5t117 -283.5q0 -139 -78 -275t-292 -344l-320 -313v-8h752v-154z" />
+<glyph unicode="3" d="M1006 1118q0 -140 -78.5 -229t-222.5 -119v-8q176 -22 261 -112t85 -236q0 -209 -145 -321.5t-412 -112.5q-116 0 -212.5 17.5t-187.5 61.5v158q95 -47 202.5 -71.5t203.5 -24.5q379 0 379 297q0 266 -418 266h-144v143h146q171 0 271 75.5t100 209.5q0 107 -73.5 168 t-199.5 61q-96 0 -181 -26t-194 -96l-84 112q90 71 207.5 111.5t247.5 40.5q213 0 331 -97.5t118 -267.5z" />
+<glyph unicode="4" d="M1130 336h-217v-336h-159v336h-711v145l694 989h176v-983h217v-151zM754 487v486q0 143 10 323h-8q-48 -96 -90 -159l-457 -650h545z" />
+<glyph unicode="5" d="M557 893q231 0 363.5 -114.5t132.5 -313.5q0 -227 -144.5 -356t-398.5 -129q-247 0 -377 79v160q70 -45 174 -70.5t205 -25.5q176 0 273.5 83t97.5 240q0 306 -375 306q-95 0 -254 -29l-86 55l55 684h727v-153h-585l-37 -439q115 23 229 23z" />
+<glyph unicode="6" d="M117 625q0 431 167.5 644.5t495.5 213.5q113 0 178 -19v-143q-77 25 -176 25q-235 0 -359 -146.5t-136 -460.5h12q110 172 348 172q197 0 310.5 -119t113.5 -323q0 -228 -124.5 -358.5t-336.5 -130.5q-227 0 -360 170.5t-133 474.5zM608 121q142 0 220.5 89.5t78.5 258.5 q0 145 -73 228t-218 83q-90 0 -165 -37t-119.5 -102t-44.5 -135q0 -103 40 -192t113.5 -141t167.5 -52z" />
+<glyph unicode="7" d="M285 0l606 1309h-797v153h973v-133l-598 -1329h-184z" />
+<glyph unicode="8" d="M584 1483q200 0 317 -93t117 -257q0 -108 -67 -197t-214 -162q178 -85 253 -178.5t75 -216.5q0 -182 -127 -290.5t-348 -108.5q-234 0 -360 102.5t-126 290.5q0 251 306 391q-138 78 -198 168.5t-60 202.5q0 159 117.5 253.5t314.5 94.5zM268 369q0 -120 83.5 -187 t234.5 -67q149 0 232 70t83 192q0 97 -78 172.5t-272 146.5q-149 -64 -216 -141.5t-67 -185.5zM582 1348q-125 0 -196 -60t-71 -160q0 -92 59 -158t218 -132q143 60 202.5 129t59.5 161q0 101 -72.5 160.5t-199.5 59.5z" />
+<glyph unicode="9" d="M1061 838q0 -858 -664 -858q-116 0 -184 20v143q80 -26 182 -26q240 0 362.5 148.5t133.5 455.5h-12q-55 -83 -146 -126.5t-205 -43.5q-194 0 -308 116t-114 324q0 228 127.5 360t335.5 132q149 0 260.5 -76.5t171.5 -223t60 -345.5zM569 1341q-143 0 -221 -92t-78 -256 q0 -144 72 -226.5t219 -82.5q91 0 167.5 37t120.5 101t44 134q0 105 -41 194t-114.5 140t-168.5 51z" />
+<glyph unicode=":" horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM152 989q0 135 118 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+<glyph unicode=";" horiz-adv-x="545" d="M350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182zM147 989q0 135 119 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-58 0 -88.5 35t-30.5 100z" />
+<glyph unicode="<" d="M1065 242l-961 422v98l961 479v-149l-782 -371l782 -328v-151z" />
+<glyph unicode="=" d="M119 858v137h930v-137h-930zM119 449v137h930v-137h-930z" />
+<glyph unicode=">" d="M104 393l783 326l-783 373v149l961 -479v-98l-961 -422v151z" />
+<glyph unicode="?" horiz-adv-x="879" d="M289 403v54q0 117 36 192.5t134 159.5q136 115 171.5 173t35.5 140q0 102 -65.5 157.5t-188.5 55.5q-79 0 -154 -18.5t-172 -67.5l-59 135q189 99 395 99q191 0 297 -94t106 -265q0 -73 -19.5 -128.5t-57.5 -105t-164 -159.5q-101 -86 -133.5 -143t-32.5 -152v-33h-129z M240 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z" />
+<glyph unicode="@" horiz-adv-x="1841" d="M1720 729q0 -142 -44 -260t-124 -183t-184 -65q-86 0 -145 52t-70 133h-8q-40 -87 -114.5 -136t-176.5 -49q-150 0 -234.5 102.5t-84.5 278.5q0 204 118 331.5t310 127.5q68 0 154 -12.5t155 -34.5l-25 -470v-22q0 -178 133 -178q91 0 148 107.5t57 279.5q0 181 -74 317 t-210.5 209.5t-313.5 73.5q-223 0 -388 -92.5t-252 -264t-87 -396.5q0 -305 161 -469t464 -164q210 0 436 86v-133q-192 -84 -436 -84q-363 0 -563.5 199.5t-200.5 557.5q0 260 107 463t305 314.5t454 111.5q215 0 382.5 -90.5t259 -257t91.5 -383.5zM686 598 q0 -254 195 -254q207 0 225 313l14 261q-72 20 -157 20q-130 0 -203.5 -90t-73.5 -250z" />
+<glyph unicode="A" horiz-adv-x="1296" d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473z" />
+<glyph unicode="B" horiz-adv-x="1327" d="M201 1462h413q291 0 421 -87t130 -275q0 -130 -72.5 -214.5t-211.5 -109.5v-10q333 -57 333 -350q0 -196 -132.5 -306t-370.5 -110h-510v1462zM371 836h280q180 0 259 56.5t79 190.5q0 123 -88 177.5t-280 54.5h-250v-479zM371 692v-547h305q177 0 266.5 68.5t89.5 214.5 q0 136 -91.5 200t-278.5 64h-291z" />
+<glyph unicode="C" horiz-adv-x="1292" d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78z" />
+<glyph unicode="D" horiz-adv-x="1493" d="M1368 745q0 -362 -196.5 -553.5t-565.5 -191.5h-405v1462h448q341 0 530 -189t189 -528zM1188 739q0 286 -143.5 431t-426.5 145h-247v-1168h207q304 0 457 149.5t153 442.5z" />
+<glyph unicode="E" horiz-adv-x="1139" d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152z" />
+<glyph unicode="F" horiz-adv-x="1057" d="M371 0h-170v1462h815v-151h-645v-535h606v-151h-606v-625z" />
+<glyph unicode="G" horiz-adv-x="1491" d="M844 766h497v-711q-116 -37 -236 -56t-278 -19q-332 0 -517 197.5t-185 553.5q0 228 91.5 399.5t263.5 262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 -441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152z" />
+<glyph unicode="H" horiz-adv-x="1511" d="M1311 0h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1462z" />
+<glyph unicode="I" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170z" />
+<glyph unicode="J" horiz-adv-x="547" d="M-12 -385q-94 0 -148 27v145q71 -20 148 -20q99 0 150.5 60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5z" />
+<glyph unicode="K" horiz-adv-x="1257" d="M1257 0h-200l-533 709l-153 -136v-573h-170v1462h170v-725l663 725h201l-588 -635z" />
+<glyph unicode="L" horiz-adv-x="1063" d="M201 0v1462h170v-1308h645v-154h-815z" />
+<glyph unicode="M" horiz-adv-x="1849" d="M848 0l-496 1296h-8q14 -154 14 -366v-930h-157v1462h256l463 -1206h8l467 1206h254v-1462h-170v942q0 162 14 352h-8l-500 -1294h-137z" />
+<glyph unicode="N" horiz-adv-x="1544" d="M1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462z" />
+<glyph unicode="O" horiz-adv-x="1595" d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5z" />
+<glyph unicode="P" horiz-adv-x="1233" d="M1128 1036q0 -222 -151.5 -341.5t-433.5 -119.5h-172v-575h-170v1462h379q548 0 548 -426zM371 721h153q226 0 327 73t101 234q0 145 -95 216t-296 71h-190v-594z" />
+<glyph unicode="Q" horiz-adv-x="1595" d="M1470 733q0 -281 -113 -467t-319 -252l348 -362h-247l-285 330l-55 -2q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5 q-243 0 -369.5 -153.5t-126.5 -446.5z" />
+<glyph unicode="R" horiz-adv-x="1266" d="M371 608v-608h-170v1462h401q269 0 397.5 -103t128.5 -310q0 -290 -294 -392l397 -657h-201l-354 608h-305zM371 754h233q180 0 264 71.5t84 214.5q0 145 -85.5 209t-274.5 64h-221v-559z" />
+<glyph unicode="S" horiz-adv-x="1124" d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58 t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244z" />
+<glyph unicode="T" horiz-adv-x="1133" d="M651 0h-170v1311h-463v151h1096v-151h-463v-1311z" />
+<glyph unicode="U" horiz-adv-x="1491" d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170z" />
+<glyph unicode="V" horiz-adv-x="1219" d="M1036 1462h183l-527 -1462h-168l-524 1462h180l336 -946q58 -163 92 -317q36 162 94 323z" />
+<glyph unicode="W" horiz-adv-x="1896" d="M1477 0h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 -973h-168l-389 1462h180l231 -903q48 -190 70 -344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 901h180z" />
+<glyph unicode="X" horiz-adv-x="1182" d="M1174 0h-193l-393 643l-400 -643h-180l486 764l-453 698h188l363 -579l366 579h181l-453 -692z" />
+<glyph unicode="Y" horiz-adv-x="1147" d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186z" />
+<glyph unicode="Z" horiz-adv-x="1169" d="M1087 0h-1005v133l776 1176h-752v153h959v-133l-776 -1175h798v-154z" />
+<glyph unicode="[" horiz-adv-x="674" d="M623 -324h-457v1786h457v-141h-289v-1503h289v-142z" />
+<glyph unicode="\" horiz-adv-x="752" d="M186 1462l547 -1462h-166l-544 1462h163z" />
+<glyph unicode="]" horiz-adv-x="674" d="M51 -182h289v1503h-289v141h457v-1786h-457v142z" />
+<glyph unicode="^" horiz-adv-x="1110" d="M49 551l434 922h99l477 -922h-152l-372 745l-334 -745h-152z" />
+<glyph unicode="_" horiz-adv-x="918" d="M922 -315h-926v131h926v-131z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M786 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="a" horiz-adv-x="1139" d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238 v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47z" />
+<glyph unicode="b" horiz-adv-x="1255" d="M686 1114q216 0 335.5 -147.5t119.5 -417.5t-120.5 -419.5t-334.5 -149.5q-107 0 -195.5 39.5t-148.5 121.5h-12l-35 -141h-119v1556h166v-378q0 -127 -8 -228h8q116 164 344 164zM662 975q-170 0 -245 -97.5t-75 -328.5t77 -330.5t247 -99.5q153 0 228 111.5t75 320.5 q0 214 -75 319t-232 105z" />
+<glyph unicode="c" horiz-adv-x="975" d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57z" />
+<glyph unicode="d" horiz-adv-x="1255" d="M922 147h-9q-115 -167 -344 -167q-215 0 -334.5 147t-119.5 418t120 421t334 150q223 0 342 -162h13l-7 79l-4 77v446h166v-1556h-135zM590 119q170 0 246.5 92.5t76.5 298.5v35q0 233 -77.5 332.5t-247.5 99.5q-146 0 -223.5 -113.5t-77.5 -320.5q0 -210 77 -317 t226 -107z" />
+<glyph unicode="e" horiz-adv-x="1149" d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z " />
+<glyph unicode="f" horiz-adv-x="694" d="M670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129z" />
+<glyph unicode="g" horiz-adv-x="1122" d="M1073 1096v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 -110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141q0 -45 37 -66.5t127 -21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 80t-116.5 226q0 100 64 173t180 99 q-42 19 -70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 277.5t306 97.5q86 0 155 -20h379zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 -55 123.5t-207 34.5h-199q-113 0 -176 -54t-63 -155zM289 745q0 -115 65 -174 t181 -59q243 0 243 236q0 247 -246 247q-117 0 -180 -63t-63 -187z" />
+<glyph unicode="h" horiz-adv-x="1257" d="M926 0v709q0 134 -61 200t-191 66q-173 0 -252.5 -94t-79.5 -308v-573h-166v1556h166v-471q0 -85 -8 -141h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 -303.5v-715h-166z" />
+<glyph unicode="i" horiz-adv-x="518" d="M342 0h-166v1096h166v-1096zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+<glyph unicode="j" horiz-adv-x="518" d="M43 -492q-95 0 -154 25v135q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+<glyph unicode="k" horiz-adv-x="1075" d="M340 561q43 61 131 160l354 375h197l-444 -467l475 -629h-201l-387 518l-125 -108v-410h-164v1556h164v-825q0 -55 -8 -170h8z" />
+<glyph unicode="l" horiz-adv-x="518" d="M342 0h-166v1556h166v-1556z" />
+<glyph unicode="m" horiz-adv-x="1905" d="M1573 0v713q0 131 -56 196.5t-174 65.5q-155 0 -229 -89t-74 -274v-612h-166v713q0 131 -56 196.5t-175 65.5q-156 0 -228.5 -93.5t-72.5 -306.5v-575h-166v1096h135l27 -150h8q47 80 132.5 125t191.5 45q257 0 336 -186h8q49 86 142 136t212 50q186 0 278.5 -95.5 t92.5 -305.5v-715h-166z" />
+<glyph unicode="n" horiz-adv-x="1257" d="M926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166z" />
+<glyph unicode="o" horiz-adv-x="1237" d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z" />
+<glyph unicode="p" horiz-adv-x="1255" d="M686 -20q-107 0 -195.5 39.5t-148.5 121.5h-12q12 -96 12 -182v-451h-166v1588h135l23 -150h8q64 90 149 130t195 40q218 0 336.5 -149t118.5 -418q0 -270 -120.5 -419.5t-334.5 -149.5zM662 975q-168 0 -243 -93t-77 -296v-37q0 -231 77 -330.5t247 -99.5 q142 0 222.5 115t80.5 317q0 205 -80.5 314.5t-226.5 109.5z" />
+<glyph unicode="q" horiz-adv-x="1255" d="M590 119q166 0 242 89t81 300v37q0 230 -78 331t-247 101q-146 0 -223.5 -113.5t-77.5 -320.5t76.5 -315.5t226.5 -108.5zM565 -20q-212 0 -331 149t-119 416q0 269 120 420t334 151q225 0 346 -170h9l24 150h131v-1588h-166v469q0 100 11 170h-13q-115 -167 -346 -167z " />
+<glyph unicode="r" horiz-adv-x="836" d="M676 1116q73 0 131 -12l-23 -154q-68 15 -120 15q-133 0 -227.5 -108t-94.5 -269v-588h-166v1096h137l19 -203h8q61 107 147 165t189 58z" />
+<glyph unicode="s" horiz-adv-x="977" d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68 q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181z" />
+<glyph unicode="t" horiz-adv-x="723" d="M530 117q44 0 85 6.5t65 13.5v-127q-27 -13 -79.5 -21.5t-94.5 -8.5q-318 0 -318 335v652h-157v80l157 69l70 234h96v-254h318v-129h-318v-645q0 -99 47 -152t129 -53z" />
+<glyph unicode="u" horiz-adv-x="1257" d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168z" />
+<glyph unicode="v" horiz-adv-x="1026" d="M416 0l-416 1096h178l236 -650q80 -228 94 -296h8q11 53 69.5 219.5t262.5 726.5h178l-416 -1096h-194z" />
+<glyph unicode="w" horiz-adv-x="1593" d="M1071 0l-201 643q-19 59 -71 268h-8q-40 -175 -70 -270l-207 -641h-192l-299 1096h174q106 -413 161.5 -629t63.5 -291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 21.5 111t208.5 807h172l-303 -1096h-197z" />
+<glyph unicode="x" horiz-adv-x="1073" d="M440 561l-381 535h189l289 -420l288 420h187l-381 -535l401 -561h-188l-307 444l-310 -444h-188z" />
+<glyph unicode="y" horiz-adv-x="1032" d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156z" />
+<glyph unicode="z" horiz-adv-x="958" d="M877 0h-795v113l598 854h-561v129h743v-129l-590 -838h605v-129z" />
+<glyph unicode="{" horiz-adv-x="776" d="M475 12q0 -102 58.5 -148t171.5 -48v-140q-190 2 -294 87t-104 239v303q0 104 -63 148.5t-183 44.5v141q130 2 188 48t58 142v306q0 155 108 241t290 86v-139q-230 -6 -230 -199v-295q0 -215 -223 -254v-12q223 -39 223 -254v-297z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M494 1556h141v-2052h-141v2052z" />
+<glyph unicode="}" horiz-adv-x="776" d="M522 575q-223 39 -223 254v295q0 193 -227 199v139q184 0 289.5 -87t105.5 -240v-306q0 -97 59 -142.5t189 -47.5v-141q-122 0 -185 -44.5t-63 -148.5v-303q0 -153 -102.5 -238.5t-292.5 -87.5v140q111 2 169 48t58 148v297q0 114 55 174t168 80v12z" />
+<glyph unicode="~" d="M338 713q-53 0 -116.5 -33.5t-117.5 -87.5v151q100 109 244 109q68 0 124.5 -14t145.5 -52q66 -28 115 -41.5t96 -13.5q54 0 118 32t118 89v-150q-102 -110 -244 -110q-72 0 -135 16.5t-135 48.5q-75 32 -120 44t-93 12z" />
+<glyph unicode="¡" horiz-adv-x="547" d="M219 684h105l51 -1057h-207zM393 983q0 -135 -121 -135q-60 0 -90 35.5t-30 99.5q0 63 31.5 99t88.5 36q51 0 86 -32t35 -103z" />
+<glyph unicode="¢" d="M971 240q-105 -54 -252 -60v-200h-133v206q-203 32 -299.5 168.5t-96.5 386.5q0 508 396 570v172h135v-164q75 -3 146 -19.5t120 -39.5l-49 -140q-133 51 -242 51q-172 0 -253 -105.5t-81 -322.5q0 -212 79.5 -313.5t246.5 -101.5q141 0 283 59v-147z" />
+<glyph unicode="£" d="M682 1481q190 0 360 -84l-61 -133q-154 77 -297 77q-123 0 -185.5 -62t-62.5 -202v-295h422v-127h-422v-221q0 -100 -32.5 -168t-106.5 -112h795v-154h-1029v141q205 47 205 291v223h-198v127h198v316q0 178 112 280.5t302 102.5z" />
+<glyph unicode="¤" d="M184 723q0 122 74 229l-135 140l94 92l135 -133q104 73 234 73q127 0 229 -73l137 133l95 -92l-134 -138q74 -113 74 -231q0 -131 -74 -234l131 -135l-92 -92l-137 133q-102 -71 -229 -71q-134 0 -234 73l-135 -133l-92 92l133 136q-74 107 -74 231zM313 723 q0 -112 78.5 -192t194.5 -80t195 79.5t79 192.5q0 114 -80 195t-194 81q-116 0 -194.5 -82t-78.5 -194z" />
+<glyph unicode="¥" d="M584 735l379 727h174l-416 -770h262v-127h-317v-170h317v-127h-317v-268h-164v268h-316v127h316v170h-316v127h256l-411 770h178z" />
+<glyph unicode="¦" horiz-adv-x="1128" d="M494 1556h141v-776h-141v776zM494 281h141v-777h-141v777z" />
+<glyph unicode="§" horiz-adv-x="1057" d="M139 809q0 86 43 154.5t121 105.5q-74 40 -116 95.5t-42 140.5q0 121 103.5 190.5t300.5 69.5q94 0 173.5 -14.5t176.5 -53.5l-53 -131q-98 39 -165.5 52.5t-143.5 13.5q-116 0 -174 -29.5t-58 -93.5q0 -60 61.5 -102t215.5 -97q186 -68 261 -143.5t75 -182.5 q0 -90 -41 -160.5t-115 -111.5q153 -81 153 -227q0 -140 -117 -216.5t-329 -76.5q-218 0 -346 65v148q78 -37 175 -59.5t179 -22.5q134 0 204.5 38t70.5 109q0 46 -24 75t-78 58t-169 72q-142 52 -209 97t-100 102t-33 135zM285 829q0 -77 66 -129.5t233 -113.5l49 -19 q137 80 137 191q0 83 -73.5 139t-258.5 113q-68 -19 -110.5 -69t-42.5 -112z" />
+<glyph unicode="¨" horiz-adv-x="1182" d="M309 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM690 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M893 1059q-125 0 -192.5 -87t-67.5 -241q0 -168 63.5 -249t194.5 -81q86 0 211 45v-124q-48 -20 -98.5 -34t-120.5 -14q-194 0 -298 120.5t-104 336.5q0 209 110.5 332t301.5 123q128 0 246 -60l-58 -118q-108 51 -188 51zM100 731q0 200 100 375t275 276t377 101 q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87 t-236.5 -235.5t-87.5 -324.5z" />
+<glyph unicode="ª" horiz-adv-x="725" d="M532 801l-24 84q-92 -97 -232 -97q-95 0 -150.5 49.5t-55.5 151.5t77 154.5t242 58.5l117 4v39q0 133 -148 133q-100 0 -204 -51l-43 96q114 56 247 56q130 0 198.5 -52.5t68.5 -173.5v-452h-93zM193 989q0 -100 112 -100q201 0 201 180v49l-98 -4q-112 -4 -163.5 -32.5 t-51.5 -92.5z" />
+<glyph unicode="«" horiz-adv-x="1018" d="M82 551l342 407l119 -69l-289 -350l289 -351l-119 -71l-342 407v27zM477 551l344 407l117 -69l-287 -350l287 -351l-117 -71l-344 407v27z" />
+<glyph unicode="¬" d="M1065 791v-527h-137v389h-824v138h961z" />
+<glyph unicode="­" horiz-adv-x="659" d="M84 473zM84 473v152h491v-152h-491z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M723 762h108q80 0 128.5 41.5t48.5 105.5q0 75 -43 107.5t-136 32.5h-106v-287zM1157 913q0 -80 -42.5 -141.5t-119.5 -91.5l238 -395h-168l-207 354h-135v-354h-148v891h261q166 0 243.5 -65t77.5 -198zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5z " />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v127h1036v-127z" />
+<glyph unicode="°" horiz-adv-x="877" d="M127 1171q0 130 90.5 221t220.5 91t221 -90.5t91 -221.5q0 -84 -41 -155.5t-114 -113.5t-157 -42q-130 0 -220.5 90t-90.5 221zM242 1171q0 -82 58.5 -139t139.5 -57q80 0 137.5 56.5t57.5 139.5q0 84 -56.5 140.5t-138.5 56.5q-83 0 -140.5 -57t-57.5 -140z" />
+<glyph unicode="±" d="M104 1zM653 791h412v-138h-412v-426h-139v426h-410v138h410v428h139v-428zM104 1v138h961v-138h-961z" />
+<glyph unicode="²" horiz-adv-x="711" d="M653 586h-604v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88q131 111 283 111q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119z" />
+<glyph unicode="³" horiz-adv-x="711" d="M627 1255q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90 q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5z" />
+<glyph unicode="´" horiz-adv-x="1182" d="M393 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="µ" horiz-adv-x="1268" d="M342 381q0 -262 254 -262q171 0 250.5 94.5t79.5 306.5v576h166v-1096h-136l-26 147h-10q-111 -167 -340 -167q-150 0 -238 92h-10q10 -84 10 -244v-320h-166v1588h166v-715z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1120 -260h-114v1712h-213v-1712h-115v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h557v-1816z" />
+<glyph unicode="·" horiz-adv-x="545" d="M152 723q0 66 31 100.5t87 34.5q58 0 90.5 -34.5t32.5 -100.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+<glyph unicode="¸" horiz-adv-x="465" d="M436 -289q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+<glyph unicode="¹" horiz-adv-x="711" d="M338 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96z" />
+<glyph unicode="º" horiz-adv-x="768" d="M702 1135q0 -164 -85.5 -255.5t-235.5 -91.5q-146 0 -230.5 93t-84.5 254q0 163 84 253.5t235 90.5q152 0 234.5 -91t82.5 -253zM188 1135q0 -122 45.5 -183t149.5 -61q105 0 151 61t46 183q0 123 -46 182t-151 59q-103 0 -149 -59t-46 -182z" />
+<glyph unicode="»" horiz-adv-x="1018" d="M936 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27zM541 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27z" />
+<glyph unicode="¼" horiz-adv-x="1597" d="M75 0zM1298 1462l-903 -1462h-143l903 1462h143zM337 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96zM1489 203h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM1219 320v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45 t-26 -39.5l-168 -246h262z" />
+<glyph unicode="½" horiz-adv-x="1597" d="M46 0zM1230 1462l-903 -1462h-143l903 1462h143zM308 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96zM1499 1h-604v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88 q131 111 283 111q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119z" />
+<glyph unicode="¾" horiz-adv-x="1597" d="M26 0zM620 1255q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90 q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5zM1390 1462l-903 -1462h-143l903 1462h143zM1569 203h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM1299 320v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45t-26 -39.5l-168 -246h262z" />
+<glyph unicode="¿" horiz-adv-x="879" d="M590 684v-51q0 -122 -37.5 -196t-134.5 -158q-121 -106 -151.5 -143.5t-43 -76t-12.5 -94.5q0 -100 66 -156.5t188 -56.5q80 0 155 19t173 67l59 -135q-197 -96 -395 -96q-190 0 -298 93t-108 263q0 70 17.5 122.5t49.5 97t76.5 85.5t98.5 88q101 88 133.5 146t32.5 151 v31h131zM639 983q0 -135 -121 -135q-59 0 -90 34.5t-31 100.5q0 64 33 99.5t88 35.5q51 0 86 -32t35 -103z" />
+<glyph unicode="À" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM724 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="Á" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM526 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Â" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM303 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186 h-115v23z" />
+<glyph unicode="Ã" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM792 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5 q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="Ä" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM364 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5z M745 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="Å" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM870 1587q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5z M762 1585q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+<glyph unicode="Æ" horiz-adv-x="1788" d="M1665 0h-750v465h-514l-227 -465h-176l698 1462h969v-151h-580v-471h541v-150h-541v-538h580v-152zM469 618h446v693h-118z" />
+<glyph unicode="Ç" horiz-adv-x="1292" d="M125 0zM827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78zM950 -289q0 -97 -76.5 -150 t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+<glyph unicode="È" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM713 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="É" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM456 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Ê" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM263 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="Ë" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM327 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM708 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="Ì" horiz-adv-x="571" d="M5 0zM201 0v1462h170v-1462h-170zM398 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="Í" horiz-adv-x="571" d="M179 0zM201 0v1462h170v-1462h-170zM179 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Î" horiz-adv-x="571" d="M0 0zM201 0v1462h170v-1462h-170zM-57 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="Ï" horiz-adv-x="571" d="M5 0zM201 0v1462h170v-1462h-170zM5 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM386 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="Ð" horiz-adv-x="1479" d="M1352 745q0 -362 -196.5 -553.5t-565.5 -191.5h-389v649h-154v150h154v663h434q337 0 527 -187.5t190 -529.5zM1171 739q0 576 -569 576h-231v-516h379v-150h-379v-502h190q610 0 610 592z" />
+<glyph unicode="Ñ" horiz-adv-x="1544" d="M201 0zM1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462zM935 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41 t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="Ò" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM907 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM659 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Ô" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM448 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="Õ" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM942 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="Ö" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM522 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM903 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="×" d="M940 1176l96 -99l-352 -354l350 -352l-96 -99l-354 351l-348 -351l-101 99l350 352l-352 352l100 101l353 -355z" />
+<glyph unicode="Ø" horiz-adv-x="1595" d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-235 0 -383 100l-101 -141l-120 79l108 154q-178 198 -178 563q0 357 176 553.5t500 196.5q209 0 366 -94l97 135l120 -80l-106 -148q192 -202 192 -565zM1290 733q0 272 -110 426l-672 -948q115 -82 291 -82q243 0 367 153 t124 451zM305 733q0 -262 101 -416l669 943q-106 73 -274 73q-243 0 -369.5 -153.5t-126.5 -446.5z" />
+<glyph unicode="Ù" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM856 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM600 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Û" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM393 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186 q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="Ü" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM461 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5 t-26.5 74.5zM842 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="Ý" horiz-adv-x="1147" d="M0 0zM573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM442 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Þ" horiz-adv-x="1251" d="M1145 784q0 -227 -151.5 -346t-438.5 -119h-184v-319h-170v1462h170v-256h215q281 0 420 -103.5t139 -318.5zM371 465h168q226 0 327 71.5t101 235.5q0 149 -95 218t-297 69h-204v-594z" />
+<glyph unicode="ß" horiz-adv-x="1274" d="M1049 1266q0 -135 -143 -250q-88 -70 -116 -103.5t-28 -66.5q0 -32 13.5 -53t49 -49.5t113.5 -79.5q140 -95 191 -173.5t51 -179.5q0 -160 -97 -245.5t-276 -85.5q-188 0 -295 69v154q63 -39 141 -62.5t150 -23.5q215 0 215 182q0 75 -41.5 128.5t-151.5 123.5 q-127 82 -175 143.5t-48 145.5q0 63 34.5 116t105.5 106q75 57 107 102t32 98q0 80 -68 122.5t-195 42.5q-276 0 -276 -223v-1204h-166v1202q0 178 110 271.5t332 93.5q206 0 318.5 -78.5t112.5 -222.5z" />
+<glyph unicode="à" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM672 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="á" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM436 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="â" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM228 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="ã" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM721 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99 q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="ä" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM279 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM660 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75 q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="å" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM804 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5zM696 1456q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5 t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+<glyph unicode="æ" horiz-adv-x="1757" d="M94 303q0 161 124 250.5t378 97.5l184 6v68q0 129 -58 190.5t-177 61.5q-144 0 -307 -84l-52 127q74 41 173.5 67.5t197.5 26.5q130 0 212.5 -43.5t123.5 -138.5q53 88 138.5 136t195.5 48q192 0 308 -133.5t116 -355.5v-107h-701q8 -395 322 -395q91 0 169.5 17.5 t162.5 56.5v-148q-86 -38 -160.5 -54.5t-175.5 -16.5q-289 0 -414 233q-81 -127 -179.5 -180t-232.5 -53q-163 0 -255.5 85t-92.5 238zM268 301q0 -95 53.5 -139.5t141.5 -44.5q145 0 229 84.5t84 238.5v99l-158 -7q-186 -8 -268 -62.5t-82 -168.5zM1225 977 q-121 0 -190.5 -83t-80.5 -241h519q0 156 -64 240t-184 84z" />
+<glyph unicode="ç" horiz-adv-x="975" d="M115 0zM614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57zM762 -289q0 -97 -76.5 -150t-226.5 -53 q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+<glyph unicode="è" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM711 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="é" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM471 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="ê" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM259 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="ë" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM319 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM700 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ì" horiz-adv-x="518" d="M0 0zM342 0h-166v1096h166v-1096zM355 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="í" horiz-adv-x="518" d="M169 0zM342 0h-166v1096h166v-1096zM169 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="î" horiz-adv-x="518" d="M0 0zM342 0h-166v1096h166v-1096zM-77 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="ï" horiz-adv-x="518" d="M0 0zM342 0h-166v1096h166v-1096zM-20 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM361 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ð" horiz-adv-x="1221" d="M1122 563q0 -281 -130.5 -432t-377.5 -151q-222 0 -361.5 134.5t-139.5 360.5q0 230 131.5 361t351.5 131q226 0 326 -121l8 4q-57 214 -262 405l-271 -155l-73 108l233 133q-92 62 -186 111l69 117q156 -73 258 -148l238 138l76 -107l-207 -119q152 -143 234.5 -342 t82.5 -428zM954 512q0 147 -90 232t-246 85q-337 0 -337 -360q0 -167 87.5 -258.5t249.5 -91.5q175 0 255.5 100.5t80.5 292.5z" />
+<glyph unicode="ñ" horiz-adv-x="1257" d="M176 0zM926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166zM802 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98 q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="ò" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M742 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="ó" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M479 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="ô" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M282 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="õ" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M773 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="ö" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M336 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM717 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="÷" d="M104 653v138h961v-138h-961zM471 373q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5zM471 1071q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5z " />
+<glyph unicode="ø" horiz-adv-x="1237" d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-154 0 -266 69l-84 -117l-114 78l94 131q-129 152 -129 408q0 268 134 417.5t372 149.5q154 0 270 -76l84 119l117 -76l-97 -133q127 -152 127 -401zM287 549q0 -171 53 -273l465 646q-75 53 -189 53q-163 0 -246 -107 t-83 -319zM950 549q0 164 -51 264l-465 -643q71 -51 184 -51q163 0 247.5 109.5t84.5 320.5z" />
+<glyph unicode="ù" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM726 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="ú" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM506 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="û" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM286 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119 q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="ü" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM342 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5 q-37 0 -63.5 24.5t-26.5 74.5zM723 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ý" horiz-adv-x="1032" d="M2 0zM2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM411 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147 h-111v25z" />
+<glyph unicode="þ" horiz-adv-x="1255" d="M344 948q66 89 151 128.5t191 39.5q215 0 335 -150t120 -417q0 -268 -120.5 -418.5t-334.5 -150.5q-222 0 -344 161h-12l4 -34q8 -77 8 -140v-459h-166v2048h166v-466q0 -52 -6 -142h8zM664 975q-168 0 -244 -92t-78 -293v-41q0 -231 77 -330.5t247 -99.5q303 0 303 432 q0 215 -74 319.5t-231 104.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1032" d="M2 0zM2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM234 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM615 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ı" horiz-adv-x="518" d="M342 0h-166v1096h166v-1096z" />
+<glyph unicode="Œ" horiz-adv-x="1890" d="M1767 0h-768q-102 -20 -194 -20q-327 0 -503.5 196.5t-176.5 558.5q0 360 174 555t494 195q102 0 192 -23h782v-151h-589v-471h551v-150h-551v-538h589v-152zM811 1333q-249 0 -377.5 -152.5t-128.5 -447.5q0 -297 128.5 -450.5t375.5 -153.5q112 0 199 33v1141 q-87 30 -197 30z" />
+<glyph unicode="œ" horiz-adv-x="1929" d="M1430 -20q-293 0 -418 235q-62 -116 -166.5 -175.5t-241.5 -59.5q-223 0 -357 152.5t-134 416.5q0 265 131 415t366 150q131 0 233.5 -59.5t164.5 -173.5q58 112 154 172.5t222 60.5q201 0 320 -132.5t119 -358.5v-105h-729q8 -393 338 -393q94 0 174.5 17.5t167.5 56.5 v-148q-88 -39 -164 -55t-180 -16zM287 549q0 -211 76 -320.5t243 -109.5q163 0 239.5 106.5t76.5 315.5q0 221 -77.5 327.5t-242.5 106.5q-166 0 -240.5 -108t-74.5 -318zM1382 975q-127 0 -199.5 -82t-84.5 -240h544q0 158 -66 240t-194 82z" />
+<glyph unicode="Ÿ" horiz-adv-x="1147" d="M0 0zM573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM294 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM675 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ˆ" horiz-adv-x="1212" d="M268 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M813 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5zM705 1456q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+<glyph unicode="˜" horiz-adv-x="1212" d="M788 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M82 473v152h860v-152h-860z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M82 473v152h1884v-152h-1884z" />
+<glyph unicode="‘" horiz-adv-x="348" d="M37 961l-12 22q22 90 71 224t105 255h123q-66 -254 -103 -501h-184z" />
+<glyph unicode="’" horiz-adv-x="348" d="M309 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182z" />
+<glyph unicode="‚" horiz-adv-x="502" d="M63 0zM350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182z" />
+<glyph unicode="“" horiz-adv-x="717" d="M406 961l-15 22q56 215 178 479h123q-30 -115 -59.5 -259.5t-42.5 -241.5h-184zM37 961l-12 22q22 90 71 224t105 255h123q-66 -254 -103 -501h-184z" />
+<glyph unicode="”" horiz-adv-x="717" d="M309 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182zM678 1462l14 -22q-24 -91 -72 -224t-104 -255h-125q26 100 59 254t46 247h182z" />
+<glyph unicode="„" horiz-adv-x="829" d="M25 0zM309 238l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182zM678 238l14 -22q-24 -91 -72 -224t-104 -255h-125q26 100 59 254t46 247h182z" />
+<glyph unicode="•" horiz-adv-x="770" d="M164 748q0 121 56.5 184t164.5 63q105 0 163 -62t58 -185q0 -119 -57.5 -183.5t-163.5 -64.5q-107 0 -164 65.5t-57 182.5z" />
+<glyph unicode="…" horiz-adv-x="1606" d="M152 0zM152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM682 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM1213 106 q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="623" d="M82 551l342 407l119 -69l-289 -350l289 -351l-119 -71l-342 407v27z" />
+<glyph unicode="›" horiz-adv-x="623" d="M541 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27z" />
+<glyph unicode="⁄" horiz-adv-x="266" d="M655 1462l-903 -1462h-143l903 1462h143z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="711" d="M692 788h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM422 905v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45t-26 -39.5l-168 -246h262z" />
+<glyph unicode="€" horiz-adv-x="1208" d="M795 1333q-319 0 -398 -403h510v-129h-524l-2 -57v-64l2 -45h463v-129h-447q37 -180 138.5 -278.5t271.5 -98.5q156 0 309 66v-150q-146 -65 -317 -65q-237 0 -381.5 134.5t-190.5 391.5h-166v129h152l-2 42v44l2 80h-152v129h164q39 261 185 407t383 146q201 0 366 -97 l-71 -139q-166 86 -295 86z" />
+<glyph unicode="™" horiz-adv-x="1589" d="M369 741h-123v615h-209v106h543v-106h-211v-615zM969 741l-201 559h-8l6 -129v-430h-119v721h187l196 -559l203 559h180v-721h-127v420l6 137h-8l-211 -557h-104z" />
+<glyph unicode="−" d="M104 653v138h961v-138h-961z" />
+<glyph unicode="" horiz-adv-x="1095" d="M0 1095h1095v-1095h-1095v1095z" />
+<glyph horiz-adv-x="1255" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.ttf
new file mode 100755
index 0000000..c537f83
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.woff
new file mode 100755
index 0000000..e231183
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Regular-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.eot
new file mode 100755
index 0000000..0ab1db2
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.svg
new file mode 100755
index 0000000..7166ec1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sanssemibold_italic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1257" d="M0 0zM-76 -492q-90 0 -149 23v190q64 -20 114 -20q134 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 -178h-229l-223 -1053q-40 -189 -131 -278 t-238 -89zM1022 1378q0 68 39 110t110 42q53 0 86 -26.5t33 -80.5q0 -71 -40 -112t-105 -41q-53 0 -88 26t-35 82zM975 0h-236l236 1106h235z" />
+<glyph unicode="fl" horiz-adv-x="1257" d="M0 0zM-76 -492q-90 0 -149 23v190q64 -20 114 -20q134 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 -178h-229l-223 -1053q-40 -189 -131 -278 t-238 -89zM973 0h-234l330 1556h235z" />
+<glyph unicode="ffi" horiz-adv-x="1931" d="M-76 -492q-90 0 -149 23v190q64 -20 114 -20q133 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h438l23 96q44 197 133 281t256 84q117 0 213 -43l-62 -176 q-74 28 -135 28q-71 0 -111.5 -43t-62.5 -141l-18 -86h229l-39 -178h-227l-223 -1053q-43 -192 -133.5 -279.5t-235.5 -87.5q-95 0 -149 23v190q60 -20 114 -20q136 0 176 205l215 1022h-438l-223 -1053q-40 -189 -131 -278t-238 -89zM1649 0h-234l236 1106h233zM1698 1378 q0 68 39 110t108 42q54 0 86.5 -26.5t32.5 -80.5q0 -71 -39.5 -112t-105.5 -41q-51 0 -86 26t-35 82z" />
+<glyph unicode="ffl" horiz-adv-x="1931" d="M-76 -492q-90 0 -149 23v190q64 -20 114 -20q133 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h438l23 96q44 197 133 281t256 84q117 0 213 -43l-62 -176 q-74 28 -135 28q-71 0 -111.5 -43t-62.5 -141l-18 -86h229l-39 -178h-227l-223 -1053q-43 -192 -133.5 -279.5t-235.5 -87.5q-95 0 -149 23v190q60 -20 114 -20q136 0 176 205l215 1022h-438l-223 -1053q-40 -189 -131 -278t-238 -89zM1649 0h-236l332 1556h233z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="557" d="M336 444h-176l168 1018h272zM33 96q0 80 45.5 130t130.5 50q57 0 91 -32.5t34 -93.5q0 -79 -47 -128t-123 -49q-62 0 -96.5 33.5t-34.5 89.5z" />
+<glyph unicode=""" horiz-adv-x="858" d="M516 1462l-151 -528h-152l72 528h231zM893 1462l-152 -528h-153l74 528h231z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M1036 872l-84 -286h271l-15 -168h-303l-121 -418h-180l123 418h-248l-121 -418h-174l117 418h-250l17 168h280l84 286h-264l16 168h295l121 422h178l-121 -422h252l121 422h174l-121 -422h252l-14 -168h-285zM526 586h250l82 286h-250z" />
+<glyph unicode="$" d="M987 494q0 -172 -119.5 -277t-337.5 -125l-45 -211h-135l45 211q-197 13 -334 80v209q78 -42 179.5 -70t193.5 -30l84 387q-156 56 -223.5 138.5t-67.5 199.5q0 167 118.5 267.5t324.5 117.5l37 163h135l-35 -165q161 -16 289 -82l-86 -185q-134 66 -244 74l-80 -371 q128 -51 186.5 -95t86.5 -101t28 -135zM571 285q86 11 136.5 60t50.5 126q0 101 -115 145zM629 1196q-89 -11 -133.5 -57.5t-44.5 -122.5q0 -98 110 -139z" />
+<glyph unicode="%" horiz-adv-x="1688" d="M530 1315q-55 0 -99 -61t-70.5 -173t-26.5 -215q0 -135 80 -135q52 0 95.5 58t73 175.5t29.5 219.5q0 131 -82 131zM805 1186q0 -160 -55.5 -313.5t-146.5 -230.5t-206 -77q-124 0 -190 79t-66 228q0 166 53 313.5t142.5 222.5t208.5 75q127 0 193.5 -76t66.5 -221z M1511 1462l-1085 -1462h-195l1086 1462h194zM1329 731q-52 0 -95.5 -57.5t-72 -171t-28.5 -221.5q0 -134 81 -134q52 0 96 58.5t73.5 174.5t29.5 220q0 131 -84 131zM1606 604q0 -161 -55.5 -315.5t-146.5 -231.5t-204 -77q-127 0 -193.5 76.5t-66.5 222.5q0 171 53 320 t142.5 223.5t207.5 74.5q127 0 195 -75t68 -218z" />
+<glyph unicode="&" horiz-adv-x="1411" d="M748 1298q-87 0 -134 -54t-47 -142q0 -109 62 -201q147 75 199.5 133.5t52.5 126.5q0 66 -36 101.5t-97 35.5zM508 176q77 0 147 27t144 82l-264 381q-133 -74 -181.5 -141.5t-48.5 -153.5t56 -140.5t147 -54.5zM66 350q0 147 85.5 254t286.5 205q-88 151 -88 283 q0 180 112.5 286.5t297.5 106.5q160 0 252 -81t92 -218q0 -129 -89.5 -230t-293.5 -192l235 -326q109 112 181 295h233q-113 -270 -297 -454l205 -279h-277l-94 131q-106 -80 -211 -115.5t-229 -35.5q-190 0 -295.5 97.5t-105.5 272.5z" />
+<glyph unicode="'" horiz-adv-x="483" d="M516 1462l-151 -528h-152l72 528h231z" />
+<glyph unicode="(" horiz-adv-x="639" d="M78 276q0 343 124.5 632.5t379.5 553.5h209q-498 -548 -498 -1190q0 -329 115 -596h-183q-147 261 -147 600z" />
+<glyph unicode=")" horiz-adv-x="639" d="M559 860q0 -342 -123 -629.5t-381 -554.5h-209q498 548 498 1190q0 327 -115 596h183q147 -265 147 -602z" />
+<glyph unicode="*" horiz-adv-x="1122" d="M868 1524l-116 -367l403 23l-12 -205l-367 45l170 -361l-205 -61l-102 371l-227 -312l-162 144l293 266l-350 100l71 195l354 -178l37 383z" />
+<glyph unicode="+" d="M496 631h-379v180h379v381h180v-381h377v-180h-377v-375h-180v375z" />
+<glyph unicode="," horiz-adv-x="530" d="M334 238l8 -23q-125 -260 -266 -479h-178q105 238 200 502h236z" />
+<glyph unicode="-" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="." horiz-adv-x="551" d="M33 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
+<glyph unicode="/" horiz-adv-x="788" d="M952 1462l-811 -1462h-233l811 1462h233z" />
+<glyph unicode="0" d="M1100 1012q0 -306 -79 -546.5t-219 -363t-325 -122.5q-194 0 -289.5 127.5t-95.5 363.5q0 284 83 526t222.5 365t321.5 123q187 0 284 -118.5t97 -354.5zM700 1288q-97 0 -180 -112t-136.5 -312.5t-53.5 -394.5q0 -143 39 -218t129 -75q100 0 182.5 113.5t132 316.5 t49.5 414q0 268 -162 268z" />
+<glyph unicode="1" d="M637 0h-238l189 870q28 150 82 324q-57 -55 -135 -102l-187 -117l-106 170l508 317h198z" />
+<glyph unicode="2" d="M911 0h-929l36 180l471 422q176 159 238.5 231t90.5 133.5t28 131.5q0 85 -49.5 134.5t-139.5 49.5q-70 0 -139 -30t-170 -109l-115 160q120 97 231 138.5t228 41.5q181 0 288 -93t107 -251q0 -108 -39 -201t-123 -190.5t-284 -268.5l-311 -264v-8h622z" />
+<glyph unicode="3" d="M1087 1153q0 -158 -99 -264t-269 -137v-7q127 -24 196.5 -106t69.5 -205q0 -133 -68 -236.5t-196.5 -160.5t-304.5 -57q-225 0 -385 79v215q84 -49 185.5 -75.5t195.5 -26.5q157 0 245 71.5t88 196.5q0 219 -278 219h-133l37 183h106q164 0 267.5 74.5t103.5 199.5 q0 79 -49.5 124.5t-139.5 45.5q-72 0 -146.5 -25.5t-162.5 -84.5l-104 161q120 81 225.5 113.5t226.5 32.5q183 0 286 -88.5t103 -241.5z" />
+<glyph unicode="4" d="M1047 317h-201l-68 -317h-229l69 317h-622l37 197l803 952h254l-201 -952h201zM659 514l68 309q31 136 100 377h-8q-51 -86 -135 -186l-422 -500h397z" />
+<glyph unicode="5" d="M610 907q181 0 288.5 -103.5t107.5 -285.5q0 -161 -70 -283t-204 -188.5t-324 -66.5q-214 0 -355 79v217q167 -100 342 -100q173 0 270 83t97 230q0 105 -62 168.5t-188 63.5q-95 0 -225 -35l-88 68l200 708h713l-45 -209h-506l-106 -364q93 18 155 18z" />
+<glyph unicode="6" d="M111 446q0 205 60.5 406t165 343t251 215t342.5 73q117 0 203 -25l-43 -194q-72 22 -181 22q-205 0 -337 -129.5t-197 -392.5h6q125 170 326 170q156 0 243.5 -99t87.5 -272q0 -162 -68.5 -301t-185.5 -210.5t-270 -71.5q-194 0 -298.5 120t-104.5 346zM530 174 q81 0 143 48.5t96 134.5t34 188q0 200 -178 200q-51 0 -95.5 -19t-79 -48t-58.5 -64.5t-39 -82t-13 -113.5q0 -110 49.5 -177t140.5 -67z" />
+<glyph unicode="7" d="M125 0l754 1257h-674l43 205h932l-33 -168l-758 -1294h-264z" />
+<glyph unicode="8" d="M731 1485q179 0 283 -89t104 -239q0 -132 -79 -229.5t-248 -163.5q120 -78 172.5 -165.5t52.5 -201.5q0 -121 -61.5 -216.5t-175.5 -148t-271 -52.5q-203 0 -317.5 100t-114.5 268q0 297 368 432q-91 70 -130.5 145t-39.5 162q0 179 127 288.5t330 109.5zM594 672 q-149 -54 -216 -126.5t-67 -176.5q0 -93 59 -149t158 -56q115 0 184.5 64t69.5 167q0 91 -48.5 157.5t-139.5 119.5zM711 1300q-93 0 -150 -56t-57 -148q0 -83 39 -137t104 -93q115 43 177.5 105t62.5 157q0 81 -48 126.5t-128 45.5z" />
+<glyph unicode="9" d="M1079 1018q0 -205 -58 -414.5t-152.5 -349t-226 -207t-310.5 -67.5q-133 0 -240 32v207q121 -43 236 -43q188 0 306 123t177 389h-6q-113 -160 -305 -160q-165 0 -255.5 102t-90.5 288q0 156 67 289t186.5 204.5t274.5 71.5q192 0 294.5 -119.5t102.5 -345.5zM664 1288 q-82 0 -145.5 -47t-97.5 -130t-34 -179q0 -105 46 -160t134 -55q117 0 198 94t81 240q0 108 -48 172.5t-134 64.5z" />
+<glyph unicode=":" horiz-adv-x="551" d="M205 948q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -48.5 -130t-125.5 -51q-66 0 -96.5 35.5t-30.5 87.5zM33 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
+<glyph unicode=";" horiz-adv-x="551" d="M334 238l8 -23q-125 -260 -266 -479h-176q95 214 198 502h236zM205 948q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -48.5 -130t-125.5 -51q-66 0 -96.5 35.5t-30.5 87.5z" />
+<glyph unicode="<" d="M1051 221l-936 430v121l936 488v-195l-697 -344l697 -303v-197z" />
+<glyph unicode="=" d="M117 831v179h936v-179h-936zM117 430v180h936v-180h-936z" />
+<glyph unicode=">" d="M115 418l694 303l-694 344v195l936 -488v-121l-936 -430v197z" />
+<glyph unicode="?" horiz-adv-x="907" d="M260 444q18 133 71.5 220.5t176.5 177.5q107 77 146.5 117t58 80.5t18.5 88.5q0 70 -42.5 114t-123.5 44q-77 0 -150 -27.5t-151 -64.5l-78 176q207 113 410 113q171 0 269 -85.5t98 -242.5q0 -120 -63.5 -217.5t-231.5 -216.5q-104 -74 -150 -133t-61 -144h-197zM162 94 q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -49 -129t-125 -50q-66 0 -96.5 34.5t-30.5 86.5z" />
+<glyph unicode="@" horiz-adv-x="1743" d="M1706 846q0 -176 -59.5 -322.5t-166.5 -229.5t-239 -83q-98 0 -150.5 46t-64.5 120h-6q-101 -166 -277 -166q-123 0 -189.5 78.5t-66.5 218.5q0 151 67.5 279.5t188 203t263.5 74.5q52 0 94.5 -5t79.5 -13t129 -39l-101 -392q-30 -114 -30 -159q0 -92 79 -92 q72 0 134 66.5t97.5 174.5t35.5 230q0 228 -128.5 347.5t-363.5 119.5q-214 0 -385 -99.5t-266.5 -281.5t-95.5 -406q0 -259 140.5 -401t391.5 -142q200 0 430 86v-155q-219 -90 -454 -90q-210 0 -367 83.5t-241.5 239.5t-84.5 365q0 270 122.5 489t343 344t493.5 125 q200 0 346 -74.5t223.5 -214.5t77.5 -325zM989 913q-86 0 -158.5 -53.5t-113.5 -144t-41 -193.5q0 -157 112 -157q82 0 141.5 72t100.5 220l64 240q-53 16 -105 16z" />
+<glyph unicode="A" horiz-adv-x="1210" d="M827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365z" />
+<glyph unicode="B" horiz-adv-x="1247" d="M778 1462q222 0 335.5 -84t113.5 -248q0 -146 -86.5 -243t-239.5 -127v-8q108 -28 167.5 -103.5t59.5 -183.5q0 -217 -150 -341t-417 -124h-491l309 1462h399zM489 858h199q139 0 215 60.5t76 171.5q0 172 -223 172h-181zM348 201h223q147 0 230.5 68t83.5 194 q0 98 -60 149.5t-176 51.5h-200z" />
+<glyph unicode="C" horiz-adv-x="1225" d="M924 1278q-154 0 -275 -89t-193.5 -259.5t-72.5 -374.5q0 -180 82.5 -275.5t243.5 -95.5q141 0 329 68v-205q-180 -67 -374 -67q-248 0 -388.5 148.5t-140.5 416.5q0 260 105.5 483t281.5 339t402 116q217 0 389 -92l-94 -195q-63 34 -134 58t-161 24z" />
+<glyph unicode="D" horiz-adv-x="1374" d="M1311 893q0 -271 -100 -473t-291 -311t-449 -109h-401l309 1462h369q271 0 417 -145t146 -424zM483 201q177 0 309 86t202.5 242t70.5 356q0 184 -88 280.5t-256 96.5h-146l-227 -1061h135z" />
+<glyph unicode="E" horiz-adv-x="1077" d="M846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539z" />
+<glyph unicode="F" horiz-adv-x="1026" d="M307 0h-237l309 1462h774l-43 -205h-537l-96 -454h502l-45 -203h-500z" />
+<glyph unicode="G" horiz-adv-x="1399" d="M786 793h512l-157 -736q-112 -40 -218.5 -58.5t-238.5 -18.5q-261 0 -405 146t-144 413q0 264 102.5 483t290 340t426.5 121q111 0 213 -20.5t205 -69.5l-90 -203q-174 86 -334 86q-158 0 -287 -90.5t-203.5 -258t-74.5 -372.5q0 -183 89 -277t253 -94q109 0 215 33 l80 371h-277z" />
+<glyph unicode="H" horiz-adv-x="1411" d="M1110 0h-238l140 659h-566l-139 -659h-237l309 1462h237l-127 -598h566l127 598h237z" />
+<glyph unicode="I" horiz-adv-x="608" d="M70 0l311 1462h235l-311 -1462h-235z" />
+<glyph unicode="J" horiz-adv-x="612" d="M-152 -408q-104 0 -170 25l5 201q84 -21 153 -21q201 0 254 250l299 1415h238l-305 -1446q-46 -217 -161.5 -320.5t-312.5 -103.5z" />
+<glyph unicode="K" horiz-adv-x="1198" d="M1087 0h-262l-252 655l-149 -100l-117 -555h-237l309 1462h237l-151 -706l141 166l492 540h284l-616 -669z" />
+<glyph unicode="L" horiz-adv-x="1016" d="M70 0l309 1462h237l-266 -1257h539l-43 -205h-776z" />
+<glyph unicode="M" horiz-adv-x="1757" d="M647 0l-115 1214h-6q-9 -118 -55 -340l-184 -874h-219l309 1462h323l109 -1149h6l606 1149h344l-305 -1462h-227l182 872q39 186 86 342h-6l-643 -1214h-205z" />
+<glyph unicode="N" horiz-adv-x="1491" d="M1192 0h-260l-410 1163h-6l-10 -69q-24 -149 -35.5 -212.5t-183.5 -881.5h-219l309 1462h268l399 -1149h7q6 54 31 192.5t40 203.5l160 753h219z" />
+<glyph unicode="O" horiz-adv-x="1485" d="M1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95z" />
+<glyph unicode="P" horiz-adv-x="1174" d="M465 748h94q178 0 275.5 79.5t97.5 225.5q0 109 -58.5 159t-179.5 50h-119zM1174 1061q0 -248 -169.5 -381t-472.5 -133h-110l-115 -547h-237l309 1462h334q229 0 345 -100.5t116 -300.5z" />
+<glyph unicode="Q" horiz-adv-x="1485" d="M1421 922q0 -322 -130 -563t-355 -332l264 -375h-289l-202 328h-31q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94 q138 0 248.5 94t172 263.5t61.5 378.5q0 170 -79 265t-223 95z" />
+<glyph unicode="R" horiz-adv-x="1206" d="M430 584l-123 -584h-237l309 1462h338q223 0 342 -94.5t119 -290.5q0 -165 -86.5 -278.5t-257.5 -165.5l249 -633h-260l-207 584h-186zM473 782h123q170 0 254 75t84 206q0 105 -59 151t-183 46h-119z" />
+<glyph unicode="S" horiz-adv-x="1057" d="M930 428q0 -210 -144.5 -329t-398.5 -119q-210 0 -348 75v224q173 -97 350 -97q137 0 216 58.5t79 162.5q0 69 -41 122.5t-172 136.5q-105 67 -155 122t-76.5 120.5t-26.5 144.5q0 128 61.5 227t174 153t253.5 54q205 0 381 -92l-86 -191q-161 78 -295 78 q-109 0 -175 -58.5t-66 -152.5q0 -47 15 -82.5t46.5 -66t134.5 -95.5q155 -97 214 -187.5t59 -207.5z" />
+<glyph unicode="T" horiz-adv-x="1053" d="M528 0h-237l264 1257h-379l45 205h998l-43 -205h-381z" />
+<glyph unicode="U" horiz-adv-x="1399" d="M1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237z" />
+<glyph unicode="V" horiz-adv-x="1165" d="M506 248q70 178 137 309l455 905h254l-764 -1462h-258l-144 1462h232l74 -905q9 -103 11 -233l-1 -76h4z" />
+<glyph unicode="W" horiz-adv-x="1788" d="M1317 0h-258l-37 842l-6 185l4 106h-6q-47 -144 -117 -291l-385 -842h-256l-53 1462h229l19 -850q0 -136 -13 -346h6q83 221 142 355l387 841h225l31 -839l3 -169l-3 -188h8q28 88 70 197.5t61 152.5l358 846h246z" />
+<glyph unicode="X" horiz-adv-x="1151" d="M1040 0h-256l-192 592l-438 -592h-265l586 770l-250 692h246l178 -540l402 540h266l-551 -710z" />
+<glyph unicode="Y" horiz-adv-x="1092" d="M582 793l432 669h266l-623 -913l-114 -549h-238l119 553l-238 909h242z" />
+<glyph unicode="Z" horiz-adv-x="1092" d="M901 0h-940l33 168l850 1087h-598l43 207h897l-35 -172l-852 -1085h645z" />
+<glyph unicode="[" horiz-adv-x="631" d="M403 -324h-430l381 1786h430l-39 -176h-221l-303 -1433h221z" />
+<glyph unicode="\" horiz-adv-x="788" d="M428 1462l219 -1462h-209l-217 1462h207z" />
+<glyph unicode="]" horiz-adv-x="631" d="M-106 -147h219l305 1433h-221l39 176h430l-381 -1786h-428z" />
+<glyph unicode="^" horiz-adv-x="1069" d="M37 537l608 933h127l272 -933h-184l-188 690l-434 -690h-201z" />
+<glyph unicode="_" horiz-adv-x="813" d="M629 -324h-817l30 140h817z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M918 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="a" horiz-adv-x="1186" d="M399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77t-120 -209.5 t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5z" />
+<glyph unicode="b" horiz-adv-x="1200" d="M578 -20q-98 0 -168.5 45t-110.5 131h-10l-64 -156h-178l330 1556h235l-71 -333q-13 -63 -38 -156.5t-40 -140.5h8q90 113 165 156.5t161 43.5q145 0 226 -103.5t81 -285.5q0 -202 -69.5 -379.5t-190.5 -277.5t-266 -100zM711 934q-81 0 -162 -80t-130.5 -210.5 t-49.5 -270.5q0 -96 46.5 -149.5t131.5 -53.5t159 78.5t117 210t43 274.5q0 201 -155 201z" />
+<glyph unicode="c" horiz-adv-x="954" d="M506 -20q-196 0 -304 106t-108 303q0 207 73.5 376.5t206.5 265t302 95.5q164 0 297 -61l-70 -184q-122 53 -221 53q-150 0 -250 -153.5t-100 -379.5q0 -111 56 -171t155 -60q74 0 138.5 22t129.5 54v-195q-140 -71 -305 -71z" />
+<glyph unicode="d" horiz-adv-x="1198" d="M623 1126q179 0 268 -178h8q13 146 37 250l76 358h233l-330 -1556h-184l19 176h-7q-88 -106 -170 -151t-174 -45q-143 0 -224 101.5t-81 287.5q0 205 71.5 383t191.5 276t266 98zM489 170q82 0 162.5 82t129 214t48.5 267q0 91 -43.5 146t-132.5 55q-85 0 -159 -77 t-118 -211t-44 -273q0 -203 157 -203z" />
+<glyph unicode="e" horiz-adv-x="1075" d="M664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5z" />
+<glyph unicode="f" horiz-adv-x="702" d="M-76 -492q-90 0 -149 23v190q64 -20 114 -20q134 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 -178h-229l-223 -1053q-40 -189 -131 -278t-238 -89 z" />
+<glyph unicode="g" horiz-adv-x="1067" d="M1143 1106l-31 -137l-192 -33q28 -58 28 -137q0 -193 -119 -306.5t-319 -113.5q-52 0 -92 8q-111 -40 -111 -104q0 -38 31.5 -52t91.5 -22l127 -16q176 -22 252 -87.5t76 -187.5q0 -196 -151 -303t-429 -107q-203 0 -314.5 75t-111.5 206q0 103 69.5 178t223.5 127 q-76 45 -76 127q0 69 46.5 119.5t146.5 97.5q-135 81 -135 252q0 196 122.5 316t323.5 120q80 0 160 -20h383zM324 18q-112 -18 -172 -71t-60 -131q0 -65 55.5 -103.5t169.5 -38.5q163 0 255 54t92 155q0 51 -45 80t-158 41zM594 969q-65 0 -114 -38.5t-76 -105t-27 -145.5 q0 -71 35.5 -109.5t101.5 -38.5q65 0 112.5 39t74 107t26.5 149q0 142 -133 142z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M702 0l142 672q18 90 18 127q0 135 -129 135q-112 0 -209.5 -125t-142.5 -342l-98 -467h-236l330 1556h235l-57 -262q-27 -126 -73 -293l-19 -75h8q84 106 168.5 153t177.5 47q136 0 208.5 -77.5t72.5 -221.5q0 -76 -23 -174l-139 -653h-234z" />
+<glyph unicode="i" horiz-adv-x="563" d="M330 1378q0 68 39 110t110 42q53 0 86 -26.5t33 -80.5q0 -71 -40 -112t-105 -41q-53 0 -88 26t-35 82zM283 0h-236l236 1106h235z" />
+<glyph unicode="j" horiz-adv-x="563" d="M-113 -492q-90 0 -149 23v190q64 -20 117 -20q131 0 170 186l260 1219h233l-266 -1247q-38 -181 -127.5 -266t-237.5 -85zM332 1378q0 68 38 110t109 42q54 0 86.5 -26.5t32.5 -80.5q0 -71 -40 -112t-105 -41q-53 0 -87 25.5t-34 82.5z" />
+<glyph unicode="k" horiz-adv-x="1081" d="M887 1106h272l-483 -485l291 -621h-262l-209 471l-136 -96l-77 -375h-236l330 1556h235q-135 -627 -159.5 -729.5t-59.5 -226.5h4z" />
+<glyph unicode="l" horiz-adv-x="563" d="M281 0h-234l330 1556h235z" />
+<glyph unicode="m" horiz-adv-x="1819" d="M807 1126q220 0 254 -235h8q75 116 170.5 175.5t198.5 59.5q133 0 202.5 -76.5t69.5 -215.5q0 -64 -22 -181l-140 -653h-235l143 672q19 95 19 133q0 129 -121 129q-108 0 -201.5 -124t-136.5 -329l-101 -481h-235l143 672q17 82 17 127q0 135 -117 135 q-110 0 -203.5 -127t-138.5 -338l-98 -469h-236l236 1106h184l-21 -205h9q148 225 352 225z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M702 0l142 672q18 90 18 131q0 131 -129 131q-72 0 -142 -57t-126 -164.5t-84 -243.5l-98 -469h-236l236 1106h184l-21 -205h9q83 118 171 171.5t191 53.5q134 0 207.5 -76t73.5 -216q0 -69 -23 -181l-137 -653h-236z" />
+<glyph unicode="o" horiz-adv-x="1174" d="M842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316z" />
+<glyph unicode="p" horiz-adv-x="1200" d="M578 -20q-181 0 -269 176h-10q-7 -97 -25 -185l-96 -463h-233l338 1598h184l-21 -188h9q157 208 344 208q143 0 224 -103t81 -286q0 -204 -70 -381.5t-190.5 -276.5t-265.5 -99zM711 934q-81 0 -161 -79.5t-130.5 -210.5t-50.5 -271q0 -96 46.5 -149.5t131.5 -53.5 t159 78.5t117 210t43 274.5q0 201 -155 201z" />
+<glyph unicode="q" horiz-adv-x="1198" d="M625 1126q183 0 274 -178h10l64 158h178l-340 -1598h-233l75 349q12 56 43.5 180t38.5 141h-8q-84 -108 -164 -153t-170 -45q-139 0 -219 102.5t-80 284.5q0 208 73 387t192.5 275.5t265.5 96.5zM492 170q80 0 159 81t127.5 213t48.5 269q0 94 -45.5 147.5t-126.5 53.5 q-86 0 -160 -77.5t-118.5 -209.5t-44.5 -274q0 -203 160 -203z" />
+<glyph unicode="r" horiz-adv-x="836" d="M797 1126q62 0 108 -12l-51 -219q-54 14 -102 14q-126 0 -225 -113t-138 -296l-106 -500h-236l236 1106h184l-21 -205h9q83 120 166 172.5t176 52.5z" />
+<glyph unicode="s" horiz-adv-x="922" d="M782 340q0 -173 -118 -266.5t-328 -93.5q-190 0 -322 67v203q153 -90 312 -90q97 0 157 40t60 109q0 51 -34.5 87.5t-141.5 97.5q-125 67 -176.5 136.5t-51.5 164.5q0 155 107 243t289 88q196 0 346 -84l-76 -176q-140 76 -266 76q-73 0 -118.5 -33t-45.5 -92 q0 -45 33 -80t135 -90q105 -59 149 -101t67 -91.5t23 -114.5z" />
+<glyph unicode="t" horiz-adv-x="752" d="M455 170q68 0 151 31v-178q-35 -17 -95 -30t-120 -13q-274 0 -274 247q0 57 16 131l121 570h-162l21 110l190 82l129 232h146l-52 -246h279l-39 -178h-277l-122 -572q-13 -55 -13 -92q0 -43 25 -68.5t76 -25.5z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236z" />
+<glyph unicode="v" horiz-adv-x="997" d="M231 0l-131 1106h232l55 -598q14 -159 14 -297h7q28 74 70 165t65 132l311 598h250l-598 -1106h-275z" />
+<glyph unicode="w" horiz-adv-x="1540" d="M844 0l-19 627l-1 70l3 200q-25 -62 -51.5 -125t-345.5 -772h-262l-47 1106h221l13 -646q-2 -87 -11 -245h6q66 176 109 272l278 619h254l19 -604l1 -53l-3 -234h6q17 50 57 158.5t63.5 163.5t251.5 569h244l-518 -1106h-268z" />
+<glyph unicode="x" horiz-adv-x="1032" d="M489 387l-305 -387h-270l475 569l-231 537h245l144 -373l287 373h274l-461 -549l248 -557h-246z" />
+<glyph unicode="y" horiz-adv-x="1004" d="M100 1106h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 19v188q75 -16 125 -16q74 0 134 43.5t124 155.5l51 92z" />
+<glyph unicode="z" horiz-adv-x="920" d="M719 0h-758l29 147l635 781h-439l39 178h705l-37 -170l-623 -758h486z" />
+<glyph unicode="{" horiz-adv-x="721" d="M457 -324q-316 0 -316 236q0 61 17 133l45 201q14 65 14 98q0 141 -209 141l39 187q120 0 191.5 42.5t93.5 143.5l59 275q28 134 73 201.5t120 97.5t198 30h60l-41 -184q-96 0 -139.5 -34t-61.5 -116l-70 -309q-24 -108 -87 -170.5t-179 -79.5v-6q160 -45 160 -215 q0 -38 -16 -121l-43 -194q-11 -48 -11 -74q0 -51 32.5 -74.5t109.5 -23.5v-185h-39z" />
+<glyph unicode="|" d="M498 1552h178v-2033h-178v2033z" />
+<glyph unicode="}" horiz-adv-x="721" d="M270 1462q318 0 318 -235q0 -61 -17 -133l-45 -203q-14 -65 -14 -98q0 -142 209 -142l-39 -186q-121 0 -192 -42t-93 -142l-63 -306q-34 -165 -123.5 -232t-269.5 -67h-29v183q106 2 152.5 36.5t64.5 114.5l70 309q24 109 87 170t179 78v6q-158 48 -158 215q0 55 17 121 l43 197q10 44 10 74q0 58 -43 78t-121 20l35 184h22z" />
+<glyph unicode="~" d="M344 692q-51 0 -112 -31t-121 -90v191q100 108 249 108q64 0 118.5 -12t146.5 -51q70 -30 115 -42.5t94 -12.5q50 0 112.5 31t120.5 89v-190q-103 -111 -250 -111q-63 0 -124 16.5t-138 49.5q-76 32 -119.5 43.5t-91.5 11.5z" />
+<glyph unicode="¡" horiz-adv-x="557" d="M221 645h174l-166 -1018h-274zM522 993q0 -80 -47 -130t-127 -50q-59 0 -93 31.5t-34 91.5q0 82 49 132t127 50q65 0 95 -35.5t30 -89.5z" />
+<glyph unicode="¢" d="M578 -20h-156l45 213q-132 34 -202 134.5t-70 258.5q0 190 63.5 351t178 260.5t261.5 121.5l35 164h156l-37 -164q124 -12 221 -57l-69 -185q-125 53 -222 53q-99 0 -180 -71.5t-125.5 -194.5t-44.5 -266q0 -111 56 -171t155 -60q74 0 138.5 21.5t129.5 53.5v-194 q-133 -69 -293 -74z" />
+<glyph unicode="£" d="M856 1483q188 0 352 -86l-88 -183q-143 74 -258 74q-185 0 -227 -205l-57 -278h333l-34 -172h-336l-33 -152q-21 -98 -68.5 -165t-130.5 -109h690l-45 -207h-972l38 193q200 45 250 276l35 164h-196l36 172h197l61 299q38 185 153 282t300 97z" />
+<glyph unicode="¤" d="M209 723q0 110 61 205l-129 129l119 119l127 -127q102 61 207 61q108 0 207 -63l127 129l121 -117l-129 -129q61 -99 61 -207q0 -114 -61 -209l127 -125l-119 -119l-127 127q-95 -59 -207 -59q-120 0 -207 59l-127 -125l-117 119l127 125q-61 95 -61 207zM377 723 q0 -91 62.5 -154t154.5 -63q91 0 156 62t65 155t-65 156t-156 63q-92 0 -154.5 -64t-62.5 -155z" />
+<glyph unicode="¥" d="M594 793l432 669h248l-518 -760h217l-35 -155h-274l-31 -148h274l-33 -155h-272l-53 -244h-221l51 244h-273l33 155h273l30 148h-272l35 155h211l-199 760h232z" />
+<glyph unicode="¦" d="M498 1552h178v-794h-178v794zM498 315h178v-796h-178v796z" />
+<glyph unicode="§" horiz-adv-x="995" d="M162 764q0 188 219 307q-47 32 -78 82t-31 115q0 138 111.5 220.5t296.5 82.5q178 0 332 -78l-68 -158q-62 29 -129.5 50.5t-144.5 21.5q-86 0 -134.5 -34.5t-48.5 -94.5q0 -43 36.5 -76.5t148.5 -83.5q127 -56 186.5 -127.5t59.5 -167.5q0 -92 -52.5 -171t-160.5 -140 q102 -76 102 -193q0 -157 -123 -245t-330 -88q-188 0 -315 67v187q152 -93 319 -93q116 0 174 40.5t58 111.5q0 43 -39 79.5t-141 84.5q-130 60 -189 131.5t-59 169.5zM510 987q-69 -26 -110.5 -79t-41.5 -115q0 -61 46.5 -104.5t173.5 -100.5q62 36 99.5 90.5t37.5 114.5 t-49.5 104.5t-155.5 89.5z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M426 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM809 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M930 1034q-113 0 -175.5 -76t-62.5 -231q0 -301 238 -301q47 0 112 16t109 35v-158q-117 -51 -240 -51q-197 0 -303 123.5t-106 335.5q0 216 113.5 340.5t312.5 124.5q138 0 266 -66l-68 -147q-106 55 -196 55zM131 731q0 200 100 375t275 276t377 101q199 0 373.5 -99 t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM254 731q0 -168 83 -312.5t229 -230.5t317 -86q173 0 319.5 87t227.5 231.5t81 310.5q0 165 -82 310.5t-227.5 232t-318.5 86.5q-168 0 -314.5 -84.5 t-230.5 -231t-84 -313.5z" />
+<glyph unicode="ª" horiz-adv-x="729" d="M498 1479q113 0 166 -103h6l39 90h118l-147 -684h-123l10 105h-4q-50 -62 -98 -89.5t-109 -27.5q-91 0 -143.5 66t-52.5 180q0 128 47 238.5t122.5 167.5t168.5 57zM412 897q50 0 97.5 48t77 127.5t29.5 158.5q0 119 -102 119q-82 0 -138.5 -97.5t-56.5 -230.5 q0 -125 93 -125z" />
+<glyph unicode="«" horiz-adv-x="1055" d="M80 575l395 420l135 -118l-288 -332l153 -369l-178 -76l-217 453v22zM520 555l385 434l137 -112l-280 -351l147 -350l-180 -76l-209 430v25z" />
+<glyph unicode="¬" d="M1053 811v-555h-179v375h-757v180h936z" />
+<glyph unicode="­" horiz-adv-x="649" d="M47 446zM47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M131 731q0 200 100 375t275 276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM254 731q0 -168 83 -312.5t229 -230.5t317 -86q173 0 319.5 87t227.5 231.5t81 310.5 q0 165 -82 310.5t-227.5 232t-318.5 86.5q-168 0 -314.5 -84.5t-230.5 -231t-84 -313.5zM1214 907q0 -83 -45.5 -145t-130.5 -98l211 -373h-200l-172 325h-91v-325h-178v878h269q337 0 337 -262zM786 760h72q84 0 129 36t45 99q0 73 -45.5 101t-128.5 28h-72v-264z" />
+<glyph unicode="¯" horiz-adv-x="903" d="M1020 1556h-909l39 166h911z" />
+<glyph unicode="°" horiz-adv-x="877" d="M188 1153q0 136 97 233t233 97t232 -97t96 -233q0 -137 -96 -231.5t-232 -94.5q-88 0 -165 44t-121 119t-44 163zM340 1153q0 -70 52 -122t126 -52q72 0 124 52t52 122q0 74 -51.5 126t-124.5 52q-74 0 -126 -51.5t-52 -126.5z" />
+<glyph unicode="±" d="M496 657h-379v181h379v381h180v-381h377v-181h-377v-374h-180v374zM117 0v180h936v-180h-936z" />
+<glyph unicode="²" horiz-adv-x="745" d="M682 586h-604l28 135l269 223q111 95 148.5 136t55 77t17.5 74q0 46 -28 72t-76 26q-91 0 -191 -80l-80 123q68 54 142.5 81.5t168.5 27.5q115 0 183.5 -60t68.5 -155q0 -69 -23.5 -124.5t-74 -110.5t-168.5 -146l-174 -142h371z" />
+<glyph unicode="³" horiz-adv-x="745" d="M784 1272q0 -90 -54.5 -149t-158.5 -85v-4q78 -18 115 -67t37 -115q0 -129 -99.5 -206t-269.5 -77q-138 0 -250 56v159q126 -71 248 -71q90 0 139.5 37t49.5 106q0 113 -146 113h-108l28 133h93q89 0 142.5 34t53.5 99q0 100 -117 100q-92 0 -188 -65l-68 121 q126 90 291 90q124 0 193 -55.5t69 -153.5z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M508 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="µ" horiz-adv-x="1221" d="M358 307q0 -65 33 -101t96 -36q113 0 209.5 125.5t141.5 337.5l102 473h231l-235 -1106h-184l22 190h-10q-75 -111 -153 -160.5t-165 -49.5q-108 0 -155 81h-8q-9 -73 -39 -235l-66 -318h-233l338 1598h235l-141 -670q-19 -84 -19 -129z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1204 -260h-139v1638h-188v-1638h-140v819q-62 -18 -145 -18q-216 0 -318 125t-102 376q0 260 109 387t342 127h581v-1816z" />
+<glyph unicode="·" horiz-adv-x="551" d="M150 569zM150 692q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M236 -264q0 -106 -82 -167t-224 -61q-64 0 -118 15v135q47 -14 96 -14q137 0 137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101z" />
+<glyph unicode="¹" horiz-adv-x="745" d="M532 1462h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103l-77 129z" />
+<glyph unicode="º" horiz-adv-x="721" d="M776 1206q0 -126 -42 -225t-121 -155t-189 -56q-122 0 -191 73t-69 204q0 122 44 221.5t125.5 155t188.5 55.5q124 0 189 -71.5t65 -201.5zM510 1346q-81 0 -132.5 -87.5t-51.5 -216.5q0 -141 112 -141q77 0 127.5 87.5t50.5 219.5q0 138 -106 138z" />
+<glyph unicode="»" horiz-adv-x="1055" d="M975 510l-397 -418l-134 119l287 330l-153 370l180 76l217 -455v-22zM535 530l-385 -432l-140 113l281 348l-146 352l179 76l211 -432v-25z" />
+<glyph unicode="¼" horiz-adv-x="1661" d="M149 0zM1429 1462l-1083 -1462h-197l1085 1462h195zM490 1462h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103l-77 129zM1448 177h-122l-39 -176h-183l39 176h-368l26 137l477 569h197l-121 -563h123zM1172 320l52 221l34 129q-32 -51 -98 -131 l-187 -219h199z" />
+<glyph unicode="½" horiz-adv-x="1661" d="M121 0zM1401 1462l-1083 -1462h-197l1085 1462h195zM461 1462h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103l-77 129zM1464 1h-604l28 135l269 223q111 95 148.5 136t55 77t17.5 74q0 46 -28 72t-76 26q-91 0 -191 -80l-80 123 q68 54 142.5 81.5t168.5 27.5q115 0 183.5 -60t68.5 -155q0 -69 -23.5 -124.5t-74 -110.5t-168.5 -146l-174 -142h371z" />
+<glyph unicode="¾" horiz-adv-x="1683" d="M108 0zM1571 1462l-1083 -1462h-197l1085 1462h195zM1554 177h-122l-39 -176h-183l39 176h-368l26 137l477 569h197l-121 -563h123zM1278 320l52 221l34 129q-32 -51 -98 -131l-187 -219h199zM788 1272q0 -90 -54.5 -149t-158.5 -85v-4q78 -18 115 -67t37 -115 q0 -129 -99.5 -206t-269.5 -77q-138 0 -250 56v159q126 -71 248 -71q90 0 139.5 37t49.5 106q0 113 -146 113h-108l28 133h93q89 0 142.5 34t53.5 99q0 100 -117 100q-92 0 -188 -65l-68 121q126 90 291 90q124 0 193 -55.5t69 -153.5z" />
+<glyph unicode="¿" horiz-adv-x="907" d="M668 643q-25 -146 -79.5 -231t-170.5 -168q-107 -79 -145.5 -118t-57 -79t-18.5 -88q0 -71 42 -114.5t123 -43.5q76 0 149.5 27.5t152.5 65.5l75 -177q-205 -112 -409 -112q-174 0 -269.5 85.5t-95.5 241.5q0 120 64 219t231 216q93 64 141 122.5t70 153.5h197zM766 993 q0 -85 -48 -134.5t-130 -49.5q-56 0 -89.5 32.5t-33.5 92.5q0 78 46.5 129t125.5 51q66 0 97.5 -34t31.5 -87z" />
+<glyph unicode="À" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM915 1579h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM707 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Â" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM1157 1579h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Ã" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM967 1579q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5 t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="Ä" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM518 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM901 1718 q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="Å" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM1039 1575q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164t65 164.5t168 61.5q104 0 171 -60.5t67 -163.5zM908 1573 q0 50 -30 78.5t-77 28.5q-45 0 -74.5 -28.5t-29.5 -78.5q0 -49 26.5 -76.5t77.5 -27.5q47 0 77 27.5t30 76.5z" />
+<glyph unicode="Æ" horiz-adv-x="1753" d="M1520 0h-777l86 406h-432l-256 -406h-262l930 1462h1020l-43 -205h-539l-84 -395h504l-43 -200h-502l-98 -459h539zM872 614l138 643h-82l-400 -643h344z" />
+<glyph unicode="Ç" horiz-adv-x="1225" d="M135 0zM924 1278q-154 0 -275 -89t-193.5 -259.5t-72.5 -374.5q0 -180 82.5 -275.5t243.5 -95.5q141 0 329 68v-205q-180 -67 -374 -67q-248 0 -388.5 148.5t-140.5 416.5q0 260 105.5 483t281.5 339t402 116q217 0 389 -92l-94 -195q-63 34 -134 58t-161 24zM791 -264 q0 -106 -82 -167t-224 -61q-64 0 -118 15v135q47 -14 96 -14q137 0 137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101z" />
+<glyph unicode="È" horiz-adv-x="1077" d="M70 0zM846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539zM903 1579h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1077" d="M70 0zM846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539zM633 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Ê" horiz-adv-x="1077" d="M70 0zM846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539zM1130 1579h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Ë" horiz-adv-x="1077" d="M70 0zM846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539zM479 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM862 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="Ì" horiz-adv-x="608" d="M70 0zM70 0l311 1462h235l-311 -1462h-235zM630 1579h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="608" d="M70 0zM70 0l311 1462h235l-311 -1462h-235zM415 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Î" horiz-adv-x="608" d="M70 0zM70 0l311 1462h235l-311 -1462h-235zM873 1579h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Ï" horiz-adv-x="608" d="M70 0zM70 0l311 1462h235l-311 -1462h-235zM243 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM626 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z " />
+<glyph unicode="Ð" horiz-adv-x="1374" d="M1311 893q0 -271 -100 -473t-291 -311t-449 -109h-401l129 623h-146l45 200h144l137 639h369q271 0 417 -145t146 -424zM483 201q177 0 309 86t202.5 242t70.5 356q0 184 -88 280.5t-256 96.5h-146l-94 -439h285l-45 -200h-283l-90 -422h135z" />
+<glyph unicode="Ñ" horiz-adv-x="1491" d="M68 0zM1192 0h-260l-410 1163h-6l-10 -69q-24 -149 -35.5 -212.5t-183.5 -881.5h-219l309 1462h268l399 -1149h7q6 54 31 192.5t40 203.5l160 753h219zM1108 1579q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285 q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="Ò" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM1029 1579h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM787 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Ô" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM1268 1579h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Õ" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM1069 1579q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="Ö" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM623 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM1006 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z " />
+<glyph unicode="×" d="M457 723l-310 311l125 125l312 -309l313 309l127 -123l-315 -313l311 -313l-123 -123l-313 309l-312 -307l-122 123z" />
+<glyph unicode="Ø" horiz-adv-x="1485" d="M1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-193 0 -318 83l-118 -149l-133 104l129 160q-103 138 -103 365q0 267 98.5 487.5t269.5 337.5t388 117q189 0 317 -94l119 149l133 -104l-133 -166q94 -130 94 -348zM872 1282q-141 0 -253 -93t-177 -265 t-65 -379q0 -88 24 -164l668 836q-80 65 -197 65zM1180 920q0 88 -19 143l-661 -825q75 -56 194 -56q139 0 250.5 95.5t173.5 264.5t62 378z" />
+<glyph unicode="Ù" horiz-adv-x="1399" d="M152 0zM1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237zM996 1579h-144q-65 63 -132 151.5 t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1399" d="M152 0zM1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237zM791 1604q97 108 225 303h264v-19 q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Û" horiz-adv-x="1399" d="M152 0zM1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237zM1249 1579h-152q-76 63 -161 178 q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Ü" horiz-adv-x="1399" d="M152 0zM1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237zM602 1718q0 60 35 98t98 38q48 0 76.5 -23.5 t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM985 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="Ý" horiz-adv-x="1092" d="M186 0zM582 793l432 669h266l-623 -913l-114 -549h-238l119 553l-238 909h242zM610 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Þ" horiz-adv-x="1174" d="M1124 817q0 -243 -166.5 -377.5t-476.5 -134.5h-108l-66 -305h-237l309 1462h237l-51 -243h97q227 0 344.5 -101t117.5 -301zM414 506h96q176 0 274.5 78.5t98.5 226.5q0 109 -59.5 158t-180.5 49h-121z" />
+<glyph unicode="ß" horiz-adv-x="1266" d="M-117 -492q-69 0 -141 23v193q61 -21 113 -21q65 0 106.5 43.5t63.5 147.5l262 1234q48 231 173 333t349 102q188 0 292.5 -80t104.5 -215q0 -169 -179 -299q-118 -87 -148.5 -119.5t-30.5 -67.5q0 -44 74 -101q107 -84 143 -127t55 -92.5t19 -109.5q0 -172 -116 -272 t-314 -100q-182 0 -283 65v201q126 -86 252 -86q105 0 164 44t59 124q0 48 -23.5 85t-111.5 107q-82 64 -121 121.5t-39 126.5q0 75 44.5 139t135.5 124q98 66 138.5 112t40.5 98q0 65 -47 101t-132 36q-210 0 -262 -239l-264 -1260q-42 -197 -134.5 -284t-242.5 -87z" />
+<glyph unicode="à" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM847 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="á" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM598 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="â" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM1064 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="ã" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM870 1241q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="ä" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM425 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM808 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37 q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="å" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM988 1466q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164t65 164.5t168 61.5q104 0 171 -60.5t67 -163.5zM857 1464q0 50 -30 78.5t-77 28.5q-45 0 -74.5 -28.5t-29.5 -78.5q0 -49 26.5 -76.5t77.5 -27.5 q47 0 77 27.5t30 76.5z" />
+<glyph unicode="æ" horiz-adv-x="1726" d="M1186 -20q-222 0 -305 137l-23 -117h-151l20 176h-8q-85 -106 -165.5 -151t-174.5 -45q-134 0 -209.5 103t-75.5 284q0 201 69 378t188.5 279t260.5 102q88 0 152 -43.5t108 -134.5h9l63 158h148l-25 -117q51 63 131 100t180 37q140 0 220.5 -76.5t80.5 -201.5 q0 -182 -166.5 -284.5t-474.5 -102.5h-45l-4 -60q0 -117 60.5 -177t175.5 -60q125 0 305 84v-189q-175 -79 -344 -79zM465 170q85 0 162.5 80.5t125.5 215.5t48 267q0 91 -38.5 146t-113.5 55q-85 0 -159.5 -80t-116 -211t-41.5 -270q0 -105 37 -154t96 -49zM1333 946 q-103 0 -188.5 -86t-122.5 -227h31q187 0 293 53.5t106 149.5q0 58 -34 84t-85 26z" />
+<glyph unicode="ç" horiz-adv-x="954" d="M94 0zM506 -20q-196 0 -304 106t-108 303q0 207 73.5 376.5t206.5 265t302 95.5q164 0 297 -61l-70 -184q-122 53 -221 53q-150 0 -250 -153.5t-100 -379.5q0 -111 56 -171t155 -60q74 0 138.5 22t129.5 54v-195q-140 -71 -305 -71zM621 -264q0 -106 -82 -167t-224 -61 q-64 0 -118 15v135q47 -14 96 -14q137 0 137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101z" />
+<glyph unicode="è" horiz-adv-x="1075" d="M94 0zM664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5zM813 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="1075" d="M94 0zM664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5zM557 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="ê" horiz-adv-x="1075" d="M94 0zM664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5zM1033 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="ë" horiz-adv-x="1075" d="M94 0zM664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5zM388 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM771 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ì" horiz-adv-x="563" d="M47 0zM283 0h-236l236 1106h235zM536 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="563" d="M47 0zM283 0h-236l236 1106h235zM308 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="î" horiz-adv-x="563" d="M47 0zM283 0h-236l236 1106h235zM777 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="ï" horiz-adv-x="563" d="M47 0zM283 0h-236l236 1106h235zM142 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM525 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ð" horiz-adv-x="1174" d="M647 1325q-44 41 -135 96l106 152q129 -72 209 -146l250 138l70 -127l-217 -121q155 -205 155 -512q0 -255 -73 -444.5t-204 -285t-312 -95.5q-197 0 -306.5 107t-109.5 302q0 162 65.5 299t184.5 215t266 78q96 0 168 -38.5t113 -108.5h6q-10 243 -133 383l-250 -142 l-72 129zM508 162q92 0 161.5 59.5t108.5 159t39 205.5q0 97 -52 155t-144 58q-91 0 -160.5 -56t-106.5 -153.5t-37 -212.5q0 -104 49 -159.5t142 -55.5z" />
+<glyph unicode="ñ" horiz-adv-x="1208" d="M47 0zM702 0l142 672q18 90 18 131q0 131 -129 131q-72 0 -142 -57t-126 -164.5t-84 -243.5l-98 -469h-236l236 1106h184l-21 -205h9q83 118 171 171.5t191 53.5q134 0 207.5 -76t73.5 -216q0 -69 -23 -181l-137 -653h-236zM889 1241q-45 0 -82.5 17t-71.5 37.5 t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="ò" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM821 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="ó" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM580 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="ô" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM1054 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="õ" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM854 1241q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="ö" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM409 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM792 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="÷" d="M117 631v180h936v-180h-936zM459 373q0 64 31.5 99.5t93.5 35.5t94.5 -36t32.5 -99q0 -64 -34.5 -100.5t-92.5 -36.5t-91.5 35.5t-33.5 101.5zM459 1071q0 64 31.5 99.5t93.5 35.5t94.5 -36t32.5 -99q0 -64 -34.5 -100.5t-92.5 -36.5t-91.5 35.5t-33.5 101.5z" />
+<glyph unicode="ø" horiz-adv-x="1174" d="M1077 700q0 -208 -74 -376t-200.5 -255t-288.5 -87q-137 0 -235 59l-105 -131l-123 96l115 141q-70 104 -70 261q0 200 70.5 365t199.5 258t298 93q136 0 239 -61l86 108l125 -96l-100 -117q63 -100 63 -258zM653 936q-141 0 -235 -145.5t-94 -364.5q0 -39 8 -74l442 549 q-45 35 -121 35zM528 168q89 0 163 66.5t116.5 184t42.5 257.5q0 45 -6 67l-436 -542q41 -33 120 -33z" />
+<glyph unicode="ù" horiz-adv-x="1208" d="M111 0zM506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236zM823 1241h-144q-65 63 -132 151.5 t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1208" d="M111 0zM506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236zM623 1266q97 108 225 303h264v-19 q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="û" horiz-adv-x="1208" d="M111 0zM506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236zM1083 1241h-152q-76 63 -161 178 q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="ü" horiz-adv-x="1208" d="M111 0zM506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236zM432 1380q0 60 35 98t98 38 q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM815 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ý" horiz-adv-x="1004" d="M0 0zM100 1106h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 19v188q75 -16 125 -16q74 0 134 43.5t124 155.5l51 92zM501 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5 h-156v25z" />
+<glyph unicode="þ" horiz-adv-x="1200" d="M586 -20q-94 0 -165 45.5t-114 130.5h-8q-7 -91 -25 -185l-96 -463h-233l432 2048h235q-48 -223 -73 -339t-76 -291h8q155 200 328 200q144 0 224.5 -102t80.5 -287q0 -204 -68 -381.5t-184.5 -276.5t-265.5 -99zM707 934q-84 0 -163 -81t-127 -213.5t-48 -266.5 q0 -98 46 -150.5t132 -52.5t159.5 77t116.5 209t43 277q0 100 -41 150.5t-118 50.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1004" d="M0 0zM100 1106h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 19v188q75 -16 125 -16q74 0 134 43.5t124 155.5l51 92zM323 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM706 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ı" horiz-adv-x="563" d="M283 0h-236l236 1106h235z" />
+<glyph unicode="Œ" horiz-adv-x="1798" d="M1565 0h-717q-84 -20 -170 -20q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q145 0 223 -23h760l-43 -205h-539l-84 -395h504l-43 -200h-504l-96 -459h539zM692 184q74 0 139 27l222 1038q-68 31 -181 31q-138 0 -250 -96t-175.5 -266.5 t-63.5 -372.5q0 -173 81.5 -267t227.5 -94z" />
+<glyph unicode="œ" horiz-adv-x="1788" d="M1225 -20q-120 0 -212.5 46t-140.5 138q-137 -182 -374 -182q-186 0 -295 115.5t-109 312.5q0 206 73.5 372.5t201 254t293.5 87.5q237 0 335 -192q73 91 174 142.5t226 51.5q159 0 246.5 -74.5t87.5 -203.5q0 -183 -165.5 -285t-471.5 -102h-47l-3 -60q0 -111 56.5 -174 t169.5 -63q69 0 134.5 17.5t176.5 66.5v-189q-91 -43 -175 -61t-181 -18zM647 930q-87 0 -157.5 -64t-114 -186.5t-43.5 -267.5q0 -116 48.5 -177t139.5 -61q143 0 229.5 146.5t86.5 381.5q0 111 -49.5 169.5t-139.5 58.5zM1386 946q-105 0 -192 -85.5t-121 -227.5h31 q189 0 294 54t105 155q0 48 -30 76t-87 28z" />
+<glyph unicode="Ÿ" horiz-adv-x="1092" d="M186 0zM582 793l432 669h266l-623 -913l-114 -549h-238l119 553l-238 909h242zM440 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM823 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102 t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M1067 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M1012 1466q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164t65 164.5t168 61.5q104 0 171 -60.5t67 -163.5zM881 1464q0 50 -30 78.5t-77 28.5q-45 0 -74.5 -28.5t-29.5 -78.5q0 -49 26.5 -76.5t77.5 -27.5q47 0 77 27.5t30 76.5z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M852 1241q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="‑" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="‒" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="–" horiz-adv-x="983" d="M47 453l43 194h838l-43 -194h-838z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M47 453l43 194h1821l-43 -194h-1821z" />
+<glyph unicode="‘" horiz-adv-x="393" d="M125 961l-6 22q34 76 106.5 209t159.5 270h176q-122 -286 -199 -501h-237z" />
+<glyph unicode="’" horiz-adv-x="393" d="M551 1462l8 -22q-37 -83 -110.5 -217.5t-155.5 -261.5h-178q43 95 106 255t92 246h238z" />
+<glyph unicode="‚" horiz-adv-x="530" d="M334 238l8 -23q-108 -233 -266 -479h-178q105 238 200 502h236z" />
+<glyph unicode="“" horiz-adv-x="803" d="M535 961l-9 22q84 190 267 479h176q-122 -286 -199 -501h-235zM125 961l-6 22q34 76 106.5 209t159.5 270h176q-122 -286 -199 -501h-237z" />
+<glyph unicode="”" horiz-adv-x="803" d="M551 1462l8 -22q-37 -83 -110.5 -217.5t-155.5 -261.5h-178q43 95 106 255t92 246h238zM958 1462l9 -22q-98 -220 -269 -479h-176q51 114 109 261t90 240h237z" />
+<glyph unicode="„" horiz-adv-x="938" d="M334 238l8 -23q-108 -233 -266 -479h-178q105 238 200 502h236zM741 238l9 -23q-92 -206 -267 -479h-176q120 281 199 502h235z" />
+<glyph unicode="•" horiz-adv-x="756" d="M152 684q0 156 83.5 252t223.5 96q100 0 158.5 -54.5t58.5 -168.5q0 -156 -82 -252t-227 -96q-102 0 -158.5 57.5t-56.5 165.5z" />
+<glyph unicode="…" horiz-adv-x="1634" d="M293 0zM834 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5zM594 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5zM293 94 q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="621" d="M80 573l395 422l135 -118l-288 -334l153 -367l-178 -76l-217 449v24z" />
+<glyph unicode="›" horiz-adv-x="621" d="M541 514l-396 -422l-135 119l289 334l-154 366l179 76l217 -448v-25z" />
+<glyph unicode="⁄" horiz-adv-x="262" d="M770 1462l-1083 -1462h-197l1085 1462h195z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="745" d="M743 762h-122l-39 -176h-183l39 176h-368l26 137l477 569h197l-121 -563h123zM467 905l52 221l34 129q-32 -51 -98 -131l-187 -219h199z" />
+<glyph unicode="€" d="M913 1282q-118 0 -214.5 -87t-161.5 -255h387l-33 -154h-402q-18 -67 -28 -139h340l-33 -155h-319q0 -161 60.5 -234.5t195.5 -73.5q120 0 258 60v-203q-129 -61 -306 -61q-216 0 -330 130t-114 382h-162l33 155h139q15 95 27 139h-137l32 154h148q92 260 255.5 401.5 t371.5 141.5q88 0 164.5 -22t156.5 -77l-102 -180q-54 34 -107 56t-119 22z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M455 741h-146v594h-196v127h540v-127h-198v-594zM1030 741l-178 539h-6l4 -115v-424h-141v721h215l170 -534l182 534h205v-721h-146v418l4 121h-6l-184 -539h-119z" />
+<glyph unicode="" horiz-adv-x="1105" d="M0 1105h1105v-1105h-1105v1105z" />
+<glyph horiz-adv-x="1198" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.ttf
new file mode 100755
index 0000000..d2d6318
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.woff
new file mode 100755
index 0000000..d4dfca4
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-SemiboldItalic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.eot
new file mode 100755
index 0000000..d8375dd
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.svg
new file mode 100755
index 0000000..eec4db8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sanssemibold" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1315" d="M35 0zM723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1146 0h-235v1106h235v-1106zM897 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97 q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5z" />
+<glyph unicode="fl" horiz-adv-x="1315" d="M35 0zM723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1146 0h-235v1556h235v-1556z" />
+<glyph unicode="ffi" horiz-adv-x="2058" d="M35 0zM723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1466 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41 l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1890 0h-235v1106h235v-1106zM1641 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5z" />
+<glyph unicode="ffl" horiz-adv-x="2058" d="M35 0zM723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1466 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41 l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1890 0h-235v1556h235v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="565" d="M371 444h-174l-52 1018h277zM133 125q0 74 39 112.5t111 38.5q71 0 109 -40t38 -111t-38.5 -112.5t-108.5 -41.5q-71 0 -110.5 40t-39.5 114z" />
+<glyph unicode=""" horiz-adv-x="893" d="M365 1462l-41 -528h-150l-41 528h232zM760 1462l-41 -528h-150l-41 528h232z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M989 870l-55 -284h270v-168h-303l-80 -418h-178l80 418h-248l-80 -418h-174l76 418h-250v168h283l57 284h-264v168h293l80 422h180l-80 -422h252l80 422h174l-80 -422h252v-168h-285zM506 586h250l57 284h-250z" />
+<glyph unicode="$" d="M1063 453q0 -145 -106 -239t-306 -116v-217h-133v211q-248 4 -407 76v211q86 -42 201 -70.5t206 -29.5v374l-84 31q-164 63 -239.5 150.5t-75.5 216.5q0 138 107.5 227t291.5 108v168h133v-165q203 -7 385 -82l-73 -183q-157 62 -312 74v-364l76 -29q190 -73 263 -154 t73 -198zM827 438q0 58 -40.5 95.5t-135.5 72.5v-319q176 27 176 151zM354 1053q0 -57 35.5 -95t128.5 -75v311q-80 -12 -122 -49t-42 -92z" />
+<glyph unicode="%" horiz-adv-x="1765" d="M279 1024q0 -149 29 -222t95 -73q132 0 132 295t-132 295q-66 0 -95 -73t-29 -222zM729 1026q0 -230 -82.5 -345.5t-243.5 -115.5q-152 0 -235.5 119.5t-83.5 341.5q0 457 319 457q157 0 241.5 -118.5t84.5 -338.5zM1231 440q0 -149 29.5 -223t95.5 -74q131 0 131 297 q0 293 -131 293q-66 0 -95.5 -72t-29.5 -221zM1681 440q0 -230 -83 -345t-242 -115q-152 0 -236 118.5t-84 341.5q0 457 320 457q154 0 239.5 -118t85.5 -339zM1384 1462l-811 -1462h-194l811 1462h194z" />
+<glyph unicode="&" horiz-adv-x="1516" d="M451 1147q0 -63 33.5 -119t93.5 -119q113 64 158.5 119.5t45.5 124.5q0 65 -43.5 104t-115.5 39q-79 0 -125.5 -40.5t-46.5 -108.5zM600 182q183 0 313 107l-383 377q-106 -68 -146 -127.5t-40 -135.5q0 -98 69.5 -159.5t186.5 -61.5zM96 387q0 131 64 228.5t231 193.5 q-95 111 -129.5 187.5t-34.5 158.5q0 152 108.5 240t291.5 88q177 0 278 -85.5t101 -230.5q0 -114 -67.5 -207t-225.5 -186l346 -334q81 107 135 314h242q-70 -284 -224 -463l301 -291h-303l-149 145q-102 -82 -217.5 -123.5t-255.5 -41.5q-230 0 -361 109t-131 298z" />
+<glyph unicode="'" horiz-adv-x="498" d="M365 1462l-41 -528h-150l-41 528h232z" />
+<glyph unicode="(" horiz-adv-x="649" d="M82 561q0 265 77.5 496t223.5 405h205q-139 -188 -213 -421.5t-74 -477.5t74 -473t211 -414h-203q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="649" d="M567 561q0 -263 -77.5 -490t-223.5 -395h-203q138 187 211.5 415t73.5 472q0 245 -74 477.5t-213 421.5h205q147 -175 224 -406.5t77 -494.5z" />
+<glyph unicode="*" horiz-adv-x="1122" d="M672 1556l-41 -382l385 108l28 -217l-360 -29l236 -311l-199 -107l-166 338l-149 -338l-205 107l231 311l-358 29l35 217l376 -108l-41 382h228z" />
+<glyph unicode="+" d="M494 633h-398v178h398v408h180v-408h399v-178h-399v-406h-180v406z" />
+<glyph unicode="," horiz-adv-x="547" d="M412 215q-48 -186 -176 -479h-173q69 270 103 502h231z" />
+<glyph unicode="-" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="." horiz-adv-x="563" d="M133 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="/" horiz-adv-x="799" d="M782 1462l-544 -1462h-222l545 1462h221z" />
+<glyph unicode="0" d="M1081 731q0 -381 -122.5 -566t-374.5 -185q-244 0 -370 191t-126 560q0 387 122.5 570.5t373.5 183.5q245 0 371 -192t126 -562zM326 731q0 -299 61.5 -427t196.5 -128t197.5 130t62.5 425q0 294 -62.5 425.5t-197.5 131.5t-196.5 -129t-61.5 -428z" />
+<glyph unicode="1" d="M780 0h-235v944q0 169 8 268q-23 -24 -56.5 -53t-224.5 -184l-118 149l430 338h196v-1462z" />
+<glyph unicode="2" d="M1081 0h-991v178l377 379q167 171 221.5 242.5t79.5 134.5t25 135q0 99 -59.5 156t-164.5 57q-84 0 -162.5 -31t-181.5 -112l-127 155q122 103 237 146t245 43q204 0 327 -106.5t123 -286.5q0 -99 -35.5 -188t-109 -183.5t-244.5 -255.5l-254 -246v-10h694v-207z" />
+<glyph unicode="3" d="M1026 1126q0 -139 -81 -231.5t-228 -124.5v-8q176 -22 264 -109.5t88 -232.5q0 -211 -149 -325.5t-424 -114.5q-243 0 -410 79v209q93 -46 197 -71t200 -25q170 0 254 63t84 195q0 117 -93 172t-292 55h-127v191h129q350 0 350 242q0 94 -61 145t-180 51 q-83 0 -160 -23.5t-182 -91.5l-115 164q201 148 467 148q221 0 345 -95t124 -262z" />
+<glyph unicode="4" d="M1133 319h-197v-319h-229v319h-668v181l668 966h229v-952h197v-195zM707 514v367q0 196 10 321h-8q-28 -66 -88 -160l-363 -528h449z" />
+<glyph unicode="5" d="M586 913q221 0 350 -117t129 -319q0 -234 -146.5 -365.5t-416.5 -131.5q-245 0 -385 79v213q81 -46 186 -71t195 -25q159 0 242 71t83 208q0 262 -334 262q-47 0 -116 -9.5t-121 -21.5l-105 62l56 714h760v-209h-553l-33 -362q35 6 85.5 14t123.5 8z" />
+<glyph unicode="6" d="M94 623q0 858 699 858q110 0 186 -17v-196q-76 22 -176 22q-235 0 -353 -126t-128 -404h12q47 81 132 125.5t200 44.5q199 0 310 -122t111 -331q0 -230 -128.5 -363.5t-350.5 -133.5q-157 0 -273 75.5t-178.5 220t-62.5 347.5zM604 174q121 0 186.5 78t65.5 223 q0 126 -61.5 198t-184.5 72q-76 0 -140 -32.5t-101 -89t-37 -115.5q0 -141 76.5 -237.5t195.5 -96.5z" />
+<glyph unicode="7" d="M256 0l578 1253h-760v207h1011v-164l-575 -1296h-254z" />
+<glyph unicode="8" d="M584 1481q208 0 329 -95.5t121 -255.5q0 -225 -270 -358q172 -86 244.5 -181t72.5 -212q0 -181 -133 -290t-360 -109q-238 0 -369 102t-131 289q0 122 68.5 219.5t224.5 173.5q-134 80 -191 169t-57 200q0 159 125 253.5t326 94.5zM313 379q0 -104 73 -161.5t198 -57.5 q129 0 200.5 59.5t71.5 161.5q0 81 -66 148t-200 124l-29 13q-132 -58 -190 -127.5t-58 -159.5zM582 1300q-100 0 -161 -49.5t-61 -134.5q0 -52 22 -93t64 -74.5t142 -80.5q120 53 169.5 111.5t49.5 136.5q0 85 -61.5 134.5t-163.5 49.5z" />
+<glyph unicode="9" d="M1079 838q0 -432 -174 -645t-524 -213q-133 0 -191 16v197q89 -25 179 -25q238 0 355 128t128 402h-12q-59 -90 -142.5 -130t-195.5 -40q-194 0 -305 121t-111 332q0 229 128.5 364.5t350.5 135.5q156 0 272 -76t179 -220.5t63 -346.5zM569 1286q-122 0 -187 -79.5 t-65 -223.5q0 -125 60.5 -196.5t183.5 -71.5q119 0 200 71t81 166q0 89 -34.5 166.5t-96.5 122.5t-142 45z" />
+<glyph unicode=":" horiz-adv-x="563" d="M133 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM133 979q0 151 148 151q75 0 112 -40t37 -111t-38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode=";" horiz-adv-x="569" d="M397 238l15 -23q-48 -186 -176 -479h-173q69 270 103 502h231zM131 979q0 151 148 151q75 0 112 -40t37 -111t-38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="<" d="M1073 221l-977 430v121l977 488v-195l-733 -344l733 -303v-197z" />
+<glyph unicode="=" d="M102 831v179h963v-179h-963zM102 432v178h963v-178h-963z" />
+<glyph unicode=">" d="M96 418l733 303l-733 344v195l977 -488v-121l-977 -430v197z" />
+<glyph unicode="?" horiz-adv-x="928" d="M283 444v64q0 110 40 183t140 151q119 94 153.5 146t34.5 124q0 84 -56 129t-161 45q-95 0 -176 -27t-158 -65l-84 176q203 113 435 113q196 0 311 -96t115 -265q0 -75 -22 -133.5t-66.5 -111.5t-153.5 -138q-93 -73 -124.5 -121t-31.5 -129v-45h-196zM242 125 q0 151 147 151q72 0 110 -39.5t38 -111.5q0 -71 -38.5 -112.5t-109.5 -41.5t-109 40.5t-38 113.5z" />
+<glyph unicode="@" horiz-adv-x="1839" d="M1726 739q0 -143 -45 -261.5t-126.5 -184.5t-188.5 -66q-79 0 -137 42t-78 114h-12q-49 -78 -121 -117t-162 -39q-163 0 -256.5 105t-93.5 284q0 206 124 334.5t333 128.5q76 0 168.5 -13.5t164.5 -37.5l-22 -465v-24q0 -160 104 -160q79 0 125.5 102t46.5 260 q0 171 -70 300.5t-199 199.5t-296 70q-213 0 -370.5 -88t-240.5 -251.5t-83 -379.5q0 -290 155 -446t445 -156q221 0 461 90v-164q-210 -86 -457 -86q-370 0 -577 199.5t-207 556.5q0 261 112 464.5t310.5 311.5t449.5 108q217 0 386.5 -90t263 -256.5t93.5 -384.5zM698 612 q0 -233 183 -233q193 0 211 293l12 239q-63 17 -135 17q-128 0 -199.5 -85t-71.5 -231z" />
+<glyph unicode="A" horiz-adv-x="1354" d="M1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426z" />
+<glyph unicode="B" horiz-adv-x="1352" d="M193 1462h434q302 0 436.5 -88t134.5 -278q0 -128 -66 -213t-190 -107v-10q154 -29 226.5 -114.5t72.5 -231.5q0 -197 -137.5 -308.5t-382.5 -111.5h-528v1462zM432 858h230q150 0 219 47.5t69 161.5q0 103 -74.5 149t-236.5 46h-207v-404zM432 664v-463h254 q150 0 226.5 57.5t76.5 181.5q0 114 -78 169t-237 55h-242z" />
+<glyph unicode="C" horiz-adv-x="1298" d="M815 1278q-206 0 -324 -146t-118 -403q0 -269 113.5 -407t328.5 -138q93 0 180 18.5t181 47.5v-205q-172 -65 -390 -65q-321 0 -493 194.5t-172 556.5q0 228 83.5 399t241.5 262t371 91q224 0 414 -94l-86 -199q-74 35 -156.5 61.5t-173.5 26.5z" />
+<glyph unicode="D" horiz-adv-x="1503" d="M1382 745q0 -362 -201 -553.5t-579 -191.5h-409v1462h452q349 0 543 -188t194 -529zM1130 737q0 525 -491 525h-207v-1061h170q528 0 528 536z" />
+<glyph unicode="E" horiz-adv-x="1143" d="M1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203z" />
+<glyph unicode="F" horiz-adv-x="1090" d="M430 0h-237v1462h825v-202h-588v-457h551v-203h-551v-600z" />
+<glyph unicode="G" horiz-adv-x="1487" d="M791 793h538v-734q-132 -43 -253.5 -61t-262.5 -18q-332 0 -512 196.5t-180 554.5q0 353 203 552.5t559 199.5q229 0 434 -88l-84 -199q-178 82 -356 82q-234 0 -370 -147t-136 -402q0 -268 122.5 -407.5t352.5 -139.5q116 0 248 29v377h-303v205z" />
+<glyph unicode="H" horiz-adv-x="1538" d="M1346 0h-240v659h-674v-659h-239v1462h239v-598h674v598h240v-1462z" />
+<glyph unicode="I" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239z" />
+<glyph unicode="J" horiz-adv-x="612" d="M8 -408q-98 0 -164 25v201q84 -21 146 -21q196 0 196 248v1417h240v-1409q0 -224 -106.5 -342.5t-311.5 -118.5z" />
+<glyph unicode="K" horiz-adv-x="1309" d="M1309 0h-277l-459 662l-141 -115v-547h-239v1462h239v-698q98 120 195 231l395 467h272q-383 -450 -549 -641z" />
+<glyph unicode="L" horiz-adv-x="1110" d="M193 0v1462h239v-1257h619v-205h-858z" />
+<glyph unicode="M" horiz-adv-x="1890" d="M825 0l-424 1221h-8q17 -272 17 -510v-711h-217v1462h337l406 -1163h6l418 1163h338v-1462h-230v723q0 109 5.5 284t9.5 212h-8l-439 -1219h-211z" />
+<glyph unicode="N" horiz-adv-x="1604" d="M1411 0h-293l-719 1165h-8l5 -65q14 -186 14 -340v-760h-217v1462h290l717 -1159h6q-2 23 -8 167.5t-6 225.5v766h219v-1462z" />
+<glyph unicode="O" horiz-adv-x="1612" d="M1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z" />
+<glyph unicode="P" horiz-adv-x="1260" d="M1161 1020q0 -229 -150 -351t-427 -122h-152v-547h-239v1462h421q274 0 410.5 -112t136.5 -330zM432 748h127q184 0 270 64t86 200q0 126 -77 188t-240 62h-166v-514z" />
+<glyph unicode="Q" horiz-adv-x="1612" d="M1491 733q0 -266 -101.5 -448t-295.5 -256l350 -377h-322l-276 328h-39q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139 q-215 0 -324.5 -139t-109.5 -408z" />
+<glyph unicode="R" horiz-adv-x="1309" d="M432 782h166q167 0 242 62t75 184q0 124 -81 178t-244 54h-158v-478zM432 584v-584h-239v1462h413q283 0 419 -106t136 -320q0 -273 -284 -389l413 -647h-272l-350 584h-236z" />
+<glyph unicode="S" horiz-adv-x="1126" d="M1036 397q0 -195 -141 -306t-389 -111t-406 77v226q100 -47 212.5 -74t209.5 -27q142 0 209.5 54t67.5 145q0 82 -62 139t-256 135q-200 81 -282 185t-82 250q0 183 130 288t349 105q210 0 418 -92l-76 -195q-195 82 -348 82q-116 0 -176 -50.5t-60 -133.5 q0 -57 24 -97.5t79 -76.5t198 -95q161 -67 236 -125t110 -131t35 -172z" />
+<glyph unicode="T" horiz-adv-x="1159" d="M698 0h-239v1257h-430v205h1099v-205h-430v-1257z" />
+<glyph unicode="U" horiz-adv-x="1520" d="M1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239z" />
+<glyph unicode="V" horiz-adv-x="1274" d="M1026 1462h248l-512 -1462h-252l-510 1462h246l305 -909q24 -65 51 -167.5t35 -152.5q13 76 40 176t44 148z" />
+<glyph unicode="W" horiz-adv-x="1937" d="M1542 0h-260l-248 872q-16 57 -40 164.5t-29 149.5q-10 -64 -32.5 -166t-37.5 -152l-242 -868h-260l-189 732l-192 730h244l209 -852q49 -205 70 -362q11 85 33 190t40 170l238 854h237l244 -858q35 -119 74 -356q15 143 72 364l208 850h242z" />
+<glyph unicode="X" horiz-adv-x="1274" d="M1270 0h-275l-366 598l-369 -598h-256l485 758l-454 704h266l338 -553l338 553h258l-457 -708z" />
+<glyph unicode="Y" horiz-adv-x="1212" d="M606 795l346 667h260l-487 -895v-567h-240v559l-485 903h260z" />
+<glyph unicode="Z" horiz-adv-x="1178" d="M1112 0h-1046v166l737 1091h-717v205h1006v-168l-740 -1089h760v-205z" />
+<glyph unicode="[" horiz-adv-x="676" d="M625 -324h-471v1786h471v-176h-256v-1433h256v-177z" />
+<glyph unicode="\" horiz-adv-x="799" d="M238 1462l544 -1462h-221l-545 1462h222z" />
+<glyph unicode="]" horiz-adv-x="676" d="M51 -147h256v1433h-256v176h469v-1786h-469v177z" />
+<glyph unicode="^" horiz-adv-x="1100" d="M29 535l436 935h121l485 -935h-194l-349 694l-307 -694h-192z" />
+<glyph unicode="_" horiz-adv-x="879" d="M883 -319h-887v135h887v-135z" />
+<glyph unicode="`" horiz-adv-x="1212" d="M690 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="a" horiz-adv-x="1188" d="M860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5z" />
+<glyph unicode="b" horiz-adv-x="1276" d="M733 1126q207 0 322.5 -150t115.5 -421q0 -272 -117 -423.5t-325 -151.5q-210 0 -326 151h-16l-43 -131h-176v1556h235v-370q0 -41 -4 -122t-6 -103h10q112 165 330 165zM672 934q-142 0 -204.5 -83.5t-64.5 -279.5v-16q0 -202 64 -292.5t209 -90.5q125 0 189.5 99 t64.5 286q0 377 -258 377z" />
+<glyph unicode="c" horiz-adv-x="1014" d="M614 -20q-251 0 -381.5 146.5t-130.5 420.5q0 279 136.5 429t394.5 150q175 0 315 -65l-71 -189q-149 58 -246 58q-287 0 -287 -381q0 -186 71.5 -279.5t209.5 -93.5q157 0 297 78v-205q-63 -37 -134.5 -53t-173.5 -16z" />
+<glyph unicode="d" horiz-adv-x="1276" d="M541 -20q-207 0 -323 150t-116 421q0 272 117.5 423.5t325.5 151.5q218 0 332 -161h12q-17 119 -17 188v403h236v-1556h-184l-41 145h-11q-113 -165 -331 -165zM604 170q145 0 211 81.5t68 264.5v33q0 209 -68 297t-213 88q-124 0 -191 -100.5t-67 -286.5 q0 -184 65 -280.5t195 -96.5z" />
+<glyph unicode="e" horiz-adv-x="1180" d="M651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5t-176 70.5 z" />
+<glyph unicode="f" horiz-adv-x="743" d="M723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178z" />
+<glyph unicode="g" horiz-adv-x="1139" d="M1102 1106v-129l-189 -35q26 -35 43 -86t17 -108q0 -171 -118 -269t-325 -98q-53 0 -96 8q-76 -47 -76 -110q0 -38 35.5 -57t130.5 -19h193q183 0 278 -78t95 -225q0 -188 -155 -290t-448 -102q-226 0 -345 80t-119 228q0 102 64.5 171.5t180.5 96.5q-47 20 -77.5 64.5 t-30.5 93.5q0 62 35 105t104 85q-86 37 -139.5 120.5t-53.5 195.5q0 180 113.5 279t323.5 99q47 0 98.5 -6.5t77.5 -13.5h383zM233 -172q0 -76 68.5 -117t192.5 -41q192 0 286 55t94 146q0 72 -51.5 102.5t-191.5 30.5h-178q-101 0 -160.5 -47.5t-59.5 -128.5zM334 748 q0 -104 53.5 -160t153.5 -56q204 0 204 218q0 108 -50.5 166.5t-153.5 58.5q-102 0 -154.5 -58t-52.5 -169z" />
+<glyph unicode="h" horiz-adv-x="1300" d="M1141 0h-236v680q0 128 -51.5 191t-163.5 63q-148 0 -217.5 -88.5t-69.5 -296.5v-549h-235v1556h235v-395q0 -95 -12 -203h15q48 80 133.5 124t199.5 44q402 0 402 -405v-721z" />
+<glyph unicode="i" horiz-adv-x="571" d="M403 0h-235v1106h235v-1106zM154 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5z" />
+<glyph unicode="j" horiz-adv-x="571" d="M55 -492q-106 0 -176 25v186q68 -18 139 -18q150 0 150 170v1235h235v-1251q0 -171 -89.5 -259t-258.5 -88zM154 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5z" />
+<glyph unicode="k" horiz-adv-x="1171" d="M395 584l133 166l334 356h271l-445 -475l473 -631h-276l-355 485l-129 -106v-379h-233v1556h233v-759l-12 -213h6z" />
+<glyph unicode="l" horiz-adv-x="571" d="M403 0h-235v1556h235v-1556z" />
+<glyph unicode="m" horiz-adv-x="1958" d="M1100 0h-236v682q0 127 -48 189.5t-150 62.5q-136 0 -199.5 -88.5t-63.5 -294.5v-551h-235v1106h184l33 -145h12q46 79 133.5 122t192.5 43q255 0 338 -174h16q49 82 138 128t204 46q198 0 288.5 -100t90.5 -305v-721h-235v682q0 127 -48.5 189.5t-150.5 62.5 q-137 0 -200.5 -85.5t-63.5 -262.5v-586z" />
+<glyph unicode="n" horiz-adv-x="1300" d="M1141 0h-236v680q0 128 -51.5 191t-163.5 63q-149 0 -218 -88t-69 -295v-551h-235v1106h184l33 -145h12q50 79 142 122t204 43q398 0 398 -405v-721z" />
+<glyph unicode="o" horiz-adv-x="1251" d="M1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281z" />
+<glyph unicode="p" horiz-adv-x="1276" d="M729 -20q-210 0 -326 151h-14q14 -140 14 -170v-453h-235v1598h190q8 -31 33 -148h12q110 168 330 168q207 0 322.5 -150t115.5 -421t-117.5 -423t-324.5 -152zM672 934q-140 0 -204.5 -82t-64.5 -262v-35q0 -202 64 -292.5t209 -90.5q122 0 188 100t66 285 q0 186 -65.5 281.5t-192.5 95.5z" />
+<glyph unicode="q" horiz-adv-x="1276" d="M606 168q148 0 212.5 85.5t64.5 258.5v37q0 205 -66.5 295t-214.5 90q-126 0 -192 -100t-66 -287q0 -379 262 -379zM539 -20q-205 0 -321 150.5t-116 420.5t118 422.5t325 152.5q104 0 186.5 -38.5t147.5 -126.5h8l26 145h195v-1598h-236v469q0 44 4 93t7 75h-13 q-104 -165 -331 -165z" />
+<glyph unicode="r" horiz-adv-x="883" d="M729 1126q71 0 117 -10l-23 -219q-50 12 -104 12q-141 0 -228.5 -92t-87.5 -239v-578h-235v1106h184l31 -195h12q55 99 143.5 157t190.5 58z" />
+<glyph unicode="s" horiz-adv-x="997" d="M911 315q0 -162 -118 -248.5t-338 -86.5q-221 0 -355 67v203q195 -90 363 -90q217 0 217 131q0 42 -24 70t-79 58t-153 68q-191 74 -258.5 148t-67.5 192q0 142 114.5 220.5t311.5 78.5q195 0 369 -79l-76 -177q-179 74 -301 74q-186 0 -186 -106q0 -52 48.5 -88 t211.5 -99q137 -53 199 -97t92 -101.5t30 -137.5z" />
+<glyph unicode="t" horiz-adv-x="805" d="M580 170q86 0 172 27v-177q-39 -17 -100.5 -28.5t-127.5 -11.5q-334 0 -334 352v596h-151v104l162 86l80 234h145v-246h315v-178h-315v-592q0 -85 42.5 -125.5t111.5 -40.5z" />
+<glyph unicode="u" horiz-adv-x="1300" d="M948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185z" />
+<glyph unicode="v" horiz-adv-x="1096" d="M420 0l-420 1106h248l225 -643q58 -162 70 -262h8q9 72 70 262l225 643h250l-422 -1106h-254z" />
+<glyph unicode="w" horiz-adv-x="1673" d="M1075 0l-143 516q-26 82 -94 381h-9q-58 -270 -92 -383l-147 -514h-260l-310 1106h240l141 -545q48 -202 68 -346h6q10 73 30.5 167.5t35.5 141.5l168 582h258l163 -582q15 -49 37.5 -150t26.5 -157h8q15 123 70 344l143 545h236l-312 -1106h-264z" />
+<glyph unicode="x" horiz-adv-x="1128" d="M414 565l-371 541h268l252 -387l254 387h266l-372 -541l391 -565h-266l-273 414l-272 -414h-266z" />
+<glyph unicode="y" horiz-adv-x="1098" d="M0 1106h256l225 -627q51 -134 68 -252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 17v186q53 -12 121 -12q170 0 239 197l41 104z" />
+<glyph unicode="z" horiz-adv-x="979" d="M907 0h-839v145l559 781h-525v180h789v-164l-547 -762h563v-180z" />
+<glyph unicode="{" horiz-adv-x="791" d="M311 287q0 186 -266 186v191q135 0 200.5 45.5t65.5 138.5v311q0 156 108.5 229.5t325.5 73.5v-182q-114 -5 -165.5 -46.5t-51.5 -123.5v-297q0 -199 -229 -238v-12q229 -36 229 -237v-299q0 -82 51 -124t166 -44v-183q-231 2 -332.5 78.5t-101.5 247.5v285z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M473 1552h180v-2033h-180v2033z" />
+<glyph unicode="}" horiz-adv-x="760" d="M463 -20q0 -156 -99.5 -229t-318.5 -75v183q95 1 148 38.5t53 129.5v262q0 121 53 187t176 87v12q-229 39 -229 238v297q0 82 -45.5 123.5t-155.5 46.5v182q223 0 320.5 -76.5t97.5 -250.5v-287q0 -100 63.5 -142t188.5 -42v-191q-123 0 -187.5 -42.5t-64.5 -143.5v-307z " />
+<glyph unicode="~" d="M330 692q-50 0 -111.5 -30t-122.5 -91v191q99 108 250 108q66 0 125 -13t147 -50q131 -55 220 -55q52 0 114.5 31t120.5 89v-190q-105 -111 -250 -111q-65 0 -127.5 15.5t-146.5 50.5q-127 55 -219 55z" />
+<glyph unicode="¡" horiz-adv-x="565" d="M193 645h174l51 -1016h-277zM430 965q0 -74 -37.5 -113t-111.5 -39q-72 0 -110 39.5t-38 112.5q0 69 38 111t110 42t110.5 -40.5t38.5 -112.5z" />
+<glyph unicode="¢" d="M987 238q-119 -59 -258 -64v-194h-156v200q-207 31 -307 171t-100 390q0 254 100.5 397t306.5 175v170h158v-162q152 -5 283 -66l-70 -188q-146 59 -250 59q-146 0 -216 -95t-70 -288q0 -194 72 -283t210 -89q75 0 142.5 15t154.5 52v-200z" />
+<glyph unicode="£" d="M690 1481q194 0 375 -82l-76 -182q-162 71 -284 71q-205 0 -205 -219v-244h397v-172h-397v-182q0 -91 -33 -155t-113 -109h756v-207h-1038v195q98 30 145 96t47 178v184h-188v172h188v256q0 188 113.5 294t312.5 106z" />
+<glyph unicode="¤" d="M186 723q0 109 64 213l-133 133l121 119l131 -129q100 63 215 63t213 -65l133 131l121 -117l-131 -133q63 -100 63 -215q0 -119 -63 -217l129 -129l-119 -119l-133 129q-99 -61 -213 -61q-126 0 -215 61l-131 -127l-119 119l131 129q-64 99 -64 215zM354 723 q0 -98 68 -164.5t162 -66.5q97 0 165 66.5t68 164.5q0 97 -68 165t-165 68q-93 0 -161.5 -68t-68.5 -165z" />
+<glyph unicode="¥" d="M584 797l321 665h244l-399 -760h227v-151h-281v-154h281v-153h-281v-244h-225v244h-283v153h283v154h-283v151h224l-394 760h246z" />
+<glyph unicode="¦" horiz-adv-x="1128" d="M473 1552h180v-794h-180v794zM473 315h180v-796h-180v796z" />
+<glyph unicode="§" horiz-adv-x="1026" d="M129 807q0 80 38.5 145.5t111.5 108.5q-146 83 -146 235q0 129 109.5 202t294.5 73q91 0 174 -17t182 -59l-68 -162q-116 50 -176 63t-121 13q-194 0 -194 -109q0 -54 55 -93.5t191 -90.5q175 -68 250 -146.5t75 -187.5q0 -177 -139 -266q139 -80 139 -223 q0 -142 -118 -224.5t-326 -82.5q-212 0 -346 71v179q77 -40 173 -65.5t177 -25.5q235 0 235 131q0 43 -21 70t-71 54t-147 65q-141 55 -206 101.5t-95.5 105t-30.5 135.5zM313 827q0 -45 24 -80t78.5 -69t194.5 -90q109 65 109 168q0 75 -62 126.5t-221 104.5 q-54 -16 -88.5 -61.5t-34.5 -98.5z" />
+<glyph unicode="¨" horiz-adv-x="1212" d="M293 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM686 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M893 1034q-111 0 -171 -80.5t-60 -222.5q0 -147 54 -226t177 -79q55 0 118 15t109 36v-158q-115 -51 -235 -51q-197 0 -305.5 120.5t-108.5 342.5q0 214 110 337.5t306 123.5q138 0 274 -70l-65 -143q-106 55 -203 55zM100 731q0 200 100 375t275 276t377 101 q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM223 731q0 -170 84.5 -315.5t230.5 -229.5t314 -84q170 0 316 85.5t229.5 230t83.5 313.5q0 168 -84.5 314.5t-231 230.5t-313.5 84q-168 0 -312.5 -83 t-230.5 -229t-86 -317z" />
+<glyph unicode="ª" horiz-adv-x="754" d="M547 782l-29 97q-46 -55 -105 -82t-130 -27q-113 0 -169.5 52.5t-56.5 158.5q0 104 84 159.5t252 61.5l107 4q0 72 -34.5 108t-103.5 36q-90 0 -210 -56l-54 115q144 70 285 70q138 0 207 -62.5t69 -187.5v-447h-112zM401 1098q-71 -2 -125.5 -34t-54.5 -81q0 -88 96 -88 q91 0 137 41t46 123v43z" />
+<glyph unicode="«" horiz-adv-x="1139" d="M82 561l356 432l168 -94l-282 -350l282 -348l-168 -97l-356 431v26zM532 561l357 432l168 -94l-283 -350l283 -348l-168 -97l-357 431v26z" />
+<glyph unicode="¬" d="M1073 256h-178v377h-799v178h977v-555z" />
+<glyph unicode="­" horiz-adv-x="659" d="M72 449zM72 449v200h514v-200h-514z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M748 770h69q74 0 112 35t38 100q0 72 -36.5 100.5t-115.5 28.5h-67v-264zM1157 909q0 -171 -153 -233l237 -397h-211l-192 346h-90v-346h-189v903h262q174 0 255 -68t81 -205zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370 t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM223 731q0 -170 84.5 -315.5t230.5 -229.5t314 -84q170 0 316 85.5t229.5 230t83.5 313.5q0 168 -84.5 314.5t-231 230.5t-313.5 84q-168 0 -312.5 -83t-230.5 -229t-86 -317z" />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v164h1036v-164z" />
+<glyph unicode="°" horiz-adv-x="877" d="M109 1153q0 135 95 232.5t234 97.5q138 0 233 -96t95 -234q0 -139 -96 -233.5t-232 -94.5q-88 0 -164.5 43.5t-120.5 119.5t-44 165zM262 1153q0 -70 51 -122t125 -52t125 51.5t51 122.5q0 76 -52 127t-124 51t-124 -52t-52 -126z" />
+<glyph unicode="±" d="M494 664h-398v178h398v407h180v-407h399v-178h-399v-406h-180v406zM96 0v178h977v-178h-977z" />
+<glyph unicode="²" horiz-adv-x="743" d="M678 586h-627v135l230 225q117 112 149.5 165t32.5 112q0 52 -32 79t-83 27q-93 0 -201 -88l-94 121q139 119 309 119q136 0 211.5 -66t75.5 -180q0 -83 -46 -158.5t-183 -202.5l-139 -129h397v-159z" />
+<glyph unicode="³" horiz-adv-x="743" d="M645 1251q0 -75 -40.5 -122.5t-119.5 -86.5q94 -21 141.5 -76t47.5 -132q0 -127 -93 -196t-266 -69q-148 0 -270 62v157q145 -79 270 -79q179 0 179 135q0 125 -199 125h-115v133h105q184 0 184 129q0 52 -34.5 80t-90.5 28q-57 0 -105.5 -20t-105.5 -57l-84 114 q61 46 134 75.5t171 29.5q134 0 212.5 -61.5t78.5 -168.5z" />
+<glyph unicode="´" horiz-adv-x="1212" d="M362 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="µ" horiz-adv-x="1309" d="M403 422q0 -252 218 -252q146 0 215 88.5t69 296.5v551h236v-1106h-183l-34 147h-13q-48 -83 -119.5 -125t-175.5 -42q-140 0 -219 90h-4q3 -28 6.5 -117t3.5 -125v-320h-235v1598h235v-684z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1143 -260h-137v1663h-191v-1663h-137v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h580v-1816z" />
+<glyph unicode="·" horiz-adv-x="563" d="M133 723q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="¸" horiz-adv-x="442" d="M426 -270q0 -222 -305 -222q-66 0 -121 15v137q54 -14 123 -14q54 0 85.5 16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5z" />
+<glyph unicode="¹" horiz-adv-x="743" d="M532 586h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111l-88 112l281 209h167v-876z" />
+<glyph unicode="º" horiz-adv-x="780" d="M719 1124q0 -164 -87.5 -259t-244.5 -95q-150 0 -238 95.5t-88 258.5q0 169 88.5 262t241.5 93q152 0 240 -94.5t88 -260.5zM223 1124q0 -111 39 -166t127 -55t127 55t39 166q0 113 -39 167.5t-127 54.5t-127 -54.5t-39 -167.5z" />
+<glyph unicode="»" horiz-adv-x="1139" d="M1057 535l-359 -431l-168 97l283 348l-283 350l168 94l359 -432v-26zM606 535l-358 -431l-168 97l282 348l-282 350l168 94l358 -432v-26z" />
+<glyph unicode="¼" horiz-adv-x="1700" d="M60 0zM1333 1462l-856 -1462h-192l858 1462h190zM508 586h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111l-88 112l281 209h167v-876zM1585 177h-125v-176h-192v176h-392v127l396 579h188v-563h125v-143zM1268 320v178q0 97 6 197q-52 -104 -88 -158l-148 -217h230z " />
+<glyph unicode="½" horiz-adv-x="1700" d="M46 0zM1298 1462l-856 -1462h-192l858 1462h190zM494 586h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111l-88 112l281 209h167v-876zM1608 1h-627v135l230 225q117 112 149.5 165t32.5 112q0 52 -32 79t-83 27q-93 0 -201 -88l-94 121q139 119 309 119 q136 0 211.5 -66t75.5 -180q0 -83 -46 -158.5t-183 -202.5l-139 -129h397v-159z" />
+<glyph unicode="¾" horiz-adv-x="1700" d="M55 0zM1415 1462l-856 -1462h-192l858 1462h190zM1640 177h-125v-176h-192v176h-392v127l396 579h188v-563h125v-143zM1323 320v178q0 97 6 197q-52 -104 -88 -158l-148 -217h230zM655 1251q0 -75 -40.5 -122.5t-119.5 -86.5q94 -21 141.5 -76t47.5 -132q0 -127 -93 -196 t-266 -69q-148 0 -270 62v157q145 -79 270 -79q179 0 179 135q0 125 -199 125h-115v133h105q184 0 184 129q0 52 -34.5 80t-90.5 28q-57 0 -105.5 -20t-105.5 -57l-84 114q61 46 134 75.5t171 29.5q134 0 212.5 -61.5t78.5 -168.5z" />
+<glyph unicode="¿" horiz-adv-x="928" d="M651 645v-63q0 -106 -41 -181t-143 -155q-124 -98 -155 -147t-31 -124q0 -78 54 -125t161 -47q90 0 174 27.5t166 65.5l82 -179q-220 -110 -424 -110q-207 0 -323 95.5t-116 264.5q0 73 21 130t64 109t157 142q94 76 125 124.5t31 127.5v45h198zM692 965 q0 -74 -37.5 -113t-111.5 -39q-72 0 -110 39.5t-38 112.5q0 69 38 111t110 42t110.5 -40.5t38.5 -112.5z" />
+<glyph unicode="À" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM662 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="Á" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM532 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Â" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM897 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z " />
+<glyph unicode="Ã" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM821 1579q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73 q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="Ä" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM363 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88z M756 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="Å" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM913 1577q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5q0 101 63.5 163.5t172.5 62.5 q104 0 171.5 -62t67.5 -162zM780 1575q0 50 -30 78.5t-76 28.5q-47 0 -77 -28.5t-30 -78.5q0 -106 107 -106q46 0 76 27.5t30 78.5z" />
+<glyph unicode="Æ" horiz-adv-x="1868" d="M1747 0h-811v406h-504l-188 -406h-246l678 1462h1071v-202h-571v-398h532v-200h-532v-459h571v-203zM522 612h414v641h-123z" />
+<glyph unicode="Ç" horiz-adv-x="1298" d="M121 0zM815 1278q-206 0 -324 -146t-118 -403q0 -269 113.5 -407t328.5 -138q93 0 180 18.5t181 47.5v-205q-172 -65 -390 -65q-321 0 -493 194.5t-172 556.5q0 228 83.5 399t241.5 262t371 91q224 0 414 -94l-86 -199q-74 35 -156.5 61.5t-173.5 26.5zM952 -270 q0 -222 -305 -222q-66 0 -121 15v137q54 -14 123 -14q54 0 85.5 16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5z" />
+<glyph unicode="È" horiz-adv-x="1143" d="M193 0zM1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203zM617 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="É" horiz-adv-x="1143" d="M193 0zM1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203zM440 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Ê" horiz-adv-x="1143" d="M193 0zM1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203zM831 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="Ë" horiz-adv-x="1143" d="M193 0zM1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203zM297 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM690 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5 t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="Ì" horiz-adv-x="625" d="M0 0zM193 0v1462h239v-1462h-239zM322 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="Í" horiz-adv-x="625" d="M179 0zM193 0v1462h239v-1462h-239zM179 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Î" horiz-adv-x="625" d="M0 0zM193 0v1462h239v-1462h-239zM536 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="Ï" horiz-adv-x="625" d="M1 0zM193 0v1462h239v-1462h-239zM1 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM394 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="Ð" horiz-adv-x="1497" d="M1374 745q0 -360 -201 -552.5t-579 -192.5h-401v623h-146v200h146v639h446q347 0 541 -188.5t194 -528.5zM1122 737q0 260 -124.5 392.5t-368.5 132.5h-197v-439h307v-200h-307v-422h160q530 0 530 536z" />
+<glyph unicode="Ñ" horiz-adv-x="1604" d="M193 0zM1411 0h-293l-719 1165h-8l5 -65q14 -186 14 -340v-760h-217v1462h290l717 -1159h6q-2 23 -8 167.5t-6 225.5v766h219v-1462zM954 1579q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39 t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="Ò" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M809 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="Ó" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M657 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Ô" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M1024 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="Õ" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M950 1579q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="Ö" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M496 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM889 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="×" d="M457 723l-326 326l125 127l328 -326l329 326l125 -123l-329 -330l325 -328l-123 -125l-329 326l-324 -326l-125 125z" />
+<glyph unicode="Ø" horiz-adv-x="1612" d="M1491 733q0 -357 -178.5 -555t-505.5 -198q-213 0 -361 81l-94 -137l-141 94l98 144q-188 196 -188 573q0 362 178.5 556t509.5 194q199 0 354 -82l90 129l142 -92l-99 -140q195 -199 195 -567zM1237 733q0 225 -80 361l-586 -850q97 -60 236 -60q213 0 321.5 138 t108.5 411zM375 733q0 -231 78 -362l587 850q-92 59 -231 59q-215 0 -324.5 -139t-109.5 -408z" />
+<glyph unicode="Ù" horiz-adv-x="1520" d="M180 0zM1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239zM745 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="Ú" horiz-adv-x="1520" d="M180 0zM1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239zM600 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Û" horiz-adv-x="1520" d="M180 0zM1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239zM977 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z " />
+<glyph unicode="Ü" horiz-adv-x="1520" d="M180 0zM1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239zM445 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29 t-33.5 88zM838 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="Ý" horiz-adv-x="1212" d="M0 0zM606 795l346 667h260l-487 -895v-567h-240v559l-485 903h260zM450 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Þ" horiz-adv-x="1268" d="M1169 776q0 -227 -146 -349t-423 -122h-168v-305h-239v1462h239v-243h197q268 0 404 -112t136 -331zM432 504h133q187 0 273 63t86 203q0 127 -78 188.5t-250 61.5h-164v-516z" />
+<glyph unicode="ß" horiz-adv-x="1364" d="M1149 1253q0 -74 -38.5 -140.5t-104.5 -117.5q-90 -69 -117 -98t-27 -57q0 -30 22.5 -55.5t79.5 -63.5l95 -64q92 -62 135.5 -109.5t65.5 -103.5t22 -127q0 -165 -107 -251t-311 -86q-190 0 -299 65v199q58 -37 139 -61.5t148 -24.5q192 0 192 151q0 61 -34.5 105 t-155.5 118q-119 73 -171 135t-52 146q0 63 34 115.5t105 105.5q75 55 107 97.5t32 93.5q0 72 -67 112.5t-178 40.5q-127 0 -194 -54t-67 -159v-1165h-235v1169q0 193 128.5 295.5t367.5 102.5q225 0 355 -84t130 -230z" />
+<glyph unicode="à" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM587 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="á" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM438 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="â" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM814 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="ã" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM748 1241q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115 h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="ä" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM282 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM675 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31 t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="å" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM841 1468q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5q0 101 63.5 163.5t172.5 62.5q104 0 171.5 -62t67.5 -162zM708 1466q0 50 -30 78.5t-76 28.5 q-47 0 -77 -28.5t-30 -78.5q0 -106 107 -106q46 0 76 27.5t30 78.5z" />
+<glyph unicode="æ" horiz-adv-x="1817" d="M90 317q0 172 121.5 258.5t370.5 94.5l188 6v76q0 194 -201 194q-141 0 -307 -82l-74 166q88 47 192.5 71.5t203.5 24.5q241 0 340 -155q120 155 346 155q206 0 328 -134.5t122 -362.5v-127h-712q10 -336 301 -336q184 0 356 80v-191q-86 -41 -171.5 -58t-195.5 -17 q-140 0 -248.5 54.5t-175.5 164.5q-94 -125 -190.5 -172t-241.5 -47q-165 0 -258.5 90t-93.5 247zM334 315q0 -155 166 -155q124 0 196 72.5t72 199.5v96l-135 -6q-155 -6 -227 -54.5t-72 -152.5zM1266 948q-112 0 -177.5 -69.5t-74.5 -208.5h473q0 130 -58.5 204t-162.5 74 z" />
+<glyph unicode="ç" horiz-adv-x="1014" d="M102 0zM614 -20q-251 0 -381.5 146.5t-130.5 420.5q0 279 136.5 429t394.5 150q175 0 315 -65l-71 -189q-149 58 -246 58q-287 0 -287 -381q0 -186 71.5 -279.5t209.5 -93.5q157 0 297 78v-205q-63 -37 -134.5 -53t-173.5 -16zM782 -270q0 -222 -305 -222q-66 0 -121 15 v137q54 -14 123 -14q54 0 85.5 16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5z" />
+<glyph unicode="è" horiz-adv-x="1180" d="M102 0zM651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5 t-176 70.5zM609 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="é" horiz-adv-x="1180" d="M102 0zM651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5 t-176 70.5zM458 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="ê" horiz-adv-x="1180" d="M102 0zM651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5 t-176 70.5zM838 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="ë" horiz-adv-x="1180" d="M102 0zM651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5 t-176 70.5zM307 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM700 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ì" horiz-adv-x="571" d="M0 0zM403 0h-235v1106h235v-1106zM259 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="í" horiz-adv-x="571" d="M156 0zM403 0h-235v1106h235v-1106zM156 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="î" horiz-adv-x="571" d="M0 0zM403 0h-235v1106h235v-1106zM511 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="ï" horiz-adv-x="571" d="M0 0zM403 0h-235v1106h235v-1106zM-25 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM368 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ð" horiz-adv-x="1243" d="M1149 567q0 -279 -137.5 -433t-388.5 -154q-235 0 -378 136t-143 365q0 231 131 365.5t351 134.5q214 0 301 -111l8 4q-62 189 -227 345l-250 -150l-88 133l204 119q-86 59 -167 102l84 146q140 -63 258 -144l231 138l88 -129l-188 -113q152 -140 231.5 -330t79.5 -424z M909 522q0 127 -75.5 202t-206.5 75q-151 0 -218 -82t-67 -240q0 -153 74 -234t211 -81q148 0 215 91t67 269z" />
+<glyph unicode="ñ" horiz-adv-x="1300" d="M168 0zM1141 0h-236v680q0 128 -51.5 191t-163.5 63q-149 0 -218 -88t-69 -295v-551h-235v1106h184l33 -145h12q50 79 142 122t204 43q398 0 398 -405v-721zM809 1241q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73 q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="ò" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM621 1241q-69 52 -174.5 150.5t-153.5 156.5 v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="ó" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM473 1241v25q57 70 117.5 156t95.5 147h273 v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="ô" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM850 1241q-123 73 -228 180 q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="õ" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM775 1241q-42 0 -82.5 17.5t-79.5 39t-76 39 t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="ö" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM311 1399q0 62 33.5 89.5t81.5 27.5 q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM704 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="÷" d="M96 633v178h977v-178h-977zM457 373q0 64 31.5 99.5t95.5 35.5q61 0 93 -36t32 -99t-34 -100t-91 -37q-60 0 -93.5 35.5t-33.5 101.5zM457 1071q0 64 31.5 99.5t95.5 35.5q61 0 93 -36t32 -99t-34 -100t-91 -37q-60 0 -93.5 35.5t-33.5 101.5z" />
+<glyph unicode="ø" horiz-adv-x="1251" d="M1149 555q0 -271 -139 -423t-387 -152q-144 0 -250 57l-76 -109l-135 90l82 117q-142 155 -142 420q0 269 138 420t389 151q144 0 258 -63l69 100l136 -92l-78 -108q135 -152 135 -408zM344 555q0 -135 37 -219l391 559q-60 39 -147 39q-148 0 -214.5 -98t-66.5 -281z M907 555q0 121 -33 203l-387 -553q54 -33 140 -33q280 0 280 383z" />
+<glyph unicode="ù" horiz-adv-x="1300" d="M158 0zM948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185zM617 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25 h-158z" />
+<glyph unicode="ú" horiz-adv-x="1300" d="M158 0zM948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185zM501 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5 h-156z" />
+<glyph unicode="û" horiz-adv-x="1300" d="M158 0zM948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185zM871 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260 q63 -110 256 -303v-25h-159z" />
+<glyph unicode="ü" horiz-adv-x="1300" d="M158 0zM948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185zM332 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32 q-48 0 -81.5 29t-33.5 88zM725 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ý" horiz-adv-x="1098" d="M0 0zM0 1106h256l225 -627q51 -134 68 -252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 17v186q53 -12 121 -12q170 0 239 197l41 104zM401 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="þ" horiz-adv-x="1276" d="M403 961q61 86 142.5 125.5t187.5 39.5q206 0 322 -151t116 -420q0 -272 -116.5 -423.5t-321.5 -151.5q-219 0 -330 149h-14l8 -72l6 -92v-457h-235v2048h235v-430l-7 -138l-3 -27h10zM674 934q-142 0 -206.5 -82t-64.5 -260v-37q0 -202 64 -292.5t209 -90.5 q254 0 254 385q0 190 -61.5 283.5t-194.5 93.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1098" d="M0 0zM0 1106h256l225 -627q51 -134 68 -252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 17v186q53 -12 121 -12q170 0 239 197l41 104zM239 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29 t-33.5 88zM632 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ı" horiz-adv-x="571" d="M403 0h-235v1106h235v-1106z" />
+<glyph unicode="Œ" horiz-adv-x="1942" d="M1819 0h-820q-102 -20 -211 -20q-320 0 -493.5 196.5t-173.5 558.5q0 360 172 555t491 195q115 0 209 -23h826v-202h-576v-398h539v-200h-539v-459h576v-203zM793 1280q-208 0 -315 -139t-107 -408t106 -409t314 -140q129 0 213 35v1024q-80 37 -211 37z" />
+<glyph unicode="œ" horiz-adv-x="1966" d="M1438 -20q-281 0 -420 194q-132 -194 -400 -194q-236 0 -376 155t-140 420q0 272 137 421.5t382 149.5q121 0 223 -49t168 -145q131 194 379 194q221 0 349 -133.5t128 -365.5v-127h-738q11 -164 85.5 -249t228.5 -85q102 0 187 18.5t181 61.5v-191q-84 -40 -171.5 -57.5 t-202.5 -17.5zM344 555q0 -189 65.5 -286t211.5 -97q141 0 206.5 95.5t65.5 283.5q0 192 -66 287.5t-211 95.5q-143 0 -207.5 -95t-64.5 -284zM1393 948q-110 0 -177.5 -69.5t-78.5 -208.5h497q0 134 -63 206t-178 72z" />
+<glyph unicode="Ÿ" horiz-adv-x="1212" d="M0 0zM606 795l346 667h260l-487 -895v-567h-240v559l-485 903h260zM293 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM686 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5 q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ˆ" horiz-adv-x="1227" d="M838 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M827 1468q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5q0 101 63.5 163.5t172.5 62.5q104 0 171.5 -62t67.5 -162zM694 1466q0 50 -30 78.5t-76 28.5q-47 0 -77 -28.5t-30 -78.5q0 -106 107 -106q46 0 76 27.5t30 78.5z" />
+<glyph unicode="˜" horiz-adv-x="1227" d="M776 1241q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M82 455v190h860v-190h-860z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M82 455v190h1884v-190h-1884z" />
+<glyph unicode="‘" horiz-adv-x="395" d="M37 961l-12 22q20 83 71 224t105 255h170q-64 -256 -101 -501h-233z" />
+<glyph unicode="’" horiz-adv-x="395" d="M356 1462l15 -22q-53 -209 -176 -479h-170q69 289 100 501h231z" />
+<glyph unicode="‚" horiz-adv-x="549" d="M412 215q-48 -186 -176 -479h-173q69 270 103 502h231z" />
+<glyph unicode="“" horiz-adv-x="813" d="M440 983q53 203 178 479h170q-69 -296 -100 -501h-233zM25 983q20 83 71 224t105 255h170q-64 -256 -101 -501h-233z" />
+<glyph unicode="”" horiz-adv-x="813" d="M371 1440q-53 -209 -176 -479h-170q69 289 100 501h231zM788 1440q-53 -209 -176 -479h-172q69 271 103 501h231z" />
+<glyph unicode="„" horiz-adv-x="944" d="M391 215q-55 -214 -176 -479h-172q66 260 102 502h232zM809 215q-48 -186 -176 -479h-172q66 260 102 502h232z" />
+<glyph unicode="•" horiz-adv-x="770" d="M131 748q0 138 66 210t188 72q121 0 187.5 -72.5t66.5 -209.5q0 -135 -67 -209t-187 -74t-187 72.5t-67 210.5z" />
+<glyph unicode="…" horiz-adv-x="1677" d="M133 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM690 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM1247 125q0 73 38 112t110 39q73 0 111 -40.5 t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="688" d="M82 561l356 432l168 -94l-282 -350l282 -348l-168 -97l-356 431v26z" />
+<glyph unicode="›" horiz-adv-x="688" d="M606 535l-358 -431l-168 97l282 348l-282 350l168 94l358 -432v-26z" />
+<glyph unicode="⁄" horiz-adv-x="266" d="M655 1462l-856 -1462h-192l858 1462h190z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="743" d="M725 762h-125v-176h-192v176h-392v127l396 579h188v-563h125v-143zM408 905v178q0 97 6 197q-52 -104 -88 -158l-148 -217h230z" />
+<glyph unicode="€" horiz-adv-x="1188" d="M799 1278q-141 0 -230.5 -84t-119.5 -254h456v-154h-471l-2 -45v-55l2 -39h408v-153h-391q64 -312 364 -312q143 0 293 62v-203q-131 -61 -305 -61q-241 0 -391.5 132t-196.5 382h-152v153h136l-2 37v37l2 65h-136v154h150q38 251 191 394t395 143q200 0 358 -88 l-84 -187q-154 76 -274 76z" />
+<glyph unicode="™" horiz-adv-x="1561" d="M375 741h-146v592h-202v129h553v-129h-205v-592zM963 741l-185 543h-6l4 -119v-424h-141v721h217l178 -534l187 534h210v-721h-147v414l4 129h-6l-193 -543h-122z" />
+<glyph unicode="" horiz-adv-x="1105" d="M0 1105h1105v-1105h-1105v1105z" />
+<glyph horiz-adv-x="1276" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.ttf
new file mode 100755
index 0000000..b329084
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff
new file mode 100755
index 0000000..28d6ade
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.eot
new file mode 100755
index 0000000..11493f0
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.svg
new file mode 100755
index 0000000..18f6e80
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.svg
@@ -0,0 +1,65 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+<json>
+<![CDATA[
+{
+ "fontFamily": "PatternFlyIcons-webfont",
+ "fontURL": "https://www.patternfly.org",
+ "designer": "Red Hat",
+ "designerURL": "",
+ "license": "Apache 2.0",
+ "licenseURL": "http://www.apache.org/licenses/LICENSE-2.0.html",
+ "majorVersion": 2,
+ "minorVersion": 0,
+ "version": "Version 2.0",
+ "fontId": "PatternFlyIcons-webfont",
+ "psName": "PatternFlyIcons-webfont",
+ "subFamily": "Regular",
+ "fullName": "PatternFlyIcons-webfont",
+ "description": "Font generated by IcoMoon."
+}
+]]>
+</json>
+</metadata>
+<defs>
+<font id="PatternFlyIcons-webfont" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode=" " horiz-adv-x="512" d="" />
+<glyph unicode="" glyph-name="screen" data-tags="screen, monitor, computer, pc, desktop" d="M1024 146.286v731.429h-1024v-731.429h438.857v-73.143h-219.429v-73.143h585.143v73.143h-219.429v73.143h438.857zM146.286 731.428h731.429v-438.857h-731.429v438.857z" />
+<glyph unicode="" glyph-name="save" data-tags="save" d="M738.448 397.076l-184.514-223.726c-36.11-36.112-48.226-35.646-83.87 0l-184.514 223.726c-23.063 23.065-15.248 41.936 17.369 41.936h135.938v201.159c-0.002 5.298 0.933 9.666 4.375 13.109 3.442 3.44 7.813 5.166 13.111 5.161h109.735c5.296 0.005 9.666-1.719 13.104-5.161 3.445-3.442 5.959-7.815 5.959-13.109v-201.159h135.938c32.619 0 40.434-18.871 17.369-41.936v0zM877.714 950.857h-877.714v-1024h1024v877.735l-146.286 146.265zM877.714 73.143h-732.425l0.997 731.429h658.286l73.143-73.143v-658.286z" />
+<glyph unicode="" glyph-name="ok" data-tags="ok" d="M763.431 521.737c0.002-10.286-3.422-18.855-10.281-25.714l-205.835-204.24-58.288-58.29c-6.857-6.857-15.431-10.286-25.714-10.286-10.286 0-18.857 3.429-25.714 10.286l-171.227 171.189c-6.857 6.862-10.283 15.433-10.283 25.719s3.426 18.857 10.283 25.714l50.206 50.206c6.857 6.857 15.429 10.286 25.714 10.281 10.29 0 18.857-3.424 25.717-10.286l93.691-93.646 188.203 186.608c6.857 6.857 15.429 10.286 25.719 10.286 10.283 0.002 18.855-3.429 25.714-10.286l51.817-51.822c6.855-6.862 10.283-15.433 10.279-25.719v0zM512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.235 229.721 511.975 512.059 511.975 282.281 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.888 173.904-387.691 387.728-387.691 213.717 0 387.671 173.803 387.671 387.691 0.005 213.785-173.957 387.643-387.671 387.643z" />
+<glyph unicode="" glyph-name="messages" data-tags="messages" horiz-adv-x="951" d="M672.75 578.352l10.249 20.555c0 0 35.71 80.126-45.57 104.654-75.518 22.789-353.326 106.617-392.35 118.391l7.25 55.963c4.576 35.349-19.209 72.939-54.553 72.939s-68.855-28.654-73.433-64l-124.345-960h129.145l50.066 386.533 213.232 61.563-3.671-13.854c0 0-3.627-85.241 103.961-53.019 56.818 17.015 458.126 186.702 458.126 186.702l-278.107 83.573z" />
+<glyph unicode="" glyph-name="info" data-tags="info" d="M585.143 240v219.429c0 5.335-1.714 9.714-5.143 13.143s-7.808 5.143-13.143 5.143h-109.714c-5.335 0-9.714-1.714-13.143-5.143s-5.143-7.808-5.143-13.143v-219.429c0-5.335 1.714-9.714 5.143-13.143s7.808-5.143 13.143-5.143h109.714c5.335 0 9.714 1.714 13.143 5.143s5.143 7.808 5.143 13.143zM585.143 550.857v91.429c0 5.335-1.714 9.714-5.143 13.143s-7.808 5.143-13.143 5.143h-109.714c-5.335 0-9.714-1.714-13.143-5.143s-5.143-7.808-5.143-13.143v-91.429c0-5.335 1.714-9.714 5.143-13.143s7.808-5.143 13.143-5.143h109.714c5.335 0 9.714 1.714 13.143 5.143s5.143 7.808 5.143 13.143zM512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.235 229.721 511.975 512.059 511.975 282.281 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.888 173.904-387.691 387.728-387.691 213.717 0 387.671 173.803 387.671 387.691 0.005 213.785-173.957 387.643-387.671 387.643z" />
+<glyph unicode="" glyph-name="help" data-tags="help" d="M512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.235 229.721 511.975 512.059 511.975 282.281 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.89 173.904-387.694 387.728-387.694 213.717 0 387.671 173.803 387.671 387.694 0.005 213.785-173.957 387.643-387.671 387.643zM585.143 164.571v109.714c0 4.951-1.808 9.237-5.429 12.857s-7.906 5.429-12.857 5.429h-109.714c-4.953 0-9.239-1.808-12.857-5.429s-5.429-7.906-5.429-12.857v-109.714c0-4.951 1.81-9.237 5.429-12.857s7.904-5.429 12.857-5.429h109.714c4.951 0 9.237 1.808 12.857 5.429s5.429 7.906 5.429 12.857zM521.616 365.714c118.343 0 214.286 88.965 214.286 187.429s-95.943 178.286-214.286 178.286c-173.045 0-208.091-93.714-213.963-171.113 0-7.936 6.729-9.838 15.872-9.838s108.073 0 113.143 0c6.096 0 14.475 0.633 17.554 10.571 0 48.857 135.968 54.953 135.968-7.904 0-31.506-29.717-63.817-68.571-66.194s-82.286-7.607-82.286-54.199c0-13.022 0-25.673 0-44.693 0-19.015 9.717-22.343 27.431-22.343s54.853-0.002 54.853-0.002z" />
+<glyph unicode="" glyph-name="folder-open" data-tags="folder-open" horiz-adv-x="1243" d="M1226.126 430.391c-11.538 5.641-24.709 8.466-39.511 8.466h-783.362c-121.691 0-172.409-79.465-172.409-79.465l-157.701-213.106 72.912 253.2c11.755 31.506 36.455 58.219 74.101 80.146 37.641 21.927 76.905 32.366 117.778 32.366h759.625v146.286c0 0-0.418 73.611-73.561 73.611-83.591 0-512 0-512 0l-51.826 81.083c0 0-30.041 64.734-94.041 64.734-73.143 0-243.257 0-292.571 0-83.591 0-73.143-73.143-73.143-73.143v-804.571h841.797c28.734 0 59.973 7.705 93.714 23.122 33.742 15.413 59.973 34.197 78.695 56.341l208.565 279.929c13.495 15.2 20.242 29.529 20.242 42.99 0 13.029-5.767 22.366-17.303 28.011v0z" />
+<glyph unicode="" glyph-name="folder-close" data-tags="folder-close" horiz-adv-x="1097" d="M1097.563 0v658.286c0 0-0.421 73.611-73.563 73.611-83.591 0-512 0-512 0l-51.826 81.083c0 0-30.043 64.734-94.043 64.734-73.143 0-243.257 0-292.571 0-83.591 0-73.143-73.143-73.143-73.143v-804.571h1097.147z" />
+<glyph unicode="" glyph-name="edit" data-tags="edit" d="M219.554 0l73.294 73.143-146.583 146.286-73.070-73.143v-73.143h73.090v-73.438l73.269 0.295zM806.176 512l-586.747-585.143h-219.429v219.429l586.585 585.143 219.591-219.429zM1024 762.937c0-19.056-6.656-35.237-19.968-48.537l-146.578-150.455-218.686 218.505 148.576 147.915c12.955 13.662 29.147 20.494 48.578 20.494 19.074 0 35.445-6.832 49.115-20.494l118.994-118.352c13.312-14.023 19.968-30.384 19.968-49.077v0z" />
+<glyph unicode="" glyph-name="close" data-tags="close" horiz-adv-x="731" d="M96.464 804.571c-4.816-0.064-9.12-1.963-12.912-5.733l-77.815-77.815c-3.769-3.794-5.669-8.096-5.735-12.91-0.032-4.839 1.815-9.113 5.543-12.823l616.603-616.606c3.71-3.714 7.986-5.577 12.823-5.541 4.834 0.039 9.138 1.957 12.91 5.73l77.817 77.819c3.769 3.769 5.691 8.066 5.73 12.912 0.037 4.839-1.829 9.106-5.538 12.825l-616.606 616.599c-3.717 3.73-7.986 5.575-12.821 5.541zM622.144 799.031l-616.603-616.601c-3.726-3.717-5.577-7.989-5.536-12.827 0.059-4.843 1.959-9.143 5.728-12.914l77.817-77.817c3.792-3.774 8.096-5.691 12.91-5.728 4.837-0.039 9.106 1.824 12.821 5.536l616.599 616.608c3.717 3.712 5.579 7.989 5.543 12.823-0.041 4.814-1.959 9.118-5.728 12.91l-77.824 77.808c-3.767 3.778-8.073 5.678-12.907 5.744-4.834 0.034-9.104-1.815-12.818-5.541z" />
+<glyph unicode="" glyph-name="user" data-tags="user, profile, avatar, person, talk, member" d="M630.67 228.030c-23.673 3.769-24.523 61.458-24.215 68.869 18.514 7.41 69.568 68.871 84.729 161.477 40.786 0 92.258 128.809 25.189 128.809 1.701 36.469 52.425 290.53-204.373 290.53s-206.073-252.994-204.375-289.461c-70.281 0-15.598-129.881 25.189-129.881 15.161-92.606 63.006-154.064 84.729-161.477-2.448-7.579-0.539-65.099-24.215-68.869-76.263-12.133-356.757-163.435-356.757-301.17h950.857c0 137.735-280.496 289.038-356.759 301.173v0z" />
+<glyph unicode="" glyph-name="users" data-tags="users, people, group, team, members, community" d="M561.312 145.143c-55.803-8.875-234.919-116.617-268.741-218.286h731.429c-33.822 101.669-216.151 209.41-271.959 218.286-19.040 3.026-19.726 43.273-19.456 49.223 14.88 5.959 55.906 55.367 68.073 129.755 32.779 0 74.123 103.513 20.238 103.513 1.374 29.31 42.144 233.456-164.217 233.456-206.345 0-165.591-203.289-164.219-232.585-56.485 0-12.542-104.384 20.235-104.384 12.169-74.389 50.633-123.794 68.073-129.755-1.945-6.085-0.411-46.201-19.456-49.223zM485.211 188.496c-1.029 1.657-2.021 3.287-2.976 4.889-10.695 17.986-23.991 44.983-33.598 80.126-35.547 30.8-56.297 83.157-56.297 123.447 0 26.16 8.023 49.691 23.195 68.053 0.117 0.139 0.233 0.281 0.35 0.421-2.654 52.519 2.199 133.84 57.675 195.559 16.96 18.866 37.289 34.219 60.594 45.803-0.368 70.11-23.342 170.923-168.359 170.923-206.345 0-165.591-203.289-164.219-232.583-56.485 0-12.544-104.386 20.235-104.386 12.169-74.389 50.633-123.799 68.075-129.755-1.947-6.085-0.414-42.21-19.456-45.232-55.801-8.88-236.608-117.799-270.432-219.474h402.176c25.447 16.032 54.702 29.575 83.035 42.21z" />
+<glyph unicode="" glyph-name="equalizer" data-tags="equalizer, control, options, settings, dashboard" d="M950.857 438.857h18.286c30.171 0 54.857 24.686 54.857 54.857v182.857c0 30.171-24.686 54.857-54.857 54.857h-18.286v219.429h-146.286v-219.429h-18.286c-30.171 0-54.857-24.686-54.857-54.857v-182.857c0-30.171 24.686-54.857 54.857-54.857h18.286v-512h146.286v512zM804.571 658.286h146.286v-146.286h-146.286v146.286zM603.429 146.286c30.171 0 54.857 24.686 54.857 54.857v182.857c0 30.171-24.686 54.857-54.857 54.857h-18.286v512h-146.286v-512h-18.286c-30.171 0-54.857-24.686-54.857-54.857v-182.857c0-30.171 24.686-54.857 54.857-54.857h18.286v-219.429h146.286v219.429h18.286zM438.857 365.714h146.286v-146.286h-146.286v146.286zM237.714 438.857c30.171 0 54.857 24.686 54.857 54.857v182.857c0 30.171-24.686 54.857-54.857 54.857h-18.286v219.429h-146.286v-219.429h-18.286c-30.171 0-54.857-24.686-54.857-54.857v-182.857c0-30.171 24.686-54.857 54.857-54.857h18.286v-512h146.286v512h18.286zM73.143 658.286h146.286v-146.286h-146.286v146.286z" />
+<glyph unicode="" glyph-name="remove2" data-tags="remove, delete, trashcan, recycle bin, bin, dispose" horiz-adv-x="878" d="M146.286-73.143h585.143l73.143 658.286h-731.429l73.143-658.286zM585.143 804.855v146.002h-292.571v-146.002l-292.571-0.283v-219.429l73.001 73.143h731.57l73.143-73.143v219.712h-292.571zM511.010 804.855h-145.296v73.001h145.296v-73.001z" />
+<glyph unicode="" glyph-name="print" data-tags="print, printer" d="M219.429 877.714h585.143v-146.286h-585.143v146.286zM960 658.286h-896c-35.2 0-64-28.8-64-64v-310.857c0-35.2 28.798-64 64-64h155.429v-219.429h585.143v219.429h155.429c35.2 0 64 28.8 64 64v310.857c0 35.2-28.8 64-64 64zM731.429 73.143h-438.857v292.571h438.857v-292.571zM959.925 550.018c0-25.625-20.777-46.4-46.402-46.4s-46.402 20.775-46.402 46.4 20.777 46.4 46.402 46.4c25.63 0 46.402-20.775 46.402-46.4z" />
+<glyph unicode="" glyph-name="spinner2" data-tags="spinner, loading, busy, wait, wheel, repeat" d="M874.016 800.873c-92.647 92.658-220.631 149.984-362.016 149.984-282.77 0-512-229.23-512-512s229.23-512 512-512c153.639 0 291.458 67.691 385.303 174.857l-96.32 84.283c-5.595-6.377-11.401-12.615-17.458-18.667-72.523-72.528-168.955-112.473-271.525-112.473s-198.999 39.945-271.531 112.466c-72.521 72.535-112.469 168.965-112.469 271.534s39.947 198.999 112.469 271.529c72.53 72.526 168.962 112.471 271.531 112.471s198.999-39.945 271.529-112.471l154.805-61.198-64.318 151.685zM682.425 627.568c-23.333-23.333-15.424-42.425 17.575-42.425h264c51.666 0 60 9.001 60 60v264c0 33.001-19.093 40.907-42.425 17.575l-299.15-299.15z" />
+<glyph unicode="" glyph-name="spinner" data-tags="spinner, loading, busy, wait, wheel" d="M585.143 754.658c85.63-20.126 158.018-74.816 201.838-148.633l185.614 60.357c-72.864 150.469-216.526 259.899-387.451 284.475v-196.199zM237.598 607.001c43.877 73.323 116.007 127.621 201.259 147.659v196.197c-170.457-24.507-313.803-133.403-386.857-283.234l185.598-60.622zM153.895 73.73l115.23 158.366c-48.059 56.265-77.125 129.403-77.125 209.378 0 8.761 0.366 17.433 1.056 26.016l-185.776 60.681c-4.766-28.19-7.282-57.145-7.282-86.697 0.002-144.094 58.951-274.327 153.897-367.744zM635.152 144.539c-37.909-15.906-79.506-24.702-123.152-24.702-44.366 0-86.615 9.083-125.024 25.483l-115.232-158.368c71.648-38.343 153.419-60.098 240.256-60.098 86.089 0 167.195 21.387 238.402 59.118l-115.25 158.567zM831.031 466.354c0.631-8.213 0.969-16.507 0.969-24.882 0-80.704-29.589-154.455-78.439-210.923l115.047-158.288c95.824 93.52 155.392 224.363 155.392 369.211 0 29.079-2.427 57.579-7.047 85.337l-185.922-60.455z" />
+<glyph unicode="" glyph-name="import" data-tags="import" d="M687.721 571.335l-95.387-95.387-393.84 393.856c-5.285 5.262-11.353 7.909-18.203 7.911-6.862 0-12.935-2.649-18.222-7.911l-81.019-81.019c-5.262-5.285-7.909-11.353-7.909-18.219 0-6.85 2.649-12.914 7.909-18.203l393.856-393.84-95.381-95.381c-24.039-24.037-15.89-43.705 18.105-43.705h271.982c53.227 0 61.813 9.273 61.813 61.813v271.984c0.005 33.995-19.662 42.149-43.703 18.103zM877.714 84.571c0-3.312-1.077-6.048-3.232-8.203-2.151-2.151-4.889-3.227-8.199-3.225h-708.661c-3.287 0-5.998 1.067-8.137 3.202-2.135 2.137-3.202 4.848-3.202 8.135v404.843c0 6.571-2.135 11.995-6.409 16.272-4.27 4.267-9.696 6.407-16.267 6.405h-100.933c-6.571 0.002-11.998-2.137-16.267-6.405-4.277-4.277-6.409-9.701-6.409-16.272v-539.79c-0.002-6.571 2.137-11.998 6.405-16.267 4.277-4.274 9.701-6.409 16.272-6.409h978.647c6.571-0.002 11.998 2.137 16.267 6.405 4.274 4.277 6.409 9.701 6.409 16.272v978.647c0 6.571-2.135 11.995-6.409 16.272-4.27 4.267-9.696 6.407-16.267 6.405h-539.787c-6.571 0-11.995-2.135-16.272-6.409-4.267-4.27-6.407-9.696-6.405-16.267v-100.933c-0.002-6.569 2.137-11.998 6.405-16.265 4.277-4.277 9.701-6.411 16.272-6.411h404.752c3.312 0 6.048-1.077 8.203-3.232 2.151-2.149 3.227-4.889 3.225-8.197v-708.571z" />
+<glyph unicode="" glyph-name="export" data-tags="export" d="M980.293 278.754l-95.387-95.387-393.84 393.856c-5.285 5.262-11.353 7.909-18.203 7.911-6.862 0-12.935-2.649-18.222-7.911l-81.019-81.019c-5.262-5.285-7.909-11.353-7.909-18.219 0-6.85 2.649-12.914 7.909-18.203l393.856-393.84-95.381-95.381c-24.039-24.037-15.89-43.705 18.105-43.705h271.982c53.227 0 61.813 9.273 61.813 61.813v271.982c0.005 33.998-19.662 42.151-43.703 18.105zM146.286 793.143c0 3.312 1.077 6.048 3.232 8.203 2.151 2.151 4.889 3.227 8.199 3.225h708.661c3.287 0 5.998-1.067 8.137-3.202 2.135-2.137 3.202-4.848 3.202-8.135v-331.701c0-6.571 2.135-11.995 6.409-16.272 4.27-4.267 9.696-6.407 16.267-6.405h100.933c6.571-0.002 11.998 2.137 16.267 6.405 4.277 4.277 6.409 9.701 6.409 16.272v466.647c0.002 6.571-2.137 11.998-6.405 16.267-4.277 4.274-9.701 6.409-16.272 6.409h-978.649c-6.571 0.002-11.998-2.137-16.267-6.405-4.274-4.277-6.409-9.701-6.409-16.272v-978.647c0-6.571 2.135-11.995 6.409-16.272 4.27-4.267 9.696-6.407 16.267-6.405h466.647c6.571 0 11.995 2.135 16.272 6.411 4.267 4.267 6.407 9.696 6.405 16.265v100.933c0.002 6.569-2.137 11.998-6.405 16.265-4.277 4.277-9.701 6.411-16.272 6.411h-331.609c-3.312 0-6.048 1.077-8.203 3.232-2.151 2.149-3.227 4.889-3.225 8.197v708.571z" />
+<glyph unicode="" glyph-name="history" data-tags="history" d="M149.984 800.873c92.647 92.658 220.631 149.984 362.016 149.984 282.77 0 512-229.23 512-512s-229.23-512-512-512c-153.639 0-291.458 67.691-385.303 174.857l96.32 84.283c5.595-6.377 11.401-12.615 17.458-18.667 72.523-72.528 168.955-112.473 271.525-112.473s198.999 39.945 271.531 112.466c72.523 72.533 112.469 168.965 112.469 271.534s-39.947 198.999-112.469 271.529c-72.53 72.526-168.962 112.471-271.531 112.471s-198.999-39.945-271.529-112.471l-154.805-61.198 64.318 151.685zM324.571 365.714c-9.335 0-17.001 2.999-22.999 9.001-6 6-9.001 13.666-9.001 22.999v9.143c0 9.335 2.999 17.001 9.001 22.999 6 6 13.666 9.001 22.999 9.001h187.429v260.571c0 9.335 2.999 17.001 9.001 22.999 6 6 13.666 9.001 22.999 9.001h9.143c9.335 0 17.001-2.999 22.999-9.001 6-6 9.001-13.666 9.001-22.999v-301.714c0-9.335-2.999-17.001-9.001-22.999-6-6-13.666-9.001-22.999-9.001h-228.571zM341.575 627.568c23.333-23.333 15.424-42.425-17.575-42.425h-264c-51.666 0-60 9.001-60 60v264c0 33.001 19.093 40.907 42.425 17.575l299.15-299.15z" />
+<glyph unicode="" glyph-name="home" data-tags="home" d="M1023.929 430.75c-0.425 5.714-2.752 10.267-6.987 13.655l-456.672 417.266c-13.55 11.008-29.641 16.514-48.27 16.514-18.631 0-34.722-5.504-48.272-16.514l-456.67-417.266c-4.235-3.387-6.562-7.941-6.987-13.655-0.425-5.719 1.058-10.695 4.446-14.928l35.017-42.933c3.387-3.81 7.833-6.139 13.337-6.987 0.997-0.082 36.619-0.135 93.282-0.16v-325.563c0-11.008 4.023-20.537 12.069-28.581 8.046-8.046 17.573-12.069 28.581-12.069h252.030v293.545h146.279v-293.545h252.085c11.008 0 20.535 4.025 28.581 12.069 8.048 8.043 12.066 17.573 12.066 28.581v325.685c55.454 0.023 90.258 0 91.323 0h1.906c5.504 0.848 9.95 3.214 13.337 7.024l35.072 42.933c3.387 4.235 4.871 9.211 4.448 14.93z" />
+<glyph unicode="" glyph-name="add-circle-o" data-tags="add-circle-o" d="M512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.238 229.721 511.975 512.059 511.975 282.283 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.888 173.904-387.691 387.728-387.691 213.717 0 387.671 173.803 387.671 387.691 0.005 213.785-173.957 387.643-387.671 387.643zM726.283 506.777c-3.429 3.477-7.803 5.223-13.138 5.223h-128.005v128.007c0 5.333-1.739 9.71-5.218 13.138s-7.936 5.141-13.351 5.141h-109.143c-5.417 0-9.863-1.714-13.351-5.141-3.481-3.429-5.221-7.808-5.221-13.141v-128.005l-128.007-0.002c-5.333 0-9.71-1.737-13.138-5.218-3.426-3.477-5.141-7.934-5.141-13.351v-109.143c0-5.417 1.714-9.856 5.141-13.351 3.429-3.481 7.808-5.221 13.141-5.221l128.005 0.002v-128.009c0-5.335 1.744-9.707 5.225-13.134 3.477-3.429 7.927-5.145 13.344-5.145h109.143c5.417 0 9.858 1.717 13.351 5.145 3.477 3.429 5.223 7.803 5.223 13.138v128.002h128.007c5.335 0 9.707 1.742 13.134 5.225 3.429 3.477 5.145 7.927 5.145 13.344v109.143c0 5.417-1.717 9.863-5.145 13.351z" />
+<glyph unicode="" glyph-name="warning-triangle-o" data-tags="warning-triangle-o" d="M512 793.369l365.008-644.798h-730.014l365.006 644.798zM512 953.143c-13.333 0-25.714-3.429-37.143-10.286s-20.382-16.19-26.857-28l-438.857-780.19c-13.333-24-12.953-48 1.143-72 6.475-11.047 15.333-19.81 26.571-26.286s23.333-9.714 36.286-9.714h877.714c12.953 0 25.047 3.239 36.286 9.714s20.096 15.239 26.571 26.286c14.096 24 14.475 48 1.143 72l-438.857 780.19c-6.478 11.81-15.429 21.143-26.857 28s-23.808 10.286-37.143 10.286v0zM585.143 237.431v78.283c0 4.446-1.509 8.174-4.523 11.191-3.017 3.008-6.585 4.523-10.715 4.523h-115.81c-4.128 0-7.701-1.509-10.715-4.523s-4.523-6.745-4.523-11.191v-78.283c0-4.443 1.509-8.171 4.523-11.191s6.587-4.526 10.715-4.526h115.81c4.133 0 7.696 1.506 10.715 4.526 3.015 3.019 4.523 6.747 4.523 11.191zM585.143 378.953v194.19c0 3.81-1.584 6.823-4.761 9.047-4.128 3.493-7.936 5.239-11.431 5.239h-113.904c-3.49 0-7.301-1.746-11.429-5.239-3.175-2.224-4.761-5.557-4.761-10v-193.237c0-3.177 1.586-5.794 4.761-7.858 3.175-2.062 6.985-3.095 11.429-3.095h113.904c4.446 0 8.176 1.031 11.191 3.095 3.019 2.064 4.683 4.681 5.001 7.858z" />
+<glyph unicode="" glyph-name="error-circle-o" data-tags="error-circle-o" d="M512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.235 229.721 511.975 512.059 511.975 282.281 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.888 173.904-387.691 387.728-387.691 213.717 0 387.671 173.803 387.671 387.691 0.005 213.785-173.957 387.643-387.671 387.643zM711.547 335.362c0.037 4.885-1.824 9.211-5.595 12.985l-90.514 90.514 90.517 90.514c3.769 3.771 5.637 8.096 5.6 12.981-0.039 4.885-1.977 9.246-5.806 13.074l-77.177 77.175c-3.831 3.831-8.185 5.762-13.077 5.806-4.887 0.039-9.211-1.829-12.983-5.6l-90.514-90.514-90.517 90.514c-3.771 3.769-8.094 5.637-12.981 5.6-4.88-0.037-9.243-1.975-13.074-5.806l-77.175-77.177c-3.831-3.831-5.758-8.183-5.806-13.074-0.039-4.887 1.829-9.214 5.6-12.983l90.514-90.512-90.514-90.517c-3.771-3.771-5.63-8.098-5.591-12.983 0.034-4.885 1.966-9.243 5.797-13.074l77.175-77.177c3.831-3.831 8.185-5.76 13.079-5.801 4.882-0.037 9.211 1.824 12.983 5.595l90.512 90.514 90.514-90.514c3.771-3.771 8.096-5.634 12.983-5.593 4.882 0.034 9.243 1.966 13.074 5.797l77.177 77.177c3.826 3.831 5.758 8.187 5.799 13.079z" />
+<glyph unicode="" glyph-name="service" data-tags="service" d="M1021.714 569.23l-159.687 142.304v-111.534h-101.586c-59.166 96.352-165.513 160.754-286.629 160.754-185.339 0-336.119-150.784-336.119-336.126 0-15.682 1.104-31.109 3.193-46.229h-108.912c-39.586 1.045-39.586-59.381 0-59.381h122.729c44.377-133.762 170.645-230.519 319.106-230.519 185.335 0 336.117 150.782 336.114 336.126 0 40.75-7.294 79.826-20.638 116h72.741v-111.531l159.687 140.135zM463.815 540.631h267.467c16.373-35.774 25.511-75.522 25.511-117.367 0-156.041-126.944-282.985-282.983-282.985-119.243 0-221.493 74.142-263.086 178.743h299.669v-111.522l159.689 142.302-159.689 140.139v-111.538h-315.998c-2.338 14.617-3.57 29.595-3.57 44.862 0 156.039 126.946 282.99 282.983 282.99 89.23 0 168.93-41.525 220.834-106.254h-230.827c-38.533 0-38.533-59.369 0-59.369z" />
+<glyph unicode="" glyph-name="image" data-tags="image" d="M937.895 713.488c-8.075 11.579-18.775 19.819-32.105 24.738l-370.528 134.736c-7.723 2.805-15.445 4.21-23.159 4.21-0.368 0-0.736-0.016-1.102-0.025-0.368 0.009-0.736 0.025-1.102 0.025-7.714 0-15.435-1.406-23.159-4.21l-370.53-134.736c-13.33-4.919-24.030-13.159-32.105-24.738-8.066-11.579-12.105-24.391-12.105-38.421v-404.215c0-12.286 3.159-23.682 9.474-34.21 6.318-10.526 14.917-18.775 25.79-24.736l370.528-202.107c9.826-5.607 20.526-8.421 32.105-8.421 0.373 0 0.734 0.023 1.102 0.034 0.368-0.011 0.731-0.034 1.102-0.034 11.577 0 22.279 2.811 32.105 8.421l370.528 202.107c10.873 5.961 19.474 14.21 25.79 24.736s9.474 21.925 9.474 34.21v404.215c0.002 14.027-4.037 26.841-12.103 38.421zM139.369 308.571v63.312l371.918-178.359 371.346 178.359v-63.312l-371.346-202.523-371.918 202.523zM882.631 488.706l-371.344-166.421-371.918 166.421v70.498l371.918-153.442 371.346 155.728v-72.784z" />
+<glyph unicode="" glyph-name="cluster" data-tags="cluster" d="M73.893 502.548v125.239c0 8.478 3.095 15.815 9.294 22.016 6.192 6.19 13.529 9.294 22.014 9.294h814.053c8.475 0 15.815-3.104 22.014-9.294 6.192-6.199 9.294-13.538 9.294-22.016v-125.239c0-8.485-3.102-15.824-9.294-22.014-6.199-6.199-13.538-9.296-22.014-9.296h-814.050c-8.485 0-15.822 3.095-22.014 9.296-6.199 6.19-9.296 13.527-9.296 22.014zM814.37 533.856h73.573v62.619h-73.573v-62.619zM146.942 533.856h73.573v62.619h-73.573v-62.619zM265.799 533.856h73.573v62.619h-73.573v-62.619zM384.656 533.856h73.573v62.619h-73.573v-62.619zM503.513 533.856h73.573v62.619h-73.573v-62.619zM73.893 31.691v125.237c0 8.478 3.095 15.817 9.294 22.016 6.192 6.19 13.529 9.291 22.014 9.291h814.053c8.475 0 15.815-3.102 22.014-9.291 6.192-6.199 9.294-13.538 9.294-22.016v-125.237c0-8.487-3.102-15.826-9.294-22.016-6.199-6.199-13.538-9.296-22.014-9.296h-814.050c-8.485 0-15.822 3.097-22.014 9.296-6.199 6.19-9.296 13.529-9.296 22.016zM814.37 62.999h73.573v62.619h-73.573v-62.619zM146.942 62.999h73.573v62.619h-73.573v-62.619zM265.799 62.999h73.573v62.619h-73.573v-62.619zM384.656 62.999h73.573v62.619h-73.573v-62.619zM503.513 62.999h73.573v62.619h-73.573v-62.619zM73.893 269.406v125.237c0 8.478 3.095 15.817 9.294 22.016 6.192 6.19 13.529 9.291 22.014 9.291h814.053c8.475 0 15.815-3.102 22.014-9.291 6.192-6.199 9.294-13.538 9.294-22.016v-125.237c0-8.487-3.102-15.826-9.294-22.018-6.199-6.197-13.538-9.294-22.014-9.294h-814.050c-8.485 0-15.822 3.097-22.014 9.294-6.199 6.192-9.296 13.531-9.296 22.018zM814.37 300.713h73.573v62.619h-73.573v-62.619zM146.942 300.713h73.573v62.619h-73.573v-62.619zM265.799 300.713h73.573v62.619h-73.573v-62.619zM384.656 300.713h73.573v62.619h-73.573v-62.619zM503.513 300.713h73.573v62.619h-73.573v-62.619zM73.118 701.927c-2.281 4.935 0.185 11.010 7.406 18.233 0 0 121.374 137.25 130.331 147.975s20.384 8.437 20.384 8.437h561.525c0 0 10.233 1.239 19.209-8.905s128.905-147.509 128.905-147.509c7.214-7.223 9.687-13.298 7.406-18.233-2.277-4.949-8.359-7.408-18.238-7.408h-838.695c-9.886 0.002-15.957 2.464-18.233 7.41z" />
+<glyph unicode="" glyph-name="container-node" data-tags="container-node" d="M73.118 415.332c-2.281 8.917 0.185 19.895 7.406 32.946 0 0 121.374 247.982 130.331 267.36s20.384 15.243 20.384 15.243h561.525c0 0 10.233 2.238 19.209-16.089 8.976-18.329 128.905-266.523 128.905-266.523 7.214-13.047 9.687-24.023 7.406-32.939-2.277-8.944-8.359-13.383-18.238-13.383h-838.695c-9.886 0-15.957 4.455-18.233 13.385zM73.893 178.521v156.151c0 8.421 3.095 15.703 9.294 21.861 6.192 6.149 13.529 9.23 22.014 9.23h814.053c8.475 0 15.815-3.081 22.014-9.23 6.192-6.153 9.294-13.442 9.294-21.861v-156.151c0-8.43-3.102-15.717-9.294-21.861-6.199-6.158-13.538-9.23-22.014-9.23h-814.050c-8.485 0-15.822 3.072-22.014 9.23-6.199 6.144-9.296 13.431-9.296 21.861zM814.37 225.504h73.573v62.183h-73.573v-62.183zM146.942 225.504h73.573v62.183h-73.573v-62.183zM265.799 225.504h73.573v62.183h-73.573v-62.183zM384.656 225.504h73.573v62.183h-73.573v-62.183zM503.513 225.504h73.573v62.183h-73.573v-62.183z" />
+<glyph unicode="" glyph-name="project" data-tags="project" d="M1021.714 305.143c-12.571 101.714-77.714 177.143-165.714 177.143-54.871 0-76.571-22.857-76.571-22.857s13.248-38.809 16-82.286c5.714-90.286 4.571-331.429 4.571-331.429l221.714 0.382v261.333zM946.537 600.482c0-51.143-41.46-92.603-92.603-92.603s-92.603 41.46-92.603 92.603c0 51.143 41.46 92.603 92.603 92.603s92.603-41.46 92.603-92.603zM2.286 305.143c12.571 101.714 77.714 177.143 165.714 177.143 54.869 0 76.571-22.857 76.571-22.857s-13.248-38.809-16-82.286c-5.714-90.286-4.571-331.429-4.571-331.429l-221.714 0.382v261.333zM262.667 600.482c0-51.142-41.459-92.601-92.601-92.601s-92.601 41.459-92.601 92.601c0 51.142 41.459 92.601 92.601 92.601s92.601-41.459 92.601-92.601zM736.069 371.588v-399.531h-447.682v399.531zM736.069 364.139c0 141.449-100.222 256.117-223.842 256.117-123.625 0-223.84-114.667-223.84-256.117zM638.133 782.048c0-68.694-55.688-124.382-124.382-124.382s-124.382 55.688-124.382 124.382c0 68.694 55.688 124.382 124.382 124.382s124.382-55.688 124.382-124.382z" />
+<glyph unicode="" glyph-name="registry" data-tags="registry" d="M1017.438 366.082c-4.384 6.281-10.187 10.752-17.422 13.424l-201.047 73.104c-4.19 1.522-8.377 2.286-12.558 2.286-0.206 0-0.407-0.009-0.603-0.014-0.199 0.005-0.402 0.014-0.599 0.014-4.185 0-8.375-0.761-12.565-2.286l-201.045-73.104c-7.232-2.672-13.038-7.143-17.419-13.424-4.377-6.281-6.567-13.232-6.567-20.846v-219.319c0-6.667 1.714-12.853 5.141-18.562 3.426-5.712 8.091-10.19 13.991-13.422l201.042-100.793c5.335-3.042 11.136-4.569 17.422-4.569 0.201 0 0.4 0.016 0.599 0.016 0.197 0 0.393-0.016 0.603-0.016 6.272 0 12.082 1.527 17.413 4.569l201.047 78.599c5.897 3.234 10.562 7.712 13.986 13.426 3.433 5.707 5.143 11.893 5.143 18.56v241.511c0.005 7.611-2.187 14.565-6.562 20.846zM987.451 135.287l-201.483-89.925-201.799 89.925v34.35l201.799-85.675 201.483 85.675v-34.35zM987.451 244.121l-201.481-90.299-201.799 90.299v38.251l201.799-83.257 201.483 84.494-0.002-39.488zM735.019 521.497c3.431 5.712 5.145 11.897 5.145 18.562v241.513c0 7.611-2.192 14.565-6.567 20.843-4.382 6.283-10.19 10.757-17.419 13.426l-201.045 73.104c-4.192 1.522-8.382 2.286-12.565 2.286-0.201 0-0.4-0.009-0.601-0.014-0.197 0.005-0.398 0.014-0.597 0.014-4.185 0-8.377-0.763-12.567-2.286l-201.045-73.104c-7.234-2.67-13.040-7.143-17.419-13.426-4.379-6.281-6.569-13.234-6.569-20.843v-241.513c0-6.665 1.714-12.85 5.141-18.562 3.429-5.712 8.094-10.19 13.995-13.424l201.042-78.601c5.333-3.040 11.134-4.567 17.422-4.567 0.201 0 0.398 0.014 0.597 0.014s0.395-0.014 0.601-0.014c6.277 0 12.087 1.527 17.417 4.567l201.045 78.601c5.897 3.234 10.567 7.712 13.989 13.424zM703.611 569.401l-201.483-87.703-201.797 87.703v34.352l201.797-83.461 201.483 83.461v-34.352zM703.609 680.455l-201.481-90.297-201.797 90.297v38.251l201.797-83.257 201.483 84.496-0.002-39.49zM452.402 381.627l-201.045 73.102c-4.19 1.522-8.382 2.286-12.562 2.286-0.201 0-0.402-0.009-0.603-0.016-0.197 0.007-0.398 0.016-0.597 0.016-4.185 0-8.377-0.763-12.567-2.286l-201.045-73.102c-7.234-2.67-13.040-7.143-17.419-13.424-4.375-6.281-6.565-13.232-6.565-20.846v-241.513c0-6.665 1.714-12.848 5.141-18.558 3.429-5.714 8.091-10.187 13.995-13.419l201.042-78.608c5.333-3.042 11.134-4.567 17.422-4.567 0.201 0 0.398 0.014 0.597 0.014s0.398-0.014 0.603-0.014c6.277 0 12.087 1.525 17.417 4.567l201.045 100.795c5.897 3.232 10.567 7.71 13.989 13.424 3.429 5.71 5.143 11.893 5.143 18.558v219.321c-0.005 7.611-2.194 14.565-6.571 20.846-4.382 6.281-10.187 10.754-17.419 13.424zM439.835 137.406l-201.486-89.925-201.797 87.705v34.35l201.797-83.463 201.486 85.678v-34.345zM439.835 246.24l-201.483-90.304-201.799 90.304v38.245l201.797-83.255 201.486 84.494v-39.483z" />
+<glyph unicode="" glyph-name="replicator" data-tags="replicator" d="M1.577 169.762v157.947c0 9.621 2.734 18.48 8.208 26.581 5.472 8.103 12.661 14.176 21.575 18.229l165.723 70.624v151.872c0 9.618 2.731 18.478 8.208 26.578 5.472 8.103 12.663 14.176 21.577 18.229l171.067 72.901c5.854 2.523 12.219 3.797 19.093 3.797 6.871 0 13.234-1.271 19.093-3.797l171.070-72.901c8.91-4.050 16.098-10.126 21.573-18.229 5.477-8.101 8.213-16.96 8.213-26.578v-151.872l165.723-70.624c9.168-4.050 16.421-10.126 21.767-18.229 5.342-8.101 8.016-16.96 8.016-26.581v-157.947c0-9.113-2.418-17.602-7.255-25.451-4.841-7.845-11.456-13.79-19.858-17.842l-171.070-85.047c-6.363-3.543-13.621-5.314-21.765-5.314-8.149 0-15.401 1.771-21.762 5.314l-171.072 85.047c-1.28 0.512-2.171 1.010-2.674 1.518-0.514-0.507-1.403-1.006-2.674-1.518l-171.070-85.047c-6.368-3.543-13.623-5.314-21.765-5.314-8.151 0-15.403 1.771-21.767 5.314l-171.065 85.049c-8.4 4.050-15.024 9.998-19.856 17.842-4.837 7.847-7.253 16.329-7.253 25.449zM67.255 334.919l154.267-65.682 154.267 65.682-154.267 65.691-154.267-65.691zM245.961 96.855l146.629 72.905v119.223l-146.629-62.267v-129.861zM248.633 596.153l168.395-71.762 168.398 71.762-168.398 71.762-168.395-71.762zM441.47 380.484l146.631 62.654v100.994l-146.631-62.27v-101.378zM458.272 334.919l154.263-65.682 154.263 65.682-154.263 65.691-154.263-65.691zM636.976 96.855l146.629 72.905v119.223l-146.629-62.267v-129.861zM1015.221 459.566c-5.189 7.863-12.235 13.76-21.125 17.696l-160.901 68.567v147.451c0 9.339-2.658 17.941-7.966 25.803-5.323 7.867-12.302 13.762-20.955 17.698l-166.087 70.775c-5.682 2.45-11.858 3.687-18.53 3.687s-12.853-1.239-18.535-3.687l-104.208-44.985c5.728 2.471 11.95 3.712 18.667 3.712 6.72 0 12.946-1.246 18.67-3.712l176.43-75.538c8.706-3.961 15.739-9.902 21.095-17.822 5.349-7.918 8.027-16.583 8.027-25.989v-21.232h0.005v-98.743l-0.005-0.005v-28.51l162.030-69.049c8.965-3.959 16.055-9.895 21.285-17.822 5.221-7.915 7.838-16.576 7.838-25.986v-154.43c0-8.905-2.366-17.205-7.093-24.873-1.026-1.664-2.144-3.211-3.326-4.704l76.151 40.507c8.16 3.936 14.583 9.707 19.287 17.326 4.688 7.614 7.042 15.856 7.042 24.704v153.353c-0.007 9.335-2.606 17.936-7.797 25.806z" />
+<glyph unicode="" glyph-name="route" data-tags="route" d="M878.158 470.219v1.104h-340.402v96.544c77.049 3.077 71.358 11.774 71.358 11.774l32.446 55.92c0.089-0.249 0.181-0.489 0.272-0.738l34.178 53.936c-21.991 46.208-46.030 77.552-67.666 98.736 37.227-10.699 60.098-28.944 102.725-46.672l25.714 41.723c-76.21 40.311-120.021 58.978-226.601 58.923-222.11-0.114-402.807-180.706-402.807-402.807 0-6.695 0.075-8.912 0.149-9.365-0.082-1.193-0.208-3.259-0.389-6.718l15.655 0.791h367.013v-98.121c-19.904-3.381-42.926-10.098-54.699-20.126l-36.265-62.096c35.417 18.009 61.25 27.815 90.965 31.829v-164.53c-29.867 16.478-74.027 48.384-109.739 105.456l-26.528-44.201c33.321-44.21 67.287-72.482 94.091-90.089-54.558 4.709-85.534 21.070-124.363 47.973l-22.336-37.961c49.929-42.357 105.547-57.595 209.255-55.657 222.066 4.158 402.809 180.695 402.809 402.816 0 12.583 1.815 20.242 0.681 32.535l-35.513-0.978zM537.755 779.46c27.778-17.861 71.541-57.52 102.585-140.619-12.997-8.857-41.232-19.28-102.585-22.379v162.999zM260.491 471.326h-106.782c6.023 65.851 30.082 125.934 67.2 176.066 15.799-10.283 42.683-25.995 78.976-40.809-20.462-41.104-35.36-86.553-39.394-135.257zM253.749 685.755c50.475 51.209 116.482 87.687 190.409 103.022-35.017-31.179-81.589-78.61-119.225-137.92-31.077 12.297-55.337 25.381-71.184 34.898zM489.803 471.323l-177.733 0.002c4.574 42.293 18.135 82.014 36.382 118.139 40.153-12.009 87.703-21.077 141.353-22.281l-0.002-95.861zM489.803 615.908c-42.686 1.497-81.579 8.667-115.474 18.242 37.774 57.778 84.151 103.024 115.474 130.16v-148.402zM537.755 423.371h187.883c-2.629-48.071-16.053-91.854-35.003-130.665-47.55 16.754-101.822 31.291-152.88 34.459v96.206zM537.755 276.66c42.226-2.139 87.701-13.23 128.782-26.651-42.473-66.066-97.378-113.353-128.782-137.23v163.881zM590.919 92.432c37.237 29.371 86.706 75.995 125.298 139.602 25.63-10.123 47.333-19.968 62.336-27.129-48.59-54.101-113.783-93.717-187.634-112.473zM808.066 242.553c-15.438 7.776-39.705 19.438-69.241 31.666 20.249 43.371 34.549 93.118 37.621 149.152h91.376c-2.855-67.31-24.469-128.939-59.755-180.818zM739.333 616.050h130.811v-102.907l156.142 141.803-156.142 144.002v-101.781h-130.809c-24.907 0-24.907-81.118-0.002-81.118zM144.768 254.146h-126.142c-24.834 0-24.834-85.952 0-85.952h126.142v-107.115l153.207 149.92-153.207 152.238v-109.090z" />
+<glyph unicode="" glyph-name="openshift" data-tags="openshift" d="M132.915 427.491c2.111-26.34 6.648-52.35 13.028-77.863l156.184 56.879c-5.010 26.372-6.798 53.595-4.758 80.88h-0.032l-68.38-24.883c2.733 35.604 11.422 71.27 27.349 105.488 71.168 152.702 253.306 218.915 405.953 147.74h0.016c34.217-15.959 63.835-37.723 88.812-63.26l68.443 24.915c19.125-19.558 35.17-41.535 48.278-65.032l-145.999-53.153c29.003-51.972 42.709-111.837 38.235-172.032l164.045 59.691c-4.695 58.848-20.385 116.326-46.080 169.196l145.991 53.153c-11.477 23.654-24.726 46.513-40.094 68.049l-68.435-24.907c-45.521 63.882-107.552 117.256-183.54 152.718-234.992 109.584-515.395 7.53-624.931-227.438-35.454-76.036-48.64-156.814-42.457-235.008l68.372 24.867zM837.632 415.352l-0.032-0.032c-2.615-35.604-11.618-71.31-27.585-105.559-71.215-152.694-253.322-218.955-406.008-147.747-34.241 15.967-64.079 37.573-88.986 63.149l-77.525-28.223c-42.094 43.221-70.089 97.957-81.282 156.388l-0.008 0.016-156.207-56.903c14.36-56.942 39.259-111.072 73.46-159.232l77.525 28.231c45.434-63.905 107.386-117.319 183.414-152.812 235.024-109.56 515.348-7.507 624.931 227.486 35.478 76.028 48.585 156.759 42.307 234.906l-164.005-59.668z" />
+<glyph unicode="" glyph-name="kubernetes" data-tags="kubernetes" d="M448.692 513.871c3.104-2.267 6.924-3.597 11.062-3.597 10.105 0 18.334 7.984 18.758 17.984l0.455 0.228 6.328 111.774c-7.553-0.916-15.135-2.193-22.72-3.916-41.522-9.427-77.55-29.896-105.718-57.594l91.649-64.97 0.184 0.091zM399.84 429.414c3.708 1.012 7.162 3.185 9.743 6.42 6.299 7.899 5.186 19.294-2.367 25.86l0.091 0.455-83.683 74.85c-24.836-40.46-36.602-88.989-31.143-138.91l107.267 30.96 0.092 0.364zM481.109 396.541l30.868-14.841 30.777 14.797 7.649 33.236-21.308 26.634h-34.282l-21.353-26.589zM545.122 528.622c0.164-3.841 1.516-7.646 4.097-10.881 6.301-7.899 17.689-9.364 25.77-3.46l0.319-0.138 91.057 64.56c-34.354 33.641-79.186 55.593-127.664 61.556l6.328-111.591 0.092-0.047zM436.4 350.149c-1.968 8.619-9.563 14.497-18.030 14.614-1.21 0.018-2.458-0.091-3.688-0.319l-0.183 0.227-109.998-18.668c16.975-46.968 48.71-85.249 88.554-110.817l42.614 102.987-0.319 0.41c1.523 3.531 1.97 7.531 1.049 11.567zM699.737 536.955l-83.228-74.484 0.045-0.228c-2.898-2.523-5.041-5.936-5.964-9.971-2.244-9.849 3.688-19.67 13.34-22.31l0.091-0.455 107.813-31.052c2.285 23.259 0.897 47.328-4.645 71.436-5.6 24.402-15.016 46.911-27.452 67.065zM609.044 364.899c-1.418 0.262-2.869 0.392-4.326 0.319-2.427-0.123-4.863-0.743-7.194-1.867-9.103-4.383-13.060-15.164-9.106-24.358l-0.136-0.181 43.069-104.034c41.517 26.45 72.591 65.972 88.828 111.591l-110.955 18.758-0.18-0.228zM1022.291 331.069l-87.962 382.079c-4.612 20.031-18.17 36.889-36.835 45.802l-356.037 170.004c-10.272 4.906-21.622 7.177-33.008 6.602-9.052-0.456-17.921-2.7-26.087-6.602l-355.992-170.095c-18.665-8.913-32.222-25.771-36.833-45.802l-87.826-382.081c-4.097-17.784-0.764-36.46 9.242-51.766 1.201-1.853 2.493-3.645 3.871-5.373l246.404-306.366c12.92-16.061 32.509-25.411 53.223-25.405l395.146 0.091c20.707-0.018 40.294 9.317 53.225 25.36l246.313 306.412c12.926 16.067 17.769 37.098 13.157 57.141zM886.862 335.715c-2.595-11.377-14.863-18.292-27.5-15.572-0.091 0.023-0.221 0.026-0.319 0.045-0.143 0.034-0.268 0.102-0.41 0.136-1.761 0.388-3.967 0.771-5.509 1.185-7.286 1.953-12.57 4.865-19.122 7.376-14.098 5.057-25.774 9.283-37.151 10.928-5.777 0.456-8.722-2.301-11.928-4.416-1.556 0.313-6.349 1.16-9.106 1.593-20.417-64.164-63.892-119.722-122.838-154.526 1.018-2.456 2.746-7.68 3.55-8.606-1.346-3.593-3.366-7.035-1.638-12.566 4.137-10.724 10.827-21.207 18.894-33.827 3.907-5.831 7.905-10.31 11.428-16.982 0.844-1.596 1.963-4.051 2.777-5.737 5.48-11.715 1.46-25.208-9.059-30.275-10.6-5.108-23.785 0.287-29.458 12.064-0.812 1.668-1.953 3.887-2.642 5.464-3.018 6.918-4.065 12.841-6.191 19.532-4.838 14.177-8.808 25.912-14.615 35.831-3.246 4.8-7.229 5.414-10.881 6.602-0.674 1.164-3.196 5.791-4.552 8.196-11.769-4.449-23.946-8.153-36.56-11.018-55.284-12.551-110.631-7.462-160.078 11.519l-4.826-8.742c-3.593-0.961-7.057-1.937-9.182-4.473-7.76-9.257-10.859-24.115-16.497-38.279-2.123-6.69-3.128-12.614-6.147-19.532-0.683-1.565-1.83-3.754-2.64-5.418-0.006-0.012 0.006-0.031 0-0.045-0.007-0.018-0.037-0.029-0.045-0.045-5.686-11.739-18.826-17.115-29.411-12.020-10.519 5.066-14.536 18.562-9.061 30.277 0.815 1.688 1.89 4.14 2.733 5.737 3.525 6.674 7.522 11.197 11.428 17.029 8.068 12.62 15.151 23.938 19.286 34.664 1.039 3.564-0.499 8.442-1.894 12.047l3.871 9.289c-56.716 33.609-101.509 87.169-122.883 153.433l-9.288-1.593c-2.49 1.394-7.496 4.697-12.247 4.324-11.375-1.644-23.053-5.87-37.151-10.926-6.554-2.51-11.833-5.379-19.122-7.332-1.54-0.411-3.748-0.841-5.509-1.229-0.14-0.034-0.268-0.102-0.41-0.138-0.094-0.020-0.227-0.023-0.319-0.045-12.635-2.722-24.901 4.194-27.499 15.572-2.598 11.374 5.47 22.919 18.030 25.951 0.094 0.023 0.222 0.069 0.319 0.091 0.063 0.015 0.12 0.034 0.183 0.045 1.786 0.418 4.059 1.012 5.692 1.319 7.414 1.406 13.448 1.059 20.442 1.638 14.896 1.562 27.235 2.832 38.2 6.283 3.476 1.426 6.799 6.207 9.152 9.242l8.923 2.595c-9.999 69.246 6.919 137.204 43.479 192.224l-6.829 6.1c-0.434 2.658-1.006 8.805-4.28 12.292-8.379 7.867-18.944 14.393-31.688 22.263-6.049 3.559-11.595 5.853-17.665 10.335-1.292 0.952-3.012 2.412-4.416 3.55-0.104 0.082-0.215 0.146-0.319 0.228-10.222 8.151-12.572 22.215-5.236 31.415 4.127 5.176 10.433 7.737 16.982 7.512 5.095-0.174 10.37-2.035 14.842-5.6 1.454-1.15 3.436-2.661 4.735-3.779 5.721-4.921 9.209-9.784 14.023-14.887 10.509-10.673 19.194-19.534 28.729-25.953 5.007-2.917 8.853-1.742 12.657-1.229 1.224-0.904 5.341-3.859 7.695-5.464 36.266 38.479 83.901 66.978 139.227 79.54 12.859 2.92 25.73 4.86 38.518 5.919l0.5 9.016c2.836 2.746 6.020 6.697 6.919 11.018 0.927 11.457-0.575 23.783-2.367 38.655-0.989 6.947-2.632 12.718-2.914 20.261-0.057 1.548 0.029 3.688 0.045 5.464-0.004 0.199-0.045 0.392-0.045 0.592-0.001 13.075 9.539 23.673 21.308 23.675s21.305-10.601 21.305-23.675c0.009-1.855 0.111-4.34 0.045-6.056-0.278-7.541-1.922-13.313-2.913-20.261-1.793-14.871-3.338-27.197-2.414-38.655 0.843-5.734 4.194-8 6.968-10.654 0.064-1.545 0.313-6.675 0.5-9.514 67.749-6.018 130.668-37 176.881-85.459l8.103 5.783c2.747-0.162 8.799-0.995 12.932 1.412 9.536 6.42 18.223 15.323 28.729 25.996 4.814 5.105 8.349 9.966 14.068 14.889 1.306 1.123 3.28 2.626 4.734 3.779 10.221 8.154 24.441 7.286 31.781-1.912 7.339-9.2 4.985-23.262-5.236-31.415-1.439-1.16-3.316-2.766-4.69-3.779-6.069-4.482-11.662-6.776-17.711-10.335-12.741-7.87-23.308-14.396-31.687-22.263-3.958-4.235-3.66-8.242-4.007-12.066-1.181-1.085-5.35-4.778-7.557-6.785 18.368-27.336 32.138-58.364 39.929-92.287 7.719-33.612 8.925-67.204 4.462-99.482l8.606-2.504c1.548-2.188 4.725-7.507 9.197-9.242 10.963-3.451 23.302-4.722 38.198-6.283 6.994-0.579 13.030-0.233 20.443-1.638 1.776-0.335 4.364-1.042 6.191-1.457 12.553-3.028 20.618-14.574 18.022-25.948zM528.504 309.764c-1.812 3.391-4.693 6.217-8.423 8.014-2.844 1.372-5.837 1.975-8.786 1.865-6.488-0.238-12.645-3.859-15.89-9.924h-0.091l-54.089-97.798c37.433-12.755 78.773-15.607 120.241-6.191 7.402 1.681 14.636 3.695 21.671 6.055l-54.224 97.981h-0.41z" />
+</font></defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf
new file mode 100755
index 0000000..e5ad110
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.woff
new file mode 100755
index 0000000..cddf108
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/fonts/PatternFlyIcons-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-114.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-114.png
new file mode 100755
index 0000000..955e38d
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-114.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-144.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-144.png
new file mode 100755
index 0000000..c5da67c
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-144.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-152.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-152.png
new file mode 100644
index 0000000..d136a5f
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-152.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-180.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-180.png
new file mode 100644
index 0000000..e60a77b
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-180.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-57.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-57.png
new file mode 100755
index 0000000..2c692ad
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-57.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-72.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-72.png
new file mode 100755
index 0000000..4c2ac89
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-72.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-76.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-76.png
new file mode 100644
index 0000000..524eec8
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/apple-touch-icon-precomposed-76.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/bg-login.jpg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/bg-login.jpg
new file mode 100755
index 0000000..3872ebb
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/bg-login.jpg differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/brand.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/brand.svg
new file mode 100644
index 0000000..81cfe50
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/brand.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="270px" height="10px" viewBox="0 0 270 10" enable-background="new 0 0 270 10" xml:space="preserve">
+<g>
+ <g>
+ <path fill="#FFFFFF" d="M121.965,9.413h-4.883V0.656h4.883v0.903h-3.862V4.38h3.63v0.898h-3.63V8.5h3.862V9.413z"/>
+ <path fill="#FFFFFF" d="M130.988,9.413h-1.158l-4.789-7.352h-0.046c0.062,0.864,0.095,1.655,0.095,2.374v4.978h-0.94V0.656h1.15
+ l4.774,7.317h0.045c-0.006-0.107-0.022-0.453-0.051-1.041c-0.028-0.582-0.039-0.998-0.028-1.254V0.656h0.951v8.753h-0.003V9.413
+ L130.988,9.413z"/>
+ <path fill="#FFFFFF" d="M136.339,9.413h-1.018V1.561h-2.771V0.656h6.564v0.903h-2.771v7.852h-0.002v0.002H136.339z"/>
+ <path fill="#FFFFFF" d="M145.554,9.413h-4.877V0.656h4.877v0.903h-3.859V4.38h3.631v0.898h-3.631V8.5h3.859V9.413z"/>
+ <path fill="#FFFFFF" d="M148.761,5.769v3.641h-1.018V0.656h2.402c1.074,0,1.865,0.204,2.379,0.614
+ c0.514,0.412,0.771,1.032,0.771,1.858c0,1.156-0.586,1.94-1.764,2.349l2.383,3.934h-1.207l-2.121-3.645h-1.826V5.769
+ L148.761,5.769z M148.761,4.897h1.396c0.719,0,1.244-0.142,1.582-0.428c0.334-0.286,0.504-0.714,0.504-1.285
+ c0-0.582-0.17-0.997-0.512-1.254c-0.34-0.255-0.889-0.381-1.643-0.381h-1.324v3.349h-0.004V4.897z"/>
+ <path fill="#FFFFFF" d="M161.124,3.209c0,0.884-0.301,1.567-0.904,2.046c-0.605,0.477-1.475,0.714-2.6,0.714h-1.031v3.444h-1.016
+ V0.656h2.27C160.03,0.656,161.124,1.504,161.124,3.209z M156.589,5.092h0.92c0.898,0,1.555-0.146,1.959-0.435
+ c0.4-0.293,0.604-0.759,0.604-1.404c0-0.577-0.188-1.006-0.568-1.295c-0.381-0.279-0.973-0.423-1.773-0.423h-1.139v3.557H156.589z
+ "/>
+ <path fill="#FFFFFF" d="M164.22,5.769v3.641h-1.02V0.656h2.402c1.074,0,1.865,0.204,2.383,0.614
+ c0.512,0.412,0.771,1.032,0.771,1.858c0,1.156-0.588,1.94-1.762,2.349l2.379,3.934h-1.205l-2.119-3.645h-1.826v0.002H164.22z
+ M164.22,4.897h1.395c0.719,0,1.244-0.142,1.582-0.428c0.334-0.286,0.504-0.714,0.504-1.285c0-0.582-0.17-0.997-0.51-1.254
+ c-0.34-0.255-0.887-0.381-1.645-0.381h-1.322v3.349h-0.004V4.897z"/>
+ <path fill="#FFFFFF" d="M171.03,9.413V0.656h1.018v8.753h-1.018V9.413z"/>
+ <path fill="#FFFFFF" d="M179.636,7.081c0,0.773-0.281,1.374-0.838,1.805c-0.561,0.434-1.318,0.646-2.277,0.646
+ c-1.039,0-1.836-0.134-2.395-0.4V8.147c0.357,0.152,0.75,0.272,1.174,0.357c0.422,0.088,0.844,0.131,1.258,0.131
+ c0.68,0,1.188-0.129,1.531-0.384c0.346-0.257,0.514-0.62,0.514-1.073c0-0.304-0.061-0.556-0.184-0.748
+ c-0.119-0.194-0.318-0.375-0.607-0.537c-0.285-0.162-0.721-0.351-1.301-0.558c-0.816-0.29-1.398-0.636-1.748-1.036
+ c-0.352-0.398-0.525-0.92-0.525-1.562c0-0.674,0.254-1.211,0.764-1.611c0.508-0.398,1.178-0.599,2.014-0.599
+ c0.869,0,1.672,0.161,2.398,0.48l-0.316,0.884c-0.725-0.3-1.428-0.454-2.109-0.454c-0.539,0-0.959,0.114-1.266,0.347
+ c-0.303,0.231-0.453,0.553-0.453,0.965c0,0.305,0.057,0.551,0.168,0.745c0.115,0.195,0.303,0.372,0.566,0.533
+ c0.268,0.161,0.672,0.34,1.221,0.535c0.92,0.327,1.551,0.679,1.896,1.056C179.462,5.995,179.636,6.483,179.636,7.081z"/>
+ <path fill="#FFFFFF" d="M186.556,9.413h-4.881V0.656h4.881v0.903h-3.863V4.38h3.633v0.898h-3.633V8.5h3.863V9.413z"/>
+ <path fill="#FFFFFF" d="M197.677,9.413l-1.09-2.785h-3.51l-1.078,2.785h-1.031l3.463-8.793h0.854l3.443,8.793H197.677z
+ M196.267,5.71l-1.018-2.712c-0.131-0.345-0.271-0.766-0.406-1.263c-0.09,0.383-0.211,0.804-0.377,1.263l-1.031,2.712H196.267z"/>
+ <path fill="#FFFFFF" d="M205.733,3.209c0,0.884-0.303,1.567-0.908,2.046c-0.607,0.477-1.473,0.714-2.596,0.714h-1.031v3.444
+ h-1.021V0.656h2.273C204.642,0.656,205.733,1.504,205.733,3.209z M201.2,5.092h0.914c0.902,0,1.557-0.146,1.961-0.435
+ c0.398-0.293,0.605-0.759,0.605-1.404c0-0.577-0.189-1.006-0.57-1.295c-0.381-0.279-0.969-0.423-1.773-0.423H201.2V5.092
+ L201.2,5.092z"/>
+ <path fill="#FFFFFF" d="M213.366,3.209c0,0.884-0.307,1.567-0.908,2.046c-0.607,0.477-1.473,0.714-2.598,0.714h-1.031v3.444h-1.02
+ V0.656h2.271C212.269,0.656,213.366,1.504,213.366,3.209z M208.827,5.092h0.918c0.904,0,1.559-0.146,1.959-0.435
+ c0.404-0.293,0.604-0.759,0.604-1.404c0-0.577-0.188-1.006-0.566-1.295c-0.381-0.279-0.971-0.423-1.773-0.423h-1.141V5.092
+ L208.827,5.092z"/>
+ <path fill="#FFFFFF" d="M215.44,9.413V0.656h1.021v7.832h3.857V9.41h-4.879V9.413z"/>
+ <path fill="#FFFFFF" d="M222.052,9.413V0.656h1.021v8.753h-1.021V9.413z"/>
+ <path fill="#FFFFFF" d="M229.466,1.44c-0.959,0-1.721,0.32-2.279,0.959c-0.557,0.642-0.834,1.518-0.834,2.633
+ c0,1.146,0.27,2.031,0.807,2.656c0.537,0.621,1.303,0.937,2.299,0.937c0.611,0,1.309-0.108,2.09-0.327v0.891
+ c-0.605,0.229-1.355,0.343-2.244,0.343c-1.289,0-2.285-0.396-2.988-1.181c-0.699-0.776-1.051-1.891-1.051-3.333
+ c0-0.902,0.17-1.69,0.506-2.371c0.336-0.678,0.824-1.202,1.461-1.569s1.387-0.551,2.248-0.551c0.918,0,1.719,0.168,2.408,0.504
+ l-0.432,0.875C230.798,1.594,230.13,1.44,229.466,1.44z"/>
+ <path fill="#FFFFFF" d="M239.204,9.413l-1.09-2.785h-3.512l-1.074,2.785h-1.031l3.459-8.793h0.857l3.445,8.793H239.204z
+ M237.798,5.71l-1.018-2.712c-0.133-0.345-0.27-0.766-0.406-1.263c-0.088,0.383-0.215,0.804-0.377,1.263l-1.033,2.712H237.798z"/>
+ <path fill="#FFFFFF" d="M244.401,9.413h-1.016V1.561h-2.773V0.656h6.564v0.903h-2.771v7.852h-0.004V9.413z"/>
+ <path fill="#FFFFFF" d="M248.743,9.413V0.656h1.018v8.753h-1.018V9.413z"/>
+ <path fill="#FFFFFF" d="M260.005,5.021c0,1.402-0.354,2.503-1.062,3.305c-0.707,0.806-1.691,1.206-2.955,1.206
+ c-1.291,0-2.285-0.396-2.988-1.186c-0.699-0.789-1.051-1.901-1.051-3.338c0-1.424,0.354-2.532,1.057-3.312
+ c0.699-0.785,1.703-1.18,2.99-1.18c1.262,0,2.24,0.399,2.951,1.2C259.655,2.513,260.005,3.614,260.005,5.021z M253.03,5.021
+ c0,1.186,0.25,2.085,0.754,2.697c0.508,0.613,1.242,0.922,2.203,0.922c0.973,0,1.705-0.311,2.201-0.918
+ c0.494-0.615,0.738-1.516,0.738-2.702c0-1.179-0.244-2.072-0.736-2.681c-0.49-0.61-1.223-0.914-2.189-0.914
+ c-0.969,0-1.705,0.306-2.213,0.918C253.282,2.96,253.03,3.851,253.03,5.021z"/>
+ <path fill="#FFFFFF" d="M269.044,9.413h-1.162l-4.783-7.352h-0.049c0.061,0.864,0.094,1.655,0.094,2.374v4.978H262.2V0.656h1.152
+ l4.771,7.319h0.049c-0.012-0.108-0.025-0.455-0.055-1.041c-0.027-0.582-0.041-0.998-0.029-1.256V0.656h0.951v8.755h0.006v0.002
+ H269.044z"/>
+ </g>
+ <g>
+ <path fill="#FFFFFF" d="M7.533,3.368c0,1.013-0.298,1.796-0.896,2.348C6.04,6.269,5.191,6.544,4.093,6.544H3.403v3.008H0.954
+ V0.485h3.139c1.145,0,2.005,0.25,2.58,0.75C7.246,1.736,7.533,2.447,7.533,3.368z M3.403,4.547h0.447
+ c0.368,0,0.66-0.103,0.877-0.31s0.326-0.492,0.326-0.856c0-0.612-0.339-0.918-1.018-0.918H3.403V4.547z"/>
+ <path fill="#FFFFFF" d="M17.652,9.552l-0.446-1.699h-2.944l-0.459,1.699h-2.691l2.958-9.104h3.268l2.995,9.104H17.652z
+ M16.697,5.843l-0.39-1.489c-0.092-0.33-0.202-0.758-0.333-1.283c-0.13-0.525-0.216-0.901-0.257-1.128
+ c-0.037,0.211-0.111,0.558-0.221,1.042c-0.108,0.483-0.353,1.437-0.729,2.857H16.697z"/>
+ <path fill="#FFFFFF" d="M28.423,9.552h-2.449V2.488H23.76V0.485h6.871v2.003h-2.208V9.552z"/>
+ <path fill="#FFFFFF" d="M39.037,9.552h-2.449V2.488h-2.214V0.485h6.871v2.003h-2.208V9.552z"/>
+ <path fill="#FFFFFF" d="M51.035,9.552h-5.382V0.485h5.382V2.45h-2.933v1.427h2.716v1.966h-2.716v1.711h2.933V9.552z"/>
+ <path fill="#FFFFFF" d="M58.184,6.253v3.299h-2.449V0.485h2.97c2.464,0,3.696,0.893,3.696,2.679c0,1.05-0.513,1.862-1.538,2.437
+ l2.642,3.951h-2.777l-1.922-3.299H58.184z M58.184,4.41h0.459c0.855,0,1.284-0.378,1.284-1.135c0-0.625-0.42-0.937-1.26-0.937
+ h-0.483V4.41z"/>
+ <path fill="#FFFFFF" d="M76.072,9.552H72.86L69.55,3.164h-0.057c0.079,1.004,0.118,1.771,0.118,2.301v4.086h-2.17V0.485h3.2
+ l3.299,6.301h0.037c-0.059-0.914-0.086-1.648-0.086-2.202V0.485h2.183v9.066H76.072z"/>
+ <path fill="#FFFFFF" d="M83.557,9.552h-2.412V0.485h5.356V2.45h-2.944v1.73h2.716v1.965h-2.716V9.552z"/>
+ <path fill="#FFFFFF" d="M91.102,9.552V0.485h2.449v7.088h3.49v1.979H91.102z"/>
+ <path fill="#FFFFFF" d="M104.842,3.846l1.562-3.361h2.654l-2.983,5.525v3.541h-2.468V6.085l-2.983-5.6h2.667L104.842,3.846z"/>
+ </g>
+</g>
+</svg>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/favicon.ico b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/favicon.ico
new file mode 100644
index 0000000..43c8163
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/favicon.ico differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/logo.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/logo.svg
new file mode 100755
index 0000000..b9ce0ac
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/logo.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="73px" height="69px" viewBox="0 0 73 69" enable-background="new 0 0 73 69" xml:space="preserve">
+<g>
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="36.2046" y1="2.1504" x2="36.2046" y2="68.6623">
+ <stop offset="0" style="stop-color:#60EFFF"/>
+ <stop offset="1" style="stop-color:#1F89C7"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" d="M36.287,0.137l0.008-0.063l-0.031,0.039l-0.012-0.012L36.262,0l-0.057,0.056L36.148,0l0.011,0.101
+ l-0.013,0.012l-0.03-0.039l0.007,0.063L0,35.447l14.307,20.267l11.05-2.538l10.848,15.255l10.85-15.255l11.05,2.538l8.861-12.554
+ l5.444-7.713L36.287,0.137z M35.108,4.282L30.174,50.52l-9.642-13.151L35.108,4.282z M20.059,36.725l-6.068-8.277L35.057,2.683
+ L20.059,36.725z M29.967,51.407l-4.313,0.99l-7.251-10.193l1.807-4.104L29.967,51.407z M36.092,2.051l0.113-0.258l0.114,0.257
+ l5.102,49.711l-0.015-0.01l-4.999,7.387l-5.409-7.396l-0.007,0.004L36.092,2.051z M42.237,50.521L37.303,4.281l14.576,33.087
+ L42.237,50.521z M52.201,38.101l1.808,4.104l-7.251,10.193l-4.312-0.99L52.201,38.101z M37.355,2.684L58.42,28.448l-6.067,8.277
+ L37.355,2.684z M14.605,54.935L0.907,35.53L32.779,4.374L13.114,28.425l6.623,9.03l-2.127,4.83l7.312,10.28L14.605,54.935z
+ M36.205,67.235L26.086,53.009l4.326-0.992l0.072,0.099l-0.045,0.034l5.988,8.191l5.552-8.201l-0.048-0.032L42,52.017l4.324,0.992
+ L36.205,67.235z M66.4,42.762l-8.594,12.173l-10.317-2.369l7.312-10.28l-2.127-4.83l6.622-9.03L39.633,4.374L71.504,35.53
+ L66.4,42.762z"/>
+</g>
+</svg>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner.gif
new file mode 100644
index 0000000..4c9ea91
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-lg.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-lg.gif
new file mode 100644
index 0000000..0effa66
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-lg.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-sm.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-sm.gif
new file mode 100644
index 0000000..eeaddc2
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-sm.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-xs.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-xs.gif
new file mode 100644
index 0000000..8bfd1bc
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/img/spinner-xs.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/js/patternfly.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/js/patternfly.js
new file mode 100644
index 0000000..170e3c8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/js/patternfly.js
@@ -0,0 +1,214 @@
+// Util: PatternFly Sidebar
+// Set height of sidebar-pf to height of document minus height of navbar-pf if not mobile
+(function ($) {
+ 'use strict';
+ $.fn.sidebar = function () {
+ var documentHeight = 0,
+ navbarpfHeight = 0,
+ colHeight = 0;
+
+ if ($('.navbar-pf .navbar-toggle').is(':hidden')) {
+ documentHeight = $(document).height();
+ navbarpfHeight = $('.navbar-pf').outerHeight();
+ colHeight = documentHeight - navbarpfHeight;
+ }
+ $('.sidebar-pf').parent('.row').children('[class*="col-"]').css({"min-height" : colHeight});
+ };
+
+ $(document).ready(function () {
+ // Call sidebar() on ready if .sidebar-pf exists and .datatable does not exist
+ if ($('.sidebar-pf').length > 0 && $('.datatable').length === 0) {
+ $.fn.sidebar();
+ }
+ });
+
+ $(window).resize(function () {
+ // Call sidebar() on resize if .sidebar-pf exists
+ if ($('.sidebar-pf').length > 0) {
+ $.fn.sidebar();
+ }
+ });
+}(jQuery));
+
+// Util: PatternFly Popovers
+// Add data-close="true" to insert close X icon
+(function ($) {
+ 'use strict';
+
+ $.fn.popovers = function () {
+ // Initialize
+ this.popover();
+
+ // Add close icons
+ this.filter('[data-close=true]').each(function (index, element) {
+ var $this = $(element),
+ title = $this.attr('data-original-title') + '<button type="button" class="close" aria-hidden="true"><span class="pficon pficon-close"></span></button>';
+
+ $this.attr('data-original-title', title);
+ });
+
+ // Bind Close Icon to Toggle Display
+ this.on('click', function (e) {
+ var $this = $(this),
+ $title = $this.next('.popover').find('.popover-title');
+
+ // Only if data-close is true add class "x" to title for right padding
+ $title.find('.close').parent('.popover-title').addClass('closable');
+
+ // Bind x icon to close popover
+ $title.find('.close').on('click', function () {
+ $this.popover('hide');
+ });
+
+ // Prevent href="#" page scroll to top
+ e.preventDefault();
+ });
+
+ return this;
+ };
+}(jQuery));
+
+
+// Util: DataTables Settings
+(function ($) {
+ 'use strict';
+ if ($.fn.dataTableExt) {
+ /* Set the defaults for DataTables initialisation */
+ $.extend(true, $.fn.dataTable.defaults, {
+ "bDestroy": true,
+ "bAutoWidth": false,
+ "iDisplayLength": 20,
+ "sDom":
+ "<'dataTables_header' f i r >" +
+ "<'table-responsive' t >" +
+ "<'dataTables_footer' p >",
+ "oLanguage": {
+ "sInfo": "Showing <b>_START_</b> to <b>_END_</b> of <b>_TOTAL_</b> Items",
+ "sInfoFiltered" : "(of <b>_MAX_</b>)",
+ "sInfoEmpty" : "Showing <b>0</b> Results",
+ "sZeroRecords":
+ "<p>Suggestions</p>" +
+ "<ul>" +
+ "<li>Check the syntax of the search term.</li>" +
+ "<li>Check that the correct menu option is chosen (token ID vs. user ID).</li>" +
+ "<li>Use wildcards (* to match zero or more characters or ? to match a single character).</li>" +
+ "<li>Clear the search field, then click Search to return to the 20 most recent records.</li>" +
+ "</ul>",
+ "sSearch": ""
+ },
+ "sPaginationType": "bootstrap_input"
+ });
+
+ /* Default class modification */
+ $.extend($.fn.dataTableExt.oStdClasses, {
+ "sWrapper": "dataTables_wrapper"
+ });
+
+ /* API method to get paging information */
+ $.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) {
+ return {
+ "iStart": oSettings._iDisplayStart,
+ "iEnd": oSettings.fnDisplayEnd(),
+ "iLength": oSettings._iDisplayLength,
+ "iTotal": oSettings.fnRecordsTotal(),
+ "iFilteredTotal": oSettings.fnRecordsDisplay(),
+ "iPage": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),
+ "iTotalPages": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)
+ };
+ };
+
+ /* Combination of Bootstrap + Input Text style pagination control */
+ $.extend($.fn.dataTableExt.oPagination, {
+ "bootstrap_input": {
+ "fnInit": function (oSettings, nPaging, fnDraw) {
+ var fnClickHandler = function (e) {
+ e.preventDefault();
+ if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
+ fnDraw(oSettings);
+ }
+ },
+ els,
+ nInput;
+
+ $(nPaging).append(
+ '<ul class="pagination">' +
+ ' <li class="first disabled"><span class="i fa fa-angle-double-left"></span></li>' +
+ ' <li class="prev disabled"><span class="i fa fa-angle-left"></span></li>' +
+ '</ul>' +
+ '<div class="pagination-input">' +
+ ' <input type="text" class="paginate_input">' +
+ ' <span class="paginate_of">of <b>3</b></span>' +
+ '</div>' +
+ '<ul class="pagination">' +
+ ' <li class="next disabled"><span class="i fa fa-angle-right"></span></li>' +
+ ' <li class="last disabled"><span class="i fa fa-angle-double-right"></span></li>' +
+ '</ul>'
+ );
+
+ els = $('li', nPaging);
+ $(els[0]).bind('click.DT', { action: "first" }, fnClickHandler);
+ $(els[1]).bind('click.DT', { action: "previous" }, fnClickHandler);
+ $(els[2]).bind('click.DT', { action: "next" }, fnClickHandler);
+ $(els[3]).bind('click.DT', { action: "last" }, fnClickHandler);
+
+ nInput = $('input', nPaging);
+ $(nInput).keyup(function (e) {
+ if (e.which === 38 || e.which === 39) {
+ this.value += 1;
+ } else if ((e.which === 37 || e.which === 40) && this.value > 1) {
+ this.value -= 1;
+ }
+
+ if (this.value === "" || !this.value.match(/[0-9]/)) {
+ /* Nothing entered or non-numeric character */
+ return;
+ }
+
+ var iNewStart = oSettings._iDisplayLength * (this.value - 1);
+ if (iNewStart > oSettings.fnRecordsDisplay()) {
+ /* Display overrun */
+ oSettings._iDisplayStart = (Math.ceil((oSettings.fnRecordsDisplay() - 1) /
+ oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength;
+ fnDraw(oSettings);
+ return;
+ }
+
+ oSettings._iDisplayStart = iNewStart;
+ fnDraw(oSettings);
+ });
+ },
+
+ "fnUpdate": function (oSettings, fnDraw) {
+ var oPaging = oSettings.oInstance.fnPagingInfo(),
+ an = oSettings.aanFeatures.p,
+ ien = an.length,
+ iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength),
+ iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1,
+ i;
+
+ for (i = 0; i < ien; i += 1) {
+ $('.paginate_input').val(iCurrentPage);
+ $('.paginate_of b').html(iPages);
+
+ // Add / remove disabled classes from the static elements
+ if (oPaging.iPage === 0) {
+ $('li.first', an[i]).addClass('disabled');
+ $('li.prev', an[i]).addClass('disabled');
+ } else {
+ $('li.first', an[i]).removeClass('disabled');
+ $('li.prev', an[i]).removeClass('disabled');
+ }
+
+ if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) {
+ $('li.next', an[i]).addClass('disabled');
+ $('li.last', an[i]).addClass('disabled');
+ } else {
+ $('li.next', an[i]).removeClass('disabled');
+ $('li.last', an[i]).removeClass('disabled');
+ }
+ }
+ }
+ }
+ });
+ }
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/js/patternfly.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/js/patternfly.min.js
new file mode 100644
index 0000000..50ab2fa
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/dist/js/patternfly.min.js
@@ -0,0 +1 @@
+!function($){"use strict";$.fn.sidebar=function(){var documentHeight=0,navbarpfHeight=0,colHeight=0;$(".navbar-pf .navbar-toggle").is(":hidden")&&(documentHeight=$(document).height(),navbarpfHeight=$(".navbar-pf").outerHeight(),colHeight=documentHeight-navbarpfHeight),$(".sidebar-pf").parent(".row").children('[class*="col-"]').css({"min-height":colHeight})},$(document).ready(function(){$(".sidebar-pf").length>0&&0===$(".datatable").length&&$.fn.sidebar()}),$(window).resize(function(){$(".sidebar-pf").length>0&&$.fn.sidebar()})}(jQuery),function($){"use strict";$.fn.popovers=function(){return this.popover(),this.filter("[data-close=true]").each(function(index,element){var $this=$(element),title=$this.attr("data-original-title")+'<button type="button" class="close" aria-hidden="true"><span class="pficon pficon-close"></span></button>';$this.attr("data-original-title",title)}),this.on("click",function(e){var $this=$(this),$title=$this.next(".popover").find(".popover-title");$title.find(".close").parent(".popover-title").addClass("closable"),$title.find(".close").on("click",function(){$this.popover("hide")}),e.preventDefault()}),this}}(jQuery),function($){"use strict";$.fn.dataTableExt&&($.extend(!0,$.fn.dataTable.defaults,{bDestroy:!0,bAutoWidth:!1,iDisplayLength:20,sDom:"<'dataTables_header' f i r ><'table-responsive' t ><'dataTables_footer' p >",oLanguage:{sInfo:"Showing <b>_START_</b> to <b>_END_</b> of <b>_TOTAL_</b> Items",sInfoFiltered:"(of <b>_MAX_</b>)",sInfoEmpty:"Showing <b>0</b> Results",sZeroRecords:"<p>Suggestions</p><ul><li>Check the syntax of the search term.</li><li>Check that the correct menu option is chosen (token ID vs. user ID).</li><li>Use wildcards (* to match zero or more characters or ? to match a single character).</li><li>Clear the search field, then click Search to return to the 20 most recent records.</li></ul>",sSearch:""},sPaginationType:"bootstrap_input"}),$.extend($.fn.dataTableExt.oStdClasses,{sWrapper:"dataTables_wrapper"}),$.fn.dataTableExt.oApi.fnPagingInfo=function(oSettings){return{iStart:oSettings._iDisplayStart,iEnd:oSettings.fnDisplayEnd(),iLength:oSettings._iDisplayLength,iTotal:oSettings.fnRecordsTotal(),iFilteredTotal:oSettings.fnRecordsDisplay(),iPage:-1===oSettings._iDisplayLength?0:Math.ceil(oSettings._iDisplayStart/oSettings._iDisplayLength),iTotalPages:-1===oSettings._iDisplayLength?0:Math.ceil(oSettings.fnRecordsDisplay()/oSettings._iDisplayLength)}},$.extend($.fn.dataTableExt.oPagination,{bootstrap_input:{fnInit:function(oSettings,nPaging,fnDraw){var els,nInput,fnClickHandler=function(e){e.preventDefault(),oSettings.oApi._fnPageChange(oSettings,e.data.action)&&fnDraw(oSettings)};$(nPaging).append('<ul class="pagination"> <li class="first disabled"><span class="i fa fa-angle-double-left"></span></li> <li class="prev disabled"><span class="i fa fa-angle-left"></span></li></ul><div class="pagination-input"> <input type="text" class="paginate_input"> <span class="paginate_of">of <b>3</b></span></div><ul class="pagination"> <li class="next disabled"><span class="i fa fa-angle-right"></span></li> <li class="last disabled"><span class="i fa fa-angle-double-right"></span></li></ul>'),els=$("li",nPaging),$(els[0]).bind("click.DT",{action:"first"},fnClickHandler),$(els[1]).bind("click.DT",{action:"previous"},fnClickHandler),$(els[2]).bind("click.DT",{action:"next"},fnClickHandler),$(els[3]).bind("click.DT",{action:"last"},fnClickHandler),nInput=$("input",nPaging),$(nInput).keyup(function(e){if(38===e.which||39===e.which?this.value+=1:(37===e.which||40===e.which)&&this.value>1&&(this.value-=1),""!==this.value&&this.value.match(/[0-9]/)){var iNewStart=oSettings._iDisplayLength*(this.value-1);if(iNewStart>oSettings.fnRecordsDisplay())return oSettings._iDisplayStart=(Math.ceil((oSettings.fnRecordsDisplay()-1)/oSettings._iDisplayLength)-1)*oSettings._iDisplayLength,void fnDraw(oSettings);oSettings._iDisplayStart=iNewStart,fnDraw(oSettings)}})},fnUpdate:function(oSettings){var i,oPaging=oSettings.oInstance.fnPagingInfo(),an=oSettings.aanFeatures.p,ien=an.length,iPages=Math.ceil(oSettings.fnRecordsDisplay()/oSettings._iDisplayLength),iCurrentPage=Math.ceil(oSettings._iDisplayStart/oSettings._iDisplayLength)+1;for(i=0;ien>i;i+=1)$(".paginate_input").val(iCurrentPage),$(".paginate_of b").html(iPages),0===oPaging.iPage?($("li.first",an[i]).addClass("disabled"),$("li.prev",an[i]).addClass("disabled")):($("li.first",an[i]).removeClass("disabled"),$("li.prev",an[i]).removeClass("disabled")),oPaging.iPage===oPaging.iTotalPages-1||0===oPaging.iTotalPages?($("li.next",an[i]).addClass("disabled"),$("li.last",an[i]).addClass("disabled")):($("li.next",an[i]).removeClass("disabled"),$("li.last",an[i]).removeClass("disabled"))}}}))}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/alerts.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/alerts.less
new file mode 100644
index 0000000..9d7fcf3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/alerts.less
@@ -0,0 +1,29 @@
+//
+// Alerts
+// --------------------------------------------------
+
+.alert {
+ border-width: 2px;
+ padding-left: 34px;
+ position: relative;
+ .alert-link {
+ color: @link-color;
+ &:hover {
+ color: @link-hover-color;
+ }
+ }
+ > .pficon {
+ font-size: 20px;
+ position: absolute;
+ left: 7px;
+ top: 7px;
+ }
+ .pficon-info {
+ color: #72767b;
+ }
+}
+
+.alert-dismissable .close {
+ right: -16px;
+ top: 1px;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/badges.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/badges.less
new file mode 100644
index 0000000..e3a5364
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/badges.less
@@ -0,0 +1,11 @@
+//
+// Badges
+// --------------------------------------------------
+
+.badge {
+ margin-left: 6px;
+}
+
+.nav-pills > li > a > .badge {
+ margin-left: 6px;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/blank-slate.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/blank-slate.less
new file mode 100644
index 0000000..7277735
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/blank-slate.less
@@ -0,0 +1,29 @@
+//
+// Blank Slate
+// --------------------------------------------------
+
+.blank-slate-pf{
+ @media (min-width: @screen-sm-min) {
+ padding: @jumbotron-padding*2 @jumbotron-padding*2;
+ }
+ @media (min-width: @screen-md-min) {
+ padding: @jumbotron-padding*3 @jumbotron-padding*4;
+ }
+ background-color: @well-bg;
+ border: 1px solid @well-border;
+ border-radius: @border-radius-base;
+ margin-bottom: 20px;
+ padding: @jumbotron-padding;
+ text-align: center;
+ .blank-slate-pf-icon{
+ color: @gray-light;
+ font-size: @font-size-h1 * 2.4;
+ line-height: @font-size-h1 * 2.4;
+ }
+ .blank-slate-pf-main-action{
+ margin-top: @line-height-computed;
+ }
+ .blank-slate-pf-secondary-action{
+ margin-top: @line-height-computed;
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-combobox.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-combobox.less
new file mode 100644
index 0000000..a045562
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-combobox.less
@@ -0,0 +1,35 @@
+//
+// Bootstrap-Combobox
+// --------------------------------------------------
+
+.combobox-container {
+ &.combobox-selected .glyphicon-remove {
+ display: inline-block;
+ }
+ .caret {
+ margin-left: 0;
+ }
+ .combobox::-ms-clear {
+ display: none;
+ }
+ .dropdown-menu {
+ margin-top: -1px;
+ width: 100%;
+ }
+ .glyphicon-remove {
+ display: none;
+ top: auto;
+ width: 12px;
+ &:before {
+ content: "\e60b";
+ font-family: @icon-font-name-pf;
+ }
+ }
+ .input-group-addon {
+ .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);
+ position: relative; // IE8
+ &:active {
+ .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-datepicker.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-datepicker.less
new file mode 100644
index 0000000..f99955f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-datepicker.less
@@ -0,0 +1,71 @@
+//
+// Bootstrap-Datepicker
+// --------------------------------------------------
+
+.datepicker {
+ border-radius: @border-radius-base;
+ .datepicker-switch, tfoot .today {
+ font-size: @font-size-large;
+ font-weight: 500;
+ }
+ .next, .prev {
+ font-weight: 500;
+ }
+ table tr {
+ td, th {
+ border-radius: @border-radius-base;
+ }
+ td {
+ &.active.active,
+ &.active.active:hover,
+ &.active.active.disabled,
+ &.active.active.disabled:hover {
+ background: @dropdown-link-active-bg !important;
+ color: #fff !important;
+ text-shadow: none;
+ }
+ &.day:hover, &.day.focused {
+ background: @dropdown-link-hover-bg;
+ }
+ &.selected,
+ &.selected:hover,
+ &.selected.disabled,
+ &.selected.disabled:hover {
+ text-shadow: none;
+ }
+ span {
+ border-radius: @border-radius-base;
+ &.active.active,
+ &.active.active:hover,
+ &.active.active.disabled,
+ &.active.active.disabled:hover {
+ background: @dropdown-link-active-bg;
+ text-shadow: none;
+ }
+ &:hover {
+ background: @dropdown-link-hover-bg;
+ }
+ }
+ }
+ }
+ thead tr:first-child th, tfoot tr th {
+ &:hover {
+ background: @dropdown-link-hover-bg;
+ }
+ }
+}
+
+.input-daterange {
+ input:first-child {
+ border-radius: @border-radius-base 0 0 @border-radius-base;
+ }
+ input:last-child {
+ border-radius: 0 @border-radius-base @border-radius-base 0;
+ }
+ .input-group-addon {
+ background-color: @input-group-addon-bg;
+ border-color: @input-group-addon-border-color;
+ line-height: @line-height-base;
+ padding: @padding-base-vertical @padding-base-horizontal;
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-select.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-select.less
new file mode 100644
index 0000000..b60edfe
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-select.less
@@ -0,0 +1,99 @@
+//
+// Bootstrap-select
+// --------------------------------------------------
+
+.bootstrap-select.btn-group {
+ &.form-control {
+ margin-bottom: 0;
+ }
+ .btn {
+ &:hover {
+ border-color: @input-border-hover;
+ }
+ .caret {
+ margin-top: -4px;
+ }
+ .form-control-outline();
+ .has-error & {
+ border-color: @state-danger-text;
+ &:focus {
+ border-color: darken(@state-danger-text, 10%);
+ @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-danger-text, 20%);
+ .box-shadow(@shadow);
+ }
+ }
+ .has-success & {
+ border-color: @state-success-text;
+ &:focus {
+ border-color: darken(@state-success-text, 10%);
+ @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-success-text, 20%);
+ .box-shadow(@shadow);
+ }
+ }
+ .has-warning & {
+ border-color: @state-warning-text;
+ &:focus {
+ border-color: darken(@state-warning-text, 10%);
+ @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-warning-text, 20%);
+ .box-shadow(@shadow);
+ }
+ }
+ .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");
+ }
+ .dropdown-menu { // Also see navbar.less
+ > .active > a {
+ &, &:active {
+ background-color: @dropdown-link-hover-bg !important;
+ border-color: @dropdown-link-hover-border-color !important;
+ color: @gray-dark !important;
+ small {
+ color: @gray-light !important;
+ }
+ }
+ }
+ > .disabled > a {
+ color: @gray-light !important;
+ }
+ > .selected > a {
+ background-color: @dropdown-link-active-bg !important;
+ border-color: @dropdown-link-active-border-color !important;
+ color: #fff !important;
+ small {
+ color: #70c8e7 !important;
+ color:rgba(225, 255, 255, 0.5) !important;
+ }
+ }
+ .divider {
+ background: @dropdown-divider-bg !important;
+ margin: @dropdown-divider-margin !important;
+ }
+ dt {
+ color: #969696;
+ font-weight:normal;
+ padding: 1px 10px;
+ }
+ li {
+ & > a.opt {
+ padding: 1px 10px;
+ }
+ & a {
+ &:active small {
+ color: #70c8e7 !important;
+ color:rgba(225, 255, 255, 0.5) !important;
+ }
+ &:hover, &:focus {
+ small {
+ color: @gray-light;
+ }
+ }
+ }
+ &:not(.disabled) {
+ a:hover, a:focus {
+ small {
+ color: @gray-light;
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-treeview.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-treeview.less
new file mode 100644
index 0000000..f7357a0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/bootstrap-treeview.less
@@ -0,0 +1,37 @@
+//
+// Bootstrap Tree View
+// --------------------------------------------------
+
+.treeview {
+ .list-group {
+ border-top: 0;
+ }
+ .list-group-item {
+ background: transparent;
+ border-bottom: 1px solid transparent !important;
+ border-top: 1px solid transparent !important;
+ margin-bottom: 0;
+ padding: 0 10px;
+ &:hover {
+ background: @dropdown-link-hover-bg !important;
+ border-color: @dropdown-link-hover-border-color !important;
+ }
+ &.node-selected {
+ background: @dropdown-link-active-bg !important;
+ border-color: @dropdown-link-active-border-color !important;
+ color: @dropdown-link-active-color !important;
+ }
+ }
+ span.icon {
+ display: inline-block;
+ font-size: @font-size-base + 1;
+ min-width: 10px;
+ text-align: center;
+ > [class*="fa-angle"] {
+ font-size: @font-size-base + 3;
+ }
+ }
+ span.indent {
+ margin-right: 5px;
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/breadcrumbs.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/breadcrumbs.less
new file mode 100644
index 0000000..63f11e1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/breadcrumbs.less
@@ -0,0 +1,20 @@
+//
+// Breadcrumbs
+// --------------------------------------------------
+
+.breadcrumb {
+ padding-left: 0;
+ > .active strong {
+ font-weight: 600;
+ }
+ > li {
+ display: inline; /* IE8 */
+ + li:before {
+ color: @gray-light;
+ content: @fa-var-angle-double-right;
+ font-family: @icon-font-name-fa;
+ font-size: @font-size-base - 1;
+ padding: 0 9px 0 7px;
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/buttons.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/buttons.less
new file mode 100644
index 0000000..c5468df
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/buttons.less
@@ -0,0 +1,48 @@
+//
+// Buttons
+// --------------------------------------------------
+
+.btn {
+ .box-shadow(0 2px 3px rgba(0,0,0,.1));
+ &:active {
+ .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));
+ }
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ background-color: #f8f8f8 !important;
+ background-image: none !important;
+ border-color: #d1d1d1 !important;
+ color: #969696 !important;
+ opacity: 1;
+ &:active {
+ .box-shadow(none);
+ }
+ &.btn-link {
+ background-color: transparent !important;
+ border: 0;
+ }
+ }
+}
+
+.btn-danger {
+ .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-bg-img-start; @btn-danger-bg-img-stop; @btn-danger-border);
+}
+
+.btn-default {
+ .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);
+}
+
+.btn-link {
+ &, &:active {
+ .box-shadow(none);
+ }
+}
+
+.btn-primary {
+ .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-bg-img-start; @btn-primary-bg-img-stop; @btn-primary-border);
+}
+
+.btn-xs, .btn-group-xs .btn {
+ font-weight: @btn-xs-font-weight;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/cards.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/cards.less
new file mode 100644
index 0000000..77abebe
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/cards.less
@@ -0,0 +1,60 @@
+//
+// Cards
+// --------------------------------------------------
+
+.container-cards-pf {
+ margin-top: @grid-gutter-width/2;
+}
+
+.card-pf {
+ background: @card-pf-bg-color;
+ border-top: 2px solid @card-pf-border-top-color;
+ .box-shadow(0 1px 1px rgba(0,0,0,.175));
+ padding: 0 @grid-gutter-width/2;
+ margin: 0 (-(@grid-gutter-width/4)) @grid-gutter-width/2;
+ &.card-pf-accented {
+ border-top-color: @card-pf-accented-border-top-color;
+ }
+}
+
+.card-pf-body {
+ margin: @grid-gutter-width/2 0;
+ padding: 0 0 @grid-gutter-width/2;
+ > *:last-child {
+ margin-bottom: 0;
+ }
+}
+
+.card-pf-footer {
+ background-color: @card-pf-footer-bg-color;
+ border-top: 1px solid @card-pf-border-color;
+ margin: 0 (-(@grid-gutter-width/2)) !important;
+ padding: @grid-gutter-width/2 @grid-gutter-width/2 @grid-gutter-width/4;
+ a > {
+ .fa, .pficon {
+ margin-right: 5px;
+ }
+ }
+}
+
+.card-pf-heading {
+ border-bottom: 1px solid @card-pf-border-color;
+ margin: 0 (-(@grid-gutter-width/2)) @grid-gutter-width/2;
+ padding: 0 @grid-gutter-width/2 0;
+}
+
+.card-pf-title {
+ font-size: @font-size-h3;
+ font-weight: 300;
+ margin: @grid-gutter-width/2 0;
+ padding: 0;
+}
+
+.cards-pf {
+ background: @card-pf-container-bg-color;
+}
+
+.row-cards-pf {
+ margin-left: -(@grid-gutter-width/4);
+ margin-right: -(@grid-gutter-width/4);
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/charts.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/charts.less
new file mode 100644
index 0000000..125b91e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/charts.less
@@ -0,0 +1,71 @@
+//
+// Charts
+// --------------------------------------------------
+
+.c3 {
+ path {
+ stroke: @table-border-color;
+ }
+ svg {
+ font-family: @font-family-base;
+ }
+}
+
+.c3-axis-x .tick line {
+ stroke: @table-border-color;
+}
+
+.c3-axis-y .tick line {
+ display: none;
+}
+
+.c3-chart-arc path {
+ stroke: #fff;
+}
+
+.c3-grid line {
+ stroke: @table-border-color;
+}
+
+.c3-line {
+ stroke-width: 2px;
+}
+
+.c3-tooltip {
+ background: @tooltip-bg;
+ .box-shadow(none);
+ .opacity(@tooltip-opacity);
+
+ td {
+ background: transparent;
+ border: 0;
+ color: #fff;
+ font-size: @font-size-base;
+ padding: 5px 10px;
+ }
+
+ th {
+ background: transparent;
+ font-size: @font-size-base;
+ padding: 5px 10px 0;
+ }
+
+ tr {
+ border: 0;
+ + tr > td {
+ padding-top: 0;
+ }
+ }
+}
+
+.c3-tooltip-sparkline {
+ background: @tooltip-bg;
+ color: #fff;
+ .opacity(@tooltip-opacity);
+ padding: 2px 6px;
+}
+
+.c3-xgrid, .c3-ygrid {
+ stroke-dasharray: 0 0;
+}
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/close.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/close.less
new file mode 100644
index 0000000..d6dd2a0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/close.less
@@ -0,0 +1,13 @@
+//
+// Close icons
+// --------------------------------------------------
+
+
+.close {
+ text-shadow: none;
+ .opacity(.6);
+ &:hover,
+ &:focus {
+ .opacity(.9);
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/datatables.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/datatables.less
new file mode 100755
index 0000000..80e03d5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/datatables.less
@@ -0,0 +1,222 @@
+//
+// Datatables
+// --------------------------------------------------
+
+.ColVis_Button {
+ &:active {
+ &:focus {
+ outline: none;
+ }
+ }
+}
+
+.ColVis_catcher {
+ position: absolute;
+ z-index: 999;
+}
+
+.ColVis_collection {
+ background-color: @dropdown-bg;
+ border: 1px solid @dropdown-fallback-border; // IE8 fallback
+ border: 1px solid @dropdown-border;
+ border-radius: @border-radius-base;
+ .box-shadow(0 6px 12px rgba(0,0,0,.175));
+ background-clip: padding-box;
+ list-style: none;
+ margin: -1px 0 0 0;
+ padding: 5px 10px;
+ width: 150px;
+ z-index: @zindex-dropdown;
+ label {
+ font-weight: normal;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding-left: 20px;
+ }
+}
+
+.ColVis_collectionBackground {
+ background-color: #fff;
+ height: 100%;
+ left: 0;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 998;
+}
+
+.dataTables_header {
+ background-color: #f6f6f6;
+ border: 1px solid @table-border-color;
+ border-bottom: none;
+ padding: 5px;
+ position: relative;
+ text-align: center;
+ .btn {
+ .box-shadow(none);
+ }
+ .ColVis {
+ position: absolute;
+ right: 5px;
+ text-align: left;
+ top: 5px;
+ + .dataTables_info {
+ padding-right: 30px;
+ }
+ }
+ .dataTables_filter {
+ position: absolute;
+ input {
+ border: 1px solid #bbb;
+ height: 24px;
+ @media (max-width: @screen-xs-max) {
+ width: 100px;
+ }
+ }
+ }
+ .dataTables_info {
+ padding: 2px 0;
+ @media (max-width: @screen-xs) {
+ text-align: right;
+ }
+ b {
+ font-weight: bold;
+ }
+ }
+}
+
+.dataTables_footer {
+ background-color: #fff;
+ border: 1px solid @table-border-color;
+ border-top: none;
+ overflow: hidden;
+}
+
+.dataTables_paginate {
+ background: #fafafa;
+ float: right;
+ margin: 0;
+ .pagination {
+ float: left;
+ margin: 0;
+ > li {
+ > span {
+ border-color: #ffffff #e1e1e1 #f4f4f4;
+ border-width: 0 1px;
+ font-size: @font-size-base + 4;
+ font-weight: normal;
+ padding: 0;
+ text-align: center;
+ width: 31px;
+ &:hover,
+ &:focus {
+ .reset-filter();
+ }
+ }
+ &.last > span {
+ border-right: none;
+ }
+ &.disabled > span {
+ background: #f5f5f5;
+ border-left-color: #ececec;
+ border-right-color: #ececec;
+ .reset-filter();
+ }
+ }
+ }
+ .pagination-input {
+ float: left;
+ font-size: @font-size-base;
+ line-height: 1em;
+ padding: 4px 15px 0;
+ text-align: right;
+ .paginate_input {
+ border: 1px solid #d3d3d3;
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
+ font-size: @font-size-base;
+ font-weight: 600;
+ height: 19px;
+ margin-right: 8px;
+ padding-right: 3px;
+ text-align: right;
+ width: 30px;
+ }
+ .paginate_of {
+ position: relative;
+ b {
+ margin-left: 3px;
+ }
+ }
+ }
+}
+
+.dataTables_wrapper {
+ margin: @line-height-computed 0;
+ @media (max-width: @screen-xs-max) {
+ .table-responsive {
+ margin-bottom: 0;
+ }
+ }
+}
+
+.DTCR_clonedTable {
+ background-color: rgba(255, 255, 255, 0.7);
+ z-index: 202;
+}
+
+.DTCR_pointer {
+ background-color: @link-color;
+ width: 1px;
+ z-index: 201;
+}
+
+table.datatable {
+ margin-bottom: 0;
+ max-width: none !important;
+ thead {
+ .sorting,
+ .sorting_asc,
+ .sorting_desc,
+ .sorting_asc_disabled,
+ .sorting_desc_disabled {
+ cursor: pointer;
+ *cursor: hand;
+ }
+ .sorting_asc,
+ .sorting_desc {
+ border: 0;
+ color: @link-color !important;
+ display: block;
+ position: relative;
+ &:after {
+ content: @fa-var-angle-down;
+ font-family: @icon-font-name-fa;
+ font-size: @font-size-base - 2;
+ font-weight: normal;
+ height: @font-size-base - 3;
+ left: 7px;
+ line-height: @font-size-base;
+ position: relative;
+ top: 2px;
+ vertical-align: baseline;
+ width: @font-size-base;
+ }
+ &:before {
+ background: @link-color;
+ content: '';
+ height: 2px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ }
+ }
+ .sorting_asc:after {
+ content: @fa-var-angle-up;
+ top: -3px;
+ }
+ }
+ th:active {
+ outline: none;
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/dropdowns.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/dropdowns.less
new file mode 100755
index 0000000..259921c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/dropdowns.less
@@ -0,0 +1,145 @@
+//
+// Dropdowns
+// --------------------------------------------------
+
+
+// Dropdown arrow/caret
+// Modified to use Font Awesome's angle-down icon
+.caret {
+ font-family: @icon-font-name-fa;
+ font-weight: normal;
+ height: @font-size-base - 3;
+ position: relative;
+ vertical-align: baseline;
+ width: @font-size-base;
+ &:before {
+ bottom: 0;
+ content: @fa-var-angle-down;
+ left: 0;
+ line-height: @font-size-base;
+ position: absolute;
+ text-align: center;
+ top: -1px;
+ right: 0;
+ }
+}
+
+// The dropdown menu (ul)
+.dropdown-menu {
+ // Dividers (basically an hr) within the dropdown
+ .divider {
+ .nav-divider(@dropdown-divider-bg, @dropdown-divider-margin);
+ }
+ // Links within the dropdown menu
+ > li > a {
+ border-color: transparent;
+ border-style: solid;
+ border-width: 1px 0;
+ padding: 1px 10px;
+ }
+}
+
+// Hover/Focus state
+.dropdown-menu > li > a {
+ &:hover, &:focus {
+ border-color: @dropdown-link-hover-border-color;
+ .reset-filter();
+ }
+ &:active {
+ background-color: @dropdown-link-focus-bg;
+ border-color: @dropdown-link-active-border-color;
+ color: @dropdown-link-focus-color !important;
+ .reset-filter();
+ }
+}
+
+// Active state
+.dropdown-menu > .active > a {
+ &,
+ &:hover,
+ &:focus {
+ background-color: @dropdown-link-active-bg !important;
+ border-color: @dropdown-link-active-border-color !important;
+ .reset-filter();
+ }
+}
+
+// Disabled state
+.dropdown-menu > .disabled > a {
+ &,
+ &:hover,
+ &:focus {
+ border-color: transparent;
+ }
+}
+// Nuke hover/focus effects
+.dropdown-menu > .disabled > a {
+ &:hover,
+ &:focus {
+ border-color: transparent;
+ }
+}
+
+// Dropdown section headers
+.dropdown-header {
+ padding-left: 10px;
+ padding-right: 10px;
+ text-transform: uppercase;
+}
+
+// Position Menu closer to button
+.btn-group, .input-group-btn {
+ > .dropdown-menu {
+ margin-top: -1px;
+ }
+}
+
+// Position Menu closer to button (dropup-menu)
+.dropup .dropdown-menu {
+ margin-bottom: -1px;
+}
+
+// Add back styles for dropdown-submenu
+.dropdown-submenu {
+ position:relative;
+ &:hover {
+ > a {
+ background-color: @dropdown-link-hover-bg;
+ border-color: @dropdown-link-hover-border-color;
+ }
+ > .dropdown-menu {
+ display: block;
+ }
+ }
+ &.pull-left {
+ float: none !important;
+ > .dropdown-menu {
+ left: auto;
+ margin-left: 10px;
+ right: 100%;
+ }
+ }
+ > a {
+ padding-right: 20px !important;
+ &:after {
+ content: @fa-var-angle-right;
+ font-family: @icon-font-name-fa;
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 2px;
+ }
+ }
+ > .dropdown-menu {
+ left: 100%;
+ margin-top: 0;
+ top: -6px;
+ }
+ .dropup & > .dropdown-menu {
+ bottom: -5px;
+ top: auto;
+ }
+ .open &.active > .dropdown-menu {
+ display: block;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/fonts.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/fonts.less
new file mode 100644
index 0000000..f5533cd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/fonts.less
@@ -0,0 +1,54 @@
+//
+// Fonts
+// --------------------------------------------------
+
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 300;
+ src: url('@{font-path}/OpenSans-Light-webfont.eot');
+ src: url('@{font-path}/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
+ url('@{font-path}/OpenSans-Light-webfont.woff') format('woff'),
+ url('@{font-path}/OpenSans-Light-webfont.ttf') format('truetype'),
+ url('@{font-path}/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: url('@{font-path}/OpenSans-Regular-webfont.eot');
+ src: url('@{font-path}/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
+ url('@{font-path}/OpenSans-Regular-webfont.woff') format('woff'),
+ url('@{font-path}/OpenSans-Regular-webfont.ttf') format('truetype'),
+ url('@{font-path}/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+ src: url('@{font-path}/OpenSans-Semibold-webfont.eot');
+ src: url('@{font-path}/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
+ url('@{font-path}/OpenSans-Semibold-webfont.woff') format('woff'),
+ url('@{font-path}/OpenSans-Semibold-webfont.ttf') format('truetype'),
+ url('@{font-path}/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 700;
+ src: url('@{font-path}/OpenSans-Bold-webfont.eot');
+ src: url('@{font-path}/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),
+ url('@{font-path}/OpenSans-Bold-webfont.woff') format('woff'),
+ url('@{font-path}/OpenSans-Bold-webfont.ttf') format('truetype'),
+ url('@{font-path}/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 800;
+ src: url('@{font-path}/OpenSans-ExtraBold-webfont.eot');
+ src: url('@{font-path}/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'),
+ url('@{font-path}/OpenSans-ExtraBold-webfont.woff') format('woff'),
+ url('@{font-path}/OpenSans-ExtraBold-webfont.ttf') format('truetype'),
+ url('@{font-path}/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') format('svg');
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/forms.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/forms.less
new file mode 100644
index 0000000..af4b6d3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/forms.less
@@ -0,0 +1,31 @@
+//
+// Forms
+// --------------------------------------------------
+
+.form-control {
+ &[disabled], &[readonly], fieldset[disabled] & {
+ border-color: @input-border-disabled !important;
+ .box-shadow(none);
+ color: #969696;
+ }
+ &:hover {
+ border-color: @input-border-hover;
+ .has-error & {
+ border-color: darken(@state-danger-text, 10%);
+ }
+ .has-success & {
+ border-color: darken(@state-success-text, 10%);
+ }
+ .has-warning & {
+ border-color: darken(@state-warning-text, 10%);
+ }
+ }
+}
+
+.input-group .input-group-btn .btn {
+ .box-shadow(none);
+}
+
+label {
+ font-weight: 600;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/icons.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/icons.less
new file mode 100644
index 0000000..166b63b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/icons.less
@@ -0,0 +1,137 @@
+//
+// Icons
+// --------------------------------------------------
+// Custom icons and selections from IcoMoon - Free (http://icomoon.io/#icons)
+
+@font-face {
+ font-family: '@{icon-font-name-pf}';
+ src:url('@{font-path}/@{icon-font-name-pf}.eot');
+ src:url('@{font-path}/@{icon-font-name-pf}.eot?#iefix') format('embedded-opentype'),
+ url('@{font-path}/@{icon-font-name-pf}.ttf') format('truetype'),
+ url('@{font-path}/@{icon-font-name-pf}.woff') format('woff'),
+ url('@{font-path}/@{icon-font-name-pf}.svg#@{icon-font-name-pf}') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+[class^="@{icon-prefix}-"], [class*=" @{icon-prefix}-"] {
+ display: inline-block;
+ font-family: '@{icon-font-name-pf}';
+ font-style: normal;
+ font-variant: normal;
+ font-weight: normal;
+ line-height: 1;
+ speak: none;
+ text-transform: none;
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.@{icon-prefix}-screen:before {
+ content: "\e600";
+}
+.@{icon-prefix}-save:before {
+ content: "\e601";
+}
+.@{icon-prefix}-ok:before {
+ color: @brand-success;
+ content: "\e602";
+}
+.@{icon-prefix}-messages:before, // class name deprecated
+.@{icon-prefix}-flag:before {
+ content: "\e603";
+}
+.@{icon-prefix}-info:before {
+ content: "\e604";
+}
+.@{icon-prefix}-help:before {
+ content: "\e605";
+}
+.@{icon-prefix}-folder-open:before {
+ content: "\e606";
+}
+.@{icon-prefix}-folder-close:before {
+ content: "\e607";
+}
+.@{icon-prefix}-edit:before {
+ content: "\e60a";
+}
+.@{icon-prefix}-close:before {
+ content: "\e60b";
+}
+.@{icon-prefix}-user:before {
+ content: "\e60e";
+}
+.@{icon-prefix}-users:before {
+ content: "\e60f";
+}
+.@{icon-prefix}-add-circle-o:before {
+ content: "\e61b";
+}
+.@{icon-prefix}-warning-triangle-o:before {
+ color: @brand-warning;
+ content: "\e61c";
+}
+.@{icon-prefix}-error-circle-o:before {
+ color: @brand-danger;
+ content: "\e61d";
+}
+.@{icon-prefix}-service:before {
+ content: "\e61e";
+}
+.@{icon-prefix}-image:before {
+ content: "\e61f";
+}
+.@{icon-prefix}-settings:before {
+ content: "\e610";
+}
+.@{icon-prefix}-delete:before {
+ content: "\e611";
+}
+.@{icon-prefix}-print:before {
+ content: "\e612";
+}
+.@{icon-prefix}-refresh:before, // class name deprecated
+.@{icon-prefix}-restart:before {
+ content: "\e613";
+}
+.@{icon-prefix}-running:before {
+ content: "\e614";
+}
+.@{icon-prefix}-import:before {
+ content: "\e615";
+}
+.@{icon-prefix}-export:before {
+ content: "\e616";
+}
+.@{icon-prefix}-history:before {
+ content: "\e617";
+}
+.@{icon-prefix}-home:before {
+ content: "\e618";
+}
+.@{icon-prefix}-cluster:before {
+ content: "\e620";
+}
+.@{icon-prefix}-container-node:before {
+ content: "\e621";
+}
+.@{icon-prefix}-project:before {
+ content: "\e622";
+}
+.@{icon-prefix}-registry:before {
+ content: "\e623";
+}
+.@{icon-prefix}-replicator:before {
+ content: "\e624";
+}
+.@{icon-prefix}-route:before {
+ content: "\e625";
+}
+.@{icon-prefix}-openshift:before {
+ content: "\e626";
+}
+.@{icon-prefix}-kubernetes:before {
+ content: "\e627";
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/infotip.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/infotip.less
new file mode 100755
index 0000000..5917154
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/infotip.less
@@ -0,0 +1,149 @@
+//
+// Info Tip
+// --------------------------------------------------
+
+// Overwrites for navbar.less
+.navbar-nav > li > .dropdown-menu.infotip {
+ border-top-width: 1px !important;
+ margin-top: @popover-arrow-width;
+}
+
+// Overwrites for PatternFly - navbar.less
+@media (max-width: @grid-float-breakpoint-max) {
+ .navbar-pf .navbar-nav .open .dropdown-menu.infotip {
+ background-color: #fff !important;
+ margin-top: 0;
+ }
+}
+
+// Extends "dropdown-menu"
+.infotip {
+ min-width: 235px;
+ padding: 0;
+ .list-group {
+ border-top: 0;
+ margin: 0;
+ padding: 8px 0;
+ .list-group-item {
+ border: none;
+ margin: 0 15px 0 34px;
+ padding: 5px 0;
+ > .i {
+ color: @gray-pf;
+ font-size: 13px;
+ left: -20px;
+ position: absolute;
+ top: 8px;
+ }
+ > a {
+ color: @gray-pf;
+ line-height: 13px;
+ }
+ > .close {
+ float: right;
+ }
+ }
+ }
+ .footer {
+ background-color: #f5f5f5;
+ padding: 6px 15px;
+ a:hover {
+ color: @link-color;
+ }
+ }
+}
+
+// Arrows (Copy from popovers.less)
+//
+// .arrow is outer, .arrow:after is inner
+
+.infotip .arrow {
+ &,
+ &:after {
+ border-color: transparent;
+ border-style: solid;
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+ }
+}
+.infotip .arrow {
+ border-width: @popover-arrow-outer-width;
+}
+.infotip .arrow:after {
+ border-width: @popover-arrow-width;
+ content: "";
+}
+
+.infotip {
+ &.bottom .arrow,
+ &.bottom-left .arrow,
+ &.bottom-right .arrow {
+ border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback
+ border-bottom-color: @popover-arrow-outer-color;
+ border-top-width: 0;
+ left: 50%;
+ margin-left: -@popover-arrow-outer-width;
+ top: -@popover-arrow-outer-width;
+ &:after {
+ border-top-width: 0;
+ border-bottom-color: @popover-arrow-color;
+ content: " ";
+ margin-left: -@popover-arrow-width;
+ top: 1px;
+ }
+ }
+ &.bottom-left .arrow {
+ left: 20%;
+ }
+ // Default:
+ &.bottom-right .arrow {
+ left: 80%;
+ }
+ &.top .arrow {
+ border-bottom-width: 0;
+ border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback
+ border-top-color: @popover-arrow-outer-color;
+ bottom: -@popover-arrow-outer-width;
+ left: 50%;
+ margin-left: -@popover-arrow-outer-width;
+ &:after {
+ border-bottom-width: 0;
+ border-top-color: #f5f5f5;
+ bottom: 1px;
+ content: " ";
+ margin-left: -@popover-arrow-width;
+ }
+ }
+ &.right .arrow {
+ border-left-width: 0;
+ border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback
+ border-right-color: @popover-arrow-outer-color;
+ left: -@popover-arrow-outer-width;
+ margin-top: -@popover-arrow-outer-width;
+ top: 50%;
+ &:after {
+ bottom: -@popover-arrow-width;
+ border-left-width: 0;
+ border-right-color: @popover-arrow-color;
+ content: " ";
+ left: 1px;
+ }
+ }
+ &.left .arrow {
+ border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback
+ border-left-color: @popover-arrow-outer-color;
+ border-right-width: 0;
+ margin-top: -@popover-arrow-outer-width;
+ right: -@popover-arrow-outer-width;
+ top: 50%;
+ &:after {
+ border-left-color: @popover-arrow-color;
+ border-right-width: 0;
+ bottom: -@popover-arrow-width;
+ content: " ";
+ right: 1px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/labels.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/labels.less
new file mode 100644
index 0000000..6df027b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/labels.less
@@ -0,0 +1,12 @@
+//
+// Labels
+// --------------------------------------------------
+
+.label {
+ border-radius: 0;
+ font-size: 100%;
+ font-weight: 600;
+ h1 &, h2 &, h3 &, h4 &, h5 &, h6 & {
+ font-size: 75%;
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/list-group.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/list-group.less
new file mode 100644
index 0000000..2f2a78e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/list-group.less
@@ -0,0 +1,18 @@
+//
+// List groups
+// --------------------------------------------------
+
+.list-group {
+ border-top: 1px solid @list-group-top-border;
+ .list-group-item:first-child {
+ border-top: 0;
+ }
+}
+.list-group-item {
+ border-left: 0;
+ border-right: 0;
+}
+
+.list-group-item-heading {
+ font-weight: 700;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/login.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/login.less
new file mode 100755
index 0000000..2d31e65
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/login.less
@@ -0,0 +1,100 @@
+//
+// Login
+// --------------------------------------------------
+
+.login-pf {
+ height: 100%;
+ #brand {
+ position: relative;
+ top: -70px;
+ img {
+ display: block;
+ height: 18px;
+ margin: 0 auto;
+ max-width: 100%;
+ @media (min-width: @screen-sm-min) {
+ margin: 0;
+ text-align: left;
+ }
+ }
+ }
+ #badge {
+ display: block;
+ margin: 20px auto 70px;
+ position: relative;
+ text-align: center;
+ @media (min-width: @screen-sm-min) {
+ float: right;
+ margin-right: 64px;
+ margin-top: 50px;
+ }
+ }
+ body {
+ background: @login-bg-color url("@{img-path}/@{img-bg-login}") repeat-x 50% 0;
+ background-size: auto;
+ @media (min-width: @screen-sm-min) {
+ background-size: 100% auto;
+ }
+ }
+ .container {
+ background-color: @login-container-bg-color;
+ background-color: @login-container-bg-color-rgba;
+ clear: right;
+ color: #fff;
+ padding-bottom: 40px;
+ padding-top: 20px;
+ width: auto;
+ @media (min-width: @screen-sm-min) {
+ bottom: 13%;
+ padding-left: 80px;
+ position: absolute;
+ width: 100%;
+ }
+ [class^='alert'] {
+ background: transparent;
+ color: #fff;
+ }
+ .details {
+ p:first-child {
+ border-top: 1px solid #474747;
+ padding-top: 25px;
+ margin-top: 25px;
+ }
+ @media (min-width: @screen-sm-min) {
+ p:first-child {
+ border-top: 0;
+ padding-top: 0;
+ margin-top: 0;
+ }
+ border-left: 1px solid #474747;
+ padding-left: 40px;
+ }
+ p {
+ margin-bottom: 2px;
+ }
+ }
+ .form-horizontal {
+ .control-label {
+ font-size: @font-size-base + 1;
+ font-weight: 400;
+ text-align: left;
+ }
+ .form-group:last-child {
+ &, .help-block:last-child {
+ margin-bottom: 0;
+ }
+ }
+ }
+ .help-block {
+ color: #fff;
+ }
+ .login {
+ @media (min-width: @screen-sm-min) {
+ padding-right: 40px;
+ }
+ }
+ .submit {
+ text-align: right;
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/mixins.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/mixins.less
new file mode 100644
index 0000000..6ec3d31
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/mixins.less
@@ -0,0 +1,99 @@
+//
+// Mixins
+// --------------------------------------------------
+// Bootstrap overrides and PatternFly-specific mixins
+
+// Bootstrap overrides
+// -------------------
+
+// Button variants
+.button-variant(@color; @background; @background-image-start; @background-image-stop; @border) {
+ background-color: @background;
+ #gradient > .vertical(@background-image-start, @background-image-stop);
+ border-color: @border;
+ color: @color;
+
+ &:hover,
+ &:focus,
+ &:active,
+ &.active,
+ .open .dropdown-toggle& {
+ background-color: @background;
+ background-image: none;
+ border-color: @border;
+ color: @color;
+ }
+ &:active,
+ &.active,
+ .open .dropdown-toggle& {
+ background-image: none;
+ &:hover,
+ &:focus,
+ &.focus {
+ background-color: darken(@background, 5%);
+ border-color: darken(@border, 7%);
+ }
+ }
+ &.disabled,
+ &[disabled],
+ fieldset[disabled] & {
+ &,
+ &:hover,
+ &:focus,
+ &:active,
+ &.active {
+ background-color: @background;
+ border-color: @border
+ }
+ }
+}
+
+// Form control outline
+.form-control-outline(@color: @input-border-focus) {
+ @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);
+ &:focus {
+ border-color: @color;
+ outline: 0 !important;
+ .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}");
+ }
+}
+
+// Gradients
+#gradient {
+ .striped(@color: rgba(0,0,0,.15); @angle: -45deg) {
+ background-image: -webkit-linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);
+ background-image: linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);
+ }
+}
+
+// Horizontal dividers
+.nav-divider(@color: #e5e5e5, @margin: 4px 1px) {
+ background-color: @color;
+ height: 1px;
+ margin: @margin;
+ overflow: hidden;
+}
+
+// Placeholder text
+.placeholder(@color: @input-color-placeholder) {
+ &:-moz-placeholder { color: @color; font-style: italic; } // Firefox 4-18
+ &::-moz-placeholder { color: @color; font-style: italic;} // Firefox 19+
+ &:-ms-input-placeholder { color: @color; font-style: italic; } // Internet Explorer 10+
+ &::-webkit-input-placeholder { color: @color; font-style: italic; } // Safari and Chrome
+}
+
+// PatternFly-specific
+// -------------------
+
+.tab-indicator(@background: @gray-light-pf, @left: 15px, @right: 15px) {
+ &:before {
+ background: @background;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: @left;
+ position: absolute;
+ right: @right;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/modals.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/modals.less
new file mode 100644
index 0000000..615ba4d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/modals.less
@@ -0,0 +1,38 @@
+//
+// Modals
+// --------------------------------------------------
+
+// Modal header
+// Top section of the modal w/ title and dismiss
+.modal-header {
+ background-color: #f8f8f8;
+ border-bottom: none;
+ padding: @modal-title-padding-vertical @modal-title-padding-horizontal;
+}
+// Close icon
+.modal-header .close {
+ margin-top: 2px;
+}
+
+// Title text within header
+.modal-title {
+ font-size: 13px;
+ font-weight: 700;
+}
+
+// Footer (for actions)
+.modal-footer {
+ border-top: none;
+ margin-top: 15px;
+ padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;
+ > .btn {
+ padding-left: 10px;
+ padding-right: 10px;
+ > .fa-angle-left {
+ margin-right: 5px;
+ }
+ > .fa-angle-right {
+ margin-left: 5px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/navbar.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/navbar.less
new file mode 100644
index 0000000..e8d4e6b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/navbar.less
@@ -0,0 +1,490 @@
+//
+// Navbar
+// --------------------------------------------------
+
+.navbar-pf {
+ background: @navbar-pf-bg-color;
+ border: 0;
+ border-radius: 0;
+ border-top: 3px solid @navbar-pf-border-color;
+ margin-bottom: 0;
+ min-height: 0;
+ .navbar-brand {
+ color: @navbar-pf-active-color;
+ height: auto;
+ padding: 12px 0;
+ margin: 0 0 0 20px;
+ img {
+ display: block;
+ }
+ }
+ .navbar-collapse {
+ border-top: 0;
+ .box-shadow(none);
+ padding: 0;
+ }
+ .navbar-header {
+ border-bottom: 1px solid @navbar-pf-navbar-header-border-color;
+ float: none;
+ }
+ .navbar-nav {
+ margin: 0;
+ > .active > a, > .active > a:hover, > .active > a:focus {
+ background-color: @navbar-pf-navbar-nav-active-bg-color;
+ color: @navbar-pf-active-color;
+ }
+ > li > a {
+ color: @navbar-pf-color;
+ line-height: 1;
+ padding: 10px 20px;
+ text-shadow: none;
+ &:hover, &:focus {
+ color: @navbar-pf-active-color;
+ }
+ }
+ > .open {
+ > a {
+ &, &:hover, &:focus {
+ background-color: @navbar-pf-navbar-nav-active-bg-color;
+ color: @navbar-pf-active-color;
+ }
+ }
+ }
+ @media (max-width: @grid-float-breakpoint-max) {
+ .active .navbar-persistent, .active .dropdown-menu, .open .dropdown-menu {
+ background-color: @navbar-pf-navbar-nav-active-active-bg-color !important;
+ margin-left: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ > .active > a, .dropdown-submenu.open > a {
+ &, &:hover, &:focus {
+ background-color: @navbar-pf-navbar-nav-active-active-open-bg-color !important;
+ color: @navbar-pf-active-color;
+ }
+ }
+ > li > a {
+ background-color: transparent;
+ border: 0;
+ color: @navbar-pf-color;
+ outline: none;
+ padding-left: 30px;
+ &:hover {
+ color: @navbar-pf-active-color;
+ }
+ }
+ .divider {
+ background-color: @navbar-pf-navbar-header-border-color;
+ margin: 0 1px;
+ }
+ .dropdown-header {
+ padding-bottom: 0;
+ padding-left: 30px;
+ }
+ .dropdown-submenu {
+ &.open .dropdown-toggle {
+ color: @navbar-pf-active-color;
+ }
+ &.pull-left {
+ float: none !important;
+ }
+ > a:after {
+ display: none;
+ }
+ .dropdown-header {
+ padding-left: 45px;
+ }
+ .dropdown-menu {
+ border: 0;
+ bottom: auto;
+ .box-shadow(none);
+ display: block;
+ float: none;
+ margin: 0;
+ min-width: 0;
+ padding: 0;
+ position: relative;
+ left: auto;
+ right: auto;
+ top: auto;
+ > li > a {
+ padding: 5px 15px 5px 45px;
+ line-height: 20px;
+ }
+ .dropdown-menu > li > a {
+ padding-left: 60px;
+ }
+ }
+ }
+ }
+ .active .navbar-persistent {
+ .dropdown-submenu {
+ &.open .dropdown-menu {
+ display: block;
+ }
+ > a:after {
+ display: inline-block !important;
+ position: relative;
+ right: auto;
+ top: 1px;
+ }
+ .dropdown-menu {
+ display: none;
+ }
+ .dropdown-submenu > a:after {
+ display: none !important;
+ }
+ }
+ }
+ .context-bootstrap-select { // Also see bootstrap-select.less
+ .open > .dropdown-menu {
+ background-color: #fff !important;
+ > .active > a {
+ &, &:active {
+ background-color: @dropdown-link-hover-bg !important;
+ border-color: @dropdown-link-hover-border-color !important;
+ color: @gray-dark !important;
+ small {
+ color: @gray-light !important;
+ }
+ }
+ }
+ > .disabled > a {
+ color: @gray-light !important;
+ }
+ > .selected > a {
+ &, &:active {
+ background-color: @dropdown-link-active-bg !important;
+ border-color: @dropdown-link-active-border-color !important;
+ color: #fff !important;
+ small {
+ color: #70c8e7 !important;
+ color:rgba(225, 255, 255, 0.5) !important;
+ }
+ }
+ }
+ li {
+ > a.opt {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ color: @gray-dark;
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ & a {
+ &:active small {
+ color: #70c8e7 !important;
+ color:rgba(225, 255, 255, 0.5) !important;
+ }
+ &:hover, &:focus {
+ small {
+ color: @gray-light;
+ }
+ }
+ }
+ }
+ }
+ > .open > .dropdown-menu {
+ padding-bottom: 5px;
+ padding-top: 5px;
+ }
+ }
+ }
+ }
+ .navbar-persistent {
+ display: none;
+ }
+ .active > .navbar-persistent {
+ display: block;
+ }
+ .navbar-primary {
+ float: none;
+ .context {
+ border-bottom: 1px solid @navbar-pf-navbar-header-border-color;
+ &.context-bootstrap-select .bootstrap-select.btn-group {
+ &, &[class*="span"] {
+ margin: 8px 20px 9px;
+ width: auto; // known bug: IE8 will make it as wide as the longest string
+ }
+ }
+ }
+ > li > .navbar-persistent > .dropdown-submenu > a {
+ position: relative;
+ &:after {
+ content: @fa-var-angle-down;
+ display: inline-block;
+ font-family: @icon-font-name-fa;
+ font-weight: normal;
+ @media (max-width: @grid-float-breakpoint-max) {
+ height: 10px;
+ margin-left: 4px;
+ vertical-align: baseline;
+ }
+ }
+ }
+ }
+ .navbar-toggle {
+ border: 0;
+ margin: 0;
+ padding: 10px 20px;
+ &:hover, &:focus {
+ background-color: transparent;
+ outline: none;
+ .icon-bar {
+ .box-shadow(0 0 3px rgba(255,255,255,1));
+ }
+ }
+ .icon-bar {
+ background-color: @navbar-pf-icon-bar-bg-color;
+ }
+ }
+ .navbar-utility {
+ border-bottom: 1px solid @navbar-pf-navbar-header-border-color;
+ li.dropdown > .dropdown-toggle {
+ padding-left: 36px;
+ position: relative;
+ .pficon-user {
+ left: 20px;
+ position: absolute;
+ top: 10px;
+ }
+ }
+ @media (max-width: @grid-float-breakpoint-max) {
+ > li + li {
+ border-top: 1px solid @navbar-pf-navbar-header-border-color;
+ }
+ }
+ }
+}
+
+@media (min-width: @grid-float-breakpoint) {
+ .navbar-pf {
+ .navbar-brand {
+ padding: @navbar-pf-navbar-navbar-brand-padding;
+ }
+ .navbar-nav > li > a {
+ padding-bottom: 14px;
+ padding-top: 14px;
+ }
+ .navbar-persistent {
+ font-size: @font-size-large;
+ }
+ .navbar-primary {
+ font-size: @font-size-large;
+ #gradient > .vertical(@navbar-pf-navbar-primary-bg-color-start, @navbar-pf-navbar-primary-bg-color-stop);
+ &.persistent-secondary {
+ .context {
+ .dropdown-menu {
+ top: auto;
+ }
+ }
+ .dropup .dropdown-menu {
+ bottom: -5px;
+ top: auto;
+ }
+ > li {
+ position: static;
+ &.active {
+ margin-bottom: 32px;
+ > .navbar-persistent {
+ display: block;
+ left: 0;
+ position: absolute;
+ }
+ }
+ > .navbar-persistent {
+ background: @navbar-pf-navbar-navbar-persistent-bg-color;
+ border-bottom: 1px solid @navbar-pf-navbar-navbar-persistent-border-color;
+ padding: 0;
+ width: 100%;
+ a {
+ text-decoration: none !important;
+ }
+ > li {
+ &.active {
+ &, &:hover {
+ .tab-indicator(@background: @nav-tabs-active-link-hover-color, @left: 20px, @right: 20px);
+ }
+ > a, > a:hover, &:hover > a {
+ color: @link-color !important;
+ }
+ .active > a {
+ color: @navbar-pf-active-color;
+ }
+ }
+ &.dropdown-submenu {
+ &:hover > .dropdown-menu {
+ display: none;
+ }
+ &.open {
+ > .dropdown-menu {
+ display: block;
+ left: 20px;
+ margin-top: 1px;
+ top: 100%;
+ }
+ > .dropdown-toggle {
+ color: @gray-darker;
+ &:after {
+ border-top-color: @gray-darker;
+ }
+ }
+ }
+ > .dropdown-toggle {
+ padding-right: 35px !important;
+ &:after {
+ position: absolute;
+ right: 20px;
+ top: 10px;
+ }
+ }
+ }
+ &:hover, &.open {
+ .tab-indicator(@left: 20px, @right: 20px);
+ > a {
+ color: @gray-darker;
+ &:after {
+ border-top-color: @gray-darker;
+ }
+ }
+ }
+ > a {
+ background-color: transparent;
+ display: block;
+ line-height: 1;
+ padding: 9px 20px;
+ &.dropdown-toggle {
+ padding-right: 35px;
+ &:after {
+ font-size: @font-size-large + 1;
+ position: absolute;
+ right: 20px;
+ top: 9px;
+ }
+ }
+ &:hover {
+ color: @gray-darker;
+ }
+ }
+ a {
+ color: @gray-pf;
+ }
+ }
+ }
+ }
+ }
+ > li > a {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ position: relative;
+ margin: -1px 0 0;
+ &:hover {
+ background-color: @navbar-pf-navbar-primary-hover-bg-color-stop;
+ border-top-color: @navbar-pf-navbar-primary-hover-border-color;
+ color: @navbar-pf-color;
+ #gradient > .vertical(@navbar-pf-navbar-primary-hover-bg-color-start, @navbar-pf-navbar-primary-hover-bg-color-stop);
+ }
+ }
+ > .active > a, > .active > a:hover, > .active > a:focus, > .open > a, > .open > a:hover, > .open > a:focus {
+ background-color: @navbar-pf-navbar-primary-active-bg-color-stop;
+ border-bottom-color: @navbar-pf-navbar-primary-active-bg-color-stop;
+ border-top-color: @navbar-pf-navbar-primary-active-border-color;
+ .box-shadow(none);
+ color: @navbar-pf-active-color;
+ #gradient > .vertical(@navbar-pf-navbar-primary-active-bg-color-start, @navbar-pf-navbar-primary-active-bg-color-stop);
+ }
+ li.context {
+ &.context-bootstrap-select .filter-option {
+ max-width: 160px;
+ text-overflow: ellipsis;
+ }
+ &.dropdown {
+ border-bottom: 0;
+ }
+ > a, &.context-bootstrap-select {
+ background-color: @navbar-pf-navbar-primary-context-bg-color-stop;
+ border-bottom-color: @navbar-pf-navbar-primary-context-border-color;
+ border-right: 1px solid @navbar-pf-navbar-primary-context-border-color;
+ border-top-color: @navbar-pf-navbar-primary-context-border-top-color;
+ font-weight: 600;
+ #gradient > .vertical(@navbar-pf-navbar-primary-context-bg-color-start, @navbar-pf-navbar-primary-context-bg-color-stop);
+ &:hover {
+ background-color: @navbar-pf-navbar-primary-context-hover-bg-color-stop;
+ border-bottom-color: @navbar-pf-navbar-primary-context-hover-border-color;
+ border-right-color: @navbar-pf-navbar-primary-context-hover-border-color;
+ border-top-color: @navbar-pf-navbar-primary-context-hover-border-top-color;
+ #gradient > .vertical(@navbar-pf-navbar-primary-context-hover-bg-color-start, @navbar-pf-navbar-primary-context-hover-bg-color-stop);
+ }
+ }
+ &.open > a {
+ background-color: @navbar-pf-navbar-primary-context-active-bg-color-stop;
+ border-bottom-color: @navbar-pf-navbar-primary-context-active-border-color;
+ border-right-color: @navbar-pf-navbar-primary-context-active-border-right-color;
+ border-top-color: @navbar-pf-navbar-primary-context-active-border-top-color;
+ #gradient > .vertical(@navbar-pf-navbar-primary-context-active-bg-color-start, @navbar-pf-navbar-primary-context-active-bg-color-stop);
+ }
+ }
+ }
+ .navbar-utility {
+ border-bottom: 0;
+ font-size: @font-size-small;
+ position: absolute;
+ right: 0;
+ top: 0;
+ > .active > a, > .active > a:hover, > .active > a:focus, > .open > a, > .open > a:hover, > .open > a:focus {
+ background: @navbar-pf-navbar-utility-open-bg-color;
+ color: @navbar-pf-navbar-utility-color;
+ }
+ > li > a {
+ border-left: 1px solid @navbar-pf-navbar-utility-border-color;
+ color: @navbar-pf-navbar-utility-color !important;
+ padding: 7px 10px;
+ &:hover {
+ background: @navbar-pf-navbar-utility-hover-bg-color;
+ border-left-color: @navbar-pf-navbar-utility-hover-border-color;
+ }
+ }
+ > li.open > a {
+ border-left-color: @navbar-pf-navbar-utility-open-border-color;
+ color: @navbar-pf-active-color !important;
+ }
+ li.dropdown > .dropdown-toggle {
+ padding-left: 26px;
+ .pficon-user {
+ left: 10px;
+ top: 7px;
+ }
+ }
+ .open .dropdown-menu {
+ left: auto;
+ right: 0;
+ .dropdown-menu {
+ left: auto;
+ right: 100%;
+ }
+ }
+ }
+ .open {
+ .dropdown-menu {
+ border-top-width: 0 !important;
+ }
+ &.bootstrap-select .dropdown-menu, .dropdown-submenu > .dropdown-menu {
+ border-top-width: 1px !important;
+ }
+ }
+ }
+}
+@media (max-width: 360px) {
+ .navbar-pf {
+ .navbar-brand {
+ margin-left: 10px;
+ width: 75%;
+ img {
+ height: auto;
+ max-width: 100%;
+ }
+ }
+ .navbar-toggle {
+ padding-left: 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/pager.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/pager.less
new file mode 100755
index 0000000..9c6236a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/pager.less
@@ -0,0 +1,72 @@
+//
+// Pager
+// --------------------------------------------------
+
+.pager {
+ li {
+ > a,
+ > span {
+ .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);
+ color: @gray-pf;
+ font-weight: 600;
+ line-height: 22px;
+ padding: 2px 14px;
+ > .i {
+ font-size: 18px;
+ vertical-align: top;
+ margin: 2px 0;
+ }
+ }
+ > a:hover
+ > a:focus {
+ color: @gray-pf;
+ }
+ a:active {
+ background-image: none;
+ .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+ outline: 0;
+ }
+ }
+ .disabled {
+ > a,
+ > a:hover,
+ > a:focus,
+ > a:active,
+ > span {
+ background: @pagination-bg;
+ .box-shadow(none);
+ color: @pager-disabled-color;
+ cursor: default;
+ }
+ }
+ .next {
+ > a,
+ > span {
+ > .i {
+ margin-left: 5px;
+ }
+ }
+ }
+ .previous {
+ > a,
+ > span {
+ > .i {
+ margin-right: 5px;
+ }
+ }
+ }
+}
+
+.pager-sm {
+ li {
+ > a,
+ > span {
+ font-weight: 400;
+ line-height: 16px;
+ padding: 1px 10px;
+ > .i {
+ font-size: 12px;
+ }
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/pagination.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/pagination.less
new file mode 100644
index 0000000..ff8c97f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/pagination.less
@@ -0,0 +1,64 @@
+//
+// Pagination
+// --------------------------------------------------
+
+.pagination {
+ > li {
+ > a,
+ > span {
+ .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);
+ cursor: default;
+ font-weight: 600;
+ padding: @padding-base-vertical @padding-large-horizontal;
+ > .i {
+ font-size: 15px;
+ vertical-align: top;
+ margin: 2px 0;
+ }
+ }
+ }
+ > li > a,
+ > li > span {
+ &:active {
+ .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));
+ }
+ }
+ > .active > a,
+ > .active > span {
+ &,
+ &:hover,
+ &:focus {
+ background-color: @btn-default-bg;
+ border-color: @pagination-border;
+ .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));
+ color: @btn-default-color;
+ #gradient > .vertical(@btn-default-bg-img-start; @btn-default-bg-img-stop);
+ }
+ }
+ > .disabled {
+ > span,
+ > span:hover,
+ > span:focus,
+ > a,
+ > a:hover,
+ > a:focus {
+ .box-shadow(none);
+ cursor: default;
+ #gradient > .vertical(@btn-default-bg-img-start; @btn-default-bg-img-stop);
+ }
+ }
+}
+
+.pagination-sm {
+ .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
+ > li {
+ > a,
+ > span {
+ font-weight: 400;
+ > .i {
+ font-size: 12px;
+ margin-top: 2px;
+ }
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/panels.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/panels.less
new file mode 100644
index 0000000..c02e831
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/panels.less
@@ -0,0 +1,57 @@
+//
+// Panels
+// --------------------------------------------------
+
+.panel-title {
+ font-weight: 700;
+}
+
+//
+// Collapsable panels (aka, accordion)
+// --------------------------------------------------
+
+.panel-group {
+ .panel {
+ color: @gray-pf;
+ + .panel {
+ margin-top: -1px;
+ }
+ }
+ .panel-default {
+ border-color: @panel-default-border-color;
+ border-top-color: #c4c3c3;
+ }
+ .panel-heading {
+ #gradient > .vertical(@btn-default-bg-img-start, @btn-default-bg-img-stop);
+ + .panel-collapse .panel-body {
+ border-top: 1px solid @panel-inner-border;
+ }
+ }
+ .panel-title {
+ font-weight: 500;
+ line-height: 1;
+ > a {
+ color: @gray-pf;
+ font-weight: @btn-font-weight;
+ &:before {
+ content: "\f107";
+ font-family: @icon-font-name-fa;
+ font-size: 13px;
+ margin-right: 5px;
+ vertical-align: 0;
+ }
+ &:focus {
+ outline: none;
+ text-decoration: none;
+ }
+ &:hover {
+ text-decoration: none;
+ }
+ &.collapsed:before {
+ content: "\f105";
+ margin-left: 4px;
+ margin-right: 7px;
+ }
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/patternfly.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/patternfly.less
new file mode 100644
index 0000000..123d2c8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/patternfly.less
@@ -0,0 +1,30 @@
+/* PatternFly */
+
+// OpenSans
+@import "fonts.less";
+// Bootstrap
+@import "../components/bootstrap/less/bootstrap.less";
+// Font Awesome
+@import "../components/font-awesome/less/font-awesome.less";
+
+// Bootstrap overrides
+@import "variables.less";
+@import "mixins.less";
+@import "alerts.less";
+@import "badges.less";
+@import "breadcrumbs.less";
+@import "buttons.less";
+@import "dropdowns.less";
+@import "forms.less";
+@import "labels.less";
+@import "list-group.less";
+@import "modals.less";
+@import "pager.less";
+@import "pagination.less";
+@import "panels.less";
+@import "popovers.less";
+@import "progress-bars.less";
+@import "tables.less";
+@import "tabs.less";
+@import "tooltip.less";
+@import "type.less";
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/patternfly-additions.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/patternfly-additions.less
new file mode 100644
index 0000000..d50a0f9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/patternfly-additions.less
@@ -0,0 +1,36 @@
+/* PatternFly additions to Bootstrap */
+
+// Bootstrap variables and mixins
+@import "../components/bootstrap/less/variables.less";
+@import "../components/bootstrap/less/mixins.less";
+// Font Awesome variables
+@import "../components/font-awesome/less/variables.less";
+
+// Bootstrap-Combobox
+@import "../components/bootstrap-combobox/less/combobox.less";
+// Bootstrap-Datepicker
+@import "../components/bootstrap-datepicker/less/datepicker3.less";
+// Bootstrap-Select
+@import "../components/bootstrap-select/less/bootstrap-select.less";
+// C3 charts
+@import (less) "../components/c3/c3.css";
+
+@import "variables.less";
+@import "mixins.less";
+@import "blank-slate.less";
+@import "bootstrap-combobox.less";
+@import "bootstrap-datepicker.less";
+@import "bootstrap-select.less";
+@import "bootstrap-treeview.less";
+@import "cards.less";
+@import "charts.less";
+@import "close.less";
+@import "datatables.less";
+@import "icons.less";
+@import "infotip.less";
+@import "login.less";
+@import "navbar.less";
+@import "search.less";
+@import "sidebar.less";
+@import "spinner.less";
+@import "syntax-highlighting.less";
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/popovers.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/popovers.less
new file mode 100644
index 0000000..3c99f3d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/popovers.less
@@ -0,0 +1,32 @@
+//
+// Popovers
+// --------------------------------------------------
+
+.popover {
+ .box-shadow(0 2px 2px rgba(0,0,0,.08));
+ padding: 0;
+}
+
+.popover-content {
+ color: @gray-pf;
+ line-height: 18px;
+ padding: 10px 14px;
+}
+
+.popover-title {
+ border-bottom: none;
+ border-radius: 0;
+ color: @gray-pf;
+ font-size: @font-size-base + 1;
+ font-weight: 700;
+ min-height: 34px;
+ .close {
+ height: 22px;
+ position: absolute;
+ right: 8px;
+ top: 6px;
+ }
+ &.closable {
+ padding-right: 30px;
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/progress-bars.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/progress-bars.less
new file mode 100644
index 0000000..ec57426
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/progress-bars.less
@@ -0,0 +1,91 @@
+//
+// Progress Bar
+// --------------------------------------------------
+
+// WebKit
+@-webkit-keyframes progress-bar-stripes {
+ from { background-position: 0 0; }
+ to { background-position: 40px 0; }
+}
+
+// Spec and IE10+
+@keyframes progress-bar-stripes {
+ from { background-position: 0 0; }
+ to { background-position: 40px 0; }
+}
+
+.progress {
+ .box-shadow(inset 0 0 1px rgba(0, 0, 0, 0.25));
+ &.progress-label-left, &.progress-label-top-right {
+ overflow: visible;
+ position: relative;
+ }
+ &.progress-label-left {
+ margin-left: 40px;
+ }
+ &.progress-sm {
+ height: @progress-sm;
+ margin-bottom: @progress-sm;
+ }
+ &.progress-xs {
+ height: @progress-xs;
+ margin-bottom: @progress-xs;
+ }
+ td > &:first-child:last-child {
+ margin-bottom: 0;
+ margin-top: 3px;
+ }
+}
+
+.progress-bar {
+ box-shadow: none;
+ .progress-label-left & span, .progress-label-top-right & span {
+ color: @text-color;
+ font-size: @font-size-large;
+ position: absolute;
+ text-align: right;
+ }
+ .progress-label-left & span {
+ left: -40px;
+ top: 0;
+ width: 35px;
+ }
+ .progress-label-top-right & span {
+ max-width: 25%;
+ overflow: hidden;
+ right: 0;
+ text-overflow: ellipsis;
+ top: -(@line-height-computed*1.5+1);
+ white-space: nowrap;
+ }
+ .progress-label-left.progress-sm & span, .progress-label-top-right.progress-sm & span {
+ font-size: @font-size-base;
+ }
+ .progress-sm & {
+ line-height: @progress-sm;
+ }
+ .progress-xs & {
+ line-height: @progress-xs;
+ }
+}
+
+.progress-description {
+ margin-bottom: @line-height-computed/2;
+ max-width: 74%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ .count {
+ font-size: @font-size-base*1.667;
+ font-weight: 300;
+ line-height: 1;
+ margin-right: 5px;
+ }
+ .fa, .pficon {
+ font-size: 14px;
+ margin-right: 3px;
+ }
+ .tooltip {
+ white-space: normal;
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/search.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/search.less
new file mode 100644
index 0000000..7fde3be
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/search.less
@@ -0,0 +1,65 @@
+//
+// Search
+// --------------------------------------------------
+
+.search-pf {
+ &.has-button {
+ border-collapse: separate;
+ display: table;
+ .form-group {
+ display: table-cell;
+ width: 100%;
+ .btn {
+ .box-shadow(none);
+ float: left;
+ margin-left: -1px;
+ &.btn-lg {
+ font-size: @font-size-large + .5; // to make button height consistent across browsers!
+ }
+ &.btn-sm {
+ font-size: @font-size-small - .3; // to make button height consistent across browsers!
+ }
+ }
+ .form-control {
+ float: left;
+ }
+ }
+ }
+ .has-clear {
+ .clear {
+ background: transparent; // IE8
+ background: rgba(255,255,255,0); // to make the whole button clickable in IE9+
+ border: 0;
+ height: @input-height-base - 1;
+ line-height: 1;
+ padding: 0;
+ position: absolute;
+ right: 1px;
+ top: 1px;
+ width: 28px;
+ &:focus {
+ outline: none;
+ }
+ }
+ .form-control {
+ padding-right: 30px;
+ &::-ms-clear {
+ display: none;
+ }
+ }
+ .input-lg + .clear {
+ height: @input-height-large - 2;
+ width: 28px;
+ }
+ .input-sm + .clear {
+ height: @input-height-small - 2;
+ width: 28px;
+ span {
+ font-size: @font-size-base - 2;
+ }
+ }
+ .search-pf-input-group {
+ position: relative;
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/sidebar.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/sidebar.less
new file mode 100644
index 0000000..7df9971
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/sidebar.less
@@ -0,0 +1,174 @@
+//
+// Sidebar
+// --------------------------------------------------
+
+.sidebar-header {
+ border-bottom: 1px solid darken(@page-header-border-color, 2%);
+ padding-bottom: ((@line-height-computed / 2) + 1);
+ margin: (@line-height-computed * 2)+10 0 @line-height-computed;
+ .actions {
+ margin-top: -2px;
+ }
+}
+
+.sidebar-pf {
+ .sidebar-header + .list-group {
+ border-top: 0;
+ margin-top: -@grid-gutter-width/2/2;
+ .list-group-item {
+ background: transparent;
+ border-color: darken(@page-header-border-color, 2%);
+ padding-left: 0;
+ }
+ .list-group-item-heading {
+ font-size: @font-size-base;
+ }
+ }
+ .nav-category {
+ h2 {
+ color: @dropdown-header-color;
+ font-size: @font-size-base;
+ font-weight: 400;
+ line-height: @line-height-computed + 1;
+ margin: 0;
+ padding: 8px 0;
+ }
+ + .nav-category {
+ margin-top: @grid-gutter-width/4;
+ }
+ }
+ .nav-pills > li {
+ &.active > a {
+ background: @dropdown-link-active-bg !important;
+ border-color: @dropdown-link-active-border-color !important;
+ color: #fff;
+ @media (min-width: @grid-float-breakpoint) {
+ &:after {
+ content: @fa-var-angle-right;
+ font-family: @icon-font-name-fa;
+ display: block;
+ position: absolute;
+ right: @grid-gutter-width/2/2;
+ top: 1px;
+ }
+ }
+ .fa {
+ color: #fff;
+ }
+ }
+ > a {
+ border-bottom: 1px solid transparent;
+ border-radius: 0;
+ border-top: 1px solid transparent;
+ color: @text-color;
+ font-size: @font-size-base + 1;
+ line-height: @line-height-computed + 1;
+ padding: 1px @grid-gutter-width/2;
+ &:hover {
+ background: @dropdown-link-hover-bg;
+ border-color: @dropdown-link-hover-border-color;
+ }
+ .fa {
+ color: lighten(@gray-pf, 12%);
+ font-size: @font-size-base + 3;
+ margin-right: @grid-gutter-width/4;
+ text-align: center;
+ vertical-align: middle;
+ width: @font-size-base + 3;
+ }
+ }
+ }
+ .nav-stacked {
+ margin-left: -@grid-gutter-width/2;
+ margin-right: -@grid-gutter-width/2;
+ li + li {
+ margin-top: 0;
+ }
+ }
+ .panel {
+ background: transparent;
+ }
+ .panel-body {
+ padding: 6px @grid-gutter-width/2;
+ .nav-pills > li > a {
+ padding-left: @grid-gutter-width/2 + 17;
+ }
+ }
+ .panel-heading {
+ padding: 9px @grid-gutter-width/2;
+ }
+ .panel-title {
+ font-size: @font-size-base;
+ > a {
+ &:before {
+ display: inline-block;
+ margin-left: 1px;
+ margin-right: 4px;
+ width: 9px;
+ }
+ &.collapsed:before {
+ margin-left: 3px;
+ margin-right: 2px;
+ }
+ }
+ }
+}
+
+@media (min-width: @grid-float-breakpoint-max) {
+ .sidebar-header-bleed-left {
+ margin-left: -@grid-gutter-width/2;
+ > h2 {
+ margin-left: @grid-gutter-width/2;
+ }
+ }
+ .sidebar-header-bleed-right {
+ margin-right: -@grid-gutter-width/2;
+ .actions {
+ margin-right: @grid-gutter-width/2;
+ }
+ > h2 {
+ margin-right: @grid-gutter-width/2;
+ }
+ + .list-group {
+ margin-right: -@grid-gutter-width/2;
+ }
+ }
+ .sidebar-pf {
+ .panel-group .panel-default, .treeview {
+ border-left: 0;
+ border-right: 0;
+ margin-left: -@grid-gutter-width/2;
+ margin-right: -@grid-gutter-width/2;
+ }
+ .treeview {
+ margin-top: 5px;
+ .list-group-item {
+ padding-left: @grid-gutter-width/2;
+ padding-right: @grid-gutter-width/2;
+ &.node-selected:after {
+ content: @fa-var-angle-right;
+ font-family: @icon-font-name-fa;
+ display: block;
+ position: absolute;
+ right: @grid-gutter-width/2/2;
+ top: 1px;
+ }
+ }
+ }
+ }
+}
+
+@media (min-width: @grid-float-breakpoint) {
+ .sidebar-pf {
+ background: @sidebar-pf-bg;
+ &.sidebar-pf-left {
+ border-right: 1px solid @sidebar-pf-border-color;
+ }
+ &.sidebar-pf-right {
+ border-left: 1px solid @sidebar-pf-border-color;
+ }
+ > .nav-category, > .nav-stacked {
+ margin-top: 5px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/spinner.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/spinner.less
new file mode 100644
index 0000000..634743d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/spinner.less
@@ -0,0 +1,60 @@
+//
+// Spinner
+// --------------------------------------------------
+
+@-webkit-keyframes rotation {
+ from {-webkit-transform: rotate(0deg);}
+ to {-webkit-transform: rotate(359deg);}
+}
+
+@keyframes rotation {
+ from {transform: rotate(0deg);}
+ to {transform: rotate(359deg);}
+}
+
+.spinner {
+ -webkit-animation: rotation .6s infinite linear;
+ animation: rotation .6s infinite linear;
+ border-bottom: 4px solid rgba(0,0,0,.25);
+ border-left: 4px solid rgba(0,0,0,.25);
+ border-right: 4px solid rgba(0,0,0,.25);
+ border-radius: 100%;
+ border-top: 4px solid rgba(0,0,0,.75);
+ height: @font-size-base*2;
+ margin: 0 auto;
+ position: relative;
+ width: @font-size-base*2;
+ &.spinner-inline {
+ display: inline-block;
+ margin-right: 3px;
+ }
+ &.spinner-lg {
+ border-width: 5px;
+ height: @font-size-base*2.5;
+ width: @font-size-base*2.5;
+ }
+ &.spinner-sm {
+ border-width: 3px;
+ height: @font-size-base*1.5;
+ width: @font-size-base*1.5;
+ }
+ &.spinner-xs {
+ border-width: 2px;
+ height: @font-size-base;
+ width: @font-size-base;
+ }
+}
+
+.ie9 .spinner {
+ background: url("@{img-path}/@{img-spinner}") no-repeat;
+ border: 0;
+ &.spinner-lg {
+ background-image: url("@{img-path}/@{img-spinner-lg}");
+ }
+ &.spinner-sm {
+ background-image: url("@{img-path}/@{img-spinner-sm}");
+ }
+ &.spinner-xs {
+ background-image: url("@{img-path}/@{img-spinner-xs}");
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/syntax-highlighting.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/syntax-highlighting.less
new file mode 100644
index 0000000..6371cb1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/syntax-highlighting.less
@@ -0,0 +1,25 @@
+//
+// Syntax Highlighting for google-code-prettify
+// --------------------------------------------------
+
+.prettyprint {
+ .atn, .com, .fun, .var {
+ color: @syntax-3;
+ }
+
+ .atv, .str {
+ color: @syntax-1;
+ }
+
+ .clo, .dec, .kwd, .opn, .pln, .pun {
+ color: @syntax-2;
+ }
+
+ .lit, .tag, .typ {
+ color: @syntax-4;
+ }
+
+ ol.linenums {
+ margin-bottom: 0;
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tables.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tables.less
new file mode 100644
index 0000000..c886d4f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tables.less
@@ -0,0 +1,70 @@
+//
+// Tables
+// --------------------------------------------------
+
+.table {
+ > thead,
+ > tbody,
+ > tfoot {
+ > tr {
+ > th,
+ > td {
+ padding: @table-cell-padding-top @table-cell-padding @table-cell-padding-bottom;
+ > a:hover {
+ text-decoration: none;
+ }
+ }
+ > th {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+ }
+ }
+ }
+ > thead {
+ background-clip: padding-box;
+ background-color: #f9f9f9;
+ #gradient > .vertical(@start-color: #fafafa; @end-color: #ededed; @start-percent: 0%; @end-percent: 100%);
+ }
+}
+
+.table-bordered {
+ border: 1px solid @table-border-color;
+ > thead,
+ > tbody,
+ > tfoot {
+ > tr {
+ > th,
+ > td {
+ border: 1px solid @table-border-color;
+ }
+ }
+ }
+ > thead > tr {
+ > th,
+ > td {
+ border-bottom-width: 1px;
+ }
+ }
+}
+
+.table-striped {
+ > tbody > tr{
+ &:nth-of-type(even) {
+ background-color: @table-bg-accent;
+ }
+ &:nth-of-type(odd) {
+ background-color: transparent;
+ }
+ }
+}
+
+.table-hover {
+ > tbody > tr:hover {
+ > td,
+ > th {
+ background-color: @table-bg-hover;
+ border-bottom-color: @table-border-hover;
+ }
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tabs.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tabs.less
new file mode 100644
index 0000000..c72e121
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tabs.less
@@ -0,0 +1,118 @@
+//
+// Tabs
+// --------------------------------------------------
+
+.nav-tabs {
+ font-size: @font-size-large;
+ > li {
+ > a {
+ color: @nav-tabs-color;
+ margin-right: -1px;
+ padding-bottom: 5px;
+ padding-top: 5px;
+ &:active,
+ &:focus,
+ &:hover {
+ background: transparent;
+ border-color: @nav-tabs-border-color;
+ color: @gray-darker;
+ }
+ }
+ > .dropdown-menu {
+ border-top: 0;
+ border-color: @nav-tabs-border-color;
+ &.pull-right {
+ right: -1px;
+ }
+ }
+ }
+ + .nav-tabs-pf {
+ font-size: @font-size-base;
+ > li:first-child > a {
+ padding-left: 15px;
+ &:before {
+ left: 15px !important;
+ }
+ }
+ }
+ .open > a {
+ &,
+ &:hover,
+ &:focus {
+ background-color: transparent;
+ border-color: @nav-tabs-border-color;
+ }
+ }
+}
+
+.nav-tabs-pf {
+ &.nav-justified {
+ @media (min-width: @grid-float-breakpoint) {
+ border-bottom: 1px solid @nav-tabs-justified-link-border-color;
+ }
+ > li {
+ &:first-child > a {
+ padding-left: 15px;
+ }
+ > a {
+ border-bottom: 0;
+ &:before {
+ left: 0 !important;
+ right: 0 !important;
+ }
+ }
+ }
+ }
+ > li {
+ margin-bottom: 0;
+ &.active > a {
+ .tab-indicator(@background: @nav-tabs-active-link-hover-color);
+ &,
+ &:active,
+ &:focus,
+ &:hover {
+ background-color: transparent;
+ border: 0 !important;
+ color: @link-color;
+ &:before {
+ background: @nav-tabs-active-link-hover-color;
+ }
+ }
+ }
+ &:first-child {
+ > a {
+ padding-left: 0;
+ &:before {
+ left: 0 !important;
+ }
+ }
+ }
+ > a {
+ border: 0;
+ line-height: 1;
+ margin-right: 0;
+ padding-bottom: 10px;
+ padding-top: 10px;
+ &:active,
+ &:focus,
+ &:hover {
+ .tab-indicator()
+ }
+ }
+ > .dropdown-menu {
+ left: 15px;
+ margin-top: 1px;
+ &.pull-right {
+ left: auto;
+ right: 15px;
+ }
+ }
+ }
+ .open > a {
+ &,
+ &:hover,
+ &:focus {
+ background-color: transparent;
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tooltip.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tooltip.less
new file mode 100644
index 0000000..bde31a1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/tooltip.less
@@ -0,0 +1,15 @@
+//
+// Tooltips
+// --------------------------------------------------
+
+// Base class
+.tooltip {
+ font-size: @tooltip-font-size;
+ line-height: 1.4
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+ padding: 7px 12px;
+ text-align: left;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/type.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/type.less
new file mode 100644
index 0000000..7757854
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/type.less
@@ -0,0 +1,24 @@
+//
+// Typography
+// --------------------------------------------------
+
+h1, .h1, h2, .h2 { font-weight: 300; }
+
+.page-header .actions {
+ margin-top: 8px;
+ a > .pficon {
+ margin-right: 4px;
+ }
+}
+
+@media (min-width: @grid-float-breakpoint-max) {
+ .page-header-bleed-left {
+ margin-left: -@grid-gutter-width/2;
+ }
+ .page-header-bleed-right {
+ margin-right: -@grid-gutter-width/2;
+ .actions {
+ margin-right: @grid-gutter-width/2;
+ }
+ }
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/variables.less b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/variables.less
new file mode 100755
index 0000000..7dd69e6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/less/variables.less
@@ -0,0 +1,230 @@
+//
+// Variables
+// --------------------------------------------------
+// Bootstrap overrides and PatternFly-specific variables
+
+// PatternFly-specific
+// -------------------
+@btn-default-bg-img-start: #fafafa;
+@btn-default-bg-img-stop: #ededed;
+@btn-xs-font-weight: 400;
+@card-pf-accented-border-top-color: #39a5dc;
+@card-pf-bg-color: #fff;
+@card-pf-border-color: #d1d1d1;
+@card-pf-border-top-color: transparent;
+@card-pf-container-bg-color: #f5f5f5;
+@card-pf-footer-bg-color: #fafafa;
+@dropdown-divider-margin: 4px 1px;
+@dropdown-link-active-border-color: #0076b7;
+@dropdown-link-hover-border-color: #b3d3e7;
+@dropdown-link-focus-color: #fff;
+@font-family-monospace: Menlo, Monaco, Consolas, monospace;
+@fa-font-path: "../../components/font-awesome/fonts";
+@font-path: "../fonts";
+@gray-light-pf: #aaa;
+@gray-pf: #4d5258;
+@icon-font-name-fa: "FontAwesome";
+@icon-font-name-pf: "PatternFlyIcons-webfont";
+@icon-prefix: pficon;
+@img-bg-login: "bg-login.jpg";
+@img-path: "../img";
+@img-spinner: "spinner.gif";
+@img-spinner-lg: "spinner-lg.gif";
+@img-spinner-sm: "spinner-sm.gif";
+@img-spinner-xs: "spinner-xs.gif";
+@input-border-disabled: #d4d4d4;
+@input-border-hover: #7BB2DD;
+@list-group-top-border: #e9e8e8;
+@login-bg-color: #080808;
+@login-container-bg-color: #181818;
+@login-container-bg-color-rgba: rgba(255, 255, 255, 0.055);
+@modal-title-padding-horizontal: 18px;
+@modal-title-padding-vertical: 10px;
+@navbar-pf-active-color: #f1f1f1;
+@navbar-pf-bg-color: #030303; //#393F45
+@navbar-pf-border-color: #199dde;
+@navbar-pf-color: #cfcfcf;
+@navbar-pf-icon-bar-bg-color: #fff;
+@navbar-pf-navbar-navbar-brand-min-width: 270px;
+@navbar-pf-navbar-navbar-brand-padding: 8px 0 7px;
+@navbar-pf-navbar-navbar-persistent-bg-color: #f6f6f6;
+@navbar-pf-navbar-navbar-persistent-border-color: #cecdcd;
+@pagination-padding-small-vertical: 0;
+@panel-default-border-color: #bebdbd;
+@sidebar-pf-bg: #fafafa;
+@sidebar-pf-border-color: #d0d0d0;
+@table-border-hover: #a7cadf;
+@table-cell-padding-bottom: 3px;
+@table-cell-padding-top: 2px;
+// Reference variables declared in block above
+@img-path-alt: @img-path;
+@navbar-pf-navbar-header-border-color: lighten(@navbar-pf-bg-color, 15%);
+@navbar-pf-navbar-nav-active-active-bg-color: lighten(@navbar-pf-bg-color, 8%);
+@navbar-pf-navbar-nav-active-active-open-bg-color: lighten(@navbar-pf-bg-color, 11%);
+@navbar-pf-navbar-nav-active-bg-color: lighten(@navbar-pf-bg-color, 12.5%);
+@navbar-pf-navbar-primary-bg-color-start: lighten(@navbar-pf-bg-color, 10%); // #474C50;
+@navbar-pf-navbar-primary-bg-color-stop: @navbar-pf-bg-color; // #383F43;
+@navbar-pf-navbar-utility-border-color: lighten(@navbar-pf-bg-color, 15.5%);
+@navbar-pf-navbar-utility-color: @navbar-pf-color;
+@navbar-pf-navbar-utility-hover-bg-color: lighten(@navbar-pf-bg-color, 12.5%);
+@nav-tabs-color: @gray-pf;
+// Reference variables declared in block above
+@navbar-pf-navbar-primary-context-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 8.5%);
+@navbar-pf-navbar-primary-context-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 11%);
+@navbar-pf-navbar-primary-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 10%);
+@navbar-pf-navbar-primary-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 10%);
+@navbar-pf-navbar-primary-hover-border-color: lighten(@navbar-pf-navbar-header-border-color, 20%);
+@navbar-pf-navbar-primary-context-border-color: lighten(@navbar-pf-navbar-header-border-color, 8%);
+@navbar-pf-navbar-primary-context-border-top-color: lighten(@navbar-pf-navbar-header-border-color, 7%);
+@navbar-pf-navbar-utility-hover-border-color: lighten(@navbar-pf-navbar-utility-border-color, 5%);
+@navbar-pf-navbar-utility-open-bg-color: lighten(@navbar-pf-navbar-utility-hover-bg-color, 7.5%);
+@navbar-pf-navbar-utility-open-border-color: lighten(@navbar-pf-navbar-utility-hover-border-color, 5%);
+// Reference variables declared in block above
+@navbar-pf-navbar-primary-active-bg-color-start: lighten(@navbar-pf-navbar-primary-hover-bg-color-start, 5%);
+@navbar-pf-navbar-primary-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-hover-bg-color-stop, 7.5%);
+@navbar-pf-navbar-primary-active-border-color: lighten(@navbar-pf-navbar-primary-hover-border-color, 5%);
+@navbar-pf-navbar-primary-context-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-context-bg-color-start, 5%);
+@navbar-pf-navbar-primary-context-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-bg-color-stop, 7.5%);
+@navbar-pf-navbar-primary-context-hover-border-color: lighten(@navbar-pf-navbar-primary-context-border-color, 5%);
+@navbar-pf-navbar-primary-context-hover-border-top-color: lighten(@navbar-pf-navbar-primary-context-border-top-color, 6%);
+// Reference variables declared in block above
+@navbar-pf-navbar-primary-context-active-bg-color-start: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-start, 5%);
+@navbar-pf-navbar-primary-context-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-stop, 7.5%);
+@navbar-pf-navbar-primary-context-active-border-color: lighten(@navbar-pf-navbar-primary-context-hover-border-color, 5%);
+@navbar-pf-navbar-primary-context-active-border-top-color: lighten(@navbar-pf-navbar-primary-context-hover-border-top-color, 6%);
+// References variable declared in block above
+@navbar-pf-navbar-primary-context-active-border-right-color: @navbar-pf-navbar-primary-context-active-border-color;
+
+
+// Bootstrap overrides
+// -------------------
+@alert-info-border: #ccc;
+@alert-link-font-weight: 500;
+@alert-padding: 7px;
+@body-bg: #ffffff;
+@border-radius-base: 1px;
+@brand-danger: #cc0000;
+@brand-info: #006e9c;
+@brand-primary: #00a8e1;
+@brand-success: #3f9c35;
+@brand-warning: #ec7a08;
+@breadcrumb-bg: transparent;
+@breadcrumb-separator: "\f105";
+@btn-danger-bg: #a30000;
+@btn-danger-border: #781919;
+@btn-default-border: #b7b7b7;
+@btn-font-weight: 600;
+@btn-primary-bg: #0085cf;
+@btn-primary-border: #006e9c;
+@caret-width-base: 0;
+@dropdown-border: #b6b6b6;
+@dropdown-divider-bg: #e5e5e5;
+@dropdown-link-active-color: #fff;
+@dropdown-link-hover-bg: #d4edfa;
+@font-family-base: "Open Sans", Helvetica, Arial, sans-serif;
+@font-size-base: 12px;
+@gray-dark: lighten(#000, 20%); // #333
+@gray-darker: lighten(#000, 13.5%); // #222
+@gray-light: lighten(#000, 60%); // #999
+@gray-lighter: lighten(#000, 93.5%); // #eee
+@grid-gutter-width: 40px;
+@icon-font-path: "../../components/bootstrap/dist/fonts/";
+@input-bg-disabled: #F8F8F8;
+@input-border: #BABABA;
+@line-height-base: 1.66666667; // 20/12
+@link-color: #0099d3;
+@list-group-border: #f2f2f2;
+@list-group-border-radius: 0;
+@list-group-hover-bg: #d4edfa;
+@link-hover-color: #00618a;
+@nav-tabs-border-color: #e9e8e8;
+@nav-tabs-link-hover-border-color: transparent;
+@padding-large-horizontal: 10px;
+@padding-base-horizontal: 6px;
+@padding-base-vertical: 2px;
+@padding-large-vertical: 6px;
+@pager-border-radius: 0;
+@pager-disabled-color: #969696;
+@pagination-bg: #f5f5f5;
+@pagination-border: #bbbbbb;
+@pagination-hover-bg: #ededed;
+@panel-inner-border: #cecdcd;
+@popover-arrow-color: #fff;
+@popover-arrow-outer-color: #bbb;
+@popover-border-color: #bbb;
+@popover-max-width: 220px;
+@popover-title-bg: #f5f5f5;
+@pre-bg: #fcfcfc;
+@progress-bg: #ededed;
+@table-bg-accent: #f5f5f5;
+@table-bg-hover: #d5ecf9;
+@table-border-color: #d1d1d1;
+@table-cell-padding: 10px;
+@tooltip-arrow-width: 8px;
+@tooltip-bg: #434343;
+@tooltip-max-width: 220px;
+// Reference variables declared in block above
+@alert-danger-bg: @body-bg;
+@alert-danger-border: @brand-danger;
+@alert-danger-text: @gray-dark;
+@alert-info-bg: @body-bg;
+@alert-info-text: @gray-dark;
+@alert-success-bg: @body-bg;
+@alert-success-border: @brand-success;
+@alert-success-text: @gray-dark;
+@alert-warning-bg: @body-bg;
+@alert-warning-border: @brand-warning;
+@alert-warning-text: @gray-dark;
+@badge-border-radius: @border-radius-base;
+@border-radius-large: @border-radius-base;
+@border-radius-small: @border-radius-base;
+@breadcrumb-active-color: @gray-pf;
+@breadcrumb-color: @gray-pf;
+@btn-default-bg: @gray-lighter;
+@btn-default-color: @gray-pf;
+@caret-width-large: @caret-width-base;
+@dropdown-fallback-border: @dropdown-border;
+@dropdown-link-active-bg: @link-color;
+@dropdown-link-hover-color: @gray-pf;
+@font-size-h1: ceil(@font-size-base * 2); // ~24px
+@font-size-h2: ceil(@font-size-base * 1.8333); // ~22px
+@font-size-h3: ceil(@font-size-base * 1.3333); // ~16px
+@font-size-h5: ceil(@font-size-base * 1.0833); // ~13px
+@font-size-large: ceil(@font-size-base * 1.1666); // ~14px
+@font-size-small: ceil(@font-size-base * .9166); // ~11px
+@input-color: @gray-dark;
+@nav-tabs-active-link-hover-color: @link-color;
+@nav-tabs-justified-link-border-color: @nav-tabs-border-color;
+@padding-small-horizontal: @padding-base-horizontal;
+@padding-small-vertical: @padding-base-vertical;
+@panel-danger-border: @brand-danger;
+@panel-danger-heading-bg: @brand-danger;
+@panel-info-border: @brand-info;
+@panel-info-heading-bg: @brand-info;
+@panel-primary-text: @body-bg;
+@panel-success-border: @brand-success;
+@panel-success-heading-bg: @brand-success;
+@panel-warning-border: @brand-warning;
+@panel-warning-heading-bg: @brand-warning;
+@state-warning-text: @brand-warning;
+// Reference variable declared in block above
+@panel-danger-text: @panel-primary-text;
+@panel-info-text: @panel-primary-text;
+@panel-success-text: @panel-primary-text;
+@panel-warning-text: @panel-primary-text;
+
+// PatternFly-specific variables based on Bootstrap overides
+// ---------------------------------------------------------
+@btn-danger-bg-img-start: @brand-danger;
+@btn-danger-bg-img-stop: @btn-danger-bg;
+@btn-primary-bg-img-start: @brand-primary;
+@btn-primary-bg-img-stop: @btn-primary-bg;
+@dropdown-link-focus-bg: @link-color;
+@line-height-computed: floor((@font-size-base * @line-height-base));
+@progress-sm: @line-height-computed - 6;
+@progress-xs: @line-height-computed - 14;
+@syntax-1: @btn-danger-bg;
+@syntax-2: @gray-dark;
+@syntax-3: @brand-success;
+@syntax-4: @brand-info;
+@tooltip-font-size: @font-size-base;
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/LICENSE.txt b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/LICENSE.txt
new file mode 100644
index 0000000..cc698cd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/LICENSE.txt
@@ -0,0 +1,205 @@
+Modifications to Bootstrap are copyright 2013 Red Hat, Inc. and licensed
+under the Apache License 2.0.
+
+
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/OPEN_SOURCE_LICENCES.txt b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/OPEN_SOURCE_LICENCES.txt
new file mode 100644
index 0000000..355f667
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/OPEN_SOURCE_LICENCES.txt
@@ -0,0 +1,1142 @@
+-----------------------------------------------------------
+bootstrap - MIT License
+-----------------------------------------------------------
+The MIT License (MIT)
+
+Copyright (c) 2011-2014 Twitter, Inc
+
+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.
+
+
+-----------------------------------------------------------
+bootstrap-glyphicons - MIT License
+-----------------------------------------------------------
+The MIT License (MIT)
+
+Copyright (c) 2011-2014 Twitter, Inc
+
+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.
+
+
+-----------------------------------------------------------
+bootstrap-combobox - Apache 2.0 License
+-----------------------------------------------------------
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+-----------------------------------------------------------
+bootstrap-select - MIT License
+-----------------------------------------------------------
+Copyright (C) 2013 bootstrap-select
+
+Licensed under the MIT license.
+
+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.
+
+
+-----------------------------------------------------------
+bootstrap-treeview - Apache 2.0 License
+-----------------------------------------------------------
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+-----------------------------------------------------------
+datatables - MIT License
+-----------------------------------------------------------
+Copyright (c) 2008-2013 SpryMedia Limited
+http://datatables.net
+
+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.
+
+
+-----------------------------------------------------------
+font-awesome - SIL OFL 1.1 License
+-----------------------------------------------------------
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+
+-----------------------------------------------------------
+jquery - MIT License
+-----------------------------------------------------------
+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.
+
+
+-----------------------------------------------------------
+OpenSans font - Apache 2.0 license
+-----------------------------------------------------------
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+-----------------------------------------------------------
+Google Code Prettify - Apache 2.0 license
+-----------------------------------------------------------
+Copyright (C) 2006 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+-----------------------------------------------------------
+D3.js
+-----------------------------------------------------------
+Copyright (c) 2010-2014, Michael Bostock
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* The name Michael Bostock may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+-----------------------------------------------------------
+C3.js - MIT License
+-----------------------------------------------------------
+The MIT License (MIT)
+
+Copyright (c) 2013 Masayuki Tanaka
+
+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.
+
+
+-----------------------------------------------------------
+matchHeight - MIT License
+-----------------------------------------------------------
+The MIT License (MIT)
+
+Copyright (c) 2014 Liam Brummitt
+
+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.
+
+
+-----------------------------------------------------------
+bootstrap-datepicker - Apache 2.0 License
+-----------------------------------------------------------
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/README.md
new file mode 100644
index 0000000..5b5fd47
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/README.md
@@ -0,0 +1,212 @@
+# [PatternFly](https://www.patternfly.org) reference implementation
+
+This reference implementation of PatternFly is based on [Bootstrap v3](http://getbootstrap.com/). Think of PatternFly as a "skinned" version of Bootstrap with additional components and customizations.
+
+# Installation
+
+### Install with Bower
+
+PatternFly can be installed and managed through [Bower](http://bower.io/). To do so, either add `patternfly` as a dependency in your `bower.json` or run the following:
+
+```
+bower install patternfly
+```
+
+### Install with npm
+
+PatternFly can be installed and managed through [npm](https://www.npmjs.com/). To do so, run the following:
+
+```
+npm install patternfly
+```
+
+### RPM
+
+PatternFly is also available as an RPM. See https://copr.fedoraproject.org/coprs/patternfly/patternfly1/.
+
+### Sass and/or Rails
+
+A [Sass port of PatternFly](https://github.com/patternfly/patternfly-sass) is available, as is a [Sass-based Rails Gem](https://rubygems.org/gems/patternfly-sass).
+
+### AngularJS
+
+A set of [common AngularJS directives](https://github.com/patternfly/angular-patternfly) for use with PatternFly is available.
+
+## Dependencies
+
+PatternFly incorporates other libraries and components; therefore, in addition to the contents of `dist`, the contents of `components` are also required for a complete installation of PatternFly.
+
+## Development
+
+Development setup requires nodejs and Ruby. If you do not already have nodejs, npm, and Ruby installed on your system, see https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager and https://www.ruby-lang.org/en/downloads.
+
+### Install Bower
+
+After ensuring nodejs and npm are available, install [Bower](http://bower.io/) globally:
+
+ npm install -g bower
+
+Bower is used to install and update PatternFly's dependencies.
+
+### Install Development Dependencies
+
+The development includes the use of a number of helpful tasks. In order to setup your development environment to allow running of these tasks, you need to install the local nodejs packages declared in `package.json`. To do this run:
+
+ npm install
+
+This will install all necessary development packages into `node_modules/`. At this point, the gruntjs tasks are available for use such as starting a local development server or building the master CSS file.
+
+Additionally you may need to install the grunt command line utility. To do this run:
+
+ npm install -g grunt-cli
+
+Test pages are generated using [Jekyll](http://jekyllrb.com/). After ensuring Ruby is installed and available, run:
+
+ gem install jekyll
+
+### Live Reload Server
+
+A local development server can be quickly fired up by using the Gruntjs server task:
+
+ grunt server
+
+This local static asset server (i.e., [http://localhost:9000](http://localhost:9000)) has the advantage of having livereload integration. Thus, if you start the Gruntjs server, any changes you make to `.html` or `.less` files will be automatically reloaded into your browser and the changes reflected almost immediately. This has the obvious benefit of not having to refresh your browser and still be able to see the changes as you add or remove them from your development files. Additionally, any changes made to Jekyll source files (`tests-src/`) will trigger a Jekyll build.
+
+### Coding Style
+
+* Indentation
+ * Use spaces (not tabs)
+ * Indentation size is 2 spaces
+* Filenames
+ * All filenames will use a lowercase-hyphenated naming convention (e.g., single-select-dropdown.less)
+* LESSCSS
+ * CSS class names use lowercase-hyphenated naming convention (e.g., .navbar-nav)
+ * Alphabetize rules by selector
+ * Alphabetize properties by declaration
+ * Define or override variables centrally in less/variables.less
+ * Define or override mixins centrally in less/mixins.less
+
+## Build
+
+### CSS
+
+In development, styling is written and managed through multiple lesscss files. In order to generate a CSS file of all styling, run the build Gruntjs task:
+
+ grunt build
+
+This task will compile and minify the lesscss files into CSS files located at `dist/css/patternfly.min.css` and `dist/css/patternfly-additional.min.css`.
+
+### PatternFlyIcons Font
+
+PatternFlyIcons font is generated using [IcoMoon](http://icomoon.io/app). [Load](http://icomoon.io/#docs/save-load) `PatternFlyIcons-webfont.json` as a new project in IcoMoon and update as necessary. Please commit the updated `PatternFlyIcons-webfont.json` file in addition to the updated font files and supporting LESS/CSS changes.
+
+## Tests
+
+The `tests/` directory contains HTML pages with component and pattern examples in order to facilitate development. Please consult the official documentation (see below) for full details on how to use PatternFly.
+
+The HTML pages in `tests/` are generated using Jekyll. Do *not* edit these files directly. See `tests-src/` to change these files.
+
+## Release
+
+PatternFly is released through the Bower, npm, and RPM.
+
+### Bower and npm
+
+To release a new version version of PatternFly, edit `bower.json`, `package.json`, and `MAKEFILE` accordingly.
+
+Update the version listed in `bower.json` by editing the file and changing the line:
+
+```
+"version": "<new_version>"
+```
+
+Update the version listed in `package.json` by editing the file and changing the line:
+
+```
+"version": "<new_version>"
+```
+
+Update the `MAKEFILE` by editing the file and changing the following lines:
+
+```
+VERSION=<new_version>
+MILESTONE=
+# PACKAGE_RPM_RELEASE=0.0.$(MILESTONE)
+PACKAGE_RPM_RELEASE=1
+```
+
+Commit the version bump:
+
+```
+git commit -a -m "Version bump to <new_version>"
+```
+
+Tag and push upstream (assuming you have commit access):
+
+```
+git tag <new_version>
+git push && git push --tags
+```
+
+The Bower package manager determines available versions and installs based upon git tags, so the new version will now be automatically available via Bower.
+
+To publish a new version to npm, run:
+
+```
+npm publish
+```
+
+### RPM
+
+RPMs of PatternFly Bower releases are built using Fedora or RHEL and rpm-build.
+
+Verify `MAKEFILE` is properly configured.
+
+Make the dist:
+
+```
+make dist
+```
+
+Copy the resulting tarball from the previous step to your rpmbuild/SOURCES directory.
+
+e.g., `cp patternfly-1.1.1.tar.gz ~/rpmbuild/SOURCES`
+
+Build the RPM:
+
+```
+rpmbuild -ba patternfly.spec
+```
+
+Upload the source RPM [1] to a public web server.
+
+[1] e.g., ~/rpmbuild/SRPMS/patternfly1-1.1.1-1.fc20.src.rpm
+
+Ask @rhamilto or @EmilyDirsh to add a new build on [Fedora Copr](https://copr.fedoraproject.org/coprs/patternfly/patternfly1) using the URL created in the previous step.
+
+Edit `MAKEFILE` as follows and commit the change:
+
+```
+VERSION=<new_version + 1>
+MILESTONE=master
+PACKAGE_RPM_RELEASE=0.0.$(MILESTONE)
+# PACKAGE_RPM_RELEASE=1
+```
+
+## Documentation
+
+See [https://www.patternfly.org](https://www.patternfly.org) and [http://getbootstrap.com/](http://getbootstrap.com/).
+
+### Browser and Device Support
+
+Since PatternFly is based on Bootstrap, PatternFly supports [the same browsers as Bootstrap](http://getbootstrap.com/getting-started/#support) **excluding Internet Explorer 8**, plus the latest version of [Firefox for Linux](https://support.mozilla.org/en-US/kb/install-firefox-linux).
+
+*Important:* starting with the v2.0.0 release, **PatternFly no longer supports Internet Explorer 8**.
+
+### Product Backlog
+
+See [https://trello.com/b/Hz3Nmwk4/patternfly-reference-implementation](https://trello.com/b/Hz3Nmwk4/patternfly-reference-implementation).
+
+## License
+
+Modifications to Bootstrap are copyright 2013 Red Hat, Inc. and licensed under the [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_config.yml b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_config.yml
new file mode 100644
index 0000000..ff83b75
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_config.yml
@@ -0,0 +1,13 @@
+# Site settings
+alert-message: ' and <a href="http://getbootstrap.com" class="alert-link">http://getbootstrap.com</a>.'
+category-list: [Widgets, Layouts]
+company: PatternFly
+title: PatternFly
+title-product: 'PatternFly Enterprise Application'
+url-components: '../components/'
+url-css-additions: '../dist/css/patternfly-additions.min.css'
+url-css-extra: 'tests.css'
+url-css-main: '../dist/css/patternfly.min.css'
+url-img: 'img/'
+url-jquery: '../components/jquery/dist/jquery.min.js'
+url-js: '../dist/js/patternfly.min.js'
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/datatable.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/datatable.html
new file mode 100644
index 0000000..f625851
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/datatable.html
@@ -0,0 +1,419 @@
+<table class="datatable table table-striped table-bordered">
+ <thead>
+ <tr>
+ <th>Rendering engine</th>
+ <th>Browser</th>
+ <th>Platform(s)</th>
+ <th>Engine version</th>
+ <th>CSS grade</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="gradeX">
+ <td>Trident</td>
+ <td>
+ Internet
+ Explorer
+ 4.0
+ </td>
+ <td>Win 95+</td>
+ <td class="center">4</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="gradeC">
+ <td>Trident</td>
+ <td>Internet
+ Explorer 5.0</td>
+ <td>Win 95+</td>
+ <td class="center">5</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Trident</td>
+ <td>Internet
+ Explorer 5.5</td>
+ <td>Win 95+</td>
+ <td class="center">5.5</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Trident</td>
+ <td>Internet
+ Explorer 6</td>
+ <td>Win 98+</td>
+ <td class="center">6</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Trident</td>
+ <td>Internet Explorer 7</td>
+ <td>Win XP SP2+</td>
+ <td class="center">7</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Trident</td>
+ <td>AOL browser (AOL desktop)</td>
+ <td>Win XP</td>
+ <td class="center">6</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Firefox 1.0</td>
+ <td>Win 98+ / OSX.2+</td>
+ <td class="center">1.7</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Firefox 1.5</td>
+ <td>Win 98+ / OSX.2+</td>
+ <td class="center">1.8</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Firefox 2.0</td>
+ <td>Win 98+ / OSX.2+</td>
+ <td class="center">1.8</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Firefox 3.0</td>
+ <td>Win 2k+ / OSX.3+</td>
+ <td class="center">1.9</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Camino 1.0</td>
+ <td>OSX.2+</td>
+ <td class="center">1.8</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Camino 1.5</td>
+ <td>OSX.3+</td>
+ <td class="center">1.8</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Netscape 7.2</td>
+ <td>Win 95+ / Mac OS 8.6-9.2</td>
+ <td class="center">1.7</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Netscape Browser 8</td>
+ <td>Win 98SE+</td>
+ <td class="center">1.7</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Netscape Navigator 9</td>
+ <td>Win 98+ / OSX.2+</td>
+ <td class="center">1.8</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Mozilla 1.0</td>
+ <td>Win 95+ / OSX.1+</td>
+ <td class="center">1</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Mozilla 1.1</td>
+ <td>Win 95+ / OSX.1+</td>
+ <td class="center">1.1</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Mozilla 1.2</td>
+ <td>Win 95+ / OSX.1+</td>
+ <td class="center">1.2</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Mozilla 1.3</td>
+ <td>Win 95+ / OSX.1+</td>
+ <td class="center">1.3</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Mozilla 1.4</td>
+ <td>Win 95+ / OSX.1+</td>
+ <td class="center">1.4</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Mozilla 1.5</td>
+ <td>Win 95+ / OSX.1+</td>
+ <td class="center">1.5</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Mozilla 1.6</td>
+ <td>Win 95+ / OSX.1+</td>
+ <td class="center">1.6</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Mozilla 1.7</td>
+ <td>Win 98+ / OSX.1+</td>
+ <td class="center">1.7</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Mozilla 1.8</td>
+ <td>Win 98+ / OSX.1+</td>
+ <td class="center">1.8</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Seamonkey 1.1</td>
+ <td>Win 98+ / OSX.2+</td>
+ <td class="center">1.8</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Gecko</td>
+ <td>Epiphany 2.20</td>
+ <td>Gnome</td>
+ <td class="center">1.8</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>Safari 1.2</td>
+ <td>OSX.3</td>
+ <td class="center">125.5</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>Safari 1.3</td>
+ <td>OSX.3</td>
+ <td class="center">312.8</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>Safari 2.0</td>
+ <td>OSX.4+</td>
+ <td class="center">419.3</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>Safari 3.0</td>
+ <td>OSX.4+</td>
+ <td class="center">522.1</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>OmniWeb 5.5</td>
+ <td>OSX.4+</td>
+ <td class="center">420</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>iPod Touch / iPhone</td>
+ <td>iPod</td>
+ <td class="center">420.1</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>S60</td>
+ <td>S60</td>
+ <td class="center">413</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 7.0</td>
+ <td>Win 95+ / OSX.1+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 7.5</td>
+ <td>Win 95+ / OSX.2+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 8.0</td>
+ <td>Win 95+ / OSX.2+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 8.5</td>
+ <td>Win 95+ / OSX.2+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 9.0</td>
+ <td>Win 95+ / OSX.3+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 9.2</td>
+ <td>Win 88+ / OSX.3+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 9.5</td>
+ <td>Win 88+ / OSX.3+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera for Wii</td>
+ <td>Wii</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Nokia N800</td>
+ <td>N800</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Nintendo DS browser</td>
+ <td>Nintendo DS</td>
+ <td class="center">8.5</td>
+ <td class="center">C/A<sup>1</sup></td>
+ </tr>
+ <tr class="gradeC">
+ <td>KHTML</td>
+ <td>Konqureror 3.1</td>
+ <td>KDE 3.1</td>
+ <td class="center">3.1</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeA">
+ <td>KHTML</td>
+ <td>Konqureror 3.3</td>
+ <td>KDE 3.3</td>
+ <td class="center">3.3</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>KHTML</td>
+ <td>Konqureror 3.5</td>
+ <td>KDE 3.5</td>
+ <td class="center">3.5</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeX">
+ <td>Tasman</td>
+ <td>Internet Explorer 4.5</td>
+ <td>Mac OS 8-9</td>
+ <td class="center">-</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="gradeC">
+ <td>Tasman</td>
+ <td>Internet Explorer 5.1</td>
+ <td>Mac OS 7.6-9</td>
+ <td class="center">1</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeC">
+ <td>Tasman</td>
+ <td>Internet Explorer 5.2</td>
+ <td>Mac OS 8-X</td>
+ <td class="center">1</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Misc</td>
+ <td>NetFront 3.1</td>
+ <td>Embedded devices</td>
+ <td class="center">-</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Misc</td>
+ <td>NetFront 3.4</td>
+ <td>Embedded devices</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeX">
+ <td>Misc</td>
+ <td>Dillo 0.8</td>
+ <td>Embedded devices</td>
+ <td class="center">-</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="gradeX">
+ <td>Misc</td>
+ <td>Links</td>
+ <td>Text only</td>
+ <td class="center">-</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="gradeX">
+ <td>Misc</td>
+ <td>Lynx</td>
+ <td>Text only</td>
+ <td class="center">-</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="gradeC">
+ <td>Misc</td>
+ <td>IE Mobile</td>
+ <td>Windows Mobile 6</td>
+ <td class="center">-</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeC">
+ <td>Misc</td>
+ <td>PSP browser</td>
+ <td>PSP</td>
+ <td class="center">-</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeU">
+ <td>Other browsers</td>
+ <td>All others</td>
+ <td>-</td>
+ <td class="center">-</td>
+ <td class="center">U</td>
+ </tr>
+ </tbody>
+</table>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/form.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/form.html
new file mode 100644
index 0000000..b1fd4f9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/form.html
@@ -0,0 +1,67 @@
+<form class="form-horizontal">
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="textInput">Praesent urna</label>
+ <div class="col-md-6">
+ <input type="text" id="textInput" class="form-control">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="textInput2">Augue</label>
+ <div class="col-md-6">
+ <input type="text" id="textInput2" class="form-control">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="textInput3">Pharetra vel</label>
+ <div class="col-md-6">
+ <input type="text" id="textInput3" class="form-control">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="textInput4">Arcu ac</label>
+ <div class="col-md-6">
+ <input type="text" id="textInput4" class="form-control">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-md-2 control-label">Posuere</label>
+ <div class="col-md-6">
+ <div class="radio">
+ <label>
+ <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
+ Proin lobortis auctor tortor et posuere
+ </label>
+ </div>
+ <div class="radio">
+ <label>
+ <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
+ Duis eu ipsum metus
+ </label>
+ </div>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="boostrapSelect">Vestibulum</label>
+ <div class="col-md-10">
+ <select class="selectpicker" multiple data-selected-text-format="count>3" id="boostrapSelect">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter">Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </select>
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-md-10 col-md-offset-2">
+ <button type="button" class="btn btn-primary">Save</button>
+ <button type="button" class="btn btn-default">Cancel</button>
+ </div>
+ </div>
+</form>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/head.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/head.html
new file mode 100644
index 0000000..7f0f84f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/head.html
@@ -0,0 +1,28 @@
+ {% strip %}<head>
+ <title>{% if page.title %}{{ page.title }} - {{ site.title }}{% else %}{{ site.title }}{% endif %}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link rel="shortcut icon" href="../dist/img/favicon.ico">
+ <!-- iPad retina icon -->
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../dist/img/apple-touch-icon-precomposed-152.png">
+ <!-- iPad retina icon (iOS < 7) -->
+ <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../dist/img/apple-touch-icon-precomposed-144.png">
+ <!-- iPad non-retina icon -->
+ <link rel="apple-touch-icon-precomposed" sizes="76x76" href="../dist/img/apple-touch-icon-precomposed-76.png">
+ <!-- iPad non-retina icon (iOS < 7) -->
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../dist/img/apple-touch-icon-precomposed-72.png">
+ <!-- iPhone 6 Plus icon -->
+ <link rel="apple-touch-icon-precomposed" sizes="120x120" href="../dist/img/apple-touch-icon-precomposed-180.png">
+ <!-- iPhone retina icon (iOS < 7) -->
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../dist/img/apple-touch-icon-precomposed-114.png">
+ <!-- iPhone non-retina icon (iOS < 7) -->
+ <link rel="apple-touch-icon-precomposed" sizes="57x57" href="../dist/img/apple-touch-icon-precomposed-57.png">
+ <link href="{{site.url-css-main}}" rel="stylesheet" media="screen, print">
+ <link href="{{site.url-css-additions}}" rel="stylesheet" media="screen, print">
+ {% if page.css-extra %}<link href="{% if page.url-css-extra %}{{ page.url-css-extra }}{% else %}{{ site.url-css-extra }}{% endif %}" rel="stylesheet" media="screen, print">{% endif %}
+ <script src="{{site.url-jquery}}"></script>
+ <script src="{{site.url-components}}bootstrap/dist/js/bootstrap.min.js"></script>
+ {% if page.url-js-extra %}{% for urlextrajs in page.url-js-extra %}
+ <script src="{{ urlextrajs | replace: '!URL_COMPONENTS!', site.url-components }}"></script>
+ {% endfor %}{% endif %}
+ <script src="{{site.url-js}}"></script>
+ </head>{% endstrip %}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/layouts-navbar-primary.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/layouts-navbar-primary.html
new file mode 100644
index 0000000..054b803
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_includes/layouts-navbar-primary.html
@@ -0,0 +1,80 @@
+ {% strip %}<nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-1">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-1">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ {% for node in site.weighted_pages %}
+ {% if node.categories contains 'Layouts' and node.weight %}
+ {% if page.url == node.url %}
+ <li class="active">
+ <a href="{{ node.url| remove_first:'/' }}" class="active">{{ node.title }}</a>
+ </li>
+ {% else %}
+ <li>
+ <a href="{{ node.url | remove_first:'/' }}">{{ node.title }}</a>
+ </li>
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+ </ul>
+ </div>
+ </nav>{% endstrip %}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/cards.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/cards.html
new file mode 100644
index 0000000..6f65ed1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/cards.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!--[if IE 9]><html class="ie9"><![endif]-->
+<!--[if gt IE 9]><!-->
+<html>
+<!--<![endif]-->
+{% include head.html %}
+ <body class="cards-pf">
+{{ content }}
+ </body>
+</html>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/default.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/default.html
new file mode 100644
index 0000000..f0c3f58
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/default.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!--[if IE 9]><html class="ie9"><![endif]-->
+<!--[if gt IE 9]><!-->
+<html>
+<!--<![endif]-->
+{% include head.html %}
+ <body>
+{{ content }}
+ </body>
+</html>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/layout.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/layout.html
new file mode 100644
index 0000000..4141e72
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/layout.html
@@ -0,0 +1,4 @@
+---
+layout: default
+---
+{{ content }}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/login.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/login.html
new file mode 100644
index 0000000..6b79851
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/login.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!--[if IE 9]><html class="ie9 login-pf"><![endif]-->
+<!--[if gt IE 9]><!-->
+<html class="login-pf">
+<!--<![endif]-->
+{% include head.html %}
+ <body>
+{{ content }}
+ </body>
+</html>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/page.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/page.html
new file mode 100644
index 0000000..165720c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_layouts/page.html
@@ -0,0 +1,15 @@
+---
+css-extra: true
+layout: default
+---
+ <div class="container">
+ <div class="page-header">
+ <h1>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</h1>
+ </div>
+ <div class="alert alert-warning">
+ <span class="pficon pficon-warning-triangle-o"></span>
+ These examples are included for development testing purposes. For official documentation, see <a href="https://www.patternfly.org" class="alert-link">https://www.patternfly.org</a>{% if page.alert-message %}{{ page.alert-message }}{% else %}{{ site.alert-message }}{% endif %}
+ </div>
+ <hr>
+{{ content }}
+ </div><!-- /container -->
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_plugins/strip.rb b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_plugins/strip.rb
new file mode 100644
index 0000000..a1b08e3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_plugins/strip.rb
@@ -0,0 +1,14 @@
+# Replaces multiple newlines and whitespace
+# between them with one newline
+
+module Jekyll
+ class StripTag < Liquid::Block
+
+ def render(context)
+ super.gsub /\n\s*\n/, "\n"
+ end
+
+ end
+end
+
+Liquid::Template.register_tag('strip', Jekyll::StripTag)
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_plugins/weighted_pages.rb b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_plugins/weighted_pages.rb
new file mode 100644
index 0000000..df96a8c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/_plugins/weighted_pages.rb
@@ -0,0 +1,17 @@
+# Generates a copy of site.pages as site.weighted_pages
+# with pages sorted by weight attribute. Pages with no
+# weight specified are placed after the pages with specified weight.
+
+module Jekyll
+
+ class WeightedPagesGenerator < Generator
+ safe true
+
+ def generate(site)
+ site.config['weighted_pages'] = site.pages.sort_by { |a|
+ a.data['weight'] ? a.data['weight'] : site.pages.length }
+ end
+
+ end
+
+end
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/accordions.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/accordions.html
new file mode 100644
index 0000000..010892b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/accordions.html
@@ -0,0 +1,50 @@
+---
+categories: [Widgets]
+layout: page
+title: Accordions
+resource: true
+---
+ <div class="panel-group" id="accordion" style="width:240px">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
+ Lorem ipsum
+ </a>
+ </h4>
+ </div>
+ <div id="collapseOne" class="panel-collapse collapse in">
+ <div class="panel-body">
+ Praesent sagittis est et arcu fringilla placerat. Cras erat ante, dapibus non mauris ac, volutpat sollicitudin ligula. Morbi gravida nisl vel risus tempor, sit amet luctus erat tempus. Curabitur blandit sem non pretium bibendum. Donec eleifend non turpis vitae vestibulum. Vestibulum ut sem ac nunc posuere blandit sed porta lorem. Cras rutrum velit vel leo iaculis imperdiet.
+ </div>
+ </div>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" class="collapsed">
+ Dolor sit amet
+ </a>
+ </h4>
+ </div>
+ <div id="collapseTwo" class="panel-collapse collapse">
+ <div class="panel-body">
+ Donec consequat dignissim neque, sed suscipit quam egestas in. Fusce bibendum laoreet lectus commodo interdum. Vestibulum odio ipsum, tristique et ante vel, iaculis placerat nulla. Suspendisse iaculis urna feugiat lorem semper, ut iaculis risus tempus.
+ </div>
+ </div>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree" class="collapsed">
+ Consectetur
+ </a>
+ </h4>
+ </div>
+ <div id="collapseThree" class="panel-collapse collapse">
+ <div class="panel-body">
+ Curabitur nisl quam, interdum a venenatis a, consequat a ligula. Nunc nec lorem in erat rhoncus lacinia at ac orci. Sed nec augue congue, vehicula justo quis, venenatis turpis. Nunc quis consectetur purus. Nam vitae viverra lacus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu augue felis. Maecenas in dignissim purus, quis pulvinar lectus. Vivamus euismod ultrices diam, in mattis nibh.
+ </div>
+ </div>
+ </div>
+ </div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/alerts.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/alerts.html
new file mode 100644
index 0000000..17d5e9c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/alerts.html
@@ -0,0 +1,51 @@
+---
+categories: [Widgets]
+layout: page
+title: Alerts
+resource: true
+---
+ <div class="alert alert-danger">
+ <span class="pficon pficon-error-circle-o"></span>
+ <strong>Hey there is a problem!</strong> Yeah this is really messed up and you should <a href="#" class="alert-link">know about it</a>.
+ </div>
+ <div class="alert alert-warning">
+ <span class="pficon pficon-warning-triangle-o"></span>
+ <strong>There might be a problem here!</strong> We are not really sure, but <a href="#" class="alert-link">it might be bad</a>.
+ </div>
+ <div class="alert alert-success">
+ <span class="pficon pficon-ok"></span>
+ <strong>Great job!</strong> This is really working out <a href="#" class="alert-link">great for us</a>.
+ </div>
+ <div class="alert alert-info">
+ <span class="pficon pficon-info"></span>
+ <strong>This is some general information.</strong> You should <a href="#" class="alert-link">know about this</a>.
+ </div>
+ <hr>
+ <div class="alert alert-danger alert-dismissable">
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">
+ <span class="pficon pficon-close"></span>
+ </button>
+ <span class="pficon pficon-error-circle-o"></span>
+ <strong>Hey there is a problem!</strong> Yeah this is really messed up and you should <a href="#" class="alert-link">know about it</a>.
+ </div>
+ <div class="alert alert-warning alert-dismissable">
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">
+ <span class="pficon pficon-close"></span>
+ </button>
+ <span class="pficon pficon-warning-triangle-o"></span>
+ <strong>There might be a problem here!</strong> We are not really sure, but <a href="#" class="alert-link">it might be bad</a>.
+ </div>
+ <div class="alert alert-success alert-dismissable">
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">
+ <span class="pficon pficon-close"></span>
+ </button>
+ <span class="pficon pficon-ok"></span>
+ <strong>Great job!</strong> This is really working out <a href="#" class="alert-link">great for us</a>.
+ </div>
+ <div class="alert alert-info alert-dismissable">
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">
+ <span class="pficon pficon-close"></span>
+ </button>
+ <span class="pficon pficon-info"></span>
+ <strong>This is some general information.</strong> You should <a href="#" class="alert-link">know about this</a>.
+ </div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/badges.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/badges.html
new file mode 100644
index 0000000..03cde3a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/badges.html
@@ -0,0 +1,33 @@
+---
+categories: [Widgets]
+layout: page
+title: Badges
+resource: true
+---
+ <a href="#">Inbox <span class="badge">42</span></a>
+ <hr>
+ <ul class="nav nav-pills">
+ <li class="active"><a href="#">Home <span class="badge">42</span></a></li>
+ <li><a href="#">Profile</a></li>
+ <li><a href="#">Messages <span class="badge">3</span></a></li>
+ </ul>
+ <hr>
+ <ul class="nav nav-pills nav-stacked" style="max-width: 260px;">
+ <li class="active">
+ <a href="#">
+ <span class="badge pull-right">42</span>
+ Home
+ </a>
+ </li>
+ <li><a href="#">Profile</a></li>
+ <li>
+ <a href="#">
+ <span class="badge pull-right">3</span>
+ Messages
+ </a>
+ </li>
+ </ul>
+ <hr>
+ <button class="btn btn-primary" type="button">
+ Messages <span class="badge">4</span>
+ </button>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/basic.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/basic.html
new file mode 100644
index 0000000..a94f63d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/basic.html
@@ -0,0 +1,29 @@
+---
+categories: [Layouts]
+css-extra: false
+layout: layout
+title: Basic
+resource: true
+url-js-extra: '!URL_COMPONENTS!datatables/media/js/jquery.dataTables.js'
+weight: 1
+---
+{% include layouts-navbar-primary.html %}
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <ol class="breadcrumb">
+ <li><a href="#">Home</a></li>
+ <li>{{ page.title }}</li>
+ </ol>
+ <h1>{{ page.title }}</h1>
+{% include datatable.html %}
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eget eros tincidunt, semper ante nec, dapibus ante.</p>
+ </div><!-- /col -->
+ </div><!-- /row -->
+ </div><!-- /container -->
+ <script>
+ // Initialize Datatables
+ $(document).ready( function() {
+ $('.datatable').dataTable();
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/blank-slate.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/blank-slate.html
new file mode 100644
index 0000000..44c0832
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/blank-slate.html
@@ -0,0 +1,44 @@
+---
+categories: [Widgets]
+layout: page
+title: Blank Slate
+resource: true
+---
+
+ <h2>Basic Blank Slate</h2>
+ <div class="blank-slate-pf">
+ <h1>Blank Slate Title</h1>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
+ <p>Learn more about this <a href="#">on the documentation</a>.</p>
+ <div class="blank-slate-pf-main-action">
+ <button class="btn btn-primary btn-lg">
+ Main Action
+ </button>
+ </div>
+ </div>
+ <hr>
+ <h2>Blank Slate with icon and secondary actions</h2>
+ <div class="blank-slate-pf">
+ <div class="blank-slate-pf-icon">
+ <span class="pficon pficon-add-circle-o"></span>
+ </div>
+ <h1>Blank Slate Title</h1>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
+ <p>Learn more about this <a href="#">on the documentation</a>.</p>
+ <div class="blank-slate-pf-main-action">
+ <button class="btn btn-primary btn-lg">
+ Main Action
+ </button>
+ </div>
+ <div class="blank-slate-pf-secondary-action">
+ <button class="btn btn-default">
+ Secondary Action
+ </button>
+ <button class="btn btn-default">
+ Secondary Action
+ </button>
+ <button class="btn btn-default">
+ Secondary Action
+ </button>
+ </div>
+ </div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-combobox.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-combobox.html
new file mode 100644
index 0000000..32835e4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-combobox.html
@@ -0,0 +1,305 @@
+---
+alert-message: ', <a href="http://getbootstrap.com" class="alert-link">http://getbootstrap.com</a>, and <a href="https://github.com/danielfarrell/bootstrap-combobox">https://github.com/danielfarrell/bootstrap-combobox</a>.'
+categories: [Widgets]
+layout: page
+title: Bootstrap-Combobox
+resource: true
+url-js-extra: '!URL_COMPONENTS!bootstrap-combobox/js/bootstrap-combobox.js'
+---
+ <div class="form-group">
+ <label>State</label>
+ <select class="combobox form-control">
+ <option value="" selected="selected">Select a State</option>
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AZ">Arizona</option>
+ <option value="AR">Arkansas</option>
+ <option value="CA">California</option>
+ <option value="CO">Colorado</option>
+ <option value="CT">Connecticut</option>
+ <option value="DE">Delaware</option>
+ <option value="DC">District Of Columbia</option>
+ <option value="FL">Florida</option>
+ <option value="GA">Georgia</option>
+ <option value="HI">Hawaii</option>
+ <option value="ID">Idaho</option>
+ <option value="IL">Illinois</option>
+ <option value="IN">Indiana</option>
+ <option value="IA">Iowa</option>
+ <option value="KS">Kansas</option>
+ <option value="KY">Kentucky</option>
+ <option value="LA">Louisiana</option>
+ <option value="ME">Maine</option>
+ <option value="MD">Maryland</option>
+ <option value="MA">Massachusetts</option>
+ <option value="MI">Michigan</option>
+ <option value="MN">Minnesota</option>
+ <option value="MS">Mississippi</option>
+ <option value="MO">Missouri</option>
+ <option value="MT">Montana</option>
+ <option value="NE">Nebraska</option>
+ <option value="NV">Nevada</option>
+ <option value="NH">New Hampshire</option>
+ <option value="NJ">New Jersey</option>
+ <option value="NM">New Mexico</option>
+ <option value="NY">New York</option>
+ <option value="NC">North Carolina</option>
+ <option value="ND">North Dakota</option>
+ <option value="OH">Ohio</option>
+ <option value="OK">Oklahoma</option>
+ <option value="OR">Oregon</option>
+ <option value="PA">Pennsylvania</option>
+ <option value="RI">Rhode Island</option>
+ <option value="SC">South Carolina</option>
+ <option value="SD">South Dakota</option>
+ <option value="TN">Tennessee</option>
+ <option value="TX">Texas</option>
+ <option value="UT">Utah</option>
+ <option value="VT">Vermont</option>
+ <option value="VA">Virginia</option>
+ <option value="WA">Washington</option>
+ <option value="WV">West Virginia</option>
+ <option value="WI">Wisconsin</option>
+ <option value="WY">Wyoming</option>
+ </select>
+ </div>
+ <h2>Sizes</h2>
+ <div class="form-group">
+ <label>State</label>
+ <select class="combobox form-control input-lg">
+ <option value="" selected="selected">Select a State</option>
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AZ">Arizona</option>
+ <option value="AR">Arkansas</option>
+ <option value="CA">California</option>
+ <option value="CO">Colorado</option>
+ <option value="CT">Connecticut</option>
+ <option value="DE">Delaware</option>
+ <option value="DC">District Of Columbia</option>
+ <option value="FL">Florida</option>
+ <option value="GA">Georgia</option>
+ <option value="HI">Hawaii</option>
+ <option value="ID">Idaho</option>
+ <option value="IL">Illinois</option>
+ <option value="IN">Indiana</option>
+ <option value="IA">Iowa</option>
+ <option value="KS">Kansas</option>
+ <option value="KY">Kentucky</option>
+ <option value="LA">Louisiana</option>
+ <option value="ME">Maine</option>
+ <option value="MD">Maryland</option>
+ <option value="MA">Massachusetts</option>
+ <option value="MI">Michigan</option>
+ <option value="MN">Minnesota</option>
+ <option value="MS">Mississippi</option>
+ <option value="MO">Missouri</option>
+ <option value="MT">Montana</option>
+ <option value="NE">Nebraska</option>
+ <option value="NV">Nevada</option>
+ <option value="NH">New Hampshire</option>
+ <option value="NJ">New Jersey</option>
+ <option value="NM">New Mexico</option>
+ <option value="NY">New York</option>
+ <option value="NC">North Carolina</option>
+ <option value="ND">North Dakota</option>
+ <option value="OH">Ohio</option>
+ <option value="OK">Oklahoma</option>
+ <option value="OR">Oregon</option>
+ <option value="PA">Pennsylvania</option>
+ <option value="RI">Rhode Island</option>
+ <option value="SC">South Carolina</option>
+ <option value="SD">South Dakota</option>
+ <option value="TN">Tennessee</option>
+ <option value="TX">Texas</option>
+ <option value="UT">Utah</option>
+ <option value="VT">Vermont</option>
+ <option value="VA">Virginia</option>
+ <option value="WA">Washington</option>
+ <option value="WV">West Virginia</option>
+ <option value="WI">Wisconsin</option>
+ <option value="WY">Wyoming</option>
+ </select>
+ </div>
+ <div class="form-group">
+ <label>State</label>
+ <select class="combobox form-control input-sm">
+ <option value="" selected="selected">Select a State</option>
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AZ">Arizona</option>
+ <option value="AR">Arkansas</option>
+ <option value="CA">California</option>
+ <option value="CO">Colorado</option>
+ <option value="CT">Connecticut</option>
+ <option value="DE">Delaware</option>
+ <option value="DC">District Of Columbia</option>
+ <option value="FL">Florida</option>
+ <option value="GA">Georgia</option>
+ <option value="HI">Hawaii</option>
+ <option value="ID">Idaho</option>
+ <option value="IL">Illinois</option>
+ <option value="IN">Indiana</option>
+ <option value="IA">Iowa</option>
+ <option value="KS">Kansas</option>
+ <option value="KY">Kentucky</option>
+ <option value="LA">Louisiana</option>
+ <option value="ME">Maine</option>
+ <option value="MD">Maryland</option>
+ <option value="MA">Massachusetts</option>
+ <option value="MI">Michigan</option>
+ <option value="MN">Minnesota</option>
+ <option value="MS">Mississippi</option>
+ <option value="MO">Missouri</option>
+ <option value="MT">Montana</option>
+ <option value="NE">Nebraska</option>
+ <option value="NV">Nevada</option>
+ <option value="NH">New Hampshire</option>
+ <option value="NJ">New Jersey</option>
+ <option value="NM">New Mexico</option>
+ <option value="NY">New York</option>
+ <option value="NC">North Carolina</option>
+ <option value="ND">North Dakota</option>
+ <option value="OH">Ohio</option>
+ <option value="OK">Oklahoma</option>
+ <option value="OR">Oregon</option>
+ <option value="PA">Pennsylvania</option>
+ <option value="RI">Rhode Island</option>
+ <option value="SC">South Carolina</option>
+ <option value="SD">South Dakota</option>
+ <option value="TN">Tennessee</option>
+ <option value="TX">Texas</option>
+ <option value="UT">Utah</option>
+ <option value="VT">Vermont</option>
+ <option value="VA">Virginia</option>
+ <option value="WA">Washington</option>
+ <option value="WV">West Virginia</option>
+ <option value="WI">Wisconsin</option>
+ <option value="WY">Wyoming</option>
+ </select>
+ </div>
+ <h2>Horizontal Form</h2>
+ <form class="form-horizontal">
+ <div class="form-group">
+ <label class="control-label col-sm-2">State</label>
+ <div class="col-sm-10">
+ <select class="combobox form-control" name="horizontal" required="required">
+ <option value="" selected="selected">Select a State</option>
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AZ">Arizona</option>
+ <option value="AR">Arkansas</option>
+ <option value="CA">California</option>
+ <option value="CO">Colorado</option>
+ <option value="CT">Connecticut</option>
+ <option value="DE">Delaware</option>
+ <option value="DC">District Of Columbia</option>
+ <option value="FL">Florida</option>
+ <option value="GA">Georgia</option>
+ <option value="HI">Hawaii</option>
+ <option value="ID">Idaho</option>
+ <option value="IL">Illinois</option>
+ <option value="IN">Indiana</option>
+ <option value="IA">Iowa</option>
+ <option value="KS">Kansas</option>
+ <option value="KY">Kentucky</option>
+ <option value="LA">Louisiana</option>
+ <option value="ME">Maine</option>
+ <option value="MD">Maryland</option>
+ <option value="MA">Massachusetts</option>
+ <option value="MI">Michigan</option>
+ <option value="MN">Minnesota</option>
+ <option value="MS">Mississippi</option>
+ <option value="MO">Missouri</option>
+ <option value="MT">Montana</option>
+ <option value="NE">Nebraska</option>
+ <option value="NV">Nevada</option>
+ <option value="NH">New Hampshire</option>
+ <option value="NJ">New Jersey</option>
+ <option value="NM">New Mexico</option>
+ <option value="NY">New York</option>
+ <option value="NC">North Carolina</option>
+ <option value="ND">North Dakota</option>
+ <option value="OH">Ohio</option>
+ <option value="OK">Oklahoma</option>
+ <option value="OR">Oregon</option>
+ <option value="PA">Pennsylvania</option>
+ <option value="RI">Rhode Island</option>
+ <option value="SC">South Carolina</option>
+ <option value="SD">South Dakota</option>
+ <option value="TN">Tennessee</option>
+ <option value="TX">Texas</option>
+ <option value="UT">Utah</option>
+ <option value="VT">Vermont</option>
+ <option value="VA">Virginia</option>
+ <option value="WA">Washington</option>
+ <option value="WV">West Virginia</option>
+ <option value="WI">Wisconsin</option>
+ <option value="WY">Wyoming</option>
+ </select>
+ </div>
+ </div>
+ </form>
+ <h2>Inline Form</h2>
+ <form class="form-inline">
+ <div class="form-group">
+ <select class="combobox form-control" name="inline">
+ <option value="" selected="selected">Select a State</option>
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AZ">Arizona</option>
+ <option value="AR">Arkansas</option>
+ <option value="CA">California</option>
+ <option value="CO">Colorado</option>
+ <option value="CT">Connecticut</option>
+ <option value="DE">Delaware</option>
+ <option value="DC">District Of Columbia</option>
+ <option value="FL">Florida</option>
+ <option value="GA">Georgia</option>
+ <option value="HI">Hawaii</option>
+ <option value="ID">Idaho</option>
+ <option value="IL">Illinois</option>
+ <option value="IN">Indiana</option>
+ <option value="IA">Iowa</option>
+ <option value="KS">Kansas</option>
+ <option value="KY">Kentucky</option>
+ <option value="LA">Louisiana</option>
+ <option value="ME">Maine</option>
+ <option value="MD">Maryland</option>
+ <option value="MA">Massachusetts</option>
+ <option value="MI">Michigan</option>
+ <option value="MN">Minnesota</option>
+ <option value="MS">Mississippi</option>
+ <option value="MO">Missouri</option>
+ <option value="MT">Montana</option>
+ <option value="NE">Nebraska</option>
+ <option value="NV">Nevada</option>
+ <option value="NH">New Hampshire</option>
+ <option value="NJ">New Jersey</option>
+ <option value="NM">New Mexico</option>
+ <option value="NY">New York</option>
+ <option value="NC">North Carolina</option>
+ <option value="ND">North Dakota</option>
+ <option value="OH">Ohio</option>
+ <option value="OK">Oklahoma</option>
+ <option value="OR">Oregon</option>
+ <option value="PA">Pennsylvania</option>
+ <option value="RI">Rhode Island</option>
+ <option value="SC">South Carolina</option>
+ <option value="SD">South Dakota</option>
+ <option value="TN">Tennessee</option>
+ <option value="TX">Texas</option>
+ <option value="UT">Utah</option>
+ <option value="VT">Vermont</option>
+ <option value="VA">Virginia</option>
+ <option value="WA">Washington</option>
+ <option value="WV">West Virginia</option>
+ <option value="WI">Wisconsin</option>
+ <option value="WY">Wyoming</option>
+ </select>
+ </div>
+ </form>
+ <script>
+ // Initialize Boostrap-Combobox
+ $('.combobox').combobox();
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-datepicker.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-datepicker.html
new file mode 100644
index 0000000..b9ba69f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-datepicker.html
@@ -0,0 +1,36 @@
+---
+alert-message: ', <a href="http://getbootstrap.com" class="alert-link">http://getbootstrap.com</a>, and <a href="http://bootstrap-datepicker.readthedocs.org/en/latest/">http://bootstrap-datepicker.readthedocs.org/en/latest/</a>.'
+categories: [Widgets]
+layout: page
+title: Bootstrap-Datepicker
+resource: true
+url-js-extra: '!URL_COMPONENTS!bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js'
+---
+ <h2>Text Input</h2>
+ <input type="text" class="form-control bootstrap-datepicker">
+ <h2>Component</h2>
+ <div class="input-group date">
+ <input type="text" class="form-control"><span class="input-group-addon"><span class="fa fa-calendar"></span></span>
+ </div>
+ <h2>Inline</h2>
+ <div class="bootstrap-datepicker-inline"></div>
+ <h2>Range <small>Do not use. PatternFly-approved design coming in a future update.</small></h2>
+ <div class="input-daterange input-group">
+ <input type="text" class="form-control" name="start">
+ <span class="input-group-addon">to</span>
+ <input type="text" class="form-control" name="end">
+ </div>
+ <script>
+ // Initialize Boostrap-Datepicker
+ $('.bootstrap-datepicker, .input-group.date, .bootstrap-datepicker-inline').datepicker({
+ autoclose: true,
+ orientation: "top auto",
+ todayBtn: "linked",
+ todayHighlight: true
+ });
+ $('.input-daterange').datepicker({
+ autoclose: true,
+ todayBtn: "linked",
+ todayHighlight: true
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-select.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-select.html
new file mode 100644
index 0000000..181d2fb
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-select.html
@@ -0,0 +1,173 @@
+---
+alert-message: ', <a href="http://getbootstrap.com" class="alert-link">http://getbootstrap.com</a>, and <a href="http://silviomoreto.github.io/bootstrap-select/">http://silviomoreto.github.io/bootstrap-select/</a>.'
+categories: [Widgets]
+layout: page
+title: Bootstrap-Select
+resource: true
+url-js-extra: '!URL_COMPONENTS!bootstrap-select/dist/js/bootstrap-select.min.js'
+---
+ <h3>Single-Select Dropdown</h3>
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter" disabled>Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </select>
+ </div>
+ <h3>Disabled</h3>
+ <div class="form-group">
+ <select class="selectpicker form-control" disabled>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter" disabled>Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </select>
+ </div>
+ <h3>Option Groups</h3>
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <optgroup label="Picnic">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter" disabled>Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </optgroup>
+ <optgroup label="Camping">
+ <option>Tent</option>
+ <option>Flashlight</option>
+ <option>Toilet Paper</option>
+ <option>Sleeping Bag</option>
+ </optgroup>
+ </select>
+ </div>
+ <h3>Multiple Select</h3>
+ <div class="form-group">
+ <select class="selectpicker form-control" multiple data-selected-text-format="count>3">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter" disabled>Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </select>
+ </div>
+ <h3>Data Live Search</h3>
+ <div class="form-group">
+ <select class="selectpicker form-control" data-live-search="true">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter" disabled>Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </select>
+ </div>
+ <h3>Icons</h3>
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <option data-icon="glyphicon-headphones">Mustard</option>
+ <option data-icon="glyphicon-tint">Ketchup</option>
+ <option data-icon="glyphicon-tree-conifer">Relish</option>
+ </select>
+ </div>
+ <h3>With Help Text</h3>
+ <div class="form-group">
+ <label class="control-label" for="bootstrap-selectHelp">Bootstrap-Select with help text</label>
+ <select class="selectpicker form-control" id="bootstrap-selectHelp">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter" disabled>Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </select>
+ <span class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
+ </div>
+ <h3>Validation States</h3>
+ <div class="form-group has-success">
+ <label class="control-label" for="bootstrap-selectSuccess">Bootstrap-Select with success</label>
+ <select class="selectpicker form-control" id="bootstrap-selectSuccess">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter" disabled>Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </select>
+ <span class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
+ </div>
+ <div class="form-group has-warning">
+ <label class="control-label" for="bootstrap-selectWarning">Bootstrap-Select with warning</label>
+ <select class="selectpicker form-control" id="bootstrap-selectWarning">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter" disabled>Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </select>
+ <span class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
+ </div>
+ <div class="form-group has-error">
+ <label class="control-label" for="bootstrap-selectError">Bootstrap-Select with error</label>
+ <select class="selectpicker form-control" id="bootstrap-selectError">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ <option>Mushrooms</option>
+ <option>Pickles</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Hot">Tabasco</option>
+ <option data-subtext="Hotter" disabled>Sriracha</option>
+ <option data-subtext="Hottest">Wasabi</option>
+ </select>
+ <span class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
+ </div>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-treeview.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-treeview.html
new file mode 100644
index 0000000..71a5394
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-treeview.html
@@ -0,0 +1,197 @@
+---
+alert-message: ', <a href="http://getbootstrap.com" class="alert-link">http://getbootstrap.com</a>, and <a href="https://github.com/jonmiles/bootstrap-treeview">https://github.com/jonmiles/bootstrap-treeview</a>.'
+categories: [Widgets]
+layout: page
+title: Bootstrap Tree View
+resource: true
+url-js-extra: '!URL_COMPONENTS!bootstrap-treeview/dist/bootstrap-treeview.min.js'
+---
+ <div class="row">
+ <div class="col-sm-4">
+ <h2>Default</h2>
+ <div id="treeview1"></div>
+ </div><!--/col-->
+ <div class="col-sm-4">
+ <h2>Collapsed</h2>
+ <div id="treeview2"></div>
+ </div><!--/col-->
+ <div class="col-sm-4">
+ <h2>Expanded</h2>
+ <div id="treeview3"></div>
+ </div><!--/col-->
+ </div><!--/row-->
+ <div class="row">
+ <div class="col-sm-4">
+ <h2>Link enabled</h2>
+ <div id="treeview4"></div>
+ </div><!--/col-->
+ <div class="col-sm-4">
+ <h2>Events</h2>
+ <div id="treeview5"></div>
+ </div><!--/col-->
+ <div class="col-sm-4">
+ <h2>Output</h2>
+ <div id="event_output"></div>
+ </div><!--/col-->
+ </div><!--/row-->
+ <div class="row">
+ <div class="col-sm-4">
+ <h2>JSON Data</h2>
+ <div id="treeview6"></div>
+ </div><!--/col-->
+ <div class="col-sm-4">
+ <h2></h2>
+ <div id="treeview13"></div>
+ </div><!--/col-->
+ <div class="col-sm-4">
+ <h2></h2>
+ <div id="treeview14"></div>
+ </div><!--/col-->
+ </div><!--/row-->
+ <script>
+ $(function() {
+ var defaultData = [
+ {
+ text: 'Parent 1',
+ href: '#parent1',
+ tags: ['4'],
+ nodes: [
+ {
+ text: 'Child 1',
+ href: '#child1',
+ icon: 'fa fa-file-o',
+ tags: ['2'],
+ nodes: [
+ {
+ text: 'Grandchild 1',
+ href: '#grandchild1',
+ icon: 'fa fa-file-o',
+ tags: ['0']
+ },
+ {
+ text: 'Grandchild 2',
+ href: '#grandchild2',
+ icon: 'fa fa-file-o',
+ tags: ['0']
+ }
+ ]
+ },
+ {
+ text: 'Child 2',
+ href: '#child2',
+ icon: 'fa fa-file-o',
+ tags: ['0']
+ }
+ ]
+ },
+ {
+ text: 'Parent 2',
+ href: '#parent2',
+ tags: ['0']
+ },
+ {
+ text: 'Parent 3',
+ href: '#parent3',
+ tags: ['0']
+ },
+ {
+ text: 'Parent 4',
+ href: '#parent4',
+ tags: ['0']
+ },
+ {
+ text: 'Parent 5',
+ href: '#parent5' ,
+ tags: ['0']
+ }
+ ];
+ var json = '[' +
+ '{' +
+ '"text": "Parent 1",' +
+ '"nodes": [' +
+ '{' +
+ '"text": "Child 1",' +
+ '"nodes": [' +
+ '{' +
+ '"text": "Grandchild 1"' +
+ '},' +
+ '{' +
+ '"text": "Grandchild 2"' +
+ '}' +
+ ']' +
+ '},' +
+ '{' +
+ '"text": "Child 2"' +
+ '}' +
+ ']' +
+ '},' +
+ '{' +
+ '"text": "Parent 2"' +
+ '},' +
+ '{' +
+ '"text": "Parent 3"' +
+ '},' +
+ '{' +
+ '"text": "Parent 4"' +
+ '},' +
+ '{' +
+ '"text": "Parent 5"' +
+ '}' +
+ ']';
+ $('#treeview1').treeview({
+ collapseIcon: "fa fa-angle-down",
+ data: defaultData,
+ expandIcon: "fa fa-angle-right",
+ nodeIcon: "fa fa-folder",
+ showBorder: false
+ });
+
+ $('#treeview2').treeview({
+ collapseIcon: "fa fa-angle-down",
+ data: defaultData,
+ expandIcon: "fa fa-angle-right",
+ levels: 1,
+ nodeIcon: "fa fa-folder",
+ showBorder: false
+ });
+
+ $('#treeview3').treeview({
+ collapseIcon: "fa fa-angle-down",
+ data: defaultData,
+ expandIcon: "fa fa-angle-right",
+ levels: 99,
+ nodeIcon: "fa fa-folder",
+ showBorder: false
+ });
+
+ $('#treeview4').treeview({
+ collapseIcon: "fa fa-angle-down",
+ data: defaultData,
+ enableLinks: true,
+ expandIcon: "fa fa-angle-right",
+ levels: 99,
+ nodeIcon: "fa fa-folder",
+ showBorder: false
+ });
+
+ $('#treeview5').treeview({
+ collapseIcon: "fa fa-angle-down",
+ data: defaultData,
+ expandIcon: "fa fa-angle-right",
+ levels: 99,
+ nodeIcon: "fa fa-folder",
+ showBorder: false,
+ onNodeSelected: function(event, node) {
+ $('#event_output').prepend('<p>You clicked ' + node.text + '</p>');
+ }
+ });
+ $('#treeview6').treeview({
+ collapseIcon: "fa fa-angle-down",
+ data: json,
+ expandIcon: "fa fa-angle-right",
+ levels: 99,
+ nodeIcon: "fa fa-folder",
+ showBorder: false
+ });
+ });
+ </script>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-treeview-2.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-treeview-2.html
new file mode 100644
index 0000000..6a5c11d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/bootstrap-treeview-2.html
@@ -0,0 +1,94 @@
+---
+categories: [Layouts]
+css-extra: false
+layout: layout
+title: Tree View
+resource: true
+url-js-extra: ['!URL_COMPONENTS!bootstrap-select/dist/js/bootstrap-select.min.js', '!URL_COMPONENTS!bootstrap-treeview/dist/bootstrap-treeview.min.js']
+weight: 2
+---
+{% include layouts-navbar-primary.html %}
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
+ <ol class="breadcrumb">
+ <li><a href="#">Home</a></li>
+ <li>{{ page.title }}</li>
+ </ol>
+ <h1>{{ page.title }}</h1>
+{% include form.html %}
+ </div><!-- /col -->
+ <div class="col-sm-3 col-md-2 col-sm-pull-9 col-md-pull-10 sidebar-pf sidebar-pf-left">
+ <div id="treeview1"></div>
+ </div><!-- /col -->
+ </div><!-- /row -->
+ </div><!-- /container -->
+ <script>
+ // Intialize Boostrap-Treeview
+ $(function() {
+ var defaultData = [
+ {
+ text: 'Parent 1',
+ href: '#parent1',
+ tags: ['4'],
+ nodes: [
+ {
+ text: 'Child 1',
+ href: '#child1',
+ icon: 'fa fa-file-o',
+ tags: ['2'],
+ nodes: [
+ {
+ text: 'Grandchild 1',
+ href: '#grandchild1',
+ icon: 'fa fa-file-o',
+ tags: ['0']
+ },
+ {
+ text: 'Grandchild 2',
+ href: '#grandchild2',
+ icon: 'fa fa-file-o',
+ tags: ['0']
+ }
+ ]
+ },
+ {
+ text: 'Child 2',
+ href: '#child2',
+ icon: 'fa fa-file-o',
+ tags: ['0']
+ }
+ ]
+ },
+ {
+ text: 'Parent 2',
+ href: '#parent2',
+ tags: ['0']
+ },
+ {
+ text: 'Parent 3',
+ href: '#parent3',
+ tags: ['0']
+ },
+ {
+ text: 'Parent 4',
+ href: '#parent4',
+ tags: ['0']
+ },
+ {
+ text: 'Parent 5',
+ href: '#parent5' ,
+ tags: ['0']
+ }
+ ];
+ $('#treeview1').treeview({
+ collapseIcon: "fa fa-angle-down",
+ data: defaultData,
+ expandIcon: "fa fa-angle-right",
+ nodeIcon: "fa fa-folder",
+ showBorder: false
+ });
+ // set selected menu item
+ $('.list-group-item[data-nodeid="3"]').addClass('node-selected');
+ });
+ </script>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/breadcrumbs.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/breadcrumbs.html
new file mode 100644
index 0000000..92adc43
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/breadcrumbs.html
@@ -0,0 +1,12 @@
+---
+categories: [Widgets]
+layout: page
+title: Breadcrumbs
+resource: true
+---
+ <ol class="breadcrumb">
+ <li><a href="#">Back to Top Level</a></li>
+ <li><a href="#">Second Level</a></li>
+ <li><a href="#">Third Level</a></li>
+ <li class="active"><strong>Fourth Level:</strong> Detail about fourth level</li>
+ </ol>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/buttons.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/buttons.html
new file mode 100644
index 0000000..428eba6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/buttons.html
@@ -0,0 +1,487 @@
+---
+categories: [Widgets]
+layout: page
+title: Buttons
+resource: true
+---
+ <h2>PatternFly Examples</h2>
+ <p>
+ <button type="button" class="btn btn-default">Secondary</button>
+ <button type="button" class="btn btn-primary">Primary</button>
+ <button type="button" class="btn btn-danger">Destructive</button>
+ </p>
+ <p>
+ <button type="button" class="btn btn-default disabled">Secondary</button>
+ <button type="button" class="btn btn-primary disabled">Primary</button>
+ <button type="button" class="btn btn-danger disabled">Destructive</button>
+ </p>
+ <p>
+ <button type="button" class="btn btn-default btn-lg">Secondary Large</button>
+ <button type="button" class="btn btn-primary btn-lg">Primary Large</button>
+ <button type="button" class="btn btn-danger btn-lg">Destructive Large</button>
+ </p>
+ <p>
+ <button type="button" class="btn btn-default btn-lg disabled">Secondary Large</button>
+ <button type="button" class="btn btn-primary btn-lg disabled">Primary Large</button>
+ <button type="button" class="btn btn-danger btn-lg disabled">Destructive Large</button>
+ </p>
+ <p>
+ <button type="button" class="btn btn-default btn-xs">Secondary Extra Small</button>
+ <button type="button" class="btn btn-primary btn-xs">Primary Extra Small</button>
+ <button type="button" class="btn btn-danger btn-xs">Destructive Extra Small</button>
+ </p>
+ <p>
+ <button type="button" class="btn btn-default btn-xs disabled">Secondary Extra Small</button>
+ <button type="button" class="btn btn-primary btn-xs disabled">Primary Extra Small</button>
+ <button type="button" class="btn btn-danger btn-xs disabled">Destructive Extra Small</button>
+ </p>
+ <h2>Button options and sizes</h2>
+ <p>
+ <button class="btn btn-lg btn-default" type="button">Large button</button>
+ <button class="btn btn-lg btn-primary" type="button">Large button</button>
+ <button class="btn btn-lg btn-info" type="button">Large button</button>
+ <button class="btn btn-lg btn-success" type="button">Large button</button>
+ <button class="btn btn-lg btn-warning" type="button">Large button</button>
+ <button class="btn btn-lg btn-danger" type="button">Large button</button>
+ <button class="btn btn-lg btn-link" type="button">Large button</button>
+ </p>
+ <p>
+ <button class="btn btn-lg btn-default" type="button"><i class="glyphicon glyphicon-star"></i> Large button</button>
+ <button class="btn btn-lg btn-primary" type="button"><i class="glyphicon glyphicon-star"></i> Large button</button>
+ <button class="btn btn-lg btn-info" type="button"><i class="glyphicon glyphicon-star"></i> Large button</button>
+ <button class="btn btn-lg btn-success" type="button"><i class="glyphicon glyphicon-star"></i> Large button</button>
+ <button class="btn btn-lg btn-warning" type="button"><i class="glyphicon glyphicon-star"></i> Large button</button>
+ <button class="btn btn-lg btn-danger" type="button"><i class="glyphicon glyphicon-star"></i> Large button</button>
+ <button class="btn btn-lg btn-link" type="button"><i class="glyphicon glyphicon-star"></i> Large button</button>
+ </p>
+ <p>
+ <button class="btn btn-lg disabled" type="button">Large button</button>
+ <button class="btn btn-lg btn-primary disabled" type="button">Large button</button>
+ <button class="btn btn-lg btn-info disabled" type="button">Large button</button>
+ <button class="btn btn-lg btn-success disabled" type="button">Large button</button>
+ <button class="btn btn-lg btn-warning disabled" type="button">Large button</button>
+ <button class="btn btn-lg btn-danger disabled" type="button">Large button</button>
+ <button class="btn btn-lg btn-link disabled" type="button">Large button</button>
+ </p>
+ <p>
+ <button class="btn btn-default" type="button">Default button</button>
+ <button class="btn btn-primary" type="button">Default button</button>
+ <button class="btn btn-info" type="button">Default button</button>
+ <button class="btn btn-success" type="button">Default button</button>
+ <button class="btn btn-warning" type="button">Default button</button>
+ <button class="btn btn-danger" type="button">Default button</button>
+ <button class="btn btn-link" type="button">Default button</button>
+ </p>
+ <p>
+ <button class="btn btn-default" type="button"><i class="glyphicon glyphicon-star"></i> Default button</button>
+ <button class="btn btn-primary" type="button"><i class="glyphicon glyphicon-star"></i> Default button</button>
+ <button class="btn btn-info" type="button"><i class="glyphicon glyphicon-star"></i> Default button</button>
+ <button class="btn btn-success" type="button"><i class="glyphicon glyphicon-star"></i> Default button</button>
+ <button class="btn btn-warning" type="button"><i class="glyphicon glyphicon-star"></i> Default button</button>
+ <button class="btn btn-danger" type="button"><i class="glyphicon glyphicon-star"></i> Default button</button>
+ <button class="btn btn-link" type="button"><i class="glyphicon glyphicon-star"></i> Default button</button>
+ </p>
+ <p>
+ <button class="btn disabled" type="button">Default button</button>
+ <button class="btn btn-primary disabled" type="button">Default button</button>
+ <button class="btn btn-info disabled" type="button">Default button</button>
+ <button class="btn btn-success disabled" type="button">Default button</button>
+ <button class="btn btn-warning disabled" type="button">Default button</button>
+ <button class="btn btn-danger disabled" type="button">Default button</button>
+ <button class="btn btn-link disabled" type="button">Default button</button>
+ </p>
+ <p>
+ <button class="btn btn-sm btn-default" type="button">Small button</button>
+ <button class="btn btn-sm btn-primary" type="button">Small button</button>
+ <button class="btn btn-sm btn-info" type="button">Small button</button>
+ <button class="btn btn-sm btn-success" type="button">Small button</button>
+ <button class="btn btn-sm btn-warning" type="button">Small button</button>
+ <button class="btn btn-sm btn-danger" type="button">Small button</button>
+ <button class="btn btn-sm btn-link" type="button">Small button</button>
+ </p>
+ <p>
+ <button class="btn btn-sm btn-default" type="button"><i class="glyphicon glyphicon-star"></i> Small button</button>
+ <button class="btn btn-sm btn-primary" type="button"><i class="glyphicon glyphicon-star"></i> Small button</button>
+ <button class="btn btn-sm btn-info" type="button"><i class="glyphicon glyphicon-star"></i> Small button</button>
+ <button class="btn btn-sm btn-success" type="button"><i class="glyphicon glyphicon-star"></i> Small button</button>
+ <button class="btn btn-sm btn-warning" type="button"><i class="glyphicon glyphicon-star"></i> Small button</button>
+ <button class="btn btn-sm btn-danger" type="button"><i class="glyphicon glyphicon-star"></i> Small button</button>
+ <button class="btn btn-sm btn-link" type="button"><i class="glyphicon glyphicon-star"></i> Small button</button>
+ </p>
+ <p>
+ <button class="btn btn-sm disabled" type="button">Small button</button>
+ <button class="btn btn-sm btn-primary disabled" type="button">Small button</button>
+ <button class="btn btn-sm btn-info disabled" type="button">Small button</button>
+ <button class="btn btn-sm btn-success disabled" type="button">Small button</button>
+ <button class="btn btn-sm btn-warning disabled" type="button">Small button</button>
+ <button class="btn btn-sm btn-danger disabled" type="button">Small button</button>
+ <button class="btn btn-sm btn-link disabled" type="button">Small button</button>
+ </p>
+ <p>
+ <button class="btn btn-xs btn-default" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-primary" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-info" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-success" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-warning" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-danger" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-link" type="button">Extra small button</button>
+ </p>
+ <p>
+ <button class="btn btn-xs btn-default" type="button"><i class="glyphicon glyphicon-star"></i> Extra small button</button>
+ <button class="btn btn-xs btn-primary" type="button"><i class="glyphicon glyphicon-star"></i> Extra small button</button>
+ <button class="btn btn-xs btn-info" type="button"><i class="glyphicon glyphicon-star"></i> Extra small button</button>
+ <button class="btn btn-xs btn-success" type="button"><i class="glyphicon glyphicon-star"></i> Extra small button</button>
+ <button class="btn btn-xs btn-warning" type="button"><i class="glyphicon glyphicon-star"></i> Extra small button</button>
+ <button class="btn btn-xs btn-danger" type="button"><i class="glyphicon glyphicon-star"></i> Extra small button</button>
+ <button class="btn btn-xs btn-link" type="button"><i class="glyphicon glyphicon-star"></i> Extra small button</button>
+ </p>
+ <p>
+ <button class="btn btn-xs disabled" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-primary disabled" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-info disabled" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-success disabled" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-warning disabled" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-danger disabled" type="button">Extra small button</button>
+ <button class="btn btn-xs btn-link disabled" type="button">Extra small button</button>
+ </p>
+ <h2>Button types</h2>
+ <p>Note: a Firefox bug that prevents us from setting the line-height of <input>-based buttons, causing them to not exactly match the height of other buttons on Firefox.</p>
+ <p>
+ <a class="btn btn-lg btn-default" href="">Link</a>
+ <button class="btn btn-lg btn-default" type="submit">Button</button>
+ <input class="btn btn-lg btn-default" type="button" value="Input">
+ <input class="btn btn-lg btn-default" type="submit" value="Submit">
+ <a class="btn btn-lg btn-primary" href="">Link</a>
+ <button class="btn btn-lg btn-primary" type="submit">Button</button>
+ <input class="btn btn-lg btn-primary" type="button" value="Input">
+ <input class="btn btn-lg btn-primary" type="submit" value="Submit">
+ <a class="btn btn-lg btn-danger" href="">Link</a>
+ <button class="btn btn-lg btn-danger" type="submit">Button</button>
+ <input class="btn btn-lg btn-danger" type="button" value="Input">
+ <input class="btn btn-lg btn-danger" type="submit" value="Submit">
+ </p>
+ <p>
+ <a class="btn btn-lg disabled" href="">Link</a>
+ <button class="btn btn-lg disabled" type="submit">Button</button>
+ <input class="btn btn-lg disabled" type="button" value="Input">
+ <input class="btn btn-lg disabled" type="submit" value="Submit">
+ <a class="btn btn-lg btn-primary disabled" href="">Link</a>
+ <button class="btn btn-lg btn-primary disabled" type="submit">Button</button>
+ <input class="btn btn-lg btn-primary disabled" type="button" value="Input">
+ <input class="btn btn-lg btn-primary disabled" type="submit" value="Submit">
+ <a class="btn btn-lg btn-danger disabled" href="">Link</a>
+ <button class="btn btn-lg btn-danger disabled" type="submit">Button</button>
+ <input class="btn btn-lg btn-danger disabled" type="button" value="Input">
+ <input class="btn btn-lg btn-danger disabled" type="submit" value="Submit">
+ </p>
+ <p>
+ <a class="btn btn-default" href="">Link</a>
+ <button class="btn btn-default" type="submit">Button</button>
+ <input class="btn btn-default" type="button" value="Input">
+ <input class="btn btn-default" type="submit" value="Submit">
+ <a class="btn btn-primary" href="">Link</a>
+ <button class="btn btn-primary" type="submit">Button</button>
+ <input class="btn btn-primary" type="button" value="Input">
+ <input class="btn btn-primary" type="submit" value="Submit">
+ <a class="btn btn-danger" href="">Link</a>
+ <button class="btn btn-danger" type="submit">Button</button>
+ <input class="btn btn-danger" type="button" value="Input">
+ <input class="btn btn-danger" type="submit" value="Submit">
+ </p>
+ <p>
+ <a class="btn btn-default disabled" href="">Link</a>
+ <button class="btn btn-default disabled" type="submit">Button</button>
+ <input class="btn btn-default disabled" type="button" value="Input">
+ <input class="btn btn-default disabled" type="submit" value="Submit">
+ <a class="btn btn-primary disabled" href="">Link</a>
+ <button class="btn btn-primary disabled" type="submit">Button</button>
+ <input class="btn btn-primary disabled" type="button" value="Input">
+ <input class="btn btn-primary disabled" type="submit" value="Submit">
+ <a class="btn btn-danger disabled" href="">Link</a>
+ <button class="btn btn-danger disabled" type="submit">Button</button>
+ <input class="btn btn-danger disabled" type="button" value="Input">
+ <input class="btn btn-danger disabled" type="submit" value="Submit">
+ </p>
+ <p>
+ <a class="btn btn-sm btn-default" href="">Link</a>
+ <button class="btn btn-sm btn-default" type="submit">Button</button>
+ <input class="btn btn-sm btn-default" type="button" value="Input">
+ <input class="btn btn-sm btn-default" type="submit" value="Submit">
+ <a class="btn btn-sm btn-primary" href="">Link</a>
+ <button class="btn btn-sm btn-primary" type="submit">Button</button>
+ <input class="btn btn-sm btn-primary" type="button" value="Input">
+ <input class="btn btn-sm btn-primary" type="submit" value="Submit">
+ <a class="btn btn-sm btn-danger" href="">Link</a>
+ <button class="btn btn-sm btn-danger" type="submit">Button</button>
+ <input class="btn btn-sm btn-danger" type="button" value="Input">
+ <input class="btn btn-sm btn-danger" type="submit" value="Submit">
+ </p>
+ <p>
+ <a class="btn btn-sm disabled" href="">Link</a>
+ <button class="btn btn-sm disabled" type="submit">Button</button>
+ <input class="btn btn-sm disabled" type="button" value="Input">
+ <input class="btn btn-sm disabled" type="submit" value="Submit">
+ <a class="btn btn-sm btn-primary disabled" href="">Link</a>
+ <button class="btn btn-sm btn-primary disabled" type="submit">Button</button>
+ <input class="btn btn-sm btn-primary disabled" type="button" value="Input">
+ <input class="btn btn-sm btn-primary disabled" type="submit" value="Submit">
+ <a class="btn btn-sm btn-danger disabled" href="">Link</a>
+ <button class="btn btn-sm btn-danger disabled" type="submit">Button</button>
+ <input class="btn btn-sm btn-danger disabled" type="button" value="Input">
+ <input class="btn btn-sm btn-danger disabled" type="submit" value="Submit">
+ </p>
+ <p>
+ <a class="btn btn-xs btn-default" href="">Link</a>
+ <button class="btn btn-xs btn-default" type="submit">Button</button>
+ <input class="btn btn-xs btn-default" type="button" value="Input">
+ <input class="btn btn-xs btn-default" type="submit" value="Submit">
+ <a class="btn btn-xs btn-primary" href="">Link</a>
+ <button class="btn btn-xs btn-primary" type="submit">Button</button>
+ <input class="btn btn-xs btn-primary" type="button" value="Input">
+ <input class="btn btn-xs btn-primary" type="submit" value="Submit">
+ <a class="btn btn-xs btn-danger" href="">Link</a>
+ <button class="btn btn-xs btn-danger" type="submit">Button</button>
+ <input class="btn btn-xs btn-danger" type="button" value="Input">
+ <input class="btn btn-xs btn-danger" type="submit" value="Submit">
+ </p>
+ <p>
+ <a class="btn btn-xs disabled" href="">Link</a>
+ <button class="btn btn-xs disabled" type="submit">Button</button>
+ <input class="btn btn-xs disabled" type="button" value="Input">
+ <input class="btn btn-xs disabled" type="submit" value="Submit">
+ <a class="btn btn-xs btn-primary disabled" href="">Link</a>
+ <button class="btn btn-xs btn-primary disabled" type="submit">Button</button>
+ <input class="btn btn-xs btn-primary disabled" type="button" value="Input">
+ <input class="btn btn-xs btn-primary disabled" type="submit" value="Submit">
+ <a class="btn btn-xs btn-danger disabled" href="">Link</a>
+ <button class="btn btn-xs btn-danger disabled" type="submit">Button</button>
+ <input class="btn btn-xs btn-danger disabled" type="button" value="Input">
+ <input class="btn btn-xs btn-danger disabled" type="submit" value="Submit">
+ </p>
+ <h2>Button groups</h2>
+ <h3>Basic Example</h3>
+ <div class="btn-group">
+ <button type="button" class="btn btn-default">Left</button>
+ <button type="button" class="btn btn-default">Middle</button>
+ <button type="button" class="btn btn-default">Right</button>
+ </div>
+ <h3>Button toolbar</h3>
+ <div class="btn-toolbar">
+ <div class="btn-group">
+ <button type="button" class="btn btn-default">1</button>
+ <button type="button" class="btn btn-default">2</button>
+ <button type="button" class="btn btn-default">3</button>
+ <button type="button" class="btn btn-default">4</button>
+ </div>
+ <div class="btn-group">
+ <button type="button" class="btn btn-default">5</button>
+ <button type="button" class="btn btn-default">6</button>
+ <button type="button" class="btn btn-default">7</button>
+ </div>
+ <div class="btn-group">
+ <button type="button" class="btn btn-default">8</button>
+ </div>
+ </div>
+ <h3>Sizing</h3>
+ <div class="btn-toolbar">
+ <div class="btn-group btn-group-lg">
+ <button type="button" class="btn btn-default">Left</button>
+ <button type="button" class="btn btn-default">Middle</button>
+ <button type="button" class="btn btn-default">Right</button>
+ </div>
+ </div>
+ <div class="btn-toolbar">
+ <div class="btn-group">
+ <button type="button" class="btn btn-default">Left</button>
+ <button type="button" class="btn btn-default">Middle</button>
+ <button type="button" class="btn btn-default">Right</button>
+ </div>
+ </div>
+ <div class="btn-toolbar">
+ <div class="btn-group btn-group-sm">
+ <button type="button" class="btn btn-default">Left</button>
+ <button type="button" class="btn btn-default">Middle</button>
+ <button type="button" class="btn btn-default">Right</button>
+ </div>
+ </div>
+ <div class="btn-toolbar">
+ <div class="btn-group btn-group-xs">
+ <button type="button" class="btn btn-default">Left</button>
+ <button type="button" class="btn btn-default">Middle</button>
+ <button type="button" class="btn btn-default">Right</button>
+ </div>
+ </div>
+ <h3>Nesting</h3>
+ <div class="btn-group">
+ <button type="button" class="btn btn-default">1</button>
+ <button type="button" class="btn btn-default">2</button>
+ <div class="btn-group">
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+ </div>
+ <h3>Vertical variation</h3>
+ <div class="btn-group-vertical">
+ <button type="button" class="btn btn-default">Button</button>
+ <button type="button" class="btn btn-default">Button</button>
+ <div class="btn-group">
+ <button id="btnGroupVerticalDrop1" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop1">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+ <button type="button" class="btn btn-default">Button</button>
+ <button type="button" class="btn btn-default">Button</button>
+ <div class="btn-group">
+ <button id="btnGroupVerticalDrop2" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop2">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+ <div class="btn-group">
+ <button id="btnGroupVerticalDrop3" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop3">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+ <div class="btn-group">
+ <button id="btnGroupVerticalDrop4" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop4">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+ </div>
+ <h3>Justified link variation</h3>
+ <div class="btn-group btn-group-justified">
+ <a href="#" class="btn btn-default">Left</a>
+ <a href="#" class="btn btn-default">Middle</a>
+ <a href="#" class="btn btn-default">Right</a>
+ </div>
+ <h2>Button dropdowns</h2>
+ <h3>Single button dropdowns</h3>
+ <!-- Single button -->
+ <div class="btn-group">
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+ Action <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ <h3>Split button dropdowns</h3>
+ <!-- Split button -->
+ <div class="btn-group">
+ <button type="button" class="btn btn-default">Action</button>
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ <div class="btn-group">
+ <a class="btn btn-default" href="#"><i class="icon-user"></i> User</a>
+ <a class="btn btn-default dropdown-toggle" data-toggle="dropdown" href="#"><span class="caret"></span></a>
+ <ul class="dropdown-menu">
+ <li><a href="#"><i class="icon-pencil"></i> Edit</a></li>
+ <li><a href="#"><i class="icon-trash"></i> Delete</a></li>
+ <li><a href="#"><i class="icon-ban-circle"></i> Ban</a></li>
+ <li class="divider"></li>
+ <li><a href="#"><i class="i"></i> Make admin</a></li>
+ </ul>
+ </div>
+ <h3>Sizing</h3>
+ <!-- Large button group -->
+ <div class="btn-group">
+ <button class="btn btn-default btn-lg dropdown-toggle" type="button" data-toggle="dropdown">
+ Large button <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ <!-- Small button group -->
+ <div class="btn-group">
+ <button class="btn btn-default btn-sm dropdown-toggle" type="button" data-toggle="dropdown">
+ Small button <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ <!-- Extra small button group -->
+ <div class="btn-group">
+ <button class="btn btn-default btn-xs dropdown-toggle" type="button" data-toggle="dropdown">
+ Extra small button <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ <h3>Dropup variation</h3>
+ <div class="btn-toolbar">
+ <div class="btn-group dropup">
+ <button type="button" class="btn btn-default">Dropup</button>
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ <div class="btn-group dropup">
+ <button type="button" class="btn btn-primary">Right dropup</button>
+ <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
+ <ul class="dropdown-menu pull-right" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ </div><!-- /btn-toolbar -->
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/cards.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/cards.html
new file mode 100644
index 0000000..5ba5144
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/cards.html
@@ -0,0 +1,190 @@
+---
+categories: [Layouts]
+css-extra: false
+layout: cards
+resource: true
+title: Cards
+url-js-extra: ['!URL_COMPONENTS!matchHeight/jquery.matchHeight-min.js']
+weight: 8
+---
+{% include layouts-navbar-primary.html %}
+ <div class="container-fluid container-cards-pf">
+ <div class="row row-cards-pf">
+ <div class="col-xs-6 col-sm-4 col-md-2">
+ <div class="card-pf card-pf-accented">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ <div class="card-pf-body">
+ <p>
+ [card contents]
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="col-xs-6 col-sm-4 col-md-2">
+ <div class="card-pf card-pf-accented">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ <div class="card-pf-body">
+ <p>
+ [card contents]
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="col-xs-6 col-sm-4 col-md-2">
+ <div class="card-pf card-pf-accented">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ <div class="card-pf-body">
+ <p>
+ [card contents]
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="col-xs-6 col-sm-4 col-md-2">
+ <div class="card-pf card-pf-accented">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ <div class="card-pf-body">
+ <p>
+ [card contents]
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="col-xs-6 col-sm-4 col-md-2">
+ <div class="card-pf card-pf-accented">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ <div class="card-pf-body">
+ <p>
+ [card contents]
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="col-xs-6 col-sm-4 col-md-2">
+ <div class="card-pf card-pf-accented">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ <div class="card-pf-body">
+ <p>
+ [card contents]
+ </p>
+ </div>
+ </div>
+ </div>
+ </div><!-- /row -->
+ <div class="row row-cards-pf">
+ <div class="col-xs-6 col-sm-5 col-md-5">
+ <div class="card-pf">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ <div class="card-pf-body">
+ <p>[card contents]</p>
+ </div>
+ <div class="card-pf-footer">
+ <p><a href="#">Footer link</a></p>
+ </div>
+ </div>
+ </div>
+ <div class="col-xs-6 col-sm-7 col-md-7">
+ <div class="card-pf">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ <div class="card-pf-body">
+ <p>[card contents]</p>
+ </div>
+ </div>
+ </div>
+ </div><!-- /row -->
+ <div class="row row-cards-pf">
+ <div class="col-xs-6 col-sm-3 col-md-3">
+ <div class="card-pf">
+ <div class="card-pf-heading">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ </div>
+ <div class="card-pf-body">
+ <p>[card contents]</p>
+ </div>
+ <div class="card-pf-footer">
+ <p><a href="#">Footer link</a></p>
+ </div>
+ </div>
+ </div>
+ <div class="col-xs-6 col-sm-9 col-md-9">
+ <div class="card-pf">
+ <div class="card-pf-heading">
+ <h2 class="card-pf-title">
+ Card Title
+ </h2>
+ </div>
+ <div class="card-pf-body">
+ <p>[card contents]</p>
+ </div>
+ <div class="card-pf-footer">
+ <p><a href="#">Footer link</a></p>
+ </div>
+ </div>
+ </div>
+ </div><!-- /row -->
+ <div class="row row-cards-pf">
+ <div class="col-xs-6 col-sm-8 col-md-8">
+ <div class="card-pf">
+ <div class="card-pf-body">
+ <p>[card contents]</p>
+ </div>
+ <div class="card-pf-footer">
+ <p><a href="#">Footer link</a></p>
+ </div>
+ </div>
+ </div>
+ <div class="col-xs-6 col-sm-4 col-md-4">
+ <div class="card-pf">
+ <div class="card-pf-body">
+ <p>[card contents]</p>
+ </div>
+ <div class="card-pf-footer">
+ <p><a href="#">Footer link</a></p>
+ </div>
+ </div>
+ </div>
+ </div><!-- /row -->
+ <div class="row row-cards-pf">
+ <div class="col-xs-6 col-sm-6 col-md-6">
+ <div class="card-pf">
+ <div class="card-pf-body">
+ <p>[card contents]</p>
+ </div>
+ </div>
+ </div>
+ <div class="col-xs-6 col-sm-6 col-md-6">
+ <div class="card-pf">
+ <div class="card-pf-body">
+ <p>[card contents]</p>
+ </div>
+ </div>
+ </div>
+ </div><!-- /row -->
+ </div><!-- /container -->
+ <script>
+ $(function() {
+ // matchHeight the contents of each .card-pf and then the .card-pf itself
+ $(".row-cards-pf > [class*='col'] > .card-pf .card-pf-title").matchHeight();
+ $(".row-cards-pf > [class*='col'] > .card-pf > .card-pf-body").matchHeight();
+ $(".row-cards-pf > [class*='col'] > .card-pf > .card-pf-footer").matchHeight();
+ $(".row-cards-pf > [class*='col'] > .card-pf").matchHeight();
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/charts.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/charts.html
new file mode 100644
index 0000000..220370e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/charts.html
@@ -0,0 +1,348 @@
+---
+alert-message: ', <a href="http://getbootstrap.com" class="alert-link">http://getbootstrap.com</a>, and <a href="http://c3js.org/">http://c3js.org/</a>'
+categories: [Widgets]
+layout: page
+title: Charts
+resource: true
+url-js-extra: ['!URL_COMPONENTS!c3/c3.min.js', '!URL_COMPONENTS!d3/d3.min.js']
+---
+ <h2>Line Chart</h2>
+ <h3>Default C3 Colors <small> don't use these</small></h3>
+ <div id="chart"></div>
+ <h3>Patternfly Colors <small>use these</small></h3>
+ <div id="chart1"></div>
+ <h2>Sparkline</h2>
+ <div class="row">
+ <div class="col-md-4">
+ <div id="chart2"></div>
+ <div class="pull-right">91%</div>
+ <div class="pull-left">Less than one year remaining</div>
+ </div>
+ </div>
+ <h2>Spline Chart</h2>
+ <div id="chart3"></div>
+ <h2>Area Chart</h2>
+ <div id="chart4"></div>
+ <h2>Stacked Area Chart</h2>
+ <div id="chart5"></div>
+ <h2>Bar Chart</h2>
+ <div id="chart6"></div>
+ <h2>Stacked Bar Chart, Rotated</h2>
+ <div id="chart7"></div>
+ <h2>Donut Chart</h2>
+ <div id="chart8"></div>
+ <script>
+ var chart = c3.generate({
+ axis: {
+ x: {
+ tick: {
+ outer: false
+ }
+ },
+ y: {
+ tick: {
+ outer: false
+ }
+ }
+ },
+ bindto: '#chart',
+ data: {
+ columns: [
+ ['data1', 30, 200, 100, 400, 150, 250],
+ ['data2', 50, 220, 310, 240, 115, 25],
+ ['data3', 70, 100, 390, 295, 170, 220],
+ ['data4', 10, 340, 30, 290, 35, 20],
+ ['data5', 90, 150, 160, 165, 180, 5]
+ ]
+ },
+ grid: {
+ y: {
+ show: true
+ }
+ },
+ point: {
+ r: 4
+ }
+ });
+ var chart1 = c3.generate({
+ axis: {
+ x: {
+ tick: {
+ outer: false
+ }
+ },
+ y: {
+ tick: {
+ outer: false
+ }
+ }
+ },
+ bindto: '#chart1',
+ color: {
+ pattern: ['#0088ce', '#00659c', '#3f9c35', '#ec7a08', '#cc0000']
+ },
+ data: {
+ columns: [
+ ['data1', 30, 200, 100, 400, 150, 250],
+ ['data2', 50, 220, 310, 240, 115, 25],
+ ['data3', 70, 100, 390, 295, 170, 220],
+ ['data4', 10, 340, 30, 290, 35, 20],
+ ['data5', 90, 150, 160, 165, 180, 5]
+ ]
+ },
+ grid: {
+ y: {
+ show: true
+ }
+ },
+ point: {
+ r: 4
+ }
+ });
+ var chart2 = c3.generate({
+ axis: {
+ x: {
+ show: false
+ },
+ y: {
+ show: false
+ }
+ },
+ bindto: '#chart2',
+ color: {
+ pattern: ['#0088ce', '#00659c', '#3f9c35', '#ec7a08', '#cc0000']
+ },
+ data: {
+ columns: [
+ ['Less than one year remaining', 10, 14, 12, 20, 31, 27, 44, 36, 52, 55, 62, 68, 69, 88, 74, 88, 91],
+ ],
+ type: 'area'
+ },
+ legend: {
+ show: false
+ },
+ point: {
+ r: 1,
+ focus: {
+ expand: {
+ r: 4
+ }
+ }
+ },
+ size: {
+ height: 80
+ },
+ tooltip: {
+ // because a sparkline should only contain a single data column, the tooltip will only work for a single data column
+ contents: function (d, defaultTitleFormat, defaultValueFormat, color) {
+ for (i = 0; i < d.length; i++) {
+ return '<span class="c3-tooltip-sparkline">' + d[i].value + '%' + '</span>'
+ }
+ }
+ }
+ });
+ var chart3 = c3.generate({
+ axis: {
+ x: {
+ tick: {
+ outer: false
+ }
+ },
+ y: {
+ tick: {
+ outer: false
+ }
+ }
+ },
+ bindto: '#chart3',
+ color: {
+ pattern: ['#0088ce', '#00659c', '#3f9c35', '#ec7a08', '#cc0000']
+ },
+ data: {
+ columns: [
+ ['data1', 30, 200, 100, 400, 150, 250],
+ ['data2', 50, 220, 310, 240, 115, 25],
+ ['data3', 70, 100, 390, 295, 170, 220],
+ ['data4', 10, 340, 30, 290, 35, 20],
+ ['data5', 90, 150, 160, 165, 180, 5]
+ ],
+ type: 'spline'
+ },
+ grid: {
+ y: {
+ show: true
+ }
+ },
+ point: {
+ r: 4
+ }
+ });
+ var chart4 = c3.generate({
+ axis: {
+ x: {
+ tick: {
+ outer: false
+ }
+ },
+ y: {
+ tick: {
+ outer: false
+ }
+ }
+ },
+ bindto: '#chart4',
+ color: {
+ pattern: ['#0088ce', '#00659c', '#3f9c35', '#ec7a08', '#cc0000']
+ },
+ data: {
+ columns: [
+ ['data1', 300, 350, 300, 0, 0, 0],
+ ['data2', 130, 100, 140, 200, 150, 50]
+ ],
+ types: {
+ data1: 'area-spline',
+ data2: 'area-spline'
+ }
+ },
+ grid: {
+ y: {
+ show: true
+ }
+ },
+ point: {
+ r: 4
+ }
+ });
+ var chart5 = c3.generate({
+ axis: {
+ x: {
+ tick: {
+ outer: false
+ }
+ },
+ y: {
+ tick: {
+ outer: false
+ }
+ }
+ },
+ bindto: '#chart5',
+ color: {
+ pattern: ['#0088ce', '#00659c', '#3f9c35', '#ec7a08', '#cc0000']
+ },
+ data: {
+ columns: [
+ ['data1', 300, 350, 300, 0, 0, 0],
+ ['data2', 130, 100, 140, 200, 150, 50]
+ ],
+ types: {
+ data1: 'area-spline',
+ data2: 'area-spline'
+ },
+ groups: [['data1', 'data2']]
+ },
+ grid: {
+ y: {
+ show: true
+ }
+ },
+ point: {
+ r: 4
+ }
+ });
+ var chart6 = c3.generate({
+ axis: {
+ x: {
+ categories: ['Red', 'Orange', 'Green', 'Blue'],
+ tick: {
+ outer: false
+ },
+ type: 'category'
+ },
+ y: {
+ tick: {
+ outer: false
+ }
+ }
+ },
+ bar: {
+ width: {
+ ratio: 0.5 // this makes bar width 50% of length between ticks
+ }
+ },
+ bindto: '#chart6',
+ color: {
+ pattern: ['#0088ce', '#00659c', '#3f9c35', '#ec7a08', '#cc0000']
+ },
+ data: {
+ columns: [
+ ['data1', 5, 200, 200, 400],
+ ['data2', 130, 100, 20, 200]
+ ],
+ type: 'bar'
+ },
+ grid: {
+ y: {
+ show: true
+ }
+ }
+ });
+ var chart7 = c3.generate({
+ axis: {
+ rotated: true,
+ x: {
+ categories: ['Red', 'Orange', 'Green', 'Blue'],
+ tick: {
+ outer: false
+ },
+ type: 'category'
+ },
+ y: {
+ tick: {
+ outer: false
+ }
+ }
+ },
+ bindto: '#chart7',
+ color: {
+ pattern: ['#0088ce', '#00659c', '#3f9c35', '#ec7a08', '#cc0000']
+ },
+ data: {
+ columns: [
+ ['data1', 5, 200, 200, 400],
+ ['data2', 130, 100, 20, 200]
+ ],
+ groups: [
+ ['data1', 'data2']
+ ],
+ type: 'bar'
+ },
+ grid: {
+ y: {
+ show: true
+ }
+ }
+ });
+ var chart8 = c3.generate({
+ bindto: '#chart8',
+ data: {
+ colors: {
+ Cloud:
+ '#00659c', Virtual: '#0088ce',
+ Baremetal: '#969696'
+ },
+ columns: [
+ ['Cloud', 4,828],
+ ['Virtual', 13,258],
+ ['Baremetal', 11,1124]
+ ],
+ type : 'donut',
+ onclick: function (d, i) { console.log("onclick", d, i); },
+ onmouseover: function (d, i) { console.log("onmouseover", d, i); },
+ onmouseout: function (d, i) { console.log("onmouseout", d, i); }
+ },
+ donut: {
+ title: "29,210 Host Totals"
+ }
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/code.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/code.html
new file mode 100644
index 0000000..a7fab8f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/code.html
@@ -0,0 +1,43 @@
+---
+categories: [Widgets]
+layout: page
+title: Code
+resource: true
+url-js-extra: '!URL_COMPONENTS!google-code-prettify/bin/prettify.min.js'
+---
+ <h2>Inline</h2>
+ <p>For example, <code><section></code> should be wrapped as inline.</p>
+ <h2>User input</h2>
+ <p>To switch directories, type <kbd>cd</kbd> followed by the name of the directory.<br>
+ To edit settings, press <kbd><kbd>ctrl</kbd> + <kbd>,</kbd></kbd></p>
+ <h2>Basic block</h2>
+ <pre><p class="my-class">Sample text here...</p></pre>
+ <h2>Variables</h2>
+ <var>y</var> = <var>m</var><var>x</var> + <var>b</var>
+ <h2>Sample output</h2>
+ <samp>This text is meant to be treated as sample output from a computer program.</samp>
+ <h2>Syntax highlighting with google-code-prettify</h2>
+ <h3>Basic block</h3>
+ <pre class="prettyprint"><p class="my-class">Sample text here...</p></pre>
+ <h3>Larger block with line numbers</h3>
+ <pre class="prettyprint linenums lang-html">
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <link rel="stylesheet" href="css/style.css">
+</head>
+<body>
+ <header></header>
+ <div role="main"></div>
+ <footer></footer>
+ <script src="js/script.js"></script>
+</body>
+</html>
+</pre>
+ <script>
+ $(document).ready(function(){
+ prettyPrint();
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/dashboard.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/dashboard.html
new file mode 100644
index 0000000..9151334
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/dashboard.html
@@ -0,0 +1,225 @@
+---
+categories: [Layouts]
+css-extra: false
+layout: layout
+title: Dashboard
+resource: true
+url-js-extra: ['!URL_COMPONENTS!c3/c3.min.js', '!URL_COMPONENTS!d3/d3.min.js']
+weight: 3
+---
+{% include layouts-navbar-primary.html %}
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-sm-8 col-md-9">
+ <div class="page-header page-header-bleed-right">
+ <div class="actions pull-right">
+ <a href="#"><span class="pficon pficon-refresh"></span> Refresh Results</a>
+ </div>
+ <h1>{{ page.title }}</h1>
+ </div>
+ <h2 class="h4">Infrastructure Performance</h2>
+ <div id="chart"></div>
+ <hr>
+ <h2 class="h4">Resource Usage</h2>
+ <div class="row">
+ <div class="col-sm-6">
+ <div id="chart2"></div>
+ </div>
+ <div class="col-sm-6">
+ <img src="{{site.url-img}}dashboard-3.png" alt="Placeholder graph" class="img-responsive" />
+ </div>
+ </div>
+ <hr>
+ <h2 class="h4">Infrastructure Capacity</h2>
+ <div class="row">
+ <div class="col-sm-6">
+ <div id="chart4"></div>
+ </div>
+ <div class="col-sm-6">
+ <table class="table">
+ <tr>
+ <th>Status</th>
+ <th>Location Data</th>
+ <th>Hosts</th>
+ </tr>
+ <tr>
+ <td><span class="label label-success">New</span></td>
+ <td><strong>Fusce leo massa</strong><br>Created March 05, 2014 08:34:36 AM</td>
+ <td><span class="label label-default">11</span></td>
+ </tr>
+ <tr>
+ <td><span class="label label-success">New</span></td>
+ <td><strong>Iaculis at dapibus eget</strong><br>Created March 03, 2014 20:32:12 AM</td>
+ <td><span class="label label-default">9</span></td>
+ </tr>
+ <tr>
+ <td><span class="label label-default">Disabled</span></td>
+ <td><strong>Dapibus nec metus</strong><br>Created March 03, 2014 19:11:56 AM</td>
+ <td><span class="label label-default">25</span></td>
+ </tr>
+ </table>
+ <p><a href="#">See more »</a></p>
+ </div>
+ </div>
+ </div><!-- /col -->
+ <div class="col-sm-4 col-md-3 sidebar-pf sidebar-pf-right">
+ <div class="sidebar-header sidebar-header-bleed-left sidebar-header-bleed-right">
+ <div class="actions pull-right">
+ <a href="#">Clear Messages</a>
+ </div>
+ <h2 class="h5">Latest Notifications</h2>
+ </div>
+ <ul class="list-group">
+ <li class="list-group-item">
+ <h3 class="list-group-item-heading">Duis eu augue lectus</h3>
+ <p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus.</p>
+ </li>
+ <li class="list-group-item">
+ <h3 class="list-group-item-heading">Donec dictum odio eu turpis rutrum</h3>
+ <p class="list-group-item-text">Etiam sit amet ultricies ligula.</p>
+ </li>
+ <li class="list-group-item">
+ <h3 class="list-group-item-heading">At egestas nibh dictum</h3>
+ <p class="list-group-item-text">Maecenas vitae tempus mauris.</p>
+ </li>
+ <li class="list-group-item">
+ <h3 class="list-group-item-heading">Phasellus dictum posuere ante sit</h3>
+ <p class="list-group-item-text">Pellentesque rutrum justo in congue tristique.</p>
+ </li>
+ <li class="list-group-item">
+ <h3 class="list-group-item-heading">Amet commodo</h3>
+ <p class="list-group-item-text">Pellentesque in leo elit.</p>
+ </li>
+ <li class="list-group-item">
+ <h3 class="list-group-item-heading">Nunc viverra purus libero</h3>
+ <p class="list-group-item-text">Nulla lacinia lorem quis enim posuere dictum.</p>
+ </li>
+ <li class="list-group-item">
+ <h3 class="list-group-item-heading">Non faucibus augue dapibus at</h3>
+ <p class="list-group-item-text">Fusce id rutrum ante, eget vestibulum dolor</p>
+ </li>
+ <li class="list-group-item">
+ <h3 class="list-group-item-heading">Vivamus at semper</h3>
+ <p class="list-group-item-text">Duis sagittis vitae neque at vehicula.</p>
+ </li>
+ <li class="list-group-item">
+ <h3 class="list-group-item-heading">Sed sit amet dolor</h3>
+ <p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus.</p>
+ </li>
+ </ul>
+ <p><a href="#">See all messages</a></p>
+ </div><!-- /col -->
+ </div><!-- /row -->
+ </div><!-- /container -->
+ <script>
+ var chart = c3.generate({
+ axis: {
+ x: {
+ tick: {
+ format: '%m-%d',
+ outer: false
+ },
+ type: 'timeseries'
+ },
+ y: {
+ tick: {
+ format: function(d) { return d + "%"; },
+ outer: false
+ }
+ }
+ },
+ bindto: '#chart',
+ color: {
+ pattern: ['#006e9c','#00a8e1', '#3f9c35', '#ec7a08', '#cc0000']
+ },
+ data: {
+ columns: [
+ ['x', '2015-04-01', '2015-04-02', '2015-04-03', '2015-04-04', '2015-04-05', '2015-04-06', '2015-04-07'],
+ ['data1', 16, 44, 33, 88, 50, 76, 21]
+ ],
+ x: 'x'
+ },
+ grid: {
+ y: {
+ show: true
+ }
+ },
+ legend: {
+ hide: true
+ },
+ point: {
+ r: 4
+ },
+ size: {
+ height: 220
+ }
+ });
+ var chart2 = c3.generate({
+ bindto: '#chart2',
+ data: {
+ colors: {
+ Cloud: '#006e9c',
+ Virtual: '#00a8e1',
+ Baremetal: '#969696'
+ },
+ columns: [
+ ['Cloud', 4,828],
+ ['Virtual', 13,258],
+ ['Baremetal', 11,1124]
+ ],
+ type : 'donut',
+ onclick: function (d, i) { console.log("onclick", d, i); },
+ onmouseover: function (d, i) { console.log("onmouseover", d, i); },
+ onmouseout: function (d, i) { console.log("onmouseout", d, i); }
+ },
+ donut: {
+ title: "29,210 Hosts"
+ },
+ legend: {
+ position: 'right'
+ },
+ size: {
+ height: 220
+ }
+ });
+ var chart4 = c3.generate({
+ axis: {
+ rotated: true,
+ x: {
+ categories: ['Location 1', 'Location 2', 'Location 3', 'Location 4'],
+ tick: {
+ outer: false
+ },
+ type: 'category'
+ },
+ y: {
+ tick: {
+ format: function(d) { return d + "%"; },
+ outer: false
+ }
+ }
+ },
+ bindto: '#chart4',
+ color: {
+ pattern: ['#006e9c','#00a8e1', '#3f9c35', '#ec7a08', '#cc0000']
+ },
+ data: {
+ columns: [
+ ['Virtual Resources', 25, 35, 18, 78],
+ ['Physical Resources', 60, 40, 48, 8]
+ ],
+ groups: [
+ ['Virtual Resources', 'Physical Resources']
+ ],
+ type: 'bar'
+ },
+ grid: {
+ y: {
+ show: true
+ }
+ },
+ size: {
+ height: 200
+ }
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/datatables.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/datatables.html
new file mode 100644
index 0000000..9722554
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/datatables.html
@@ -0,0 +1,15 @@
+---
+alert-message: ', <a href="http://getbootstrap.com" class="alert-link">http://getbootstrap.com</a>, and <a href="http://datatables.net" class="alert-link">http://datatables.net</a>.'
+categories: [Widgets]
+layout: page
+title: Data Tables
+resource: true
+url-js-extra: '!URL_COMPONENTS!datatables/media/js/jquery.dataTables.js'
+---
+{% include datatable.html %}
+ <script>
+ // Initialize Datatables
+ $(document).ready(function() {
+ $('.datatable').dataTable();
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/datatables-columns.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/datatables-columns.html
new file mode 100644
index 0000000..acbfeef
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/datatables-columns.html
@@ -0,0 +1,34 @@
+---
+alert-message: ', <a href="http://getbootstrap.com" class="alert-link">http://getbootstrap.com</a>, and <a href="http://datatables.net" class="alert-link">http://datatables.net</a>.'
+categories: [Widgets]
+layout: page
+title: Data Tables with column visibility, reordering
+resource: true
+url-js-extra: ['!URL_COMPONENTS!datatables/media/js/jquery.dataTables.js', '!URL_COMPONENTS!datatables-colvis/js/dataTables.colVis.js', '!URL_COMPONENTS!datatables-colreorder/js/dataTables.colReorder.js']
+---
+{% include datatable.html %}
+ <script>
+ $(document).ready(function() {
+ // Initialize Datatables
+ var table = $('.datatable').DataTable({
+ // Customize the header and footer
+ "dom": 'R<"dataTables_header"fCi>t<"dataTables_footer"p>',
+ // Customize the ColVis button text so it's an icon and align the dropdown to the right side
+ "colVis": {
+ "buttonText": "<i class='fa fa-columns'></i>",
+ "sAlign": "right"
+ }
+ });
+ // On click of ColVis_Button, add Bootstrap classes and...
+ $(".ColVis_Button").addClass("btn btn-default dropdown-toggle").click(function() {
+ // Add Bootstrap classes to ColVis_Button's parent
+ $(this).parent(".ColVis").addClass("btn-group open");
+ // Add Bootstrap classes to the checkboxes
+ $(".ColVis_collection label").addClass("checkbox");
+ // Remove class from ColVis when clicking outside ColVis_Collection
+ $(".ColVis_collectionBackground, .ColVis_catcher").click(function() {
+ $(".ColVis").removeClass("open");
+ });
+ });
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/dropdowns.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/dropdowns.html
new file mode 100644
index 0000000..27d3fb1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/dropdowns.html
@@ -0,0 +1,14 @@
+---
+categories: [Widgets]
+layout: page
+title: Dropdowns
+resource: true
+---
+ <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1" style="display: block; position: static; margin-bottom: 10px;">
+ <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
+ <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
+ <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
+ <li role="presentation" class="divider"></li>
+ <li role="presentation" class="disabled"><a role="menuitem" tabindex="-1" href="#">Disabled link</a></li>
+ <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
+ </ul>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/form.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/form.html
new file mode 100644
index 0000000..6574f6b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/form.html
@@ -0,0 +1,80 @@
+---
+categories: [Layouts]
+css-extra: false
+layout: layout
+title: Form
+resource: true
+url-js-extra: '!URL_COMPONENTS!bootstrap-select/dist/js/bootstrap-select.min.js'
+weight: 4
+---
+{% include layouts-navbar-primary.html %}
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
+ <ol class="breadcrumb">
+ <li><a href="#">Home</a></li>
+ <li>{{ page.title }}</li>
+ </ol>
+ <h1>{{ page.title }}</h1>
+{% include form.html %}
+ </div><!-- /col -->
+ <div class="col-sm-3 col-md-2 col-sm-pull-9 col-md-pull-10 sidebar-pf sidebar-pf-left">
+ <div class="panel-group" id="accordion">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
+ Vivamus nisi
+ </a>
+ </h4>
+ </div>
+ <div id="collapseOne" class="panel-collapse collapse in">
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked">
+ <li class="active"><a href="#">Lorem ipsum</a></li>
+ <li><a href="#">Dolor sit amet</a></li>
+ <li><a href="#">Consectetur</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" class="collapsed">
+ Risus
+ </a>
+ </h4>
+ </div>
+ <div id="collapseTwo" class="panel-collapse collapse">
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked">
+ <li><a href="#">Adipiscing elit</a></li>
+ <li><a href="#">Duis</a></li>
+ <li><a href="#">Pellentesque</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree" class="collapsed">
+ Iaculis quis feugiat
+ </a>
+ </h4>
+ </div>
+ <div id="collapseThree" class="panel-collapse collapse">
+ <div class="panel-body">
+ <ul class="nav nav-pills nav-stacked">
+ <li><a href="#">Sed est</a></li>
+ <li><a href="#">Curabitur</a></li>
+ <li><a href="#">Eu dignissim</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div><!-- /col -->
+ </div><!-- /row -->
+ </div><!-- /container -->
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/forms.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/forms.html
new file mode 100644
index 0000000..fc8a45f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/forms.html
@@ -0,0 +1,391 @@
+---
+categories: [Widgets]
+layout: page
+title: Forms
+resource: true
+---
+ <h2>PatternFly Example</h2>
+ <form class="form-horizontal">
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="textInput">Default</label>
+ <div class="col-sm-10">
+ <input type="text" id="textInput" class="form-control"></div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="textInputDisabled">Disabled</label>
+ <div class="col-sm-10">
+ <input type="text" id="textInputDisabled" class="form-control" disabled></div>
+ </div>
+ <div class="form-group has-error">
+ <label class="col-sm-2 control-label" for="inputError">With error</label>
+ <div class="col-sm-10">
+ <input type="text" id="inputError" class="form-control">
+ <span class="help-block">Please correct the error</span>
+ </div>
+ </div>
+ </form>
+ <h2>Basic Example</h2>
+ <form role="form">
+ <div class="form-group">
+ <label for="exampleInputEmail1">Email address</label>
+ <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
+ </div>
+ <div class="form-group">
+ <label for="exampleInputPassword1">Password</label>
+ <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
+ </div>
+ <div class="form-group">
+ <label for="exampleInputFile">File input</label>
+ <input type="file" id="exampleInputFile">
+ <p class="help-block">Example block-level help text here.</p>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox"> Check me out
+ </label>
+ </div>
+ <button type="submit" class="btn btn-default">Submit</button>
+ </form>
+ <h2>Inline Form</h2>
+ <form class="form-inline" role="form">
+ <div class="form-group">
+ <label class="sr-only" for="exampleInputEmail2">Email address</label>
+ <input type="email" class="form-control" id="exampleInputEmail2" placeholder="Enter email">
+ </div>
+ <div class="form-group">
+ <label class="sr-only" for="exampleInputPassword2">Password</label>
+ <input type="password" class="form-control" id="exampleInputPassword2" placeholder="Password">
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox"> Remember me
+ </label>
+ </div>
+ <button type="submit" class="btn btn-default">Sign in</button>
+ </form>
+ <h2>Horizontal Form</h2>
+ <form class="form-horizontal" role="form">
+ <div class="form-group">
+ <label for="inputEmail1" class="col-lg-2 control-label">Email</label>
+ <div class="col-lg-10">
+ <input type="email" class="form-control" id="inputEmail1" placeholder="Email">
+ </div>
+ </div>
+ <div class="form-group">
+ <label for="inputPassword1" class="col-lg-2 control-label">Password</label>
+ <div class="col-lg-10">
+ <input type="password" class="form-control" id="inputPassword1" placeholder="Password">
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-lg-offset-2 col-lg-10">
+ <div class="checkbox">
+ <label>
+ <input type="checkbox"> Remember me
+ </label>
+ </div>
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-lg-offset-2 col-lg-10">
+ <button type="submit" class="btn btn-default">Sign in</button>
+ </div>
+ </div>
+ </form>
+ <h2>Supported Controls</h2>
+ <input type="text" class="form-control" placeholder="Text input">
+ <input type="password" class="form-control" placeholder="Text input">
+ <input type="datetime" class="form-control" placeholder="Text input">
+ <input type="datetime-local" class="form-control" placeholder="Text input">
+ <input type="date" class="form-control" placeholder="Text input">
+ <input type="month" class="form-control" placeholder="Text input">
+ <input type="time" class="form-control" placeholder="Text input">
+ <input type="week" class="form-control" placeholder="Text input">
+ <input type="number" class="form-control" placeholder="Text input">
+ <input type="email" class="form-control" placeholder="Text input">
+ <input type="url" class="form-control" placeholder="Text input">
+ <input type="search" class="form-control" placeholder="Text input">
+ <input type="tel" class="form-control" placeholder="Text input">
+ <input type="color" class="form-control" placeholder="Text input">
+ <textarea class="form-control" rows="3"></textarea>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" value="">
+ Option one is this and that—be sure to include why it's great
+ </label>
+ </div>
+ <div class="radio">
+ <label>
+ <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
+ Option one is this and that—be sure to include why it's great
+ </label>
+ </div>
+ <div class="radio">
+ <label>
+ <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
+ Option two can be something else and selecting it will deselect option one
+ </label>
+ </div>
+ <label class="checkbox-inline">
+ <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
+ </label>
+ <label class="checkbox-inline">
+ <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
+ </label>
+ <label class="checkbox-inline">
+ <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
+ </label>
+ <select class="form-control">
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+ </select>
+ <select multiple class="form-control">
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+ </select>
+ <h2>Static Control</h2>
+ <form class="form-horizontal" role="form">
+ <div class="form-group">
+ <label class="col-lg-2 control-label">Email</label>
+ <div class="col-lg-10">
+ <p class="form-control-static">email@example.com</p>
+ </div>
+ </div>
+ <div class="form-group">
+ <label for="inputPassword" class="col-lg-2 control-label">Password</label>
+ <div class="col-lg-10">
+ <input type="password" class="form-control" id="inputPassword" placeholder="Password">
+ </div>
+ </div>
+ </form>
+ <h2>Form States</h2>
+ <input class="form-control" id="focusedInput" type="text" value="This is focused...">
+ <input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
+ <form class="form-inline" role="form">
+ <fieldset disabled>
+ <div class="form-group">
+ <label for="disabledTextInput">Disabled input</label>
+ <input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
+ </div>
+ <div class="form-group">
+ <label for="disabledSelect">Disabled select menu</label>
+ <select id="disabledSelect" class="form-control">
+ <option>Disabled select</option>
+ </select>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox"> Can't check this
+ </label>
+ </div>
+ <button type="submit" class="btn btn-primary">Submit</button>
+ </fieldset>
+ </form>
+ <div class="form-group has-success">
+ <label class="control-label" for="inputSuccess">Input with success</label>
+ <input type="text" class="form-control" id="inputSuccess">
+ </div>
+ <div class="form-group has-success">
+ <label class="control-label" for="selectSuccess">Select with success</label>
+ <select class="form-control" id="selectSuccess">
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+ </select>
+ </div>
+ <div class="form-group has-warning">
+ <label class="control-label" for="inputWarning">Input with warning</label>
+ <input type="text" class="form-control" id="inputWarning">
+ </div>
+ <div class="form-group has-warning">
+ <label class="control-label" for="selectWarning">Select with warning</label>
+ <select class="form-control" id="selectWarning">
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+ </select>
+ </div>
+ <div class="form-group has-error">
+ <label class="control-label" for="inputError">Input with error</label>
+ <input type="text" class="form-control" id="inputError">
+ </div>
+ <div class="form-group has-error">
+ <label class="control-label" for="selectError">Select with error</label>
+ <select class="form-control" id="selectError">
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+ </select>
+ </div>
+ <h2>Control Sizing</h2>
+ <input class="form-control input-lg" type="text" placeholder=".input-lg">
+ <input class="form-control" type="text" placeholder="Default input">
+ <input class="form-control input-sm" type="text" placeholder=".input-sm">
+ <select class="form-control input-lg">...</select>
+ <select class="form-control">...</select>
+ <select class="form-control input-sm">...</select>
+ <div class="row">
+ <div class="col-lg-2">
+ <input type="text" class="form-control" placeholder=".col-lg-2">
+ </div>
+ <div class="col-lg-3">
+ <input type="text" class="form-control" placeholder=".col-lg-3">
+ </div>
+ <div class="col-lg-4">
+ <input type="text" class="form-control" placeholder=".col-lg-4">
+ </div>
+ </div>
+ <h2>Help Text</h2>
+ <span class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
+ <div class="input-group">
+ <span class="input-group-addon">@</span>
+ <input type="text" class="form-control" placeholder="Username">
+ </div>
+ <h2>Input Groups</h2>
+ <h3>Basic Example</h3>
+ <div class="input-group">
+ <input type="text" class="form-control">
+ <span class="input-group-addon">.00</span>
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon">$</span>
+ <input type="text" class="form-control">
+ <span class="input-group-addon">.00</span>
+ </div>
+ <h3>Sizing</h3>
+ <div class="input-group input-group-lg">
+ <span class="input-group-addon">@</span>
+ <input type="text" class="form-control input-lg" placeholder="Username">
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon">@</span>
+ <input type="text" class="form-control" placeholder="Username">
+ </div>
+ <div class="input-group input-group-sm">
+ <span class="input-group-addon">@</span>
+ <input type="text" class="form-control" placeholder="Username">
+ </div>
+ <h3>Checkboxes and radio addons</h3>
+ <div class="row">
+ <div class="col-lg-6">
+ <div class="input-group">
+ <span class="input-group-addon">
+ <input type="checkbox">
+ </span>
+ <input type="text" class="form-control">
+ </div><!-- /input-group -->
+ </div><!-- /.col-lg-6 -->
+ <div class="col-lg-6">
+ <div class="input-group">
+ <span class="input-group-addon">
+ <input type="radio">
+ </span>
+ <input type="text" class="form-control">
+ </div><!-- /input-group -->
+ </div><!-- /.col-lg-6 -->
+ </div><!-- /.row -->
+ <h3>Button addons</h3>
+ <div class="row">
+ <div class="col-lg-6">
+ <div class="input-group">
+ <span class="input-group-btn">
+ <button class="btn btn-default" type="button">Go!</button>
+ </span>
+ <input type="text" class="form-control">
+ </div><!-- /input-group -->
+ </div><!-- /.col-lg-6 -->
+ <div class="col-lg-6">
+ <div class="input-group">
+ <input type="text" class="form-control">
+ <span class="input-group-btn">
+ <button class="btn btn-default" type="button">Go!</button>
+ </span>
+ </div><!-- /input-group -->
+ </div><!-- /.col-lg-6 -->
+ </div><!-- /.row -->
+ <h3>Buttons with dropdowns</h3>
+ <div class="row">
+ <div class="col-lg-6">
+ <div class="input-group">
+ <div class="input-group-btn">
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ <input type="text" class="form-control">
+ </div><!-- /input-group -->
+ </div><!-- /.col-lg-6 -->
+ <div class="col-lg-6">
+ <div class="input-group">
+ <input type="text" class="form-control">
+ <div class="input-group-btn">
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
+ <ul class="dropdown-menu pull-right">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ </div><!-- /input-group -->
+ </div><!-- /.col-lg-6 -->
+ </div><!-- /.row -->
+ <h3>Segmented buttons</h3>
+ <form class="bs-example bs-example-form" role="form">
+ <div class="row">
+ <div class="col-lg-6">
+ <div class="input-group">
+ <div class="input-group-btn">
+ <button type="button" class="btn btn-default" tabindex="-1">Action</button>
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" tabindex="-1">
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ <input type="text" class="form-control">
+ </div><!-- /.input-group -->
+ </div><!-- /.col-lg-6 -->
+ <div class="col-lg-6">
+ <div class="input-group">
+ <input type="text" class="form-control">
+ <div class="input-group-btn">
+ <button type="button" class="btn btn-default" tabindex="-1">Action</button>
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" tabindex="-1">
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu pull-right" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ </div><!-- /.input-group -->
+ </div><!-- /.col-lg-6 -->
+ </div><!-- /.row -->
+ </form>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/icons.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/icons.html
new file mode 100644
index 0000000..9958c0c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/icons.html
@@ -0,0 +1,248 @@
+---
+categories: [Widgets]
+layout: page
+title: Icons
+resource: true
+---
+ <div class="row">
+ <div class="col-sm-6 col-md-6">
+ <h2>PatternFly Icons</h2>
+ <p>Custom icons and selections from <a href="http://icomoon.io/#icons">IcoMoon - Free</a>.</p>
+ <ul class="icons list-unstyled">
+ <li>
+ <span class="pficon pficon-add-circle-o"></span>
+ <span class="icon-class">pficon-add-circle-o</span>
+ </li>
+ <li>
+ <span class="pficon pficon-close"></span>
+ <span class="icon-class">pficon-close</span>
+ </li>
+ <li>
+ <span class="pficon pficon-cluster"></span>
+ <span class="icon-class">pficon-cluster</span>
+ </li>
+ <li>
+ <span class="pficon pficon-container-node"></span>
+ <span class="icon-class">pficon-container-node</span>
+ </li>
+ <li>
+ <span class="pficon pficon-delete"></span>
+ <span class="icon-class">pficon-delete</span>
+ </li>
+ <li>
+ <span class="pficon pficon-edit"></span>
+ <span class="icon-class">pficon-edit</span>
+ </li>
+ <li>
+ <span class="pficon pficon-error-circle-o"></span>
+ <span class="icon-class">pficon-error-circle-o</span>
+ </li>
+ <li>
+ <span class="pficon pficon-export"></span>
+ <span class="icon-class">pficon-export</span>
+ </li>
+ <li>
+ <span class="pficon pficon-flag"></span>
+ <span class="icon-class">pficon-flag</span>
+ </li>
+ <li>
+ <span class="pficon pficon-folder-close"></span>
+ <span class="icon-class">pficon-folder-close</span>
+ </li>
+ <li>
+ <span class="pficon pficon-folder-open"></span>
+ <span class="icon-class">pficon-folder-open</span>
+ </li>
+ <li>
+ <span class="pficon pficon-help"></span>
+ <span class="icon-class">pficon-help</span>
+ </li>
+ <li>
+ <span class="pficon pficon-home"></span>
+ <span class="icon-class">pficon-home</span>
+ </li>
+ <li>
+ <span class="pficon pficon-history"></span>
+ <span class="icon-class">pficon-history</span>
+ </li>
+ <li>
+ <span class="pficon pficon-image"></span>
+ <span class="icon-class">pficon-image</span>
+ </li>
+ <li>
+ <span class="pficon pficon-import"></span>
+ <span class="icon-class">pficon-import</span>
+ </li>
+ <li>
+ <span class="pficon pficon-info"></span>
+ <span class="icon-class">pficon-info</span>
+ </li>
+ <li>
+ <span class="pficon pficon-kubernetes"></span>
+ <span class="icon-class">pficon-kubernetes</span>
+ </li>
+ <li>
+ <span class="pficon pficon-ok"></span>
+ <span class="icon-class">pficon-ok</span>
+ </li>
+ <li>
+ <span class="pficon pficon-openshift"></span>
+ <span class="icon-class">pficon-openshift</span>
+ </li>
+ <li>
+ <span class="pficon pficon-print"></span>
+ <span class="icon-class">pficon-print</span>
+ </li>
+ <li>
+ <span class="pficon pficon-project"></span>
+ <span class="icon-class">pficon-project</span>
+ </li>
+ <li>
+ <span class="pficon pficon-registry"></span>
+ <span class="icon-class">pficon-registry</span>
+ </li>
+ <li>
+ <span class="pficon pficon-replicator"></span>
+ <span class="icon-class">pficon-replicator</span>
+ </li>
+ <li>
+ <span class="pficon pficon-restart"></span>
+ <span class="icon-class">pficon-restart</span>
+ </li>
+ <li>
+ <span class="pficon pficon-route"></span>
+ <span class="icon-class">pficon-route</span>
+ </li>
+ <li>
+ <span class="pficon pficon-running"></span>
+ <span class="icon-class">pficon-running</span>
+ </li>
+ <li>
+ <span class="pficon pficon-save"></span>
+ <span class="icon-class">pficon-save</span>
+ </li>
+ <li>
+ <span class="pficon pficon-screen"></span>
+ <span class="icon-class">pficon-screen</span>
+ </li>
+ <li>
+ <span class="pficon pficon-service"></span>
+ <span class="icon-class">pficon-service</span>
+ </li>
+ <li>
+ <span class="pficon pficon-settings"></span>
+ <span class="icon-class">pficon-settings</span>
+ </li>
+ <li>
+ <span class="pficon pficon-user"></span>
+ <span class="icon-class">pficon-user</span>
+ </li>
+ <li>
+ <span class="pficon pficon-users"></span>
+ <span class="icon-class">pficon-users</span>
+ </li>
+ <li>
+ <span class="pficon pficon-warning-triangle-o"></span>
+ <span class="icon-class">pficon-warning-triangle-o</span>
+ </li>
+ </ul>
+ </div>
+ <div class="col-sm-6 col-md-6">
+ <h2>Recommended Font Awesome Icons</h2>
+ <p>All <a href="http://fontawesome.io/icons/">Font Awesome</a> icons are available, but only these are recommended for use with PatternFly.</p>
+ <ul class="icons list-unstyled">
+ <li>
+ <span class="fa fa-angle-down"></span>
+ <span class="icon-class">fa-angle-down</span>
+ </li>
+ <li>
+ <span class="fa fa-angle-left"></span>
+ <span class="icon-class">fa-angle-left</span>
+ </li>
+ <li>
+ <span class="fa fa-angle-right"></span>
+ <span class="icon-class">fa-angle-right</span>
+ </li>
+ <li>
+ <span class="fa fa-angle-up"></span>
+ <span class="icon-class">fa-angle-up</span>
+ </li>
+ <li>
+ <span class="fa fa-angle-double-left"></span>
+ <span class="icon-class">fa-angle-double-left</span>
+ </li>
+ <li>
+ <span class="fa fa-angle-double-right"></span>
+ <span class="icon-class">fa-angle-double-right</span>
+ </li>
+ <li>
+ <span class="fa fa-arrow-circle-o-down"></span>
+ <span class="icon-class">fa-arrow-circle-o-down</span>
+ </li>
+ <li>
+ <span class="fa fa-ban"></span>
+ <span class="icon-class">fa-ban</span>
+ </li>
+ <li>
+ <span class="fa fa-check"></span>
+ <span class="icon-class">fa-check</span>
+ </li>
+ <li>
+ <span class="fa fa-clock-o"></span>
+ <span class="icon-class">fa-clock-o</span>
+ </li>
+ <li>
+ <span class="fa fa-cube"></span>
+ <span class="icon-class">fa-cube</span>
+ </li>
+ <li>
+ <span class="fa fa-cubes"></span>
+ <span class="icon-class">fa-cubes</span>
+ </li>
+ <li>
+ <span class="fa fa-envelope"></span>
+ <span class="icon-class">fa-envelope</span>
+ </li>
+ <li>
+ <span class="fa fa-filter"></span>
+ <span class="icon-class">fa-filter</span>
+ </li>
+ <li>
+ <span class="fa fa-lock"></span>
+ <span class="icon-class">fa-lock</span>
+ </li>
+ <li>
+ <span class="fa fa-minus"></span>
+ <span class="icon-class">fa-minus</span>
+ </li>
+ <li>
+ <span class="fa fa-plus"></span>
+ <span class="icon-class">fa-plus</span>
+ </li>
+ <li>
+ <span class="fa fa-power-off"></span>
+ <span class="icon-class">fa-power-off</span>
+ </li>
+ <li>
+ <span class="fa fa-refresh"></span>
+ <span class="icon-class">fa-refresh</span>
+ </li>
+ <li>
+ <span class="fa fa-search"></span>
+ <span class="icon-class">fa-search</span>
+ </li>
+ <li>
+ <span class="fa fa-star"></span>
+ <span class="icon-class">fa-star</span>
+ </li>
+ <li>
+ <span class="fa fa-star-o"></span>
+ <span class="icon-class">fa-star-o</span>
+ </li>
+ <li>
+ <span class="fa fa-unlock-alt"></span>
+ <span class="icon-class">fa-unlock-alt</span>
+ </li>
+ </ul>
+ </div>
+ </div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/img/dashboard-3.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/img/dashboard-3.png
new file mode 100644
index 0000000..df6fe4b
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/img/dashboard-3.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/index.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/index.html
new file mode 100644
index 0000000..cf24841
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/index.html
@@ -0,0 +1,23 @@
+---
+layout: page
+---
+ {% strip %}<div class="row">
+ {% for cat in site.category-list %}
+ <div class="col-sm-6">
+ <h2>{{ cat }}</h2>
+ <ul>
+ {% for page in site.pages %}
+ {% if page.resource == true %}
+ {% for pc in page.categories %}
+ {% if pc == cat %}
+ <li>
+ <a href="{{ page.url | remove_first:'/' }}">{{ page.title }}</a>
+ </li>
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+ {% endfor %}
+ </ul>
+ </div>
+ {% endfor %}
+ </div>{% endstrip %}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/infotip.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/infotip.html
new file mode 100644
index 0000000..c2374ab
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/infotip.html
@@ -0,0 +1,48 @@
+---
+categories: [Widgets]
+layout: page
+title: Info Tip
+resource: true
+---
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-1">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-1">
+ <ul class="nav navbar-nav navbar-utility">
+ <li class="dropdown open">
+ <a href="#" data-toggle="dropdown">
+ <span class="pficon pficon-info"></span>
+ Messages: <strong>2</strong>
+ </a>
+ <div class="dropdown-menu infotip bottom-right">
+ <div class="arrow"></div>
+ <ul class="list-group">
+ <li class="list-group-item">
+ <span class="i pficon pficon-info"></span>
+ Added Datasources TestDS
+ </li>
+ <li class="list-group-item">
+ <span class="i pficon pficon-info"></span>
+ Modified Datasources ExampleDS
+ </li>
+ </ul>
+ <div class="footer"><a href="#">Clear Messages</a></div>
+ </div>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/labels.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/labels.html
new file mode 100644
index 0000000..65289dc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/labels.html
@@ -0,0 +1,68 @@
+---
+categories: [Widgets]
+layout: page
+title: Labels
+resource: true
+---
+ <h1>Example heading <span class="label label-default">New</span></h1>
+ <h2>Example heading <span class="label label-default">New</span></h2>
+ <h3>Example heading <span class="label label-default">New</span></h3>
+ <h4>Example heading <span class="label label-default">New</span></h4>
+ <h5>Example heading <span class="label label-default">New</span></h5>
+ <h6>Example heading <span class="label label-default">New</span></h6>
+ <hr>
+ <span class="label label-default">Default</span>
+ <span class="label label-primary">Primary</span>
+ <span class="label label-success">Success</span>
+ <span class="label label-info">Info</span>
+ <span class="label label-warning">Warning</span>
+ <span class="label label-danger">Danger</span>
+ <hr>
+ <table class="table table-striped table-bordered">
+ <thead>
+ <tr>
+ <th>Label</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Username</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><span class="label label-default">Default</span></td>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <td><span class="label label-primary">Primary</span></td>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <td><span class="label label-success">Success</span></td>
+ <td>Larry</td>
+ <td>the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ <tr>
+ <td><span class="label label-info">Info</span></td>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <td><span class="label label-warning">Warning</span></td>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <td><span class="label label-danger">Danger</span></td>
+ <td>Larry</td>
+ <td>the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ </tbody>
+ </table>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/list-group.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/list-group.html
new file mode 100644
index 0000000..227b9d8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/list-group.html
@@ -0,0 +1,71 @@
+---
+categories: [Widgets]
+layout: page
+title: List Group
+resource: true
+---
+ <h2>Basic example</h2>
+ <ul class="list-group">
+ <li class="list-group-item">Cras justo odio</li>
+ <li class="list-group-item">Dapibus ac facilisis in</li>
+ <li class="list-group-item">Morbi leo risus</li>
+ <li class="list-group-item">Porta ac consectetur ac</li>
+ <li class="list-group-item">Vestibulum at eros</li>
+ </ul>
+ <hr>
+ <h2>Badges</h2>
+ <ul class="list-group">
+ <li class="list-group-item">
+ <span class="badge">14</span>
+ Cras justo odio
+ </li>
+ <li class="list-group-item">
+ <span class="badge">2</span>
+ Dapibus ac facilisis in
+ </li>
+ <li class="list-group-item">
+ <span class="badge">1</span>
+ Morbi leo risus
+ </li>
+ </ul>
+ <hr>
+ <h2>Linked items</h2>
+ <div class="list-group">
+ <a href="#" class="list-group-item active">
+ Cras justo odio
+ </a>
+ <a href="#" class="list-group-item">Dapibus ac facilisis in</a>
+ <a href="#" class="list-group-item">Morbi leo risus</a>
+ <a href="#" class="list-group-item">Porta ac consectetur ac</a>
+ <a href="#" class="list-group-item">Vestibulum at eros</a>
+ </div>
+ <hr>
+ <h2>Contextual classes</h2>
+ <ul class="list-group">
+ <li class="list-group-item list-group-item-success">Dapibus ac facilisis in</li>
+ <li class="list-group-item list-group-item-info">Cras sit amet nibh libero</li>
+ <li class="list-group-item list-group-item-warning">Porta ac consectetur ac</li>
+ <li class="list-group-item list-group-item-danger">Vestibulum at eros</li>
+ </ul>
+ <div class="list-group">
+ <a href="#" class="list-group-item list-group-item-success">Dapibus ac facilisis in</a>
+ <a href="#" class="list-group-item list-group-item-info">Cras sit amet nibh libero</a>
+ <a href="#" class="list-group-item list-group-item-warning">Porta ac consectetur ac</a>
+ <a href="#" class="list-group-item list-group-item-danger">Vestibulum at eros</a>
+ </div>
+ <hr>
+ <h2>Custom content</h2>
+ <div class="list-group">
+ <a href="#" class="list-group-item active">
+ <h4 class="list-group-item-heading">List group item heading</h4>
+ <p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
+ </a>
+ <a href="#" class="list-group-item">
+ <h4 class="list-group-item-heading">List group item heading</h4>
+ <p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
+ </a>
+ <a href="#" class="list-group-item">
+ <h4 class="list-group-item-heading">List group item heading</h4>
+ <p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
+ </a>
+ </div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/login.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/login.html
new file mode 100644
index 0000000..4283335
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/login.html
@@ -0,0 +1,52 @@
+---
+categories: [Layouts]
+css-extra: false
+layout: login
+title: Login
+resource: true
+---
+ <span id="badge">
+ <img src="../dist/img/logo.svg" alt="{{ site.company }} logo" />
+ </span>
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-12">
+ <div id="brand">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}">
+ </div><!--/#brand-->
+ </div><!--/.col-*-->
+ <div class="col-sm-7 col-md-6 col-lg-5 login">
+ <form class="form-horizontal" role="form">
+ <div class="form-group">
+ <label for="inputUsername" class="col-sm-2 col-md-2 control-label">Username</label>
+ <div class="col-sm-10 col-md-10">
+ <input type="text" class="form-control" id="inputUsername" placeholder="" tabindex="1">
+ </div>
+ </div>
+ <div class="form-group">
+ <label for="inputPassword" class="col-sm-2 col-md-2 control-label">Password</label>
+ <div class="col-sm-10 col-md-10">
+ <input type="password" class="form-control" id="inputPassword" placeholder="" tabindex="2">
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-xs-8 col-sm-offset-2 col-sm-6 col-md-offset-2 col-md-6">
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" tabindex="3"> Remember username
+ </label>
+ </div>
+ <span class="help-block"> Forgot <a href="#" tabindex="5">username</a> or <a href="#" tabindex="6">password</a>?</span>
+ </div>
+ <div class="col-xs-4 col-sm-4 col-md-4 submit">
+ <button type="submit" class="btn btn-primary btn-lg" tabindex="4">Log In</button>
+ </div>
+ </div>
+ </form>
+ </div><!--/.col-*-->
+ <div class="col-sm-5 col-md-6 col-lg-7 details">
+ <p><strong>Welcome to {{ site.title }}!</strong>
+ This is placeholder text, only. Use this area to place any information or introductory message about your application that may be relevant for users. For example, you might include news or information about the latest release of your product here—such as a version number.</p>
+ </div><!--/.col-*-->
+ </div><!--/.row-->
+ </div><!--/.container-->
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/modals.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/modals.html
new file mode 100644
index 0000000..8304d57
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/modals.html
@@ -0,0 +1,43 @@
+---
+categories: [Widgets]
+layout: page
+title: Modals
+resource: true
+---
+ <button class="btn btn-default" data-toggle="modal" data-target="#myModal">Launch demo modal</button>
+ <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
+ <span class="pficon pficon-close"></span>
+ </button>
+ <h4 class="modal-title" id="myModalLabel">Modal Title</h4>
+ </div>
+ <div class="modal-body">
+ <form class="form-horizontal">
+ <div class="form-group">
+ <label class="col-sm-3 control-label" for="textInput">Field One</label>
+ <div class="col-sm-9">
+ <input type="text" id="textInput" class="form-control"></div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label" for="textInput2">Field Two</label>
+ <div class="col-sm-9">
+ <input type="text" id="textInput2" class="form-control"></div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-3 control-label" for="textInput3">Field Three</label>
+ <div class="col-sm-9">
+ <input type="text" id="textInput3" class="form-control">
+ </div>
+ </div>
+ </form>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+ <button type="button" class="btn btn-primary">Save</button>
+ </div>
+ </div>
+ </div>
+ </div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/navbar.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/navbar.html
new file mode 100644
index 0000000..4a4f521
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/navbar.html
@@ -0,0 +1,4640 @@
+---
+alert-message: ', <a href="http://getbootstrap.com" class="alert-link">http://getbootstrap.com</a>, and <a href="http://silviomoreto.github.io/bootstrap-select/">http://silviomoreto.github.io/bootstrap-select/</a>.'
+categories: [Widgets]
+layout: page
+title: Navbar
+resource: true
+url-js-extra: '!URL_COMPONENTS!bootstrap-select/dist/js/bootstrap-select.min.js'
+---
+ <h2>Primary Navigation Bar</h2>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-1">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-1">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-1">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-1">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <h2>Context Selector</h2>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-3">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-3">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-3">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-3">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <h2>Multi-level Menu</h2>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-5">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-5">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Dropup Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu dropup">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Pull-left Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">No Dropdown</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-5">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-5">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Dropup Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu dropup">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Pull-left Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">No Dropdown</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-5">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-5">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu active">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li class="active">
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Dropup Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu dropup">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Pull-left Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">No Dropdown</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <h2>
+ Multi-level Menu and Context Selector
+ </h2>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-8">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-8">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Dropup Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu dropup">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Pull-left Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">No Dropdown</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-8">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-8">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Dropup Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu dropup">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Pull-left Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">No Dropdown</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-8">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-8">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu active">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li class="active">
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Dropup Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu dropup">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ Dropdown with Pull-left Submenu
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">No Dropdown</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <h2>
+ Persistent Secondary and Tertiary Menu
+ </h2>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-11">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-11">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="navbar-collapse-11">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-11">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-11">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-11">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-11">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-11">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-11">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-11">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <h2>
+ Persistent Secondary and Tertiary Menu and Context Selector
+ </h2>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-16">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-16">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-16">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-16">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-16">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-16">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-16">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-16">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-16">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-16">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <h2>
+ Persistent Secondary and Tertiary with Submenu Menu and Context Selector
+ </h2>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-21">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-21">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-21">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-21">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu dropup">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-21">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-21">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu dropup">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-21">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-21">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu dropup">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ <hr>
+ <nav class="navbar navbar-default navbar-pf" role="navigation">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-21">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">
+ <img src="../dist/img/brand.svg" alt="{{ site.title-product }}" />
+ </a>
+ </div>
+ <div class="collapse navbar-collapse navbar-collapse-21">
+ <ul class="nav navbar-nav navbar-utility">
+ <li>
+ <a href="#">Status</a>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="pficon pficon-user"></span>
+ Brian Johnson
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Nav header</li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-primary persistent-secondary">
+ <li class="context context-bootstrap-select">
+ <select class="selectpicker" data-live-search="true">
+ <optgroup label="Context Label">
+ <option>First Option</option>
+ <option>Another Option</option>
+ <option>And Another</option>
+ <option>Fourth Option That Is a Lot Longer And Will Be Too Long At Small Resolutions</option>
+ <option data-divider="true"></option>
+ <option data-subtext="supplemental data">Fifth Option</option>
+ <option disabled>Disabled Option</option>
+ <option data-subtext="end">Final Option</option>
+ </optgroup>
+ </select>
+ </li>
+ <li>
+ <a href="#">First Link</a>
+ </li>
+ <li class="active">
+ <a href="#">Another Link</a>
+ <ul class="nav navbar-nav navbar-persistent">
+ <li class="dropdown-submenu">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Link</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Another Link</a>
+ </li>
+ <li class="dropdown-submenu active">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Something Else Here</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu dropup active">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li class="active">
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">Remembering to Keep</a>
+ </li>
+ <li>
+ <a href="#">It Between Five and Seven</a>
+ </li>
+ <li class="dropdown-submenu">
+ <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li>
+ <a href="#">Remembering to keep</a>
+ </li>
+ <li>
+ <a href="#">It between five and seven</a>
+ </li>
+ <li class="dropdown-submenu pull-left">
+ <a tabindex="-1" href="#">More options</a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="#">Link</a>
+ </li>
+ <li>
+ <a href="#">Another link</a>
+ </li>
+ <li>
+ <a href="#">Something else here</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">Separated link</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">One more separated link</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#">And Another</a>
+ </li>
+ <li>
+ <a href="#">As a General Rule</a>
+ </li>
+ <li>
+ <a href="#">Five to Seven Links</a>
+ </li>
+ <li>
+ <a href="#">Is Good</a>
+ </li>
+ </ul>
+ </div>
+ </nav>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/pagination.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/pagination.html
new file mode 100644
index 0000000..c10e09c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/pagination.html
@@ -0,0 +1,243 @@
+---
+categories: [Widgets]
+layout: page
+title: Pagination
+resource: true
+---
+ <h2>Pager - default size</h2>
+ <ul class="pager">
+ <li class="previous">
+ <a href="#">
+ <span class="i fa fa-angle-left"></span>
+ Previous
+ </a>
+ </li>
+ <li class="next">
+ <a href="#">
+ Next
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
+ <ul class="pager">
+ <li class="previous disabled">
+ <a href="#">
+ <span class="i fa fa-angle-left"></span>
+ Previous
+ </a>
+ </li>
+ <li class="next disabled">
+ <a href="#">
+ Next
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
+ <hr>
+ <h2>Pager - mini size</h2>
+ <ul class="pager pager-sm">
+ <li class="previous">
+ <a href="#">
+ <span class="i fa fa-angle-left"></span>
+ Previous
+ </a>
+ </li>
+ <li class="next">
+ <a href="#">
+ Next
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
+ <ul class="pager pager-sm">
+ <li class="previous disabled">
+ <a href="#">
+ <span class="i fa fa-angle-left"></span>
+ Previous
+ </a>
+ </li>
+ <li class="next disabled">
+ <a href="#">
+ Next
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
+ <hr>
+ <h2>Pagination - default size</h2>
+ <ul class="pagination">
+ <li>
+ <a href="#">
+ <span class="i fa fa-angle-left"></span>
+ </a>
+ </li>
+ <li>
+ <a href="#">1</a>
+ </li>
+ <li>
+ <a href="#">2</a>
+ </li>
+ <li>
+ <a href="#">3</a>
+ </li>
+ <li>
+ <a href="#">4</a>
+ </li>
+ <li>
+ <a href="#">5</a>
+ </li>
+ <li>
+ <a href="#">
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
+ <ul class="pagination">
+ <li class="disabled">
+ <span>
+ <span class="i fa fa-angle-left"></span>
+ </span>
+ </li>
+ <li class="active">
+ <span>
+ 1
+ <span class="sr-only">(current)</span>
+ </span>
+ </li>
+ <li>
+ <a href="#">2</a>
+ </li>
+ <li>
+ <a href="#">3</a>
+ </li>
+ <li>
+ <a href="#">4</a>
+ </li>
+ <li>
+ <a href="#">5</a>
+ </li>
+ <li>
+ <a href="#">
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
+ <ul class="pagination">
+ <li class="disabled">
+ <span>
+ <span class="i fa fa-angle-left"></span>
+ </span>
+ </li>
+ <li class="disabled">
+ <span>
+ 1
+ <span class="sr-only">(current)</span>
+ </span>
+ </li>
+ <li class="disabled">
+ <a href="#">2</a>
+ </li>
+ <li class="disabled">
+ <a href="#">3</a>
+ </li>
+ <li class="disabled">
+ <a href="#">4</a>
+ </li>
+ <li class="disabled">
+ <a href="#">5</a>
+ </li>
+ <li class="disabled">
+ <a href="#">
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
+ <hr>
+ <h2>Pagination - mini size</h2>
+ <ul class="pagination pagination-sm">
+ <li>
+ <a href="#">
+ <span class="i fa fa-angle-left"></span>
+ </a>
+ </li>
+ <li>
+ <a href="#">1</a>
+ </li>
+ <li>
+ <a href="#">2</a>
+ </li>
+ <li>
+ <a href="#">3</a>
+ </li>
+ <li>
+ <a href="#">4</a>
+ </li>
+ <li>
+ <a href="#">5</a>
+ </li>
+ <li>
+ <a href="#">
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
+ <ul class="pagination pagination-sm">
+ <li class="disabled">
+ <span>
+ <span class="i fa fa-angle-left"></span>
+ </span>
+ </li>
+ <li class="active">
+ <span>
+ 1
+ <span class="sr-only">(current)</span>
+ </span>
+ </li>
+ <li>
+ <a href="#">2</a>
+ </li>
+ <li>
+ <a href="#">3</a>
+ </li>
+ <li>
+ <a href="#">4</a>
+ </li>
+ <li>
+ <a href="#">5</a>
+ </li>
+ <li>
+ <a href="#">
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
+ <ul class="pagination pagination-sm">
+ <li class="disabled">
+ <span>
+ <span class="i fa fa-angle-left"></span>
+ </span>
+ </li>
+ <li class="disabled">
+ <span>
+ 1
+ <span class="sr-only">(current)</span>
+ </span>
+ </li>
+ <li class="disabled">
+ <a href="#">2</a>
+ </li>
+ <li class="disabled">
+ <a href="#">3</a>
+ </li>
+ <li class="disabled">
+ <a href="#">4</a>
+ </li>
+ <li class="disabled">
+ <a href="#">5</a>
+ </li>
+ <li class="disabled">
+ <a href="#">
+ <span class="i fa fa-angle-right"></span>
+ </a>
+ </li>
+ </ul>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/panels.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/panels.html
new file mode 100644
index 0000000..381ee99
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/panels.html
@@ -0,0 +1,73 @@
+---
+categories: [Widgets]
+layout: page
+title: Panels
+resource: true
+---
+ <div class="panel panel-default">
+ <div class="panel-heading">Panel heading without title</div>
+ <div class="panel-body">
+ Panel content
+ </div>
+ </div>
+ <hr>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title">Panel title</h3>
+ </div>
+ <div class="panel-body">
+ Panel content
+ </div>
+ </div>
+ <hr>
+ <div class="panel panel-default">
+ <div class="panel-body">
+ Panel content
+ </div>
+ <div class="panel-footer">Panel footer</div>
+ </div>
+ <hr>
+ <div class="panel panel-primary">
+ <div class="panel-heading">
+ <h3 class="panel-title">Panel title</h3>
+ </div>
+ <div class="panel-body">
+ Panel content
+ </div>
+ </div>
+ <hr>
+ <div class="panel panel-success">
+ <div class="panel-heading">
+ <h3 class="panel-title">Panel title</h3>
+ </div>
+ <div class="panel-body">
+ Panel content
+ </div>
+ </div>
+ <hr>
+ <div class="panel panel-info">
+ <div class="panel-heading">
+ <h3 class="panel-title">Panel title</h3>
+ </div>
+ <div class="panel-body">
+ Panel content
+ </div>
+ </div>
+ <hr>
+ <div class="panel panel-warning">
+ <div class="panel-heading">
+ <h3 class="panel-title">Panel title</h3>
+ </div>
+ <div class="panel-body">
+ Panel content
+ </div>
+ </div>
+ <hr>
+ <div class="panel panel-danger">
+ <div class="panel-heading">
+ <h3 class="panel-title">Panel title</h3>
+ </div>
+ <div class="panel-body">
+ Panel content
+ </div>
+ </div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/popovers.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/popovers.html
new file mode 100644
index 0000000..bde823d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/popovers.html
@@ -0,0 +1,73 @@
+---
+categories: [Widgets]
+layout: page
+title: Popovers
+resource: true
+---
+ <p>Note: To display the close (X) icon in popovers, add data attribute <strong>data-close="true"</strong> to the trigger button element.</p>
+ <div class="bs-example" style="margin-top: 40px;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-original-title="Popover on right with title and close button" data-close="true">Popover on right with title and close button</a>
+ </div>
+ <div class="bs-example" style="margin-top: 40px;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Close icon with no Title text. This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-close="true">Popover on right with close button</a>
+ </div>
+ <div class="bs-example" style="margin: 40px 0;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Popover with no Close icon.<br>This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-original-title="Popover on right with title">Popover on right with title</a>
+ </div>
+ <div class="bs-example" style="margin: 40px 0;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Empty Title example.<br>This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy.">Popover on right</a>
+ </div>
+ <hr>
+ <div class="bs-example" style="margin-top: 40px;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-original-title="Popover on left with title and close button" data-close="true" data-placement="left">Popover on left with title and close button</a>
+ </div>
+ <div class="bs-example" style="margin-top: 40px;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Close icon with no Title text. This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-close="true" data-placement="left">Popover on left with close button</a>
+ </div>
+ <div class="bs-example" style="margin: 40px 0;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Popover with no Close icon.<br>This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-original-title="Popover on left with title" data-placement="left">Popover on left with title</a>
+ </div>
+ <div class="bs-example" style="margin: 40px 0;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Empty Title example.<br>This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-placement="left">Popover on left</a>
+ </div>
+ <hr>
+ <div class="bs-example" style="margin-top: 40px;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-original-title="Popover on left with title and close button" data-close="true" data-placement="top">Popover on top with title and close button</a>
+ </div>
+ <div class="bs-example" style="margin-top: 40px;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Close icon with no Title text. This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-close="true" data-placement="top">Popover on top with close button</a>
+ </div>
+ <div class="bs-example" style="margin: 40px 0;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Popover with no Close icon.<br>This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-original-title="Popover on top with title" data-placement="top">Popover on top with title</a>
+ </div>
+ <div class="bs-example" style="margin: 40px 0;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Empty Title example.<br>This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-placement="top">Popover on top</a>
+ </div>
+ <hr>
+ <div class="bs-example" style="margin-top: 40px;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-original-title="Popover on left with title and close button" data-close="true" data-placement="bottom">Popover on bottom with title and close button</a>
+ </div>
+ <div class="bs-example" style="margin-top: 40px;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Close icon with no Title text. This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-close="true" data-placement="bottom">Popover on bottom with close button</a>
+ </div>
+ <div class="bs-example" style="margin: 40px 0;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Popover with no Close icon.<br>This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-original-title="Popover on bottom with title" data-placement="bottom">Popover on bottom with title</a>
+ </div>
+ <div class="bs-example" style="margin: 40px 0;">
+ <a href="#" class="btn btn-default" data-toggle="popover" data-html="true" title="" data-content="Empty Title example.<br>This is more information about a smartproxy. This is more information about a smartproxy. This is more information about a smartproxy." data-placement="bottom">Popover on bottom</a>
+ </div>
+ <hr>
+ <form class="form-horizontal">
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="textInput">Default <a tabindex="0" role="button" data-toggle="popover" data-trigger="focus" data-html="true" title="" data-content="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et <a href='#'>dolore magna aliqua</a>." data-placement="top"><span class="fa fa-info-circle"></span></a></label>
+ <div class="col-sm-10">
+ <input type="text" id="textInput" class="form-control">
+ </div>
+ </div>
+ </form>
+ <script>
+ // Initialize Popovers
+ $(document).ready(function() {
+ $('[data-toggle=popover]').popovers()
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/progress-bars.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/progress-bars.html
new file mode 100644
index 0000000..462c152
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/progress-bars.html
@@ -0,0 +1,237 @@
+---
+categories: [Widgets]
+layout: page
+title: Progress Bars
+resource: true
+---
+ <h2>Basic Example</h2>
+ <div class="progress">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
+ <span class="sr-only">60% complete</span>
+ </div>
+ </div>
+ <h2>With Label</h2>
+ <div class="progress">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
+ <span>60% complete</span>
+ </div>
+ </div>
+ <h2>Contextual Alternatives</h2>
+ <div class="progress">
+ <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%">
+ <span class="sr-only">40% Complete (success)</span>
+ </div>
+ </div>
+ <div class="progress">
+ <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%">
+ <span class="sr-only">20% Complete</span>
+ </div>
+ </div>
+ <div class="progress">
+ <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%">
+ <span class="sr-only">60% Complete (warning)</span>
+ </div>
+ </div>
+ <div class="progress">
+ <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%">
+ <span class="sr-only">80% Complete</span>
+ </div>
+ </div>
+ <h2>Striped</h2>
+ <div class="progress progress-striped">
+ <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%">
+ <span class="sr-only">40% Complete (success)</span>
+ </div>
+ </div>
+ <div class="progress progress-striped">
+ <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%">
+ <span class="sr-only">20% Complete</span>
+ </div>
+ </div>
+ <div class="progress progress-striped">
+ <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%">
+ <span class="sr-only">60% Complete (warning)</span>
+ </div>
+ </div>
+ <div class="progress progress-striped">
+ <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%">
+ <span class="sr-only">80% Complete (danger)</span>
+ </div>
+ </div>
+ <h2>Animated</h2>
+ <div class="progress progress-striped active">
+ <div class="progress-bar" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 45%">
+ <span class="sr-only">45% Complete</span>
+ </div>
+ </div>
+ <h2>Stacked</h2>
+ <div class="progress">
+ <div class="progress-bar progress-bar-success" style="width: 35%">
+ <span class="sr-only">35% Complete (success)</span>
+ </div>
+ <div class="progress-bar progress-bar-warning" style="width: 20%">
+ <span class="sr-only">20% Complete (warning)</span>
+ </div>
+ <div class="progress-bar progress-bar-danger" style="width: 10%">
+ <span class="sr-only">10% Complete (danger)</span>
+ </div>
+ </div>
+ <h2>PatternFly Examples</h2>
+ <h3>Sizes</h3>
+ <h4>Small</h4>
+ <div class="progress progress-sm">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
+ <span class="sr-only">60% complete</span>
+ </div>
+ </div>
+ <div class="progress progress-sm progress-striped active">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
+ <span class="sr-only">60% complete</span>
+ </div>
+ </div>
+ <h4>Extra Small</h4>
+ <div class="progress progress-xs">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
+ <span class="sr-only">60% complete</span>
+ </div>
+ </div>
+ <div class="progress progress-xs progress-striped active">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
+ <span class="sr-only">60% complete</span>
+ </div>
+ </div>
+ <h3>With Label</h3>
+ <h4>Left</h4>
+ <div class="progress progress-label-left">
+ <div class="progress-bar" role="progressbar" aria-valuenow="5" aria-valuemin="0" aria-valuemax="100" style="width: 5%;">
+ <span>5%</span>
+ </div>
+ </div>
+ <div class="progress progress-label-left">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
+ <span>60%</span>
+ </div>
+ </div>
+ <div class="progress progress-label-left">
+ <div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%;">
+ <span>100%</span>
+ </div>
+ </div>
+ <div class="progress progress-sm progress-label-left">
+ <div class="progress-bar" role="progressbar" aria-valuenow="5" aria-valuemin="0" aria-valuemax="100" style="width: 5%;">
+ <span>5%</span>
+ </div>
+ </div>
+ <div class="progress progress-sm progress-label-left">
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
+ <span>60%</span>
+ </div>
+ </div>
+ <div class="progress progress-sm progress-label-left">
+ <div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%;">
+ <span>100%</span>
+ </div>
+ </div>
+ <h4>Top Left and Top Right</h4>
+ <div class="progress-description">
+ Network Capacity
+ </div>
+ <div class="progress progress-label-top-right">
+ <div class="progress-bar" role="progressbar" aria-valuenow="5" aria-valuemin="0" aria-valuemax="100" style="width: 5%;">
+ <span>5%</span>
+ </div>
+ </div>
+ <div class="progress-description">
+ <div class="spinner spinner-xs spinner-inline"></div> <strong>Downloading:</strong> Product Repositories
+ </div>
+ <div class="progress progress-label-top-right">
+ <div class="progress-bar" role="progressbar" aria-valuenow="42.7" aria-valuemin="0" aria-valuemax="100" style="width: 42.7%;">
+ <span>42.7% (35 of 82MB)</span>
+ </div>
+ </div>
+ <div class="progress-description">
+ <span class="count">46,512</span> <strong>Downloading:</strong> Product Repositories
+ </div>
+ <div class="progress progress-label-top-right">
+ <div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%;">
+ <span>100%</span>
+ </div>
+ </div>
+
+ <div class="progress-description">
+ <span class="pficon pficon-ok" data-toggle="tooltip" data-placement="top" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit."></span> <strong>Network Activity:</strong> 10.10.121.02
+ </div>
+ <div class="progress progress-label-top-right">
+ <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%;">
+ <span>100%</span>
+ </div>
+ </div>
+ <div class="progress-description">
+ <span class="pficon pficon-warning-triangle-o"></span>
+ <strong>Network Activity:</strong> 10.10.121.02
+ </div>
+ <div class="progress progress-label-top-right">
+ <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 75%;">
+ <span>75%</span>
+ </div>
+ </div>
+ <div class="progress-description">
+ <span class="pficon pficon-error-circle-o"></span>
+ <strong>Network Activity:</strong> 10.10.121.02
+ </div>
+ <div class="progress progress-label-top-right">
+ <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100" style="width: 10%;">
+ <span>10%</span>
+ </div>
+ </div>
+ <h3>In Table Cell</h3>
+ <table class="table table-bordered table-striped">
+ <thead>
+ <tr>
+ <th>Column heading</th>
+ <th>Column heading</th>
+ <th>Column heading</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Column content</td>
+ <td>
+ <div class="progress progress-sm progress-label-left progress-striped">
+ <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="5" aria-valuemin="0" aria-valuemax="100" style="width: 5%;">
+ <span>5%</span>
+ </div>
+ </div>
+ </td>
+ <td>Column content</td>
+ </tr>
+ <tr>
+ <td>Column content</td>
+ <td>
+ <div class="progress progress-sm progress-label-left progress-striped">
+ <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
+ <span>60%</span>
+ </div>
+ </div>
+ </td>
+ <td>Column content</td>
+ </tr>
+ <tr>
+ <td>Column content</td>
+ <td>
+ <div class="progress progress-sm progress-label-left progress-striped">
+ <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%;">
+ <span>100%</span>
+ </div>
+ </div>
+ </td>
+ <td>Column content</td>
+ </tr>
+ </tbody>
+ </table>
+ <script>
+ // Initialize Tooltip
+ jQuery(document).ready(function() {
+ jQuery('[data-toggle="tooltip"]').tooltip();
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/search.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/search.html
new file mode 100644
index 0000000..2aaf802
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/search.html
@@ -0,0 +1,131 @@
+---
+categories: [Widgets]
+layout: page
+title: Search
+resource: true
+---
+ <form role="form" class="search-pf has-button">
+ <div class="form-group has-clear">
+ <div class="search-pf-input-group">
+ <label for="search1" class="sr-only">Search</label>
+ <input id="search1" type="search" class="form-control" placeholder="Search">
+ <button type="button" class="clear" aria-hidden="true"><span class="pficon pficon-close"></span></button>
+ </div>
+ </div>
+ <div class="form-group">
+ <button class="btn btn-default" type="submit"><span class="fa fa-search"></span></button>
+ </div>
+ </form>
+ <h2>Pre-populated</h2>
+ <form role="form" class="search-pf has-button">
+ <div class="form-group has-clear">
+ <div class="search-pf-input-group">
+ <label for="search1" class="sr-only">Search</label>
+ <input id="search1" type="search" class="form-control" placeholder="Search" value="Search term">
+ <button type="button" class="clear" aria-hidden="true"><span class="pficon pficon-close"></span></button>
+ </div>
+ </div>
+ <div class="form-group">
+ <button class="btn btn-default" type="submit"><span class="fa fa-search"></span></button>
+ </div>
+ </form>
+ <h2>Without Button</h2>
+ <form role="form" class="search-pf">
+ <div class="form-group has-clear">
+ <div class="search-pf-input-group">
+ <label for="search2" class="sr-only">Search</label>
+ <input id="search2" type="search" class="form-control" placeholder="Search">
+ <button type="button" class="clear" aria-hidden="true"><span class="pficon pficon-close"></span></button>
+ </div>
+ </div>
+ </form>
+ <h2>Without Clear</h2>
+ <form role="form" class="search-pf has-button">
+ <div class="form-group">
+ <div class="search-pf-input-group">
+ <label for="search3" class="sr-only">Search</label>
+ <input id="search3" type="search" class="form-control" placeholder="Search">
+ </div>
+ </div>
+ <div class="form-group">
+ <button class="btn btn-default" type="submit"><span class="fa fa-search"></span></button>
+ </div>
+ </form>
+ <h2>Sizes</h2>
+ <form role="form" class="search-pf has-button">
+ <div class="form-group has-clear">
+ <div class="search-pf-input-group">
+ <label for="search-lg" class="sr-only">Search</label>
+ <input id="search-lg" type="search" class="form-control input-lg" placeholder="Search">
+ <button type="button" class="clear" aria-hidden="true"><span class="pficon pficon-close"></span></button>
+ </div>
+ </div>
+ <div class="form-group">
+ <button class="btn btn-default btn-lg" type="submit"><span class="fa fa-search"></span></button>
+ </div>
+ </form>
+ <br />
+ <form role="form" class="search-pf has-button">
+ <div class="form-group has-clear">
+ <div class="search-pf-input-group">
+ <label for="search4" class="sr-only">Search</label>
+ <input id="search4" type="search" class="form-control" placeholder="Search">
+ <button type="button" class="clear" aria-hidden="true"><span class="pficon pficon-close"></span></button>
+ </div>
+ </div>
+ <div class="form-group">
+ <button class="btn btn-default" type="submit"><span class="fa fa-search"></span></button>
+ </div>
+ </form>
+ <br />
+ <form role="form" class="search-pf has-button">
+ <div class="form-group has-clear">
+ <div class="search-pf-input-group">
+ <label for="search-sm" class="sr-only">Search</label>
+ <input id="search-sm" type="search" class="form-control input-sm" placeholder="Search">
+ <button type="button" class="clear" aria-hidden="true"><span class="pficon pficon-close"></span></button>
+ </div>
+ </div>
+ <div class="form-group">
+ <button class="btn btn-default btn-sm" type="submit"><span class="fa fa-search"></span></button>
+ </div>
+ </form>
+ <h2>Within the grid</h2>
+ <div class="row">
+ <div class="col-md-6">
+ <form role="form" class="search-pf has-button">
+ <div class="form-group has-clear">
+ <div class="search-pf-input-group">
+ <label for="search5" class="sr-only">Search</label>
+ <input id="search5" type="search" class="form-control" placeholder="Search">
+ <button type="button" class="clear" aria-hidden="true"><span class="pficon pficon-close"></span></button>
+ </div>
+ </div>
+ <div class="form-group">
+ <button class="btn btn-default" type="submit"><span class="fa fa-search"></span></button>
+ </div>
+ </form>
+ </div>
+ </div>
+ <script>
+ (function($) {
+ $(document).ready(function() {
+ // Hide the clear button if the search input is empty
+ $(".search-pf .has-clear .clear").each(function() {
+ if (!$(this).prev('.form-control').val()) {
+ $(this).hide();
+ }
+ });
+ // Show the clear button upon entering text in the search input
+ $(".search-pf .has-clear .form-control").keyup(function () {
+ var t = $(this);
+ t.next('button').toggle(Boolean(t.val()));
+ });
+ // Upon clicking the clear button, empty the entered text and hide the clear button
+ $(".search-pf .has-clear .clear").click(function () {
+ $(this).prev('.form-control').val('').focus();
+ $(this).hide();
+ });
+ });
+ })(jQuery);
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/spinner.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/spinner.html
new file mode 100644
index 0000000..d6146bc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/spinner.html
@@ -0,0 +1,32 @@
+---
+categories: [Widgets]
+layout: page
+title: Spinner
+resource: true
+---
+ <div class="spinner"></div>
+ <h2>Sizes</h2>
+ <div class="spinner spinner-lg"></div>
+ <div class="spinner"></div>
+ <div class="spinner spinner-sm"></div>
+ <div class="spinner spinner-xs"></div>
+ <h2>Inline</h2>
+ <h1>
+ <div class="spinner spinner-lg spinner-inline"></div>
+ Inside an <h1>
+ </h1>
+ <h2>
+ <div class="spinner spinner-inline"></div>
+ Inside an <h2>
+ </h2>
+ <h3>
+ <div class="spinner spinner-sm spinner-inline"></div>
+ Inside an <h3>
+ </h3>
+ <p>
+ <div class="spinner spinner-xs spinner-inline"></div>
+ Inside a <p>
+ </p>
+ <p class="text-info">
+ <strong>Note:</strong> IE9 requires a conditional class on <html> in order to display an animated gif fallback as they don't support CSS animation. View source on this page and see lines 2-6.
+ </p>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tab.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tab.html
new file mode 100644
index 0000000..e2873b6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tab.html
@@ -0,0 +1,72 @@
+---
+categories: [Layouts]
+css-extra: false
+layout: layout
+title: Tab
+resource: true
+url-js-extra: '!URL_COMPONENTS!datatables/media/js/jquery.dataTables.js'
+weight: 5
+---
+{% include layouts-navbar-primary.html %}
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
+ <ol class="breadcrumb">
+ <li><a href="#">Home</a></li>
+ <li>{{ page.title }}</li>
+ </ol>
+ <h1>{{ page.title }}</h1>
+ <!--Note: the markup semantics used to create "nested" tabs are sub-optimal in order to easily achieve a responsive layout.-->
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#">Tab One</a></li>
+ <li><a href="#">Tab Two</a></li>
+ <li><a href="#">Tab Three</a></li>
+ <li><a href="#">Tab Four</a></li>
+ <li><a href="#">Tab Five</a></li>
+ <li><a href="#">Tab Six</a></li>
+ <li><a href="#">Tab Seven</a></li>
+ </ul>
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li class="active"><a href="#">Secondary Tab One</a></li>
+ <li><a href="#">Secondary Tab Two</a></li>
+ <li><a href="#">Secondary Tab Three</a></li>
+ <li><a href="#">Secondary Tab Four</a></li>
+ <li><a href="#">Secondary Tab Five</a></li>
+ </ul>
+{% include datatable.html %}
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eget eros tincidunt, semper ante nec, dapibus ante.</p>
+ </div><!-- /col -->
+ <div class="col-sm-3 col-md-2 col-sm-pull-9 col-md-pull-10 sidebar-pf sidebar-pf-left">
+ <div class="nav-category">
+ <h2>First Category</h2>
+ <ul class="nav nav-pills nav-stacked">
+ <li class="active"><a href="#"><i class="fa fa-desktop"></i>System Information</a></li>
+ <li><a href="#"><i class="fa fa-cog"></i>System Services</a></li>
+ <li><a href="#"><i class="fa fa-file-text-o"></i>Journal</a></li>
+ <li><a href="#"><i class="fa fa-cloud"></i>Storage</a></li>
+ </ul>
+ </div>
+ <div class="nav-category">
+ <h2>Second Category</h2>
+ <ul class="nav nav-pills nav-stacked">
+ <li><a href="#">User Accounts</a></li>
+ <li><a href="#">Containers</a></li>
+ <li><a href="#">Shutdown and Reboot</a></li>
+ </ul>
+ </div>
+ </div><!-- /col -->
+ </div><!-- /row -->
+ </div><!-- /container -->
+ <script>
+ // Initialize Datatables
+ $(document).ready( function() {
+ $('.datatable').dataTable({
+ "fnDrawCallback": function( oSettings ) {
+ // if .sidebar-pf exists, call sidebar() after the data table is drawn
+ if ($('.sidebar-pf').length > 0) {
+ $(document).sidebar();
+ }
+ }
+ });
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tables.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tables.html
new file mode 100644
index 0000000..6dafb2c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tables.html
@@ -0,0 +1,169 @@
+---
+categories: [Widgets]
+layout: page
+title: Tables
+resource: true
+---
+ <h2>Contextual classes</h2>
+ <table class="table table-bordered">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>Column heading</th>
+ <th>Column heading</th>
+ <th>Column heading</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="active">
+ <td>1</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr class="success">
+ <td>3</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr class="warning">
+ <td>5</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr class="danger">
+ <td>7</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Responsive and bordered tables. Striped and hover rows.</h2>
+ <div class="table-responsive">
+ <table class="table table-striped table-bordered table-hover">
+ <thead>
+ <tr>
+ <th>Session</th>
+ <th class="text-right">Course Number</th>
+ <th>Title</th>
+ <th>Level</th>
+ <th>Course Format</th>
+ <th>Days</th>
+ <th class="text-right">CRN</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6020</td>
+ <td>Ethical Issues in Organizational Communication</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>T </td>
+ <td class="text-right">20115</td>
+ </tr>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6020</td>
+ <td>Ethical Issues in Organizational Communication</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>W </td>
+ <td class="text-right">21509</td>
+ </tr>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6050</td>
+ <td>Crisis Communication</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>W </td>
+ <td class="text-right">20915</td>
+ </tr>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6050</td>
+ <td>Crisis Communication</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>Th </td>
+ <td class="text-right">21550</td>
+ </tr>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6060</td>
+ <td>Negotiation, Mediation, and Facilitation</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>Th </td>
+ <td class="text-right">20119</td>
+ </tr>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6060</td>
+ <td>Negotiation, Mediation, and Facilitation</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>T </td>
+ <td class="text-right">20122</td>
+ </tr>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6060</td>
+ <td>Negotiation, Mediation, and Facilitation</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>T </td>
+ <td class="text-right">21511</td>
+ </tr>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6060</td>
+ <td>Negotiation, Mediation, and Facilitation</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>Th </td>
+ <td class="text-right">21330</td>
+ </tr>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6061</td>
+ <td>Personal Branding</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>Th </td>
+ <td class="text-right">20124</td>
+ </tr>
+ <tr>
+ <td><a href="#">Winter 2014 Full-Term Session</a></td>
+ <td class="text-right">CMN 6080</td>
+ <td>Intercultural Communication</td>
+ <td>Graduate</td>
+ <td>Online</td>
+ <td>W </td>
+ <td class="text-right">20126</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tabs.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tabs.html
new file mode 100644
index 0000000..b2030a4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tabs.html
@@ -0,0 +1,239 @@
+---
+categories: [Widgets]
+layout: page
+title: Tabs
+resource: true
+---
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#">Home</a></li>
+ <li><a href="#">Profile</a></li>
+ <li><a href="#">Messages</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs">
+ <li><a href="#">Home</a></li>
+ <li class="active"><a href="#">Profile</a></li>
+ <li><a href="#">Messages</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs">
+ <li><a href="#">Home</a></li>
+ <li><a href="#">Profile</a></li>
+ <li class="active"><a href="#">Messages</a></li>
+ </ul>
+ <h3>Justified</h3>
+ <ul class="nav nav-tabs nav-justified">
+ <li class="active"><a href="#">Home</a></li>
+ <li><a href="#">Profile</a></li>
+ <li><a href="#">Messages</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs nav-justified">
+ <li><a href="#">Home</a></li>
+ <li class="active"><a href="#">Profile</a></li>
+ <li><a href="#">Messages</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs nav-justified">
+ <li><a href="#">Home</a></li>
+ <li><a href="#">Profile</a></li>
+ <li class="active"><a href="#">Messages</a></li>
+ </ul>
+ <h3>Tabs with dropdowns</h3>
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#">Home</a></li>
+ <li><a href="#">Help</a></li>
+ <li class="dropdown">
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+ Dropdown <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs">
+ <li><a href="#">Home</a></li>
+ <li class="active"><a href="#">Help</a></li>
+ <li class="dropdown">
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+ Dropdown <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu pull-right" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs">
+ <li><a href="#">Home</a></li>
+ <li><a href="#">Help</a></li>
+ <li class="active dropdown">
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+ Dropdown <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </li>
+ </ul>
+ <h2>PatternFly Examples</h2>
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li class="active"><a href="#">Home</a></li>
+ <li><a href="#">Profile</a></li>
+ <li><a href="#">Messages</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li><a href="#">Home</a></li>
+ <li class="active"><a href="#">Profile</a></li>
+ <li><a href="#">Messages</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li><a href="#">Home</a></li>
+ <li><a href="#">Profile</a></li>
+ <li class="active"><a href="#">Messages</a></li>
+ </ul>
+ <h3>Justified</h3>
+ <ul class="nav nav-tabs nav-tabs-pf nav-justified">
+ <li class="active"><a href="#">Home</a></li>
+ <li><a href="#">Profile</a></li>
+ <li><a href="#">Messages</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs nav-tabs-pf nav-justified">
+ <li><a href="#">Home</a></li>
+ <li class="active"><a href="#">Profile</a></li>
+ <li><a href="#">Messages</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs nav-tabs-pf nav-justified">
+ <li><a href="#">Home</a></li>
+ <li><a href="#">Profile</a></li>
+ <li class="active"><a href="#">Messages</a></li>
+ </ul>
+ <h3>Tabs with dropdowns</h3>
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li class="active"><a href="#">Home</a></li>
+ <li><a href="#">Help</a></li>
+ <li class="dropdown">
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+ Dropdown <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li><a href="#">Home</a></li>
+ <li class="active"><a href="#">Help</a></li>
+ <li class="dropdown">
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+ Dropdown <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu pull-right" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li><a href="#">Home</a></li>
+ <li><a href="#">Help</a></li>
+ <li class="active dropdown">
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+ Dropdown <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </li>
+ </ul>
+ <h3>.nav-tabs + .nav-tabs-pf</h3>
+ <p class="text-info">
+ <strong>Note:</strong> the markup semantics used here are sub-optimal in order to easily achieve a responsive layout.
+ </p>
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#">Tab One</a></li>
+ <li><a href="#">Tab Two</a></li>
+ <li><a href="#">Tab Three</a></li>
+ <li><a href="#">Tab Four</a></li>
+ <li><a href="#">Tab Five</a></li>
+ <li><a href="#">Tab Six</a></li>
+ <li><a href="#">Tab Seven</a></li>
+ </ul>
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li class="active"><a href="#">Secondary Tab One</a></li>
+ <li><a href="#">Secondary Tab Two</a></li>
+ <li><a href="#">Secondary Tab Three</a></li>
+ <li><a href="#">Secondary Tab Four</a></li>
+ <li><a href="#">Secondary Tab Five</a></li>
+ <li><a href="#">Secondary Tab Six</a></li>
+ <li><a href="#">Secondary Tab Seven</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="#">Tab One</a></li>
+ <li><a href="#">Tab Two</a></li>
+ <li><a href="#">Tab Three</a></li>
+ <li><a href="#">Tab Four</a></li>
+ <li><a href="#">Tab Five</a></li>
+ <li><a href="#">Tab Six</a></li>
+ <li><a href="#">Tab Seven</a></li>
+ </ul>
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li><a href="#">Secondary Tab One</a></li>
+ <li class="active"><a href="#">Secondary Tab Two</a></li>
+ <li><a href="#">Secondary Tab Three</a></li>
+ <li><a href="#">Secondary Tab Four</a></li>
+ <li><a href="#">Secondary Tab Five</a></li>
+ <li><a href="#">Secondary Tab Six</a></li>
+ <li><a href="#">Secondary Tab Seven</a></li>
+ </ul>
+ <br />
+ <ul class="nav nav-tabs">
+ <li><a href="#">Tab One</a></li>
+ <li class="active"><a href="#">Tab Two</a></li>
+ <li><a href="#">Tab Three</a></li>
+ <li><a href="#">Tab Four</a></li>
+ <li><a href="#">Tab Five</a></li>
+ <li><a href="#">Tab Six</a></li>
+ <li><a href="#">Tab Seven</a></li>
+ </ul>
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li><a href="#">Secondary Tab One</a></li>
+ <li class="active"><a href="#">Secondary Tab Two</a></li>
+ <li><a href="#">Secondary Tab Three</a></li>
+ <li><a href="#">Secondary Tab Four</a></li>
+ <li><a href="#">Secondary Tab Five</a></li>
+ <li><a href="#">Secondary Tab Six</a></li>
+ <li><a href="#">Secondary Tab Seven</a></li>
+ </ul>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tests.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tests.css
new file mode 100644
index 0000000..ffaeab3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tests.css
@@ -0,0 +1,16 @@
+body {
+ padding-bottom: 100px;
+}
+
+.icons .fa, .icons .glyphicon, .icons .pficon {
+ font-size: 14px;
+ margin-right: 5px;
+ text-align: center;
+ width: 14px;
+}
+.icons .icon-class {
+ display: inline-block;
+}
+.icons li {
+ margin: 0 0 7px;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tooltip.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tooltip.html
new file mode 100644
index 0000000..0690a7a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/tooltip.html
@@ -0,0 +1,30 @@
+---
+categories: [Widgets]
+layout: page
+title: Tooltip
+resource: true
+---
+ <div class="tooltip-demo">
+ <a href="#" class="btn btn-default" data-toggle="tooltip" data-original-title="Caribbean Monk Seal, Barbary Lion, Seaside Sparrow">Caribbean Monk Seal, Barbary L...</a>
+ </div>
+ <br>
+ <h2>Tooltip Directions</h2>
+ <div class="tooltip-demo">
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pretium mi at ante luctus dapibus. Fusce in tempus felis. Suspendisse tristique diam vel.</p>
+ <div class="bs-example-tooltips">
+ <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="left" title="" data-original-title="Tooltip on left">Tooltip on left</button>
+ <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</button>
+ <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</button>
+ <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="right" title="" data-original-title="Tooltip on right">Tooltip on right</button>
+ </div>
+ <p style="margin-top: 10px;">Suspendisse tristique diam vel hendrerit aliquet. Vestibulum laoreet nisi ac egestas porttitor. Donec tempus elit convallis.</p>
+ </div>
+ <script>
+ // Initialize Tooltip
+ $(document).ready(function() {
+ $('.tooltip-demo').tooltip({
+ selector: "[data-toggle=tooltip]",
+ container: "body"
+ });
+ });
+ </script>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography.html
new file mode 100644
index 0000000..18fbca4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography.html
@@ -0,0 +1,155 @@
+---
+categories: [Widgets]
+layout: page
+title: Typography
+resource: true
+---
+ <h2>Headings</h2>
+ <h1>h1. Bootstrap heading</h1>
+ <h2>h2. Bootstrap heading</h2>
+ <h3>h3. Bootstrap heading</h3>
+ <h4>h4. Bootstrap heading</h4>
+ <h5>h5. Bootstrap heading</h5>
+ <h6>h6. Bootstrap heading</h6>
+ <h1>h1. Bootstrap heading <small>Secondary text</small></h1>
+ <h2>h2. Bootstrap heading <small>Secondary text</small></h2>
+ <h3>h3. Bootstrap heading <small>Secondary text</small></h3>
+ <h4>h4. Bootstrap heading <small>Secondary text</small></h4>
+ <h5>h5. Bootstrap heading <small>Secondary text</small></h5>
+ <h6>h6. Bootstrap heading <small>Secondary text</small></h6>
+ <hr>
+ <h2>Body Copy</h2>
+ <p>Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.</p>
+ <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.</p>
+ <p>Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.</p>
+ <h3>Lead Body Copy</h3>
+ <p class="lead">Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.</p>
+ <hr>
+ <h2>Emphasis</h2>
+ <h3>Small Text</h3>
+ <small>This line of text is meant to be treated as fine print.</small>
+ <h3>Bold</h3>
+ <p>The following snippet of text is <strong>rendered as bold text</strong>.</p>
+ <h3>Italics</h3>
+ <p>The following snippet of text is <em>rendered as italicized text</em>.</p>
+ <h3>Alignment classes</h3>
+ <p class="text-left">Left aligned text.</p>
+ <p class="text-center">Center aligned text.</p>
+ <p class="text-right">Right aligned text.</p>
+ <p class="text-justify">Justified text.</p>
+ <hr>
+ <h2>Abbreviations</h2>
+ <h3>Basic abbreviation</h3>
+ <p>An abbreviation of the word attribute is <abbr title="attribute">attr</abbr>.</p>
+ <h3>Initialism</h3>
+ <p><abbr title="HyperText Markup Language" class="initialism">HTML</abbr> is the best thing since sliced bread.</p>
+ <hr>
+ <h2>Addresses</h2>
+ <address>
+ <strong>Twitter, Inc.</strong><br>
+ 795 Folsom Ave, Suite 600<br>
+ San Francisco, CA 94107<br>
+ <abbr title="Phone">P:</abbr> (123) 456-7890
+ </address>
+ <address>
+ <strong>Full Name</strong><br>
+ <a href="mailto:#">first.last@example.com</a>
+ </address>
+ <hr>
+ <h2>Blockquotes</h2>
+ <h3>Default blockquote</h3>
+ <blockquote>
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+ </blockquote>
+ <h3>Blockquote options</h3>
+ <blockquote>
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+ <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
+ </blockquote>
+ <blockquote class="blockquote-reverse">
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+ <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
+ </blockquote>
+ <hr>
+ <h2>Lists</h2>
+ <h3>Unordered</h3>
+ <ul>
+ <li>Lorem ipsum dolor sit amet</li>
+ <li>Consectetur adipiscing elit</li>
+ <li>Integer molestie lorem at massa</li>
+ <li>Facilisis in pretium nisl aliquet</li>
+ <li>Nulla volutpat aliquam velit
+ <ul>
+ <li>Phasellus iaculis neque</li>
+ <li>Purus sodales ultricies</li>
+ <li>Vestibulum laoreet porttitor sem</li>
+ <li>Ac tristique libero volutpat at</li>
+ </ul>
+ </li>
+ <li>Faucibus porta lacus fringilla vel</li>
+ <li>Aenean sit amet erat nunc</li>
+ <li>Eget porttitor lorem</li>
+ </ul>
+ <h3>Ordered</h3>
+ <ol>
+ <li>Lorem ipsum dolor sit amet</li>
+ <li>Consectetur adipiscing elit</li>
+ <li>Integer molestie lorem at massa</li>
+ <li>Facilisis in pretium nisl aliquet</li>
+ <li>Nulla volutpat aliquam velit</li>
+ <li>Faucibus porta lacus fringilla vel</li>
+ <li>Aenean sit amet erat nunc</li>
+ <li>Eget porttitor lorem</li>
+ </ol>
+ <h3>Unstyled</h3>
+ <ul class="list-unstyled">
+ <li>Lorem ipsum dolor sit amet</li>
+ <li>Consectetur adipiscing elit</li>
+ <li>Integer molestie lorem at massa</li>
+ <li>Facilisis in pretium nisl aliquet</li>
+ <li>Nulla volutpat aliquam velit
+ <ul>
+ <li>Phasellus iaculis neque</li>
+ <li>Purus sodales ultricies</li>
+ <li>Vestibulum laoreet porttitor sem</li>
+ <li>Ac tristique libero volutpat at</li>
+ </ul>
+ </li>
+ <li>Faucibus porta lacus fringilla vel</li>
+ <li>Aenean sit amet erat nunc</li>
+ <li>Eget porttitor lorem</li>
+ </ul>
+ <h3>Inline</h3>
+ <ul class="list-inline">
+ <li>Lorem ipsum</li>
+ <li>Phasellus iaculis</li>
+ <li>Nulla volutpat</li>
+ </ul>
+ <h3>Description</h3>
+ <dl>
+ <dt>Description lists</dt>
+ <dd>A description list is perfect for defining terms.</dd>
+ <dt>Euismod</dt>
+ <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
+ <dd>Donec id elit non mi porta gravida at eget metus.</dd>
+ <dt>Malesuada porta</dt>
+ <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
+ </dl>
+ <dl class="dl-horizontal">
+ <dt>Description lists</dt>
+ <dd>A description list is perfect for defining terms.</dd>
+ <dt>Euismod</dt>
+ <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
+ <dd>Donec id elit non mi porta gravida at eget metus.</dd>
+ <dt>Malesuada porta</dt>
+ <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
+ <dt>Felis euismod semper eget lacinia</dt>
+ <dd>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</dd>
+ </dl>
+ <hr>
+ <div class="page-header">
+ <h1>Page Header</h1>
+ </div>
+ <h2>Diacritics</h2>
+ <p>L'avantage d'utiliser le lorem ipsum est bien évidemment de pouvoir créer des maquettes ou de remplir un site internet de contenus qui présentent un rendu s'approchant un maximum du rendu final. Par défaut lorem ipsum ne contient pas d'accent ni de caractères spéciaux contrairement à la langue française qui en contient beaucoup. C'est sur ce critère que nous proposons une solution avec cet outil qui générant du faux-texte lorem ipsum mais avec en plus, des caractères spéciaux tel que les accents ou certains symboles utiles pour la langue française. L'utilisation du lorem standard est facile d’utilisation mais lorsque le futur client utilisera votre logiciel il se peut que certains caractères spéciaux ou qu'un accent ne soient pas codés correctement. Cette page a pour but donc de pouvoir perdre le moins de temps possible et donc de tester directement si tous les encodages de base de donnée ou des sites sont les bons de plus il permet de récuperer un code css avec le texte formaté !</p>
+ <h3>caractères spéciaux</h3>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography-2.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography-2.css
new file mode 100644
index 0000000..32b30d4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography-2.css
@@ -0,0 +1,10 @@
+/* Custom styles for typography-2.html */
+
+@media (min-width: 768px) {
+.border-right {
+ border-right: 1px solid #d1d1d1;
+}
+
+section + section {
+ margin: 4em 0;
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography-2.html b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography-2.html
new file mode 100644
index 0000000..c1c2cb0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/components/patternfly/tests-src/typography-2.html
@@ -0,0 +1,179 @@
+---
+categories: [Layouts]
+css-extra: true
+layout: layout
+title: Typography
+url-css-extra: 'typography-2.css'
+resource: true
+weight: 6
+---
+{% include layouts-navbar-primary.html %}
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <ol class="breadcrumb">
+ <li><a href="#">Home</a></li>
+ <li>{{ page.title }}</li>
+ </ol>
+ <h1>Application Heading h1</h1>
+ <section>
+ <h2>Body Copy h2</h2>
+ <p>Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.</p>
+ <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.</p>
+ <p>Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.</p>
+ <h3>Lead Body Copy h3</h3>
+ <p class="lead">Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.</p>
+ </section>
+ <section>
+ <h2>Emphasis</h2>
+ <div class="row">
+ <div class="col-sm-6 col-md-5">
+ <h3>Small Text</h3>
+ <small>This line of text is meant to be treated as fine print.</small>
+ <h3>Bold</h3>
+ <p>The following snippet of text is <strong>rendered as bold text</strong>.</p>
+ <h3>Italics</h3>
+ <p>The following snippet of text is <em>rendered as italicized text</em>.</p>
+ <h3>Link Text</h3>
+ <p>The follong snippet of text is <a href="#">rendered as link text</a>.</p>
+ </div><!-- /col -->
+ <div class="col-sm-6 col-md-7">
+ <h3>Description</h3>
+ <dl>
+ <dt>Description lists</dt>
+ <dd>A description list is perfect for defining terms.</dd>
+ <dt>Euismod</dt>
+ <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
+ <dd>Donec id elit non mi porta gravida at eget metus.</dd>
+ <dt>Malesuada porta</dt>
+ <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
+ </dl>
+ <dl class="dl-horizontal">
+ <dt>Description lists</dt>
+ <dd>A description list is perfect for defining terms.</dd>
+ <dt>Euismod</dt>
+ <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
+ <dd>Donec id elit non mi porta gravida at eget metus.</dd>
+ <dt>Malesuada porta</dt>
+ <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
+ <dt>Felis euismod semper eget lacinia</dt>
+ <dd>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</dd>
+ </dl>
+ </div><!-- /col -->
+ </div><!-- /row -->
+ <h3>Alignment classes</h3>
+ <table class="table table-bordered">
+ <tr>
+ <td class="text-left">
+ Left aligned text.
+ </td>
+ <td class="text-center">
+ Center aligned text.
+ </td>
+ <td class="text-right">
+ Right aligned text.
+ </td>
+ </tr>
+ </table>
+ </section>
+ <section>
+ <h2>Lists</h2>
+ <div class="row">
+ <div class="col-sm-6 col-md-3">
+ <h3>Unordered</h3>
+ <ul>
+ <li>Lorem ipsum dolor sit amet</li>
+ <li>Consectetur adipiscing elit</li>
+ <li>Integer molestie lorem at massa</li>
+ <li>Facilisis in pretium nisl aliquet</li>
+ <li>Nulla volutpat aliquam velit
+ <ul>
+ <li>Phasellus iaculis neque</li>
+ <li>Purus sodales ultricies</li>
+ <li>Vestibulum laoreet porttitor sem</li>
+ <li>Ac tristique libero volutpat at</li>
+ </ul>
+ </li>
+ <li>Faucibus porta lacus fringilla vel</li>
+ <li>Aenean sit amet erat nunc</li>
+ <li>Eget porttitor lorem</li>
+ </ul>
+ </div><!-- /col -->
+ <div class="col-sm-6 col-md-3">
+ <h3>Ordered</h3>
+ <ol>
+ <li>Lorem ipsum dolor sit amet</li>
+ <li>Consectetur adipiscing elit</li>
+ <li>Integer molestie lorem at massa</li>
+ <li>Facilisis in pretium nisl aliquet</li>
+ <li>Nulla volutpat aliquam velit</li>
+ <li>Faucibus porta lacus fringilla vel</li>
+ <li>Aenean sit amet erat nunc</li>
+ <li>Eget porttitor lorem</li>
+ </ol>
+ </div><!-- /col -->
+ <div class="clearfix visible-sm"></div>
+ <div class="col-sm-6 col-md-3">
+ <h3>Unstyled</h3>
+ <ul class="list-unstyled">
+ <li>Lorem ipsum dolor sit amet</li>
+ <li>Consectetur adipiscing elit</li>
+ <li>Integer molestie lorem at massa</li>
+ <li>Facilisis in pretium nisl aliquet</li>
+ <li>Nulla volutpat aliquam velit
+ <ul>
+ <li>Phasellus iaculis neque</li>
+ <li>Purus sodales ultricies</li>
+ <li>Vestibulum laoreet porttitor sem</li>
+ <li>Ac tristique libero volutpat at</li>
+ </ul>
+ </li>
+ <li>Faucibus porta lacus fringilla vel</li>
+ <li>Aenean sit amet erat nunc</li>
+ <li>Eget porttitor lorem</li>
+ </ul>
+ </div><!-- /col -->
+ <div class="col-sm-6 col-md-3">
+ <h3>Inline</h3>
+ <ul class="list-inline">
+ <li>Lorem ipsum</li>
+ <li>Phasellus iaculis</li>
+ <li>Nulla volutpat</li>
+ </ul>
+ </div><!-- /col -->
+ </div><!-- /row -->
+ </section>
+ <section>
+ <h2>Power Management</h2>
+ <div class="row">
+ <div class="col-sm-8 col-md-8 border-right">
+ <dl class="dl-horizontal">
+ <dt>Name</dt>
+ <dd>07efaldskj-asdpa-sdf-ads-5</dd>
+ <dt>Hostname</dt>
+ <dd>Local.host/default</dd>
+ <dt>IP Address</dt>
+ <dd>10.110.11.0</dd>
+ </dl>
+ <p>Natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.</p>
+ </div><!-- /col -->
+ <div class="col-sm-4 col-md-4">
+ <dl>
+ <dt>System-1a1a1a</dt>
+ <dd>System never checked in | OS: x86_64</dd>
+ <dt>System-2b2b2b</dt>
+ <dd class="text-muted"><em>System unavaliable | OS: N/A</em></dd>
+ <dt>System-3c3c3c3</dt>
+ <dd>System never checked in | OS: x86_64</dd>
+ <dt>System-4d4d4d</dt>
+ <dd>System never checked in | OS: x86_64</dd>
+ </dl>
+ </div><!-- /col -->
+ </div><!-- /row -->
+ </section>
+ <p class="text-info">
+ <strong>Note:</strong> This layout utilizes custom CSS. See <a href="typography-2.css">typography-2.css</a>.
+ </p>
+ </div><!-- /col -->
+ </div><!-- /row -->
+ </div><!-- /container -->
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/filesaver/FileSaver.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/filesaver/FileSaver.js
new file mode 100644
index 0000000..6095017
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/filesaver/FileSaver.js
@@ -0,0 +1,241 @@
+/* FileSaver.js
+ * A saveAs() FileSaver implementation.
+ * 2014-05-27
+ *
+ * By Eli Grey, http://eligrey.com
+ * License: X11/MIT
+ * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
+ */
+
+/*global self */
+/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
+
+/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
+
+var saveAs = saveAs
+ // IE 10+ (native saveAs)
+ || (typeof navigator !== "undefined" &&
+ navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator))
+ // Everyone else
+ || (function(view) {
+ "use strict";
+ // IE <10 is explicitly unsupported
+ if (typeof navigator !== "undefined" &&
+ /MSIE [1-9]\./.test(navigator.userAgent)) {
+ return;
+ }
+ var
+ doc = view.document
+ // only get URL when necessary in case Blob.js hasn't overridden it yet
+ , get_URL = function() {
+ return view.URL || view.webkitURL || view;
+ }
+ , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
+ , can_use_save_link = !view.externalHost && "download" in save_link
+ , click = function(node) {
+ var event = doc.createEvent("MouseEvents");
+ event.initMouseEvent(
+ "click", true, false, view, 0, 0, 0, 0, 0
+ , false, false, false, false, 0, null
+ );
+ node.dispatchEvent(event);
+ }
+ , webkit_req_fs = view.webkitRequestFileSystem
+ , req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
+ , throw_outside = function(ex) {
+ (view.setImmediate || view.setTimeout)(function() {
+ throw ex;
+ }, 0);
+ }
+ , force_saveable_type = "application/octet-stream"
+ , fs_min_size = 0
+ , deletion_queue = []
+ , process_deletion_queue = function() {
+ var i = deletion_queue.length;
+ while (i--) {
+ var file = deletion_queue[i];
+ if (typeof file === "string") { // file is an object URL
+ get_URL().revokeObjectURL(file);
+ } else { // file is a File
+ file.remove();
+ }
+ }
+ deletion_queue.length = 0; // clear queue
+ }
+ , dispatch = function(filesaver, event_types, event) {
+ event_types = [].concat(event_types);
+ var i = event_types.length;
+ while (i--) {
+ var listener = filesaver["on" + event_types[i]];
+ if (typeof listener === "function") {
+ try {
+ listener.call(filesaver, event || filesaver);
+ } catch (ex) {
+ throw_outside(ex);
+ }
+ }
+ }
+ }
+ , FileSaver = function(blob, name) {
+ // First try a.download, then web filesystem, then object URLs
+ var
+ filesaver = this
+ , type = blob.type
+ , blob_changed = false
+ , object_url
+ , target_view
+ , get_object_url = function() {
+ var object_url = get_URL().createObjectURL(blob);
+ deletion_queue.push(object_url);
+ return object_url;
+ }
+ , dispatch_all = function() {
+ dispatch(filesaver, "writestart progress write writeend".split(" "));
+ }
+ // on any filesys errors revert to saving with object URLs
+ , fs_error = function() {
+ // don't create more object URLs than needed
+ if (blob_changed || !object_url) {
+ object_url = get_object_url(blob);
+ }
+ if (target_view) {
+ target_view.location.href = object_url;
+ } else {
+ window.open(object_url, "_blank");
+ }
+ filesaver.readyState = filesaver.DONE;
+ dispatch_all();
+ }
+ , abortable = function(func) {
+ return function() {
+ if (filesaver.readyState !== filesaver.DONE) {
+ return func.apply(this, arguments);
+ }
+ };
+ }
+ , create_if_not_found = {create: true, exclusive: false}
+ , slice
+ ;
+ filesaver.readyState = filesaver.INIT;
+ if (!name) {
+ name = "download";
+ }
+ if (can_use_save_link) {
+ object_url = get_object_url(blob);
+ save_link.href = object_url;
+ save_link.download = name;
+ click(save_link);
+ filesaver.readyState = filesaver.DONE;
+ dispatch_all();
+ return;
+ }
+ // Object and web filesystem URLs have a problem saving in Google Chrome when
+ // viewed in a tab, so I force save with application/octet-stream
+ // http://code.google.com/p/chromium/issues/detail?id=91158
+ if (view.chrome && type && type !== force_saveable_type) {
+ slice = blob.slice || blob.webkitSlice;
+ blob = slice.call(blob, 0, blob.size, force_saveable_type);
+ blob_changed = true;
+ }
+ // Since I can't be sure that the guessed media type will trigger a download
+ // in WebKit, I append .download to the filename.
+ // https://bugs.webkit.org/show_bug.cgi?id=65440
+ if (webkit_req_fs && name !== "download") {
+ name += ".download";
+ }
+ if (type === force_saveable_type || webkit_req_fs) {
+ target_view = view;
+ }
+ if (!req_fs) {
+ fs_error();
+ return;
+ }
+ fs_min_size += blob.size;
+ req_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {
+ fs.root.getDirectory("saved", create_if_not_found, abortable(function(dir) {
+ var save = function() {
+ dir.getFile(name, create_if_not_found, abortable(function(file) {
+ file.createWriter(abortable(function(writer) {
+ writer.onwriteend = function(event) {
+ target_view.location.href = file.toURL();
+ deletion_queue.push(file);
+ filesaver.readyState = filesaver.DONE;
+ dispatch(filesaver, "writeend", event);
+ };
+ writer.onerror = function() {
+ var error = writer.error;
+ if (error.code !== error.ABORT_ERR) {
+ fs_error();
+ }
+ };
+ "writestart progress write abort".split(" ").forEach(function(event) {
+ writer["on" + event] = filesaver["on" + event];
+ });
+ writer.write(blob);
+ filesaver.abort = function() {
+ writer.abort();
+ filesaver.readyState = filesaver.DONE;
+ };
+ filesaver.readyState = filesaver.WRITING;
+ }), fs_error);
+ }), fs_error);
+ };
+ dir.getFile(name, {create: false}, abortable(function(file) {
+ // delete file if it already exists
+ file.remove();
+ save();
+ }), abortable(function(ex) {
+ if (ex.code === ex.NOT_FOUND_ERR) {
+ save();
+ } else {
+ fs_error();
+ }
+ }));
+ }), fs_error);
+ }), fs_error);
+ }
+ , FS_proto = FileSaver.prototype
+ , saveAs = function(blob, name) {
+ return new FileSaver(blob, name);
+ }
+ ;
+ FS_proto.abort = function() {
+ var filesaver = this;
+ filesaver.readyState = filesaver.DONE;
+ dispatch(filesaver, "abort");
+ };
+ FS_proto.readyState = FS_proto.INIT = 0;
+ FS_proto.WRITING = 1;
+ FS_proto.DONE = 2;
+
+ FS_proto.error =
+ FS_proto.onwritestart =
+ FS_proto.onprogress =
+ FS_proto.onwrite =
+ FS_proto.onabort =
+ FS_proto.onerror =
+ FS_proto.onwriteend =
+ null;
+
+ view.addEventListener("unload", process_deletion_queue, false);
+ saveAs.unload = function() {
+ process_deletion_queue();
+ view.removeEventListener("unload", process_deletion_queue, false);
+ };
+ return saveAs;
+}(
+ typeof self !== "undefined" && self
+ || typeof window !== "undefined" && window
+ || this.content
+));
+// `self` is undefined in Firefox for Android content script context
+// while `this` is nsIContentFrameMessageManager
+// with an attribute `content` that corresponds to the window
+
+if (typeof module !== "undefined" && module !== null) {
+ module.exports = saveAs;
+} else if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) {
+ define([], function() {
+ return saveAs;
+ });
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload.js
new file mode 100644
index 0000000..0daaa69
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload.js
@@ -0,0 +1,156 @@
+/**!
+ * AngularJS file upload/drop directive with http post and progress
+ * @author Danial <danial.farid@gmail.com>
+ * @version 1.1.10
+ */
+(function() {
+
+var angularFileUpload = angular.module('angularFileUpload', []);
+
+angularFileUpload.service('$upload', ['$http', '$rootScope', '$timeout', function($http, $rootScope, $timeout) {
+ this.upload = function(config) {
+ config.method = config.method || 'POST';
+ config.headers = config.headers || {};
+ config.headers['Content-Type'] = undefined;
+ config.transformRequest = config.transformRequest || $http.defaults.transformRequest;
+ var formData = new FormData();
+ if (config.data) {
+ for (var key in config.data) {
+ var val = config.data[key];
+ if (!config.formDataAppender) {
+ if (typeof config.transformRequest == 'function') {
+ val = config.transformRequest(val);
+ } else {
+ for (var i = 0; i < config.transformRequest.length; i++) {
+ var fn = config.transformRequest[i];
+ if (typeof fn == 'function') {
+ val = fn(val);
+ }
+ }
+ }
+ formData.append(key, val);
+ } else {
+ config.formDataAppender(formData, key, val);
+ }
+ }
+ }
+ config.transformRequest = angular.identity;
+ formData.append(config.fileFormDataName || 'file', config.file, config.file.name);
+
+ formData['__setXHR_'] = function(xhr) {
+ config.__XHR = xhr;
+ xhr.upload.addEventListener('progress', function(e) {
+ if (config.progress) {
+ $timeout(function() {
+ config.progress(e);
+ });
+ }
+ }, false);
+ //fix for firefox not firing upload progress end
+ xhr.upload.addEventListener('load', function(e) {
+ if (e.lengthComputable) {
+ $timeout(function() {
+ config.progress(e);
+ });
+ }
+ }, false);
+ };
+
+ config.data = formData;
+
+ var promise = $http(config);
+
+ promise.progress = function(fn) {
+ config.progress = fn;
+ return promise;
+ };
+
+ promise.abort = function() {
+ if (config.__XHR) {
+ $timeout(function() {
+ config.__XHR.abort();
+ });
+ }
+ return promise;
+ };
+ promise.then = (function(promise, origThen) {
+ return function(s, e, p) {
+ config.progress = p || config.progress;
+ origThen.apply(promise, [s, e, p]);
+ return promise;
+ };
+ })(promise, promise.then);
+
+ return promise;
+ };
+}]);
+
+angularFileUpload.directive('ngFileSelect', [ '$parse', '$http', '$timeout', function($parse, $http, $timeout) {
+ return function(scope, elem, attr) {
+ var fn = $parse(attr['ngFileSelect']);
+ elem.bind('change', function(evt) {
+ var files = [], fileList, i;
+ fileList = evt.target.files;
+ if (fileList != null) {
+ for (i = 0; i < fileList.length; i++) {
+ files.push(fileList.item(i));
+ }
+ }
+ $timeout(function() {
+ fn(scope, {
+ $files : files,
+ $event : evt
+ });
+ });
+ });
+ elem.bind('click', function(){
+ this.value = null;
+ });
+ };
+} ]);
+
+angularFileUpload.directive('ngFileDropAvailable', [ '$parse', '$http', '$timeout', function($parse, $http, $timeout) {
+ return function(scope, elem, attr) {
+ if ('draggable' in document.createElement('span')) {
+ var fn = $parse(attr['ngFileDropAvailable']);
+ $timeout(function() {
+ fn(scope);
+ });
+ }
+ };
+} ]);
+
+angularFileUpload.directive('ngFileDrop', [ '$parse', '$http', '$timeout', function($parse, $http, $timeout) {
+ return function(scope, elem, attr) {
+ if ('draggable' in document.createElement('span')) {
+ var fn = $parse(attr['ngFileDrop']);
+ elem[0].addEventListener("dragover", function(evt) {
+ evt.stopPropagation();
+ evt.preventDefault();
+ elem.addClass(attr['ngFileDragOverClass'] || "dragover");
+ }, false);
+ elem[0].addEventListener("dragleave", function(evt) {
+ elem.removeClass(attr['ngFileDragOverClass'] || "dragover");
+ }, false);
+ elem[0].addEventListener("drop", function(evt) {
+ evt.stopPropagation();
+ evt.preventDefault();
+ elem.removeClass(attr['ngFileDragOverClass'] || "dragover");
+ var files = [], fileList = evt.dataTransfer.files, i;
+ if (fileList != null) {
+ for (i = 0; i < fileList.length; i++) {
+ files.push(fileList.item(i));
+ }
+ }
+ $timeout(function() {
+ fn(scope, {
+ $files : files,
+ $event : evt
+ });
+ });
+ }, false);
+ }
+ };
+} ]);
+
+})();
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload.min.js
new file mode 100644
index 0000000..ae51b1f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload.min.js
@@ -0,0 +1,2 @@
+/*! 1.1.10 */
+!function(){var a=angular.module("angularFileUpload",[]);a.service("$upload",["$http","$rootScope","$timeout",function(a,b,c){this.upload=function(b){b.method=b.method||"POST",b.headers=b.headers||{},b.headers["Content-Type"]=void 0,b.transformRequest=b.transformRequest||a.defaults.transformRequest;var d=new FormData;if(b.data)for(var e in b.data){var f=b.data[e];if(b.formDataAppender)b.formDataAppender(d,e,f);else{if("function"==typeof b.transformRequest)f=b.transformRequest(f);else for(var g=0;g<b.transformRequest.length;g++){var h=b.transformRequest[g];"function"==typeof h&&(f=h(f))}d.append(e,f)}}b.transformRequest=angular.identity,d.append(b.fileFormDataName||"file",b.file,b.file.name),d.__setXHR_=function(a){b.__XHR=a,a.upload.addEventListener("progress",function(a){b.progress&&c(function(){b.progress(a)})},!1),a.upload.addEventListener("load",function(a){a.lengthComputable&&c(function(){b.progress(a)})},!1)},b.data=d;var i=a(b);return i.progress=function(a){return b.progress=a,i},i.abort=function(){return b.__XHR&&c(function(){b.__XHR.abort()}),i},i.then=function(a,c){return function(d,e,f){return b.progress=f||b.progress,c.apply(a,[d,e,f]),a}}(i,i.then),i}}]),a.directive("ngFileSelect",["$parse","$http","$timeout",function(a,b,c){return function(b,d,e){var f=a(e.ngFileSelect);d.bind("change",function(a){var d,e,g=[];if(d=a.target.files,null!=d)for(e=0;e<d.length;e++)g.push(d.item(e));c(function(){f(b,{$files:g,$event:a})})}),d.bind("click",function(){this.value=null})}}]),a.directive("ngFileDropAvailable",["$parse","$http","$timeout",function(a,b,c){return function(b,d,e){if("draggable"in document.createElement("span")){var f=a(e.ngFileDropAvailable);c(function(){f(b)})}}}]),a.directive("ngFileDrop",["$parse","$http","$timeout",function(a,b,c){return function(b,d,e){if("draggable"in document.createElement("span")){var f=a(e.ngFileDrop);d[0].addEventListener("dragover",function(a){a.stopPropagation(),a.preventDefault(),d.addClass(e.ngFileDragOverClass||"dragover")},!1),d[0].addEventListener("dragleave",function(){d.removeClass(e.ngFileDragOverClass||"dragover")},!1),d[0].addEventListener("drop",function(a){a.stopPropagation(),a.preventDefault(),d.removeClass(e.ngFileDragOverClass||"dragover");var g,h=[],i=a.dataTransfer.files;if(null!=i)for(g=0;g<i.length;g++)h.push(i.item(g));c(function(){f(b,{$files:h,$event:a})})},!1)}}}])}();
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-html5-shim.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-html5-shim.js
new file mode 100644
index 0000000..16ef155
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-html5-shim.js
@@ -0,0 +1,25 @@
+/**!
+ * AngularJS file upload shim for angular XHR HTML5 browsers
+ * @author Danial <danial.farid@gmail.com>
+ * @version 1.1.10
+ */
+if (window.XMLHttpRequest) {
+ if (window.FormData) {
+ // allow access to Angular XHR private field: https://github.com/angular/angular.js/issues/1934
+ XMLHttpRequest = (function(origXHR) {
+ return function() {
+ var xhr = new origXHR();
+ xhr.send = (function(orig) {
+ return function() {
+ if (arguments[0] instanceof FormData && arguments[0].__setXHR_) {
+ var formData = arguments[0];
+ formData.__setXHR_(xhr);
+ }
+ orig.apply(xhr, arguments);
+ }
+ })(xhr.send);
+ return xhr;
+ }
+ })(XMLHttpRequest);
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-html5-shim.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-html5-shim.min.js
new file mode 100644
index 0000000..64d9182
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-html5-shim.min.js
@@ -0,0 +1,2 @@
+/*! 1.1.10 */
+window.XMLHttpRequest&&window.FormData&&(XMLHttpRequest=function(a){return function(){var b=new a;return b.send=function(a){return function(){if(arguments[0]instanceof FormData&&arguments[0].__setXHR_){var c=arguments[0];c.__setXHR_(b)}a.apply(b,arguments)}}(b.send),b}}(XMLHttpRequest));
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-shim.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-shim.js
new file mode 100644
index 0000000..f526e58
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-shim.js
@@ -0,0 +1,215 @@
+/**!
+ * AngularJS file upload shim for HTML5 FormData
+ * @author Danial <danial.farid@gmail.com>
+ * @version 1.1.10
+ */
+(function() {
+
+if (window.XMLHttpRequest) {
+ if (window.FormData) {
+ // allow access to Angular XHR private field: https://github.com/angular/angular.js/issues/1934
+ XMLHttpRequest = (function(origXHR) {
+ return function() {
+ var xhr = new origXHR();
+ xhr.send = (function(orig) {
+ return function() {
+ if (arguments[0] instanceof FormData && arguments[0].__setXHR_) {
+ var formData = arguments[0];
+ formData.__setXHR_(xhr);
+ }
+ orig.apply(xhr, arguments);
+ }
+ })(xhr.send);
+ return xhr;
+ }
+ })(XMLHttpRequest);
+ } else {
+ XMLHttpRequest = (function(origXHR) {
+ return function() {
+ var xhr = new origXHR();
+ var origSend = xhr.send;
+ xhr.__requestHeaders = [];
+ xhr.open = (function(orig) {
+ xhr.upload = {
+ addEventListener: function(t, fn, b) {
+ if (t == 'progress') {
+ xhr.__progress = fn;
+ }
+ }
+ };
+ return function(m, url, b) {
+ orig.apply(xhr, [m, url, b]);
+ xhr.__url = url;
+ }
+ })(xhr.open);
+ xhr.getResponseHeader = (function(orig) {
+ return function(h) {
+ return xhr.__fileApiXHR ? xhr.__fileApiXHR.getResponseHeader(h) : orig.apply(xhr, [h]);
+ }
+ })(xhr.getResponseHeader);
+ xhr.getAllResponseHeaders = (function(orig) {
+ return function() {
+ return xhr.__fileApiXHR ? xhr.__fileApiXHR.getAllResponseHeaders() : orig.apply(xhr);
+ }
+ })(xhr.getAllResponseHeaders);
+ xhr.abort = (function(orig) {
+ return function() {
+ return xhr.__fileApiXHR ? xhr.__fileApiXHR.abort() : (orig == null ? null : orig.apply(xhr));
+ }
+ })(xhr.abort);
+ xhr.send = function() {
+ if (arguments[0] != null && arguments[0].__isShim && arguments[0].__setXHR_) {
+ var formData = arguments[0];
+ if (arguments[0].__setXHR_) {
+ var formData = arguments[0];
+ formData.__setXHR_(xhr);
+ }
+ var config = {
+ url: xhr.__url,
+ complete: function(err, fileApiXHR) {
+ Object.defineProperty(xhr, 'status', {get: function() {return fileApiXHR.status}});
+ Object.defineProperty(xhr, 'statusText', {get: function() {return fileApiXHR.statusText}});
+ Object.defineProperty(xhr, 'readyState', {get: function() {return 4}});
+ Object.defineProperty(xhr, 'response', {get: function() {return fileApiXHR.response}});
+ Object.defineProperty(xhr, 'responseText', {get: function() {return fileApiXHR.responseText}});
+ xhr.__fileApiXHR = fileApiXHR;
+ xhr.onreadystatechange();
+ },
+ progress: function(e) {
+ xhr.__progress(e);
+ },
+ headers: xhr.__requestHeaders
+ }
+ config.data = {};
+ config.files = {}
+ for (var i = 0; i < formData.data.length; i++) {
+ var item = formData.data[i];
+ if (item.val != null && item.val.name != null && item.val.size != null && item.val.type != null) {
+ config.files[item.key] = item.val;
+ } else {
+ config.data[item.key] = item.val;
+ }
+ }
+
+ setTimeout(function() {
+ xhr.__fileApiXHR = FileAPI.upload(config);
+ }, 1);
+ } else {
+ origSend.apply(xhr, arguments);
+ }
+ }
+ return xhr;
+ }
+ })(XMLHttpRequest);
+ }
+}
+
+if (!window.FormData) {
+ var hasFlash = false;
+ try {
+ var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
+ if (fo) hasFlash = true;
+ } catch(e) {
+ if (navigator.mimeTypes["application/x-shockwave-flash"] != undefined) hasFlash = true;
+ }
+ var wrapFileApi = function(elem) {
+ if (!elem.__isWrapped && (elem.getAttribute('ng-file-select') != null || elem.getAttribute('data-ng-file-select') != null)) {
+ var wrap = document.createElement('div');
+ wrap.innerHTML = '<div class="js-fileapi-wrapper" style="position:relative; overflow:hidden"></div>';
+ wrap = wrap.firstChild;
+ var parent = elem.parentNode;
+ parent.insertBefore(wrap, elem);
+ parent.removeChild(elem);
+ wrap.appendChild(elem);
+ if (!hasFlash) {
+ wrap.appendChild(document.createTextNode('Flash is required'));
+ }
+ elem.__isWrapped = true;
+ }
+ };
+ var changeFnWrapper = function(fn) {
+ return function(evt) {
+ var files = FileAPI.getFiles(evt);
+ if (!evt.target) {
+ evt.target = {};
+ }
+ evt.target.files = files;
+ evt.target.files.item = function(i) {
+ return evt.target.files[i] || null;
+ }
+ fn(evt);
+ };
+ };
+ var isFileChange = function(elem, e) {
+ return (e.toLowerCase() === 'change' || e.toLowerCase() === 'onchange') && elem.getAttribute('type') == 'file';
+ }
+ if (HTMLInputElement.prototype.addEventListener) {
+ HTMLInputElement.prototype.addEventListener = (function(origAddEventListener) {
+ return function(e, fn, b, d) {
+ if (isFileChange(this, e)) {
+ wrapFileApi(this);
+ origAddEventListener.apply(this, [e, changeFnWrapper(fn), b, d]);
+ } else {
+ origAddEventListener.apply(this, [e, fn, b, d]);
+ }
+ }
+ })(HTMLInputElement.prototype.addEventListener);
+ }
+ if (HTMLInputElement.prototype.attachEvent) {
+ HTMLInputElement.prototype.attachEvent = (function(origAttachEvent) {
+ return function(e, fn) {
+ if (isFileChange(this, e)) {
+ wrapFileApi(this);
+ origAttachEvent.apply(this, [e, changeFnWrapper(fn)]);
+ } else {
+ origAttachEvent.apply(this, [e, fn]);
+ }
+ }
+ })(HTMLInputElement.prototype.attachEvent);
+ }
+
+ window.FormData = FormData = function() {
+ return {
+ append: function(key, val, name) {
+ this.data.push({
+ key: key,
+ val: val,
+ name: name
+ });
+ },
+ data: [],
+ __isShim: true
+ };
+ };
+
+ (function () {
+ //load FileAPI
+ if (!window.FileAPI || !FileAPI.upload) {
+ var base = '', script = document.createElement('script'), allScripts = document.getElementsByTagName('script'), i, index, src;
+ if (window.FileAPI && window.FileAPI.jsPath) {
+ base = window.FileAPI.jsPath;
+ } else {
+ for (i = 0; i < allScripts.length; i++) {
+ src = allScripts[i].src;
+ index = src.indexOf('angular-file-upload-shim.js')
+ if (index == -1) {
+ index = src.indexOf('angular-file-upload-shim.min.js');
+ }
+ if (index > -1) {
+ base = src.substring(0, index);
+ break;
+ }
+ }
+ }
+
+ if (!window.FileAPI || FileAPI.staticPath == null) {
+ FileAPI = {
+ staticPath: base
+ }
+ }
+
+ script.setAttribute('src', base + "FileAPI.min.js");
+ document.getElementsByTagName('head')[0].appendChild(script);
+ }
+ })();
+}})();
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-shim.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-shim.min.js
new file mode 100644
index 0000000..e76e175
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/angular-file-upload-shim.min.js
@@ -0,0 +1,2 @@
+/*! 1.1.10 */
+!function(){if(window.XMLHttpRequest&&(XMLHttpRequest=window.FormData?function(a){return function(){var b=new a;return b.send=function(a){return function(){if(arguments[0]instanceof FormData&&arguments[0].__setXHR_){var c=arguments[0];c.__setXHR_(b)}a.apply(b,arguments)}}(b.send),b}}(XMLHttpRequest):function(a){return function(){var b=new a,c=b.send;return b.__requestHeaders=[],b.open=function(a){return b.upload={addEventListener:function(a,c){"progress"==a&&(b.__progress=c)}},function(c,d,e){a.apply(b,[c,d,e]),b.__url=d}}(b.open),b.getResponseHeader=function(a){return function(c){return b.__fileApiXHR?b.__fileApiXHR.getResponseHeader(c):a.apply(b,[c])}}(b.getResponseHeader),b.getAllResponseHeaders=function(a){return function(){return b.__fileApiXHR?b.__fileApiXHR.getAllResponseHeaders():a.apply(b)}}(b.getAllResponseHeaders),b.abort=function(a){return function(){return b.__fileApiXHR?b.__fileApiXHR.abort():null==a?null:a.apply(b)}}(b.abort),b.send=function(){if(null!=arguments[0]&&arguments[0].__isShim&&arguments[0].__setXHR_){var a=arguments[0];if(arguments[0].__setXHR_){var a=arguments[0];a.__setXHR_(b)}var d={url:b.__url,complete:function(a,c){Object.defineProperty(b,"status",{get:function(){return c.status}}),Object.defineProperty(b,"statusText",{get:function(){return c.statusText}}),Object.defineProperty(b,"readyState",{get:function(){return 4}}),Object.defineProperty(b,"response",{get:function(){return c.response}}),Object.defineProperty(b,"responseText",{get:function(){return c.responseText}}),b.__fileApiXHR=c,b.onreadystatechange()},progress:function(a){b.__progress(a)},headers:b.__requestHeaders};d.data={},d.files={};for(var e=0;e<a.data.length;e++){var f=a.data[e];null!=f.val&&null!=f.val.name&&null!=f.val.size&&null!=f.val.type?d.files[f.key]=f.val:d.data[f.key]=f.val}setTimeout(function(){b.__fileApiXHR=FileAPI.upload(d)},1)}else c.apply(b,arguments)},b}}(XMLHttpRequest)),!window.FormData){var a=!1;try{var b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");b&&(a=!0)}catch(c){void 0!=navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0)}var d=function(b){if(!b.__isWrapped&&(null!=b.getAttribute("ng-file-select")||null!=b.getAttribute("data-ng-file-select"))){var c=document.createElement("div");c.innerHTML='<div class="js-fileapi-wrapper" style="position:relative; overflow:hidden"></div>',c=c.firstChild;var d=b.parentNode;d.insertBefore(c,b),d.removeChild(b),c.appendChild(b),a||c.appendChild(document.createTextNode("Flash is required")),b.__isWrapped=!0}},e=function(a){return function(b){var c=FileAPI.getFiles(b);b.target||(b.target={}),b.target.files=c,b.target.files.item=function(a){return b.target.files[a]||null},a(b)}},f=function(a,b){return("change"===b.toLowerCase()||"onchange"===b.toLowerCase())&&"file"==a.getAttribute("type")};HTMLInputElement.prototype.addEventListener&&(HTMLInputElement.prototype.addEventListener=function(a){return function(b,c,g,h){f(this,b)?(d(this),a.apply(this,[b,e(c),g,h])):a.apply(this,[b,c,g,h])}}(HTMLInputElement.prototype.addEventListener)),HTMLInputElement.prototype.attachEvent&&(HTMLInputElement.prototype.attachEvent=function(a){return function(b,c){f(this,b)?(d(this),a.apply(this,[b,e(c)])):a.apply(this,[b,c])}}(HTMLInputElement.prototype.attachEvent)),window.FormData=FormData=function(){return{append:function(a,b,c){this.data.push({key:a,val:b,name:c})},data:[],__isShim:!0}},function(){if(!window.FileAPI||!FileAPI.upload){var a,b,c,d="",e=document.createElement("script"),f=document.getElementsByTagName("script");if(window.FileAPI&&window.FileAPI.jsPath)d=window.FileAPI.jsPath;else for(a=0;a<f.length;a++)if(c=f[a].src,b=c.indexOf("angular-file-upload-shim.js"),-1==b&&(b=c.indexOf("angular-file-upload-shim.min.js")),b>-1){d=c.substring(0,b);break}window.FileAPI&&null!=FileAPI.staticPath||(FileAPI={staticPath:d}),e.setAttribute("src",d+"FileAPI.min.js"),document.getElementsByTagName("head")[0].appendChild(e)}}()}}();
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/FileAPI.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/FileAPI.min.js
new file mode 100644
index 0000000..7cc0ff4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/fileupload/FileAPI.min.js
@@ -0,0 +1,72 @@
+/**!
+ * FileAPI � a set of tools for working with files
+ *
+ * @author RubaXa <trash@rubaxa.org>
+ * @build lib/canvas-to-blob lib/FileAPI.core lib/FileAPI.Image lib/FileAPI.Form lib/FileAPI.XHR lib/FileAPI.Flash
+ */
+(function(a){var k=a.HTMLCanvasElement&&a.HTMLCanvasElement.prototype,g;if(g=a.Blob)try{g=Boolean(new Blob)}catch(j){g=!1}var m=g;if(g=m)if(g=a.Uint8Array)try{g=100===(new Blob([new Uint8Array(100)])).size}catch(f){g=!1}var c=g,e=a.BlobBuilder||a.WebKitBlobBuilder||a.MozBlobBuilder||a.MSBlobBuilder,q=(m||e)&&a.atob&&a.ArrayBuffer&&a.Uint8Array&&function(a){var l,f,u,g;l=0<=a.split(",")[0].indexOf("base64")?atob(a.split(",")[1]):decodeURIComponent(a.split(",")[1]);f=new ArrayBuffer(l.length);u=new Uint8Array(f);
+for(g=0;g<l.length;g+=1)u[g]=l.charCodeAt(g);a=a.split(",")[0].split(":")[1].split(";")[0];if(m)return new Blob([c?u:f],{type:a});u=new e;u.append(f);return u.getBlob(a)};a.HTMLCanvasElement&&!k.toBlob&&(k.mozGetAsFile?k.toBlob=function(a,c){a(this.mozGetAsFile("blob",c))}:k.toDataURL&&q&&(k.toBlob=function(a,c){a(q(this.toDataURL(c)))}));"function"===typeof define&&define.amd?define(function(){return q}):a.dataURLtoBlob=q})(this);
+(function(a,k){function g(b,E,a){if(b)if(l(b))for(var d=0,c=b.length;d<c;d++)d in b&&E.call(a,b[d],d,b);else for(d in b)b.hasOwnProperty(d)&&E.call(a,b[d],d,b)}function j(b,d,a){if(b){var c=h.uid(b);D[c]||(D[c]={});g(d.split(/\s+/),function(d){n?n.event.add(b,d,a):(D[c][d]||(D[c][d]=[]),D[c][d].push(a),b.addEventListener?b.addEventListener(d,a,!1):b.attachEvent?b.attachEvent("on"+d,a):b["on"+d]=a)})}}function m(b,d,a){if(b){var c=h.uid(b),e=D[c]||{};g(d.split(/\s+/),function(d){if(n)n.event.remove(b,
+d,a);else{for(var E=e[d]||[],c=E.length;c--;)if(E[c]===a){E.splice(c,1);break}b.addEventListener?b.removeEventListener(d,a,!1):b.detachEvent?b.detachEvent("on"+d,a):b["on"+d]=null}})}}function f(b,d,a){j(b,d,function P(c){m(b,d,P);a(c)})}function c(b,d,a,c,e){b={type:a.type||a,target:b,result:c};h.extend(b,e);d(b)}function e(b,d,a,e){if(h.isFile(b)&&p&&p.prototype["readAs"+a]){var n=new p;j(n,K,function Q(a){var e=a.type;"progress"==e?c(b,d,a,a.target.result,{loaded:a.loaded,total:a.total}):"loadend"==
+e?(m(n,K,Q),n=null):c(b,d,a,a.target.result)});try{if(e)n["readAs"+a](e,b);else n["readAs"+a](b)}catch(l){c(b,d,"error",k,{error:l.toString()})}}else c(b,d,"error",k,{error:"filreader_not_support_"+a})}function q(b){var d;b.getAsEntry?d=b.getAsEntry():b.webkitGetAsEntry&&(d=b.webkitGetAsEntry());return d}function t(b,d){if(b)if(b.isFile)b.file(function(b){d(!1,[b])},function(){d("entry_file")});else if(b.isDirectory){var a=[];b.createReader().readEntries(function(b){h.afor(b,function(b,c){t(c,function(c,
+e){c||(a=a.concat(e));b?b():d(!1,a)})})},function(){d("directory_reader")})}else t(q(b),d);else d("empty_entry")}function l(b){return"object"==typeof b&&b&&"length"in b}function A(b){b.target||(b.target=a.event&&a.event.srcElement||M);3===b.target.nodeType&&(b.target=event.target.parentNode);return b}var u=1,C=function(){},s=navigator.userAgent,y=a.createObjectURL&&a||a.URL&&URL.revokeObjectURL&&URL||a.webkitURL&&webkitURL,r=a.Blob,v=a.File,p=a.FileReader,w=a.FormData,d=a.XMLHttpRequest,n=a.jQuery,
+x=!(!v||!p||!a.Uint8Array&&!w&&!d.prototype.sendAsBinary)&&!(/safari\//i.test(s)&&!/chrome\//i.test(s)&&/windows/i.test(s)),s=x&&"withCredentials"in new d,r=x&&!!r&&!(!r.prototype.webkitSlice&&!r.prototype.mozSlice&&!r.prototype.slice),M=a.document,F=a.dataURLtoBlob,T=/img/i,U=/canvas/i,V=/img|canvas/,L=/input/i,I=/^data:[^,]+,/,G=Math.pow,W=Math.round,z=Number,w=function(b){return W(b*this)},H=new z(1024),N=new z(G(H,2)),J=new z(G(H,3)),G=new z(G(H,4)),D={},O=[],K="abort progress error load loadend",
+X="status statusText readyState response responseXML responseText responseBody".split(" "),h={version:"1.2.5",cors:!1,html5:!0,debug:!1,pingUrl:!1,withCredentials:!0,staticPath:"./",flashUrl:0,flashImageUrl:0,accept:{"image/*":"art bm bmp dwg dxf cbr cbz fif fpx gif ico iefs jfif jpe jpeg jpg jps jut mcf nap nif pbm pcx pgm pict pm png pnm qif qtif ras rast rf rp svf tga tif tiff xbm xbm xpm xwd","audio/*":"m4a flac aac rm mpa wav wma ogg mp3 mp2 m3u mod amf dmf dsm far gdm imf it m15 med okt s3m stm sfx ult uni xm sid ac3 dts cue aif aiff wpl ape mac mpc mpp shn wv nsf spc gym adplug adx dsp adp ymf ast afc hps xs",
+"video/*":"m4v 3gp nsv ts ty strm rm rmvb m3u ifo mov qt divx xvid bivx vob nrg img iso pva wmv asf asx ogm m2v avi bin dat dvr-ms mpg mpeg mp4 mkv avc vp3 svq3 nuv viv dv fli flv wpl"},chunkSize:0,chunkUploadRetry:0,chunkNetworkDownRetryTimeout:2E3,KB:(H.from=w,H),MB:(N.from=w,N),GB:(J.from=w,J),TB:(G.from=w,G),expando:"fileapi"+(new Date).getTime(),uid:function(b){return b?b[h.expando]=b[h.expando]||h.uid():(++u,h.expando+u)},log:function(){h.debug&&(a.console&&console.log)&&(console.log.apply?
+console.log.apply(console,arguments):console.log([].join.call(arguments," ")))},getXHR:function(){var b;if(d)b=new d;else if(a.ActiveXObject)try{b=new ActiveXObject("MSXML2.XMLHttp.3.0")}catch(c){b=new ActiveXObject("Microsoft.XMLHTTP")}return b},isArray:l,support:{dnd:s&&"ondrop"in M.createElement("div"),cors:s,html5:x,chunked:r,dataURI:!0},event:{on:j,off:m,one:f,fix:A},throttle:function(b,d){var c,e;return function(){e=arguments;c||(b.apply(a,e),c=setTimeout(function(){c=0;b.apply(a,e)},d))}},
+F:function(){},parseJSON:function(b){return a.JSON&&JSON.parse?JSON.parse(b):(new Function("return ("+b.replace(/([\r\n])/g,"\\$1")+");"))()},trim:function(b){b=String(b);return b.trim?b.trim():b.replace(/^\s+|\s+$/g,"")},defer:function(){var b=[],d,a,c={resolve:function(e,n){c.resolve=C;a=e||!1;for(d=n;n=b.shift();)n(a,d)},then:function(c){a!==k?c(a,d):b.push(c)}};return c},queue:function(b){var d=0,a=0,c=!1,e=!1,n={inc:function(){a++},next:function(){d++;setTimeout(n.check,0)},check:function(){d>=
+a&&!c&&n.end()},isFail:function(){return c},fail:function(){!c&&b(c=!0)},end:function(){e||(e=!0,b())}};return n},each:g,afor:function(b,d){var a=0,c=b.length;l(b)&&c--?function B(){d(c!=a&&B,b[a],a++)}():d(!1)},extend:function(b){g(arguments,function(d){g(d,function(d,a){b[a]=d})});return b},isFile:function(b){return x&&b&&b instanceof v},isCanvas:function(b){return b&&U.test(b.nodeName)},getFilesFilter:function(b){return(b="string"==typeof b?b:b.getAttribute&&b.getAttribute("accept")||"")?RegExp("("+
+b.replace(/\./g,"\\.").replace(/,/g,"|")+")$","i"):/./},readAsDataURL:function(b,d){h.isCanvas(b)?c(b,d,"load",h.toDataURL(b)):e(b,d,"DataURL")},readAsBinaryString:function(b,d){p&&p.prototype.readAsBinaryString?e(b,d,"BinaryString"):e(b,function(b){if("load"==b.type)try{b.result=h.toBinaryString(b.result)}catch(a){b.type="error",b.message=a.toString()}d(b)},"DataURL")},readAsArrayBuffer:function(b,d){e(b,d,"ArrayBuffer")},readAsText:function(b,d,a){a||(a=d,d="utf-8");e(b,a,"Text",d)},toDataURL:function(b){if("string"==
+typeof b)return b;if(b.toDataURL)return b.toDataURL("image/png")},toBinaryString:function(b){return a.atob(h.toDataURL(b).replace(I,""))},readAsImage:function(b,d,a){if(h.isFile(b))if(y){var e=y.createObjectURL(b);e===k?c(b,d,"error"):h.readAsImage(e,d,a)}else h.readAsDataURL(b,function(e){"load"==e.type?h.readAsImage(e.result,d,a):(a||"error"==e.type)&&c(b,d,e,null,{loaded:e.loaded,total:e.total})});else h.isCanvas(b)?c(b,d,"load",b):T.test(b.nodeName)?b.complete?c(b,d,"load",b):f(b,"error abort load",
+function B(a){"load"==a.type&&y&&y.revokeObjectURL(b.src);m(b,"error abort load",B);c(b,d,a,b)}):b.iframe?c(b,d,{type:"error"}):(e=new Image,e.src=b.dataURL||b,h.readAsImage(e,d,a))},checkFileObj:function(b){var d={},a=h.accept;"object"==typeof b?d=b:d.name=(b+"").split(/\\|\//g).pop();null==d.type&&(d.type=d.name.split(".").pop());g(a,function(b,a){b=RegExp(b.replace(/\s/g,"|"),"i");b.test(d.type)&&(d.type=a.split("/")[0]+"/"+d.type)});return d},getDropFiles:function(b,d){var a=[],c=(b.originalEvent||
+b||"").dataTransfer||{},e=l(c.items)&&c.items[0]&&q(c.items[0]),n=h.queue(function(){d(a)});g((e?c.items:c.files)||[],function(b){n.inc();if(e)t(b,function(b,d){!b&&a.push.apply(a,d);n.next()});else{var d=function(d){d&&a.push(b);n.next()};if(!b.type&&0==b.size%4096&&102400>=b.size)if(p)try{var c=new p;f(c,K,function(b){b="error"!=b.type;d(b);b&&c.abort()});c.readAsDataURL(b)}catch(l){d(!1)}else d(null);else d(!0)}});n.check()},getFiles:function(b,d,a){var c=[];if(a)return h.filterFiles(h.getFiles(b),
+d,a),null;b.jquery&&(b.each(function(){c=c.concat(h.getFiles(this))}),b=c,c=[]);"string"==typeof d&&(d=h.getFilesFilter(d));b.originalEvent?b=A(b.originalEvent):b.srcElement&&(b=A(b));b.dataTransfer?b=b.dataTransfer:b.target&&(b=b.target);b.files?c=b.files:!x&&L.test(b&&b.tagName)?h.trim(b.value)&&(c=[h.checkFileObj(b.value)],c[0].blob=b,c[0].iframe=!0):l(b)&&(c=b);return h.filter(c,function(b){return!d||d.test(b.name)})},getInfo:function(b,d){var a={},c=O.concat();h.isFile(b)?function B(){var e=
+c.shift();e?e.test(b.type)?e(b,function(b,c){b?d(b):(h.extend(a,c),B())}):B():d(!1,a)}():d("not_support",a)},addInfoReader:function(b,d){d.test=function(d){return b.test(d)};O.push(d)},filter:function(b,d){for(var a=[],c=0,e=b.length,n;c<e;c++)c in b&&(n=b[c],d.call(n,n,c,b)&&a.push(n));return a},filterFiles:function(b,d,a){if(b.length){var c=b.concat(),e,n=[],l=[];(function R(){c.length?(e=c.shift(),h.getInfo(e,function(b,a){(d(e,b?!1:a)?n:l).push(e);R()})):a(n,l)})()}else a([],b)},upload:function(b){b=
+h.extend({prepare:h.F,beforeupload:h.F,upload:h.F,fileupload:h.F,fileprogress:h.F,filecomplete:h.F,progress:h.F,complete:h.F,pause:h.F,chunkSize:h.chunkSize,chunkUpoloadRetry:h.chunkUploadRetry},b);b.imageAutoOrientation&&!b.imageTransform&&(b.imageTransform={rotate:"auto"});var d=new h.XHR(b),a=this._getFilesDataArray(b.files),c=0,e=0,n=this,l,f=!1;g(a,function(b){c+=b.size});d.files=[];g(a,function(b){d.files.push(b.file)});d.total=c;d.loaded=0;b.beforeupload(d,b);(l=function S(){var l=a.shift(),
+t=l&&l.file,x=!1,u={};g(b,function(b,d){b&&"object"===typeof b&&(b=h.extend({},b));u[d]=b});t&&t.name===h.expando&&(t=null,h.log("[warn] FileAPI.upload() \u2014 called without files"));("abort"!=d.statusText||d.current)&&l?(f=!1,(d.currentFile=t)&&b.prepare(t,u),this._getFormData(u,l,function(a){e||b.upload(d,b);var f=new h.XHR(h.extend({},u,{upload:t?function(){b.fileupload(t,f,u)}:C,progress:t?function(a){x||(b.fileprogress({type:"progress",total:l.total=a.total,loaded:l.loaded=a.loaded},t,f,u),
+b.progress({type:"progress",total:c,loaded:d.loaded=e+l.size*(a.loaded/a.total)|0},t,f,u))}:C,complete:function(a){x=!0;g(X,function(b){d[b]=f[b]});t&&(l.loaded=l.total,this.progress(l),e+=l.size,d.loaded=e,b.filecomplete(a,f,t,u));S.call(n)}}));d.abort=function(b){this.current=b;f.abort()};f.send(a)})):(b.complete(200==d.status||201==d.status?!1:d.statusText||"error",d,b),f=!0)}).call(this);d.append=function(b,e){b=h._getFilesDataArray([].concat(b));g(b,function(b){c+=b.size;d.files.push(b.file);
+e?a.unshift(b):a.push(b)});f&&l.call(n)};d.remove=function(b){var d=-1;g(a,function(c){d++;if(c.file==b)return a.splice(d,1)})};return d},_getFilesDataArray:function(b){var d=[],a={};if(L.test(b&&b.tagName)){var c=h.getFiles(b);a[b.name||"file"]=null!==b.getAttribute("multiple")?c:c[0]}else l(b)&&L.test(b[0]&&b[0].tagName)?g(b,function(b){a[b.name||"file"]=h.getFiles(b)}):a=b;g(a,function B(b,a){l(b)?g(b,function(b){B(b,a)}):b&&b.name&&d.push({name:a,file:b,size:b.size,total:b.size,loaded:0})});d.length||
+d.push({file:{name:h.expando}});return d},_getFormData:function(b,d,a){var c=d.file,e=d.name,n=c.name,l=c.type;d=h.support.transform&&b.imageTransform;var f=new h.Form,t=h.queue(function(){a(f)}),x=d&&(0<parseInt(d.maxWidth||d.minWidth||d.width,10)||d.rotate);h.Image&&d&&(/image/.test(c.type)||V.test(c.nodeType))?(t.inc(),x&&(d=[d]),h.Image.transform(c,d,b.imageAutoOrientation,function(d,a){x&&!d?(!F&&!h.flashEngine&&(a[0]=h.toBinaryString(a[0]),f.multipart=!0),f.append(e,a[0],n,l)):(d||(g(a,function(b,
+d){!F&&!h.flashEngine&&(b=h.toBinaryString(b),f.multipart=!0);f.append(e+"["+d+"]",b,n,l)}),e+="[original]"),(d||b.imageOriginal)&&f.append(e,c,n,l));t.next()})):n!==h.expando&&f.append(e,c,n);g(b.data,function Y(b,d){"object"==typeof b?g(b,function(b,a){Y(b,d+"["+a+"]")}):f.append(d,b)});t.check()},reset:function(b){var d,a;n?(a=n(b).clone(!0).insertBefore(b).val("")[0],n(b).remove()):(d=b.parentNode,a=d.insertBefore(b.cloneNode(!0),b),a.value="",d.removeChild(b),g(D[h.uid(b)],function(d,c){g(d,
+function(d){m(b,c,d);j(a,c,d)})}));return a},load:function(b,d){var a=h.getXHR();a?(a.open("GET",b,!0),a.overrideMimeType&&a.overrideMimeType("text/plain; charset=x-user-defined"),j(a,"progress",function(b){b.lengthComputable&&d({type:b.type,loaded:b.loaded,total:b.total},a)}),a.onreadystatechange=function(){if(4==a.readyState)if(a.onreadystatechange=null,200==a.status){b=b.split("/");var c={name:b[b.length-1],size:a.getResponseHeader("Content-Length"),type:a.getResponseHeader("Content-Type")};c.dataURL=
+"data:"+c.type+";base64,"+h.encode64(a.responseBody||a.responseText);d({type:"load",result:c})}else d({type:"error"})},a.send(null)):d({type:"error"});return a},encode64:function(b){var d="",a=0;for("string"!==typeof b&&(b=String(b));a<b.length;){var c=b.charCodeAt(a++)&255,e=b.charCodeAt(a++)&255,n=b.charCodeAt(a++)&255,l=c>>2,c=(c&3)<<4|e>>4;isNaN(e)?e=n=64:(e=(e&15)<<2|n>>6,n=isNaN(n)?64:n&63);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(l)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(c)+
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(n)}return d}};h.addInfoReader(/^image/,function(b,d){if(!b.__dimensions){var a=b.__dimensions=h.defer();h.readAsImage(b,function(b){var d=b.target;a.resolve("load"==b.type?!1:"error",{width:d.width,height:d.height})})}b.__dimensions.then(d)});h.event.dnd=function(b,d,a){var c,e;a||(a=d,d=h.F);p?(j(b,"dragenter dragleave dragover",function(b){for(var a=
+((b.originalEvent||b||"").dataTransfer||{}).types,n=a&&a.length;n--;)~a[n].indexOf("File")&&(b.preventDefault(),e!==b.type&&(e=b.type,"dragleave"!=e&&d.call(b.currentTarget,!0,b),clearTimeout(c),c=setTimeout(function(){d.call(b.currentTarget,"dragleave"!=e,b)},50)))}),j(b,"drop",function(b){b.preventDefault();e=0;d.call(b.currentTarget,!1,b);h.getDropFiles(b,function(d){a.call(b.currentTarget,d,b)})})):h.log("Drag'n'Drop -- not supported")};n&&!n.fn.dnd&&(n.fn.dnd=function(b,d){return this.each(function(){h.event.dnd(this,
+b,d)})});a.FileAPI=h.extend(h,a.FileAPI);h.flashUrl||(h.flashUrl=h.staticPath+"FileAPI.flash.swf");h.flashImageUrl||(h.flashImageUrl=h.staticPath+"FileAPI.flash.image.swf")})(window);
+(function(a,k,g){function j(a,c){if(!(this instanceof j))return new j(a);this.file=a;this.better=!c;this.matrix={sx:0,sy:0,sw:0,sh:0,dx:0,dy:0,dw:0,dh:0,resize:0,deg:0}}var m=Math.min,f=Math.round,c=!1,e={8:270,3:180,6:90};try{c=-1<k.createElement("canvas").toDataURL("image/png").indexOf("data:image/png")}catch(q){}j.prototype={constructor:j,set:function(c){a.extend(this.matrix,c);return this},crop:function(a,c,e,f){e===g&&(e=a,f=c,a=c=0);return this.set({sx:a,sy:c,sw:e,sh:f||e})},resize:function(a,
+c,e){"string"==typeof c&&(e=c,c=a);return this.set({dw:a,dh:c,resize:e})},preview:function(a,c){return this.set({dw:a,dh:c||a,resize:"preview"})},rotate:function(a){return this.set({deg:a})},_load:function(c,e){var f=this;a.readAsImage(c,function(a){e.call(f,"load"!=a.type,a.result)})},_apply:function(a,c){var e=k.createElement("canvas"),f=this.getMatrix(a),g=e.getContext("2d"),m=f.deg,q=f.dw,r=f.dh,v=a.width,p=a.height,j,d=a;if(this.better)for(;2<Math.min(v/q,p/r);)v=~~(v/2+0.5),p=~~(p/2+0.5),j=
+k.createElement("canvas"),j.width=v,j.height=p,d!==a?(j.getContext("2d").drawImage(d,0,0,d.width,d.height,0,0,v,p),d=j):(d=j,d.getContext("2d").drawImage(a,f.sx,f.sy,f.sw,f.sh,0,0,v,p),f.sx=f.sy=f.sw=f.sh=0);e.width=!(m%180)?q:r;e.height=m%180?q:r;g.rotate(m*Math.PI/180);g.drawImage(d,f.sx,f.sy,f.sw||d.width,f.sh||d.height,180==m||270==m?-q:0,90==m||180==m?-r:0,q,r);c.call(this,!1,e)},getMatrix:function(c){var e=a.extend({},this.matrix),g=e.sw=e.sw||c.width;c=e.sh=e.sh||c.height;var q=e.dw=e.dw||
+e.sw,k=e.dh=e.dh||e.sh,s=g/c,j=q/k,r=e.resize;if("preview"==r){if(q!=g||k!=c)if(j>=s?(s=g,r=s/j):(r=c,s=r*j),s!=g||r!=c)e.sx=~~((g-s)/2),e.sy=~~((c-r)/2),g=s,c=r}else r&&("min"==r?(q=f(s<j?m(g,q):k*s),k=f(s<j?q/s:m(c,k))):(q=f(s>=j?m(g,q):k*s),k=f(s>=j?q/s:m(c,k))));e.sw=g;e.sh=c;e.dw=q;e.dh=k;return e},_trans:function(a){this._load(this.file,function(c,e){c?a(c):this._apply(e,a)})},get:function(c){if(a.support.transform){var f=this;"auto"==f.matrix.deg?a.getInfo(this.file,function(a,g){f.matrix.deg=
+e[g&&g.exif&&g.exif.Orientation]||0;f._trans(c)}):f._trans(c)}else c("not_support")},toData:function(a){this.get(a)}};j.exifOrientation=e;j.transform=function(c,e,f,q){a.getInfo(c,function(m,k){var y={},r=a.queue(function(a){q(a,y)});m?r.fail():a.each(e,function(a,e){if(!r.isFail()){var l=j(k.nodeType?k:c);if("function"==typeof a)a(k,l);else if(a.width)l[a.preview?"preview":"resize"](a.width,a.height,a.type);else a.maxWidth&&(k.width>a.maxWidth||k.height>a.maxHeight)&&l.resize(a.maxWidth,a.maxHeight,
+"max");a.rotate===g&&f&&(a.rotate="auto");l.rotate(a.rotate);r.inc();l.toData(function(d,a){d?r.fail():(y[e]=a,r.next())})}})})};a.support.canvas=a.support.transform=c;a.Image=j})(FileAPI,document);
+(function(a,k,g){var j=k.encodeURIComponent,m=k.FormData;k=function(){this.items=[]};k.prototype={append:function(a,c,e,g){this.items.push({name:a,blob:c&&c.blob||(void 0==c?"":c),file:c&&(e||c.name),type:c&&(g||c.type)})},each:function(a){for(var c=0,e=this.items.length;c<e;c++)a.call(this,this.items[c])},toData:function(f,c){c._chunked=a.support.chunked&&0<c.chunkSize&&1==a.filter(this.items,function(a){return a.file}).length;a.support.html5?this.multipart||!m?(a.log("FileAPI.Form.toMultipartData"),
+this.toMultipartData(f)):c._chunked?(a.log("FileAPI.Form.toPlainData"),this.toPlainData(f)):(a.log("FileAPI.Form.toFormData"),this.toFormData(f)):(a.log("FileAPI.Form.toHtmlData"),this.toHtmlData(f))},_to:function(f,c,e,g){var m=a.queue(function(){c(f)});this.each(function(a){e(a,f,m,g)});m.check()},toHtmlData:function(f){this._to(g.createDocumentFragment(),f,function(c,e){var f=c.blob,m;c.file?(a.reset(f),f.name=c.name,e.appendChild(f)):(m=g.createElement("input"),m.name=c.name,m.type="hidden",m.value=
+f,e.appendChild(m))})},toPlainData:function(a){this._to({},a,function(a,e,f){a.file&&(e.type=a.file);a.blob.toBlob?(f.inc(),a.blob.toBlob(function(g){e.name=a.name;e.file=g;e.size=g.length;e.type=a.type;f.next()},"image/png")):a.file?(e.name=a.blob.name,e.file=a.blob,e.size=a.blob.size,e.type=a.type):(e.params||(e.params=[]),e.params.push(encodeURIComponent(a.name)+"="+encodeURIComponent(a.blob)));e.start=-1;e.end=e.file.FileAPIReadPosition||-1;e.retry=0})},toFormData:function(a){this._to(new m,a,
+function(a,e,f){a.file&&e.append("_"+a.name,a.file);a.blob&&a.blob.toBlob?(f.inc(),a.blob.toBlob(function(g){e.append(a.name,g,a.file);f.next()},"image/png")):a.file?e.append(a.name,a.blob,a.file):e.append(a.name,a.blob)})},toMultipartData:function(f){this._to([],f,function(c,e,f,g){var l=!!c.file,m=c.blob,k=function(a){e.push("--_"+g+('\r\nContent-Disposition: form-data; name="'+c.name+'"'+(l?'; filename="'+j(c.file)+'"':"")+(l?"\r\nContent-Type: "+(c.type||"application/octet-stream"):"")+"\r\n\r\n"+
+(l?a:j(a))+"\r\n"));f.next()};f.inc();a.isFile(m)?a.readAsBinaryString(m,function(a){"load"==a.type&&k(a.result)}):k(m)},a.expando)}};a.Form=k})(FileAPI,window,document);
+(function(a,k){var g=function(){},j=function(a){this.uid=k.uid();this.xhr={abort:g,getResponseHeader:g,getAllResponseHeaders:g};this.options=a};j.prototype={status:0,statusText:"",getResponseHeader:function(a){return this.xhr.getResponseHeader(a)},getAllResponseHeaders:function(){return this.xhr.getAllResponseHeaders()||{}},end:function(m,f){var c=this,e=c.options;c.end=c.abort=g;c.status=m;f&&(c.statusText=f);k.log("xhr.end:",m,f);e.complete(200==m||201==m?!1:c.statusText||"unknown",c);c.xhr&&c.xhr.node&&
+setTimeout(function(){var e=c.xhr.node;try{e.parentNode.removeChild(e)}catch(f){}try{delete a[c.uid]}catch(g){}a[c.uid]=c.xhr.node=null},9)},abort:function(){this.end(0,"abort");this.xhr&&(this.xhr.aborted=!0,this.xhr.abort())},send:function(a){var f=this,c=this.options;a.toData(function(a){c.upload(c,f);f._send.call(f,c,a)},c)},_send:function(g,f){var c=this,e,q=c.uid,j=g.url;k.log("XHR._send:",f);j+=(~j.indexOf("?")?"&":"?")+k.uid();f.nodeName?(g.upload(g,c),e=document.createElement("div"),e.innerHTML=
+'<form target="'+q+'" action="'+j+'" method="POST" enctype="multipart/form-data" style="position: absolute; top: -1000px; overflow: hidden; width: 1px; height: 1px;"><iframe name="'+q+'" src="javascript:false;"></iframe><input value="'+q+'" name="callback" type="hidden"/></form>',c.xhr.abort=function(){var a=e.getElementsByName("iframe")[0];if(a)try{a.stop?a.stop():a.contentWindow.stop?a.contentWindow.stop():a.contentWindow.document.execCommand("Stop")}catch(c){}e=null},j=e.getElementsByTagName("form")[0],
+j.appendChild(f),k.log(j.parentNode.innerHTML),document.body.appendChild(e),c.xhr.node=e,a[q]=function(a,f,g){c.readyState=4;c.responseText=g;c.end(a,f);e=null},c.readyState=2,j.submit(),j=null):this.xhr&&this.xhr.aborted?k.log("Error: already aborted"):(e=c.xhr=k.getXHR(),f.params&&(j+=(0>j.indexOf("?")?"?":"&")+f.params.join("&")),e.open("POST",j,!0),k.withCredentials&&(e.withCredentials="true"),(!g.headers||!g.headers["X-Requested-With"])&&e.setRequestHeader("X-Requested-With","XMLHttpRequest"),
+k.each(g.headers,function(a,c){e.setRequestHeader(c,a)}),g._chunked?(e.upload&&e.upload.addEventListener("progress",function(a){f.retry||g.progress({type:a.type,total:f.size,loaded:f.start+a.loaded,totalSize:f.size},c,g)},!1),e.onreadystatechange=function(){c.status=e.status;c.statusText=e.statusText;c.readyState=e.readyState;if(4==e.readyState){for(var a in{"":1,XML:1,Text:1,Body:1})c["response"+a]=e["response"+a];e.onreadystatechange=null;if(!e.status||0<e.status-201)if(k.log("Error: "+e.status),
+(!e.status&&!e.aborted||500==e.status||416==e.status)&&++f.retry<=g.chunkUploadRetry){a=e.status?0:k.chunkNetworkDownRetryTimeout;g.pause(f.file,g);var j=parseInt(e.getResponseHeader("X-Last-Known-Byte"),10);k.log("X-Last-Known-Byte: "+j);f.end=j?j:f.start-1;setTimeout(function(){c._send(g,f)},a)}else c.end(e.status);else f.retry=0,f.end==f.size-1?c.end(e.status):(j=parseInt(e.getResponseHeader("X-Last-Known-Byte"),10),k.log("X-Last-Known-Byte: "+j),j&&(f.end=j),f.file.FileAPIReadPosition=f.end,setTimeout(function(){c._send(g,
+f)},0));e=null}},f.start=f.end+1,f.end=Math.max(Math.min(f.start+g.chunkSize,f.size)-1,f.start),(q="slice")in f.file||(q="mozSlice")in f.file||(q="webkitSlice"),e.setRequestHeader("Content-Range","bytes "+f.start+"-"+f.end+"/"+f.size),e.setRequestHeader("Content-Disposition","attachment; filename="+encodeURIComponent(f.name)),e.setRequestHeader("Content-Type",f.type||"application/octet-stream"),q=f.file[q](f.start,f.end+1),e.send(q),q=null):(e.upload&&e.upload.addEventListener("progress",k.throttle(function(a){g.progress(a,
+c,g)},100),!1),e.onreadystatechange=function(){c.status=e.status;c.statusText=e.statusText;c.readyState=e.readyState;if(4==e.readyState){for(var a in{"":1,XML:1,Text:1,Body:1})c["response"+a]=e["response"+a];e.onreadystatechange=null;c.end(e.status);e=null}},k.isArray(f)?(e.setRequestHeader("Content-Type","multipart/form-data; boundary=_"+k.expando),f=f.join("")+"--_"+k.expando+"--",e.sendAsBinary?e.sendAsBinary(f):(q=Array.prototype.map.call(f,function(a){return a.charCodeAt(0)&255}),e.send((new Uint8Array(q)).buffer))):
+e.send(f)))}};k.XHR=j})(window,FileAPI);
+(function(a,k,g){var j=a.support,m=k.navigator,f=m.mimeTypes,c=!1;if(m.plugins&&"object"==typeof m.plugins["Shockwave Flash"])c=m.plugins["Shockwave Flash"].description&&!(f&&f["application/x-shockwave-flash"]&&!f["application/x-shockwave-flash"].enabledPlugin);else try{c=!(!k.ActiveXObject||!new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))}catch(e){a.log("ShockwaveFlash.ShockwaveFlash -- does not supported.")}j.flash=c;if(a.support.flash&&(!a.html5||!a.support.html5||a.cors&&!a.support.cors)){var q=
+function(a){return('<object id="#id#" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+(a.width||"100%")+'" height="'+(a.height||"100%")+'"><param name="movie" value="#src#" /><param name="flashvars" value="#flashvars#" /><param name="swliveconnect" value="true" /><param name="allowscriptaccess" value="always" /><param name="allownetworking" value="all" /><param name="menu" value="false" /><param name="wmode" value="#wmode#" /><embed flashvars="#flashvars#" swliveconnect="true" allownetworking="all" allowscriptaccess="always" name="#id#" src="#src#" width="'+
+(a.width||"100%")+'" height="'+(a.height||"100%")+'" menu="false" wmode="transparent" type="application/x-shockwave-flash"></embed></object>').replace(/#(\w+)#/ig,function(c,e){return a[e]})},t=function(a,c){if(a&&a.style){var e,f;for(e in c){f=c[e];"number"==typeof f&&(f+="px");try{a.style[e]=f}catch(g){}}}},l=function(d,c){a.each(c,function(a,c){var e=d[c];d[c]=function(){this.parent=e;return a.apply(this,arguments)}})},A=function(d){var c=d.wid=a.uid();p._fn[c]=d;return"FileAPI.Flash._fn."+c},
+u=function(a){try{p._fn[a.wid]=null,delete p._fn[a.wid]}catch(c){}},C=function(a,c){if(!v.test(a)){if(/^\.\//.test(a)||"/"!=a.charAt(0)){var e=location.pathname,e=e.substr(0,e.lastIndexOf("/"));a=(e+"/"+a).replace("/./","/")}"//"!=a.substr(0,2)&&(a="//"+location.host+a);v.test(a)||(a=location.protocol+a)}c&&(a+=(/\?/.test(a)?"&":"?")+c);return a},s=a.uid(),y=0,r={},v=/^https?:/i,p={_fn:{},init:function(){var d=g.body&&g.body.firstChild;if(d){do if(1==d.nodeType){a.log("FlashAPI.Flash.init...");var c=
+g.createElement("div");t(c,{top:1,right:1,width:5,height:5,position:"absolute"});d.parentNode.insertBefore(c,d);p.publish(c,s);return}while(d=d.nextSibling)}10>y&&setTimeout(p.init,50*++y)},publish:function(d,c){d.innerHTML=q({id:c,src:C(a.flashUrl,"r="+a.version),wmode:"transparent",flashvars:"callback=FileAPI.Flash.event&flashId="+c+"&storeKey="+navigator.userAgent.match(/\d/ig).join("")+"_"+a.version+(p.isReady||(a.pingUrl?"&ping="+a.pingUrl:""))})},ready:function(){p.ready=a.F;p.isReady=!0;p.patch();
+a.event.on(g,"mouseover",p.mouseover);a.event.on(g,"click",function(a){p.mouseover(a)&&(a.preventDefault?a.preventDefault():a.returnValue=!0)})},getWrapper:function(a){do if(/js-fileapi-wrapper/.test(a.className))return a;while((a=a.parentNode)&&a!==g.body)},mouseover:function(d){d=a.event.fix(d).target;if(/input/i.test(d.nodeName)&&"file"==d.type){var c=d.getAttribute(s);if("i"==c||"r"==c)return!1;if("p"!=c){d.setAttribute(s,"i");var c=g.createElement("div"),e=p.getWrapper(d);if(!e){a.log("flash.mouseover.error: js-fileapi-wrapper not found");
+return}t(c,{top:0,left:0,width:d.offsetWidth+100,height:d.offsetHeight+100,zIndex:"1000000",position:"absolute"});e.appendChild(c);p.publish(c,a.uid());d.setAttribute(s,"p")}return!0}},event:function(d){var c=d.type;if("ready"==c){try{p.getInput(d.flashId).setAttribute(s,"r")}catch(e){}p.ready();setTimeout(function(){p.mouseenter(d)},50);return!0}"ping"===c?a.log("(flash -> js).ping:",[d.status,d.savedStatus],d.error):"log"===c?a.log("(flash -> js).log:",d.target):c in p&&setTimeout(function(){a.log("Flash.event."+
+d.type+":",d);p[c](d)},1)},mouseenter:function(d){var c=p.getInput(d.flashId);if(c){p.cmd(d,"multiple",null!=c.getAttribute("multiple"));var e=[],f={};a.each((c.getAttribute("accept")||"").split(/,\s*/),function(d){a.accept[d]&&a.each(a.accept[d].split(" "),function(a){f[a]=1})});a.each(f,function(a,d){e.push(d)});p.cmd(d,"accept",e.length?e.join(",")+","+e.join(",").toUpperCase():"*")}},get:function(a){return g[a]||k[a]||g.embeds[a]},getInput:function(d){try{var c=p.getWrapper(p.get(d));if(c)return c.getElementsByTagName("input")[0]}catch(e){a.log('Can not find "input" by flashId:',
+d,e)}},select:function(d){var c=p.getInput(d.flashId),e=a.uid(c);d=d.target.files;a.each(d,function(d){a.checkFileObj(d)});r[e]=d;g.createEvent?(e=g.createEvent("Event"),e.initEvent("change",!0,!1),c.dispatchEvent(e)):g.createEventObject&&(e=g.createEventObject(),c.fireEvent("onchange",e))},cmd:function(d,c,e,f){try{return a.log("(js -> flash)."+c+":",e),p.get(d.flashId||d).cmd(c,e)}catch(g){a.log("(js -> flash).onError:",g),f||setTimeout(function(){p.cmd(d,c,e,!0)},50)}},patch:function(){a.flashEngine=
+a.support.transform=!0;l(a,{getFiles:function(d,c,e){if(e)return a.filterFiles(a.getFiles(d),c,e),null;var f=a.isArray(d)?d:r[a.uid(d.target||d.srcElement||d)];if(!f)return this.parent.apply(this,arguments);c&&(c=a.getFilesFilter(c),f=a.filter(f,function(a){return c.test(a.name)}));return f},getInfo:function(d,c){if(d&&!d.flashId)this.parent.apply(this,arguments);else{if(!d.__info){var e=d.__info=a.defer();p.cmd(d,"getFileInfo",{id:d.id,callback:A(function F(a,c){u(F);e.resolve(a,d.info=c)})})}d.__info.then(c)}}});
+a.support.transform=!0;a.Image&&l(a.Image.prototype,{get:function(a,c){this.set({scaleMode:c||"noScale"});this.parent(a)},_load:function(d,c){a.log("FileAPI.Image._load:",d);if(d&&!d.flashId)this.parent.apply(this,arguments);else{var e=this;a.getInfo(d,function(a){c.call(e,a,d)})}},_apply:function(d,c){a.log("FileAPI.Image._apply:",d);if(d&&!d.flashId)this.parent.apply(this,arguments);else{var e=this.getMatrix(d.info);p.cmd(d,"imageTransform",{id:d.id,matrix:e,callback:A(function F(f,k){a.log("FileAPI.Image._apply.callback:",
+f);u(F);if(f)c(f);else if(!a.support.dataURI||3E4<k.length){var j={width:!(e.deg%180)?e.dw:e.dh,height:e.deg%180?e.dw:e.dh,scale:e.scaleMode},l=c,m=function(){try{p.get(s).setImage(k)}catch(d){a.log('flash.setImage -- can not set "base64":',d)}},r,s=a.uid(),z=g.createElement("div");for(r in j)z.setAttribute("data-img-"+r,j[r]);t(z,j);z.innerHTML=q(a.extend({id:s,src:C(a.flashImageUrl,"r="+a.uid()),wmode:"opaque",flashvars:"scale="+j.scale+"&callback="+A(function J(){u(J);setTimeout(m,99);return!0})},
+j));l(!1,z);z=null}else{var v=new Image;a.event.one(v,"error abort load",function(a){c("load"!=a.type&&a.type,v);v=null});v.src="data:"+d.type+";base64,"+k}})})}},toData:function(d){var c=this.file,e=c.info,f=this.getMatrix(e);c&&!c.flashId?this.parent.apply(this,arguments):("auto"==f.deg&&(f.deg=a.Image.exifOrientation[e&&e.exif&&e.exif.Orientation]||0),d.call(this,!c.info,{id:c.id,flashId:c.flashId,name:c.name,type:c.type,matrix:f}))}});l(a.Form.prototype,{toData:function(d){for(var c=this.items,
+e=c.length;e--;)if(c[e].file&&c[e].blob&&!c[e].blob.flashId)return this.parent.apply(this,arguments);a.log("flash.Form.toData");d(c)}});l(a.XHR.prototype,{_send:function(c,e){if(e.nodeName||e.append&&a.support.html5||a.isArray(e)&&"string"===typeof e[0])return this.parent.apply(this,arguments);var f={},g={},j=this,k,l;a.each(e,function(a){a.file?(g[a.name]=a={id:a.blob.id,name:a.blob.name,matrix:a.blob.matrix,flashId:a.blob.flashId},l=a.id,k=a.flashId):f[a.name]=a.blob});if(!l&&!k)return this.parent.apply(this,
+arguments);a.log("flash.XHR._send:",k,l,g);j.xhr={headers:{},abort:function(){p.cmd(k,"abort",{id:l})},getResponseHeader:function(a){return this.headers[a]},getAllResponseHeaders:function(){return this.headers}};var m=a.queue(function(){p.cmd(k,"upload",{url:C(c.url),data:f,files:g,headers:c.headers,callback:A(function I(e){var f=e.type,g=e.result;a.log("flash.upload."+f+":",e);if("progress"==f)e.loaded=Math.min(e.loaded,e.total),e.lengthComputable=!0,c.progress(e);else if("complete"==f)u(I),"string"==
+typeof g&&(j.responseText=g.replace(/%22/g,'"').replace(/%5c/g,"\\").replace(/%26/g,"&").replace(/%25/g,"%")),j.end(e.status||200);else if("abort"==f||"error"==f)j.end(e.status||0,e.message),u(I)})})});a.each(g,function(c){m.inc();a.getInfo(c,m.next)});m.check()}})}};a.Flash=p;var w=new Image;a.event.one(w,"error load",function(){a.support.dataURI=!(1!=w.width||1!=w.height);w=null;p.init()});w.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}})(FileAPI,window,document);
+"undefined"!==typeof ajs&&ajs.loaded&&ajs.loaded("{fileapi}FileAPI.min");"function"===typeof define&&define.amd&&define("FileAPI",[],function(){return window.FileAPI||{}});
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/jquery/jquery-1.10.2.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/jquery/jquery-1.10.2.js
new file mode 100755
index 0000000..c5c6482
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/jquery/jquery-1.10.2.js
@@ -0,0 +1,9789 @@
+/*!
+ * jQuery JavaScript Library v1.10.2
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03T13:48Z
+ */
+(function( window, undefined ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//"use strict";
+var
+ // The deferred used on DOM ready
+ readyList,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // Support: IE<10
+ // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
+ core_strundefined = typeof undefined,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ location = window.location,
+ document = window.document,
+ docElem = document.documentElement,
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // [[Class]] -> type pairs
+ class2type = {},
+
+ // List of deleted data cache ids, so we can reuse them
+ core_deletedIds = [],
+
+ core_version = "1.10.2",
+
+ // Save a reference to some core methods
+ core_concat = core_deletedIds.concat,
+ core_push = core_deletedIds.push,
+ core_slice = core_deletedIds.slice,
+ core_indexOf = core_deletedIds.indexOf,
+ core_toString = class2type.toString,
+ core_hasOwn = class2type.hasOwnProperty,
+ core_trim = core_version.trim,
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Used for matching numbers
+ core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
+
+ // Used for splitting on whitespace
+ core_rnotwhite = /\S+/g,
+
+ // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ },
+
+ // The ready event handler
+ completed = function( event ) {
+
+ // readyState === "complete" is good enough for us to call the dom ready in oldIE
+ if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+ detach();
+ jQuery.ready();
+ }
+ },
+ // Clean-up method for dom ready events
+ detach = function() {
+ if ( document.addEventListener ) {
+ document.removeEventListener( "DOMContentLoaded", completed, false );
+ window.removeEventListener( "load", completed, false );
+
+ } else {
+ document.detachEvent( "onreadystatechange", completed );
+ window.detachEvent( "onload", completed );
+ }
+ };
+
+jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: core_version,
+
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+
+ // scripts is true for back-compat
+ jQuery.merge( this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return core_slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+ },
+
+ slice: function() {
+ return this.pushStack( core_slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: core_push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var src, copyIsArray, copy, name, options, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
+
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger("ready").off("ready");
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ isWindow: function( obj ) {
+ /* jshint eqeqeq: false */
+ return obj != null && obj == obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ return !isNaN( parseFloat(obj) ) && isFinite( obj );
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return String( obj );
+ }
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ core_toString.call(obj) ] || "object" :
+ typeof obj;
+ },
+
+ isPlainObject: function( obj ) {
+ var key;
+
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !core_hasOwn.call(obj, "constructor") &&
+ !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
+ return false;
+ }
+
+ // Support: IE<9
+ // Handle iteration over inherited properties before own properties.
+ if ( jQuery.support.ownLast ) {
+ for ( key in obj ) {
+ return core_hasOwn.call( obj, key );
+ }
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+ for ( key in obj ) {}
+
+ return key === undefined || core_hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ // data: string of html
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
+ // keepScripts (optional): If true, will include scripts passed in the html string
+ parseHTML: function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
+
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
+ if ( scripts ) {
+ jQuery( scripts ).remove();
+ }
+ return jQuery.merge( [], parsed.childNodes );
+ },
+
+ parseJSON: function( data ) {
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ if ( data === null ) {
+ return data;
+ }
+
+ if ( typeof data === "string" ) {
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ if ( data ) {
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return ( new Function( "return " + data ) )();
+ }
+ }
+ }
+
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ parseXML: function( data ) {
+ var xml, tmp;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ try {
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+ } catch( e ) {
+ xml = undefined;
+ }
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && jQuery.trim( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ // args is for internal usage only
+ each: function( obj, callback, args ) {
+ var value,
+ i = 0,
+ length = obj.length,
+ isArray = isArraylike( obj );
+
+ if ( args ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
+ function( text ) {
+ return text == null ?
+ "" :
+ core_trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArraylike( Object(arr) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ core_push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ var len;
+
+ if ( arr ) {
+ if ( core_indexOf ) {
+ return core_indexOf.call( arr, elem, i );
+ }
+
+ len = arr.length;
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+ for ( ; i < len; i++ ) {
+ // Skip accessing in sparse arrays
+ if ( i in arr && arr[ i ] === elem ) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var l = second.length,
+ i = first.length,
+ j = 0;
+
+ if ( typeof l === "number" ) {
+ for ( ; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var retVal,
+ ret = [],
+ i = 0,
+ length = elems.length;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value,
+ i = 0,
+ length = elems.length,
+ isArray = isArraylike( elems ),
+ ret = [];
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return core_concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var args, proxy, tmp;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = core_slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Multifunctional method to get and set values of a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ length = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < length; i++ ) {
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ length ? fn( elems[0], key ) : emptyGet;
+ },
+
+ now: function() {
+ return ( new Date() ).getTime();
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations.
+ // Note: this method belongs to the css module but it's needed here for the support module.
+ // If support gets modularized, this method should be moved back to the css module.
+ swap: function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+ }
+});
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ setTimeout( jQuery.ready );
+
+ // Standards-based browsers support DOMContentLoaded
+ } else if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed, false );
+
+ // If IE event model is used
+ } else {
+ // Ensure firing before onload, maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", completed );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", completed );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var top = false;
+
+ try {
+ top = window.frameElement == null && document.documentElement;
+ } catch(e) {}
+
+ if ( top && top.doScroll ) {
+ (function doScrollCheck() {
+ if ( !jQuery.isReady ) {
+
+ try {
+ // Use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ top.doScroll("left");
+ } catch(e) {
+ return setTimeout( doScrollCheck, 50 );
+ }
+
+ // detach all dom ready events
+ detach();
+
+ // and execute any waiting functions
+ jQuery.ready();
+ }
+ })();
+ }
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+ var length = obj.length,
+ type = jQuery.type( obj );
+
+ if ( jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.nodeType === 1 && length ) {
+ return true;
+ }
+
+ return type === "array" || type !== "function" &&
+ ( length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj );
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+/*!
+ * Sizzle CSS Selector Engine v1.10.2
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03
+ */
+(function( window, undefined ) {
+
+var i,
+ support,
+ cachedruns,
+ Expr,
+ getText,
+ isXML,
+ compile,
+ outermostContext,
+ sortInput,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + -(new Date()),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ hasDuplicate = false,
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ strundefined = typeof undefined,
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf if we can't use a native one
+ indexOf = arr.indexOf || function( elem ) {
+ var i = 0,
+ len = this.length;
+ for ( ; i < len; i++ ) {
+ if ( this[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+ "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+ // Prefer arguments quoted,
+ // then not containing pseudos/brackets,
+ // then attribute selectors/non-parenthetical expressions,
+ // then anything else
+ // These preferences are here to reduce the number of selectors
+ // needing tokenize in the PSEUDO preFilter
+ pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rsibling = new RegExp( whitespace + "*[+~]" ),
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ // BMP codepoint
+ high < 0 ?
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var match, elem, m, nodeType,
+ // QSA vars
+ i, groups, old, nid, newContext, newSelector;
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+
+ context = context || document;
+ results = results || [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( documentIsHTML && !seed ) {
+
+ // Shortcuts
+ if ( (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // QSA path
+ if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ nid = old = expando;
+ newContext = context;
+ newSelector = nodeType === 9 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + toSelector( groups[i] );
+ }
+ newContext = rsibling.test( selector ) && context.parentNode || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key += " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = attrs.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Detect xml
+ * @param {Element|Object} elem An element or a document
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var doc = node ? node.ownerDocument || node : preferredDoc,
+ parent = doc.defaultView;
+
+ // If no document and documentElement is available, return
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Set our document
+ document = doc;
+ docElem = doc.documentElement;
+
+ // Support tests
+ documentIsHTML = !isXML( doc );
+
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ // IE6-8 do not support the defaultView property so parent will be undefined
+ if ( parent && parent.attachEvent && parent !== parent.top ) {
+ parent.attachEvent( "onbeforeunload", function() {
+ setDocument();
+ });
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Check if getElementsByClassName can be trusted
+ support.getElementsByClassName = assert(function( div ) {
+ div.innerHTML = "<div class='a'></div><div class='a i'></div>";
+
+ // Support: Safari<4
+ // Catch class over-caching
+ div.firstChild.className = "i";
+ // Support: Opera<10
+ // Catch gEBCN failure to find non-leading classes
+ return div.getElementsByClassName("i").length === 2;
+ });
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== strundefined ) {
+ return context.getElementsByTagName( tag );
+ }
+ } :
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ div.innerHTML = "<select><option selected=''></option></select>";
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+ });
+
+ assert(function( div ) {
+
+ // Support: Opera 10-12/IE8
+ // ^= $= *= and empty values
+ // Should not select anything
+ // Support: Windows 8 Native Apps
+ // The type attribute is restricted during .innerHTML assignment
+ var input = doc.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "t", "" );
+
+ if ( div.querySelectorAll("[t^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+
+ // Element contains another
+ // Purposefully does not implement inclusive descendent
+ // As in, an element does not contain itself
+ contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = docElem.compareDocumentPosition ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
+
+ if ( compare ) {
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === doc || contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === doc || contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ }
+
+ // Not directly comparable, sort on existence of method
+ return a.compareDocumentPosition ? -1 : 1;
+ } :
+ function( a, b ) {
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Parentless nodes are either documents or disconnected
+ } else if ( !aup || !bup ) {
+ return a === doc ? -1 :
+ b === doc ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle( expr, document, null, [elem] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val === undefined ?
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null :
+ val;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ for ( ; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (see #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[5] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] && match[4] !== undefined ) {
+ match[2] = match[4];
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, outerCache, node, diff, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+ // Seek `elem` from a previously-cached index
+ outerCache = parent[ expando ] || (parent[ expando ] = {});
+ cache = outerCache[ type ] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = cache[0] === dirruns && cache[2];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ // Use previously-cached element index if available
+ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+ diff = cache[1];
+
+ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ } else {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf.call( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+ // not comment, processing instructions, or others
+ // Thanks to Diego Perini for the nodeName shortcut
+ // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+function tokenize( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( tokens = [] );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+}
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var data, cache, outerCache,
+ dirkey = dirruns + " " + doneName;
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+ if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
+ if ( (data = cache[1]) === true || data === cachedruns ) {
+ return data === true;
+ }
+ } else {
+ cache = outerCache[ dir ] = [ dirkey ];
+ cache[1] = matcher( elem, context, xml ) || cachedruns;
+ if ( cache[1] === true ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf.call( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ // A counter to specify which element is currently being matched
+ var matcherCachedRuns = 0,
+ bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, expandContext ) {
+ var elem, j, matcher,
+ setMatched = [],
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ outermost = expandContext != null,
+ contextBackup = outermostContext,
+ // We must always have either seed elements or context
+ elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ cachedruns = matcherCachedRuns;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ cachedruns = ++matcherCachedRuns;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !group ) {
+ group = tokenize( selector );
+ }
+ i = group.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( group[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+ }
+ return cached;
+};
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function select( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ match = tokenize( selector );
+
+ if ( !seed ) {
+ // Try to minimize operations if there is only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+ }
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && context.parentNode || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function
+ // Provide `match` to avoid retokenization if we modified the selector above
+ compile( selector, match )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ rsibling.test( selector )
+ );
+ return results;
+}
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = "<a href='#'></a>";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = "<input/>";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ elem[ name ] === true ? name.toLowerCase() : null;
+ }
+ });
+}
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})( window );
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+ add( arg );
+ }
+ });
+ })( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away
+ } else if ( memory ) {
+ firingStart = start;
+ fire( memory );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+ // Handle firing indexes
+ if ( firing ) {
+ if ( index <= firingLength ) {
+ firingLength--;
+ }
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ });
+ }
+ return this;
+ },
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ firingLength = 0;
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( list && ( !fired || stack ) ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ if ( firing ) {
+ stack.push( args );
+ } else {
+ fire( args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var tuples = [
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var action = tuple[ 0 ],
+ fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[1] ](function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .done( newDefer.resolve )
+ .fail( newDefer.reject )
+ .progress( newDefer.notify );
+ } else {
+ newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+ }
+ });
+ });
+ fns = null;
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[1] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(function() {
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[0] ] = function() {
+ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[0] + "With" ] = list.fireWith;
+ });
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = core_slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
+ if( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject )
+ .progress( updateFunc( i, progressContexts, progressValues ) );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // if we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+});
+jQuery.support = (function( support ) {
+
+ var all, a, input, select, fragment, opt, eventName, isSupported, i,
+ div = document.createElement("div");
+
+ // Setup
+ div.setAttribute( "className", "t" );
+ div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
+
+ // Finish early in limited (non-browser) environments
+ all = div.getElementsByTagName("*") || [];
+ a = div.getElementsByTagName("a")[ 0 ];
+ if ( !a || !a.style || !all.length ) {
+ return support;
+ }
+
+ // First batch of tests
+ select = document.createElement("select");
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName("input")[ 0 ];
+
+ a.style.cssText = "top:1px;float:left;opacity:.5";
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ support.getSetAttribute = div.className !== "t";
+
+ // IE strips leading whitespace when .innerHTML is used
+ support.leadingWhitespace = div.firstChild.nodeType === 3;
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ support.tbody = !div.getElementsByTagName("tbody").length;
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ support.htmlSerialize = !!div.getElementsByTagName("link").length;
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ support.style = /top/.test( a.getAttribute("style") );
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ support.hrefNormalized = a.getAttribute("href") === "/a";
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ support.opacity = /^0.5/.test( a.style.opacity );
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ support.cssFloat = !!a.style.cssFloat;
+
+ // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
+ support.checkOn = !!input.value;
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ support.optSelected = opt.selected;
+
+ // Tests for enctype support on a form (#6743)
+ support.enctype = !!document.createElement("form").enctype;
+
+ // Makes sure cloning an html5 element does not cause problems
+ // Where outerHTML is undefined, this still works
+ support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>";
+
+ // Will be defined later
+ support.inlineBlockNeedsLayout = false;
+ support.shrinkWrapBlocks = false;
+ support.pixelPosition = false;
+ support.deleteExpando = true;
+ support.noCloneEvent = true;
+ support.reliableMarginRight = true;
+ support.boxSizingReliable = true;
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Support: IE<9
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ // Check if we can trust getAttribute("value")
+ input = document.createElement("input");
+ input.setAttribute( "value", "" );
+ support.input = input.getAttribute( "value" ) === "";
+
+ // Check if an input maintains its value after becoming a radio
+ input.value = "t";
+ input.setAttribute( "type", "radio" );
+ support.radioValue = input.value === "t";
+
+ // #11217 - WebKit loses check when the name is after the checked attribute
+ input.setAttribute( "checked", "t" );
+ input.setAttribute( "name", "t" );
+
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( input );
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE<9
+ // Opera does not clone events (and typeof div.attachEvent === undefined).
+ // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
+ if ( div.attachEvent ) {
+ div.attachEvent( "onclick", function() {
+ support.noCloneEvent = false;
+ });
+
+ div.cloneNode( true ).click();
+ }
+
+ // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
+ // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
+ for ( i in { submit: true, change: true, focusin: true }) {
+ div.setAttribute( eventName = "on" + i, "t" );
+
+ support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
+ }
+
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ // Support: IE<9
+ // Iteration over object's inherited properties before its own.
+ for ( i in jQuery( support ) ) {
+ break;
+ }
+ support.ownLast = i !== "0";
+
+ // Run tests that need a body at doc ready
+ jQuery(function() {
+ var container, marginDiv, tds,
+ divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
+ body = document.getElementsByTagName("body")[0];
+
+ if ( !body ) {
+ // Return for frameset docs that don't have a body
+ return;
+ }
+
+ container = document.createElement("div");
+ container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
+
+ body.appendChild( container ).appendChild( div );
+
+ // Support: IE8
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
+ tds = div.getElementsByTagName("td");
+ tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Support: IE8
+ // Check if empty table cells still have offsetWidth/Height
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+ // Check box-sizing and margin behavior.
+ div.innerHTML = "";
+ div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
+
+ // Workaround failing boxSizing test due to offsetWidth returning wrong value
+ // with some non-1 values of body zoom, ticket #13543
+ jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
+ support.boxSizing = div.offsetWidth === 4;
+ });
+
+ // Use window.getComputedStyle because jsdom on node.js will break without it.
+ if ( window.getComputedStyle ) {
+ support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
+ support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. (#3333)
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ marginDiv = div.appendChild( document.createElement("div") );
+ marginDiv.style.cssText = div.style.cssText = divReset;
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+
+ support.reliableMarginRight =
+ !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
+ }
+
+ if ( typeof div.style.zoom !== core_strundefined ) {
+ // Support: IE<8
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ div.innerHTML = "";
+ div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+
+ // Support: IE6
+ // Check if elements with layout shrink-wrap their children
+ div.style.display = "block";
+ div.innerHTML = "<div></div>";
+ div.firstChild.style.width = "5px";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
+
+ if ( support.inlineBlockNeedsLayout ) {
+ // Prevent IE 6 from affecting layout for positioned elements #11048
+ // Prevent IE from shrinking the body in IE 7 mode #12869
+ // Support: IE<8
+ body.style.zoom = 1;
+ }
+ }
+
+ body.removeChild( container );
+
+ // Null elements to avoid leaks in IE
+ container = div = tds = marginDiv = null;
+ });
+
+ // Null elements to avoid leaks in IE
+ all = select = fragment = opt = a = input = null;
+
+ return support;
+})({});
+
+var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+function internalData( elem, name, data, pvt /* Internal Use Only */ ){
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var ret, thisCache,
+ internalKey = jQuery.expando,
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;
+ } else {
+ id = internalKey;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ // Avoid exposing jQuery metadata on plain JS objects when the object
+ // is serialized using JSON.stringify
+ cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ] = jQuery.extend( cache[ id ], name );
+ } else {
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // jQuery data() is stored in a separate object inside the object's internal data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data.
+ if ( !pvt ) {
+ if ( !thisCache.data ) {
+ thisCache.data = {};
+ }
+
+ thisCache = thisCache.data;
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( typeof name === "string" ) {
+
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
+
+ // Test for null|undefined property data
+ if ( ret == null ) {
+
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
+
+ return ret;
+}
+
+function internalRemoveData( elem, name, pvt ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, i,
+ isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+ if ( thisCache ) {
+
+ // Support array or space separated string names for data keys
+ if ( !jQuery.isArray( name ) ) {
+
+ // try the string as a key before any manipulation
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+
+ // split the camel cased version by spaces unless a key with the spaces exists
+ name = jQuery.camelCase( name );
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+ name = name.split(" ");
+ }
+ }
+ } else {
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = name.concat( jQuery.map( name, jQuery.camelCase ) );
+ }
+
+ i = name.length;
+ while ( i-- ) {
+ delete thisCache[ name[i] ];
+ }
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( !pvt ) {
+ delete cache[ id ].data;
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject( cache[ id ] ) ) {
+ return;
+ }
+ }
+
+ // Destroy the cache
+ if ( isNode ) {
+ jQuery.cleanData( [ elem ], true );
+
+ // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
+ /* jshint eqeqeq: false */
+ } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
+ /* jshint eqeqeq: true */
+ delete cache[ id ];
+
+ // When all else fails, null
+ } else {
+ cache[ id ] = null;
+ }
+}
+
+jQuery.extend({
+ cache: {},
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "applet": true,
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return internalData( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ return internalRemoveData( elem, name );
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return internalData( elem, name, data, true );
+ },
+
+ _removeData: function( elem, name ) {
+ return internalRemoveData( elem, name, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ // Do not set data on non-element because it will not be cleared (#8335).
+ if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
+ return false;
+ }
+
+ var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ // nodes accept data unless otherwise specified; rejection can be conditional
+ return !noData || noData !== true && elem.getAttribute("classid") === noData;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var attrs, name,
+ data = null,
+ i = 0,
+ elem = this[0];
+
+ // Special expections of .data basically thwart jQuery.access,
+ // so implement the relevant behavior ourselves
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = jQuery.data( elem );
+
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+ attrs = elem.attributes;
+ for ( ; i < attrs.length; i++ ) {
+ name = attrs[i].name;
+
+ if ( name.indexOf("data-") === 0 ) {
+ name = jQuery.camelCase( name.slice(5) );
+
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ jQuery._data( elem, "parsedAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ return arguments.length > 1 ?
+
+ // Sets one value
+ this.each(function() {
+ jQuery.data( this, key, value );
+ }) :
+
+ // Gets one value
+ // Try to fetch any internally stored data first
+ elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+ var name;
+ for ( name in obj ) {
+
+ // if the public data object is empty, the private is still empty
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+ continue;
+ }
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray(data) ) {
+ queue = jQuery._data( elem, type, jQuery.makeArray(data) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // not intended for public consumption - generates a queueHooks object, or returns the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ jQuery._removeData( elem, type + "queue" );
+ jQuery._removeData( elem, key );
+ })
+ });
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while( i-- ) {
+ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+});
+var nodeHook, boolHook,
+ rclass = /[\t\r\n\f]/g,
+ rreturn = /\r/g,
+ rfocusable = /^(?:input|select|textarea|button|object)$/i,
+ rclickable = /^(?:a|area)$/i,
+ ruseDefault = /^(?:checked|selected)$/i,
+ getSetAttribute = jQuery.support.getSetAttribute,
+ getSetInput = jQuery.support.input;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = typeof value === "string" && value;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call( this, j, this.className ) );
+ });
+ }
+
+ if ( proceed ) {
+ // The disjunction here is for better compressibility (see removeClass)
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ " "
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+ elem.className = jQuery.trim( cur );
+
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = arguments.length === 0 || typeof value === "string" && value;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, this.className ) );
+ });
+ }
+ if ( proceed ) {
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ ""
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+ elem.className = value ? jQuery.trim( cur ) : "";
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ classNames = value.match( core_rnotwhite ) || [];
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( type === core_strundefined || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // If the element has a class name or if we're passed "false",
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var ret, hooks, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // Use proper attribute retrieval(#6932, #12072)
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+ elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // oldIE doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+ if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
+ optionSet = true;
+ }
+ }
+
+ // force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ attr: function( elem, name, value ) {
+ var hooks, ret,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === core_strundefined ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+
+ } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name, propName,
+ i = 0,
+ attrNames = value && value.match( core_rnotwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( (name = attrNames[i++]) ) {
+ propName = jQuery.propFix[ name ] || name;
+
+ // Boolean attributes get special treatment (#10870)
+ if ( jQuery.expr.match.bool.test( name ) ) {
+ // Set corresponding property to false
+ if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ elem[ propName ] = false;
+ // Support: IE<9
+ // Also clear defaultChecked/defaultSelected (if appropriate)
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] =
+ elem[ propName ] = false;
+ }
+
+ // See #9699 for explanation of this approach (setting first, then removal)
+ } else {
+ jQuery.attr( elem, name, "" );
+ }
+
+ elem.removeAttribute( getSetAttribute ? name : propName );
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to default in case type is set after value during creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+ ret :
+ ( elem[ name ] = value );
+
+ } else {
+ return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+ ret :
+ elem[ name ];
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+ return tabindex ?
+ parseInt( tabindex, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ -1;
+ }
+ }
+ }
+});
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ // IE<8 needs the *property* name
+ elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
+
+ // Use defaultChecked and defaultSelected for oldIE
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
+ }
+
+ return name;
+ }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
+
+ jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
+ function( elem, name, isXML ) {
+ var fn = jQuery.expr.attrHandle[ name ],
+ ret = isXML ?
+ undefined :
+ /* jshint eqeqeq: false */
+ (jQuery.expr.attrHandle[ name ] = undefined) !=
+ getter( elem, name, isXML ) ?
+
+ name.toLowerCase() :
+ null;
+ jQuery.expr.attrHandle[ name ] = fn;
+ return ret;
+ } :
+ function( elem, name, isXML ) {
+ return isXML ?
+ undefined :
+ elem[ jQuery.camelCase( "default-" + name ) ] ?
+ name.toLowerCase() :
+ null;
+ };
+});
+
+// fix oldIE attroperties
+if ( !getSetInput || !getSetAttribute ) {
+ jQuery.attrHooks.value = {
+ set: function( elem, value, name ) {
+ if ( jQuery.nodeName( elem, "input" ) ) {
+ // Does not return so that setAttribute is also used
+ elem.defaultValue = value;
+ } else {
+ // Use nodeHook if defined (#1954); otherwise setAttribute is fine
+ return nodeHook && nodeHook.set( elem, value, name );
+ }
+ }
+ };
+}
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = {
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ elem.setAttributeNode(
+ (ret = elem.ownerDocument.createAttribute( name ))
+ );
+ }
+
+ ret.value = value += "";
+
+ // Break association with cloned elements by also using setAttribute (#9646)
+ return name === "value" || value === elem.getAttribute( name ) ?
+ value :
+ undefined;
+ }
+ };
+ jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =
+ // Some attributes are constructed with empty-string values when not defined
+ function( elem, name, isXML ) {
+ var ret;
+ return isXML ?
+ undefined :
+ (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
+ ret.value :
+ null;
+ };
+ jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret = elem.getAttributeNode( name );
+ return ret && ret.specified ?
+ ret.value :
+ undefined;
+ },
+ set: nodeHook.set
+ };
+
+ // Set contenteditable to false on removals(#10429)
+ // Setting to empty string throws an error as an invalid value
+ jQuery.attrHooks.contenteditable = {
+ set: function( elem, value, name ) {
+ nodeHook.set( elem, value === "" ? false : value, name );
+ }
+ };
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ };
+ });
+}
+
+
+// Some attributes require a special call on IE
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !jQuery.support.hrefNormalized ) {
+ // href/src property should get the full normalized URL (#10299/#12915)
+ jQuery.each([ "href", "src" ], function( i, name ) {
+ jQuery.propHooks[ name ] = {
+ get: function( elem ) {
+ return elem.getAttribute( name, 4 );
+ }
+ };
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Note: IE uppercases css property names, but if we were to .toLowerCase()
+ // .cssText, that would destroy case senstitivity in URL's, like in "background"
+ return elem.style.cssText || undefined;
+ },
+ set: function( elem, value ) {
+ return ( elem.style.cssText = value + "" );
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ };
+}
+
+jQuery.each([
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+ jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ };
+ if ( !jQuery.support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ // Support: Webkit
+ // "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ };
+ }
+});
+var rformElems = /^(?:input|select|textarea)$/i,
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+ var tmp, events, t, handleObjIn,
+ special, eventHandle, handleObj,
+ handlers, type, namespaces, origType,
+ elemData = jQuery._data( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !(events = elemData.events) ) {
+ events = elemData.events = {};
+ }
+ if ( !(eventHandle = elemData.handle) ) {
+ eventHandle = elemData.handle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+ eventHandle.elem = elem;
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !(handlers = events[ type ]) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener/attachEvent if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+ var j, handleObj, tmp,
+ origCount, t, events,
+ special, handlers, type,
+ namespaces, origType,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem );
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ delete elemData.handle;
+
+ // removeData also checks for emptiness and clears the expando if empty
+ // so use it instead of delete
+ jQuery._removeData( elem, "events" );
+ }
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ var handle, ontype, cur,
+ bubbleType, special, tmp, i,
+ eventPath = [ elem || document ],
+ type = core_hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf(":") < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === (elem.ownerDocument || document) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
+ event.preventDefault();
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+ jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ try {
+ elem[ type ]();
+ } catch ( e ) {
+ // IE<9 dies on focus/blur to hidden element (#1486,#12518)
+ // only reproducible on winXP IE8 native, not IE9 in IE8 mode
+ }
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
+
+ var i, ret, handleObj, matched, j,
+ handlerQueue = [],
+ args = core_slice.call( arguments ),
+ handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( (event.result = ret) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var sel, handleObj, matches, i,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ // Black-hole SVG <use> instance trees (#13180)
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+ /* jshint eqeqeq: false */
+ for ( ; cur != this; cur = cur.parentNode || this ) {
+ /* jshint eqeqeq: true */
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) >= 0 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, handlers: matches });
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+ }
+
+ return handlerQueue;
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop, copy,
+ type = event.type,
+ originalEvent = event,
+ fixHook = this.fixHooks[ type ];
+
+ if ( !fixHook ) {
+ this.fixHooks[ type ] = fixHook =
+ rmouseEvent.test( type ) ? this.mouseHooks :
+ rkeyEvent.test( type ) ? this.keyHooks :
+ {};
+ }
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = new jQuery.Event( originalEvent );
+
+ i = copy.length;
+ while ( i-- ) {
+ prop = copy[ i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Support: IE<9
+ // Fix target property (#1925)
+ if ( !event.target ) {
+ event.target = originalEvent.srcElement || document;
+ }
+
+ // Support: Chrome 23+, Safari?
+ // Target should not be a text node (#504, #13143)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Support: IE<9
+ // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
+ event.metaKey = !!event.metaKey;
+
+ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var body, eventDoc, doc,
+ button = original.button,
+ fromElement = original.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && fromElement ) {
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ try {
+ this.focus();
+ return false;
+ } catch ( e ) {
+ // Support: IE<9
+ // If we error on focus to hidden element (#1486, #12518),
+ // let .trigger() run the handlers
+ }
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Even when returnValue equals to undefined Firefox will still show alert
+ if ( event.result !== undefined ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ var name = "on" + type;
+
+ if ( elem.detachEvent ) {
+
+ // #8545, #7054, preventing memory leaks for custom events in IE6-8
+ // detachEvent needed property on element, by name of that event, to properly expose it to GC
+ if ( typeof elem[ name ] === core_strundefined ) {
+ elem[ name ] = null;
+ }
+
+ elem.detachEvent( name, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+ if ( !e ) {
+ return;
+ }
+
+ // If preventDefault exists, run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // Support: IE
+ // Otherwise set the returnValue property of the original event to false
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+ if ( !e ) {
+ return;
+ }
+ // If stopPropagation exists, run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+
+ // Support: IE
+ // Set the cancelBubble property of the original event to true
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+ // Node name check avoids a VML-related crash in IE (#9807)
+ var elem = e.target,
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+ if ( form && !jQuery._data( form, "submitBubbles" ) ) {
+ jQuery.event.add( form, "submit._submit", function( event ) {
+ event._submit_bubble = true;
+ });
+ jQuery._data( form, "submitBubbles", true );
+ }
+ });
+ // return undefined since we don't need an event listener
+ },
+
+ postDispatch: function( event ) {
+ // If form was submitted by the user, bubble the event up the tree
+ if ( event._submit_bubble ) {
+ delete event._submit_bubble;
+ if ( this.parentNode && !event.isTrigger ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ }
+ },
+
+ teardown: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+ jQuery.event.remove( this, "._submit" );
+ }
+ };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+ jQuery.event.special.change = {
+
+ setup: function() {
+
+ if ( rformElems.test( this.nodeName ) ) {
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
+ // after a propertychange. Eat the blur-change in special.change.handle.
+ // This still fires onchange a second time for check/radio after blur.
+ if ( this.type === "checkbox" || this.type === "radio" ) {
+ jQuery.event.add( this, "propertychange._change", function( event ) {
+ if ( event.originalEvent.propertyName === "checked" ) {
+ this._just_changed = true;
+ }
+ });
+ jQuery.event.add( this, "click._change", function( event ) {
+ if ( this._just_changed && !event.isTrigger ) {
+ this._just_changed = false;
+ }
+ // Allow triggered, simulated change events (#11500)
+ jQuery.event.simulate( "change", this, event, true );
+ });
+ }
+ return false;
+ }
+ // Delegated event; lazy-add a change handler on descendant inputs
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
+ var elem = e.target;
+
+ if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
+ jQuery.event.add( elem, "change._change", function( event ) {
+ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+ jQuery.event.simulate( "change", this.parentNode, event, true );
+ }
+ });
+ jQuery._data( elem, "changeBubbles", true );
+ }
+ });
+ },
+
+ handle: function( event ) {
+ var elem = event.target;
+
+ // Swallow native change events from checkbox/radio, we already triggered them above
+ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+ return event.handleObj.handler.apply( this, arguments );
+ }
+ },
+
+ teardown: function() {
+ jQuery.event.remove( this, "._change" );
+
+ return !rformElems.test( this.nodeName );
+ }
+ };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0,
+ handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var type, origFn;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[0];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+});
+var isSimple = /^.[^:#\[\.,]*$/,
+ rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ rneedsContext = jQuery.expr.match.needsContext,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i,
+ ret = [],
+ self = this,
+ len = self.length;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ }) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+
+ has: function( target ) {
+ var i,
+ targets = jQuery( target, this ),
+ len = targets.length;
+
+ return this.filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], true) );
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], false) );
+ },
+
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ ret = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && (pos ?
+ pos.index(cur) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector(cur, selectors)) ) {
+
+ cur = ret.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( jQuery.unique(all) );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+});
+
+function sibling( cur, dir ) {
+ do {
+ cur = cur[ dir ];
+ } while ( cur && cur.nodeType !== 1 );
+
+ return cur;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ if ( this.length > 1 ) {
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ ret = jQuery.unique( ret );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ }));
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ });
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ });
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
+ });
+}
+function createSafeFragment( document ) {
+ var list = nodeNames.split( "|" ),
+ safeFrag = document.createDocumentFragment();
+
+ if ( safeFrag.createElement ) {
+ while ( list.length ) {
+ safeFrag.createElement(
+ list.pop()
+ );
+ }
+ }
+ return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+ "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+ rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnoInnerhtml = /<(?:script|style|link)/i,
+ manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /^$|\/(?:java|ecma)script/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+ // We have to close these tags to support XHTML (#13200)
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ area: [ 1, "<map>", "</map>" ],
+ param: [ 1, "<object>", "</object>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
+ // unless wrapped in a div with non-breaking characters in front of it.
+ _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ]
+ },
+ safeFragment = createSafeFragment( document ),
+ fragmentDiv = safeFragment.appendChild( document.createElement("div") );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+jQuery.fn.extend({
+ text: function( value ) {
+ return jQuery.access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ });
+ },
+
+ after: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ });
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ var elem,
+ elems = selector ? jQuery.filter( selector, this ) : this,
+ i = 0;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem ) );
+ }
+
+ if ( elem.parentNode ) {
+ if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+ setGlobalEval( getAll( elem, "script" ) );
+ }
+ elem.parentNode.removeChild( elem );
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+
+ // If this is a select, ensure that it displays empty (#12336)
+ // Support: IE<9
+ if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
+ elem.options.length = 0;
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ return jQuery.access( this, function( value ) {
+ var elem = this[0] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined ) {
+ return elem.nodeType === 1 ?
+ elem.innerHTML.replace( rinlinejQuery, "" ) :
+ undefined;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&
+ ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+ !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
+
+ value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+ try {
+ for (; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ elem = this[i] || {};
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var
+ // Snapshot the DOM in case .domManip sweeps something relevant into its fragment
+ args = jQuery.map( this, function( elem ) {
+ return [ elem.nextSibling, elem.parentNode ];
+ }),
+ i = 0;
+
+ // Make the changes, replacing each context element with the new content
+ this.domManip( arguments, function( elem ) {
+ var next = args[ i++ ],
+ parent = args[ i++ ];
+
+ if ( parent ) {
+ // Don't use the snapshot next if it has moved (#13810)
+ if ( next && next.parentNode !== parent ) {
+ next = this.nextSibling;
+ }
+ jQuery( this ).remove();
+ parent.insertBefore( elem, next );
+ }
+ // Allow new content to include elements from the context set
+ }, true );
+
+ // Force removal if there was no new content (e.g., from empty arguments)
+ return i ? this : this.remove();
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, callback, allowIntersection ) {
+
+ // Flatten any nested arrays
+ args = core_concat.apply( [], args );
+
+ var first, node, hasScripts,
+ scripts, doc, fragment,
+ i = 0,
+ l = this.length,
+ set = this,
+ iNoClone = l - 1,
+ value = args[0],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
+ return this.each(function( index ) {
+ var self = set.eq( index );
+ if ( isFunction ) {
+ args[0] = value.call( this, index, self.html() );
+ }
+ self.domManip( args, callback, allowIntersection );
+ });
+ }
+
+ if ( l ) {
+ fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ if ( first ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( this[i], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+ // Hope ajax is available...
+ jQuery._evalUrl( node.src );
+ } else {
+ jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
+ }
+ }
+ }
+ }
+
+ // Fix #11809: Avoid leaking memory
+ fragment = first = null;
+ }
+ }
+
+ return this;
+ }
+});
+
+// Support: IE<8
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+ return jQuery.nodeName( elem, "table" ) &&
+ jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ?
+
+ elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+ elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+ if ( match ) {
+ elem.type = match[1];
+ } else {
+ elem.removeAttribute("type");
+ }
+ return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var elem,
+ i = 0;
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
+ }
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var type, i, l,
+ oldData = jQuery._data( src ),
+ curData = jQuery._data( dest, oldData ),
+ events = oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+
+ // make the cloned public data object a copy from the original
+ if ( curData.data ) {
+ curData.data = jQuery.extend( {}, curData.data );
+ }
+}
+
+function fixCloneNodeIssues( src, dest ) {
+ var nodeName, e, data;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 copies events bound via attachEvent when using cloneNode.
+ if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
+ data = jQuery._data( dest );
+
+ for ( e in data.events ) {
+ jQuery.removeEvent( dest, e, data.handle );
+ }
+
+ // Event data gets referenced instead of copied if the expando gets copied too
+ dest.removeAttribute( jQuery.expando );
+ }
+
+ // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
+ if ( nodeName === "script" && dest.text !== src.text ) {
+ disableScript( dest ).text = src.text;
+ restoreScript( dest );
+
+ // IE6-10 improperly clones children of object elements using classid.
+ // IE10 throws NoModificationAllowedError if parent is null, #12132.
+ } else if ( nodeName === "object" ) {
+ if ( dest.parentNode ) {
+ dest.outerHTML = src.outerHTML;
+ }
+
+ // This path appears unavoidable for IE9. When cloning an object
+ // element in IE9, the outerHTML strategy above is not sufficient.
+ // If the src has innerHTML and the destination does not,
+ // copy the src.innerHTML into the dest.innerHTML. #10324
+ if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
+ dest.innerHTML = src.innerHTML;
+ }
+
+ } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+
+ dest.defaultChecked = dest.checked = src.checked;
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.defaultSelected = dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ i = 0,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone(true);
+ jQuery( insert[i] )[ original ]( elems );
+
+ // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
+ core_push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+function getAll( context, tag ) {
+ var elems, elem,
+ i = 0,
+ found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
+ typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
+ undefined;
+
+ if ( !found ) {
+ for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
+ if ( !tag || jQuery.nodeName( elem, tag ) ) {
+ found.push( elem );
+ } else {
+ jQuery.merge( found, getAll( elem, tag ) );
+ }
+ }
+ }
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], found ) :
+ found;
+}
+
+// Used in buildFragment, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( manipulation_rcheckableType.test( elem.type ) ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var destElements, node, clone, i, srcElements,
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
+ clone = elem.cloneNode( true );
+
+ // IE<=8 does not properly clone detached, unknown element nodes
+ } else {
+ fragmentDiv.innerHTML = elem.outerHTML;
+ fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
+ }
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+
+ // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ // Fix all IE cloning issues
+ for ( i = 0; (node = srcElements[i]) != null; ++i ) {
+ // Ensure that the destination node is not null; Fixes #9587
+ if ( destElements[i] ) {
+ fixCloneNodeIssues( node, destElements[i] );
+ }
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0; (node = srcElements[i]) != null; i++ ) {
+ cloneCopyEvent( node, destElements[i] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ destElements = srcElements = node = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
+ buildFragment: function( elems, context, scripts, selection ) {
+ var j, elem, contains,
+ tmp, tag, tbody, wrap,
+ l = elems.length,
+
+ // Ensure a safe fragment
+ safe = createSafeFragment( context ),
+
+ nodes = [],
+ i = 0;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || safe.appendChild( context.createElement("div") );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+
+ tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
+
+ // Descend through wrappers to the right content
+ j = wrap[0];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Manually add leading whitespace removed by IE
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ elem = tag === "table" && !rtbody.test( elem ) ?
+ tmp.firstChild :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !rtbody.test( elem ) ?
+ tmp :
+ 0;
+
+ j = elem && elem.childNodes.length;
+ while ( j-- ) {
+ if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
+ elem.removeChild( tbody );
+ }
+ }
+ }
+
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Fix #12392 for WebKit and IE > 9
+ tmp.textContent = "";
+
+ // Fix #12392 for oldIE
+ while ( tmp.firstChild ) {
+ tmp.removeChild( tmp.firstChild );
+ }
+
+ // Remember the top-level container for proper cleanup
+ tmp = safe.lastChild;
+ }
+ }
+ }
+
+ // Fix #11356: Clear elements from fragment
+ if ( tmp ) {
+ safe.removeChild( tmp );
+ }
+
+ // Reset defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ if ( !jQuery.support.appendChecked ) {
+ jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
+ }
+
+ i = 0;
+ while ( (elem = nodes[ i++ ]) ) {
+
+ // #4087 - If origin and destination elements are the same, and this is
+ // that element, do not do anything
+ if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( safe.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( (elem = tmp[ j++ ]) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ tmp = null;
+
+ return safe;
+ },
+
+ cleanData: function( elems, /* internal */ acceptData ) {
+ var elem, type, id, data,
+ i = 0,
+ internalKey = jQuery.expando,
+ cache = jQuery.cache,
+ deleteExpando = jQuery.support.deleteExpando,
+ special = jQuery.event.special;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+
+ if ( acceptData || jQuery.acceptData( elem ) ) {
+
+ id = elem[ internalKey ];
+ data = id && cache[ id ];
+
+ if ( data ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Remove cache only if it was not already removed by jQuery.event.remove
+ if ( cache[ id ] ) {
+
+ delete cache[ id ];
+
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( deleteExpando ) {
+ delete elem[ internalKey ];
+
+ } else if ( typeof elem.removeAttribute !== core_strundefined ) {
+ elem.removeAttribute( internalKey );
+
+ } else {
+ elem[ internalKey ] = null;
+ }
+
+ core_deletedIds.push( id );
+ }
+ }
+ }
+ }
+ },
+
+ _evalUrl: function( url ) {
+ return jQuery.ajax({
+ url: url,
+ type: "GET",
+ dataType: "script",
+ async: false,
+ global: false,
+ "throws": true
+ });
+ }
+});
+jQuery.fn.extend({
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function(i) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ }
+});
+var iframe, getStyles, curCSS,
+ ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity\s*=\s*([^)]*)/,
+ rposition = /^(top|right|bottom|left)$/,
+ // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+ // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rmargin = /^margin/,
+ rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
+ rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
+ rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
+ elemdisplay = { BODY: "block" },
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: 0,
+ fontWeight: 400
+ },
+
+ cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+ // shortcut for names that are not vendor prefixed
+ if ( name in style ) {
+ return name;
+ }
+
+ // check for vendor prefixed names
+ var capName = name.charAt(0).toUpperCase() + name.slice(1),
+ origName = name,
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in style ) {
+ return name;
+ }
+ }
+
+ return origName;
+}
+
+function isHidden( elem, el ) {
+ // isHidden might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+}
+
+function showHide( elements, show ) {
+ var display, elem, hidden,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ values[ index ] = jQuery._data( elem, "olddisplay" );
+ display = elem.style.display;
+ if ( show ) {
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !values[ index ] && display === "none" ) {
+ elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( elem.style.display === "" && isHidden( elem ) ) {
+ values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
+ }
+ } else {
+
+ if ( !values[ index ] ) {
+ hidden = isHidden( elem );
+
+ if ( display && display !== "none" || !hidden ) {
+ jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+ }
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( index = 0; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+ elem.style.display = show ? values[ index ] || "" : "none";
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend({
+ css: function( name, value ) {
+ return jQuery.access( this, function( elem, name, value ) {
+ var len, styles,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ },
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each(function() {
+ if ( isHidden( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "columnCount": true,
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( value == null || type === "number" && isNaN( value ) ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
+ // but it would mean to define eight (for every problematic property) identical functions
+ if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var num, val, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ //convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Return, converting to number if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+ }
+ return val;
+ }
+});
+
+// NOTE: we've included the "window" in window.getComputedStyle
+// because jsdom on node.js will break without it.
+if ( window.getComputedStyle ) {
+ getStyles = function( elem ) {
+ return window.getComputedStyle( elem, null );
+ };
+
+ curCSS = function( elem, name, _computed ) {
+ var width, minWidth, maxWidth,
+ computed = _computed || getStyles( elem ),
+
+ // getPropertyValue is only needed for .css('filter') in IE9, see #12537
+ ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
+ style = elem.style;
+
+ if ( computed ) {
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
+ // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+ // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret;
+ };
+} else if ( document.documentElement.currentStyle ) {
+ getStyles = function( elem ) {
+ return elem.currentStyle;
+ };
+
+ curCSS = function( elem, name, _computed ) {
+ var left, rs, rsLeft,
+ computed = _computed || getStyles( elem ),
+ ret = computed ? computed[ name ] : undefined,
+ style = elem.style;
+
+ // Avoid setting ret to empty string here
+ // so we don't default to auto
+ if ( ret == null && style && style[ name ] ) {
+ ret = style[ name ];
+ }
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ // but not position css attributes, as those are proportional to the parent element instead
+ // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
+ if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
+
+ // Remember the original values
+ left = style.left;
+ rs = elem.runtimeStyle;
+ rsLeft = rs && rs.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ rs.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : ret;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ rs.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+ var matches = rnumsplit.exec( value );
+ return matches ?
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+ // both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // at this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+ // at this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // at this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var valueIsBorderBox = true,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ styles = getStyles( elem ),
+ isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, styles );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
+ // we need the check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+// Try to determine the default display value of an element
+function css_defaultDisplay( nodeName ) {
+ var doc = document,
+ display = elemdisplay[ nodeName ];
+
+ if ( !display ) {
+ display = actualDisplay( nodeName, doc );
+
+ // If the simple way fails, read from inside an iframe
+ if ( display === "none" || !display ) {
+ // Use the already-created iframe if possible
+ iframe = ( iframe ||
+ jQuery("<iframe frameborder='0' width='0' height='0'/>")
+ .css( "cssText", "display:block !important" )
+ ).appendTo( doc.documentElement );
+
+ // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+ doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
+ doc.write("<!doctype html><html><body>");
+ doc.close();
+
+ display = actualDisplay( nodeName, doc );
+ iframe.detach();
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return display;
+}
+
+// Called ONLY from within css_defaultDisplay
+function actualDisplay( name, doc ) {
+ var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+ display = jQuery.css( elem[0], "display" );
+ elem.remove();
+ return display;
+}
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+ // certain elements can have dimension info if we invisibly show them
+ // however, it must have a current display style that would benefit from this
+ return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
+ jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ }) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var styles = extra && getStyles( elem );
+ return setPositiveNumber( elem, value, extra ?
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ ) : 0
+ );
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ // if value === "", then remove inline opacity #12685
+ if ( ( value >= 1 || value === "" ) &&
+ jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
+ style.removeAttribute ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there is no filter style applied in a css rule or unset inline opacity, we are done
+ if ( value === "" || currentStyle && !currentStyle.filter ) {
+ return;
+ }
+ }
+
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+// These hooks cannot be added until DOM ready because the support test
+// for it is not run until after DOM ready
+jQuery(function() {
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ return jQuery.swap( elem, { "display": "inline-block" },
+ curCSS, [ elem, "marginRight" ] );
+ }
+ }
+ };
+ }
+
+ // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+ // getComputedStyle returns percent when specified for top/left/bottom/right
+ // rather than make the css module depend on the offset module, we just check for it here
+ if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
+ jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+ // if curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ };
+ });
+ }
+
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ // Support: Opera <= 12.12
+ // Opera reports offsetWidths and offsetHeights less than zero on some elements
+ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
+ (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+});
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+jQuery.fn.extend({
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map(function(){
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ })
+ .filter(function(){
+ var type = this.type;
+ // Use .is(":disabled") so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !manipulation_rcheckableType.test( type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+//Serialize an array of form elements or a set of
+//key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+};
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+});
+
+jQuery.fn.extend({
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+ }
+});
+var
+ // Document location
+ ajaxLocParts,
+ ajaxLocation,
+ ajax_nonce = jQuery.now(),
+
+ ajax_rquery = /\?/,
+ rhash = /#.*$/,
+ rts = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat("*");
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+ // For each dataType in the dataTypeExpression
+ while ( (dataType = dataTypes[i++]) ) {
+ // Prepend if requested
+ if ( dataType[0] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+ // Otherwise append
+ } else {
+ (structure[ dataType ] = structure[ dataType ] || []).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ });
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var deep, key,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+jQuery.fn.load = function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+ }
+
+ var selector, response, type,
+ self = this,
+ off = url.indexOf(" ");
+
+ if ( off >= 0 ) {
+ selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax({
+ url: url,
+
+ // if "type" variable is undefined, then "GET" method will be used
+ type: type,
+ dataType: "html",
+ data: params
+ }).done(function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ }).complete( callback && function( jqXHR, status ) {
+ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+ });
+ }
+
+ return this;
+};
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
+ jQuery.fn[ type ] = function( fn ){
+ return this.on( type, fn );
+ };
+});
+
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ type: "GET",
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Cross-domain detection vars
+ parts,
+ // Loop variable
+ i,
+ // URL without anti-cache param
+ cacheURL,
+ // Response headers as string
+ responseHeadersString,
+ // timeout handle
+ timeoutTimer,
+
+ // To know if global events are to be dispatched
+ fireGlobals,
+
+ transport,
+ // Response headers
+ responseHeaders,
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks("once memory"),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // The jqXHR state
+ state = 0,
+ // Default abort message
+ strAbort = "canceled",
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( (match = rheaders.exec( responseHeadersString )) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ var lname = name.toLowerCase();
+ if ( !state ) {
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( state < 2 ) {
+ for ( code in map ) {
+ // Lazy-add the new callback in a way that preserves old ones
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ } else {
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR ).complete = completeDeferred.add;
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
+
+ // A cross-domain request is in order when we have a protocol:host:port mismatch
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger("ajaxStart");
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ cacheURL = s.url;
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+ s.url = rts.test( cacheURL ) ?
+
+ // If there is already a '_' parameter, set its value
+ cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
+
+ // Otherwise add one to the end
+ cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
+ }
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout(function() {
+ jqXHR.abort("timeout");
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader("etag");
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger("ajaxStop");
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ });
+ };
+});
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+ var firstDataType, ct, finalDataType, type,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s[ "throws" ] ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /(?:java|ecma)script/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || jQuery("head")[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement("script");
+
+ script.async = true;
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( script.parentNode ) {
+ script.parentNode.removeChild( script );
+ }
+
+ // Dereference the script
+ script = null;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+
+ // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( undefined, true );
+ }
+ }
+ };
+ }
+});
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always(function() {
+ // Restore preexisting value
+ window[ callbackName ] = overwritten;
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+ // make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ });
+
+ // Delegate to script
+ return "script";
+ }
+});
+var xhrCallbacks, xhrSupported,
+ xhrId = 0,
+ // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject && function() {
+ // Abort all pending requests
+ var key;
+ for ( key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( undefined, true );
+ }
+ };
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+xhrSupported = jQuery.ajaxSettings.xhr();
+jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+xhrSupported = jQuery.support.ajax = !!xhrSupported;
+
+// Create transport if the browser can provide an xhr
+if ( xhrSupported ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var handle, i,
+ xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( err ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+ var status, responseHeaders, statusText, responses;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occurred
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ responses = {};
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+
+ // When requesting binary data, IE6-9 will throw an exception
+ // on any attempt to access responseText (#11426)
+ if ( typeof xhr.responseText === "string" ) {
+ responses.text = xhr.responseText;
+ }
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ if ( !s.async ) {
+ // if we're in sync mode we fire the callback
+ callback();
+ } else if ( xhr.readyState === 4 ) {
+ // (IE6 & IE7) if it's in cache and has been
+ // retrieved directly we need to fire the callback
+ setTimeout( callback );
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback( undefined, true );
+ }
+ }
+ };
+ }
+ });
+}
+var fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
+ rrun = /queueHooks$/,
+ animationPrefilters = [ defaultPrefilter ],
+ tweeners = {
+ "*": [function( prop, value ) {
+ var tween = this.createTween( prop, value ),
+ target = tween.cur(),
+ parts = rfxnum.exec( value ),
+ unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+ rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+ scale = 1,
+ maxIterations = 20;
+
+ if ( start && start[ 3 ] !== unit ) {
+ // Trust units reported by jQuery.css
+ unit = unit || start[ 3 ];
+
+ // Make sure we update the tween properties later on
+ parts = parts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ start = +target || 1;
+
+ do {
+ // If previous iteration zeroed out, double until we get *something*
+ // Use a string for doubling factor so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+ }
+
+ // Update tween properties
+ if ( parts ) {
+ start = tween.start = +start || +target || 0;
+ tween.unit = unit;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[ 1 ] ?
+ start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+ +parts[ 2 ];
+ }
+
+ return tween;
+ }]
+ };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout(function() {
+ fxNow = undefined;
+ });
+ return ( fxNow = jQuery.now() );
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+ // we're done with this property
+ return tween;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = animationPrefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+ // don't match elem in the :animated selector
+ delete tick.elem;
+ }),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+ // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise({
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, { specialEasing: {} }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+ // if we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // resolve when we played the last frame
+ // otherwise, reject
+ if ( gotoEnd ) {
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ }),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ })
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // not quite $.extend, this wont overwrite keys already present.
+ // also - reusing 'index' from above because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.split(" ");
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ tweeners[ prop ] = tweeners[ prop ] || [];
+ tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ animationPrefilters.unshift( callback );
+ } else {
+ animationPrefilters.push( callback );
+ }
+ }
+});
+
+function defaultPrefilter( elem, props, opts ) {
+ /* jshint validthis: true */
+ var prop, value, toggle, tween, hooks, oldfire,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = jQuery._data( elem, "fxshow" );
+
+ // handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always(function() {
+ // doing this makes sure that the complete handler will be called
+ // before this completes
+ anim.always(function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+
+ // height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ if ( jQuery.css( elem, "display" ) === "inline" &&
+ jQuery.css( elem, "float" ) === "none" ) {
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
+ style.display = "inline-block";
+
+ } else {
+ style.zoom = 1;
+ }
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ if ( !jQuery.support.shrinkWrapBlocks ) {
+ anim.always(function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ });
+ }
+ }
+
+
+ // show/hide pass
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+ continue;
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+ }
+ }
+
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = jQuery._data( elem, "fxshow", {} );
+ }
+
+ // store state if its toggle - enables .stop().toggle() to "reverse"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done(function() {
+ jQuery( elem ).hide();
+ });
+ }
+ anim.done(function() {
+ var prop;
+ jQuery._removeData( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ });
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+ }
+}
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || "swing";
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ if ( tween.elem[ tween.prop ] != null &&
+ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails
+ // so, simple values such as "10px" are parsed to Float.
+ // complex values such as "rotate(1rad)" are returned as is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+ // use step hook for back compat - use cssHook if its there - use .style if its
+ // available and use plain properties where available
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE <=9
+// Panic based approach to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+});
+
+jQuery.fn.extend({
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // animate to the value specified
+ .end().animate({ opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || jQuery._data( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = jQuery._data( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each(function() {
+ var index,
+ data = jQuery._data( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // enable finishing flag on private data
+ data.finish = true;
+
+ // empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // turn off finishing flag
+ delete data.finish;
+ });
+ }
+});
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ attrs = { height: type },
+ i = 0;
+
+ // if we include width, step value is 1 to do all cssExpand values,
+ // if we don't include width, step value is 2 to skip over Left and Right
+ includeWidth = includeWidth? 1 : 0;
+ for( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p*Math.PI ) / 2;
+ }
+};
+
+jQuery.timers = [];
+jQuery.fx = Tween.prototype.init;
+jQuery.fx.tick = function() {
+ var timer,
+ timers = jQuery.timers,
+ i = 0;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ if ( timer() && jQuery.timers.push( timer ) ) {
+ jQuery.fx.start();
+ }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ clearInterval( timerId );
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+};
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+jQuery.fn.offset = function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var docElem, win,
+ box = { top: 0, left: 0 },
+ elem = this[ 0 ],
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ // If we don't have gBCR, just use 0,0 rather than error
+ // BlackBerry 5, iOS 3 (original iPhone)
+ if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
+ box = elem.getBoundingClientRect();
+ }
+ win = getWindow( doc );
+ return {
+ top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),
+ left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
+ };
+};
+
+jQuery.offset = {
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ parentOffset = { top: 0, left: 0 },
+ elem = this[ 0 ];
+
+ // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+ // we assume that getBoundingClientRect is available when computed position is fixed
+ offset = elem.getBoundingClientRect();
+ } else {
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+ }
+
+ // Subtract parent offsets and element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || docElem;
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent || docElem;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+ var top = /Y/.test( prop );
+
+ jQuery.fn[ method ] = function( val ) {
+ return jQuery.access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? (prop in win) ? win[ prop ] :
+ win.document.documentElement[ method ] :
+ elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : jQuery( win ).scrollLeft(),
+ top ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+ // margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return jQuery.access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
+ // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ });
+});
+// Limit scope pollution from any deprecated API
+// (function() {
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+ return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+// })();
+if ( typeof module === "object" && module && typeof module.exports === "object" ) {
+ // Expose jQuery as module.exports in loaders that implement the Node
+ // module pattern (including browserify). Do not create the global, since
+ // the user will be storing it themselves locally, and globals are frowned
+ // upon in the Node module world.
+ module.exports = jQuery;
+} else {
+ // Otherwise expose jQuery to the global object as usual
+ window.jQuery = window.$ = jQuery;
+
+ // Register as a named AMD module, since jQuery can be concatenated with other
+ // files that may use define, but not via a proper concatenation script that
+ // understands anonymous AMD modules. A named AMD is safest and most robust
+ // way to register. Lowercase jquery is used because AMD module names are
+ // derived from file names, and jQuery is normally delivered in a lowercase
+ // file name. Do this after creating the global so that if an AMD module wants
+ // to call noConflict to hide this version of jQuery, it will work.
+ if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function () { return jQuery; } );
+ }
+}
+
+})( window );
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/css/patternfly.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/css/patternfly.css
new file mode 100644
index 0000000..2f21058
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/css/patternfly.css
@@ -0,0 +1,11707 @@
+/* PatternFly */
+/* Bootstrap 3 */
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+html {
+ font-family: sans-serif;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+}
+body {
+ margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ vertical-align: baseline;
+}
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+[hidden],
+template {
+ display: none;
+}
+a {
+ background-color: transparent;
+}
+a:active,
+a:hover {
+ outline: 0;
+}
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+b,
+strong {
+ font-weight: bold;
+}
+dfn {
+ font-style: italic;
+}
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+mark {
+ background: #ff0;
+ color: #000;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+sup {
+ top: -0.5em;
+}
+sub {
+ bottom: -0.25em;
+}
+img {
+ border: 0;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+figure {
+ margin: 1em 40px;
+}
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+pre {
+ overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit;
+ font: inherit;
+ margin: 0;
+}
+button {
+ overflow: visible;
+}
+button,
+select {
+ text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+input {
+ line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box;
+ padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: textfield;
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+legend {
+ border: 0;
+ padding: 0;
+}
+textarea {
+ overflow: auto;
+}
+optgroup {
+ font-weight: bold;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td,
+th {
+ padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+ *,
+ *:before,
+ *:after {
+ background: transparent !important;
+ color: #000 !important;
+ box-shadow: none !important;
+ text-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ select {
+ background: #fff !important;
+ }
+ .navbar {
+ display: none;
+ }
+ .btn > .caret,
+ .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+ }
+ .label {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #ddd !important;
+ }
+}
+@font-face {
+ font-family: 'Glyphicons Halflings';
+ src: url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot');
+ src: url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+ content: "\2a";
+}
+.glyphicon-plus:before {
+ content: "\2b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
+}
+.glyphicon-minus:before {
+ content: "\2212";
+}
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+.glyphicon-glass:before {
+ content: "\e001";
+}
+.glyphicon-music:before {
+ content: "\e002";
+}
+.glyphicon-search:before {
+ content: "\e003";
+}
+.glyphicon-heart:before {
+ content: "\e005";
+}
+.glyphicon-star:before {
+ content: "\e006";
+}
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+.glyphicon-user:before {
+ content: "\e008";
+}
+.glyphicon-film:before {
+ content: "\e009";
+}
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+.glyphicon-th:before {
+ content: "\e011";
+}
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+.glyphicon-ok:before {
+ content: "\e013";
+}
+.glyphicon-remove:before {
+ content: "\e014";
+}
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+.glyphicon-off:before {
+ content: "\e017";
+}
+.glyphicon-signal:before {
+ content: "\e018";
+}
+.glyphicon-cog:before {
+ content: "\e019";
+}
+.glyphicon-trash:before {
+ content: "\e020";
+}
+.glyphicon-home:before {
+ content: "\e021";
+}
+.glyphicon-file:before {
+ content: "\e022";
+}
+.glyphicon-time:before {
+ content: "\e023";
+}
+.glyphicon-road:before {
+ content: "\e024";
+}
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+.glyphicon-download:before {
+ content: "\e026";
+}
+.glyphicon-upload:before {
+ content: "\e027";
+}
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+.glyphicon-lock:before {
+ content: "\e033";
+}
+.glyphicon-flag:before {
+ content: "\e034";
+}
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+.glyphicon-tag:before {
+ content: "\e041";
+}
+.glyphicon-tags:before {
+ content: "\e042";
+}
+.glyphicon-book:before {
+ content: "\e043";
+}
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+.glyphicon-print:before {
+ content: "\e045";
+}
+.glyphicon-camera:before {
+ content: "\e046";
+}
+.glyphicon-font:before {
+ content: "\e047";
+}
+.glyphicon-bold:before {
+ content: "\e048";
+}
+.glyphicon-italic:before {
+ content: "\e049";
+}
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+.glyphicon-list:before {
+ content: "\e056";
+}
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+.glyphicon-picture:before {
+ content: "\e060";
+}
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+.glyphicon-tint:before {
+ content: "\e064";
+}
+.glyphicon-edit:before {
+ content: "\e065";
+}
+.glyphicon-share:before {
+ content: "\e066";
+}
+.glyphicon-check:before {
+ content: "\e067";
+}
+.glyphicon-move:before {
+ content: "\e068";
+}
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+.glyphicon-backward:before {
+ content: "\e071";
+}
+.glyphicon-play:before {
+ content: "\e072";
+}
+.glyphicon-pause:before {
+ content: "\e073";
+}
+.glyphicon-stop:before {
+ content: "\e074";
+}
+.glyphicon-forward:before {
+ content: "\e075";
+}
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+.glyphicon-eject:before {
+ content: "\e078";
+}
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+.glyphicon-gift:before {
+ content: "\e102";
+}
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+.glyphicon-fire:before {
+ content: "\e104";
+}
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+.glyphicon-plane:before {
+ content: "\e108";
+}
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+.glyphicon-random:before {
+ content: "\e110";
+}
+.glyphicon-comment:before {
+ content: "\e111";
+}
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+.glyphicon-bell:before {
+ content: "\e123";
+}
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+.glyphicon-globe:before {
+ content: "\e135";
+}
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+.glyphicon-filter:before {
+ content: "\e138";
+}
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+.glyphicon-link:before {
+ content: "\e144";
+}
+.glyphicon-phone:before {
+ content: "\e145";
+}
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+.glyphicon-usd:before {
+ content: "\e148";
+}
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+.glyphicon-sort:before {
+ content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+.glyphicon-expand:before {
+ content: "\e158";
+}
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+.glyphicon-flash:before {
+ content: "\e162";
+}
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+.glyphicon-record:before {
+ content: "\e165";
+}
+.glyphicon-save:before {
+ content: "\e166";
+}
+.glyphicon-open:before {
+ content: "\e167";
+}
+.glyphicon-saved:before {
+ content: "\e168";
+}
+.glyphicon-import:before {
+ content: "\e169";
+}
+.glyphicon-export:before {
+ content: "\e170";
+}
+.glyphicon-send:before {
+ content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+.glyphicon-header:before {
+ content: "\e180";
+}
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+.glyphicon-tower:before {
+ content: "\e184";
+}
+.glyphicon-stats:before {
+ content: "\e185";
+}
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+.glyphicon-cd:before {
+ content: "\e201";
+}
+.glyphicon-save-file:before {
+ content: "\e202";
+}
+.glyphicon-open-file:before {
+ content: "\e203";
+}
+.glyphicon-level-up:before {
+ content: "\e204";
+}
+.glyphicon-copy:before {
+ content: "\e205";
+}
+.glyphicon-paste:before {
+ content: "\e206";
+}
+.glyphicon-alert:before {
+ content: "\e209";
+}
+.glyphicon-equalizer:before {
+ content: "\e210";
+}
+.glyphicon-king:before {
+ content: "\e211";
+}
+.glyphicon-queen:before {
+ content: "\e212";
+}
+.glyphicon-pawn:before {
+ content: "\e213";
+}
+.glyphicon-bishop:before {
+ content: "\e214";
+}
+.glyphicon-knight:before {
+ content: "\e215";
+}
+.glyphicon-baby-formula:before {
+ content: "\e216";
+}
+.glyphicon-tent:before {
+ content: "\26fa";
+}
+.glyphicon-blackboard:before {
+ content: "\e218";
+}
+.glyphicon-bed:before {
+ content: "\e219";
+}
+.glyphicon-apple:before {
+ content: "\f8ff";
+}
+.glyphicon-erase:before {
+ content: "\e221";
+}
+.glyphicon-hourglass:before {
+ content: "\231b";
+}
+.glyphicon-lamp:before {
+ content: "\e223";
+}
+.glyphicon-duplicate:before {
+ content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+ content: "\e225";
+}
+.glyphicon-scissors:before {
+ content: "\e226";
+}
+.glyphicon-bitcoin:before {
+ content: "\e227";
+}
+.glyphicon-btc:before {
+ content: "\e227";
+}
+.glyphicon-xbt:before {
+ content: "\e227";
+}
+.glyphicon-yen:before {
+ content: "\00a5";
+}
+.glyphicon-jpy:before {
+ content: "\00a5";
+}
+.glyphicon-ruble:before {
+ content: "\20bd";
+}
+.glyphicon-rub:before {
+ content: "\20bd";
+}
+.glyphicon-scale:before {
+ content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+ content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+ content: "\e232";
+}
+.glyphicon-education:before {
+ content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+ content: "\e234";
+}
+.glyphicon-option-vertical:before {
+ content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+ content: "\e236";
+}
+.glyphicon-modal-window:before {
+ content: "\e237";
+}
+.glyphicon-oil:before {
+ content: "\e238";
+}
+.glyphicon-grain:before {
+ content: "\e239";
+}
+.glyphicon-sunglasses:before {
+ content: "\e240";
+}
+.glyphicon-text-size:before {
+ content: "\e241";
+}
+.glyphicon-text-color:before {
+ content: "\e242";
+}
+.glyphicon-text-background:before {
+ content: "\e243";
+}
+.glyphicon-object-align-top:before {
+ content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+ content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+ content: "\e246";
+}
+.glyphicon-object-align-left:before {
+ content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+ content: "\e248";
+}
+.glyphicon-object-align-right:before {
+ content: "\e249";
+}
+.glyphicon-triangle-right:before {
+ content: "\e250";
+}
+.glyphicon-triangle-left:before {
+ content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+ content: "\e252";
+}
+.glyphicon-triangle-top:before {
+ content: "\e253";
+}
+.glyphicon-console:before {
+ content: "\e254";
+}
+.glyphicon-superscript:before {
+ content: "\e255";
+}
+.glyphicon-subscript:before {
+ content: "\e256";
+}
+.glyphicon-menu-left:before {
+ content: "\e257";
+}
+.glyphicon-menu-right:before {
+ content: "\e258";
+}
+.glyphicon-menu-down:before {
+ content: "\e259";
+}
+.glyphicon-menu-up:before {
+ content: "\e260";
+}
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+html {
+ font-size: 10px;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ line-height: 1.66666667;
+ color: #333333;
+ background-color: #ffffff;
+}
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+a {
+ color: #0099d3;
+ text-decoration: none;
+}
+a:hover,
+a:focus {
+ color: #00618a;
+ text-decoration: underline;
+}
+a:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+figure {
+ margin: 0;
+}
+img {
+ vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+}
+.img-rounded {
+ border-radius: 1px;
+}
+.img-thumbnail {
+ padding: 4px;
+ line-height: 1.66666667;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 1px;
+ -webkit-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+ display: inline-block;
+ max-width: 100%;
+ height: auto;
+}
+.img-circle {
+ border-radius: 50%;
+}
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ padding: 0;
+ 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;
+}
+[role="button"] {
+ cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.1;
+ color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+ font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+ font-size: 75%;
+}
+h1,
+.h1 {
+ font-size: 24px;
+}
+h2,
+.h2 {
+ font-size: 22px;
+}
+h3,
+.h3 {
+ font-size: 16px;
+}
+h4,
+.h4 {
+ font-size: 15px;
+}
+h5,
+.h5 {
+ font-size: 13px;
+}
+h6,
+.h6 {
+ font-size: 11px;
+}
+p {
+ margin: 0 0 10px;
+}
+.lead {
+ margin-bottom: 20px;
+ font-size: 13px;
+ font-weight: 300;
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .lead {
+ font-size: 18px;
+ }
+}
+small,
+.small {
+ font-size: 91%;
+}
+mark,
+.mark {
+ background-color: #fcf8e3;
+ padding: .2em;
+}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+.text-center {
+ text-align: center;
+}
+.text-justify {
+ text-align: justify;
+}
+.text-nowrap {
+ white-space: nowrap;
+}
+.text-lowercase {
+ text-transform: lowercase;
+}
+.text-uppercase {
+ text-transform: uppercase;
+}
+.text-capitalize {
+ text-transform: capitalize;
+}
+.text-muted {
+ color: #999999;
+}
+.text-primary {
+ color: #00a8e1;
+}
+a.text-primary:hover {
+ color: #0082ae;
+}
+.text-success {
+ color: #3c763d;
+}
+a.text-success:hover {
+ color: #2b542c;
+}
+.text-info {
+ color: #31708f;
+}
+a.text-info:hover {
+ color: #245269;
+}
+.text-warning {
+ color: #ec7a08;
+}
+a.text-warning:hover {
+ color: #bb6106;
+}
+.text-danger {
+ color: #a94442;
+}
+a.text-danger:hover {
+ color: #843534;
+}
+.bg-primary {
+ color: #fff;
+ background-color: #00a8e1;
+}
+a.bg-primary:hover {
+ background-color: #0082ae;
+}
+.bg-success {
+ background-color: #dff0d8;
+}
+a.bg-success:hover {
+ background-color: #c1e2b3;
+}
+.bg-info {
+ background-color: #d9edf7;
+}
+a.bg-info:hover {
+ background-color: #afd9ee;
+}
+.bg-warning {
+ background-color: #fcf8e3;
+}
+a.bg-warning:hover {
+ background-color: #f7ecb5;
+}
+.bg-danger {
+ background-color: #f2dede;
+}
+a.bg-danger:hover {
+ background-color: #e4b9b9;
+}
+.page-header {
+ padding-bottom: 9px;
+ margin: 40px 0 20px;
+ border-bottom: 1px solid #eeeeee;
+}
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+ margin-left: -5px;
+}
+.list-inline > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+dl {
+ margin-top: 0;
+ margin-bottom: 20px;
+}
+dt,
+dd {
+ line-height: 1.66666667;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+}
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #999999;
+}
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ font-size: 15px;
+ border-left: 5px solid #eeeeee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+ margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+ display: block;
+ font-size: 80%;
+ line-height: 1.66666667;
+ color: #999999;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+ text-align: right;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+ content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+ content: '\00A0 \2014';
+}
+address {
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 1.66666667;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, monospace;
+}
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ background-color: #f9f2f4;
+ border-radius: 1px;
+}
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #ffffff;
+ background-color: #333333;
+ border-radius: 1px;
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ box-shadow: none;
+}
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 11px;
+ line-height: 1.66666667;
+ word-break: break-all;
+ word-wrap: break-word;
+ color: #333333;
+ background-color: #fcfcfc;
+ border: 1px solid #cccccc;
+ border-radius: 1px;
+}
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.container {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+@media (min-width: 768px) {
+ .container {
+ width: 760px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 980px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ width: 1180px;
+ }
+}
+.container-fluid {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+.row {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+ float: left;
+}
+.col-xs-12 {
+ width: 100%;
+}
+.col-xs-11 {
+ width: 91.66666666666666%;
+}
+.col-xs-10 {
+ width: 83.33333333333334%;
+}
+.col-xs-9 {
+ width: 75%;
+}
+.col-xs-8 {
+ width: 66.66666666666666%;
+}
+.col-xs-7 {
+ width: 58.333333333333336%;
+}
+.col-xs-6 {
+ width: 50%;
+}
+.col-xs-5 {
+ width: 41.66666666666667%;
+}
+.col-xs-4 {
+ width: 33.33333333333333%;
+}
+.col-xs-3 {
+ width: 25%;
+}
+.col-xs-2 {
+ width: 16.666666666666664%;
+}
+.col-xs-1 {
+ width: 8.333333333333332%;
+}
+.col-xs-pull-12 {
+ right: 100%;
+}
+.col-xs-pull-11 {
+ right: 91.66666666666666%;
+}
+.col-xs-pull-10 {
+ right: 83.33333333333334%;
+}
+.col-xs-pull-9 {
+ right: 75%;
+}
+.col-xs-pull-8 {
+ right: 66.66666666666666%;
+}
+.col-xs-pull-7 {
+ right: 58.333333333333336%;
+}
+.col-xs-pull-6 {
+ right: 50%;
+}
+.col-xs-pull-5 {
+ right: 41.66666666666667%;
+}
+.col-xs-pull-4 {
+ right: 33.33333333333333%;
+}
+.col-xs-pull-3 {
+ right: 25%;
+}
+.col-xs-pull-2 {
+ right: 16.666666666666664%;
+}
+.col-xs-pull-1 {
+ right: 8.333333333333332%;
+}
+.col-xs-pull-0 {
+ right: auto;
+}
+.col-xs-push-12 {
+ left: 100%;
+}
+.col-xs-push-11 {
+ left: 91.66666666666666%;
+}
+.col-xs-push-10 {
+ left: 83.33333333333334%;
+}
+.col-xs-push-9 {
+ left: 75%;
+}
+.col-xs-push-8 {
+ left: 66.66666666666666%;
+}
+.col-xs-push-7 {
+ left: 58.333333333333336%;
+}
+.col-xs-push-6 {
+ left: 50%;
+}
+.col-xs-push-5 {
+ left: 41.66666666666667%;
+}
+.col-xs-push-4 {
+ left: 33.33333333333333%;
+}
+.col-xs-push-3 {
+ left: 25%;
+}
+.col-xs-push-2 {
+ left: 16.666666666666664%;
+}
+.col-xs-push-1 {
+ left: 8.333333333333332%;
+}
+.col-xs-push-0 {
+ left: auto;
+}
+.col-xs-offset-12 {
+ margin-left: 100%;
+}
+.col-xs-offset-11 {
+ margin-left: 91.66666666666666%;
+}
+.col-xs-offset-10 {
+ margin-left: 83.33333333333334%;
+}
+.col-xs-offset-9 {
+ margin-left: 75%;
+}
+.col-xs-offset-8 {
+ margin-left: 66.66666666666666%;
+}
+.col-xs-offset-7 {
+ margin-left: 58.333333333333336%;
+}
+.col-xs-offset-6 {
+ margin-left: 50%;
+}
+.col-xs-offset-5 {
+ margin-left: 41.66666666666667%;
+}
+.col-xs-offset-4 {
+ margin-left: 33.33333333333333%;
+}
+.col-xs-offset-3 {
+ margin-left: 25%;
+}
+.col-xs-offset-2 {
+ margin-left: 16.666666666666664%;
+}
+.col-xs-offset-1 {
+ margin-left: 8.333333333333332%;
+}
+.col-xs-offset-0 {
+ margin-left: 0%;
+}
+@media (min-width: 768px) {
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ float: left;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666666666666%;
+ }
+ .col-sm-10 {
+ width: 83.33333333333334%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666666666666%;
+ }
+ .col-sm-7 {
+ width: 58.333333333333336%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666666666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.666666666666664%;
+ }
+ .col-sm-1 {
+ width: 8.333333333333332%;
+ }
+ .col-sm-pull-12 {
+ right: 100%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-sm-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-sm-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-sm-pull-0 {
+ right: auto;
+ }
+ .col-sm-push-12 {
+ left: 100%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-sm-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-sm-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-sm-push-0 {
+ left: auto;
+ }
+ .col-sm-offset-12 {
+ margin-left: 100%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-sm-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 992px) {
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ float: left;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666666666666%;
+ }
+ .col-md-10 {
+ width: 83.33333333333334%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666666666666%;
+ }
+ .col-md-7 {
+ width: 58.333333333333336%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666666666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.666666666666664%;
+ }
+ .col-md-1 {
+ width: 8.333333333333332%;
+ }
+ .col-md-pull-12 {
+ right: 100%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-md-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-md-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-md-pull-0 {
+ right: auto;
+ }
+ .col-md-push-12 {
+ left: 100%;
+ }
+ .col-md-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-md-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-md-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-md-push-0 {
+ left: auto;
+ }
+ .col-md-offset-12 {
+ margin-left: 100%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 1200px) {
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ float: left;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666666666666%;
+ }
+ .col-lg-10 {
+ width: 83.33333333333334%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666666666666%;
+ }
+ .col-lg-7 {
+ width: 58.333333333333336%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666666666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.666666666666664%;
+ }
+ .col-lg-1 {
+ width: 8.333333333333332%;
+ }
+ .col-lg-pull-12 {
+ right: 100%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-lg-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-lg-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-lg-pull-0 {
+ right: auto;
+ }
+ .col-lg-push-12 {
+ left: 100%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-lg-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-lg-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-lg-push-0 {
+ left: auto;
+ }
+ .col-lg-offset-12 {
+ margin-left: 100%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0%;
+ }
+}
+table {
+ background-color: transparent;
+}
+caption {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ color: #999999;
+ text-align: left;
+}
+th {
+ text-align: left;
+}
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 10px;
+ line-height: 1.66666667;
+ vertical-align: top;
+ border-top: 1px solid #d1d1d1;
+}
+.table > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #d1d1d1;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+ border-top: 0;
+}
+.table > tbody + tbody {
+ border-top: 2px solid #d1d1d1;
+}
+.table .table {
+ background-color: #ffffff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+ padding: 5px;
+}
+.table-bordered {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: #f5f5f5;
+}
+.table-hover > tbody > tr:hover {
+ background-color: #d5ecf9;
+}
+table col[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-column;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-cell;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+ background-color: #d5ecf9;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+ background-color: #bfe2f6;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+ background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+ background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+ background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+ background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+ background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+ background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+ background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+ background-color: #ebcccc;
+}
+.table-responsive {
+ overflow-x: auto;
+ min-height: 0.01%;
+}
+@media screen and (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid #d1d1d1;
+ }
+ .table-responsive > .table {
+ margin-bottom: 0;
+ }
+ .table-responsive > .table > thead > tr > th,
+ .table-responsive > .table > tbody > tr > th,
+ .table-responsive > .table > tfoot > tr > th,
+ .table-responsive > .table > thead > tr > td,
+ .table-responsive > .table > tbody > tr > td,
+ .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+ }
+ .table-responsive > .table-bordered {
+ border: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+ }
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+ }
+}
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+ min-width: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 18px;
+ line-height: inherit;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+label {
+ display: inline-block;
+ max-width: 100%;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ line-height: normal;
+}
+input[type="file"] {
+ display: block;
+}
+input[type="range"] {
+ display: block;
+ width: 100%;
+}
+select[multiple],
+select[size] {
+ height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+output {
+ display: block;
+ padding-top: 3px;
+ font-size: 12px;
+ line-height: 1.66666667;
+ color: #333333;
+}
+.form-control {
+ display: block;
+ width: 100%;
+ height: 26px;
+ padding: 2px 6px;
+ font-size: 12px;
+ line-height: 1.66666667;
+ color: #333333;
+ background-color: #ffffff;
+ background-image: none;
+ border: 1px solid #bababa;
+ border-radius: 1px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.form-control::-moz-placeholder {
+ color: #999999;
+ opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+ color: #999999;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999999;
+}
+.form-control:-moz-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control::-moz-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control:-ms-input-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ background-color: #f8f8f8;
+ opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+}
+textarea.form-control {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ input[type="date"],
+ input[type="time"],
+ input[type="datetime-local"],
+ input[type="month"] {
+ line-height: 26px;
+ }
+ input[type="date"].input-sm,
+ input[type="time"].input-sm,
+ input[type="datetime-local"].input-sm,
+ input[type="month"].input-sm,
+ .input-group-sm input[type="date"],
+ .input-group-sm input[type="time"],
+ .input-group-sm input[type="datetime-local"],
+ .input-group-sm input[type="month"] {
+ line-height: 22px;
+ }
+ input[type="date"].input-lg,
+ input[type="time"].input-lg,
+ input[type="datetime-local"].input-lg,
+ input[type="month"].input-lg,
+ .input-group-lg input[type="date"],
+ .input-group-lg input[type="time"],
+ .input-group-lg input[type="datetime-local"],
+ .input-group-lg input[type="month"] {
+ line-height: 33px;
+ }
+}
+.form-group {
+ margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ position: absolute;
+ margin-left: -20px;
+ margin-top: 4px \9;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+ position: relative;
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ vertical-align: middle;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
+}
+.form-control-static {
+ padding-top: 3px;
+ padding-bottom: 3px;
+ margin-bottom: 0;
+ min-height: 32px;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-sm {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+select.input-sm {
+ height: 22px;
+ line-height: 22px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+ height: auto;
+}
+.form-group-sm .form-control {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+select.form-group-sm .form-control {
+ height: 22px;
+ line-height: 22px;
+}
+textarea.form-group-sm .form-control,
+select[multiple].form-group-sm .form-control {
+ height: auto;
+}
+.form-group-sm .form-control-static {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ min-height: 31px;
+}
+.input-lg {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+select.input-lg {
+ height: 33px;
+ line-height: 33px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+ height: auto;
+}
+.form-group-lg .form-control {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+select.form-group-lg .form-control {
+ height: 33px;
+ line-height: 33px;
+}
+textarea.form-group-lg .form-control,
+select[multiple].form-group-lg .form-control {
+ height: auto;
+}
+.form-group-lg .form-control-static {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ min-height: 34px;
+}
+.has-feedback {
+ position: relative;
+}
+.has-feedback .form-control {
+ padding-right: 32.5px;
+}
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 26px;
+ height: 26px;
+ line-height: 26px;
+ text-align: center;
+ pointer-events: none;
+}
+.input-lg + .form-control-feedback {
+ width: 33px;
+ height: 33px;
+ line-height: 33px;
+}
+.input-sm + .form-control-feedback {
+ width: 22px;
+ height: 22px;
+ line-height: 22px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+ color: #3c763d;
+}
+.has-success .form-control {
+ border-color: #3c763d;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+ color: #3c763d;
+ border-color: #3c763d;
+ background-color: #dff0d8;
+}
+.has-success .form-control-feedback {
+ color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+ color: #ec7a08;
+}
+.has-warning .form-control {
+ border-color: #ec7a08;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-warning .form-control:focus {
+ border-color: #bb6106;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+}
+.has-warning .input-group-addon {
+ color: #ec7a08;
+ border-color: #ec7a08;
+ background-color: #fcf8e3;
+}
+.has-warning .form-control-feedback {
+ color: #ec7a08;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+ color: #a94442;
+}
+.has-error .form-control {
+ border-color: #a94442;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-error .form-control:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+ color: #a94442;
+ border-color: #a94442;
+ background-color: #f2dede;
+}
+.has-error .form-control-feedback {
+ color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+ top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+ top: 0;
+}
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
+}
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .form-inline .form-control-static {
+ display: inline-block;
+ }
+ .form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .form-inline .input-group .input-group-addon,
+ .form-inline .input-group .input-group-btn,
+ .form-inline .input-group .form-control {
+ width: auto;
+ }
+ .form-inline .input-group > .form-control {
+ width: 100%;
+ }
+ .form-inline .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio label,
+ .form-inline .checkbox label {
+ padding-left: 0;
+ }
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .form-inline .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 3px;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 23px;
+}
+.form-horizontal .form-group {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ text-align: right;
+ margin-bottom: 0;
+ padding-top: 3px;
+ }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+ right: 20px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-lg .control-label {
+ padding-top: 8.999999800000001px;
+ }
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 3px;
+ }
+}
+.btn {
+ display: inline-block;
+ margin-bottom: 0;
+ font-weight: 600;
+ text-align: center;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ background-image: none;
+ border: 1px solid transparent;
+ white-space: nowrap;
+ padding: 2px 6px;
+ font-size: 12px;
+ line-height: 1.66666667;
+ border-radius: 1px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+ color: #4d5258;
+ text-decoration: none;
+}
+.btn:active,
+.btn.active {
+ outline: 0;
+ background-image: none;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ cursor: not-allowed;
+ pointer-events: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-default {
+ color: #4d5258;
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.btn-default:hover,
+.btn-default:focus,
+.btn-default.focus,
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ color: #4d5258;
+ background-color: #d5d5d5;
+ border-color: #989898;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.btn-default .badge {
+ color: #eeeeee;
+ background-color: #4d5258;
+}
+.btn-primary {
+ color: #ffffff;
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary.focus,
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.btn-primary .badge {
+ color: #0085cf;
+ background-color: #ffffff;
+}
+.btn-success {
+ color: #ffffff;
+ background-color: #3f9c35;
+ border-color: #37892f;
+}
+.btn-success:hover,
+.btn-success:focus,
+.btn-success.focus,
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ color: #ffffff;
+ background-color: #307628;
+ border-color: #255b1f;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ background-image: none;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #3f9c35;
+ border-color: #37892f;
+}
+.btn-success .badge {
+ color: #3f9c35;
+ background-color: #ffffff;
+}
+.btn-info {
+ color: #ffffff;
+ background-color: #006e9c;
+ border-color: #005c83;
+}
+.btn-info:hover,
+.btn-info:focus,
+.btn-info.focus,
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ color: #ffffff;
+ background-color: #004a69;
+ border-color: #003145;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ background-image: none;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #006e9c;
+ border-color: #005c83;
+}
+.btn-info .badge {
+ color: #006e9c;
+ background-color: #ffffff;
+}
+.btn-warning {
+ color: #ffffff;
+ background-color: #ec7a08;
+ border-color: #d36d07;
+}
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning.focus,
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ color: #ffffff;
+ background-color: #bb6106;
+ border-color: #984f05;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ background-image: none;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #ec7a08;
+ border-color: #d36d07;
+}
+.btn-warning .badge {
+ color: #ec7a08;
+ background-color: #ffffff;
+}
+.btn-danger {
+ color: #ffffff;
+ background-color: #a30000;
+ border-color: #781919;
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger.focus,
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ color: #ffffff;
+ background-color: #700000;
+ border-color: #450e0e;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #a30000;
+ border-color: #781919;
+}
+.btn-danger .badge {
+ color: #a30000;
+ background-color: #ffffff;
+}
+.btn-link {
+ color: #0099d3;
+ font-weight: normal;
+ border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+ color: #00618a;
+ text-decoration: underline;
+ background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #999999;
+ text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+ padding: 1px 5px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ display: none;
+}
+.collapse.in {
+ display: block;
+}
+tr.collapse.in {
+ display: table-row;
+}
+tbody.collapse.in {
+ display: table-row-group;
+}
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition-property: height, visibility;
+ transition-property: height, visibility;
+ -webkit-transition-duration: 0.35s;
+ transition-duration: 0.35s;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
+}
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 0 dashed;
+ border-right: 0 solid transparent;
+ border-left: 0 solid transparent;
+}
+.dropup,
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle:focus {
+ outline: 0;
+}
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ font-size: 12px;
+ text-align: left;
+ background-color: #ffffff;
+ border: 1px solid #b6b6b6;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ margin: 9px 0;
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 4px 1px;
+ overflow: hidden;
+}
+.dropdown-menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.66666667;
+ color: #333333;
+ white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ text-decoration: none;
+ color: #4d5258;
+ background-color: #d4edfa;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ text-decoration: none;
+ outline: 0;
+ background-color: #0099d3;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #999999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ cursor: not-allowed;
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.open > a {
+ outline: 0;
+}
+.dropdown-menu-right {
+ left: auto;
+ right: 0;
+}
+.dropdown-menu-left {
+ left: 0;
+ right: auto;
+}
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 11px;
+ line-height: 1.66666667;
+ color: #999999;
+ white-space: nowrap;
+}
+.dropdown-backdrop {
+ position: fixed;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+ z-index: 990;
+}
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 0 solid;
+ content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+ .navbar-right .dropdown-menu {
+ left: auto;
+ right: 0;
+ }
+ .navbar-right .dropdown-menu-left {
+ left: 0;
+ right: auto;
+ }
+}
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+ margin-left: -1px;
+}
+.btn-toolbar {
+ margin-left: -5px;
+}
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+ float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+ margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-left: 8px;
+ padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn .caret {
+ margin-left: 0;
+}
+.btn-lg .caret {
+ border-width: 0 0 0;
+ border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+ border-width: 0 0 0;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-top-right-radius: 1px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-bottom-left-radius: 1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+ float: none;
+ display: table-cell;
+ width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+ width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+ left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+.input-group {
+ position: relative;
+ display: table;
+ border-collapse: separate;
+}
+.input-group[class*="col-"] {
+ float: none;
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-group .form-control {
+ position: relative;
+ z-index: 2;
+ float: left;
+ width: 100%;
+ margin-bottom: 0;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+ height: 33px;
+ line-height: 33px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+ height: 22px;
+ line-height: 22px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+.input-group-addon {
+ padding: 2px 6px;
+ font-size: 12px;
+ font-weight: normal;
+ line-height: 1;
+ color: #333333;
+ text-align: center;
+ background-color: #eeeeee;
+ border: 1px solid #bababa;
+ border-radius: 1px;
+}
+.input-group-addon.input-sm {
+ padding: 2px 6px;
+ font-size: 11px;
+ border-radius: 1px;
+}
+.input-group-addon.input-lg {
+ padding: 6px 10px;
+ font-size: 14px;
+ border-radius: 1px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.input-group-addon:first-child {
+ border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.input-group-addon:last-child {
+ border-left: 0;
+}
+.input-group-btn {
+ position: relative;
+ font-size: 0;
+ white-space: nowrap;
+}
+.input-group-btn > .btn {
+ position: relative;
+}
+.input-group-btn > .btn + .btn {
+ margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+ z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+ margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+ margin-left: -1px;
+}
+.nav {
+ margin-bottom: 0;
+ padding-left: 0;
+ list-style: none;
+}
+.nav > li {
+ position: relative;
+ display: block;
+}
+.nav > li > a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+.nav > li.disabled > a {
+ color: #999999;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #999999;
+ text-decoration: none;
+ background-color: transparent;
+ cursor: not-allowed;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #eeeeee;
+ border-color: #0099d3;
+}
+.nav .nav-divider {
+ margin: 9px 0;
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 4px 1px;
+ overflow: hidden;
+}
+.nav > li > a > img {
+ max-width: none;
+}
+.nav-tabs {
+ border-bottom: 1px solid #e9e8e8;
+}
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ margin-right: 2px;
+ line-height: 1.66666667;
+ border: 1px solid transparent;
+ border-radius: 1px 1px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: transparent transparent #e9e8e8;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #0099d3;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-bottom-color: transparent;
+ cursor: default;
+}
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-tabs.nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs.nav-justified > li > a {
+ margin-right: 0;
+ border-radius: 1px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+ border: 1px solid #e9e8e8;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li > a {
+ border-bottom: 1px solid #e9e8e8;
+ border-radius: 1px 1px 0 0;
+ }
+ .nav-tabs.nav-justified > .active > a,
+ .nav-tabs.nav-justified > .active > a:hover,
+ .nav-tabs.nav-justified > .active > a:focus {
+ border-bottom-color: #ffffff;
+ }
+}
+.nav-pills > li {
+ float: left;
+}
+.nav-pills > li > a {
+ border-radius: 1px;
+}
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ color: #ffffff;
+ background-color: #00a8e1;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li + li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+.nav-justified {
+ width: 100%;
+}
+.nav-justified > li {
+ float: none;
+}
+.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+ margin-right: 0;
+ border-radius: 1px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+ border: 1px solid #e9e8e8;
+}
+@media (min-width: 768px) {
+ .nav-tabs-justified > li > a {
+ border-bottom: 1px solid #e9e8e8;
+ border-radius: 1px 1px 0 0;
+ }
+ .nav-tabs-justified > .active > a,
+ .nav-tabs-justified > .active > a:hover,
+ .nav-tabs-justified > .active > a:focus {
+ border-bottom-color: #ffffff;
+ }
+}
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar {
+ position: relative;
+ min-height: 50px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 1px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+.navbar-collapse {
+ overflow-x: visible;
+ padding-right: 20px;
+ padding-left: 20px;
+ border-top: 1px solid transparent;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+ -webkit-overflow-scrolling: touch;
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+ }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+ margin-right: -20px;
+ margin-left: -20px;
+}
+@media (min-width: 768px) {
+ .container > .navbar-header,
+ .container-fluid > .navbar-header,
+ .container > .navbar-collapse,
+ .container-fluid > .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+.navbar-static-top {
+ z-index: 1000;
+ border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+@media (min-width: 768px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0;
+ border-width: 1px 0 0;
+}
+.navbar-brand {
+ float: left;
+ padding: 15px 20px;
+ font-size: 14px;
+ line-height: 20px;
+ height: 50px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
+}
+.navbar-brand > img {
+ display: block;
+}
+@media (min-width: 768px) {
+ .navbar > .container .navbar-brand,
+ .navbar > .container-fluid .navbar-brand {
+ margin-left: -20px;
+ }
+}
+.navbar-toggle {
+ position: relative;
+ float: right;
+ margin-right: 20px;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 1px;
+}
+.navbar-toggle:focus {
+ outline: 0;
+}
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+.navbar-nav {
+ margin: 7.5px -20px;
+}
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 20px;
+}
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ }
+}
+.navbar-form {
+ margin-left: -20px;
+ margin-right: -20px;
+ padding: 10px 20px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control-static {
+ display: inline-block;
+ }
+ .navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .navbar-form .input-group .input-group-addon,
+ .navbar-form .input-group .input-group-btn,
+ .navbar-form .input-group .form-control {
+ width: auto;
+ }
+ .navbar-form .input-group > .form-control {
+ width: 100%;
+ }
+ .navbar-form .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio label,
+ .navbar-form .checkbox label {
+ padding-left: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .navbar-form .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+.navbar-form .combobox-container {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: top;
+}
+.navbar-form .combobox-container .input-group-addon {
+ width: auto;
+}
+@media (max-width: 767px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+ .navbar-form .form-group:last-child {
+ margin-bottom: 0;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-form {
+ width: auto;
+ border: 0;
+ margin-left: 0;
+ margin-right: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+}
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ margin-bottom: 0;
+ border-top-right-radius: 1px;
+ border-top-left-radius: 1px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.navbar-btn {
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+.navbar-btn.btn-sm {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-btn.btn-xs {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-text {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+ .navbar-text {
+ float: left;
+ margin-left: 20px;
+ margin-right: 20px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-left {
+ float: left !important;
+ float: left;
+ }
+ .navbar-right {
+ float: right !important;
+ float: right;
+ margin-right: -20px;
+ }
+ .navbar-right ~ .navbar-right {
+ margin-right: 0;
+ }
+}
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+ color: #777777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
+}
+.navbar-default .navbar-text {
+ color: #777777;
+}
+.navbar-default .navbar-nav > li > a {
+ color: #777777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+ border-color: #dddddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #dddddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #888888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ background-color: #e7e7e7;
+ color: #555555;
+}
+@media (max-width: 767px) {
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777777;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+ }
+}
+.navbar-default .navbar-link {
+ color: #777777;
+}
+.navbar-default .navbar-link:hover {
+ color: #333333;
+}
+.navbar-default .btn-link {
+ color: #777777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+ color: #333333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #cccccc;
+}
+.navbar-inverse {
+ background-color: #222222;
+ border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-nav > li > a {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+ border-color: #333333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #ffffff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+ background-color: #080808;
+ color: #ffffff;
+}
+@media (max-width: 767px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #bfbfbf;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+ }
+}
+.navbar-inverse .navbar-link {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-link:hover {
+ color: #ffffff;
+}
+.navbar-inverse .btn-link {
+ color: #bfbfbf;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+ color: #ffffff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444444;
+}
+.breadcrumb {
+ padding: 8px 15px;
+ margin-bottom: 20px;
+ list-style: none;
+ background-color: transparent;
+ border-radius: 1px;
+}
+.breadcrumb > li {
+ display: inline-block;
+}
+.breadcrumb > li + li:before {
+ content: "\f105\00a0";
+ padding: 0 5px;
+ color: #4d5258;
+}
+.breadcrumb > .active {
+ color: #4d5258;
+}
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 1px;
+}
+.pagination > li {
+ display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 2px 6px;
+ line-height: 1.66666667;
+ text-decoration: none;
+ color: #0099d3;
+ background-color: #f5f5f5;
+ border: 1px solid #bbbbbb;
+ margin-left: -1px;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ color: #00618a;
+ background-color: #ededed;
+ border-color: #dddddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #00a8e1;
+ border-color: #00a8e1;
+ cursor: default;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #999999;
+ background-color: #ffffff;
+ border-color: #dddddd;
+ cursor: not-allowed;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 6px 10px;
+ font-size: 14px;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 2px 6px;
+ font-size: 11px;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pager {
+ padding-left: 0;
+ margin: 20px 0;
+ list-style: none;
+ text-align: center;
+}
+.pager li {
+ display: inline;
+}
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #f5f5f5;
+ border: 1px solid #bbbbbb;
+ border-radius: 0;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #ededed;
+}
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #969696;
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+}
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #ffffff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.label:empty {
+ display: none;
+}
+.btn .label {
+ position: relative;
+ top: -1px;
+}
+.label-default {
+ background-color: #999999;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #808080;
+}
+.label-primary {
+ background-color: #00a8e1;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #0082ae;
+}
+.label-success {
+ background-color: #3f9c35;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #307628;
+}
+.label-info {
+ background-color: #006e9c;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #004a69;
+}
+.label-warning {
+ background-color: #ec7a08;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #bb6106;
+}
+.label-danger {
+ background-color: #cc0000;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #990000;
+}
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 11px;
+ font-weight: bold;
+ color: #ffffff;
+ line-height: 1;
+ vertical-align: baseline;
+ white-space: nowrap;
+ text-align: center;
+ background-color: #999999;
+ border-radius: 1px;
+}
+.badge:empty {
+ display: none;
+}
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+ top: 0;
+ padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+ color: #0099d3;
+ background-color: #ffffff;
+}
+.list-group-item > .badge {
+ float: right;
+}
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
+}
+.jumbotron {
+ padding: 30px 15px;
+ margin-bottom: 30px;
+ color: inherit;
+ background-color: #eeeeee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+ color: inherit;
+}
+.jumbotron p {
+ margin-bottom: 15px;
+ font-size: 18px;
+ font-weight: 200;
+}
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+ border-radius: 1px;
+}
+.jumbotron .container {
+ max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding: 48px 0;
+ }
+ .container .jumbotron,
+ .container-fluid .jumbotron {
+ padding-left: 60px;
+ padding-right: 60px;
+ }
+ .jumbotron h1,
+ .jumbotron .h1 {
+ font-size: 54px;
+ }
+}
+.thumbnail {
+ display: block;
+ padding: 4px;
+ margin-bottom: 20px;
+ line-height: 1.66666667;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 1px;
+ -webkit-transition: border 0.2s ease-in-out;
+ -o-transition: border 0.2s ease-in-out;
+ transition: border 0.2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+ margin-left: auto;
+ margin-right: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+ border-color: #0099d3;
+}
+.thumbnail .caption {
+ padding: 9px;
+ color: #333333;
+}
+.alert {
+ padding: 7px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 1px;
+}
+.alert h4 {
+ margin-top: 0;
+ color: inherit;
+}
+.alert .alert-link {
+ font-weight: 500;
+}
+.alert > p,
+.alert > ul {
+ margin-bottom: 0;
+}
+.alert > p + p {
+ margin-top: 5px;
+}
+.alert-dismissable,
+.alert-dismissible {
+ padding-right: 27px;
+}
+.alert-dismissable .close,
+.alert-dismissible .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
+}
+.alert-success {
+ background-color: #ffffff;
+ border-color: #3f9c35;
+ color: #333333;
+}
+.alert-success hr {
+ border-top-color: #37892f;
+}
+.alert-success .alert-link {
+ color: #1a1a1a;
+}
+.alert-info {
+ background-color: #ffffff;
+ border-color: #cccccc;
+ color: #333333;
+}
+.alert-info hr {
+ border-top-color: #bfbfbf;
+}
+.alert-info .alert-link {
+ color: #1a1a1a;
+}
+.alert-warning {
+ background-color: #ffffff;
+ border-color: #ec7a08;
+ color: #333333;
+}
+.alert-warning hr {
+ border-top-color: #d36d07;
+}
+.alert-warning .alert-link {
+ color: #1a1a1a;
+}
+.alert-danger {
+ background-color: #ffffff;
+ border-color: #cc0000;
+ color: #333333;
+}
+.alert-danger hr {
+ border-top-color: #b30000;
+}
+.alert-danger .alert-link {
+ color: #1a1a1a;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+.progress {
+ overflow: hidden;
+ height: 20px;
+ margin-bottom: 20px;
+ background-color: #ededed;
+ border-radius: 1px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+.progress-bar {
+ float: left;
+ width: 0%;
+ height: 100%;
+ font-size: 11px;
+ line-height: 20px;
+ color: #ffffff;
+ text-align: center;
+ background-color: #00a8e1;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+ background-color: #3f9c35;
+}
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.progress-bar-info {
+ background-color: #006e9c;
+}
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.progress-bar-warning {
+ background-color: #ec7a08;
+}
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.progress-bar-danger {
+ background-color: #cc0000;
+}
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.media {
+ margin-top: 15px;
+}
+.media:first-child {
+ margin-top: 0;
+}
+.media,
+.media-body {
+ zoom: 1;
+ overflow: hidden;
+}
+.media-body {
+ width: 10000px;
+}
+.media-object {
+ display: block;
+}
+.media-right,
+.media > .pull-right {
+ padding-left: 10px;
+}
+.media-left,
+.media > .pull-left {
+ padding-right: 10px;
+}
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+.media-middle {
+ vertical-align: middle;
+}
+.media-bottom {
+ vertical-align: bottom;
+}
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
+.list-group {
+ margin-bottom: 20px;
+ padding-left: 0;
+}
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+ background-color: #ffffff;
+ border: 1px solid #f2f2f2;
+}
+.list-group-item:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+a.list-group-item {
+ color: #555555;
+}
+a.list-group-item .list-group-item-heading {
+ color: #333333;
+}
+a.list-group-item:hover,
+a.list-group-item:focus {
+ text-decoration: none;
+ color: #555555;
+ background-color: #d4edfa;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+ background-color: #eeeeee;
+ color: #999999;
+ cursor: not-allowed;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+ color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+ color: #999999;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #00a8e1;
+ border-color: #00a8e1;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+ color: inherit;
+}
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+ color: #aeeaff;
+}
+.list-group-item-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+}
+a.list-group-item-success {
+ color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-success:hover,
+a.list-group-item-success:focus {
+ color: #3c763d;
+ background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus {
+ color: #fff;
+ background-color: #3c763d;
+ border-color: #3c763d;
+}
+.list-group-item-info {
+ color: #31708f;
+ background-color: #d9edf7;
+}
+a.list-group-item-info {
+ color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-info:hover,
+a.list-group-item-info:focus {
+ color: #31708f;
+ background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus {
+ color: #fff;
+ background-color: #31708f;
+ border-color: #31708f;
+}
+.list-group-item-warning {
+ color: #ec7a08;
+ background-color: #fcf8e3;
+}
+a.list-group-item-warning {
+ color: #ec7a08;
+}
+a.list-group-item-warning .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-warning:hover,
+a.list-group-item-warning:focus {
+ color: #ec7a08;
+ background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus {
+ color: #fff;
+ background-color: #ec7a08;
+ border-color: #ec7a08;
+}
+.list-group-item-danger {
+ color: #a94442;
+ background-color: #f2dede;
+}
+a.list-group-item-danger {
+ color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-danger:hover,
+a.list-group-item-danger:focus {
+ color: #a94442;
+ background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus {
+ color: #fff;
+ background-color: #a94442;
+ border-color: #a94442;
+}
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+.panel {
+ margin-bottom: 20px;
+ background-color: #ffffff;
+ border: 1px solid transparent;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 14px;
+ color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+ color: inherit;
+}
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #cecdcd;
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+ margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+ border-width: 1px 0;
+ border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+ border-top: 0;
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+ border-bottom: 0;
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+.list-group + .panel-footer {
+ border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+ margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+ border-top-left-radius: 0px;
+ border-top-right-radius: 0px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+ border-top-left-radius: 0px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+ border-top-right-radius: 0px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+ border-bottom-left-radius: 0px;
+ border-bottom-right-radius: 0px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+ border-bottom-left-radius: 0px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+ border-bottom-right-radius: 0px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+ border-top: 1px solid #d1d1d1;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+ border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+ border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+ border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+ border-bottom: 0;
+}
+.panel > .table-responsive {
+ border: 0;
+ margin-bottom: 0;
+}
+.panel-group {
+ margin-bottom: 20px;
+}
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 1px;
+}
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+.panel-group .panel-heading {
+ border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+ border-top: 1px solid #cecdcd;
+}
+.panel-group .panel-footer {
+ border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #cecdcd;
+}
+.panel-default {
+ border-color: #dddddd;
+}
+.panel-default > .panel-heading {
+ color: #333333;
+ background-color: #f5f5f5;
+ border-color: #dddddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #dddddd;
+}
+.panel-default > .panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #dddddd;
+}
+.panel-primary {
+ border-color: #00a8e1;
+}
+.panel-primary > .panel-heading {
+ color: #ffffff;
+ background-color: #00a8e1;
+ border-color: #00a8e1;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #00a8e1;
+}
+.panel-primary > .panel-heading .badge {
+ color: #00a8e1;
+ background-color: #ffffff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #00a8e1;
+}
+.panel-success {
+ border-color: #3f9c35;
+}
+.panel-success > .panel-heading {
+ color: #ffffff;
+ background-color: #3f9c35;
+ border-color: #3f9c35;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #3f9c35;
+}
+.panel-success > .panel-heading .badge {
+ color: #3f9c35;
+ background-color: #ffffff;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #3f9c35;
+}
+.panel-info {
+ border-color: #006e9c;
+}
+.panel-info > .panel-heading {
+ color: #ffffff;
+ background-color: #006e9c;
+ border-color: #006e9c;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #006e9c;
+}
+.panel-info > .panel-heading .badge {
+ color: #006e9c;
+ background-color: #ffffff;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #006e9c;
+}
+.panel-warning {
+ border-color: #ec7a08;
+}
+.panel-warning > .panel-heading {
+ color: #ffffff;
+ background-color: #ec7a08;
+ border-color: #ec7a08;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ec7a08;
+}
+.panel-warning > .panel-heading .badge {
+ color: #ec7a08;
+ background-color: #ffffff;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ec7a08;
+}
+.panel-danger {
+ border-color: #cc0000;
+}
+.panel-danger > .panel-heading {
+ color: #ffffff;
+ background-color: #cc0000;
+ border-color: #cc0000;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #cc0000;
+}
+.panel-danger > .panel-heading .badge {
+ color: #cc0000;
+ background-color: #ffffff;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #cc0000;
+}
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
+ overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ height: 100%;
+ width: 100%;
+ border: 0;
+}
+.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 1px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+.well-lg {
+ padding: 24px;
+ border-radius: 1px;
+}
+.well-sm {
+ padding: 9px;
+ border-radius: 1px;
+}
+.close {
+ float: right;
+ font-size: 18px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.close:hover,
+.close:focus {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+.modal-open {
+ overflow: hidden;
+}
+.modal {
+ display: none;
+ overflow: hidden;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1050;
+ -webkit-overflow-scrolling: touch;
+ outline: 0;
+}
+.modal.fade .modal-dialog {
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+ -webkit-transition: -webkit-transform 0.3s ease-out;
+ -moz-transition: -moz-transform 0.3s ease-out;
+ -o-transition: -o-transform 0.3s ease-out;
+ transition: transform 0.3s ease-out;
+}
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px;
+}
+.modal-content {
+ position: relative;
+ background-color: #ffffff;
+ border: 1px solid #999999;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 1px;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ background-clip: padding-box;
+ outline: 0;
+}
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000000;
+}
+.modal-backdrop.fade {
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.modal-backdrop.in {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.modal-header {
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+ min-height: 16.66666667px;
+}
+.modal-header .close {
+ margin-top: -2px;
+}
+.modal-title {
+ margin: 0;
+ line-height: 1.66666667;
+}
+.modal-body {
+ position: relative;
+ padding: 15px;
+}
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+ margin-left: 5px;
+ margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
+}
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+@media (min-width: 768px) {
+ .modal-dialog {
+ width: 600px;
+ margin: 30px auto;
+ }
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ }
+ .modal-sm {
+ width: 300px;
+ }
+}
+@media (min-width: 992px) {
+ .modal-lg {
+ width: 900px;
+ }
+}
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+ font-size: 11px;
+ font-weight: normal;
+ line-height: 1.4;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.tooltip.in {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.tooltip.top {
+ margin-top: -3px;
+ padding: 8px 0;
+}
+.tooltip.right {
+ margin-left: 3px;
+ padding: 0 8px;
+}
+.tooltip.bottom {
+ margin-top: 3px;
+ padding: 8px 0;
+}
+.tooltip.left {
+ margin-left: -3px;
+ padding: 0 8px;
+}
+.tooltip-inner {
+ max-width: 220px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #434343;
+ border-radius: 1px;
+}
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -8px;
+ border-width: 8px 8px 0;
+ border-top-color: #434343;
+}
+.tooltip.top-left .tooltip-arrow {
+ bottom: 0;
+ right: 8px;
+ margin-bottom: -8px;
+ border-width: 8px 8px 0;
+ border-top-color: #434343;
+}
+.tooltip.top-right .tooltip-arrow {
+ bottom: 0;
+ left: 8px;
+ margin-bottom: -8px;
+ border-width: 8px 8px 0;
+ border-top-color: #434343;
+}
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -8px;
+ border-width: 8px 8px 8px 0;
+ border-right-color: #434343;
+}
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -8px;
+ border-width: 8px 0 8px 8px;
+ border-left-color: #434343;
+}
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -8px;
+ border-width: 0 8px 8px;
+ border-bottom-color: #434343;
+}
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ right: 8px;
+ margin-top: -8px;
+ border-width: 0 8px 8px;
+ border-bottom-color: #434343;
+}
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ left: 8px;
+ margin-top: -8px;
+ border-width: 0 8px 8px;
+ border-bottom-color: #434343;
+}
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ max-width: 220px;
+ padding: 1px;
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ font-weight: normal;
+ line-height: 1.66666667;
+ text-align: left;
+ background-color: #ffffff;
+ background-clip: padding-box;
+ border: 1px solid #cccccc;
+ border: 1px solid #bbbbbb;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ white-space: normal;
+}
+.popover.top {
+ margin-top: -10px;
+}
+.popover.right {
+ margin-left: 10px;
+}
+.popover.bottom {
+ margin-top: 10px;
+}
+.popover.left {
+ margin-left: -10px;
+}
+.popover-title {
+ margin: 0;
+ padding: 8px 14px;
+ font-size: 12px;
+ background-color: #f5f5f5;
+ border-bottom: 1px solid #e8e8e8;
+ border-radius: 0px 0px 0 0;
+}
+.popover-content {
+ padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.popover > .arrow {
+ border-width: 11px;
+}
+.popover > .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+.popover.top > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: #bbbbbb;
+ bottom: -11px;
+}
+.popover.top > .arrow:after {
+ content: " ";
+ bottom: 1px;
+ margin-left: -10px;
+ border-bottom-width: 0;
+ border-top-color: #ffffff;
+}
+.popover.right > .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: #bbbbbb;
+}
+.popover.right > .arrow:after {
+ content: " ";
+ left: 1px;
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #ffffff;
+}
+.popover.bottom > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999999;
+ border-bottom-color: #bbbbbb;
+ top: -11px;
+}
+.popover.bottom > .arrow:after {
+ content: " ";
+ top: 1px;
+ margin-left: -10px;
+ border-top-width: 0;
+ border-bottom-color: #ffffff;
+}
+.popover.left > .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999999;
+ border-left-color: #bbbbbb;
+}
+.popover.left > .arrow:after {
+ content: " ";
+ right: 1px;
+ border-right-width: 0;
+ border-left-color: #ffffff;
+ bottom: -10px;
+}
+.carousel {
+ position: relative;
+}
+.carousel-inner {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+}
+.carousel-inner > .item {
+ display: none;
+ position: relative;
+ -webkit-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ line-height: 1;
+}
+@media all and (transform-3d), (-webkit-transform-3d) {
+ .carousel-inner > .item {
+ -webkit-transition: -webkit-transform 0.6s ease-in-out;
+ -moz-transition: -moz-transform 0.6s ease-in-out;
+ -o-transition: -o-transform 0.6s ease-in-out;
+ transition: transform 0.6s ease-in-out;
+ -webkit-backface-visibility: hidden;
+ -moz-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000;
+ -moz-perspective: 1000;
+ perspective: 1000;
+ }
+ .carousel-inner > .item.next,
+ .carousel-inner > .item.active.right {
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.prev,
+ .carousel-inner > .item.active.left {
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.next.left,
+ .carousel-inner > .item.prev.right,
+ .carousel-inner > .item.active {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ left: 0;
+ }
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ display: block;
+}
+.carousel-inner > .active {
+ left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.carousel-inner > .next {
+ left: 100%;
+}
+.carousel-inner > .prev {
+ left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+ left: 0;
+}
+.carousel-inner > .active.left {
+ left: -100%;
+}
+.carousel-inner > .active.right {
+ left: 100%;
+}
+.carousel-control {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 15%;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+ font-size: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+}
+.carousel-control.right {
+ left: auto;
+ right: 0;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+}
+.carousel-control:hover,
+.carousel-control:focus {
+ outline: 0;
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+ left: 50%;
+ margin-left: -10px;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+ right: 50%;
+ margin-right: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ margin-top: -10px;
+ line-height: 1;
+ font-family: serif;
+}
+.carousel-control .icon-prev:before {
+ content: '\2039';
+}
+.carousel-control .icon-next:before {
+ content: '\203a';
+}
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ margin-left: -30%;
+ padding-left: 0;
+ list-style: none;
+ text-align: center;
+}
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ border: 1px solid #ffffff;
+ border-radius: 10px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
+}
+.carousel-indicators .active {
+ margin: 0;
+ width: 12px;
+ height: 12px;
+ background-color: #ffffff;
+}
+.carousel-caption {
+ position: absolute;
+ left: 15%;
+ right: 15%;
+ bottom: 20px;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.carousel-caption .btn {
+ text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ font-size: 30px;
+ }
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .icon-prev {
+ margin-left: -15px;
+ }
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-next {
+ margin-right: -15px;
+ }
+ .carousel-caption {
+ left: 20%;
+ right: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-footer:before,
+.modal-footer:after {
+ content: " ";
+ display: table;
+}
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-footer:after {
+ clear: both;
+}
+.center-block {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+.pull-right {
+ float: right !important;
+}
+.pull-left {
+ float: left !important;
+}
+.hide {
+ display: none !important;
+}
+.show {
+ display: block !important;
+}
+.invisible {
+ visibility: hidden;
+}
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+.hidden {
+ display: none !important;
+}
+.affix {
+ position: fixed;
+}
+@-ms-viewport {
+ width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+ display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ table.visible-xs {
+ display: table;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-block {
+ display: block !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline {
+ display: inline !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ table.visible-sm {
+ display: table;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-block {
+ display: block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ table.visible-md {
+ display: table;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-block {
+ display: block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ table.visible-lg {
+ display: table;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-block {
+ display: block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+}
+.visible-print {
+ display: none !important;
+}
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ table.visible-print {
+ display: table;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
+}
+.visible-print-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-block {
+ display: block !important;
+ }
+}
+.visible-print-inline {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline {
+ display: inline !important;
+ }
+}
+.visible-print-inline-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline-block {
+ display: inline-block !important;
+ }
+}
+@media print {
+ .hidden-print {
+ display: none !important;
+ }
+}
+/* Font Awesome */
+/*!
+ * Font Awesome 4.3.0 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('../../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.3.0');
+ src: url('../../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.3.0#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;
+ transform: translate(0, 0);
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+ font-size: 1.3333333333333333em;
+ 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.2857142857142858em;
+ text-align: center;
+}
+.fa-ul {
+ padding-left: 0;
+ margin-left: 2.142857142857143em;
+ list-style-type: none;
+}
+.fa-ul > li {
+ position: relative;
+}
+.fa-li {
+ position: absolute;
+ left: -2.142857142857143em;
+ width: 2.142857142857143em;
+ top: 0.14285714285714285em;
+ text-align: center;
+}
+.fa-li.fa-lg {
+ left: -1.8571428571428572em;
+}
+.fa-border {
+ padding: .2em .25em .15em;
+ border: solid 0.08em #eeeeee;
+ border-radius: .1em;
+}
+.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 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ 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 {
+ 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-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: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-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.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-genderless:before,
+.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-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-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";
+}
+/* Bootstrap-Combobox */
+.form-search .combobox-container,
+.form-inline .combobox-container {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: top;
+}
+.form-search .combobox-container .input-group-addon,
+.form-inline .combobox-container .input-group-addon {
+ width: auto;
+}
+.combobox-selected .caret {
+ display: none;
+}
+/* :not doesn't work in IE8 */
+.combobox-container:not(.combobox-selected) .glyphicon-remove {
+ display: none;
+}
+.typeahead-long {
+ max-height: 300px;
+ overflow-y: auto;
+}
+.control-group.error .combobox-container .add-on {
+ color: #B94A48;
+ border-color: #B94A48;
+}
+.control-group.error .combobox-container .caret {
+ border-top-color: #B94A48;
+}
+.control-group.warning .combobox-container .add-on {
+ color: #C09853;
+ border-color: #C09853;
+}
+.control-group.warning .combobox-container .caret {
+ border-top-color: #C09853;
+}
+.control-group.success .combobox-container .add-on {
+ color: #468847;
+ border-color: #468847;
+}
+.control-group.success .combobox-container .caret {
+ border-top-color: #468847;
+}
+/* Bootstrap-Select */
+/*!
+ * bootstrap-select v1.5.4
+ * http://silviomoreto.github.io/bootstrap-select/
+ *
+ * Copyright 2013 bootstrap-select
+ * Licensed under the MIT license
+ */
+.bootstrap-select.btn-group:not(.input-group-btn),
+.bootstrap-select.btn-group[class*="span"] {
+ float: none;
+ display: inline-block;
+ margin-bottom: 10px;
+ margin-left: 0;
+}
+.form-search .bootstrap-select.btn-group,
+.form-inline .bootstrap-select.btn-group,
+.form-horizontal .bootstrap-select.btn-group {
+ margin-bottom: 0;
+}
+.bootstrap-select.form-control {
+ margin-bottom: 0;
+ padding: 0;
+ border: none;
+}
+.bootstrap-select.btn-group.pull-right,
+.bootstrap-select.btn-group[class*="span"].pull-right,
+.row-fluid .bootstrap-select.btn-group[class*="span"].pull-right {
+ float: right;
+}
+.input-append .bootstrap-select.btn-group {
+ margin-left: -1px;
+}
+.input-prepend .bootstrap-select.btn-group {
+ margin-right: -1px;
+}
+.bootstrap-select:not([class*="span"]):not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
+ width: 220px;
+}
+.bootstrap-select {
+ /*width: 220px\9; IE8 and below*/
+ width: 220px\0;
+ /*IE9 and below*/
+}
+.bootstrap-select.form-control:not([class*="span"]) {
+ width: 100%;
+}
+.bootstrap-select > .btn {
+ width: 100%;
+ padding-right: 25px;
+}
+.error .bootstrap-select .btn {
+ border: 1px solid #b94a48;
+}
+.bootstrap-select.show-menu-arrow.open > .btn {
+ z-index: 2051;
+}
+.bootstrap-select .btn:focus {
+ outline: thin dotted #333333 !important;
+ outline: 5px auto -webkit-focus-ring-color !important;
+ outline-offset: -2px;
+}
+.bootstrap-select.btn-group .btn .filter-option {
+ display: inline-block;
+ overflow: hidden;
+ width: 100%;
+ float: left;
+ text-align: left;
+}
+.bootstrap-select.btn-group .btn .caret {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ margin-top: -2px;
+ vertical-align: middle;
+}
+.bootstrap-select.btn-group > .disabled,
+.bootstrap-select.btn-group .dropdown-menu li.disabled > a {
+ cursor: not-allowed;
+}
+.bootstrap-select.btn-group > .disabled:focus {
+ outline: none !important;
+}
+.bootstrap-select.btn-group[class*="span"] .btn {
+ width: 100%;
+}
+.bootstrap-select.btn-group .dropdown-menu {
+ min-width: 100%;
+ z-index: 2000;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bootstrap-select.btn-group .dropdown-menu.inner {
+ position: static;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+.bootstrap-select.btn-group .dropdown-menu dt {
+ display: block;
+ padding: 3px 20px;
+ cursor: default;
+}
+.bootstrap-select.btn-group .div-contain {
+ overflow: hidden;
+}
+.bootstrap-select.btn-group .dropdown-menu li {
+ position: relative;
+}
+.bootstrap-select.btn-group .dropdown-menu li > a.opt {
+ position: relative;
+ padding-left: 35px;
+}
+.bootstrap-select.btn-group .dropdown-menu li > a {
+ cursor: pointer;
+}
+.bootstrap-select.btn-group .dropdown-menu li > dt small {
+ font-weight: normal;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark {
+ position: absolute;
+ display: inline-block;
+ right: 15px;
+ margin-top: 2.5px;
+}
+.bootstrap-select.btn-group .dropdown-menu li a i.check-mark {
+ display: none;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {
+ margin-right: 34px;
+}
+.bootstrap-select.btn-group .dropdown-menu li small {
+ padding-left: 0.5em;
+}
+.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) > a:hover small,
+.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) > a:focus small,
+.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled) > a small {
+ color: #64b1d8;
+ color: rgba(255, 255, 255, 0.4);
+}
+.bootstrap-select.btn-group .dropdown-menu li > dt small {
+ font-weight: normal;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #CCC;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+ bottom: -4px;
+ left: 9px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid white;
+ position: absolute;
+ bottom: -4px;
+ left: 10px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {
+ bottom: auto;
+ top: -3px;
+ border-top: 7px solid #ccc;
+ border-bottom: 0;
+ border-top-color: rgba(0, 0, 0, 0.2);
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {
+ bottom: auto;
+ top: -3px;
+ border-top: 6px solid #ffffff;
+ border-bottom: 0;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {
+ right: 12px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {
+ right: 13px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {
+ display: block;
+}
+.bootstrap-select.btn-group .no-results {
+ padding: 3px;
+ background: #f5f5f5;
+ margin: 0 5px;
+}
+.bootstrap-select.btn-group .dropdown-menu .notify {
+ position: absolute;
+ bottom: 5px;
+ width: 96%;
+ margin: 0 2%;
+ min-height: 26px;
+ padding: 3px 5px;
+ background: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ pointer-events: none;
+ opacity: 0.9;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.mobile-device {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: block !important;
+ width: 100%;
+ height: 100% !important;
+ opacity: 0;
+}
+.bootstrap-select.fit-width {
+ width: auto !important;
+}
+.bootstrap-select.btn-group.fit-width .btn .filter-option {
+ position: static;
+}
+.bootstrap-select.btn-group.fit-width .btn .caret {
+ position: static;
+ top: auto;
+ margin-top: -1px;
+}
+.control-group.error .bootstrap-select .dropdown-toggle {
+ border-color: #b94a48;
+}
+.bootstrap-select-searchbox,
+.bootstrap-select .bs-actionsbox {
+ padding: 4px 8px;
+}
+.bootstrap-select .bs-actionsbox {
+ float: left;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bootstrap-select-searchbox + .bs-actionsbox {
+ padding: 0 8px 4px;
+}
+.bootstrap-select-searchbox input {
+ margin-bottom: 0;
+}
+.bootstrap-select .bs-actionsbox .btn-group button {
+ width: 50%;
+}
+/* C3 charts*/
+/*-- Chart --*/
+.c3 svg {
+ font: 10px sans-serif;
+}
+.c3 path,
+.c3 line {
+ fill: none;
+ stroke: #000;
+}
+.c3 text {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+.c3-legend-item-tile,
+.c3-xgrid-focus,
+.c3-ygrid,
+.c3-event-rect,
+.c3-bars path {
+ shape-rendering: crispEdges;
+}
+.c3-chart-arc path {
+ stroke: #fff;
+}
+.c3-chart-arc text {
+ fill: #fff;
+ font-size: 13px;
+}
+/*-- Axis --*/
+/*-- Grid --*/
+.c3-grid line {
+ stroke: #aaa;
+}
+.c3-grid text {
+ fill: #aaa;
+}
+.c3-xgrid,
+.c3-ygrid {
+ stroke-dasharray: 3 3;
+}
+/*-- Text on Chart --*/
+.c3-text.c3-empty {
+ fill: #808080;
+ font-size: 2em;
+}
+/*-- Line --*/
+.c3-line {
+ stroke-width: 1px;
+}
+/*-- Point --*/
+.c3-circle._expanded_ {
+ stroke-width: 1px;
+ stroke: white;
+}
+.c3-selected-circle {
+ fill: white;
+ stroke-width: 2px;
+}
+/*-- Bar --*/
+.c3-bar {
+ stroke-width: 0;
+}
+.c3-bar._expanded_ {
+ fill-opacity: 0.75;
+}
+/*-- Focus --*/
+.c3-target.c3-focused {
+ opacity: 1;
+}
+.c3-target.c3-focused path.c3-line,
+.c3-target.c3-focused path.c3-step {
+ stroke-width: 2px;
+}
+.c3-target.c3-defocused {
+ opacity: 0.3 !important;
+}
+/*-- Region --*/
+.c3-region {
+ fill: steelblue;
+ fill-opacity: 0.1;
+}
+/*-- Brush --*/
+.c3-brush .extent {
+ fill-opacity: 0.1;
+}
+/*-- Select - Drag --*/
+/*-- Legend --*/
+.c3-legend-item {
+ font-size: 12px;
+}
+.c3-legend-item-hidden {
+ opacity: 0.15;
+}
+.c3-legend-background {
+ opacity: 0.75;
+ fill: white;
+ stroke: lightgray;
+ stroke-width: 1;
+}
+/*-- Tooltip --*/
+.c3-tooltip-container {
+ z-index: 10;
+}
+.c3-tooltip {
+ border-collapse: collapse;
+ border-spacing: 0;
+ background-color: #fff;
+ empty-cells: show;
+ -webkit-box-shadow: 7px 7px 12px -9px #777777;
+ -moz-box-shadow: 7px 7px 12px -9px #777777;
+ box-shadow: 7px 7px 12px -9px #777777;
+ opacity: 0.9;
+}
+.c3-tooltip tr {
+ border: 1px solid #CCC;
+}
+.c3-tooltip th {
+ background-color: #aaa;
+ font-size: 14px;
+ padding: 2px 5px;
+ text-align: left;
+ color: #FFF;
+}
+.c3-tooltip td {
+ font-size: 13px;
+ padding: 3px 6px;
+ background-color: #fff;
+ border-left: 1px dotted #999;
+}
+.c3-tooltip td > span {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin-right: 6px;
+}
+.c3-tooltip td.value {
+ text-align: right;
+}
+/*-- Area --*/
+.c3-area {
+ stroke-width: 0;
+ opacity: 0.2;
+}
+/*-- Arc --*/
+.c3-chart-arcs-title {
+ dominant-baseline: middle;
+ font-size: 1.3em;
+}
+.c3-chart-arcs .c3-chart-arcs-background {
+ fill: #e0e0e0;
+ stroke: none;
+}
+.c3-chart-arcs .c3-chart-arcs-gauge-unit {
+ fill: #000;
+ font-size: 16px;
+}
+.c3-chart-arcs .c3-chart-arcs-gauge-max {
+ fill: #777;
+}
+.c3-chart-arcs .c3-chart-arcs-gauge-min {
+ fill: #777;
+}
+.c3-chart-arc .c3-gauge-value {
+ fill: #000;
+ /* font-size: 28px !important;*/
+}
+/* PatternFly overrides and new stuff */
+/* PatternFly specific */
+/* Bootstrap overrides */
+/* PatternFly-specific variables based on Bootstrap overides */
+/* Bootstrap overrides */
+/* PatternFly-specific */
+.alert {
+ border-width: 2px;
+ padding-left: 34px;
+ position: relative;
+}
+.alert .alert-link {
+ color: #0099d3;
+}
+.alert .alert-link:hover {
+ color: #00618a;
+}
+.alert > .pficon,
+.alert > .pficon-layered {
+ font-size: 20px;
+ position: absolute;
+ left: 7px;
+ top: 7px;
+}
+.alert .pficon-info {
+ color: #72767b;
+}
+.alert-dismissable .close {
+ right: -16px;
+ top: 1px;
+}
+.badge {
+ margin-left: 6px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 6px;
+}
+.blank-slate-pf {
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 1px;
+ margin-bottom: 20px;
+ padding: 30px;
+ text-align: center;
+}
+@media (min-width: 768px) {
+ .blank-slate-pf {
+ padding: 60px 60px;
+ }
+}
+@media (min-width: 992px) {
+ .blank-slate-pf {
+ padding: 90px 120px;
+ }
+}
+.blank-slate-pf .blank-slate-pf-icon {
+ color: #999999;
+ font-size: 57.599999999999994px;
+ line-height: 57.599999999999994px;
+}
+.blank-slate-pf .blank-slate-pf-main-action {
+ margin-top: 20px;
+}
+.blank-slate-pf .blank-slate-pf-secondary-action {
+ margin-top: 20px;
+}
+.combobox-container.combobox-selected .glyphicon-remove {
+ display: inline-block;
+}
+.combobox-container .caret {
+ margin-left: 0;
+}
+.combobox-container .combobox::-ms-clear {
+ display: none;
+}
+.combobox-container .dropdown-menu {
+ margin-top: -1px;
+ width: 100%;
+}
+.combobox-container .glyphicon-remove {
+ display: none;
+ top: auto;
+ width: 12px;
+}
+.combobox-container .glyphicon-remove:before {
+ content: "\e60b";
+ font-family: "PatternFlyIcons-webfont";
+}
+.combobox-container .input-group-addon {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+ position: relative;
+}
+.combobox-container .input-group-addon:hover,
+.combobox-container .input-group-addon:focus,
+.combobox-container .input-group-addon:active,
+.combobox-container .input-group-addon.active,
+.open .dropdown-toggle.combobox-container .input-group-addon {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.combobox-container .input-group-addon:active,
+.combobox-container .input-group-addon.active,
+.open .dropdown-toggle.combobox-container .input-group-addon {
+ background-image: none;
+}
+.combobox-container .input-group-addon.disabled,
+.combobox-container .input-group-addon[disabled],
+fieldset[disabled] .combobox-container .input-group-addon,
+.combobox-container .input-group-addon.disabled:hover,
+.combobox-container .input-group-addon[disabled]:hover,
+fieldset[disabled] .combobox-container .input-group-addon:hover,
+.combobox-container .input-group-addon.disabled:focus,
+.combobox-container .input-group-addon[disabled]:focus,
+fieldset[disabled] .combobox-container .input-group-addon:focus,
+.combobox-container .input-group-addon.disabled:active,
+.combobox-container .input-group-addon[disabled]:active,
+fieldset[disabled] .combobox-container .input-group-addon:active,
+.combobox-container .input-group-addon.disabled.active,
+.combobox-container .input-group-addon[disabled].active,
+fieldset[disabled] .combobox-container .input-group-addon.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.combobox-container .input-group-addon:active {
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+}
+.bootstrap-select.btn-group.form-control {
+ margin-bottom: 0;
+}
+.bootstrap-select.btn-group .btn {
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.bootstrap-select.btn-group .btn:hover {
+ border-color: #7bb2dd;
+}
+.bootstrap-select.btn-group .btn .caret {
+ margin-top: -4px;
+}
+.bootstrap-select.btn-group .btn:focus {
+ border-color: #66afe9;
+ outline: 0 !important;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.has-error .bootstrap-select.btn-group .btn {
+ border-color: #a94442;
+}
+.has-error .bootstrap-select.btn-group .btn:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+}
+.has-success .bootstrap-select.btn-group .btn {
+ border-color: #3c763d;
+}
+.has-success .bootstrap-select.btn-group .btn:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+}
+.has-warning .bootstrap-select.btn-group .btn {
+ border-color: #ec7a08;
+}
+.has-warning .bootstrap-select.btn-group .btn:focus {
+ border-color: #bb6106;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+}
+.bootstrap-select.btn-group .dropdown-menu > .active > a,
+.bootstrap-select.btn-group .dropdown-menu > .active > a:active {
+ background-color: #d4edfa !important;
+ border-color: #b3d3e7 !important;
+ color: #333333 !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .active > a small,
+.bootstrap-select.btn-group .dropdown-menu > .active > a:active small {
+ color: #999999 !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .disabled > a {
+ color: #999999 !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .selected > a {
+ background-color: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #fff !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .selected > a small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+}
+.bootstrap-select.btn-group .dropdown-menu .divider {
+ background: #e5e5e5 !important;
+ margin: 4px 1px !important;
+}
+.bootstrap-select.btn-group .dropdown-menu dt {
+ color: #969696;
+ font-weight: normal;
+ padding: 1px 10px;
+}
+.bootstrap-select.btn-group .dropdown-menu li > a.opt {
+ padding: 1px 10px;
+}
+.bootstrap-select.btn-group .dropdown-menu li a:active small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+}
+.bootstrap-select.btn-group .dropdown-menu li a:hover small,
+.bootstrap-select.btn-group .dropdown-menu li a:focus small {
+ color: #999999;
+}
+.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small,
+.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small {
+ color: #999999;
+}
+.treeview .list-group {
+ border-top: 0;
+}
+.treeview .list-group-item {
+ background: transparent;
+ border-bottom: 1px solid transparent !important;
+ border-top: 1px solid transparent !important;
+ margin-bottom: 0;
+ padding: 0 10px;
+}
+.treeview .list-group-item:hover {
+ background: #d4edfa !important;
+ border-color: #b3d3e7 !important;
+}
+.treeview .list-group-item.node-selected {
+ background: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #ffffff !important;
+}
+.treeview span.icon {
+ display: inline-block;
+ font-size: 13px;
+ min-width: 10px;
+ text-align: center;
+}
+.treeview span.icon > [class*="fa-angle"] {
+ font-size: 15px;
+}
+.treeview span.indent {
+ margin-right: 5px;
+}
+.breadcrumb {
+ padding-left: 0;
+}
+.breadcrumb > .active strong {
+ font-weight: 600;
+}
+.breadcrumb > li {
+ display: inline;
+ /* IE8 */
+}
+.breadcrumb > li + li:before {
+ color: #999999;
+ content: "\f101";
+ font-family: "FontAwesome";
+ font-size: 11px;
+ padding: 0 9px 0 7px;
+}
+.btn {
+ -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
+}
+.btn:active {
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ background-color: #f8f8f8 !important;
+ background-image: none !important;
+ border-color: #d1d1d1 !important;
+ color: #969696 !important;
+ opacity: 1;
+}
+.btn.disabled:active,
+.btn[disabled]:active,
+fieldset[disabled] .btn:active {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn.disabled.btn-link,
+.btn[disabled].btn-link,
+fieldset[disabled] .btn.btn-link {
+ background-color: transparent !important;
+ border: 0;
+}
+.btn-danger {
+ background-color: #a30000;
+ background-image: -webkit-linear-gradient(top, #cc0000 0%, #a30000 100%);
+ background-image: -o-linear-gradient(top, #cc0000 0%, #a30000 100%);
+ background-image: linear-gradient(to bottom, #cc0000 0%, #a30000 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);
+ border-color: #781919;
+ color: #ffffff;
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ background-color: #a30000;
+ background-image: none;
+ border-color: #781919;
+ color: #ffffff;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #a30000;
+ border-color: #781919;
+}
+.btn-default {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.btn-default:hover,
+.btn-default:focus,
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.btn-link,
+.btn-link:active {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-primary {
+ background-color: #0085cf;
+ background-image: -webkit-linear-gradient(top, #00a8e1 0%, #0085cf 100%);
+ background-image: -o-linear-gradient(top, #00a8e1 0%, #0085cf 100%);
+ background-image: linear-gradient(to bottom, #00a8e1 0%, #0085cf 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00a8e1', endColorstr='#ff0085cf', GradientType=0);
+ border-color: #006e9c;
+ color: #ffffff;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ background-color: #0085cf;
+ background-image: none;
+ border-color: #006e9c;
+ color: #ffffff;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.btn-xs,
+.btn-group-xs .btn,
+.btn-group-xs > .btn {
+ font-weight: 400;
+}
+.c3 path {
+ stroke: #d1d1d1;
+}
+.c3 svg {
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+}
+.c3-axis-x .tick line {
+ stroke: #d1d1d1;
+}
+.c3-axis-y .tick line {
+ display: none;
+}
+.c3-chart-arc path {
+ stroke: #fff;
+}
+.c3-grid line {
+ stroke: #d1d1d1;
+}
+.c3-line {
+ stroke-width: 2px;
+}
+.c3-tooltip {
+ background: #434343;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.c3-tooltip td {
+ background: transparent;
+ border: 0;
+ color: #fff;
+ font-size: 12px;
+ padding: 5px 10px;
+}
+.c3-tooltip th {
+ background: transparent;
+ font-size: 12px;
+ padding: 5px 10px 0;
+}
+.c3-tooltip tr {
+ border: 0;
+}
+.c3-tooltip tr + tr > td {
+ padding-top: 0;
+}
+.c3-tooltip-sparkline {
+ background: #434343;
+ color: #fff;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+ padding: 2px 6px;
+}
+.c3-xgrid,
+.c3-ygrid {
+ stroke-dasharray: 0 0;
+}
+.close {
+ text-shadow: none;
+ opacity: 0.6;
+ filter: alpha(opacity=60);
+}
+.close:hover,
+.close:focus {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.ColVis_Button:active:focus {
+ outline: none;
+}
+.ColVis_catcher {
+ position: absolute;
+ z-index: 999;
+}
+.ColVis_collection {
+ background-color: #ffffff;
+ border: 1px solid #b6b6b6;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+ list-style: none;
+ margin: -1px 0 0 0;
+ padding: 5px 10px;
+ width: 150px;
+ z-index: 1000;
+}
+.ColVis_collection label {
+ font-weight: normal;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding-left: 20px;
+}
+.ColVis_collectionBackground {
+ background-color: #fff;
+ height: 100%;
+ left: 0;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 998;
+}
+.dataTables_header {
+ background-color: #f6f6f6;
+ border: 1px solid #d1d1d1;
+ border-bottom: none;
+ padding: 5px;
+ position: relative;
+ text-align: center;
+}
+.dataTables_header .btn {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.dataTables_header .ColVis {
+ position: absolute;
+ right: 5px;
+ text-align: left;
+ top: 5px;
+}
+.dataTables_header .ColVis + .dataTables_info {
+ padding-right: 30px;
+}
+.dataTables_header .dataTables_filter {
+ position: absolute;
+}
+.dataTables_header .dataTables_filter input {
+ border: 1px solid #bbb;
+ height: 24px;
+}
+@media (max-width: 767px) {
+ .dataTables_header .dataTables_filter input {
+ width: 100px;
+ }
+}
+.dataTables_header .dataTables_info {
+ padding: 2px 0;
+}
+@media (max-width: 480px) {
+ .dataTables_header .dataTables_info {
+ text-align: right;
+ }
+}
+.dataTables_header .dataTables_info b {
+ font-weight: bold;
+}
+.dataTables_footer {
+ background-color: #fff;
+ border: 1px solid #d1d1d1;
+ border-top: none;
+ overflow: hidden;
+}
+.dataTables_paginate {
+ background: #fafafa;
+ float: right;
+ margin: 0;
+}
+.dataTables_paginate .pagination {
+ float: left;
+ margin: 0;
+}
+.dataTables_paginate .pagination > li > span {
+ border-color: #ffffff #e1e1e1 #f4f4f4;
+ border-width: 0 1px;
+ font-size: 16px;
+ font-weight: normal;
+ padding: 0;
+ text-align: center;
+ width: 31px;
+}
+.dataTables_paginate .pagination > li > span:hover,
+.dataTables_paginate .pagination > li > span:focus {
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dataTables_paginate .pagination > li.last > span {
+ border-right: none;
+}
+.dataTables_paginate .pagination > li.disabled > span {
+ background: #f5f5f5;
+ border-left-color: #ececec;
+ border-right-color: #ececec;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dataTables_paginate .pagination-input {
+ float: left;
+ font-size: 12px;
+ line-height: 1em;
+ padding: 4px 15px 0;
+ text-align: right;
+}
+.dataTables_paginate .pagination-input .paginate_input {
+ border: 1px solid #d3d3d3;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ font-size: 12px;
+ font-weight: 600;
+ height: 19px;
+ margin-right: 8px;
+ padding-right: 3px;
+ text-align: right;
+ width: 30px;
+}
+.dataTables_paginate .pagination-input .paginate_of {
+ position: relative;
+}
+.dataTables_paginate .pagination-input .paginate_of b {
+ margin-left: 3px;
+}
+.dataTables_wrapper {
+ margin: 20px 0;
+}
+@media (max-width: 767px) {
+ .dataTables_wrapper .table-responsive {
+ margin-bottom: 0;
+ }
+}
+.DTCR_clonedTable {
+ background-color: rgba(255, 255, 255, 0.7);
+ z-index: 202;
+}
+.DTCR_pointer {
+ background-color: #0099d3;
+ width: 1px;
+ z-index: 201;
+}
+table.datatable {
+ margin-bottom: 0;
+ max-width: none !important;
+}
+table.datatable thead .sorting,
+table.datatable thead .sorting_asc,
+table.datatable thead .sorting_desc,
+table.datatable thead .sorting_asc_disabled,
+table.datatable thead .sorting_desc_disabled {
+ cursor: pointer;
+ *cursor: hand;
+}
+table.datatable thead .sorting_asc,
+table.datatable thead .sorting_desc {
+ border: 0;
+ color: #0099d3 !important;
+ display: block;
+ position: relative;
+}
+table.datatable thead .sorting_asc:after,
+table.datatable thead .sorting_desc:after {
+ content: "\f107";
+ font-family: "FontAwesome";
+ font-size: 10px;
+ font-weight: normal;
+ height: 9px;
+ left: 7px;
+ line-height: 12px;
+ position: relative;
+ top: 2px;
+ vertical-align: baseline;
+ width: 12px;
+}
+table.datatable thead .sorting_asc:before,
+table.datatable thead .sorting_desc:before {
+ background: #0099d3;
+ content: '';
+ height: 2px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+}
+table.datatable thead .sorting_asc:after {
+ content: "\f106";
+ top: -3px;
+}
+table.datatable th:active {
+ outline: none;
+}
+.caret {
+ font-family: "FontAwesome";
+ font-weight: normal;
+ height: 9px;
+ position: relative;
+ vertical-align: baseline;
+ width: 12px;
+}
+.caret:before {
+ bottom: 0;
+ content: "\f107";
+ left: 0;
+ line-height: 12px;
+ position: absolute;
+ text-align: center;
+ top: -1px;
+ right: 0;
+}
+.dropdown-menu .divider {
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 4px 1px;
+ overflow: hidden;
+}
+.dropdown-menu > li > a {
+ border-color: transparent;
+ border-style: solid;
+ border-width: 1px 0;
+ padding: 1px 10px;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ border-color: #b3d3e7;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dropdown-menu > li > a:active {
+ background-color: #0099d3;
+ border-color: #0076b7;
+ color: #ffffff !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ background-color: #0099d3 !important;
+ border-color: #0076b7 !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ border-color: transparent;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ border-color: transparent;
+}
+.dropdown-header {
+ padding-left: 10px;
+ padding-right: 10px;
+ text-transform: uppercase;
+}
+.btn-group > .dropdown-menu,
+.input-group-btn > .dropdown-menu {
+ margin-top: -1px;
+}
+.dropup .dropdown-menu {
+ margin-bottom: -1px;
+}
+.dropdown-submenu {
+ position: relative;
+}
+.dropdown-submenu:hover > a {
+ background-color: #d4edfa;
+ border-color: #b3d3e7;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+ display: block;
+}
+.dropdown-submenu.pull-left {
+ float: none !important;
+}
+.dropdown-submenu.pull-left > .dropdown-menu {
+ left: auto;
+ margin-left: 10px;
+ right: 100%;
+}
+.dropdown-submenu > a {
+ padding-right: 20px !important;
+}
+.dropdown-submenu > a:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 2px;
+}
+.dropdown-submenu > .dropdown-menu {
+ left: 100%;
+ margin-top: 0;
+ top: -6px;
+}
+.dropup .dropdown-submenu > .dropdown-menu {
+ bottom: -5px;
+ top: auto;
+}
+.open .dropdown-submenu.active > .dropdown-menu {
+ display: block;
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 300;
+ src: url('../fonts/OpenSans-Light-webfont.eot');
+ src: url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-Light-webfont.woff') format('woff'), url('../fonts/OpenSans-Light-webfont.ttf') format('truetype'), url('../fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: url('../fonts/OpenSans-Regular-webfont.eot');
+ src: url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), url('../fonts/OpenSans-Regular-webfont.ttf') format('truetype'), url('../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+ src: url('../fonts/OpenSans-Semibold-webfont.eot');
+ src: url('../fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-Semibold-webfont.woff') format('woff'), url('../fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), url('../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 700;
+ src: url('../fonts/OpenSans-Bold-webfont.eot');
+ src: url('../fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-Bold-webfont.woff') format('woff'), url('../fonts/OpenSans-Bold-webfont.ttf') format('truetype'), url('../fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 800;
+ src: url('../fonts/OpenSans-ExtraBold-webfont.eot');
+ src: url('../fonts/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans-ExtraBold-webfont.woff') format('woff'), url('../fonts/OpenSans-ExtraBold-webfont.ttf') format('truetype'), url('../fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') format('svg');
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ border-color: #d4d4d4 !important;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #969696;
+}
+.form-control:hover {
+ border-color: #7bb2dd;
+}
+.has-error .form-control:hover {
+ border-color: #843534;
+}
+.has-success .form-control:hover {
+ border-color: #2b542c;
+}
+.has-warning .form-control:hover {
+ border-color: #bb6106;
+}
+.input-group .input-group-btn .btn {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+label {
+ font-weight: 600;
+}
+@font-face {
+ font-family: 'PatternFlyIcons-webfont';
+ src: url('../fonts/PatternFlyIcons-webfont.eot');
+ src: url('../fonts/PatternFlyIcons-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/PatternFlyIcons-webfont.ttf') format('truetype'), url('../fonts/PatternFlyIcons-webfont.woff') format('woff'), url('../fonts/PatternFlyIcons-webfont.svg#PatternFlyIcons-webfont') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+[class*="-exclamation"] {
+ color: #fff;
+}
+[class^="pficon-"],
+[class*=" pficon-"] {
+ display: inline-block;
+ font-family: 'PatternFlyIcons-webfont';
+ font-style: normal;
+ font-variant: normal;
+ font-weight: normal;
+ line-height: 1;
+ speak: none;
+ text-transform: none;
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.pficon-layered {
+ position: relative;
+}
+.pficon-layered .pficon:first-child {
+ position: absolute;
+ z-index: 1;
+}
+.pficon-layered .pficon:first-child + .pficon {
+ position: relative;
+ z-index: 2;
+}
+.pficon-warning-exclamation:before {
+ content: "\e60d";
+}
+.pficon-screen:before {
+ content: "\e600";
+}
+.pficon-save:before {
+ content: "\e601";
+}
+.pficon-ok:before {
+ color: #3f9c35;
+ content: "\e602";
+}
+.pficon-messages:before,
+.pficon-flag:before {
+ content: "\e603";
+}
+.pficon-info:before {
+ content: "\e604";
+}
+.pficon-help:before {
+ content: "\e605";
+}
+.pficon-folder-open:before {
+ content: "\e606";
+}
+.pficon-folder-close:before {
+ content: "\e607";
+}
+.pficon-error-exclamation:before {
+ content: "\e608";
+}
+.pficon-error-octagon:before {
+ color: #cc0000;
+ content: "\e609";
+}
+.pficon-edit:before {
+ content: "\e60a";
+}
+.pficon-close:before {
+ content: "\e60b";
+}
+.pficon-warning-triangle:before {
+ color: #ec7a08;
+ content: "\e60c";
+}
+.pficon-user:before {
+ content: "\e60e";
+}
+.pficon-users:before {
+ content: "\e60f";
+}
+.pficon-add:before {
+ content: "\e61a";
+}
+.pficon-add-circle-o:before {
+ content: "\e61b";
+}
+.pficon-warning-triangle-o:before {
+ color: #ec7a08;
+ content: "\e61c";
+}
+.pficon-error-circle-o:before {
+ color: #cc0000;
+ content: "\e61d";
+}
+.pficon-service:before {
+ content: "\e61e";
+}
+.pficon-image:before {
+ content: "\e61f";
+}
+.pficon-settings:before {
+ content: "\e610";
+}
+.pficon-delete:before {
+ content: "\e611";
+}
+.pficon-print:before {
+ content: "\e612";
+}
+.pficon-refresh:before,
+.pficon-restart:before {
+ content: "\e613";
+}
+.pficon-running:before {
+ content: "\e614";
+}
+.pficon-import:before {
+ content: "\e615";
+}
+.pficon-export:before {
+ content: "\e616";
+}
+.pficon-history:before {
+ content: "\e617";
+}
+.pficon-home:before {
+ content: "\e618";
+}
+.pficon-remove:before {
+ content: "\e619";
+}
+.pficon-cluster:before {
+ content: "\e620";
+}
+.pficon-container-node:before {
+ content: "\e621";
+}
+.navbar-nav > li > .dropdown-menu.infotip {
+ border-top-width: 1px !important;
+ margin-top: 10px;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-nav .open .dropdown-menu.infotip {
+ background-color: #fff !important;
+ margin-top: 0;
+ }
+}
+.infotip {
+ min-width: 235px;
+ padding: 0;
+}
+.infotip .list-group {
+ border-top: 0;
+ margin: 0;
+ padding: 8px 0;
+}
+.infotip .list-group .list-group-item {
+ border: none;
+ margin: 0 15px 0 34px;
+ padding: 5px 0;
+}
+.infotip .list-group .list-group-item > .i {
+ color: #4d5258;
+ font-size: 13px;
+ left: -20px;
+ position: absolute;
+ top: 8px;
+}
+.infotip .list-group .list-group-item > a {
+ color: #4d5258;
+ line-height: 13px;
+}
+.infotip .list-group .list-group-item > .close {
+ float: right;
+}
+.infotip .footer {
+ background-color: #f5f5f5;
+ padding: 6px 15px;
+}
+.infotip .footer a:hover {
+ color: #0099d3;
+}
+.infotip .arrow,
+.infotip .arrow:after {
+ border-color: transparent;
+ border-style: solid;
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+.infotip .arrow {
+ border-width: 11px;
+}
+.infotip .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+.infotip.bottom .arrow,
+.infotip.bottom-left .arrow,
+.infotip.bottom-right .arrow {
+ border-bottom-color: #999999;
+ border-bottom-color: #bbbbbb;
+ border-top-width: 0;
+ left: 50%;
+ margin-left: -11px;
+ top: -11px;
+}
+.infotip.bottom .arrow:after,
+.infotip.bottom-left .arrow:after,
+.infotip.bottom-right .arrow:after {
+ border-top-width: 0;
+ border-bottom-color: #ffffff;
+ content: " ";
+ margin-left: -10px;
+ top: 1px;
+}
+.infotip.bottom-left .arrow {
+ left: 20%;
+}
+.infotip.bottom-right .arrow {
+ left: 80%;
+}
+.infotip.top .arrow {
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: #bbbbbb;
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+}
+.infotip.top .arrow:after {
+ border-bottom-width: 0;
+ border-top-color: #f5f5f5;
+ bottom: 1px;
+ content: " ";
+ margin-left: -10px;
+}
+.infotip.right .arrow {
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: #bbbbbb;
+ left: -11px;
+ margin-top: -11px;
+ top: 50%;
+}
+.infotip.right .arrow:after {
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #ffffff;
+ content: " ";
+ left: 1px;
+}
+.infotip.left .arrow {
+ border-left-color: #999999;
+ border-left-color: #bbbbbb;
+ border-right-width: 0;
+ margin-top: -11px;
+ right: -11px;
+ top: 50%;
+}
+.infotip.left .arrow:after {
+ border-left-color: #ffffff;
+ border-right-width: 0;
+ bottom: -10px;
+ content: " ";
+ right: 1px;
+}
+.label {
+ border-radius: 0;
+ font-size: 100%;
+ font-weight: 600;
+}
+h1 .label,
+h2 .label,
+h3 .label,
+h4 .label,
+h5 .label,
+h6 .label {
+ font-size: 75%;
+}
+.list-group {
+ border-top: 1px solid #e9e8e8;
+}
+.list-group .list-group-item:first-child {
+ border-top: 0;
+}
+.list-group-item {
+ border-left: 0;
+ border-right: 0;
+}
+.list-group-item-heading {
+ font-weight: 700;
+}
+.login-pf {
+ height: 100%;
+}
+.login-pf #brand {
+ position: relative;
+ top: -70px;
+}
+.login-pf #brand img {
+ display: block;
+ height: 18px;
+ margin: 0 auto;
+ max-width: 100%;
+}
+@media (min-width: 768px) {
+ .login-pf #brand img {
+ margin: 0;
+ text-align: left;
+ }
+}
+.login-pf #badge {
+ display: block;
+ margin: 20px auto 70px;
+ position: relative;
+ text-align: center;
+}
+@media (min-width: 768px) {
+ .login-pf #badge {
+ float: right;
+ margin-right: 64px;
+ margin-top: 50px;
+ }
+}
+.login-pf body {
+ background: #080808 url("../img/bg-login.jpg") repeat-x 50% 0;
+ background-size: auto;
+}
+@media (min-width: 768px) {
+ .login-pf body {
+ background-size: 100% auto;
+ }
+}
+.login-pf .container {
+ background-color: #181818;
+ background-color: rgba(255, 255, 255, 0.055);
+ clear: right;
+ color: #fff;
+ padding-bottom: 40px;
+ padding-top: 20px;
+ width: auto;
+}
+@media (min-width: 768px) {
+ .login-pf .container {
+ bottom: 13%;
+ padding-left: 80px;
+ position: absolute;
+ width: 100%;
+ }
+}
+.login-pf .container [class^='alert'] {
+ background: transparent;
+ color: #fff;
+}
+.login-pf .container .details p:first-child {
+ border-top: 1px solid #474747;
+ padding-top: 25px;
+ margin-top: 25px;
+}
+@media (min-width: 768px) {
+ .login-pf .container .details {
+ border-left: 1px solid #474747;
+ padding-left: 40px;
+ }
+ .login-pf .container .details p:first-child {
+ border-top: 0;
+ padding-top: 0;
+ margin-top: 0;
+ }
+}
+.login-pf .container .details p {
+ margin-bottom: 2px;
+}
+.login-pf .container .form-horizontal .control-label {
+ font-size: 13px;
+ font-weight: 400;
+ text-align: left;
+}
+.login-pf .container .form-horizontal .form-group:last-child,
+.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child {
+ margin-bottom: 0;
+}
+.login-pf .container .help-block {
+ color: #fff;
+}
+@media (min-width: 768px) {
+ .login-pf .container .login {
+ padding-right: 40px;
+ }
+}
+.login-pf .container .submit {
+ text-align: right;
+}
+.ie8.login-pf #badge {
+ background: url('../img/logo.png') no-repeat;
+ height: 69px;
+ width: 73px;
+}
+.ie8.login-pf #badge img {
+ width: 0;
+}
+.ie8.login-pf #brand {
+ background: url('../img/brand-lg.png') no-repeat center;
+ background-size: cover auto;
+}
+@media (min-width: 768px) {
+ .ie8.login-pf #brand {
+ background-position: 0 0;
+ }
+}
+.ie8.login-pf #brand img {
+ width: 0;
+}
+.modal-header {
+ background-color: #f8f8f8;
+ border-bottom: none;
+ padding: 10px 18px;
+}
+.modal-header .close {
+ margin-top: 2px;
+}
+.modal-title {
+ font-size: 13px;
+ font-weight: 700;
+}
+.modal-footer {
+ border-top: none;
+ margin-top: 15px;
+ padding: 14px 15px 15px;
+}
+.modal-footer > .btn {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+.modal-footer > .btn > .fa-angle-left {
+ margin-right: 5px;
+}
+.modal-footer > .btn > .fa-angle-right {
+ margin-left: 5px;
+}
+.navbar-pf {
+ background: #030303;
+ border: 0;
+ border-radius: 0;
+ border-top: 3px solid #199dde;
+ margin-bottom: 0;
+ min-height: 0;
+}
+.navbar-pf .navbar-brand {
+ color: #f1f1f1;
+ height: auto;
+ padding: 12px 0;
+ margin: 0 0 0 20px;
+}
+.ie8 .navbar-pf .navbar-brand {
+ background: url('../img/brand.png') no-repeat 0 49%;
+ min-width: 270px;
+}
+.navbar-pf .navbar-brand img {
+ display: block;
+}
+.ie8 .navbar-pf .navbar-brand img {
+ height: 10px;
+ width: 0;
+}
+.navbar-pf .navbar-collapse {
+ border-top: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ padding: 0;
+}
+.navbar-pf .navbar-header {
+ border-bottom: 1px solid #292929;
+ float: none;
+}
+.navbar-pf .navbar-nav {
+ margin: 0;
+}
+.navbar-pf .navbar-nav > .active > a,
+.navbar-pf .navbar-nav > .active > a:hover,
+.navbar-pf .navbar-nav > .active > a:focus {
+ background-color: #232323;
+ color: #f1f1f1;
+}
+.navbar-pf .navbar-nav > li > a {
+ color: #cfcfcf;
+ line-height: 1;
+ padding: 10px 20px;
+ text-shadow: none;
+}
+.navbar-pf .navbar-nav > li > a:hover,
+.navbar-pf .navbar-nav > li > a:focus {
+ color: #f1f1f1;
+}
+.navbar-pf .navbar-nav > .open > a,
+.navbar-pf .navbar-nav > .open > a:hover,
+.navbar-pf .navbar-nav > .open > a:focus {
+ background-color: #232323;
+ color: #f1f1f1;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-nav .active .navbar-persistent,
+ .navbar-pf .navbar-nav .active .dropdown-menu,
+ .navbar-pf .navbar-nav .open .dropdown-menu {
+ background-color: #171717 !important;
+ margin-left: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent > .active > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu > .active > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a,
+ .navbar-pf .navbar-nav .active .navbar-persistent > .active > a:hover,
+ .navbar-pf .navbar-nav .active .dropdown-menu > .active > a:hover,
+ .navbar-pf .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a:hover,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a:hover,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a:hover,
+ .navbar-pf .navbar-nav .active .navbar-persistent > .active > a:focus,
+ .navbar-pf .navbar-nav .active .dropdown-menu > .active > a:focus,
+ .navbar-pf .navbar-nav .open .dropdown-menu > .active > a:focus,
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a:focus,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a:focus,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a:focus {
+ background-color: #1f1f1f !important;
+ color: #f1f1f1;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent > li > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu > li > a {
+ background-color: transparent;
+ border: 0;
+ color: #cfcfcf;
+ outline: none;
+ padding-left: 30px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent > li > a:hover,
+ .navbar-pf .navbar-nav .active .dropdown-menu > li > a:hover,
+ .navbar-pf .navbar-nav .open .dropdown-menu > li > a:hover {
+ color: #f1f1f1;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .divider,
+ .navbar-pf .navbar-nav .active .dropdown-menu .divider,
+ .navbar-pf .navbar-nav .open .dropdown-menu .divider {
+ background-color: #292929;
+ margin: 0 1px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding-bottom: 0;
+ padding-left: 30px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle {
+ color: #f1f1f1;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left {
+ float: none !important;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu > a:after,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu > a:after,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu > a:after {
+ display: none;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header {
+ padding-left: 45px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu {
+ border: 0;
+ bottom: auto;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ display: block;
+ float: none;
+ margin: 0;
+ min-width: 0;
+ padding: 0;
+ position: relative;
+ left: auto;
+ right: auto;
+ top: auto;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu > li > a {
+ padding: 5px 15px 5px 45px;
+ line-height: 20px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu > li > a {
+ padding-left: 60px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu {
+ display: block;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu > a:after {
+ display: inline-block !important;
+ position: relative;
+ right: auto;
+ top: 1px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu {
+ display: none;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu > a:after {
+ display: none !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu {
+ background-color: #fff !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a:active {
+ background-color: #d4edfa !important;
+ border-color: #b3d3e7 !important;
+ color: #333333 !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a small,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a:active small {
+ color: #999999 !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .disabled > a {
+ color: #999999 !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a:active {
+ background-color: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #fff !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a small,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a:active small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li > a.opt {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ color: #333333;
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:active small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:hover small,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:focus small {
+ color: #999999;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select > .open > .dropdown-menu {
+ padding-bottom: 5px;
+ padding-top: 5px;
+ }
+}
+.navbar-pf .navbar-persistent {
+ display: none;
+}
+.navbar-pf .active > .navbar-persistent {
+ display: block;
+}
+.navbar-pf .navbar-primary {
+ float: none;
+}
+.navbar-pf .navbar-primary .context {
+ border-bottom: 1px solid #292929;
+}
+.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,
+.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*="span"] {
+ margin: 8px 20px 9px;
+ width: auto;
+}
+.navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a {
+ position: relative;
+}
+.navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a:after {
+ content: "\f107";
+ display: inline-block;
+ font-family: "FontAwesome";
+ font-weight: normal;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a:after {
+ height: 10px;
+ margin-left: 4px;
+ vertical-align: baseline;
+ }
+}
+.navbar-pf .navbar-toggle {
+ border: 0;
+ margin: 0;
+ padding: 10px 20px;
+}
+.navbar-pf .navbar-toggle:hover,
+.navbar-pf .navbar-toggle:focus {
+ background-color: transparent;
+ outline: none;
+}
+.navbar-pf .navbar-toggle:hover .icon-bar,
+.navbar-pf .navbar-toggle:focus .icon-bar {
+ -webkit-box-shadow: 0 0 3px #ffffff;
+ box-shadow: 0 0 3px #ffffff;
+}
+.navbar-pf .navbar-toggle .icon-bar {
+ background-color: #ffffff;
+}
+.navbar-pf .navbar-utility {
+ border-bottom: 1px solid #292929;
+}
+.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle {
+ padding-left: 36px;
+ position: relative;
+}
+.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user {
+ left: 20px;
+ position: absolute;
+ top: 10px;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-utility > li + li {
+ border-top: 1px solid #292929;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-pf .navbar-brand {
+ padding: 8px 0 7px;
+ }
+ .navbar-pf .navbar-nav > li > a {
+ padding-bottom: 14px;
+ padding-top: 14px;
+ }
+ .navbar-pf .navbar-persistent {
+ font-size: 14px;
+ }
+ .navbar-pf .navbar-primary {
+ font-size: 14px;
+ background-image: -webkit-linear-gradient(top, #1d1d1d 0%, #030303 100%);
+ background-image: -o-linear-gradient(top, #1d1d1d 0%, #030303 100%);
+ background-image: linear-gradient(to bottom, #1d1d1d 0%, #030303 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1d1d1d', endColorstr='#ff030303', GradientType=0);
+ }
+ .navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu {
+ top: auto;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu {
+ bottom: -5px;
+ top: auto;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li {
+ position: static;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li.active {
+ margin-bottom: 32px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li.active > .navbar-persistent {
+ display: block;
+ left: 0;
+ position: absolute;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent {
+ background: #f6f6f6;
+ border-bottom: 1px solid #cecdcd;
+ padding: 0;
+ width: 100%;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent a {
+ text-decoration: none !important;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:before,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:hover:before {
+ background: #0099d3;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 20px;
+ position: absolute;
+ right: 20px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active > a,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active > a:hover,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:hover > a {
+ color: #0099d3 !important;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active .active > a {
+ color: #f1f1f1;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu:hover > .dropdown-menu {
+ display: none;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-menu {
+ display: block;
+ left: 20px;
+ margin-top: 1px;
+ top: 100%;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-toggle {
+ color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-toggle:after {
+ border-top-color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu > .dropdown-toggle {
+ padding-right: 35px !important;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu > .dropdown-toggle:after {
+ position: absolute;
+ right: 20px;
+ top: 10px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover:before,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open:before {
+ background: #aaaaaa;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 20px;
+ position: absolute;
+ right: 20px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover > a,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open > a {
+ color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover > a:after,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open > a:after {
+ border-top-color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a {
+ background-color: transparent;
+ display: block;
+ line-height: 1;
+ padding: 9px 20px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a.dropdown-toggle {
+ padding-right: 35px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a.dropdown-toggle:after {
+ font-size: 15px;
+ position: absolute;
+ right: 20px;
+ top: 9px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a:hover {
+ color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li a {
+ color: #4d5258;
+ }
+ .navbar-pf .navbar-primary > li > a {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ position: relative;
+ margin: -1px 0 0;
+ }
+ .navbar-pf .navbar-primary > li > a:hover {
+ background-color: #1d1d1d;
+ border-top-color: #5c5c5c;
+ color: #cfcfcf;
+ background-image: -webkit-linear-gradient(top, #363636 0%, #1d1d1d 100%);
+ background-image: -o-linear-gradient(top, #363636 0%, #1d1d1d 100%);
+ background-image: linear-gradient(to bottom, #363636 0%, #1d1d1d 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff363636', endColorstr='#ff1d1d1d', GradientType=0);
+ }
+ .navbar-pf .navbar-primary > .active > a,
+ .navbar-pf .navbar-primary > .active > a:hover,
+ .navbar-pf .navbar-primary > .active > a:focus,
+ .navbar-pf .navbar-primary > .open > a,
+ .navbar-pf .navbar-primary > .open > a:hover,
+ .navbar-pf .navbar-primary > .open > a:focus {
+ background-color: #303030;
+ border-bottom-color: #303030;
+ border-top-color: #696969;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #f1f1f1;
+ background-image: -webkit-linear-gradient(top, #434343 0%, #303030 100%);
+ background-image: -o-linear-gradient(top, #434343 0%, #303030 100%);
+ background-image: linear-gradient(to bottom, #434343 0%, #303030 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434343', endColorstr='#ff303030', GradientType=0);
+ }
+ .navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option {
+ max-width: 160px;
+ text-overflow: ellipsis;
+ }
+ .ie8 .navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option {
+ max-width: none;
+ }
+ .navbar-pf .navbar-primary li.context.dropdown {
+ border-bottom: 0;
+ }
+ .navbar-pf .navbar-primary li.context > a,
+ .navbar-pf .navbar-primary li.context.context-bootstrap-select {
+ background-color: #1f1f1f;
+ border-bottom-color: #3e3e3e;
+ border-right: 1px solid #3e3e3e;
+ border-top-color: #3b3b3b;
+ font-weight: 600;
+ background-image: -webkit-linear-gradient(top, #323232 0%, #1f1f1f 100%);
+ background-image: -o-linear-gradient(top, #323232 0%, #1f1f1f 100%);
+ background-image: linear-gradient(to bottom, #323232 0%, #1f1f1f 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff323232', endColorstr='#ff1f1f1f', GradientType=0);
+ }
+ .navbar-pf .navbar-primary li.context > a:hover,
+ .navbar-pf .navbar-primary li.context.context-bootstrap-select:hover {
+ background-color: #323232;
+ border-bottom-color: #4a4a4a;
+ border-right-color: #4a4a4a;
+ border-top-color: #4a4a4a;
+ background-image: -webkit-linear-gradient(top, #3f3f3f 0%, #323232 100%);
+ background-image: -o-linear-gradient(top, #3f3f3f 0%, #323232 100%);
+ background-image: linear-gradient(to bottom, #3f3f3f 0%, #323232 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3f3f3f', endColorstr='#ff323232', GradientType=0);
+ }
+ .navbar-pf .navbar-primary li.context.open > a {
+ background-color: #454545;
+ border-bottom-color: #575757;
+ border-right-color: #575757;
+ border-top-color: #5a5a5a;
+ background-image: -webkit-linear-gradient(top, #4c4c4c 0%, #454545 100%);
+ background-image: -o-linear-gradient(top, #4c4c4c 0%, #454545 100%);
+ background-image: linear-gradient(to bottom, #4c4c4c 0%, #454545 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4c4c4c', endColorstr='#ff454545', GradientType=0);
+ }
+ .navbar-pf .navbar-utility {
+ border-bottom: 0;
+ font-size: 11px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
+ .navbar-pf .navbar-utility > .active > a,
+ .navbar-pf .navbar-utility > .active > a:hover,
+ .navbar-pf .navbar-utility > .active > a:focus,
+ .navbar-pf .navbar-utility > .open > a,
+ .navbar-pf .navbar-utility > .open > a:hover,
+ .navbar-pf .navbar-utility > .open > a:focus {
+ background: #363636;
+ color: #cfcfcf;
+ }
+ .navbar-pf .navbar-utility > li > a {
+ border-left: 1px solid #2b2b2b;
+ color: #cfcfcf !important;
+ padding: 7px 10px;
+ }
+ .navbar-pf .navbar-utility > li > a:hover {
+ background: #232323;
+ border-left-color: #373737;
+ }
+ .navbar-pf .navbar-utility > li.open > a {
+ border-left-color: #444444;
+ color: #f1f1f1 !important;
+ }
+ .navbar-pf .navbar-utility li.dropdown > .dropdown-toggle {
+ padding-left: 26px;
+ }
+ .navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user {
+ left: 10px;
+ top: 7px;
+ }
+ .navbar-pf .navbar-utility .open .dropdown-menu {
+ left: auto;
+ right: 0;
+ }
+ .navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu {
+ left: auto;
+ right: 100%;
+ }
+ .navbar-pf .open .dropdown-menu {
+ border-top-width: 0 !important;
+ }
+ .navbar-pf .open.bootstrap-select .dropdown-menu,
+ .navbar-pf .open .dropdown-submenu > .dropdown-menu {
+ border-top-width: 1px !important;
+ }
+}
+@media (max-width: 360px) {
+ .navbar-pf .navbar-brand {
+ margin-left: 10px;
+ width: 75%;
+ }
+ .navbar-pf .navbar-brand img {
+ height: auto;
+ max-width: 100%;
+ }
+ .navbar-pf .navbar-toggle {
+ padding-left: 0;
+ }
+}
+.pager li > a,
+.pager li > span {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+ font-weight: 600;
+ line-height: 22px;
+ padding: 2px 14px;
+}
+.pager li > a:hover,
+.pager li > span:hover,
+.pager li > a:focus,
+.pager li > span:focus,
+.pager li > a:active,
+.pager li > span:active,
+.pager li > a.active,
+.pager li > span.active,
+.open .dropdown-toggle.pager li > a,
+.open .dropdown-toggle.pager li > span {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.pager li > a:active,
+.pager li > span:active,
+.pager li > a.active,
+.pager li > span.active,
+.open .dropdown-toggle.pager li > a,
+.open .dropdown-toggle.pager li > span {
+ background-image: none;
+}
+.pager li > a.disabled,
+.pager li > span.disabled,
+.pager li > a[disabled],
+.pager li > span[disabled],
+fieldset[disabled] .pager li > a,
+fieldset[disabled] .pager li > span,
+.pager li > a.disabled:hover,
+.pager li > span.disabled:hover,
+.pager li > a[disabled]:hover,
+.pager li > span[disabled]:hover,
+fieldset[disabled] .pager li > a:hover,
+fieldset[disabled] .pager li > span:hover,
+.pager li > a.disabled:focus,
+.pager li > span.disabled:focus,
+.pager li > a[disabled]:focus,
+.pager li > span[disabled]:focus,
+fieldset[disabled] .pager li > a:focus,
+fieldset[disabled] .pager li > span:focus,
+.pager li > a.disabled:active,
+.pager li > span.disabled:active,
+.pager li > a[disabled]:active,
+.pager li > span[disabled]:active,
+fieldset[disabled] .pager li > a:active,
+fieldset[disabled] .pager li > span:active,
+.pager li > a.disabled.active,
+.pager li > span.disabled.active,
+.pager li > a[disabled].active,
+.pager li > span[disabled].active,
+fieldset[disabled] .pager li > a.active,
+fieldset[disabled] .pager li > span.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.pager li > a > .i,
+.pager li > span > .i {
+ font-size: 18px;
+ vertical-align: top;
+ margin: 2px 0;
+}
+.pager li > a:hover > a:focus {
+ color: #4d5258;
+}
+.pager li a:active {
+ background-image: none;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ outline: 0;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > a:active,
+.pager .disabled > span {
+ background: #f5f5f5;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #969696;
+ cursor: default;
+}
+.pager .next > a > .i,
+.pager .next > span > .i {
+ margin-left: 5px;
+}
+.pager .previous > a > .i,
+.pager .previous > span > .i {
+ margin-right: 5px;
+}
+.pager-sm li > a,
+.pager-sm li > span {
+ font-weight: 400;
+ line-height: 16px;
+ padding: 1px 10px;
+}
+.pager-sm li > a > .i,
+.pager-sm li > span > .i {
+ font-size: 12px;
+}
+.pagination > li > a,
+.pagination > li > span {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+ cursor: default;
+ font-weight: 600;
+ padding: 2px 10px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus,
+.pagination > li > a:active,
+.pagination > li > span:active,
+.pagination > li > a.active,
+.pagination > li > span.active,
+.open .dropdown-toggle.pagination > li > a,
+.open .dropdown-toggle.pagination > li > span {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.pagination > li > a:active,
+.pagination > li > span:active,
+.pagination > li > a.active,
+.pagination > li > span.active,
+.open .dropdown-toggle.pagination > li > a,
+.open .dropdown-toggle.pagination > li > span {
+ background-image: none;
+}
+.pagination > li > a.disabled,
+.pagination > li > span.disabled,
+.pagination > li > a[disabled],
+.pagination > li > span[disabled],
+fieldset[disabled] .pagination > li > a,
+fieldset[disabled] .pagination > li > span,
+.pagination > li > a.disabled:hover,
+.pagination > li > span.disabled:hover,
+.pagination > li > a[disabled]:hover,
+.pagination > li > span[disabled]:hover,
+fieldset[disabled] .pagination > li > a:hover,
+fieldset[disabled] .pagination > li > span:hover,
+.pagination > li > a.disabled:focus,
+.pagination > li > span.disabled:focus,
+.pagination > li > a[disabled]:focus,
+.pagination > li > span[disabled]:focus,
+fieldset[disabled] .pagination > li > a:focus,
+fieldset[disabled] .pagination > li > span:focus,
+.pagination > li > a.disabled:active,
+.pagination > li > span.disabled:active,
+.pagination > li > a[disabled]:active,
+.pagination > li > span[disabled]:active,
+fieldset[disabled] .pagination > li > a:active,
+fieldset[disabled] .pagination > li > span:active,
+.pagination > li > a.disabled.active,
+.pagination > li > span.disabled.active,
+.pagination > li > a[disabled].active,
+.pagination > li > span[disabled].active,
+fieldset[disabled] .pagination > li > a.active,
+fieldset[disabled] .pagination > li > span.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.pagination > li > a > .i,
+.pagination > li > span > .i {
+ font-size: 15px;
+ vertical-align: top;
+ margin: 2px 0;
+}
+.pagination > li > a:active,
+.pagination > li > span:active {
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ background-color: #eeeeee;
+ border-color: #bbbbbb;
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ color: #4d5258;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ cursor: default;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 0 6px;
+ font-size: 11px;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ font-weight: 400;
+}
+.pagination-sm > li > a > .i,
+.pagination-sm > li > span > .i {
+ font-size: 12px;
+ margin-top: 3px;
+}
+.panel-title {
+ font-weight: 700;
+}
+.panel-group .panel {
+ color: #4d5258;
+}
+.panel-group .panel + .panel {
+ margin-top: -1px;
+}
+.panel-group .panel-default {
+ border-color: #bebdbd;
+ border-top-color: #c4c3c3;
+}
+.panel-group .panel-heading {
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.panel-group .panel-heading + .panel-collapse .panel-body {
+ border-top: 1px solid #cecdcd;
+}
+.panel-group .panel-title {
+ font-weight: 500;
+ line-height: 1;
+}
+.panel-group .panel-title > a {
+ color: #4d5258;
+ font-weight: 600;
+}
+.panel-group .panel-title > a:before {
+ content: "\f107";
+ font-family: "FontAwesome";
+ font-size: 13px;
+ margin-right: 5px;
+ vertical-align: 0;
+}
+.panel-group .panel-title > a:focus {
+ outline: none;
+ text-decoration: none;
+}
+.panel-group .panel-title > a:hover {
+ text-decoration: none;
+}
+.panel-group .panel-title > a.collapsed:before {
+ content: "\f105";
+ margin-left: 4px;
+ margin-right: 7px;
+}
+.popover {
+ -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.08);
+ box-shadow: 0 2px 2px rgba(0, 0, 0, 0.08);
+ padding: 0;
+}
+.popover-content {
+ color: #4d5258;
+ line-height: 18px;
+ padding: 10px 14px;
+}
+.popover-title {
+ border-bottom: none;
+ border-radius: 0;
+ color: #4d5258;
+ font-size: 13px;
+ font-weight: 700;
+ min-height: 34px;
+}
+.popover-title .close {
+ height: 22px;
+ position: absolute;
+ right: 8px;
+ top: 6px;
+}
+.popover-title.closable {
+ padding-right: 30px;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+.progress {
+ -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.25);
+ box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.25);
+}
+.progress.progress-label-left,
+.progress.progress-label-top-right {
+ overflow: visible;
+ position: relative;
+}
+.progress.progress-label-left {
+ margin-left: 40px;
+}
+.progress.progress-sm {
+ height: 14px;
+ margin-bottom: 14px;
+}
+.progress.progress-xs {
+ height: 6px;
+ margin-bottom: 6px;
+}
+td > .progress:first-child:last-child {
+ margin-bottom: 0;
+ margin-top: 3px;
+}
+.progress-bar {
+ box-shadow: none;
+}
+.progress-label-left .progress-bar span,
+.progress-label-top-right .progress-bar span {
+ color: #333333;
+ font-size: 14px;
+ position: absolute;
+ text-align: right;
+}
+.progress-label-left .progress-bar span {
+ left: -40px;
+ top: 0;
+ width: 35px;
+}
+.progress-label-top-right .progress-bar span {
+ max-width: 25%;
+ overflow: hidden;
+ right: 0;
+ text-overflow: ellipsis;
+ top: -31px;
+ white-space: nowrap;
+}
+.progress-label-left.progress-sm .progress-bar span,
+.progress-label-top-right.progress-sm .progress-bar span {
+ font-size: 12px;
+}
+.progress-sm .progress-bar {
+ line-height: 14px;
+}
+.progress-xs .progress-bar {
+ line-height: 6px;
+}
+.progress-description {
+ margin-bottom: 10px;
+ max-width: 74%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.progress-description .count {
+ font-size: 20.004px;
+ font-weight: 300;
+ line-height: 1;
+ margin-right: 5px;
+}
+.progress-description .fa,
+.progress-description .pficon {
+ font-size: 14px;
+ margin-right: 3px;
+}
+.progress-description .tooltip {
+ white-space: normal;
+}
+.search-pf.has-button {
+ border-collapse: separate;
+ display: table;
+}
+.search-pf.has-button .form-group {
+ display: table-cell;
+ width: 100%;
+}
+.search-pf.has-button .form-group .btn {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ float: left;
+ margin-left: -1px;
+}
+.search-pf.has-button .form-group .btn.btn-lg {
+ font-size: 14.5px;
+}
+.search-pf.has-button .form-group .btn.btn-sm {
+ font-size: 10.7px;
+}
+.search-pf.has-button .form-group .form-control {
+ float: left;
+}
+.search-pf .has-clear .clear {
+ background: transparent;
+ background: rgba(255, 255, 255, 0);
+ border: 0;
+ height: 25px;
+ line-height: 1;
+ padding: 0;
+ position: absolute;
+ right: 1px;
+ top: 1px;
+ width: 28px;
+}
+.search-pf .has-clear .clear:focus {
+ outline: none;
+}
+.search-pf .has-clear .form-control {
+ padding-right: 30px;
+}
+.search-pf .has-clear .form-control::-ms-clear {
+ display: none;
+}
+.search-pf .has-clear .input-lg + .clear {
+ height: 31px;
+ width: 28px;
+}
+.search-pf .has-clear .input-sm + .clear {
+ height: 20px;
+ width: 28px;
+}
+.search-pf .has-clear .input-sm + .clear span {
+ font-size: 10px;
+}
+.search-pf .has-clear .search-pf-input-group {
+ position: relative;
+}
+.sidebar-header {
+ border-bottom: 1px solid #e9e9e9;
+ padding-bottom: 11px;
+ margin: 50px 0 20px;
+}
+.sidebar-header .actions {
+ margin-top: -2px;
+}
+.sidebar-pf .sidebar-header + .list-group {
+ border-top: 0;
+ margin-top: -10px;
+}
+.sidebar-pf .sidebar-header + .list-group .list-group-item {
+ background: transparent;
+ border-color: #e9e9e9;
+ padding-left: 0;
+}
+.sidebar-pf .sidebar-header + .list-group .list-group-item-heading {
+ font-size: 12px;
+}
+.sidebar-pf .nav-category h2 {
+ color: #999999;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 21px;
+ margin: 0;
+ padding: 8px 0;
+}
+.sidebar-pf .nav-category + .nav-category {
+ margin-top: 10px;
+}
+.sidebar-pf .nav-pills > li.active > a {
+ background: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #fff;
+}
+@media (min-width: 768px) {
+ .sidebar-pf .nav-pills > li.active > a:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 1px;
+ }
+}
+.sidebar-pf .nav-pills > li.active > a .fa {
+ color: #fff;
+}
+.sidebar-pf .nav-pills > li > a {
+ border-bottom: 1px solid transparent;
+ border-radius: 0;
+ border-top: 1px solid transparent;
+ color: #333333;
+ font-size: 13px;
+ line-height: 21px;
+ padding: 1px 20px;
+}
+.sidebar-pf .nav-pills > li > a:hover {
+ background: #d4edfa;
+ border-color: #b3d3e7;
+}
+.sidebar-pf .nav-pills > li > a .fa {
+ color: #6a7079;
+ font-size: 15px;
+ margin-right: 10px;
+ text-align: center;
+ vertical-align: middle;
+ width: 15px;
+}
+.sidebar-pf .nav-stacked {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+.sidebar-pf .nav-stacked li + li {
+ margin-top: 0;
+}
+.sidebar-pf .panel {
+ background: transparent;
+}
+.sidebar-pf .panel-body {
+ padding: 6px 20px;
+}
+.sidebar-pf .panel-body .nav-pills > li > a {
+ padding-left: 37px;
+}
+.sidebar-pf .panel-heading {
+ padding: 9px 20px;
+}
+.sidebar-pf .panel-title {
+ font-size: 12px;
+}
+.sidebar-pf .panel-title > a:before {
+ display: inline-block;
+ margin-left: 1px;
+ margin-right: 4px;
+ width: 9px;
+}
+.sidebar-pf .panel-title > a.collapsed:before {
+ margin-left: 3px;
+ margin-right: 2px;
+}
+@media (min-width: 767px) {
+ .sidebar-header-bleed-left {
+ margin-left: -20px;
+ }
+ .sidebar-header-bleed-left > h2 {
+ margin-left: 20px;
+ }
+ .sidebar-header-bleed-right {
+ margin-right: -20px;
+ }
+ .sidebar-header-bleed-right .actions {
+ margin-right: 20px;
+ }
+ .sidebar-header-bleed-right > h2 {
+ margin-right: 20px;
+ }
+ .sidebar-header-bleed-right + .list-group {
+ margin-right: -20px;
+ }
+ .sidebar-pf .panel-group .panel-default,
+ .sidebar-pf .treeview {
+ border-left: 0;
+ border-right: 0;
+ margin-left: -20px;
+ margin-right: -20px;
+ }
+ .sidebar-pf .treeview {
+ margin-top: 5px;
+ }
+ .sidebar-pf .treeview .list-group-item {
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+ .sidebar-pf .treeview .list-group-item.node-selected:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 1px;
+ }
+}
+@media (min-width: 768px) {
+ .sidebar-pf {
+ background: #fafafa;
+ }
+ .sidebar-pf.sidebar-pf-left {
+ border-right: 1px solid #d0d0d0;
+ }
+ .sidebar-pf.sidebar-pf-right {
+ border-left: 1px solid #d0d0d0;
+ }
+ .sidebar-pf > .nav-category,
+ .sidebar-pf > .nav-stacked {
+ margin-top: 5px;
+ }
+}
+@-webkit-keyframes rotation {
+ from {
+ -webkit-transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(359deg);
+ }
+}
+@keyframes rotation {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(359deg);
+ }
+}
+.spinner {
+ -webkit-animation: rotation .6s infinite linear;
+ animation: rotation .6s infinite linear;
+ border-bottom: 4px solid rgba(0, 0, 0, 0.25);
+ border-left: 4px solid rgba(0, 0, 0, 0.25);
+ border-right: 4px solid rgba(0, 0, 0, 0.25);
+ border-radius: 100%;
+ border-top: 4px solid rgba(0, 0, 0, 0.75);
+ height: 24px;
+ margin: 0 auto;
+ position: relative;
+ width: 24px;
+}
+.spinner.spinner-inline {
+ display: inline-block;
+ margin-right: 3px;
+}
+.spinner.spinner-lg {
+ border-width: 5px;
+ height: 30px;
+ width: 30px;
+}
+.spinner.spinner-sm {
+ border-width: 3px;
+ height: 18px;
+ width: 18px;
+}
+.spinner.spinner-xs {
+ border-width: 2px;
+ height: 12px;
+ width: 12px;
+}
+.ie8 .spinner,
+.ie9 .spinner {
+ background: url("../img/spinner.gif") no-repeat;
+ border: 0;
+}
+.ie8 .spinner.spinner-lg,
+.ie9 .spinner.spinner-lg {
+ background-image: url("../img/spinner-lg.gif");
+}
+.ie8 .spinner.spinner-sm,
+.ie9 .spinner.spinner-sm {
+ background-image: url("../img/spinner-sm.gif");
+}
+.ie8 .spinner.spinner-xs,
+.ie9 .spinner.spinner-xs {
+ background-image: url("../img/spinner-xs.gif");
+}
+.prettyprint .atn,
+.prettyprint .com,
+.prettyprint .fun,
+.prettyprint .var {
+ color: #3f9c35;
+}
+.prettyprint .atv,
+.prettyprint .str {
+ color: #a30000;
+}
+.prettyprint .clo,
+.prettyprint .dec,
+.prettyprint .kwd,
+.prettyprint .opn,
+.prettyprint .pln,
+.prettyprint .pun {
+ color: #333333;
+}
+.prettyprint .lit,
+.prettyprint .tag,
+.prettyprint .typ {
+ color: #006e9c;
+}
+.prettyprint ol.linenums {
+ margin-bottom: 0;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 2px 10px 3px;
+}
+.table > thead > tr > th > a:hover,
+.table > tbody > tr > th > a:hover,
+.table > tfoot > tr > th > a:hover,
+.table > thead > tr > td > a:hover,
+.table > tbody > tr > td > a:hover,
+.table > tfoot > tr > td > a:hover {
+ text-decoration: none;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+}
+.table > thead {
+ background-clip: padding-box;
+ background-color: #f9f9f9;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.table-bordered {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 1px;
+}
+.table-striped > tbody > tr:nth-of-type(even) {
+ background-color: #f5f5f5;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: transparent;
+}
+.table-hover > tbody > tr:hover > td,
+.table-hover > tbody > tr:hover > th {
+ background-color: #d5ecf9;
+ border-bottom-color: #a7cadf;
+}
+.nav-tabs {
+ font-size: 14px;
+}
+.nav-tabs > li > a {
+ color: #4d5258;
+ margin-right: -1px;
+ padding-bottom: 5px;
+ padding-top: 5px;
+}
+.nav-tabs > li > a:active,
+.nav-tabs > li > a:focus,
+.nav-tabs > li > a:hover {
+ background: transparent;
+ border-color: #e9e8e8;
+ color: #222222;
+}
+.nav-tabs > li > .dropdown-menu {
+ border-top: 0;
+ border-color: #e9e8e8;
+}
+.nav-tabs > li > .dropdown-menu.pull-right {
+ right: -1px;
+}
+.nav-tabs + .nav-tabs-pf {
+ font-size: 12px;
+}
+.nav-tabs + .nav-tabs-pf > li:first-child > a {
+ padding-left: 15px;
+}
+.nav-tabs + .nav-tabs-pf > li:first-child > a:before {
+ left: 15px !important;
+}
+.nav-tabs .open > a,
+.nav-tabs .open > a:hover,
+.nav-tabs .open > a:focus {
+ background-color: transparent;
+ border-color: #e9e8e8;
+}
+@media (min-width: 768px) {
+ .nav-tabs-pf.nav-justified {
+ border-bottom: 1px solid #e9e8e8;
+ }
+}
+.nav-tabs-pf.nav-justified > li:first-child > a {
+ padding-left: 15px;
+}
+.nav-tabs-pf.nav-justified > li > a {
+ border-bottom: 0;
+}
+.nav-tabs-pf.nav-justified > li > a:before {
+ left: 0 !important;
+ right: 0 !important;
+}
+.nav-tabs-pf > li {
+ margin-bottom: 0;
+}
+.nav-tabs-pf > li.active > a:before {
+ background: #0099d3;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 15px;
+ position: absolute;
+ right: 15px;
+}
+.nav-tabs-pf > li.active > a,
+.nav-tabs-pf > li.active > a:active,
+.nav-tabs-pf > li.active > a:focus,
+.nav-tabs-pf > li.active > a:hover {
+ background-color: transparent;
+ border: 0 !important;
+ color: #0099d3;
+}
+.nav-tabs-pf > li.active > a:before,
+.nav-tabs-pf > li.active > a:active:before,
+.nav-tabs-pf > li.active > a:focus:before,
+.nav-tabs-pf > li.active > a:hover:before {
+ background: #0099d3;
+}
+.nav-tabs-pf > li:first-child > a {
+ padding-left: 0;
+}
+.nav-tabs-pf > li:first-child > a:before {
+ left: 0 !important;
+}
+.nav-tabs-pf > li > a {
+ border: 0;
+ line-height: 1;
+ margin-right: 0;
+ padding-bottom: 10px;
+ padding-top: 10px;
+}
+.nav-tabs-pf > li > a:active:before,
+.nav-tabs-pf > li > a:focus:before,
+.nav-tabs-pf > li > a:hover:before {
+ background: #aaaaaa;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 15px;
+ position: absolute;
+ right: 15px;
+}
+.nav-tabs-pf > li > .dropdown-menu {
+ left: 15px;
+ margin-top: 1px;
+}
+.nav-tabs-pf > li > .dropdown-menu.pull-right {
+ left: auto;
+ right: 15px;
+}
+.nav-tabs-pf .open > a,
+.nav-tabs-pf .open > a:hover,
+.nav-tabs-pf .open > a:focus {
+ background-color: transparent;
+}
+.tooltip {
+ font-size: 12px;
+}
+.tooltip.in {
+ opacity: 0.88;
+ filter: alpha(opacity=88);
+}
+.tooltip-inner {
+ padding: 7px 12px;
+ text-align: left;
+}
+h1,
+.h1,
+h2,
+.h2 {
+ font-weight: 300;
+}
+.page-header .actions {
+ margin-top: 8px;
+}
+.page-header .actions a > .pficon {
+ margin-right: 4px;
+}
+@media (min-width: 767px) {
+ .page-header-bleed-left {
+ margin-left: -20px;
+ }
+ .page-header-bleed-right {
+ margin-right: -20px;
+ }
+ .page-header-bleed-right .actions {
+ margin-right: 20px;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/css/patternfly.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/css/patternfly.min.css
new file mode 100644
index 0000000..2da94b0
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/css/patternfly.min.css
@@ -0,0 +1,10 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot);src:url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff) format('woff'),url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../../components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.66666667;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#0099d3;text-decoration:none}a:hover,a:focus{color:#00618a;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:1px}.img-thumbnail{padding:4px;line-height:1.66666667;background-color:#fff;border:1px solid #ddd;border-radius:1px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;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}[role=button]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:24px}h2,.h2{font-size:22px}h3,.h3{font-size:16px}h4,.h4{font-size:15px}h5,.h5{font-size:13px}h6,.h6{font-size:11px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:13px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:18px}}small,.small{font-size:91%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999}.text-primary{color:#00a8e1}a.text-primary:hover{color:#0082ae}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#ec7a08}a.text-warning:hover{color:#bb6106}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#00a8e1}a.bg-primary:hover{background-color:#0082ae}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.66666667}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:15px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.66666667;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.66666667}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:1px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:1px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:11px;line-height:1.66666667;word-break:break-all;word-wrap:break-word;color:#333;background-color:#fcfcfc;border:1px solid #ccc;border-radius:1px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:20px;padding-right:20px}@media (min-width:768px){.container{width:760px}}@media (min-width:992px){.container{width:980px}}@media (min-width:1200px){.container{width:1180px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:20px;padding-right:20px}.row{margin-left:-20px;margin-right:-20px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:20px;padding-right:20px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:10px;padding-bottom:10px;color:#999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:10px;line-height:1.66666667;vertical-align:top;border-top:1px solid #d1d1d1}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #d1d1d1}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #d1d1d1}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #d1d1d1}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #d1d1d1}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f5f5f5}.table-hover>tbody>tr:hover{background-color:#d5ecf9}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#d5ecf9}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#bfe2f6}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #d1d1d1}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:18px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:3px;font-size:12px;line-height:1.66666667;color:#333}.form-control{display:block;width:100%;height:26px;padding:2px 6px;font-size:12px;line-height:1.66666667;color:#333;background-color:#fff;background-image:none;border:1px solid #bababa;border-radius:1px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control:-moz-placeholder{color:#999;font-style:italic}.form-control::-moz-placeholder{color:#999;font-style:italic}.form-control:-ms-input-placeholder{color:#999;font-style:italic}.form-control::-webkit-input-placeholder{color:#999;font-style:italic}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#f8f8f8;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:26px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month]{line-height:22px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month]{line-height:33px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:3px;padding-bottom:3px;margin-bottom:0;min-height:32px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:22px;padding:2px 6px;font-size:11px;line-height:1.5;border-radius:1px}select.input-sm{height:22px;line-height:22px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:22px;padding:2px 6px;font-size:11px;line-height:1.5;border-radius:1px}select.form-group-sm .form-control{height:22px;line-height:22px}textarea.form-group-sm .form-control,select[multiple].form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:22px;padding:2px 6px;font-size:11px;line-height:1.5;min-height:31px}.input-lg{height:33px;padding:6px 10px;font-size:14px;line-height:1.3333333;border-radius:1px}select.input-lg{height:33px;line-height:33px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:33px;padding:6px 10px;font-size:14px;line-height:1.3333333;border-radius:1px}select.form-group-lg .form-control{height:33px;line-height:33px}textarea.form-group-lg .form-control,select[multiple].form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:33px;padding:6px 10px;font-size:14px;line-height:1.3333333;min-height:34px}.has-feedback{position:relative}.has-feedback .form-control{padding-right:32.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:26px;height:26px;line-height:26px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:33px;height:33px;line-height:33px}.input-sm+.form-control-feedback{width:22px;height:22px;line-height:22px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ec7a08}.has-warning .form-control{border-color:#ec7a08;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60}.has-warning .input-group-addon{color:#ec7a08;border-color:#ec7a08;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#ec7a08}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:3px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:23px}.form-horizontal .form-group{margin-left:-20px;margin-right:-20px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:3px}}.form-horizontal .has-feedback .form-control-feedback{right:20px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:8.999999800000001px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:3px}}.btn{display:inline-block;margin-bottom:0;font-weight:600;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:2px 6px;font-size:12px;line-height:1.66666667;border-radius:1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#4d5258;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#4d5258;background-color:#eee;border-color:#b7b7b7}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#4d5258;background-color:#d5d5d5;border-color:#989898}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#eee;border-color:#b7b7b7}.btn-default .badge{color:#eee;background-color:#4d5258}.btn-primary{color:#fff;background-color:#0085cf;border-color:#006e9c}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#00649c;border-color:#00435f}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#0085cf;border-color:#006e9c}.btn-primary .badge{color:#0085cf;background-color:#fff}.btn-success{color:#fff;background-color:#3f9c35;border-color:#37892f}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#307628;border-color:#255b1f}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#3f9c35;border-color:#37892f}.btn-success .badge{color:#3f9c35;background-color:#fff}.btn-info{color:#fff;background-color:#006e9c;border-color:#005c83}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#004a69;border-color:#003145}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#006e9c;border-color:#005c83}.btn-info .badge{color:#006e9c;background-color:#fff}.btn-warning{color:#fff;background-color:#ec7a08;border-color:#d36d07}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#bb6106;border-color:#984f05}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#ec7a08;border-color:#d36d07}.btn-warning .badge{color:#ec7a08;background-color:#fff}.btn-danger{color:#fff;background-color:#a30000;border-color:#781919}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#700000;border-color:#450e0e}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#a30000;border-color:#781919}.btn-danger .badge{color:#a30000;background-color:#fff}.btn-link{color:#0099d3;font-weight:400;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#00618a;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:6px 10px;font-size:14px;line-height:1.3333333;border-radius:1px}.btn-sm,.btn-group-sm>.btn{padding:2px 6px;font-size:11px;line-height:1.5;border-radius:1px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:1px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:0 dashed;border-right:0 solid transparent;border-left:0 solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;text-align:left;background-color:#fff;border:1px solid #b6b6b6;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{margin:9px 0;background-color:#e5e5e5;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.66666667;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#4d5258;background-color:#d4edfa}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#0099d3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.66666667;color:#999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:0 solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:1px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:33px;padding:6px 10px;font-size:14px;line-height:1.3333333;border-radius:1px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:33px;line-height:33px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:22px;padding:2px 6px;font-size:11px;line-height:1.5;border-radius:1px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:22px;line-height:22px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:2px 6px;font-size:12px;font-weight:400;line-height:1;color:#333;text-align:center;background-color:#eee;border:1px solid #bababa;border-radius:1px}.input-group-addon.input-sm{padding:2px 6px;font-size:11px;border-radius:1px}.input-group-addon.input-lg{padding:6px 10px;font-size:14px;border-radius:1px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#0099d3}.nav .nav-divider{margin:9px 0;background-color:#e5e5e5;height:1px;margin:4px 1px;overflow:hidden}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #e9e8e8}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.66666667;border:1px solid transparent;border-radius:1px 1px 0 0}.nav-tabs>li>a:hover{border-color:transparent transparent #e9e8e8}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#0099d3;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:1px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #e9e8e8}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #e9e8e8;border-radius:1px 1px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:1px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#00a8e1}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:1px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #e9e8e8}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #e9e8e8;border-radius:1px 1px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:1px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:20px;padding-left:20px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-20px;margin-left:-20px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 20px;font-size:14px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-20px}}.navbar-toggle{position:relative;float:right;margin-right:20px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:1px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -20px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-20px;margin-right:-20px;padding:10px 20px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:12px;margin-bottom:12px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.navbar-form .combobox-container{display:inline-block;margin-bottom:0;vertical-align:top}.navbar-form .combobox-container .input-group-addon{width:auto}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:1px;border-top-left-radius:1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:12px;margin-bottom:12px}.navbar-btn.btn-sm{margin-top:14px;margin-bottom:14px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:20px;margin-right:20px}}@media (min-width:768px){.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-20px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#bfbfbf}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#bfbfbf}.navbar-inverse .navbar-nav>li>a{color:#bfbfbf}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#bfbfbf}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#bfbfbf}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#bfbfbf}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:transparent;border-radius:1px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"\f105\00a0";padding:0 5px;color:#4d5258}.breadcrumb>.active{color:#4d5258}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:1px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:2px 6px;line-height:1.66666667;text-decoration:none;color:#0099d3;background-color:#f5f5f5;border:1px solid #bbb;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#00618a;background-color:#ededed;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#00a8e1;border-color:#00a8e1;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:6px 10px;font-size:14px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a,.pagination-sm>li>span{padding:2px 6px;font-size:11px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f5f5f5;border:1px solid #bbb;border-radius:0}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#ededed}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#969696;background-color:#f5f5f5;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#00a8e1}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#0082ae}.label-success{background-color:#3f9c35}.label-success[href]:hover,.label-success[href]:focus{background-color:#307628}.label-info{background-color:#006e9c}.label-info[href]:hover,.label-info[href]:focus{background-color:#004a69}.label-warning{background-color:#ec7a08}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#bb6106}.label-danger{background-color:#c00}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#900}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:11px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:1px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#0099d3;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:18px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:1px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:54px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.66666667;background-color:#fff;border:1px solid #ddd;border-radius:1px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#0099d3}.thumbnail .caption{padding:9px;color:#333}.alert{padding:7px;margin-bottom:20px;border:1px solid transparent;border-radius:1px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:500}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:27px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#fff;border-color:#3f9c35;color:#333}.alert-success hr{border-top-color:#37892f}.alert-success .alert-link{color:#1a1a1a}.alert-info{background-color:#fff;border-color:#ccc;color:#333}.alert-info hr{border-top-color:#bfbfbf}.alert-info .alert-link{color:#1a1a1a}.alert-warning{background-color:#fff;border-color:#ec7a08;color:#333}.alert-warning hr{border-top-color:#d36d07}.alert-warning .alert-link{color:#1a1a1a}.alert-danger{background-color:#fff;border-color:#c00;color:#333}.alert-danger hr{border-top-color:#b30000}.alert-danger .alert-link{color:#1a1a1a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#ededed;border-radius:1px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:11px;line-height:20px;color:#fff;text-align:center;background-color:#00a8e1;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3f9c35}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.progress-bar-info{background-color:#006e9c}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.progress-bar-warning{background-color:#ec7a08}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.progress-bar-danger{background-color:#c00}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #f2f2f2}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#d4edfa}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#00a8e1;border-color:#00a8e1}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#aeeaff}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#ec7a08;background-color:#fcf8e3}a.list-group-item-warning{color:#ec7a08}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#ec7a08;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#ec7a08;border-color:#ec7a08}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:1px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:0;border-top-left-radius:0}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:14px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #cecdcd;border-bottom-right-radius:0;border-bottom-left-radius:0}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:0}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:0}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:0}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:0}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #d1d1d1}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:1px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #cecdcd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #cecdcd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#00a8e1}.panel-primary>.panel-heading{color:#fff;background-color:#00a8e1;border-color:#00a8e1}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#00a8e1}.panel-primary>.panel-heading .badge{color:#00a8e1;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#00a8e1}.panel-success{border-color:#3f9c35}.panel-success>.panel-heading{color:#fff;background-color:#3f9c35;border-color:#3f9c35}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3f9c35}.panel-success>.panel-heading .badge{color:#3f9c35;background-color:#fff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3f9c35}.panel-info{border-color:#006e9c}.panel-info>.panel-heading{color:#fff;background-color:#006e9c;border-color:#006e9c}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#006e9c}.panel-info>.panel-heading .badge{color:#006e9c;background-color:#fff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#006e9c}.panel-warning{border-color:#ec7a08}.panel-warning>.panel-heading{color:#fff;background-color:#ec7a08;border-color:#ec7a08}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ec7a08}.panel-warning>.panel-heading .badge{color:#ec7a08;background-color:#fff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ec7a08}.panel-danger{border-color:#c00}.panel-danger>.panel-heading{color:#fff;background-color:#c00;border-color:#c00}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#c00}.panel-danger>.panel-heading .badge{color:#c00;background-color:#fff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#c00}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:1px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:1px}.well-sm{padding:9px;border-radius:1px}.close{float:right;font-size:18px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:1px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.66666667px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.66666667}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:8px 0}.tooltip.right{margin-left:3px;padding:0 8px}.tooltip.bottom{margin-top:3px;padding:8px 0}.tooltip.left{margin-left:-3px;padding:0 8px}.tooltip-inner{max-width:220px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#434343;border-radius:1px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-8px;border-width:8px 8px 0;border-top-color:#434343}.tooltip.top-left .tooltip-arrow{bottom:0;right:8px;margin-bottom:-8px;border-width:8px 8px 0;border-top-color:#434343}.tooltip.top-right .tooltip-arrow{bottom:0;left:8px;margin-bottom:-8px;border-width:8px 8px 0;border-top-color:#434343}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-8px;border-width:8px 8px 8px 0;border-right-color:#434343}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-8px;border-width:8px 0 8px 8px;border-left-color:#434343}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-8px;border-width:0 8px 8px;border-bottom-color:#434343}.tooltip.bottom-left .tooltip-arrow{top:0;right:8px;margin-top:-8px;border-width:0 8px 8px;border-bottom-color:#434343}.tooltip.bottom-right .tooltip-arrow{top:0;left:8px;margin-top:-8px;border-width:0 8px 8px;border-bottom-color:#434343}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:220px;padding:1px;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.66666667;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid #bbb;border-radius:1px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:12px;background-color:#f5f5f5;border-bottom:1px solid #e8e8e8;border-radius:0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:#bbb;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:#bbb}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:#bbb;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:#bbb}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}/*!
+ * Font Awesome 4.3.0 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(../../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.3.0);src:url(../../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;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;transform:translate(0,0)}.fa-lg{font-size:1.3333333333333333em;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.2857142857142858em;text-align:center}.fa-ul{padding-left:0;margin-left:2.142857142857143em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;top:.14285714285714285em;text-align:center}.fa-li.fa-lg{left:-1.8571428571428572em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.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{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{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{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-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: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-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.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-genderless:before,.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-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-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"}.form-search .combobox-container,.form-inline .combobox-container{display:inline-block;margin-bottom:0;vertical-align:top}.form-search .combobox-container .input-group-addon,.form-inline .combobox-container .input-group-addon{width:auto}.combobox-selected .caret{display:none}.combobox-container:not(.combobox-selected) .glyphicon-remove{display:none}.typeahead-long{max-height:300px;overflow-y:auto}.control-group.error .combobox-container .add-on{color:#B94A48;border-color:#B94A48}.control-group.error .combobox-container .caret{border-top-color:#B94A48}.control-group.warning .combobox-container .add-on{color:#C09853;border-color:#C09853}.control-group.warning .combobox-container .caret{border-top-color:#C09853}.control-group.success .combobox-container .add-on{color:#468847;border-color:#468847}.control-group.success .combobox-container .caret{border-top-color:#468847}/*!
+ * bootstrap-select v1.5.4
+ * http://silviomoreto.github.io/bootstrap-select/
+ *
+ * Copyright 2013 bootstrap-select
+ * Licensed under the MIT license
+ */.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=span]{float:none;display:inline-block;margin-bottom:10px;margin-left:0}.form-search .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group{margin-bottom:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:0}.bootstrap-select.btn-group.pull-right,.bootstrap-select.btn-group[class*=span].pull-right,.row-fluid .bootstrap-select.btn-group[class*=span].pull-right{float:right}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select:not([class*=span]):not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select{width:220px\0}.bootstrap-select.form-control:not([class*=span]){width:100%}.bootstrap-select>.btn{width:100%;padding-right:25px}.error .bootstrap-select .btn{border:1px solid #b94a48}.bootstrap-select.show-menu-arrow.open>.btn{z-index:2051}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.btn-group .btn .filter-option{display:inline-block;overflow:hidden;width:100%;float:left;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group>.disabled,.bootstrap-select.btn-group .dropdown-menu li.disabled>a{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group[class*=span] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:2000;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu dt{display:block;padding:3px 20px;cursor:default}.bootstrap-select.btn-group .div-contain{overflow:hidden}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li>a.opt{position:relative;padding-left:35px}.bootstrap-select.btn-group .dropdown-menu li>a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark{position:absolute;display:inline-block;right:15px;margin-top:2.5px}.bootstrap-select.btn-group .dropdown-menu li a i.check-mark{display:none}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:hover small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:focus small,.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled)>a small{color:#64b1d8;color:rgba(255,255,255,.4)}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #CCC;border-bottom-color:rgba(0,0,0,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after{display:block}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select-searchbox,.bootstrap-select .bs-actionsbox{padding:4px 8px}.bootstrap-select .bs-actionsbox{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select-searchbox+.bs-actionsbox{padding:0 8px 4px}.bootstrap-select-searchbox input{margin-bottom:0}.bootstrap-select .bs-actionsbox .btn-group button{width:50%}.c3 svg{font:10px sans-serif}.c3 path,.c3 line{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid,.c3-event-rect,.c3-bars path{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:gray;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #CCC}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#FFF}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}.alert{border-width:2px;padding-left:34px;position:relative}.alert .alert-link{color:#0099d3}.alert .alert-link:hover{color:#00618a}.alert>.pficon,.alert>.pficon-layered{font-size:20px;position:absolute;left:7px;top:7px}.alert .pficon-info{color:#72767b}.alert-dismissable .close{right:-16px;top:1px}.badge{margin-left:6px}.nav-pills>li>a>.badge{margin-left:6px}.blank-slate-pf{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:1px;margin-bottom:20px;padding:30px;text-align:center}@media (min-width:768px){.blank-slate-pf{padding:60px}}@media (min-width:992px){.blank-slate-pf{padding:90px 120px}}.blank-slate-pf .blank-slate-pf-icon{color:#999;font-size:57.599999999999994px;line-height:57.599999999999994px}.blank-slate-pf .blank-slate-pf-main-action{margin-top:20px}.blank-slate-pf .blank-slate-pf-secondary-action{margin-top:20px}.combobox-container.combobox-selected .glyphicon-remove{display:inline-block}.combobox-container .caret{margin-left:0}.combobox-container .combobox::-ms-clear{display:none}.combobox-container .dropdown-menu{margin-top:-1px;width:100%}.combobox-container .glyphicon-remove{display:none;top:auto;width:12px}.combobox-container .glyphicon-remove:before{content:"\e60b";font-family:PatternFlyIcons-webfont}.combobox-container .input-group-addon{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#b7b7b7;color:#4d5258;position:relative}.combobox-container .input-group-addon:hover,.combobox-container .input-group-addon:focus,.combobox-container .input-group-addon:active,.combobox-container .input-group-addon.active,.open .dropdown-toggle.combobox-container .input-group-addon{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.combobox-container .input-group-addon:active,.combobox-container .input-group-addon.active,.open .dropdown-toggle.combobox-container .input-group-addon{background-image:none}.combobox-container .input-group-addon.disabled,.combobox-container .input-group-addon[disabled],fieldset[disabled] .combobox-container .input-group-addon,.combobox-container .input-group-addon.disabled:hover,.combobox-container .input-group-addon[disabled]:hover,fieldset[disabled] .combobox-container .input-group-addon:hover,.combobox-container .input-group-addon.disabled:focus,.combobox-container .input-group-addon[disabled]:focus,fieldset[disabled] .combobox-container .input-group-addon:focus,.combobox-container .input-group-addon.disabled:active,.combobox-container .input-group-addon[disabled]:active,fieldset[disabled] .combobox-container .input-group-addon:active,.combobox-container .input-group-addon.disabled.active,.combobox-container .input-group-addon[disabled].active,fieldset[disabled] .combobox-container .input-group-addon.active{background-color:#eee;border-color:#b7b7b7}.combobox-container .input-group-addon:active{-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}.bootstrap-select.btn-group.form-control{margin-bottom:0}.bootstrap-select.btn-group .btn{-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-select.btn-group .btn:hover{border-color:#7bb2dd}.bootstrap-select.btn-group .btn .caret{margin-top:-4px}.bootstrap-select.btn-group .btn:focus{border-color:#66afe9;outline:0!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.has-error .bootstrap-select.btn-group .btn{border-color:#a94442}.has-error .bootstrap-select.btn-group .btn:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-success .bootstrap-select.btn-group .btn{border-color:#3c763d}.has-success .bootstrap-select.btn-group .btn:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-warning .bootstrap-select.btn-group .btn{border-color:#ec7a08}.has-warning .bootstrap-select.btn-group .btn:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60}.bootstrap-select.btn-group .dropdown-menu>.active>a,.bootstrap-select.btn-group .dropdown-menu>.active>a:active{background-color:#d4edfa!important;border-color:#b3d3e7!important;color:#333!important}.bootstrap-select.btn-group .dropdown-menu>.active>a small,.bootstrap-select.btn-group .dropdown-menu>.active>a:active small{color:#999!important}.bootstrap-select.btn-group .dropdown-menu>.disabled>a{color:#999!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a{background-color:#0099d3!important;border-color:#0076b7!important;color:#fff!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu .divider{background:#e5e5e5!important;margin:4px 1px!important}.bootstrap-select.btn-group .dropdown-menu dt{color:#969696;font-weight:400;padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li>a.opt{padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li a:active small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu li a:hover small,.bootstrap-select.btn-group .dropdown-menu li a:focus small{color:#999}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small{color:#999}.treeview .list-group{border-top:0}.treeview .list-group-item{background:0 0;border-bottom:1px solid transparent!important;border-top:1px solid transparent!important;margin-bottom:0;padding:0 10px}.treeview .list-group-item:hover{background:#d4edfa!important;border-color:#b3d3e7!important}.treeview .list-group-item.node-selected{background:#0099d3!important;border-color:#0076b7!important;color:#fff!important}.treeview span.icon{display:inline-block;font-size:13px;min-width:10px;text-align:center}.treeview span.icon>[class*=fa-angle]{font-size:15px}.treeview span.indent{margin-right:5px}.breadcrumb{padding-left:0}.breadcrumb>.active strong{font-weight:600}.breadcrumb>li{display:inline}.breadcrumb>li+li:before{color:#999;content:"\f101";font-family:FontAwesome;font-size:11px;padding:0 9px 0 7px}.btn{-webkit-box-shadow:0 2px 3px rgba(0,0,0,.1);box-shadow:0 2px 3px rgba(0,0,0,.1)}.btn:active{-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#f8f8f8!important;background-image:none!important;border-color:#d1d1d1!important;color:#969696!important;opacity:1}.btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none}.btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0}.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0,#a30000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#781919;color:#fff}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#781919;color:#fff}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#a30000;border-color:#781919}.btn-default{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#b7b7b7;color:#4d5258}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#eee;border-color:#b7b7b7}.btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none}.btn-primary{background-color:#0085cf;background-image:-webkit-linear-gradient(top,#00a8e1 0,#0085cf 100%);background-image:-o-linear-gradient(top,#00a8e1 0,#0085cf 100%);background-image:linear-gradient(to bottom,#00a8e1 0,#0085cf 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00a8e1', endColorstr='#ff0085cf', GradientType=0);border-color:#006e9c;color:#fff}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-color:#0085cf;background-image:none;border-color:#006e9c;color:#fff}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#0085cf;border-color:#006e9c}.btn-xs,.btn-group-xs .btn,.btn-group-xs>.btn{font-weight:400}.c3 path{stroke:#d1d1d1}.c3 svg{font-family:"Open Sans",Helvetica,Arial,sans-serif}.c3-axis-x .tick line{stroke:#d1d1d1}.c3-axis-y .tick line{display:none}.c3-chart-arc path{stroke:#fff}.c3-grid line{stroke:#d1d1d1}.c3-line{stroke-width:2px}.c3-tooltip{background:#434343;-webkit-box-shadow:none;box-shadow:none;opacity:.9;filter:alpha(opacity=90)}.c3-tooltip td{background:0 0;border:0;color:#fff;font-size:12px;padding:5px 10px}.c3-tooltip th{background:0 0;font-size:12px;padding:5px 10px 0}.c3-tooltip tr{border:0}.c3-tooltip tr+tr>td{padding-top:0}.c3-tooltip-sparkline{background:#434343;color:#fff;opacity:.9;filter:alpha(opacity=90);padding:2px 6px}.c3-xgrid,.c3-ygrid{stroke-dasharray:0 0}.close{text-shadow:none;opacity:.6;filter:alpha(opacity=60)}.close:hover,.close:focus{opacity:.9;filter:alpha(opacity=90)}.ColVis_Button:active:focus{outline:0}.ColVis_catcher{position:absolute;z-index:999}.ColVis_collection{background-color:#fff;border:1px solid #b6b6b6;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box;list-style:none;margin:-1px 0 0 0;padding:5px 10px;width:150px;z-index:1000}.ColVis_collection label{font-weight:400;margin-bottom:5px;margin-top:5px;padding-left:20px}.ColVis_collectionBackground{background-color:#fff;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}.dataTables_header{background-color:#f6f6f6;border:1px solid #d1d1d1;border-bottom:0;padding:5px;position:relative;text-align:center}.dataTables_header .btn{-webkit-box-shadow:none;box-shadow:none}.dataTables_header .ColVis{position:absolute;right:5px;text-align:left;top:5px}.dataTables_header .ColVis+.dataTables_info{padding-right:30px}.dataTables_header .dataTables_filter{position:absolute}.dataTables_header .dataTables_filter input{border:1px solid #bbb;height:24px}@media (max-width:767px){.dataTables_header .dataTables_filter input{width:100px}}.dataTables_header .dataTables_info{padding:2px 0}@media (max-width:480px){.dataTables_header .dataTables_info{text-align:right}}.dataTables_header .dataTables_info b{font-weight:700}.dataTables_footer{background-color:#fff;border:1px solid #d1d1d1;border-top:0;overflow:hidden}.dataTables_paginate{background:#fafafa;float:right;margin:0}.dataTables_paginate .pagination{float:left;margin:0}.dataTables_paginate .pagination>li>span{border-color:#fff #e1e1e1 #f4f4f4;border-width:0 1px;font-size:16px;font-weight:400;padding:0;text-align:center;width:31px}.dataTables_paginate .pagination>li>span:hover,.dataTables_paginate .pagination>li>span:focus{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination>li.last>span{border-right:0}.dataTables_paginate .pagination>li.disabled>span{background:#f5f5f5;border-left-color:#ececec;border-right-color:#ececec;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination-input{float:left;font-size:12px;line-height:1em;padding:4px 15px 0;text-align:right}.dataTables_paginate .pagination-input .paginate_input{border:1px solid #d3d3d3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);font-size:12px;font-weight:600;height:19px;margin-right:8px;padding-right:3px;text-align:right;width:30px}.dataTables_paginate .pagination-input .paginate_of{position:relative}.dataTables_paginate .pagination-input .paginate_of b{margin-left:3px}.dataTables_wrapper{margin:20px 0}@media (max-width:767px){.dataTables_wrapper .table-responsive{margin-bottom:0}}.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}.DTCR_pointer{background-color:#0099d3;width:1px;z-index:201}table.datatable{margin-bottom:0;max-width:none!important}table.datatable thead .sorting,table.datatable thead .sorting_asc,table.datatable thead .sorting_desc,table.datatable thead .sorting_asc_disabled,table.datatable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand}table.datatable thead .sorting_asc,table.datatable thead .sorting_desc{border:0;color:#0099d3!important;display:block;position:relative}table.datatable thead .sorting_asc:after,table.datatable thead .sorting_desc:after{content:"\f107";font-family:FontAwesome;font-size:10px;font-weight:400;height:9px;left:7px;line-height:12px;position:relative;top:2px;vertical-align:baseline;width:12px}table.datatable thead .sorting_asc:before,table.datatable thead .sorting_desc:before{background:#0099d3;content:'';height:2px;position:absolute;left:0;top:0;width:100%}table.datatable thead .sorting_asc:after{content:"\f106";top:-3px}table.datatable th:active{outline:0}.caret{font-family:FontAwesome;font-weight:400;height:9px;position:relative;vertical-align:baseline;width:12px}.caret:before{bottom:0;content:"\f107";left:0;line-height:12px;position:absolute;text-align:center;top:-1px;right:0}.dropdown-menu .divider{background-color:#e5e5e5;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{border-color:transparent;border-style:solid;border-width:1px 0;padding:1px 10px}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{border-color:#b3d3e7;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>li>a:active{background-color:#0099d3;border-color:#0076b7;color:#fff!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#0099d3!important;border-color:#0076b7!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{border-color:transparent}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{border-color:transparent}.dropdown-header{padding-left:10px;padding-right:10px;text-transform:uppercase}.btn-group>.dropdown-menu,.input-group-btn>.dropdown-menu{margin-top:-1px}.dropup .dropdown-menu{margin-bottom:-1px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a{background-color:#d4edfa;border-color:#b3d3e7}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:auto;margin-left:10px;right:100%}.dropdown-submenu>a{padding-right:20px!important}.dropdown-submenu>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:2px}.dropdown-submenu>.dropdown-menu{left:100%;margin-top:0;top:-6px}.dropup .dropdown-submenu>.dropdown-menu{bottom:-5px;top:auto}.open .dropdown-submenu.active>.dropdown-menu{display:block}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:url(../fonts/OpenSans-Light-webfont.eot);src:url(../fonts/OpenSans-Light-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-Light-webfont.woff) format('woff'),url(../fonts/OpenSans-Light-webfont.ttf) format('truetype'),url(../fonts/OpenSans-Light-webfont.svg#OpenSansLight) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:url(../fonts/OpenSans-Regular-webfont.eot);src:url(../fonts/OpenSans-Regular-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-Regular-webfont.woff) format('woff'),url(../fonts/OpenSans-Regular-webfont.ttf) format('truetype'),url(../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:url(../fonts/OpenSans-Semibold-webfont.eot);src:url(../fonts/OpenSans-Semibold-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-Semibold-webfont.woff) format('woff'),url(../fonts/OpenSans-Semibold-webfont.ttf) format('truetype'),url(../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:url(../fonts/OpenSans-Bold-webfont.eot);src:url(../fonts/OpenSans-Bold-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-Bold-webfont.woff) format('woff'),url(../fonts/OpenSans-Bold-webfont.ttf) format('truetype'),url(../fonts/OpenSans-Bold-webfont.svg#OpenSansBold) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:url(../fonts/OpenSans-ExtraBold-webfont.eot);src:url(../fonts/OpenSans-ExtraBold-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/OpenSans-ExtraBold-webfont.woff) format('woff'),url(../fonts/OpenSans-ExtraBold-webfont.ttf) format('truetype'),url(../fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold) format('svg')}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{border-color:#d4d4d4!important;-webkit-box-shadow:none;box-shadow:none;color:#969696}.form-control:hover{border-color:#7bb2dd}.has-error .form-control:hover{border-color:#843534}.has-success .form-control:hover{border-color:#2b542c}.has-warning .form-control:hover{border-color:#bb6106}.input-group .input-group-btn .btn{-webkit-box-shadow:none;box-shadow:none}label{font-weight:600}@font-face{font-family:PatternFlyIcons-webfont;src:url(../fonts/PatternFlyIcons-webfont.eot);src:url(../fonts/PatternFlyIcons-webfont.eot?#iefix) format('embedded-opentype'),url(../fonts/PatternFlyIcons-webfont.ttf) format('truetype'),url(../fonts/PatternFlyIcons-webfont.woff) format('woff'),url(../fonts/PatternFlyIcons-webfont.svg#PatternFlyIcons-webfont) format('svg');font-weight:400;font-style:normal}[class*="-exclamation"]{color:#fff}[class^=pficon-],[class*=" pficon-"]{display:inline-block;font-family:PatternFlyIcons-webfont;font-style:normal;font-variant:normal;font-weight:400;line-height:1;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pficon-layered{position:relative}.pficon-layered .pficon:first-child{position:absolute;z-index:1}.pficon-layered .pficon:first-child+.pficon{position:relative;z-index:2}.pficon-warning-exclamation:before{content:"\e60d"}.pficon-screen:before{content:"\e600"}.pficon-save:before{content:"\e601"}.pficon-ok:before{color:#3f9c35;content:"\e602"}.pficon-messages:before,.pficon-flag:before{content:"\e603"}.pficon-info:before{content:"\e604"}.pficon-help:before{content:"\e605"}.pficon-folder-open:before{content:"\e606"}.pficon-folder-close:before{content:"\e607"}.pficon-error-exclamation:before{content:"\e608"}.pficon-error-octagon:before{color:#c00;content:"\e609"}.pficon-edit:before{content:"\e60a"}.pficon-close:before{content:"\e60b"}.pficon-warning-triangle:before{color:#ec7a08;content:"\e60c"}.pficon-user:before{content:"\e60e"}.pficon-users:before{content:"\e60f"}.pficon-add:before{content:"\e61a"}.pficon-add-circle-o:before{content:"\e61b"}.pficon-warning-triangle-o:before{color:#ec7a08;content:"\e61c"}.pficon-error-circle-o:before{color:#c00;content:"\e61d"}.pficon-service:before{content:"\e61e"}.pficon-image:before{content:"\e61f"}.pficon-settings:before{content:"\e610"}.pficon-delete:before{content:"\e611"}.pficon-print:before{content:"\e612"}.pficon-refresh:before,.pficon-restart:before{content:"\e613"}.pficon-running:before{content:"\e614"}.pficon-import:before{content:"\e615"}.pficon-export:before{content:"\e616"}.pficon-history:before{content:"\e617"}.pficon-home:before{content:"\e618"}.pficon-remove:before{content:"\e619"}.pficon-cluster:before{content:"\e620"}.pficon-container-node:before{content:"\e621"}.navbar-nav>li>.dropdown-menu.infotip{border-top-width:1px!important;margin-top:10px}@media (max-width:767px){.navbar-pf .navbar-nav .open .dropdown-menu.infotip{background-color:#fff!important;margin-top:0}}.infotip{min-width:235px;padding:0}.infotip .list-group{border-top:0;margin:0;padding:8px 0}.infotip .list-group .list-group-item{border:0;margin:0 15px 0 34px;padding:5px 0}.infotip .list-group .list-group-item>.i{color:#4d5258;font-size:13px;left:-20px;position:absolute;top:8px}.infotip .list-group .list-group-item>a{color:#4d5258;line-height:13px}.infotip .list-group .list-group-item>.close{float:right}.infotip .footer{background-color:#f5f5f5;padding:6px 15px}.infotip .footer a:hover{color:#0099d3}.infotip .arrow,.infotip .arrow:after{border-color:transparent;border-style:solid;display:block;height:0;position:absolute;width:0}.infotip .arrow{border-width:11px}.infotip .arrow:after{border-width:10px;content:""}.infotip.bottom .arrow,.infotip.bottom-left .arrow,.infotip.bottom-right .arrow{border-bottom-color:#999;border-bottom-color:#bbb;border-top-width:0;left:50%;margin-left:-11px;top:-11px}.infotip.bottom .arrow:after,.infotip.bottom-left .arrow:after,.infotip.bottom-right .arrow:after{border-top-width:0;border-bottom-color:#fff;content:" ";margin-left:-10px;top:1px}.infotip.bottom-left .arrow{left:20%}.infotip.bottom-right .arrow{left:80%}.infotip.top .arrow{border-bottom-width:0;border-top-color:#999;border-top-color:#bbb;bottom:-11px;left:50%;margin-left:-11px}.infotip.top .arrow:after{border-bottom-width:0;border-top-color:#f5f5f5;bottom:1px;content:" ";margin-left:-10px}.infotip.right .arrow{border-left-width:0;border-right-color:#999;border-right-color:#bbb;left:-11px;margin-top:-11px;top:50%}.infotip.right .arrow:after{bottom:-10px;border-left-width:0;border-right-color:#fff;content:" ";left:1px}.infotip.left .arrow{border-left-color:#999;border-left-color:#bbb;border-right-width:0;margin-top:-11px;right:-11px;top:50%}.infotip.left .arrow:after{border-left-color:#fff;border-right-width:0;bottom:-10px;content:" ";right:1px}.label{border-radius:0;font-size:100%;font-weight:600}h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%}.list-group{border-top:1px solid #e9e8e8}.list-group .list-group-item:first-child{border-top:0}.list-group-item{border-left:0;border-right:0}.list-group-item-heading{font-weight:700}.login-pf{height:100%}.login-pf #brand{position:relative;top:-70px}.login-pf #brand img{display:block;height:18px;margin:0 auto;max-width:100%}@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}}.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}}.login-pf body{background:#080808 url(../img/bg-login.jpg) repeat-x 50% 0;background-size:auto}@media (min-width:768px){.login-pf body{background-size:100% auto}}.login-pf .container{background-color:#181818;background-color:rgba(255,255,255,.055);clear:right;color:#fff;padding-bottom:40px;padding-top:20px;width:auto}@media (min-width:768px){.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}}.login-pf .container [class^=alert]{background:0 0;color:#fff}.login-pf .container .details p:first-child{border-top:1px solid #474747;padding-top:25px;margin-top:25px}@media (min-width:768px){.login-pf .container .details{border-left:1px solid #474747;padding-left:40px}.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}}.login-pf .container .details p{margin-bottom:2px}.login-pf .container .form-horizontal .control-label{font-size:13px;font-weight:400;text-align:left}.login-pf .container .form-horizontal .form-group:last-child,.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child{margin-bottom:0}.login-pf .container .help-block{color:#fff}@media (min-width:768px){.login-pf .container .login{padding-right:40px}}.login-pf .container .submit{text-align:right}.ie8.login-pf #badge{background:url(../img/logo.png) no-repeat;height:69px;width:73px}.ie8.login-pf #badge img{width:0}.ie8.login-pf #brand{background:url(../img/brand-lg.png) no-repeat center;background-size:cover auto}@media (min-width:768px){.ie8.login-pf #brand{background-position:0 0}}.ie8.login-pf #brand img{width:0}.modal-header{background-color:#f8f8f8;border-bottom:0;padding:10px 18px}.modal-header .close{margin-top:2px}.modal-title{font-size:13px;font-weight:700}.modal-footer{border-top:0;margin-top:15px;padding:14px 15px 15px}.modal-footer>.btn{padding-left:10px;padding-right:10px}.modal-footer>.btn>.fa-angle-left{margin-right:5px}.modal-footer>.btn>.fa-angle-right{margin-left:5px}.navbar-pf{background:#030303;border:0;border-radius:0;border-top:3px solid #199dde;margin-bottom:0;min-height:0}.navbar-pf .navbar-brand{color:#f1f1f1;height:auto;padding:12px 0;margin:0 0 0 20px}.ie8 .navbar-pf .navbar-brand{background:url(../img/brand.png) no-repeat 0 49%;min-width:270px}.navbar-pf .navbar-brand img{display:block}.ie8 .navbar-pf .navbar-brand img{height:10px;width:0}.navbar-pf .navbar-collapse{border-top:0;-webkit-box-shadow:none;box-shadow:none;padding:0}.navbar-pf .navbar-header{border-bottom:1px solid #292929;float:none}.navbar-pf .navbar-nav{margin:0}.navbar-pf .navbar-nav>.active>a,.navbar-pf .navbar-nav>.active>a:hover,.navbar-pf .navbar-nav>.active>a:focus{background-color:#232323;color:#f1f1f1}.navbar-pf .navbar-nav>li>a{color:#cfcfcf;line-height:1;padding:10px 20px;text-shadow:none}.navbar-pf .navbar-nav>li>a:hover,.navbar-pf .navbar-nav>li>a:focus{color:#f1f1f1}.navbar-pf .navbar-nav>.open>a,.navbar-pf .navbar-nav>.open>a:hover,.navbar-pf .navbar-nav>.open>a:focus{background-color:#232323;color:#f1f1f1}@media (max-width:767px){.navbar-pf .navbar-nav .active .navbar-persistent,.navbar-pf .navbar-nav .active .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu{background-color:#171717!important;margin-left:0;padding-bottom:0;padding-top:0}.navbar-pf .navbar-nav .active .navbar-persistent>.active>a,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:focus{background-color:#1f1f1f!important;color:#f1f1f1}.navbar-pf .navbar-nav .active .navbar-persistent>li>a,.navbar-pf .navbar-nav .active .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu>li>a{background-color:transparent;border:0;color:#cfcfcf;outline:0;padding-left:30px}.navbar-pf .navbar-nav .active .navbar-persistent>li>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>li>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>li>a:hover{color:#f1f1f1}.navbar-pf .navbar-nav .active .navbar-persistent .divider,.navbar-pf .navbar-nav .active .dropdown-menu .divider,.navbar-pf .navbar-nav .open .dropdown-menu .divider{background-color:#292929;margin:0 1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header{padding-bottom:0;padding-left:30px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle{color:#f1f1f1}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left{float:none!important}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu>a:after,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu>a:after{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header{padding-left:45px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu{border:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;display:block;float:none;margin:0;min-width:0;padding:0;position:relative;left:auto;right:auto;top:auto}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu>li>a{padding:5px 15px 5px 45px;line-height:20px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a{padding-left:60px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu{display:block}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after{display:inline-block!important;position:relative;right:auto;top:1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu>a:after{display:none!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu{background-color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active{background-color:#d4edfa!important;border-color:#b3d3e7!important;color:#333!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active small{color:#999!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.disabled>a{color:#999!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active{background-color:#0099d3!important;border-color:#0076b7!important;color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li>a.opt{border-bottom:1px solid transparent;border-top:1px solid transparent;color:#333;padding-left:10px;padding-right:10px}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:active small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:hover small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:focus small{color:#999}.navbar-pf .navbar-nav .context-bootstrap-select>.open>.dropdown-menu{padding-bottom:5px;padding-top:5px}}.navbar-pf .navbar-persistent{display:none}.navbar-pf .active>.navbar-persistent{display:block}.navbar-pf .navbar-primary{float:none}.navbar-pf .navbar-primary .context{border-bottom:1px solid #292929}.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*=span]{margin:8px 20px 9px;width:auto}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a{position:relative}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{content:"\f107";display:inline-block;font-family:FontAwesome;font-weight:400}@media (max-width:767px){.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{height:10px;margin-left:4px;vertical-align:baseline}}.navbar-pf .navbar-toggle{border:0;margin:0;padding:10px 20px}.navbar-pf .navbar-toggle:hover,.navbar-pf .navbar-toggle:focus{background-color:transparent;outline:0}.navbar-pf .navbar-toggle:hover .icon-bar,.navbar-pf .navbar-toggle:focus .icon-bar{-webkit-box-shadow:0 0 3px #fff;box-shadow:0 0 3px #fff}.navbar-pf .navbar-toggle .icon-bar{background-color:#fff}.navbar-pf .navbar-utility{border-bottom:1px solid #292929}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:36px;position:relative}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:20px;position:absolute;top:10px}@media (max-width:767px){.navbar-pf .navbar-utility>li+li{border-top:1px solid #292929}}@media (min-width:768px){.navbar-pf .navbar-brand{padding:8px 0 7px}.navbar-pf .navbar-nav>li>a{padding-bottom:14px;padding-top:14px}.navbar-pf .navbar-persistent{font-size:14px}.navbar-pf .navbar-primary{font-size:14px;background-image:-webkit-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:-o-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:linear-gradient(to bottom,#1d1d1d 0,#030303 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1d1d1d', endColorstr='#ff030303', GradientType=0)}.navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu{top:auto}.navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu{bottom:-5px;top:auto}.navbar-pf .navbar-primary.persistent-secondary>li{position:static}.navbar-pf .navbar-primary.persistent-secondary>li.active{margin-bottom:32px}.navbar-pf .navbar-primary.persistent-secondary>li.active>.navbar-persistent{display:block;left:0;position:absolute}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent{background:#f6f6f6;border-bottom:1px solid #cecdcd;padding:0;width:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent a{text-decoration:none!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover:before{background:#0099d3;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a:hover,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover>a{color:#0099d3!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active .active>a{color:#f1f1f1}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu:hover>.dropdown-menu{display:none}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-menu{display:block;left:20px;margin-top:1px;top:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle{color:#222}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle:after{border-top-color:#222}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle{padding-right:35px!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle:after{position:absolute;right:20px;top:10px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open:before{background:#aaa;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a{color:#222}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a:after{border-top-color:#222}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a{background-color:transparent;display:block;line-height:1;padding:9px 20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle{padding-right:35px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle:after{font-size:15px;position:absolute;right:20px;top:9px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a:hover{color:#222}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li a{color:#4d5258}.navbar-pf .navbar-primary>li>a{border-bottom:1px solid transparent;border-top:1px solid transparent;position:relative;margin:-1px 0 0}.navbar-pf .navbar-primary>li>a:hover{background-color:#1d1d1d;border-top-color:#5c5c5c;color:#cfcfcf;background-image:-webkit-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:-o-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:linear-gradient(to bottom,#363636 0,#1d1d1d 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff363636', endColorstr='#ff1d1d1d', GradientType=0)}.navbar-pf .navbar-primary>.active>a,.navbar-pf .navbar-primary>.active>a:hover,.navbar-pf .navbar-primary>.active>a:focus,.navbar-pf .navbar-primary>.open>a,.navbar-pf .navbar-primary>.open>a:hover,.navbar-pf .navbar-primary>.open>a:focus{background-color:#303030;border-bottom-color:#303030;border-top-color:#696969;-webkit-box-shadow:none;box-shadow:none;color:#f1f1f1;background-image:-webkit-linear-gradient(top,#434343 0,#303030 100%);background-image:-o-linear-gradient(top,#434343 0,#303030 100%);background-image:linear-gradient(to bottom,#434343 0,#303030 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434343', endColorstr='#ff303030', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:160px;text-overflow:ellipsis}.ie8 .navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:none}.navbar-pf .navbar-primary li.context.dropdown{border-bottom:0}.navbar-pf .navbar-primary li.context>a,.navbar-pf .navbar-primary li.context.context-bootstrap-select{background-color:#1f1f1f;border-bottom-color:#3e3e3e;border-right:1px solid #3e3e3e;border-top-color:#3b3b3b;font-weight:600;background-image:-webkit-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:-o-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:linear-gradient(to bottom,#323232 0,#1f1f1f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff323232', endColorstr='#ff1f1f1f', GradientType=0)}.navbar-pf .navbar-primary li.context>a:hover,.navbar-pf .navbar-primary li.context.context-bootstrap-select:hover{background-color:#323232;border-bottom-color:#4a4a4a;border-right-color:#4a4a4a;border-top-color:#4a4a4a;background-image:-webkit-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:-o-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:linear-gradient(to bottom,#3f3f3f 0,#323232 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3f3f3f', endColorstr='#ff323232', GradientType=0)}.navbar-pf .navbar-primary li.context.open>a{background-color:#454545;border-bottom-color:#575757;border-right-color:#575757;border-top-color:#5a5a5a;background-image:-webkit-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:-o-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:linear-gradient(to bottom,#4c4c4c 0,#454545 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4c4c4c', endColorstr='#ff454545', GradientType=0)}.navbar-pf .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}.navbar-pf .navbar-utility>.active>a,.navbar-pf .navbar-utility>.active>a:hover,.navbar-pf .navbar-utility>.active>a:focus,.navbar-pf .navbar-utility>.open>a,.navbar-pf .navbar-utility>.open>a:hover,.navbar-pf .navbar-utility>.open>a:focus{background:#363636;color:#cfcfcf}.navbar-pf .navbar-utility>li>a{border-left:1px solid #2b2b2b;color:#cfcfcf!important;padding:7px 10px}.navbar-pf .navbar-utility>li>a:hover{background:#232323;border-left-color:#373737}.navbar-pf .navbar-utility>li.open>a{border-left-color:#444;color:#f1f1f1!important}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:26px}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:10px;top:7px}.navbar-pf .navbar-utility .open .dropdown-menu{left:auto;right:0}.navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu{left:auto;right:100%}.navbar-pf .open .dropdown-menu{border-top-width:0!important}.navbar-pf .open.bootstrap-select .dropdown-menu,.navbar-pf .open .dropdown-submenu>.dropdown-menu{border-top-width:1px!important}}@media (max-width:360px){.navbar-pf .navbar-brand{margin-left:10px;width:75%}.navbar-pf .navbar-brand img{height:auto;max-width:100%}.navbar-pf .navbar-toggle{padding-left:0}}.pager li>a,.pager li>span{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#b7b7b7;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px}.pager li>a:hover,.pager li>span:hover,.pager li>a:focus,.pager li>span:focus,.pager li>a:active,.pager li>span:active,.pager li>a.active,.pager li>span.active,.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.pager li>a:active,.pager li>span:active,.pager li>a.active,.pager li>span.active,.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span{background-image:none}.pager li>a.disabled,.pager li>span.disabled,.pager li>a[disabled],.pager li>span[disabled],fieldset[disabled] .pager li>a,fieldset[disabled] .pager li>span,.pager li>a.disabled:hover,.pager li>span.disabled:hover,.pager li>a[disabled]:hover,.pager li>span[disabled]:hover,fieldset[disabled] .pager li>a:hover,fieldset[disabled] .pager li>span:hover,.pager li>a.disabled:focus,.pager li>span.disabled:focus,.pager li>a[disabled]:focus,.pager li>span[disabled]:focus,fieldset[disabled] .pager li>a:focus,fieldset[disabled] .pager li>span:focus,.pager li>a.disabled:active,.pager li>span.disabled:active,.pager li>a[disabled]:active,.pager li>span[disabled]:active,fieldset[disabled] .pager li>a:active,fieldset[disabled] .pager li>span:active,.pager li>a.disabled.active,.pager li>span.disabled.active,.pager li>a[disabled].active,.pager li>span[disabled].active,fieldset[disabled] .pager li>a.active,fieldset[disabled] .pager li>span.active{background-color:#eee;border-color:#b7b7b7}.pager li>a>.i,.pager li>span>.i{font-size:18px;vertical-align:top;margin:2px 0}.pager li>a:hover>a:focus{color:#4d5258}.pager li a:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125);outline:0}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>a:active,.pager .disabled>span{background:#f5f5f5;-webkit-box-shadow:none;box-shadow:none;color:#969696;cursor:default}.pager .next>a>.i,.pager .next>span>.i{margin-left:5px}.pager .previous>a>.i,.pager .previous>span>.i{margin-right:5px}.pager-sm li>a,.pager-sm li>span{font-weight:400;line-height:16px;padding:1px 10px}.pager-sm li>a>.i,.pager-sm li>span>.i{font-size:12px}.pagination>li>a,.pagination>li>span{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#b7b7b7;color:#4d5258;cursor:default;font-weight:600;padding:2px 10px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus,.pagination>li>a:active,.pagination>li>span:active,.pagination>li>a.active,.pagination>li>span.active,.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.pagination>li>a:active,.pagination>li>span:active,.pagination>li>a.active,.pagination>li>span.active,.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span{background-image:none}.pagination>li>a.disabled,.pagination>li>span.disabled,.pagination>li>a[disabled],.pagination>li>span[disabled],fieldset[disabled] .pagination>li>a,fieldset[disabled] .pagination>li>span,.pagination>li>a.disabled:hover,.pagination>li>span.disabled:hover,.pagination>li>a[disabled]:hover,.pagination>li>span[disabled]:hover,fieldset[disabled] .pagination>li>a:hover,fieldset[disabled] .pagination>li>span:hover,.pagination>li>a.disabled:focus,.pagination>li>span.disabled:focus,.pagination>li>a[disabled]:focus,.pagination>li>span[disabled]:focus,fieldset[disabled] .pagination>li>a:focus,fieldset[disabled] .pagination>li>span:focus,.pagination>li>a.disabled:active,.pagination>li>span.disabled:active,.pagination>li>a[disabled]:active,.pagination>li>span[disabled]:active,fieldset[disabled] .pagination>li>a:active,fieldset[disabled] .pagination>li>span:active,.pagination>li>a.disabled.active,.pagination>li>span.disabled.active,.pagination>li>a[disabled].active,.pagination>li>span[disabled].active,fieldset[disabled] .pagination>li>a.active,fieldset[disabled] .pagination>li>span.active{background-color:#eee;border-color:#b7b7b7}.pagination>li>a>.i,.pagination>li>span>.i{font-size:15px;vertical-align:top;margin:2px 0}.pagination>li>a:active,.pagination>li>span:active{-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{background-color:#eee;border-color:#bbb;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2);color:#4d5258;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{-webkit-box-shadow:none;box-shadow:none;cursor:default;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination-sm>li>a,.pagination-sm>li>span{padding:0 6px;font-size:11px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a,.pagination-sm>li>span{font-weight:400}.pagination-sm>li>a>.i,.pagination-sm>li>span>.i{font-size:12px;margin-top:3px}.panel-title{font-weight:700}.panel-group .panel{color:#4d5258}.panel-group .panel+.panel{margin-top:-1px}.panel-group .panel-default{border-color:#bebdbd;border-top-color:#c4c3c3}.panel-group .panel-heading{background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #cecdcd}.panel-group .panel-title{font-weight:500;line-height:1}.panel-group .panel-title>a{color:#4d5258;font-weight:600}.panel-group .panel-title>a:before{content:"\f107";font-family:FontAwesome;font-size:13px;margin-right:5px;vertical-align:0}.panel-group .panel-title>a:focus{outline:0;text-decoration:none}.panel-group .panel-title>a:hover{text-decoration:none}.panel-group .panel-title>a.collapsed:before{content:"\f105";margin-left:4px;margin-right:7px}.popover{-webkit-box-shadow:0 2px 2px rgba(0,0,0,.08);box-shadow:0 2px 2px rgba(0,0,0,.08);padding:0}.popover-content{color:#4d5258;line-height:18px;padding:10px 14px}.popover-title{border-bottom:0;border-radius:0;color:#4d5258;font-size:13px;font-weight:700;min-height:34px}.popover-title .close{height:22px;position:absolute;right:8px;top:6px}.popover-title.closable{padding-right:30px}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{-webkit-box-shadow:inset 0 0 1px rgba(0,0,0,.25);box-shadow:inset 0 0 1px rgba(0,0,0,.25)}.progress.progress-label-left,.progress.progress-label-top-right{overflow:visible;position:relative}.progress.progress-label-left{margin-left:40px}.progress.progress-sm{height:14px;margin-bottom:14px}.progress.progress-xs{height:6px;margin-bottom:6px}td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}.progress-bar{box-shadow:none}.progress-label-left .progress-bar span,.progress-label-top-right .progress-bar span{color:#333;font-size:14px;position:absolute;text-align:right}.progress-label-left .progress-bar span{left:-40px;top:0;width:35px}.progress-label-top-right .progress-bar span{max-width:25%;overflow:hidden;right:0;text-overflow:ellipsis;top:-31px;white-space:nowrap}.progress-label-left.progress-sm .progress-bar span,.progress-label-top-right.progress-sm .progress-bar span{font-size:12px}.progress-sm .progress-bar{line-height:14px}.progress-xs .progress-bar{line-height:6px}.progress-description{margin-bottom:10px;max-width:74%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-description .count{font-size:20.004px;font-weight:300;line-height:1;margin-right:5px}.progress-description .fa,.progress-description .pficon{font-size:14px;margin-right:3px}.progress-description .tooltip{white-space:normal}.search-pf.has-button{border-collapse:separate;display:table}.search-pf.has-button .form-group{display:table-cell;width:100%}.search-pf.has-button .form-group .btn{-webkit-box-shadow:none;box-shadow:none;float:left;margin-left:-1px}.search-pf.has-button .form-group .btn.btn-lg{font-size:14.5px}.search-pf.has-button .form-group .btn.btn-sm{font-size:10.7px}.search-pf.has-button .form-group .form-control{float:left}.search-pf .has-clear .clear{background:0 0;background:rgba(255,255,255,0);border:0;height:25px;line-height:1;padding:0;position:absolute;right:1px;top:1px;width:28px}.search-pf .has-clear .clear:focus{outline:0}.search-pf .has-clear .form-control{padding-right:30px}.search-pf .has-clear .form-control::-ms-clear{display:none}.search-pf .has-clear .input-lg+.clear{height:31px;width:28px}.search-pf .has-clear .input-sm+.clear{height:20px;width:28px}.search-pf .has-clear .input-sm+.clear span{font-size:10px}.search-pf .has-clear .search-pf-input-group{position:relative}.sidebar-header{border-bottom:1px solid #e9e9e9;padding-bottom:11px;margin:50px 0 20px}.sidebar-header .actions{margin-top:-2px}.sidebar-pf .sidebar-header+.list-group{border-top:0;margin-top:-10px}.sidebar-pf .sidebar-header+.list-group .list-group-item{background:0 0;border-color:#e9e9e9;padding-left:0}.sidebar-pf .sidebar-header+.list-group .list-group-item-heading{font-size:12px}.sidebar-pf .nav-category h2{color:#999;font-size:12px;font-weight:400;line-height:21px;margin:0;padding:8px 0}.sidebar-pf .nav-category+.nav-category{margin-top:10px}.sidebar-pf .nav-pills>li.active>a{background:#0099d3!important;border-color:#0076b7!important;color:#fff}@media (min-width:768px){.sidebar-pf .nav-pills>li.active>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}.sidebar-pf .nav-pills>li.active>a .fa{color:#fff}.sidebar-pf .nav-pills>li>a{border-bottom:1px solid transparent;border-radius:0;border-top:1px solid transparent;color:#333;font-size:13px;line-height:21px;padding:1px 20px}.sidebar-pf .nav-pills>li>a:hover{background:#d4edfa;border-color:#b3d3e7}.sidebar-pf .nav-pills>li>a .fa{color:#6a7079;font-size:15px;margin-right:10px;text-align:center;vertical-align:middle;width:15px}.sidebar-pf .nav-stacked{margin-left:-20px;margin-right:-20px}.sidebar-pf .nav-stacked li+li{margin-top:0}.sidebar-pf .panel{background:0 0}.sidebar-pf .panel-body{padding:6px 20px}.sidebar-pf .panel-body .nav-pills>li>a{padding-left:37px}.sidebar-pf .panel-heading{padding:9px 20px}.sidebar-pf .panel-title{font-size:12px}.sidebar-pf .panel-title>a:before{display:inline-block;margin-left:1px;margin-right:4px;width:9px}.sidebar-pf .panel-title>a.collapsed:before{margin-left:3px;margin-right:2px}@media (min-width:767px){.sidebar-header-bleed-left{margin-left:-20px}.sidebar-header-bleed-left>h2{margin-left:20px}.sidebar-header-bleed-right{margin-right:-20px}.sidebar-header-bleed-right .actions{margin-right:20px}.sidebar-header-bleed-right>h2{margin-right:20px}.sidebar-header-bleed-right+.list-group{margin-right:-20px}.sidebar-pf .panel-group .panel-default,.sidebar-pf .treeview{border-left:0;border-right:0;margin-left:-20px;margin-right:-20px}.sidebar-pf .treeview{margin-top:5px}.sidebar-pf .treeview .list-group-item{padding-left:20px;padding-right:20px}.sidebar-pf .treeview .list-group-item.node-selected:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}@media (min-width:768px){.sidebar-pf{background:#fafafa}.sidebar-pf.sidebar-pf-left{border-right:1px solid #d0d0d0}.sidebar-pf.sidebar-pf-right{border-left:1px solid #d0d0d0}.sidebar-pf>.nav-category,.sidebar-pf>.nav-stacked{margin-top:5px}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(0,0,0,.25);border-left:4px solid rgba(0,0,0,.25);border-right:4px solid rgba(0,0,0,.25);border-radius:100%;border-top:4px solid rgba(0,0,0,.75);height:24px;margin:0 auto;position:relative;width:24px}.spinner.spinner-inline{display:inline-block;margin-right:3px}.spinner.spinner-lg{border-width:5px;height:30px;width:30px}.spinner.spinner-sm{border-width:3px;height:18px;width:18px}.spinner.spinner-xs{border-width:2px;height:12px;width:12px}.ie8 .spinner,.ie9 .spinner{background:url(../img/spinner.gif) no-repeat;border:0}.ie8 .spinner.spinner-lg,.ie9 .spinner.spinner-lg{background-image:url(../img/spinner-lg.gif)}.ie8 .spinner.spinner-sm,.ie9 .spinner.spinner-sm{background-image:url(../img/spinner-sm.gif)}.ie8 .spinner.spinner-xs,.ie9 .spinner.spinner-xs{background-image:url(../img/spinner-xs.gif)}.prettyprint .atn,.prettyprint .com,.prettyprint .fun,.prettyprint .var{color:#3f9c35}.prettyprint .atv,.prettyprint .str{color:#a30000}.prettyprint .clo,.prettyprint .dec,.prettyprint .kwd,.prettyprint .opn,.prettyprint .pln,.prettyprint .pun{color:#333}.prettyprint .lit,.prettyprint .tag,.prettyprint .typ{color:#006e9c}.prettyprint ol.linenums{margin-bottom:0}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:2px 10px 3px}.table>thead>tr>th>a:hover,.table>tbody>tr>th>a:hover,.table>tfoot>tr>th>a:hover,.table>thead>tr>td>a:hover,.table>tbody>tr>td>a:hover,.table>tfoot>tr>td>a:hover{text-decoration:none}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th{font-family:'Open Sans';font-style:normal;font-weight:600}.table>thead{background-clip:padding-box;background-color:#f9f9f9;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.table-bordered{border:1px solid #d1d1d1}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #d1d1d1}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:1px}.table-striped>tbody>tr:nth-of-type(even){background-color:#f5f5f5}.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#d5ecf9;border-bottom-color:#a7cadf}.nav-tabs{font-size:14px}.nav-tabs>li>a{color:#4d5258;margin-right:-1px;padding-bottom:5px;padding-top:5px}.nav-tabs>li>a:active,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background:0 0;border-color:#e9e8e8;color:#222}.nav-tabs>li>.dropdown-menu{border-top:0;border-color:#e9e8e8}.nav-tabs>li>.dropdown-menu.pull-right{right:-1px}.nav-tabs+.nav-tabs-pf{font-size:12px}.nav-tabs+.nav-tabs-pf>li:first-child>a{padding-left:15px}.nav-tabs+.nav-tabs-pf>li:first-child>a:before{left:15px!important}.nav-tabs .open>a,.nav-tabs .open>a:hover,.nav-tabs .open>a:focus{background-color:transparent;border-color:#e9e8e8}@media (min-width:768px){.nav-tabs-pf.nav-justified{border-bottom:1px solid #e9e8e8}}.nav-tabs-pf.nav-justified>li:first-child>a{padding-left:15px}.nav-tabs-pf.nav-justified>li>a{border-bottom:0}.nav-tabs-pf.nav-justified>li>a:before{left:0!important;right:0!important}.nav-tabs-pf>li{margin-bottom:0}.nav-tabs-pf>li.active>a:before{background:#0099d3;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li.active>a,.nav-tabs-pf>li.active>a:active,.nav-tabs-pf>li.active>a:focus,.nav-tabs-pf>li.active>a:hover{background-color:transparent;border:0!important;color:#0099d3}.nav-tabs-pf>li.active>a:before,.nav-tabs-pf>li.active>a:active:before,.nav-tabs-pf>li.active>a:focus:before,.nav-tabs-pf>li.active>a:hover:before{background:#0099d3}.nav-tabs-pf>li:first-child>a{padding-left:0}.nav-tabs-pf>li:first-child>a:before{left:0!important}.nav-tabs-pf>li>a{border:0;line-height:1;margin-right:0;padding-bottom:10px;padding-top:10px}.nav-tabs-pf>li>a:active:before,.nav-tabs-pf>li>a:focus:before,.nav-tabs-pf>li>a:hover:before{background:#aaa;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li>.dropdown-menu{left:15px;margin-top:1px}.nav-tabs-pf>li>.dropdown-menu.pull-right{left:auto;right:15px}.nav-tabs-pf .open>a,.nav-tabs-pf .open>a:hover,.nav-tabs-pf .open>a:focus{background-color:transparent}.tooltip{font-size:12px}.tooltip.in{opacity:.88;filter:alpha(opacity=88)}.tooltip-inner{padding:7px 12px;text-align:left}h1,.h1,h2,.h2{font-weight:300}.page-header .actions{margin-top:8px}.page-header .actions a>.pficon{margin-right:4px}@media (min-width:767px){.page-header-bleed-left{margin-left:-20px}.page-header-bleed-right{margin-right:-20px}.page-header-bleed-right .actions{margin-right:20px}}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.eot
new file mode 100755
index 0000000..1f639a1
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.svg
new file mode 100755
index 0000000..6a2607b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansbold_italic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1352" d="M0 0zM-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371z M1065 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123zM1081 0h-301l237 1118h301z" />
+<glyph unicode="fl" horiz-adv-x="1352" d="M0 0zM-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371z M1081 0h-301l330 1556h301z" />
+<glyph unicode="ffi" horiz-adv-x="2048" d="M-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49 l-79 -224q-69 31 -134 31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 -404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 -1010q-77 -371 -403 -371zM1778 0h-301l237 1118h301zM1761 1380q0 87 48 131.5 t135 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-152 0 -152 123z" />
+<glyph unicode="ffl" horiz-adv-x="2048" d="M-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49 l-79 -224q-69 31 -134 31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 -404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 -1010q-77 -371 -403 -371zM1778 0h-301l329 1556h301z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="586" d="M391 485h-241l157 977h340zM25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode=""" horiz-adv-x="928" d="M549 1462l-152 -528h-196l71 528h277zM954 1462l-151 -528h-199l74 528h276z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M1036 846l-69 -232h258l-19 -206h-297l-116 -408h-220l117 408h-194l-115 -408h-215l113 408h-238l18 206h277l70 232h-252l18 209h289l119 407h217l-117 -407h199l116 407h215l-116 -407h239l-18 -209h-279zM553 614h197l69 232h-196z" />
+<glyph unicode="$" d="M1034 496q0 -184 -125.5 -291.5t-367.5 -124.5l-39 -199h-140l44 201q-209 12 -355 86v266q198 -107 404 -117l71 322q-163 61 -241 151t-78 214q0 173 127 279.5t350 121.5l35 151h139l-33 -151q166 -22 295 -90l-106 -232q-132 65 -242 74l-63 -299q131 -51 195 -99.5 t97 -113t33 -149.5zM594 322q63 9 102 45t39 98q0 46 -24.5 75.5t-59.5 43.5zM633 1157q-62 -7 -96.5 -41t-34.5 -94q0 -79 80 -111z" />
+<glyph unicode="%" horiz-adv-x="1753" d="M518 1274q-63 0 -110.5 -128.5t-47.5 -277.5q0 -96 56 -96q65 0 112 131t47 275q0 96 -57 96zM821 1165q0 -166 -56 -310t-151 -217t-217 -73q-139 0 -210.5 83.5t-71.5 236.5q0 169 55.5 311.5t148.5 214.5t216 72q137 0 211.5 -80t74.5 -238zM1554 1462l-1083 -1462 h-240l1088 1462h235zM1376 690q-39 0 -75 -56t-59 -154t-23 -195t55 -97q41 0 77 55t59.5 154.5t23.5 196.5q0 96 -58 96zM1679 590q0 -167 -54 -313.5t-148 -220.5t-215 -74q-144 0 -216.5 78.5t-72.5 222.5q0 177 53 322.5t148 219.5t219 74q137 0 211.5 -78.5 t74.5 -230.5z" />
+<glyph unicode="&" horiz-adv-x="1450" d="M1325 0h-350l-72 98q-175 -118 -403 -118q-209 0 -320.5 97.5t-111.5 280.5q0 145 78.5 248.5t273.5 200.5q-76 130 -76 258q0 195 117.5 307.5t316.5 112.5q169 0 266 -82.5t97 -224.5q0 -280 -365 -426l195 -263q44 57 80.5 121.5t78.5 173.5h300q-133 -313 -310 -497z M541 623q-88 -51 -123 -104.5t-35 -131.5q0 -65 45.5 -108t116.5 -43q115 0 221 59zM662 920q113 59 155.5 111t42.5 112q0 57 -30 82.5t-70 25.5q-66 0 -102.5 -46.5t-36.5 -119.5q0 -46 12 -92t29 -73z" />
+<glyph unicode="'" horiz-adv-x="522" d="M549 1462l-152 -528h-196l71 528h277z" />
+<glyph unicode="(" horiz-adv-x="694" d="M74 281q0 339 122.5 626.5t381.5 554.5h262q-255 -278 -377.5 -573.5t-122.5 -618.5q0 -308 117 -594h-234q-149 266 -149 605z" />
+<glyph unicode=")" horiz-adv-x="694" d="M618 858q0 -342 -124 -630.5t-379 -551.5h-262q499 545 499 1192q0 307 -116 594h233q149 -264 149 -604z" />
+<glyph unicode="*" horiz-adv-x="1116" d="M885 1522l-113 -353l387 29l-18 -254l-338 43l160 -336l-246 -73l-90 337l-197 -278l-207 164l275 248l-326 92l86 237l338 -174l33 369z" />
+<glyph unicode="+" d="M475 612h-366v219h366v369h219v-369h367v-219h-367v-364h-219v364z" />
+<glyph unicode="," horiz-adv-x="569" d="M377 238l8 -23q-118 -255 -262 -479h-225q74 167 194 502h285z" />
+<glyph unicode="-" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="." horiz-adv-x="584" d="M25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode="/" horiz-adv-x="862" d="M1014 1462l-809 -1462h-295l809 1462h295z" />
+<glyph unicode="0" d="M1110 1012q0 -470 -168.5 -751t-472.5 -281q-198 0 -300.5 122t-102.5 365q0 297 84 537t228 360.5t333 120.5q399 0 399 -473zM684 1235q-80 0 -149.5 -104t-117.5 -302t-48 -368q0 -115 27.5 -173.5t97.5 -58.5q81 0 150.5 106t116 301t46.5 386q0 111 -30.5 162 t-92.5 51z" />
+<glyph unicode="1" d="M688 0h-305l180 829q35 152 76 287q-9 -8 -61.5 -47t-262.5 -170l-133 215l566 348h249z" />
+<glyph unicode="2" d="M913 0h-962l43 213l477 424q180 159 248.5 254.5t68.5 179.5q0 75 -41 114.5t-110 39.5q-66 0 -135.5 -33.5t-171.5 -118.5l-146 203q132 112 252 159.5t250 47.5q190 0 301 -98t111 -259q0 -107 -41 -201t-122.5 -188t-266.5 -245l-269 -222v-10h568z" />
+<glyph unicode="3" d="M1104 1149q0 -156 -94.5 -262t-261.5 -135v-4q131 -26 198.5 -106.5t67.5 -201.5q0 -133 -74 -238t-212 -163.5t-327 -58.5q-239 0 -387 79v267q84 -50 182 -75.5t191 -25.5q158 0 243 63.5t85 176.5q0 172 -258 172h-138l46 221h73q167 0 263 62t96 172q0 67 -43 104 t-121 37q-134 0 -287 -100l-127 204q124 81 232.5 113.5t246.5 32.5q190 0 298 -90.5t108 -243.5z" />
+<glyph unicode="4" d="M1028 303h-170l-63 -303h-293l63 303h-590l48 234l770 925h311l-195 -919h170zM616 543l58 248q12 58 40 164t42 141h-6q-35 -63 -132 -181l-313 -372h311z" />
+<glyph unicode="5" d="M623 922q183 0 289 -103t106 -287q0 -167 -71.5 -292t-208.5 -192.5t-330 -67.5q-117 0 -218.5 23t-162.5 58v269q174 -99 352 -99q154 0 241 71t87 194q0 94 -57.5 141t-166.5 47q-102 0 -213 -33l-104 78l207 733h755l-55 -262h-489l-88 -293q72 15 127 15z" />
+<glyph unicode="6" d="M88 469q0 202 61 395.5t167.5 335t256.5 213.5t357 72q125 0 223 -27l-51 -246q-84 25 -191 25q-194 0 -313.5 -108t-185.5 -345h4q115 166 311 166q157 0 242.5 -97t85.5 -273q0 -169 -71 -313.5t-190.5 -215.5t-277.5 -71q-212 0 -320 127t-108 362zM530 227 q99 0 161.5 94t62.5 236q0 71 -33.5 113.5t-102.5 42.5q-60 0 -114.5 -35.5t-87.5 -95.5t-33 -160q0 -91 40 -143t107 -52z" />
+<glyph unicode="7" d="M78 0l737 1202h-629l56 260h975l-41 -194l-752 -1268h-346z" />
+<glyph unicode="8" d="M721 1485q123 0 215.5 -42t141 -118t48.5 -174q0 -134 -80.5 -233.5t-230.5 -151.5q217 -141 217 -365q0 -122 -63.5 -218.5t-181 -149.5t-273.5 -53q-214 0 -336.5 100t-122.5 270q0 298 348 426q-165 132 -165 299q0 119 58 212.5t168 145.5t257 52zM582 643 q-116 -45 -173 -107t-57 -153q0 -81 50 -128.5t135 -47.5q93 0 147.5 53.5t54.5 138.5q0 73 -36.5 131.5t-120.5 112.5zM694 1260q-76 0 -121 -46.5t-45 -119.5q0 -132 123 -201q185 72 185 221q0 68 -39.5 107t-102.5 39z" />
+<glyph unicode="9" d="M1092 1001q0 -280 -99 -533t-264 -370.5t-403 -117.5q-128 0 -240 32v256q111 -41 227 -41q121 0 207.5 49t144 138.5t99.5 257.5h-4q-111 -158 -295 -158q-163 0 -252.5 103.5t-89.5 285.5q0 166 73 305.5t196 208t286 68.5q203 0 308.5 -123t105.5 -361zM645 1237 q-65 0 -115.5 -42t-78 -114t-27.5 -153q0 -87 37.5 -131.5t105.5 -44.5q60 0 111.5 36.5t82 100t30.5 158.5q0 84 -35.5 137t-110.5 53z" />
+<glyph unicode=":" horiz-adv-x="584" d="M207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5zM25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode=";" horiz-adv-x="584" d="M385 215q-118 -255 -262 -479h-225q74 167 194 502h285zM207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5z" />
+<glyph unicode="<" d="M1061 203l-952 438v143l952 496v-240l-643 -317l643 -281v-239z" />
+<glyph unicode="=" d="M109 807v217h952v-217h-952zM109 418v219h952v-219h-952z" />
+<glyph unicode=">" d="M109 442l643 281l-643 317v240l952 -496v-143l-952 -438v239z" />
+<glyph unicode="?" horiz-adv-x="940" d="M260 485l14 78q19 103 73.5 177t172.5 155q124 84 157.5 127t33.5 96q0 119 -133 119q-50 0 -106.5 -16t-201.5 -84l-92 221q230 125 445 125q177 0 280 -87.5t103 -244.5q0 -83 -28.5 -149.5t-82.5 -123t-190 -147.5q-64 -43 -96.5 -73t-52.5 -64.5t-38 -108.5h-258z M166 115q0 91 55 144.5t150 53.5q68 0 108.5 -38t40.5 -107q0 -87 -55 -141t-143 -54q-74 0 -115 38t-41 104z" />
+<glyph unicode="@" horiz-adv-x="1753" d="M1733 840q0 -173 -64 -321t-177.5 -231t-254.5 -83q-88 0 -144.5 38.5t-72.5 108.5h-6q-50 -77 -113 -112t-147 -35q-127 0 -198 79.5t-71 229.5q0 147 67.5 276.5t187.5 205t268 75.5q185 0 327 -55l-106 -420q-11 -44 -19 -76.5t-8 -64.5q0 -68 58 -68q66 0 124 64 t92.5 171t34.5 214q0 213 -123.5 325.5t-359.5 112.5q-203 0 -366.5 -94t-255 -266t-91.5 -392q0 -243 134 -380.5t376 -137.5q117 0 219.5 20t221.5 66v-186q-230 -90 -465 -90q-217 0 -378 85.5t-246 241.5t-85 359q0 279 120.5 497t343 341.5t497.5 123.5 q318 0 499 -163.5t181 -458.5zM995 889q-82 0 -145.5 -51.5t-100 -137t-36.5 -174.5q0 -65 24.5 -102t69.5 -37q141 0 213 270l57 222q-36 10 -82 10z" />
+<glyph unicode="A" horiz-adv-x="1286" d="M842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333z" />
+<glyph unicode="B" horiz-adv-x="1270" d="M788 1462q229 0 346 -81.5t117 -243.5q0 -150 -83 -247.5t-236 -129.5v-6q100 -26 159.5 -96.5t59.5 -180.5q0 -229 -153 -353t-423 -124h-522l309 1462h426zM545 883h149q121 0 181.5 48.5t60.5 139.5q0 137 -170 137h-152zM412 256h180q117 0 183.5 58t66.5 161 q0 162 -183 162h-165z" />
+<glyph unicode="C" horiz-adv-x="1253" d="M905 1227q-132 0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5q0 262 104 482.5t278 335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19z" />
+<glyph unicode="D" horiz-adv-x="1386" d="M1323 909q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451l309 1462h396q270 0 417.5 -143t147.5 -410zM518 256q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115l-202 -952h106z" />
+<glyph unicode="E" horiz-adv-x="1110" d="M870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512z" />
+<glyph unicode="F" horiz-adv-x="1087" d="M358 0h-305l309 1462h814l-54 -254h-508l-79 -377h473l-56 -253h-473z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M754 821h563l-162 -762q-134 -46 -248.5 -62.5t-242.5 -16.5q-259 0 -400 147t-141 422q0 268 107 484.5t301 334t448 117.5q218 0 410 -99l-115 -251q-74 40 -148 64t-161 24q-153 0 -273.5 -83t-189 -236.5t-68.5 -330.5q0 -172 72.5 -252.5t222.5 -80.5q76 0 170 24 l66 299h-267z" />
+<glyph unicode="H" horiz-adv-x="1434" d="M1135 0h-306l134 631h-471l-134 -631h-305l309 1462h306l-121 -573h471l121 573h305z" />
+<glyph unicode="I" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305z" />
+<glyph unicode="J" horiz-adv-x="678" d="M-135 -430q-94 0 -187 27v253q88 -20 164 -20q99 0 160.5 60.5t89.5 191.5l293 1380h305l-303 -1423q-52 -245 -175.5 -357t-346.5 -112z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M1141 0h-338l-211 592l-125 -70l-109 -522h-305l309 1462h306l-152 -702l158 205l409 497h361l-594 -700z" />
+<glyph unicode="L" horiz-adv-x="1061" d="M53 0l309 1462h306l-256 -1206h512l-54 -256h-817z" />
+<glyph unicode="M" horiz-adv-x="1802" d="M838 369l551 1093h423l-309 -1462h-280l145 692q53 247 105 441h-5l-569 -1133h-281l-61 1133h-4q-11 -88 -38 -231t-187 -902h-275l309 1462h404l68 -1093h4z" />
+<glyph unicode="N" horiz-adv-x="1546" d="M1247 0h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 -688h-275l309 1462h357l340 -1077h4q12 76 39 217t180 860h274z" />
+<glyph unicode="O" horiz-adv-x="1495" d="M1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246t56 357 q0 142 -65 219.5t-183 77.5z" />
+<glyph unicode="P" horiz-adv-x="1188" d="M522 774h56q142 0 223.5 69t81.5 185q0 180 -195 180h-74zM1190 1036q0 -241 -169.5 -378.5t-467.5 -137.5h-86l-109 -520h-305l309 1462h338q242 0 366 -106.5t124 -319.5z" />
+<glyph unicode="Q" horiz-adv-x="1495" d="M1432 938q0 -316 -122.5 -555.5t-334.5 -337.5l254 -393h-359l-178 328h-26q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87 t155.5 246t56 357q0 142 -65 219.5t-183 77.5z" />
+<glyph unicode="R" horiz-adv-x="1247" d="M530 813h78q131 0 204 57t73 174q0 82 -47.5 123t-149.5 41h-74zM477 561l-119 -561h-305l309 1462h359q237 0 356 -102t119 -299q0 -158 -83 -271.5t-239 -168.5l261 -621h-332l-207 561h-119z" />
+<glyph unicode="S" horiz-adv-x="1085" d="M946 432q0 -209 -148 -330.5t-401 -121.5q-221 0 -356 90v274q193 -108 358 -108q112 0 175 42.5t63 116.5q0 43 -13.5 75.5t-38.5 60.5t-124 102q-138 99 -194 196t-56 209q0 129 62 230.5t176.5 158t263.5 56.5q217 0 397 -99l-109 -233q-156 74 -288 74 q-83 0 -136 -45t-53 -119q0 -61 33 -106.5t148 -120.5q121 -80 181 -176.5t60 -225.5z" />
+<glyph unicode="T" horiz-adv-x="1087" d="M571 0h-305l254 1204h-352l55 258h1010l-55 -258h-353z" />
+<glyph unicode="U" horiz-adv-x="1415" d="M1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306z" />
+<glyph unicode="V" horiz-adv-x="1208" d="M535 299q78 221 110 283l432 880h316l-748 -1462h-334l-127 1462h295l51 -880q4 -45 4 -133q-2 -103 -6 -150h7z" />
+<glyph unicode="W" horiz-adv-x="1831" d="M1006 1018q-46 -146 -115 -299l-324 -719h-338l-45 1462h287l6 -798q0 -52 -4 -173t-10 -174h6q22 64 67 180.5t60 145.5l369 819h270l21 -873q0 -146 -9 -272h6q43 129 131 349l330 796h309l-647 -1462h-346l-22 721l-2 139q0 88 4 158h-4z" />
+<glyph unicode="X" horiz-adv-x="1241" d="M1124 0h-331l-172 543l-396 -543h-342l576 764l-238 698h320l153 -518l363 518h344l-545 -725z" />
+<glyph unicode="Y" horiz-adv-x="1155" d="M627 870l374 592h342l-618 -903l-119 -559h-303l119 559l-236 903h312z" />
+<glyph unicode="Z" horiz-adv-x="1098" d="M920 0h-981l38 201l777 1005h-543l53 256h936l-41 -202l-782 -1004h596z" />
+<glyph unicode="[" horiz-adv-x="678" d="M436 -324h-473l381 1786h473l-45 -211h-215l-291 -1364h215z" />
+<glyph unicode="\" horiz-adv-x="862" d="M481 1462l224 -1462h-267l-217 1462h260z" />
+<glyph unicode="]" horiz-adv-x="678" d="M-92 -113h213l291 1364h-215l45 211h473l-381 -1786h-471z" />
+<glyph unicode="^" horiz-adv-x="1081" d="M20 520l619 950h147l277 -950h-223l-174 633l-402 -633h-244z" />
+<glyph unicode="_" horiz-adv-x="819" d="M635 -324h-821l30 140h822z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M934 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="a" horiz-adv-x="1217" d="M406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M813 1139q146 0 230.5 -108t84.5 -298t-68 -367.5t-187 -281.5t-263 -104q-194 0 -276 163h-8l-58 -143h-231l330 1556h301l-62 -288q-41 -182 -84 -299h8q78 98 142.5 134t140.5 36zM692 895q-68 0 -130 -65t-102 -180.5t-40 -250.5q0 -80 37 -128t102 -48q67 0 128 69 t98.5 189.5t37.5 237.5q0 176 -131 176z" />
+<glyph unicode="c" horiz-adv-x="989" d="M506 -20q-201 0 -308.5 107.5t-107.5 303.5q0 212 74.5 385.5t209.5 268t308 94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 -175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 58.5v-246q-152 -79 -336 -79z" />
+<glyph unicode="d" horiz-adv-x="1217" d="M406 -20q-147 0 -231.5 107t-84.5 300q0 196 71.5 374.5t188.5 278t258 99.5q82 0 141.5 -37t112.5 -127h8l2 28q6 110 25 195l76 358h301l-330 -1556h-229l14 145h-4q-71 -87 -148.5 -126t-170.5 -39zM532 223q66 0 128.5 68.5t100.5 182.5t38 245q0 80 -37.5 128 t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234q0 -176 137 -176z" />
+<glyph unicode="e" horiz-adv-x="1141" d="M696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5t147.5 -52.5 q87 0 158 19t172 67v-227q-172 -86 -390 -86z" />
+<glyph unicode="f" horiz-adv-x="764" d="M-45 -492q-104 0 -174 25v242q61 -21 115 -21q61 0 107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371z" />
+<glyph unicode="g" horiz-adv-x="1108" d="M1186 1116l-35 -166l-174 -41q16 -52 16 -118q0 -195 -121 -308.5t-329 -113.5q-59 0 -99 10q-84 -27 -84 -78q0 -34 30 -49t89 -23l137 -18q163 -21 237.5 -84.5t74.5 -183.5q0 -211 -156 -323t-446 -112q-208 0 -324.5 75.5t-116.5 207.5q0 102 68.5 175.5t214.5 121.5 q-74 47 -74 133q0 71 44.5 122.5t146.5 98.5q-65 49 -96 112t-31 153q0 199 125.5 315.5t341.5 116.5q83 0 166 -23h395zM365 -6q-106 -14 -160.5 -57t-54.5 -109q0 -115 194 -115q151 0 228 45t77 127q0 39 -32.5 60t-137.5 35zM614 948q-77 0 -124.5 -76.5t-47.5 -191.5 q0 -119 103 -119q75 0 121.5 76.5t46.5 193.5t-99 117z" />
+<glyph unicode="h" horiz-adv-x="1237" d="M977 0h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301l330 1556h301q-39 -181 -60 -278t-86 -309h8q62 77 138 123.5t176 46.5q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180z" />
+<glyph unicode="i" horiz-adv-x="608" d="M322 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123zM338 0h-301l237 1118h301z" />
+<glyph unicode="j" horiz-adv-x="608" d="M-90 -492q-104 0 -174 25v242q61 -21 114 -21q137 0 173 170l253 1194h302l-265 -1239q-77 -371 -403 -371zM324 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123z" />
+<glyph unicode="k" horiz-adv-x="1163" d="M920 1118h344l-498 -504l285 -614h-336l-183 420l-120 -72l-74 -348h-301l330 1556h301l-148 -694q-8 -41 -29 -117l-28 -102h4z" />
+<glyph unicode="l" horiz-adv-x="608" d="M338 0h-301l330 1556h301z" />
+<glyph unicode="m" horiz-adv-x="1853" d="M844 1139q219 0 262 -228h6q68 110 160.5 169t197.5 59q136 0 207.5 -85t71.5 -237q0 -76 -23 -180l-133 -637h-301l138 653q16 68 16 119q0 123 -98 123q-92 0 -166.5 -112t-118.5 -318l-96 -465h-301l137 653q16 68 16 119q0 123 -98 123q-92 0 -167 -114t-118 -318 l-98 -463h-301l237 1118h230l-21 -207h6q146 228 355 228z" />
+<glyph unicode="n" horiz-adv-x="1237" d="M977 0h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301l237 1118h230l-21 -207h6q146 228 355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180z" />
+<glyph unicode="o" horiz-adv-x="1198" d="M805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5q196 0 310 -118 t114 -325z" />
+<glyph unicode="p" horiz-adv-x="1219" d="M813 1139q146 0 230.5 -107.5t84.5 -300.5q0 -191 -68.5 -367.5t-187.5 -280t-262 -103.5q-83 0 -143 37t-111 126h-8q-12 -159 -43 -295l-72 -340h-301l342 1610h230l-17 -170h9q138 191 317 191zM692 895q-68 0 -131.5 -67.5t-102 -180t-38.5 -248.5q0 -80 37 -128 t102 -48q67 0 128 69t98.5 189.5t37.5 237.5q0 176 -131 176z" />
+<glyph unicode="q" horiz-adv-x="1217" d="M391 -20q-88 0 -156 47.5t-106.5 138.5t-38.5 219q0 198 72 377.5t189 278t257 98.5q86 0 152.5 -37.5t124.5 -126.5h8l57 143h232l-342 -1610h-301q47 218 73 337.5t84 304.5h-8q-72 -94 -143 -132t-154 -38zM535 223q64 0 127.5 70t100 181t36.5 245q0 80 -37.5 128 t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234q0 -88 36.5 -132t103.5 -44z" />
+<glyph unicode="r" horiz-adv-x="862" d="M842 1139q59 0 96 -11l-66 -290q-45 16 -100 16q-116 0 -203.5 -91.5t-124.5 -262.5l-106 -500h-301l237 1118h230l-21 -207h6q147 228 353 228z" />
+<glyph unicode="s" horiz-adv-x="969" d="M829 369q0 -188 -124.5 -288.5t-346.5 -100.5q-107 0 -186.5 15t-148.5 50v248q157 -90 319 -90q80 0 131 32.5t51 88.5q0 43 -37 77t-131 86q-121 68 -169 135.5t-48 159.5q0 170 110.5 263.5t315.5 93.5q201 0 363 -95l-99 -215q-140 84 -258 84q-57 0 -92 -25.5 t-35 -68.5q0 -39 32 -68.5t120 -74.5q123 -63 178 -137t55 -170z" />
+<glyph unicode="t" horiz-adv-x="840" d="M514 223q65 0 162 35v-225q-111 -53 -266 -53q-150 0 -220.5 63t-70.5 195q0 50 12 112l115 539h-152l29 147l196 84l132 236h194l-49 -238h283l-50 -229h-282l-115 -539q-6 -30 -6 -53q0 -74 88 -74z" />
+<glyph unicode="u" horiz-adv-x="1237" d="M262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213z" />
+<glyph unicode="v" horiz-adv-x="1049" d="M455 301q55 153 92 223l297 594h323l-604 -1118h-323l-138 1118h295l45 -586q7 -133 7 -231h6z" />
+<glyph unicode="w" horiz-adv-x="1614" d="M856 860q-62 -178 -123 -319l-233 -541h-324l-51 1118h281l4 -495l-4 -167l-7 -171h4q6 20 14 41.5t51 136.5t46 119l231 536h328v-536q0 -142 -10 -297h6l28 80q73 208 95 258l219 495h307l-530 -1118h-330l-6 520q0 155 10 340h-6z" />
+<glyph unicode="x" horiz-adv-x="1087" d="M379 573l-225 545h321l115 -334l244 334h354l-467 -561l244 -557h-326l-125 342l-264 -342h-350z" />
+<glyph unicode="y" horiz-adv-x="1063" d="M102 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49z" />
+<glyph unicode="z" horiz-adv-x="932" d="M748 0h-795l35 180l575 705h-397l51 233h750l-43 -200l-566 -685h439z" />
+<glyph unicode="{" horiz-adv-x="727" d="M201 319q0 140 -209 140l45 229q122 0 192.5 41.5t92.5 138.5l61 285q38 170 131 239.5t270 69.5h84l-49 -225q-90 -2 -130.5 -34.5t-55.5 -106.5l-66 -297q-45 -207 -276 -236v-8q85 -26 126.5 -82.5t41.5 -134.5q0 -44 -15 -113l-36 -178q-7 -28 -7 -51q0 -54 33.5 -74 t91.5 -20v-226h-53q-167 0 -253.5 63.5t-86.5 184.5q0 57 14 125l39 184q15 69 15 86z" />
+<glyph unicode="|" d="M455 1550h219v-2015h-219v2015z" />
+<glyph unicode="}" horiz-adv-x="727" d="M256 1462q340 0 340 -248q0 -56 -14 -124l-39 -185q-15 -69 -15 -86q0 -139 209 -139l-45 -229q-122 0 -192.5 -42t-91.5 -139l-62 -284q-37 -170 -130.5 -240t-270.5 -70h-45v226q93 3 137 35.5t59 105.5l66 297q25 111 95 166t181 69v9q-168 51 -168 217q0 43 15 112 l37 179q6 30 6 51q0 54 -36.5 74t-109.5 20l41 225h33z" />
+<glyph unicode="~" d="M342 672q-54 0 -116.5 -33t-116.5 -88v231q101 109 256 109q64 0 117 -14t139 -50q64 -27 111 -41t95 -14q51 0 112 30.5t122 90.5v-231q-103 -109 -256 -109q-59 0 -109 11.5t-147 51.5q-89 38 -127 47t-80 9z" />
+<glyph unicode="¡" horiz-adv-x="586" d="M182 606h242l-158 -977h-340zM549 977q0 -92 -55.5 -145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108q0 85 54 139.5t144 54.5q73 0 114.5 -37t41.5 -104z" />
+<glyph unicode="¢" d="M575 -20h-188l49 210q-134 36 -203 136t-69 258q0 193 62.5 355t178 262.5t267.5 123.5l33 158h188l-35 -158q118 -14 225 -65l-92 -230q-53 23 -105 40t-118 17q-133 0 -216 -143t-83 -336q0 -96 45 -144t127 -48q75 0 140 23.5t134 58.5v-246q-136 -71 -299 -80z" />
+<glyph unicode="£" d="M872 1485q195 0 369 -86l-113 -232q-141 68 -237 68q-75 0 -123 -39.5t-68 -132.5l-47 -229h299l-45 -220h-299l-18 -84q-42 -195 -209 -270h655l-55 -260h-993l49 246q196 48 244 264l22 104h-192l45 220h192l49 247q41 197 162 300.5t313 103.5z" />
+<glyph unicode="¤" d="M190 723q0 102 54 197l-129 127l147 147l127 -127q91 53 197 53q105 0 196 -55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 -145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 -54 197zM397 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
+<glyph unicode="¥" d="M608 872l371 590h311l-506 -747h203l-39 -178h-252l-28 -138h252l-37 -178h-252l-47 -221h-291l47 221h-252l37 178h252l29 138h-252l39 178h196l-192 747h297z" />
+<glyph unicode="¦" d="M455 1550h219v-815h-219v815zM455 350h219v-815h-219v815z" />
+<glyph unicode="§" horiz-adv-x="995" d="M150 760q0 89 47.5 163t154.5 142q-42 34 -70 84.5t-28 107.5q0 149 117 234.5t313 85.5q172 0 344 -88l-82 -193q-147 84 -282 84q-144 0 -144 -106q0 -43 40.5 -76t127.5 -72q242 -106 242 -303q0 -188 -193 -303q38 -35 64 -85.5t26 -108.5q0 -161 -126 -253.5 t-345 -92.5q-204 0 -336 75v224q172 -105 345 -105q99 0 144.5 35t45.5 92q0 39 -33 72.5t-127 79.5q-117 57 -181 131t-64 176zM506 967q-51 -25 -82 -70.5t-31 -99.5t43.5 -96.5t143.5 -88.5q49 31 75.5 78.5t26.5 95.5q0 109 -176 181z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M397 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M932 1010q-111 0 -163 -73t-52 -214q0 -134 55.5 -203t159.5 -69q43 0 108.5 15.5t124.5 43.5v-191q-131 -57 -262 -57q-196 0 -307 122.5t-111 336.5q0 225 117.5 351t325.5 126q142 0 284 -72l-75 -174q-114 58 -205 58zM125 731q0 200 100 375t275 276t377 101 q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 -305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5t-80.5 303.5t-222 223.5t-307.5 83 q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304z" />
+<glyph unicode="ª" horiz-adv-x="772" d="M369 752q-103 0 -160 70t-57 198q0 117 46 228t123 171t177 60q120 0 180 -103h6l39 90h154l-158 -702h-154l8 92h-2q-80 -104 -202 -104zM442 903q45 0 84 41.5t65.5 120t26.5 154.5q0 106 -88 106q-73 0 -123.5 -96t-50.5 -215q0 -111 86 -111z" />
+<glyph unicode="«" horiz-adv-x="1151" d="M72 569l401 463l191 -155l-279 -334l135 -350l-246 -103l-202 461v18zM559 569l402 463l190 -155l-279 -334l136 -350l-246 -103l-203 461v18z" />
+<glyph unicode="¬" d="M1061 248h-219v364h-733v219h952v-583z" />
+<glyph unicode="­" horiz-adv-x="659" d="M41 424zM41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M1237 899q0 -86 -44 -149.5t-130 -96.5l197 -360h-254l-138 297h-67v-297h-230v874h308q173 0 265.5 -67.5t92.5 -200.5zM801 758h51q72 0 113 31t41 92q0 59 -35.5 88.5t-116.5 29.5h-53v-241zM125 731q0 200 100 375t275 276t377 101q199 0 373.5 -99t276 -275.5 t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 -305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5t-80.5 303.5t-222 223.5t-307.5 83q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304z " />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036l45 201h1036z" />
+<glyph unicode="°" horiz-adv-x="877" d="M164 1137q0 93 46.5 173.5t127.5 126.5t172 46q93 0 173.5 -47t126.5 -127t46 -172q0 -93 -46 -173t-126 -125.5t-174 -45.5q-93 0 -173 45t-126.5 125t-46.5 174zM354 1137q0 -63 45.5 -108.5t110.5 -45.5q66 0 111 46t45 108q0 63 -45.5 110t-110.5 47t-110.5 -47.5 t-45.5 -109.5z" />
+<glyph unicode="±" d="M475 674h-366v219h366v369h219v-369h367v-219h-367v-365h-219v365zM109 0v219h952v-219h-952z" />
+<glyph unicode="²" horiz-adv-x="776" d="M707 586h-648l35 166l273 219q111 91 141 122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 -95h347z" />
+<glyph unicode="³" horiz-adv-x="776" d="M813 1270q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176q0 -131 -107 -209t-285 -78q-75 0 -145.5 15.5t-120.5 40.5v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127l34 160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66 l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 -155.5z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M483 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="µ" horiz-adv-x="1249" d="M424 348q0 -60 31.5 -92.5t79.5 -32.5q90 0 162.5 106.5t117.5 319.5l98 469h301l-237 -1118h-229l18 176h-6q-117 -196 -266 -196q-51 0 -89.5 19.5t-58.5 47.5h-6q-8 -66 -21.5 -139t-82.5 -400h-304l342 1610h301l-135 -645q-16 -70 -16 -125z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1202 -260h-162v1616h-166v-1616h-161v819q-62 -18 -146 -18q-216 0 -318 125t-102 376q0 256 107.5 385t343.5 129h604v-1816z" />
+<glyph unicode="·" horiz-adv-x="584" d="M131 553zM131 695q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M262 -250q0 -116 -83 -179t-234 -63q-86 0 -152 23v168q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178z" />
+<glyph unicode="¹" horiz-adv-x="776" d="M528 1462h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81l-102 165z" />
+<glyph unicode="º" horiz-adv-x="754" d="M809 1194q0 -128 -48.5 -232.5t-132.5 -157t-196 -52.5q-134 0 -202 75t-68 211q0 197 104 319t277 122q129 0 197.5 -73.5t68.5 -211.5zM522 1315q-64 0 -107.5 -89.5t-43.5 -199.5q0 -111 80 -111q63 0 105 85.5t42 207.5q0 107 -76 107z" />
+<glyph unicode="»" horiz-adv-x="1151" d="M1079 535l-401 -463l-191 155l279 334l-135 350l246 103l202 -461v-18zM592 535l-402 -463l-190 155l279 334l-136 350l246 103l203 -461v-18z" />
+<glyph unicode="¼" horiz-adv-x="1804" d="M97 0zM1500 1462l-1084 -1462h-239l1087 1462h236zM496 1462h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81l-102 165zM1573 152h-119l-32 -151h-238l33 151h-373l31 174l475 557h260l-121 -563h119zM1252 320l58 231l22 74q-13 -20 -43 -58 t-211 -247h174z" />
+<glyph unicode="½" horiz-adv-x="1804" d="M97 0zM1588 1h-648l35 166l273 219q111 91 141 122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 -95h347zM496 1462h207l-186 -876h-246l84 397 q24 109 55 207q-16 -15 -80 -60l-131 -81l-102 165zM1500 1462l-1084 -1462h-239l1087 1462h236z" />
+<glyph unicode="¾" horiz-adv-x="1804" d="M133 0zM1633 1462l-1084 -1462h-239l1087 1462h236zM1634 152h-119l-32 -151h-238l33 151h-373l31 174l475 557h260l-121 -563h119zM1313 320l58 231l22 74q-13 -20 -43 -58t-211 -247h174zM854 1270q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176q0 -131 -107 -209 t-285 -78q-75 0 -145.5 15.5t-120.5 40.5v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127l34 160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 -155.5z" />
+<glyph unicode="¿" horiz-adv-x="940" d="M678 606l-14 -78q-19 -105 -76.5 -180t-169.5 -151q-122 -83 -156.5 -126t-34.5 -98q0 -118 133 -118q50 0 106.5 16t201.5 84l92 -221q-221 -125 -445 -125q-177 0 -280 87.5t-103 244.5q0 82 28.5 148.5t83.5 124t189 146.5q93 62 128 106.5t51 106.5l8 33h258z M772 977q0 -92 -55.5 -145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108q0 86 54.5 140t143.5 54q73 0 114.5 -37t41.5 -104z" />
+<glyph unicode="À" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM965 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM735 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Â" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM1235 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z " />
+<glyph unicode="Ã" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM999 1579q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5 t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="Ä" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM516 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM918 1720q0 78 42 118t120 40 q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="Å" horiz-adv-x="1286" d="M0 0zM842 348h-473l-172 -348h-320l766 1468h373l147 -1468h-297zM827 608l-26 350q-10 131 -10 253v36q-44 -120 -109 -254l-188 -385h333zM1087 1567q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170z M930 1565q0 45 -27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69.5 26t27.5 71z" />
+<glyph unicode="Æ" horiz-adv-x="1833" d="M1593 0h-817l74 348h-426l-219 -348h-328l922 1462h1104l-54 -254h-512l-67 -321h477l-55 -254h-478l-79 -377h512zM905 608l127 600h-80l-364 -600h317z" />
+<glyph unicode="Ç" horiz-adv-x="1253" d="M123 0zM905 1227q-132 0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5q0 262 104 482.5t278 335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19z M825 -250q0 -116 -83 -179t-234 -63q-86 0 -152 23v168q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178z" />
+<glyph unicode="È" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM906 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM608 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Ê" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM1177 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="Ë" horiz-adv-x="1110" d="M53 0zM870 0h-817l309 1462h818l-54 -254h-512l-67 -321h477l-55 -254h-477l-80 -377h512zM438 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM840 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5 t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="Ì" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM667 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM414 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Î" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM937 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="Ï" horiz-adv-x="659" d="M53 0zM53 0l312 1462h305l-312 -1462h-305zM222 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM624 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="Ð" horiz-adv-x="1386" d="M1323 909q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451l125 596h-141l55 254h139l131 612h396q270 0 417.5 -143t147.5 -410zM518 256q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115l-75 -358h237l-55 -254h-238l-71 -340h106z" />
+<glyph unicode="Ñ" horiz-adv-x="1546" d="M53 0zM1247 0h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 -688h-275l309 1462h357l340 -1077h4q12 76 39 217t180 860h274zM1114 1579q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36 t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="Ò" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM1053 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM753 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Ô" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM1308 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="Õ" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM1071 1579q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="Ö" horiz-adv-x="1495" d="M123 0zM1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q255 0 395 -144t140 -403zM872 1227q-121 0 -222 -91.5t-158.5 -251.5t-57.5 -347q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 246 t56 357q0 142 -65 219.5t-183 77.5zM585 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM987 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="×" d="M428 723l-299 301l152 154l301 -299l305 299l153 -150l-305 -305l301 -303l-149 -152l-305 301l-301 -299l-150 152z" />
+<glyph unicode="Ø" horiz-adv-x="1495" d="M1432 938q0 -283 -99 -506.5t-271 -337.5t-396 -114q-180 0 -304 71l-108 -137l-154 115l121 151q-98 138 -98 357q0 265 99 487.5t273 341.5t402 119q182 0 305 -76l105 131l151 -117l-117 -145q91 -134 91 -340zM870 1233q-126 0 -229 -91.5t-160 -252.5t-57 -352 q0 -32 8 -101l596 754q-69 43 -158 43zM1133 930l-5 80l-589 -740q59 -37 153 -37q124 0 226 89t158.5 247.5t56.5 360.5z" />
+<glyph unicode="Ù" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM1002 1579h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311 q36 -148 115 -303v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM757 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5 t-194 -158.5h-209v25z" />
+<glyph unicode="Û" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM1284 1579h-198q-63 53 -162 168q-105 -88 -232 -168h-217 v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="Ü" horiz-adv-x="1415" d="M141 0zM1434 1462l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5q0 72 15 138l196 923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306zM565 1720q0 78 42.5 118t119.5 40q133 0 133 -108 q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM967 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="Ý" horiz-adv-x="1155" d="M186 0zM627 870l374 592h342l-618 -903l-119 -559h-303l119 559l-236 903h312zM606 1604q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="Þ" horiz-adv-x="1188" d="M1143 807q0 -243 -170.5 -378.5t-466.5 -135.5h-86l-62 -293h-305l309 1462h306l-50 -229h35q242 0 366 -106.5t124 -319.5zM475 547h55q139 0 222.5 66.5t83.5 185.5q0 180 -195 180h-74z" />
+<glyph unicode="ß" horiz-adv-x="1350" d="M846 1567q208 0 331 -90t123 -240q0 -114 -49 -192t-178 -152q-73 -42 -96 -68.5t-23 -54.5q0 -23 22 -49.5t79 -69.5q107 -83 144.5 -150.5t37.5 -150.5q0 -170 -123.5 -270t-337.5 -100q-187 0 -297 61v240q128 -78 258 -78q101 0 148 33t47 86q0 40 -26.5 75 t-108.5 97q-94 72 -129 130t-35 126q0 84 45 145t162 127q66 37 104.5 76t38.5 96q0 62 -39.5 98.5t-124.5 36.5q-96 0 -156 -51.5t-85 -171.5l-254 -1219q-43 -198 -147 -288.5t-277 -90.5q-90 0 -160 25v242q61 -21 115 -21q133 0 170 178l254 1207q47 224 182 326 t385 102z" />
+<glyph unicode="à" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM869 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="á" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM598 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="â" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM1120 1240h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="ã" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM884 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="ä" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM397 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="å" horiz-adv-x="1217" d="M90 0zM406 -20q-147 0 -231.5 106.5t-84.5 298.5q0 198 72 377.5t189 278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 -319 -165zM524 223q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5q-68 0 -129.5 -72 t-98 -190t-36.5 -234q0 -88 33.5 -132t95.5 -44zM1023 1479q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170zM866 1477q0 45 -27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69.5 26t27.5 71z " />
+<glyph unicode="æ" horiz-adv-x="1786" d="M1206 -20q-109 0 -179.5 27t-117.5 87l-16 -94h-188l14 145h-6q-71 -88 -146.5 -126.5t-167.5 -38.5q-146 0 -227.5 109t-81.5 296q0 200 68.5 375.5t185 277t258.5 101.5q96 0 160.5 -38.5t114.5 -125.5h6l57 143h188l-18 -90q44 49 120.5 80t168.5 31 q157 0 246.5 -83.5t89.5 -221.5q0 -187 -167 -288.5t-476 -101.5h-52l-2 -19v-19q0 -96 55.5 -147.5t159.5 -51.5q66 0 152 23t162 63v-227q-179 -86 -361 -86zM518 223q72 0 134 68t99 184.5t37 243.5q0 80 -33 128t-102 48q-68 0 -128 -69t-95 -185.5t-35 -241.5 q0 -84 32.5 -130t90.5 -46zM1341 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95z" />
+<glyph unicode="ç" horiz-adv-x="989" d="M90 0zM506 -20q-201 0 -308.5 107.5t-107.5 303.5q0 212 74.5 385.5t209.5 268t308 94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 -175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 58.5v-246q-152 -79 -336 -79z M653 -250q0 -116 -83 -179t-234 -63q-86 0 -152 23v168q63 -23 125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178z" />
+<glyph unicode="è" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM849 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM528 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="ê" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM1101 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="ë" horiz-adv-x="1141" d="M90 0zM696 922q-88 0 -166 -80t-102 -195h45q155 0 241.5 48.5t86.5 131.5q0 95 -105 95zM532 -20q-210 0 -326 113t-116 319q0 207 82.5 377.5t223.5 260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 -21v-20q0 -91 51.5 -143.5 t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 -86zM365 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM767 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="ì" horiz-adv-x="608" d="M37 0zM338 0h-301l237 1118h301zM579 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="608" d="M37 0zM338 0h-301l237 1118h301zM291 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="î" horiz-adv-x="608" d="M36 0zM338 0h-301l237 1118h301zM845 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="ï" horiz-adv-x="608" d="M37 0zM338 0h-301l237 1118h301zM126 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM528 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="ð" horiz-adv-x="1182" d="M618 1309q-34 34 -124 80l118 186q134 -61 232 -139l237 131l76 -152l-192 -106q81 -107 113 -235t32 -279q0 -249 -69.5 -432.5t-203.5 -283t-323 -99.5q-216 0 -329 110t-113 316q0 165 64.5 301t180.5 212t265 76q83 0 151.5 -31t114.5 -94h6q-20 213 -117 310 l-231 -131l-88 147zM528 205q66 0 122.5 55.5t89 148.5t32.5 193q0 77 -38.5 122.5t-108.5 45.5q-73 0 -130 -53t-88.5 -143t-31.5 -197q0 -81 39 -126.5t114 -45.5z" />
+<glyph unicode="ñ" horiz-adv-x="1237" d="M37 0zM977 0h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301l237 1118h230l-21 -207h6q146 228 355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180zM909 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28 t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="ò" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM845 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311q36 -148 115 -303v-25z" />
+<glyph unicode="ó" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM571 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="ô" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM1109 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="õ" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM865 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode="ö" horiz-adv-x="1198" d="M90 0zM805 696q0 197 -143 197q-75 0 -134.5 -61t-97 -179t-37.5 -243q0 -185 150 -185q75 0 135 61.5t93.5 171t33.5 238.5zM1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-195 0 -311.5 117.5t-116.5 312.5q0 213 71.5 379.5t206.5 258t316 91.5 q196 0 310 -118t114 -325zM386 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM788 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="÷" d="M109 612v219h952v-219h-952zM444 373q0 76 37 113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 -110.5t-102 -40.5t-102.5 39t-37.5 112z" />
+<glyph unicode="ø" horiz-adv-x="1198" d="M1108 696q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-123 0 -225 53l-109 -135l-141 108l119 148q-72 107 -72 256q0 213 71.5 379.5t206.5 258t316 91.5q131 0 227 -56l70 88l145 -110l-84 -105q66 -107 66 -260zM662 903q-81 0 -144.5 -62.5t-98 -169.5t-34.5 -233 v-12l365 453q-35 24 -88 24zM543 215q114 0 193 133t79 318v16l-358 -444q11 -8 35.5 -15.5t50.5 -7.5z" />
+<glyph unicode="ù" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM845 1241h-184q-71 69 -138.5 153.5t-103.5 153.5v21h311 q36 -148 115 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM610 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209 v25z" />
+<glyph unicode="û" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM1143 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25 q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="ü" horiz-adv-x="1237" d="M111 0zM262 1118h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5q0 93 24 213zM411 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 -43.5q-135 0 -135 110zM813 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="ý" horiz-adv-x="1063" d="M0 0zM102 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49zM497 1266q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209v25z" />
+<glyph unicode="þ" horiz-adv-x="1219" d="M813 1139q150 0 232.5 -106.5t82.5 -301.5q0 -199 -69 -381t-182 -276t-250 -94q-178 0 -271 163h-8q-12 -159 -43 -295l-72 -340h-301l435 2048h301l-66 -307q-29 -131 -80 -280h8q131 170 283 170zM682 895q-71 0 -130 -65t-95.5 -184.5t-36.5 -246.5q0 -80 33.5 -128 t105.5 -48q69 0 129 65t97.5 183.5t37.5 247.5q0 88 -37.5 132t-103.5 44z" />
+<glyph unicode="ÿ" horiz-adv-x="1063" d="M0 0zM102 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240q68 -13 116 -13q84 0 147.5 48t117.5 149l26 49zM310 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5 q-135 0 -135 110zM712 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="ı" horiz-adv-x="608" d="M338 0h-301l237 1118h301z" />
+<glyph unicode="Œ" horiz-adv-x="1845" d="M1606 0h-760q-93 -20 -180 -20q-256 0 -399.5 147.5t-143.5 409.5q0 265 99 487.5t273 341.5t402 119q140 0 209 -23h809l-53 -254h-512l-68 -321h477l-55 -254h-477l-80 -377h512zM688 240q88 0 158 32l194 916q-62 39 -168 39q-121 0 -222 -91.5t-158.5 -251.5 t-57.5 -347q0 -147 66.5 -222t187.5 -75z" />
+<glyph unicode="œ" horiz-adv-x="1806" d="M1198 -20q-116 0 -208 38.5t-138 106.5q-63 -68 -147 -106.5t-207 -38.5q-187 0 -297.5 117t-110.5 317q0 216 69 380.5t200 254.5t309 90q209 0 313 -160q154 160 399 160q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-476 -101.5h-51l-2 -21v-20q0 -91 51 -143.5 t147 -52.5q87 0 158 19t172 67v-227q-93 -46 -185.5 -66t-203.5 -20zM645 893q-71 0 -127 -60.5t-90.5 -176.5t-34.5 -242q0 -91 36.5 -140t109.5 -49q109 0 179 134.5t70 336.5q0 96 -37 146.5t-106 50.5zM1362 922q-88 0 -165.5 -78.5t-102.5 -196.5h45q155 0 241 48.5 t86 131.5q0 95 -104 95z" />
+<glyph unicode="Ÿ" horiz-adv-x="1155" d="M186 0zM627 870l374 592h342l-618 -903l-119 -559h-303l119 559l-236 903h312zM432 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM834 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5 q-135 0 -135 110z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M1120 1241h-198q-63 53 -162 168q-105 -88 -232 -168h-217v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M1034 1479q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5q0 109 68.5 173t179.5 64q110 0 182 -65t72 -170zM877 1477q0 45 -27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69.5 26t27.5 71z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M866 1241q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="–" horiz-adv-x="983" d="M41 436l49 230h852l-49 -230h-852z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M41 436l49 230h1835l-49 -230h-1835z" />
+<glyph unicode="‘" horiz-adv-x="440" d="M123 961l-8 22q103 227 262 479h225q-91 -213 -194 -501h-285z" />
+<glyph unicode="’" horiz-adv-x="440" d="M586 1462l8 -22q-103 -227 -262 -479h-226q89 206 195 501h285z" />
+<glyph unicode="‚" horiz-adv-x="569" d="M377 238l8 -23q-103 -227 -262 -479h-225q88 207 194 502h285z" />
+<glyph unicode="“" horiz-adv-x="887" d="M569 961l-8 22q103 227 262 479h226q-97 -227 -195 -501h-285zM123 961l-8 22q103 227 262 479h225q-91 -213 -194 -501h-285z" />
+<glyph unicode="”" horiz-adv-x="887" d="M586 1462l8 -22q-103 -227 -262 -479h-226q89 206 195 501h285zM1032 1462l8 -22q-103 -227 -262 -479h-225q23 53 46.5 111t148.5 390h284z" />
+<glyph unicode="„" horiz-adv-x="1018" d="M377 238l8 -23q-103 -227 -262 -479h-225q88 207 194 502h285zM825 238l9 -23q-100 -221 -263 -479h-225q24 57 49 118.5t146 383.5h284z" />
+<glyph unicode="•" horiz-adv-x="739" d="M104 686q0 106 42.5 194t120 136.5t182.5 48.5q120 0 182.5 -67t62.5 -191q0 -177 -91.5 -277t-248.5 -100q-117 0 -183.5 67t-66.5 189z" />
+<glyph unicode="…" horiz-adv-x="1706" d="M25 0zM25 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM586 115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM1147 115q0 90 53.5 144t150.5 54 q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="664" d="M72 569l401 463l191 -155l-279 -334l135 -350l-246 -103l-202 461v18z" />
+<glyph unicode="›" horiz-adv-x="664" d="M592 535l-402 -463l-190 155l279 334l-136 350l246 103l203 -461v-18z" />
+<glyph unicode="⁄" horiz-adv-x="256" d="M791 1462l-1084 -1462h-239l1087 1462h236z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="776" d="M776 737h-119l-32 -151h-238l33 151h-373l31 174l475 557h260l-121 -563h119zM455 905l58 231l22 74q-13 -20 -43 -58t-211 -247h174z" />
+<glyph unicode="€" d="M899 1237q-97 0 -176 -74.5t-135 -212.5h348l-39 -176h-360q-11 -34 -25 -115h299l-37 -178h-280q0 -120 44.5 -181.5t147.5 -61.5q133 0 283 63v-258q-126 -63 -330 -63q-446 0 -446 501h-152l37 178h127q9 67 22 115h-125l39 176h135q87 252 250.5 393.5t374.5 141.5 q100 0 179 -23t165 -80l-125 -223q-87 49 -131 63.5t-90 14.5z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M471 741h-168v572h-197v149h564v-149h-199v-572zM1047 741l-166 529h-7l5 -111v-418h-164v721h248l159 -510l170 510h240v-721h-168v408l4 121h-6l-174 -529h-141z" />
+<glyph unicode="" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" />
+<glyph horiz-adv-x="1217" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.ttf
new file mode 100755
index 0000000..242d6b2
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.woff
new file mode 100755
index 0000000..ed760c0
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.eot
new file mode 100755
index 0000000..5d20d91
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.svg
new file mode 100755
index 0000000..3ed7be4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansbold" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1417" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM940 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM1258 0h-305v1118 h305v-1118z" />
+<glyph unicode="fl" horiz-adv-x="1417" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1258 0h-305v1556h305v-1556z" />
+<glyph unicode="ffi" horiz-adv-x="2208" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1571 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224 q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1730 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM2048 0h-305v1118h305v-1118z" />
+<glyph unicode="ffl" horiz-adv-x="2208" d="M41 0zM778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM1571 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224 q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229zM2048 0h-305v1556h305v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="586" d="M416 485h-244l-51 977h346zM117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode=""" horiz-adv-x="967" d="M412 1462l-41 -528h-197l-41 528h279zM834 1462l-41 -528h-197l-41 528h279z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M999 844l-47 -232h258v-206h-297l-77 -406h-220l78 406h-194l-76 -406h-215l74 406h-238v206h277l47 232h-252v209h289l77 407h219l-77 -407h198l78 407h215l-78 -407h240v-209h-279zM539 612h196l47 232h-196z" />
+<glyph unicode="$" d="M1092 457q0 -159 -115 -255.5t-322 -115.5v-205h-137v201q-244 5 -428 86v264q87 -43 209.5 -76t218.5 -39v310l-67 26q-198 78 -280.5 169.5t-82.5 226.5q0 145 113.5 238.5t316.5 113.5v153h137v-149q229 -10 414 -92l-94 -234q-156 64 -320 78v-295 q195 -75 277.5 -130t121 -121t38.5 -154zM791 442q0 42 -34 71t-102 60v-249q136 23 136 118zM389 1049q0 -44 30.5 -72.5t98.5 -58.5v235q-129 -19 -129 -104z" />
+<glyph unicode="%" horiz-adv-x="1845" d="M315 1024q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 -72.5 -61.5t-22.5 -188.5zM758 1026q0 -230 -89 -345.5t-261 -115.5q-165 0 -255 118.5t-90 342.5q0 457 345 457q169 0 259.5 -118.5t90.5 -338.5zM1446 1462l-811 -1462h-240l811 1462h240z M1339 440q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 -72.5 -61.5t-22.5 -188.5zM1782 442q0 -229 -89 -344.5t-261 -115.5q-165 0 -255 118.5t-90 341.5q0 457 345 457q169 0 259.5 -118.5t90.5 -338.5z" />
+<glyph unicode="&" horiz-adv-x="1536" d="M1536 0h-377l-115 113q-191 -133 -432 -133q-244 0 -387 112t-143 303q0 137 60.5 233.5t207.5 180.5q-75 86 -109 164.5t-34 171.5q0 152 116.5 245t311.5 93q186 0 297.5 -86.5t111.5 -231.5q0 -119 -69 -217.5t-223 -187.5l284 -277q71 117 123 301h318 q-36 -135 -99 -263.5t-143 -227.5zM403 424q0 -86 64.5 -137t165.5 -51q126 0 227 61l-332 330q-58 -44 -91.5 -92t-33.5 -111zM762 1133q0 53 -36 83.5t-93 30.5q-67 0 -105.5 -32t-38.5 -91q0 -88 95 -194q86 48 132 94.5t46 108.5z" />
+<glyph unicode="'" horiz-adv-x="545" d="M412 1462l-41 -528h-197l-41 528h279z" />
+<glyph unicode="(" horiz-adv-x="694" d="M82 561q0 265 77.5 496t223.5 405h250q-141 -193 -213 -424t-72 -475q0 -245 73.5 -473.5t209.5 -413.5h-248q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="694" d="M612 561q0 -263 -77.5 -490t-223.5 -395h-248q135 184 209 412.5t74 474.5q0 244 -72 475t-213 424h250q147 -175 224 -406.5t77 -494.5z" />
+<glyph unicode="*" horiz-adv-x="1116" d="M688 1556l-41 -368l373 104l33 -252l-340 -24l223 -297l-227 -121l-156 313l-137 -311l-236 119l221 297l-338 26l39 250l365 -104l-41 368h262z" />
+<glyph unicode="+" d="M475 612h-387v219h387v390h219v-390h387v-219h-387v-385h-219v385z" />
+<glyph unicode="," horiz-adv-x="594" d="M459 215q-52 -202 -176 -479h-220q65 266 101 502h280z" />
+<glyph unicode="-" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="." horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="/" horiz-adv-x="846" d="M836 1462l-545 -1462h-277l545 1462h277z" />
+<glyph unicode="0" d="M1096 731q0 -383 -125.5 -567t-386.5 -184q-253 0 -381.5 190t-128.5 561q0 387 125 570.5t385 183.5q253 0 382.5 -192t129.5 -562zM381 731q0 -269 46.5 -385.5t156.5 -116.5q108 0 156 118t48 384q0 269 -48.5 386.5t-155.5 117.5q-109 0 -156 -117.5t-47 -386.5z" />
+<glyph unicode="1" d="M846 0h-309v846l3 139l5 152q-77 -77 -107 -101l-168 -135l-149 186l471 375h254v-1462z" />
+<glyph unicode="2" d="M1104 0h-1022v215l367 371q163 167 213 231.5t72 119.5t22 114q0 88 -48.5 131t-129.5 43q-85 0 -165 -39t-167 -111l-168 199q108 92 179 130t155 58.5t188 20.5q137 0 242 -50t163 -140t58 -206q0 -101 -35.5 -189.5t-110 -181.5t-262.5 -265l-188 -177v-14h637v-260z " />
+<glyph unicode="3" d="M1047 1135q0 -137 -83 -233t-233 -132v-6q177 -22 268 -107.5t91 -230.5q0 -211 -153 -328.5t-437 -117.5q-238 0 -422 79v263q85 -43 187 -70t202 -27q153 0 226 52t73 167q0 103 -84 146t-268 43h-111v237h113q170 0 248.5 44.5t78.5 152.5q0 166 -208 166 q-72 0 -146.5 -24t-165.5 -83l-143 213q200 144 477 144q227 0 358.5 -92t131.5 -256z" />
+<glyph unicode="4" d="M1137 303h-176v-303h-302v303h-624v215l641 944h285v-919h176v-240zM659 543v248q0 62 5 180t8 137h-8q-37 -82 -89 -160l-268 -405h352z" />
+<glyph unicode="5" d="M614 934q212 0 337.5 -119t125.5 -326q0 -245 -151 -377t-432 -132q-244 0 -394 79v267q79 -42 184 -68.5t199 -26.5q283 0 283 232q0 221 -293 221q-53 0 -117 -10.5t-104 -22.5l-123 66l55 745h793v-262h-522l-27 -287l35 7q61 14 151 14z" />
+<glyph unicode="6" d="M72 621q0 434 183.5 646t549.5 212q125 0 196 -15v-247q-89 20 -176 20q-159 0 -259.5 -48t-150.5 -142t-59 -267h13q99 170 317 170q196 0 307 -123t111 -340q0 -234 -132 -370.5t-366 -136.5q-162 0 -282.5 75t-186 219t-65.5 347zM600 227q99 0 152 66.5t53 189.5 q0 107 -49.5 168.5t-149.5 61.5q-94 0 -160.5 -61t-66.5 -142q0 -119 62.5 -201t158.5 -82z" />
+<glyph unicode="7" d="M227 0l549 1200h-721v260h1049v-194l-553 -1266h-324z" />
+<glyph unicode="8" d="M586 1481q210 0 338.5 -95.5t128.5 -257.5q0 -112 -62 -199.5t-200 -156.5q164 -88 235.5 -183.5t71.5 -209.5q0 -180 -141 -289.5t-371 -109.5q-240 0 -377 102t-137 289q0 125 66.5 222t213.5 171q-125 79 -180 169t-55 197q0 157 130 254t339 97zM358 389 q0 -86 60 -134t164 -48q115 0 172 49.5t57 130.5q0 67 -56.5 125.5t-183.5 124.5q-213 -98 -213 -248zM584 1255q-79 0 -127.5 -40.5t-48.5 -108.5q0 -60 38.5 -107.5t139.5 -97.5q98 46 137 94t39 111q0 69 -50 109t-128 40z" />
+<glyph unicode="9" d="M1098 838q0 -432 -182 -645t-551 -213q-130 0 -197 14v248q84 -21 176 -21q155 0 255 45.5t153 143t61 268.5h-12q-58 -94 -134 -132t-190 -38q-191 0 -301 122.5t-110 340.5q0 235 133.5 371.5t363.5 136.5q162 0 283.5 -76t186.5 -220.5t65 -344.5zM569 1231 q-96 0 -150 -66t-54 -190q0 -106 49 -168t149 -62q94 0 161 61.5t67 141.5q0 119 -62.5 201t-159.5 82z" />
+<glyph unicode=":" horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode=";" horiz-adv-x="594" d="M444 238l15 -23q-52 -202 -176 -479h-220q65 266 101 502h280zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode="<" d="M1081 203l-993 438v143l993 496v-240l-684 -317l684 -281v-239z" />
+<glyph unicode="=" d="M88 805v219h993v-219h-993zM88 418v219h993v-219h-993z" />
+<glyph unicode=">" d="M88 442l684 281l-684 317v240l993 -496v-143l-993 -438v239z" />
+<glyph unicode="?" horiz-adv-x="977" d="M276 485v74q0 96 41 167t150 151q105 75 138.5 122t33.5 105q0 65 -48 99t-134 34q-150 0 -342 -98l-109 219q223 125 473 125q206 0 327.5 -99t121.5 -264q0 -110 -50 -190t-190 -180q-96 -71 -121.5 -108t-25.5 -97v-60h-265zM244 143q0 84 45 127t131 43 q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M1735 752q0 -144 -46 -263.5t-130 -187.5t-195 -68q-74 0 -131 35.5t-82 93.5h-16q-108 -129 -275 -129q-177 0 -279 106.5t-102 291.5q0 211 134 340t350 129q86 0 189.5 -16.5t170.5 -39.5l-23 -489q0 -139 76 -139q64 0 102 93.5t38 244.5q0 161 -67 284.5 t-188.5 188.5t-277.5 65q-202 0 -351 -83t-228.5 -239.5t-79.5 -361.5q0 -276 147.5 -423.5t427.5 -147.5q106 0 233 23.5t250 68.5v-192q-214 -91 -475 -91q-380 0 -592.5 200t-212.5 556q0 247 108.5 448.5t309 316t461.5 114.5q220 0 393 -90t267 -256t94 -383zM711 627 q0 -211 172 -211q90 0 137 63.5t57 206.5l13 221q-51 11 -115 11q-125 0 -194.5 -78t-69.5 -213z" />
+<glyph unicode="A" horiz-adv-x="1413" d="M1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381z" />
+<glyph unicode="B" horiz-adv-x="1376" d="M184 1462h455q311 0 451.5 -88.5t140.5 -281.5q0 -131 -61.5 -215t-163.5 -101v-10q139 -31 200.5 -116t61.5 -226q0 -200 -144.5 -312t-392.5 -112h-547v1462zM494 883h180q126 0 182.5 39t56.5 129q0 84 -61.5 120.5t-194.5 36.5h-163v-325zM494 637v-381h202 q128 0 189 49t61 150q0 182 -260 182h-192z" />
+<glyph unicode="C" horiz-adv-x="1305" d="M805 1225q-175 0 -271 -131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 -488 193.5t-169 555.5q0 228 83 399.5t238.5 263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29z" />
+<glyph unicode="D" horiz-adv-x="1516" d="M1397 745q0 -361 -205.5 -553t-593.5 -192h-414v1462h459q358 0 556 -189t198 -528zM1075 737q0 471 -416 471h-165v-952h133q448 0 448 481z" />
+<glyph unicode="E" horiz-adv-x="1147" d="M1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256z" />
+<glyph unicode="F" horiz-adv-x="1124" d="M489 0h-305v1462h838v-254h-533v-377h496v-253h-496v-578z" />
+<glyph unicode="G" horiz-adv-x="1483" d="M739 821h580v-758q-141 -46 -265.5 -64.5t-254.5 -18.5q-331 0 -505.5 194.5t-174.5 558.5q0 354 202.5 552t561.5 198q225 0 434 -90l-103 -248q-160 80 -333 80q-201 0 -322 -135t-121 -363q0 -238 97.5 -363.5t283.5 -125.5q97 0 197 20v305h-277v258z" />
+<glyph unicode="H" horiz-adv-x="1567" d="M1382 0h-309v631h-579v-631h-310v1462h310v-573h579v573h309v-1462z" />
+<glyph unicode="I" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310z" />
+<glyph unicode="J" horiz-adv-x="678" d="M31 -430q-105 0 -183 22v258q80 -20 146 -20q102 0 146 63.5t44 198.5v1370h310v-1368q0 -256 -117 -390t-346 -134z" />
+<glyph unicode="K" horiz-adv-x="1360" d="M1360 0h-352l-383 616l-131 -94v-522h-310v1462h310v-669l122 172l396 497h344l-510 -647z" />
+<glyph unicode="L" horiz-adv-x="1157" d="M184 0v1462h310v-1206h593v-256h-903z" />
+<glyph unicode="M" horiz-adv-x="1931" d="M803 0l-352 1147h-9q19 -350 19 -467v-680h-277v1462h422l346 -1118h6l367 1118h422v-1462h-289v692q0 49 1.5 113t13.5 340h-9l-377 -1145h-284z" />
+<glyph unicode="N" horiz-adv-x="1665" d="M1481 0h-394l-636 1106h-9q19 -293 19 -418v-688h-277v1462h391l635 -1095h7q-15 285 -15 403v692h279v-1462z" />
+<glyph unicode="O" horiz-adv-x="1630" d="M1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" />
+<glyph unicode="P" horiz-adv-x="1286" d="M494 774h102q143 0 214 56.5t71 164.5q0 109 -59.5 161t-186.5 52h-141v-434zM1194 1006q0 -236 -147.5 -361t-419.5 -125h-133v-520h-310v1462h467q266 0 404.5 -114.5t138.5 -341.5z" />
+<glyph unicode="Q" horiz-adv-x="1630" d="M1511 733q0 -258 -91.5 -432.5t-268.5 -255.5l352 -393h-397l-268 328h-23q-336 0 -516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" />
+<glyph unicode="R" horiz-adv-x="1352" d="M494 813h100q147 0 217 49t70 154q0 104 -71.5 148t-221.5 44h-94v-395zM494 561v-561h-310v1462h426q298 0 441 -108.5t143 -329.5q0 -129 -71 -229.5t-201 -157.5q330 -493 430 -637h-344l-349 561h-165z" />
+<glyph unicode="S" horiz-adv-x="1128" d="M1047 406q0 -198 -142.5 -312t-396.5 -114q-234 0 -414 88v288q148 -66 250.5 -93t187.5 -27q102 0 156.5 39t54.5 116q0 43 -24 76.5t-70.5 64.5t-189.5 99q-134 63 -201 121t-107 135t-40 180q0 194 131.5 305t363.5 111q114 0 217.5 -27t216.5 -76l-100 -241 q-117 48 -193.5 67t-150.5 19q-88 0 -135 -41t-47 -107q0 -41 19 -71.5t60.5 -59t196.5 -102.5q205 -98 281 -196.5t76 -241.5z" />
+<glyph unicode="T" horiz-adv-x="1186" d="M748 0h-310v1204h-397v258h1104v-258h-397v-1204z" />
+<glyph unicode="U" horiz-adv-x="1548" d="M1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309z" />
+<glyph unicode="V" horiz-adv-x="1331" d="M1018 1462h313l-497 -1462h-338l-496 1462h313l275 -870q23 -77 47.5 -179.5t30.5 -142.5q11 92 75 322z" />
+<glyph unicode="W" horiz-adv-x="1980" d="M1608 0h-353l-198 768q-11 41 -37.5 169.5t-30.5 172.5q-6 -54 -30 -173.5t-37 -170.5l-197 -766h-352l-373 1462h305l187 -798q49 -221 71 -383q6 57 27.5 176.5t40.5 185.5l213 819h293l213 -819q14 -55 35 -168t32 -194q10 78 32 194.5t40 188.5l186 798h305z" />
+<glyph unicode="X" horiz-adv-x="1366" d="M1366 0h-354l-340 553l-340 -553h-332l485 754l-454 708h342l315 -526l309 526h334l-459 -725z" />
+<glyph unicode="Y" horiz-adv-x="1278" d="M639 860l305 602h334l-485 -893v-569h-308v559l-485 903h336z" />
+<glyph unicode="Z" horiz-adv-x="1186" d="M1137 0h-1088v201l701 1005h-682v256h1050v-200l-700 -1006h719v-256z" />
+<glyph unicode="[" horiz-adv-x="678" d="M627 -324h-484v1786h484v-211h-224v-1364h224v-211z" />
+<glyph unicode="\" horiz-adv-x="846" d="M289 1462l545 -1462h-277l-545 1462h277z" />
+<glyph unicode="]" horiz-adv-x="678" d="M51 -113h223v1364h-223v211h484v-1786h-484v211z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M8 520l438 950h144l495 -950h-239l-322 643l-280 -643h-236z" />
+<glyph unicode="_" horiz-adv-x="842" d="M846 -324h-850v140h850v-140z" />
+<glyph unicode="`" horiz-adv-x="1243" d="M707 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="a" horiz-adv-x="1237" d="M870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48t-65 -134 q0 -129 148 -129q106 0 169.5 61t63.5 162v92z" />
+<glyph unicode="b" horiz-adv-x="1296" d="M782 1139q198 0 310 -154.5t112 -423.5q0 -277 -115.5 -429t-314.5 -152q-197 0 -309 143h-21l-51 -123h-233v1556h305v-362q0 -69 -12 -221h12q107 166 317 166zM684 895q-113 0 -165 -69.5t-54 -229.5v-33q0 -180 53.5 -258t169.5 -78q94 0 149.5 86.5t55.5 251.5 t-56 247.5t-153 82.5z" />
+<glyph unicode="c" horiz-adv-x="1053" d="M614 -20q-522 0 -522 573q0 285 142 435.5t407 150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18z" />
+<glyph unicode="d" horiz-adv-x="1296" d="M514 -20q-197 0 -309.5 153t-112.5 424q0 275 114.5 428.5t315.5 153.5q211 0 322 -164h10q-23 125 -23 223v358h306v-1556h-234l-59 145h-13q-104 -165 -317 -165zM621 223q117 0 171.5 68t59.5 231v33q0 180 -55.5 258t-180.5 78q-102 0 -158.5 -86.5t-56.5 -251.5 t57 -247.5t163 -82.5z" />
+<glyph unicode="e" horiz-adv-x="1210" d="M623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z" />
+<glyph unicode="f" horiz-adv-x="793" d="M778 889h-264v-889h-305v889h-168v147l168 82v82q0 191 94 279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5v-70h264v-229z" />
+<glyph unicode="g" horiz-adv-x="1157" d="M1133 1118v-155l-175 -45q48 -75 48 -168q0 -180 -125.5 -280.5t-348.5 -100.5l-55 3l-45 5q-47 -36 -47 -80q0 -66 168 -66h190q184 0 280.5 -79t96.5 -232q0 -196 -163.5 -304t-469.5 -108q-234 0 -357.5 81.5t-123.5 228.5q0 101 63 169t185 97q-47 20 -82 65.5 t-35 96.5q0 64 37 106.5t107 83.5q-88 38 -139.5 122t-51.5 198q0 183 119 283t340 100q47 0 111.5 -8.5t82.5 -12.5h390zM270 -158q0 -63 60.5 -99t169.5 -36q164 0 257 45t93 123q0 63 -55 87t-170 24h-158q-84 0 -140.5 -39.5t-56.5 -104.5zM381 752q0 -91 41.5 -144 t126.5 -53q86 0 126 53t40 144q0 202 -166 202q-168 0 -168 -202z" />
+<glyph unicode="h" horiz-adv-x="1346" d="M1192 0h-305v653q0 242 -180 242q-128 0 -185 -87t-57 -282v-526h-305v1556h305v-317q0 -37 -7 -174l-7 -90h16q102 164 324 164q197 0 299 -106t102 -304v-729z" />
+<glyph unicode="i" horiz-adv-x="625" d="M147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM465 0h-305v1118h305v-1118z" />
+<glyph unicode="j" horiz-adv-x="625" d="M70 -492q-117 0 -201 25v240q70 -19 143 -19q77 0 112.5 43t35.5 127v1194h305v-1239q0 -178 -103 -274.5t-292 -96.5zM147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150z" />
+<glyph unicode="k" horiz-adv-x="1270" d="M453 608l133 170l313 340h344l-444 -485l471 -633h-352l-322 453l-131 -105v-348h-305v1556h305v-694l-16 -254h4z" />
+<glyph unicode="l" horiz-adv-x="625" d="M465 0h-305v1556h305v-1556z" />
+<glyph unicode="m" horiz-adv-x="2011" d="M1161 0h-305v653q0 121 -40.5 181.5t-127.5 60.5q-117 0 -170 -86t-53 -283v-526h-305v1118h233l41 -143h17q45 77 130 120.5t195 43.5q251 0 340 -164h27q45 78 132.5 121t197.5 43q190 0 287.5 -97.5t97.5 -312.5v-729h-306v653q0 121 -40.5 181.5t-127.5 60.5 q-112 0 -167.5 -80t-55.5 -254v-561z" />
+<glyph unicode="n" horiz-adv-x="1346" d="M1192 0h-305v653q0 121 -43 181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305v1118h233l41 -143h17q51 81 140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729z" />
+<glyph unicode="o" horiz-adv-x="1268" d="M403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z" />
+<glyph unicode="p" horiz-adv-x="1296" d="M774 -20q-197 0 -309 143h-16q16 -140 16 -162v-453h-305v1610h248l43 -145h14q107 166 317 166q198 0 310 -153t112 -425q0 -179 -52.5 -311t-149.5 -201t-228 -69zM684 895q-113 0 -165 -69.5t-54 -229.5v-33q0 -180 53.5 -258t169.5 -78q205 0 205 338 q0 165 -50.5 247.5t-158.5 82.5z" />
+<glyph unicode="q" horiz-adv-x="1296" d="M623 219q116 0 170 66.5t59 232.5v37q0 180 -55.5 258t-178.5 78q-215 0 -215 -338q0 -168 53.5 -251t166.5 -83zM514 -20q-198 0 -310 152.5t-112 424.5q0 274 114.5 428t313.5 154q106 0 185 -40t139 -124h8l27 143h258v-1610h-306v469q0 61 13 168h-13 q-49 -81 -130 -123t-187 -42z" />
+<glyph unicode="r" horiz-adv-x="930" d="M784 1139q62 0 103 -9l-23 -286q-37 10 -90 10q-146 0 -227.5 -75t-81.5 -210v-569h-305v1118h231l45 -188h15q52 94 140.5 151.5t192.5 57.5z" />
+<glyph unicode="s" horiz-adv-x="1018" d="M940 332q0 -172 -119.5 -262t-357.5 -90q-122 0 -208 16.5t-161 48.5v252q85 -40 191.5 -67t187.5 -27q166 0 166 96q0 36 -22 58.5t-76 51t-144 66.5q-129 54 -189.5 100t-88 105.5t-27.5 146.5q0 149 115.5 230.5t327.5 81.5q202 0 393 -88l-92 -220q-84 36 -157 59 t-149 23q-135 0 -135 -73q0 -41 43.5 -71t190.5 -89q131 -53 192 -99t90 -106t29 -143z" />
+<glyph unicode="t" horiz-adv-x="889" d="M631 223q80 0 192 35v-227q-114 -51 -280 -51q-183 0 -266.5 92.5t-83.5 277.5v539h-146v129l168 102l88 236h195v-238h313v-229h-313v-539q0 -65 36.5 -96t96.5 -31z" />
+<glyph unicode="u" horiz-adv-x="1346" d="M952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234z" />
+<glyph unicode="v" horiz-adv-x="1165" d="M426 0l-426 1118h319l216 -637q36 -121 45 -229h6q5 96 45 229l215 637h319l-426 -1118h-313z" />
+<glyph unicode="w" horiz-adv-x="1753" d="M1079 0l-86 391l-116 494h-7l-204 -885h-328l-318 1118h304l129 -495q31 -133 63 -367h6q4 76 35 241l16 85l138 536h336l131 -536q4 -22 12.5 -65t16.5 -91.5t14.5 -95t7.5 -74.5h6q9 72 32 197.5t33 169.5l134 495h299l-322 -1118h-332z" />
+<glyph unicode="x" horiz-adv-x="1184" d="M389 571l-360 547h346l217 -356l219 356h346l-364 -547l381 -571h-347l-235 383l-236 -383h-346z" />
+<glyph unicode="y" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55z" />
+<glyph unicode="z" horiz-adv-x="999" d="M938 0h-883v180l518 705h-487v233h834v-198l-504 -687h522v-233z" />
+<glyph unicode="{" horiz-adv-x="807" d="M287 270q0 87 -65.5 133t-190.5 46v239q126 0 191 44t65 126v8v318q0 153 97 215.5t341 62.5v-225q-99 -3 -136.5 -38t-37.5 -103v-299q-6 -188 -234 -222v-12q234 -35 234 -212v-9v-299q0 -68 37 -103t137 -38v-226q-244 0 -341 62.5t-97 216.5v315z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M455 1550h219v-2015h-219v2015z" />
+<glyph unicode="}" horiz-adv-x="807" d="M520 -45q0 -112 -41 -169t-135.5 -83.5t-261.5 -26.5v226q99 2 136.5 36t37.5 105v299v11q0 86 59 139.5t174 70.5v12q-227 34 -233 222v299q0 70 -37 104t-137 37v225q167 0 262 -26.5t135.5 -84t40.5 -167.5v-318v-10q0 -84 61.5 -126t194.5 -42v-239 q-125 0 -190.5 -41t-65.5 -138v-315z" />
+<glyph unicode="~" d="M322 672q-55 0 -117.5 -33.5t-116.5 -87.5v231q103 109 256 109q73 0 137.5 -16t139.5 -48q129 -55 227 -55q53 0 116 32t117 89v-231q-101 -109 -256 -109q-66 0 -126 13t-150 50q-131 56 -227 56z" />
+<glyph unicode="¡" horiz-adv-x="586" d="M168 606h244l51 -975h-346zM467 948q0 -84 -45 -127t-131 -43q-83 0 -128.5 44t-45.5 126q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126z" />
+<glyph unicode="¢" d="M563 176q-420 59 -420 565q0 261 104.5 403t315.5 173v166h178v-158q166 -9 299 -74l-90 -235q-72 29 -134 47t-124 18q-121 0 -179 -83.5t-58 -254.5q0 -327 237 -327q82 0 148 15.5t166 60.5v-254q-127 -61 -265 -70v-188h-178v196z" />
+<glyph unicode="£" d="M700 1483q195 0 390 -82l-93 -230q-157 64 -272 64q-78 0 -120 -44.5t-42 -127.5v-193h375v-219h-375v-143q0 -170 -151 -248h718v-260h-1048v248q103 44 141.5 101t38.5 157v145h-178v219h178v195q0 201 114.5 309.5t323.5 108.5z" />
+<glyph unicode="¤" d="M188 723q0 102 54 197l-129 127l147 147l127 -127q91 53 197 53q105 0 196 -55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 -145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 -54 197zM395 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
+<glyph unicode="¥" d="M584 860l264 602h313l-383 -747h195v-178h-246v-138h246v-178h-246v-221h-287v221h-247v178h247v138h-247v178h190l-377 747h316z" />
+<glyph unicode="¦" horiz-adv-x="1128" d="M455 1550h219v-815h-219v815zM455 350h219v-815h-219v815z" />
+<glyph unicode="§" horiz-adv-x="995" d="M121 805q0 79 36 144.5t97 105.5q-133 84 -133 233q0 131 111.5 210t293.5 79q170 0 363 -84l-82 -190q-68 32 -138.5 57.5t-148.5 25.5q-81 0 -118 -23t-37 -71q0 -49 49.5 -86t163.5 -82q163 -64 240 -148.5t77 -193.5q0 -177 -125 -260q62 -40 93.5 -92.5t31.5 -126.5 q0 -148 -119.5 -235.5t-320.5 -87.5q-203 0 -349 79v207q81 -41 180 -69.5t169 -28.5q194 0 194 117q0 39 -18.5 63t-63.5 49.5t-125 59.5q-183 74 -252 152.5t-69 195.5zM344 827q0 -67 65 -119t181 -98q78 57 78 146q0 68 -50.5 115t-183.5 96q-37 -14 -63.5 -53.5 t-26.5 -86.5z" />
+<glyph unicode="¨" horiz-adv-x="1243" d="M279 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM682 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M895 1010q-97 0 -150 -74t-53 -205q0 -280 203 -280q57 0 123 15t123 44v-191q-120 -57 -252 -57q-204 0 -316 125t-112 346q0 220 110.5 342.5t309.5 122.5q149 0 305 -78l-74 -168q-113 58 -217 58zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 -223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223t-304 81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304z" />
+<glyph unicode="ª" horiz-adv-x="784" d="M561 764l-31 110q-43 -58 -105 -90t-136 -32q-117 0 -179.5 58.5t-62.5 164.5q0 109 82.5 163.5t267.5 63.5l99 4q0 117 -127 117q-81 0 -217 -61l-66 135q66 32 145.5 57t178.5 25q137 0 211.5 -71t74.5 -202v-442h-135zM252 977q0 -38 23 -56t55 -18q77 0 121.5 41.5 t44.5 106.5v36l-99 -6q-145 -10 -145 -104z" />
+<glyph unicode="«" horiz-adv-x="1260" d="M82 573l371 455l219 -119l-279 -348l279 -348l-219 -119l-371 453v26zM588 573l370 455l220 -119l-279 -348l279 -348l-220 -119l-370 453v26z" />
+<glyph unicode="¬" d="M1081 248h-219v364h-774v219h993v-583z" />
+<glyph unicode="­" horiz-adv-x="659" d="M61 424zM61 424v250h537v-250h-537z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M1157 905q0 -170 -143 -233l237 -400h-254l-178 338h-47v-338h-229v916h264q181 0 265.5 -70t84.5 -213zM772 778h31q66 0 94.5 28.5t28.5 94.5q0 65 -28 92t-97 27h-29v-242zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370 t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 -223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223t-304 81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304z" />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v201h1036v-201z" />
+<glyph unicode="°" horiz-adv-x="877" d="M92 1137q0 92 46 172t126 127t174 47q92 0 172.5 -46t127 -127t46.5 -173q0 -93 -46.5 -173.5t-126.5 -125.5t-173 -45q-145 0 -245.5 99.5t-100.5 244.5zM283 1137q0 -64 44.5 -109t110.5 -45t111 46t45 108q0 63 -45.5 110t-110.5 47q-64 0 -109.5 -46t-45.5 -111z" />
+<glyph unicode="±" d="M475 674h-387v219h387v389h219v-389h387v-219h-387v-385h-219v385zM88 0v219h993v-219h-993z" />
+<glyph unicode="²" horiz-adv-x="776" d="M702 586h-647v168l224 219q102 100 130.5 144.5t28.5 94.5q0 38 -24 58t-64 20q-81 0 -180 -88l-123 152q147 129 336 129q137 0 216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200z" />
+<glyph unicode="³" horiz-adv-x="776" d="M666 1249q0 -143 -170 -198v-13q94 -20 146 -75t52 -134q0 -121 -88 -190.5t-274 -69.5q-143 0 -273 70v190q148 -90 271 -90q143 0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 63t-76 25q-47 0 -89 -19t-99 -59l-101 141 q62 47 137.5 78t178.5 31q127 0 208 -64t81 -168z" />
+<glyph unicode="´" horiz-adv-x="1243" d="M332 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="µ" horiz-adv-x="1352" d="M465 465q0 -121 44 -181.5t138 -60.5q126 0 183 86.5t57 282.5v526h305v-1118h-231l-43 150h-15q-42 -85 -102 -127.5t-148 -42.5q-62 0 -114 23t-84 67l5 -85l5 -157v-320h-305v1610h305v-653z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1167 -260h-161v1616h-166v-1616h-162v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h604v-1816z" />
+<glyph unicode="·" horiz-adv-x="584" d="M117 723q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M418 -250q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21v168q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5z" />
+<glyph unicode="¹" horiz-adv-x="776" d="M584 586h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61l-109 127l301 235h191v-876z" />
+<glyph unicode="º" horiz-adv-x="795" d="M737 1116q0 -171 -91.5 -267.5t-250.5 -96.5q-153 0 -245.5 98.5t-92.5 265.5q0 169 89.5 266t252.5 97q152 0 245 -98.5t93 -264.5zM260 1116q0 -100 32.5 -150.5t104.5 -50.5t103.5 50.5t31.5 150.5t-31.5 149.5t-103.5 49.5t-104.5 -49.5t-32.5 -149.5z" />
+<glyph unicode="»" horiz-adv-x="1260" d="M1178 547l-371 -453l-219 119l278 348l-278 348l219 119l371 -455v-26zM672 547l-371 -453l-219 119l278 348l-278 348l219 119l371 -455v-26z" />
+<glyph unicode="¼" horiz-adv-x="1804" d="M46 0zM538 586h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61l-109 127l301 235h191v-876zM1370 1462l-811 -1462h-239l811 1462h239zM1682 152h-125v-151h-238v151h-383v154l385 577h236v-563h125v-168zM1319 320v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77l-127 -191 h198z" />
+<glyph unicode="½" horiz-adv-x="1804" d="M46 0zM538 586h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61l-109 127l301 235h191v-876zM1370 1462l-811 -1462h-239l811 1462h239zM1716 1h-647v168l224 219q102 100 130.5 144.5t28.5 94.5q0 38 -24 58t-64 20q-81 0 -180 -88l-123 152q147 129 336 129 q137 0 216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200z" />
+<glyph unicode="¾" horiz-adv-x="1804" d="M90 0zM697 1249q0 -143 -170 -198v-13q94 -20 146 -75t52 -134q0 -121 -88 -190.5t-274 -69.5q-143 0 -273 70v190q148 -90 271 -90q143 0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 63t-76 25q-47 0 -89 -19t-99 -59l-101 141 q62 47 137.5 78t178.5 31q127 0 208 -64t81 -168zM1441 1462l-811 -1462h-239l811 1462h239zM1712 152h-125v-151h-238v151h-383v154l385 577h236v-563h125v-168zM1349 320v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77l-127 -191h198z" />
+<glyph unicode="¿" horiz-adv-x="977" d="M713 606v-74q0 -98 -44.5 -169t-152.5 -148q-109 -78 -137.5 -122t-28.5 -107q0 -57 43.5 -94t132.5 -37q79 0 169 29t186 71l102 -221q-98 -56 -221.5 -90.5t-229.5 -34.5q-220 0 -345.5 96.5t-125.5 265.5q0 108 48.5 187t191.5 184q95 70 121.5 107t26.5 98v59h264z M745 948q0 -84 -45 -127t-131 -43q-83 0 -128.5 44t-45.5 126q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126z" />
+<glyph unicode="À" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM713 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="Á" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM541 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Â" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM938 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Ã" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM543 1684q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16 q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="Ä" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM365 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM768 1743 q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="Å" horiz-adv-x="1413" d="M0 0zM1079 0l-106 348h-533l-106 -348h-334l516 1468h379l518 -1468h-334zM899 608q-147 473 -165.5 535t-26.5 98q-33 -128 -189 -633h381zM959 1567q0 -108 -71 -174t-183 -66t-180 64t-68 174q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169zM801 1565 q0 45 -27 70.5t-69 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69 26t27 71z" />
+<glyph unicode="Æ" horiz-adv-x="1950" d="M1829 0h-873v348h-491l-150 -348h-315l655 1462h1174v-254h-563v-321h526v-254h-526v-377h563v-256zM578 608h378v590h-127z" />
+<glyph unicode="Ç" horiz-adv-x="1305" d="M119 0zM805 1225q-175 0 -271 -131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 -488 193.5t-169 555.5q0 228 83 399.5t238.5 263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29zM959 -250q0 -128 -75.5 -185t-233.5 -57 q-78 0 -146 21v168q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5z" />
+<glyph unicode="È" horiz-adv-x="1147" d="M184 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM634 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="É" horiz-adv-x="1147" d="M184 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM424 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Ê" horiz-adv-x="1147" d="M175 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM841 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Ë" horiz-adv-x="1147" d="M184 0zM1026 0h-842v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256zM272 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM675 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99 q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="Ì" horiz-adv-x="678" d="M0 0zM184 0v1462h310v-1462h-310zM317 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="Í" horiz-adv-x="678" d="M167 0zM184 0v1462h310v-1462h-310zM167 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Î" horiz-adv-x="678" d="M0 0zM184 0v1462h310v-1462h-310zM570 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Ï" horiz-adv-x="678" d="M0 0zM184 0v1462h310v-1462h-310zM-3 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM400 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5 t-40.5 100.5z" />
+<glyph unicode="Ð" horiz-adv-x="1516" d="M47 850h137v612h459q358 0 556 -189t198 -528q0 -361 -205.5 -553t-593.5 -192h-414v596h-137v254zM1075 737q0 232 -104 351.5t-314 119.5h-163v-358h237v-254h-237v-340h131q450 0 450 481z" />
+<glyph unicode="Ñ" horiz-adv-x="1665" d="M184 0zM1481 0h-394l-636 1106h-9q19 -293 19 -418v-688h-277v1462h391l635 -1095h7q-15 285 -15 403v692h279v-1462zM668 1684q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149 q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="Ò" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM824 1579q-63 44 -185 142.5t-190 164.5v21h342 q63 -101 235 -301v-27h-202z" />
+<glyph unicode="Ó" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM658 1579v27q172 200 235 301h342v-21 q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Ô" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM1047 1579q-157 93 -234 176q-78 -81 -229 -176h-203 v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Õ" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM652 1684q-31 0 -59.5 -26.5t-41.5 -80.5h-149 q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="Ö" horiz-adv-x="1630" d="M119 0zM1511 733q0 -363 -180 -558t-516 -195t-516 195t-180 560t180.5 557.5t517.5 192.5t515.5 -194t178.5 -558zM444 733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5zM474 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37 t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM877 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="×" d="M428 723l-299 301l152 154l301 -299l305 299l153 -150l-305 -305l301 -303l-149 -152l-305 301l-301 -299l-150 152z" />
+<glyph unicode="Ø" horiz-adv-x="1630" d="M1511 733q0 -363 -180 -558t-516 -195q-197 0 -336 65l-90 -135l-162 108l90 136q-198 194 -198 581q0 365 180.5 557.5t517.5 192.5q198 0 344 -70l84 125l160 -104l-88 -131q194 -194 194 -572zM444 733q0 -191 56 -307l506 756q-84 45 -189 45q-185 0 -279 -124.5 t-94 -369.5zM1186 733q0 180 -51 297l-500 -751q76 -39 180 -39q371 0 371 493z" />
+<glyph unicode="Ù" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM750 1579q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="Ú" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM602 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Û" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM1006 1579q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357 q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="Ü" horiz-adv-x="1548" d="M174 0zM1374 1462v-946q0 -162 -72.5 -284t-209.5 -187t-324 -65q-282 0 -438 144.5t-156 395.5v942h309v-895q0 -169 68 -248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309zM433 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5 q-64 0 -101.5 35t-37.5 98zM836 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="Ý" horiz-adv-x="1278" d="M0 0zM639 860l305 602h334l-485 -893v-569h-308v559l-485 903h336zM461 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="Þ" horiz-adv-x="1286" d="M1194 770q0 -229 -142.5 -353t-404.5 -124h-153v-293h-310v1462h310v-229h178q254 0 388 -119t134 -344zM494 543h100q145 0 216 52.5t71 174.5q0 107 -63.5 159t-199.5 52h-124v-438z" />
+<glyph unicode="ß" horiz-adv-x="1456" d="M1249 1241q0 -64 -21 -112.5t-53 -86.5t-69 -67t-69 -53t-53 -45t-21 -43q0 -27 26.5 -53t92.5 -66q146 -91 198.5 -140t78 -110t25.5 -139q0 -172 -116.5 -259t-343.5 -87q-99 0 -171 14.5t-132 48.5v242q53 -36 135.5 -61t146.5 -25q168 0 168 123q0 41 -16 66.5 t-57 55.5t-115 72q-126 72 -175 131.5t-49 140.5q0 64 35 117t105 102q77 55 108 95t31 86q0 60 -63.5 100.5t-163.5 40.5q-116 0 -181 -52.5t-65 -148.5v-1128h-305v1139q0 201 146.5 314.5t404.5 113.5q244 0 391 -88.5t147 -237.5z" />
+<glyph unicode="à" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM614 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="á" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM441 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="â" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM843 1240q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="ã" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM467 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36 t-73 16.5z" />
+<glyph unicode="ä" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM285 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM688 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36 q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="å" horiz-adv-x="1237" d="M86 0zM870 0l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 -253.5 92t-92.5 262q0 178 124.5 262.5t375.5 93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 -98t120 -298v-745h-213zM780 518l-118 -4q-133 -4 -198 -48 t-65 -134q0 -129 148 -129q106 0 169.5 61t63.5 162v92zM883 1479q0 -108 -71 -174t-183 -66t-180 64t-68 174q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169zM725 1477q0 45 -27 70.5t-69 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69 26t27 71z" />
+<glyph unicode="æ" horiz-adv-x="1878" d="M1329 -20q-137 0 -249.5 50.5t-184.5 155.5q-98 -117 -196.5 -161.5t-256.5 -44.5q-161 0 -258.5 94.5t-97.5 259.5q0 178 121 262.5t362 93.5l191 6v84q0 69 -44.5 102t-121.5 33q-140 0 -305 -77l-99 202q189 101 422 101q227 0 342 -131q66 64 152.5 96.5t206.5 32.5 q221 0 349 -137.5t128 -370.5v-148h-723q5 -130 77 -203t202 -73q196 0 380 88v-236q-79 -39 -171 -59t-226 -20zM760 518l-113 -4q-124 -4 -186 -47.5t-62 -134.5q0 -129 140 -129q101 0 161 61t60 162v92zM1307 922q-217 0 -234 -236h430q-2 112 -55 174t-141 62z" />
+<glyph unicode="ç" horiz-adv-x="1053" d="M92 0zM614 -20q-522 0 -522 573q0 285 142 435.5t407 150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18zM805 -250q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21 v168q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5z" />
+<glyph unicode="è" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M620 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="é" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M447 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="ê" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M860 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="ë" horiz-adv-x="1210" d="M92 0zM623 922q-97 0 -152 -61.5t-63 -174.5h428q-2 113 -59 174.5t-154 61.5zM666 -20q-270 0 -422 149t-152 422q0 281 140.5 434.5t388.5 153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 67v-236q-80 -40 -171 -59.5t-222 -19.5z M297 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="ì" horiz-adv-x="625" d="M0 0zM465 0h-305v1118h305v-1118zM274 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="í" horiz-adv-x="625" d="M145 0zM465 0h-305v1118h305v-1118zM145 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="î" horiz-adv-x="625" d="M0 0zM465 0h-305v1118h305v-1118zM544 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="ï" horiz-adv-x="625" d="M0 0zM465 0h-305v1118h305v-1118zM-29 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM374 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5 t-40.5 100.5z" />
+<glyph unicode="ð" horiz-adv-x="1268" d="M510 1303q-80 53 -152 92l101 176q144 -65 258 -141l225 139l100 -154l-170 -104q156 -143 230 -324.5t74 -413.5q0 -280 -145 -436.5t-400 -156.5q-245 0 -392 137t-147 372q0 233 130 369.5t351 136.5q205 0 275 -98l8 4q-67 162 -192 281l-230 -142l-100 156zM864 532 q0 108 -61 173t-168 65q-121 0 -176.5 -68.5t-55.5 -214.5q0 -140 60 -211t172 -71q123 0 176 82t53 245z" />
+<glyph unicode="ñ" horiz-adv-x="1346" d="M160 0zM1192 0h-305v653q0 121 -43 181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305v1118h233l41 -143h17q51 81 140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729zM508 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82 q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="ò" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M612 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="ó" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M467 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="ô" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M864 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="õ" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M469 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode="ö" horiz-adv-x="1268" d="M92 0zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1176 561q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 202.5t-66 308q0 274 143 426t402 152q161 0 284 -70t189 -201t66 -307z M291 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM694 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="÷" d="M88 612v219h993v-219h-993zM444 373q0 76 37 113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 -110.5t-102 -40.5t-102.5 39t-37.5 112z" />
+<glyph unicode="ø" horiz-adv-x="1268" d="M1176 561q0 -273 -144 -427t-401 -154q-126 0 -234 45l-67 -101l-154 105l68 100q-152 156 -152 432q0 274 143 426t402 152q132 0 248 -52l55 82l152 -108l-58 -84q142 -155 142 -416zM403 561q0 -94 19 -166l317 475q-43 23 -106 23q-122 0 -176 -82.5t-54 -249.5z M864 561q0 81 -12 141l-309 -462q38 -15 92 -15q122 0 175.5 84.5t53.5 251.5z" />
+<glyph unicode="ù" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM620 1241q-63 44 -185 142.5t-190 164.5v21h342q63 -101 235 -301v-27h-202z" />
+<glyph unicode="ú" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM498 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="û" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM901 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357 q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="ü" horiz-adv-x="1346" d="M154 0zM952 0l-41 143h-16q-49 -78 -139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5v729h305v-653q0 -121 43 -181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234zM326 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5 t-103 -36.5q-64 0 -101.5 35t-37.5 98zM729 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="ý" horiz-adv-x="1165" d="M0 0zM0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM393 1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5 h-203z" />
+<glyph unicode="þ" horiz-adv-x="1296" d="M465 973q50 81 131 123.5t186 42.5q198 0 310 -154.5t112 -423.5q0 -273 -111.5 -427t-310.5 -154q-213 0 -317 137h-14l7 -62l7 -94v-453h-305v2048h305v-391l-7 -120l-7 -72h14zM684 895q-113 0 -165 -69.5t-54 -229.5v-33q0 -180 53.5 -258t169.5 -78q205 0 205 338 q0 165 -50.5 247.5t-158.5 82.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1165" d="M0 0zM0 1118h334l211 -629q27 -82 37 -194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM243 1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5 t-103 -36.5q-64 0 -101.5 35t-37.5 98zM646 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="ı" horiz-adv-x="625" d="M465 0h-305v1118h305v-1118z" />
+<glyph unicode="Œ" horiz-adv-x="1993" d="M1872 0h-873q-38 -9 -109 -14.5t-116 -5.5q-319 0 -487 197t-168 558q0 363 169.5 556.5t487.5 193.5q61 0 127 -7t101 -16h868v-254h-563v-321h526v-254h-526v-377h563v-256zM776 1227q-166 0 -252 -125.5t-86 -368.5q0 -244 86 -368.5t250 -124.5q65 0 126 10.5 t99 28.5v907q-35 19 -101.5 30t-121.5 11z" />
+<glyph unicode="œ" horiz-adv-x="2003" d="M1446 -20q-271 0 -420 155q-141 -155 -391 -155q-162 0 -286 70t-190.5 202t-66.5 309q0 277 141.5 427.5t399.5 150.5q112 0 212 -39.5t171 -116.5q144 156 383 156q244 0 380 -135t136 -373v-148h-746v-8q7 -127 81.5 -197.5t207.5 -70.5q107 0 200 21t193 67v-236 q-81 -39 -175.5 -59t-229.5 -20zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1405 922q-94 0 -156 -57.5t-71 -178.5h450q-2 111 -60.5 173.5t-162.5 62.5z" />
+<glyph unicode="Ÿ" horiz-adv-x="1278" d="M0 0zM639 860l305 602h334l-485 -893v-569h-308v559l-485 903h336zM297 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97 t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="ˆ" horiz-adv-x="1243" d="M852 1241q-157 93 -234 176q-78 -81 -229 -176h-203v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M842 1479q0 -108 -71 -174t-183 -66t-180 64t-68 174q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 -169zM684 1477q0 45 -27 70.5t-69 25.5t-69 -25.5t-27 -70.5t24 -71t72 -26q42 0 69 26t27 71z" />
+<glyph unicode="˜" horiz-adv-x="1243" d="M457 1346q-31 0 -59.5 -26.5t-41.5 -80.5h-149q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M82 436v230h860v-230h-860z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M82 436v230h1884v-230h-1884z" />
+<glyph unicode="‘" horiz-adv-x="444" d="M39 961l-14 22q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280z" />
+<glyph unicode="’" horiz-adv-x="444" d="M406 1462l14 -22q-50 -197 -176 -479h-219q69 296 100 501h281z" />
+<glyph unicode="‚" horiz-adv-x="596" d="M459 215q-52 -202 -176 -479h-220q65 266 101 502h280z" />
+<glyph unicode="“" horiz-adv-x="911" d="M492 983q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280zM25 983q22 91 72.5 228.5t103.5 250.5h219q-66 -267 -101 -501h-280z" />
+<glyph unicode="”" horiz-adv-x="911" d="M420 1440q-50 -197 -176 -479h-219q69 296 100 501h281zM887 1440q-50 -197 -176 -479h-219q69 296 100 501h280z" />
+<glyph unicode="„" horiz-adv-x="1061" d="M459 215q-52 -202 -176 -479h-220q65 266 101 502h280zM926 215q-52 -202 -176 -479h-220q65 266 101 502h280z" />
+<glyph unicode="•" horiz-adv-x="770" d="M98 748q0 154 74 235.5t213 81.5q137 0 212 -82t75 -235q0 -152 -75.5 -235t-211.5 -83q-138 0 -212.5 83t-74.5 235z" />
+<glyph unicode="…" horiz-adv-x="1751" d="M117 143q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM700 143q0 84 45 127t132 43q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-85 0 -131 44.5t-46 125.5zM1284 143q0 84 45 127t131 43 q83 0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="754" d="M82 573l371 455l219 -119l-279 -348l279 -348l-219 -119l-371 453v26z" />
+<glyph unicode="›" horiz-adv-x="754" d="M672 547l-371 -453l-219 119l278 348l-278 348l219 119l371 -455v-26z" />
+<glyph unicode="⁄" horiz-adv-x="266" d="M657 1462l-811 -1462h-239l811 1462h239z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="776" d="M758 737h-125v-151h-238v151h-383v154l385 577h236v-563h125v-168zM395 905v164q0 86 6 184q-9 -26 -35.5 -80t-41.5 -77l-127 -191h198z" />
+<glyph unicode="€" d="M803 1225q-122 0 -201 -70.5t-102 -204.5h403v-176h-418l-2 -35v-47l2 -33h355v-178h-338q51 -243 321 -243q143 0 275 57v-256q-116 -59 -293 -59q-245 0 -403 133t-199 368h-137v178h118q-4 23 -4 62l2 53h-116v176h133q37 242 199 382.5t405 140.5q188 0 352 -82 l-98 -232q-69 31 -129 48.5t-125 17.5z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M381 741h-168v572h-197v149h564v-149h-199v-572zM956 741l-165 529h-7l4 -111v-418h-163v721h247l160 -510l170 510h240v-721h-168v408l4 121h-6l-174 -529h-142z" />
+<glyph unicode="" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" />
+<glyph horiz-adv-x="1296" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.ttf
new file mode 100755
index 0000000..2109c95
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.woff
new file mode 100755
index 0000000..1205787
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.eot
new file mode 100755
index 0000000..77184af
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.svg
new file mode 100755
index 0000000..8f080c1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansextrabold_italic" horiz-adv-x="1243" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1505" d="M0 0zM-2 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h211l-66 -291h-209l-205 -959 q-43 -192 -153.5 -283.5t-292.5 -91.5zM1250 0h-387l239 1133h389zM1149 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
+<glyph unicode="fl" horiz-adv-x="1505" d="M0 0zM-2 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h211l-66 -291h-209l-205 -959 q-43 -192 -153.5 -283.5t-292.5 -91.5zM1250 0h-387l329 1556h387z" />
+<glyph unicode="ffi" horiz-adv-x="2163" d="M715 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 30t51.5 95l191 897h-330l-205 -959q-43 -192 -153.5 -283.5t-292.5 -91.5q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5 q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h331l17 69q41 185 142.5 275t279.5 90q80 0 155 -16t127 -42l-98 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h210l-65 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5zM1907 0h-387l239 1133h389zM1806 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
+<glyph unicode="ffl" horiz-adv-x="2159" d="M715 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 30t51.5 95l191 897h-330l-205 -959q-43 -192 -153.5 -283.5t-292.5 -91.5q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5 q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h331l17 69q41 185 142.5 275t279.5 90q80 0 155 -16t127 -42l-98 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h210l-65 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5zM1903 0h-387l329 1556h387z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="623" d="M453 516h-328l156 946h426zM12 127q0 107 65 170t179 63q87 0 133.5 -40.5t46.5 -114.5q0 -110 -63.5 -170t-173.5 -60q-88 0 -137.5 38.5t-49.5 113.5z" />
+<glyph unicode=""" horiz-adv-x="930" d="M596 1462l-158 -528h-256l72 528h342zM1038 1462l-157 -528h-258l73 528h342z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M1067 831l-57 -200h243l-20 -238h-293l-111 -393h-270l113 393h-168l-113 -393h-270l112 393h-219l21 238h266l57 200h-235l20 242h285l111 389h270l-111 -389h168l111 389h270l-110 -389h221l-21 -242h-270zM571 631h168l58 200h-168z" />
+<glyph unicode="$" horiz-adv-x="1188" d="M1067 481q0 -178 -133 -290t-361 -125l-38 -187h-168l41 191q-221 16 -347 92v311q126 -59 228 -86t203 -27q174 0 174 105q0 40 -32.5 72.5t-139.5 83.5q-139 62 -214 160t-75 227q0 176 133.5 288t357.5 127l29 133h168l-31 -137q161 -15 314 -90l-140 -270 q-158 71 -295 71q-66 0 -103.5 -28t-37.5 -68q0 -53 39 -89.5t158 -94.5q140 -68 205 -155.5t65 -213.5z" />
+<glyph unicode="%" horiz-adv-x="1878" d="M1630 1462l-1081 -1462h-297l1089 1462h289zM498 1241q-50 0 -88.5 -110t-38.5 -240q0 -84 53 -84q52 0 89.5 110.5t37.5 239.5q0 43 -12 63.5t-41 20.5zM842 1161q0 -165 -56.5 -303t-158 -215.5t-230.5 -77.5q-159 0 -238 83.5t-79 238.5q0 173 54 309.5t154.5 211.5 t237.5 75q147 0 231.5 -85t84.5 -237zM1475 655q-50 0 -88.5 -110t-38.5 -240q0 -84 53 -84q52 0 89.5 110.5t37.5 239.5q0 44 -12 64t-41 20zM1819 575q0 -164 -56 -302t-158 -215.5t-231 -77.5q-159 0 -238 83t-79 238q0 173 54 309.5t154.5 211.5t237.5 75 q147 0 231.5 -85t84.5 -237z" />
+<glyph unicode="&" horiz-adv-x="1501" d="M8 385q0 159 87.5 264.5t271.5 165.5q-37 46 -60.5 118.5t-23.5 131.5q0 197 126 308.5t355 111.5q189 0 302.5 -88t113.5 -236q0 -130 -80 -233t-262 -197l129 -186q36 36 75.5 114.5t63.5 161.5h383q-46 -161 -128.5 -305.5t-189.5 -253.5l191 -262h-442l-43 61 q-155 -81 -349 -81q-244 0 -382 106.5t-138 298.5zM745 1221q-49 0 -79.5 -34.5t-30.5 -94.5q0 -76 51 -144q72 31 106.5 79.5t34.5 107.5q0 35 -22 60.5t-60 25.5zM571 287q77 0 138 26l-193 279q-117 -52 -117 -168q0 -62 47.5 -99.5t124.5 -37.5z" />
+<glyph unicode="'" horiz-adv-x="487" d="M596 1462l-158 -528h-256l72 528h342z" />
+<glyph unicode="(" horiz-adv-x="766" d="M68 326q0 330 124.5 619t387.5 558h323q-260 -281 -384 -576t-124 -618q0 -150 32.5 -326t84.5 -307h-293q-67 120 -109 299t-42 351zM720 1485z" />
+<glyph unicode=")" horiz-adv-x="766" d="M694 854q0 -341 -123 -628t-378 -550h-326q256 277 378 571.5t122 622.5q0 150 -32.5 322.5t-86.5 310.5h295q71 -124 111 -298t40 -351zM420 1485z" />
+<glyph unicode="*" horiz-adv-x="1110" d="M909 1509l-116 -331l368 30l-22 -301l-310 41l148 -311l-285 -86l-80 303l-166 -244l-249 185l254 229l-299 84l100 278l319 -165l31 350z" />
+<glyph unicode="+" horiz-adv-x="1159" d="M455 586h-353v272h353v352h270v-352h352v-272h-352v-348h-270v348z" />
+<glyph unicode="," horiz-adv-x="627" d="M432 238l8 -23q-116 -262 -256 -479h-288q53 121 147 387l41 115h348z" />
+<glyph unicode="-" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="." horiz-adv-x="627" d="M0 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115z" />
+<glyph unicode="/" horiz-adv-x="956" d="M1092 1483l-838 -1503h-344l838 1503h344z" />
+<glyph unicode="0" horiz-adv-x="1188" d="M1157 983q0 -298 -85 -529.5t-235 -352.5t-348 -121q-210 0 -318 126t-108 359q0 295 85 533.5t235 362.5t348 124q135 0 230.5 -62.5t145.5 -174.5t50 -265zM686 1169q-55 0 -110 -111t-89 -282t-34 -319q0 -84 15 -123t60 -39q58 0 111.5 94.5t91 265.5t37.5 336 q0 85 -18.5 131.5t-63.5 46.5z" />
+<glyph unicode="1" horiz-adv-x="1188" d="M774 0h-389l174 799q28 132 76 256q-78 -68 -131 -103l-203 -125l-151 252l620 383h311z" />
+<glyph unicode="2" horiz-adv-x="1188" d="M948 0h-1005l53 256l483 436q248 221 248 361q0 49 -26 73.5t-66 24.5q-120 0 -281 -147l-186 258q234 221 541 221q183 0 295 -99.5t112 -269.5q0 -152 -87 -285t-298 -315l-205 -176v-12h490z" />
+<glyph unicode="3" horiz-adv-x="1188" d="M1126 1137q0 -148 -89.5 -245t-252.5 -130v-8q129 -25 202 -111.5t73 -212.5q0 -216 -178 -333t-482 -117q-116 0 -217.5 20.5t-167.5 58.5v332q167 -100 377 -100q138 0 206.5 46.5t68.5 133.5q0 54 -27 81t-86 39.5t-166 12.5h-84l53 291h78q147 0 229 46.5t82 127.5 q0 46 -36 74t-99 28q-117 0 -270 -84l-158 248q126 81 243.5 114.5t258.5 33.5q201 0 321.5 -93t120.5 -253z" />
+<glyph unicode="4" horiz-adv-x="1188" d="M1065 283h-150l-59 -283h-377l60 283h-549l51 256l762 923h360l-186 -884h149zM600 578l49 194q29 107 60 211h-9q-51 -97 -114 -172l-195 -233h209z" />
+<glyph unicode="5" horiz-adv-x="1188" d="M655 958q181 0 293.5 -117.5t112.5 -316.5q0 -261 -161 -402.5t-466 -141.5q-129 0 -244.5 22t-169.5 61v324q79 -45 181 -70.5t184 -25.5q277 0 277 192q0 76 -50.5 123t-136.5 47q-53 0 -111 -10t-92 -22l-122 92l215 749h813l-68 -323h-471l-59 -185q35 4 75 4z" />
+<glyph unicode="6" horiz-adv-x="1188" d="M971 1483q102 0 233 -31l-63 -303q-95 25 -183 25q-145 0 -237 -34t-151.5 -108.5t-106.5 -224.5h8q106 170 307 170q160 0 244 -103t84 -299q0 -175 -68.5 -311.5t-197 -210t-297.5 -73.5q-225 0 -345 124t-120 367q0 105 26 254q85 392 298.5 575t568.5 183zM561 287 q66 0 109 76.5t43 181.5q0 129 -92 129q-68 0 -113 -73t-45 -181q0 -66 26.5 -99.5t71.5 -33.5z" />
+<glyph unicode="7" horiz-adv-x="1188" d="M35 0l717 1135h-574l70 327h1030l-51 -231l-744 -1231h-448z" />
+<glyph unicode="8" horiz-adv-x="1188" d="M725 1485q200 0 316 -92.5t116 -241.5q0 -128 -77.5 -228.5t-202.5 -140.5q92 -71 140 -158t48 -204q0 -206 -141 -323t-387 -117q-225 0 -356.5 99t-131.5 259q0 301 332 418q-156 121 -156 309q0 121 60.5 216.5t174 149.5t265.5 54zM584 608q-170 -90 -170 -223 q0 -54 36.5 -88.5t96.5 -34.5q70 0 112.5 42t42.5 110q0 115 -118 194zM707 1202q-48 0 -83.5 -39.5t-35.5 -97.5q0 -38 23.5 -77t62.5 -58q58 22 92.5 71t34.5 103q0 49 -28.5 73.5t-65.5 24.5z" />
+<glyph unicode="9" horiz-adv-x="1188" d="M1137 952q0 -293 -103 -519.5t-285.5 -339.5t-431.5 -113q-115 0 -211 30v314q92 -37 203 -37q187 0 291.5 87t144.5 281h-8q-59 -95 -132 -134.5t-169 -39.5q-151 0 -239 110t-88 296q0 176 65.5 310.5t190 210t297.5 75.5q230 0 352.5 -137.5t122.5 -393.5zM672 1176 q-73 0 -121.5 -71t-48.5 -173q0 -144 92 -144q74 0 125 70.5t51 171.5q0 66 -27.5 106t-70.5 40z" />
+<glyph unicode=":" horiz-adv-x="627" d="M0 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM195 915q0 110 65 171t176 61q82 0 132 -37.5t50 -116.5q0 -119 -59 -175t-190 -56q-79 0 -126.5 37.5t-47.5 115.5z" />
+<glyph unicode=";" horiz-adv-x="627" d="M420 238l8 -23q-116 -262 -256 -479h-289q65 147 148 387l41 115h348zM195 915q0 110 65 171t176 61q82 0 132 -37.5t50 -116.5q0 -119 -59 -175t-190 -56q-79 0 -126.5 37.5t-47.5 115.5z" />
+<glyph unicode="<" horiz-adv-x="1159" d="M1061 176l-973 451v172l973 508v-299l-576 -283l576 -252v-297z" />
+<glyph unicode="=" horiz-adv-x="1159" d="M102 774v266h975v-266h-975zM102 399v271h975v-271h-975z" />
+<glyph unicode=">" horiz-adv-x="1159" d="M109 473l575 252l-575 283v299l972 -508v-172l-972 -451v297z" />
+<glyph unicode="?" horiz-adv-x="999" d="M256 516l12 64q15 80 42 138t71 104t141 110q89 58 125.5 95t36.5 77q0 70 -90 70q-126 0 -313 -109l-119 283q231 135 461 135q201 0 319.5 -90t118.5 -248q0 -89 -27.5 -156t-79 -120.5t-170.5 -125.5q-100 -60 -142.5 -100t-55.5 -84l-15 -43h-315zM176 127 q0 107 65 170t179 63q87 0 133.5 -40.5t46.5 -114.5q0 -110 -63.5 -170t-174.5 -60q-87 0 -136.5 39t-49.5 113z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M1774 827q0 -170 -69.5 -314t-191 -225t-266.5 -81q-170 0 -219 129h-10q-48 -65 -111.5 -97t-156.5 -32q-117 0 -191 83.5t-74 221.5q0 156 74 294.5t196.5 211t276.5 72.5q155 0 336 -70l-100 -414q-23 -94 -23 -137q0 -41 39 -41q64 0 116 48.5t81.5 138.5t29.5 206 q0 213 -133.5 322.5t-382.5 109.5q-187 0 -336.5 -91.5t-232 -258t-82.5 -379.5q0 -145 55 -254t153.5 -168t223.5 -59q103 0 234 24.5t245 69.5v-225q-90 -43 -223.5 -70.5t-251.5 -27.5q-209 0 -367.5 83.5t-244.5 240t-86 362.5q0 288 117 511t335.5 347.5t485.5 124.5 q355 0 554.5 -174t199.5 -482zM1012 868q-73 0 -128.5 -47.5t-87.5 -127t-32 -161.5q0 -104 78 -104q61 0 99.5 51.5t74.5 188.5l47 190q-23 10 -51 10z" />
+<glyph unicode="A" horiz-adv-x="1384" d="M858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166z" />
+<glyph unicode="B" horiz-adv-x="1298" d="M342 1462h487q217 0 329 -82.5t112 -236.5q0 -288 -297 -377v-8q88 -29 140 -101.5t52 -177.5q0 -229 -152.5 -354t-432.5 -125h-547zM614 901h72q88 0 133 38t45 122q0 102 -127 102h-63zM555 612l-66 -307h82q86 0 143.5 48.5t57.5 121.5q0 69 -33 103t-116 34h-68z " />
+<glyph unicode="C" horiz-adv-x="1290" d="M881 1159q-108 0 -195 -78t-136.5 -215t-49.5 -297q0 -134 56 -200t161 -66q83 0 168 20.5t200 69.5v-323q-203 -90 -440 -90q-260 0 -400.5 148.5t-140.5 420.5q0 266 101.5 488t276 335t399.5 113q265 0 481 -131l-148 -305q-93 55 -171 82.5t-162 27.5z" />
+<glyph unicode="D" horiz-adv-x="1401" d="M1337 909q0 -280 -99 -485.5t-287.5 -314.5t-446.5 -109h-471l309 1462h416q276 0 427.5 -144.5t151.5 -408.5zM563 324q110 0 196.5 70t134.5 199.5t48 295.5q0 125 -54 189.5t-151 64.5h-71l-172 -819h69z" />
+<glyph unicode="E" horiz-adv-x="1151" d="M901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477z" />
+<glyph unicode="F" horiz-adv-x="1165" d="M424 0h-391l309 1462h862l-67 -317h-471l-58 -279h436l-69 -319h-438z" />
+<glyph unicode="G" horiz-adv-x="1430" d="M731 856h610l-167 -795q-250 -81 -521 -81q-261 0 -405 152t-144 431q0 267 110 482t301.5 327.5t445.5 112.5q266 0 448 -107l-147 -309q-153 90 -306 90q-132 0 -233.5 -72.5t-162 -214.5t-60.5 -303q0 -264 209 -264q63 0 133 14l51 232h-229z" />
+<glyph unicode="H" horiz-adv-x="1462" d="M1163 0h-391l125 596h-346l-127 -596h-391l309 1462h391l-112 -542h348l112 542h392z" />
+<glyph unicode="I" horiz-adv-x="727" d="M31 0l309 1462h397l-309 -1462h-397z" />
+<glyph unicode="J" horiz-adv-x="764" d="M-115 -461q-106 0 -213 29v319q99 -24 174 -24q107 0 162 59t84 195l289 1345h391l-299 -1394q-43 -200 -113 -312.5t-182.5 -164.5t-292.5 -52z" />
+<glyph unicode="K" horiz-adv-x="1370" d="M1241 0h-438l-174 578l-97 -56l-108 -522h-391l309 1462h391l-135 -624l38 59q88 143 130 195l297 370h459l-551 -674z" />
+<glyph unicode="L" horiz-adv-x="1079" d="M33 0l309 1462h391l-241 -1143h477l-68 -319h-868z" />
+<glyph unicode="M" horiz-adv-x="1862" d="M588 0v1049h-8q-67 -417 -86 -512l-113 -537h-348l309 1462h518v-1038h8l478 1038h526l-313 -1462h-351l117 549q50 228 108 436l15 64h-8l-482 -1049h-370z" />
+<glyph unicode="N" horiz-adv-x="1618" d="M1319 0h-455l-289 1028h-8q-29 -291 -57 -418l-129 -610h-348l309 1462h455l286 -983h9q29 236 57 371l131 612h348z" />
+<glyph unicode="O" horiz-adv-x="1509" d="M897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83t128 224 t46.5 308z" />
+<glyph unicode="P" horiz-adv-x="1276" d="M1251 1024q0 -252 -171.5 -395.5t-469.5 -143.5h-86l-100 -485h-391l309 1462h373q259 0 397.5 -113.5t138.5 -324.5zM594 805h63q91 0 147 58.5t56 148.5q0 59 -36 95t-99 36h-59z" />
+<glyph unicode="Q" horiz-adv-x="1509" d="M903 1485q258 0 400.5 -149.5t142.5 -413.5q0 -280 -114 -509t-310 -339l238 -422h-439l-162 328h-12q-258 0 -400.5 149.5t-142.5 413.5q0 265 102.5 486t282 338.5t414.5 117.5zM870 1157q-103 0 -188.5 -83t-133.5 -226t-48 -309q0 -115 47.5 -172.5t134.5 -57.5 q102 0 186.5 81t133.5 224.5t49 311.5q0 114 -47 172.5t-134 58.5z" />
+<glyph unicode="R" horiz-adv-x="1331" d="M537 532l-113 -532h-391l309 1462h387q252 0 386 -100t134 -301q0 -156 -71 -272t-211 -177l224 -516l40 -96h-426l-195 532h-73zM600 829h51q95 0 151 54.5t56 152.5q0 62 -34.5 94.5t-100.5 32.5h-53z" />
+<glyph unicode="S" horiz-adv-x="1122" d="M977 449q0 -222 -147 -345.5t-410 -123.5q-110 0 -208 24.5t-169 71.5v350q84 -53 192.5 -89t196.5 -36q74 0 112 31t38 88q0 27 -12 50.5t-34 47t-118 103.5q-117 94 -170 192t-53 215q0 131 65.5 235.5t185 162t267.5 57.5q239 0 430 -107l-135 -297q-171 88 -291 88 q-64 0 -98.5 -28t-34.5 -82q0 -49 33.5 -91.5t127.5 -113.5q118 -87 175 -183t57 -220z" />
+<glyph unicode="T" horiz-adv-x="1130" d="M627 0h-391l237 1139h-317l69 323h1028l-71 -323h-318z" />
+<glyph unicode="U" horiz-adv-x="1436" d="M1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391z" />
+<glyph unicode="V" horiz-adv-x="1264" d="M1001 1462h414l-725 -1462h-436l-104 1462h382l27 -801v-51q0 -144 -16 -256h8q14 64 44.5 157.5t55.5 145.5z" />
+<glyph unicode="W" horiz-adv-x="1915" d="M487 354l40 104l94 232l335 772h336v-792q0 -156 -26 -316q10 28 133 346l303 762h387l-635 -1462h-461v620q0 155 13 324q-33 -133 -118 -349l-253 -595h-434l-49 1462h370l-10 -733q-6 -267 -25 -375z" />
+<glyph unicode="X" horiz-adv-x="1358" d="M1235 0h-432l-146 498l-338 -498h-444l563 776l-223 686h416l123 -469l309 469h448l-538 -725z" />
+<glyph unicode="Y" horiz-adv-x="1237" d="M657 920l312 542h436l-612 -895l-121 -567h-391l120 567l-237 895h403z" />
+<glyph unicode="Z" horiz-adv-x="1104" d="M942 0h-1034l47 242l690 901h-479l67 319h986l-52 -245l-700 -898h543z" />
+<glyph unicode="[" horiz-adv-x="737" d="M477 -344h-530l393 1847h530l-55 -254h-215l-285 -1339h215zM491 1485zM182 -324z" />
+<glyph unicode="\" horiz-adv-x="956" d="M530 1483l248 -1503h-319l-238 1503h309z" />
+<glyph unicode="]" horiz-adv-x="737" d="M-80 -90h213l285 1339h-215l55 254h528l-393 -1847h-526zM533 1485zM65 -324z" />
+<glyph unicode="^" horiz-adv-x="1096" d="M-6 502l631 960h172l284 -960h-274l-156 569l-360 -569h-297z" />
+<glyph unicode="_" horiz-adv-x="922" d="M745 -379h-929l57 246h930z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M975 1241h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="a" d="M565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310z" />
+<glyph unicode="b" d="M657 -20q-83 0 -145 32t-125 113h-8l-49 -125h-307l329 1556h387l-49 -231q-38 -175 -90 -301h8q48 59 77.5 81.5t66.5 35t86 12.5q155 0 238 -111.5t83 -320.5q0 -178 -70.5 -362t-182.5 -281.5t-249 -97.5zM678 842q-50 0 -95 -57t-71.5 -154t-26.5 -197q0 -65 19 -104 t59 -39q49 0 96 59t76 156t29 192q0 144 -86 144z" />
+<glyph unicode="c" horiz-adv-x="1032" d="M506 -20q-199 0 -310.5 120.5t-111.5 341.5q0 201 76.5 364.5t215 255t314.5 91.5q195 0 367 -80l-123 -287q-133 60 -225 60q-62 0 -115 -48t-87 -143.5t-34 -187.5q0 -91 30 -133.5t95 -42.5q72 0 139.5 23t143.5 63v-307q-80 -44 -168.5 -67t-206.5 -23z" />
+<glyph unicode="d" horiz-adv-x="1237" d="M586 1153q75 0 126 -30.5t111 -121.5h8l2 37q7 138 25 217l62 301h391l-330 -1556h-309l10 123h-8q-57 -79 -120 -111t-148 -32q-158 0 -240 111.5t-82 320.5q0 178 71.5 363t183.5 281.5t247 96.5zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 144 -80 144 q-49 0 -96 -59t-76 -155.5t-29 -193.5q0 -143 86 -143z" />
+<glyph unicode="e" horiz-adv-x="1186" d="M532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5h29 q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22z" />
+<glyph unicode="f" horiz-adv-x="840" d="M-2 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h211l-66 -291h-209l-205 -959 q-43 -192 -153.5 -283.5t-292.5 -91.5z" />
+<glyph unicode="g" horiz-adv-x="1145" d="M1235 1133l-41 -207l-160 -52q10 -40 10 -94q0 -191 -130 -308.5t-339 -117.5q-76 0 -124 13q-20 -11 -34 -22t-14 -30q0 -43 111 -59l137 -18q174 -25 250 -91.5t76 -189.5q0 -215 -168.5 -332t-478.5 -117q-212 0 -337.5 75.5t-125.5 209.5q0 98 68 169t212 118 q-37 23 -60.5 60t-23.5 79q0 71 51 126t152 101q-131 103 -131 281q0 196 136 311t368 115q51 0 107.5 -6t89.5 -14h399zM197 -152q0 -86 170 -86q125 0 190.5 29t65.5 82q0 36 -33 54.5t-115 27.5l-115 12q-78 -11 -120.5 -41.5t-42.5 -77.5zM500 692q0 -94 67 -94 q52 0 85.5 68.5t33.5 158.5q0 95 -61 95q-38 0 -66 -33.5t-43.5 -87.5t-15.5 -107z" />
+<glyph unicode="h" horiz-adv-x="1274" d="M639 0l129 618q18 78 18 142q0 43 -22 64.5t-53 21.5q-125 0 -185 -293l-116 -553h-387l329 1556h387l-53 -249q-35 -158 -88 -283h8q101 129 273 129q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 -602h-387z" />
+<glyph unicode="i" horiz-adv-x="666" d="M410 0h-387l239 1133h389zM309 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
+<glyph unicode="j" horiz-adv-x="666" d="M-57 -492q-110 0 -207 27v303q56 -18 112 -18q142 0 175 147l247 1166h387l-260 -1227q-40 -193 -157 -295.5t-297 -102.5zM317 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -94 -55 -151.5t-170 -57.5q-191 0 -191 141z" />
+<glyph unicode="k" horiz-adv-x="1264" d="M348 1556h387l-139 -663q-17 -77 -68 -223h9q84 127 153 200l242 263h442l-491 -512l274 -621h-438l-139 391l-101 -53l-69 -338h-387z" />
+<glyph unicode="l" horiz-adv-x="666" d="M410 0h-387l329 1556h387z" />
+<glyph unicode="m" horiz-adv-x="1896" d="M645 0l131 631q15 90 15 121q0 94 -72 94q-68 0 -113.5 -74.5t-77.5 -220.5l-118 -551h-387l239 1133h309l-16 -187h8q61 114 137 160.5t191 46.5q117 0 180.5 -53.5t89.5 -153.5h8q65 106 149 156.5t195 50.5q141 0 214 -84.5t73 -249.5q0 -97 -22 -205l-125 -614h-387 l129 631q14 56 14 133q0 40 -19 61t-51 21q-74 0 -119.5 -76t-76.5 -227l-111 -543h-387z" />
+<glyph unicode="n" horiz-adv-x="1274" d="M786 760q0 43 -22 64.5t-53 21.5q-57 0 -105.5 -71t-79.5 -222l-116 -553h-387l239 1133h309l-12 -158h8q55 95 129.5 136.5t182.5 41.5q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 -602h-387l129 618q18 78 18 142z" />
+<glyph unicode="o" d="M520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5z" />
+<glyph unicode="p" d="M651 -20q-143 0 -231 145h-8q-12 -166 -56 -371l-51 -246h-387l344 1625h309l-12 -127h8q96 147 258 147q156 0 245 -111.5t89 -306.5q0 -203 -70 -382.5t-185.5 -276t-252.5 -96.5zM678 842q-50 0 -95 -57t-71.5 -154t-26.5 -197q0 -65 23 -104t65 -39q48 0 92 57 t71.5 153t27.5 197q0 144 -86 144z" />
+<glyph unicode="q" d="M586 1153q89 0 145.5 -33t118.5 -127h8l53 140h310l-344 -1625h-392l68 293q25 116 90 310h-8q-55 -74 -114 -102.5t-134 -28.5q-89 0 -158 50.5t-107 148t-38 229.5q0 181 71.5 366.5t183 282t247.5 96.5zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 144 -80 144 q-49 0 -96 -59t-76 -155.5t-29 -193.5q0 -143 86 -143z" />
+<glyph unicode="r" horiz-adv-x="895" d="M901 1153q56 0 80 -8l-84 -383q-54 22 -123 22q-103 0 -164.5 -70.5t-93.5 -215.5l-106 -498h-387l239 1133h309l-18 -189h8q65 112 141 160.5t199 48.5z" />
+<glyph unicode="s" horiz-adv-x="1028" d="M891 393q0 -199 -130 -306t-374 -107q-222 0 -356 63v311q92 -50 171 -70t160 -20q68 0 102 18.5t34 51.5q0 35 -26 60.5t-130 84.5q-106 58 -154.5 133t-48.5 183q0 172 121 265t344 93q112 0 204 -26t179 -80l-121 -252q-66 43 -136.5 68.5t-121.5 25.5q-76 0 -76 -68 q0 -29 31.5 -51t102.5 -57q225 -112 225 -320z" />
+<glyph unicode="t" horiz-adv-x="936" d="M567 291q66 0 183 47v-291q-136 -67 -340 -67q-148 0 -224.5 63.5t-76.5 208.5q0 76 24 188l84 402h-154l41 190l218 88l137 240h258l-49 -227h288l-63 -291h-289l-84 -383q-16 -77 -16 -105q0 -63 63 -63z" />
+<glyph unicode="u" horiz-adv-x="1274" d="M487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141z" />
+<glyph unicode="v" horiz-adv-x="1114" d="M233 0l-145 1133h385l27 -603q0 -73 -8 -118h8q1 14 18 63t36 90t265 568h414l-612 -1133h-388z" />
+<glyph unicode="w" horiz-adv-x="1686" d="M840 0l20 449q2 73 11.5 209t21.5 219h-8q-60 -233 -121 -390l-189 -487h-407l-66 1133h365v-512q0 -182 -8 -259h8q46 177 88 295l172 476h428l-20 -476q-9 -129 -33 -295h8q7 22 15.5 47.5t48.5 140t241 583.5h385l-538 -1133h-422z" />
+<glyph unicode="x" horiz-adv-x="1159" d="M545 328l-211 -328h-453l473 578l-207 555h422l76 -314l186 314h459l-465 -576l228 -557h-428z" />
+<glyph unicode="y" horiz-adv-x="1114" d="M82 1133h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307q46 -12 109 -12q87 0 142.5 36.5t98.5 114.5l23 41z" />
+<glyph unicode="z" horiz-adv-x="993" d="M803 0h-844l43 221l502 613h-348l67 299h811l-53 -242l-496 -592h383z" />
+<glyph unicode="{" horiz-adv-x="735" d="M432 45q0 -88 113 -88v-281h-82q-183 0 -272 68.5t-89 208.5q0 63 15 127l37 174q6 24 6 43q0 75 -42 106t-134 31l53 287q119 0 175 38.5t77 133.5l55 246q28 124 76.5 190t130 99.5t203.5 33.5h129l-62 -280q-81 -2 -120 -29.5t-56 -99.5l-53 -258 q-20 -96 -85.5 -151.5t-193.5 -70.5v-8q90 -29 130 -87t40 -146q0 -17 -10 -74l-35 -164q-6 -30 -6 -49z" />
+<glyph unicode="|" horiz-adv-x="1159" d="M442 1548h271v-2013h-271v2013z" />
+<glyph unicode="}" horiz-adv-x="735" d="M-49 -324h-74v281q73 3 109 13.5t54 33.5t30 82l53 258q21 99 88 154t190 67v8q-170 55 -170 234q0 12 11 74l34 163q7 29 7 50q0 88 -136 88l54 280h61q168 0 259 -70.5t91 -203.5q0 -69 -14 -129l-37 -174q-6 -26 -6 -43q0 -66 44.5 -100.5t148.5 -34.5l-58 -287 q-121 0 -182.5 -40.5t-81.5 -133.5l-55 -246q-37 -171 -137.5 -247.5t-282.5 -76.5z" />
+<glyph unicode="~" horiz-adv-x="1159" d="M336 645q-52 0 -114.5 -30t-125.5 -91v285q107 109 262 109q61 0 110.5 -11.5t152.5 -52.5q67 -28 114 -41.5t99 -13.5q51 0 115.5 32t121.5 89v-285q-107 -109 -262 -109q-62 0 -113.5 12.5t-148.5 51.5q-75 31 -118.5 43t-92.5 12z" />
+<glyph unicode="¡" horiz-adv-x="623" d="M145 608h328l-156 -946h-426zM586 1001q0 -107 -65 -170t-179 -63q-87 0 -133.5 40.5t-46.5 115.5q0 109 64 169t173 60q89 0 138 -39.5t49 -112.5zM107 -324z" />
+<glyph unicode="¢" horiz-adv-x="1188" d="M602 -20h-229l51 208q-270 74 -270 398q0 306 140.5 510t371.5 239l32 148h230l-33 -150q122 -19 231 -76l-122 -286q-79 37 -128 48t-98 11q-63 0 -115 -49.5t-84 -146.5t-32 -207q0 -79 31 -113.5t90 -34.5q72 0 140 25t142 65v-311q-145 -78 -307 -90z" />
+<glyph unicode="£" horiz-adv-x="1188" d="M850 1483q89 0 177 -19t196 -67l-144 -299q-66 31 -114 47t-99 16q-35 0 -56.5 -24.5t-35.5 -92.5l-24 -114h251l-57 -279h-252l-20 -94q-16 -74 -69.5 -133.5t-133.5 -93.5h604l-72 -330h-1019l63 313q76 21 120.5 49t69 69.5t41.5 123.5l21 96h-188l57 279h188l23 129 q26 149 85 243t150.5 137.5t237.5 43.5z" />
+<glyph unicode="¤" horiz-adv-x="1188" d="M190 723q0 92 46 184l-130 125l185 185l127 -125q96 43 182 43q96 0 184 -48l125 130l189 -179l-129 -129q43 -82 43 -186q0 -94 -43 -186l123 -123l-183 -183l-125 123q-96 -41 -184 -41q-108 0 -186 39l-123 -119l-182 183l127 123q-46 90 -46 184zM451 723 q0 -64 43 -108t106 -44q65 0 110.5 44.5t45.5 107.5q0 61 -44.5 106t-111.5 45q-64 0 -106.5 -44t-42.5 -107z" />
+<glyph unicode="¥" horiz-adv-x="1188" d="M639 975l293 487h393l-489 -733h184l-45 -205h-223l-27 -129h223l-43 -205h-223l-41 -190h-379l41 190h-227l43 205h227l25 129h-226l45 205h179l-187 733h385z" />
+<glyph unicode="¦" horiz-adv-x="1159" d="M444 1546h271v-841h-271v841zM444 395h271v-839h-271v839z" />
+<glyph unicode="§" horiz-adv-x="1036" d="M158 776q0 84 46 156t132 125q-38 38 -59 89.5t-21 102.5q0 160 116 244t339 84q184 0 360 -102l-100 -224q-91 58 -159.5 79.5t-133.5 21.5q-60 0 -85.5 -22.5t-25.5 -51.5q0 -33 14 -53.5t46.5 -43t89.5 -48.5q244 -113 244 -312q0 -99 -38 -171t-130 -124 q32 -38 50.5 -90.5t18.5 -109.5q0 -170 -127 -260.5t-358 -90.5q-110 0 -197 25.5t-143 69.5v249q85 -52 173 -86t185 -34q69 0 109.5 28.5t40.5 75.5q0 38 -31 70.5t-104 72.5q-130 71 -191 152t-61 178zM524 940q-37 -19 -59.5 -54t-22.5 -69q0 -43 37 -84t125 -90 q74 51 74 127q0 54 -36.5 95t-117.5 75z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M336 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM823 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="©" horiz-adv-x="1688" d="M913 971q-80 0 -126 -61t-46 -179q0 -128 44 -185t135 -57q138 0 258 68v-231q-126 -64 -273 -64q-213 0 -328.5 125t-115.5 348q0 220 113.5 341.5t320.5 121.5q166 0 332 -82l-92 -205q-114 60 -222 60zM113 731q0 202 101.5 378t275.5 275t374 99t375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-206 0 -380 102.5t-272.5 276.5t-98.5 372zM276 731q0 -158 78.5 -294t215 -215t294.5 -79q157 0 293 77.5t215.5 214t79.5 296.5q0 158 -78.5 294.5t-215 215t-294.5 78.5t-295.5 -79.5t-215 -215.5t-77.5 -293z" />
+<glyph unicode="ª" horiz-adv-x="827" d="M483 1475q64 0 111.5 -20t101.5 -79h9l36 86h199l-170 -721h-195l9 86h-9q-89 -98 -223 -98q-60 0 -108 31.5t-76.5 91.5t-28.5 149q0 120 45 232t123 177t176 65zM481 911q46 0 79 38.5t51 100t18 128.5q0 53 -19.5 83.5t-52.5 30.5q-39 0 -72.5 -40.5t-53 -107.5 t-19.5 -132q0 -48 19 -74.5t50 -26.5z" />
+<glyph unicode="«" horiz-adv-x="1276" d="M61 563l408 518l264 -204l-266 -334l111 -330l-334 -137l-183 477v10zM608 592l424 495l260 -210l-278 -306l123 -358l-334 -137l-195 506v10z" />
+<glyph unicode="¬" horiz-adv-x="1159" d="M1057 858v-620h-271v348h-704v272h975z" />
+<glyph unicode="­" horiz-adv-x="674" d="M23 393zM23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="®" horiz-adv-x="1688" d="M1245 918q0 -91 -44.5 -153t-139.5 -97l211 -355h-285l-160 320h-12v-320h-280v875h290q214 0 317 -70.5t103 -199.5zM815 809h10q78 0 108 22t30 76t-35.5 70t-104.5 16h-8v-184zM113 731q0 202 101.5 378t275.5 275t374 99t375 -100t276 -275t101 -377q0 -197 -97 -370 t-272 -277t-383 -104q-206 0 -380 102.5t-272.5 276.5t-98.5 372zM276 731q0 -158 78.5 -294t215 -215t294.5 -79q157 0 293 77.5t215.5 214t79.5 296.5q0 158 -78.5 294.5t-215 215t-294.5 78.5t-295.5 -79.5t-215 -215.5t-77.5 -293z" />
+<glyph unicode="¯" horiz-adv-x="922" d="M183 1554zM1112 1554h-929l57 246h930z" />
+<glyph unicode="°" horiz-adv-x="864" d="M166 1114q0 97 49 182.5t135 136t185 50.5q98 0 184 -50t135 -136.5t49 -182.5q0 -98 -49.5 -183t-135.5 -133t-183 -48q-99 0 -185 49t-135 133t-49 182zM403 1114q0 -51 39.5 -89t92.5 -38q52 0 91.5 38t39.5 89q0 53 -38.5 93t-92.5 40q-55 0 -93.5 -39.5t-38.5 -93.5 z" />
+<glyph unicode="±" horiz-adv-x="1159" d="M455 694h-353v271h353v352h270v-352h352v-271h-352v-350h-270v350zM102 0v270h975v-270h-975z" />
+<glyph unicode="²" horiz-adv-x="848" d="M727 584h-704l43 204l276 211q108 83 144 124t36 75q0 51 -63 51q-35 0 -85 -18t-104 -62l-118 191q84 65 172.5 94t216.5 29q134 0 218.5 -61t84.5 -156q0 -70 -31.5 -129.5t-102 -121t-251.5 -175.5h319z" />
+<glyph unicode="³" horiz-adv-x="848" d="M821 1272q0 -91 -55.5 -146t-175.5 -84v-8q92 -23 129 -69.5t37 -112.5q0 -127 -104 -205t-275 -78q-106 0 -177.5 16t-133.5 54v225q63 -43 131.5 -62.5t124.5 -19.5q151 0 151 80q0 68 -113 68h-120l43 194h96q71 0 114.5 21.5t43.5 66.5q0 28 -22 43t-54 15 q-79 0 -185 -66l-100 182q83 52 161 73.5t181 21.5q137 0 220 -57t83 -152z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M453 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="µ" horiz-adv-x="1288" d="M545 -20q-102 0 -131 77h-8q-10 -134 -48 -303l-53 -246h-387l344 1625h387l-129 -617q-18 -78 -18 -141q0 -44 22.5 -65t53.5 -21q52 0 82.5 26t53.5 87t48 180l117 551h387l-240 -1133h-289l6 123h-8q-68 -143 -190 -143z" />
+<glyph unicode="¶" horiz-adv-x="1317" d="M1186 -260h-191v1587h-157v-1587h-191v819q-54 -18 -125 -18q-216 0 -318 125t-102 376q0 256 107.5 385t343.5 129h633v-1816z" />
+<glyph unicode="·" horiz-adv-x="627" d="M115 684q0 106 65 168.5t178 62.5q82 0 131.5 -40.5t49.5 -114.5q0 -117 -65.5 -173.5t-178.5 -56.5q-86 0 -133 40t-47 114z" />
+<glyph unicode="¸" horiz-adv-x="383" d="M287 -236q0 -121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205q30 -9 78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195z" />
+<glyph unicode="¹" horiz-adv-x="848" d="M541 1462h252l-187 -878h-317l82 364q21 102 55 207l-74 -59l-119 -78l-118 184z" />
+<glyph unicode="º" horiz-adv-x="817" d="M602 1182q0 45 -11.5 68.5t-43.5 23.5q-60 0 -97.5 -73t-37.5 -185q0 -84 55 -84q59 0 97 70.5t38 179.5zM874 1182q0 -134 -51 -237t-149.5 -160.5t-231.5 -57.5q-144 0 -223.5 75.5t-79.5 201.5q0 213 116.5 344t317.5 131q143 0 222 -79t79 -218z" />
+<glyph unicode="»" horiz-adv-x="1276" d="M1214 561l-407 -518l-264 205l266 334l-111 329l334 138l182 -478v-10zM668 532l-424 -497l-258 213l276 305l-121 358l332 138l195 -506v-11z" />
+<glyph unicode="¼" horiz-adv-x="1991" d="M79 0zM1720 122h-113l-26 -123h-289l27 123h-398l31 178l490 577h325l-119 -557h113zM1360 320q62 239 73 274t15 44q-13 -18 -35 -48.5t-215 -269.5h162zM1575 1462l-1083 -1462h-297l1089 1462h291zM505 1462h252l-187 -878h-317l82 364q21 102 55 207l-74 -59 l-119 -78l-118 184z" />
+<glyph unicode="½" horiz-adv-x="1991" d="M104 0zM1706 -1h-704l43 204l276 211q108 83 144 124t36 75q0 51 -63 51q-35 0 -85 -18t-104 -62l-118 191q84 65 172.5 94t216.5 29q134 0 218.5 -61t84.5 -156q0 -70 -31.5 -129.5t-102 -121t-251.5 -175.5h319zM530 1462h252l-187 -878h-317l82 364q21 102 55 207 l-74 -59l-119 -78l-118 184zM1599 1462l-1083 -1462h-297l1089 1462h291z" />
+<glyph unicode="¾" horiz-adv-x="1991" d="M195 0zM1767 122h-113l-26 -123h-289l27 123h-398l31 178l490 577h325l-119 -557h113zM1407 320q62 239 73 274t15 44q-13 -18 -35 -48.5t-215 -269.5h162zM950 1272q0 -91 -55.5 -146t-175.5 -84v-8q92 -23 129 -69.5t37 -112.5q0 -127 -104 -205t-275 -78 q-106 0 -177.5 16t-133.5 54v225q63 -43 131.5 -62.5t124.5 -19.5q151 0 151 80q0 68 -113 68h-120l43 194h96q71 0 114.5 21.5t43.5 66.5q0 28 -22 43t-54 15q-79 0 -185 -66l-100 182q83 52 161 73.5t181 21.5q137 0 220 -57t83 -152zM1743 1462l-1083 -1462h-297 l1089 1462h291z" />
+<glyph unicode="¿" horiz-adv-x="999" d="M721 612l-12 -63q-15 -82 -43 -140t-72.5 -104.5t-138.5 -107.5q-89 -58 -125.5 -95t-36.5 -77q0 -37 22.5 -53.5t67.5 -16.5q124 0 313 108l119 -282q-227 -135 -461 -135q-201 0 -319.5 90t-118.5 248q0 89 27.5 155.5t77.5 119t172 126.5q100 60 142.5 101t55.5 83 l15 43h315zM801 1001q0 -107 -65 -170t-179 -63q-87 0 -133.5 40.5t-46.5 115.5q0 109 64 169t173 60q89 0 138 -39.5t49 -112.5zM285 -324z" />
+<glyph unicode="À" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM1041 1579h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM709 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Â" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM1335 1579h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Ã" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM1043 1577q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5 q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="Ä" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM502 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM989 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143 t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="Å" horiz-adv-x="1384" d="M0 0zM858 274h-448l-125 -274h-406l744 1462h503l123 -1462h-381zM553 586h293l-17 424l-2 86q0 75 4 131q-24 -86 -61 -166zM1145 1552q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5zM965 1550 q0 38 -26.5 62t-61.5 24q-36 0 -62.5 -24t-26.5 -62q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59z" />
+<glyph unicode="Æ" horiz-adv-x="1937" d="M1688 0h-869l58 274h-418l-170 -274h-414l909 1462h1213l-66 -317h-477l-47 -230h444l-71 -317h-445l-57 -276h477zM948 602l113 543h-68l-331 -543h286z" />
+<glyph unicode="Ç" horiz-adv-x="1290" d="M104 0zM881 1159q-108 0 -195 -78t-136.5 -215t-49.5 -297q0 -134 56 -200t161 -66q83 0 168 20.5t200 69.5v-323q-203 -90 -440 -90q-260 0 -400.5 148.5t-140.5 420.5q0 266 101.5 488t276 335t399.5 113q265 0 481 -131l-148 -305q-93 55 -171 82.5t-162 27.5z M813 -236q0 -121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205q30 -9 78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195z" />
+<glyph unicode="È" horiz-adv-x="1151" d="M33 0zM901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477zM933 1579h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1151" d="M33 0zM901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477zM578 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Ê" horiz-adv-x="1151" d="M33 0zM901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477zM1239 1579h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Ë" horiz-adv-x="1151" d="M33 0zM901 0h-868l309 1462h868l-65 -317h-477l-47 -230h444l-72 -317h-444l-57 -276h477zM383 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM870 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z " />
+<glyph unicode="Ì" horiz-adv-x="727" d="M31 0zM31 0l309 1462h397l-309 -1462h-397zM749 1579h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="727" d="M31 0zM31 0l309 1462h397l-309 -1462h-397zM345 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Î" horiz-adv-x="727" d="M31 0zM31 0l309 1462h397l-309 -1462h-397zM1015 1579h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Ï" horiz-adv-x="727" d="M31 0zM31 0l309 1462h397l-309 -1462h-397zM159 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM646 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="Ð" horiz-adv-x="1401" d="M80 883h139l123 579h430q271 0 418 -143.5t147 -409.5q0 -434 -213 -671.5t-598 -237.5h-493l119 563h-142zM563 324q111 0 198 71.5t134 204t47 301.5q0 116 -54 179t-151 63h-71l-56 -260h178l-69 -320h-176l-49 -239h69z" />
+<glyph unicode="Ñ" horiz-adv-x="1618" d="M33 0zM1319 0h-455l-289 1028h-8q-29 -291 -57 -418l-129 -610h-348l309 1462h455l286 -983h9q29 236 57 371l131 612h348zM1137 1577q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5 q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="Ò" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM1102 1579h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM717 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Ô" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM1368 1579h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Õ" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM1073 1577q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="Ö" horiz-adv-x="1509" d="M104 0zM897 1485q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 -117.5q-269 0 -415.5 149t-146.5 414t103 487t280.5 338.5t409.5 116.5zM1051 918q0 114 -48 178.5t-139 64.5q-99 0 -182 -84t-132.5 -231t-49.5 -301q0 -242 200 -242q95 0 176.5 83 t128 224t46.5 308zM512 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM999 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="×" horiz-adv-x="1159" d="M387 723l-285 287l187 190l289 -285l292 285l191 -184l-293 -293l287 -291l-185 -188l-292 288l-289 -286l-185 188z" />
+<glyph unicode="Ø" horiz-adv-x="1509" d="M879 1485q182 0 315 -72l92 115l156 -119l-99 -125q103 -143 103 -362q0 -258 -98.5 -480.5t-271 -342t-392.5 -119.5q-192 0 -324 69l-106 -135l-160 117l117 145q-107 141 -107 367q0 262 101 484.5t275.5 340t398.5 117.5zM500 539l467 589q-45 33 -115 33 q-94 0 -175 -82t-129 -224t-48 -306v-10zM700 303q95 0 176 81.5t128 222.5t47 308l-465 -583q46 -29 114 -29z" />
+<glyph unicode="Ù" horiz-adv-x="1436" d="M125 0zM1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391zM1045 1579h-236q-82 75 -152 159t-102 148v21h396 q29 -157 94 -303v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1436" d="M125 0zM1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391zM725 1602q123 102 282 305h439v-15 q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Û" horiz-adv-x="1436" d="M125 0zM1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391zM1376 1579h-266q-46 41 -156 174 q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="Ü" horiz-adv-x="1436" d="M125 0zM1450 1462l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 154t-55.5 221q0 64 12 129l199 923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 893h391zM533 1722q0 187 201 187q170 0 170 -125 q0 -189 -201 -189q-88 0 -129 31t-41 96zM1020 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="Ý" horiz-adv-x="1237" d="M164 0zM657 920l312 542h436l-612 -895l-121 -567h-391l120 567l-237 895h403zM615 1602q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="Þ" horiz-adv-x="1276" d="M342 1462h391l-45 -211q251 0 385.5 -114t134.5 -326q0 -250 -170.5 -393.5t-470.5 -143.5h-86l-57 -274h-391zM551 594h63q94 0 148.5 49t54.5 156q0 58 -41.5 95.5t-107.5 37.5h-45z" />
+<glyph unicode="ß" horiz-adv-x="1460" d="M-53 -492q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 30t51.5 95l244 1151q53 249 201.5 360t417.5 111q243 0 379.5 -99t136.5 -274q0 -118 -51 -198t-162 -132q-117 -56 -117 -102q0 -29 20.5 -50.5t87.5 -56.5q95 -51 140 -118t45 -164q0 -117 -58.5 -205.5 t-170 -138t-271.5 -49.5q-161 0 -274 45v299q59 -29 136.5 -45.5t133.5 -16.5q59 0 87 22t28 50q0 32 -19.5 53.5t-113.5 83.5q-88 56 -127 111.5t-39 130.5q0 92 42 150.5t165 125.5q71 40 100 76t29 80q0 58 -41.5 88.5t-116.5 30.5q-78 0 -132.5 -50t-74.5 -147 l-252 -1184q-43 -192 -153.5 -283.5t-292.5 -91.5z" />
+<glyph unicode="à" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM890 1241h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="á" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM531 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="â" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM1198 1238h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="ã" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM885 1239q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="ä" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM331 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM818 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="å" d="M84 0zM565 291q50 0 95.5 58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5q-76 0 -137.5 -126.5t-61.5 -281.5q0 -143 86 -143zM981 0h-309l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q84 0 148 -37.5 t114 -122.5h8l53 140h310zM1025 1491q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5zM845 1489q0 38 -26.5 62t-61.5 24q-36 0 -62.5 -24t-26.5 -62q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59z " />
+<glyph unicode="æ" horiz-adv-x="1788" d="M1192 -20q-179 0 -262 112l-31 -92h-227l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5q0 179 73 365t184.5 281t246.5 95q92 0 152 -38t110 -122h8l53 140h207v-95q58 56 132.5 85.5t146.5 29.5q157 0 251.5 -86.5t94.5 -228.5 q0 -201 -157 -308.5t-451 -107.5h-60v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-99 -58 -182.5 -80t-192.5 -22zM565 291q76 0 134.5 123t58.5 284q0 65 -23 104.5t-65 39.5q-49 0 -93 -57.5t-71 -155t-27 -195.5q0 -143 86 -143zM1292 891q-61 0 -114 -69.5 t-64 -157.5h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22z" />
+<glyph unicode="ç" horiz-adv-x="1032" d="M84 0zM506 -20q-199 0 -310.5 120.5t-111.5 341.5q0 201 76.5 364.5t215 255t314.5 91.5q195 0 367 -80l-123 -287q-133 60 -225 60q-62 0 -115 -48t-87 -143.5t-34 -187.5q0 -91 30 -133.5t95 -42.5q72 0 139.5 23t143.5 63v-307q-80 -44 -168.5 -67t-206.5 -23z M684 -236q0 -121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205q30 -9 78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195z" />
+<glyph unicode="è" horiz-adv-x="1186" d="M84 0zM532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5 h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22zM919 1241h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="1186" d="M84 0zM532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5 h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22zM523 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="ê" horiz-adv-x="1186" d="M84 0zM532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5 h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22zM1213 1241h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="ë" horiz-adv-x="1186" d="M84 0zM532 -20q-212 0 -330 118.5t-118 329.5t83.5 380.5t229 257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 -107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 -79.5t-224 -22.5zM690 891q-61 0 -114 -69.5t-64 -157.5 h29q109 0 171 41.5t62 109.5q0 32 -20 54t-64 22zM336 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM823 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ì" horiz-adv-x="666" d="M23 0zM410 0h-387l239 1133h389zM657 1241h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="666" d="M23 0zM410 0h-387l239 1133h389zM294 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="î" horiz-adv-x="666" d="M0 0zM410 0h-387l239 1133h389zM929 1241h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="ï" horiz-adv-x="666" d="M23 0zM410 0h-387l239 1133h389zM91 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM578 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ð" horiz-adv-x="1155" d="M580 1319q-29 25 -95 74l115 180q136 -61 231 -137l238 110l82 -166l-184 -90q71 -88 114 -249t43 -324q0 -360 -154.5 -548.5t-449.5 -188.5q-201 0 -318.5 119t-117.5 327q0 170 62.5 305t178.5 209t267 74q130 0 203 -88l10 4q-19 142 -90 246l-273 -127l-82 168z M555 260q53 0 93 44.5t63.5 119t23.5 147.5q0 76 -18.5 119t-65.5 43q-81 0 -130.5 -101t-49.5 -224q0 -148 84 -148z" />
+<glyph unicode="ñ" horiz-adv-x="1274" d="M23 0zM786 760q0 43 -22 64.5t-53 21.5q-57 0 -105.5 -71t-79.5 -222l-116 -553h-387l239 1133h309l-12 -158h8q55 95 129.5 136.5t182.5 41.5q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 -602h-387l129 618q18 78 18 142zM903 1239q-33 0 -65 8t-61 22t-46 23 q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="ò" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM894 1241 h-236q-82 75 -152 159t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="ó" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM533 1264 q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="ô" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM1183 1241 h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="õ" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM861 1239 q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode="ö" d="M84 0zM520 -20q-209 0 -322.5 113t-113.5 323t79.5 379.5t223.5 263.5t336 94q209 0 322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM317 1384 q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM804 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="÷" horiz-adv-x="1159" d="M102 586v272h975v-272h-975zM432 373q0 83 41 127.5t117 44.5q74 0 114.5 -44.5t40.5 -127.5q0 -81 -41.5 -126.5t-113.5 -45.5q-74 0 -116 46t-42 126zM432 1071q0 83 41 127.5t117 44.5q74 0 114.5 -44.5t40.5 -127.5q0 -81 -41.5 -126.5t-113.5 -45.5q-74 0 -116 46 t-42 126z" />
+<glyph unicode="ø" horiz-adv-x="1286" d="M549 -20q-127 0 -238 49l-118 -140l-127 109l112 131q-94 117 -94 287q0 207 81.5 377.5t230.5 265t347 94.5q136 0 250 -57l105 121l127 -109l-105 -123q82 -114 82 -268q0 -208 -81 -377.5t-229 -264.5t-343 -95zM702 877q-67 0 -125 -55t-92 -153t-36 -218l335 397 q-35 29 -82 29zM590 260q107 0 172 101.5t74 287.5l-318 -375q29 -14 72 -14z" />
+<glyph unicode="ù" horiz-adv-x="1274" d="M96 0zM487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141zM902 1241h-236q-82 75 -152 159 t-102 148v21h396q29 -157 94 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1274" d="M96 0zM487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141zM584 1264q123 102 282 305h439v-15 q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="û" horiz-adv-x="1274" d="M96 0zM487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141zM1221 1241h-266q-46 41 -156 174 q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="ü" horiz-adv-x="1274" d="M96 0zM487 375q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 -220 85.5t-79 235.5q0 106 25 229l127 603h387l-129 -617q-19 -82 -19 -141zM371 1384q0 187 201 187 q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM858 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ý" horiz-adv-x="1114" d="M0 0zM82 1133h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307q46 -12 109 -12q87 0 142.5 36.5t98.5 114.5l23 41zM492 1264q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284v23z" />
+<glyph unicode="þ" d="M678 842q-50 0 -95 -57t-71.5 -154t-26.5 -197q0 -65 23 -104t65 -39q48 0 92 57t71.5 153t27.5 197q0 144 -86 144zM836 1153q151 0 237 -112t86 -306q0 -203 -70 -382.5t-185.5 -276t-252.5 -96.5q-143 0 -231 145h-8q-12 -166 -56 -371l-51 -246h-387l434 2048h387 l-49 -231q-38 -175 -90 -301h8q44 59 96.5 94t131.5 35z" />
+<glyph unicode="ÿ" horiz-adv-x="1114" d="M0 0zM82 1133h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307q46 -12 109 -12q87 0 142.5 36.5t98.5 114.5l23 41zM259 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96z M746 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ı" horiz-adv-x="666" d="M410 0h-387l239 1133h389z" />
+<glyph unicode="Œ" horiz-adv-x="1909" d="M1659 0h-815q-104 -20 -197 -20q-256 0 -399.5 146.5t-143.5 401.5q0 196 58.5 379t164.5 313t252.5 197.5t323.5 67.5q94 0 191 -23h874l-67 -319h-478l-47 -225h445l-72 -322h-444l-58 -272h477zM682 309q96 0 180 41l162 762q-53 49 -154 49q-96 0 -182.5 -88 t-137 -235t-50.5 -312q0 -217 182 -217z" />
+<glyph unicode="œ" horiz-adv-x="1802" d="M1149 -20q-203 0 -295 112q-124 -112 -334 -112q-209 0 -322.5 113t-113.5 323q0 209 79 380t217.5 264t319.5 93q187 0 277 -125q144 125 373 125q188 0 297.5 -86t109.5 -229q0 -203 -157 -309.5t-451 -106.5h-59v-16q0 -148 163 -148q79 0 155 23.5t173 74.5v-274 q-114 -58 -210.5 -80t-221.5 -22zM678 862q-82 0 -140.5 -139.5t-58.5 -319.5q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5zM1307 891q-60 0 -112.5 -68t-66.5 -159h29q110 0 172 41t62 110q0 32 -20.5 54t-63.5 22z" />
+<glyph unicode="Ÿ" horiz-adv-x="1237" d="M164 0zM657 920l312 542h436l-612 -895l-121 -567h-391l120 567l-237 895h403zM397 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM884 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M1190 1241h-266q-46 41 -156 174q-140 -110 -240 -174h-274v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M1059 1491q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5zM879 1489q0 38 -26.5 62t-61.5 24q-36 0 -62.5 -24t-26.5 -62q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M885 1239q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85z" />
+<glyph unicode=" " horiz-adv-x="959" />
+<glyph unicode=" " horiz-adv-x="1919" />
+<glyph unicode=" " horiz-adv-x="959" />
+<glyph unicode=" " horiz-adv-x="1919" />
+<glyph unicode=" " horiz-adv-x="639" />
+<glyph unicode=" " horiz-adv-x="479" />
+<glyph unicode=" " horiz-adv-x="319" />
+<glyph unicode=" " horiz-adv-x="319" />
+<glyph unicode=" " horiz-adv-x="239" />
+<glyph unicode=" " horiz-adv-x="383" />
+<glyph unicode=" " horiz-adv-x="106" />
+<glyph unicode="‐" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="‑" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="‒" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="–" horiz-adv-x="983" d="M33 416l57 274h871l-60 -274h-868z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M33 416l57 274h1854l-60 -274h-1851z" />
+<glyph unicode="‘" horiz-adv-x="500" d="M119 961l-10 22q104 235 258 479h288q-26 -62 -53 -131t-135 -370h-348z" />
+<glyph unicode="’" horiz-adv-x="500" d="M631 1462l8 -22q-92 -212 -256 -479h-289q34 81 67.5 167.5t121.5 333.5h348z" />
+<glyph unicode="‚" horiz-adv-x="621" d="M432 238l8 -23q-94 -223 -256 -479h-288q25 59 50 123t138 379h348z" />
+<glyph unicode="“" horiz-adv-x="997" d="M614 961l-8 22q109 246 256 479h289q-49 -115 -100 -258l-88 -243h-349zM119 961l-10 22q104 235 258 479h288q-26 -62 -53 -131t-135 -370h-348z" />
+<glyph unicode="”" horiz-adv-x="997" d="M631 1462l8 -22q-92 -212 -256 -479h-289q49 117 100 258l89 243h348zM1128 1462l7 -22q-39 -91 -110 -226t-144 -253h-289q41 98 99 258l89 243h348z" />
+<glyph unicode="„" horiz-adv-x="1122" d="M432 238l8 -23q-94 -223 -256 -479h-288q25 59 50 123t138 379h348zM934 238l8 -23q-51 -116 -124.5 -251t-133.5 -228h-287q61 148 147 387l42 115h348z" />
+<glyph unicode="•" horiz-adv-x="803" d="M86 688q0 118 47 214t133.5 150t200.5 54q148 0 221.5 -77.5t73.5 -223.5q0 -194 -101.5 -305t-281.5 -111q-137 0 -215 80t-78 219zM594 1133z" />
+<glyph unicode="…" horiz-adv-x="1800" d="M12 0zM12 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM600 127q0 109 65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM1186 127q0 109 65 171t179 62q84 0 132 -40t48 -115 q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115z" />
+<glyph unicode=" " horiz-adv-x="383" />
+<glyph unicode="‹" horiz-adv-x="719" d="M61 563l408 518l264 -204l-266 -334l111 -330l-334 -137l-183 477v10z" />
+<glyph unicode="›" horiz-adv-x="719" d="M657 561l-407 -518l-264 205l266 334l-111 329l332 138l184 -478v-10z" />
+<glyph unicode="⁄" horiz-adv-x="248" d="M817 1462l-1083 -1462h-297l1089 1462h291z" />
+<glyph unicode=" " horiz-adv-x="479" />
+<glyph unicode="⁴" horiz-adv-x="848" d="M815 707h-113l-26 -123h-289l27 123h-398l31 178l490 577h325l-119 -557h113zM455 905q62 239 73 274t15 44q-13 -18 -35 -48.5t-215 -269.5h162z" />
+<glyph unicode="€" horiz-adv-x="1188" d="M905 1178q-142 0 -219 -195h297l-45 -205h-309q-18 -59 -25 -123h246l-43 -204h-227q0 -82 27.5 -113t105.5 -31q75 0 145 18.5t148 49.5v-330q-126 -65 -355 -65q-231 0 -341.5 114t-116.5 357h-140l43 204h109l22 123h-106l47 205h117q84 243 243 373.5t377 130.5 q115 0 202 -25t173 -80l-154 -282q-120 78 -221 78z" />
+<glyph unicode="™" horiz-adv-x="1577" d="M469 741h-197v545h-170v176h537v-176h-170v-545zM1049 741l-144 510h-8q6 -64 6 -110v-400h-192v721h286l138 -479l149 479h277v-721h-195v400q0 74 6 110h-8l-152 -510h-163z" />
+<glyph unicode="" horiz-adv-x="1135" d="M0 1135h1135v-1135h-1135v1135z" />
+<glyph horiz-adv-x="1245" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.ttf
new file mode 100755
index 0000000..26a07e9
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.woff
new file mode 100755
index 0000000..45395d1
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.eot
new file mode 100755
index 0000000..1e29ad5
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.svg
new file mode 100755
index 0000000..2780050
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansextrabold" horiz-adv-x="1200" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1511" d="M45 0zM1374 0h-391v1133h391v-1133zM973 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172zM827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5 t-20.5 -89.5v-30h241v-293z" />
+<glyph unicode="fl" horiz-adv-x="1507" d="M45 0zM1372 0h-391v1556h391v-1556zM827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293z" />
+<glyph unicode="ffi" horiz-adv-x="2357" d="M45 0zM827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293zM1673 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98 q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293zM2220 0h-391v1133h391v-1133zM1819 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172z" />
+<glyph unicode="ffl" horiz-adv-x="2353" d="M45 0zM827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293zM1673 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98 q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293zM2218 0h-391v1556h391v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="594" d="M463 516h-330l-51 946h432zM86 166q0 91 54 141.5t157 50.5q102 0 154.5 -50.5t52.5 -141.5q0 -90 -54.5 -140.5t-152.5 -50.5q-99 0 -155 50.5t-56 140.5z" />
+<glyph unicode=""" horiz-adv-x="1073" d="M477 1462l-41 -528h-274l-41 528h356zM952 1462l-41 -528h-274l-41 528h356z" />
+<glyph unicode="#" horiz-adv-x="1356" d="M1042 813l-30 -168h243v-254h-290l-74 -391h-268l73 391h-168l-71 -391h-267l72 391h-225v254h274l31 168h-238v260h287l72 389h268l-74 -389h166l72 389h268l-73 -389h229v-260h-277zM578 645h165l31 168h-166z" />
+<glyph unicode="$" d="M504 68q-219 10 -422 98v332q116 -59 252 -98.5t239 -39.5q85 0 124.5 20.5t39.5 68.5q0 33 -28.5 56t-95 52t-179.5 70q-127 47 -205 105.5t-113.5 131t-35.5 180.5q0 165 106 258t318 115v137h207v-135q199 -11 401 -98l-119 -285q-209 94 -377 94q-80 0 -112.5 -19.5 t-32.5 -57.5q0 -33 23.5 -54.5t81.5 -48t161 -61.5q209 -74 300 -168.5t91 -243.5q0 -168 -106.5 -273t-310.5 -130v-193h-207v187zM613 1462z" />
+<glyph unicode="%" horiz-adv-x="1942" d="M338 1022q0 -115 19 -166t57 -51t56.5 50t18.5 167q0 115 -18.5 166t-56.5 51q-39 0 -57.5 -52t-18.5 -165zM791 1026q0 -220 -99 -340.5t-282 -120.5q-172 0 -272.5 124.5t-100.5 336.5q0 220 98 338.5t275 118.5q175 0 278 -123t103 -334zM1520 1462l-811 -1462h-297 l811 1462h297zM1450 440q0 -115 19 -166t57 -51q43 0 59.5 58.5t16.5 158.5t-16.5 158.5t-59.5 58.5q-39 0 -57.5 -52t-18.5 -165zM1903 444q0 -219 -99.5 -339.5t-281.5 -120.5q-172 0 -272.5 124.5t-100.5 335.5q0 220 98 338.5t275 118.5q175 0 278 -123t103 -334z" />
+<glyph unicode="&" horiz-adv-x="1636" d="M1141 0l-99 102q-90 -57 -147.5 -78.5t-129 -32.5t-163.5 -11q-158 0 -279.5 54t-186 151t-64.5 221q0 262 272 401q-62 70 -96.5 148.5t-34.5 177.5q0 160 123.5 254t339.5 94q211 0 328.5 -93.5t117.5 -254.5q0 -111 -63.5 -205.5t-200.5 -177.5l199 -189 q75 115 104 260h406q-30 -138 -94.5 -276.5t-145.5 -237.5l320 -307h-506zM475 434q0 -63 45 -103t119 -40q57 0 100 15t66 34l-248 252q-82 -61 -82 -158zM770 1133q0 49 -28.5 70.5t-71.5 21.5q-42 0 -73.5 -25t-31.5 -80q0 -75 88 -155q57 32 87 76.5t30 91.5z" />
+<glyph unicode="'" horiz-adv-x="598" d="M477 1462l-41 -528h-274l-41 528h356z" />
+<glyph unicode="(" horiz-adv-x="735" d="M74 582q0 290 71 523t209 398h326q-126 -175 -194 -412t-68 -507q0 -261 66 -495.5t194 -412.5h-324q-137 158 -208.5 388t-71.5 518zM493 1485z" />
+<glyph unicode=")" horiz-adv-x="735" d="M662 582q0 -283 -71.5 -514.5t-209.5 -391.5h-324q126 172 193 408.5t67 499.5q0 265 -66 501.5t-196 417.5h326q139 -166 210 -402t71 -519zM247 1485z" />
+<glyph unicode="*" horiz-adv-x="1100" d="M702 1556l-38 -352l356 101l37 -295l-314 -21l207 -278l-260 -138l-143 283l-123 -281l-272 136l206 278l-313 25l45 291l348 -101l-39 352h303z" />
+<glyph unicode="+" horiz-adv-x="1159" d="M444 588h-372v268h372v367h269v-367h372v-268h-372v-361h-269v361z" />
+<glyph unicode="," horiz-adv-x="633" d="M498 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342z" />
+<glyph unicode="-" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="." horiz-adv-x="592" d="M86 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141z" />
+<glyph unicode="/" horiz-adv-x="905" d="M901 1483l-545 -1503h-346l545 1503h346z" />
+<glyph unicode="0" d="M1128 729q0 -388 -130 -568.5t-398 -180.5q-262 0 -395 188.5t-133 560.5q0 390 130 572t398 182q261 0 394.5 -189.5t133.5 -564.5zM465 729q0 -248 31 -341t104 -93q74 0 104.5 96t30.5 338q0 243 -31 340.5t-104 97.5t-104 -94t-31 -344z" />
+<glyph unicode="1" d="M942 0h-401v774q0 141 6 258q-37 -45 -92 -94l-166 -137l-205 252l502 409h356v-1462z" />
+<glyph unicode="2" d="M1122 0h-1061v260l357 361q153 160 200 218.5t65.5 100.5t18.5 88q0 57 -37 90t-104 33q-69 0 -139.5 -39.5t-159.5 -116.5l-217 254q113 101 190 144.5t167.5 66.5t203.5 23q142 0 253.5 -50t173 -142.5t61.5 -207.5q0 -86 -21.5 -159t-66.5 -143.5t-119.5 -148.5 t-317.5 -296v-10h553v-326z" />
+<glyph unicode="3" d="M1073 1145q0 -136 -83 -233.5t-240 -141.5v-6q366 -46 366 -346q0 -204 -161.5 -321t-448.5 -117q-118 0 -218.5 17t-217.5 62v328q96 -49 195.5 -72.5t183.5 -23.5q130 0 189.5 36.5t59.5 114.5q0 60 -31 92.5t-100 49t-180 16.5h-90v297h92q301 0 301 154 q0 58 -44.5 86t-119.5 28q-140 0 -290 -94l-164 264q116 80 237.5 114t278.5 34q227 0 356 -90t129 -248z" />
+<glyph unicode="4" d="M1169 283h-161v-283h-390v283h-583v290l608 889h365v-884h161v-295zM618 578v170q0 48 3.5 129.5t5.5 85.5h-11q-34 -77 -77 -144l-162 -241h241z" />
+<glyph unicode="5" d="M664 958q126 0 227.5 -58.5t158 -165.5t56.5 -247q0 -245 -147.5 -376t-446.5 -131q-256 0 -418 79v324q87 -40 196.5 -66t188.5 -26q110 0 169 46.5t59 137.5q0 84 -60 131t-182 47q-93 0 -201 -35l-145 72l55 772h834v-329h-498l-18 -193q78 15 111 16.5t61 1.5z" />
+<glyph unicode="6" d="M70 618q0 306 87.5 495.5t258 279.5t420.5 90q89 0 208 -17v-309q-100 19 -217 19q-198 0 -295 -87t-106 -284h12q90 170 289 170q195 0 302.5 -125.5t107.5 -349.5q0 -241 -136 -380.5t-380 -139.5q-259 0 -405 168t-146 470zM612 293q63 0 102.5 47.5t39.5 151.5 q0 178 -138 178q-68 0 -110.5 -46t-42.5 -112q0 -96 41 -157.5t108 -61.5z" />
+<glyph unicode="7" d="M209 0l502 1133h-633v327h1055v-233l-515 -1227h-409z" />
+<glyph unicode="8" d="M604 1483q231 0 359.5 -93t128.5 -264q0 -116 -60.5 -203.5t-191.5 -152.5q162 -92 228.5 -183.5t66.5 -197.5q0 -195 -141 -302t-394 -107q-258 0 -395 104.5t-137 300.5q0 127 61 216.5t205 162.5q-116 78 -169.5 167.5t-53.5 196.5q0 168 131 261.5t362 93.5zM430 401 q0 -62 44 -99.5t122 -37.5q176 0 176 129q0 49 -38.5 96.5t-137.5 106.5q-89 -47 -127.5 -94.5t-38.5 -100.5zM602 1198q-51 0 -86 -29.5t-35 -76.5q0 -86 117 -152q71 41 97 75t26 77q0 48 -35 77t-84 29z" />
+<glyph unicode="9" d="M1133 793q0 -429 -185 -621t-592 -192q-134 0 -204 10v313q86 -16 172 -16q212 0 327 87.5t125 276.5h-12q-39 -72 -77 -104t-93 -49t-137 -17q-190 0 -297 127t-107 350q0 243 138.5 381t379.5 138q268 0 415 -178t147 -506zM582 1161q-65 0 -105.5 -47t-40.5 -151 q0 -82 35 -130.5t107 -48.5q65 0 113 47t48 113q0 89 -44.5 153t-112.5 64z" />
+<glyph unicode=":" horiz-adv-x="592" d="M86 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM86 956q0 91 55 141t158 50q99 0 152 -50t53 -141q0 -90 -54 -141t-151 -51q-102 0 -157.5 51t-55.5 141z" />
+<glyph unicode=";" horiz-adv-x="608" d="M498 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342zM92 956q0 91 53.5 141t157.5 50q100 0 153.5 -50.5t53.5 -140.5t-54 -141t-153 -51q-102 0 -156.5 50.5t-54.5 141.5z" />
+<glyph unicode="<" horiz-adv-x="1159" d="M1083 178l-1011 449v172l1011 506v-297l-620 -283l620 -252v-295z" />
+<glyph unicode="=" horiz-adv-x="1159" d="M72 815v268h1015v-268h-1015zM72 358v271h1015v-271h-1015z" />
+<glyph unicode=">" horiz-adv-x="1159" d="M72 473l620 252l-620 283v297l1011 -506v-172l-1011 -449v295z" />
+<glyph unicode="?" horiz-adv-x="1034" d="M295 516v86q0 98 40 165.5t142 131.5q81 51 116.5 92t35.5 94q0 42 -38 66.5t-99 24.5q-151 0 -353 -107l-139 272q249 142 520 142q223 0 350 -98t127 -267q0 -121 -56.5 -209.5t-180.5 -167.5q-105 -68 -131.5 -99.5t-26.5 -74.5v-51h-307zM252 166q0 92 53.5 142 t157.5 50q100 0 153.5 -50.5t53.5 -141.5t-55.5 -141t-151.5 -50q-99 0 -155 49.5t-56 141.5z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M1755 756q0 -141 -48.5 -263t-134.5 -191t-196 -69q-79 0 -143 31.5t-100 87.5h-15q-107 -119 -260 -119q-183 0 -281 107t-98 299q0 141 62 249.5t179 167t271 58.5q81 0 178.5 -16.5t178.5 -44.5l-21 -422l-2 -94q0 -86 49 -86q52 0 84.5 87t32.5 220q0 239 -135 369 t-383 130q-190 0 -330.5 -79t-214.5 -226.5t-74 -345.5q0 -255 142.5 -393.5t402.5 -138.5q116 0 250.5 25t263.5 71v-229q-224 -95 -500 -95q-388 0 -609.5 202.5t-221.5 561.5q0 253 114.5 453.5t316 309t456.5 108.5q234 0 413.5 -89t276 -253.5t96.5 -382.5zM760 641 q0 -100 36.5 -145t96.5 -45q77 0 113 62t47 220l10 156q-40 6 -68 6q-108 0 -171.5 -67t-63.5 -187z" />
+<glyph unicode="A" horiz-adv-x="1487" d="M1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311z" />
+<glyph unicode="B" horiz-adv-x="1380" d="M158 1462h510q298 0 442.5 -88.5t144.5 -275.5q0 -123 -63 -210t-166 -112v-10q136 -36 197 -120t61 -218q0 -199 -149.5 -313.5t-407.5 -114.5h-569v1462zM553 901h119q85 0 131.5 35t46.5 104q0 123 -186 123h-111v-262zM553 612v-307h139q185 0 185 156 q0 73 -49.5 112t-143.5 39h-131z" />
+<glyph unicode="C" horiz-adv-x="1329" d="M809 1159q-141 0 -220 -115.5t-79 -318.5q0 -422 321 -422q97 0 188 27t183 65v-334q-183 -81 -414 -81q-331 0 -507.5 192t-176.5 555q0 227 85.5 399t246 264.5t377.5 92.5q237 0 453 -103l-121 -311q-81 38 -162 64t-174 26z" />
+<glyph unicode="D" horiz-adv-x="1503" d="M1399 762q0 -366 -201.5 -564t-566.5 -198h-473v1462h506q352 0 543.5 -180t191.5 -520zM989 748q0 201 -79.5 298t-241.5 97h-115v-819h88q180 0 264 104.5t84 319.5z" />
+<glyph unicode="E" horiz-adv-x="1124" d="M1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322z" />
+<glyph unicode="F" horiz-adv-x="1104" d="M547 0h-389v1462h864v-317h-475v-279h438v-317h-438v-549z" />
+<glyph unicode="G" horiz-adv-x="1516" d="M745 856h631v-788q-257 -88 -565 -88q-338 0 -522.5 196t-184.5 559q0 354 202 551t566 197q138 0 260.5 -26t213.5 -66l-125 -310q-158 78 -347 78q-173 0 -267.5 -112.5t-94.5 -321.5q0 -205 85.5 -312.5t246.5 -107.5q88 0 162 17v229h-261v305z" />
+<glyph unicode="H" horiz-adv-x="1569" d="M1411 0h-397v596h-459v-596h-397v1462h397v-542h459v542h397v-1462z" />
+<glyph unicode="I" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397z" />
+<glyph unicode="J" horiz-adv-x="721" d="M43 -459q-108 0 -205 21v307q32 -6 68 -13.5t78 -7.5q98 0 140 59t42 202v1353h397v-1319q0 -297 -130 -449.5t-390 -152.5z" />
+<glyph unicode="K" horiz-adv-x="1407" d="M1407 0h-446l-289 559l-117 -70v-489h-397v1462h397v-635q30 59 121 187l307 448h432l-461 -655z" />
+<glyph unicode="L" horiz-adv-x="1192" d="M158 0v1462h395v-1143h563v-319h-958z" />
+<glyph unicode="M" horiz-adv-x="1980" d="M795 0l-299 1053h-9q21 -269 21 -418v-635h-350v1462h526l305 -1038h8l299 1038h527v-1462h-363v641q0 50 1.5 111t13.5 299h-9l-295 -1051h-376z" />
+<glyph unicode="N" horiz-adv-x="1708" d="M1550 0h-518l-534 1030h-9q19 -243 19 -371v-659h-350v1462h516l532 -1016h6q-14 221 -14 355v661h352v-1462z" />
+<glyph unicode="O" horiz-adv-x="1632" d="M1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428z" />
+<glyph unicode="P" horiz-adv-x="1294" d="M1219 997q0 -245 -144.5 -378.5t-410.5 -133.5h-111v-485h-395v1462h506q277 0 416 -121t139 -344zM553 807h72q89 0 141.5 50t52.5 138q0 148 -164 148h-102v-336z" />
+<glyph unicode="Q" horiz-adv-x="1632" d="M1526 733q0 -497 -316 -670l357 -411h-492l-258 325l-1 1v1l-1 1q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428z" />
+<glyph unicode="R" horiz-adv-x="1386" d="M553 532v-532h-395v1462h479q596 0 596 -432q0 -254 -248 -393l426 -637h-448l-310 532h-100zM553 829h74q207 0 207 183q0 151 -203 151h-78v-334z" />
+<glyph unicode="S" horiz-adv-x="1182" d="M1114 444q0 -136 -69 -241.5t-199 -164t-305 -58.5q-146 0 -245 20.5t-206 71.5v352q113 -58 235 -90.5t224 -32.5q88 0 129 30.5t41 78.5q0 30 -16.5 52.5t-53 45.5t-194.5 94q-143 65 -214.5 126t-106 140t-34.5 187q0 202 147 315t404 113q227 0 463 -105l-121 -305 q-205 94 -354 94q-77 0 -112 -27t-35 -67q0 -43 44.5 -77t241.5 -124q189 -85 262.5 -182.5t73.5 -245.5z" />
+<glyph unicode="T" horiz-adv-x="1210" d="M803 0h-395v1139h-357v323h1108v-323h-356v-1139z" />
+<glyph unicode="U" horiz-adv-x="1550" d="M1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395z" />
+<glyph unicode="V" horiz-adv-x="1421" d="M979 1462h442l-479 -1462h-465l-477 1462h444l199 -741q62 -247 68 -344q7 70 28 175t37 165z" />
+<glyph unicode="W" horiz-adv-x="2128" d="M1737 0h-467l-140 637q-10 40 -31.5 159t-31.5 199q-8 -65 -26 -161.5t-35.5 -177.5t-145.5 -656h-467l-362 1462h381l159 -733q54 -243 74 -387q13 102 46.5 277t62.5 290l129 553h366l125 -553q32 -133 65 -307t44 -260q13 111 71 385l162 735h381z" />
+<glyph unicode="X" horiz-adv-x="1481" d="M1475 0h-457l-285 457l-282 -457h-447l485 748l-456 714h438l264 -452l254 452h451l-463 -745z" />
+<glyph unicode="Y" horiz-adv-x="1360" d="M680 920l252 542h428l-481 -891v-571h-398v559l-481 903h430z" />
+<glyph unicode="Z" horiz-adv-x="1251" d="M1200 0h-1139v244l633 899h-618v319h1108v-243l-633 -900h649v-319z" />
+<glyph unicode="[" horiz-adv-x="664" d="M616 -344h-499v1847h499v-254h-182v-1339h182v-254zM355 1485z" />
+<glyph unicode="\" horiz-adv-x="905" d="M352 1483l545 -1503h-346l-545 1503h346z" />
+<glyph unicode="]" horiz-adv-x="664" d="M47 -90h182v1339h-182v254h500v-1847h-500v254zM317 1485z" />
+<glyph unicode="^" horiz-adv-x="1075" d="M-16 502l440 966h170l508 -966h-295l-289 577l-124 -291l-124 -286h-286z" />
+<glyph unicode="_" horiz-adv-x="1024" d="M1028 -379h-1032v246h1032v-246z" />
+<glyph unicode="`" horiz-adv-x="1225" d="M696 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="a" horiz-adv-x="1276" d="M874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104z" />
+<glyph unicode="b" horiz-adv-x="1317" d="M827 1153q185 0 293.5 -155t108.5 -429q0 -276 -109.5 -432.5t-304.5 -156.5q-63 0 -112 13.5t-87.5 37.5t-89.5 80h-24l-62 -111h-305v1556h391v-352q0 -63 -14 -217h14q57 88 131.5 127t169.5 39zM684 846q-82 0 -120 -57t-38 -179v-55q0 -139 38 -199.5t124 -60.5 q69 0 106 70.5t37 207.5q0 273 -147 273z" />
+<glyph unicode="c" horiz-adv-x="1104" d="M651 -20q-278 0 -421.5 150t-143.5 431q0 282 155 437t441 155q197 0 371 -86l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 -272q172 0 330 100v-311q-151 -100 -363 -100z" />
+<glyph unicode="d" horiz-adv-x="1317" d="M487 -20q-121 0 -211.5 69t-140 203t-49.5 313q0 276 111 432t305 156q95 0 166.5 -38t130.5 -128h8q-19 133 -19 266v303h394v-1556h-295l-84 143h-15q-101 -163 -301 -163zM647 289q94 0 132.5 59t41.5 182v31q0 150 -43 213.5t-135 63.5q-77 0 -119.5 -72.5 t-42.5 -206.5q0 -132 43 -201t123 -69z" />
+<glyph unicode="e" horiz-adv-x="1266" d="M682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49z" />
+<glyph unicode="f" horiz-adv-x="846" d="M827 840h-241v-840h-391v840h-150v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293z" />
+<glyph unicode="g" horiz-adv-x="1241" d="M1204 1133v-189l-155 -57q32 -58 32 -135q0 -183 -128.5 -284t-383.5 -101q-63 0 -100 8q-14 -26 -14 -49q0 -29 47 -44.5t123 -15.5h188q381 0 381 -321q0 -207 -176.5 -322t-495.5 -115q-241 0 -371.5 80.5t-130.5 231.5q0 203 252 262q-52 22 -90.5 71t-38.5 97 q0 53 29 93.5t121 96.5q-88 39 -138.5 122t-50.5 202q0 185 126 287t360 102q31 0 107 -7t112 -13h395zM350 -141q0 -48 52 -77.5t139 -29.5q142 0 227.5 35.5t85.5 91.5q0 45 -52 63.5t-149 18.5h-153q-63 0 -106.5 -29.5t-43.5 -72.5zM473 762q0 -174 121 -174 q56 0 86.5 43t30.5 129q0 176 -117 176q-121 0 -121 -174z" />
+<glyph unicode="h" horiz-adv-x="1372" d="M848 0v618q0 228 -135 228q-96 0 -141.5 -80.5t-45.5 -267.5v-498h-391v1556h391v-221q0 -150 -16 -342h18q56 88 133 124t179 36q190 0 295.5 -109.5t105.5 -306.5v-737h-393z" />
+<glyph unicode="i" horiz-adv-x="666" d="M528 0h-391v1133h391v-1133zM127 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172z" />
+<glyph unicode="j" horiz-adv-x="664" d="M106 -492q-48 0 -110.5 7.5t-99.5 17.5v305q64 -18 120 -18q119 0 119 170v1143h391v-1225q0 -187 -109.5 -293.5t-310.5 -106.5zM125 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172z" />
+<glyph unicode="k" horiz-adv-x="1350" d="M514 637q71 113 121 176l254 320h436l-393 -482l418 -651h-447l-248 406l-127 -97v-309h-393v1556h393v-612q0 -157 -22 -307h8z" />
+<glyph unicode="l" horiz-adv-x="662" d="M526 0h-391v1556h391v-1556z" />
+<glyph unicode="m" horiz-adv-x="2048" d="M1526 0v616q0 115 -31.5 172.5t-99.5 57.5q-90 0 -132 -77t-42 -241v-528h-392v616q0 115 -30 172.5t-97 57.5q-92 0 -134 -82t-42 -268v-496h-391v1133h295l49 -140h23q45 78 130.5 119t194.5 41q245 0 344 -149h31q48 70 133.5 109.5t188.5 39.5q201 0 297 -103 t96 -313v-737h-391z" />
+<glyph unicode="n" horiz-adv-x="1372" d="M850 0v618q0 113 -32.5 170.5t-104.5 57.5q-99 0 -143 -79t-44 -271v-496h-391v1133h295l49 -140h23q50 80 138.5 120t203.5 40q188 0 292.5 -109t104.5 -307v-737h-391z" />
+<glyph unicode="o" horiz-adv-x="1305" d="M1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5z" />
+<glyph unicode="p" horiz-adv-x="1317" d="M815 -20q-86 0 -154 28.5t-135 102.5h-18q18 -119 18 -148v-455h-391v1625h318l55 -144h18q109 164 301 164q188 0 295 -156t107 -428q0 -274 -111.5 -431.5t-302.5 -157.5zM684 846q-86 0 -120.5 -61.5t-37.5 -182.5v-31q0 -146 39 -211t123 -65q75 0 109 64.5t34 213.5 q0 146 -34 209.5t-113 63.5z" />
+<glyph unicode="q" horiz-adv-x="1317" d="M492 -20q-190 0 -298 156t-108 429q0 276 110.5 432t301.5 156q205 0 309 -160h8l29 140h338v-1625h-391v469q0 34 12 166h-12q-96 -163 -299 -163zM651 283q89 0 129.5 55t40.5 186v47q0 150 -41 214.5t-135 64.5q-162 0 -162 -291q0 -148 41 -212t127 -64z" />
+<glyph unicode="r" horiz-adv-x="961" d="M819 1153q51 0 97 -8l22 -4l-35 -369q-48 12 -133 12q-128 0 -186 -58.5t-58 -168.5v-557h-391v1133h291l61 -181h19q49 90 136.5 145.5t176.5 55.5z" />
+<glyph unicode="s" horiz-adv-x="1092" d="M1010 348q0 -182 -124 -275t-356 -93q-126 0 -219 13.5t-190 49.5v313q91 -40 199.5 -66t193.5 -26q127 0 127 58q0 30 -35.5 53.5t-206.5 91.5q-156 64 -218 145.5t-62 206.5q0 158 122 246t345 88q112 0 210.5 -24.5t204.5 -71.5l-106 -252q-78 35 -165 59.5t-142 24.5 q-96 0 -96 -47q0 -29 33.5 -49.5t193.5 -83.5q119 -49 177.5 -96t86 -110.5t27.5 -154.5z" />
+<glyph unicode="t" horiz-adv-x="942" d="M690 289q79 0 189 39v-285q-79 -34 -150.5 -48.5t-167.5 -14.5q-197 0 -284 96.5t-87 296.5v467h-137v159l174 123l101 238h256v-227h278v-293h-278v-441q0 -110 106 -110z" />
+<glyph unicode="u" horiz-adv-x="1372" d="M942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295z" />
+<glyph unicode="v" horiz-adv-x="1251" d="M432 0l-432 1133h408l192 -670q1 -5 4 -17t6 -28.5t5.5 -35t2.5 -34.5h7q0 52 18 113l201 672h407l-432 -1133h-387z" />
+<glyph unicode="w" horiz-adv-x="1864" d="M1110 0l-128 540l-30 163l-20 131h-6q-49 -280 -66 -353l-115 -481h-411l-309 1133h385l92 -435q44 -224 51 -372h6q3 92 55 350l105 457h432l96 -463q46 -221 58 -344h6q6 76 20 189.5t31 182.5l100 435h377l-311 -1133h-418z" />
+<glyph unicode="x" horiz-adv-x="1290" d="M375 578l-346 555h444l172 -318l176 318h445l-355 -555l369 -578h-444l-191 344l-190 -344h-445z" />
+<glyph unicode="y" horiz-adv-x="1249" d="M-2 1133h412l192 -650q14 -51 19 -123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 -160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5z" />
+<glyph unicode="z" horiz-adv-x="1038" d="M987 0h-938v223l469 611h-442v299h889v-242l-449 -592h471v-299z" />
+<glyph unicode="{" horiz-adv-x="887" d="M61 719q115 0 180.5 44.5t65.5 125.5v254q0 139 49 208t159.5 100.5t305.5 31.5v-279q-89 -3 -120.5 -13.5t-50.5 -32.5t-19 -60v-271q0 -113 -56.5 -173.5t-183.5 -78.5v-12q128 -20 184 -79t56 -167v-276q0 -39 21 -61t56 -32.5t113 -13.5v-278q-197 0 -307 32 t-158.5 101.5t-48.5 210.5v248q0 80 -67 125t-179 45v301z" />
+<glyph unicode="|" horiz-adv-x="1042" d="M387 1556h268v-2002h-268v2002z" />
+<glyph unicode="}" horiz-adv-x="887" d="M825 418q-111 0 -178 -45t-67 -125v-248q0 -140 -49 -210t-159 -102t-306 -32v278q108 4 149 29.5t41 77.5v276q0 108 56 167t184 79v12q-127 18 -183.5 78.5t-56.5 173.5v271q0 39 -19.5 60.5t-50 32t-120.5 13.5v279q196 0 306 -31.5t159 -100.5t49 -208v-254 q0 -81 65 -125.5t180 -44.5v-301z" />
+<glyph unicode="~" horiz-adv-x="1159" d="M305 647q-110 0 -233 -121v281q104 108 264 108q69 0 130 -13.5t150 -49.5q131 -55 238 -55q50 0 112.5 32t118.5 89v-281q-105 -109 -264 -109q-71 0 -133.5 15t-146.5 49q-131 55 -236 55z" />
+<glyph unicode="¡" horiz-adv-x="594" d="M133 612h330l51 -946h-432zM510 963q0 -91 -53.5 -142t-157.5 -51q-102 0 -154.5 50.5t-52.5 142.5q0 90 54 140t153 50q101 0 156 -50.5t55 -139.5z" />
+<glyph unicode="¢" d="M565 1483h207v-154q171 -9 324 -84l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 -272q172 0 330 100v-311q-127 -82 -285 -98v-180h-207v186q-212 31 -324 176t-112 397q0 240 113 388.5t323 189.5v166z" />
+<glyph unicode="£" d="M723 1485q210 0 405 -82l-110 -289q-148 55 -252 55q-58 0 -85.5 -33t-27.5 -104v-106h344v-277h-344v-96q0 -150 -159 -227h671v-326h-1061v313q81 47 109.5 76.5t41.5 67.5t13 94v98h-166v277h166v118q0 215 117 328t338 113z" />
+<glyph unicode="¤" horiz-adv-x="1159" d="M180 723q0 89 41 176l-125 119l180 182l123 -123q84 41 172 41q91 0 177 -45l120 127l185 -174l-127 -125q41 -76 41 -178q0 -94 -41 -176l121 -119l-179 -178l-120 119q-89 -39 -177 -39q-100 0 -176 37l-119 -115l-178 178l123 119q-41 82 -41 174zM436 723 q0 -56 40.5 -95.5t94.5 -39.5q58 0 100 38.5t42 96.5t-42 97.5t-100 39.5q-56 0 -95.5 -40.5t-39.5 -96.5z" />
+<glyph unicode="¥" d="M600 958l193 504h399l-363 -712h195v-211h-242v-117h242v-209h-242v-213h-364v213h-246v209h246v117h-246v211h190l-354 712h400z" />
+<glyph unicode="¦" horiz-adv-x="1042" d="M387 1556h268v-839h-268v839zM387 393h268v-839h-268v839z" />
+<glyph unicode="§" horiz-adv-x="1024" d="M106 803q0 64 43 125t121 108q-141 102 -141 246q0 137 111 216t295 79q191 0 370 -86l-98 -221q-73 40 -146.5 63t-128.5 23q-108 0 -108 -74q0 -43 45.5 -79t128.5 -70q175 -71 252.5 -152t77.5 -178q0 -77 -32 -137.5t-116 -120.5q125 -94 125 -244 q0 -149 -116.5 -237.5t-319.5 -88.5q-204 0 -352 86v244q79 -44 182 -76t172 -32q139 0 139 96q0 42 -31 72.5t-139 78.5q-141 63 -205.5 112t-96.5 108t-32 139zM397 834q0 -51 44 -91t155 -98q41 47 41 107q0 57 -42 100t-140 84q-58 -32 -58 -102z" />
+<glyph unicode="¨" horiz-adv-x="1233" d="M223 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM702 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="©" horiz-adv-x="1688" d="M887 971q-81 0 -126.5 -61t-45.5 -179q0 -128 43.5 -185t134.5 -57q138 0 258 68v-231q-126 -64 -272 -64q-212 0 -328.5 124t-116.5 349q0 217 113 340t321 123q166 0 322 -78l-92 -205q-106 56 -211 56zM92 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272 t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM256 731q0 -158 79.5 -295.5t215.5 -215t293 -77.5q158 0 294 78.5t215 215t79 294.5q0 157 -77.5 293t-214 215.5t-296.5 79.5q-158 0 -294.5 -78.5t-215 -215 t-78.5 -294.5z" />
+<glyph unicode="ª" horiz-adv-x="813" d="M571 741l-45 127q-48 -76 -104.5 -107.5t-138.5 -31.5q-109 0 -171.5 63.5t-62.5 174.5q0 116 77 171t267 64l88 4v6q0 41 -25.5 58.5t-76.5 17.5q-57 0 -107.5 -15t-103.5 -40l-76 166q108 51 180.5 65.5t163.5 14.5q139 0 218 -75.5t79 -213.5v-449h-162zM301 979 q0 -32 18 -50t52 -18q50 0 80 38.5t30 97.5v22l-84 -6q-96 -6 -96 -84z" />
+<glyph unicode="«" horiz-adv-x="1395" d="M74 588l389 483l280 -149l-272 -347l272 -348l-280 -147l-389 481v27zM649 588l387 483l283 -149l-275 -347l275 -348l-283 -147l-387 481v27z" />
+<glyph unicode="¬" horiz-adv-x="1159" d="M1085 238h-270v350h-743v268h1013v-618z" />
+<glyph unicode="­" horiz-adv-x="651" d="M43 393zM43 393v312h565v-312h-565z" />
+<glyph unicode="®" horiz-adv-x="1688" d="M1204 918q0 -87 -33 -146.5t-108 -95.5l194 -363h-290l-146 320h-35v-320h-280v875h291q407 0 407 -270zM786 809h11q58 0 91.5 21.5t33.5 76.5q0 47 -27.5 66.5t-95.5 19.5h-13v-184zM92 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272t104 -383 q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM256 731q0 -158 79.5 -295.5t215.5 -215t293 -77.5q158 0 294 78.5t215 215t79 294.5q0 157 -77.5 293t-214 215.5t-296.5 79.5q-158 0 -294.5 -78.5t-215 -215t-78.5 -294.5z" />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v246h1036v-246z" />
+<glyph unicode="°" horiz-adv-x="864" d="M63 1114q0 97 49 182.5t135 136t185 50.5t185 -50.5t135 -135.5t49 -183q0 -97 -48.5 -181t-134 -133.5t-186.5 -49.5q-99 0 -185 49t-135 133t-49 182zM301 1114q0 -50 38.5 -88.5t92.5 -38.5t92.5 39t38.5 88q0 52 -37.5 92.5t-93.5 40.5t-93.5 -40.5t-37.5 -92.5z" />
+<glyph unicode="±" horiz-adv-x="1159" d="M444 684h-372v268h372v367h269v-367h372v-268h-372v-360h-269v360zM72 0v268h1013v-268h-1013z" />
+<glyph unicode="²" horiz-adv-x="817" d="M750 586h-674v207l215 213q84 84 116.5 129t32.5 79q0 58 -65 58q-81 0 -172 -88l-142 166q80 73 167.5 104t203.5 31q142 0 219.5 -63t77.5 -175q0 -46 -13 -87t-40.5 -84.5t-74.5 -91t-198 -173.5h347v-225z" />
+<glyph unicode="³" horiz-adv-x="817" d="M725 1266q0 -78 -37 -132.5t-125 -86.5v-9q97 -24 144 -76t47 -139q0 -120 -98 -187t-277 -67q-185 0 -309 70v233q117 -81 297 -81q116 0 116 67q0 41 -32.5 56.5t-102.5 15.5h-104v194h80q71 0 105 18.5t34 59.5q0 25 -21 46.5t-71 21.5t-94 -17t-97 -57l-117 170 q149 115 343 115q146 0 232.5 -57.5t86.5 -157.5z" />
+<glyph unicode="´" horiz-adv-x="1225" d="M264 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="µ" horiz-adv-x="1376" d="M526 518q0 -115 33.5 -172t112.5 -57q93 0 134.5 83t41.5 265v496h393v-1133h-293l-53 152h-16q-34 -88 -90.5 -130t-122.5 -42q-56 0 -90 20t-62 63q12 -90 12 -235v-320h-391v1625h391v-615z" />
+<glyph unicode="¶" horiz-adv-x="1317" d="M1186 -260h-191v1587h-157v-1587h-191v819q-54 -18 -125 -18q-216 0 -318 125t-102 376q0 256 107.5 385t343.5 129h633v-1816z" />
+<glyph unicode="·" horiz-adv-x="592" d="M86 723q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -141.5t-150.5 -51.5q-100 0 -156.5 51t-56.5 142z" />
+<glyph unicode="¸" horiz-adv-x="383" d="M397 -252q0 -109 -75 -174.5t-199 -65.5q-136 0 -213 29v205q83 -27 147 -27q52 0 52 47q0 33 -41 58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5z" />
+<glyph unicode="¹" horiz-adv-x="817" d="M616 586h-282v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98l-146 170l340 274h219v-876z" />
+<glyph unicode="º" horiz-adv-x="803" d="M756 1104q0 -174 -95.5 -274.5t-261.5 -100.5q-159 0 -254.5 102.5t-95.5 272.5q0 177 94.5 276t259.5 99q157 0 255 -103t98 -272zM301 1104q0 -87 24 -129.5t76 -42.5q99 0 99 172q0 174 -99 174q-100 0 -100 -174z" />
+<glyph unicode="»" horiz-adv-x="1395" d="M1321 561l-387 -481l-285 147l275 348l-275 347l285 149l387 -483v-27zM745 561l-387 -481l-282 147l272 348l-272 347l282 149l387 -483v-27z" />
+<glyph unicode="¼" horiz-adv-x="1919" d="M0 0zM1798 140h-125v-139h-275v139h-370v188l350 555h295v-542h125v-201zM1398 341v166q0 69 7 135q-40 -100 -62 -133l-102 -168h157zM1412 1462l-754 -1462h-301l753 1462h302zM547 586h-282v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98l-146 170l340 274 h219v-876z" />
+<glyph unicode="½" horiz-adv-x="1921" d="M0 0zM1829 1h-674v207l215 213q84 84 116.5 129t32.5 79q0 58 -65 58q-81 0 -172 -88l-142 166q80 73 167.5 104t203.5 31q142 0 219.5 -63t77.5 -175q0 -46 -13 -87t-40.5 -84.5t-74.5 -91t-198 -173.5h347v-225zM1436 1462l-754 -1462h-301l753 1462h302zM547 586h-282 v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98l-146 170l340 274h219v-876z" />
+<glyph unicode="¾" horiz-adv-x="1921" d="M83 0zM1870 140h-125v-139h-275v139h-370v188l350 555h295v-542h125v-201zM1470 341v166q0 69 7 135q-40 -100 -62 -133l-102 -168h157zM745 1266q0 -78 -37 -132.5t-125 -86.5v-9q97 -24 144 -76t47 -139q0 -120 -98 -187t-277 -67q-185 0 -309 70v233q117 -81 297 -81 q116 0 116 67q0 41 -32.5 56.5t-102.5 15.5h-104v194h80q71 0 105 18.5t34 59.5q0 25 -21 46.5t-71 21.5t-94 -17t-97 -57l-117 170q149 115 343 115q146 0 232.5 -57.5t86.5 -157.5zM1520 1462l-754 -1462h-301l753 1462h302z" />
+<glyph unicode="¿" horiz-adv-x="1034" d="M739 612v-86q0 -98 -40 -165.5t-142 -131.5q-57 -36 -90 -66t-47 -55.5t-14 -64.5q0 -42 37.5 -66t99.5 -24q148 0 352 106l139 -272q-243 -141 -520 -141q-223 0 -350 98t-127 266q0 120 55 208t182 169q100 64 129 97t29 77v51h307zM782 963q0 -93 -53 -143t-158 -50 q-101 0 -153.5 50t-52.5 143q0 90 54 140t152 50q101 0 156 -49.5t55 -140.5z" />
+<glyph unicode="À" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM704 1579q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="Á" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM532 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Â" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM948 1579q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29 h-254z" />
+<glyph unicode="Ã" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM926 1577q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5 q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="Ä" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM352 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5 q-78 0 -124 41t-46 115zM831 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="Å" horiz-adv-x="1487" d="M0 0zM1055 0l-72 274h-475l-74 -274h-434l477 1468h527l483 -1468h-432zM901 598l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461h311zM1011 1616q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 183.5q0 116 71.5 185t192.5 69 q118 0 195 -70t77 -182zM823 1614q0 38 -24.5 61t-59.5 23t-59.5 -23t-24.5 -61q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5z" />
+<glyph unicode="Æ" horiz-adv-x="1937" d="M1839 0h-870v274h-437l-100 -274h-442l628 1462h1221v-317h-473v-230h438v-317h-438v-276h473v-322zM653 602h316v526h-111z" />
+<glyph unicode="Ç" horiz-adv-x="1329" d="M104 0zM809 1159q-141 0 -220 -115.5t-79 -318.5q0 -422 321 -422q97 0 188 27t183 65v-334q-183 -81 -414 -81q-331 0 -507.5 192t-176.5 555q0 227 85.5 399t246 264.5t377.5 92.5q237 0 453 -103l-121 -311q-81 38 -162 64t-174 26zM964 -252q0 -109 -75 -174.5 t-199 -65.5q-136 0 -213 29v205q83 -27 147 -27q52 0 52 47q0 33 -41 58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5z" />
+<glyph unicode="È" horiz-adv-x="1124" d="M154 0zM1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322zM586 1579q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="É" horiz-adv-x="1124" d="M158 0zM1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322zM362 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Ê" horiz-adv-x="1124" d="M151 0zM1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322zM804 1579q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="Ë" horiz-adv-x="1124" d="M158 0zM1026 0h-868v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322zM187 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM666 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115 q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="Ì" horiz-adv-x="713" d="M0 0zM158 0v1462h397v-1462h-397zM316 1579q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="Í" horiz-adv-x="713" d="M156 0zM158 0v1462h397v-1462h-397zM156 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Î" horiz-adv-x="713" d="M0 0zM158 0v1462h397v-1462h-397zM558 1579q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="Ï" horiz-adv-x="713" d="M0 0zM158 0v1462h397v-1462h-397zM-55 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM424 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
+<glyph unicode="Ð" horiz-adv-x="1503" d="M1399 762q0 -366 -201.5 -564t-566.5 -198h-473v563h-127v320h127v579h506q352 0 543.5 -180t191.5 -520zM989 748q0 201 -79.5 298t-241.5 97h-115v-260h211v-320h-211v-239h88q180 0 264 104.5t84 319.5z" />
+<glyph unicode="Ñ" horiz-adv-x="1708" d="M158 0zM1550 0h-518l-534 1030h-9q19 -243 19 -371v-659h-350v1462h516l532 -1016h6q-14 221 -14 355v661h352v-1462zM1030 1577q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25 t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="Ò" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM829 1579 q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="Ó" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM583 1579v29 q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Ô" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM1016 1579q-84 48 -201 150 q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="Õ" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM997 1577q-45 0 -90.5 15 t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="Ö" horiz-adv-x="1632" d="M104 0zM1526 733q0 -369 -181 -561t-530 -192q-344 0 -527.5 193t-183.5 562q0 365 182.5 557.5t530.5 192.5q349 0 529 -191t180 -561zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428zM403 1751q0 75 46 116.5 t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM882 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="×" horiz-adv-x="1159" d="M387 723l-266 268l182 189l270 -267l275 267l188 -183l-274 -274l270 -272l-184 -185l-275 271l-270 -269l-180 187z" />
+<glyph unicode="Ø" horiz-adv-x="1632" d="M1526 733q0 -369 -181 -561t-530 -192q-177 0 -307 43l-84 -132l-193 125l84 125q-211 194 -211 594q0 365 182.5 557.5t530.5 192.5q191 0 330 -55l76 118l190 -114l-82 -125q195 -189 195 -576zM1110 733q0 125 -18 211l-394 -620q54 -15 117 -15q150 0 222.5 103 t72.5 321zM520 733q0 -155 29 -239l403 639q-68 28 -135 28q-297 0 -297 -428z" />
+<glyph unicode="Ù" horiz-adv-x="1550" d="M150 0zM1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395zM712 1579q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="Ú" horiz-adv-x="1550" d="M150 0zM1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395zM561 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Û" horiz-adv-x="1550" d="M150 0zM1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395zM975 1579q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393 q94 -137 256 -299v-29h-254z" />
+<glyph unicode="Ü" horiz-adv-x="1550" d="M150 0zM1401 1462v-880q0 -287 -162.5 -444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440v889h397v-858q0 -155 58 -225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395zM362 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5 t-125.5 -42.5q-78 0 -124 41t-46 115zM841 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="Ý" horiz-adv-x="1360" d="M0 0zM680 920l252 542h428l-481 -891v-571h-398v559l-481 903h430zM471 1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="Þ" horiz-adv-x="1284" d="M1219 784q0 -245 -144.5 -378.5t-410.5 -133.5h-111v-272h-395v1462h395v-213h111q277 0 416 -121t139 -344zM553 594h72q89 0 141.5 50t52.5 138q0 148 -164 148h-102v-336z" />
+<glyph unicode="ß" horiz-adv-x="1536" d="M1339 1190q0 -57 -20 -103.5t-49.5 -84t-64.5 -66.5t-64.5 -52t-49.5 -41t-20 -32q0 -23 24.5 -44t93.5 -58q169 -95 228.5 -173t59.5 -202q0 -174 -115 -264t-338 -90q-136 0 -221.5 12.5t-149.5 46.5v291q49 -30 131.5 -55t147.5 -25q61 0 99 23.5t38 62.5 q0 28 -14.5 47t-50.5 42.5t-121 68.5q-126 67 -175 124.5t-49 137.5q0 122 140 218q75 52 107 91.5t32 83.5q0 51 -49.5 85t-140.5 34q-222 0 -222 -209v-1059h-391v1100q0 215 167 341t446 126q276 0 433.5 -99.5t157.5 -277.5z" />
+<glyph unicode="à" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM636 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="á" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM434 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="â" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM850 1238q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="ã" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM840 1239q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="ä" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM268 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM747 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
+<glyph unicode="å" horiz-adv-x="1276" d="M74 0zM874 0l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 96t-92 270q0 181 126 269.5t365 99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 -108t119.5 -302v-743h-271zM584 256q71 0 121.5 45t50.5 117v88l-90 -4 q-193 -7 -193 -142q0 -104 111 -104zM925 1491q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 183.5q0 116 71.5 185t192.5 69q118 0 195 -70t77 -182zM737 1489q0 38 -24.5 61t-59.5 23t-59.5 -23t-24.5 -61q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5z " />
+<glyph unicode="æ" horiz-adv-x="1915" d="M1341 -20q-280 0 -430 190q-80 -83 -141.5 -120.5t-138.5 -53.5t-197 -16q-162 0 -261 101.5t-99 270.5q0 345 497 363l183 6v18q0 138 -136 138q-138 0 -313 -80l-110 256q190 100 454 100q201 0 336 -94q70 49 153 71.5t199 22.5q229 0 360.5 -136.5t131.5 -383.5v-172 h-696q4 -90 74 -146.5t186 -56.5q194 0 364 86v-281q-94 -48 -191 -65.5t-225 -17.5zM756 506l-84 -4q-106 -4 -152.5 -38.5t-46.5 -107.5q0 -100 113 -100q69 0 119.5 45t50.5 117v88zM1315 887q-162 0 -176 -180h340q-2 82 -48 131t-116 49z" />
+<glyph unicode="ç" horiz-adv-x="1104" d="M86 0zM651 -20q-278 0 -421.5 150t-143.5 431q0 282 155 437t441 155q197 0 371 -86l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 -272q172 0 330 100v-311q-151 -100 -363 -100zM848 -252q0 -109 -75 -174.5t-199 -65.5q-136 0 -213 29 v205q83 -27 147 -27q52 0 52 47q0 33 -41 58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5z" />
+<glyph unicode="è" horiz-adv-x="1266" d="M86 0zM682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49zM621 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="é" horiz-adv-x="1266" d="M86 0zM682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49zM471 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="ê" horiz-adv-x="1266" d="M86 0zM682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49zM858 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="ë" horiz-adv-x="1266" d="M86 0zM682 -20q-283 0 -439.5 150.5t-156.5 428.5q0 287 145 440.5t414 153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18zM659 887q-69 0 -115.5 -43.5t-54.5 -136.5h336 q-2 82 -46.5 131t-119.5 49zM252 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM731 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
+<glyph unicode="ì" horiz-adv-x="666" d="M0 0zM528 0h-391v1133h391v-1133zM302 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="í" horiz-adv-x="666" d="M107 0zM528 0h-391v1133h391v-1133zM107 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="î" horiz-adv-x="666" d="M0 0zM528 0h-391v1133h391v-1133zM533 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="ï" horiz-adv-x="666" d="M0 0zM528 0h-391v1133h391v-1133zM-61 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM418 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 t-45.5 114.5z" />
+<glyph unicode="ð" horiz-adv-x="1313" d="M1217 580q0 -275 -152.5 -437.5t-415.5 -162.5q-259 0 -410 139t-151 379q0 239 130.5 377.5t348.5 138.5q192 0 244 -84l8 4q-67 130 -143 207l-182 -119l-117 184l143 92l-149 93l108 182q174 -73 266 -135l209 137l115 -182l-145 -97q159 -157 226 -327.5t67 -388.5z M817 545q0 84 -45 136t-119 52q-92 0 -128 -56t-36 -177q0 -242 164 -242q91 0 127.5 71t36.5 216z" />
+<glyph unicode="ñ" horiz-adv-x="1372" d="M135 0zM850 0v618q0 113 -32.5 170.5t-104.5 57.5q-99 0 -143 -79t-44 -271v-496h-391v1133h295l49 -140h23q50 80 138.5 120t203.5 40q188 0 292.5 -109t104.5 -307v-737h-391zM870 1239q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5 t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="ò" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM607 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29h-260z" />
+<glyph unicode="ó" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM416 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="ô" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM852 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="õ" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM827 1239q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode="ö" horiz-adv-x="1305" d="M86 0zM1217 569q0 -278 -149.5 -433.5t-418.5 -155.5q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5zM483 569q0 -146 39 -222.5t131 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM239 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM718 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="÷" horiz-adv-x="1159" d="M72 588v268h1013v-268h-1013zM422 332q0 82 39.5 126t116.5 44q75 0 116 -43.5t41 -126.5q0 -80 -43.5 -125t-113.5 -45q-71 0 -113.5 44t-42.5 126zM422 1112q0 82 39.5 126t116.5 44q75 0 116 -43.5t41 -126.5q0 -80 -43.5 -125t-113.5 -45q-71 0 -113.5 44t-42.5 126z " />
+<glyph unicode="ø" horiz-adv-x="1362" d="M274 113q-188 158 -188 456q0 277 157 430.5t441 153.5q125 0 234 -39l71 111l168 -105l-67 -104q184 -158 184 -447q0 -280 -156.5 -434.5t-439.5 -154.5q-125 0 -229 34l-84 -131l-170 107zM461 569q0 -99 12 -147l289 448q-36 13 -82 13q-114 0 -166.5 -74t-52.5 -240 zM899 569q0 86 -10 131l-283 -442q27 -8 76 -8q114 0 165.5 73t51.5 246z" />
+<glyph unicode="ù" horiz-adv-x="1372" d="M133 0zM942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295zM607 1241q-69 44 -203.5 138.5t-228.5 168.5v21h430q52 -70 203 -233l59 -66v-29 h-260z" />
+<glyph unicode="ú" horiz-adv-x="1372" d="M133 0zM942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295zM471 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144 h-260z" />
+<glyph unicode="û" horiz-adv-x="1372" d="M133 0zM942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295zM883 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153 t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="ü" horiz-adv-x="1372" d="M133 0zM942 0l-49 141h-23q-49 -78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5v738h391v-619q0 -111 31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295zM272 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5 q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM751 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="ý" horiz-adv-x="1249" d="M0 0zM-2 1133h412l192 -650q14 -51 19 -123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 -160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5zM401 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260 z" />
+<glyph unicode="þ" horiz-adv-x="1317" d="M526 987q43 78 122 122t179 44q185 0 293.5 -154t108.5 -430q0 -271 -111.5 -430t-304.5 -159q-173 0 -287 129h-14l7 -60l7 -92v-449h-391v2048h391v-344q0 -106 -18 -225h18zM682 846q-85 0 -119 -61.5t-37 -184.5v-29q0 -146 39 -211t123 -65q80 0 111.5 70.5 t31.5 207.5q0 134 -33 203.5t-116 69.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1249" d="M0 0zM-2 1133h412l192 -650q14 -51 19 -123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 -160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5zM216 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5 q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM695 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="ı" horiz-adv-x="666" d="M528 0h-391v1133h391v-1133z" />
+<glyph unicode="Œ" horiz-adv-x="1960" d="M1862 0h-844q-34 -8 -110.5 -14t-133.5 -6q-319 0 -494.5 200t-175.5 555q0 359 175 554.5t497 195.5q67 0 143.5 -7t106.5 -16h836v-317h-473v-230h436v-317h-436v-276h473v-322zM778 1161q-125 0 -191.5 -109.5t-66.5 -318.5q0 -205 64.5 -314.5t191.5 -109.5 q141 0 217 43v760q-34 23 -93 36t-122 13z" />
+<glyph unicode="œ" horiz-adv-x="2007" d="M1434 -20q-238 0 -383 137q-151 -137 -402 -137q-258 0 -410.5 159t-152.5 430q0 277 149.5 430.5t419.5 153.5q226 0 375 -127q155 127 400 127q227 0 359 -136t132 -384v-172h-696q4 -90 74 -146.5t186 -56.5q194 0 364 86v-281q-92 -47 -187 -65t-228 -18zM485 569 q0 -146 38 -222.5t130 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-89 0 -127.5 -74t-38.5 -219zM1407 887q-162 0 -176 -180h340q-2 82 -48 131t-116 49z" />
+<glyph unicode="Ÿ" horiz-adv-x="1360" d="M0 0zM680 920l252 542h428l-481 -891v-571h-398v559l-481 903h430zM268 1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM747 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5 t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="ˆ" horiz-adv-x="1237" d="M817 1241q-84 48 -201 150q-125 -107 -194 -150h-258v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254z" />
+<glyph unicode="˚" horiz-adv-x="1120" d="M829 1491q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 183.5q0 116 71.5 185t192.5 69q118 0 195 -70t77 -182zM641 1489q0 38 -24.5 61t-59.5 23t-59.5 -23t-24.5 -61q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5z" />
+<glyph unicode="˜" horiz-adv-x="1225" d="M772 1239q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5z" />
+<glyph unicode=" " horiz-adv-x="959" />
+<glyph unicode=" " horiz-adv-x="1919" />
+<glyph unicode=" " horiz-adv-x="959" />
+<glyph unicode=" " horiz-adv-x="1919" />
+<glyph unicode=" " horiz-adv-x="639" />
+<glyph unicode=" " horiz-adv-x="479" />
+<glyph unicode=" " horiz-adv-x="319" />
+<glyph unicode=" " horiz-adv-x="319" />
+<glyph unicode=" " horiz-adv-x="239" />
+<glyph unicode=" " horiz-adv-x="383" />
+<glyph unicode=" " horiz-adv-x="106" />
+<glyph unicode="‐" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="‑" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="‒" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M74 414v276h876v-276h-876z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M74 414v276h1896v-276h-1896z" />
+<glyph unicode="‘" horiz-adv-x="512" d="M35 877l-15 22q100 391 177 561h278q-67 -312 -98 -583h-342z" />
+<glyph unicode="’" horiz-adv-x="512" d="M477 1460l15 -22q-92 -366 -177 -561h-278q68 317 98 583h342z" />
+<glyph unicode="‚" horiz-adv-x="633" d="M57 0zM498 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342z" />
+<glyph unicode="“" horiz-adv-x="1022" d="M545 877l-15 22q100 391 177 561h278q-67 -312 -98 -583h-342zM35 877l-15 22q100 391 177 561h278q-67 -312 -98 -583h-342z" />
+<glyph unicode="”" horiz-adv-x="1022" d="M477 1460l15 -22q-92 -366 -177 -561h-278q68 317 98 583h342zM987 1460l14 -22q-93 -371 -176 -561h-278q68 317 98 583h342z" />
+<glyph unicode="„" horiz-adv-x="1143" d="M498 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342zM1008 299l14 -23q-97 -381 -176 -561h-279q29 138 58.5 309.5t40.5 274.5h342z" />
+<glyph unicode="•" horiz-adv-x="803" d="M74 748q0 174 84.5 267t242.5 93t243 -94.5t85 -265.5q0 -172 -87 -266.5t-241 -94.5q-155 0 -241 93t-86 268zM668 1133z" />
+<glyph unicode="…" horiz-adv-x="1776" d="M86 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM678 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM1270 166q0 92 54.5 142t158.5 50 q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141z" />
+<glyph unicode=" " horiz-adv-x="383" />
+<glyph unicode="‹" horiz-adv-x="819" d="M74 588l389 483l280 -149l-272 -347l272 -348l-280 -147l-389 481v27z" />
+<glyph unicode="›" horiz-adv-x="819" d="M745 561l-387 -481l-282 147l272 348l-272 347l282 149l387 -483v-27z" />
+<glyph unicode="⁄" horiz-adv-x="188" d="M621 1462l-754 -1462h-301l753 1462h302z" />
+<glyph unicode=" " horiz-adv-x="479" />
+<glyph unicode="⁴" horiz-adv-x="817" d="M799 725h-125v-139h-275v139h-370v188l350 555h295v-542h125v-201zM399 926v166q0 69 7 135q-40 -100 -62 -133l-102 -168h157z" />
+<glyph unicode="€" d="M829 1159q-112 0 -171.5 -53.5t-71.5 -142.5h338v-205h-353l-2 -29v-14l2 -44v1h287v-205h-264q33 -164 260 -164q145 0 266 55v-323q-102 -55 -291 -55q-253 0 -412 126t-206 361h-156v205h129l-2 21v22l2 43h-129v205h148q51 255 212.5 387.5t413.5 132.5 q180 0 349 -76l-119 -299q-120 51 -230 51z" />
+<glyph unicode="™" horiz-adv-x="1577" d="M403 741h-196v545h-170v176h536v-176h-170v-545zM983 741l-143 510h-9q7 -56 7 -110v-400h-193v721h287l137 -479l150 479h276v-721h-195v400q0 68 7 110h-9l-151 -510h-164z" />
+<glyph unicode="" horiz-adv-x="1135" d="M0 1135h1135v-1135h-1135v1135z" />
+<glyph horiz-adv-x="1317" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.ttf
new file mode 100755
index 0000000..6b9118e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.woff
new file mode 100755
index 0000000..a7b99d2
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.eot
new file mode 100755
index 0000000..0c8a0ae
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.svg
new file mode 100755
index 0000000..e1075dc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansitalic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1165" d="M0 0zM-104 -492q-69 0 -125 21v141q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098 q-39 -189 -120 -276t-213 -87zM870 0h-168l234 1096h168zM983 1376q0 56 32 91.5t83 35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-40 0 -66 24.5t-26 69.5z" />
+<glyph unicode="fl" horiz-adv-x="1165" d="M0 0zM-104 -492q-69 0 -125 21v141q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098 q-39 -189 -120 -276t-213 -87zM868 0h-168l332 1556h168z" />
+<glyph unicode="ffi" horiz-adv-x="1815" d="M545 -492q-71 0 -125 21v141q61 -22 115 -22q68 0 111 57.5t69 181.5l227 1082h-481l-232 -1098q-39 -189 -120 -276t-213 -87q-69 0 -125 21v141q64 -22 112 -22q70 0 114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5 t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11t92.5 -26l-45 -129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 -1098q-43 -195 -123.5 -279t-210.5 -84z M1522 0h-168l233 1096h168zM1634 1376q0 54 32 90.5t83 36.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-38 0 -65 24.5t-27 69.5z" />
+<glyph unicode="ffl" horiz-adv-x="1815" d="M1520 0h-168l331 1556h168zM545 -492q-71 0 -125 21v141q61 -22 115 -22q68 0 111 57.5t69 181.5l227 1082h-481l-232 -1098q-39 -189 -120 -276t-213 -87q-69 0 -125 21v141q64 -22 112 -22q70 0 114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5 t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11t92.5 -26l-45 -129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 -1098 q-43 -195 -123.5 -279t-210.5 -84z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="530" d="M555 1462l-274 -1059h-109q49 307 176 1059h207zM43 78q0 76 39.5 120t107.5 44q45 0 73 -27.5t28 -81.5q0 -68 -39 -115t-105 -47q-49 0 -76.5 28t-27.5 79z" />
+<glyph unicode=""" horiz-adv-x="791" d="M485 1462l-153 -528h-107l72 528h188zM834 1462l-154 -528h-107l72 528h189z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M1036 899l-98 -340h285l-13 -129h-309l-125 -430h-139l129 430h-303l-127 -430h-133l121 430h-261l13 129h284l101 340h-277l13 127h301l123 436h139l-125 -436h305l127 436h133l-125 -436h264l-12 -127h-291zM500 559h303l96 340h-303z" />
+<glyph unicode="$" d="M942 492q0 -162 -112.5 -263t-309.5 -123l-49 -225h-133l49 223q-195 14 -315 72v154q82 -41 175.5 -63.5t166.5 -22.5l98 452q-139 49 -201.5 123.5t-62.5 188.5q0 159 108 255t299 113l39 176h133l-39 -178q159 -12 283 -76l-63 -135q-121 63 -248 72l-94 -440 q149 -55 212.5 -125t63.5 -178zM549 250q107 13 170 75t63 154q0 54 -33 96t-114 74zM627 1235q-108 -11 -167 -69t-59 -156q0 -53 34.5 -97.5t107.5 -70.5z" />
+<glyph unicode="%" horiz-adv-x="1624" d="M1468 1462l-1085 -1462h-152l1086 1462h151zM1284 772q-67 0 -119.5 -64.5t-84 -188.5t-31.5 -240q0 -173 106 -173q65 0 117 65t86.5 198.5t34.5 236.5q0 166 -109 166zM1532 621q0 -107 -31.5 -236t-82 -217.5t-121 -138t-156.5 -49.5q-110 0 -171 74.5t-61 219.5 q0 166 50.5 318.5t136.5 228.5t200 76q116 0 176 -71.5t60 -204.5zM543 1358q-66 0 -119 -63t-85 -187.5t-32 -243.5q0 -172 107 -172q52 0 94 39.5t73.5 114t50.5 175t19 171.5q0 166 -108 166zM791 1206q0 -108 -32 -237.5t-82.5 -217.5t-120.5 -137t-157 -49 q-109 0 -170 75t-61 220q0 166 50.5 318.5t136.5 228.5t200 76q116 0 176 -72t60 -205z" />
+<glyph unicode="&" horiz-adv-x="1372" d="M737 1348q-105 0 -163 -60t-58 -170q0 -120 82 -235q139 71 191 110t83 85t31 104q0 77 -42.5 121.5t-123.5 44.5zM471 119q87 0 168 33t195 124l-306 433q-128 -67 -184 -116t-85.5 -107.5t-29.5 -131.5q0 -106 66.5 -170.5t175.5 -64.5zM66 342q0 148 90 257.5 t303 211.5q-103 165 -103 309q0 164 106 264.5t281 100.5q149 0 236.5 -79t87.5 -212q0 -78 -32.5 -137t-87.5 -108t-127.5 -90t-153.5 -83l278 -389q127 110 199 295h168q-101 -236 -283 -412l203 -270h-201l-117 166q-120 -100 -230 -143t-247 -43q-168 0 -269 96 t-101 266z" />
+<glyph unicode="'" horiz-adv-x="444" d="M485 1462l-153 -528h-107l72 528h188z" />
+<glyph unicode="(" horiz-adv-x="584" d="M82 272q0 339 120 627t384 563h157q-246 -270 -371.5 -570t-125.5 -618q0 -339 114 -598h-131q-147 266 -147 596z" />
+<glyph unicode=")" horiz-adv-x="584" d="M500 864q0 -341 -121.5 -629.5t-382.5 -558.5h-156q496 551 496 1188q0 341 -113 598h131q146 -269 146 -598z" />
+<glyph unicode="*" horiz-adv-x="1130" d="M854 1528l-123 -383l422 18l-8 -157l-393 47l180 -383l-166 -52l-113 406l-258 -344l-116 121l309 284l-373 109l55 154l371 -185l41 400z" />
+<glyph unicode="+" d="M516 651h-389v142h389v391h141v-391h390v-142h-390v-387h-141v387z" />
+<glyph unicode="," horiz-adv-x="492" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187z" />
+<glyph unicode="-" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="." horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
+<glyph unicode="/" horiz-adv-x="717" d="M893 1462l-813 -1462h-174l813 1462h174z" />
+<glyph unicode="0" d="M1092 1014q0 -295 -78.5 -539t-214 -369.5t-314.5 -125.5q-176 0 -270 127.5t-94 369.5q0 270 82 514.5t216.5 369t307.5 124.5q365 0 365 -471zM717 1341q-113 0 -209 -115.5t-155.5 -323t-59.5 -423.5q0 -172 50 -264t161 -92q115 0 209 114t150.5 328t56.5 453 q0 323 -203 323z" />
+<glyph unicode="1" d="M588 0h-172l196 913q59 261 88 359q-50 -53 -139 -111l-178 -110l-80 127l449 284h149z" />
+<glyph unicode="2" d="M911 0h-899l31 147l465 420q102 93 176.5 163.5t123 133t72 124t23.5 136.5q0 99 -60 157t-163 58q-77 0 -150.5 -28.5t-162.5 -96.5l-82 115q191 154 413 154q176 0 278.5 -88.5t102.5 -243.5q0 -111 -39.5 -204t-131 -197t-294.5 -281l-352 -307v-8h678z" />
+<glyph unicode="3" d="M1073 1159q0 -156 -101 -264.5t-280 -140.5v-9q124 -23 195 -106.5t71 -208.5q0 -133 -62 -234.5t-181 -158.5t-283 -57q-210 0 -385 79v164q94 -49 199 -75.5t190 -26.5q162 0 252 79.5t90 217.5q0 131 -79 198.5t-220 67.5h-131l31 143h139q165 0 274 87t109 227 q0 92 -58 146t-157 54q-80 0 -157 -27t-175 -93l-80 118q195 144 424 144q179 0 277 -87t98 -237z" />
+<glyph unicode="4" d="M1067 334h-233l-72 -334h-164l74 334h-656l29 158l834 978h196l-207 -983h232zM705 487q46 220 78 373t116 445h-8q-17 -29 -66.5 -96.5t-72.5 -96.5l-533 -625h486z" />
+<glyph unicode="5" d="M598 893q182 0 289.5 -104.5t107.5 -282.5q0 -161 -73 -283t-204 -182.5t-308 -60.5q-193 0 -330 79v164q164 -102 334 -102q191 0 298 96t107 268q0 126 -73.5 199.5t-204.5 73.5q-48 0 -97 -6.5t-139 -30.5l-74 57l197 684h668l-33 -153h-522l-127 -439q87 23 184 23z " />
+<glyph unicode="6" d="M133 424q0 209 60.5 415t163.5 351.5t246 219t327 73.5q111 0 184 -23l-35 -145q-68 22 -170 22q-212 0 -356.5 -149t-212.5 -443h8q59 79 146.5 126t193.5 47q154 0 244 -98.5t90 -270.5q0 -161 -66.5 -294.5t-180.5 -204t-261 -70.5q-182 0 -281.5 115t-99.5 329z M532 121q94 0 167.5 54t114 149t40.5 208q0 248 -221 248q-66 0 -128 -28.5t-110 -76t-72 -104.5t-24 -155q0 -137 60.5 -216t172.5 -79z" />
+<glyph unicode="7" d="M174 0l768 1313h-719l31 149h891l-27 -139l-764 -1323h-180z" />
+<glyph unicode="8" d="M741 1485q174 0 271.5 -86.5t97.5 -235.5q0 -129 -78 -225t-266 -176q127 -78 180 -165t53 -202q0 -122 -60 -217.5t-172.5 -146.5t-264.5 -51q-190 0 -298 98.5t-108 267.5q0 148 95 256t296 184q-95 69 -135.5 144.5t-40.5 171.5q0 111 54.5 198.5t153.5 136t222 48.5z M608 700q-185 -60 -261.5 -143.5t-76.5 -202.5q0 -107 69 -170t181 -63q139 0 222 74t83 196q0 99 -52 174t-165 135zM729 1341q-114 0 -182 -65.5t-68 -175.5q0 -82 39 -144t127 -116q161 60 228 131.5t67 173.5q0 90 -57.5 143t-153.5 53z" />
+<glyph unicode="9" d="M1067 1034q0 -194 -56 -406.5t-147.5 -360t-221.5 -217.5t-302 -70q-136 0 -242 34v158q134 -47 246 -47q202 0 327 141t189 441h-10q-51 -75 -132.5 -118.5t-180.5 -43.5q-169 0 -261 98.5t-92 288.5q0 153 64.5 280.5t180 199t259.5 71.5q180 0 279.5 -114.5 t99.5 -334.5zM682 1341q-150 0 -241 -113t-91 -290q0 -124 54.5 -190t162.5 -66q76 0 140 28.5t108.5 81.5t65 114t20.5 151q0 131 -59 207.5t-160 76.5z" />
+<glyph unicode=":" horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM203 956q0 77 40 122.5t111 45.5q97 0 97 -104q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26.5t-27 75.5z" />
+<glyph unicode=";" horiz-adv-x="518" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187zM203 956q0 77 40 122.5t111 45.5q97 0 97 -104q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26.5t-27 75.5z" />
+<glyph unicode="<" d="M1040 242l-919 422v98l919 479v-149l-747 -371l747 -328v-151z" />
+<glyph unicode="=" d="M127 858v139h920v-139h-920zM127 444v142h920v-142h-920z" />
+<glyph unicode=">" d="M121 393l745 328l-745 371v149l919 -479v-98l-919 -422v151z" />
+<glyph unicode="?" horiz-adv-x="874" d="M260 403q22 130 72.5 213.5t165.5 174.5q128 100 168 144t63 94t23 112q0 93 -51.5 143.5t-147.5 50.5q-81 0 -155 -25.5t-140 -56.5l-61 129q92 51 192 76t182 25q167 0 259 -84t92 -238q0 -123 -65.5 -226.5t-225.5 -223.5q-125 -91 -169 -147.5t-67 -160.5h-135z M158 74q0 77 40 122.5t111 45.5q44 0 70.5 -26t26.5 -79q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26t-27 77z" />
+<glyph unicode="@" horiz-adv-x="1735" d="M1679 852q0 -179 -55 -324t-155 -227t-222 -82q-197 0 -213 184h-8q-111 -184 -291 -184q-115 0 -180.5 75.5t-65.5 209.5q0 157 68 284t188.5 199t260.5 72q65 0 127.5 -12t150.5 -48q-64 -242 -98 -368t-31 -172q0 -117 102 -117q78 0 141.5 67t100.5 183.5t37 243.5 q0 239 -128 367t-370 128q-228 0 -406.5 -107t-277 -295.5t-98.5 -416.5q0 -270 143.5 -418.5t409.5 -148.5q197 0 420 86v-127q-219 -90 -443 -90q-314 0 -494.5 184.5t-180.5 505.5q0 261 126.5 485.5t343.5 347.5t486 123q191 0 329 -75.5t210.5 -213.5t72.5 -319z M985 938q-94 0 -174 -55t-126 -153t-46 -212q0 -93 33 -134.5t98 -41.5q187 0 272 315l70 258q-63 23 -127 23z" />
+<glyph unicode="A" horiz-adv-x="1137" d="M813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394z" />
+<glyph unicode="B" horiz-adv-x="1225" d="M770 1462q432 0 432 -336q0 -141 -87 -238t-245 -126v-10q115 -32 176.5 -110.5t61.5 -188.5q0 -212 -152 -332.5t-407 -120.5h-463l309 1462h375zM434 836h248q156 0 249 73t93 199q0 104 -66.5 155.5t-209.5 51.5h-211zM287 145h266q181 0 278 80.5t97 227.5 q0 116 -74.5 177.5t-214.5 61.5h-236z" />
+<glyph unicode="C" horiz-adv-x="1198" d="M942 1331q-174 0 -311.5 -97t-218 -284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 -164 -45t-188 -14q-242 0 -380 149.5t-138 407.5q0 261 105.5 485.5t283.5 342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69z" />
+<glyph unicode="D" horiz-adv-x="1364" d="M1300 877q0 -261 -105 -461t-300 -308t-457 -108h-352l309 1462h342q276 0 419.5 -149.5t143.5 -435.5zM449 147q202 0 355 91.5t234.5 258.5t81.5 382t-103 325.5t-302 110.5h-178l-250 -1168h162z" />
+<glyph unicode="E" horiz-adv-x="1047" d="M821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565z" />
+<glyph unicode="F" horiz-adv-x="967" d="M258 0h-172l309 1462h735l-30 -153h-568l-110 -533h528l-32 -153h-529z" />
+<glyph unicode="G" horiz-adv-x="1386" d="M821 766h459l-154 -711q-216 -75 -419 -75q-264 0 -410.5 144.5t-146.5 403.5q0 269 101.5 489.5t281.5 343t399 122.5q117 0 219.5 -20t206.5 -64l-66 -152q-77 34 -165.5 59t-194.5 25q-169 0 -307.5 -101.5t-215.5 -283.5t-77 -407q0 -190 102.5 -299t286.5 -109 q154 0 260 39l96 444h-289z" />
+<glyph unicode="H" horiz-adv-x="1389" d="M1085 0h-167l143 688h-660l-145 -688h-170l309 1462h170l-131 -622h660l133 622h168z" />
+<glyph unicode="I" horiz-adv-x="559" d="M86 0l311 1462h168l-311 -1462h-168z" />
+<glyph unicode="J" horiz-adv-x="547" d="M-166 -385q-105 0 -153 25l6 147q69 -20 145 -20q100 0 165.5 62.5t90.5 182.5l307 1450h170l-309 -1468q-79 -379 -422 -379z" />
+<glyph unicode="K" horiz-adv-x="1141" d="M1034 0h-186q-72 181 -146.5 359.5t-146.5 361.5l-174 -131l-125 -590h-170l309 1462h170l-151 -710l700 710h209l-639 -637z" />
+<glyph unicode="L" horiz-adv-x="971" d="M86 0l309 1462h170l-276 -1308h565l-33 -154h-735z" />
+<glyph unicode="M" horiz-adv-x="1714" d="M676 0l-166 1296h-8q-7 -72 -28.5 -197.5t-37.5 -199.5l-190 -899h-162l309 1462h244l149 -1204h9l659 1204h266l-303 -1462h-174q126 590 193 905.5t94 392.5h-6l-717 -1298h-131z" />
+<glyph unicode="N" horiz-adv-x="1438" d="M1139 0h-181l-460 1223h-6q-32 -221 -74 -418l-172 -805h-162l309 1462h180l459 -1220h6q30 224 72 405l174 815h164z" />
+<glyph unicode="O" horiz-adv-x="1475" d="M1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5t70 403 q0 199 -94 310.5t-261 111.5z" />
+<glyph unicode="P" horiz-adv-x="1159" d="M1159 1085q0 -248 -164 -379t-481 -131h-135l-123 -575h-170l309 1462h330q214 0 324 -94.5t110 -282.5zM410 721h133q216 0 328 91t112 267q0 125 -69.5 180.5t-213.5 55.5h-163z" />
+<glyph unicode="Q" horiz-adv-x="1475" d="M874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q158 0 279 100t187.5 280.5t66.5 399.5q0 199 -94 310.5t-261 111.5zM725 -18l-17 -2h-16q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424 q0 -333 -139 -576t-375 -321l274 -358h-219z" />
+<glyph unicode="R" horiz-adv-x="1165" d="M385 608l-129 -608h-170l309 1462h320q446 0 446 -366q0 -348 -368 -449l239 -647h-186l-209 608h-252zM532 1313q-102 -494 -116 -559h168q193 0 297 85t104 244q0 121 -67.5 175.5t-219.5 54.5h-166z" />
+<glyph unicode="S" horiz-adv-x="1028" d="M913 424q0 -211 -140.5 -327.5t-395.5 -116.5q-106 0 -186.5 14.5t-151.5 48.5v170q162 -84 340 -84q162 0 257 75.5t95 207.5q0 78 -52.5 137.5t-195.5 140.5q-151 85 -209.5 170t-58.5 201q0 187 132 304.5t347 117.5q99 0 184.5 -19t180.5 -65l-66 -150 q-66 38 -148 60t-151 22q-134 0 -215.5 -69.5t-81.5 -188.5q0 -54 17 -92.5t54 -72.5t142 -95q147 -88 198.5 -138t78 -110.5t26.5 -140.5z" />
+<glyph unicode="T" horiz-adv-x="1020" d="M487 0h-172l277 1311h-406l33 151h985l-30 -151h-408z" />
+<glyph unicode="U" horiz-adv-x="1384" d="M1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170z" />
+<glyph unicode="V" horiz-adv-x="1122" d="M479 197q61 144 162 338l479 927h191l-781 -1462h-180l-162 1462h170l97 -930q20 -196 20 -335h4z" />
+<glyph unicode="W" horiz-adv-x="1745" d="M1257 0h-170l-49 965q-8 136 -8 282h-6q-25 -72 -61 -154.5t-504 -1092.5h-174l-62 1462h170l31 -901l2 -88q0 -98 -10 -258h6q89 243 156 383l405 864h178l43 -860q9 -153 9 -304l-1 -83h9q75 224 131 354l387 893h182z" />
+<glyph unicode="X" horiz-adv-x="1063" d="M956 0h-180l-213 641l-481 -641h-186l596 776l-263 686h172l203 -563l443 563h186l-555 -694z" />
+<glyph unicode="Y" horiz-adv-x="1030" d="M537 715l489 747h193l-627 -921l-113 -541h-172l119 549l-238 913h170z" />
+<glyph unicode="Z" horiz-adv-x="1087" d="M885 0h-901l28 137l924 1170h-655l32 155h858l-26 -139l-924 -1169h697z" />
+<glyph unicode="[" horiz-adv-x="586" d="M371 -324h-387l381 1786h387l-31 -141h-227l-318 -1503h227z" />
+<glyph unicode="\" horiz-adv-x="717" d="M375 1462l217 -1462h-154l-217 1462h154z" />
+<glyph unicode="]" horiz-adv-x="586" d="M-119 -182h225l320 1503h-227l30 141h389l-380 -1786h-388z" />
+<glyph unicode="^" horiz-adv-x="1059" d="M53 553l598 920h109l266 -920h-145l-201 747l-467 -747h-160z" />
+<glyph unicode="_" horiz-adv-x="807" d="M623 -324h-811l30 140h811z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M903 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="a" horiz-adv-x="1157" d="M639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233t-51 -310 q0 -114 47 -170.5t132 -56.5z" />
+<glyph unicode="b" horiz-adv-x="1182" d="M545 -20q-97 0 -170.5 51t-110.5 139h-10l-70 -170h-125l330 1556h168q-51 -242 -78.5 -370.5t-75.5 -300.5h9q93 118 183.5 173.5t186.5 55.5q141 0 220 -99t79 -272q0 -209 -68.5 -386.5t-191 -277t-276.5 -99.5zM731 975q-96 0 -195.5 -95t-158 -239t-58.5 -295 q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227z" />
+<glyph unicode="c" horiz-adv-x="922" d="M506 -20q-194 0 -301 107t-107 302q0 200 74 369t204.5 263.5t293.5 94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 47v-143q-124 -63 -276 -63z" />
+<glyph unicode="d" horiz-adv-x="1182" d="M639 1114q194 0 281 -190h10q17 155 45 274l78 358h166l-330 -1556h-139l22 209h-8q-101 -125 -189 -177t-182 -52q-139 0 -217 98t-78 272q0 214 72 392t194.5 275t274.5 97zM449 119q94 0 194 93.5t158.5 239t58.5 296.5q0 111 -54 169t-157 58q-101 0 -187.5 -82.5 t-139 -232t-52.5 -314.5q0 -227 179 -227z" />
+<glyph unicode="e" horiz-adv-x="1010" d="M492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35z" />
+<glyph unicode="f" horiz-adv-x="641" d="M-104 -492q-69 0 -125 21v141q64 -22 112 -22q76 0 117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 -108h238l-25 -127h-237l-232 -1098 q-39 -189 -120 -276t-213 -87z" />
+<glyph unicode="g" horiz-adv-x="1026" d="M1100 1096l-25 -107l-211 -24q41 -62 41 -158q0 -191 -116.5 -304.5t-311.5 -113.5q-55 0 -84 8q-139 -53 -139 -131q0 -41 33 -54.5t96 -21.5l117 -14q181 -22 262.5 -88t81.5 -194q0 -184 -146 -285t-411 -101q-194 0 -304 73.5t-110 207.5q0 105 72 182t233 131 q-78 41 -78 121q0 69 51 118.5t142 92.5q-63 32 -103 94.5t-40 145.5q0 194 119.5 318t305.5 124q78 0 154 -20h371zM35 -195q0 -77 65 -122t193 -45q182 0 284.5 63.5t102.5 179.5q0 62 -54 98t-184 50l-159 16q-120 -25 -184 -88t-64 -152zM313 680q0 -85 45 -129.5 t125 -44.5q79 0 138 42t90.5 115.5t31.5 159.5q0 82 -44 125t-126 43q-78 0 -136.5 -40.5t-91 -113t-32.5 -157.5z" />
+<glyph unicode="h" horiz-adv-x="1182" d="M729 0l148 692q18 94 18 135q0 148 -147 148q-89 0 -173.5 -59t-149 -171.5t-97.5 -271.5l-101 -473h-168l330 1556h168q-18 -82 -34.5 -159t-34 -156.5t-38 -166.5t-47.5 -189h11q94 123 185.5 176t191.5 53q131 0 202.5 -72t71.5 -204q0 -62 -23 -166 q-39 -193 -145 -672h-168z" />
+<glyph unicode="i" horiz-adv-x="520" d="M227 0h-168l234 1096h168zM340 1376q0 56 32 91.5t83 35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-40 0 -66 24.5t-26 69.5z" />
+<glyph unicode="j" horiz-adv-x="520" d="M-135 -492q-69 0 -123 21v141q61 -22 119 -22q125 0 168 205l264 1243h166l-266 -1258q-36 -171 -114.5 -250.5t-213.5 -79.5zM340 1376q0 56 32 91.5t83 35.5q86 0 86 -90q0 -55 -33.5 -93t-77.5 -38q-38 0 -64 24.5t-26 69.5z" />
+<glyph unicode="k" horiz-adv-x="999" d="M330 559l526 537h201l-469 -467l295 -629h-187l-235 524l-152 -123l-82 -401h-170l330 1556h170l-129 -602t-102 -395h4z" />
+<glyph unicode="l" horiz-adv-x="520" d="M225 0h-168l332 1556h168z" />
+<glyph unicode="m" horiz-adv-x="1786" d="M696 0l148 692q18 94 18 135q0 70 -31 109t-106 39q-84 0 -163.5 -60t-140 -171.5t-93.5 -268.5l-101 -475h-168l234 1096h139l-22 -203h10q87 119 173.5 171t178.5 52q113 0 174 -65t72 -181h8q86 125 183 185.5t196 60.5q127 0 196.5 -68t69.5 -198q0 -68 -22 -178 l-144 -672h-170l148 692q20 104 20 146q0 62 -34.5 99.5t-108.5 37.5q-81 0 -160 -58t-138.5 -164.5t-90.5 -252.5l-107 -500h-168z" />
+<glyph unicode="n" horiz-adv-x="1182" d="M729 0l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 -60t-149 -171t-97.5 -269l-101 -475h-168l234 1096h139l-22 -203h10q96 122 185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 -180l-143 -672h-170z" />
+<glyph unicode="o" horiz-adv-x="1149" d="M643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5z" />
+<glyph unicode="p" horiz-adv-x="1182" d="M545 -20q-97 0 -170 50t-113 140h-10l-4 -38q-3 -25 -10.5 -70t-114.5 -554h-166l336 1588h139l-26 -209h8q179 227 372 227q137 0 216 -97.5t79 -273.5q0 -212 -69 -389t-191 -275.5t-276 -98.5zM731 975q-96 0 -195.5 -95t-158 -239t-58.5 -295q0 -110 55.5 -168.5 t160.5 -58.5q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227z" />
+<glyph unicode="q" horiz-adv-x="1182" d="M641 1116q94 0 165.5 -50.5t108.5 -141.5h13l67 172h125l-336 -1588h-166l101 480q9 45 57 221h-8q-95 -121 -185 -175t-186 -54q-140 0 -219.5 97.5t-79.5 272.5q0 212 72.5 392t196 277t274.5 97zM449 119q92 0 190 92t158.5 237t60.5 300q0 105 -54.5 166t-152.5 61 q-101 0 -189 -84.5t-140 -233t-52 -311.5q0 -227 179 -227z" />
+<glyph unicode="r" horiz-adv-x="811" d="M752 1116q69 0 120 -14l-36 -150q-53 13 -105 13q-91 0 -170.5 -60t-139 -166.5t-87.5 -236.5l-107 -502h-168l234 1096h139l-22 -203h10q72 95 119 136.5t98.5 64t114.5 22.5z" />
+<glyph unicode="s" horiz-adv-x="877" d="M735 311q0 -156 -110.5 -243.5t-311.5 -87.5q-169 0 -305 69v158q70 -42 151 -65t150 -23q126 0 190 50t64 128q0 57 -35 96t-151 107q-130 73 -184 143t-54 166q0 138 101 222.5t266 84.5q171 0 330 -74l-54 -137l-56 25q-101 43 -220 43q-93 0 -146 -43.5t-53 -112.5 q0 -56 35.5 -96t146.5 -103q107 -60 153.5 -103t69.5 -92.5t23 -111.5z" />
+<glyph unicode="t" horiz-adv-x="664" d="M395 117q55 0 144 26v-129q-34 -14 -84 -24t-80 -10q-125 0 -191.5 59.5t-66.5 177.5q0 66 18 150l127 602h-172l14 73l185 78l125 228h98l-55 -252h274l-26 -127h-273l-129 -604q-18 -87 -18 -132q0 -56 29 -86t81 -30z" />
+<glyph unicode="u" horiz-adv-x="1182" d="M451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170z" />
+<glyph unicode="v" horiz-adv-x="946" d="M223 0l-125 1096h168l64 -613q24 -258 24 -362h6q127 275 179 371l325 604h178l-591 -1096h-228z" />
+<glyph unicode="w" horiz-adv-x="1468" d="M831 0l-32 602q-4 94 -4 172v156h-9l-50 -118l-83 -189l-291 -623h-202l-43 1096h164l18 -594v-88q0 -147 -8 -269h6q47 124 137 322l295 629h182l37 -594q6 -168 6 -262v-53l-2 -42h6q28 86 83 218.5t323 732.5h178l-506 -1096h-205z" />
+<glyph unicode="x" horiz-adv-x="979" d="M467 434l-346 -434h-195l475 565l-239 531h170l174 -412l330 412h194l-455 -539l252 -557h-168z" />
+<glyph unicode="y" horiz-adv-x="946" d="M98 1096h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136z" />
+<glyph unicode="z" horiz-adv-x="909" d="M690 0h-719l23 117l694 854h-479l27 125h657l-29 -140l-680 -831h531z" />
+<glyph unicode="{" horiz-adv-x="715" d="M442 -324q-141 0 -216.5 52.5t-75.5 171.5q0 52 20 141q33 146 51.5 227.5t14.5 102.5q0 143 -209 143l32 143q118 0 189.5 43.5t93.5 147.5l68 326q34 160 117.5 224t254.5 64h33l-31 -141q-105 0 -151 -36.5t-66 -123.5l-71 -321q-28 -123 -91 -184t-167 -78v-5 q151 -41 151 -213q0 -59 -18 -131l-47 -211q-15 -58 -15 -98q0 -53 36.5 -77.5t119.5 -24.5v-142h-23z" />
+<glyph unicode="|" d="M541 1556h139v-2052h-139v2052z" />
+<glyph unicode="}" horiz-adv-x="715" d="M285 1462q144 0 220.5 -52.5t76.5 -170.5q0 -48 -21 -141l-49 -219q-16 -68 -16 -111q0 -143 209 -143l-33 -144q-119 0 -190 -43t-93 -147l-67 -326q-36 -164 -119 -226.5t-264 -62.5h-13v142q115 0 167 36t71 123l72 322q25 117 88 179.5t170 80.5v6q-150 42 -150 211 q0 59 18 131l50 213q14 65 14 99q0 53 -40.5 77.5t-139.5 24.5l28 141h11z" />
+<glyph unicode="~" d="M348 713q-54 0 -118.5 -34.5t-114.5 -86.5v151q98 109 243 109q69 0 127 -14.5t144 -51.5q64 -27 112.5 -41t98.5 -14q55 0 119.5 33t115.5 88v-150q-100 -110 -244 -110q-72 0 -135 16.5t-135 48.5q-75 32 -120 44t-93 12z" />
+<glyph unicode="¡" horiz-adv-x="530" d="M260 684h109l-176 -1057h-207zM250 950q0 76 40.5 122t110.5 46q44 0 70.5 -26t26.5 -80q0 -71 -40.5 -117.5t-105.5 -46.5q-48 0 -75 25.5t-27 76.5z" />
+<glyph unicode="¢" d="M582 -20h-125l43 215q-132 34 -203.5 137.5t-71.5 257.5q0 185 63.5 344t178.5 258.5t260 120.5l35 170h123l-37 -168q119 -9 217 -49l-47 -142q-109 52 -219 52q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -125 66 -198t184 -73q72 0 136 20t126 48v-143 q-123 -62 -286 -66z" />
+<glyph unicode="£" d="M842 1481q184 0 336 -86l-66 -133q-146 79 -278 79q-213 0 -263 -237l-69 -326h370l-26 -127h-371l-47 -219q-22 -98 -66 -166.5t-124 -111.5h725l-33 -154h-953l27 141q205 46 258 289l47 221h-200l26 127h201l76 350q75 353 430 353z" />
+<glyph unicode="¤" d="M229 723q0 117 68 215l-129 129l92 92l127 -129q103 70 217 70t215 -70l129 129l92 -90l-129 -129q70 -104 70 -217q0 -119 -70 -217l127 -127l-90 -90l-129 127q-98 -68 -215 -68q-119 0 -217 70l-127 -127l-90 90l127 127q-68 96 -68 215zM358 723q0 -103 71.5 -174.5 t174.5 -71.5q104 0 177 71.5t73 174.5q0 104 -73 177t-177 73q-102 0 -174 -72.5t-72 -177.5z" />
+<glyph unicode="¥" d="M582 715l491 747h187l-533 -770h231l-28 -133h-297l-33 -160h297l-29 -133h-295l-57 -266h-154l56 266h-291l29 133h290l33 160h-291l29 133h225l-202 770h163z" />
+<glyph unicode="¦" d="M541 1556h139v-776h-139v776zM541 281h139v-777h-139v777z" />
+<glyph unicode="§" horiz-adv-x="995" d="M174 770q0 201 238 307q-119 70 -119 203q0 127 103.5 206t279.5 79q189 0 321 -68l-53 -123q-148 60 -266 60q-102 0 -162.5 -40.5t-60.5 -109.5q0 -49 38 -83.5t162 -90.5q100 -44 149 -83.5t75 -89.5t26 -114q0 -97 -61 -180t-172 -139q114 -71 114 -189 q0 -152 -114 -237.5t-318 -85.5q-176 0 -295 61v148q56 -34 136.5 -56t156.5 -22q133 0 204 44.5t71 129.5q0 48 -50.5 89t-152.5 87q-138 61 -194 130.5t-56 166.5zM514 1010q-82 -26 -135 -87.5t-53 -131.5t50.5 -117t198.5 -111q80 44 127.5 107t47.5 131 q0 60 -49.5 105.5t-186.5 103.5z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M457 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M928 1059q-125 0 -191.5 -87t-66.5 -241q0 -169 65 -249.5t193 -80.5q82 0 211 43v-122q-66 -28 -113 -38t-104 -10q-192 0 -297 119.5t-105 339.5q0 208 110 330.5t300 122.5q130 0 248 -60l-60 -120q-106 53 -190 53zM139 731q0 200 100 375t275 276t377 101 q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5 q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5z" />
+<glyph unicode="ª" horiz-adv-x="686" d="M498 1479q114 0 153 -103h6l37 90h86l-139 -665h-92l14 117h-4q-40 -56 -90 -93t-123 -37q-77 0 -126.5 60t-49.5 166q0 127 41.5 234.5t116.5 169t170 61.5zM381 891q61 0 112.5 49t86 137.5t34.5 167.5q0 62 -28.5 96.5t-85.5 34.5q-92 0 -154.5 -103t-62.5 -243 q0 -139 98 -139z" />
+<glyph unicode="«" horiz-adv-x="958" d="M88 584l391 374l78 -81l-297 -328l172 -387l-113 -49l-231 442v29zM483 541l367 405l86 -69l-283 -365l158 -350l-113 -49l-215 397v31z" />
+<glyph unicode="¬" d="M1047 793v-529h-140v387h-780v142h920z" />
+<glyph unicode="­" horiz-adv-x="639" d="M55 469zM55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M139 731q0 200 100 375t275 276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 -273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5 q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM1194 915q0 -78 -47.5 -141t-132.5 -98l227 -385h-149l-207 352h-113v-352h-127v880h229q163 0 241.5 -63t78.5 -193zM772 762h92q195 0 195 149q0 76 -47.5 107t-149.5 31h-90v-287z " />
+<glyph unicode="¯" horiz-adv-x="782" d="M1012 1556h-785l33 132h787z" />
+<glyph unicode="°" horiz-adv-x="877" d="M215 1171q0 128 90.5 220t220.5 92q83 0 155.5 -41.5t114.5 -114t42 -156.5q0 -128 -90.5 -218.5t-221.5 -90.5t-221 90.5t-90 218.5zM328 1171q0 -80 58 -138t140 -58q83 0 140 58.5t57 137.5q0 82 -57.5 140.5t-139.5 58.5q-80 0 -139 -58.5t-59 -140.5z" />
+<glyph unicode="±" d="M516 643h-389v141h389v392h141v-392h390v-141h-390v-387h-141v387zM127 0v141h920v-141h-920z" />
+<glyph unicode="²" horiz-adv-x="717" d="M657 586h-561l23 106l264 228q115 100 158.5 149.5t63.5 93t20 90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90q125 101 274 101q109 0 171.5 -56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 -187h395z" />
+<glyph unicode="³" horiz-adv-x="717" d="M549 1036q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5q-125 0 -233 56v127q125 -72 239 -72q205 0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151 q0 -180 -207 -234v-4z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M532 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="µ" horiz-adv-x="1194" d="M295 266q0 -147 147 -147q89 0 172 59t148.5 171t99.5 269l105 478h163l-233 -1096h-139l24 205h-12q-93 -121 -183 -173t-188 -52q-112 0 -163 96h-9q-11 -78 -22.5 -148t-83.5 -420h-164l336 1588h168l-148 -695q-18 -92 -18 -135z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1206 -260h-114v1661h-213v-1661h-115v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h557v-1816z" />
+<glyph unicode="·" horiz-adv-x="518" d="M170 587zM170 690q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M211 -276q0 -98 -81 -157t-214 -59q-41 0 -86 9v100q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155z" />
+<glyph unicode="¹" horiz-adv-x="717" d="M537 1462h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5l-51 90z" />
+<glyph unicode="º" horiz-adv-x="688" d="M745 1219q0 -191 -88.5 -311t-240.5 -120q-113 0 -180.5 71t-67.5 196q0 117 42 215.5t117.5 153.5t174.5 55q117 0 180 -67t63 -193zM500 1376q-102 0 -160.5 -87.5t-58.5 -229.5q0 -85 38 -127.5t107 -42.5q94 0 152.5 88.5t58.5 232.5q0 166 -137 166z" />
+<glyph unicode="»" horiz-adv-x="958" d="M872 485l-393 -370l-78 82l297 323l-172 391l113 50l233 -447v-29zM477 528l-368 -401l-86 70l282 360l-158 354l113 50l217 -402v-31z" />
+<glyph unicode="¼" horiz-adv-x="1518" d="M123 0zM1362 1462l-1086 -1462h-153l1085 1462h154zM483 1462h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5l-51 90zM1327 203h-129l-43 -202h-127l43 202h-365l23 101l481 579h133l-121 -563h127zM1095 320q69 322 90 395 q-20 -36 -110 -149l-205 -246h225z" />
+<glyph unicode="½" horiz-adv-x="1518" d="M66 0zM427 1462h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5l-51 90zM1305 1462l-1086 -1462h-153l1085 1462h154zM1343 1h-561l23 106l264 228q115 100 158.5 149.5t63.5 93t20 90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90 q125 101 274 101q109 0 171.5 -56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 -187h395z" />
+<glyph unicode="¾" horiz-adv-x="1565" d="M87 0zM517 1036q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5q-125 0 -233 56v127q125 -72 239 -72q205 0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151 q0 -180 -207 -234v-4zM1512 1462l-1086 -1462h-153l1085 1462h154zM1477 203h-129l-43 -202h-127l43 202h-365l23 101l481 579h133l-121 -563h127zM1245 320q69 322 90 395q-20 -36 -110 -149l-205 -246h225z" />
+<glyph unicode="¿" horiz-adv-x="874" d="M657 680q-22 -130 -72 -212t-165 -175l-95 -75q-159 -127 -159 -275q0 -93 51.5 -144t147.5 -51q80 0 154 25.5t140 56.5l62 -129q-90 -48 -189 -74t-186 -26q-168 0 -259 83.5t-91 237.5q0 124 66 228t225 223q132 98 172.5 152.5t62.5 154.5h135zM760 1010 q0 -77 -40.5 -122.5t-111.5 -45.5q-43 0 -69.5 26t-26.5 78q0 71 40 118.5t107 47.5q47 0 74 -25.5t27 -76.5z" />
+<glyph unicode="À" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM863 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM679 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Â" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM1080 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27 z" />
+<glyph unicode="Ã" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM934 1581q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18 t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="Ä" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM523 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM887 1716q0 46 28 79.5 t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="Å" horiz-adv-x="1137" d="M0 0zM813 465h-496l-245 -465h-189l799 1462h174l184 -1462h-170zM795 621l-35 299q-24 179 -29 350q-37 -88 -80.5 -175t-249.5 -474h394zM991 1585q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152zM887 1583 q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5z" />
+<glyph unicode="Æ" horiz-adv-x="1673" d="M1448 0h-737l98 465h-438l-293 -465h-197l938 1462h938l-33 -153h-565l-100 -469h528l-28 -150h-529l-115 -538h566zM840 621l147 688h-84l-434 -688h371z" />
+<glyph unicode="Ç" horiz-adv-x="1198" d="M150 0zM942 1331q-174 0 -311.5 -97t-218 -284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 -164 -45t-188 -14q-242 0 -380 149.5t-138 407.5q0 261 105.5 485.5t283.5 342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69zM758 -276 q0 -98 -81 -157t-214 -59q-41 0 -86 9v100q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155z" />
+<glyph unicode="È" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM898 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM657 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Ê" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM1084 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="Ë" horiz-adv-x="1047" d="M86 0zM821 0h-735l309 1462h735l-32 -153h-566l-98 -469h527l-29 -152h-529l-114 -536h565zM523 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM887 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34 q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="Ì" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM593 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM412 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Î" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM808 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="Ï" horiz-adv-x="559" d="M86 0zM86 0l311 1462h168l-311 -1462h-168zM265 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM629 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="Ð" horiz-adv-x="1364" d="M1300 877q0 -261 -105 -461t-300 -308t-457 -108h-352l135 649h-149l32 150h150l141 663h342q276 0 419.5 -149.5t143.5 -435.5zM449 147q202 0 355 91.5t234.5 258.5t81.5 382t-103 325.5t-302 110.5h-178l-111 -516h330l-33 -150h-330l-106 -502h162z" />
+<glyph unicode="Ñ" horiz-adv-x="1438" d="M84 0zM1139 0h-181l-460 1223h-6q-32 -221 -74 -418l-172 -805h-162l309 1462h180l459 -1220h6q30 224 72 405l174 815h164zM1102 1581q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5 t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="Ò" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM1007 1579h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM821 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Ô" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM1227 1579h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="Õ" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM1067 1581q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="Ö" horiz-adv-x="1475" d="M150 0zM1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q244 0 384 -154t140 -424zM874 1333q-157 0 -281 -101t-192.5 -281t-68.5 -398q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 279.5 t70 403q0 199 -94 310.5t-261 111.5zM664 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1028 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="×" d="M487 723l-319 321l98 99l320 -320l323 320l99 -96l-324 -324l322 -322l-97 -96l-323 320l-320 -318l-96 96z" />
+<glyph unicode="Ø" horiz-adv-x="1475" d="M1411 907q0 -269 -88 -481.5t-252 -329t-379 -116.5q-200 0 -332 96l-129 -160l-112 92l137 170q-106 136 -106 371q0 264 96 482t263.5 336t377.5 118q99 0 178.5 -27t151.5 -84l131 166l114 -92l-149 -184q48 -62 73 -156t25 -201zM874 1333q-157 0 -281 -101 t-192.5 -281t-68.5 -398q0 -135 41 -227l737 919q-90 88 -236 88zM1229 911q0 118 -33 205l-733 -911q91 -74 233 -74q152 0 272.5 97.5t190.5 279.5t70 403z" />
+<glyph unicode="Ù" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM991 1579h-104q-61 61 -128.5 154 t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM823 1606q56 60 125.5 151.5t106.5 149.5 h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Û" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM1217 1579h-103q-57 48 -161 189 q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="Ü" horiz-adv-x="1384" d="M164 0zM1407 1462l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 104t-111 299q0 81 24 201l189 878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 289.5l205 954h170zM643 1716q0 46 28 79.5t74 33.5 q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1007 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="Ý" horiz-adv-x="1030" d="M188 0zM537 715l489 747h193l-627 -921l-113 -541h-172l119 549l-238 913h170zM616 1606q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="Þ" horiz-adv-x="1159" d="M1106 829q0 -248 -164 -379t-483 -131h-133l-70 -319h-170l309 1462h170l-53 -256h160q213 0 323.5 -95t110.5 -282zM354 465h135q215 0 328 91t113 267q0 126 -70 181t-215 55h-166z" />
+<glyph unicode="ß" horiz-adv-x="1182" d="M-133 -492q-69 0 -123 21v143q61 -22 111 -22q65 0 107 47.5t65 157.5l280 1314q43 200 156 299t307 99q162 0 252 -71t90 -196q0 -57 -21 -106.5t-61.5 -95t-178.5 -150.5q-110 -83 -110 -151q0 -56 95 -122q47 -34 101 -87.5t79.5 -110t25.5 -123.5 q0 -175 -108.5 -274.5t-292.5 -99.5q-175 0 -268 71v160q51 -41 118.5 -66.5t129.5 -25.5q113 0 181 58t68 159q0 40 -10.5 71t-33.5 59t-89 83q-88 69 -122.5 124t-34.5 115q0 53 18.5 96t49.5 78.5t124 104.5q80 56 111 87.5t48 65t17 70.5q0 64 -52.5 100.5t-141.5 36.5 q-119 0 -186 -62.5t-95 -190.5l-274 -1303q-40 -189 -121 -276t-211 -87z" />
+<glyph unicode="à" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM824 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="á" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM600 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="â" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM1005 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="ã" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM856 1243q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="ä" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM454 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM818 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="å" horiz-adv-x="1157" d="M98 0zM639 1116q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 -377 -229q-139 0 -218 99t-79 271q0 208 71 386t196 279t274 101zM449 119q97 0 193 92.5t156 241t60 297.5q0 103 -56 164t-147 61q-104 0 -193.5 -86t-140.5 -233 t-51 -310q0 -114 47 -170.5t132 -56.5zM951 1456q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152zM847 1454q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5z" />
+<glyph unicode="æ" horiz-adv-x="1669" d="M1165 -20q-108 0 -189.5 39.5t-121.5 119.5l-31 -139h-114l26 209h-8q-109 -132 -191.5 -180.5t-177.5 -48.5q-122 0 -191 99t-69 269q0 206 70.5 385t191.5 281t263 102q82 0 145 -48.5t102 -143.5h11l67 172h109l-31 -146q123 166 332 166q119 0 192.5 -68t73.5 -184 q0 -182 -166.5 -283.5t-472.5 -101.5h-39l-4 -80q0 -131 62.5 -204.5t193.5 -73.5q55 0 116.5 16.5t178.5 67.5v-150q-164 -75 -328 -75zM412 119q95 0 188.5 91.5t153 240.5t59.5 299q0 103 -45.5 164t-122.5 61q-99 0 -187 -86.5t-138 -231.5t-50 -309q0 -114 37 -171.5 t105 -57.5zM1325 973q-117 0 -211 -94.5t-141 -260.5h14q226 0 348.5 58.5t122.5 169.5q0 61 -35 94t-98 33z" />
+<glyph unicode="ç" horiz-adv-x="922" d="M98 0zM506 -20q-194 0 -301 107t-107 302q0 200 74 369t204.5 263.5t293.5 94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 -76.5t-145 -213t-52.5 -296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 47v-143q-124 -63 -276 -63zM592 -276q0 -98 -81 -157 t-214 -59q-41 0 -86 9v100q38 -6 68 -6q174 0 174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155z" />
+<glyph unicode="è" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM777 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM585 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="ê" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM966 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="ë" horiz-adv-x="1010" d="M98 0zM492 -20q-184 0 -289 109t-105 302q0 188 74.5 360.5t197.5 268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 -80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 -61.5t-159 -17.5zM631 973 q-103 0 -193.5 -94t-138.5 -261h12q228 0 349.5 59.5t121.5 172.5q0 53 -36.5 88t-114.5 35zM413 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM777 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34 q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="ì" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM492 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM324 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="î" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM708 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="ï" horiz-adv-x="520" d="M59 0zM227 0h-168l234 1096h168zM161 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM525 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="ð" horiz-adv-x="1165" d="M676 1343q-66 58 -146 113l95 117q118 -84 188 -154l260 146l64 -105l-240 -133q87 -115 126.5 -240.5t39.5 -269.5q0 -253 -71.5 -447t-203 -292t-311.5 -98q-182 0 -284.5 104t-102.5 289q0 160 67.5 298t187 217t267.5 79q105 0 181.5 -45.5t111.5 -124.5l6 2v17 q0 136 -36.5 240t-110.5 197l-270 -149l-56 108zM487 121q107 0 190 56t134 168t51 226q0 118 -65.5 187t-178.5 69q-109 0 -189 -57.5t-123.5 -161t-43.5 -231.5q0 -126 57.5 -191t167.5 -65z" />
+<glyph unicode="ñ" horiz-adv-x="1182" d="M59 0zM729 0l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 -60t-149 -171t-97.5 -269l-101 -475h-168l234 1096h139l-22 -203h10q96 122 185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 -180l-143 -672h-170zM871 1243 q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="ò" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM798 1241h-104q-61 61 -128.5 154t-95.5 153v21h181q43 -136 147 -303v-25z" />
+<glyph unicode="ó" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM589 1268q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="ô" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM997 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="õ" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM844 1243q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode="ö" horiz-adv-x="1149" d="M98 0zM643 1110q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 113t-109 309q0 190 73 357.5t197 257t275 89.5zM879 711q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74t-134 -205.5t-47.5 -292.5q0 -131 63.5 -202.5t182.5 -71.5 q104 0 187 73t129.5 207.5t46.5 307.5zM433 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM797 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="÷" d="M127 651v142h920v-142h-920zM475 373q0 121 111 121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 31t-29.5 90zM475 1071q0 121 111 121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 31t-29.5 90z" />
+<glyph unicode="ø" horiz-adv-x="1149" d="M1047 705q0 -189 -69.5 -360t-191.5 -266t-276 -95q-146 0 -246 65l-98 -125l-105 82l109 135q-68 103 -68 265q0 194 73.5 361t195.5 255t272 88q146 0 252 -68l104 129l105 -79l-119 -129q62 -97 62 -258zM647 971q-108 0 -195.5 -73t-137.5 -202t-50 -280 q0 -92 17 -137l518 645q-54 47 -152 47zM885 688q0 84 -13 119l-514 -641q57 -45 158 -45q103 0 188.5 71.5t133 200.5t47.5 295z" />
+<glyph unicode="ù" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM800 1241h-104q-61 61 -128.5 154t-95.5 153v21 h181q43 -136 147 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM636 1268q56 60 125.5 151.5t106.5 149.5h190 v-21q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="û" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM1024 1241h-103q-57 48 -161 189 q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="ü" horiz-adv-x="1182" d="M113 0zM451 1096l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 69.5t-73 198.5q0 62 22 172l146 676h170zM457 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="ý" horiz-adv-x="946" d="M0 0zM98 1096h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136zM500 1268q56 60 125.5 151.5t106.5 149.5h190v-21 q-38 -49 -140 -151t-177 -156h-105v27z" />
+<glyph unicode="þ" horiz-adv-x="1182" d="M545 -20q-98 0 -172 51t-113 139h-10q-8 -104 -25 -176l-102 -486h-166l432 2048h168q-95 -441 -115 -522t-39 -149h9q101 125 189 177t183 52q139 0 218 -97.5t79 -273.5q0 -212 -69 -389t-191 -275.5t-276 -98.5zM731 975q-96 0 -195.5 -95t-158 -239t-58.5 -295 q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81t137.5 230.5t52 317.5q0 227 -178 227z" />
+<glyph unicode="ÿ" horiz-adv-x="946" d="M0 0zM98 1096h168l74 -545q10 -69 19.5 -203.5t9.5 -216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 -67q-72 0 -140 21v135q63 -18 131 -18q82 0 140.5 50.5t113.5 149.5l76 136zM335 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM699 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="ı" horiz-adv-x="520" d="M227 0h-168l234 1096h168z" />
+<glyph unicode="Œ" horiz-adv-x="1751" d="M1524 0h-674q-78 -20 -158 -20q-256 0 -399 149.5t-143 419.5q0 264 96 482t263.5 336t377.5 118q152 0 237 -23h709l-31 -153h-565l-100 -469h528l-31 -150h-528l-115 -538h565zM696 131q69 0 123 19l246 1161q-76 22 -191 22q-157 0 -281 -101t-192.5 -281t-68.5 -398 q0 -199 98 -310.5t266 -111.5z" />
+<glyph unicode="œ" horiz-adv-x="1769" d="M1251 -20q-270 0 -356 225q-69 -107 -171.5 -164t-225.5 -57q-184 0 -292 114t-108 308q0 193 75 360t201 255.5t281 88.5q270 0 359 -225q75 109 177.5 170t221.5 61q139 0 217 -65.5t78 -186.5q0 -183 -164.5 -284t-468.5 -101h-41l-4 -80q0 -131 61.5 -204.5 t190.5 -73.5q75 0 145 24.5t150 59.5v-150q-162 -75 -326 -75zM649 969q-109 0 -196 -73t-135 -202t-48 -284q0 -141 62 -214t172 -73q177 0 278 160.5t101 427.5q0 124 -59.5 191t-174.5 67zM1413 973q-125 0 -220.5 -94.5t-139.5 -260.5h18q231 0 351 61t120 177 q0 48 -32 82.5t-97 34.5z" />
+<glyph unicode="Ÿ" horiz-adv-x="1030" d="M188 0zM537 715l489 747h193l-627 -921l-113 -541h-172l119 549l-238 913h170zM452 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM816 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22 t-23.5 62z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M1014 1241h-103q-57 48 -161 189q-134 -119 -242 -189h-109v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M989 1456q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152zM885 1454q0 53 -32 84t-83 31q-49 0 -82 -31t-33 -84q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M838 1243q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="‑" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="‒" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="–" horiz-adv-x="983" d="M55 469l35 160h823l-34 -160h-824z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M55 469l35 160h1806l-34 -160h-1807z" />
+<glyph unicode="‘" horiz-adv-x="348" d="M129 961l-6 22q98 211 270 479h127q-147 -345 -203 -501h-188z" />
+<glyph unicode="’" horiz-adv-x="348" d="M516 1462l8 -22q-40 -91 -111 -218.5t-159 -260.5h-129q134 298 203 501h188z" />
+<glyph unicode="‚" horiz-adv-x="492" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187z" />
+<glyph unicode="“" horiz-adv-x="719" d="M500 961l-8 22q80 181 272 479h127q-162 -379 -203 -501h-188zM129 961l-6 22q98 211 270 479h127q-147 -345 -203 -501h-188z" />
+<glyph unicode="”" horiz-adv-x="719" d="M516 1462l8 -22q-40 -91 -111 -218.5t-159 -260.5h-129q134 298 203 501h188zM885 1462l10 -22q-94 -206 -274 -479h-127q57 126 115.5 272.5t86.5 228.5h189z" />
+<glyph unicode="„" horiz-adv-x="858" d="M291 238l8 -23q-113 -235 -270 -479h-129q126 286 204 502h187zM659 238l9 -23q-95 -205 -271 -479h-129q140 316 203 502h188z" />
+<glyph unicode="•" horiz-adv-x="774" d="M199 684q0 145 73.5 231t198.5 86q92 0 139 -49t47 -141q0 -141 -74 -230t-202 -89q-89 0 -135.5 49.5t-46.5 142.5z" />
+<glyph unicode="…" horiz-adv-x="1563" d="M43 0zM563 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM1085 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM43 74q0 77 40.5 122.5 t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="580" d="M88 578l391 380l78 -81l-297 -334l172 -381l-113 -49l-231 436v29z" />
+<glyph unicode="›" horiz-adv-x="580" d="M492 496l-392 -381l-77 82l296 333l-172 381l113 50l232 -437v-28z" />
+<glyph unicode="⁄" horiz-adv-x="268" d="M752 1462l-1086 -1462h-153l1085 1462h154z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="717" d="M713 788h-129l-43 -202h-127l43 202h-365l23 101l481 579h133l-121 -563h127zM481 905q69 322 90 395q-20 -36 -110 -149l-205 -246h225z" />
+<glyph unicode="€" d="M928 1329q-140 0 -254 -99t-189 -298h426l-26 -133h-441q-21 -65 -32 -164h381l-29 -131h-361q0 -373 297 -373q123 0 256 55v-147q-127 -59 -278 -59q-212 0 -328.5 133.5t-116.5 378.5v12h-170l27 131h154q8 80 30 164h-151l27 133h159q97 267 259.5 408t369.5 141 q89 0 160 -21.5t141 -70.5l-80 -138q-113 78 -231 78z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M438 741h-121v617h-196v104h516v-104h-199v-617zM1014 741l-189 551h-6q4 -52 4 -121v-430h-118v721h180l182 -557l193 557h170v-721h-121v430q0 73 4 121h-6l-197 -551h-96z" />
+<glyph unicode="" horiz-adv-x="1095" d="M0 1095h1095v-1095h-1095v1095z" />
+<glyph horiz-adv-x="1182" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.ttf
new file mode 100755
index 0000000..12d25d9
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.woff
new file mode 100755
index 0000000..ff652e6
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.eot
new file mode 100755
index 0000000..8f44592
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.svg
new file mode 100755
index 0000000..431d7e3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.svg
@@ -0,0 +1,1835 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sanslight_italic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="ff" horiz-adv-x="1155" d="M-131 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76q73 0 166 -31 l-24 -80q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z" />
+<glyph unicode="fi" horiz-adv-x="1040" d="M0 0zM739 0h-98l231 1087h96zM915 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31 l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z" />
+<glyph unicode="fl" horiz-adv-x="1042" d="M0 0zM737 0h-94l334 1556h94zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248 l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z" />
+<glyph unicode="ffi" horiz-adv-x="1616" d="M0 0zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76 q73 0 166 -31l-24 -80q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z M1315 0h-98l231 1087h96zM1491 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" />
+<glyph unicode="ffl" horiz-adv-x="1626" d="M0 0zM-148 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 160q35 168 116.5 244t227.5 76 q73 0 166 -31l-24 -80q-87 27 -148 27q-97 0 -154.5 -54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 -236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 1166h-477l-252 -1190q-33 -161 -104 -234.5t-195 -73.5z M1321 0h-94l334 1556h94z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="502" d="M248 377h-62l203 1085h119zM80 57q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-68 -34.5q-67 0 -67 73z" />
+<glyph unicode=""" horiz-adv-x="721" d="M455 1462l-146 -528h-61l80 528h127zM784 1462l-145 -528h-61l79 528h127z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M389 530l119 398h-297l8 80h311l134 454h90l-136 -454h365l135 454h86l-135 -454h285l-8 -80h-302l-118 -398h303l-8 -79h-320l-133 -451h-90l135 451h-360l-134 -451h-88l134 451h-283l8 79h299zM475 530h363l120 398h-362z" />
+<glyph unicode="$" d="M928 467q0 -151 -110.5 -243t-297.5 -103l-53 -240h-82l51 240q-79 2 -158 18t-137 43v94q65 -34 153.5 -53.5t160.5 -19.5l110 512q-110 53 -153 91t-66.5 87.5t-23.5 116.5q0 155 105.5 250.5t272.5 99.5l41 192h80l-41 -192q149 -5 277 -68l-35 -78q-110 61 -256 70 l-109 -514q124 -60 172.5 -99.5t73.5 -88.5t25 -115zM537 203q142 7 223.5 74.5t81.5 183.5q0 76 -48 129.5t-157 97.5zM686 1284q-134 -9 -205 -80t-71 -186q0 -78 37 -128.5t137 -96.5z" />
+<glyph unicode="%" horiz-adv-x="1556" d="M1458 1462l-1139 -1462h-106l1135 1462h110zM1520 612q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 223.5q0 160 52 312t138 229.5t193 77.5q121 0 176.5 -71.5t55.5 -211.5zM1284 821q-80 0 -146.5 -72.5t-106.5 -202.5t-40 -263q0 -116 41 -174t113 -58 q130 0 209.5 166.5t79.5 386.5q0 109 -36 163t-114 54zM760 1198q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 223.5q0 160 52 312t138 229.5t193 77.5q232 0 232 -283zM524 1407q-79 0 -145 -71.5t-107 -203t-41 -264.5q0 -115 41 -173t113 -58 q84 0 148.5 72t102.5 204t38 277q0 109 -36 163t-114 54z" />
+<glyph unicode="&" horiz-adv-x="1331" d="M748 1395q-125 0 -194 -68t-69 -192q0 -132 109 -281q203 89 279.5 163.5t76.5 182.5q0 91 -56.5 143t-145.5 52zM465 63q108 0 211.5 42.5t222.5 146.5l-352 493q-164 -79 -232 -134.5t-103.5 -124t-35.5 -158.5q0 -119 78 -192t211 -73zM78 324q0 162 99 277.5 t325 215.5l-41 67q-78 128 -78 251q0 157 101 253.5t264 96.5q145 0 227 -76.5t82 -206.5q0 -85 -41 -154t-121 -128t-256 -138l330 -463q73 75 135.5 176.5t91.5 186.5h111q-102 -247 -285 -436l184 -246h-123l-131 184q-121 -108 -242 -156t-266 -48q-167 0 -266.5 94 t-99.5 250z" />
+<glyph unicode="'" horiz-adv-x="403" d="M461 1462l-146 -528h-61l80 528h127z" />
+<glyph unicode="(" horiz-adv-x="526" d="M104 270q0 343 122 633t382 559h105q-259 -276 -384.5 -568t-125.5 -618q0 -317 127 -600h-80q-146 262 -146 594z" />
+<glyph unicode=")" horiz-adv-x="526" d="M453 868q0 -345 -123.5 -636t-380.5 -556h-105q257 274 383.5 566.5t126.5 619.5q0 148 -28.5 294t-98.5 306h80q146 -262 146 -594z" />
+<glyph unicode="*" horiz-adv-x="1137" d="M834 1540l-109 -405l438 8l-8 -107l-416 29l181 -401l-115 -37l-135 417l-285 -348l-78 78l318 318l-392 125l39 102l394 -168l47 408z" />
+<glyph unicode="+" d="M563 672h-401v100h401v404h101v-404h401v-100h-401v-400h-101v400z" />
+<glyph unicode="," horiz-adv-x="451" d="M250 238l8 -23q-34 -92 -114 -233.5t-160 -245.5h-74q79 132 141 271t88 231h111z" />
+<glyph unicode="-" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="." horiz-adv-x="485" d="M82 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
+<glyph unicode="/" horiz-adv-x="641" d="M827 1462l-817 -1462h-110l815 1462h112z" />
+<glyph unicode="0" d="M1075 1016q0 -201 -41 -405t-116.5 -346t-183.5 -213.5t-242 -71.5q-176 0 -264.5 126.5t-88.5 387.5q0 186 44.5 381.5t124 334t187 207t240.5 68.5q340 0 340 -469zM723 1397q-134 0 -241.5 -113t-173.5 -329t-66 -451q0 -222 62.5 -329t197.5 -107q139 0 244 112 t166 337t61 489q0 199 -59.5 295t-190.5 96z" />
+<glyph unicode="1" d="M537 0h-105l225 1055q19 92 74 293q-42 -36 -75.5 -61t-249.5 -161l-52 78l406 258h90z" />
+<glyph unicode="2" d="M909 0h-870l22 104l449 402q198 177 284 276.5t126.5 186.5t40.5 180q0 112 -66 178t-197 66q-176 0 -333 -129l-54 73q180 146 394 146q173 0 268.5 -85t95.5 -237q0 -110 -43.5 -208.5t-141.5 -211.5t-311 -303l-383 -338v-4h736z" />
+<glyph unicode="3" d="M1049 1174q0 -162 -106 -275t-286 -143v-4q117 -24 185.5 -115.5t68.5 -226.5q0 -134 -64 -233t-179.5 -148t-274.5 -49q-96 0 -184.5 20.5t-153.5 52.5v101q172 -86 344 -86q197 0 303.5 89.5t106.5 252.5q0 145 -89 223t-247 78h-117l21 96h110q209 0 333 95.5 t124 258.5q0 114 -63.5 175t-188.5 61q-167 0 -344 -131l-49 75q84 67 188 104.5t218 37.5q161 0 252.5 -82.5t91.5 -226.5z" />
+<glyph unicode="4" d="M1071 371h-264l-80 -371h-96l80 371h-688l20 96l881 1010h118l-215 -1018h265zM729 459q79 369 119 558.5t86 354.5h-4q-66 -91 -129 -166l-651 -747h579z" />
+<glyph unicode="5" d="M582 879q188 0 292.5 -102t104.5 -279q0 -237 -148 -377.5t-407 -140.5q-84 0 -177.5 20t-158.5 51v107q170 -90 340 -90q208 0 328.5 114.5t120.5 313.5q0 140 -85 219.5t-225 79.5q-133 0 -243 -41l-66 49l193 659h624l-18 -96h-541l-149 -516q98 29 215 29z" />
+<glyph unicode="6" d="M170 428q0 283 105 544.5t269.5 385t383.5 123.5q123 0 182 -21l-18 -90q-86 23 -170 23q-233 0 -393.5 -174t-233.5 -502h8q68 94 164 143t211 49q161 0 250.5 -100.5t89.5 -282.5q0 -156 -60 -281t-171 -195t-257 -70q-171 0 -265.5 119t-94.5 329zM543 68 q112 0 196.5 58.5t130 162t45.5 229.5q0 146 -67 224.5t-195 78.5q-81 0 -154 -31.5t-129 -87t-78 -115t-22 -173.5q0 -164 72.5 -255t200.5 -91z" />
+<glyph unicode="7" d="M244 0l796 1366h-766l23 96h858l-20 -110l-779 -1352h-112z" />
+<glyph unicode="8" d="M737 1485q163 0 258 -85t95 -229q0 -138 -84 -234.5t-285 -172.5q130 -78 190 -170.5t60 -208.5t-58 -208t-165.5 -144.5t-260.5 -52.5q-178 0 -283.5 92.5t-105.5 253.5q0 159 100.5 268.5t321.5 187.5q-100 72 -144 152t-44 180q0 159 114 265t291 106zM610 733 q-218 -73 -313.5 -167.5t-95.5 -225.5q0 -136 77.5 -206.5t219.5 -70.5q168 0 270 91t102 233q0 104 -62 189t-198 157zM727 1399q-130 0 -214.5 -82t-84.5 -203q0 -91 41.5 -159t157.5 -142q192 62 279 144t87 206q0 109 -70.5 172.5t-195.5 63.5z" />
+<glyph unicode="9" d="M1059 1032q0 -288 -101.5 -548t-263.5 -382t-393 -122q-114 0 -186 22v90q87 -29 192 -29q474 0 627 674h-8q-140 -192 -367 -192q-162 0 -255 105t-93 284q0 155 59.5 281t170.5 196t257 70q174 0 267.5 -115.5t93.5 -333.5zM686 1393q-112 0 -197.5 -58.5 t-130.5 -162.5t-45 -230q0 -145 67.5 -225t192.5 -80q83 0 157.5 32.5t129 87.5t76.5 114t22 176q0 166 -71 256t-201 90z" />
+<glyph unicode=":" horiz-adv-x="485" d="M260 989q0 57 25.5 89t68.5 32q66 0 66 -72q0 -55 -25 -89t-67 -34q-68 0 -68 74zM102 55q0 56 25.5 88.5t69.5 32.5q65 0 65 -72q0 -55 -25.5 -88.5t-66.5 -33.5q-68 0 -68 73z" />
+<glyph unicode=";" horiz-adv-x="485" d="M287 238l8 -23q-35 -96 -118.5 -242t-156.5 -237h-73q79 132 141 271t88 231h111zM266 989q0 57 25.5 89t68.5 32q66 0 66 -72q0 -55 -25 -89t-67 -34q-68 0 -68 74z" />
+<glyph unicode="<" d="M1051 262l-914 414v74l914 471v-103l-801 -399l801 -350v-107z" />
+<glyph unicode="=" d="M168 885v100h903v-100h-903zM168 461v98h903v-98h-903z" />
+<glyph unicode=">" d="M170 369l801 350l-801 399v103l915 -471v-74l-915 -414v107z" />
+<glyph unicode="?" horiz-adv-x="799" d="M242 362l6 29q29 132 82 206.5t157 147.5q118 84 175 145.5t86.5 127.5t29.5 141q0 108 -67.5 170t-182.5 62q-139 0 -307 -101l-39 86q85 49 171.5 78t187.5 29q159 0 250.5 -84.5t91.5 -229.5q0 -127 -66 -234t-231 -226q-85 -61 -132.5 -108.5t-73 -95t-46.5 -143.5 h-92zM170 59q0 56 25 88.5t69 32.5q66 0 66 -71q0 -54 -24.5 -88.5t-67.5 -34.5q-68 0 -68 73z" />
+<glyph unicode="@" horiz-adv-x="1724" d="M1688 858q0 -179 -56 -323.5t-154.5 -227t-211.5 -82.5q-98 0 -154.5 55t-56.5 144h-4q-54 -97 -132.5 -148t-168.5 -51q-112 0 -178 73t-66 202q0 156 63 283t178 198.5t261 71.5q122 0 252 -52l-84 -315q-39 -140 -39 -221q0 -71 34.5 -111.5t100.5 -40.5 q86 0 160 73.5t117.5 198t43.5 251.5q0 156 -65 277t-187 188t-292 67q-235 0 -424.5 -108.5t-295.5 -304t-106 -439.5q0 -288 155 -449t435 -161q207 0 420 82v-90q-210 -82 -428 -82q-203 0 -357.5 82.5t-238.5 239t-84 370.5q0 276 121.5 493.5t337 337t473.5 119.5 q189 0 330.5 -72.5t221 -213t79.5 -314.5zM1008 969q-113 0 -204.5 -59t-142.5 -165.5t-51 -238.5q0 -92 40.5 -142.5t113.5 -50.5q101 0 180.5 89t124.5 255l78 289q-66 23 -139 23z" />
+<glyph unicode="A" horiz-adv-x="1059" d="M805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449z" />
+<glyph unicode="B" horiz-adv-x="1202" d="M412 1462h379q190 0 290.5 -84t100.5 -241q0 -153 -90 -249t-254 -124v-4q125 -31 188.5 -113.5t63.5 -204.5q0 -205 -140.5 -323.5t-390.5 -118.5h-457zM377 811h278q206 0 313 81t107 238q0 119 -78 180.5t-229 61.5h-272zM358 721l-135 -631h342q201 0 309.5 87.5 t108.5 256.5q0 145 -90 216t-275 71h-260z" />
+<glyph unicode="C" horiz-adv-x="1169" d="M961 1389q-197 0 -351.5 -104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410q0 266 104.5 488t284.5 341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17z" />
+<glyph unicode="D" horiz-adv-x="1350" d="M1288 879q0 -253 -109.5 -461.5t-300.5 -313t-446 -104.5h-330l310 1462h305q282 0 426.5 -147.5t144.5 -435.5zM430 90q226 0 394.5 94.5t261 275.5t92.5 412q0 498 -476 498h-206l-275 -1280h209z" />
+<glyph unicode="E" horiz-adv-x="1067" d="M829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627z" />
+<glyph unicode="F" horiz-adv-x="981" d="M205 0h-103l310 1462h708l-20 -94h-604l-134 -620h570l-21 -95h-569z" />
+<glyph unicode="G" horiz-adv-x="1374" d="M856 735h406l-150 -682q-211 -73 -405 -73q-257 0 -397 146t-140 421q0 265 105 483.5t283.5 335.5t395.5 117q113 0 203 -19t184 -59l-38 -94q-110 46 -189.5 62t-167.5 16q-184 0 -339 -107.5t-244 -301.5t-89 -433q0 -229 114.5 -352t326.5 -123q155 0 309 47l117 526 h-303z" />
+<glyph unicode="H" horiz-adv-x="1366" d="M1063 0h-100l151 719h-760l-149 -719h-103l310 1462h102l-139 -649h760l137 649h100z" />
+<glyph unicode="I" horiz-adv-x="504" d="M102 0l310 1462h98l-309 -1462h-99z" />
+<glyph unicode="J" horiz-adv-x="477" d="M-180 -360q-48 0 -88 8t-56 16l11 92q57 -20 137 -20q213 0 262 241l309 1485h105l-314 -1491q-35 -170 -125 -250.5t-241 -80.5z" />
+<glyph unicode="K" horiz-adv-x="1122" d="M979 0h-111l-342 788l-190 -153l-131 -635h-103l310 1462h102l-158 -723l133 121l680 602h138l-699 -610z" />
+<glyph unicode="L" horiz-adv-x="938" d="M102 0l310 1462h102l-289 -1366h621l-23 -96h-721z" />
+<glyph unicode="M" horiz-adv-x="1669" d="M772 205l733 1257h150l-301 -1462h-101l191 901q79 369 100 447h-6l-780 -1348h-51l-222 1348h-6q-20 -154 -78 -426l-196 -922h-96l309 1462h143l205 -1257h6z" />
+<glyph unicode="N" horiz-adv-x="1372" d="M1069 0h-86l-516 1284h-8q-23 -149 -48 -273t-214 -1011h-95l310 1462h80l522 -1294h8q23 176 74 416l188 878h94z" />
+<glyph unicode="O" horiz-adv-x="1464" d="M1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5 q0 240 -104.5 364t-310.5 124z" />
+<glyph unicode="P" horiz-adv-x="1145" d="M1145 1102q0 -500 -610 -500h-201l-129 -602h-103l310 1462h315q202 0 310 -92.5t108 -267.5zM350 694h191q252 0 373.5 96.5t121.5 305.5q0 274 -329 274h-211z" />
+<glyph unicode="Q" horiz-adv-x="1464" d="M1403 911q0 -216 -70 -418t-186.5 -324t-274.5 -167l267 -350h-142l-231 332l-74 -4q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128 q169 0 300 98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124z" />
+<glyph unicode="R" horiz-adv-x="1145" d="M336 633l-131 -633h-103l310 1462h303q430 0 430 -360q0 -182 -103.5 -303t-281.5 -152q201 -591 221 -647h-111l-211 633h-323zM358 725h252q208 0 317 95.5t109 281.5q0 268 -329 268h-211z" />
+<glyph unicode="S" horiz-adv-x="1020" d="M895 403q0 -126 -65.5 -224.5t-179.5 -148.5t-269 -50q-88 0 -172.5 17t-171.5 58v109q163 -92 348 -92q188 0 295.5 86.5t107.5 232.5q0 61 -17 104.5t-52.5 78.5t-91 68t-131.5 75q-150 76 -209.5 164t-59.5 206t59 207.5t165 139t237 49.5q99 0 180 -17.5t168 -60.5 l-32 -94q-66 40 -151.5 63t-164.5 23q-163 0 -259.5 -82.5t-96.5 -218.5q0 -103 49 -170t182 -133q154 -79 213.5 -130t89 -113t29.5 -147z" />
+<glyph unicode="T" horiz-adv-x="985" d="M438 0h-102l289 1368h-432l20 94h973l-19 -94h-440z" />
+<glyph unicode="U" horiz-adv-x="1370" d="M1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101z" />
+<glyph unicode="V" horiz-adv-x="1079" d="M457 147q51 111 124 247l572 1068h117l-799 -1462h-88l-182 1462h100l117 -950q26 -217 35 -365h4z" />
+<glyph unicode="W" horiz-adv-x="1702" d="M1018 1341q-27 -76 -62 -153.5t-563 -1187.5h-82l-73 1462h100l47 -1031l4 -165l-2 -86h6q85 226 170 398l434 884h105l61 -878q19 -266 19 -410h6q30 86 61.5 163t493.5 1125h108q-169 -365 -330.5 -731t-328.5 -731h-78l-78 1075q-11 142 -11 219l1 47h-8z" />
+<glyph unicode="X" horiz-adv-x="971" d="M879 0h-107l-254 678l-526 -678h-127l608 766l-272 696h106l240 -626l483 626h119l-555 -719z" />
+<glyph unicode="Y" horiz-adv-x="965" d="M494 645l544 817h117l-631 -932l-108 -530h-105l119 545l-237 917h100z" />
+<glyph unicode="Z" d="M913 0h-925l22 92l1069 1276h-764l23 94h887l-19 -88l-1069 -1280h799z" />
+<glyph unicode="[" horiz-adv-x="537" d="M369 -324h-426l376 1786h429l-19 -90h-330l-340 -1605h330z" />
+<glyph unicode="\" horiz-adv-x="641" d="M295 1462l242 -1462h-82l-246 1462h86z" />
+<glyph unicode="]" horiz-adv-x="537" d="M203 1462h426l-377 -1786h-428l18 91h330l340 1605h-330z" />
+<glyph unicode="^" horiz-adv-x="1047" d="M70 569l587 906h91l260 -906h-105l-217 809l-500 -809h-116z" />
+<glyph unicode="_" horiz-adv-x="801" d="M625 -291h-807l18 86h807z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M766 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="a" horiz-adv-x="1133" d="M655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82t-164 -245.5 t-64 -325.5q0 -152 50 -223.5t151 -71.5z" />
+<glyph unicode="b" horiz-adv-x="1151" d="M500 -16q-113 0 -186 59t-97 166h-6l-55 -209h-80l327 1556h95q-131 -628 -162 -751h6q93 156 199 229.5t231 73.5q281 0 281 -375q0 -203 -76 -380t-201 -273t-276 -96zM750 1018q-91 0 -180 -61.5t-160.5 -169.5t-106.5 -235t-35 -206q0 -129 64 -202.5t166 -73.5 q124 0 224 83t164 245t64 325q0 152 -49 223.5t-151 71.5z" />
+<glyph unicode="c" horiz-adv-x="887" d="M477 -20q-174 0 -274.5 110.5t-100.5 306.5q0 193 73.5 361.5t198.5 257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 -222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 -57 -273 -57z" />
+<glyph unicode="d" horiz-adv-x="1133" d="M655 1104q230 0 279 -219h4q12 66 143 671h99l-330 -1556h-82l45 274h-6q-173 -294 -424 -294q-281 0 -281 374q0 193 71.5 370t197.5 278.5t284 101.5zM406 70q89 0 178.5 62.5t160 168t106.5 231t36 209.5q0 126 -61.5 201.5t-168.5 75.5q-124 0 -224 -83t-164 -242.5 t-64 -327.5q0 -295 201 -295z" />
+<glyph unicode="e" horiz-adv-x="928" d="M469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5t-162.5 -308.5h49 q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5z" />
+<glyph unicode="f" horiz-adv-x="578" d="M-131 -492q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190q-33 -161 -104 -234.5 t-195 -73.5z" />
+<glyph unicode="g" horiz-adv-x="1040" d="M1100 1087l-17 -79l-243 -11q26 -28 43.5 -84t17.5 -114q0 -109 -54.5 -206.5t-148 -145.5t-213.5 -48q-63 0 -77 9q-80 -33 -124 -73t-44 -81t31.5 -64.5t113.5 -31.5l121 -11q346 -31 346 -264q0 -112 -65 -197.5t-187 -131.5t-291 -46q-186 0 -291.5 72t-105.5 203 q0 236 309 334q-78 42 -78 123q0 123 191 202q-71 36 -110.5 105.5t-39.5 157.5q0 111 53.5 204t148 146t206.5 53q69 0 147 -21h361zM14 -207q0 -101 81 -150t224 -49q203 0 317 74.5t114 204.5q0 85 -62.5 130.5t-218.5 57.5l-160 15q-157 -45 -226 -114.5t-69 -168.5z M285 711q0 -112 58.5 -170t164.5 -58q88 0 154 37t102.5 114t36.5 169q0 104 -56 161.5t-157 57.5q-93 0 -161 -43t-105 -116t-37 -152z" />
+<glyph unicode="h" horiz-adv-x="1143" d="M764 0l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -188t-103.5 -286l-102 -477h-98l332 1556h96l-86 -411q-44 -200 -66 -279h6q78 113 186.5 175.5t229.5 62.5q124 0 192 -65t68 -183q0 -70 -24 -182l-148 -674h-98z" />
+<glyph unicode="i" horiz-adv-x="475" d="M174 0h-98l231 1087h96zM350 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" />
+<glyph unicode="j" horiz-adv-x="475" d="M-166 -492q-62 0 -113 19v92q47 -22 113 -22q82 0 128.5 51.5t72.5 177.5l266 1261h96l-268 -1271q-35 -165 -106.5 -236.5t-188.5 -71.5zM350 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 54.5z" />
+<glyph unicode="k" horiz-adv-x="944" d="M270 477l609 610h125l-474 -469l297 -618h-106l-264 559l-205 -188l-80 -371h-96l330 1556h96l-166 -780l-70 -299h4z" />
+<glyph unicode="l" horiz-adv-x="475" d="M170 0h-94l334 1556h94z" />
+<glyph unicode="m" horiz-adv-x="1751" d="M711 0l147 674q25 125 25 162q0 182 -154 182q-106 0 -200 -67.5t-159 -188.5t-100 -287l-100 -475h-98l231 1087h80l-33 -210h6q80 113 181.5 170t212.5 57q106 0 163 -67t60 -195h6q77 129 181 195.5t222 66.5q117 0 182.5 -61.5t65.5 -176.5q0 -29 -2.5 -56.5 t-19.5 -119.5l-152 -690h-100l149 680q25 120 25 176q0 77 -43 119.5t-119 42.5q-157 0 -277.5 -137.5t-168.5 -362.5l-109 -518h-102z" />
+<glyph unicode="n" horiz-adv-x="1143" d="M764 0l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 -477h-98l231 1087h82l-37 -221h6q164 238 416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98z" />
+<glyph unicode="o" horiz-adv-x="1124" d="M649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83z" />
+<glyph unicode="p" horiz-adv-x="1149" d="M498 -16q-230 0 -279 219h-4q-13 -72 -149 -695h-99l336 1579h82l-45 -274h6q91 153 195.5 224t228.5 71q135 0 208 -92.5t73 -282.5q0 -195 -72 -371t-197.5 -277t-283.5 -101zM748 1018q-87 0 -174 -58.5t-161.5 -167.5t-110.5 -237.5t-36 -208.5q0 -125 61.5 -200.5 t168.5 -75.5q124 0 225 84t164 243.5t63 325.5q0 295 -200 295z" />
+<glyph unicode="q" horiz-adv-x="1157" d="M651 1104q109 0 183.5 -58t99.5 -167h6l55 208h80l-327 -1556h-95l98 470l64 282h-6q-93 -156 -199 -229.5t-231 -73.5q-281 0 -281 374q0 201 75.5 379t200.5 274.5t277 96.5zM401 70q92 0 182 62.5t160.5 171.5t105 236.5t34.5 200.5q0 130 -63.5 203.5t-166.5 73.5 q-124 0 -224 -83t-164 -245t-64 -325q0 -143 45.5 -219t154.5 -76z" />
+<glyph unicode="r" horiz-adv-x="752" d="M713 1106q69 0 123 -14l-21 -93q-47 15 -113 15q-94 0 -179 -64t-153 -192t-100 -277l-100 -481h-98l231 1087h80l-29 -204h6q73 94 123 135.5t106.5 64.5t123.5 23z" />
+<glyph unicode="s" horiz-adv-x="827" d="M713 295q0 -144 -103 -229.5t-280 -85.5q-173 0 -305 75v107q74 -46 153 -71t148 -25q138 0 211 57.5t73 163.5q0 42 -15.5 74t-50 61.5t-132.5 85.5q-148 80 -200 145.5t-52 159.5q0 128 98.5 209.5t259.5 81.5q75 0 158.5 -17.5t140.5 -46.5l-35 -88q-136 64 -264 64 q-116 0 -186 -53t-70 -138q0 -55 17 -88t60.5 -68.5t119.5 -76.5q114 -63 161.5 -103.5t70 -86.5t22.5 -107z" />
+<glyph unicode="t" horiz-adv-x="616" d="M694 1087l-18 -81h-283l-135 -635q-22 -99 -22 -164q0 -139 126 -139q68 0 152 26v-86q-101 -28 -170 -28q-99 0 -153 54.5t-54 158.5q0 73 29 206l129 607h-182l14 67l184 17l97 253h55l-55 -256h286z" />
+<glyph unicode="u" horiz-adv-x="1143" d="M381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100z" />
+<glyph unicode="v" horiz-adv-x="895" d="M276 0l-172 1087h101l108 -735q26 -165 33 -254h6q51 115 129 256l406 733h102l-600 -1087h-113z" />
+<glyph unicode="w" horiz-adv-x="1393" d="M838 0l-60 686q-14 224 -14 266h-6q-34 -92 -144 -290l-356 -662h-117l-20 1087h92l13 -821l-3 -157h6q61 134 150 297l373 681h77l64 -681q14 -147 14 -297h6l24 61l101 236l320 681h96l-508 -1087h-108z" />
+<glyph unicode="x" horiz-adv-x="922" d="M442 483l-393 -483h-121l471 559l-245 528h100l207 -462l373 462h120l-448 -534l258 -553h-98z" />
+<glyph unicode="y" horiz-adv-x="920" d="M123 1087h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184z" />
+<glyph unicode="z" horiz-adv-x="887" d="M700 0h-729l15 72l776 932h-543l17 83h659l-18 -83l-762 -920h602z" />
+<glyph unicode="{" horiz-adv-x="709" d="M424 -324q-256 0 -256 199q0 45 16 115l56 252q18 90 18 127q0 159 -199 159l21 78q126 0 191 49t89 158l89 393q30 135 106 195.5t215 60.5h29l-17 -86q-86 -2 -129 -20.5t-69.5 -61.5t-44.5 -120l-74 -338q-30 -134 -91.5 -194.5t-164.5 -78.5v-4q68 -18 105.5 -68.5 t37.5 -121.5q0 -52 -24 -164l-47 -225q-13 -58 -13 -101q0 -61 37.5 -89t138.5 -28v-86h-20z" />
+<glyph unicode="|" d="M584 1561h100v-2071h-100v2071z" />
+<glyph unicode="}" horiz-adv-x="709" d="M332 1462q131 0 189.5 -51t58.5 -147q0 -41 -17 -115l-55 -252q-19 -95 -19 -127q0 -77 49.5 -118.5t149.5 -41.5l-20 -78q-125 0 -191 -48.5t-90 -157.5l-88 -394q-32 -139 -108.5 -197.5t-213.5 -58.5h-18v86q96 2 138 21t68.5 61t43.5 121l74 338q27 126 87.5 189.5 t168.5 82.5v5q-75 20 -109.5 72.5t-34.5 117.5q0 55 18 131l54 258q12 61 12 101q0 44 -18 69t-54 36t-116 11l20 86h21z" />
+<glyph unicode="~" d="M350 745q-49 0 -108 -30.5t-115 -89.5v94q108 110 233 110q61 0 115 -13.5t156 -57.5q126 -58 219 -58q54 0 107.5 29t117.5 96v-96q-111 -113 -233 -113q-117 0 -271 72q-62 29 -112.5 43t-108.5 14z" />
+<glyph unicode="¡" horiz-adv-x="502" d="M264 711h62l-203 -1086h-119zM432 1030q0 -56 -25 -88.5t-69 -32.5q-66 0 -66 72q0 55 25 89t68 34q67 0 67 -74z" />
+<glyph unicode="¢" d="M578 -20h-93l45 215q-132 25 -206 132.5t-74 272.5q0 184 63.5 341t178 253t256.5 111l36 178h90l-38 -176q116 -4 217 -43l-29 -90q-107 47 -217 47q-130 0 -233 -76t-162.5 -221t-59.5 -322q0 -164 74.5 -247t208.5 -83q127 0 264 60v-92q-118 -58 -281 -58z" />
+<glyph unicode="£" d="M879 1479q170 0 313 -78l-39 -84l-54 26q-108 50 -231 50q-134 0 -220.5 -74.5t-117.5 -220.5l-73 -340h409l-18 -82h-408l-57 -268q-50 -225 -188 -314h759l-20 -94h-938l16 84q93 11 165.5 95.5t107.5 236.5l57 260h-199l17 82h198l76 350q41 187 155 279t290 92z" />
+<glyph unicode="¤" d="M262 723q0 118 74 225l-129 129l63 64l127 -129q105 78 230 78q118 0 223 -78l131 129l61 -62l-129 -129q78 -106 78 -227q0 -135 -78 -227l129 -127l-61 -62l-131 127q-104 -76 -223 -76q-126 0 -228 80l-129 -129l-61 62l127 127q-74 98 -74 225zM350 723 q0 -116 80 -196.5t197 -80.5t198.5 81t81.5 196q0 75 -36.5 140t-102.5 104t-141 39q-114 0 -195.5 -82t-81.5 -201z" />
+<glyph unicode="¥" d="M584 645l544 817h117l-559 -823h266l-16 -76h-315l-39 -190h317l-18 -84h-316l-59 -289h-105l64 289h-299l18 84h299l41 190h-301l17 76h258l-215 823h100z" />
+<glyph unicode="¦" d="M578 1561h100v-756h-100v756zM578 246h100v-756h-100v756z" />
+<glyph unicode="§" horiz-adv-x="995" d="M211 778q0 101 69.5 182t198.5 130q-64 31 -103.5 85.5t-39.5 120.5q0 74 46 134.5t132.5 94.5t202.5 34q163 0 289 -58l-31 -80q-138 54 -264 54q-124 0 -202.5 -46.5t-78.5 -123.5q0 -59 46 -104.5t183 -106.5q112 -52 158.5 -89.5t71 -85t24.5 -110.5 q0 -197 -249 -317q122 -64 122 -197q0 -86 -48 -153.5t-139.5 -105.5t-221.5 -38q-157 0 -275 53v99q47 -27 126 -46.5t153 -19.5q149 0 228 52.5t79 150.5q0 62 -42.5 106t-166.5 96q-155 65 -211.5 130t-56.5 159zM559 1038q-119 -30 -187.5 -97.5t-68.5 -154.5 q0 -57 24.5 -96.5t81 -73t187.5 -81.5q103 49 162 113.5t59 156.5q0 72 -57.5 126t-200.5 107z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M836 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM492 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M944 1092q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q85 0 199 43v-88q-104 -45 -209 -45q-187 0 -288 116t-101 330q0 207 110 332t297 125q119 0 227 -52l-36 -83q-99 45 -191 45zM147 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM240 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330t-240.5 241t-330.5 89q-182 0 -335 -92t-238.5 -243t-85.5 -325z" />
+<glyph unicode="ª" horiz-adv-x="643" d="M487 1485q55 0 97.5 -29t66.5 -86h6l35 103h66l-137 -650h-72l22 125h-4q-96 -137 -223 -137q-80 0 -127 56.5t-47 164.5q0 189 90.5 321t226.5 132zM369 885q66 0 133.5 75.5t97.5 184.5q16 51 16 123q0 58 -36 100.5t-93 42.5q-94 0 -161.5 -111.5t-67.5 -271.5 q0 -143 111 -143z" />
+<glyph unicode="«" horiz-adv-x="860" d="M426 932l57 -49l-317 -336l213 -385l-64 -39l-254 418l2 26zM786 932l58 -49l-314 -336l209 -385l-63 -39l-254 418l2 26z" />
+<glyph unicode="¬" d="M1028 772v-500h-100v400h-803v100h903z" />
+<glyph unicode="­" horiz-adv-x="629" d="M77 502zM77 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M758 731h112q93 0 144 46.5t51 135.5q0 172 -197 172h-110v-354zM1169 918q0 -80 -39.5 -141t-109.5 -93l237 -393h-120l-211 360h-168v-360h-101v880h211q143 0 222 -62t79 -191zM150 731q0 207 103.5 382t276.5 272.5t371 97.5q200 0 375 -100t276 -275t101 -377 q0 -197 -97 -370t-272 -277t-383 -104q-204 0 -376.5 100.5t-273.5 273t-101 377.5zM242 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330t-240.5 241t-330.5 89q-182 0 -335 -92t-238.5 -243t-85.5 -325z" />
+<glyph unicode="¯" horiz-adv-x="655" d="M1001 1556h-653l53 97h654z" />
+<glyph unicode="°" horiz-adv-x="877" d="M242 1190q0 120 85 206.5t208 86.5q122 0 207 -86.5t85 -206.5q0 -122 -85.5 -207.5t-206.5 -85.5q-122 0 -207.5 85.5t-85.5 207.5zM315 1190q0 -89 64.5 -153t155.5 -64q92 0 155.5 64t63.5 153q0 90 -64 155.5t-155 65.5q-90 0 -155 -65.5t-65 -155.5z" />
+<glyph unicode="±" d="M528 629h-401v98h401v406h101v-406h401v-98h-401v-400h-101v400zM127 0v100h903v-100h-903z" />
+<glyph unicode="²" horiz-adv-x="643" d="M604 586h-522l16 80l297 258q137 118 182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 -223h416z" />
+<glyph unicode="³" horiz-adv-x="643" d="M705 1276q0 -85 -48.5 -148t-154.5 -88v-4q66 -16 105.5 -68t39.5 -124q0 -77 -39 -141t-109 -99t-161 -35q-59 0 -123.5 15.5t-105.5 40.5v90q46 -28 108 -48t125 -20q99 0 159 52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5t66.5 129.5 q0 68 -37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 159 -56.5t59 -148.5z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M580 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="µ" horiz-adv-x="1171" d="M238 242q0 -82 48.5 -127t135.5 -45q110 0 207 64.5t162.5 182.5t101.5 285l104 485h99l-234 -1087h-78l29 205h-6q-164 -221 -404 -221q-85 0 -139 32.5t-76 89.5h-6q-18 -132 -51 -284l-63 -314h-97l338 1579h101l-152 -698q-20 -96 -20 -147z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1208 -260h-100v1722h-227v-1722h-101v819q-64 -18 -145 -18q-216 0 -318 125t-102 376q0 260 109 387t342 127h542v-1816z" />
+<glyph unicode="·" horiz-adv-x="485" d="M207 625zM207 698q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M197 -289q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152z" />
+<glyph unicode="¹" horiz-adv-x="643" d="M512 1462h80l-186 -876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 -93.5l-39 59z" />
+<glyph unicode="º" horiz-adv-x="655" d="M518 1479q105 0 165 -64t60 -180q0 -115 -40 -214t-114 -156.5t-175 -57.5q-114 0 -169 67.5t-55 184.5q0 112 41.5 209.5t116 154t170.5 56.5zM508 1405q-70 0 -124 -46.5t-84 -124.5t-30 -167q0 -186 156 -186q73 0 125.5 46.5t81.5 127.5t29 176q0 83 -39 128.5 t-115 45.5z" />
+<glyph unicode="»" horiz-adv-x="860" d="M451 123l-58 49l314 336l-209 385l63 39l254 -418l-2 -27zM90 123l-57 49l313 336l-209 385l64 39l254 -418l-2 -27z" />
+<glyph unicode="¼" horiz-adv-x="1481" d="M129 0zM1319 230h-131l-49 -229h-82l49 229h-391l21 76l506 577h86l-125 -581h133zM1121 302q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392h291zM1323 1462l-1087 -1462h-107l1086 1462h108zM509 1462h80l-186 -876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59 t15 49.5q-34 -31 -60 -51.5t-143 -93.5l-39 59z" />
+<glyph unicode="½" horiz-adv-x="1458" d="M53 0zM1278 1h-522l16 80l297 258q137 118 182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 -223h416zM431 1462h80l-186 -876h-84l118 569q5 21 11.5 50.5 t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 -93.5l-39 59zM1247 1462l-1087 -1462h-107l1086 1462h108z" />
+<glyph unicode="¾" horiz-adv-x="1458" d="M71 0zM1380 230h-131l-49 -229h-82l49 229h-391l21 76l506 577h86l-125 -581h133zM1182 302q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392h291zM667 1276q0 -85 -48.5 -148t-154.5 -88v-4q66 -16 105.5 -68t39.5 -124q0 -77 -39 -141t-109 -99t-161 -35 q-59 0 -123.5 15.5t-105.5 40.5v90q46 -28 108 -48t125 -20q99 0 159 52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5t66.5 129.5q0 68 -37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 159 -56.5t59 -148.5zM1407 1462l-1087 -1462 h-107l1086 1462h108z" />
+<glyph unicode="¿" horiz-adv-x="799" d="M641 717l-6 -29q-28 -127 -79 -200t-161 -154q-118 -84 -175 -145.5t-86.5 -127.5t-29.5 -141q0 -106 65.5 -168.5t184.5 -62.5q141 0 308 100l38 -86q-85 -49 -170.5 -77.5t-187.5 -28.5q-159 0 -250.5 84.5t-91.5 228.5q0 133 70 240.5t227 220.5q85 61 133.5 109 t73 95t45.5 142h92zM713 1020q0 -56 -25.5 -88.5t-69.5 -32.5q-65 0 -65 72q0 56 25 89.5t67 33.5q68 0 68 -74z" />
+<glyph unicode="À" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM815 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM668 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Â" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM1007 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5 t92.5 -146.5v-29z" />
+<glyph unicode="Ã" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM911 1587q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5 q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode="Ä" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM879 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM535 1704q0 49 20.5 78t56.5 29q54 0 54 -64 q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="Å" horiz-adv-x="1059" d="M0 0zM805 520h-512l-287 -520h-117l822 1468h67l201 -1468h-105zM793 612l-39 291q-31 242 -39 402q-30 -63 -64.5 -130t-306.5 -563h449zM945 1600q0 -92 -57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142zM867 1598 q0 57 -33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93t33 -90t90 -33q56 0 90.5 36t34.5 93z" />
+<glyph unicode="Æ" horiz-adv-x="1640" d="M1403 0h-727l110 522h-444l-328 -522h-131l946 1462h883l-20 -94h-625l-117 -553h590l-20 -94h-588l-135 -627h626zM408 627h401l156 741h-88z" />
+<glyph unicode="Ç" horiz-adv-x="1169" d="M170 0zM961 1389q-197 0 -351.5 -104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410q0 266 104.5 488t284.5 341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17zM752 -289 q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152z" />
+<glyph unicode="È" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM891 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM654 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Ê" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM1036 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="Ë" horiz-adv-x="1067" d="M102 0zM829 0h-727l310 1462h727l-21 -94h-624l-117 -553h590l-21 -94h-588l-135 -627h627zM902 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM558 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="Ì" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM525 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM419 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Î" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM738 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="Ï" horiz-adv-x="504" d="M102 0zM102 0l310 1462h98l-309 -1462h-99zM604 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM260 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="Ð" horiz-adv-x="1352" d="M1288 879q0 -253 -109.5 -461.5t-300.5 -313t-446 -104.5h-330l144 676h-156l21 96h155l146 690h305q282 0 426.5 -147.5t144.5 -435.5zM430 90q226 0 394.5 94.5t261 275.5t92.5 412q0 498 -476 498h-206l-129 -598h378l-20 -96h-379l-125 -586h209z" />
+<glyph unicode="Ñ" horiz-adv-x="1372" d="M102 0zM1069 0h-86l-516 1284h-8q-23 -149 -48 -273t-214 -1011h-95l310 1462h80l522 -1294h8q23 176 74 416l188 878h94zM1062 1587q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14 t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode="Ò" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM989 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM844 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Ô" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM1171 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="Õ" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM1077 1587q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z " />
+<glyph unicode="Ö" horiz-adv-x="1464" d="M172 0zM1403 911q0 -255 -94 -481.5t-252 -338t-365 -111.5q-250 0 -385 149t-135 430q0 262 93 477.5t255 331t373 115.5q247 0 378.5 -148.5t131.5 -423.5zM879 1389q-174 0 -308.5 -101t-214.5 -298t-80 -417q0 -245 109.5 -373t319.5 -128q169 0 300 98.5t210 300 t79 430.5q0 240 -104.5 364t-310.5 124zM1031 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM687 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="×" d="M551 723l-330 332l70 69l330 -329l333 329l68 -67l-332 -334l332 -332l-68 -67l-333 329l-330 -327l-68 67z" />
+<glyph unicode="Ø" horiz-adv-x="1464" d="M1403 911q0 -187 -52 -365.5t-144.5 -304.5t-223 -193.5t-291.5 -67.5q-215 0 -348 112l-139 -170l-66 64l146 172q-113 149 -113 401q0 263 94 479.5t256.5 330.5t370.5 114q219 0 352 -121l133 168l70 -53l-145 -183q45 -51 72.5 -161t27.5 -222zM879 1389 q-134 0 -244 -59.5t-188.5 -170t-124.5 -267.5t-46 -319q0 -105 21.5 -191t56.5 -138l826 1032q-107 113 -301 113zM1294 901q0 85 -17.5 172t-43.5 129l-821 -1030q107 -100 293 -100q170 0 301 100t209.5 296.5t78.5 432.5z" />
+<glyph unicode="Ù" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM946 1579h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303 v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM838 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5 t-192.5 -146.5h-67v21z" />
+<glyph unicode="Û" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM1148 1579h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54 v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="Ü" horiz-adv-x="1370" d="M176 0zM1395 1462l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401q0 83 27 201l186 880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 977h101zM1022 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29 q-55 0 -55 63zM678 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="Ý" horiz-adv-x="965" d="M193 0zM494 645l544 817h117l-631 -932l-108 -530h-105l119 545l-237 917h100zM563 1600q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="Þ" horiz-adv-x="1145" d="M1087 836q0 -247 -153 -373.5t-457 -126.5h-201l-71 -336h-103l310 1462h102l-57 -266h213q200 0 308.5 -92.5t108.5 -267.5zM293 428h190q256 0 376 98.5t120 302.5q0 275 -330 275h-211z" />
+<glyph unicode="ß" horiz-adv-x="1094" d="M-162 -492q-73 0 -119 23v90q53 -24 115 -24q79 0 123 50.5t66 153.5l305 1409q80 357 405 357q137 0 215 -61.5t78 -174.5q0 -75 -44.5 -140.5t-166.5 -148.5q-107 -76 -141.5 -124.5t-34.5 -106.5q0 -51 34 -88.5t93 -75.5q96 -63 138 -133.5t42 -165.5 q0 -170 -106.5 -269t-286.5 -99q-143 0 -234 65v109q45 -36 112.5 -59t129.5 -23q132 0 208.5 71t76.5 195q0 75 -31.5 129t-109.5 108q-82 58 -119 110.5t-37 121.5q0 57 21 103t60.5 88.5t137.5 113.5q101 70 131.5 116t30.5 101q0 70 -55 110t-150 40q-129 0 -205 -76 t-108 -229l-291 -1377q-33 -152 -103.5 -220.5t-179.5 -68.5z" />
+<glyph unicode="à" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM809 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="á" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM586 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="â" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM955 1243h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="ã" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM858 1249q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173 t-124.5 -55z" />
+<glyph unicode="ä" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM835 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM491 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="å" horiz-adv-x="1133" d="M102 0zM655 1104q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 -187 -218t-237 -76q-281 0 -281 374q0 197 75 376t200.5 276.5t277.5 97.5zM406 70q89 0 177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5q-124 0 -224 -82 t-164 -245.5t-64 -325.5q0 -152 50 -223.5t151 -71.5zM927 1448q0 -92 -57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142zM849 1446q0 57 -33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93t33 -90t90 -33q56 0 90.5 36 t34.5 93z" />
+<glyph unicode="æ" horiz-adv-x="1602" d="M1155 -20q-123 0 -211 60t-117 165l-39 -205h-77l41 254h-9q-94 -142 -189 -208t-208 -66q-120 0 -182 94t-62 270q0 206 70.5 384.5t192.5 277t274 98.5q106 0 166 -56.5t74 -156.5h10l59 192h66l-35 -186q139 207 350 207q112 0 175 -61.5t63 -172.5 q0 -179 -158.5 -271.5t-470.5 -92.5h-39q-8 -51 -8 -96q0 -161 69.5 -250.5t217.5 -89.5q69 0 133.5 21t130.5 52v-94q-80 -37 -147 -53t-140 -16zM369 70q67 0 138.5 42t134 117.5t106 170.5t63.5 199t20 165q0 118 -49 186t-141 68q-123 0 -223 -86t-156.5 -240 t-56.5 -340q0 -150 42.5 -216t121.5 -66zM1317 1018q-119 0 -232 -115.5t-172 -308.5h48q263 0 383 67t120 203q0 71 -38.5 112.5t-108.5 41.5z" />
+<glyph unicode="ç" horiz-adv-x="887" d="M102 0zM477 -20q-174 0 -274.5 110.5t-100.5 306.5q0 193 73.5 361.5t198.5 257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 -222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 -57 -273 -57zM574 -289 q0 -94 -75.5 -148.5t-217.5 -54.5q-46 0 -78 7v79q30 -6 72 -6q198 0 198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152z" />
+<glyph unicode="è" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM751 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM532 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="ê" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM904 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="ë" horiz-adv-x="928" d="M102 0zM469 -20q-173 0 -270 109.5t-97 305.5q0 181 71 347t195.5 264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69zM631 1018q-131 0 -243.5 -115.5 t-162.5 -308.5h49q517 0 517 270q0 67 -43.5 110.5t-116.5 43.5zM780 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM436 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ì" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM454 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM284 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="î" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM642 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="ï" horiz-adv-x="475" d="M76 0zM174 0h-98l231 1087h96zM515 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM171 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ð" horiz-adv-x="1124" d="M713 1364q-54 60 -158 139l59 68q32 -26 81 -66t100 -94l266 150l39 -74l-256 -141q87 -116 131.5 -276t44.5 -335q0 -355 -141.5 -555t-399.5 -200q-177 0 -277 106.5t-100 294.5q0 170 63 301.5t178.5 203.5t262.5 72q107 0 188 -49.5t121 -142.5h5q0 139 -43 289 t-115 243l-295 -163l-39 73zM489 70q118 0 208.5 61t144 186.5t53.5 270.5q0 77 -35 142t-100 101.5t-156 36.5q-124 0 -213.5 -61.5t-137.5 -169.5t-48 -248q0 -153 73.5 -236t210.5 -83z" />
+<glyph unicode="ñ" horiz-adv-x="1143" d="M76 0zM764 0l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 -477h-98l231 1087h82l-37 -221h6q164 238 416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98zM874 1249q-40 0 -77.5 19t-75.5 45 q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode="ò" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM744 1241h-66q-50 52 -114 144.5t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="ó" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM573 1262q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="ô" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM941 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="õ" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM839 1249q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode="ö" horiz-adv-x="1124" d="M98 0zM649 1108q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5 q0 154 -73 237t-210 83zM812 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM468 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="÷" d="M168 672v100h903v-100h-903zM522 373q0 106 96 106q48 0 73.5 -27.5t25.5 -78.5q0 -57 -29 -82t-70 -25q-96 0 -96 107zM522 1071q0 107 96 107q46 0 72.5 -27.5t26.5 -79.5q0 -57 -29 -81.5t-70 -24.5q-96 0 -96 106z" />
+<glyph unicode="ø" horiz-adv-x="1124" d="M164 127q-66 106 -66 276q0 191 73 358t197 257t281 90q150 0 250 -82l109 133l65 -53l-117 -143q70 -105 70 -263q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-163 0 -254 83l-110 -135l-64 54zM924 702q0 101 -35 179l-608 -742q67 -73 202 -73q127 0 225.5 77.5 t157 228t58.5 330.5zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -125 32 -197l605 739q-74 72 -197 72z" />
+<glyph unicode="ù" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM774 1241h-66q-50 52 -114 144.5 t-99 162.5v21h115q46 -129 164 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM627 1262q66 51 150.5 142 t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="û" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM957 1241h-49q-70 60 -161 207 q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="ü" horiz-adv-x="1143" d="M109 0zM381 1087l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 -198.5 62t-67.5 181q0 60 22 170l150 690h100zM827 1366q0 49 20.5 78t56.5 29 q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM483 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ý" horiz-adv-x="920" d="M0 0zM123 1087h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184zM505 1262q66 51 150.5 142t129.5 165h137v-23 q-51 -66 -157.5 -158.5t-192.5 -146.5h-67v21z" />
+<glyph unicode="þ" horiz-adv-x="1163" d="M498 -16q-230 0 -279 219h-4q-13 -72 -149 -695h-99l434 2048h99q-114 -535 -164 -751h6q93 156 199 229.5t231 73.5q133 0 206 -92.5t73 -282.5q0 -195 -72 -371t-197.5 -277t-283.5 -101zM748 1018q-86 0 -172.5 -57.5t-162.5 -169.5t-111.5 -238t-35.5 -207 q0 -125 61.5 -200.5t168.5 -75.5q124 0 225 84t164 243.5t63 325.5q0 295 -200 295z" />
+<glyph unicode="ÿ" horiz-adv-x="920" d="M0 0zM123 1087h100l82 -548q51 -351 55 -449h11q43 105 186 367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 21v92q71 -27 137 -27q80 0 147 49.5t130 164.5t100 184zM698 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77 t-55 -29q-55 0 -55 63zM354 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ı" horiz-adv-x="475" d="M174 0h-98l231 1087h96z" />
+<glyph unicode="Œ" horiz-adv-x="1767" d="M1530 0h-666q-25 -6 -77.5 -13t-94.5 -7q-251 0 -385.5 149.5t-134.5 429.5q0 263 96 482t262 330.5t381 111.5q130 0 240 -21h688l-20 -94h-625l-117 -553h590l-20 -94h-588l-135 -627h626zM705 72q68 0 116 12l271 1290q-110 15 -189 15q-182 0 -321.5 -98.5 t-222.5 -293.5t-83 -424q0 -245 109 -373t320 -128z" />
+<glyph unicode="œ" horiz-adv-x="1720" d="M1262 -20q-135 0 -228 69t-125 201q-65 -127 -179 -198.5t-257 -71.5q-184 0 -279.5 109.5t-95.5 313.5q0 191 73 358t197 257t281 90q141 0 237 -74.5t126 -212.5q70 132 182.5 207.5t241.5 75.5q114 0 182 -61t68 -166q0 -181 -163.5 -276t-486.5 -95h-32 q-7 -38 -7 -98q0 -165 74 -251.5t213 -86.5q133 0 277 73v-94q-140 -69 -299 -69zM641 1022q-124 0 -223 -78.5t-158 -225t-59 -310.5q0 -342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83zM1423 1018q-131 0 -243 -115t-162 -309h49q516 0 516 270 q0 70 -44.5 112t-115.5 42z" />
+<glyph unicode="Ÿ" horiz-adv-x="965" d="M193 0zM494 645l544 817h117l-631 -932l-108 -530h-105l119 545l-237 917h100zM798 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM454 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M958 1241h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M967 1448q0 -92 -57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 -142zM889 1446q0 57 -33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93t33 -90t90 -33q56 0 90.5 36t34.5 93z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M831 1249q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="‑" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="‒" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="–" horiz-adv-x="983" d="M66 502l18 90h807l-17 -90h-808z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M68 502l18 90h1788l-16 -90h-1790z" />
+<glyph unicode="‘" horiz-adv-x="299" d="M133 961l-4 22q41 100 116 231t161 248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" />
+<glyph unicode="’" horiz-adv-x="299" d="M475 1462l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 106 129.5 242.5t103.5 258.5h113z" />
+<glyph unicode="‚" horiz-adv-x="451" d="M246 238l4 -23q-40 -97 -115.5 -230t-161.5 -249h-73q68 110 131.5 248t101.5 254h113z" />
+<glyph unicode="“" horiz-adv-x="631" d="M133 961l-4 22q41 100 116 231t161 248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113zM467 961l-4 22q43 104 120 238.5t156 240.5h74q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" />
+<glyph unicode="”" horiz-adv-x="631" d="M809 1462l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 106 129.5 242.5t103.5 258.5h113zM475 1462l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 106 129.5 242.5t103.5 258.5h113z" />
+<glyph unicode="„" horiz-adv-x="776" d="M561 238l4 -23q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q66 108 129 242.5t105 259.5h112zM227 238l4 -23q-43 -105 -117.5 -235.5t-158.5 -243.5h-74q73 119 135.5 254.5t98.5 247.5h112z" />
+<glyph unicode="•" horiz-adv-x="793" d="M248 682q0 137 63 213t172 76q76 0 116 -39.5t40 -118.5q0 -125 -66 -207t-176 -82q-149 0 -149 158z" />
+<glyph unicode="…" horiz-adv-x="1489" d="M69 0zM69 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM569 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM1071 55q0 56 25 88.5t69 32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="537" d="M451 932l57 -49l-318 -336l213 -385l-63 -39l-254 418l2 26z" />
+<glyph unicode="›" horiz-adv-x="537" d="M94 123l-57 49l317 336l-213 385l64 39l254 -418l-2 -27z" />
+<glyph unicode="⁄" horiz-adv-x="274" d="M731 1462l-1087 -1462h-107l1086 1462h108z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="643" d="M657 815h-131l-49 -229h-82l49 229h-391l21 76l506 577h86l-125 -581h133zM459 887q61 294 79 365.5t29 105.5q-10 -16 -61 -79t-338 -392h291z" />
+<glyph unicode="€" d="M991 1389q-186 0 -330.5 -120.5t-226.5 -346.5h457l-21 -82h-460q-30 -98 -39 -217h442l-20 -82h-424q0 -243 89 -356t265 -113q115 0 252 57v-94q-129 -55 -270 -55q-209 0 -325 139.5t-116 394.5v27h-184l16 82h172q5 101 35 217h-170l19 82h174q95 273 270 417 t399 144q166 0 287 -90l-53 -82q-102 78 -238 78z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M477 741h-86v643h-217v78h522v-78h-219v-643zM1077 741l-221 609h-6l4 -201v-408h-82v721h125l221 -606l223 606h125v-721h-86v398l4 207h-6l-227 -605h-74z" />
+<glyph unicode="" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph horiz-adv-x="1133" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+<hkern g1="uniFB00" u2="”" k="-123" />
+<hkern g1="uniFB00" u2="’" k="-123" />
+<hkern g1="uniFB00" u2="'" k="-123" />
+<hkern g1="uniFB00" u2=""" k="-123" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.ttf
new file mode 100755
index 0000000..01dda28
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.woff
new file mode 100755
index 0000000..43e8b9e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.eot
new file mode 100755
index 0000000..1486840
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.svg
new file mode 100755
index 0000000..11a472c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.svg
@@ -0,0 +1,1831 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sanslight" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1077" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM895 0h-99v1087h99v-1087zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71 t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="fl" horiz-adv-x="1077" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM895 0h-99v1556h99v-1556z" />
+<glyph unicode="ffi" horiz-adv-x="1692" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1200 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5 q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1510 0h-99v1087h99v-1087zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="ffl" horiz-adv-x="1692" d="M29 0zM586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1200 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5 q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86zM1510 0h-99v1556h99v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="492" d="M276 377h-61l-29 1085h119zM164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode=""" horiz-adv-x="723" d="M260 1462l-33 -528h-61l-33 528h127zM590 1462l-33 -528h-61l-33 528h127z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M967 928l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301zM440 530h363l78 398h-363z" />
+<glyph unicode="$" d="M991 440q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5t-172.5 50.5v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144 t80 -204zM881 444q0 85 -63 140.5t-200 95.5v-471q122 13 192.5 75t70.5 160zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143z" />
+<glyph unicode="%" horiz-adv-x="1653" d="M211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM688 1026q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5zM1063 438 q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5zM1540 438q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337zM1280 1462l-811 -1462h-96l811 1462h96z" />
+<glyph unicode="&" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM578 70q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138q0 -143 93 -224t258 -81zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" />
+<glyph unicode="'" horiz-adv-x="393" d="M260 1462l-33 -528h-61l-33 528h127z" />
+<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="557" d="M475 561q0 -263 -77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5h113q147 -175 224 -406.5t77 -494.5z" />
+<glyph unicode="*" horiz-adv-x="1128" d="M631 1556l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340l-390 39l19 131l401 -104l-39 405h146z" />
+<glyph unicode="+" d="M625 764h434v-82h-434v-432h-82v432h-432v82h432v434h82v-434z" />
+<glyph unicode="," horiz-adv-x="440" d="M295 238l12 -21q-75 -265 -174 -481h-65q77 275 110 502h117z" />
+<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="/" horiz-adv-x="698" d="M674 1462l-545 -1462h-104l544 1462h105z" />
+<glyph unicode="0" d="M1055 735q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" />
+<glyph unicode="1" d="M682 0h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243l-57 71l397 297h86v-1462z" />
+<glyph unicode="2" d="M1028 0h-915v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96z" />
+<glyph unicode="3" d="M979 1118q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5 q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5z" />
+<glyph unicode="4" d="M1141 373h-252v-373h-94v373h-752v67l725 1030h121v-1011h252v-86zM795 459v418q0 302 14 507h-8q-20 -37 -123 -188l-516 -737h633z" />
+<glyph unicode="5" d="M537 879q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29z" />
+<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM610 68q164 0 255 103 t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5q0 -111 49.5 -213.5t134 -162.5t186.5 -60z" />
+<glyph unicode="7" d="M334 0l602 1366h-827v96h946v-73l-604 -1389h-117z" />
+<glyph unicode="8" d="M582 1487q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM580 1397q-141 0 -226.5 -69.5t-85.5 -190.5q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70z" />
+<glyph unicode="9" d="M1036 842q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346z M559 1397q-158 0 -252 -106.5t-94 -291.5q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5z" />
+<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode=";" horiz-adv-x="487" d="M303 238l12 -21q-75 -265 -174 -481h-65q29 97 62 245.5t48 256.5h117zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="<" d="M1059 266l-948 416v61l948 474v-95l-823 -405l823 -355v-96z" />
+<glyph unicode="=" d="M111 885v82h948v-82h-948zM111 477v82h948v-82h-948z" />
+<glyph unicode=">" d="M111 362l823 355l-823 405v95l948 -474v-61l-948 -416v96z" />
+<glyph unicode="?" horiz-adv-x="862" d="M293 377v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75q-79 0 -148 -17.5t-149 -56.5l-37 80q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5 t-50 -93.5t-15.5 -146v-14h-82zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="@" horiz-adv-x="1815" d="M1702 725q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5 q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5 t89.5 -383.5zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" />
+<glyph unicode="A" horiz-adv-x="1229" d="M911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" />
+<glyph unicode="B" horiz-adv-x="1284" d="M207 1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448v1462zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212t-314.5 66h-295v-561zM309 721v-631h344q406 0 406 330 q0 301 -428 301h-322z" />
+<glyph unicode="C" horiz-adv-x="1272" d="M831 1391q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80z" />
+<glyph unicode="D" horiz-adv-x="1446" d="M1317 745q0 -368 -193 -556.5t-567 -188.5h-350v1462h395q350 0 532.5 -183t182.5 -534zM1206 741q0 314 -159.5 472.5t-468.5 158.5h-269v-1282h242q655 0 655 651z" />
+<glyph unicode="E" horiz-adv-x="1130" d="M1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94z" />
+<glyph unicode="F" horiz-adv-x="1028" d="M309 0h-102v1462h801v-94h-699v-620h660v-95h-660v-653z" />
+<glyph unicode="G" horiz-adv-x="1481" d="M782 737h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96z" />
+<glyph unicode="H" horiz-adv-x="1473" d="M1266 0h-103v719h-854v-719h-102v1462h102v-649h854v649h103v-1462z" />
+<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
+<glyph unicode="J" horiz-adv-x="506" d="M-33 -369q-92 0 -151 27v88q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369z" />
+<glyph unicode="K" horiz-adv-x="1190" d="M1190 0h-125l-561 772l-195 -172v-600h-102v1462h102v-760l162 162l573 598h130l-599 -618z" />
+<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" />
+<glyph unicode="M" horiz-adv-x="1767" d="M850 0l-545 1350h-8q8 -124 8 -254v-1096h-98v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65z" />
+<glyph unicode="N" horiz-adv-x="1477" d="M1270 0h-103l-866 1298h-8q12 -232 12 -350v-948h-98v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462z" />
+<glyph unicode="O" horiz-adv-x="1565" d="M1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
+<glyph unicode="P" horiz-adv-x="1198" d="M1087 1042q0 -212 -144 -325t-408 -113h-226v-604h-102v1462h358q522 0 522 -420zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="Q" horiz-adv-x="1565" d="M1436 733q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="R" horiz-adv-x="1217" d="M309 637v-637h-102v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
+<glyph unicode="S" horiz-adv-x="1116" d="M1014 377q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76 q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5z" />
+<glyph unicode="T" horiz-adv-x="1073" d="M588 0h-103v1366h-475v96h1053v-96h-475v-1366z" />
+<glyph unicode="U" horiz-adv-x="1473" d="M1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102z" />
+<glyph unicode="V" horiz-adv-x="1182" d="M1071 1462h111l-547 -1462h-90l-545 1462h109l368 -995q84 -225 113 -338q20 75 79 233z" />
+<glyph unicode="W" horiz-adv-x="1827" d="M1372 0h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86l-402 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103z" />
+<glyph unicode="X" horiz-adv-x="1102" d="M1102 0h-117l-432 682l-440 -682h-113l492 762l-447 700h115l395 -626l401 626h109l-453 -698z" />
+<glyph unicode="Y" horiz-adv-x="1081" d="M543 662l428 800h110l-487 -897v-565h-105v557l-489 905h117z" />
+<glyph unicode="Z" horiz-adv-x="1180" d="M1098 0h-1016v76l856 1290h-817v96h954v-76l-858 -1290h881v-96z" />
+<glyph unicode="[" horiz-adv-x="653" d="M602 -324h-428v1786h428v-94h-330v-1597h330v-95z" />
+<glyph unicode="\" horiz-adv-x="698" d="M127 1462l547 -1462h-103l-546 1462h102z" />
+<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" />
+<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" />
+<glyph unicode="_" horiz-adv-x="842" d="M846 -266h-850v82h850v-82z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M776 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="a" horiz-adv-x="1085" d="M842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M641 1108q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46zM639 1018q-192 0 -275 -110t-83 -363v-17q0 -246 86.5 -353t269.5 -107 q178 0 268 124.5t90 354.5q0 471 -356 471z" />
+<glyph unicode="c" horiz-adv-x="973" d="M616 -20q-233 0 -365 147t-132 410q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51z" />
+<glyph unicode="d" horiz-adv-x="1219" d="M580 1108q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408q0 282 118 431t343 149zM580 1018q-178 0 -267.5 -125t-89.5 -363q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5 t-273.5 110.5z" />
+<glyph unicode="e" horiz-adv-x="1124" d="M621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5z" />
+<glyph unicode="f" horiz-adv-x="614" d="M586 1001h-256v-1001h-99v1001h-202v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86z" />
+<glyph unicode="g" horiz-adv-x="1071" d="M1030 1087v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220q0 112 69.5 186 t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M940 0v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98z" />
+<glyph unicode="i" horiz-adv-x="463" d="M281 0h-99v1087h99v-1087zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="j" horiz-adv-x="463" d="M37 -492q-80 0 -135 25v86q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="k" horiz-adv-x="991" d="M279 477l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99v1556h99v-780l-7 -299h5z" />
+<glyph unicode="l" horiz-adv-x="463" d="M281 0h-99v1556h99v-1556z" />
+<glyph unicode="m" horiz-adv-x="1808" d="M1540 0v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M940 0v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98z" />
+<glyph unicode="o" horiz-adv-x="1200" d="M1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
+<glyph unicode="p" horiz-adv-x="1219" d="M647 -20q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5zM645 68q167 0 258.5 124t91.5 347q0 479 -346 479q-190 0 -279 -104.5t-89 -340.5v-32 q0 -255 85.5 -364t278.5 -109z" />
+<glyph unicode="q" horiz-adv-x="1219" d="M569 -20q-214 0 -332 142t-118 410q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190zM571 68q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124t-91.5 -364q0 -229 89.5 -345.5 t258.5 -116.5z" />
+<glyph unicode="r" horiz-adv-x="797" d="M610 1108q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99v1087h84l10 -196h7q67 120 143 168.5t184 48.5z" />
+<glyph unicode="s" horiz-adv-x="954" d="M856 283q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44 t-78 -122q0 -85 60.5 -136t236.5 -114q147 -53 214 -95.5t100.5 -96.5t33.5 -127z" />
+<glyph unicode="t" horiz-adv-x="686" d="M469 68q94 0 164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98z" />
+<glyph unicode="v" horiz-adv-x="940" d="M420 0l-420 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
+<glyph unicode="w" horiz-adv-x="1481" d="M1051 0l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98l-311 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104z" />
+<glyph unicode="x" horiz-adv-x="1020" d="M449 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
+<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
+<glyph unicode="z" horiz-adv-x="944" d="M858 0h-776v63l645 936h-598v88h727v-63l-649 -936h651v-88z" />
+<glyph unicode="{" horiz-adv-x="723" d="M389 -27q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322z" />
+<glyph unicode="|" horiz-adv-x="1108" d="M508 1561h92v-2067h-92v2067z" />
+<glyph unicode="}" horiz-adv-x="723" d="M334 295q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5t-277.5 -75.5v91q141 2 201.5 52.5 t60.5 153.5v322z" />
+<glyph unicode="~" d="M334 745q-49 0 -108 -30.5t-115 -89.5v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57z" />
+<glyph unicode="¡" horiz-adv-x="492" d="M215 711h61l29 -1086h-119zM166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="¢" d="M602 190q-186 30 -288.5 175t-102.5 380q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210z" />
+<glyph unicode="£" d="M412 676v-256q0 -116 -35 -196t-113 -128h809v-96h-995v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411z" />
+<glyph unicode="¤" d="M991 723q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142l-59 60l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258zM584 395 q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233t94.5 -232t229.5 -96z" />
+<glyph unicode="¥" d="M586 666l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278l-430 788h117z" />
+<glyph unicode="¦" horiz-adv-x="1108" d="M508 1561h92v-764h-92v764zM508 258h92v-764h-92v764z" />
+<glyph unicode="§" horiz-adv-x="1057" d="M145 813q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5 q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5zM246 825q0 -65 31.5 -104t105.5 -75t250 -99 q82 41 126 98t44 121q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" />
+<glyph unicode="¨" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M897 1092q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115t-101.5 331q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100 t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329z " />
+<glyph unicode="ª" horiz-adv-x="686" d="M512 813l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5 q-116 -6 -177 -36.5t-61 -98.5z" />
+<glyph unicode="«" horiz-adv-x="885" d="M82 543l309 393l62 -43l-254 -363l254 -362l-62 -43l-309 391v27zM442 543l310 393l61 -43l-254 -363l254 -362l-61 -43l-310 391v27z" />
+<glyph unicode="¬" d="M1038 764v-494h-82v412h-845v82h927z" />
+<glyph unicode="­" horiz-adv-x="659" d="M92 512zM92 512v82h475v-82h-475z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354zM1120 918q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101v880h211q143 0 222 -62t79 -191zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377 q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329z" />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v82h1036v-82z" />
+<glyph unicode="°" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" />
+<glyph unicode="±" d="M111 1zM111 1v82h948v-82h-948zM625 764h434v-82h-434v-432h-82v432h-432v82h432v434h82v-434z" />
+<glyph unicode="²" horiz-adv-x="688" d="M629 586h-576v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88z" />
+<glyph unicode="³" horiz-adv-x="688" d="M616 1260q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78 l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163z" />
+<glyph unicode="´" horiz-adv-x="1182" d="M393 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="µ" horiz-adv-x="1221" d="M281 1087v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99v1579h99z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1106 -260h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h543v-1816z" />
+<glyph unicode="·" horiz-adv-x="487" d="M162 623zM162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M393 -291q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174z" />
+<glyph unicode="¹" horiz-adv-x="688" d="M350 1462h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145l-47 77z" />
+<glyph unicode="º" horiz-adv-x="739" d="M670 1141q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
+<glyph unicode="»" horiz-adv-x="885" d="M803 518l-309 -393l-62 43l254 362l-254 363l62 43l309 -391v-27zM442 518l-309 -393l-61 43l254 362l-254 363l61 43l309 -391v-27z" />
+<glyph unicode="¼" horiz-adv-x="1516" d="M59 0zM333 1462h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145l-47 77zM1148 1462l-811 -1462h-94l811 1462h94zM1392 242h-129v-241h-90v241h-413v60l407 581h96v-563h129v-78zM1173 320v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5h309z" />
+<glyph unicode="½" horiz-adv-x="1516" d="M11 0zM285 1462h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145l-47 77zM1073 1462l-811 -1462h-94l811 1462h94zM1403 1h-576v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5 q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88z" />
+<glyph unicode="¾" horiz-adv-x="1516" d="M41 0zM616 1260q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5 q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163zM1300 1462l-811 -1462h-94l811 1462h94zM1495 242h-129v-241h-90v241h-413v60l407 581h96v-563h129v-78zM1276 320v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5h309z" />
+<glyph unicode="¿" horiz-adv-x="862" d="M569 711v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99t-104.5 269q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94 t15 145.5v15h82zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="À" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM720 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="Á" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Â" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Ã" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM784 1581q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59 q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="Ä" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="Å" horiz-adv-x="1229" d="M0 0zM911 516h-594l-204 -516h-113l588 1468h65l576 -1468h-115zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM836 1610q0 -97 -60 -155t-157 -58t-157 58t-60 155q0 94 60 152.5t157 58.5t157 -59t60 -152zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="Æ" horiz-adv-x="1653" d="M1528 0h-717v516h-475l-227 -516h-111l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94zM377 608h434v760h-100z" />
+<glyph unicode="Ç" horiz-adv-x="1272" d="M129 0zM831 1391q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80zM911 -291q0 -100 -67.5 -150.5t-188.5 -50.5 q-68 0 -94 11v88q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174z" />
+<glyph unicode="È" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM697 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="É" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM463 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Ê" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM315 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Ë" horiz-adv-x="1130" d="M207 0zM1006 0h-799v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="Ì" horiz-adv-x="516" d="M0 0zM207 0v1462h102v-1462h-102zM320 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="Í" horiz-adv-x="516" d="M191 0zM207 0v1462h102v-1462h-102zM191 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Î" horiz-adv-x="516" d="M0 0zM207 0v1462h102v-1462h-102zM-32 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Ï" horiz-adv-x="516" d="M5 0zM207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="Ð" horiz-adv-x="1466" d="M1317 745q0 -368 -193 -556.5t-567 -188.5h-350v678h-160v94h160v690h395q350 0 532.5 -183t182.5 -534zM1206 741q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588h242q655 0 655 651z" />
+<glyph unicode="Ñ" horiz-adv-x="1477" d="M207 0zM1270 0h-103l-866 1298h-8q12 -232 12 -350v-948h-98v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462zM897 1581q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59 q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="Ò" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM885 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="Ó" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Ô" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Õ" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM940 1581q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="Ö" horiz-adv-x="1565" d="M129 0zM1436 733q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="×" d="M584 780l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408l-407 407l57 58z" />
+<glyph unicode="Ø" horiz-adv-x="1565" d="M1436 733q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570zM1325 733q0 315 -139 486l-742 -1037q133 -106 338 -106 q264 0 403.5 170t139.5 487zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="Ù" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM833 1579h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="Ú" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM633 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Û" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM444 1595q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="Ü" horiz-adv-x="1473" d="M190 0zM1282 1462v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66 t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="Ý" horiz-adv-x="1081" d="M0 0zM543 662l428 800h110l-487 -897v-565h-105v557l-489 905h117zM434 1595q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="Þ" horiz-adv-x="1198" d="M1087 778q0 -212 -144 -325t-408 -113h-226v-340h-102v1462h102v-264h256q522 0 522 -420zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="ß" horiz-adv-x="1194" d="M961 1284q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5 q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5z" />
+<glyph unicode="à" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM638 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="á" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM422 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="â" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM251 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="ã" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM697 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5 h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="ä" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="å" horiz-adv-x="1085" d="M98 0zM842 0l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73zM442 70q174 0 274.5 99.5t100.5 276.5v107 l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5q0 -102 62.5 -158.5t176.5 -56.5zM759 1456q0 -97 -60 -155t-157 -58t-157 58t-60 155q0 94 60 152.5t157 58.5t157 -59t60 -152zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="æ" horiz-adv-x="1731" d="M1243 -20q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715 q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14zM434 70q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5q0 -102 61 -158.5t170 -56.5zM1217 1020q-284 0 -314 -402h604q0 188 -77.5 295t-212.5 107z" />
+<glyph unicode="ç" horiz-adv-x="973" d="M119 0zM616 -20q-233 0 -365 147t-132 410q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51zM723 -291q0 -100 -67.5 -150.5t-188.5 -50.5 q-68 0 -94 11v88q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174z" />
+<glyph unicode="è" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM685 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="é" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM452 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="ê" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM290 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="ë" horiz-adv-x="1124" d="M119 0zM621 -20q-237 0 -369.5 146t-132.5 409q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5zM592 1020q-157 0 -252 -103.5t-111 -298.5h672q0 189 -82 295.5 t-227 106.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ì" horiz-adv-x="463" d="M0 0zM281 0h-99v1087h99v-1087zM349 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="í" horiz-adv-x="463" d="M107 0zM281 0h-99v1087h99v-1087zM107 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="î" horiz-adv-x="463" d="M0 0zM281 0h-99v1087h99v-1087zM-58 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="ï" horiz-adv-x="463" d="M0 0zM281 0h-99v1087h99v-1087zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ð" horiz-adv-x="1174" d="M1055 559q0 -276 -124 -427.5t-349 -151.5q-214 0 -339.5 130t-125.5 361q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121 q154 -151 230.5 -353t76.5 -431zM950 557q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364z" />
+<glyph unicode="ñ" horiz-adv-x="1208" d="M182 0zM940 0v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98zM779 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5 t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="ò" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM718 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="ó" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM499 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="ô" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM309 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="õ" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM761 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode="ö" horiz-adv-x="1200" d="M119 0zM1081 545q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5 t-97.5 -349.5zM346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="÷" d="M111 682v82h948v-82h-948zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="ø" horiz-adv-x="1200" d="M1081 545q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM977 545q0 190 -72 309l-543 -702q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5z" />
+<glyph unicode="ù" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM687 1241h-69q-96 79 -188.5 171.5t-125.5 139.5v17h142q26 -48 98.5 -142t142.5 -170v-16z" />
+<glyph unicode="ú" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM495 1257q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="û" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM313 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70 v16z" />
+<glyph unicode="ü" horiz-adv-x="1208" d="M170 0zM268 1087v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397v710h98zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86 t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ý" horiz-adv-x="940" d="M0 0zM0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1257q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70v16z" />
+<glyph unicode="þ" horiz-adv-x="1219" d="M281 918q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99v2048h99v-391l-7 -247h7zM645 68q167 0 258.5 124t91.5 347q0 479 -348 479q-193 0 -279.5 -105t-86.5 -354v-18 q0 -255 85.5 -364t278.5 -109z" />
+<glyph unicode="ÿ" horiz-adv-x="940" d="M0 0zM0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ı" horiz-adv-x="463" d="M281 0h-99v1087h99v-1087z" />
+<glyph unicode="Œ" horiz-adv-x="1839" d="M1714 0h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94zM782 80q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5q0 -315 140.5 -484t401.5 -169z" />
+<glyph unicode="œ" horiz-adv-x="1942" d="M1438 -20q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197t-252 -69q-143 0 -252 69t-167 198t-58 298q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56 v-90q-92 -40 -170 -54.5t-172 -14.5zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1409 1020q-155 0 -242 -104t-102 -298h653q0 189 -82 295.5t-227 106.5z" />
+<glyph unicode="Ÿ" horiz-adv-x="1081" d="M0 0zM543 662l428 800h110l-487 -897v-565h-105v557l-489 905h117zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="ˆ" horiz-adv-x="1182" d="M299 1257q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70v16z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M805 1456q0 -97 -60 -155t-157 -58t-157 58t-60 155q0 94 60 152.5t157 58.5t157 -59t60 -152zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="˜" horiz-adv-x="1182" d="M780 1243q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
+<glyph unicode="‘" horiz-adv-x="297" d="M41 961l-12 20q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="’" horiz-adv-x="297" d="M256 1462l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117z" />
+<glyph unicode="‚" horiz-adv-x="451" d="M68 0zM295 238l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117z" />
+<glyph unicode="“" horiz-adv-x="614" d="M358 961l-12 20q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117zM41 961l-12 20q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="”" horiz-adv-x="614" d="M256 1462l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117zM573 1462l13 -20q-36 -128 -85 -261t-89 -220h-66q30 98 63 248.5t48 252.5h116z" />
+<glyph unicode="„" horiz-adv-x="768" d="M68 0zM295 238l12 -20q-75 -265 -174 -481h-65q29 96 61 241.5t49 259.5h117zM612 238l13 -20q-36 -128 -85 -261t-89 -220h-66q30 98 63 248.5t48 252.5h116z" />
+<glyph unicode="•" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
+<glyph unicode="…" horiz-adv-x="1466" d="M162 0zM162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="524" d="M82 543l309 393l62 -43l-254 -363l254 -362l-62 -43l-309 391v27z" />
+<glyph unicode="›" horiz-adv-x="524" d="M442 518l-309 -393l-61 43l254 362l-254 363l61 43l309 -391v-27z" />
+<glyph unicode="⁄" horiz-adv-x="246" d="M573 1462l-811 -1462h-94l811 1462h94z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="688" d="M657 827h-129v-241h-90v241h-413v60l407 581h96v-563h129v-78zM438 905v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5h309z" />
+<glyph unicode="€" d="M803 1397q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180v82h172q-4 38 -4 113l4 102h-172v82h184 q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72z" />
+<glyph unicode="™" horiz-adv-x="1485" d="M313 741h-86v643h-217v78h522v-78h-219v-643zM913 741l-221 609h-6l4 -201v-408h-82v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74z" />
+<glyph unicode="−" d="M111 682v82h948v-82h-948z" />
+<glyph unicode="" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph horiz-adv-x="1219" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.ttf
new file mode 100755
index 0000000..63af664
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.woff
new file mode 100755
index 0000000..e786074
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Light-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.eot
new file mode 100755
index 0000000..6bbc3cf
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.svg
new file mode 100755
index 0000000..25a3952
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.svg
@@ -0,0 +1,1831 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sansregular" horiz-adv-x="1171" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1212" d="M29 0zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1036 0h-166v1096h166v-1096zM856 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5 q-42 0 -70 27.5t-28 83.5z" />
+<glyph unicode="fl" horiz-adv-x="1212" d="M29 0zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1036 0h-166v1556h166v-1556z" />
+<glyph unicode="ffi" horiz-adv-x="1909" d="M29 0zM1358 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31 q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1731 0h-166v1096h166v-1096zM1551 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+<glyph unicode="ffl" horiz-adv-x="1909" d="M29 0zM1358 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31 q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1731 0h-166v1556h166v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="547" d="M326 403h-105l-51 1059h207zM152 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z" />
+<glyph unicode=""" horiz-adv-x="821" d="M319 1462l-40 -528h-105l-41 528h186zM688 1462l-41 -528h-104l-41 528h186z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M981 899l-66 -340h283v-129h-307l-84 -430h-137l84 430h-303l-82 -430h-136l80 430h-262v129h287l68 340h-277v127h299l82 436h139l-82 -436h305l84 436h134l-84 -436h264v-127h-289zM475 559h303l66 340h-303z" />
+<glyph unicode="$" d="M1036 449q0 -136 -102 -224.5t-285 -111.5v-232h-129v223q-112 0 -217 17.5t-172 48.5v156q83 -37 191.5 -60.5t197.5 -23.5v440q-205 65 -287.5 151t-82.5 222q0 131 101.5 215t268.5 102v182h129v-180q184 -5 355 -74l-52 -131q-149 59 -303 70v-434q157 -50 235 -97.5 t115 -109t37 -149.5zM866 436q0 72 -44.5 116.5t-172.5 88.5v-389q217 30 217 184zM319 1057q0 -76 45 -122t156 -87v387q-99 -16 -150 -62.5t-51 -115.5z" />
+<glyph unicode="%" horiz-adv-x="1686" d="M242 1026q0 -170 37 -255t120 -85q164 0 164 340q0 338 -164 338q-83 0 -120 -84t-37 -254zM700 1026q0 -228 -76.5 -344.5t-224.5 -116.5q-140 0 -217.5 119t-77.5 342q0 227 74.5 342t220.5 115q145 0 223 -119t78 -338zM1122 440q0 -171 37 -255.5t121 -84.5t124 83.5 t40 256.5q0 171 -40 253.5t-124 82.5t-121 -82.5t-37 -253.5zM1581 440q0 -227 -76.5 -343.5t-224.5 -116.5q-142 0 -218.5 119t-76.5 341q0 227 74.5 342t220.5 115q142 0 221.5 -117.5t79.5 -339.5zM1323 1462l-811 -1462h-147l811 1462h147z" />
+<glyph unicode="&" horiz-adv-x="1495" d="M414 1171q0 -69 36 -131.5t123 -150.5q129 75 179.5 138.5t50.5 146.5q0 77 -51.5 125.5t-137.5 48.5q-89 0 -144.5 -48t-55.5 -129zM569 129q241 0 400 154l-437 424q-111 -68 -157 -112.5t-68 -95.5t-22 -116q0 -117 77.5 -185.5t206.5 -68.5zM113 379q0 130 69.5 230 t249.5 202q-85 95 -115.5 144t-48.5 102t-18 110q0 150 98 234t273 84q162 0 255 -83.5t93 -232.5q0 -107 -68 -197.5t-225 -183.5l407 -391q56 62 89.5 145.5t56.5 182.5h168q-68 -286 -205 -434l299 -291h-229l-185 178q-118 -106 -240 -152t-272 -46q-215 0 -333.5 106 t-118.5 293z" />
+<glyph unicode="'" horiz-adv-x="453" d="M319 1462l-40 -528h-105l-41 528h186z" />
+<glyph unicode="(" horiz-adv-x="606" d="M82 561q0 265 77.5 496t223.5 405h162q-144 -193 -216.5 -424t-72.5 -475q0 -240 74 -469t213 -418h-160q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="606" d="M524 561q0 -263 -77.5 -490t-223.5 -395h-160q139 188 213 417.5t74 469.5q0 244 -72.5 475t-216.5 424h162q147 -175 224 -406.5t77 -494.5z" />
+<glyph unicode="*" horiz-adv-x="1130" d="M657 1556l-43 -395l398 111l26 -182l-381 -31l248 -326l-172 -94l-176 362l-160 -362l-176 94l242 326l-377 31l29 182l391 -111l-43 395h194z" />
+<glyph unicode="+" d="M653 791h412v-138h-412v-426h-139v426h-410v138h410v428h139v-428z" />
+<glyph unicode="," horiz-adv-x="502" d="M350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182z" />
+<glyph unicode="-" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="." horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+<glyph unicode="/" horiz-adv-x="752" d="M731 1462l-545 -1462h-166l545 1462h166z" />
+<glyph unicode="0" d="M1069 733q0 -379 -119.5 -566t-365.5 -187q-236 0 -359 191.5t-123 561.5q0 382 119 567t363 185q238 0 361.5 -193t123.5 -559zM270 733q0 -319 75 -464.5t239 -145.5q166 0 240.5 147.5t74.5 462.5t-74.5 461.5t-240.5 146.5q-164 0 -239 -144.5t-75 -463.5z" />
+<glyph unicode="1" d="M715 0h-162v1042q0 130 8 246q-21 -21 -47 -44t-238 -195l-88 114l387 299h140v-1462z" />
+<glyph unicode="2" d="M1061 0h-961v143l385 387q176 178 232 254t84 148t28 155q0 117 -71 185.5t-197 68.5q-91 0 -172.5 -30t-181.5 -109l-88 113q202 168 440 168q206 0 323 -105.5t117 -283.5q0 -139 -78 -275t-292 -344l-320 -313v-8h752v-154z" />
+<glyph unicode="3" d="M1006 1118q0 -140 -78.5 -229t-222.5 -119v-8q176 -22 261 -112t85 -236q0 -209 -145 -321.5t-412 -112.5q-116 0 -212.5 17.5t-187.5 61.5v158q95 -47 202.5 -71.5t203.5 -24.5q379 0 379 297q0 266 -418 266h-144v143h146q171 0 271 75.5t100 209.5q0 107 -73.5 168 t-199.5 61q-96 0 -181 -26t-194 -96l-84 112q90 71 207.5 111.5t247.5 40.5q213 0 331 -97.5t118 -267.5z" />
+<glyph unicode="4" d="M1130 336h-217v-336h-159v336h-711v145l694 989h176v-983h217v-151zM754 487v486q0 143 10 323h-8q-48 -96 -90 -159l-457 -650h545z" />
+<glyph unicode="5" d="M557 893q231 0 363.5 -114.5t132.5 -313.5q0 -227 -144.5 -356t-398.5 -129q-247 0 -377 79v160q70 -45 174 -70.5t205 -25.5q176 0 273.5 83t97.5 240q0 306 -375 306q-95 0 -254 -29l-86 55l55 684h727v-153h-585l-37 -439q115 23 229 23z" />
+<glyph unicode="6" d="M117 625q0 431 167.5 644.5t495.5 213.5q113 0 178 -19v-143q-77 25 -176 25q-235 0 -359 -146.5t-136 -460.5h12q110 172 348 172q197 0 310.5 -119t113.5 -323q0 -228 -124.5 -358.5t-336.5 -130.5q-227 0 -360 170.5t-133 474.5zM608 121q142 0 220.5 89.5t78.5 258.5 q0 145 -73 228t-218 83q-90 0 -165 -37t-119.5 -102t-44.5 -135q0 -103 40 -192t113.5 -141t167.5 -52z" />
+<glyph unicode="7" d="M285 0l606 1309h-797v153h973v-133l-598 -1329h-184z" />
+<glyph unicode="8" d="M584 1483q200 0 317 -93t117 -257q0 -108 -67 -197t-214 -162q178 -85 253 -178.5t75 -216.5q0 -182 -127 -290.5t-348 -108.5q-234 0 -360 102.5t-126 290.5q0 251 306 391q-138 78 -198 168.5t-60 202.5q0 159 117.5 253.5t314.5 94.5zM268 369q0 -120 83.5 -187 t234.5 -67q149 0 232 70t83 192q0 97 -78 172.5t-272 146.5q-149 -64 -216 -141.5t-67 -185.5zM582 1348q-125 0 -196 -60t-71 -160q0 -92 59 -158t218 -132q143 60 202.5 129t59.5 161q0 101 -72.5 160.5t-199.5 59.5z" />
+<glyph unicode="9" d="M1061 838q0 -858 -664 -858q-116 0 -184 20v143q80 -26 182 -26q240 0 362.5 148.5t133.5 455.5h-12q-55 -83 -146 -126.5t-205 -43.5q-194 0 -308 116t-114 324q0 228 127.5 360t335.5 132q149 0 260.5 -76.5t171.5 -223t60 -345.5zM569 1341q-143 0 -221 -92t-78 -256 q0 -144 72 -226.5t219 -82.5q91 0 167.5 37t120.5 101t44 134q0 105 -41 194t-114.5 140t-168.5 51z" />
+<glyph unicode=":" horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM152 989q0 135 118 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+<glyph unicode=";" horiz-adv-x="545" d="M350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182zM147 989q0 135 119 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-58 0 -88.5 35t-30.5 100z" />
+<glyph unicode="<" d="M1065 242l-961 422v98l961 479v-149l-782 -371l782 -328v-151z" />
+<glyph unicode="=" d="M119 858v137h930v-137h-930zM119 449v137h930v-137h-930z" />
+<glyph unicode=">" d="M104 393l783 326l-783 373v149l961 -479v-98l-961 -422v151z" />
+<glyph unicode="?" horiz-adv-x="879" d="M289 403v54q0 117 36 192.5t134 159.5q136 115 171.5 173t35.5 140q0 102 -65.5 157.5t-188.5 55.5q-79 0 -154 -18.5t-172 -67.5l-59 135q189 99 395 99q191 0 297 -94t106 -265q0 -73 -19.5 -128.5t-57.5 -105t-164 -159.5q-101 -86 -133.5 -143t-32.5 -152v-33h-129z M240 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z" />
+<glyph unicode="@" horiz-adv-x="1841" d="M1720 729q0 -142 -44 -260t-124 -183t-184 -65q-86 0 -145 52t-70 133h-8q-40 -87 -114.5 -136t-176.5 -49q-150 0 -234.5 102.5t-84.5 278.5q0 204 118 331.5t310 127.5q68 0 154 -12.5t155 -34.5l-25 -470v-22q0 -178 133 -178q91 0 148 107.5t57 279.5q0 181 -74 317 t-210.5 209.5t-313.5 73.5q-223 0 -388 -92.5t-252 -264t-87 -396.5q0 -305 161 -469t464 -164q210 0 436 86v-133q-192 -84 -436 -84q-363 0 -563.5 199.5t-200.5 557.5q0 260 107 463t305 314.5t454 111.5q215 0 382.5 -90.5t259 -257t91.5 -383.5zM686 598 q0 -254 195 -254q207 0 225 313l14 261q-72 20 -157 20q-130 0 -203.5 -90t-73.5 -250z" />
+<glyph unicode="A" horiz-adv-x="1296" d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473z" />
+<glyph unicode="B" horiz-adv-x="1327" d="M201 1462h413q291 0 421 -87t130 -275q0 -130 -72.5 -214.5t-211.5 -109.5v-10q333 -57 333 -350q0 -196 -132.5 -306t-370.5 -110h-510v1462zM371 836h280q180 0 259 56.5t79 190.5q0 123 -88 177.5t-280 54.5h-250v-479zM371 692v-547h305q177 0 266.5 68.5t89.5 214.5 q0 136 -91.5 200t-278.5 64h-291z" />
+<glyph unicode="C" horiz-adv-x="1292" d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78z" />
+<glyph unicode="D" horiz-adv-x="1493" d="M1368 745q0 -362 -196.5 -553.5t-565.5 -191.5h-405v1462h448q341 0 530 -189t189 -528zM1188 739q0 286 -143.5 431t-426.5 145h-247v-1168h207q304 0 457 149.5t153 442.5z" />
+<glyph unicode="E" horiz-adv-x="1139" d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152z" />
+<glyph unicode="F" horiz-adv-x="1057" d="M371 0h-170v1462h815v-151h-645v-535h606v-151h-606v-625z" />
+<glyph unicode="G" horiz-adv-x="1491" d="M844 766h497v-711q-116 -37 -236 -56t-278 -19q-332 0 -517 197.5t-185 553.5q0 228 91.5 399.5t263.5 262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 -441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152z" />
+<glyph unicode="H" horiz-adv-x="1511" d="M1311 0h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1462z" />
+<glyph unicode="I" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170z" />
+<glyph unicode="J" horiz-adv-x="547" d="M-12 -385q-94 0 -148 27v145q71 -20 148 -20q99 0 150.5 60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5z" />
+<glyph unicode="K" horiz-adv-x="1257" d="M1257 0h-200l-533 709l-153 -136v-573h-170v1462h170v-725l663 725h201l-588 -635z" />
+<glyph unicode="L" horiz-adv-x="1063" d="M201 0v1462h170v-1308h645v-154h-815z" />
+<glyph unicode="M" horiz-adv-x="1849" d="M848 0l-496 1296h-8q14 -154 14 -366v-930h-157v1462h256l463 -1206h8l467 1206h254v-1462h-170v942q0 162 14 352h-8l-500 -1294h-137z" />
+<glyph unicode="N" horiz-adv-x="1544" d="M1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462z" />
+<glyph unicode="O" horiz-adv-x="1595" d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5z" />
+<glyph unicode="P" horiz-adv-x="1233" d="M1128 1036q0 -222 -151.5 -341.5t-433.5 -119.5h-172v-575h-170v1462h379q548 0 548 -426zM371 721h153q226 0 327 73t101 234q0 145 -95 216t-296 71h-190v-594z" />
+<glyph unicode="Q" horiz-adv-x="1595" d="M1470 733q0 -281 -113 -467t-319 -252l348 -362h-247l-285 330l-55 -2q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5 q-243 0 -369.5 -153.5t-126.5 -446.5z" />
+<glyph unicode="R" horiz-adv-x="1266" d="M371 608v-608h-170v1462h401q269 0 397.5 -103t128.5 -310q0 -290 -294 -392l397 -657h-201l-354 608h-305zM371 754h233q180 0 264 71.5t84 214.5q0 145 -85.5 209t-274.5 64h-221v-559z" />
+<glyph unicode="S" horiz-adv-x="1124" d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58 t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244z" />
+<glyph unicode="T" horiz-adv-x="1133" d="M651 0h-170v1311h-463v151h1096v-151h-463v-1311z" />
+<glyph unicode="U" horiz-adv-x="1491" d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170z" />
+<glyph unicode="V" horiz-adv-x="1219" d="M1036 1462h183l-527 -1462h-168l-524 1462h180l336 -946q58 -163 92 -317q36 162 94 323z" />
+<glyph unicode="W" horiz-adv-x="1896" d="M1477 0h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 -973h-168l-389 1462h180l231 -903q48 -190 70 -344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 901h180z" />
+<glyph unicode="X" horiz-adv-x="1182" d="M1174 0h-193l-393 643l-400 -643h-180l486 764l-453 698h188l363 -579l366 579h181l-453 -692z" />
+<glyph unicode="Y" horiz-adv-x="1147" d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186z" />
+<glyph unicode="Z" horiz-adv-x="1169" d="M1087 0h-1005v133l776 1176h-752v153h959v-133l-776 -1175h798v-154z" />
+<glyph unicode="[" horiz-adv-x="674" d="M623 -324h-457v1786h457v-141h-289v-1503h289v-142z" />
+<glyph unicode="\" horiz-adv-x="752" d="M186 1462l547 -1462h-166l-544 1462h163z" />
+<glyph unicode="]" horiz-adv-x="674" d="M51 -182h289v1503h-289v141h457v-1786h-457v142z" />
+<glyph unicode="^" horiz-adv-x="1110" d="M49 551l434 922h99l477 -922h-152l-372 745l-334 -745h-152z" />
+<glyph unicode="_" horiz-adv-x="918" d="M922 -315h-926v131h926v-131z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M786 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="a" horiz-adv-x="1139" d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238 v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47z" />
+<glyph unicode="b" horiz-adv-x="1255" d="M686 1114q216 0 335.5 -147.5t119.5 -417.5t-120.5 -419.5t-334.5 -149.5q-107 0 -195.5 39.5t-148.5 121.5h-12l-35 -141h-119v1556h166v-378q0 -127 -8 -228h8q116 164 344 164zM662 975q-170 0 -245 -97.5t-75 -328.5t77 -330.5t247 -99.5q153 0 228 111.5t75 320.5 q0 214 -75 319t-232 105z" />
+<glyph unicode="c" horiz-adv-x="975" d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57z" />
+<glyph unicode="d" horiz-adv-x="1255" d="M922 147h-9q-115 -167 -344 -167q-215 0 -334.5 147t-119.5 418t120 421t334 150q223 0 342 -162h13l-7 79l-4 77v446h166v-1556h-135zM590 119q170 0 246.5 92.5t76.5 298.5v35q0 233 -77.5 332.5t-247.5 99.5q-146 0 -223.5 -113.5t-77.5 -320.5q0 -210 77 -317 t226 -107z" />
+<glyph unicode="e" horiz-adv-x="1149" d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z " />
+<glyph unicode="f" horiz-adv-x="694" d="M670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129z" />
+<glyph unicode="g" horiz-adv-x="1122" d="M1073 1096v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 -110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141q0 -45 37 -66.5t127 -21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 80t-116.5 226q0 100 64 173t180 99 q-42 19 -70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 277.5t306 97.5q86 0 155 -20h379zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 -55 123.5t-207 34.5h-199q-113 0 -176 -54t-63 -155zM289 745q0 -115 65 -174 t181 -59q243 0 243 236q0 247 -246 247q-117 0 -180 -63t-63 -187z" />
+<glyph unicode="h" horiz-adv-x="1257" d="M926 0v709q0 134 -61 200t-191 66q-173 0 -252.5 -94t-79.5 -308v-573h-166v1556h166v-471q0 -85 -8 -141h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 -303.5v-715h-166z" />
+<glyph unicode="i" horiz-adv-x="518" d="M342 0h-166v1096h166v-1096zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+<glyph unicode="j" horiz-adv-x="518" d="M43 -492q-95 0 -154 25v135q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+<glyph unicode="k" horiz-adv-x="1075" d="M340 561q43 61 131 160l354 375h197l-444 -467l475 -629h-201l-387 518l-125 -108v-410h-164v1556h164v-825q0 -55 -8 -170h8z" />
+<glyph unicode="l" horiz-adv-x="518" d="M342 0h-166v1556h166v-1556z" />
+<glyph unicode="m" horiz-adv-x="1905" d="M1573 0v713q0 131 -56 196.5t-174 65.5q-155 0 -229 -89t-74 -274v-612h-166v713q0 131 -56 196.5t-175 65.5q-156 0 -228.5 -93.5t-72.5 -306.5v-575h-166v1096h135l27 -150h8q47 80 132.5 125t191.5 45q257 0 336 -186h8q49 86 142 136t212 50q186 0 278.5 -95.5 t92.5 -305.5v-715h-166z" />
+<glyph unicode="n" horiz-adv-x="1257" d="M926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166z" />
+<glyph unicode="o" horiz-adv-x="1237" d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z" />
+<glyph unicode="p" horiz-adv-x="1255" d="M686 -20q-107 0 -195.5 39.5t-148.5 121.5h-12q12 -96 12 -182v-451h-166v1588h135l23 -150h8q64 90 149 130t195 40q218 0 336.5 -149t118.5 -418q0 -270 -120.5 -419.5t-334.5 -149.5zM662 975q-168 0 -243 -93t-77 -296v-37q0 -231 77 -330.5t247 -99.5 q142 0 222.5 115t80.5 317q0 205 -80.5 314.5t-226.5 109.5z" />
+<glyph unicode="q" horiz-adv-x="1255" d="M590 119q166 0 242 89t81 300v37q0 230 -78 331t-247 101q-146 0 -223.5 -113.5t-77.5 -320.5t76.5 -315.5t226.5 -108.5zM565 -20q-212 0 -331 149t-119 416q0 269 120 420t334 151q225 0 346 -170h9l24 150h131v-1588h-166v469q0 100 11 170h-13q-115 -167 -346 -167z " />
+<glyph unicode="r" horiz-adv-x="836" d="M676 1116q73 0 131 -12l-23 -154q-68 15 -120 15q-133 0 -227.5 -108t-94.5 -269v-588h-166v1096h137l19 -203h8q61 107 147 165t189 58z" />
+<glyph unicode="s" horiz-adv-x="977" d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68 q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181z" />
+<glyph unicode="t" horiz-adv-x="723" d="M530 117q44 0 85 6.5t65 13.5v-127q-27 -13 -79.5 -21.5t-94.5 -8.5q-318 0 -318 335v652h-157v80l157 69l70 234h96v-254h318v-129h-318v-645q0 -99 47 -152t129 -53z" />
+<glyph unicode="u" horiz-adv-x="1257" d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168z" />
+<glyph unicode="v" horiz-adv-x="1026" d="M416 0l-416 1096h178l236 -650q80 -228 94 -296h8q11 53 69.5 219.5t262.5 726.5h178l-416 -1096h-194z" />
+<glyph unicode="w" horiz-adv-x="1593" d="M1071 0l-201 643q-19 59 -71 268h-8q-40 -175 -70 -270l-207 -641h-192l-299 1096h174q106 -413 161.5 -629t63.5 -291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 21.5 111t208.5 807h172l-303 -1096h-197z" />
+<glyph unicode="x" horiz-adv-x="1073" d="M440 561l-381 535h189l289 -420l288 420h187l-381 -535l401 -561h-188l-307 444l-310 -444h-188z" />
+<glyph unicode="y" horiz-adv-x="1032" d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156z" />
+<glyph unicode="z" horiz-adv-x="958" d="M877 0h-795v113l598 854h-561v129h743v-129l-590 -838h605v-129z" />
+<glyph unicode="{" horiz-adv-x="776" d="M475 12q0 -102 58.5 -148t171.5 -48v-140q-190 2 -294 87t-104 239v303q0 104 -63 148.5t-183 44.5v141q130 2 188 48t58 142v306q0 155 108 241t290 86v-139q-230 -6 -230 -199v-295q0 -215 -223 -254v-12q223 -39 223 -254v-297z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M494 1556h141v-2052h-141v2052z" />
+<glyph unicode="}" horiz-adv-x="776" d="M522 575q-223 39 -223 254v295q0 193 -227 199v139q184 0 289.5 -87t105.5 -240v-306q0 -97 59 -142.5t189 -47.5v-141q-122 0 -185 -44.5t-63 -148.5v-303q0 -153 -102.5 -238.5t-292.5 -87.5v140q111 2 169 48t58 148v297q0 114 55 174t168 80v12z" />
+<glyph unicode="~" d="M338 713q-53 0 -116.5 -33.5t-117.5 -87.5v151q100 109 244 109q68 0 124.5 -14t145.5 -52q66 -28 115 -41.5t96 -13.5q54 0 118 32t118 89v-150q-102 -110 -244 -110q-72 0 -135 16.5t-135 48.5q-75 32 -120 44t-93 12z" />
+<glyph unicode="¡" horiz-adv-x="547" d="M219 684h105l51 -1057h-207zM393 983q0 -135 -121 -135q-60 0 -90 35.5t-30 99.5q0 63 31.5 99t88.5 36q51 0 86 -32t35 -103z" />
+<glyph unicode="¢" d="M971 240q-105 -54 -252 -60v-200h-133v206q-203 32 -299.5 168.5t-96.5 386.5q0 508 396 570v172h135v-164q75 -3 146 -19.5t120 -39.5l-49 -140q-133 51 -242 51q-172 0 -253 -105.5t-81 -322.5q0 -212 79.5 -313.5t246.5 -101.5q141 0 283 59v-147z" />
+<glyph unicode="£" d="M682 1481q190 0 360 -84l-61 -133q-154 77 -297 77q-123 0 -185.5 -62t-62.5 -202v-295h422v-127h-422v-221q0 -100 -32.5 -168t-106.5 -112h795v-154h-1029v141q205 47 205 291v223h-198v127h198v316q0 178 112 280.5t302 102.5z" />
+<glyph unicode="¤" d="M184 723q0 122 74 229l-135 140l94 92l135 -133q104 73 234 73q127 0 229 -73l137 133l95 -92l-134 -138q74 -113 74 -231q0 -131 -74 -234l131 -135l-92 -92l-137 133q-102 -71 -229 -71q-134 0 -234 73l-135 -133l-92 92l133 136q-74 107 -74 231zM313 723 q0 -112 78.5 -192t194.5 -80t195 79.5t79 192.5q0 114 -80 195t-194 81q-116 0 -194.5 -82t-78.5 -194z" />
+<glyph unicode="¥" d="M584 735l379 727h174l-416 -770h262v-127h-317v-170h317v-127h-317v-268h-164v268h-316v127h316v170h-316v127h256l-411 770h178z" />
+<glyph unicode="¦" horiz-adv-x="1128" d="M494 1556h141v-776h-141v776zM494 281h141v-777h-141v777z" />
+<glyph unicode="§" horiz-adv-x="1057" d="M139 809q0 86 43 154.5t121 105.5q-74 40 -116 95.5t-42 140.5q0 121 103.5 190.5t300.5 69.5q94 0 173.5 -14.5t176.5 -53.5l-53 -131q-98 39 -165.5 52.5t-143.5 13.5q-116 0 -174 -29.5t-58 -93.5q0 -60 61.5 -102t215.5 -97q186 -68 261 -143.5t75 -182.5 q0 -90 -41 -160.5t-115 -111.5q153 -81 153 -227q0 -140 -117 -216.5t-329 -76.5q-218 0 -346 65v148q78 -37 175 -59.5t179 -22.5q134 0 204.5 38t70.5 109q0 46 -24 75t-78 58t-169 72q-142 52 -209 97t-100 102t-33 135zM285 829q0 -77 66 -129.5t233 -113.5l49 -19 q137 80 137 191q0 83 -73.5 139t-258.5 113q-68 -19 -110.5 -69t-42.5 -112z" />
+<glyph unicode="¨" horiz-adv-x="1182" d="M309 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM690 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M893 1059q-125 0 -192.5 -87t-67.5 -241q0 -168 63.5 -249t194.5 -81q86 0 211 45v-124q-48 -20 -98.5 -34t-120.5 -14q-194 0 -298 120.5t-104 336.5q0 209 110.5 332t301.5 123q128 0 246 -60l-58 -118q-108 51 -188 51zM100 731q0 200 100 375t275 276t377 101 q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87 t-236.5 -235.5t-87.5 -324.5z" />
+<glyph unicode="ª" horiz-adv-x="725" d="M532 801l-24 84q-92 -97 -232 -97q-95 0 -150.5 49.5t-55.5 151.5t77 154.5t242 58.5l117 4v39q0 133 -148 133q-100 0 -204 -51l-43 96q114 56 247 56q130 0 198.5 -52.5t68.5 -173.5v-452h-93zM193 989q0 -100 112 -100q201 0 201 180v49l-98 -4q-112 -4 -163.5 -32.5 t-51.5 -92.5z" />
+<glyph unicode="«" horiz-adv-x="1018" d="M82 551l342 407l119 -69l-289 -350l289 -351l-119 -71l-342 407v27zM477 551l344 407l117 -69l-287 -350l287 -351l-117 -71l-344 407v27z" />
+<glyph unicode="¬" d="M1065 791v-527h-137v389h-824v138h961z" />
+<glyph unicode="­" horiz-adv-x="659" d="M84 473zM84 473v152h491v-152h-491z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M723 762h108q80 0 128.5 41.5t48.5 105.5q0 75 -43 107.5t-136 32.5h-106v-287zM1157 913q0 -80 -42.5 -141.5t-119.5 -91.5l238 -395h-168l-207 354h-135v-354h-148v891h261q166 0 243.5 -65t77.5 -198zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275 t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5z " />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v127h1036v-127z" />
+<glyph unicode="°" horiz-adv-x="877" d="M127 1171q0 130 90.5 221t220.5 91t221 -90.5t91 -221.5q0 -84 -41 -155.5t-114 -113.5t-157 -42q-130 0 -220.5 90t-90.5 221zM242 1171q0 -82 58.5 -139t139.5 -57q80 0 137.5 56.5t57.5 139.5q0 84 -56.5 140.5t-138.5 56.5q-83 0 -140.5 -57t-57.5 -140z" />
+<glyph unicode="±" d="M104 1zM653 791h412v-138h-412v-426h-139v426h-410v138h410v428h139v-428zM104 1v138h961v-138h-961z" />
+<glyph unicode="²" horiz-adv-x="711" d="M653 586h-604v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88q131 111 283 111q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119z" />
+<glyph unicode="³" horiz-adv-x="711" d="M627 1255q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90 q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5z" />
+<glyph unicode="´" horiz-adv-x="1182" d="M393 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="µ" horiz-adv-x="1268" d="M342 381q0 -262 254 -262q171 0 250.5 94.5t79.5 306.5v576h166v-1096h-136l-26 147h-10q-111 -167 -340 -167q-150 0 -238 92h-10q10 -84 10 -244v-320h-166v1588h166v-715z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1120 -260h-114v1712h-213v-1712h-115v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h557v-1816z" />
+<glyph unicode="·" horiz-adv-x="545" d="M152 723q0 66 31 100.5t87 34.5q58 0 90.5 -34.5t32.5 -100.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+<glyph unicode="¸" horiz-adv-x="465" d="M436 -289q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+<glyph unicode="¹" horiz-adv-x="711" d="M338 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96z" />
+<glyph unicode="º" horiz-adv-x="768" d="M702 1135q0 -164 -85.5 -255.5t-235.5 -91.5q-146 0 -230.5 93t-84.5 254q0 163 84 253.5t235 90.5q152 0 234.5 -91t82.5 -253zM188 1135q0 -122 45.5 -183t149.5 -61q105 0 151 61t46 183q0 123 -46 182t-151 59q-103 0 -149 -59t-46 -182z" />
+<glyph unicode="»" horiz-adv-x="1018" d="M936 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27zM541 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27z" />
+<glyph unicode="¼" horiz-adv-x="1597" d="M75 0zM1298 1462l-903 -1462h-143l903 1462h143zM337 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96zM1489 203h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM1219 320v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45 t-26 -39.5l-168 -246h262z" />
+<glyph unicode="½" horiz-adv-x="1597" d="M46 0zM1230 1462l-903 -1462h-143l903 1462h143zM308 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96zM1499 1h-604v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88 q131 111 283 111q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119z" />
+<glyph unicode="¾" horiz-adv-x="1597" d="M26 0zM620 1255q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90 q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5zM1390 1462l-903 -1462h-143l903 1462h143zM1569 203h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM1299 320v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45t-26 -39.5l-168 -246h262z" />
+<glyph unicode="¿" horiz-adv-x="879" d="M590 684v-51q0 -122 -37.5 -196t-134.5 -158q-121 -106 -151.5 -143.5t-43 -76t-12.5 -94.5q0 -100 66 -156.5t188 -56.5q80 0 155 19t173 67l59 -135q-197 -96 -395 -96q-190 0 -298 93t-108 263q0 70 17.5 122.5t49.5 97t76.5 85.5t98.5 88q101 88 133.5 146t32.5 151 v31h131zM639 983q0 -135 -121 -135q-59 0 -90 34.5t-31 100.5q0 64 33 99.5t88 35.5q51 0 86 -32t35 -103z" />
+<glyph unicode="À" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM724 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="Á" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM526 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Â" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM303 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186 h-115v23z" />
+<glyph unicode="Ã" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM792 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5 q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="Ä" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM364 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5z M745 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="Å" horiz-adv-x="1296" d="M0 0zM1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM870 1587q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5z M762 1585q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+<glyph unicode="Æ" horiz-adv-x="1788" d="M1665 0h-750v465h-514l-227 -465h-176l698 1462h969v-151h-580v-471h541v-150h-541v-538h580v-152zM469 618h446v693h-118z" />
+<glyph unicode="Ç" horiz-adv-x="1292" d="M125 0zM827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78zM950 -289q0 -97 -76.5 -150 t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+<glyph unicode="È" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM713 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="É" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM456 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Ê" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM263 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="Ë" horiz-adv-x="1139" d="M201 0zM1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM327 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM708 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="Ì" horiz-adv-x="571" d="M5 0zM201 0v1462h170v-1462h-170zM398 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="Í" horiz-adv-x="571" d="M179 0zM201 0v1462h170v-1462h-170zM179 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Î" horiz-adv-x="571" d="M0 0zM201 0v1462h170v-1462h-170zM-57 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="Ï" horiz-adv-x="571" d="M5 0zM201 0v1462h170v-1462h-170zM5 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM386 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="Ð" horiz-adv-x="1479" d="M1352 745q0 -362 -196.5 -553.5t-565.5 -191.5h-389v649h-154v150h154v663h434q337 0 527 -187.5t190 -529.5zM1171 739q0 576 -569 576h-231v-516h379v-150h-379v-502h190q610 0 610 592z" />
+<glyph unicode="Ñ" horiz-adv-x="1544" d="M201 0zM1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462zM935 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41 t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="Ò" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM907 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM659 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Ô" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM448 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="Õ" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM942 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="Ö" horiz-adv-x="1595" d="M125 0zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM522 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM903 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="×" d="M940 1176l96 -99l-352 -354l350 -352l-96 -99l-354 351l-348 -351l-101 99l350 352l-352 352l100 101l353 -355z" />
+<glyph unicode="Ø" horiz-adv-x="1595" d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-235 0 -383 100l-101 -141l-120 79l108 154q-178 198 -178 563q0 357 176 553.5t500 196.5q209 0 366 -94l97 135l120 -80l-106 -148q192 -202 192 -565zM1290 733q0 272 -110 426l-672 -948q115 -82 291 -82q243 0 367 153 t124 451zM305 733q0 -262 101 -416l669 943q-106 73 -274 73q-243 0 -369.5 -153.5t-126.5 -446.5z" />
+<glyph unicode="Ù" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM856 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM600 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Û" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM393 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186 q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="Ü" horiz-adv-x="1491" d="M186 0zM1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM461 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5 t-26.5 74.5zM842 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="Ý" horiz-adv-x="1147" d="M0 0zM573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM442 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="Þ" horiz-adv-x="1251" d="M1145 784q0 -227 -151.5 -346t-438.5 -119h-184v-319h-170v1462h170v-256h215q281 0 420 -103.5t139 -318.5zM371 465h168q226 0 327 71.5t101 235.5q0 149 -95 218t-297 69h-204v-594z" />
+<glyph unicode="ß" horiz-adv-x="1274" d="M1049 1266q0 -135 -143 -250q-88 -70 -116 -103.5t-28 -66.5q0 -32 13.5 -53t49 -49.5t113.5 -79.5q140 -95 191 -173.5t51 -179.5q0 -160 -97 -245.5t-276 -85.5q-188 0 -295 69v154q63 -39 141 -62.5t150 -23.5q215 0 215 182q0 75 -41.5 128.5t-151.5 123.5 q-127 82 -175 143.5t-48 145.5q0 63 34.5 116t105.5 106q75 57 107 102t32 98q0 80 -68 122.5t-195 42.5q-276 0 -276 -223v-1204h-166v1202q0 178 110 271.5t332 93.5q206 0 318.5 -78.5t112.5 -222.5z" />
+<glyph unicode="à" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM672 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="á" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM436 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="â" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM228 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="ã" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM721 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99 q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="ä" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM279 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM660 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75 q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="å" horiz-adv-x="1139" d="M94 0zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85 t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM804 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5zM696 1456q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5 t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+<glyph unicode="æ" horiz-adv-x="1757" d="M94 303q0 161 124 250.5t378 97.5l184 6v68q0 129 -58 190.5t-177 61.5q-144 0 -307 -84l-52 127q74 41 173.5 67.5t197.5 26.5q130 0 212.5 -43.5t123.5 -138.5q53 88 138.5 136t195.5 48q192 0 308 -133.5t116 -355.5v-107h-701q8 -395 322 -395q91 0 169.5 17.5 t162.5 56.5v-148q-86 -38 -160.5 -54.5t-175.5 -16.5q-289 0 -414 233q-81 -127 -179.5 -180t-232.5 -53q-163 0 -255.5 85t-92.5 238zM268 301q0 -95 53.5 -139.5t141.5 -44.5q145 0 229 84.5t84 238.5v99l-158 -7q-186 -8 -268 -62.5t-82 -168.5zM1225 977 q-121 0 -190.5 -83t-80.5 -241h519q0 156 -64 240t-184 84z" />
+<glyph unicode="ç" horiz-adv-x="975" d="M115 0zM614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57zM762 -289q0 -97 -76.5 -150t-226.5 -53 q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+<glyph unicode="è" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM711 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="é" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM471 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="ê" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM259 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="ë" horiz-adv-x="1149" d="M115 0zM639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5 t-200 83.5zM319 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM700 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ì" horiz-adv-x="518" d="M0 0zM342 0h-166v1096h166v-1096zM355 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="í" horiz-adv-x="518" d="M169 0zM342 0h-166v1096h166v-1096zM169 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="î" horiz-adv-x="518" d="M0 0zM342 0h-166v1096h166v-1096zM-77 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="ï" horiz-adv-x="518" d="M0 0zM342 0h-166v1096h166v-1096zM-20 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM361 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ð" horiz-adv-x="1221" d="M1122 563q0 -281 -130.5 -432t-377.5 -151q-222 0 -361.5 134.5t-139.5 360.5q0 230 131.5 361t351.5 131q226 0 326 -121l8 4q-57 214 -262 405l-271 -155l-73 108l233 133q-92 62 -186 111l69 117q156 -73 258 -148l238 138l76 -107l-207 -119q152 -143 234.5 -342 t82.5 -428zM954 512q0 147 -90 232t-246 85q-337 0 -337 -360q0 -167 87.5 -258.5t249.5 -91.5q175 0 255.5 100.5t80.5 292.5z" />
+<glyph unicode="ñ" horiz-adv-x="1257" d="M176 0zM926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166zM802 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98 q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="ò" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M742 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="ó" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M479 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="ô" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M282 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="õ" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M773 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode="ö" horiz-adv-x="1237" d="M115 0zM1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z M336 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM717 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="÷" d="M104 653v138h961v-138h-961zM471 373q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5zM471 1071q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5z " />
+<glyph unicode="ø" horiz-adv-x="1237" d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-154 0 -266 69l-84 -117l-114 78l94 131q-129 152 -129 408q0 268 134 417.5t372 149.5q154 0 270 -76l84 119l117 -76l-97 -133q127 -152 127 -401zM287 549q0 -171 53 -273l465 646q-75 53 -189 53q-163 0 -246 -107 t-83 -319zM950 549q0 164 -51 264l-465 -643q71 -51 184 -51q163 0 247.5 109.5t84.5 320.5z" />
+<glyph unicode="ù" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM726 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+<glyph unicode="ú" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM506 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+<glyph unicode="û" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM286 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119 q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="ü" horiz-adv-x="1257" d="M164 0zM332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM342 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5 q-37 0 -63.5 24.5t-26.5 74.5zM723 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ý" horiz-adv-x="1032" d="M2 0zM2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM411 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147 h-111v25z" />
+<glyph unicode="þ" horiz-adv-x="1255" d="M344 948q66 89 151 128.5t191 39.5q215 0 335 -150t120 -417q0 -268 -120.5 -418.5t-334.5 -150.5q-222 0 -344 161h-12l4 -34q8 -77 8 -140v-459h-166v2048h166v-466q0 -52 -6 -142h8zM664 975q-168 0 -244 -92t-78 -293v-41q0 -231 77 -330.5t247 -99.5q303 0 303 432 q0 215 -74 319.5t-231 104.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1032" d="M2 0zM2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM234 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM615 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ı" horiz-adv-x="518" d="M342 0h-166v1096h166v-1096z" />
+<glyph unicode="Œ" horiz-adv-x="1890" d="M1767 0h-768q-102 -20 -194 -20q-327 0 -503.5 196.5t-176.5 558.5q0 360 174 555t494 195q102 0 192 -23h782v-151h-589v-471h551v-150h-551v-538h589v-152zM811 1333q-249 0 -377.5 -152.5t-128.5 -447.5q0 -297 128.5 -450.5t375.5 -153.5q112 0 199 33v1141 q-87 30 -197 30z" />
+<glyph unicode="œ" horiz-adv-x="1929" d="M1430 -20q-293 0 -418 235q-62 -116 -166.5 -175.5t-241.5 -59.5q-223 0 -357 152.5t-134 416.5q0 265 131 415t366 150q131 0 233.5 -59.5t164.5 -173.5q58 112 154 172.5t222 60.5q201 0 320 -132.5t119 -358.5v-105h-729q8 -393 338 -393q94 0 174.5 17.5t167.5 56.5 v-148q-88 -39 -164 -55t-180 -16zM287 549q0 -211 76 -320.5t243 -109.5q163 0 239.5 106.5t76.5 315.5q0 221 -77.5 327.5t-242.5 106.5q-166 0 -240.5 -108t-74.5 -318zM1382 975q-127 0 -199.5 -82t-84.5 -240h544q0 158 -66 240t-194 82z" />
+<glyph unicode="Ÿ" horiz-adv-x="1147" d="M0 0zM573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM294 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM675 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="ˆ" horiz-adv-x="1212" d="M268 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M813 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5zM705 1456q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+<glyph unicode="˜" horiz-adv-x="1212" d="M788 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M82 473v152h860v-152h-860z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M82 473v152h1884v-152h-1884z" />
+<glyph unicode="‘" horiz-adv-x="348" d="M37 961l-12 22q22 90 71 224t105 255h123q-66 -254 -103 -501h-184z" />
+<glyph unicode="’" horiz-adv-x="348" d="M309 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182z" />
+<glyph unicode="‚" horiz-adv-x="502" d="M63 0zM350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182z" />
+<glyph unicode="“" horiz-adv-x="717" d="M406 961l-15 22q56 215 178 479h123q-30 -115 -59.5 -259.5t-42.5 -241.5h-184zM37 961l-12 22q22 90 71 224t105 255h123q-66 -254 -103 -501h-184z" />
+<glyph unicode="”" horiz-adv-x="717" d="M309 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182zM678 1462l14 -22q-24 -91 -72 -224t-104 -255h-125q26 100 59 254t46 247h182z" />
+<glyph unicode="„" horiz-adv-x="829" d="M25 0zM309 238l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182zM678 238l14 -22q-24 -91 -72 -224t-104 -255h-125q26 100 59 254t46 247h182z" />
+<glyph unicode="•" horiz-adv-x="770" d="M164 748q0 121 56.5 184t164.5 63q105 0 163 -62t58 -185q0 -119 -57.5 -183.5t-163.5 -64.5q-107 0 -164 65.5t-57 182.5z" />
+<glyph unicode="…" horiz-adv-x="1606" d="M152 0zM152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM682 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM1213 106 q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="623" d="M82 551l342 407l119 -69l-289 -350l289 -351l-119 -71l-342 407v27z" />
+<glyph unicode="›" horiz-adv-x="623" d="M541 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27z" />
+<glyph unicode="⁄" horiz-adv-x="266" d="M655 1462l-903 -1462h-143l903 1462h143z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="711" d="M692 788h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM422 905v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45t-26 -39.5l-168 -246h262z" />
+<glyph unicode="€" horiz-adv-x="1208" d="M795 1333q-319 0 -398 -403h510v-129h-524l-2 -57v-64l2 -45h463v-129h-447q37 -180 138.5 -278.5t271.5 -98.5q156 0 309 66v-150q-146 -65 -317 -65q-237 0 -381.5 134.5t-190.5 391.5h-166v129h152l-2 42v44l2 80h-152v129h164q39 261 185 407t383 146q201 0 366 -97 l-71 -139q-166 86 -295 86z" />
+<glyph unicode="™" horiz-adv-x="1589" d="M369 741h-123v615h-209v106h543v-106h-211v-615zM969 741l-201 559h-8l6 -129v-430h-119v721h187l196 -559l203 559h180v-721h-127v420l6 137h-8l-211 -557h-104z" />
+<glyph unicode="−" d="M104 653v138h961v-138h-961z" />
+<glyph unicode="" horiz-adv-x="1095" d="M0 1095h1095v-1095h-1095v1095z" />
+<glyph horiz-adv-x="1255" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.ttf
new file mode 100755
index 0000000..c537f83
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.woff
new file mode 100755
index 0000000..e231183
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.eot
new file mode 100755
index 0000000..0ab1db2
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.svg
new file mode 100755
index 0000000..7166ec1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sanssemibold_italic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1257" d="M0 0zM-76 -492q-90 0 -149 23v190q64 -20 114 -20q134 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 -178h-229l-223 -1053q-40 -189 -131 -278 t-238 -89zM1022 1378q0 68 39 110t110 42q53 0 86 -26.5t33 -80.5q0 -71 -40 -112t-105 -41q-53 0 -88 26t-35 82zM975 0h-236l236 1106h235z" />
+<glyph unicode="fl" horiz-adv-x="1257" d="M0 0zM-76 -492q-90 0 -149 23v190q64 -20 114 -20q134 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 -178h-229l-223 -1053q-40 -189 -131 -278 t-238 -89zM973 0h-234l330 1556h235z" />
+<glyph unicode="ffi" horiz-adv-x="1931" d="M-76 -492q-90 0 -149 23v190q64 -20 114 -20q133 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h438l23 96q44 197 133 281t256 84q117 0 213 -43l-62 -176 q-74 28 -135 28q-71 0 -111.5 -43t-62.5 -141l-18 -86h229l-39 -178h-227l-223 -1053q-43 -192 -133.5 -279.5t-235.5 -87.5q-95 0 -149 23v190q60 -20 114 -20q136 0 176 205l215 1022h-438l-223 -1053q-40 -189 -131 -278t-238 -89zM1649 0h-234l236 1106h233zM1698 1378 q0 68 39 110t108 42q54 0 86.5 -26.5t32.5 -80.5q0 -71 -39.5 -112t-105.5 -41q-51 0 -86 26t-35 82z" />
+<glyph unicode="ffl" horiz-adv-x="1931" d="M-76 -492q-90 0 -149 23v190q64 -20 114 -20q133 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h438l23 96q44 197 133 281t256 84q117 0 213 -43l-62 -176 q-74 28 -135 28q-71 0 -111.5 -43t-62.5 -141l-18 -86h229l-39 -178h-227l-223 -1053q-43 -192 -133.5 -279.5t-235.5 -87.5q-95 0 -149 23v190q60 -20 114 -20q136 0 176 205l215 1022h-438l-223 -1053q-40 -189 -131 -278t-238 -89zM1649 0h-236l332 1556h233z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="557" d="M336 444h-176l168 1018h272zM33 96q0 80 45.5 130t130.5 50q57 0 91 -32.5t34 -93.5q0 -79 -47 -128t-123 -49q-62 0 -96.5 33.5t-34.5 89.5z" />
+<glyph unicode=""" horiz-adv-x="858" d="M516 1462l-151 -528h-152l72 528h231zM893 1462l-152 -528h-153l74 528h231z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M1036 872l-84 -286h271l-15 -168h-303l-121 -418h-180l123 418h-248l-121 -418h-174l117 418h-250l17 168h280l84 286h-264l16 168h295l121 422h178l-121 -422h252l121 422h174l-121 -422h252l-14 -168h-285zM526 586h250l82 286h-250z" />
+<glyph unicode="$" d="M987 494q0 -172 -119.5 -277t-337.5 -125l-45 -211h-135l45 211q-197 13 -334 80v209q78 -42 179.5 -70t193.5 -30l84 387q-156 56 -223.5 138.5t-67.5 199.5q0 167 118.5 267.5t324.5 117.5l37 163h135l-35 -165q161 -16 289 -82l-86 -185q-134 66 -244 74l-80 -371 q128 -51 186.5 -95t86.5 -101t28 -135zM571 285q86 11 136.5 60t50.5 126q0 101 -115 145zM629 1196q-89 -11 -133.5 -57.5t-44.5 -122.5q0 -98 110 -139z" />
+<glyph unicode="%" horiz-adv-x="1688" d="M530 1315q-55 0 -99 -61t-70.5 -173t-26.5 -215q0 -135 80 -135q52 0 95.5 58t73 175.5t29.5 219.5q0 131 -82 131zM805 1186q0 -160 -55.5 -313.5t-146.5 -230.5t-206 -77q-124 0 -190 79t-66 228q0 166 53 313.5t142.5 222.5t208.5 75q127 0 193.5 -76t66.5 -221z M1511 1462l-1085 -1462h-195l1086 1462h194zM1329 731q-52 0 -95.5 -57.5t-72 -171t-28.5 -221.5q0 -134 81 -134q52 0 96 58.5t73.5 174.5t29.5 220q0 131 -84 131zM1606 604q0 -161 -55.5 -315.5t-146.5 -231.5t-204 -77q-127 0 -193.5 76.5t-66.5 222.5q0 171 53 320 t142.5 223.5t207.5 74.5q127 0 195 -75t68 -218z" />
+<glyph unicode="&" horiz-adv-x="1411" d="M748 1298q-87 0 -134 -54t-47 -142q0 -109 62 -201q147 75 199.5 133.5t52.5 126.5q0 66 -36 101.5t-97 35.5zM508 176q77 0 147 27t144 82l-264 381q-133 -74 -181.5 -141.5t-48.5 -153.5t56 -140.5t147 -54.5zM66 350q0 147 85.5 254t286.5 205q-88 151 -88 283 q0 180 112.5 286.5t297.5 106.5q160 0 252 -81t92 -218q0 -129 -89.5 -230t-293.5 -192l235 -326q109 112 181 295h233q-113 -270 -297 -454l205 -279h-277l-94 131q-106 -80 -211 -115.5t-229 -35.5q-190 0 -295.5 97.5t-105.5 272.5z" />
+<glyph unicode="'" horiz-adv-x="483" d="M516 1462l-151 -528h-152l72 528h231z" />
+<glyph unicode="(" horiz-adv-x="639" d="M78 276q0 343 124.5 632.5t379.5 553.5h209q-498 -548 -498 -1190q0 -329 115 -596h-183q-147 261 -147 600z" />
+<glyph unicode=")" horiz-adv-x="639" d="M559 860q0 -342 -123 -629.5t-381 -554.5h-209q498 548 498 1190q0 327 -115 596h183q147 -265 147 -602z" />
+<glyph unicode="*" horiz-adv-x="1122" d="M868 1524l-116 -367l403 23l-12 -205l-367 45l170 -361l-205 -61l-102 371l-227 -312l-162 144l293 266l-350 100l71 195l354 -178l37 383z" />
+<glyph unicode="+" d="M496 631h-379v180h379v381h180v-381h377v-180h-377v-375h-180v375z" />
+<glyph unicode="," horiz-adv-x="530" d="M334 238l8 -23q-125 -260 -266 -479h-178q105 238 200 502h236z" />
+<glyph unicode="-" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="." horiz-adv-x="551" d="M33 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
+<glyph unicode="/" horiz-adv-x="788" d="M952 1462l-811 -1462h-233l811 1462h233z" />
+<glyph unicode="0" d="M1100 1012q0 -306 -79 -546.5t-219 -363t-325 -122.5q-194 0 -289.5 127.5t-95.5 363.5q0 284 83 526t222.5 365t321.5 123q187 0 284 -118.5t97 -354.5zM700 1288q-97 0 -180 -112t-136.5 -312.5t-53.5 -394.5q0 -143 39 -218t129 -75q100 0 182.5 113.5t132 316.5 t49.5 414q0 268 -162 268z" />
+<glyph unicode="1" d="M637 0h-238l189 870q28 150 82 324q-57 -55 -135 -102l-187 -117l-106 170l508 317h198z" />
+<glyph unicode="2" d="M911 0h-929l36 180l471 422q176 159 238.5 231t90.5 133.5t28 131.5q0 85 -49.5 134.5t-139.5 49.5q-70 0 -139 -30t-170 -109l-115 160q120 97 231 138.5t228 41.5q181 0 288 -93t107 -251q0 -108 -39 -201t-123 -190.5t-284 -268.5l-311 -264v-8h622z" />
+<glyph unicode="3" d="M1087 1153q0 -158 -99 -264t-269 -137v-7q127 -24 196.5 -106t69.5 -205q0 -133 -68 -236.5t-196.5 -160.5t-304.5 -57q-225 0 -385 79v215q84 -49 185.5 -75.5t195.5 -26.5q157 0 245 71.5t88 196.5q0 219 -278 219h-133l37 183h106q164 0 267.5 74.5t103.5 199.5 q0 79 -49.5 124.5t-139.5 45.5q-72 0 -146.5 -25.5t-162.5 -84.5l-104 161q120 81 225.5 113.5t226.5 32.5q183 0 286 -88.5t103 -241.5z" />
+<glyph unicode="4" d="M1047 317h-201l-68 -317h-229l69 317h-622l37 197l803 952h254l-201 -952h201zM659 514l68 309q31 136 100 377h-8q-51 -86 -135 -186l-422 -500h397z" />
+<glyph unicode="5" d="M610 907q181 0 288.5 -103.5t107.5 -285.5q0 -161 -70 -283t-204 -188.5t-324 -66.5q-214 0 -355 79v217q167 -100 342 -100q173 0 270 83t97 230q0 105 -62 168.5t-188 63.5q-95 0 -225 -35l-88 68l200 708h713l-45 -209h-506l-106 -364q93 18 155 18z" />
+<glyph unicode="6" d="M111 446q0 205 60.5 406t165 343t251 215t342.5 73q117 0 203 -25l-43 -194q-72 22 -181 22q-205 0 -337 -129.5t-197 -392.5h6q125 170 326 170q156 0 243.5 -99t87.5 -272q0 -162 -68.5 -301t-185.5 -210.5t-270 -71.5q-194 0 -298.5 120t-104.5 346zM530 174 q81 0 143 48.5t96 134.5t34 188q0 200 -178 200q-51 0 -95.5 -19t-79 -48t-58.5 -64.5t-39 -82t-13 -113.5q0 -110 49.5 -177t140.5 -67z" />
+<glyph unicode="7" d="M125 0l754 1257h-674l43 205h932l-33 -168l-758 -1294h-264z" />
+<glyph unicode="8" d="M731 1485q179 0 283 -89t104 -239q0 -132 -79 -229.5t-248 -163.5q120 -78 172.5 -165.5t52.5 -201.5q0 -121 -61.5 -216.5t-175.5 -148t-271 -52.5q-203 0 -317.5 100t-114.5 268q0 297 368 432q-91 70 -130.5 145t-39.5 162q0 179 127 288.5t330 109.5zM594 672 q-149 -54 -216 -126.5t-67 -176.5q0 -93 59 -149t158 -56q115 0 184.5 64t69.5 167q0 91 -48.5 157.5t-139.5 119.5zM711 1300q-93 0 -150 -56t-57 -148q0 -83 39 -137t104 -93q115 43 177.5 105t62.5 157q0 81 -48 126.5t-128 45.5z" />
+<glyph unicode="9" d="M1079 1018q0 -205 -58 -414.5t-152.5 -349t-226 -207t-310.5 -67.5q-133 0 -240 32v207q121 -43 236 -43q188 0 306 123t177 389h-6q-113 -160 -305 -160q-165 0 -255.5 102t-90.5 288q0 156 67 289t186.5 204.5t274.5 71.5q192 0 294.5 -119.5t102.5 -345.5zM664 1288 q-82 0 -145.5 -47t-97.5 -130t-34 -179q0 -105 46 -160t134 -55q117 0 198 94t81 240q0 108 -48 172.5t-134 64.5z" />
+<glyph unicode=":" horiz-adv-x="551" d="M205 948q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -48.5 -130t-125.5 -51q-66 0 -96.5 35.5t-30.5 87.5zM33 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
+<glyph unicode=";" horiz-adv-x="551" d="M334 238l8 -23q-125 -260 -266 -479h-176q95 214 198 502h236zM205 948q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -48.5 -130t-125.5 -51q-66 0 -96.5 35.5t-30.5 87.5z" />
+<glyph unicode="<" d="M1051 221l-936 430v121l936 488v-195l-697 -344l697 -303v-197z" />
+<glyph unicode="=" d="M117 831v179h936v-179h-936zM117 430v180h936v-180h-936z" />
+<glyph unicode=">" d="M115 418l694 303l-694 344v195l936 -488v-121l-936 -430v197z" />
+<glyph unicode="?" horiz-adv-x="907" d="M260 444q18 133 71.5 220.5t176.5 177.5q107 77 146.5 117t58 80.5t18.5 88.5q0 70 -42.5 114t-123.5 44q-77 0 -150 -27.5t-151 -64.5l-78 176q207 113 410 113q171 0 269 -85.5t98 -242.5q0 -120 -63.5 -217.5t-231.5 -216.5q-104 -74 -150 -133t-61 -144h-197zM162 94 q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -49 -129t-125 -50q-66 0 -96.5 34.5t-30.5 86.5z" />
+<glyph unicode="@" horiz-adv-x="1743" d="M1706 846q0 -176 -59.5 -322.5t-166.5 -229.5t-239 -83q-98 0 -150.5 46t-64.5 120h-6q-101 -166 -277 -166q-123 0 -189.5 78.5t-66.5 218.5q0 151 67.5 279.5t188 203t263.5 74.5q52 0 94.5 -5t79.5 -13t129 -39l-101 -392q-30 -114 -30 -159q0 -92 79 -92 q72 0 134 66.5t97.5 174.5t35.5 230q0 228 -128.5 347.5t-363.5 119.5q-214 0 -385 -99.5t-266.5 -281.5t-95.5 -406q0 -259 140.5 -401t391.5 -142q200 0 430 86v-155q-219 -90 -454 -90q-210 0 -367 83.5t-241.5 239.5t-84.5 365q0 270 122.5 489t343 344t493.5 125 q200 0 346 -74.5t223.5 -214.5t77.5 -325zM989 913q-86 0 -158.5 -53.5t-113.5 -144t-41 -193.5q0 -157 112 -157q82 0 141.5 72t100.5 220l64 240q-53 16 -105 16z" />
+<glyph unicode="A" horiz-adv-x="1210" d="M827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365z" />
+<glyph unicode="B" horiz-adv-x="1247" d="M778 1462q222 0 335.5 -84t113.5 -248q0 -146 -86.5 -243t-239.5 -127v-8q108 -28 167.5 -103.5t59.5 -183.5q0 -217 -150 -341t-417 -124h-491l309 1462h399zM489 858h199q139 0 215 60.5t76 171.5q0 172 -223 172h-181zM348 201h223q147 0 230.5 68t83.5 194 q0 98 -60 149.5t-176 51.5h-200z" />
+<glyph unicode="C" horiz-adv-x="1225" d="M924 1278q-154 0 -275 -89t-193.5 -259.5t-72.5 -374.5q0 -180 82.5 -275.5t243.5 -95.5q141 0 329 68v-205q-180 -67 -374 -67q-248 0 -388.5 148.5t-140.5 416.5q0 260 105.5 483t281.5 339t402 116q217 0 389 -92l-94 -195q-63 34 -134 58t-161 24z" />
+<glyph unicode="D" horiz-adv-x="1374" d="M1311 893q0 -271 -100 -473t-291 -311t-449 -109h-401l309 1462h369q271 0 417 -145t146 -424zM483 201q177 0 309 86t202.5 242t70.5 356q0 184 -88 280.5t-256 96.5h-146l-227 -1061h135z" />
+<glyph unicode="E" horiz-adv-x="1077" d="M846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539z" />
+<glyph unicode="F" horiz-adv-x="1026" d="M307 0h-237l309 1462h774l-43 -205h-537l-96 -454h502l-45 -203h-500z" />
+<glyph unicode="G" horiz-adv-x="1399" d="M786 793h512l-157 -736q-112 -40 -218.5 -58.5t-238.5 -18.5q-261 0 -405 146t-144 413q0 264 102.5 483t290 340t426.5 121q111 0 213 -20.5t205 -69.5l-90 -203q-174 86 -334 86q-158 0 -287 -90.5t-203.5 -258t-74.5 -372.5q0 -183 89 -277t253 -94q109 0 215 33 l80 371h-277z" />
+<glyph unicode="H" horiz-adv-x="1411" d="M1110 0h-238l140 659h-566l-139 -659h-237l309 1462h237l-127 -598h566l127 598h237z" />
+<glyph unicode="I" horiz-adv-x="608" d="M70 0l311 1462h235l-311 -1462h-235z" />
+<glyph unicode="J" horiz-adv-x="612" d="M-152 -408q-104 0 -170 25l5 201q84 -21 153 -21q201 0 254 250l299 1415h238l-305 -1446q-46 -217 -161.5 -320.5t-312.5 -103.5z" />
+<glyph unicode="K" horiz-adv-x="1198" d="M1087 0h-262l-252 655l-149 -100l-117 -555h-237l309 1462h237l-151 -706l141 166l492 540h284l-616 -669z" />
+<glyph unicode="L" horiz-adv-x="1016" d="M70 0l309 1462h237l-266 -1257h539l-43 -205h-776z" />
+<glyph unicode="M" horiz-adv-x="1757" d="M647 0l-115 1214h-6q-9 -118 -55 -340l-184 -874h-219l309 1462h323l109 -1149h6l606 1149h344l-305 -1462h-227l182 872q39 186 86 342h-6l-643 -1214h-205z" />
+<glyph unicode="N" horiz-adv-x="1491" d="M1192 0h-260l-410 1163h-6l-10 -69q-24 -149 -35.5 -212.5t-183.5 -881.5h-219l309 1462h268l399 -1149h7q6 54 31 192.5t40 203.5l160 753h219z" />
+<glyph unicode="O" horiz-adv-x="1485" d="M1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95z" />
+<glyph unicode="P" horiz-adv-x="1174" d="M465 748h94q178 0 275.5 79.5t97.5 225.5q0 109 -58.5 159t-179.5 50h-119zM1174 1061q0 -248 -169.5 -381t-472.5 -133h-110l-115 -547h-237l309 1462h334q229 0 345 -100.5t116 -300.5z" />
+<glyph unicode="Q" horiz-adv-x="1485" d="M1421 922q0 -322 -130 -563t-355 -332l264 -375h-289l-202 328h-31q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94 q138 0 248.5 94t172 263.5t61.5 378.5q0 170 -79 265t-223 95z" />
+<glyph unicode="R" horiz-adv-x="1206" d="M430 584l-123 -584h-237l309 1462h338q223 0 342 -94.5t119 -290.5q0 -165 -86.5 -278.5t-257.5 -165.5l249 -633h-260l-207 584h-186zM473 782h123q170 0 254 75t84 206q0 105 -59 151t-183 46h-119z" />
+<glyph unicode="S" horiz-adv-x="1057" d="M930 428q0 -210 -144.5 -329t-398.5 -119q-210 0 -348 75v224q173 -97 350 -97q137 0 216 58.5t79 162.5q0 69 -41 122.5t-172 136.5q-105 67 -155 122t-76.5 120.5t-26.5 144.5q0 128 61.5 227t174 153t253.5 54q205 0 381 -92l-86 -191q-161 78 -295 78 q-109 0 -175 -58.5t-66 -152.5q0 -47 15 -82.5t46.5 -66t134.5 -95.5q155 -97 214 -187.5t59 -207.5z" />
+<glyph unicode="T" horiz-adv-x="1053" d="M528 0h-237l264 1257h-379l45 205h998l-43 -205h-381z" />
+<glyph unicode="U" horiz-adv-x="1399" d="M1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237z" />
+<glyph unicode="V" horiz-adv-x="1165" d="M506 248q70 178 137 309l455 905h254l-764 -1462h-258l-144 1462h232l74 -905q9 -103 11 -233l-1 -76h4z" />
+<glyph unicode="W" horiz-adv-x="1788" d="M1317 0h-258l-37 842l-6 185l4 106h-6q-47 -144 -117 -291l-385 -842h-256l-53 1462h229l19 -850q0 -136 -13 -346h6q83 221 142 355l387 841h225l31 -839l3 -169l-3 -188h8q28 88 70 197.5t61 152.5l358 846h246z" />
+<glyph unicode="X" horiz-adv-x="1151" d="M1040 0h-256l-192 592l-438 -592h-265l586 770l-250 692h246l178 -540l402 540h266l-551 -710z" />
+<glyph unicode="Y" horiz-adv-x="1092" d="M582 793l432 669h266l-623 -913l-114 -549h-238l119 553l-238 909h242z" />
+<glyph unicode="Z" horiz-adv-x="1092" d="M901 0h-940l33 168l850 1087h-598l43 207h897l-35 -172l-852 -1085h645z" />
+<glyph unicode="[" horiz-adv-x="631" d="M403 -324h-430l381 1786h430l-39 -176h-221l-303 -1433h221z" />
+<glyph unicode="\" horiz-adv-x="788" d="M428 1462l219 -1462h-209l-217 1462h207z" />
+<glyph unicode="]" horiz-adv-x="631" d="M-106 -147h219l305 1433h-221l39 176h430l-381 -1786h-428z" />
+<glyph unicode="^" horiz-adv-x="1069" d="M37 537l608 933h127l272 -933h-184l-188 690l-434 -690h-201z" />
+<glyph unicode="_" horiz-adv-x="813" d="M629 -324h-817l30 140h817z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M918 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="a" horiz-adv-x="1186" d="M399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77t-120 -209.5 t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5z" />
+<glyph unicode="b" horiz-adv-x="1200" d="M578 -20q-98 0 -168.5 45t-110.5 131h-10l-64 -156h-178l330 1556h235l-71 -333q-13 -63 -38 -156.5t-40 -140.5h8q90 113 165 156.5t161 43.5q145 0 226 -103.5t81 -285.5q0 -202 -69.5 -379.5t-190.5 -277.5t-266 -100zM711 934q-81 0 -162 -80t-130.5 -210.5 t-49.5 -270.5q0 -96 46.5 -149.5t131.5 -53.5t159 78.5t117 210t43 274.5q0 201 -155 201z" />
+<glyph unicode="c" horiz-adv-x="954" d="M506 -20q-196 0 -304 106t-108 303q0 207 73.5 376.5t206.5 265t302 95.5q164 0 297 -61l-70 -184q-122 53 -221 53q-150 0 -250 -153.5t-100 -379.5q0 -111 56 -171t155 -60q74 0 138.5 22t129.5 54v-195q-140 -71 -305 -71z" />
+<glyph unicode="d" horiz-adv-x="1198" d="M623 1126q179 0 268 -178h8q13 146 37 250l76 358h233l-330 -1556h-184l19 176h-7q-88 -106 -170 -151t-174 -45q-143 0 -224 101.5t-81 287.5q0 205 71.5 383t191.5 276t266 98zM489 170q82 0 162.5 82t129 214t48.5 267q0 91 -43.5 146t-132.5 55q-85 0 -159 -77 t-118 -211t-44 -273q0 -203 157 -203z" />
+<glyph unicode="e" horiz-adv-x="1075" d="M664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5z" />
+<glyph unicode="f" horiz-adv-x="702" d="M-76 -492q-90 0 -149 23v190q64 -20 114 -20q134 0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 -178h-229l-223 -1053q-40 -189 -131 -278t-238 -89 z" />
+<glyph unicode="g" horiz-adv-x="1067" d="M1143 1106l-31 -137l-192 -33q28 -58 28 -137q0 -193 -119 -306.5t-319 -113.5q-52 0 -92 8q-111 -40 -111 -104q0 -38 31.5 -52t91.5 -22l127 -16q176 -22 252 -87.5t76 -187.5q0 -196 -151 -303t-429 -107q-203 0 -314.5 75t-111.5 206q0 103 69.5 178t223.5 127 q-76 45 -76 127q0 69 46.5 119.5t146.5 97.5q-135 81 -135 252q0 196 122.5 316t323.5 120q80 0 160 -20h383zM324 18q-112 -18 -172 -71t-60 -131q0 -65 55.5 -103.5t169.5 -38.5q163 0 255 54t92 155q0 51 -45 80t-158 41zM594 969q-65 0 -114 -38.5t-76 -105t-27 -145.5 q0 -71 35.5 -109.5t101.5 -38.5q65 0 112.5 39t74 107t26.5 149q0 142 -133 142z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M702 0l142 672q18 90 18 127q0 135 -129 135q-112 0 -209.5 -125t-142.5 -342l-98 -467h-236l330 1556h235l-57 -262q-27 -126 -73 -293l-19 -75h8q84 106 168.5 153t177.5 47q136 0 208.5 -77.5t72.5 -221.5q0 -76 -23 -174l-139 -653h-234z" />
+<glyph unicode="i" horiz-adv-x="563" d="M330 1378q0 68 39 110t110 42q53 0 86 -26.5t33 -80.5q0 -71 -40 -112t-105 -41q-53 0 -88 26t-35 82zM283 0h-236l236 1106h235z" />
+<glyph unicode="j" horiz-adv-x="563" d="M-113 -492q-90 0 -149 23v190q64 -20 117 -20q131 0 170 186l260 1219h233l-266 -1247q-38 -181 -127.5 -266t-237.5 -85zM332 1378q0 68 38 110t109 42q54 0 86.5 -26.5t32.5 -80.5q0 -71 -40 -112t-105 -41q-53 0 -87 25.5t-34 82.5z" />
+<glyph unicode="k" horiz-adv-x="1081" d="M887 1106h272l-483 -485l291 -621h-262l-209 471l-136 -96l-77 -375h-236l330 1556h235q-135 -627 -159.5 -729.5t-59.5 -226.5h4z" />
+<glyph unicode="l" horiz-adv-x="563" d="M281 0h-234l330 1556h235z" />
+<glyph unicode="m" horiz-adv-x="1819" d="M807 1126q220 0 254 -235h8q75 116 170.5 175.5t198.5 59.5q133 0 202.5 -76.5t69.5 -215.5q0 -64 -22 -181l-140 -653h-235l143 672q19 95 19 133q0 129 -121 129q-108 0 -201.5 -124t-136.5 -329l-101 -481h-235l143 672q17 82 17 127q0 135 -117 135 q-110 0 -203.5 -127t-138.5 -338l-98 -469h-236l236 1106h184l-21 -205h9q148 225 352 225z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M702 0l142 672q18 90 18 131q0 131 -129 131q-72 0 -142 -57t-126 -164.5t-84 -243.5l-98 -469h-236l236 1106h184l-21 -205h9q83 118 171 171.5t191 53.5q134 0 207.5 -76t73.5 -216q0 -69 -23 -181l-137 -653h-236z" />
+<glyph unicode="o" horiz-adv-x="1174" d="M842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316z" />
+<glyph unicode="p" horiz-adv-x="1200" d="M578 -20q-181 0 -269 176h-10q-7 -97 -25 -185l-96 -463h-233l338 1598h184l-21 -188h9q157 208 344 208q143 0 224 -103t81 -286q0 -204 -70 -381.5t-190.5 -276.5t-265.5 -99zM711 934q-81 0 -161 -79.5t-130.5 -210.5t-50.5 -271q0 -96 46.5 -149.5t131.5 -53.5 t159 78.5t117 210t43 274.5q0 201 -155 201z" />
+<glyph unicode="q" horiz-adv-x="1198" d="M625 1126q183 0 274 -178h10l64 158h178l-340 -1598h-233l75 349q12 56 43.5 180t38.5 141h-8q-84 -108 -164 -153t-170 -45q-139 0 -219 102.5t-80 284.5q0 208 73 387t192.5 275.5t265.5 96.5zM492 170q80 0 159 81t127.5 213t48.5 269q0 94 -45.5 147.5t-126.5 53.5 q-86 0 -160 -77.5t-118.5 -209.5t-44.5 -274q0 -203 160 -203z" />
+<glyph unicode="r" horiz-adv-x="836" d="M797 1126q62 0 108 -12l-51 -219q-54 14 -102 14q-126 0 -225 -113t-138 -296l-106 -500h-236l236 1106h184l-21 -205h9q83 120 166 172.5t176 52.5z" />
+<glyph unicode="s" horiz-adv-x="922" d="M782 340q0 -173 -118 -266.5t-328 -93.5q-190 0 -322 67v203q153 -90 312 -90q97 0 157 40t60 109q0 51 -34.5 87.5t-141.5 97.5q-125 67 -176.5 136.5t-51.5 164.5q0 155 107 243t289 88q196 0 346 -84l-76 -176q-140 76 -266 76q-73 0 -118.5 -33t-45.5 -92 q0 -45 33 -80t135 -90q105 -59 149 -101t67 -91.5t23 -114.5z" />
+<glyph unicode="t" horiz-adv-x="752" d="M455 170q68 0 151 31v-178q-35 -17 -95 -30t-120 -13q-274 0 -274 247q0 57 16 131l121 570h-162l21 110l190 82l129 232h146l-52 -246h279l-39 -178h-277l-122 -572q-13 -55 -13 -92q0 -43 25 -68.5t76 -25.5z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236z" />
+<glyph unicode="v" horiz-adv-x="997" d="M231 0l-131 1106h232l55 -598q14 -159 14 -297h7q28 74 70 165t65 132l311 598h250l-598 -1106h-275z" />
+<glyph unicode="w" horiz-adv-x="1540" d="M844 0l-19 627l-1 70l3 200q-25 -62 -51.5 -125t-345.5 -772h-262l-47 1106h221l13 -646q-2 -87 -11 -245h6q66 176 109 272l278 619h254l19 -604l1 -53l-3 -234h6q17 50 57 158.5t63.5 163.5t251.5 569h244l-518 -1106h-268z" />
+<glyph unicode="x" horiz-adv-x="1032" d="M489 387l-305 -387h-270l475 569l-231 537h245l144 -373l287 373h274l-461 -549l248 -557h-246z" />
+<glyph unicode="y" horiz-adv-x="1004" d="M100 1106h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 19v188q75 -16 125 -16q74 0 134 43.5t124 155.5l51 92z" />
+<glyph unicode="z" horiz-adv-x="920" d="M719 0h-758l29 147l635 781h-439l39 178h705l-37 -170l-623 -758h486z" />
+<glyph unicode="{" horiz-adv-x="721" d="M457 -324q-316 0 -316 236q0 61 17 133l45 201q14 65 14 98q0 141 -209 141l39 187q120 0 191.5 42.5t93.5 143.5l59 275q28 134 73 201.5t120 97.5t198 30h60l-41 -184q-96 0 -139.5 -34t-61.5 -116l-70 -309q-24 -108 -87 -170.5t-179 -79.5v-6q160 -45 160 -215 q0 -38 -16 -121l-43 -194q-11 -48 -11 -74q0 -51 32.5 -74.5t109.5 -23.5v-185h-39z" />
+<glyph unicode="|" d="M498 1552h178v-2033h-178v2033z" />
+<glyph unicode="}" horiz-adv-x="721" d="M270 1462q318 0 318 -235q0 -61 -17 -133l-45 -203q-14 -65 -14 -98q0 -142 209 -142l-39 -186q-121 0 -192 -42t-93 -142l-63 -306q-34 -165 -123.5 -232t-269.5 -67h-29v183q106 2 152.5 36.5t64.5 114.5l70 309q24 109 87 170t179 78v6q-158 48 -158 215q0 55 17 121 l43 197q10 44 10 74q0 58 -43 78t-121 20l35 184h22z" />
+<glyph unicode="~" d="M344 692q-51 0 -112 -31t-121 -90v191q100 108 249 108q64 0 118.5 -12t146.5 -51q70 -30 115 -42.5t94 -12.5q50 0 112.5 31t120.5 89v-190q-103 -111 -250 -111q-63 0 -124 16.5t-138 49.5q-76 32 -119.5 43.5t-91.5 11.5z" />
+<glyph unicode="¡" horiz-adv-x="557" d="M221 645h174l-166 -1018h-274zM522 993q0 -80 -47 -130t-127 -50q-59 0 -93 31.5t-34 91.5q0 82 49 132t127 50q65 0 95 -35.5t30 -89.5z" />
+<glyph unicode="¢" d="M578 -20h-156l45 213q-132 34 -202 134.5t-70 258.5q0 190 63.5 351t178 260.5t261.5 121.5l35 164h156l-37 -164q124 -12 221 -57l-69 -185q-125 53 -222 53q-99 0 -180 -71.5t-125.5 -194.5t-44.5 -266q0 -111 56 -171t155 -60q74 0 138.5 21.5t129.5 53.5v-194 q-133 -69 -293 -74z" />
+<glyph unicode="£" d="M856 1483q188 0 352 -86l-88 -183q-143 74 -258 74q-185 0 -227 -205l-57 -278h333l-34 -172h-336l-33 -152q-21 -98 -68.5 -165t-130.5 -109h690l-45 -207h-972l38 193q200 45 250 276l35 164h-196l36 172h197l61 299q38 185 153 282t300 97z" />
+<glyph unicode="¤" d="M209 723q0 110 61 205l-129 129l119 119l127 -127q102 61 207 61q108 0 207 -63l127 129l121 -117l-129 -129q61 -99 61 -207q0 -114 -61 -209l127 -125l-119 -119l-127 127q-95 -59 -207 -59q-120 0 -207 59l-127 -125l-117 119l127 125q-61 95 -61 207zM377 723 q0 -91 62.5 -154t154.5 -63q91 0 156 62t65 155t-65 156t-156 63q-92 0 -154.5 -64t-62.5 -155z" />
+<glyph unicode="¥" d="M594 793l432 669h248l-518 -760h217l-35 -155h-274l-31 -148h274l-33 -155h-272l-53 -244h-221l51 244h-273l33 155h273l30 148h-272l35 155h211l-199 760h232z" />
+<glyph unicode="¦" d="M498 1552h178v-794h-178v794zM498 315h178v-796h-178v796z" />
+<glyph unicode="§" horiz-adv-x="995" d="M162 764q0 188 219 307q-47 32 -78 82t-31 115q0 138 111.5 220.5t296.5 82.5q178 0 332 -78l-68 -158q-62 29 -129.5 50.5t-144.5 21.5q-86 0 -134.5 -34.5t-48.5 -94.5q0 -43 36.5 -76.5t148.5 -83.5q127 -56 186.5 -127.5t59.5 -167.5q0 -92 -52.5 -171t-160.5 -140 q102 -76 102 -193q0 -157 -123 -245t-330 -88q-188 0 -315 67v187q152 -93 319 -93q116 0 174 40.5t58 111.5q0 43 -39 79.5t-141 84.5q-130 60 -189 131.5t-59 169.5zM510 987q-69 -26 -110.5 -79t-41.5 -115q0 -61 46.5 -104.5t173.5 -100.5q62 36 99.5 90.5t37.5 114.5 t-49.5 104.5t-155.5 89.5z" />
+<glyph unicode="¨" horiz-adv-x="1135" d="M426 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM809 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M930 1034q-113 0 -175.5 -76t-62.5 -231q0 -301 238 -301q47 0 112 16t109 35v-158q-117 -51 -240 -51q-197 0 -303 123.5t-106 335.5q0 216 113.5 340.5t312.5 124.5q138 0 266 -66l-68 -147q-106 55 -196 55zM131 731q0 200 100 375t275 276t377 101q199 0 373.5 -99 t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM254 731q0 -168 83 -312.5t229 -230.5t317 -86q173 0 319.5 87t227.5 231.5t81 310.5q0 165 -82 310.5t-227.5 232t-318.5 86.5q-168 0 -314.5 -84.5 t-230.5 -231t-84 -313.5z" />
+<glyph unicode="ª" horiz-adv-x="729" d="M498 1479q113 0 166 -103h6l39 90h118l-147 -684h-123l10 105h-4q-50 -62 -98 -89.5t-109 -27.5q-91 0 -143.5 66t-52.5 180q0 128 47 238.5t122.5 167.5t168.5 57zM412 897q50 0 97.5 48t77 127.5t29.5 158.5q0 119 -102 119q-82 0 -138.5 -97.5t-56.5 -230.5 q0 -125 93 -125z" />
+<glyph unicode="«" horiz-adv-x="1055" d="M80 575l395 420l135 -118l-288 -332l153 -369l-178 -76l-217 453v22zM520 555l385 434l137 -112l-280 -351l147 -350l-180 -76l-209 430v25z" />
+<glyph unicode="¬" d="M1053 811v-555h-179v375h-757v180h936z" />
+<glyph unicode="­" horiz-adv-x="649" d="M47 446zM47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M131 731q0 200 100 375t275 276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 -276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM254 731q0 -168 83 -312.5t229 -230.5t317 -86q173 0 319.5 87t227.5 231.5t81 310.5 q0 165 -82 310.5t-227.5 232t-318.5 86.5q-168 0 -314.5 -84.5t-230.5 -231t-84 -313.5zM1214 907q0 -83 -45.5 -145t-130.5 -98l211 -373h-200l-172 325h-91v-325h-178v878h269q337 0 337 -262zM786 760h72q84 0 129 36t45 99q0 73 -45.5 101t-128.5 28h-72v-264z" />
+<glyph unicode="¯" horiz-adv-x="903" d="M1020 1556h-909l39 166h911z" />
+<glyph unicode="°" horiz-adv-x="877" d="M188 1153q0 136 97 233t233 97t232 -97t96 -233q0 -137 -96 -231.5t-232 -94.5q-88 0 -165 44t-121 119t-44 163zM340 1153q0 -70 52 -122t126 -52q72 0 124 52t52 122q0 74 -51.5 126t-124.5 52q-74 0 -126 -51.5t-52 -126.5z" />
+<glyph unicode="±" d="M496 657h-379v181h379v381h180v-381h377v-181h-377v-374h-180v374zM117 0v180h936v-180h-936z" />
+<glyph unicode="²" horiz-adv-x="745" d="M682 586h-604l28 135l269 223q111 95 148.5 136t55 77t17.5 74q0 46 -28 72t-76 26q-91 0 -191 -80l-80 123q68 54 142.5 81.5t168.5 27.5q115 0 183.5 -60t68.5 -155q0 -69 -23.5 -124.5t-74 -110.5t-168.5 -146l-174 -142h371z" />
+<glyph unicode="³" horiz-adv-x="745" d="M784 1272q0 -90 -54.5 -149t-158.5 -85v-4q78 -18 115 -67t37 -115q0 -129 -99.5 -206t-269.5 -77q-138 0 -250 56v159q126 -71 248 -71q90 0 139.5 37t49.5 106q0 113 -146 113h-108l28 133h93q89 0 142.5 34t53.5 99q0 100 -117 100q-92 0 -188 -65l-68 121 q126 90 291 90q124 0 193 -55.5t69 -153.5z" />
+<glyph unicode="´" horiz-adv-x="1135" d="M508 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="µ" horiz-adv-x="1221" d="M358 307q0 -65 33 -101t96 -36q113 0 209.5 125.5t141.5 337.5l102 473h231l-235 -1106h-184l22 190h-10q-75 -111 -153 -160.5t-165 -49.5q-108 0 -155 81h-8q-9 -73 -39 -235l-66 -318h-233l338 1598h235l-141 -670q-19 -84 -19 -129z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1204 -260h-139v1638h-188v-1638h-140v819q-62 -18 -145 -18q-216 0 -318 125t-102 376q0 260 109 387t342 127h581v-1816z" />
+<glyph unicode="·" horiz-adv-x="551" d="M150 569zM150 692q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
+<glyph unicode="¸" horiz-adv-x="420" d="M236 -264q0 -106 -82 -167t-224 -61q-64 0 -118 15v135q47 -14 96 -14q137 0 137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101z" />
+<glyph unicode="¹" horiz-adv-x="745" d="M532 1462h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103l-77 129z" />
+<glyph unicode="º" horiz-adv-x="721" d="M776 1206q0 -126 -42 -225t-121 -155t-189 -56q-122 0 -191 73t-69 204q0 122 44 221.5t125.5 155t188.5 55.5q124 0 189 -71.5t65 -201.5zM510 1346q-81 0 -132.5 -87.5t-51.5 -216.5q0 -141 112 -141q77 0 127.5 87.5t50.5 219.5q0 138 -106 138z" />
+<glyph unicode="»" horiz-adv-x="1055" d="M975 510l-397 -418l-134 119l287 330l-153 370l180 76l217 -455v-22zM535 530l-385 -432l-140 113l281 348l-146 352l179 76l211 -432v-25z" />
+<glyph unicode="¼" horiz-adv-x="1661" d="M149 0zM1429 1462l-1083 -1462h-197l1085 1462h195zM490 1462h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103l-77 129zM1448 177h-122l-39 -176h-183l39 176h-368l26 137l477 569h197l-121 -563h123zM1172 320l52 221l34 129q-32 -51 -98 -131 l-187 -219h199z" />
+<glyph unicode="½" horiz-adv-x="1661" d="M121 0zM1401 1462l-1083 -1462h-197l1085 1462h195zM461 1462h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103l-77 129zM1464 1h-604l28 135l269 223q111 95 148.5 136t55 77t17.5 74q0 46 -28 72t-76 26q-91 0 -191 -80l-80 123 q68 54 142.5 81.5t168.5 27.5q115 0 183.5 -60t68.5 -155q0 -69 -23.5 -124.5t-74 -110.5t-168.5 -146l-174 -142h371z" />
+<glyph unicode="¾" horiz-adv-x="1683" d="M108 0zM1571 1462l-1083 -1462h-197l1085 1462h195zM1554 177h-122l-39 -176h-183l39 176h-368l26 137l477 569h197l-121 -563h123zM1278 320l52 221l34 129q-32 -51 -98 -131l-187 -219h199zM788 1272q0 -90 -54.5 -149t-158.5 -85v-4q78 -18 115 -67t37 -115 q0 -129 -99.5 -206t-269.5 -77q-138 0 -250 56v159q126 -71 248 -71q90 0 139.5 37t49.5 106q0 113 -146 113h-108l28 133h93q89 0 142.5 34t53.5 99q0 100 -117 100q-92 0 -188 -65l-68 121q126 90 291 90q124 0 193 -55.5t69 -153.5z" />
+<glyph unicode="¿" horiz-adv-x="907" d="M668 643q-25 -146 -79.5 -231t-170.5 -168q-107 -79 -145.5 -118t-57 -79t-18.5 -88q0 -71 42 -114.5t123 -43.5q76 0 149.5 27.5t152.5 65.5l75 -177q-205 -112 -409 -112q-174 0 -269.5 85.5t-95.5 241.5q0 120 64 219t231 216q93 64 141 122.5t70 153.5h197zM766 993 q0 -85 -48 -134.5t-130 -49.5q-56 0 -89.5 32.5t-33.5 92.5q0 78 46.5 129t125.5 51q66 0 97.5 -34t31.5 -87z" />
+<glyph unicode="À" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM915 1579h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="Á" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM707 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Â" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM1157 1579h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Ã" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM967 1579q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5 t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="Ä" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM518 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM901 1718 q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="Å" horiz-adv-x="1210" d="M0 0zM827 406h-485l-209 -406h-254l783 1464h274l166 -1464h-234zM811 614q-40 416 -45.5 503.5t-5.5 139.5q-55 -139 -142 -307l-172 -336h365zM1039 1575q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164t65 164.5t168 61.5q104 0 171 -60.5t67 -163.5zM908 1573 q0 50 -30 78.5t-77 28.5q-45 0 -74.5 -28.5t-29.5 -78.5q0 -49 26.5 -76.5t77.5 -27.5q47 0 77 27.5t30 76.5z" />
+<glyph unicode="Æ" horiz-adv-x="1753" d="M1520 0h-777l86 406h-432l-256 -406h-262l930 1462h1020l-43 -205h-539l-84 -395h504l-43 -200h-502l-98 -459h539zM872 614l138 643h-82l-400 -643h344z" />
+<glyph unicode="Ç" horiz-adv-x="1225" d="M135 0zM924 1278q-154 0 -275 -89t-193.5 -259.5t-72.5 -374.5q0 -180 82.5 -275.5t243.5 -95.5q141 0 329 68v-205q-180 -67 -374 -67q-248 0 -388.5 148.5t-140.5 416.5q0 260 105.5 483t281.5 339t402 116q217 0 389 -92l-94 -195q-63 34 -134 58t-161 24zM791 -264 q0 -106 -82 -167t-224 -61q-64 0 -118 15v135q47 -14 96 -14q137 0 137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101z" />
+<glyph unicode="È" horiz-adv-x="1077" d="M70 0zM846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539zM903 1579h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="É" horiz-adv-x="1077" d="M70 0zM846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539zM633 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Ê" horiz-adv-x="1077" d="M70 0zM846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539zM1130 1579h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Ë" horiz-adv-x="1077" d="M70 0zM846 0h-776l309 1462h776l-43 -205h-539l-84 -395h502l-41 -203h-504l-96 -456h539zM479 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM862 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="Ì" horiz-adv-x="608" d="M70 0zM70 0l311 1462h235l-311 -1462h-235zM630 1579h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="Í" horiz-adv-x="608" d="M70 0zM70 0l311 1462h235l-311 -1462h-235zM415 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Î" horiz-adv-x="608" d="M70 0zM70 0l311 1462h235l-311 -1462h-235zM873 1579h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Ï" horiz-adv-x="608" d="M70 0zM70 0l311 1462h235l-311 -1462h-235zM243 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM626 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z " />
+<glyph unicode="Ð" horiz-adv-x="1374" d="M1311 893q0 -271 -100 -473t-291 -311t-449 -109h-401l129 623h-146l45 200h144l137 639h369q271 0 417 -145t146 -424zM483 201q177 0 309 86t202.5 242t70.5 356q0 184 -88 280.5t-256 96.5h-146l-94 -439h285l-45 -200h-283l-90 -422h135z" />
+<glyph unicode="Ñ" horiz-adv-x="1491" d="M68 0zM1192 0h-260l-410 1163h-6l-10 -69q-24 -149 -35.5 -212.5t-183.5 -881.5h-219l309 1462h268l399 -1149h7q6 54 31 192.5t40 203.5l160 753h219zM1108 1579q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285 q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="Ò" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM1029 1579h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="Ó" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM787 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Ô" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM1268 1579h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Õ" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM1069 1579q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="Ö" horiz-adv-x="1485" d="M135 0zM1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q251 0 390.5 -149t139.5 -414zM872 1280q-138 0 -250 -96t-175.5 -266.5t-63.5 -372.5q0 -173 81.5 -267t227.5 -94q138 0 248.5 95.5 t172 265t61.5 375.5q0 170 -79 265t-223 95zM623 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM1006 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z " />
+<glyph unicode="×" d="M457 723l-310 311l125 125l312 -309l313 309l127 -123l-315 -313l311 -313l-123 -123l-313 309l-312 -307l-122 123z" />
+<glyph unicode="Ø" horiz-adv-x="1485" d="M1421 922q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-193 0 -318 83l-118 -149l-133 104l129 160q-103 138 -103 365q0 267 98.5 487.5t269.5 337.5t388 117q189 0 317 -94l119 149l133 -104l-133 -166q94 -130 94 -348zM872 1282q-141 0 -253 -93t-177 -265 t-65 -379q0 -88 24 -164l668 836q-80 65 -197 65zM1180 920q0 88 -19 143l-661 -825q75 -56 194 -56q139 0 250.5 95.5t173.5 264.5t62 378z" />
+<glyph unicode="Ù" horiz-adv-x="1399" d="M152 0zM1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237zM996 1579h-144q-65 63 -132 151.5 t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="Ú" horiz-adv-x="1399" d="M152 0zM1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237zM791 1604q97 108 225 303h264v-19 q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Û" horiz-adv-x="1399" d="M152 0zM1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237zM1249 1579h-152q-76 63 -161 178 q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="Ü" horiz-adv-x="1399" d="M152 0zM1419 1462l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 106t-118.5 305q0 83 20 170l193 901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 261.5l199 936h237zM602 1718q0 60 35 98t98 38q48 0 76.5 -23.5 t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM985 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="Ý" horiz-adv-x="1092" d="M186 0zM582 793l432 669h266l-623 -913l-114 -549h-238l119 553l-238 909h242zM610 1604q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="Þ" horiz-adv-x="1174" d="M1124 817q0 -243 -166.5 -377.5t-476.5 -134.5h-108l-66 -305h-237l309 1462h237l-51 -243h97q227 0 344.5 -101t117.5 -301zM414 506h96q176 0 274.5 78.5t98.5 226.5q0 109 -59.5 158t-180.5 49h-121z" />
+<glyph unicode="ß" horiz-adv-x="1266" d="M-117 -492q-69 0 -141 23v193q61 -21 113 -21q65 0 106.5 43.5t63.5 147.5l262 1234q48 231 173 333t349 102q188 0 292.5 -80t104.5 -215q0 -169 -179 -299q-118 -87 -148.5 -119.5t-30.5 -67.5q0 -44 74 -101q107 -84 143 -127t55 -92.5t19 -109.5q0 -172 -116 -272 t-314 -100q-182 0 -283 65v201q126 -86 252 -86q105 0 164 44t59 124q0 48 -23.5 85t-111.5 107q-82 64 -121 121.5t-39 126.5q0 75 44.5 139t135.5 124q98 66 138.5 112t40.5 98q0 65 -47 101t-132 36q-210 0 -262 -239l-264 -1260q-42 -197 -134.5 -284t-242.5 -87z" />
+<glyph unicode="à" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM847 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="á" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM598 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="â" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM1064 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="ã" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM870 1241q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="ä" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM425 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM808 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37 q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="å" horiz-adv-x="1186" d="M94 0zM399 -20q-141 0 -223 101.5t-82 285.5q0 202 69.5 378t191.5 278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 176h-6q-158 -196 -349 -196zM485 170q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5t-123 53.5q-85 0 -160 -77 t-120 -209.5t-45 -274.5q0 -102 40.5 -152.5t112.5 -50.5zM988 1466q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164t65 164.5t168 61.5q104 0 171 -60.5t67 -163.5zM857 1464q0 50 -30 78.5t-77 28.5q-45 0 -74.5 -28.5t-29.5 -78.5q0 -49 26.5 -76.5t77.5 -27.5 q47 0 77 27.5t30 76.5z" />
+<glyph unicode="æ" horiz-adv-x="1726" d="M1186 -20q-222 0 -305 137l-23 -117h-151l20 176h-8q-85 -106 -165.5 -151t-174.5 -45q-134 0 -209.5 103t-75.5 284q0 201 69 378t188.5 279t260.5 102q88 0 152 -43.5t108 -134.5h9l63 158h148l-25 -117q51 63 131 100t180 37q140 0 220.5 -76.5t80.5 -201.5 q0 -182 -166.5 -284.5t-474.5 -102.5h-45l-4 -60q0 -117 60.5 -177t175.5 -60q125 0 305 84v-189q-175 -79 -344 -79zM465 170q85 0 162.5 80.5t125.5 215.5t48 267q0 91 -38.5 146t-113.5 55q-85 0 -159.5 -80t-116 -211t-41.5 -270q0 -105 37 -154t96 -49zM1333 946 q-103 0 -188.5 -86t-122.5 -227h31q187 0 293 53.5t106 149.5q0 58 -34 84t-85 26z" />
+<glyph unicode="ç" horiz-adv-x="954" d="M94 0zM506 -20q-196 0 -304 106t-108 303q0 207 73.5 376.5t206.5 265t302 95.5q164 0 297 -61l-70 -184q-122 53 -221 53q-150 0 -250 -153.5t-100 -379.5q0 -111 56 -171t155 -60q74 0 138.5 22t129.5 54v-195q-140 -71 -305 -71zM621 -264q0 -106 -82 -167t-224 -61 q-64 0 -118 15v135q47 -14 96 -14q137 0 137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101z" />
+<glyph unicode="è" horiz-adv-x="1075" d="M94 0zM664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5zM813 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="é" horiz-adv-x="1075" d="M94 0zM664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5zM557 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="ê" horiz-adv-x="1075" d="M94 0zM664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5zM1033 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="ë" horiz-adv-x="1075" d="M94 0zM664 946q-96 0 -180.5 -86t-121.5 -227h29q188 0 294 53.5t106 151.5q0 51 -32 79.5t-95 28.5zM512 -20q-197 0 -307.5 111t-110.5 310q0 198 77.5 368.5t210 263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 -102.5h-43l-2 -31v-29 q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 -44 -176.5 -62.5t-179.5 -18.5zM388 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM771 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ì" horiz-adv-x="563" d="M47 0zM283 0h-236l236 1106h235zM536 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="í" horiz-adv-x="563" d="M47 0zM283 0h-236l236 1106h235zM308 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="î" horiz-adv-x="563" d="M47 0zM283 0h-236l236 1106h235zM777 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="ï" horiz-adv-x="563" d="M47 0zM283 0h-236l236 1106h235zM142 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM525 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ð" horiz-adv-x="1174" d="M647 1325q-44 41 -135 96l106 152q129 -72 209 -146l250 138l70 -127l-217 -121q155 -205 155 -512q0 -255 -73 -444.5t-204 -285t-312 -95.5q-197 0 -306.5 107t-109.5 302q0 162 65.5 299t184.5 215t266 78q96 0 168 -38.5t113 -108.5h6q-10 243 -133 383l-250 -142 l-72 129zM508 162q92 0 161.5 59.5t108.5 159t39 205.5q0 97 -52 155t-144 58q-91 0 -160.5 -56t-106.5 -153.5t-37 -212.5q0 -104 49 -159.5t142 -55.5z" />
+<glyph unicode="ñ" horiz-adv-x="1208" d="M47 0zM702 0l142 672q18 90 18 131q0 131 -129 131q-72 0 -142 -57t-126 -164.5t-84 -243.5l-98 -469h-236l236 1106h184l-21 -205h9q83 118 171 171.5t191 53.5q134 0 207.5 -76t73.5 -216q0 -69 -23 -181l-137 -653h-236zM889 1241q-45 0 -82.5 17t-71.5 37.5 t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="ò" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM821 1241h-144q-65 63 -132 151.5t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="ó" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM580 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="ô" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM1054 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="õ" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM854 1241q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode="ö" horiz-adv-x="1174" d="M94 0zM842 702q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5t-114 -194t-40.5 -261.5q0 -111 49.5 -170t146.5 -59q90 0 162 68t112 190.5t40 269.5zM1079 692q0 -202 -73 -367.5t-200.5 -254t-293.5 -88.5q-192 0 -305 114.5t-113 311.5q0 199 71.5 365t200.5 258.5 t298 92.5q195 0 305 -116t110 -316zM409 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM792 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="÷" d="M117 631v180h936v-180h-936zM459 373q0 64 31.5 99.5t93.5 35.5t94.5 -36t32.5 -99q0 -64 -34.5 -100.5t-92.5 -36.5t-91.5 35.5t-33.5 101.5zM459 1071q0 64 31.5 99.5t93.5 35.5t94.5 -36t32.5 -99q0 -64 -34.5 -100.5t-92.5 -36.5t-91.5 35.5t-33.5 101.5z" />
+<glyph unicode="ø" horiz-adv-x="1174" d="M1077 700q0 -208 -74 -376t-200.5 -255t-288.5 -87q-137 0 -235 59l-105 -131l-123 96l115 141q-70 104 -70 261q0 200 70.5 365t199.5 258t298 93q136 0 239 -61l86 108l125 -96l-100 -117q63 -100 63 -258zM653 936q-141 0 -235 -145.5t-94 -364.5q0 -39 8 -74l442 549 q-45 35 -121 35zM528 168q89 0 163 66.5t116.5 184t42.5 257.5q0 45 -6 67l-436 -542q41 -33 120 -33z" />
+<glyph unicode="ù" horiz-adv-x="1208" d="M111 0zM506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236zM823 1241h-144q-65 63 -132 151.5 t-101 155.5v21h245q47 -154 132 -303v-25z" />
+<glyph unicode="ú" horiz-adv-x="1208" d="M111 0zM506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236zM623 1266q97 108 225 303h264v-19 q-54 -66 -158 -161.5t-175 -147.5h-156v25z" />
+<glyph unicode="û" horiz-adv-x="1208" d="M111 0zM506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236zM1083 1241h-152q-76 63 -161 178 q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="ü" horiz-adv-x="1208" d="M111 0zM506 1106l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 0 -207 76t-73 218q0 63 12 124.5t24 123.5l123 584h236zM432 1380q0 60 35 98t98 38 q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM815 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ý" horiz-adv-x="1004" d="M0 0zM100 1106h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 19v188q75 -16 125 -16q74 0 134 43.5t124 155.5l51 92zM501 1266q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5 h-156v25z" />
+<glyph unicode="þ" horiz-adv-x="1200" d="M586 -20q-94 0 -165 45.5t-114 130.5h-8q-7 -91 -25 -185l-96 -463h-233l432 2048h235q-48 -223 -73 -339t-76 -291h8q155 200 328 200q144 0 224.5 -102t80.5 -287q0 -204 -68 -381.5t-184.5 -276.5t-265.5 -99zM707 934q-84 0 -163 -81t-127 -213.5t-48 -266.5 q0 -98 46 -150.5t132 -52.5t159.5 77t116.5 209t43 277q0 100 -41 150.5t-118 50.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1004" d="M0 0zM100 1106h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 19v188q75 -16 125 -16q74 0 134 43.5t124 155.5l51 92zM323 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM706 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ı" horiz-adv-x="563" d="M283 0h-236l236 1106h235z" />
+<glyph unicode="Œ" horiz-adv-x="1798" d="M1565 0h-717q-84 -20 -170 -20q-259 0 -401 149.5t-142 413.5q0 267 98.5 487.5t269.5 337.5t388 117q145 0 223 -23h760l-43 -205h-539l-84 -395h504l-43 -200h-504l-96 -459h539zM692 184q74 0 139 27l222 1038q-68 31 -181 31q-138 0 -250 -96t-175.5 -266.5 t-63.5 -372.5q0 -173 81.5 -267t227.5 -94z" />
+<glyph unicode="œ" horiz-adv-x="1788" d="M1225 -20q-120 0 -212.5 46t-140.5 138q-137 -182 -374 -182q-186 0 -295 115.5t-109 312.5q0 206 73.5 372.5t201 254t293.5 87.5q237 0 335 -192q73 91 174 142.5t226 51.5q159 0 246.5 -74.5t87.5 -203.5q0 -183 -165.5 -285t-471.5 -102h-47l-3 -60q0 -111 56.5 -174 t169.5 -63q69 0 134.5 17.5t176.5 66.5v-189q-91 -43 -175 -61t-181 -18zM647 930q-87 0 -157.5 -64t-114 -186.5t-43.5 -267.5q0 -116 48.5 -177t139.5 -61q143 0 229.5 146.5t86.5 381.5q0 111 -49.5 169.5t-139.5 58.5zM1386 946q-105 0 -192 -85.5t-121 -227.5h31 q189 0 294 54t105 155q0 48 -30 76t-87 28z" />
+<glyph unicode="Ÿ" horiz-adv-x="1092" d="M186 0zM582 793l432 669h266l-623 -913l-114 -549h-238l119 553l-238 909h242zM440 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM823 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102 t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="ˆ" horiz-adv-x="1135" d="M1067 1241h-152q-76 63 -161 178q-131 -110 -236 -178h-164v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M1012 1466q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164t65 164.5t168 61.5q104 0 171 -60.5t67 -163.5zM881 1464q0 50 -30 78.5t-77 28.5q-45 0 -74.5 -28.5t-29.5 -78.5q0 -49 26.5 -76.5t77.5 -27.5q47 0 77 27.5t30 76.5z" />
+<glyph unicode="˜" horiz-adv-x="1135" d="M852 1241q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="‑" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="‒" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="–" horiz-adv-x="983" d="M47 453l43 194h838l-43 -194h-838z" />
+<glyph unicode="—" horiz-adv-x="1966" d="M47 453l43 194h1821l-43 -194h-1821z" />
+<glyph unicode="‘" horiz-adv-x="393" d="M125 961l-6 22q34 76 106.5 209t159.5 270h176q-122 -286 -199 -501h-237z" />
+<glyph unicode="’" horiz-adv-x="393" d="M551 1462l8 -22q-37 -83 -110.5 -217.5t-155.5 -261.5h-178q43 95 106 255t92 246h238z" />
+<glyph unicode="‚" horiz-adv-x="530" d="M334 238l8 -23q-108 -233 -266 -479h-178q105 238 200 502h236z" />
+<glyph unicode="“" horiz-adv-x="803" d="M535 961l-9 22q84 190 267 479h176q-122 -286 -199 -501h-235zM125 961l-6 22q34 76 106.5 209t159.5 270h176q-122 -286 -199 -501h-237z" />
+<glyph unicode="”" horiz-adv-x="803" d="M551 1462l8 -22q-37 -83 -110.5 -217.5t-155.5 -261.5h-178q43 95 106 255t92 246h238zM958 1462l9 -22q-98 -220 -269 -479h-176q51 114 109 261t90 240h237z" />
+<glyph unicode="„" horiz-adv-x="938" d="M334 238l8 -23q-108 -233 -266 -479h-178q105 238 200 502h236zM741 238l9 -23q-92 -206 -267 -479h-176q120 281 199 502h235z" />
+<glyph unicode="•" horiz-adv-x="756" d="M152 684q0 156 83.5 252t223.5 96q100 0 158.5 -54.5t58.5 -168.5q0 -156 -82 -252t-227 -96q-102 0 -158.5 57.5t-56.5 165.5z" />
+<glyph unicode="…" horiz-adv-x="1634" d="M293 0zM834 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5zM594 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5zM293 94 q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="621" d="M80 573l395 422l135 -118l-288 -334l153 -367l-178 -76l-217 449v24z" />
+<glyph unicode="›" horiz-adv-x="621" d="M541 514l-396 -422l-135 119l289 334l-154 366l179 76l217 -448v-25z" />
+<glyph unicode="⁄" horiz-adv-x="262" d="M770 1462l-1083 -1462h-197l1085 1462h195z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="745" d="M743 762h-122l-39 -176h-183l39 176h-368l26 137l477 569h197l-121 -563h123zM467 905l52 221l34 129q-32 -51 -98 -131l-187 -219h199z" />
+<glyph unicode="€" d="M913 1282q-118 0 -214.5 -87t-161.5 -255h387l-33 -154h-402q-18 -67 -28 -139h340l-33 -155h-319q0 -161 60.5 -234.5t195.5 -73.5q120 0 258 60v-203q-129 -61 -306 -61q-216 0 -330 130t-114 382h-162l33 155h139q15 95 27 139h-137l32 154h148q92 260 255.5 401.5 t371.5 141.5q88 0 164.5 -22t156.5 -77l-102 -180q-54 34 -107 56t-119 22z" />
+<glyph unicode="™" horiz-adv-x="1534" d="M455 741h-146v594h-196v127h540v-127h-198v-594zM1030 741l-178 539h-6l4 -115v-424h-141v721h215l170 -534l182 534h205v-721h-146v418l4 121h-6l-184 -539h-119z" />
+<glyph unicode="" horiz-adv-x="1105" d="M0 1105h1105v-1105h-1105v1105z" />
+<glyph horiz-adv-x="1198" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.ttf
new file mode 100755
index 0000000..d2d6318
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.woff
new file mode 100755
index 0000000..d4dfca4
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.eot
new file mode 100755
index 0000000..d8375dd
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.svg
new file mode 100755
index 0000000..eec4db8
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.svg
@@ -0,0 +1,1830 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="open_sanssemibold" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode="fi" horiz-adv-x="1315" d="M35 0zM723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1146 0h-235v1106h235v-1106zM897 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97 q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5z" />
+<glyph unicode="fl" horiz-adv-x="1315" d="M35 0zM723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1146 0h-235v1556h235v-1556z" />
+<glyph unicode="ffi" horiz-adv-x="2058" d="M35 0zM723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1466 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41 l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1890 0h-235v1106h235v-1106zM1641 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5z" />
+<glyph unicode="ffl" horiz-adv-x="2058" d="M35 0zM723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1466 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41 l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178zM1890 0h-235v1556h235v-1556z" />
+<glyph horiz-adv-x="2048" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode="
" horiz-adv-x="1044" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="	" horiz-adv-x="532" />
+<glyph unicode=" " horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="565" d="M371 444h-174l-52 1018h277zM133 125q0 74 39 112.5t111 38.5q71 0 109 -40t38 -111t-38.5 -112.5t-108.5 -41.5q-71 0 -110.5 40t-39.5 114z" />
+<glyph unicode=""" horiz-adv-x="893" d="M365 1462l-41 -528h-150l-41 528h232zM760 1462l-41 -528h-150l-41 528h232z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M989 870l-55 -284h270v-168h-303l-80 -418h-178l80 418h-248l-80 -418h-174l76 418h-250v168h283l57 284h-264v168h293l80 422h180l-80 -422h252l80 422h174l-80 -422h252v-168h-285zM506 586h250l57 284h-250z" />
+<glyph unicode="$" d="M1063 453q0 -145 -106 -239t-306 -116v-217h-133v211q-248 4 -407 76v211q86 -42 201 -70.5t206 -29.5v374l-84 31q-164 63 -239.5 150.5t-75.5 216.5q0 138 107.5 227t291.5 108v168h133v-165q203 -7 385 -82l-73 -183q-157 62 -312 74v-364l76 -29q190 -73 263 -154 t73 -198zM827 438q0 58 -40.5 95.5t-135.5 72.5v-319q176 27 176 151zM354 1053q0 -57 35.5 -95t128.5 -75v311q-80 -12 -122 -49t-42 -92z" />
+<glyph unicode="%" horiz-adv-x="1765" d="M279 1024q0 -149 29 -222t95 -73q132 0 132 295t-132 295q-66 0 -95 -73t-29 -222zM729 1026q0 -230 -82.5 -345.5t-243.5 -115.5q-152 0 -235.5 119.5t-83.5 341.5q0 457 319 457q157 0 241.5 -118.5t84.5 -338.5zM1231 440q0 -149 29.5 -223t95.5 -74q131 0 131 297 q0 293 -131 293q-66 0 -95.5 -72t-29.5 -221zM1681 440q0 -230 -83 -345t-242 -115q-152 0 -236 118.5t-84 341.5q0 457 320 457q154 0 239.5 -118t85.5 -339zM1384 1462l-811 -1462h-194l811 1462h194z" />
+<glyph unicode="&" horiz-adv-x="1516" d="M451 1147q0 -63 33.5 -119t93.5 -119q113 64 158.5 119.5t45.5 124.5q0 65 -43.5 104t-115.5 39q-79 0 -125.5 -40.5t-46.5 -108.5zM600 182q183 0 313 107l-383 377q-106 -68 -146 -127.5t-40 -135.5q0 -98 69.5 -159.5t186.5 -61.5zM96 387q0 131 64 228.5t231 193.5 q-95 111 -129.5 187.5t-34.5 158.5q0 152 108.5 240t291.5 88q177 0 278 -85.5t101 -230.5q0 -114 -67.5 -207t-225.5 -186l346 -334q81 107 135 314h242q-70 -284 -224 -463l301 -291h-303l-149 145q-102 -82 -217.5 -123.5t-255.5 -41.5q-230 0 -361 109t-131 298z" />
+<glyph unicode="'" horiz-adv-x="498" d="M365 1462l-41 -528h-150l-41 528h232z" />
+<glyph unicode="(" horiz-adv-x="649" d="M82 561q0 265 77.5 496t223.5 405h205q-139 -188 -213 -421.5t-74 -477.5t74 -473t211 -414h-203q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="649" d="M567 561q0 -263 -77.5 -490t-223.5 -395h-203q138 187 211.5 415t73.5 472q0 245 -74 477.5t-213 421.5h205q147 -175 224 -406.5t77 -494.5z" />
+<glyph unicode="*" horiz-adv-x="1122" d="M672 1556l-41 -382l385 108l28 -217l-360 -29l236 -311l-199 -107l-166 338l-149 -338l-205 107l231 311l-358 29l35 217l376 -108l-41 382h228z" />
+<glyph unicode="+" d="M494 633h-398v178h398v408h180v-408h399v-178h-399v-406h-180v406z" />
+<glyph unicode="," horiz-adv-x="547" d="M412 215q-48 -186 -176 -479h-173q69 270 103 502h231z" />
+<glyph unicode="-" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="." horiz-adv-x="563" d="M133 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="/" horiz-adv-x="799" d="M782 1462l-544 -1462h-222l545 1462h221z" />
+<glyph unicode="0" d="M1081 731q0 -381 -122.5 -566t-374.5 -185q-244 0 -370 191t-126 560q0 387 122.5 570.5t373.5 183.5q245 0 371 -192t126 -562zM326 731q0 -299 61.5 -427t196.5 -128t197.5 130t62.5 425q0 294 -62.5 425.5t-197.5 131.5t-196.5 -129t-61.5 -428z" />
+<glyph unicode="1" d="M780 0h-235v944q0 169 8 268q-23 -24 -56.5 -53t-224.5 -184l-118 149l430 338h196v-1462z" />
+<glyph unicode="2" d="M1081 0h-991v178l377 379q167 171 221.5 242.5t79.5 134.5t25 135q0 99 -59.5 156t-164.5 57q-84 0 -162.5 -31t-181.5 -112l-127 155q122 103 237 146t245 43q204 0 327 -106.5t123 -286.5q0 -99 -35.5 -188t-109 -183.5t-244.5 -255.5l-254 -246v-10h694v-207z" />
+<glyph unicode="3" d="M1026 1126q0 -139 -81 -231.5t-228 -124.5v-8q176 -22 264 -109.5t88 -232.5q0 -211 -149 -325.5t-424 -114.5q-243 0 -410 79v209q93 -46 197 -71t200 -25q170 0 254 63t84 195q0 117 -93 172t-292 55h-127v191h129q350 0 350 242q0 94 -61 145t-180 51 q-83 0 -160 -23.5t-182 -91.5l-115 164q201 148 467 148q221 0 345 -95t124 -262z" />
+<glyph unicode="4" d="M1133 319h-197v-319h-229v319h-668v181l668 966h229v-952h197v-195zM707 514v367q0 196 10 321h-8q-28 -66 -88 -160l-363 -528h449z" />
+<glyph unicode="5" d="M586 913q221 0 350 -117t129 -319q0 -234 -146.5 -365.5t-416.5 -131.5q-245 0 -385 79v213q81 -46 186 -71t195 -25q159 0 242 71t83 208q0 262 -334 262q-47 0 -116 -9.5t-121 -21.5l-105 62l56 714h760v-209h-553l-33 -362q35 6 85.5 14t123.5 8z" />
+<glyph unicode="6" d="M94 623q0 858 699 858q110 0 186 -17v-196q-76 22 -176 22q-235 0 -353 -126t-128 -404h12q47 81 132 125.5t200 44.5q199 0 310 -122t111 -331q0 -230 -128.5 -363.5t-350.5 -133.5q-157 0 -273 75.5t-178.5 220t-62.5 347.5zM604 174q121 0 186.5 78t65.5 223 q0 126 -61.5 198t-184.5 72q-76 0 -140 -32.5t-101 -89t-37 -115.5q0 -141 76.5 -237.5t195.5 -96.5z" />
+<glyph unicode="7" d="M256 0l578 1253h-760v207h1011v-164l-575 -1296h-254z" />
+<glyph unicode="8" d="M584 1481q208 0 329 -95.5t121 -255.5q0 -225 -270 -358q172 -86 244.5 -181t72.5 -212q0 -181 -133 -290t-360 -109q-238 0 -369 102t-131 289q0 122 68.5 219.5t224.5 173.5q-134 80 -191 169t-57 200q0 159 125 253.5t326 94.5zM313 379q0 -104 73 -161.5t198 -57.5 q129 0 200.5 59.5t71.5 161.5q0 81 -66 148t-200 124l-29 13q-132 -58 -190 -127.5t-58 -159.5zM582 1300q-100 0 -161 -49.5t-61 -134.5q0 -52 22 -93t64 -74.5t142 -80.5q120 53 169.5 111.5t49.5 136.5q0 85 -61.5 134.5t-163.5 49.5z" />
+<glyph unicode="9" d="M1079 838q0 -432 -174 -645t-524 -213q-133 0 -191 16v197q89 -25 179 -25q238 0 355 128t128 402h-12q-59 -90 -142.5 -130t-195.5 -40q-194 0 -305 121t-111 332q0 229 128.5 364.5t350.5 135.5q156 0 272 -76t179 -220.5t63 -346.5zM569 1286q-122 0 -187 -79.5 t-65 -223.5q0 -125 60.5 -196.5t183.5 -71.5q119 0 200 71t81 166q0 89 -34.5 166.5t-96.5 122.5t-142 45z" />
+<glyph unicode=":" horiz-adv-x="563" d="M133 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM133 979q0 151 148 151q75 0 112 -40t37 -111t-38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode=";" horiz-adv-x="569" d="M397 238l15 -23q-48 -186 -176 -479h-173q69 270 103 502h231zM131 979q0 151 148 151q75 0 112 -40t37 -111t-38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="<" d="M1073 221l-977 430v121l977 488v-195l-733 -344l733 -303v-197z" />
+<glyph unicode="=" d="M102 831v179h963v-179h-963zM102 432v178h963v-178h-963z" />
+<glyph unicode=">" d="M96 418l733 303l-733 344v195l977 -488v-121l-977 -430v197z" />
+<glyph unicode="?" horiz-adv-x="928" d="M283 444v64q0 110 40 183t140 151q119 94 153.5 146t34.5 124q0 84 -56 129t-161 45q-95 0 -176 -27t-158 -65l-84 176q203 113 435 113q196 0 311 -96t115 -265q0 -75 -22 -133.5t-66.5 -111.5t-153.5 -138q-93 -73 -124.5 -121t-31.5 -129v-45h-196zM242 125 q0 151 147 151q72 0 110 -39.5t38 -111.5q0 -71 -38.5 -112.5t-109.5 -41.5t-109 40.5t-38 113.5z" />
+<glyph unicode="@" horiz-adv-x="1839" d="M1726 739q0 -143 -45 -261.5t-126.5 -184.5t-188.5 -66q-79 0 -137 42t-78 114h-12q-49 -78 -121 -117t-162 -39q-163 0 -256.5 105t-93.5 284q0 206 124 334.5t333 128.5q76 0 168.5 -13.5t164.5 -37.5l-22 -465v-24q0 -160 104 -160q79 0 125.5 102t46.5 260 q0 171 -70 300.5t-199 199.5t-296 70q-213 0 -370.5 -88t-240.5 -251.5t-83 -379.5q0 -290 155 -446t445 -156q221 0 461 90v-164q-210 -86 -457 -86q-370 0 -577 199.5t-207 556.5q0 261 112 464.5t310.5 311.5t449.5 108q217 0 386.5 -90t263 -256.5t93.5 -384.5zM698 612 q0 -233 183 -233q193 0 211 293l12 239q-63 17 -135 17q-128 0 -199.5 -85t-71.5 -231z" />
+<glyph unicode="A" horiz-adv-x="1354" d="M1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426z" />
+<glyph unicode="B" horiz-adv-x="1352" d="M193 1462h434q302 0 436.5 -88t134.5 -278q0 -128 -66 -213t-190 -107v-10q154 -29 226.5 -114.5t72.5 -231.5q0 -197 -137.5 -308.5t-382.5 -111.5h-528v1462zM432 858h230q150 0 219 47.5t69 161.5q0 103 -74.5 149t-236.5 46h-207v-404zM432 664v-463h254 q150 0 226.5 57.5t76.5 181.5q0 114 -78 169t-237 55h-242z" />
+<glyph unicode="C" horiz-adv-x="1298" d="M815 1278q-206 0 -324 -146t-118 -403q0 -269 113.5 -407t328.5 -138q93 0 180 18.5t181 47.5v-205q-172 -65 -390 -65q-321 0 -493 194.5t-172 556.5q0 228 83.5 399t241.5 262t371 91q224 0 414 -94l-86 -199q-74 35 -156.5 61.5t-173.5 26.5z" />
+<glyph unicode="D" horiz-adv-x="1503" d="M1382 745q0 -362 -201 -553.5t-579 -191.5h-409v1462h452q349 0 543 -188t194 -529zM1130 737q0 525 -491 525h-207v-1061h170q528 0 528 536z" />
+<glyph unicode="E" horiz-adv-x="1143" d="M1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203z" />
+<glyph unicode="F" horiz-adv-x="1090" d="M430 0h-237v1462h825v-202h-588v-457h551v-203h-551v-600z" />
+<glyph unicode="G" horiz-adv-x="1487" d="M791 793h538v-734q-132 -43 -253.5 -61t-262.5 -18q-332 0 -512 196.5t-180 554.5q0 353 203 552.5t559 199.5q229 0 434 -88l-84 -199q-178 82 -356 82q-234 0 -370 -147t-136 -402q0 -268 122.5 -407.5t352.5 -139.5q116 0 248 29v377h-303v205z" />
+<glyph unicode="H" horiz-adv-x="1538" d="M1346 0h-240v659h-674v-659h-239v1462h239v-598h674v598h240v-1462z" />
+<glyph unicode="I" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239z" />
+<glyph unicode="J" horiz-adv-x="612" d="M8 -408q-98 0 -164 25v201q84 -21 146 -21q196 0 196 248v1417h240v-1409q0 -224 -106.5 -342.5t-311.5 -118.5z" />
+<glyph unicode="K" horiz-adv-x="1309" d="M1309 0h-277l-459 662l-141 -115v-547h-239v1462h239v-698q98 120 195 231l395 467h272q-383 -450 -549 -641z" />
+<glyph unicode="L" horiz-adv-x="1110" d="M193 0v1462h239v-1257h619v-205h-858z" />
+<glyph unicode="M" horiz-adv-x="1890" d="M825 0l-424 1221h-8q17 -272 17 -510v-711h-217v1462h337l406 -1163h6l418 1163h338v-1462h-230v723q0 109 5.5 284t9.5 212h-8l-439 -1219h-211z" />
+<glyph unicode="N" horiz-adv-x="1604" d="M1411 0h-293l-719 1165h-8l5 -65q14 -186 14 -340v-760h-217v1462h290l717 -1159h6q-2 23 -8 167.5t-6 225.5v766h219v-1462z" />
+<glyph unicode="O" horiz-adv-x="1612" d="M1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z" />
+<glyph unicode="P" horiz-adv-x="1260" d="M1161 1020q0 -229 -150 -351t-427 -122h-152v-547h-239v1462h421q274 0 410.5 -112t136.5 -330zM432 748h127q184 0 270 64t86 200q0 126 -77 188t-240 62h-166v-514z" />
+<glyph unicode="Q" horiz-adv-x="1612" d="M1491 733q0 -266 -101.5 -448t-295.5 -256l350 -377h-322l-276 328h-39q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139 q-215 0 -324.5 -139t-109.5 -408z" />
+<glyph unicode="R" horiz-adv-x="1309" d="M432 782h166q167 0 242 62t75 184q0 124 -81 178t-244 54h-158v-478zM432 584v-584h-239v1462h413q283 0 419 -106t136 -320q0 -273 -284 -389l413 -647h-272l-350 584h-236z" />
+<glyph unicode="S" horiz-adv-x="1126" d="M1036 397q0 -195 -141 -306t-389 -111t-406 77v226q100 -47 212.5 -74t209.5 -27q142 0 209.5 54t67.5 145q0 82 -62 139t-256 135q-200 81 -282 185t-82 250q0 183 130 288t349 105q210 0 418 -92l-76 -195q-195 82 -348 82q-116 0 -176 -50.5t-60 -133.5 q0 -57 24 -97.5t79 -76.5t198 -95q161 -67 236 -125t110 -131t35 -172z" />
+<glyph unicode="T" horiz-adv-x="1159" d="M698 0h-239v1257h-430v205h1099v-205h-430v-1257z" />
+<glyph unicode="U" horiz-adv-x="1520" d="M1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239z" />
+<glyph unicode="V" horiz-adv-x="1274" d="M1026 1462h248l-512 -1462h-252l-510 1462h246l305 -909q24 -65 51 -167.5t35 -152.5q13 76 40 176t44 148z" />
+<glyph unicode="W" horiz-adv-x="1937" d="M1542 0h-260l-248 872q-16 57 -40 164.5t-29 149.5q-10 -64 -32.5 -166t-37.5 -152l-242 -868h-260l-189 732l-192 730h244l209 -852q49 -205 70 -362q11 85 33 190t40 170l238 854h237l244 -858q35 -119 74 -356q15 143 72 364l208 850h242z" />
+<glyph unicode="X" horiz-adv-x="1274" d="M1270 0h-275l-366 598l-369 -598h-256l485 758l-454 704h266l338 -553l338 553h258l-457 -708z" />
+<glyph unicode="Y" horiz-adv-x="1212" d="M606 795l346 667h260l-487 -895v-567h-240v559l-485 903h260z" />
+<glyph unicode="Z" horiz-adv-x="1178" d="M1112 0h-1046v166l737 1091h-717v205h1006v-168l-740 -1089h760v-205z" />
+<glyph unicode="[" horiz-adv-x="676" d="M625 -324h-471v1786h471v-176h-256v-1433h256v-177z" />
+<glyph unicode="\" horiz-adv-x="799" d="M238 1462l544 -1462h-221l-545 1462h222z" />
+<glyph unicode="]" horiz-adv-x="676" d="M51 -147h256v1433h-256v176h469v-1786h-469v177z" />
+<glyph unicode="^" horiz-adv-x="1100" d="M29 535l436 935h121l485 -935h-194l-349 694l-307 -694h-192z" />
+<glyph unicode="_" horiz-adv-x="879" d="M883 -319h-887v135h887v-135z" />
+<glyph unicode="`" horiz-adv-x="1212" d="M690 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="a" horiz-adv-x="1188" d="M860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5z" />
+<glyph unicode="b" horiz-adv-x="1276" d="M733 1126q207 0 322.5 -150t115.5 -421q0 -272 -117 -423.5t-325 -151.5q-210 0 -326 151h-16l-43 -131h-176v1556h235v-370q0 -41 -4 -122t-6 -103h10q112 165 330 165zM672 934q-142 0 -204.5 -83.5t-64.5 -279.5v-16q0 -202 64 -292.5t209 -90.5q125 0 189.5 99 t64.5 286q0 377 -258 377z" />
+<glyph unicode="c" horiz-adv-x="1014" d="M614 -20q-251 0 -381.5 146.5t-130.5 420.5q0 279 136.5 429t394.5 150q175 0 315 -65l-71 -189q-149 58 -246 58q-287 0 -287 -381q0 -186 71.5 -279.5t209.5 -93.5q157 0 297 78v-205q-63 -37 -134.5 -53t-173.5 -16z" />
+<glyph unicode="d" horiz-adv-x="1276" d="M541 -20q-207 0 -323 150t-116 421q0 272 117.5 423.5t325.5 151.5q218 0 332 -161h12q-17 119 -17 188v403h236v-1556h-184l-41 145h-11q-113 -165 -331 -165zM604 170q145 0 211 81.5t68 264.5v33q0 209 -68 297t-213 88q-124 0 -191 -100.5t-67 -286.5 q0 -184 65 -280.5t195 -96.5z" />
+<glyph unicode="e" horiz-adv-x="1180" d="M651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5t-176 70.5 z" />
+<glyph unicode="f" horiz-adv-x="743" d="M723 928h-270v-928h-236v928h-182v110l182 72v72q0 196 92 290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 -148.5v-72h270v-178z" />
+<glyph unicode="g" horiz-adv-x="1139" d="M1102 1106v-129l-189 -35q26 -35 43 -86t17 -108q0 -171 -118 -269t-325 -98q-53 0 -96 8q-76 -47 -76 -110q0 -38 35.5 -57t130.5 -19h193q183 0 278 -78t95 -225q0 -188 -155 -290t-448 -102q-226 0 -345 80t-119 228q0 102 64.5 171.5t180.5 96.5q-47 20 -77.5 64.5 t-30.5 93.5q0 62 35 105t104 85q-86 37 -139.5 120.5t-53.5 195.5q0 180 113.5 279t323.5 99q47 0 98.5 -6.5t77.5 -13.5h383zM233 -172q0 -76 68.5 -117t192.5 -41q192 0 286 55t94 146q0 72 -51.5 102.5t-191.5 30.5h-178q-101 0 -160.5 -47.5t-59.5 -128.5zM334 748 q0 -104 53.5 -160t153.5 -56q204 0 204 218q0 108 -50.5 166.5t-153.5 58.5q-102 0 -154.5 -58t-52.5 -169z" />
+<glyph unicode="h" horiz-adv-x="1300" d="M1141 0h-236v680q0 128 -51.5 191t-163.5 63q-148 0 -217.5 -88.5t-69.5 -296.5v-549h-235v1556h235v-395q0 -95 -12 -203h15q48 80 133.5 124t199.5 44q402 0 402 -405v-721z" />
+<glyph unicode="i" horiz-adv-x="571" d="M403 0h-235v1106h235v-1106zM154 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5z" />
+<glyph unicode="j" horiz-adv-x="571" d="M55 -492q-106 0 -176 25v186q68 -18 139 -18q150 0 150 170v1235h235v-1251q0 -171 -89.5 -259t-258.5 -88zM154 1399q0 63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 94.5z" />
+<glyph unicode="k" horiz-adv-x="1171" d="M395 584l133 166l334 356h271l-445 -475l473 -631h-276l-355 485l-129 -106v-379h-233v1556h233v-759l-12 -213h6z" />
+<glyph unicode="l" horiz-adv-x="571" d="M403 0h-235v1556h235v-1556z" />
+<glyph unicode="m" horiz-adv-x="1958" d="M1100 0h-236v682q0 127 -48 189.5t-150 62.5q-136 0 -199.5 -88.5t-63.5 -294.5v-551h-235v1106h184l33 -145h12q46 79 133.5 122t192.5 43q255 0 338 -174h16q49 82 138 128t204 46q198 0 288.5 -100t90.5 -305v-721h-235v682q0 127 -48.5 189.5t-150.5 62.5 q-137 0 -200.5 -85.5t-63.5 -262.5v-586z" />
+<glyph unicode="n" horiz-adv-x="1300" d="M1141 0h-236v680q0 128 -51.5 191t-163.5 63q-149 0 -218 -88t-69 -295v-551h-235v1106h184l33 -145h12q50 79 142 122t204 43q398 0 398 -405v-721z" />
+<glyph unicode="o" horiz-adv-x="1251" d="M1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281z" />
+<glyph unicode="p" horiz-adv-x="1276" d="M729 -20q-210 0 -326 151h-14q14 -140 14 -170v-453h-235v1598h190q8 -31 33 -148h12q110 168 330 168q207 0 322.5 -150t115.5 -421t-117.5 -423t-324.5 -152zM672 934q-140 0 -204.5 -82t-64.5 -262v-35q0 -202 64 -292.5t209 -90.5q122 0 188 100t66 285 q0 186 -65.5 281.5t-192.5 95.5z" />
+<glyph unicode="q" horiz-adv-x="1276" d="M606 168q148 0 212.5 85.5t64.5 258.5v37q0 205 -66.5 295t-214.5 90q-126 0 -192 -100t-66 -287q0 -379 262 -379zM539 -20q-205 0 -321 150.5t-116 420.5t118 422.5t325 152.5q104 0 186.5 -38.5t147.5 -126.5h8l26 145h195v-1598h-236v469q0 44 4 93t7 75h-13 q-104 -165 -331 -165z" />
+<glyph unicode="r" horiz-adv-x="883" d="M729 1126q71 0 117 -10l-23 -219q-50 12 -104 12q-141 0 -228.5 -92t-87.5 -239v-578h-235v1106h184l31 -195h12q55 99 143.5 157t190.5 58z" />
+<glyph unicode="s" horiz-adv-x="997" d="M911 315q0 -162 -118 -248.5t-338 -86.5q-221 0 -355 67v203q195 -90 363 -90q217 0 217 131q0 42 -24 70t-79 58t-153 68q-191 74 -258.5 148t-67.5 192q0 142 114.5 220.5t311.5 78.5q195 0 369 -79l-76 -177q-179 74 -301 74q-186 0 -186 -106q0 -52 48.5 -88 t211.5 -99q137 -53 199 -97t92 -101.5t30 -137.5z" />
+<glyph unicode="t" horiz-adv-x="805" d="M580 170q86 0 172 27v-177q-39 -17 -100.5 -28.5t-127.5 -11.5q-334 0 -334 352v596h-151v104l162 86l80 234h145v-246h315v-178h-315v-592q0 -85 42.5 -125.5t111.5 -40.5z" />
+<glyph unicode="u" horiz-adv-x="1300" d="M948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185z" />
+<glyph unicode="v" horiz-adv-x="1096" d="M420 0l-420 1106h248l225 -643q58 -162 70 -262h8q9 72 70 262l225 643h250l-422 -1106h-254z" />
+<glyph unicode="w" horiz-adv-x="1673" d="M1075 0l-143 516q-26 82 -94 381h-9q-58 -270 -92 -383l-147 -514h-260l-310 1106h240l141 -545q48 -202 68 -346h6q10 73 30.5 167.5t35.5 141.5l168 582h258l163 -582q15 -49 37.5 -150t26.5 -157h8q15 123 70 344l143 545h236l-312 -1106h-264z" />
+<glyph unicode="x" horiz-adv-x="1128" d="M414 565l-371 541h268l252 -387l254 387h266l-372 -541l391 -565h-266l-273 414l-272 -414h-266z" />
+<glyph unicode="y" horiz-adv-x="1098" d="M0 1106h256l225 -627q51 -134 68 -252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 17v186q53 -12 121 -12q170 0 239 197l41 104z" />
+<glyph unicode="z" horiz-adv-x="979" d="M907 0h-839v145l559 781h-525v180h789v-164l-547 -762h563v-180z" />
+<glyph unicode="{" horiz-adv-x="791" d="M311 287q0 186 -266 186v191q135 0 200.5 45.5t65.5 138.5v311q0 156 108.5 229.5t325.5 73.5v-182q-114 -5 -165.5 -46.5t-51.5 -123.5v-297q0 -199 -229 -238v-12q229 -36 229 -237v-299q0 -82 51 -124t166 -44v-183q-231 2 -332.5 78.5t-101.5 247.5v285z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M473 1552h180v-2033h-180v2033z" />
+<glyph unicode="}" horiz-adv-x="760" d="M463 -20q0 -156 -99.5 -229t-318.5 -75v183q95 1 148 38.5t53 129.5v262q0 121 53 187t176 87v12q-229 39 -229 238v297q0 82 -45.5 123.5t-155.5 46.5v182q223 0 320.5 -76.5t97.5 -250.5v-287q0 -100 63.5 -142t188.5 -42v-191q-123 0 -187.5 -42.5t-64.5 -143.5v-307z " />
+<glyph unicode="~" d="M330 692q-50 0 -111.5 -30t-122.5 -91v191q99 108 250 108q66 0 125 -13t147 -50q131 -55 220 -55q52 0 114.5 31t120.5 89v-190q-105 -111 -250 -111q-65 0 -127.5 15.5t-146.5 50.5q-127 55 -219 55z" />
+<glyph unicode="¡" horiz-adv-x="565" d="M193 645h174l51 -1016h-277zM430 965q0 -74 -37.5 -113t-111.5 -39q-72 0 -110 39.5t-38 112.5q0 69 38 111t110 42t110.5 -40.5t38.5 -112.5z" />
+<glyph unicode="¢" d="M987 238q-119 -59 -258 -64v-194h-156v200q-207 31 -307 171t-100 390q0 254 100.5 397t306.5 175v170h158v-162q152 -5 283 -66l-70 -188q-146 59 -250 59q-146 0 -216 -95t-70 -288q0 -194 72 -283t210 -89q75 0 142.5 15t154.5 52v-200z" />
+<glyph unicode="£" d="M690 1481q194 0 375 -82l-76 -182q-162 71 -284 71q-205 0 -205 -219v-244h397v-172h-397v-182q0 -91 -33 -155t-113 -109h756v-207h-1038v195q98 30 145 96t47 178v184h-188v172h188v256q0 188 113.5 294t312.5 106z" />
+<glyph unicode="¤" d="M186 723q0 109 64 213l-133 133l121 119l131 -129q100 63 215 63t213 -65l133 131l121 -117l-131 -133q63 -100 63 -215q0 -119 -63 -217l129 -129l-119 -119l-133 129q-99 -61 -213 -61q-126 0 -215 61l-131 -127l-119 119l131 129q-64 99 -64 215zM354 723 q0 -98 68 -164.5t162 -66.5q97 0 165 66.5t68 164.5q0 97 -68 165t-165 68q-93 0 -161.5 -68t-68.5 -165z" />
+<glyph unicode="¥" d="M584 797l321 665h244l-399 -760h227v-151h-281v-154h281v-153h-281v-244h-225v244h-283v153h283v154h-283v151h224l-394 760h246z" />
+<glyph unicode="¦" horiz-adv-x="1128" d="M473 1552h180v-794h-180v794zM473 315h180v-796h-180v796z" />
+<glyph unicode="§" horiz-adv-x="1026" d="M129 807q0 80 38.5 145.5t111.5 108.5q-146 83 -146 235q0 129 109.5 202t294.5 73q91 0 174 -17t182 -59l-68 -162q-116 50 -176 63t-121 13q-194 0 -194 -109q0 -54 55 -93.5t191 -90.5q175 -68 250 -146.5t75 -187.5q0 -177 -139 -266q139 -80 139 -223 q0 -142 -118 -224.5t-326 -82.5q-212 0 -346 71v179q77 -40 173 -65.5t177 -25.5q235 0 235 131q0 43 -21 70t-71 54t-147 65q-141 55 -206 101.5t-95.5 105t-30.5 135.5zM313 827q0 -45 24 -80t78.5 -69t194.5 -90q109 65 109 168q0 75 -62 126.5t-221 104.5 q-54 -16 -88.5 -61.5t-34.5 -98.5z" />
+<glyph unicode="¨" horiz-adv-x="1212" d="M293 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM686 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="©" horiz-adv-x="1704" d="M893 1034q-111 0 -171 -80.5t-60 -222.5q0 -147 54 -226t177 -79q55 0 118 15t109 36v-158q-115 -51 -235 -51q-197 0 -305.5 120.5t-108.5 342.5q0 214 110 337.5t306 123.5q138 0 274 -70l-65 -143q-106 55 -203 55zM100 731q0 200 100 375t275 276t377 101 q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM223 731q0 -170 84.5 -315.5t230.5 -229.5t314 -84q170 0 316 85.5t229.5 230t83.5 313.5q0 168 -84.5 314.5t-231 230.5t-313.5 84q-168 0 -312.5 -83 t-230.5 -229t-86 -317z" />
+<glyph unicode="ª" horiz-adv-x="754" d="M547 782l-29 97q-46 -55 -105 -82t-130 -27q-113 0 -169.5 52.5t-56.5 158.5q0 104 84 159.5t252 61.5l107 4q0 72 -34.5 108t-103.5 36q-90 0 -210 -56l-54 115q144 70 285 70q138 0 207 -62.5t69 -187.5v-447h-112zM401 1098q-71 -2 -125.5 -34t-54.5 -81q0 -88 96 -88 q91 0 137 41t46 123v43z" />
+<glyph unicode="«" horiz-adv-x="1139" d="M82 561l356 432l168 -94l-282 -350l282 -348l-168 -97l-356 431v26zM532 561l357 432l168 -94l-283 -350l283 -348l-168 -97l-357 431v26z" />
+<glyph unicode="¬" d="M1073 256h-178v377h-799v178h977v-555z" />
+<glyph unicode="­" horiz-adv-x="659" d="M72 449zM72 449v200h514v-200h-514z" />
+<glyph unicode="®" horiz-adv-x="1704" d="M748 770h69q74 0 112 35t38 100q0 72 -36.5 100.5t-115.5 28.5h-67v-264zM1157 909q0 -171 -153 -233l237 -397h-211l-192 346h-90v-346h-189v903h262q174 0 255 -68t81 -205zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370 t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM223 731q0 -170 84.5 -315.5t230.5 -229.5t314 -84q170 0 316 85.5t229.5 230t83.5 313.5q0 168 -84.5 314.5t-231 230.5t-313.5 84q-168 0 -312.5 -83t-230.5 -229t-86 -317z" />
+<glyph unicode="¯" horiz-adv-x="1024" d="M1030 1556h-1036v164h1036v-164z" />
+<glyph unicode="°" horiz-adv-x="877" d="M109 1153q0 135 95 232.5t234 97.5q138 0 233 -96t95 -234q0 -139 -96 -233.5t-232 -94.5q-88 0 -164.5 43.5t-120.5 119.5t-44 165zM262 1153q0 -70 51 -122t125 -52t125 51.5t51 122.5q0 76 -52 127t-124 51t-124 -52t-52 -126z" />
+<glyph unicode="±" d="M494 664h-398v178h398v407h180v-407h399v-178h-399v-406h-180v406zM96 0v178h977v-178h-977z" />
+<glyph unicode="²" horiz-adv-x="743" d="M678 586h-627v135l230 225q117 112 149.5 165t32.5 112q0 52 -32 79t-83 27q-93 0 -201 -88l-94 121q139 119 309 119q136 0 211.5 -66t75.5 -180q0 -83 -46 -158.5t-183 -202.5l-139 -129h397v-159z" />
+<glyph unicode="³" horiz-adv-x="743" d="M645 1251q0 -75 -40.5 -122.5t-119.5 -86.5q94 -21 141.5 -76t47.5 -132q0 -127 -93 -196t-266 -69q-148 0 -270 62v157q145 -79 270 -79q179 0 179 135q0 125 -199 125h-115v133h105q184 0 184 129q0 52 -34.5 80t-90.5 28q-57 0 -105.5 -20t-105.5 -57l-84 114 q61 46 134 75.5t171 29.5q134 0 212.5 -61.5t78.5 -168.5z" />
+<glyph unicode="´" horiz-adv-x="1212" d="M362 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="µ" horiz-adv-x="1309" d="M403 422q0 -252 218 -252q146 0 215 88.5t69 296.5v551h236v-1106h-183l-34 147h-13q-48 -83 -119.5 -125t-175.5 -42q-140 0 -219 90h-4q3 -28 6.5 -117t3.5 -125v-320h-235v1598h235v-684z" />
+<glyph unicode="¶" horiz-adv-x="1341" d="M1143 -260h-137v1663h-191v-1663h-137v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h580v-1816z" />
+<glyph unicode="·" horiz-adv-x="563" d="M133 723q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="¸" horiz-adv-x="442" d="M426 -270q0 -222 -305 -222q-66 0 -121 15v137q54 -14 123 -14q54 0 85.5 16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5z" />
+<glyph unicode="¹" horiz-adv-x="743" d="M532 586h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111l-88 112l281 209h167v-876z" />
+<glyph unicode="º" horiz-adv-x="780" d="M719 1124q0 -164 -87.5 -259t-244.5 -95q-150 0 -238 95.5t-88 258.5q0 169 88.5 262t241.5 93q152 0 240 -94.5t88 -260.5zM223 1124q0 -111 39 -166t127 -55t127 55t39 166q0 113 -39 167.5t-127 54.5t-127 -54.5t-39 -167.5z" />
+<glyph unicode="»" horiz-adv-x="1139" d="M1057 535l-359 -431l-168 97l283 348l-283 350l168 94l359 -432v-26zM606 535l-358 -431l-168 97l282 348l-282 350l168 94l358 -432v-26z" />
+<glyph unicode="¼" horiz-adv-x="1700" d="M60 0zM1333 1462l-856 -1462h-192l858 1462h190zM508 586h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111l-88 112l281 209h167v-876zM1585 177h-125v-176h-192v176h-392v127l396 579h188v-563h125v-143zM1268 320v178q0 97 6 197q-52 -104 -88 -158l-148 -217h230z " />
+<glyph unicode="½" horiz-adv-x="1700" d="M46 0zM1298 1462l-856 -1462h-192l858 1462h190zM494 586h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111l-88 112l281 209h167v-876zM1608 1h-627v135l230 225q117 112 149.5 165t32.5 112q0 52 -32 79t-83 27q-93 0 -201 -88l-94 121q139 119 309 119 q136 0 211.5 -66t75.5 -180q0 -83 -46 -158.5t-183 -202.5l-139 -129h397v-159z" />
+<glyph unicode="¾" horiz-adv-x="1700" d="M55 0zM1415 1462l-856 -1462h-192l858 1462h190zM1640 177h-125v-176h-192v176h-392v127l396 579h188v-563h125v-143zM1323 320v178q0 97 6 197q-52 -104 -88 -158l-148 -217h230zM655 1251q0 -75 -40.5 -122.5t-119.5 -86.5q94 -21 141.5 -76t47.5 -132q0 -127 -93 -196 t-266 -69q-148 0 -270 62v157q145 -79 270 -79q179 0 179 135q0 125 -199 125h-115v133h105q184 0 184 129q0 52 -34.5 80t-90.5 28q-57 0 -105.5 -20t-105.5 -57l-84 114q61 46 134 75.5t171 29.5q134 0 212.5 -61.5t78.5 -168.5z" />
+<glyph unicode="¿" horiz-adv-x="928" d="M651 645v-63q0 -106 -41 -181t-143 -155q-124 -98 -155 -147t-31 -124q0 -78 54 -125t161 -47q90 0 174 27.5t166 65.5l82 -179q-220 -110 -424 -110q-207 0 -323 95.5t-116 264.5q0 73 21 130t64 109t157 142q94 76 125 124.5t31 127.5v45h198zM692 965 q0 -74 -37.5 -113t-111.5 -39q-72 0 -110 39.5t-38 112.5q0 69 38 111t110 42t110.5 -40.5t38.5 -112.5z" />
+<glyph unicode="À" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM662 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="Á" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM532 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Â" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM897 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z " />
+<glyph unicode="Ã" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM821 1579q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73 q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="Ä" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM363 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88z M756 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="Å" horiz-adv-x="1354" d="M0 0zM1100 0l-146 406h-559l-143 -406h-252l547 1468h260l547 -1468h-254zM891 612l-137 398q-15 40 -41.5 126t-36.5 126q-27 -123 -79 -269l-132 -381h426zM913 1577q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5q0 101 63.5 163.5t172.5 62.5 q104 0 171.5 -62t67.5 -162zM780 1575q0 50 -30 78.5t-76 28.5q-47 0 -77 -28.5t-30 -78.5q0 -106 107 -106q46 0 76 27.5t30 78.5z" />
+<glyph unicode="Æ" horiz-adv-x="1868" d="M1747 0h-811v406h-504l-188 -406h-246l678 1462h1071v-202h-571v-398h532v-200h-532v-459h571v-203zM522 612h414v641h-123z" />
+<glyph unicode="Ç" horiz-adv-x="1298" d="M121 0zM815 1278q-206 0 -324 -146t-118 -403q0 -269 113.5 -407t328.5 -138q93 0 180 18.5t181 47.5v-205q-172 -65 -390 -65q-321 0 -493 194.5t-172 556.5q0 228 83.5 399t241.5 262t371 91q224 0 414 -94l-86 -199q-74 35 -156.5 61.5t-173.5 26.5zM952 -270 q0 -222 -305 -222q-66 0 -121 15v137q54 -14 123 -14q54 0 85.5 16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5z" />
+<glyph unicode="È" horiz-adv-x="1143" d="M193 0zM1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203zM617 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="É" horiz-adv-x="1143" d="M193 0zM1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203zM440 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Ê" horiz-adv-x="1143" d="M193 0zM1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203zM831 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="Ë" horiz-adv-x="1143" d="M193 0zM1020 0h-827v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203zM297 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM690 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5 t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="Ì" horiz-adv-x="625" d="M0 0zM193 0v1462h239v-1462h-239zM322 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="Í" horiz-adv-x="625" d="M179 0zM193 0v1462h239v-1462h-239zM179 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Î" horiz-adv-x="625" d="M0 0zM193 0v1462h239v-1462h-239zM536 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="Ï" horiz-adv-x="625" d="M1 0zM193 0v1462h239v-1462h-239zM1 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM394 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="Ð" horiz-adv-x="1497" d="M1374 745q0 -360 -201 -552.5t-579 -192.5h-401v623h-146v200h146v639h446q347 0 541 -188.5t194 -528.5zM1122 737q0 260 -124.5 392.5t-368.5 132.5h-197v-439h307v-200h-307v-422h160q530 0 530 536z" />
+<glyph unicode="Ñ" horiz-adv-x="1604" d="M193 0zM1411 0h-293l-719 1165h-8l5 -65q14 -186 14 -340v-760h-217v1462h290l717 -1159h6q-2 23 -8 167.5t-6 225.5v766h219v-1462zM954 1579q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39 t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="Ò" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M809 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="Ó" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M657 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Ô" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M1024 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="Õ" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M950 1579q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="Ö" horiz-adv-x="1612" d="M121 0zM1491 733q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 196.5t-177.5 558.5t178.5 556t509.5 194q326 0 504 -197t178 -555zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M496 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM889 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="×" d="M457 723l-326 326l125 127l328 -326l329 326l125 -123l-329 -330l325 -328l-123 -125l-329 326l-324 -326l-125 125z" />
+<glyph unicode="Ø" horiz-adv-x="1612" d="M1491 733q0 -357 -178.5 -555t-505.5 -198q-213 0 -361 81l-94 -137l-141 94l98 144q-188 196 -188 573q0 362 178.5 556t509.5 194q199 0 354 -82l90 129l142 -92l-99 -140q195 -199 195 -567zM1237 733q0 225 -80 361l-586 -850q97 -60 236 -60q213 0 321.5 138 t108.5 411zM375 733q0 -231 78 -362l587 850q-92 59 -231 59q-215 0 -324.5 -139t-109.5 -408z" />
+<glyph unicode="Ù" horiz-adv-x="1520" d="M180 0zM1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239zM745 1579q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="Ú" horiz-adv-x="1520" d="M180 0zM1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239zM600 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Û" horiz-adv-x="1520" d="M180 0zM1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239zM977 1579q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z " />
+<glyph unicode="Ü" horiz-adv-x="1520" d="M180 0zM1339 1462v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 -65.5q-272 0 -423 144t-151 396v942h240v-925q0 -181 84 -267t258 -86q338 0 338 355v923h239zM445 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29 t-33.5 88zM838 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="Ý" horiz-adv-x="1212" d="M0 0zM606 795l346 667h260l-487 -895v-567h-240v559l-485 903h260zM450 1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="Þ" horiz-adv-x="1268" d="M1169 776q0 -227 -146 -349t-423 -122h-168v-305h-239v1462h239v-243h197q268 0 404 -112t136 -331zM432 504h133q187 0 273 63t86 203q0 127 -78 188.5t-250 61.5h-164v-516z" />
+<glyph unicode="ß" horiz-adv-x="1364" d="M1149 1253q0 -74 -38.5 -140.5t-104.5 -117.5q-90 -69 -117 -98t-27 -57q0 -30 22.5 -55.5t79.5 -63.5l95 -64q92 -62 135.5 -109.5t65.5 -103.5t22 -127q0 -165 -107 -251t-311 -86q-190 0 -299 65v199q58 -37 139 -61.5t148 -24.5q192 0 192 151q0 61 -34.5 105 t-155.5 118q-119 73 -171 135t-52 146q0 63 34 115.5t105 105.5q75 55 107 97.5t32 93.5q0 72 -67 112.5t-178 40.5q-127 0 -194 -54t-67 -159v-1165h-235v1169q0 193 128.5 295.5t367.5 102.5q225 0 355 -84t130 -230z" />
+<glyph unicode="à" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM587 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="á" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM438 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="â" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM814 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="ã" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM748 1241q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115 h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="ä" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM282 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM675 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31 t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="å" horiz-adv-x="1188" d="M90 0zM860 0l-47 154h-8q-80 -101 -161 -137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249q0 171 127 258t387 95l191 6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168zM510 160 q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 -151.5q0 -74 44 -114.5t132 -40.5zM841 1468q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5q0 101 63.5 163.5t172.5 62.5q104 0 171.5 -62t67.5 -162zM708 1466q0 50 -30 78.5t-76 28.5 q-47 0 -77 -28.5t-30 -78.5q0 -106 107 -106q46 0 76 27.5t30 78.5z" />
+<glyph unicode="æ" horiz-adv-x="1817" d="M90 317q0 172 121.5 258.5t370.5 94.5l188 6v76q0 194 -201 194q-141 0 -307 -82l-74 166q88 47 192.5 71.5t203.5 24.5q241 0 340 -155q120 155 346 155q206 0 328 -134.5t122 -362.5v-127h-712q10 -336 301 -336q184 0 356 80v-191q-86 -41 -171.5 -58t-195.5 -17 q-140 0 -248.5 54.5t-175.5 164.5q-94 -125 -190.5 -172t-241.5 -47q-165 0 -258.5 90t-93.5 247zM334 315q0 -155 166 -155q124 0 196 72.5t72 199.5v96l-135 -6q-155 -6 -227 -54.5t-72 -152.5zM1266 948q-112 0 -177.5 -69.5t-74.5 -208.5h473q0 130 -58.5 204t-162.5 74 z" />
+<glyph unicode="ç" horiz-adv-x="1014" d="M102 0zM614 -20q-251 0 -381.5 146.5t-130.5 420.5q0 279 136.5 429t394.5 150q175 0 315 -65l-71 -189q-149 58 -246 58q-287 0 -287 -381q0 -186 71.5 -279.5t209.5 -93.5q157 0 297 78v-205q-63 -37 -134.5 -53t-173.5 -16zM782 -270q0 -222 -305 -222q-66 0 -121 15 v137q54 -14 123 -14q54 0 85.5 16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5z" />
+<glyph unicode="è" horiz-adv-x="1180" d="M102 0zM651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5 t-176 70.5zM609 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="é" horiz-adv-x="1180" d="M102 0zM651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5 t-176 70.5zM458 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="ê" horiz-adv-x="1180" d="M102 0zM651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5 t-176 70.5zM838 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="ë" horiz-adv-x="1180" d="M102 0zM651 -20q-258 0 -403.5 150.5t-145.5 414.5q0 271 135 426t371 155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17zM608 948q-112 0 -179.5 -71t-80.5 -207h502q-2 137 -66 207.5 t-176 70.5zM307 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM700 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ì" horiz-adv-x="571" d="M0 0zM403 0h-235v1106h235v-1106zM259 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="í" horiz-adv-x="571" d="M156 0zM403 0h-235v1106h235v-1106zM156 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="î" horiz-adv-x="571" d="M0 0zM403 0h-235v1106h235v-1106zM511 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="ï" horiz-adv-x="571" d="M0 0zM403 0h-235v1106h235v-1106zM-25 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM368 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ð" horiz-adv-x="1243" d="M1149 567q0 -279 -137.5 -433t-388.5 -154q-235 0 -378 136t-143 365q0 231 131 365.5t351 134.5q214 0 301 -111l8 4q-62 189 -227 345l-250 -150l-88 133l204 119q-86 59 -167 102l84 146q140 -63 258 -144l231 138l88 -129l-188 -113q152 -140 231.5 -330t79.5 -424z M909 522q0 127 -75.5 202t-206.5 75q-151 0 -218 -82t-67 -240q0 -153 74 -234t211 -81q148 0 215 91t67 269z" />
+<glyph unicode="ñ" horiz-adv-x="1300" d="M168 0zM1141 0h-236v680q0 128 -51.5 191t-163.5 63q-149 0 -218 -88t-69 -295v-551h-235v1106h184l33 -145h12q50 79 142 122t204 43q398 0 398 -405v-721zM809 1241q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73 q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="ò" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM621 1241q-69 52 -174.5 150.5t-153.5 156.5 v21h273q38 -70 103.5 -161t109.5 -142v-25h-158z" />
+<glyph unicode="ó" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM473 1241v25q57 70 117.5 156t95.5 147h273 v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="ô" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM850 1241q-123 73 -228 180 q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="õ" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM775 1241q-42 0 -82.5 17.5t-79.5 39t-76 39 t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode="ö" horiz-adv-x="1251" d="M102 0zM1149 555q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 304q0 269 138 420t389 151q240 0 380 -154.5t140 -416.5zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 -98t-66.5 -281zM311 1399q0 62 33.5 89.5t81.5 27.5 q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM704 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="÷" d="M96 633v178h977v-178h-977zM457 373q0 64 31.5 99.5t95.5 35.5q61 0 93 -36t32 -99t-34 -100t-91 -37q-60 0 -93.5 35.5t-33.5 101.5zM457 1071q0 64 31.5 99.5t95.5 35.5q61 0 93 -36t32 -99t-34 -100t-91 -37q-60 0 -93.5 35.5t-33.5 101.5z" />
+<glyph unicode="ø" horiz-adv-x="1251" d="M1149 555q0 -271 -139 -423t-387 -152q-144 0 -250 57l-76 -109l-135 90l82 117q-142 155 -142 420q0 269 138 420t389 151q144 0 258 -63l69 100l136 -92l-78 -108q135 -152 135 -408zM344 555q0 -135 37 -219l391 559q-60 39 -147 39q-148 0 -214.5 -98t-66.5 -281z M907 555q0 121 -33 203l-387 -553q54 -33 140 -33q280 0 280 383z" />
+<glyph unicode="ù" horiz-adv-x="1300" d="M158 0zM948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185zM617 1241q-69 52 -174.5 150.5t-153.5 156.5v21h273q38 -70 103.5 -161t109.5 -142v-25 h-158z" />
+<glyph unicode="ú" horiz-adv-x="1300" d="M158 0zM948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185zM501 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5 h-156z" />
+<glyph unicode="û" horiz-adv-x="1300" d="M158 0zM948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185zM871 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260 q63 -110 256 -303v-25h-159z" />
+<glyph unicode="ü" horiz-adv-x="1300" d="M158 0zM948 0l-33 145h-12q-49 -77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303v723h237v-682q0 -127 52 -190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185zM332 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32 q-48 0 -81.5 29t-33.5 88zM725 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ý" horiz-adv-x="1098" d="M0 0zM0 1106h256l225 -627q51 -134 68 -252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 17v186q53 -12 121 -12q170 0 239 197l41 104zM401 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="þ" horiz-adv-x="1276" d="M403 961q61 86 142.5 125.5t187.5 39.5q206 0 322 -151t116 -420q0 -272 -116.5 -423.5t-321.5 -151.5q-219 0 -330 149h-14l8 -72l6 -92v-457h-235v2048h235v-430l-7 -138l-3 -27h10zM674 934q-142 0 -206.5 -82t-64.5 -260v-37q0 -202 64 -292.5t209 -90.5 q254 0 254 385q0 190 -61.5 283.5t-194.5 93.5z" />
+<glyph unicode="ÿ" horiz-adv-x="1098" d="M0 0zM0 1106h256l225 -627q51 -134 68 -252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 17v186q53 -12 121 -12q170 0 239 197l41 104zM239 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29 t-33.5 88zM632 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ı" horiz-adv-x="571" d="M403 0h-235v1106h235v-1106z" />
+<glyph unicode="Œ" horiz-adv-x="1942" d="M1819 0h-820q-102 -20 -211 -20q-320 0 -493.5 196.5t-173.5 558.5q0 360 172 555t491 195q115 0 209 -23h826v-202h-576v-398h539v-200h-539v-459h576v-203zM793 1280q-208 0 -315 -139t-107 -408t106 -409t314 -140q129 0 213 35v1024q-80 37 -211 37z" />
+<glyph unicode="œ" horiz-adv-x="1966" d="M1438 -20q-281 0 -420 194q-132 -194 -400 -194q-236 0 -376 155t-140 420q0 272 137 421.5t382 149.5q121 0 223 -49t168 -145q131 194 379 194q221 0 349 -133.5t128 -365.5v-127h-738q11 -164 85.5 -249t228.5 -85q102 0 187 18.5t181 61.5v-191q-84 -40 -171.5 -57.5 t-202.5 -17.5zM344 555q0 -189 65.5 -286t211.5 -97q141 0 206.5 95.5t65.5 283.5q0 192 -66 287.5t-211 95.5q-143 0 -207.5 -95t-64.5 -284zM1393 948q-110 0 -177.5 -69.5t-78.5 -208.5h497q0 134 -63 206t-178 72z" />
+<glyph unicode="Ÿ" horiz-adv-x="1212" d="M0 0zM606 795l346 667h260l-487 -895v-567h-240v559l-485 903h260zM293 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM686 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5 q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="ˆ" horiz-adv-x="1227" d="M838 1241q-123 73 -228 180q-103 -103 -225 -180h-158v25q191 198 254 303h260q63 -110 256 -303v-25h-159z" />
+<glyph unicode="˚" horiz-adv-x="1182" d="M827 1468q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5q0 101 63.5 163.5t172.5 62.5q104 0 171.5 -62t67.5 -162zM694 1466q0 50 -30 78.5t-76 28.5q-47 0 -77 -28.5t-30 -78.5q0 -106 107 -106q46 0 76 27.5t30 78.5z" />
+<glyph unicode="˜" horiz-adv-x="1227" d="M776 1241q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5z" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="953" />
+<glyph unicode=" " horiz-adv-x="1907" />
+<glyph unicode=" " horiz-adv-x="635" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="317" />
+<glyph unicode=" " horiz-adv-x="238" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode=" " horiz-adv-x="105" />
+<glyph unicode="‐" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="‑" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="‒" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="–" horiz-adv-x="1024" d="M82 455v190h860v-190h-860z" />
+<glyph unicode="—" horiz-adv-x="2048" d="M82 455v190h1884v-190h-1884z" />
+<glyph unicode="‘" horiz-adv-x="395" d="M37 961l-12 22q20 83 71 224t105 255h170q-64 -256 -101 -501h-233z" />
+<glyph unicode="’" horiz-adv-x="395" d="M356 1462l15 -22q-53 -209 -176 -479h-170q69 289 100 501h231z" />
+<glyph unicode="‚" horiz-adv-x="549" d="M412 215q-48 -186 -176 -479h-173q69 270 103 502h231z" />
+<glyph unicode="“" horiz-adv-x="813" d="M440 983q53 203 178 479h170q-69 -296 -100 -501h-233zM25 983q20 83 71 224t105 255h170q-64 -256 -101 -501h-233z" />
+<glyph unicode="”" horiz-adv-x="813" d="M371 1440q-53 -209 -176 -479h-170q69 289 100 501h231zM788 1440q-53 -209 -176 -479h-172q69 271 103 501h231z" />
+<glyph unicode="„" horiz-adv-x="944" d="M391 215q-55 -214 -176 -479h-172q66 260 102 502h232zM809 215q-48 -186 -176 -479h-172q66 260 102 502h232z" />
+<glyph unicode="•" horiz-adv-x="770" d="M131 748q0 138 66 210t188 72q121 0 187.5 -72.5t66.5 -209.5q0 -135 -67 -209t-187 -74t-187 72.5t-67 210.5z" />
+<glyph unicode="…" horiz-adv-x="1677" d="M133 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM690 125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM1247 125q0 73 38 112t110 39q73 0 111 -40.5 t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode=" " horiz-adv-x="381" />
+<glyph unicode="‹" horiz-adv-x="688" d="M82 561l356 432l168 -94l-282 -350l282 -348l-168 -97l-356 431v26z" />
+<glyph unicode="›" horiz-adv-x="688" d="M606 535l-358 -431l-168 97l282 348l-282 350l168 94l358 -432v-26z" />
+<glyph unicode="⁄" horiz-adv-x="266" d="M655 1462l-856 -1462h-192l858 1462h190z" />
+<glyph unicode=" " horiz-adv-x="476" />
+<glyph unicode="⁴" horiz-adv-x="743" d="M725 762h-125v-176h-192v176h-392v127l396 579h188v-563h125v-143zM408 905v178q0 97 6 197q-52 -104 -88 -158l-148 -217h230z" />
+<glyph unicode="€" horiz-adv-x="1188" d="M799 1278q-141 0 -230.5 -84t-119.5 -254h456v-154h-471l-2 -45v-55l2 -39h408v-153h-391q64 -312 364 -312q143 0 293 62v-203q-131 -61 -305 -61q-241 0 -391.5 132t-196.5 382h-152v153h136l-2 37v37l2 65h-136v154h150q38 251 191 394t395 143q200 0 358 -88 l-84 -187q-154 76 -274 76z" />
+<glyph unicode="™" horiz-adv-x="1561" d="M375 741h-146v592h-202v129h553v-129h-205v-592zM963 741l-185 543h-6l4 -119v-424h-141v721h217l178 -534l187 534h210v-721h-147v414l4 129h-6l-193 -543h-122z" />
+<glyph unicode="" horiz-adv-x="1105" d="M0 1105h1105v-1105h-1105v1105z" />
+<glyph horiz-adv-x="1276" d="M0 0z" />
+<hkern u1=""" u2="Ÿ" k="-20" />
+<hkern u1=""" u2="œ" k="123" />
+<hkern u1=""" u2="ü" k="61" />
+<hkern u1=""" u2="û" k="61" />
+<hkern u1=""" u2="ú" k="61" />
+<hkern u1=""" u2="ù" k="61" />
+<hkern u1=""" u2="ø" k="123" />
+<hkern u1=""" u2="ö" k="123" />
+<hkern u1=""" u2="õ" k="123" />
+<hkern u1=""" u2="ô" k="123" />
+<hkern u1=""" u2="ó" k="123" />
+<hkern u1=""" u2="ò" k="123" />
+<hkern u1=""" u2="ë" k="123" />
+<hkern u1=""" u2="ê" k="123" />
+<hkern u1=""" u2="é" k="123" />
+<hkern u1=""" u2="è" k="123" />
+<hkern u1=""" u2="ç" k="123" />
+<hkern u1=""" u2="æ" k="82" />
+<hkern u1=""" u2="å" k="82" />
+<hkern u1=""" u2="ä" k="82" />
+<hkern u1=""" u2="ã" k="82" />
+<hkern u1=""" u2="â" k="82" />
+<hkern u1=""" u2="á" k="82" />
+<hkern u1=""" u2="à" k="123" />
+<hkern u1=""" u2="Ý" k="-20" />
+<hkern u1=""" u2="Å" k="143" />
+<hkern u1=""" u2="Ä" k="143" />
+<hkern u1=""" u2="Ã" k="143" />
+<hkern u1=""" u2="Â" k="143" />
+<hkern u1=""" u2="Á" k="143" />
+<hkern u1=""" u2="À" k="143" />
+<hkern u1=""" u2="u" k="61" />
+<hkern u1=""" u2="s" k="61" />
+<hkern u1=""" u2="r" k="61" />
+<hkern u1=""" u2="q" k="123" />
+<hkern u1=""" u2="p" k="61" />
+<hkern u1=""" u2="o" k="123" />
+<hkern u1=""" u2="n" k="61" />
+<hkern u1=""" u2="m" k="61" />
+<hkern u1=""" u2="g" k="61" />
+<hkern u1=""" u2="e" k="123" />
+<hkern u1=""" u2="d" k="123" />
+<hkern u1=""" u2="c" k="123" />
+<hkern u1=""" u2="a" k="82" />
+<hkern u1=""" u2="Y" k="-20" />
+<hkern u1=""" u2="W" k="-41" />
+<hkern u1=""" u2="V" k="-41" />
+<hkern u1=""" u2="T" k="-41" />
+<hkern u1=""" u2="A" k="143" />
+<hkern u1="'" u2="Ÿ" k="-20" />
+<hkern u1="'" u2="œ" k="123" />
+<hkern u1="'" u2="ü" k="61" />
+<hkern u1="'" u2="û" k="61" />
+<hkern u1="'" u2="ú" k="61" />
+<hkern u1="'" u2="ù" k="61" />
+<hkern u1="'" u2="ø" k="123" />
+<hkern u1="'" u2="ö" k="123" />
+<hkern u1="'" u2="õ" k="123" />
+<hkern u1="'" u2="ô" k="123" />
+<hkern u1="'" u2="ó" k="123" />
+<hkern u1="'" u2="ò" k="123" />
+<hkern u1="'" u2="ë" k="123" />
+<hkern u1="'" u2="ê" k="123" />
+<hkern u1="'" u2="é" k="123" />
+<hkern u1="'" u2="è" k="123" />
+<hkern u1="'" u2="ç" k="123" />
+<hkern u1="'" u2="æ" k="82" />
+<hkern u1="'" u2="å" k="82" />
+<hkern u1="'" u2="ä" k="82" />
+<hkern u1="'" u2="ã" k="82" />
+<hkern u1="'" u2="â" k="82" />
+<hkern u1="'" u2="á" k="82" />
+<hkern u1="'" u2="à" k="123" />
+<hkern u1="'" u2="Ý" k="-20" />
+<hkern u1="'" u2="Å" k="143" />
+<hkern u1="'" u2="Ä" k="143" />
+<hkern u1="'" u2="Ã" k="143" />
+<hkern u1="'" u2="Â" k="143" />
+<hkern u1="'" u2="Á" k="143" />
+<hkern u1="'" u2="À" k="143" />
+<hkern u1="'" u2="u" k="61" />
+<hkern u1="'" u2="s" k="61" />
+<hkern u1="'" u2="r" k="61" />
+<hkern u1="'" u2="q" k="123" />
+<hkern u1="'" u2="p" k="61" />
+<hkern u1="'" u2="o" k="123" />
+<hkern u1="'" u2="n" k="61" />
+<hkern u1="'" u2="m" k="61" />
+<hkern u1="'" u2="g" k="61" />
+<hkern u1="'" u2="e" k="123" />
+<hkern u1="'" u2="d" k="123" />
+<hkern u1="'" u2="c" k="123" />
+<hkern u1="'" u2="a" k="82" />
+<hkern u1="'" u2="Y" k="-20" />
+<hkern u1="'" u2="W" k="-41" />
+<hkern u1="'" u2="V" k="-41" />
+<hkern u1="'" u2="T" k="-41" />
+<hkern u1="'" u2="A" k="143" />
+<hkern u1="(" u2="J" k="-184" />
+<hkern u1="," u2="Ÿ" k="123" />
+<hkern u1="," u2="Œ" k="102" />
+<hkern u1="," u2="Ý" k="123" />
+<hkern u1="," u2="Ü" k="41" />
+<hkern u1="," u2="Û" k="41" />
+<hkern u1="," u2="Ú" k="41" />
+<hkern u1="," u2="Ù" k="41" />
+<hkern u1="," u2="Ø" k="102" />
+<hkern u1="," u2="Ö" k="102" />
+<hkern u1="," u2="Õ" k="102" />
+<hkern u1="," u2="Ô" k="102" />
+<hkern u1="," u2="Ó" k="102" />
+<hkern u1="," u2="Ò" k="102" />
+<hkern u1="," u2="Ç" k="102" />
+<hkern u1="," u2="Y" k="123" />
+<hkern u1="," u2="W" k="123" />
+<hkern u1="," u2="V" k="123" />
+<hkern u1="," u2="U" k="41" />
+<hkern u1="," u2="T" k="143" />
+<hkern u1="," u2="Q" k="102" />
+<hkern u1="," u2="O" k="102" />
+<hkern u1="," u2="G" k="102" />
+<hkern u1="," u2="C" k="102" />
+<hkern u1="-" u2="T" k="82" />
+<hkern u1="." u2="Ÿ" k="123" />
+<hkern u1="." u2="Œ" k="102" />
+<hkern u1="." u2="Ý" k="123" />
+<hkern u1="." u2="Ü" k="41" />
+<hkern u1="." u2="Û" k="41" />
+<hkern u1="." u2="Ú" k="41" />
+<hkern u1="." u2="Ù" k="41" />
+<hkern u1="." u2="Ø" k="102" />
+<hkern u1="." u2="Ö" k="102" />
+<hkern u1="." u2="Õ" k="102" />
+<hkern u1="." u2="Ô" k="102" />
+<hkern u1="." u2="Ó" k="102" />
+<hkern u1="." u2="Ò" k="102" />
+<hkern u1="." u2="Ç" k="102" />
+<hkern u1="." u2="Y" k="123" />
+<hkern u1="." u2="W" k="123" />
+<hkern u1="." u2="V" k="123" />
+<hkern u1="." u2="U" k="41" />
+<hkern u1="." u2="T" k="143" />
+<hkern u1="." u2="Q" k="102" />
+<hkern u1="." u2="O" k="102" />
+<hkern u1="." u2="G" k="102" />
+<hkern u1="." u2="C" k="102" />
+<hkern u1="A" u2="”" k="143" />
+<hkern u1="A" u2="’" k="143" />
+<hkern u1="A" u2="Ÿ" k="123" />
+<hkern u1="A" u2="Œ" k="41" />
+<hkern u1="A" u2="Ý" k="123" />
+<hkern u1="A" u2="Ø" k="41" />
+<hkern u1="A" u2="Ö" k="41" />
+<hkern u1="A" u2="Õ" k="41" />
+<hkern u1="A" u2="Ô" k="41" />
+<hkern u1="A" u2="Ó" k="41" />
+<hkern u1="A" u2="Ò" k="41" />
+<hkern u1="A" u2="Ç" k="41" />
+<hkern u1="A" u2="Y" k="123" />
+<hkern u1="A" u2="W" k="82" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="T" k="143" />
+<hkern u1="A" u2="Q" k="41" />
+<hkern u1="A" u2="O" k="41" />
+<hkern u1="A" u2="J" k="-266" />
+<hkern u1="A" u2="G" k="41" />
+<hkern u1="A" u2="C" k="41" />
+<hkern u1="A" u2="'" k="143" />
+<hkern u1="A" u2=""" k="143" />
+<hkern u1="B" u2="„" k="82" />
+<hkern u1="B" u2="‚" k="82" />
+<hkern u1="B" u2="Ÿ" k="20" />
+<hkern u1="B" u2="Ý" k="20" />
+<hkern u1="B" u2="Å" k="41" />
+<hkern u1="B" u2="Ä" k="41" />
+<hkern u1="B" u2="Ã" k="41" />
+<hkern u1="B" u2="Â" k="41" />
+<hkern u1="B" u2="Á" k="41" />
+<hkern u1="B" u2="À" k="41" />
+<hkern u1="B" u2="Z" k="20" />
+<hkern u1="B" u2="Y" k="20" />
+<hkern u1="B" u2="X" k="41" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="20" />
+<hkern u1="B" u2="T" k="61" />
+<hkern u1="B" u2="A" k="41" />
+<hkern u1="B" u2="." k="82" />
+<hkern u1="B" u2="," k="82" />
+<hkern u1="C" u2="Œ" k="41" />
+<hkern u1="C" u2="Ø" k="41" />
+<hkern u1="C" u2="Ö" k="41" />
+<hkern u1="C" u2="Õ" k="41" />
+<hkern u1="C" u2="Ô" k="41" />
+<hkern u1="C" u2="Ó" k="41" />
+<hkern u1="C" u2="Ò" k="41" />
+<hkern u1="C" u2="Ç" k="41" />
+<hkern u1="C" u2="Q" k="41" />
+<hkern u1="C" u2="O" k="41" />
+<hkern u1="C" u2="G" k="41" />
+<hkern u1="C" u2="C" k="41" />
+<hkern u1="D" u2="„" k="82" />
+<hkern u1="D" u2="‚" k="82" />
+<hkern u1="D" u2="Ÿ" k="20" />
+<hkern u1="D" u2="Ý" k="20" />
+<hkern u1="D" u2="Å" k="41" />
+<hkern u1="D" u2="Ä" k="41" />
+<hkern u1="D" u2="Ã" k="41" />
+<hkern u1="D" u2="Â" k="41" />
+<hkern u1="D" u2="Á" k="41" />
+<hkern u1="D" u2="À" k="41" />
+<hkern u1="D" u2="Z" k="20" />
+<hkern u1="D" u2="Y" k="20" />
+<hkern u1="D" u2="X" k="41" />
+<hkern u1="D" u2="W" k="20" />
+<hkern u1="D" u2="V" k="20" />
+<hkern u1="D" u2="T" k="61" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="." k="82" />
+<hkern u1="D" u2="," k="82" />
+<hkern u1="E" u2="J" k="-123" />
+<hkern u1="F" u2="„" k="123" />
+<hkern u1="F" u2="‚" k="123" />
+<hkern u1="F" u2="Å" k="41" />
+<hkern u1="F" u2="Ä" k="41" />
+<hkern u1="F" u2="Ã" k="41" />
+<hkern u1="F" u2="Â" k="41" />
+<hkern u1="F" u2="Á" k="41" />
+<hkern u1="F" u2="À" k="41" />
+<hkern u1="F" u2="A" k="41" />
+<hkern u1="F" u2="?" k="-41" />
+<hkern u1="F" u2="." k="123" />
+<hkern u1="F" u2="," k="123" />
+<hkern u1="K" u2="Œ" k="41" />
+<hkern u1="K" u2="Ø" k="41" />
+<hkern u1="K" u2="Ö" k="41" />
+<hkern u1="K" u2="Õ" k="41" />
+<hkern u1="K" u2="Ô" k="41" />
+<hkern u1="K" u2="Ó" k="41" />
+<hkern u1="K" u2="Ò" k="41" />
+<hkern u1="K" u2="Ç" k="41" />
+<hkern u1="K" u2="Q" k="41" />
+<hkern u1="K" u2="O" k="41" />
+<hkern u1="K" u2="G" k="41" />
+<hkern u1="K" u2="C" k="41" />
+<hkern u1="L" u2="”" k="164" />
+<hkern u1="L" u2="’" k="164" />
+<hkern u1="L" u2="Ÿ" k="61" />
+<hkern u1="L" u2="Œ" k="41" />
+<hkern u1="L" u2="Ý" k="61" />
+<hkern u1="L" u2="Ü" k="20" />
+<hkern u1="L" u2="Û" k="20" />
+<hkern u1="L" u2="Ú" k="20" />
+<hkern u1="L" u2="Ù" k="20" />
+<hkern u1="L" u2="Ø" k="41" />
+<hkern u1="L" u2="Ö" k="41" />
+<hkern u1="L" u2="Õ" k="41" />
+<hkern u1="L" u2="Ô" k="41" />
+<hkern u1="L" u2="Ó" k="41" />
+<hkern u1="L" u2="Ò" k="41" />
+<hkern u1="L" u2="Ç" k="41" />
+<hkern u1="L" u2="Y" k="61" />
+<hkern u1="L" u2="W" k="41" />
+<hkern u1="L" u2="V" k="41" />
+<hkern u1="L" u2="U" k="20" />
+<hkern u1="L" u2="T" k="41" />
+<hkern u1="L" u2="Q" k="41" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="G" k="41" />
+<hkern u1="L" u2="C" k="41" />
+<hkern u1="L" u2="'" k="164" />
+<hkern u1="L" u2=""" k="164" />
+<hkern u1="O" u2="„" k="82" />
+<hkern u1="O" u2="‚" k="82" />
+<hkern u1="O" u2="Ÿ" k="20" />
+<hkern u1="O" u2="Ý" k="20" />
+<hkern u1="O" u2="Å" k="41" />
+<hkern u1="O" u2="Ä" k="41" />
+<hkern u1="O" u2="Ã" k="41" />
+<hkern u1="O" u2="Â" k="41" />
+<hkern u1="O" u2="Á" k="41" />
+<hkern u1="O" u2="À" k="41" />
+<hkern u1="O" u2="Z" k="20" />
+<hkern u1="O" u2="Y" k="20" />
+<hkern u1="O" u2="X" k="41" />
+<hkern u1="O" u2="W" k="20" />
+<hkern u1="O" u2="V" k="20" />
+<hkern u1="O" u2="T" k="61" />
+<hkern u1="O" u2="A" k="41" />
+<hkern u1="O" u2="." k="82" />
+<hkern u1="O" u2="," k="82" />
+<hkern u1="P" u2="„" k="266" />
+<hkern u1="P" u2="‚" k="266" />
+<hkern u1="P" u2="Å" k="102" />
+<hkern u1="P" u2="Ä" k="102" />
+<hkern u1="P" u2="Ã" k="102" />
+<hkern u1="P" u2="Â" k="102" />
+<hkern u1="P" u2="Á" k="102" />
+<hkern u1="P" u2="À" k="102" />
+<hkern u1="P" u2="Z" k="20" />
+<hkern u1="P" u2="X" k="41" />
+<hkern u1="P" u2="A" k="102" />
+<hkern u1="P" u2="." k="266" />
+<hkern u1="P" u2="," k="266" />
+<hkern u1="Q" u2="„" k="82" />
+<hkern u1="Q" u2="‚" k="82" />
+<hkern u1="Q" u2="Ÿ" k="20" />
+<hkern u1="Q" u2="Ý" k="20" />
+<hkern u1="Q" u2="Å" k="41" />
+<hkern u1="Q" u2="Ä" k="41" />
+<hkern u1="Q" u2="Ã" k="41" />
+<hkern u1="Q" u2="Â" k="41" />
+<hkern u1="Q" u2="Á" k="41" />
+<hkern u1="Q" u2="À" k="41" />
+<hkern u1="Q" u2="Z" k="20" />
+<hkern u1="Q" u2="Y" k="20" />
+<hkern u1="Q" u2="X" k="41" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="20" />
+<hkern u1="Q" u2="T" k="61" />
+<hkern u1="Q" u2="A" k="41" />
+<hkern u1="Q" u2="." k="82" />
+<hkern u1="Q" u2="," k="82" />
+<hkern u1="T" u2="„" k="123" />
+<hkern u1="T" u2="‚" k="123" />
+<hkern u1="T" u2="—" k="82" />
+<hkern u1="T" u2="–" k="82" />
+<hkern u1="T" u2="œ" k="143" />
+<hkern u1="T" u2="Œ" k="41" />
+<hkern u1="T" u2="ý" k="41" />
+<hkern u1="T" u2="ü" k="102" />
+<hkern u1="T" u2="û" k="102" />
+<hkern u1="T" u2="ú" k="102" />
+<hkern u1="T" u2="ù" k="102" />
+<hkern u1="T" u2="ø" k="143" />
+<hkern u1="T" u2="ö" k="143" />
+<hkern u1="T" u2="õ" k="143" />
+<hkern u1="T" u2="ô" k="143" />
+<hkern u1="T" u2="ó" k="143" />
+<hkern u1="T" u2="ò" k="143" />
+<hkern u1="T" u2="ë" k="143" />
+<hkern u1="T" u2="ê" k="143" />
+<hkern u1="T" u2="é" k="143" />
+<hkern u1="T" u2="è" k="143" />
+<hkern u1="T" u2="ç" k="143" />
+<hkern u1="T" u2="æ" k="164" />
+<hkern u1="T" u2="å" k="164" />
+<hkern u1="T" u2="ä" k="164" />
+<hkern u1="T" u2="ã" k="164" />
+<hkern u1="T" u2="â" k="164" />
+<hkern u1="T" u2="á" k="164" />
+<hkern u1="T" u2="à" k="143" />
+<hkern u1="T" u2="Ø" k="41" />
+<hkern u1="T" u2="Ö" k="41" />
+<hkern u1="T" u2="Õ" k="41" />
+<hkern u1="T" u2="Ô" k="41" />
+<hkern u1="T" u2="Ó" k="41" />
+<hkern u1="T" u2="Ò" k="41" />
+<hkern u1="T" u2="Ç" k="41" />
+<hkern u1="T" u2="Å" k="143" />
+<hkern u1="T" u2="Ä" k="143" />
+<hkern u1="T" u2="Ã" k="143" />
+<hkern u1="T" u2="Â" k="143" />
+<hkern u1="T" u2="Á" k="143" />
+<hkern u1="T" u2="À" k="143" />
+<hkern u1="T" u2="z" k="82" />
+<hkern u1="T" u2="y" k="41" />
+<hkern u1="T" u2="x" k="41" />
+<hkern u1="T" u2="w" k="41" />
+<hkern u1="T" u2="v" k="41" />
+<hkern u1="T" u2="u" k="102" />
+<hkern u1="T" u2="s" k="123" />
+<hkern u1="T" u2="r" k="102" />
+<hkern u1="T" u2="q" k="143" />
+<hkern u1="T" u2="p" k="102" />
+<hkern u1="T" u2="o" k="143" />
+<hkern u1="T" u2="n" k="102" />
+<hkern u1="T" u2="m" k="102" />
+<hkern u1="T" u2="g" k="143" />
+<hkern u1="T" u2="e" k="143" />
+<hkern u1="T" u2="d" k="143" />
+<hkern u1="T" u2="c" k="143" />
+<hkern u1="T" u2="a" k="164" />
+<hkern u1="T" u2="T" k="-41" />
+<hkern u1="T" u2="Q" k="41" />
+<hkern u1="T" u2="O" k="41" />
+<hkern u1="T" u2="G" k="41" />
+<hkern u1="T" u2="C" k="41" />
+<hkern u1="T" u2="A" k="143" />
+<hkern u1="T" u2="?" k="-41" />
+<hkern u1="T" u2="." k="123" />
+<hkern u1="T" u2="-" k="82" />
+<hkern u1="T" u2="," k="123" />
+<hkern u1="U" u2="„" k="41" />
+<hkern u1="U" u2="‚" k="41" />
+<hkern u1="U" u2="Å" k="20" />
+<hkern u1="U" u2="Ä" k="20" />
+<hkern u1="U" u2="Ã" k="20" />
+<hkern u1="U" u2="Â" k="20" />
+<hkern u1="U" u2="Á" k="20" />
+<hkern u1="U" u2="À" k="20" />
+<hkern u1="U" u2="A" k="20" />
+<hkern u1="U" u2="." k="41" />
+<hkern u1="U" u2="," k="41" />
+<hkern u1="V" u2="„" k="102" />
+<hkern u1="V" u2="‚" k="102" />
+<hkern u1="V" u2="œ" k="41" />
+<hkern u1="V" u2="Œ" k="20" />
+<hkern u1="V" u2="ü" k="20" />
+<hkern u1="V" u2="û" k="20" />
+<hkern u1="V" u2="ú" k="20" />
+<hkern u1="V" u2="ù" k="20" />
+<hkern u1="V" u2="ø" k="41" />
+<hkern u1="V" u2="ö" k="41" />
+<hkern u1="V" u2="õ" k="41" />
+<hkern u1="V" u2="ô" k="41" />
+<hkern u1="V" u2="ó" k="41" />
+<hkern u1="V" u2="ò" k="41" />
+<hkern u1="V" u2="ë" k="41" />
+<hkern u1="V" u2="ê" k="41" />
+<hkern u1="V" u2="é" k="41" />
+<hkern u1="V" u2="è" k="41" />
+<hkern u1="V" u2="ç" k="41" />
+<hkern u1="V" u2="æ" k="41" />
+<hkern u1="V" u2="å" k="41" />
+<hkern u1="V" u2="ä" k="41" />
+<hkern u1="V" u2="ã" k="41" />
+<hkern u1="V" u2="â" k="41" />
+<hkern u1="V" u2="á" k="41" />
+<hkern u1="V" u2="à" k="41" />
+<hkern u1="V" u2="Ø" k="20" />
+<hkern u1="V" u2="Ö" k="20" />
+<hkern u1="V" u2="Õ" k="20" />
+<hkern u1="V" u2="Ô" k="20" />
+<hkern u1="V" u2="Ó" k="20" />
+<hkern u1="V" u2="Ò" k="20" />
+<hkern u1="V" u2="Ç" k="20" />
+<hkern u1="V" u2="Å" k="82" />
+<hkern u1="V" u2="Ä" k="82" />
+<hkern u1="V" u2="Ã" k="82" />
+<hkern u1="V" u2="Â" k="82" />
+<hkern u1="V" u2="Á" k="82" />
+<hkern u1="V" u2="À" k="82" />
+<hkern u1="V" u2="u" k="20" />
+<hkern u1="V" u2="s" k="20" />
+<hkern u1="V" u2="r" k="20" />
+<hkern u1="V" u2="q" k="41" />
+<hkern u1="V" u2="p" k="20" />
+<hkern u1="V" u2="o" k="41" />
+<hkern u1="V" u2="n" k="20" />
+<hkern u1="V" u2="m" k="20" />
+<hkern u1="V" u2="g" k="20" />
+<hkern u1="V" u2="e" k="41" />
+<hkern u1="V" u2="d" k="41" />
+<hkern u1="V" u2="c" k="41" />
+<hkern u1="V" u2="a" k="41" />
+<hkern u1="V" u2="Q" k="20" />
+<hkern u1="V" u2="O" k="20" />
+<hkern u1="V" u2="G" k="20" />
+<hkern u1="V" u2="C" k="20" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="?" k="-41" />
+<hkern u1="V" u2="." k="102" />
+<hkern u1="V" u2="," k="102" />
+<hkern u1="W" u2="„" k="102" />
+<hkern u1="W" u2="‚" k="102" />
+<hkern u1="W" u2="œ" k="41" />
+<hkern u1="W" u2="Œ" k="20" />
+<hkern u1="W" u2="ü" k="20" />
+<hkern u1="W" u2="û" k="20" />
+<hkern u1="W" u2="ú" k="20" />
+<hkern u1="W" u2="ù" k="20" />
+<hkern u1="W" u2="ø" k="41" />
+<hkern u1="W" u2="ö" k="41" />
+<hkern u1="W" u2="õ" k="41" />
+<hkern u1="W" u2="ô" k="41" />
+<hkern u1="W" u2="ó" k="41" />
+<hkern u1="W" u2="ò" k="41" />
+<hkern u1="W" u2="ë" k="41" />
+<hkern u1="W" u2="ê" k="41" />
+<hkern u1="W" u2="é" k="41" />
+<hkern u1="W" u2="è" k="41" />
+<hkern u1="W" u2="ç" k="41" />
+<hkern u1="W" u2="æ" k="41" />
+<hkern u1="W" u2="å" k="41" />
+<hkern u1="W" u2="ä" k="41" />
+<hkern u1="W" u2="ã" k="41" />
+<hkern u1="W" u2="â" k="41" />
+<hkern u1="W" u2="á" k="41" />
+<hkern u1="W" u2="à" k="41" />
+<hkern u1="W" u2="Ø" k="20" />
+<hkern u1="W" u2="Ö" k="20" />
+<hkern u1="W" u2="Õ" k="20" />
+<hkern u1="W" u2="Ô" k="20" />
+<hkern u1="W" u2="Ó" k="20" />
+<hkern u1="W" u2="Ò" k="20" />
+<hkern u1="W" u2="Ç" k="20" />
+<hkern u1="W" u2="Å" k="82" />
+<hkern u1="W" u2="Ä" k="82" />
+<hkern u1="W" u2="Ã" k="82" />
+<hkern u1="W" u2="Â" k="82" />
+<hkern u1="W" u2="Á" k="82" />
+<hkern u1="W" u2="À" k="82" />
+<hkern u1="W" u2="u" k="20" />
+<hkern u1="W" u2="s" k="20" />
+<hkern u1="W" u2="r" k="20" />
+<hkern u1="W" u2="q" k="41" />
+<hkern u1="W" u2="p" k="20" />
+<hkern u1="W" u2="o" k="41" />
+<hkern u1="W" u2="n" k="20" />
+<hkern u1="W" u2="m" k="20" />
+<hkern u1="W" u2="g" k="20" />
+<hkern u1="W" u2="e" k="41" />
+<hkern u1="W" u2="d" k="41" />
+<hkern u1="W" u2="c" k="41" />
+<hkern u1="W" u2="a" k="41" />
+<hkern u1="W" u2="Q" k="20" />
+<hkern u1="W" u2="O" k="20" />
+<hkern u1="W" u2="G" k="20" />
+<hkern u1="W" u2="C" k="20" />
+<hkern u1="W" u2="A" k="82" />
+<hkern u1="W" u2="?" k="-41" />
+<hkern u1="W" u2="." k="102" />
+<hkern u1="W" u2="," k="102" />
+<hkern u1="X" u2="Œ" k="41" />
+<hkern u1="X" u2="Ø" k="41" />
+<hkern u1="X" u2="Ö" k="41" />
+<hkern u1="X" u2="Õ" k="41" />
+<hkern u1="X" u2="Ô" k="41" />
+<hkern u1="X" u2="Ó" k="41" />
+<hkern u1="X" u2="Ò" k="41" />
+<hkern u1="X" u2="Ç" k="41" />
+<hkern u1="X" u2="Q" k="41" />
+<hkern u1="X" u2="O" k="41" />
+<hkern u1="X" u2="G" k="41" />
+<hkern u1="X" u2="C" k="41" />
+<hkern u1="Y" u2="„" k="123" />
+<hkern u1="Y" u2="‚" k="123" />
+<hkern u1="Y" u2="œ" k="102" />
+<hkern u1="Y" u2="Œ" k="41" />
+<hkern u1="Y" u2="ü" k="61" />
+<hkern u1="Y" u2="û" k="61" />
+<hkern u1="Y" u2="ú" k="61" />
+<hkern u1="Y" u2="ù" k="61" />
+<hkern u1="Y" u2="ø" k="102" />
+<hkern u1="Y" u2="ö" k="102" />
+<hkern u1="Y" u2="õ" k="102" />
+<hkern u1="Y" u2="ô" k="102" />
+<hkern u1="Y" u2="ó" k="102" />
+<hkern u1="Y" u2="ò" k="102" />
+<hkern u1="Y" u2="ë" k="102" />
+<hkern u1="Y" u2="ê" k="102" />
+<hkern u1="Y" u2="é" k="102" />
+<hkern u1="Y" u2="è" k="102" />
+<hkern u1="Y" u2="ç" k="102" />
+<hkern u1="Y" u2="æ" k="102" />
+<hkern u1="Y" u2="å" k="102" />
+<hkern u1="Y" u2="ä" k="102" />
+<hkern u1="Y" u2="ã" k="102" />
+<hkern u1="Y" u2="â" k="102" />
+<hkern u1="Y" u2="á" k="102" />
+<hkern u1="Y" u2="à" k="102" />
+<hkern u1="Y" u2="Ø" k="41" />
+<hkern u1="Y" u2="Ö" k="41" />
+<hkern u1="Y" u2="Õ" k="41" />
+<hkern u1="Y" u2="Ô" k="41" />
+<hkern u1="Y" u2="Ó" k="41" />
+<hkern u1="Y" u2="Ò" k="41" />
+<hkern u1="Y" u2="Ç" k="41" />
+<hkern u1="Y" u2="Å" k="123" />
+<hkern u1="Y" u2="Ä" k="123" />
+<hkern u1="Y" u2="Ã" k="123" />
+<hkern u1="Y" u2="Â" k="123" />
+<hkern u1="Y" u2="Á" k="123" />
+<hkern u1="Y" u2="À" k="123" />
+<hkern u1="Y" u2="z" k="41" />
+<hkern u1="Y" u2="u" k="61" />
+<hkern u1="Y" u2="s" k="82" />
+<hkern u1="Y" u2="r" k="61" />
+<hkern u1="Y" u2="q" k="102" />
+<hkern u1="Y" u2="p" k="61" />
+<hkern u1="Y" u2="o" k="102" />
+<hkern u1="Y" u2="n" k="61" />
+<hkern u1="Y" u2="m" k="61" />
+<hkern u1="Y" u2="g" k="41" />
+<hkern u1="Y" u2="e" k="102" />
+<hkern u1="Y" u2="d" k="102" />
+<hkern u1="Y" u2="c" k="102" />
+<hkern u1="Y" u2="a" k="102" />
+<hkern u1="Y" u2="Q" k="41" />
+<hkern u1="Y" u2="O" k="41" />
+<hkern u1="Y" u2="G" k="41" />
+<hkern u1="Y" u2="C" k="41" />
+<hkern u1="Y" u2="A" k="123" />
+<hkern u1="Y" u2="?" k="-41" />
+<hkern u1="Y" u2="." k="123" />
+<hkern u1="Y" u2="," k="123" />
+<hkern u1="Z" u2="Œ" k="20" />
+<hkern u1="Z" u2="Ø" k="20" />
+<hkern u1="Z" u2="Ö" k="20" />
+<hkern u1="Z" u2="Õ" k="20" />
+<hkern u1="Z" u2="Ô" k="20" />
+<hkern u1="Z" u2="Ó" k="20" />
+<hkern u1="Z" u2="Ò" k="20" />
+<hkern u1="Z" u2="Ç" k="20" />
+<hkern u1="Z" u2="Q" k="20" />
+<hkern u1="Z" u2="O" k="20" />
+<hkern u1="Z" u2="G" k="20" />
+<hkern u1="Z" u2="C" k="20" />
+<hkern u1="[" u2="J" k="-184" />
+<hkern u1="a" u2="”" k="20" />
+<hkern u1="a" u2="’" k="20" />
+<hkern u1="a" u2="'" k="20" />
+<hkern u1="a" u2=""" k="20" />
+<hkern u1="b" u2="”" k="20" />
+<hkern u1="b" u2="’" k="20" />
+<hkern u1="b" u2="ý" k="41" />
+<hkern u1="b" u2="z" k="20" />
+<hkern u1="b" u2="y" k="41" />
+<hkern u1="b" u2="x" k="41" />
+<hkern u1="b" u2="w" k="41" />
+<hkern u1="b" u2="v" k="41" />
+<hkern u1="b" u2="'" k="20" />
+<hkern u1="b" u2=""" k="20" />
+<hkern u1="c" u2="”" k="-41" />
+<hkern u1="c" u2="’" k="-41" />
+<hkern u1="c" u2="'" k="-41" />
+<hkern u1="c" u2=""" k="-41" />
+<hkern u1="e" u2="”" k="20" />
+<hkern u1="e" u2="’" k="20" />
+<hkern u1="e" u2="ý" k="41" />
+<hkern u1="e" u2="z" k="20" />
+<hkern u1="e" u2="y" k="41" />
+<hkern u1="e" u2="x" k="41" />
+<hkern u1="e" u2="w" k="41" />
+<hkern u1="e" u2="v" k="41" />
+<hkern u1="e" u2="'" k="20" />
+<hkern u1="e" u2=""" k="20" />
+<hkern u1="f" u2="”" k="-123" />
+<hkern u1="f" u2="’" k="-123" />
+<hkern u1="f" u2="'" k="-123" />
+<hkern u1="f" u2=""" k="-123" />
+<hkern u1="h" u2="”" k="20" />
+<hkern u1="h" u2="’" k="20" />
+<hkern u1="h" u2="'" k="20" />
+<hkern u1="h" u2=""" k="20" />
+<hkern u1="k" u2="œ" k="41" />
+<hkern u1="k" u2="ø" k="41" />
+<hkern u1="k" u2="ö" k="41" />
+<hkern u1="k" u2="õ" k="41" />
+<hkern u1="k" u2="ô" k="41" />
+<hkern u1="k" u2="ó" k="41" />
+<hkern u1="k" u2="ò" k="41" />
+<hkern u1="k" u2="ë" k="41" />
+<hkern u1="k" u2="ê" k="41" />
+<hkern u1="k" u2="é" k="41" />
+<hkern u1="k" u2="è" k="41" />
+<hkern u1="k" u2="ç" k="41" />
+<hkern u1="k" u2="à" k="41" />
+<hkern u1="k" u2="q" k="41" />
+<hkern u1="k" u2="o" k="41" />
+<hkern u1="k" u2="e" k="41" />
+<hkern u1="k" u2="d" k="41" />
+<hkern u1="k" u2="c" k="41" />
+<hkern u1="m" u2="”" k="20" />
+<hkern u1="m" u2="’" k="20" />
+<hkern u1="m" u2="'" k="20" />
+<hkern u1="m" u2=""" k="20" />
+<hkern u1="n" u2="”" k="20" />
+<hkern u1="n" u2="’" k="20" />
+<hkern u1="n" u2="'" k="20" />
+<hkern u1="n" u2=""" k="20" />
+<hkern u1="o" u2="”" k="20" />
+<hkern u1="o" u2="’" k="20" />
+<hkern u1="o" u2="ý" k="41" />
+<hkern u1="o" u2="z" k="20" />
+<hkern u1="o" u2="y" k="41" />
+<hkern u1="o" u2="x" k="41" />
+<hkern u1="o" u2="w" k="41" />
+<hkern u1="o" u2="v" k="41" />
+<hkern u1="o" u2="'" k="20" />
+<hkern u1="o" u2=""" k="20" />
+<hkern u1="p" u2="”" k="20" />
+<hkern u1="p" u2="’" k="20" />
+<hkern u1="p" u2="ý" k="41" />
+<hkern u1="p" u2="z" k="20" />
+<hkern u1="p" u2="y" k="41" />
+<hkern u1="p" u2="x" k="41" />
+<hkern u1="p" u2="w" k="41" />
+<hkern u1="p" u2="v" k="41" />
+<hkern u1="p" u2="'" k="20" />
+<hkern u1="p" u2=""" k="20" />
+<hkern u1="r" u2="”" k="-82" />
+<hkern u1="r" u2="’" k="-82" />
+<hkern u1="r" u2="œ" k="41" />
+<hkern u1="r" u2="ø" k="41" />
+<hkern u1="r" u2="ö" k="41" />
+<hkern u1="r" u2="õ" k="41" />
+<hkern u1="r" u2="ô" k="41" />
+<hkern u1="r" u2="ó" k="41" />
+<hkern u1="r" u2="ò" k="41" />
+<hkern u1="r" u2="ë" k="41" />
+<hkern u1="r" u2="ê" k="41" />
+<hkern u1="r" u2="é" k="41" />
+<hkern u1="r" u2="è" k="41" />
+<hkern u1="r" u2="ç" k="41" />
+<hkern u1="r" u2="æ" k="41" />
+<hkern u1="r" u2="å" k="41" />
+<hkern u1="r" u2="ä" k="41" />
+<hkern u1="r" u2="ã" k="41" />
+<hkern u1="r" u2="â" k="41" />
+<hkern u1="r" u2="á" k="41" />
+<hkern u1="r" u2="à" k="41" />
+<hkern u1="r" u2="q" k="41" />
+<hkern u1="r" u2="o" k="41" />
+<hkern u1="r" u2="g" k="20" />
+<hkern u1="r" u2="e" k="41" />
+<hkern u1="r" u2="d" k="41" />
+<hkern u1="r" u2="c" k="41" />
+<hkern u1="r" u2="a" k="41" />
+<hkern u1="r" u2="'" k="-82" />
+<hkern u1="r" u2=""" k="-82" />
+<hkern u1="t" u2="”" k="-41" />
+<hkern u1="t" u2="’" k="-41" />
+<hkern u1="t" u2="'" k="-41" />
+<hkern u1="t" u2=""" k="-41" />
+<hkern u1="v" u2="„" k="82" />
+<hkern u1="v" u2="”" k="-82" />
+<hkern u1="v" u2="‚" k="82" />
+<hkern u1="v" u2="’" k="-82" />
+<hkern u1="v" u2="?" k="-41" />
+<hkern u1="v" u2="." k="82" />
+<hkern u1="v" u2="," k="82" />
+<hkern u1="v" u2="'" k="-82" />
+<hkern u1="v" u2=""" k="-82" />
+<hkern u1="w" u2="„" k="82" />
+<hkern u1="w" u2="”" k="-82" />
+<hkern u1="w" u2="‚" k="82" />
+<hkern u1="w" u2="’" k="-82" />
+<hkern u1="w" u2="?" k="-41" />
+<hkern u1="w" u2="." k="82" />
+<hkern u1="w" u2="," k="82" />
+<hkern u1="w" u2="'" k="-82" />
+<hkern u1="w" u2=""" k="-82" />
+<hkern u1="x" u2="œ" k="41" />
+<hkern u1="x" u2="ø" k="41" />
+<hkern u1="x" u2="ö" k="41" />
+<hkern u1="x" u2="õ" k="41" />
+<hkern u1="x" u2="ô" k="41" />
+<hkern u1="x" u2="ó" k="41" />
+<hkern u1="x" u2="ò" k="41" />
+<hkern u1="x" u2="ë" k="41" />
+<hkern u1="x" u2="ê" k="41" />
+<hkern u1="x" u2="é" k="41" />
+<hkern u1="x" u2="è" k="41" />
+<hkern u1="x" u2="ç" k="41" />
+<hkern u1="x" u2="à" k="41" />
+<hkern u1="x" u2="q" k="41" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="e" k="41" />
+<hkern u1="x" u2="d" k="41" />
+<hkern u1="x" u2="c" k="41" />
+<hkern u1="y" u2="„" k="82" />
+<hkern u1="y" u2="”" k="-82" />
+<hkern u1="y" u2="‚" k="82" />
+<hkern u1="y" u2="’" k="-82" />
+<hkern u1="y" u2="?" k="-41" />
+<hkern u1="y" u2="." k="82" />
+<hkern u1="y" u2="," k="82" />
+<hkern u1="y" u2="'" k="-82" />
+<hkern u1="y" u2=""" k="-82" />
+<hkern u1="{" u2="J" k="-184" />
+<hkern u1="À" u2="”" k="143" />
+<hkern u1="À" u2="’" k="143" />
+<hkern u1="À" u2="Ÿ" k="123" />
+<hkern u1="À" u2="Œ" k="41" />
+<hkern u1="À" u2="Ý" k="123" />
+<hkern u1="À" u2="Ø" k="41" />
+<hkern u1="À" u2="Ö" k="41" />
+<hkern u1="À" u2="Õ" k="41" />
+<hkern u1="À" u2="Ô" k="41" />
+<hkern u1="À" u2="Ó" k="41" />
+<hkern u1="À" u2="Ò" k="41" />
+<hkern u1="À" u2="Ç" k="41" />
+<hkern u1="À" u2="Y" k="123" />
+<hkern u1="À" u2="W" k="82" />
+<hkern u1="À" u2="V" k="82" />
+<hkern u1="À" u2="T" k="143" />
+<hkern u1="À" u2="Q" k="41" />
+<hkern u1="À" u2="O" k="41" />
+<hkern u1="À" u2="J" k="-266" />
+<hkern u1="À" u2="G" k="41" />
+<hkern u1="À" u2="C" k="41" />
+<hkern u1="À" u2="'" k="143" />
+<hkern u1="À" u2=""" k="143" />
+<hkern u1="Á" u2="”" k="143" />
+<hkern u1="Á" u2="’" k="143" />
+<hkern u1="Á" u2="Ÿ" k="123" />
+<hkern u1="Á" u2="Œ" k="41" />
+<hkern u1="Á" u2="Ý" k="123" />
+<hkern u1="Á" u2="Ø" k="41" />
+<hkern u1="Á" u2="Ö" k="41" />
+<hkern u1="Á" u2="Õ" k="41" />
+<hkern u1="Á" u2="Ô" k="41" />
+<hkern u1="Á" u2="Ó" k="41" />
+<hkern u1="Á" u2="Ò" k="41" />
+<hkern u1="Á" u2="Ç" k="41" />
+<hkern u1="Á" u2="Y" k="123" />
+<hkern u1="Á" u2="W" k="82" />
+<hkern u1="Á" u2="V" k="82" />
+<hkern u1="Á" u2="T" k="143" />
+<hkern u1="Á" u2="Q" k="41" />
+<hkern u1="Á" u2="O" k="41" />
+<hkern u1="Á" u2="J" k="-266" />
+<hkern u1="Á" u2="G" k="41" />
+<hkern u1="Á" u2="C" k="41" />
+<hkern u1="Á" u2="'" k="143" />
+<hkern u1="Á" u2=""" k="143" />
+<hkern u1="Â" u2="”" k="143" />
+<hkern u1="Â" u2="’" k="143" />
+<hkern u1="Â" u2="Ÿ" k="123" />
+<hkern u1="Â" u2="Œ" k="41" />
+<hkern u1="Â" u2="Ý" k="123" />
+<hkern u1="Â" u2="Ø" k="41" />
+<hkern u1="Â" u2="Ö" k="41" />
+<hkern u1="Â" u2="Õ" k="41" />
+<hkern u1="Â" u2="Ô" k="41" />
+<hkern u1="Â" u2="Ó" k="41" />
+<hkern u1="Â" u2="Ò" k="41" />
+<hkern u1="Â" u2="Ç" k="41" />
+<hkern u1="Â" u2="Y" k="123" />
+<hkern u1="Â" u2="W" k="82" />
+<hkern u1="Â" u2="V" k="82" />
+<hkern u1="Â" u2="T" k="143" />
+<hkern u1="Â" u2="Q" k="41" />
+<hkern u1="Â" u2="O" k="41" />
+<hkern u1="Â" u2="J" k="-266" />
+<hkern u1="Â" u2="G" k="41" />
+<hkern u1="Â" u2="C" k="41" />
+<hkern u1="Â" u2="'" k="143" />
+<hkern u1="Â" u2=""" k="143" />
+<hkern u1="Ã" u2="”" k="143" />
+<hkern u1="Ã" u2="’" k="143" />
+<hkern u1="Ã" u2="Ÿ" k="123" />
+<hkern u1="Ã" u2="Œ" k="41" />
+<hkern u1="Ã" u2="Ý" k="123" />
+<hkern u1="Ã" u2="Ø" k="41" />
+<hkern u1="Ã" u2="Ö" k="41" />
+<hkern u1="Ã" u2="Õ" k="41" />
+<hkern u1="Ã" u2="Ô" k="41" />
+<hkern u1="Ã" u2="Ó" k="41" />
+<hkern u1="Ã" u2="Ò" k="41" />
+<hkern u1="Ã" u2="Ç" k="41" />
+<hkern u1="Ã" u2="Y" k="123" />
+<hkern u1="Ã" u2="W" k="82" />
+<hkern u1="Ã" u2="V" k="82" />
+<hkern u1="Ã" u2="T" k="143" />
+<hkern u1="Ã" u2="Q" k="41" />
+<hkern u1="Ã" u2="O" k="41" />
+<hkern u1="Ã" u2="J" k="-266" />
+<hkern u1="Ã" u2="G" k="41" />
+<hkern u1="Ã" u2="C" k="41" />
+<hkern u1="Ã" u2="'" k="143" />
+<hkern u1="Ã" u2=""" k="143" />
+<hkern u1="Ä" u2="”" k="143" />
+<hkern u1="Ä" u2="’" k="143" />
+<hkern u1="Ä" u2="Ÿ" k="123" />
+<hkern u1="Ä" u2="Œ" k="41" />
+<hkern u1="Ä" u2="Ý" k="123" />
+<hkern u1="Ä" u2="Ø" k="41" />
+<hkern u1="Ä" u2="Ö" k="41" />
+<hkern u1="Ä" u2="Õ" k="41" />
+<hkern u1="Ä" u2="Ô" k="41" />
+<hkern u1="Ä" u2="Ó" k="41" />
+<hkern u1="Ä" u2="Ò" k="41" />
+<hkern u1="Ä" u2="Ç" k="41" />
+<hkern u1="Ä" u2="Y" k="123" />
+<hkern u1="Ä" u2="W" k="82" />
+<hkern u1="Ä" u2="V" k="82" />
+<hkern u1="Ä" u2="T" k="143" />
+<hkern u1="Ä" u2="Q" k="41" />
+<hkern u1="Ä" u2="O" k="41" />
+<hkern u1="Ä" u2="J" k="-266" />
+<hkern u1="Ä" u2="G" k="41" />
+<hkern u1="Ä" u2="C" k="41" />
+<hkern u1="Ä" u2="'" k="143" />
+<hkern u1="Ä" u2=""" k="143" />
+<hkern u1="Å" u2="”" k="143" />
+<hkern u1="Å" u2="’" k="143" />
+<hkern u1="Å" u2="Ÿ" k="123" />
+<hkern u1="Å" u2="Œ" k="41" />
+<hkern u1="Å" u2="Ý" k="123" />
+<hkern u1="Å" u2="Ø" k="41" />
+<hkern u1="Å" u2="Ö" k="41" />
+<hkern u1="Å" u2="Õ" k="41" />
+<hkern u1="Å" u2="Ô" k="41" />
+<hkern u1="Å" u2="Ó" k="41" />
+<hkern u1="Å" u2="Ò" k="41" />
+<hkern u1="Å" u2="Ç" k="41" />
+<hkern u1="Å" u2="Y" k="123" />
+<hkern u1="Å" u2="W" k="82" />
+<hkern u1="Å" u2="V" k="82" />
+<hkern u1="Å" u2="T" k="143" />
+<hkern u1="Å" u2="Q" k="41" />
+<hkern u1="Å" u2="O" k="41" />
+<hkern u1="Å" u2="J" k="-266" />
+<hkern u1="Å" u2="G" k="41" />
+<hkern u1="Å" u2="C" k="41" />
+<hkern u1="Å" u2="'" k="143" />
+<hkern u1="Å" u2=""" k="143" />
+<hkern u1="Æ" u2="J" k="-123" />
+<hkern u1="Ç" u2="Œ" k="41" />
+<hkern u1="Ç" u2="Ø" k="41" />
+<hkern u1="Ç" u2="Ö" k="41" />
+<hkern u1="Ç" u2="Õ" k="41" />
+<hkern u1="Ç" u2="Ô" k="41" />
+<hkern u1="Ç" u2="Ó" k="41" />
+<hkern u1="Ç" u2="Ò" k="41" />
+<hkern u1="Ç" u2="Ç" k="41" />
+<hkern u1="Ç" u2="Q" k="41" />
+<hkern u1="Ç" u2="O" k="41" />
+<hkern u1="Ç" u2="G" k="41" />
+<hkern u1="Ç" u2="C" k="41" />
+<hkern u1="È" u2="J" k="-123" />
+<hkern u1="É" u2="J" k="-123" />
+<hkern u1="Ê" u2="J" k="-123" />
+<hkern u1="Ë" u2="J" k="-123" />
+<hkern u1="Ð" u2="„" k="82" />
+<hkern u1="Ð" u2="‚" k="82" />
+<hkern u1="Ð" u2="Ÿ" k="20" />
+<hkern u1="Ð" u2="Ý" k="20" />
+<hkern u1="Ð" u2="Å" k="41" />
+<hkern u1="Ð" u2="Ä" k="41" />
+<hkern u1="Ð" u2="Ã" k="41" />
+<hkern u1="Ð" u2="Â" k="41" />
+<hkern u1="Ð" u2="Á" k="41" />
+<hkern u1="Ð" u2="À" k="41" />
+<hkern u1="Ð" u2="Z" k="20" />
+<hkern u1="Ð" u2="Y" k="20" />
+<hkern u1="Ð" u2="X" k="41" />
+<hkern u1="Ð" u2="W" k="20" />
+<hkern u1="Ð" u2="V" k="20" />
+<hkern u1="Ð" u2="T" k="61" />
+<hkern u1="Ð" u2="A" k="41" />
+<hkern u1="Ð" u2="." k="82" />
+<hkern u1="Ð" u2="," k="82" />
+<hkern u1="Ò" u2="„" k="82" />
+<hkern u1="Ò" u2="‚" k="82" />
+<hkern u1="Ò" u2="Ÿ" k="20" />
+<hkern u1="Ò" u2="Ý" k="20" />
+<hkern u1="Ò" u2="Å" k="41" />
+<hkern u1="Ò" u2="Ä" k="41" />
+<hkern u1="Ò" u2="Ã" k="41" />
+<hkern u1="Ò" u2="Â" k="41" />
+<hkern u1="Ò" u2="Á" k="41" />
+<hkern u1="Ò" u2="À" k="41" />
+<hkern u1="Ò" u2="Z" k="20" />
+<hkern u1="Ò" u2="Y" k="20" />
+<hkern u1="Ò" u2="X" k="41" />
+<hkern u1="Ò" u2="W" k="20" />
+<hkern u1="Ò" u2="V" k="20" />
+<hkern u1="Ò" u2="T" k="61" />
+<hkern u1="Ò" u2="A" k="41" />
+<hkern u1="Ò" u2="." k="82" />
+<hkern u1="Ò" u2="," k="82" />
+<hkern u1="Ó" u2="„" k="82" />
+<hkern u1="Ó" u2="‚" k="82" />
+<hkern u1="Ó" u2="Ÿ" k="20" />
+<hkern u1="Ó" u2="Ý" k="20" />
+<hkern u1="Ó" u2="Å" k="41" />
+<hkern u1="Ó" u2="Ä" k="41" />
+<hkern u1="Ó" u2="Ã" k="41" />
+<hkern u1="Ó" u2="Â" k="41" />
+<hkern u1="Ó" u2="Á" k="41" />
+<hkern u1="Ó" u2="À" k="41" />
+<hkern u1="Ó" u2="Z" k="20" />
+<hkern u1="Ó" u2="Y" k="20" />
+<hkern u1="Ó" u2="X" k="41" />
+<hkern u1="Ó" u2="W" k="20" />
+<hkern u1="Ó" u2="V" k="20" />
+<hkern u1="Ó" u2="T" k="61" />
+<hkern u1="Ó" u2="A" k="41" />
+<hkern u1="Ó" u2="." k="82" />
+<hkern u1="Ó" u2="," k="82" />
+<hkern u1="Ô" u2="„" k="82" />
+<hkern u1="Ô" u2="‚" k="82" />
+<hkern u1="Ô" u2="Ÿ" k="20" />
+<hkern u1="Ô" u2="Ý" k="20" />
+<hkern u1="Ô" u2="Å" k="41" />
+<hkern u1="Ô" u2="Ä" k="41" />
+<hkern u1="Ô" u2="Ã" k="41" />
+<hkern u1="Ô" u2="Â" k="41" />
+<hkern u1="Ô" u2="Á" k="41" />
+<hkern u1="Ô" u2="À" k="41" />
+<hkern u1="Ô" u2="Z" k="20" />
+<hkern u1="Ô" u2="Y" k="20" />
+<hkern u1="Ô" u2="X" k="41" />
+<hkern u1="Ô" u2="W" k="20" />
+<hkern u1="Ô" u2="V" k="20" />
+<hkern u1="Ô" u2="T" k="61" />
+<hkern u1="Ô" u2="A" k="41" />
+<hkern u1="Ô" u2="." k="82" />
+<hkern u1="Ô" u2="," k="82" />
+<hkern u1="Õ" u2="„" k="82" />
+<hkern u1="Õ" u2="‚" k="82" />
+<hkern u1="Õ" u2="Ÿ" k="20" />
+<hkern u1="Õ" u2="Ý" k="20" />
+<hkern u1="Õ" u2="Å" k="41" />
+<hkern u1="Õ" u2="Ä" k="41" />
+<hkern u1="Õ" u2="Ã" k="41" />
+<hkern u1="Õ" u2="Â" k="41" />
+<hkern u1="Õ" u2="Á" k="41" />
+<hkern u1="Õ" u2="À" k="41" />
+<hkern u1="Õ" u2="Z" k="20" />
+<hkern u1="Õ" u2="Y" k="20" />
+<hkern u1="Õ" u2="X" k="41" />
+<hkern u1="Õ" u2="W" k="20" />
+<hkern u1="Õ" u2="V" k="20" />
+<hkern u1="Õ" u2="T" k="61" />
+<hkern u1="Õ" u2="A" k="41" />
+<hkern u1="Õ" u2="." k="82" />
+<hkern u1="Õ" u2="," k="82" />
+<hkern u1="Ö" u2="„" k="82" />
+<hkern u1="Ö" u2="‚" k="82" />
+<hkern u1="Ö" u2="Ÿ" k="20" />
+<hkern u1="Ö" u2="Ý" k="20" />
+<hkern u1="Ö" u2="Å" k="41" />
+<hkern u1="Ö" u2="Ä" k="41" />
+<hkern u1="Ö" u2="Ã" k="41" />
+<hkern u1="Ö" u2="Â" k="41" />
+<hkern u1="Ö" u2="Á" k="41" />
+<hkern u1="Ö" u2="À" k="41" />
+<hkern u1="Ö" u2="Z" k="20" />
+<hkern u1="Ö" u2="Y" k="20" />
+<hkern u1="Ö" u2="X" k="41" />
+<hkern u1="Ö" u2="W" k="20" />
+<hkern u1="Ö" u2="V" k="20" />
+<hkern u1="Ö" u2="T" k="61" />
+<hkern u1="Ö" u2="A" k="41" />
+<hkern u1="Ö" u2="." k="82" />
+<hkern u1="Ö" u2="," k="82" />
+<hkern u1="Ø" u2="„" k="82" />
+<hkern u1="Ø" u2="‚" k="82" />
+<hkern u1="Ø" u2="Ÿ" k="20" />
+<hkern u1="Ø" u2="Ý" k="20" />
+<hkern u1="Ø" u2="Å" k="41" />
+<hkern u1="Ø" u2="Ä" k="41" />
+<hkern u1="Ø" u2="Ã" k="41" />
+<hkern u1="Ø" u2="Â" k="41" />
+<hkern u1="Ø" u2="Á" k="41" />
+<hkern u1="Ø" u2="À" k="41" />
+<hkern u1="Ø" u2="Z" k="20" />
+<hkern u1="Ø" u2="Y" k="20" />
+<hkern u1="Ø" u2="X" k="41" />
+<hkern u1="Ø" u2="W" k="20" />
+<hkern u1="Ø" u2="V" k="20" />
+<hkern u1="Ø" u2="T" k="61" />
+<hkern u1="Ø" u2="A" k="41" />
+<hkern u1="Ø" u2="." k="82" />
+<hkern u1="Ø" u2="," k="82" />
+<hkern u1="Ù" u2="„" k="41" />
+<hkern u1="Ù" u2="‚" k="41" />
+<hkern u1="Ù" u2="Å" k="20" />
+<hkern u1="Ù" u2="Ä" k="20" />
+<hkern u1="Ù" u2="Ã" k="20" />
+<hkern u1="Ù" u2="Â" k="20" />
+<hkern u1="Ù" u2="Á" k="20" />
+<hkern u1="Ù" u2="À" k="20" />
+<hkern u1="Ù" u2="A" k="20" />
+<hkern u1="Ù" u2="." k="41" />
+<hkern u1="Ù" u2="," k="41" />
+<hkern u1="Ú" u2="„" k="41" />
+<hkern u1="Ú" u2="‚" k="41" />
+<hkern u1="Ú" u2="Å" k="20" />
+<hkern u1="Ú" u2="Ä" k="20" />
+<hkern u1="Ú" u2="Ã" k="20" />
+<hkern u1="Ú" u2="Â" k="20" />
+<hkern u1="Ú" u2="Á" k="20" />
+<hkern u1="Ú" u2="À" k="20" />
+<hkern u1="Ú" u2="A" k="20" />
+<hkern u1="Ú" u2="." k="41" />
+<hkern u1="Ú" u2="," k="41" />
+<hkern u1="Û" u2="„" k="41" />
+<hkern u1="Û" u2="‚" k="41" />
+<hkern u1="Û" u2="Å" k="20" />
+<hkern u1="Û" u2="Ä" k="20" />
+<hkern u1="Û" u2="Ã" k="20" />
+<hkern u1="Û" u2="Â" k="20" />
+<hkern u1="Û" u2="Á" k="20" />
+<hkern u1="Û" u2="À" k="20" />
+<hkern u1="Û" u2="A" k="20" />
+<hkern u1="Û" u2="." k="41" />
+<hkern u1="Û" u2="," k="41" />
+<hkern u1="Ü" u2="„" k="41" />
+<hkern u1="Ü" u2="‚" k="41" />
+<hkern u1="Ü" u2="Å" k="20" />
+<hkern u1="Ü" u2="Ä" k="20" />
+<hkern u1="Ü" u2="Ã" k="20" />
+<hkern u1="Ü" u2="Â" k="20" />
+<hkern u1="Ü" u2="Á" k="20" />
+<hkern u1="Ü" u2="À" k="20" />
+<hkern u1="Ü" u2="A" k="20" />
+<hkern u1="Ü" u2="." k="41" />
+<hkern u1="Ü" u2="," k="41" />
+<hkern u1="Ý" u2="„" k="123" />
+<hkern u1="Ý" u2="‚" k="123" />
+<hkern u1="Ý" u2="œ" k="102" />
+<hkern u1="Ý" u2="Œ" k="41" />
+<hkern u1="Ý" u2="ü" k="61" />
+<hkern u1="Ý" u2="û" k="61" />
+<hkern u1="Ý" u2="ú" k="61" />
+<hkern u1="Ý" u2="ù" k="61" />
+<hkern u1="Ý" u2="ø" k="102" />
+<hkern u1="Ý" u2="ö" k="102" />
+<hkern u1="Ý" u2="õ" k="102" />
+<hkern u1="Ý" u2="ô" k="102" />
+<hkern u1="Ý" u2="ó" k="102" />
+<hkern u1="Ý" u2="ò" k="102" />
+<hkern u1="Ý" u2="ë" k="102" />
+<hkern u1="Ý" u2="ê" k="102" />
+<hkern u1="Ý" u2="é" k="102" />
+<hkern u1="Ý" u2="è" k="102" />
+<hkern u1="Ý" u2="ç" k="102" />
+<hkern u1="Ý" u2="æ" k="102" />
+<hkern u1="Ý" u2="å" k="102" />
+<hkern u1="Ý" u2="ä" k="102" />
+<hkern u1="Ý" u2="ã" k="102" />
+<hkern u1="Ý" u2="â" k="102" />
+<hkern u1="Ý" u2="á" k="102" />
+<hkern u1="Ý" u2="à" k="102" />
+<hkern u1="Ý" u2="Ø" k="41" />
+<hkern u1="Ý" u2="Ö" k="41" />
+<hkern u1="Ý" u2="Õ" k="41" />
+<hkern u1="Ý" u2="Ô" k="41" />
+<hkern u1="Ý" u2="Ó" k="41" />
+<hkern u1="Ý" u2="Ò" k="41" />
+<hkern u1="Ý" u2="Ç" k="41" />
+<hkern u1="Ý" u2="Å" k="123" />
+<hkern u1="Ý" u2="Ä" k="123" />
+<hkern u1="Ý" u2="Ã" k="123" />
+<hkern u1="Ý" u2="Â" k="123" />
+<hkern u1="Ý" u2="Á" k="123" />
+<hkern u1="Ý" u2="À" k="123" />
+<hkern u1="Ý" u2="z" k="41" />
+<hkern u1="Ý" u2="u" k="61" />
+<hkern u1="Ý" u2="s" k="82" />
+<hkern u1="Ý" u2="r" k="61" />
+<hkern u1="Ý" u2="q" k="102" />
+<hkern u1="Ý" u2="p" k="61" />
+<hkern u1="Ý" u2="o" k="102" />
+<hkern u1="Ý" u2="n" k="61" />
+<hkern u1="Ý" u2="m" k="61" />
+<hkern u1="Ý" u2="g" k="41" />
+<hkern u1="Ý" u2="e" k="102" />
+<hkern u1="Ý" u2="d" k="102" />
+<hkern u1="Ý" u2="c" k="102" />
+<hkern u1="Ý" u2="a" k="102" />
+<hkern u1="Ý" u2="Q" k="41" />
+<hkern u1="Ý" u2="O" k="41" />
+<hkern u1="Ý" u2="G" k="41" />
+<hkern u1="Ý" u2="C" k="41" />
+<hkern u1="Ý" u2="A" k="123" />
+<hkern u1="Ý" u2="?" k="-41" />
+<hkern u1="Ý" u2="." k="123" />
+<hkern u1="Ý" u2="," k="123" />
+<hkern u1="Þ" u2="„" k="266" />
+<hkern u1="Þ" u2="‚" k="266" />
+<hkern u1="Þ" u2="Å" k="102" />
+<hkern u1="Þ" u2="Ä" k="102" />
+<hkern u1="Þ" u2="Ã" k="102" />
+<hkern u1="Þ" u2="Â" k="102" />
+<hkern u1="Þ" u2="Á" k="102" />
+<hkern u1="Þ" u2="À" k="102" />
+<hkern u1="Þ" u2="Z" k="20" />
+<hkern u1="Þ" u2="X" k="41" />
+<hkern u1="Þ" u2="A" k="102" />
+<hkern u1="Þ" u2="." k="266" />
+<hkern u1="Þ" u2="," k="266" />
+<hkern u1="à" u2="”" k="20" />
+<hkern u1="à" u2="’" k="20" />
+<hkern u1="à" u2="'" k="20" />
+<hkern u1="à" u2=""" k="20" />
+<hkern u1="á" u2="”" k="20" />
+<hkern u1="á" u2="’" k="20" />
+<hkern u1="á" u2="'" k="20" />
+<hkern u1="á" u2=""" k="20" />
+<hkern u1="â" u2="”" k="20" />
+<hkern u1="â" u2="’" k="20" />
+<hkern u1="â" u2="'" k="20" />
+<hkern u1="â" u2=""" k="20" />
+<hkern u1="ã" u2="”" k="20" />
+<hkern u1="ã" u2="’" k="20" />
+<hkern u1="ã" u2="'" k="20" />
+<hkern u1="ã" u2=""" k="20" />
+<hkern u1="ä" u2="”" k="20" />
+<hkern u1="ä" u2="’" k="20" />
+<hkern u1="ä" u2="'" k="20" />
+<hkern u1="ä" u2=""" k="20" />
+<hkern u1="å" u2="”" k="20" />
+<hkern u1="å" u2="’" k="20" />
+<hkern u1="å" u2="'" k="20" />
+<hkern u1="å" u2=""" k="20" />
+<hkern u1="è" u2="”" k="20" />
+<hkern u1="è" u2="’" k="20" />
+<hkern u1="è" u2="ý" k="41" />
+<hkern u1="è" u2="z" k="20" />
+<hkern u1="è" u2="y" k="41" />
+<hkern u1="è" u2="x" k="41" />
+<hkern u1="è" u2="w" k="41" />
+<hkern u1="è" u2="v" k="41" />
+<hkern u1="è" u2="'" k="20" />
+<hkern u1="è" u2=""" k="20" />
+<hkern u1="é" u2="”" k="20" />
+<hkern u1="é" u2="’" k="20" />
+<hkern u1="é" u2="ý" k="41" />
+<hkern u1="é" u2="z" k="20" />
+<hkern u1="é" u2="y" k="41" />
+<hkern u1="é" u2="x" k="41" />
+<hkern u1="é" u2="w" k="41" />
+<hkern u1="é" u2="v" k="41" />
+<hkern u1="é" u2="'" k="20" />
+<hkern u1="é" u2=""" k="20" />
+<hkern u1="ê" u2="”" k="20" />
+<hkern u1="ê" u2="’" k="20" />
+<hkern u1="ê" u2="ý" k="41" />
+<hkern u1="ê" u2="z" k="20" />
+<hkern u1="ê" u2="y" k="41" />
+<hkern u1="ê" u2="x" k="41" />
+<hkern u1="ê" u2="w" k="41" />
+<hkern u1="ê" u2="v" k="41" />
+<hkern u1="ê" u2="'" k="20" />
+<hkern u1="ê" u2=""" k="20" />
+<hkern u1="ë" u2="”" k="20" />
+<hkern u1="ë" u2="’" k="20" />
+<hkern u1="ë" u2="ý" k="41" />
+<hkern u1="ë" u2="z" k="20" />
+<hkern u1="ë" u2="y" k="41" />
+<hkern u1="ë" u2="x" k="41" />
+<hkern u1="ë" u2="w" k="41" />
+<hkern u1="ë" u2="v" k="41" />
+<hkern u1="ë" u2="'" k="20" />
+<hkern u1="ë" u2=""" k="20" />
+<hkern u1="ð" u2="”" k="20" />
+<hkern u1="ð" u2="’" k="20" />
+<hkern u1="ð" u2="ý" k="41" />
+<hkern u1="ð" u2="z" k="20" />
+<hkern u1="ð" u2="y" k="41" />
+<hkern u1="ð" u2="x" k="41" />
+<hkern u1="ð" u2="w" k="41" />
+<hkern u1="ð" u2="v" k="41" />
+<hkern u1="ð" u2="'" k="20" />
+<hkern u1="ð" u2=""" k="20" />
+<hkern u1="ò" u2="”" k="20" />
+<hkern u1="ò" u2="’" k="20" />
+<hkern u1="ò" u2="ý" k="41" />
+<hkern u1="ò" u2="z" k="20" />
+<hkern u1="ò" u2="y" k="41" />
+<hkern u1="ò" u2="x" k="41" />
+<hkern u1="ò" u2="w" k="41" />
+<hkern u1="ò" u2="v" k="41" />
+<hkern u1="ò" u2="'" k="20" />
+<hkern u1="ò" u2=""" k="20" />
+<hkern u1="ó" u2="”" k="20" />
+<hkern u1="ó" u2="’" k="20" />
+<hkern u1="ó" u2="ý" k="41" />
+<hkern u1="ó" u2="z" k="20" />
+<hkern u1="ó" u2="y" k="41" />
+<hkern u1="ó" u2="x" k="41" />
+<hkern u1="ó" u2="w" k="41" />
+<hkern u1="ó" u2="v" k="41" />
+<hkern u1="ó" u2="'" k="20" />
+<hkern u1="ó" u2=""" k="20" />
+<hkern u1="ô" u2="”" k="20" />
+<hkern u1="ô" u2="’" k="20" />
+<hkern u1="ô" u2="ý" k="41" />
+<hkern u1="ô" u2="z" k="20" />
+<hkern u1="ô" u2="y" k="41" />
+<hkern u1="ô" u2="x" k="41" />
+<hkern u1="ô" u2="w" k="41" />
+<hkern u1="ô" u2="v" k="41" />
+<hkern u1="ô" u2="'" k="20" />
+<hkern u1="ô" u2=""" k="20" />
+<hkern u1="ö" u2="”" k="41" />
+<hkern u1="ö" u2="’" k="41" />
+<hkern u1="ö" u2="'" k="41" />
+<hkern u1="ö" u2=""" k="41" />
+<hkern u1="ø" u2="”" k="20" />
+<hkern u1="ø" u2="’" k="20" />
+<hkern u1="ø" u2="ý" k="41" />
+<hkern u1="ø" u2="z" k="20" />
+<hkern u1="ø" u2="y" k="41" />
+<hkern u1="ø" u2="x" k="41" />
+<hkern u1="ø" u2="w" k="41" />
+<hkern u1="ø" u2="v" k="41" />
+<hkern u1="ø" u2="'" k="20" />
+<hkern u1="ø" u2=""" k="20" />
+<hkern u1="ý" u2="„" k="82" />
+<hkern u1="ý" u2="”" k="-82" />
+<hkern u1="ý" u2="‚" k="82" />
+<hkern u1="ý" u2="’" k="-82" />
+<hkern u1="ý" u2="?" k="-41" />
+<hkern u1="ý" u2="." k="82" />
+<hkern u1="ý" u2="," k="82" />
+<hkern u1="ý" u2="'" k="-82" />
+<hkern u1="ý" u2=""" k="-82" />
+<hkern u1="þ" u2="”" k="20" />
+<hkern u1="þ" u2="’" k="20" />
+<hkern u1="þ" u2="ý" k="41" />
+<hkern u1="þ" u2="z" k="20" />
+<hkern u1="þ" u2="y" k="41" />
+<hkern u1="þ" u2="x" k="41" />
+<hkern u1="þ" u2="w" k="41" />
+<hkern u1="þ" u2="v" k="41" />
+<hkern u1="þ" u2="'" k="20" />
+<hkern u1="þ" u2=""" k="20" />
+<hkern u1="ÿ" u2="„" k="82" />
+<hkern u1="ÿ" u2="”" k="-82" />
+<hkern u1="ÿ" u2="‚" k="82" />
+<hkern u1="ÿ" u2="’" k="-82" />
+<hkern u1="ÿ" u2="?" k="-41" />
+<hkern u1="ÿ" u2="." k="82" />
+<hkern u1="ÿ" u2="," k="82" />
+<hkern u1="ÿ" u2="'" k="-82" />
+<hkern u1="ÿ" u2=""" k="-82" />
+<hkern u1="Œ" u2="J" k="-123" />
+<hkern u1="Ÿ" u2="„" k="123" />
+<hkern u1="Ÿ" u2="‚" k="123" />
+<hkern u1="Ÿ" u2="œ" k="102" />
+<hkern u1="Ÿ" u2="Œ" k="41" />
+<hkern u1="Ÿ" u2="ü" k="61" />
+<hkern u1="Ÿ" u2="û" k="61" />
+<hkern u1="Ÿ" u2="ú" k="61" />
+<hkern u1="Ÿ" u2="ù" k="61" />
+<hkern u1="Ÿ" u2="ø" k="102" />
+<hkern u1="Ÿ" u2="ö" k="102" />
+<hkern u1="Ÿ" u2="õ" k="102" />
+<hkern u1="Ÿ" u2="ô" k="102" />
+<hkern u1="Ÿ" u2="ó" k="102" />
+<hkern u1="Ÿ" u2="ò" k="102" />
+<hkern u1="Ÿ" u2="ë" k="102" />
+<hkern u1="Ÿ" u2="ê" k="102" />
+<hkern u1="Ÿ" u2="é" k="102" />
+<hkern u1="Ÿ" u2="è" k="102" />
+<hkern u1="Ÿ" u2="ç" k="102" />
+<hkern u1="Ÿ" u2="æ" k="102" />
+<hkern u1="Ÿ" u2="å" k="102" />
+<hkern u1="Ÿ" u2="ä" k="102" />
+<hkern u1="Ÿ" u2="ã" k="102" />
+<hkern u1="Ÿ" u2="â" k="102" />
+<hkern u1="Ÿ" u2="á" k="102" />
+<hkern u1="Ÿ" u2="à" k="102" />
+<hkern u1="Ÿ" u2="Ø" k="41" />
+<hkern u1="Ÿ" u2="Ö" k="41" />
+<hkern u1="Ÿ" u2="Õ" k="41" />
+<hkern u1="Ÿ" u2="Ô" k="41" />
+<hkern u1="Ÿ" u2="Ó" k="41" />
+<hkern u1="Ÿ" u2="Ò" k="41" />
+<hkern u1="Ÿ" u2="Ç" k="41" />
+<hkern u1="Ÿ" u2="Å" k="123" />
+<hkern u1="Ÿ" u2="Ä" k="123" />
+<hkern u1="Ÿ" u2="Ã" k="123" />
+<hkern u1="Ÿ" u2="Â" k="123" />
+<hkern u1="Ÿ" u2="Á" k="123" />
+<hkern u1="Ÿ" u2="À" k="123" />
+<hkern u1="Ÿ" u2="z" k="41" />
+<hkern u1="Ÿ" u2="u" k="61" />
+<hkern u1="Ÿ" u2="s" k="82" />
+<hkern u1="Ÿ" u2="r" k="61" />
+<hkern u1="Ÿ" u2="q" k="102" />
+<hkern u1="Ÿ" u2="p" k="61" />
+<hkern u1="Ÿ" u2="o" k="102" />
+<hkern u1="Ÿ" u2="n" k="61" />
+<hkern u1="Ÿ" u2="m" k="61" />
+<hkern u1="Ÿ" u2="g" k="41" />
+<hkern u1="Ÿ" u2="e" k="102" />
+<hkern u1="Ÿ" u2="d" k="102" />
+<hkern u1="Ÿ" u2="c" k="102" />
+<hkern u1="Ÿ" u2="a" k="102" />
+<hkern u1="Ÿ" u2="Q" k="41" />
+<hkern u1="Ÿ" u2="O" k="41" />
+<hkern u1="Ÿ" u2="G" k="41" />
+<hkern u1="Ÿ" u2="C" k="41" />
+<hkern u1="Ÿ" u2="A" k="123" />
+<hkern u1="Ÿ" u2="?" k="-41" />
+<hkern u1="Ÿ" u2="." k="123" />
+<hkern u1="Ÿ" u2="," k="123" />
+<hkern u1="–" u2="T" k="82" />
+<hkern u1="—" u2="T" k="82" />
+<hkern u1="‘" u2="Ÿ" k="-20" />
+<hkern u1="‘" u2="œ" k="123" />
+<hkern u1="‘" u2="ü" k="61" />
+<hkern u1="‘" u2="û" k="61" />
+<hkern u1="‘" u2="ú" k="61" />
+<hkern u1="‘" u2="ù" k="61" />
+<hkern u1="‘" u2="ø" k="123" />
+<hkern u1="‘" u2="ö" k="123" />
+<hkern u1="‘" u2="õ" k="123" />
+<hkern u1="‘" u2="ô" k="123" />
+<hkern u1="‘" u2="ó" k="123" />
+<hkern u1="‘" u2="ò" k="123" />
+<hkern u1="‘" u2="ë" k="123" />
+<hkern u1="‘" u2="ê" k="123" />
+<hkern u1="‘" u2="é" k="123" />
+<hkern u1="‘" u2="è" k="123" />
+<hkern u1="‘" u2="ç" k="123" />
+<hkern u1="‘" u2="æ" k="82" />
+<hkern u1="‘" u2="å" k="82" />
+<hkern u1="‘" u2="ä" k="82" />
+<hkern u1="‘" u2="ã" k="82" />
+<hkern u1="‘" u2="â" k="82" />
+<hkern u1="‘" u2="á" k="82" />
+<hkern u1="‘" u2="à" k="123" />
+<hkern u1="‘" u2="Ý" k="-20" />
+<hkern u1="‘" u2="Å" k="143" />
+<hkern u1="‘" u2="Ä" k="143" />
+<hkern u1="‘" u2="Ã" k="143" />
+<hkern u1="‘" u2="Â" k="143" />
+<hkern u1="‘" u2="Á" k="143" />
+<hkern u1="‘" u2="À" k="143" />
+<hkern u1="‘" u2="u" k="61" />
+<hkern u1="‘" u2="s" k="61" />
+<hkern u1="‘" u2="r" k="61" />
+<hkern u1="‘" u2="q" k="123" />
+<hkern u1="‘" u2="p" k="61" />
+<hkern u1="‘" u2="o" k="123" />
+<hkern u1="‘" u2="n" k="61" />
+<hkern u1="‘" u2="m" k="61" />
+<hkern u1="‘" u2="g" k="61" />
+<hkern u1="‘" u2="e" k="123" />
+<hkern u1="‘" u2="d" k="123" />
+<hkern u1="‘" u2="c" k="123" />
+<hkern u1="‘" u2="a" k="82" />
+<hkern u1="‘" u2="Y" k="-20" />
+<hkern u1="‘" u2="W" k="-41" />
+<hkern u1="‘" u2="V" k="-41" />
+<hkern u1="‘" u2="T" k="-41" />
+<hkern u1="‘" u2="A" k="143" />
+<hkern u1="’" u2="Ÿ" k="-20" />
+<hkern u1="’" u2="œ" k="123" />
+<hkern u1="’" u2="ü" k="61" />
+<hkern u1="’" u2="û" k="61" />
+<hkern u1="’" u2="ú" k="61" />
+<hkern u1="’" u2="ù" k="61" />
+<hkern u1="’" u2="ø" k="123" />
+<hkern u1="’" u2="ö" k="123" />
+<hkern u1="’" u2="õ" k="123" />
+<hkern u1="’" u2="ô" k="123" />
+<hkern u1="’" u2="ó" k="123" />
+<hkern u1="’" u2="ò" k="123" />
+<hkern u1="’" u2="ë" k="123" />
+<hkern u1="’" u2="ê" k="123" />
+<hkern u1="’" u2="é" k="123" />
+<hkern u1="’" u2="è" k="123" />
+<hkern u1="’" u2="ç" k="123" />
+<hkern u1="’" u2="æ" k="82" />
+<hkern u1="’" u2="å" k="82" />
+<hkern u1="’" u2="ä" k="82" />
+<hkern u1="’" u2="ã" k="82" />
+<hkern u1="’" u2="â" k="82" />
+<hkern u1="’" u2="á" k="82" />
+<hkern u1="’" u2="à" k="123" />
+<hkern u1="’" u2="Ý" k="-20" />
+<hkern u1="’" u2="Å" k="143" />
+<hkern u1="’" u2="Ä" k="143" />
+<hkern u1="’" u2="Ã" k="143" />
+<hkern u1="’" u2="Â" k="143" />
+<hkern u1="’" u2="Á" k="143" />
+<hkern u1="’" u2="À" k="143" />
+<hkern u1="’" u2="u" k="61" />
+<hkern u1="’" u2="s" k="61" />
+<hkern u1="’" u2="r" k="61" />
+<hkern u1="’" u2="q" k="123" />
+<hkern u1="’" u2="p" k="61" />
+<hkern u1="’" u2="o" k="123" />
+<hkern u1="’" u2="n" k="61" />
+<hkern u1="’" u2="m" k="61" />
+<hkern u1="’" u2="g" k="61" />
+<hkern u1="’" u2="e" k="123" />
+<hkern u1="’" u2="d" k="123" />
+<hkern u1="’" u2="c" k="123" />
+<hkern u1="’" u2="a" k="82" />
+<hkern u1="’" u2="Y" k="-20" />
+<hkern u1="’" u2="W" k="-41" />
+<hkern u1="’" u2="V" k="-41" />
+<hkern u1="’" u2="T" k="-41" />
+<hkern u1="’" u2="A" k="143" />
+<hkern u1="‚" u2="Ÿ" k="123" />
+<hkern u1="‚" u2="Œ" k="102" />
+<hkern u1="‚" u2="Ý" k="123" />
+<hkern u1="‚" u2="Ü" k="41" />
+<hkern u1="‚" u2="Û" k="41" />
+<hkern u1="‚" u2="Ú" k="41" />
+<hkern u1="‚" u2="Ù" k="41" />
+<hkern u1="‚" u2="Ø" k="102" />
+<hkern u1="‚" u2="Ö" k="102" />
+<hkern u1="‚" u2="Õ" k="102" />
+<hkern u1="‚" u2="Ô" k="102" />
+<hkern u1="‚" u2="Ó" k="102" />
+<hkern u1="‚" u2="Ò" k="102" />
+<hkern u1="‚" u2="Ç" k="102" />
+<hkern u1="‚" u2="Y" k="123" />
+<hkern u1="‚" u2="W" k="123" />
+<hkern u1="‚" u2="V" k="123" />
+<hkern u1="‚" u2="U" k="41" />
+<hkern u1="‚" u2="T" k="143" />
+<hkern u1="‚" u2="Q" k="102" />
+<hkern u1="‚" u2="O" k="102" />
+<hkern u1="‚" u2="G" k="102" />
+<hkern u1="‚" u2="C" k="102" />
+<hkern u1="“" u2="Ÿ" k="-20" />
+<hkern u1="“" u2="œ" k="123" />
+<hkern u1="“" u2="ü" k="61" />
+<hkern u1="“" u2="û" k="61" />
+<hkern u1="“" u2="ú" k="61" />
+<hkern u1="“" u2="ù" k="61" />
+<hkern u1="“" u2="ø" k="123" />
+<hkern u1="“" u2="ö" k="123" />
+<hkern u1="“" u2="õ" k="123" />
+<hkern u1="“" u2="ô" k="123" />
+<hkern u1="“" u2="ó" k="123" />
+<hkern u1="“" u2="ò" k="123" />
+<hkern u1="“" u2="ë" k="123" />
+<hkern u1="“" u2="ê" k="123" />
+<hkern u1="“" u2="é" k="123" />
+<hkern u1="“" u2="è" k="123" />
+<hkern u1="“" u2="ç" k="123" />
+<hkern u1="“" u2="æ" k="82" />
+<hkern u1="“" u2="å" k="82" />
+<hkern u1="“" u2="ä" k="82" />
+<hkern u1="“" u2="ã" k="82" />
+<hkern u1="“" u2="â" k="82" />
+<hkern u1="“" u2="á" k="82" />
+<hkern u1="“" u2="à" k="123" />
+<hkern u1="“" u2="Ý" k="-20" />
+<hkern u1="“" u2="Å" k="143" />
+<hkern u1="“" u2="Ä" k="143" />
+<hkern u1="“" u2="Ã" k="143" />
+<hkern u1="“" u2="Â" k="143" />
+<hkern u1="“" u2="Á" k="143" />
+<hkern u1="“" u2="À" k="143" />
+<hkern u1="“" u2="u" k="61" />
+<hkern u1="“" u2="s" k="61" />
+<hkern u1="“" u2="r" k="61" />
+<hkern u1="“" u2="q" k="123" />
+<hkern u1="“" u2="p" k="61" />
+<hkern u1="“" u2="o" k="123" />
+<hkern u1="“" u2="n" k="61" />
+<hkern u1="“" u2="m" k="61" />
+<hkern u1="“" u2="g" k="61" />
+<hkern u1="“" u2="e" k="123" />
+<hkern u1="“" u2="d" k="123" />
+<hkern u1="“" u2="c" k="123" />
+<hkern u1="“" u2="a" k="82" />
+<hkern u1="“" u2="Y" k="-20" />
+<hkern u1="“" u2="W" k="-41" />
+<hkern u1="“" u2="V" k="-41" />
+<hkern u1="“" u2="T" k="-41" />
+<hkern u1="“" u2="A" k="143" />
+<hkern u1="„" u2="Ÿ" k="123" />
+<hkern u1="„" u2="Œ" k="102" />
+<hkern u1="„" u2="Ý" k="123" />
+<hkern u1="„" u2="Ü" k="41" />
+<hkern u1="„" u2="Û" k="41" />
+<hkern u1="„" u2="Ú" k="41" />
+<hkern u1="„" u2="Ù" k="41" />
+<hkern u1="„" u2="Ø" k="102" />
+<hkern u1="„" u2="Ö" k="102" />
+<hkern u1="„" u2="Õ" k="102" />
+<hkern u1="„" u2="Ô" k="102" />
+<hkern u1="„" u2="Ó" k="102" />
+<hkern u1="„" u2="Ò" k="102" />
+<hkern u1="„" u2="Ç" k="102" />
+<hkern u1="„" u2="Y" k="123" />
+<hkern u1="„" u2="W" k="123" />
+<hkern u1="„" u2="V" k="123" />
+<hkern u1="„" u2="U" k="41" />
+<hkern u1="„" u2="T" k="143" />
+<hkern u1="„" u2="Q" k="102" />
+<hkern u1="„" u2="O" k="102" />
+<hkern u1="„" u2="G" k="102" />
+<hkern u1="„" u2="C" k="102" />
+</font>
+</defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.ttf
new file mode 100755
index 0000000..b329084
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.woff
new file mode 100755
index 0000000..28d6ade
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.eot
new file mode 100755
index 0000000..2b74b9e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.svg
new file mode 100755
index 0000000..b1622e7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+<json>
+{
+ "fontFamily": "PatternFlyIcons-webfont",
+ "fontURL": "https://www.patternfly.org",
+ "designer": "Red Hat",
+ "designerURL": "",
+ "license": "Apache 2.0",
+ "licenseURL": "http://www.apache.org/licenses/LICENSE-2.0.html",
+ "majorVersion": 1,
+ "minorVersion": 1,
+ "version": "Version 1.1",
+ "fontId": "PatternFlyIcons-webfont",
+ "psName": "PatternFlyIcons-webfont",
+ "subFamily": "Regular",
+ "fullName": "PatternFlyIcons-webfont",
+ "description": "Font generated by IcoMoon."
+}
+</json>
+</metadata>
+<defs>
+<font id="PatternFlyIcons-webfont" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode=" " d="" horiz-adv-x="512" />
+<glyph unicode="" d="M1024 146.286v731.429h-1024v-731.429h438.857v-73.143h-219.429v-73.143h585.143v73.143h-219.429v73.143h438.857zM146.286 731.428h731.429v-438.857h-731.429v438.857z" data-tags="screen, monitor, computer, pc, desktop" />
+<glyph unicode="" d="M738.448 397.076l-184.514-223.726c-36.11-36.112-48.226-35.646-83.87 0l-184.514 223.726c-23.063 23.065-15.248 41.936 17.369 41.936h135.938v201.159c-0.002 5.298 0.933 9.666 4.375 13.109 3.442 3.44 7.813 5.166 13.111 5.161h109.735c5.296 0.005 9.666-1.719 13.104-5.161 3.445-3.442 5.959-7.815 5.959-13.109v-201.159h135.938c32.619 0 40.434-18.871 17.369-41.936v0zM877.714 950.857h-877.714v-1024h1024v877.735l-146.286 146.265zM877.714 73.143h-732.425l0.997 731.429h658.286l73.143-73.143v-658.286z" data-tags="save" />
+<glyph unicode="" d="M763.431 521.737c0.002-10.286-3.422-18.855-10.281-25.714l-205.835-204.24-58.288-58.29c-6.857-6.857-15.431-10.286-25.714-10.286-10.286 0-18.857 3.429-25.714 10.286l-171.227 171.189c-6.857 6.862-10.283 15.433-10.283 25.719s3.426 18.857 10.283 25.714l50.206 50.206c6.857 6.857 15.429 10.286 25.714 10.281 10.29 0 18.857-3.424 25.717-10.286l93.691-93.646 188.203 186.608c6.857 6.857 15.429 10.286 25.719 10.286 10.283 0.002 18.855-3.429 25.714-10.286l51.817-51.822c6.855-6.862 10.283-15.433 10.279-25.719v0zM512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.235 229.721 511.975 512.059 511.975 282.281 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.888 173.904-387.691 387.728-387.691 213.717 0 387.671 173.803 387.671 387.691 0.005 213.785-173.957 387.643-387.671 387.643z" data-tags="ok" />
+<glyph unicode="" d="M672.75 578.352l10.249 20.555c0 0 35.71 80.126-45.57 104.654-75.518 22.789-353.326 106.617-392.35 118.391l7.25 55.963c4.576 35.349-19.209 72.939-54.553 72.939s-68.855-28.654-73.433-64l-124.345-960h129.145l50.066 386.533 213.232 61.563-3.671-13.854c0 0-3.627-85.241 103.961-53.019 56.818 17.015 458.126 186.702 458.126 186.702l-278.107 83.573z" horiz-adv-x="951" data-tags="messages" />
+<glyph unicode="" d="M585.143 240v219.429c0 5.335-1.714 9.714-5.143 13.143s-7.808 5.143-13.143 5.143h-109.714c-5.335 0-9.714-1.714-13.143-5.143s-5.143-7.808-5.143-13.143v-219.429c0-5.335 1.714-9.714 5.143-13.143s7.808-5.143 13.143-5.143h109.714c5.335 0 9.714 1.714 13.143 5.143s5.143 7.808 5.143 13.143zM585.143 550.857v91.429c0 5.335-1.714 9.714-5.143 13.143s-7.808 5.143-13.143 5.143h-109.714c-5.335 0-9.714-1.714-13.143-5.143s-5.143-7.808-5.143-13.143v-91.429c0-5.335 1.714-9.714 5.143-13.143s7.808-5.143 13.143-5.143h109.714c5.335 0 9.714 1.714 13.143 5.143s5.143 7.808 5.143 13.143zM512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.235 229.721 511.975 512.059 511.975 282.281 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.888 173.904-387.691 387.728-387.691 213.717 0 387.671 173.803 387.671 387.691 0.005 213.785-173.957 387.643-387.671 387.643z" data-tags="info" />
+<glyph unicode="" d="M512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.235 229.721 511.975 512.059 511.975 282.281 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.89 173.904-387.694 387.728-387.694 213.717 0 387.671 173.803 387.671 387.694 0.005 213.785-173.957 387.643-387.671 387.643zM585.143 164.571v109.714c0 4.951-1.808 9.237-5.429 12.857s-7.906 5.429-12.857 5.429h-109.714c-4.953 0-9.239-1.808-12.857-5.429s-5.429-7.906-5.429-12.857v-109.714c0-4.951 1.81-9.237 5.429-12.857s7.904-5.429 12.857-5.429h109.714c4.951 0 9.237 1.808 12.857 5.429s5.429 7.906 5.429 12.857zM521.616 365.714c118.343 0 214.286 88.965 214.286 187.429s-95.943 178.286-214.286 178.286c-173.045 0-208.091-93.714-213.963-171.113 0-7.936 6.729-9.838 15.872-9.838s108.073 0 113.143 0c6.096 0 14.475 0.633 17.554 10.571 0 48.857 135.968 54.953 135.968-7.904 0-31.506-29.717-63.817-68.571-66.194s-82.286-7.607-82.286-54.199c0-13.022 0-25.673 0-44.693 0-19.015 9.717-22.343 27.431-22.343s54.853-0.002 54.853-0.002z" data-tags="help" />
+<glyph unicode="" d="M1226.126 430.391c-11.538 5.641-24.709 8.466-39.511 8.466h-783.362c-121.691 0-172.409-79.465-172.409-79.465l-157.701-213.106 72.912 253.2c11.755 31.506 36.455 58.219 74.101 80.146 37.641 21.927 76.905 32.366 117.778 32.366h759.625v146.286c0 0-0.418 73.611-73.561 73.611-83.591 0-512 0-512 0l-51.826 81.083c0 0-30.041 64.734-94.041 64.734-73.143 0-243.257 0-292.571 0-83.591 0-73.143-73.143-73.143-73.143v-804.571h841.797c28.734 0 59.973 7.705 93.714 23.122 33.742 15.413 59.973 34.197 78.695 56.341l208.565 279.929c13.495 15.2 20.242 29.529 20.242 42.99 0 13.029-5.767 22.366-17.303 28.011v0z" horiz-adv-x="1243" data-tags="folder-open" />
+<glyph unicode="" d="M1097.563 0v658.286c0 0-0.421 73.611-73.563 73.611-83.591 0-512 0-512 0l-51.826 81.083c0 0-30.043 64.734-94.043 64.734-73.143 0-243.257 0-292.571 0-83.591 0-73.143-73.143-73.143-73.143v-804.571h1097.147z" horiz-adv-x="1097" data-tags="folder-close" />
+<glyph unicode="" d="M585.143 165.143c0-5.333-1.806-9.803-5.431-13.426-3.627-3.623-7.906-5.431-12.855-5.431h-109.714c-4.953 0-9.241 1.808-12.857 5.431-3.616 3.618-5.429 8.094-5.429 13.426v108.567c0 5.337 1.808 9.808 5.429 13.431 3.618 3.623 7.904 5.431 12.857 5.431h109.714c4.951 0 9.237-1.808 12.855-5.431 3.625-3.627 5.431-8.098 5.431-13.431v-108.567zM584.448 380.683c-0.379-4.334-2.384-7.925-6.041-10.741-3.632-2.825-8.135-4.229-13.515-4.229h-106.423c-5.376 0-9.975 1.397-13.815 4.229-3.833 2.811-5.746 6.402-5.746 10.741l-16.953 321.771c0 6.082 2.085 18.775 6.251 21.81 5.417 4.779 10.427 7.163 15.006 7.163h137.568c4.583 0 9.591-2.391 15.003-7.163 4.171-3.040 6.254-15.298 6.254-20.505l-17.589-323.077z" data-tags="error-exclamation" />
+<glyph unicode="" d="M1015.902 668.656l-274.011 274.105c-4.528 4.437-13.266 8.096-19.605 8.096 0 0-414.441 0-420.571 0-6.176 0-14.871-3.662-19.31-8.096l-274.309-270.761c-4.434-4.437-8.096-13.266-8.096-19.513v-414.206c0-6.338 3.662-15.072 8.096-19.602l274.107-283.728c4.437-4.526 13.264-8.094 19.511-8.094h420.571c6.338 0 15.077 3.568 19.605 8.094l274.016 274.018c4.526 4.53 8.094 13.264 8.094 19.602v420.571c0 6.247-3.57 15.074-8.098 19.513v0z" data-tags="error-octagon" />
+<glyph unicode="" d="M219.554 0l73.294 73.143-146.583 146.286-73.070-73.143v-73.143h73.090v-73.438l73.269 0.295zM806.176 512l-586.747-585.143h-219.429v219.429l586.585 585.143 219.591-219.429zM1024 762.937c0-19.056-6.656-35.237-19.968-48.537l-146.578-150.455-218.686 218.505 148.576 147.915c12.955 13.662 29.147 20.494 48.578 20.494 19.074 0 35.445-6.832 49.115-20.494l118.994-118.352c13.312-14.023 19.968-30.384 19.968-49.077v0z" data-tags="edit" />
+<glyph unicode="" d="M96.464 804.571c-4.816-0.064-9.12-1.963-12.912-5.733l-77.815-77.815c-3.769-3.794-5.669-8.096-5.735-12.91-0.032-4.839 1.815-9.113 5.543-12.823l616.603-616.606c3.71-3.714 7.986-5.577 12.823-5.541 4.834 0.039 9.138 1.957 12.91 5.73l77.817 77.819c3.769 3.769 5.691 8.066 5.73 12.912 0.037 4.839-1.829 9.106-5.538 12.825l-616.606 616.599c-3.717 3.73-7.986 5.575-12.821 5.541zM622.144 799.031l-616.603-616.601c-3.726-3.717-5.577-7.989-5.536-12.827 0.059-4.843 1.959-9.143 5.728-12.914l77.817-77.817c3.792-3.774 8.096-5.691 12.91-5.728 4.837-0.039 9.106 1.824 12.821 5.536l616.599 616.608c3.717 3.712 5.579 7.989 5.543 12.823-0.041 4.814-1.959 9.118-5.728 12.91l-77.824 77.808c-3.767 3.778-8.073 5.678-12.907 5.744-4.834 0.034-9.104-1.815-12.818-5.541z" horiz-adv-x="731" data-tags="close" />
+<glyph unicode="" d="M658.208 909.627l500.978-866.471c15.223-25.845 14.789-51.685-1.301-77.531-7.387-11.899-17.495-21.342-30.331-28.313-12.832-6.974-26.638-10.457-41.429-10.457h-1001.966c-14.786 0-28.59 3.488-41.422 10.457-12.83 6.976-22.939 16.414-30.334 28.313-16.094 25.847-16.523 51.687-1.307 77.531l500.987 866.471c7.387 12.715 17.614 22.766 30.663 30.153 13.047 7.385 27.173 11.077 42.398 11.077 15.221 0 29.358-3.689 42.398-11.077 13.051-7.385 23.259-17.435 30.665-30.153z" horiz-adv-x="1170" data-tags="warning-triangle" />
+<glyph unicode="" d="M658.286 92c0-5.333-1.803-9.803-5.429-13.426-3.63-3.623-7.906-5.431-12.857-5.431h-109.714c-4.953 0-9.241 1.808-12.857 5.431-3.616 3.618-5.429 8.094-5.429 13.426v108.567c0 5.337 1.808 9.808 5.429 13.431 3.618 3.623 7.904 5.431 12.857 5.431h109.714c4.951 0 9.237-1.808 12.857-5.431 3.625-3.627 5.429-8.098 5.429-13.431v-108.567zM657.593 307.54c-0.379-4.334-2.384-7.925-6.041-10.741-3.634-2.825-8.135-4.229-13.518-4.229h-106.421c-5.376 0-9.975 1.397-13.815 4.229-3.835 2.811-5.746 6.402-5.746 10.741l-16.955 321.771c0 6.082 2.085 18.775 6.254 21.81 5.415 4.779 10.427 7.163 15.003 7.163h137.57c4.581 0 9.589-2.391 15.003-7.163 4.169-3.040 6.254-15.298 6.254-20.505l-17.589-323.077z" horiz-adv-x="1170" data-tags="warning-exclamation" />
+<glyph unicode="" d="M630.67 228.030c-23.673 3.769-24.523 61.458-24.215 68.869 18.514 7.41 69.568 68.871 84.729 161.477 40.786 0 92.258 128.809 25.189 128.809 1.701 36.469 52.425 290.53-204.373 290.53s-206.073-252.994-204.375-289.461c-70.281 0-15.598-129.881 25.189-129.881 15.161-92.606 63.006-154.064 84.729-161.477-2.448-7.579-0.539-65.099-24.215-68.869-76.263-12.133-356.757-163.435-356.757-301.17h950.857c0 137.735-280.496 289.038-356.759 301.173v0z" data-tags="user, profile, avatar, person, talk, member" />
+<glyph unicode="" d="M561.312 145.143c-55.803-8.875-234.919-116.617-268.741-218.286h731.429c-33.822 101.669-216.151 209.41-271.959 218.286-19.040 3.026-19.726 43.273-19.456 49.223 14.88 5.959 55.906 55.367 68.073 129.755 32.779 0 74.123 103.513 20.238 103.513 1.374 29.31 42.144 233.456-164.217 233.456-206.345 0-165.591-203.289-164.219-232.585-56.485 0-12.542-104.384 20.235-104.384 12.169-74.389 50.633-123.794 68.073-129.755-1.945-6.085-0.411-46.201-19.456-49.223zM485.211 188.496c-1.029 1.657-2.021 3.287-2.976 4.889-10.695 17.986-23.991 44.983-33.598 80.126-35.547 30.8-56.297 83.157-56.297 123.447 0 26.16 8.023 49.691 23.195 68.053 0.117 0.139 0.233 0.281 0.35 0.421-2.654 52.519 2.199 133.84 57.675 195.559 16.96 18.866 37.289 34.219 60.594 45.803-0.368 70.11-23.342 170.923-168.359 170.923-206.345 0-165.591-203.289-164.219-232.583-56.485 0-12.544-104.386 20.235-104.386 12.169-74.389 50.633-123.799 68.075-129.755-1.947-6.085-0.414-42.21-19.456-45.232-55.801-8.88-236.608-117.799-270.432-219.474h402.176c25.447 16.032 54.702 29.575 83.035 42.21z" data-tags="users, people, group, team, members, community" />
+<glyph unicode="" d="M950.857 438.857h18.286c30.171 0 54.857 24.686 54.857 54.857v182.857c0 30.171-24.686 54.857-54.857 54.857h-18.286v219.429h-146.286v-219.429h-18.286c-30.171 0-54.857-24.686-54.857-54.857v-182.857c0-30.171 24.686-54.857 54.857-54.857h18.286v-512h146.286v512zM804.571 658.286h146.286v-146.286h-146.286v146.286zM603.429 146.286c30.171 0 54.857 24.686 54.857 54.857v182.857c0 30.171-24.686 54.857-54.857 54.857h-18.286v512h-146.286v-512h-18.286c-30.171 0-54.857-24.686-54.857-54.857v-182.857c0-30.171 24.686-54.857 54.857-54.857h18.286v-219.429h146.286v219.429h18.286zM438.857 365.714h146.286v-146.286h-146.286v146.286zM237.714 438.857c30.171 0 54.857 24.686 54.857 54.857v182.857c0 30.171-24.686 54.857-54.857 54.857h-18.286v219.429h-146.286v-219.429h-18.286c-30.171 0-54.857-24.686-54.857-54.857v-182.857c0-30.171 24.686-54.857 54.857-54.857h18.286v-512h146.286v512h18.286zM73.143 658.286h146.286v-146.286h-146.286v146.286z" data-tags="equalizer, control, options, settings, dashboard" />
+<glyph unicode="" d="M146.286-73.143h585.143l73.143 658.286h-731.429l73.143-658.286zM585.143 804.855v146.002h-292.571v-146.002l-292.571-0.283v-219.429l73.001 73.143h731.57l73.143-73.143v219.712h-292.571zM511.010 804.855h-145.296v73.001h145.296v-73.001z" horiz-adv-x="878" data-tags="remove, delete, trashcan, recycle bin, bin, dispose" />
+<glyph unicode="" d="M219.429 877.714h585.143v-146.286h-585.143v146.286zM960 658.286h-896c-35.2 0-64-28.8-64-64v-310.857c0-35.2 28.798-64 64-64h155.429v-219.429h585.143v219.429h155.429c35.2 0 64 28.8 64 64v310.857c0 35.2-28.8 64-64 64zM731.429 73.143h-438.857v292.571h438.857v-292.571zM959.925 550.018c0-25.625-20.777-46.4-46.402-46.4s-46.402 20.775-46.402 46.4 20.777 46.4 46.402 46.4c25.63 0 46.402-20.775 46.402-46.4z" data-tags="print, printer" />
+<glyph unicode="" d="M874.016 800.873c-92.647 92.658-220.631 149.984-362.016 149.984-282.77 0-512-229.23-512-512s229.23-512 512-512c153.639 0 291.458 67.691 385.303 174.857l-96.32 84.283c-5.595-6.377-11.401-12.615-17.458-18.667-72.523-72.528-168.955-112.473-271.525-112.473s-198.999 39.945-271.531 112.466c-72.521 72.535-112.469 168.965-112.469 271.534s39.947 198.999 112.469 271.529c72.53 72.526 168.962 112.471 271.531 112.471s198.999-39.945 271.529-112.471l154.805-61.198-64.318 151.685zM682.425 627.568c-23.333-23.333-15.424-42.425 17.575-42.425h264c51.666 0 60 9.001 60 60v264c0 33.001-19.093 40.907-42.425 17.575l-299.15-299.15z" data-tags="spinner, loading, busy, wait, wheel, repeat" />
+<glyph unicode="" d="M585.143 754.658c85.63-20.126 158.018-74.816 201.838-148.633l185.614 60.357c-72.864 150.469-216.526 259.899-387.451 284.475v-196.199zM237.598 607.001c43.877 73.323 116.007 127.621 201.259 147.659v196.197c-170.457-24.507-313.803-133.403-386.857-283.234l185.598-60.622zM153.895 73.73l115.23 158.366c-48.059 56.265-77.125 129.403-77.125 209.378 0 8.761 0.366 17.433 1.056 26.016l-185.776 60.681c-4.766-28.19-7.282-57.145-7.282-86.697 0.002-144.094 58.951-274.327 153.897-367.744zM635.152 144.539c-37.909-15.906-79.506-24.702-123.152-24.702-44.366 0-86.615 9.083-125.024 25.483l-115.232-158.368c71.648-38.343 153.419-60.098 240.256-60.098 86.089 0 167.195 21.387 238.402 59.118l-115.25 158.567zM831.031 466.354c0.631-8.213 0.969-16.507 0.969-24.882 0-80.704-29.589-154.455-78.439-210.923l115.047-158.288c95.824 93.52 155.392 224.363 155.392 369.211 0 29.079-2.427 57.579-7.047 85.337l-185.922-60.455z" data-tags="spinner, loading, busy, wait, wheel" />
+<glyph unicode="" d="M687.721 571.335l-95.387-95.387-393.84 393.856c-5.285 5.262-11.353 7.909-18.203 7.911-6.862 0-12.935-2.649-18.222-7.911l-81.019-81.019c-5.262-5.285-7.909-11.353-7.909-18.219 0-6.85 2.649-12.914 7.909-18.203l393.856-393.84-95.381-95.381c-24.039-24.037-15.89-43.705 18.105-43.705h271.982c53.227 0 61.813 9.273 61.813 61.813v271.984c0.005 33.995-19.662 42.149-43.703 18.103zM877.714 84.571c0-3.312-1.077-6.048-3.232-8.203-2.151-2.151-4.889-3.227-8.199-3.225h-708.661c-3.287 0-5.998 1.067-8.137 3.202-2.135 2.137-3.202 4.848-3.202 8.135v404.843c0 6.571-2.135 11.995-6.409 16.272-4.27 4.267-9.696 6.407-16.267 6.405h-100.933c-6.571 0.002-11.998-2.137-16.267-6.405-4.277-4.277-6.409-9.701-6.409-16.272v-539.79c-0.002-6.571 2.137-11.998 6.405-16.267 4.277-4.274 9.701-6.409 16.272-6.409h978.647c6.571-0.002 11.998 2.137 16.267 6.405 4.274 4.277 6.409 9.701 6.409 16.272v978.647c0 6.571-2.135 11.995-6.409 16.272-4.27 4.267-9.696 6.407-16.267 6.405h-539.787c-6.571 0-11.995-2.135-16.272-6.409-4.267-4.27-6.407-9.696-6.405-16.267v-100.933c-0.002-6.569 2.137-11.998 6.405-16.265 4.277-4.277 9.701-6.411 16.272-6.411h404.752c3.312 0 6.048-1.077 8.203-3.232 2.151-2.149 3.227-4.889 3.225-8.197v-708.571z" data-tags="import" />
+<glyph unicode="" d="M980.293 278.754l-95.387-95.387-393.84 393.856c-5.285 5.262-11.353 7.909-18.203 7.911-6.862 0-12.935-2.649-18.222-7.911l-81.019-81.019c-5.262-5.285-7.909-11.353-7.909-18.219 0-6.85 2.649-12.914 7.909-18.203l393.856-393.84-95.381-95.381c-24.039-24.037-15.89-43.705 18.105-43.705h271.982c53.227 0 61.813 9.273 61.813 61.813v271.982c0.005 33.998-19.662 42.151-43.703 18.105zM146.286 793.143c0 3.312 1.077 6.048 3.232 8.203 2.151 2.151 4.889 3.227 8.199 3.225h708.661c3.287 0 5.998-1.067 8.137-3.202 2.135-2.137 3.202-4.848 3.202-8.135v-331.701c0-6.571 2.135-11.995 6.409-16.272 4.27-4.267 9.696-6.407 16.267-6.405h100.933c6.571-0.002 11.998 2.137 16.267 6.405 4.277 4.277 6.409 9.701 6.409 16.272v466.647c0.002 6.571-2.137 11.998-6.405 16.267-4.277 4.274-9.701 6.409-16.272 6.409h-978.649c-6.571 0.002-11.998-2.137-16.267-6.405-4.274-4.277-6.409-9.701-6.409-16.272v-978.647c0-6.571 2.135-11.995 6.409-16.272 4.27-4.267 9.696-6.407 16.267-6.405h466.647c6.571 0 11.995 2.135 16.272 6.411 4.267 4.267 6.407 9.696 6.405 16.265v100.933c0.002 6.569-2.137 11.998-6.405 16.265-4.277 4.277-9.701 6.411-16.272 6.411h-331.609c-3.312 0-6.048 1.077-8.203 3.232-2.151 2.149-3.227 4.889-3.225 8.197v708.571z" data-tags="export" />
+<glyph unicode="" d="M149.984 800.873c92.647 92.658 220.631 149.984 362.016 149.984 282.77 0 512-229.23 512-512s-229.23-512-512-512c-153.639 0-291.458 67.691-385.303 174.857l96.32 84.283c5.595-6.377 11.401-12.615 17.458-18.667 72.523-72.528 168.955-112.473 271.525-112.473s198.999 39.945 271.531 112.466c72.523 72.533 112.469 168.965 112.469 271.534s-39.947 198.999-112.469 271.529c-72.53 72.526-168.962 112.471-271.531 112.471s-198.999-39.945-271.529-112.471l-154.805-61.198 64.318 151.685zM324.571 365.714c-9.335 0-17.001 2.999-22.999 9.001-6 6-9.001 13.666-9.001 22.999v9.143c0 9.335 2.999 17.001 9.001 22.999 6 6 13.666 9.001 22.999 9.001h187.429v260.571c0 9.335 2.999 17.001 9.001 22.999 6 6 13.666 9.001 22.999 9.001h9.143c9.335 0 17.001-2.999 22.999-9.001 6-6 9.001-13.666 9.001-22.999v-301.714c0-9.335-2.999-17.001-9.001-22.999-6-6-13.666-9.001-22.999-9.001h-228.571zM341.575 627.568c23.333-23.333 15.424-42.425-17.575-42.425h-264c-51.666 0-60 9.001-60 60v264c0 33.001 19.093 40.907 42.425 17.575l299.15-299.15z" data-tags="history" />
+<glyph unicode="" d="M1023.929 430.75c-0.425 5.714-2.752 10.267-6.987 13.655l-456.672 417.266c-13.55 11.008-29.641 16.514-48.27 16.514-18.631 0-34.722-5.504-48.272-16.514l-456.67-417.266c-4.235-3.387-6.562-7.941-6.987-13.655-0.425-5.719 1.058-10.695 4.446-14.928l35.017-42.933c3.387-3.81 7.833-6.139 13.337-6.987 0.997-0.082 36.619-0.135 93.282-0.16v-325.563c0-11.008 4.023-20.537 12.069-28.581 8.046-8.046 17.573-12.069 28.581-12.069h252.030v293.545h146.279v-293.545h252.085c11.008 0 20.535 4.025 28.581 12.069 8.048 8.043 12.066 17.573 12.066 28.581v325.685c55.454 0.023 90.258 0 91.323 0h1.906c5.504 0.848 9.95 3.214 13.337 7.024l35.072 42.933c3.387 4.235 4.871 9.211 4.448 14.93z" data-tags="home" />
+<glyph unicode="" d="M566.83 512h-548.542c-5.23-0.002-9.714-1.728-13.143-5.189-3.431-3.465-5.145-7.984-5.145-13.255v-109.001c-0.002-5.593 1.952-9.799 5.223-13.25 3.422-3.781 7.906-5.593 13.134-5.593h548.574c5.547 0 9.714 1.808 13.143 5.589 3.431 3.461 5.070 7.666 5.070 13.255v109.001c0 5.273-1.714 9.792-5.145 13.259-3.424 3.456-7.941 5.184-13.168 5.184z" horiz-adv-x="585" data-tags="remove" />
+<glyph unicode="" d="M713.115 512h-694.827c-5.23-0.002-9.714-1.728-13.143-5.189-3.431-3.465-5.145-7.984-5.145-13.255v-109.001c-0.002-5.593 1.952-9.799 5.223-13.25 3.422-3.781 7.906-5.593 13.134-5.593h694.859c5.547 0 9.714 1.808 13.143 5.589 3.431 3.461 5.070 7.666 5.070 13.255v109.001c0 5.273-1.714 9.792-5.145 13.259-3.424 3.456-7.941 5.184-13.168 5.184zM292.571 786.258v-694.827c0.002-5.23 1.728-9.714 5.186-13.143 3.463-3.431 7.986-5.145 13.253-5.145l109.001 0.238c5.593 0 9.799 1.714 13.253 4.992 3.781 3.422 5.593 7.906 5.593 13.134v694.857c0 5.547-1.81 9.714-5.589 13.141-3.461 3.431-7.666 5.070-13.257 5.070h-109.001c-5.269 0-9.792-1.714-13.255-5.145-3.454-3.426-5.184-7.941-5.184-13.17z" horiz-adv-x="731" data-tags="add" />
+<glyph unicode="" d="M512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.238 229.721 511.975 512.059 511.975 282.283 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.888 173.904-387.691 387.728-387.691 213.717 0 387.671 173.803 387.671 387.691 0.005 213.785-173.957 387.643-387.671 387.643zM726.283 506.777c-3.429 3.477-7.803 5.223-13.138 5.223h-128.005v128.007c0 5.333-1.739 9.71-5.218 13.138s-7.936 5.141-13.351 5.141h-109.143c-5.417 0-9.863-1.714-13.351-5.141-3.481-3.429-5.221-7.808-5.221-13.141v-128.005l-128.007-0.002c-5.333 0-9.71-1.737-13.138-5.218-3.426-3.477-5.141-7.934-5.141-13.351v-109.143c0-5.417 1.714-9.856 5.141-13.351 3.429-3.481 7.808-5.221 13.141-5.221l128.005 0.002v-128.009c0-5.335 1.744-9.707 5.225-13.134 3.477-3.429 7.927-5.145 13.344-5.145h109.143c5.417 0 9.858 1.717 13.351 5.145 3.477 3.429 5.223 7.803 5.223 13.138v128.002h128.007c5.335 0 9.707 1.742 13.134 5.225 3.429 3.477 5.145 7.927 5.145 13.344v109.143c0 5.417-1.717 9.863-5.145 13.351z" data-tags="add-circle-o" />
+<glyph unicode="" d="M512 793.369l365.008-644.798h-730.014l365.006 644.798zM512 953.143c-13.333 0-25.714-3.429-37.143-10.286s-20.382-16.19-26.857-28l-438.857-780.19c-13.333-24-12.953-48 1.143-72 6.475-11.047 15.333-19.81 26.571-26.286s23.333-9.714 36.286-9.714h877.714c12.953 0 25.047 3.239 36.286 9.714s20.096 15.239 26.571 26.286c14.096 24 14.475 48 1.143 72l-438.857 780.19c-6.478 11.81-15.429 21.143-26.857 28s-23.808 10.286-37.143 10.286v0zM585.143 237.431v78.283c0 4.446-1.509 8.174-4.523 11.191-3.017 3.008-6.585 4.523-10.715 4.523h-115.81c-4.128 0-7.701-1.509-10.715-4.523s-4.523-6.745-4.523-11.191v-78.283c0-4.443 1.509-8.171 4.523-11.191s6.587-4.526 10.715-4.526h115.81c4.133 0 7.696 1.506 10.715 4.526 3.015 3.019 4.523 6.747 4.523 11.191zM585.143 378.953v194.19c0 3.81-1.584 6.823-4.761 9.047-4.128 3.493-7.936 5.239-11.431 5.239h-113.904c-3.49 0-7.301-1.746-11.429-5.239-3.175-2.224-4.761-5.557-4.761-10v-193.237c0-3.177 1.586-5.794 4.761-7.858 3.175-2.062 6.985-3.095 11.429-3.095h113.904c4.446 0 8.176 1.031 11.191 3.095 3.019 2.064 4.683 4.681 5.001 7.858z" data-tags="warning-triangle-o" />
+<glyph unicode="" d="M512.059-73.143c-282.338 0-512.059 229.673-512.059 512.025 0 282.235 229.721 511.975 512.059 511.975 282.281 0 511.941-229.735 511.941-511.975 0.005-282.352-229.659-512.025-511.941-512.025zM512.059 826.523c-213.826 0-387.728-173.856-387.728-387.643 0-213.888 173.904-387.691 387.728-387.691 213.717 0 387.671 173.803 387.671 387.691 0.005 213.785-173.957 387.643-387.671 387.643zM711.547 335.362c0.037 4.885-1.824 9.211-5.595 12.985l-90.514 90.514 90.517 90.514c3.769 3.771 5.637 8.096 5.6 12.981-0.039 4.885-1.977 9.246-5.806 13.074l-77.177 77.175c-3.831 3.831-8.185 5.762-13.077 5.806-4.887 0.039-9.211-1.829-12.983-5.6l-90.514-90.514-90.517 90.514c-3.771 3.769-8.094 5.637-12.981 5.6-4.88-0.037-9.243-1.975-13.074-5.806l-77.175-77.177c-3.831-3.831-5.758-8.183-5.806-13.074-0.039-4.887 1.829-9.214 5.6-12.983l90.514-90.512-90.514-90.517c-3.771-3.771-5.63-8.098-5.591-12.983 0.034-4.885 1.966-9.243 5.797-13.074l77.175-77.177c3.831-3.831 8.185-5.76 13.079-5.801 4.882-0.037 9.211 1.824 12.983 5.595l90.512 90.514 90.514-90.514c3.771-3.771 8.096-5.634 12.983-5.593 4.882 0.034 9.243 1.966 13.074 5.797l77.177 77.177c3.826 3.831 5.758 8.187 5.799 13.079z" data-tags="error-circle-o" />
+<glyph unicode="" d="M473.81 88.505c-185.339 0-336.119 150.779-336.119 336.126 0 185.339 150.779 336.123 336.119 336.123 185.335 0 336.114-150.784 336.114-336.123 0.002-185.344-150.779-336.126-336.114-336.126zM473.81 723.348c-164.711 0-298.715-134.002-298.715-298.718 0-164.713 134.007-298.72 298.715-298.72s298.718 134.005 298.718 298.72c0 164.713-134.005 298.718-298.718 298.718zM473.81 104.85c-175.577 0-318.414 142.832-318.414 318.421 0 175.573 142.837 318.416 318.414 318.416 175.573 0 318.414-142.841 318.414-318.416 0.002-175.589-142.841-318.421-318.414-318.421zM473.81 706.254c-156.037 0-282.983-126.951-282.983-282.99 0-156.041 126.946-282.985 282.983-282.985s282.983 126.944 282.983 282.985-126.946 282.99-282.983 282.99zM463.815 540.631h483.319c38.539 0 38.539 59.369 0 59.369h-483.319c-38.533 0-38.533-59.369 0-59.369zM864.642 705.728v-270.825l153.12 134.368zM862.027 429.097v282.437l159.687-142.304-159.687-140.133zM867.262 699.865v-259.218l146.553 128.615-146.553 130.603zM31.975 319.022h480.187c38.553 0 38.553 59.381 0 59.381h-480.187c-39.586 1.045-39.586-59.381 0-59.381zM513.618 484.132v-270.825l153.118 136.455zM510.395 207.499v282.441l159.689-140.139-159.689-142.302zM515.63 478.388v-259.216l146.553 130.61-146.553 128.606z" data-tags="service" />
+<glyph unicode="" d="M937.895 713.488c-8.075 11.579-18.775 19.819-32.105 24.738l-370.528 134.736c-7.723 2.805-15.445 4.21-23.159 4.21-0.368 0-0.736-0.016-1.102-0.025-0.368 0.009-0.736 0.025-1.102 0.025-7.714 0-15.435-1.406-23.159-4.21l-370.53-134.736c-13.33-4.919-24.030-13.159-32.105-24.738-8.066-11.579-12.105-24.391-12.105-38.421v-404.215c0-12.286 3.159-23.682 9.474-34.21 6.318-10.526 14.917-18.775 25.79-24.736l370.528-202.107c9.826-5.607 20.526-8.421 32.105-8.421 0.373 0 0.734 0.023 1.102 0.034 0.368-0.011 0.731-0.034 1.102-0.034 11.577 0 22.279 2.811 32.105 8.421l370.528 202.107c10.873 5.961 19.474 14.21 25.79 24.736s9.474 21.925 9.474 34.21v404.215c0.002 14.027-4.037 26.841-12.103 38.421zM139.369 308.571v63.312l371.918-178.359 371.346 178.359v-63.312l-371.346-202.523-371.918 202.523zM882.631 488.706l-371.344-166.421-371.918 166.421v70.498l371.918-153.442 371.346 155.728v-72.784z" data-tags="image" />
+<glyph unicode="" d="M73.893 502.548v125.239c0 8.478 3.095 15.815 9.294 22.016 6.192 6.19 13.529 9.294 22.014 9.294h814.053c8.475 0 15.815-3.104 22.014-9.294 6.192-6.199 9.294-13.538 9.294-22.016v-125.239c0-8.485-3.102-15.824-9.294-22.014-6.199-6.199-13.538-9.296-22.014-9.296h-814.050c-8.485 0-15.822 3.095-22.014 9.296-6.199 6.19-9.296 13.527-9.296 22.014zM814.37 533.856h73.573v62.619h-73.573v-62.619zM146.942 533.856h73.573v62.619h-73.573v-62.619zM265.799 533.856h73.573v62.619h-73.573v-62.619zM384.656 533.856h73.573v62.619h-73.573v-62.619zM503.513 533.856h73.573v62.619h-73.573v-62.619zM73.893 31.691v125.237c0 8.478 3.095 15.817 9.294 22.016 6.192 6.19 13.529 9.291 22.014 9.291h814.053c8.475 0 15.815-3.102 22.014-9.291 6.192-6.199 9.294-13.538 9.294-22.016v-125.237c0-8.487-3.102-15.826-9.294-22.016-6.199-6.199-13.538-9.296-22.014-9.296h-814.050c-8.485 0-15.822 3.097-22.014 9.296-6.199 6.19-9.296 13.529-9.296 22.016zM814.37 62.999h73.573v62.619h-73.573v-62.619zM146.942 62.999h73.573v62.619h-73.573v-62.619zM265.799 62.999h73.573v62.619h-73.573v-62.619zM384.656 62.999h73.573v62.619h-73.573v-62.619zM503.513 62.999h73.573v62.619h-73.573v-62.619zM73.893 269.406v125.237c0 8.478 3.095 15.817 9.294 22.016 6.192 6.19 13.529 9.291 22.014 9.291h814.053c8.475 0 15.815-3.102 22.014-9.291 6.192-6.199 9.294-13.538 9.294-22.016v-125.237c0-8.487-3.102-15.826-9.294-22.018-6.199-6.197-13.538-9.294-22.014-9.294h-814.050c-8.485 0-15.822 3.097-22.014 9.294-6.199 6.192-9.296 13.531-9.296 22.018zM814.37 300.713h73.573v62.619h-73.573v-62.619zM146.942 300.713h73.573v62.619h-73.573v-62.619zM265.799 300.713h73.573v62.619h-73.573v-62.619zM384.656 300.713h73.573v62.619h-73.573v-62.619zM503.513 300.713h73.573v62.619h-73.573v-62.619zM73.118 701.927c-2.281 4.935 0.185 11.010 7.406 18.233 0 0 121.374 137.25 130.331 147.975s20.384 8.437 20.384 8.437h561.525c0 0 10.233 1.239 19.209-8.905s128.905-147.509 128.905-147.509c7.214-7.223 9.687-13.298 7.406-18.233-2.277-4.949-8.359-7.408-18.238-7.408h-838.695c-9.886 0.002-15.957 2.464-18.233 7.41z" data-tags="cluster" />
+<glyph unicode="" d="M73.118 415.332c-2.281 8.917 0.185 19.895 7.406 32.946 0 0 121.374 247.982 130.331 267.36s20.384 15.243 20.384 15.243h561.525c0 0 10.233 2.238 19.209-16.089 8.976-18.329 128.905-266.523 128.905-266.523 7.214-13.047 9.687-24.023 7.406-32.939-2.277-8.944-8.359-13.383-18.238-13.383h-838.695c-9.886 0-15.957 4.455-18.233 13.385zM73.893 178.521v156.151c0 8.421 3.095 15.703 9.294 21.861 6.192 6.149 13.529 9.23 22.014 9.23h814.053c8.475 0 15.815-3.081 22.014-9.23 6.192-6.153 9.294-13.442 9.294-21.861v-156.151c0-8.43-3.102-15.717-9.294-21.861-6.199-6.158-13.538-9.23-22.014-9.23h-814.050c-8.485 0-15.822 3.072-22.014 9.23-6.199 6.144-9.296 13.431-9.296 21.861zM814.37 225.504h73.573v62.183h-73.573v-62.183zM146.942 225.504h73.573v62.183h-73.573v-62.183zM265.799 225.504h73.573v62.183h-73.573v-62.183zM384.656 225.504h73.573v62.183h-73.573v-62.183zM503.513 225.504h73.573v62.183h-73.573v-62.183z" data-tags="container-node" />
+</font></defs></svg>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.ttf
new file mode 100755
index 0000000..6f3e05b
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.woff
new file mode 100755
index 0000000..13f1e19
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-114-precomposed.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-114-precomposed.png
new file mode 100755
index 0000000..33e71cd
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-114-precomposed.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-144-precomposed.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-144-precomposed.png
new file mode 100755
index 0000000..31fa91e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-144-precomposed.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-57-precomposed.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-57-precomposed.png
new file mode 100755
index 0000000..81db002
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-57-precomposed.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-72-precomposed.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-72-precomposed.png
new file mode 100755
index 0000000..ec4e1d4
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/apple-touch-icon-72-precomposed.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/bg-login.jpg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/bg-login.jpg
new file mode 100755
index 0000000..3872ebb
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/bg-login.jpg differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand.png
new file mode 100644
index 0000000..441627e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand.svg
new file mode 100644
index 0000000..81cfe50
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="270px" height="10px" viewBox="0 0 270 10" enable-background="new 0 0 270 10" xml:space="preserve">
+<g>
+ <g>
+ <path fill="#FFFFFF" d="M121.965,9.413h-4.883V0.656h4.883v0.903h-3.862V4.38h3.63v0.898h-3.63V8.5h3.862V9.413z"/>
+ <path fill="#FFFFFF" d="M130.988,9.413h-1.158l-4.789-7.352h-0.046c0.062,0.864,0.095,1.655,0.095,2.374v4.978h-0.94V0.656h1.15
+ l4.774,7.317h0.045c-0.006-0.107-0.022-0.453-0.051-1.041c-0.028-0.582-0.039-0.998-0.028-1.254V0.656h0.951v8.753h-0.003V9.413
+ L130.988,9.413z"/>
+ <path fill="#FFFFFF" d="M136.339,9.413h-1.018V1.561h-2.771V0.656h6.564v0.903h-2.771v7.852h-0.002v0.002H136.339z"/>
+ <path fill="#FFFFFF" d="M145.554,9.413h-4.877V0.656h4.877v0.903h-3.859V4.38h3.631v0.898h-3.631V8.5h3.859V9.413z"/>
+ <path fill="#FFFFFF" d="M148.761,5.769v3.641h-1.018V0.656h2.402c1.074,0,1.865,0.204,2.379,0.614
+ c0.514,0.412,0.771,1.032,0.771,1.858c0,1.156-0.586,1.94-1.764,2.349l2.383,3.934h-1.207l-2.121-3.645h-1.826V5.769
+ L148.761,5.769z M148.761,4.897h1.396c0.719,0,1.244-0.142,1.582-0.428c0.334-0.286,0.504-0.714,0.504-1.285
+ c0-0.582-0.17-0.997-0.512-1.254c-0.34-0.255-0.889-0.381-1.643-0.381h-1.324v3.349h-0.004V4.897z"/>
+ <path fill="#FFFFFF" d="M161.124,3.209c0,0.884-0.301,1.567-0.904,2.046c-0.605,0.477-1.475,0.714-2.6,0.714h-1.031v3.444h-1.016
+ V0.656h2.27C160.03,0.656,161.124,1.504,161.124,3.209z M156.589,5.092h0.92c0.898,0,1.555-0.146,1.959-0.435
+ c0.4-0.293,0.604-0.759,0.604-1.404c0-0.577-0.188-1.006-0.568-1.295c-0.381-0.279-0.973-0.423-1.773-0.423h-1.139v3.557H156.589z
+ "/>
+ <path fill="#FFFFFF" d="M164.22,5.769v3.641h-1.02V0.656h2.402c1.074,0,1.865,0.204,2.383,0.614
+ c0.512,0.412,0.771,1.032,0.771,1.858c0,1.156-0.588,1.94-1.762,2.349l2.379,3.934h-1.205l-2.119-3.645h-1.826v0.002H164.22z
+ M164.22,4.897h1.395c0.719,0,1.244-0.142,1.582-0.428c0.334-0.286,0.504-0.714,0.504-1.285c0-0.582-0.17-0.997-0.51-1.254
+ c-0.34-0.255-0.887-0.381-1.645-0.381h-1.322v3.349h-0.004V4.897z"/>
+ <path fill="#FFFFFF" d="M171.03,9.413V0.656h1.018v8.753h-1.018V9.413z"/>
+ <path fill="#FFFFFF" d="M179.636,7.081c0,0.773-0.281,1.374-0.838,1.805c-0.561,0.434-1.318,0.646-2.277,0.646
+ c-1.039,0-1.836-0.134-2.395-0.4V8.147c0.357,0.152,0.75,0.272,1.174,0.357c0.422,0.088,0.844,0.131,1.258,0.131
+ c0.68,0,1.188-0.129,1.531-0.384c0.346-0.257,0.514-0.62,0.514-1.073c0-0.304-0.061-0.556-0.184-0.748
+ c-0.119-0.194-0.318-0.375-0.607-0.537c-0.285-0.162-0.721-0.351-1.301-0.558c-0.816-0.29-1.398-0.636-1.748-1.036
+ c-0.352-0.398-0.525-0.92-0.525-1.562c0-0.674,0.254-1.211,0.764-1.611c0.508-0.398,1.178-0.599,2.014-0.599
+ c0.869,0,1.672,0.161,2.398,0.48l-0.316,0.884c-0.725-0.3-1.428-0.454-2.109-0.454c-0.539,0-0.959,0.114-1.266,0.347
+ c-0.303,0.231-0.453,0.553-0.453,0.965c0,0.305,0.057,0.551,0.168,0.745c0.115,0.195,0.303,0.372,0.566,0.533
+ c0.268,0.161,0.672,0.34,1.221,0.535c0.92,0.327,1.551,0.679,1.896,1.056C179.462,5.995,179.636,6.483,179.636,7.081z"/>
+ <path fill="#FFFFFF" d="M186.556,9.413h-4.881V0.656h4.881v0.903h-3.863V4.38h3.633v0.898h-3.633V8.5h3.863V9.413z"/>
+ <path fill="#FFFFFF" d="M197.677,9.413l-1.09-2.785h-3.51l-1.078,2.785h-1.031l3.463-8.793h0.854l3.443,8.793H197.677z
+ M196.267,5.71l-1.018-2.712c-0.131-0.345-0.271-0.766-0.406-1.263c-0.09,0.383-0.211,0.804-0.377,1.263l-1.031,2.712H196.267z"/>
+ <path fill="#FFFFFF" d="M205.733,3.209c0,0.884-0.303,1.567-0.908,2.046c-0.607,0.477-1.473,0.714-2.596,0.714h-1.031v3.444
+ h-1.021V0.656h2.273C204.642,0.656,205.733,1.504,205.733,3.209z M201.2,5.092h0.914c0.902,0,1.557-0.146,1.961-0.435
+ c0.398-0.293,0.605-0.759,0.605-1.404c0-0.577-0.189-1.006-0.57-1.295c-0.381-0.279-0.969-0.423-1.773-0.423H201.2V5.092
+ L201.2,5.092z"/>
+ <path fill="#FFFFFF" d="M213.366,3.209c0,0.884-0.307,1.567-0.908,2.046c-0.607,0.477-1.473,0.714-2.598,0.714h-1.031v3.444h-1.02
+ V0.656h2.271C212.269,0.656,213.366,1.504,213.366,3.209z M208.827,5.092h0.918c0.904,0,1.559-0.146,1.959-0.435
+ c0.404-0.293,0.604-0.759,0.604-1.404c0-0.577-0.188-1.006-0.566-1.295c-0.381-0.279-0.971-0.423-1.773-0.423h-1.141V5.092
+ L208.827,5.092z"/>
+ <path fill="#FFFFFF" d="M215.44,9.413V0.656h1.021v7.832h3.857V9.41h-4.879V9.413z"/>
+ <path fill="#FFFFFF" d="M222.052,9.413V0.656h1.021v8.753h-1.021V9.413z"/>
+ <path fill="#FFFFFF" d="M229.466,1.44c-0.959,0-1.721,0.32-2.279,0.959c-0.557,0.642-0.834,1.518-0.834,2.633
+ c0,1.146,0.27,2.031,0.807,2.656c0.537,0.621,1.303,0.937,2.299,0.937c0.611,0,1.309-0.108,2.09-0.327v0.891
+ c-0.605,0.229-1.355,0.343-2.244,0.343c-1.289,0-2.285-0.396-2.988-1.181c-0.699-0.776-1.051-1.891-1.051-3.333
+ c0-0.902,0.17-1.69,0.506-2.371c0.336-0.678,0.824-1.202,1.461-1.569s1.387-0.551,2.248-0.551c0.918,0,1.719,0.168,2.408,0.504
+ l-0.432,0.875C230.798,1.594,230.13,1.44,229.466,1.44z"/>
+ <path fill="#FFFFFF" d="M239.204,9.413l-1.09-2.785h-3.512l-1.074,2.785h-1.031l3.459-8.793h0.857l3.445,8.793H239.204z
+ M237.798,5.71l-1.018-2.712c-0.133-0.345-0.27-0.766-0.406-1.263c-0.088,0.383-0.215,0.804-0.377,1.263l-1.033,2.712H237.798z"/>
+ <path fill="#FFFFFF" d="M244.401,9.413h-1.016V1.561h-2.773V0.656h6.564v0.903h-2.771v7.852h-0.004V9.413z"/>
+ <path fill="#FFFFFF" d="M248.743,9.413V0.656h1.018v8.753h-1.018V9.413z"/>
+ <path fill="#FFFFFF" d="M260.005,5.021c0,1.402-0.354,2.503-1.062,3.305c-0.707,0.806-1.691,1.206-2.955,1.206
+ c-1.291,0-2.285-0.396-2.988-1.186c-0.699-0.789-1.051-1.901-1.051-3.338c0-1.424,0.354-2.532,1.057-3.312
+ c0.699-0.785,1.703-1.18,2.99-1.18c1.262,0,2.24,0.399,2.951,1.2C259.655,2.513,260.005,3.614,260.005,5.021z M253.03,5.021
+ c0,1.186,0.25,2.085,0.754,2.697c0.508,0.613,1.242,0.922,2.203,0.922c0.973,0,1.705-0.311,2.201-0.918
+ c0.494-0.615,0.738-1.516,0.738-2.702c0-1.179-0.244-2.072-0.736-2.681c-0.49-0.61-1.223-0.914-2.189-0.914
+ c-0.969,0-1.705,0.306-2.213,0.918C253.282,2.96,253.03,3.851,253.03,5.021z"/>
+ <path fill="#FFFFFF" d="M269.044,9.413h-1.162l-4.783-7.352h-0.049c0.061,0.864,0.094,1.655,0.094,2.374v4.978H262.2V0.656h1.152
+ l4.771,7.319h0.049c-0.012-0.108-0.025-0.455-0.055-1.041c-0.027-0.582-0.041-0.998-0.029-1.256V0.656h0.951v8.755h0.006v0.002
+ H269.044z"/>
+ </g>
+ <g>
+ <path fill="#FFFFFF" d="M7.533,3.368c0,1.013-0.298,1.796-0.896,2.348C6.04,6.269,5.191,6.544,4.093,6.544H3.403v3.008H0.954
+ V0.485h3.139c1.145,0,2.005,0.25,2.58,0.75C7.246,1.736,7.533,2.447,7.533,3.368z M3.403,4.547h0.447
+ c0.368,0,0.66-0.103,0.877-0.31s0.326-0.492,0.326-0.856c0-0.612-0.339-0.918-1.018-0.918H3.403V4.547z"/>
+ <path fill="#FFFFFF" d="M17.652,9.552l-0.446-1.699h-2.944l-0.459,1.699h-2.691l2.958-9.104h3.268l2.995,9.104H17.652z
+ M16.697,5.843l-0.39-1.489c-0.092-0.33-0.202-0.758-0.333-1.283c-0.13-0.525-0.216-0.901-0.257-1.128
+ c-0.037,0.211-0.111,0.558-0.221,1.042c-0.108,0.483-0.353,1.437-0.729,2.857H16.697z"/>
+ <path fill="#FFFFFF" d="M28.423,9.552h-2.449V2.488H23.76V0.485h6.871v2.003h-2.208V9.552z"/>
+ <path fill="#FFFFFF" d="M39.037,9.552h-2.449V2.488h-2.214V0.485h6.871v2.003h-2.208V9.552z"/>
+ <path fill="#FFFFFF" d="M51.035,9.552h-5.382V0.485h5.382V2.45h-2.933v1.427h2.716v1.966h-2.716v1.711h2.933V9.552z"/>
+ <path fill="#FFFFFF" d="M58.184,6.253v3.299h-2.449V0.485h2.97c2.464,0,3.696,0.893,3.696,2.679c0,1.05-0.513,1.862-1.538,2.437
+ l2.642,3.951h-2.777l-1.922-3.299H58.184z M58.184,4.41h0.459c0.855,0,1.284-0.378,1.284-1.135c0-0.625-0.42-0.937-1.26-0.937
+ h-0.483V4.41z"/>
+ <path fill="#FFFFFF" d="M76.072,9.552H72.86L69.55,3.164h-0.057c0.079,1.004,0.118,1.771,0.118,2.301v4.086h-2.17V0.485h3.2
+ l3.299,6.301h0.037c-0.059-0.914-0.086-1.648-0.086-2.202V0.485h2.183v9.066H76.072z"/>
+ <path fill="#FFFFFF" d="M83.557,9.552h-2.412V0.485h5.356V2.45h-2.944v1.73h2.716v1.965h-2.716V9.552z"/>
+ <path fill="#FFFFFF" d="M91.102,9.552V0.485h2.449v7.088h3.49v1.979H91.102z"/>
+ <path fill="#FFFFFF" d="M104.842,3.846l1.562-3.361h2.654l-2.983,5.525v3.541h-2.468V6.085l-2.983-5.6h2.667L104.842,3.846z"/>
+ </g>
+</g>
+</svg>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand-lg.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand-lg.png
new file mode 100644
index 0000000..a80972e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/brand-lg.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/favicon.ico b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/favicon.ico
new file mode 100644
index 0000000..43c8163
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/favicon.ico differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/logo.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/logo.png
new file mode 100755
index 0000000..a45b112
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/logo.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/logo.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/logo.svg
new file mode 100755
index 0000000..b9ce0ac
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/logo.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="73px" height="69px" viewBox="0 0 73 69" enable-background="new 0 0 73 69" xml:space="preserve">
+<g>
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="36.2046" y1="2.1504" x2="36.2046" y2="68.6623">
+ <stop offset="0" style="stop-color:#60EFFF"/>
+ <stop offset="1" style="stop-color:#1F89C7"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" d="M36.287,0.137l0.008-0.063l-0.031,0.039l-0.012-0.012L36.262,0l-0.057,0.056L36.148,0l0.011,0.101
+ l-0.013,0.012l-0.03-0.039l0.007,0.063L0,35.447l14.307,20.267l11.05-2.538l10.848,15.255l10.85-15.255l11.05,2.538l8.861-12.554
+ l5.444-7.713L36.287,0.137z M35.108,4.282L30.174,50.52l-9.642-13.151L35.108,4.282z M20.059,36.725l-6.068-8.277L35.057,2.683
+ L20.059,36.725z M29.967,51.407l-4.313,0.99l-7.251-10.193l1.807-4.104L29.967,51.407z M36.092,2.051l0.113-0.258l0.114,0.257
+ l5.102,49.711l-0.015-0.01l-4.999,7.387l-5.409-7.396l-0.007,0.004L36.092,2.051z M42.237,50.521L37.303,4.281l14.576,33.087
+ L42.237,50.521z M52.201,38.101l1.808,4.104l-7.251,10.193l-4.312-0.99L52.201,38.101z M37.355,2.684L58.42,28.448l-6.067,8.277
+ L37.355,2.684z M14.605,54.935L0.907,35.53L32.779,4.374L13.114,28.425l6.623,9.03l-2.127,4.83l7.312,10.28L14.605,54.935z
+ M36.205,67.235L26.086,53.009l4.326-0.992l0.072,0.099l-0.045,0.034l5.988,8.191l5.552-8.201l-0.048-0.032L42,52.017l4.324,0.992
+ L36.205,67.235z M66.4,42.762l-8.594,12.173l-10.317-2.369l7.312-10.28l-2.127-4.83l6.622-9.03L39.633,4.374L71.504,35.53
+ L66.4,42.762z"/>
+</g>
+</svg>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner.gif
new file mode 100644
index 0000000..4c9ea91
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-lg.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-lg.gif
new file mode 100644
index 0000000..0effa66
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-lg.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-sm.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-sm.gif
new file mode 100644
index 0000000..eeaddc2
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-sm.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-xs.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-xs.gif
new file mode 100644
index 0000000..8bfd1bc
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/img/spinner-xs.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/js/patternfly.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/js/patternfly.js
new file mode 100644
index 0000000..7e45a6a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/js/patternfly.js
@@ -0,0 +1,212 @@
+// PatternFly Namespace
+var PatternFly = PatternFly || {};
+
+// Util: PatternFly Sidebar
+// Set height of sidebar-pf to height of document minus height of navbar-pf if not mobile
+(function($) {
+ sidebar = function() {
+ var documentHeight = 0;
+ var navbarpfHeight = 0;
+ var colHeight = 0;
+ if ( $('.navbar-pf .navbar-toggle').is(':hidden') ) {
+ documentHeight = $(document).height();
+ navbarpfHeight = $('.navbar-pf').outerHeight();
+ colHeight = documentHeight - navbarpfHeight;
+ }
+ $('.sidebar-pf').parent('.row').children('[class*="col-"]').css({ "min-height":colHeight});
+ }
+ $(document).ready(function() {
+ // Call sidebar() on ready if .sidebar-pf exists and .datatable does not exist
+ if ($('.sidebar-pf').length > 0 && $('.datatable').length == 0) {
+ sidebar();
+ }
+ });
+ $(window).resize(function() {
+ // Call sidebar() on resize if .sidebar-pf exists
+ if ($('.sidebar-pf').length > 0) {
+ sidebar();
+ }
+ });
+})(jQuery);
+
+// Util: PatternFly Popovers
+// Add data-close="true" to insert close X icon
+(function($) {
+ PatternFly.popovers = function( selector ) {
+ var allpopovers = $(selector);
+
+ // Initialize
+ allpopovers.popover();
+
+ // Add close icons
+ allpopovers.filter('[data-close=true]').each(function(index, element) {
+ var $this = $(element),
+ title = $this.attr('data-original-title') + '<button type="button" class="close" aria-hidden="true"><span class="pficon pficon-close"></span></button>';
+
+ $this.attr('data-original-title', title);
+ });
+
+ // Bind Close Icon to Toggle Display
+ allpopovers.on('click', function(e) {
+ var $this = $(this);
+ $title = $this.next('.popover').find('.popover-title');
+
+ // Only if data-close is true add class "x" to title for right padding
+ $title.find('.close').parent('.popover-title').addClass('closable');
+
+ // Bind x icon to close popover
+ $title.find('.close').on('click', function() {
+ $this.popover('toggle');
+ });
+
+ // Prevent href="#" page scroll to top
+ e.preventDefault();
+ });
+ };
+})(jQuery);
+
+
+// Util: DataTables Settings
+(function($) {
+ if ($.fn.dataTableExt) {
+ /* Set the defaults for DataTables initialisation */
+ $.extend( true, $.fn.dataTable.defaults, {
+ "bDestroy": true,
+ "bAutoWidth": false,
+ "iDisplayLength": 20,
+ "sDom":
+ "<'dataTables_header' f i r >" +
+ "<'table-responsive' t >" +
+ "<'dataTables_footer' p >",
+ "oLanguage": {
+ "sInfo": "Showing <b>_START_</b> to <b>_END_</b> of <b>_TOTAL_</b> Items",
+ "sInfoFiltered" : "(of <b>_MAX_</b>)",
+ "sInfoEmpty" : "Showing <b>0</b> Results",
+ "sZeroRecords":
+ "<p>Suggestions</p>" +
+ "<ul>" +
+ "<li>Check the syntax of the search term.</li>" +
+ "<li>Check that the correct menu option is chosen (token ID vs. user ID).</li>" +
+ "<li>Use wildcards (* to match zero or more characters or ? to match a single character).</li>" +
+ "<li>Clear the search field, then click Search to return to the 20 most recent records.</li>" +
+ "</ul>",
+ "sSearch": ""
+ },
+ "sPaginationType": "bootstrap_input"
+ });
+
+ /* Default class modification */
+ $.extend( $.fn.dataTableExt.oStdClasses, {
+ "sWrapper": "dataTables_wrapper"
+ });
+
+ /* API method to get paging information */
+ $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings ) {
+ return {
+ "iStart": oSettings._iDisplayStart,
+ "iEnd": oSettings.fnDisplayEnd(),
+ "iLength": oSettings._iDisplayLength,
+ "iTotal": oSettings.fnRecordsTotal(),
+ "iFilteredTotal": oSettings.fnRecordsDisplay(),
+ "iPage": oSettings._iDisplayLength === -1 ?
+ 0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
+ "iTotalPages": oSettings._iDisplayLength === -1 ?
+ 0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
+ };
+ };
+
+ /* Combination of Bootstrap + Input Text style pagination control */
+ $.extend( $.fn.dataTableExt.oPagination, {
+ "bootstrap_input": {
+ "fnInit": function( oSettings, nPaging, fnDraw ) {
+ var oLang = oSettings.oLanguage.oPaginate;
+ var fnClickHandler = function ( e ) {
+ e.preventDefault();
+ if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
+ fnDraw( oSettings );
+ }
+ };
+
+ $(nPaging).append(
+ '<ul class="pagination">'+
+ '<li class="first disabled"><span class="i fa fa-angle-double-left"></span></li>' +
+ '<li class="prev disabled"><span class="i fa fa-angle-left"></span></li>' +
+ '</ul>' +
+ '<div class="pagination-input">' +
+ '<input type="text" class="paginate_input">' +
+ '<span class="paginate_of">of <b>3</b></span>' +
+ '</div>' +
+ '<ul class="pagination">'+
+ '<li class="next disabled"><span class="i fa fa-angle-right"></span></li>' +
+ '<li class="last disabled"><span class="i fa fa-angle-double-right"></span></li>' +
+ '</ul>'
+ );
+
+ var els = $('li', nPaging);
+ $(els[0]).bind( 'click.DT', { action: "first" }, fnClickHandler );
+ $(els[1]).bind( 'click.DT', { action: "previous" }, fnClickHandler );
+ $(els[2]).bind( 'click.DT', { action: "next" }, fnClickHandler );
+ $(els[3]).bind( 'click.DT', { action: "last" }, fnClickHandler );
+
+ var nInput = $('input', nPaging);
+ $(nInput).keyup( function (e) {
+ if ( e.which == 38 || e.which == 39 ) {
+ this.value++;
+ }
+ else if ( (e.which == 37 || e.which == 40) && this.value > 1 ) {
+ this.value--;
+ }
+
+ if ( this.value == "" || this.value.match(/[^0-9]/) ) {
+ /* Nothing entered or non-numeric character */
+ return;
+ }
+
+ var iNewStart = oSettings._iDisplayLength * (this.value - 1);
+ if ( iNewStart > oSettings.fnRecordsDisplay() ) {
+ /* Display overrun */
+ oSettings._iDisplayStart = (Math.ceil((oSettings.fnRecordsDisplay()-1) /
+ oSettings._iDisplayLength)-1) * oSettings._iDisplayLength;
+ fnDraw( oSettings );
+ return;
+ }
+
+ oSettings._iDisplayStart = iNewStart;
+ fnDraw( oSettings );
+ });
+ },
+
+ "fnUpdate": function ( oSettings, fnDraw ) {
+ var oPaging = oSettings.oInstance.fnPagingInfo(),
+ an = oSettings.aanFeatures.p,
+ i,
+ ien,
+ iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength),
+ iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
+
+ for ( i=0, ien=an.length ; i<ien ; i++ ) {
+ $('.paginate_input').val(iCurrentPage);
+ $('.paginate_of b').html(iPages);
+
+ // Add / remove disabled classes from the static elements
+ if ( oPaging.iPage === 0 ) {
+ $('li.first', an[i]).addClass('disabled');
+ $('li.prev', an[i]).addClass('disabled');
+ } else {
+ $('li.first', an[i]).removeClass('disabled');
+ $('li.prev', an[i]).removeClass('disabled');
+ }
+
+ if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
+ $('li.next', an[i]).addClass('disabled');
+ $('li.last', an[i]).addClass('disabled');
+ } else {
+ $('li.next', an[i]).removeClass('disabled');
+ $('li.last', an[i]).removeClass('disabled');
+ }
+ }
+ }
+ }
+ });
+ }
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/js/patternfly.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/js/patternfly.min.js
new file mode 100644
index 0000000..aa2b820
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/patternfly/js/patternfly.min.js
@@ -0,0 +1 @@
+var PatternFly=PatternFly||{};!function($){sidebar=function(){var documentHeight=0,navbarpfHeight=0,colHeight=0;$(".navbar-pf .navbar-toggle").is(":hidden")&&(documentHeight=$(document).height(),navbarpfHeight=$(".navbar-pf").outerHeight(),colHeight=documentHeight-navbarpfHeight),$(".sidebar-pf").parent(".row").children('[class*="col-"]').css({"min-height":colHeight})},$(document).ready(function(){$(".sidebar-pf").length>0&&0==$(".datatable").length&&sidebar()}),$(window).resize(function(){$(".sidebar-pf").length>0&&sidebar()})}(jQuery),function($){PatternFly.popovers=function(selector){var allpopovers=$(selector);allpopovers.popover(),allpopovers.filter("[data-close=true]").each(function(index,element){var $this=$(element),title=$this.attr("data-original-title")+'<button type="button" class="close" aria-hidden="true"><span class="pficon pficon-close"></span></button>';$this.attr("data-original-title",title)}),allpopovers.on("click",function(e){var $this=$(this);$title=$this.next(".popover").find(".popover-title"),$title.find(".close").parent(".popover-title").addClass("closable"),$title.find(".close").on("click",function(){$this.popover("toggle")}),e.preventDefault()})}}(jQuery),function($){$.fn.dataTableExt&&($.extend(!0,$.fn.dataTable.defaults,{bDestroy:!0,bAutoWidth:!1,iDisplayLength:20,sDom:"<'dataTables_header' f i r ><'table-responsive' t ><'dataTables_footer' p >",oLanguage:{sInfo:"Showing <b>_START_</b> to <b>_END_</b> of <b>_TOTAL_</b> Items",sInfoFiltered:"(of <b>_MAX_</b>)",sInfoEmpty:"Showing <b>0</b> Results",sZeroRecords:"<p>Suggestions</p><ul><li>Check the syntax of the search term.</li><li>Check that the correct menu option is chosen (token ID vs. user ID).</li><li>Use wildcards (* to match zero or more characters or ? to match a single character).</li><li>Clear the search field, then click Search to return to the 20 most recent records.</li></ul>",sSearch:""},sPaginationType:"bootstrap_input"}),$.extend($.fn.dataTableExt.oStdClasses,{sWrapper:"dataTables_wrapper"}),$.fn.dataTableExt.oApi.fnPagingInfo=function(oSettings){return{iStart:oSettings._iDisplayStart,iEnd:oSettings.fnDisplayEnd(),iLength:oSettings._iDisplayLength,iTotal:oSettings.fnRecordsTotal(),iFilteredTotal:oSettings.fnRecordsDisplay(),iPage:-1===oSettings._iDisplayLength?0:Math.ceil(oSettings._iDisplayStart/oSettings._iDisplayLength),iTotalPages:-1===oSettings._iDisplayLength?0:Math.ceil(oSettings.fnRecordsDisplay()/oSettings._iDisplayLength)}},$.extend($.fn.dataTableExt.oPagination,{bootstrap_input:{fnInit:function(oSettings,nPaging,fnDraw){var fnClickHandler=(oSettings.oLanguage.oPaginate,function(e){e.preventDefault(),oSettings.oApi._fnPageChange(oSettings,e.data.action)&&fnDraw(oSettings)});$(nPaging).append('<ul class="pagination"><li class="first disabled"><span class="i fa fa-angle-double-left"></span></li><li class="prev disabled"><span class="i fa fa-angle-left"></span></li></ul><div class="pagination-input"><input type="text" class="paginate_input"><span class="paginate_of">of <b>3</b></span></div><ul class="pagination"><li class="next disabled"><span class="i fa fa-angle-right"></span></li><li class="last disabled"><span class="i fa fa-angle-double-right"></span></li></ul>');var els=$("li",nPaging);$(els[0]).bind("click.DT",{action:"first"},fnClickHandler),$(els[1]).bind("click.DT",{action:"previous"},fnClickHandler),$(els[2]).bind("click.DT",{action:"next"},fnClickHandler),$(els[3]).bind("click.DT",{action:"last"},fnClickHandler);var nInput=$("input",nPaging);$(nInput).keyup(function(e){if(38==e.which||39==e.which?this.value++:(37==e.which||40==e.which)&&this.value>1&&this.value--,""!=this.value&&!this.value.match(/[^0-9]/)){var iNewStart=oSettings._iDisplayLength*(this.value-1);if(iNewStart>oSettings.fnRecordsDisplay())return oSettings._iDisplayStart=(Math.ceil((oSettings.fnRecordsDisplay()-1)/oSettings._iDisplayLength)-1)*oSettings._iDisplayLength,void fnDraw(oSettings);oSettings._iDisplayStart=iNewStart,fnDraw(oSettings)}})},fnUpdate:function(oSettings){var i,ien,oPaging=oSettings.oInstance.fnPagingInfo(),an=oSettings.aanFeatures.p,iPages=Math.ceil(oSettings.fnRecordsDisplay()/oSettings._iDisplayLength),iCurrentPage=Math.ceil(oSettings._iDisplayStart/oSettings._iDisplayLength)+1;for(i=0,ien=an.length;ien>i;i++)$(".paginate_input").val(iCurrentPage),$(".paginate_of b").html(iPages),0===oPaging.iPage?($("li.first",an[i]).addClass("disabled"),$("li.prev",an[i]).addClass("disabled")):($("li.first",an[i]).removeClass("disabled"),$("li.prev",an[i]).removeClass("disabled")),oPaging.iPage===oPaging.iTotalPages-1||0===oPaging.iTotalPages?($("li.next",an[i]).addClass("disabled"),$("li.last",an[i]).addClass("disabled")):($("li.next",an[i]).removeClass("disabled"),$("li.last",an[i]).removeClass("disabled"))}}}))}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.css
new file mode 100644
index 0000000..9892f6e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.css
@@ -0,0 +1,9749 @@
+/* Red Hat Common User Experience (RCUE) */
+/* PatternFly */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 300;
+ src: url('../../components/patternfly/dist/fonts/OpenSans-Light-webfont.eot');
+ src: url('../../components/patternfly/dist/fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), url('../../components/patternfly/dist/fonts/OpenSans-Light-webfont.woff') format('woff'), url('../../components/patternfly/dist/fonts/OpenSans-Light-webfont.ttf') format('truetype'), url('../../components/patternfly/dist/fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: url('../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.eot');
+ src: url('../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), url('../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.woff') format('woff'), url('../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.ttf') format('truetype'), url('../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+ src: url('../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.eot');
+ src: url('../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), url('../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff') format('woff'), url('../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), url('../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 700;
+ src: url('../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.eot');
+ src: url('../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), url('../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.woff') format('woff'), url('../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf') format('truetype'), url('../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 800;
+ src: url('../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.eot');
+ src: url('../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'), url('../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.woff') format('woff'), url('../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.ttf') format('truetype'), url('../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') format('svg');
+}
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+ font-family: sans-serif;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+}
+body {
+ margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ vertical-align: baseline;
+}
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+[hidden],
+template {
+ display: none;
+}
+a {
+ background-color: transparent;
+}
+a:active,
+a:hover {
+ outline: 0;
+}
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+b,
+strong {
+ font-weight: bold;
+}
+dfn {
+ font-style: italic;
+}
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+mark {
+ background: #ff0;
+ color: #000;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+sup {
+ top: -0.5em;
+}
+sub {
+ bottom: -0.25em;
+}
+img {
+ border: 0;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+figure {
+ margin: 1em 40px;
+}
+hr {
+ box-sizing: content-box;
+ height: 0;
+}
+pre {
+ overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit;
+ font: inherit;
+ margin: 0;
+}
+button {
+ overflow: visible;
+}
+button,
+select {
+ text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+input {
+ line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box;
+ padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: textfield;
+ box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+legend {
+ border: 0;
+ padding: 0;
+}
+textarea {
+ overflow: auto;
+}
+optgroup {
+ font-weight: bold;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td,
+th {
+ padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+ *,
+ *:before,
+ *:after {
+ background: transparent !important;
+ color: #000 !important;
+ box-shadow: none !important;
+ text-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ .navbar {
+ display: none;
+ }
+ .btn > .caret,
+ .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+ }
+ .label {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #ddd !important;
+ }
+}
+@font-face {
+ font-family: 'Glyphicons Halflings';
+ src: url('../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot');
+ src: url('../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+ content: "\2a";
+}
+.glyphicon-plus:before {
+ content: "\2b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
+}
+.glyphicon-minus:before {
+ content: "\2212";
+}
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+.glyphicon-glass:before {
+ content: "\e001";
+}
+.glyphicon-music:before {
+ content: "\e002";
+}
+.glyphicon-search:before {
+ content: "\e003";
+}
+.glyphicon-heart:before {
+ content: "\e005";
+}
+.glyphicon-star:before {
+ content: "\e006";
+}
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+.glyphicon-user:before {
+ content: "\e008";
+}
+.glyphicon-film:before {
+ content: "\e009";
+}
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+.glyphicon-th:before {
+ content: "\e011";
+}
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+.glyphicon-ok:before {
+ content: "\e013";
+}
+.glyphicon-remove:before {
+ content: "\e014";
+}
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+.glyphicon-off:before {
+ content: "\e017";
+}
+.glyphicon-signal:before {
+ content: "\e018";
+}
+.glyphicon-cog:before {
+ content: "\e019";
+}
+.glyphicon-trash:before {
+ content: "\e020";
+}
+.glyphicon-home:before {
+ content: "\e021";
+}
+.glyphicon-file:before {
+ content: "\e022";
+}
+.glyphicon-time:before {
+ content: "\e023";
+}
+.glyphicon-road:before {
+ content: "\e024";
+}
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+.glyphicon-download:before {
+ content: "\e026";
+}
+.glyphicon-upload:before {
+ content: "\e027";
+}
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+.glyphicon-lock:before {
+ content: "\e033";
+}
+.glyphicon-flag:before {
+ content: "\e034";
+}
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+.glyphicon-tag:before {
+ content: "\e041";
+}
+.glyphicon-tags:before {
+ content: "\e042";
+}
+.glyphicon-book:before {
+ content: "\e043";
+}
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+.glyphicon-print:before {
+ content: "\e045";
+}
+.glyphicon-camera:before {
+ content: "\e046";
+}
+.glyphicon-font:before {
+ content: "\e047";
+}
+.glyphicon-bold:before {
+ content: "\e048";
+}
+.glyphicon-italic:before {
+ content: "\e049";
+}
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+.glyphicon-list:before {
+ content: "\e056";
+}
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+.glyphicon-picture:before {
+ content: "\e060";
+}
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+.glyphicon-tint:before {
+ content: "\e064";
+}
+.glyphicon-edit:before {
+ content: "\e065";
+}
+.glyphicon-share:before {
+ content: "\e066";
+}
+.glyphicon-check:before {
+ content: "\e067";
+}
+.glyphicon-move:before {
+ content: "\e068";
+}
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+.glyphicon-backward:before {
+ content: "\e071";
+}
+.glyphicon-play:before {
+ content: "\e072";
+}
+.glyphicon-pause:before {
+ content: "\e073";
+}
+.glyphicon-stop:before {
+ content: "\e074";
+}
+.glyphicon-forward:before {
+ content: "\e075";
+}
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+.glyphicon-eject:before {
+ content: "\e078";
+}
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+.glyphicon-gift:before {
+ content: "\e102";
+}
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+.glyphicon-fire:before {
+ content: "\e104";
+}
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+.glyphicon-plane:before {
+ content: "\e108";
+}
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+.glyphicon-random:before {
+ content: "\e110";
+}
+.glyphicon-comment:before {
+ content: "\e111";
+}
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+.glyphicon-bell:before {
+ content: "\e123";
+}
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+.glyphicon-globe:before {
+ content: "\e135";
+}
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+.glyphicon-filter:before {
+ content: "\e138";
+}
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+.glyphicon-link:before {
+ content: "\e144";
+}
+.glyphicon-phone:before {
+ content: "\e145";
+}
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+.glyphicon-usd:before {
+ content: "\e148";
+}
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+.glyphicon-sort:before {
+ content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+.glyphicon-expand:before {
+ content: "\e158";
+}
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+.glyphicon-flash:before {
+ content: "\e162";
+}
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+.glyphicon-record:before {
+ content: "\e165";
+}
+.glyphicon-save:before {
+ content: "\e166";
+}
+.glyphicon-open:before {
+ content: "\e167";
+}
+.glyphicon-saved:before {
+ content: "\e168";
+}
+.glyphicon-import:before {
+ content: "\e169";
+}
+.glyphicon-export:before {
+ content: "\e170";
+}
+.glyphicon-send:before {
+ content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+.glyphicon-header:before {
+ content: "\e180";
+}
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+.glyphicon-tower:before {
+ content: "\e184";
+}
+.glyphicon-stats:before {
+ content: "\e185";
+}
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+.glyphicon-cd:before {
+ content: "\e201";
+}
+.glyphicon-save-file:before {
+ content: "\e202";
+}
+.glyphicon-open-file:before {
+ content: "\e203";
+}
+.glyphicon-level-up:before {
+ content: "\e204";
+}
+.glyphicon-copy:before {
+ content: "\e205";
+}
+.glyphicon-paste:before {
+ content: "\e206";
+}
+.glyphicon-alert:before {
+ content: "\e209";
+}
+.glyphicon-equalizer:before {
+ content: "\e210";
+}
+.glyphicon-king:before {
+ content: "\e211";
+}
+.glyphicon-queen:before {
+ content: "\e212";
+}
+.glyphicon-pawn:before {
+ content: "\e213";
+}
+.glyphicon-bishop:before {
+ content: "\e214";
+}
+.glyphicon-knight:before {
+ content: "\e215";
+}
+.glyphicon-baby-formula:before {
+ content: "\e216";
+}
+.glyphicon-tent:before {
+ content: "\26fa";
+}
+.glyphicon-blackboard:before {
+ content: "\e218";
+}
+.glyphicon-bed:before {
+ content: "\e219";
+}
+.glyphicon-apple:before {
+ content: "\f8ff";
+}
+.glyphicon-erase:before {
+ content: "\e221";
+}
+.glyphicon-hourglass:before {
+ content: "\231b";
+}
+.glyphicon-lamp:before {
+ content: "\e223";
+}
+.glyphicon-duplicate:before {
+ content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+ content: "\e225";
+}
+.glyphicon-scissors:before {
+ content: "\e226";
+}
+.glyphicon-bitcoin:before {
+ content: "\e227";
+}
+.glyphicon-btc:before {
+ content: "\e227";
+}
+.glyphicon-xbt:before {
+ content: "\e227";
+}
+.glyphicon-yen:before {
+ content: "\00a5";
+}
+.glyphicon-jpy:before {
+ content: "\00a5";
+}
+.glyphicon-ruble:before {
+ content: "\20bd";
+}
+.glyphicon-rub:before {
+ content: "\20bd";
+}
+.glyphicon-scale:before {
+ content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+ content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+ content: "\e232";
+}
+.glyphicon-education:before {
+ content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+ content: "\e234";
+}
+.glyphicon-option-vertical:before {
+ content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+ content: "\e236";
+}
+.glyphicon-modal-window:before {
+ content: "\e237";
+}
+.glyphicon-oil:before {
+ content: "\e238";
+}
+.glyphicon-grain:before {
+ content: "\e239";
+}
+.glyphicon-sunglasses:before {
+ content: "\e240";
+}
+.glyphicon-text-size:before {
+ content: "\e241";
+}
+.glyphicon-text-color:before {
+ content: "\e242";
+}
+.glyphicon-text-background:before {
+ content: "\e243";
+}
+.glyphicon-object-align-top:before {
+ content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+ content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+ content: "\e246";
+}
+.glyphicon-object-align-left:before {
+ content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+ content: "\e248";
+}
+.glyphicon-object-align-right:before {
+ content: "\e249";
+}
+.glyphicon-triangle-right:before {
+ content: "\e250";
+}
+.glyphicon-triangle-left:before {
+ content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+ content: "\e252";
+}
+.glyphicon-triangle-top:before {
+ content: "\e253";
+}
+.glyphicon-console:before {
+ content: "\e254";
+}
+.glyphicon-superscript:before {
+ content: "\e255";
+}
+.glyphicon-subscript:before {
+ content: "\e256";
+}
+.glyphicon-menu-left:before {
+ content: "\e257";
+}
+.glyphicon-menu-right:before {
+ content: "\e258";
+}
+.glyphicon-menu-down:before {
+ content: "\e259";
+}
+.glyphicon-menu-up:before {
+ content: "\e260";
+}
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+html {
+ font-size: 10px;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ line-height: 1.66666667;
+ color: #333333;
+ background-color: #ffffff;
+}
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+a {
+ color: #0099d3;
+ text-decoration: none;
+}
+a:hover,
+a:focus {
+ color: #00618a;
+ text-decoration: underline;
+}
+a:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+figure {
+ margin: 0;
+}
+img {
+ vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+}
+.img-rounded {
+ border-radius: 1px;
+}
+.img-thumbnail {
+ padding: 4px;
+ line-height: 1.66666667;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 1px;
+ -webkit-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+ display: inline-block;
+ max-width: 100%;
+ height: auto;
+}
+.img-circle {
+ border-radius: 50%;
+}
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ padding: 0;
+ 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;
+}
+[role="button"] {
+ cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.1;
+ color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+ font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+ font-size: 75%;
+}
+h1,
+.h1 {
+ font-size: 24px;
+}
+h2,
+.h2 {
+ font-size: 22px;
+}
+h3,
+.h3 {
+ font-size: 16px;
+}
+h4,
+.h4 {
+ font-size: 15px;
+}
+h5,
+.h5 {
+ font-size: 13px;
+}
+h6,
+.h6 {
+ font-size: 11px;
+}
+p {
+ margin: 0 0 10px;
+}
+.lead {
+ margin-bottom: 20px;
+ font-size: 13px;
+ font-weight: 300;
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .lead {
+ font-size: 18px;
+ }
+}
+small,
+.small {
+ font-size: 91%;
+}
+mark,
+.mark {
+ background-color: #fcf8e3;
+ padding: .2em;
+}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+.text-center {
+ text-align: center;
+}
+.text-justify {
+ text-align: justify;
+}
+.text-nowrap {
+ white-space: nowrap;
+}
+.text-lowercase {
+ text-transform: lowercase;
+}
+.text-uppercase {
+ text-transform: uppercase;
+}
+.text-capitalize {
+ text-transform: capitalize;
+}
+.text-muted {
+ color: #999999;
+}
+.text-primary {
+ color: #00a8e1;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+ color: #0082ae;
+}
+.text-success {
+ color: #3c763d;
+}
+a.text-success:hover,
+a.text-success:focus {
+ color: #2b542c;
+}
+.text-info {
+ color: #31708f;
+}
+a.text-info:hover,
+a.text-info:focus {
+ color: #245269;
+}
+.text-warning {
+ color: #ec7a08;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+ color: #bb6106;
+}
+.text-danger {
+ color: #a94442;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+ color: #843534;
+}
+.bg-primary {
+ color: #fff;
+ background-color: #00a8e1;
+}
+a.bg-primary:hover,
+a.bg-primary:focus {
+ background-color: #0082ae;
+}
+.bg-success {
+ background-color: #dff0d8;
+}
+a.bg-success:hover,
+a.bg-success:focus {
+ background-color: #c1e2b3;
+}
+.bg-info {
+ background-color: #d9edf7;
+}
+a.bg-info:hover,
+a.bg-info:focus {
+ background-color: #afd9ee;
+}
+.bg-warning {
+ background-color: #fcf8e3;
+}
+a.bg-warning:hover,
+a.bg-warning:focus {
+ background-color: #f7ecb5;
+}
+.bg-danger {
+ background-color: #f2dede;
+}
+a.bg-danger:hover,
+a.bg-danger:focus {
+ background-color: #e4b9b9;
+}
+.page-header {
+ padding-bottom: 9px;
+ margin: 40px 0 20px;
+ border-bottom: 1px solid #eeeeee;
+}
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+ margin-left: -5px;
+}
+.list-inline > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+dl {
+ margin-top: 0;
+ margin-bottom: 20px;
+}
+dt,
+dd {
+ line-height: 1.66666667;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+}
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #999999;
+}
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ font-size: 15px;
+ border-left: 5px solid #eeeeee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+ margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+ display: block;
+ font-size: 80%;
+ line-height: 1.66666667;
+ color: #999999;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+ text-align: right;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+ content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+ content: '\00A0 \2014';
+}
+address {
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 1.66666667;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, monospace;
+}
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ background-color: #f9f2f4;
+ border-radius: 1px;
+}
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #ffffff;
+ background-color: #333333;
+ border-radius: 1px;
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ box-shadow: none;
+}
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 11px;
+ line-height: 1.66666667;
+ word-break: break-all;
+ word-wrap: break-word;
+ color: #333333;
+ background-color: #fcfcfc;
+ border: 1px solid #cccccc;
+ border-radius: 1px;
+}
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.container {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+@media (min-width: 768px) {
+ .container {
+ width: 760px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 980px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ width: 1180px;
+ }
+}
+.container-fluid {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+.row {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+ float: left;
+}
+.col-xs-12 {
+ width: 100%;
+}
+.col-xs-11 {
+ width: 91.66666667%;
+}
+.col-xs-10 {
+ width: 83.33333333%;
+}
+.col-xs-9 {
+ width: 75%;
+}
+.col-xs-8 {
+ width: 66.66666667%;
+}
+.col-xs-7 {
+ width: 58.33333333%;
+}
+.col-xs-6 {
+ width: 50%;
+}
+.col-xs-5 {
+ width: 41.66666667%;
+}
+.col-xs-4 {
+ width: 33.33333333%;
+}
+.col-xs-3 {
+ width: 25%;
+}
+.col-xs-2 {
+ width: 16.66666667%;
+}
+.col-xs-1 {
+ width: 8.33333333%;
+}
+.col-xs-pull-12 {
+ right: 100%;
+}
+.col-xs-pull-11 {
+ right: 91.66666667%;
+}
+.col-xs-pull-10 {
+ right: 83.33333333%;
+}
+.col-xs-pull-9 {
+ right: 75%;
+}
+.col-xs-pull-8 {
+ right: 66.66666667%;
+}
+.col-xs-pull-7 {
+ right: 58.33333333%;
+}
+.col-xs-pull-6 {
+ right: 50%;
+}
+.col-xs-pull-5 {
+ right: 41.66666667%;
+}
+.col-xs-pull-4 {
+ right: 33.33333333%;
+}
+.col-xs-pull-3 {
+ right: 25%;
+}
+.col-xs-pull-2 {
+ right: 16.66666667%;
+}
+.col-xs-pull-1 {
+ right: 8.33333333%;
+}
+.col-xs-pull-0 {
+ right: auto;
+}
+.col-xs-push-12 {
+ left: 100%;
+}
+.col-xs-push-11 {
+ left: 91.66666667%;
+}
+.col-xs-push-10 {
+ left: 83.33333333%;
+}
+.col-xs-push-9 {
+ left: 75%;
+}
+.col-xs-push-8 {
+ left: 66.66666667%;
+}
+.col-xs-push-7 {
+ left: 58.33333333%;
+}
+.col-xs-push-6 {
+ left: 50%;
+}
+.col-xs-push-5 {
+ left: 41.66666667%;
+}
+.col-xs-push-4 {
+ left: 33.33333333%;
+}
+.col-xs-push-3 {
+ left: 25%;
+}
+.col-xs-push-2 {
+ left: 16.66666667%;
+}
+.col-xs-push-1 {
+ left: 8.33333333%;
+}
+.col-xs-push-0 {
+ left: auto;
+}
+.col-xs-offset-12 {
+ margin-left: 100%;
+}
+.col-xs-offset-11 {
+ margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+ margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+ margin-left: 75%;
+}
+.col-xs-offset-8 {
+ margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+ margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+ margin-left: 50%;
+}
+.col-xs-offset-5 {
+ margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+ margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+ margin-left: 25%;
+}
+.col-xs-offset-2 {
+ margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+ margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+ margin-left: 0%;
+}
+@media (min-width: 768px) {
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ float: left;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666667%;
+ }
+ .col-sm-10 {
+ width: 83.33333333%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666667%;
+ }
+ .col-sm-7 {
+ width: 58.33333333%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.66666667%;
+ }
+ .col-sm-1 {
+ width: 8.33333333%;
+ }
+ .col-sm-pull-12 {
+ right: 100%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-sm-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-sm-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-sm-pull-0 {
+ right: auto;
+ }
+ .col-sm-push-12 {
+ left: 100%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666667%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666667%;
+ }
+ .col-sm-push-7 {
+ left: 58.33333333%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666667%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-2 {
+ left: 16.66666667%;
+ }
+ .col-sm-push-1 {
+ left: 8.33333333%;
+ }
+ .col-sm-push-0 {
+ left: auto;
+ }
+ .col-sm-offset-12 {
+ margin-left: 100%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-sm-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 992px) {
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ float: left;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666667%;
+ }
+ .col-md-10 {
+ width: 83.33333333%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666667%;
+ }
+ .col-md-7 {
+ width: 58.33333333%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.66666667%;
+ }
+ .col-md-1 {
+ width: 8.33333333%;
+ }
+ .col-md-pull-12 {
+ right: 100%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-md-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-md-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-md-pull-0 {
+ right: auto;
+ }
+ .col-md-push-12 {
+ left: 100%;
+ }
+ .col-md-push-11 {
+ left: 91.66666667%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-8 {
+ left: 66.66666667%;
+ }
+ .col-md-push-7 {
+ left: 58.33333333%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-5 {
+ left: 41.66666667%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-2 {
+ left: 16.66666667%;
+ }
+ .col-md-push-1 {
+ left: 8.33333333%;
+ }
+ .col-md-push-0 {
+ left: auto;
+ }
+ .col-md-offset-12 {
+ margin-left: 100%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 1200px) {
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ float: left;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666667%;
+ }
+ .col-lg-10 {
+ width: 83.33333333%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666667%;
+ }
+ .col-lg-7 {
+ width: 58.33333333%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.66666667%;
+ }
+ .col-lg-1 {
+ width: 8.33333333%;
+ }
+ .col-lg-pull-12 {
+ right: 100%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-lg-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-lg-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-lg-pull-0 {
+ right: auto;
+ }
+ .col-lg-push-12 {
+ left: 100%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666667%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666667%;
+ }
+ .col-lg-push-7 {
+ left: 58.33333333%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666667%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-2 {
+ left: 16.66666667%;
+ }
+ .col-lg-push-1 {
+ left: 8.33333333%;
+ }
+ .col-lg-push-0 {
+ left: auto;
+ }
+ .col-lg-offset-12 {
+ margin-left: 100%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0%;
+ }
+}
+table {
+ background-color: transparent;
+}
+caption {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ color: #999999;
+ text-align: left;
+}
+th {
+ text-align: left;
+}
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 10px;
+ line-height: 1.66666667;
+ vertical-align: top;
+ border-top: 1px solid #d1d1d1;
+}
+.table > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #d1d1d1;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+ border-top: 0;
+}
+.table > tbody + tbody {
+ border-top: 2px solid #d1d1d1;
+}
+.table .table {
+ background-color: #ffffff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+ padding: 5px;
+}
+.table-bordered {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: #f5f5f5;
+}
+.table-hover > tbody > tr:hover {
+ background-color: #d5ecf9;
+}
+table col[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-column;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-cell;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+ background-color: #d5ecf9;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+ background-color: #bfe2f6;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+ background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+ background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+ background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+ background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+ background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+ background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+ background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+ background-color: #ebcccc;
+}
+.table-responsive {
+ overflow-x: auto;
+ min-height: 0.01%;
+}
+@media screen and (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid #d1d1d1;
+ }
+ .table-responsive > .table {
+ margin-bottom: 0;
+ }
+ .table-responsive > .table > thead > tr > th,
+ .table-responsive > .table > tbody > tr > th,
+ .table-responsive > .table > tfoot > tr > th,
+ .table-responsive > .table > thead > tr > td,
+ .table-responsive > .table > tbody > tr > td,
+ .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+ }
+ .table-responsive > .table-bordered {
+ border: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+ }
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+ }
+}
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+ min-width: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 18px;
+ line-height: inherit;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+label {
+ display: inline-block;
+ max-width: 100%;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ line-height: normal;
+}
+input[type="file"] {
+ display: block;
+}
+input[type="range"] {
+ display: block;
+ width: 100%;
+}
+select[multiple],
+select[size] {
+ height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+output {
+ display: block;
+ padding-top: 3px;
+ font-size: 12px;
+ line-height: 1.66666667;
+ color: #333333;
+}
+.form-control {
+ display: block;
+ width: 100%;
+ height: 26px;
+ padding: 2px 6px;
+ font-size: 12px;
+ line-height: 1.66666667;
+ color: #333333;
+ background-color: #ffffff;
+ background-image: none;
+ border: 1px solid #bababa;
+ border-radius: 1px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.form-control::-moz-placeholder {
+ color: #999999;
+ opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+ color: #999999;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999999;
+}
+.form-control:-moz-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control::-moz-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control:-ms-input-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999999;
+ font-style: italic;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ background-color: #f8f8f8;
+ opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+}
+textarea.form-control {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ input[type="date"].form-control,
+ input[type="time"].form-control,
+ input[type="datetime-local"].form-control,
+ input[type="month"].form-control {
+ line-height: 26px;
+ }
+ input[type="date"].input-sm,
+ input[type="time"].input-sm,
+ input[type="datetime-local"].input-sm,
+ input[type="month"].input-sm,
+ .input-group-sm input[type="date"],
+ .input-group-sm input[type="time"],
+ .input-group-sm input[type="datetime-local"],
+ .input-group-sm input[type="month"] {
+ line-height: 22px;
+ }
+ input[type="date"].input-lg,
+ input[type="time"].input-lg,
+ input[type="datetime-local"].input-lg,
+ input[type="month"].input-lg,
+ .input-group-lg input[type="date"],
+ .input-group-lg input[type="time"],
+ .input-group-lg input[type="datetime-local"],
+ .input-group-lg input[type="month"] {
+ line-height: 33px;
+ }
+}
+.form-group {
+ margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ position: absolute;
+ margin-left: -20px;
+ margin-top: 4px \9;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+ position: relative;
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ vertical-align: middle;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
+}
+.form-control-static {
+ padding-top: 3px;
+ padding-bottom: 3px;
+ margin-bottom: 0;
+ min-height: 32px;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-sm {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+select.input-sm {
+ height: 22px;
+ line-height: 22px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+ height: auto;
+}
+.form-group-sm .form-control {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+.form-group-sm select.form-control {
+ height: 22px;
+ line-height: 22px;
+}
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+ height: auto;
+}
+.form-group-sm .form-control-static {
+ height: 22px;
+ min-height: 31px;
+ padding: 3px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+}
+.input-lg {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+select.input-lg {
+ height: 33px;
+ line-height: 33px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+ height: auto;
+}
+.form-group-lg .form-control {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+.form-group-lg select.form-control {
+ height: 33px;
+ line-height: 33px;
+}
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+ height: auto;
+}
+.form-group-lg .form-control-static {
+ height: 33px;
+ min-height: 34px;
+ padding: 7px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+}
+.has-feedback {
+ position: relative;
+}
+.has-feedback .form-control {
+ padding-right: 32.5px;
+}
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 26px;
+ height: 26px;
+ line-height: 26px;
+ text-align: center;
+ pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+ width: 33px;
+ height: 33px;
+ line-height: 33px;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+ width: 22px;
+ height: 22px;
+ line-height: 22px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+ color: #3c763d;
+}
+.has-success .form-control {
+ border-color: #3c763d;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+ color: #3c763d;
+ border-color: #3c763d;
+ background-color: #dff0d8;
+}
+.has-success .form-control-feedback {
+ color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+ color: #ec7a08;
+}
+.has-warning .form-control {
+ border-color: #ec7a08;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-warning .form-control:focus {
+ border-color: #bb6106;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+}
+.has-warning .input-group-addon {
+ color: #ec7a08;
+ border-color: #ec7a08;
+ background-color: #fcf8e3;
+}
+.has-warning .form-control-feedback {
+ color: #ec7a08;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+ color: #a94442;
+}
+.has-error .form-control {
+ border-color: #a94442;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-error .form-control:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+ color: #a94442;
+ border-color: #a94442;
+ background-color: #f2dede;
+}
+.has-error .form-control-feedback {
+ color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+ top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+ top: 0;
+}
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
+}
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .form-inline .form-control-static {
+ display: inline-block;
+ }
+ .form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .form-inline .input-group .input-group-addon,
+ .form-inline .input-group .input-group-btn,
+ .form-inline .input-group .form-control {
+ width: auto;
+ }
+ .form-inline .input-group > .form-control {
+ width: 100%;
+ }
+ .form-inline .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio label,
+ .form-inline .checkbox label {
+ padding-left: 0;
+ }
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .form-inline .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 3px;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 23px;
+}
+.form-horizontal .form-group {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ text-align: right;
+ margin-bottom: 0;
+ padding-top: 3px;
+ }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+ right: 20px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-lg .control-label {
+ padding-top: 8.9999998px;
+ font-size: 14px;
+ }
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 3px;
+ font-size: 11px;
+ }
+}
+.btn {
+ display: inline-block;
+ margin-bottom: 0;
+ font-weight: 600;
+ text-align: center;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ background-image: none;
+ border: 1px solid transparent;
+ white-space: nowrap;
+ padding: 2px 6px;
+ font-size: 12px;
+ line-height: 1.66666667;
+ border-radius: 1px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+ color: #4d5258;
+ text-decoration: none;
+}
+.btn:active,
+.btn.active {
+ outline: 0;
+ background-image: none;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ cursor: not-allowed;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+ pointer-events: none;
+}
+.btn-default {
+ color: #4d5258;
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.btn-default:focus,
+.btn-default.focus {
+ color: #4d5258;
+ background-color: #d5d5d5;
+ border-color: #777777;
+}
+.btn-default:hover {
+ color: #4d5258;
+ background-color: #d5d5d5;
+ border-color: #989898;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ color: #4d5258;
+ background-color: #d5d5d5;
+ border-color: #989898;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+ color: #4d5258;
+ background-color: #c3c3c3;
+ border-color: #777777;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.btn-default .badge {
+ color: #eeeeee;
+ background-color: #4d5258;
+}
+.btn-primary {
+ color: #ffffff;
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00141d;
+}
+.btn-primary:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+ color: #ffffff;
+ background-color: #004d78;
+ border-color: #00141d;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.btn-primary .badge {
+ color: #0085cf;
+ background-color: #ffffff;
+}
+.btn-success {
+ color: #ffffff;
+ background-color: #3f9c35;
+ border-color: #37892f;
+}
+.btn-success:focus,
+.btn-success.focus {
+ color: #ffffff;
+ background-color: #307628;
+ border-color: #112a0e;
+}
+.btn-success:hover {
+ color: #ffffff;
+ background-color: #307628;
+ border-color: #255b1f;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ color: #ffffff;
+ background-color: #307628;
+ border-color: #255b1f;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+ color: #ffffff;
+ background-color: #255b1f;
+ border-color: #112a0e;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ background-image: none;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #3f9c35;
+ border-color: #37892f;
+}
+.btn-success .badge {
+ color: #3f9c35;
+ background-color: #ffffff;
+}
+.btn-info {
+ color: #ffffff;
+ background-color: #006e9c;
+ border-color: #005c83;
+}
+.btn-info:focus,
+.btn-info.focus {
+ color: #ffffff;
+ background-color: #004a69;
+ border-color: #000203;
+}
+.btn-info:hover {
+ color: #ffffff;
+ background-color: #004a69;
+ border-color: #003145;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ color: #ffffff;
+ background-color: #004a69;
+ border-color: #003145;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+ color: #ffffff;
+ background-color: #003145;
+ border-color: #000203;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ background-image: none;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #006e9c;
+ border-color: #005c83;
+}
+.btn-info .badge {
+ color: #006e9c;
+ background-color: #ffffff;
+}
+.btn-warning {
+ color: #ffffff;
+ background-color: #ec7a08;
+ border-color: #d36d07;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+ color: #ffffff;
+ background-color: #bb6106;
+ border-color: #582e03;
+}
+.btn-warning:hover {
+ color: #ffffff;
+ background-color: #bb6106;
+ border-color: #984f05;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ color: #ffffff;
+ background-color: #bb6106;
+ border-color: #984f05;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+ color: #ffffff;
+ background-color: #984f05;
+ border-color: #582e03;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ background-image: none;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #ec7a08;
+ border-color: #d36d07;
+}
+.btn-warning .badge {
+ color: #ec7a08;
+ background-color: #ffffff;
+}
+.btn-danger {
+ color: #ffffff;
+ background-color: #a30000;
+ border-color: #781919;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+ color: #ffffff;
+ background-color: #700000;
+ border-color: #0e0303;
+}
+.btn-danger:hover {
+ color: #ffffff;
+ background-color: #700000;
+ border-color: #450e0e;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ color: #ffffff;
+ background-color: #700000;
+ border-color: #450e0e;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+ color: #ffffff;
+ background-color: #4c0000;
+ border-color: #0e0303;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #a30000;
+ border-color: #781919;
+}
+.btn-danger .badge {
+ color: #a30000;
+ background-color: #ffffff;
+}
+.btn-link {
+ color: #0099d3;
+ font-weight: normal;
+ border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+ color: #00618a;
+ text-decoration: underline;
+ background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #999999;
+ text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+ padding: 1px 5px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ display: none;
+}
+.collapse.in {
+ display: block;
+}
+tr.collapse.in {
+ display: table-row;
+}
+tbody.collapse.in {
+ display: table-row-group;
+}
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition-property: height, visibility;
+ transition-property: height, visibility;
+ -webkit-transition-duration: 0.35s;
+ transition-duration: 0.35s;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
+}
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 0 dashed;
+ border-top: 0 solid \9;
+ border-right: 0 solid transparent;
+ border-left: 0 solid transparent;
+}
+.dropup,
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle:focus {
+ outline: 0;
+}
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ font-size: 12px;
+ text-align: left;
+ background-color: #ffffff;
+ border: 1px solid #b6b6b6;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ margin: 9px 0;
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 4px 1px;
+ overflow: hidden;
+}
+.dropdown-menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.66666667;
+ color: #333333;
+ white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ text-decoration: none;
+ color: #4d5258;
+ background-color: #d4edfa;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ text-decoration: none;
+ outline: 0;
+ background-color: #0099d3;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #999999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ cursor: not-allowed;
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.open > a {
+ outline: 0;
+}
+.dropdown-menu-right {
+ left: auto;
+ right: 0;
+}
+.dropdown-menu-left {
+ left: 0;
+ right: auto;
+}
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 11px;
+ line-height: 1.66666667;
+ color: #999999;
+ white-space: nowrap;
+}
+.dropdown-backdrop {
+ position: fixed;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+ z-index: 990;
+}
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 0 dashed;
+ border-bottom: 0 solid \9;
+ content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+ .navbar-right .dropdown-menu {
+ left: auto;
+ right: 0;
+ }
+ .navbar-right .dropdown-menu-left {
+ left: 0;
+ right: auto;
+ }
+}
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+ margin-left: -1px;
+}
+.btn-toolbar {
+ margin-left: -5px;
+}
+.btn-toolbar .btn,
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+ float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+ margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-left: 8px;
+ padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn .caret {
+ margin-left: 0;
+}
+.btn-lg .caret {
+ border-width: 0 0 0;
+ border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+ border-width: 0 0 0;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-top-right-radius: 1px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-bottom-left-radius: 1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+ float: none;
+ display: table-cell;
+ width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+ width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+ left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+.input-group {
+ position: relative;
+ display: table;
+ border-collapse: separate;
+}
+.input-group[class*="col-"] {
+ float: none;
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-group .form-control {
+ position: relative;
+ z-index: 2;
+ float: left;
+ width: 100%;
+ margin-bottom: 0;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ height: 33px;
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+ border-radius: 1px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+ height: 33px;
+ line-height: 33px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ height: 22px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 1px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+ height: 22px;
+ line-height: 22px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+.input-group-addon {
+ padding: 2px 6px;
+ font-size: 12px;
+ font-weight: normal;
+ line-height: 1;
+ color: #333333;
+ text-align: center;
+ background-color: #eeeeee;
+ border: 1px solid #bababa;
+ border-radius: 1px;
+}
+.input-group-addon.input-sm {
+ padding: 2px 6px;
+ font-size: 11px;
+ border-radius: 1px;
+}
+.input-group-addon.input-lg {
+ padding: 6px 10px;
+ font-size: 14px;
+ border-radius: 1px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.input-group-addon:first-child {
+ border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.input-group-addon:last-child {
+ border-left: 0;
+}
+.input-group-btn {
+ position: relative;
+ font-size: 0;
+ white-space: nowrap;
+}
+.input-group-btn > .btn {
+ position: relative;
+}
+.input-group-btn > .btn + .btn {
+ margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+ z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+ margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+ z-index: 2;
+ margin-left: -1px;
+}
+.nav {
+ margin-bottom: 0;
+ padding-left: 0;
+ list-style: none;
+}
+.nav > li {
+ position: relative;
+ display: block;
+}
+.nav > li > a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+.nav > li.disabled > a {
+ color: #999999;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #999999;
+ text-decoration: none;
+ background-color: transparent;
+ cursor: not-allowed;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #eeeeee;
+ border-color: #0099d3;
+}
+.nav .nav-divider {
+ margin: 9px 0;
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 4px 1px;
+ overflow: hidden;
+}
+.nav > li > a > img {
+ max-width: none;
+}
+.nav-tabs {
+ border-bottom: 1px solid #e9e8e8;
+}
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ margin-right: 2px;
+ line-height: 1.66666667;
+ border: 1px solid transparent;
+ border-radius: 1px 1px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: transparent transparent #e9e8e8;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #0099d3;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-bottom-color: transparent;
+ cursor: default;
+}
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-tabs.nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs.nav-justified > li > a {
+ margin-right: 0;
+ border-radius: 1px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+ border: 1px solid #e9e8e8;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li > a {
+ border-bottom: 1px solid #e9e8e8;
+ border-radius: 1px 1px 0 0;
+ }
+ .nav-tabs.nav-justified > .active > a,
+ .nav-tabs.nav-justified > .active > a:hover,
+ .nav-tabs.nav-justified > .active > a:focus {
+ border-bottom-color: #ffffff;
+ }
+}
+.nav-pills > li {
+ float: left;
+}
+.nav-pills > li > a {
+ border-radius: 1px;
+}
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ color: #ffffff;
+ background-color: #00a8e1;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li + li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+.nav-justified {
+ width: 100%;
+}
+.nav-justified > li {
+ float: none;
+}
+.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+ margin-right: 0;
+ border-radius: 1px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+ border: 1px solid #e9e8e8;
+}
+@media (min-width: 768px) {
+ .nav-tabs-justified > li > a {
+ border-bottom: 1px solid #e9e8e8;
+ border-radius: 1px 1px 0 0;
+ }
+ .nav-tabs-justified > .active > a,
+ .nav-tabs-justified > .active > a:hover,
+ .nav-tabs-justified > .active > a:focus {
+ border-bottom-color: #ffffff;
+ }
+}
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar {
+ position: relative;
+ min-height: 50px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 1px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+.navbar-collapse {
+ overflow-x: visible;
+ padding-right: 20px;
+ padding-left: 20px;
+ border-top: 1px solid transparent;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+ -webkit-overflow-scrolling: touch;
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+ }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+ margin-right: -20px;
+ margin-left: -20px;
+}
+@media (min-width: 768px) {
+ .container > .navbar-header,
+ .container-fluid > .navbar-header,
+ .container > .navbar-collapse,
+ .container-fluid > .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+.navbar-static-top {
+ z-index: 1000;
+ border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+@media (min-width: 768px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0;
+ border-width: 1px 0 0;
+}
+.navbar-brand {
+ float: left;
+ padding: 15px 20px;
+ font-size: 14px;
+ line-height: 20px;
+ height: 50px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
+}
+.navbar-brand > img {
+ display: block;
+}
+@media (min-width: 768px) {
+ .navbar > .container .navbar-brand,
+ .navbar > .container-fluid .navbar-brand {
+ margin-left: -20px;
+ }
+}
+.navbar-toggle {
+ position: relative;
+ float: right;
+ margin-right: 20px;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 1px;
+}
+.navbar-toggle:focus {
+ outline: 0;
+}
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+.navbar-nav {
+ margin: 7.5px -20px;
+}
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 20px;
+}
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ }
+}
+.navbar-form {
+ margin-left: -20px;
+ margin-right: -20px;
+ padding: 10px 20px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control-static {
+ display: inline-block;
+ }
+ .navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .navbar-form .input-group .input-group-addon,
+ .navbar-form .input-group .input-group-btn,
+ .navbar-form .input-group .form-control {
+ width: auto;
+ }
+ .navbar-form .input-group > .form-control {
+ width: 100%;
+ }
+ .navbar-form .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio label,
+ .navbar-form .checkbox label {
+ padding-left: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .navbar-form .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+@media (max-width: 767px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+ .navbar-form .form-group:last-child {
+ margin-bottom: 0;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-form {
+ width: auto;
+ border: 0;
+ margin-left: 0;
+ margin-right: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+}
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ margin-bottom: 0;
+ border-top-right-radius: 1px;
+ border-top-left-radius: 1px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.navbar-btn {
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+.navbar-btn.btn-sm {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-btn.btn-xs {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-text {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+ .navbar-text {
+ float: left;
+ margin-left: 20px;
+ margin-right: 20px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-left {
+ float: left !important;
+ float: left;
+ }
+ .navbar-right {
+ float: right !important;
+ float: right;
+ margin-right: -20px;
+ }
+ .navbar-right ~ .navbar-right {
+ margin-right: 0;
+ }
+}
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+ color: #777777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
+}
+.navbar-default .navbar-text {
+ color: #777777;
+}
+.navbar-default .navbar-nav > li > a {
+ color: #777777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+ border-color: #dddddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #dddddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #888888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ background-color: #e7e7e7;
+ color: #555555;
+}
+@media (max-width: 767px) {
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777777;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+ }
+}
+.navbar-default .navbar-link {
+ color: #777777;
+}
+.navbar-default .navbar-link:hover {
+ color: #333333;
+}
+.navbar-default .btn-link {
+ color: #777777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+ color: #333333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #cccccc;
+}
+.navbar-inverse {
+ background-color: #222222;
+ border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-nav > li > a {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+ border-color: #333333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #ffffff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+ background-color: #080808;
+ color: #ffffff;
+}
+@media (max-width: 767px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #bfbfbf;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+ }
+}
+.navbar-inverse .navbar-link {
+ color: #bfbfbf;
+}
+.navbar-inverse .navbar-link:hover {
+ color: #ffffff;
+}
+.navbar-inverse .btn-link {
+ color: #bfbfbf;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+ color: #ffffff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444444;
+}
+.breadcrumb {
+ padding: 8px 15px;
+ margin-bottom: 20px;
+ list-style: none;
+ background-color: transparent;
+ border-radius: 1px;
+}
+.breadcrumb > li {
+ display: inline-block;
+}
+.breadcrumb > li + li:before {
+ content: "\f105\00a0";
+ padding: 0 5px;
+ color: #4d5258;
+}
+.breadcrumb > .active {
+ color: #4d5258;
+}
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 1px;
+}
+.pagination > li {
+ display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 2px 6px;
+ line-height: 1.66666667;
+ text-decoration: none;
+ color: #0099d3;
+ background-color: #f5f5f5;
+ border: 1px solid #bbbbbb;
+ margin-left: -1px;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ z-index: 3;
+ color: #00618a;
+ background-color: #ededed;
+ border-color: #dddddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #00a8e1;
+ border-color: #00a8e1;
+ cursor: default;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #999999;
+ background-color: #ffffff;
+ border-color: #dddddd;
+ cursor: not-allowed;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 6px 10px;
+ font-size: 14px;
+ line-height: 1.3333333;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pager {
+ padding-left: 0;
+ margin: 20px 0;
+ list-style: none;
+ text-align: center;
+}
+.pager li {
+ display: inline;
+}
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #f5f5f5;
+ border: 1px solid #bbbbbb;
+ border-radius: 0;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #ededed;
+}
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #969696;
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+}
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #ffffff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.label:empty {
+ display: none;
+}
+.btn .label {
+ position: relative;
+ top: -1px;
+}
+.label-default {
+ background-color: #999999;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #808080;
+}
+.label-primary {
+ background-color: #00a8e1;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #0082ae;
+}
+.label-success {
+ background-color: #3f9c35;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #307628;
+}
+.label-info {
+ background-color: #006e9c;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #004a69;
+}
+.label-warning {
+ background-color: #ec7a08;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #bb6106;
+}
+.label-danger {
+ background-color: #cc0000;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #990000;
+}
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 11px;
+ font-weight: bold;
+ color: #ffffff;
+ line-height: 1;
+ vertical-align: middle;
+ white-space: nowrap;
+ text-align: center;
+ background-color: #999999;
+ border-radius: 1px;
+}
+.badge:empty {
+ display: none;
+}
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+ top: 0;
+ padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+ color: #0099d3;
+ background-color: #ffffff;
+}
+.list-group-item > .badge {
+ float: right;
+}
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
+}
+.jumbotron {
+ padding-top: 30px;
+ padding-bottom: 30px;
+ margin-bottom: 30px;
+ color: inherit;
+ background-color: #eeeeee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+ color: inherit;
+}
+.jumbotron p {
+ margin-bottom: 15px;
+ font-size: 18px;
+ font-weight: 200;
+}
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+ border-radius: 1px;
+}
+.jumbotron .container {
+ max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding-top: 48px;
+ padding-bottom: 48px;
+ }
+ .container .jumbotron,
+ .container-fluid .jumbotron {
+ padding-left: 60px;
+ padding-right: 60px;
+ }
+ .jumbotron h1,
+ .jumbotron .h1 {
+ font-size: 54px;
+ }
+}
+.thumbnail {
+ display: block;
+ padding: 4px;
+ margin-bottom: 20px;
+ line-height: 1.66666667;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 1px;
+ -webkit-transition: border 0.2s ease-in-out;
+ -o-transition: border 0.2s ease-in-out;
+ transition: border 0.2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+ margin-left: auto;
+ margin-right: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+ border-color: #0099d3;
+}
+.thumbnail .caption {
+ padding: 9px;
+ color: #333333;
+}
+.alert {
+ padding: 7px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 1px;
+}
+.alert h4 {
+ margin-top: 0;
+ color: inherit;
+}
+.alert .alert-link {
+ font-weight: 500;
+}
+.alert > p,
+.alert > ul {
+ margin-bottom: 0;
+}
+.alert > p + p {
+ margin-top: 5px;
+}
+.alert-dismissable,
+.alert-dismissible {
+ padding-right: 27px;
+}
+.alert-dismissable .close,
+.alert-dismissible .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
+}
+.alert-success {
+ background-color: #ffffff;
+ border-color: #3f9c35;
+ color: #333333;
+}
+.alert-success hr {
+ border-top-color: #37892f;
+}
+.alert-success .alert-link {
+ color: #1a1a1a;
+}
+.alert-info {
+ background-color: #ffffff;
+ border-color: #cccccc;
+ color: #333333;
+}
+.alert-info hr {
+ border-top-color: #bfbfbf;
+}
+.alert-info .alert-link {
+ color: #1a1a1a;
+}
+.alert-warning {
+ background-color: #ffffff;
+ border-color: #ec7a08;
+ color: #333333;
+}
+.alert-warning hr {
+ border-top-color: #d36d07;
+}
+.alert-warning .alert-link {
+ color: #1a1a1a;
+}
+.alert-danger {
+ background-color: #ffffff;
+ border-color: #cc0000;
+ color: #333333;
+}
+.alert-danger hr {
+ border-top-color: #b30000;
+}
+.alert-danger .alert-link {
+ color: #1a1a1a;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+.progress {
+ overflow: hidden;
+ height: 20px;
+ margin-bottom: 20px;
+ background-color: #ededed;
+ border-radius: 1px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+.progress-bar {
+ float: left;
+ width: 0%;
+ height: 100%;
+ font-size: 11px;
+ line-height: 20px;
+ color: #ffffff;
+ text-align: center;
+ background-color: #00a8e1;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+ background-color: #3f9c35;
+}
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.progress-bar-info {
+ background-color: #006e9c;
+}
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.progress-bar-warning {
+ background-color: #ec7a08;
+}
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.progress-bar-danger {
+ background-color: #cc0000;
+}
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+ background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0.15) 25%, rgba(0, 0, 0, 0.15) 26%, transparent 27%, transparent 49%, rgba(0, 0, 0, 0.15) 50%, rgba(0, 0, 0, 0.15) 51%, transparent 52%, transparent 74%, rgba(0, 0, 0, 0.15) 75%, rgba(0, 0, 0, 0.15) 76%, transparent 77%);
+}
+.media {
+ margin-top: 15px;
+}
+.media:first-child {
+ margin-top: 0;
+}
+.media,
+.media-body {
+ zoom: 1;
+ overflow: hidden;
+}
+.media-body {
+ width: 10000px;
+}
+.media-object {
+ display: block;
+}
+.media-object.img-thumbnail {
+ max-width: none;
+}
+.media-right,
+.media > .pull-right {
+ padding-left: 10px;
+}
+.media-left,
+.media > .pull-left {
+ padding-right: 10px;
+}
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+.media-middle {
+ vertical-align: middle;
+}
+.media-bottom {
+ vertical-align: bottom;
+}
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
+.list-group {
+ margin-bottom: 20px;
+ padding-left: 0;
+}
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+ background-color: #ffffff;
+ border: 1px solid #f2f2f2;
+}
+.list-group-item:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+a.list-group-item,
+button.list-group-item {
+ color: #555555;
+}
+a.list-group-item .list-group-item-heading,
+button.list-group-item .list-group-item-heading {
+ color: #333333;
+}
+a.list-group-item:hover,
+button.list-group-item:hover,
+a.list-group-item:focus,
+button.list-group-item:focus {
+ text-decoration: none;
+ color: #555555;
+ background-color: #d4edfa;
+}
+button.list-group-item {
+ width: 100%;
+ text-align: left;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+ background-color: #eeeeee;
+ color: #999999;
+ cursor: not-allowed;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+ color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+ color: #999999;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #00a8e1;
+ border-color: #00a8e1;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+ color: inherit;
+}
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+ color: #aeeaff;
+}
+.list-group-item-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+}
+a.list-group-item-success,
+button.list-group-item-success {
+ color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-success:hover,
+button.list-group-item-success:hover,
+a.list-group-item-success:focus,
+button.list-group-item-success:focus {
+ color: #3c763d;
+ background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+button.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+button.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus,
+button.list-group-item-success.active:focus {
+ color: #fff;
+ background-color: #3c763d;
+ border-color: #3c763d;
+}
+.list-group-item-info {
+ color: #31708f;
+ background-color: #d9edf7;
+}
+a.list-group-item-info,
+button.list-group-item-info {
+ color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-info:hover,
+button.list-group-item-info:hover,
+a.list-group-item-info:focus,
+button.list-group-item-info:focus {
+ color: #31708f;
+ background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+button.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+button.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus,
+button.list-group-item-info.active:focus {
+ color: #fff;
+ background-color: #31708f;
+ border-color: #31708f;
+}
+.list-group-item-warning {
+ color: #ec7a08;
+ background-color: #fcf8e3;
+}
+a.list-group-item-warning,
+button.list-group-item-warning {
+ color: #ec7a08;
+}
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-warning:hover,
+button.list-group-item-warning:hover,
+a.list-group-item-warning:focus,
+button.list-group-item-warning:focus {
+ color: #ec7a08;
+ background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+button.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+button.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus,
+button.list-group-item-warning.active:focus {
+ color: #fff;
+ background-color: #ec7a08;
+ border-color: #ec7a08;
+}
+.list-group-item-danger {
+ color: #a94442;
+ background-color: #f2dede;
+}
+a.list-group-item-danger,
+button.list-group-item-danger {
+ color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-danger:hover,
+button.list-group-item-danger:hover,
+a.list-group-item-danger:focus,
+button.list-group-item-danger:focus {
+ color: #a94442;
+ background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+button.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+button.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus,
+button.list-group-item-danger.active:focus {
+ color: #fff;
+ background-color: #a94442;
+ border-color: #a94442;
+}
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+.panel {
+ margin-bottom: 20px;
+ background-color: #ffffff;
+ border: 1px solid transparent;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 14px;
+ color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+ color: inherit;
+}
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #cecdcd;
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+ margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+ border-width: 1px 0;
+ border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+ border-top: 0;
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+ border-bottom: 0;
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+.list-group + .panel-footer {
+ border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+ margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+ border-top-left-radius: 0px;
+ border-top-right-radius: 0px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+ border-top-left-radius: 0px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+ border-top-right-radius: 0px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+ border-bottom-left-radius: 0px;
+ border-bottom-right-radius: 0px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+ border-bottom-left-radius: 0px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+ border-bottom-right-radius: 0px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+ border-top: 1px solid #d1d1d1;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+ border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+ border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+ border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+ border-bottom: 0;
+}
+.panel > .table-responsive {
+ border: 0;
+ margin-bottom: 0;
+}
+.panel-group {
+ margin-bottom: 20px;
+}
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 1px;
+}
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+.panel-group .panel-heading {
+ border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+ border-top: 1px solid #cecdcd;
+}
+.panel-group .panel-footer {
+ border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #cecdcd;
+}
+.panel-default {
+ border-color: #dddddd;
+}
+.panel-default > .panel-heading {
+ color: #333333;
+ background-color: #f5f5f5;
+ border-color: #dddddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #dddddd;
+}
+.panel-default > .panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #dddddd;
+}
+.panel-primary {
+ border-color: #00a8e1;
+}
+.panel-primary > .panel-heading {
+ color: #ffffff;
+ background-color: #00a8e1;
+ border-color: #00a8e1;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #00a8e1;
+}
+.panel-primary > .panel-heading .badge {
+ color: #00a8e1;
+ background-color: #ffffff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #00a8e1;
+}
+.panel-success {
+ border-color: #3f9c35;
+}
+.panel-success > .panel-heading {
+ color: #ffffff;
+ background-color: #3f9c35;
+ border-color: #3f9c35;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #3f9c35;
+}
+.panel-success > .panel-heading .badge {
+ color: #3f9c35;
+ background-color: #ffffff;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #3f9c35;
+}
+.panel-info {
+ border-color: #006e9c;
+}
+.panel-info > .panel-heading {
+ color: #ffffff;
+ background-color: #006e9c;
+ border-color: #006e9c;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #006e9c;
+}
+.panel-info > .panel-heading .badge {
+ color: #006e9c;
+ background-color: #ffffff;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #006e9c;
+}
+.panel-warning {
+ border-color: #ec7a08;
+}
+.panel-warning > .panel-heading {
+ color: #ffffff;
+ background-color: #ec7a08;
+ border-color: #ec7a08;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ec7a08;
+}
+.panel-warning > .panel-heading .badge {
+ color: #ec7a08;
+ background-color: #ffffff;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ec7a08;
+}
+.panel-danger {
+ border-color: #cc0000;
+}
+.panel-danger > .panel-heading {
+ color: #ffffff;
+ background-color: #cc0000;
+ border-color: #cc0000;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #cc0000;
+}
+.panel-danger > .panel-heading .badge {
+ color: #cc0000;
+ background-color: #ffffff;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #cc0000;
+}
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
+ overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ height: 100%;
+ width: 100%;
+ border: 0;
+}
+.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 1px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+.well-lg {
+ padding: 24px;
+ border-radius: 1px;
+}
+.well-sm {
+ padding: 9px;
+ border-radius: 1px;
+}
+.close {
+ float: right;
+ font-size: 18px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.close:hover,
+.close:focus {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+.modal-open {
+ overflow: hidden;
+}
+.modal {
+ display: none;
+ overflow: hidden;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1050;
+ -webkit-overflow-scrolling: touch;
+ outline: 0;
+}
+.modal.fade .modal-dialog {
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+ -webkit-transition: -webkit-transform 0.3s ease-out;
+ -moz-transition: -moz-transform 0.3s ease-out;
+ -o-transition: -o-transform 0.3s ease-out;
+ transition: transform 0.3s ease-out;
+}
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px;
+}
+.modal-content {
+ position: relative;
+ background-color: #ffffff;
+ border: 1px solid #999999;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 1px;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ background-clip: padding-box;
+ outline: 0;
+}
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000000;
+}
+.modal-backdrop.fade {
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.modal-backdrop.in {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.modal-header {
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+ min-height: 16.66666667px;
+}
+.modal-header .close {
+ margin-top: -2px;
+}
+.modal-title {
+ margin: 0;
+ line-height: 1.66666667;
+}
+.modal-body {
+ position: relative;
+ padding: 15px;
+}
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+ margin-left: 5px;
+ margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
+}
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+@media (min-width: 768px) {
+ .modal-dialog {
+ width: 600px;
+ margin: 30px auto;
+ }
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ }
+ .modal-sm {
+ width: 300px;
+ }
+}
+@media (min-width: 992px) {
+ .modal-lg {
+ width: 900px;
+ }
+}
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.66666667;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ font-size: 11px;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.tooltip.in {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.tooltip.top {
+ margin-top: -3px;
+ padding: 8px 0;
+}
+.tooltip.right {
+ margin-left: 3px;
+ padding: 0 8px;
+}
+.tooltip.bottom {
+ margin-top: 3px;
+ padding: 8px 0;
+}
+.tooltip.left {
+ margin-left: -3px;
+ padding: 0 8px;
+}
+.tooltip-inner {
+ max-width: 220px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ background-color: #434343;
+ border-radius: 1px;
+}
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -8px;
+ border-width: 8px 8px 0;
+ border-top-color: #434343;
+}
+.tooltip.top-left .tooltip-arrow {
+ bottom: 0;
+ right: 8px;
+ margin-bottom: -8px;
+ border-width: 8px 8px 0;
+ border-top-color: #434343;
+}
+.tooltip.top-right .tooltip-arrow {
+ bottom: 0;
+ left: 8px;
+ margin-bottom: -8px;
+ border-width: 8px 8px 0;
+ border-top-color: #434343;
+}
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -8px;
+ border-width: 8px 8px 8px 0;
+ border-right-color: #434343;
+}
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -8px;
+ border-width: 8px 0 8px 8px;
+ border-left-color: #434343;
+}
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -8px;
+ border-width: 0 8px 8px;
+ border-bottom-color: #434343;
+}
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ right: 8px;
+ margin-top: -8px;
+ border-width: 0 8px 8px;
+ border-bottom-color: #434343;
+}
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ left: 8px;
+ margin-top: -8px;
+ border-width: 0 8px 8px;
+ border-bottom-color: #434343;
+}
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ max-width: 220px;
+ padding: 1px;
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.66666667;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ font-size: 12px;
+ background-color: #ffffff;
+ background-clip: padding-box;
+ border: 1px solid #cccccc;
+ border: 1px solid #bbbbbb;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+}
+.popover.top {
+ margin-top: -10px;
+}
+.popover.right {
+ margin-left: 10px;
+}
+.popover.bottom {
+ margin-top: 10px;
+}
+.popover.left {
+ margin-left: -10px;
+}
+.popover-title {
+ margin: 0;
+ padding: 8px 14px;
+ font-size: 12px;
+ background-color: #f5f5f5;
+ border-bottom: 1px solid #e8e8e8;
+ border-radius: 0px 0px 0 0;
+}
+.popover-content {
+ padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.popover > .arrow {
+ border-width: 11px;
+}
+.popover > .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+.popover.top > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: #bbbbbb;
+ bottom: -11px;
+}
+.popover.top > .arrow:after {
+ content: " ";
+ bottom: 1px;
+ margin-left: -10px;
+ border-bottom-width: 0;
+ border-top-color: #ffffff;
+}
+.popover.right > .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: #bbbbbb;
+}
+.popover.right > .arrow:after {
+ content: " ";
+ left: 1px;
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #ffffff;
+}
+.popover.bottom > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999999;
+ border-bottom-color: #bbbbbb;
+ top: -11px;
+}
+.popover.bottom > .arrow:after {
+ content: " ";
+ top: 1px;
+ margin-left: -10px;
+ border-top-width: 0;
+ border-bottom-color: #ffffff;
+}
+.popover.left > .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999999;
+ border-left-color: #bbbbbb;
+}
+.popover.left > .arrow:after {
+ content: " ";
+ right: 1px;
+ border-right-width: 0;
+ border-left-color: #ffffff;
+ bottom: -10px;
+}
+.carousel {
+ position: relative;
+}
+.carousel-inner {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+}
+.carousel-inner > .item {
+ display: none;
+ position: relative;
+ -webkit-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ line-height: 1;
+}
+@media all and (transform-3d), (-webkit-transform-3d) {
+ .carousel-inner > .item {
+ -webkit-transition: -webkit-transform 0.6s ease-in-out;
+ -moz-transition: -moz-transform 0.6s ease-in-out;
+ -o-transition: -o-transform 0.6s ease-in-out;
+ transition: transform 0.6s ease-in-out;
+ -webkit-backface-visibility: hidden;
+ -moz-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000px;
+ -moz-perspective: 1000px;
+ perspective: 1000px;
+ }
+ .carousel-inner > .item.next,
+ .carousel-inner > .item.active.right {
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.prev,
+ .carousel-inner > .item.active.left {
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.next.left,
+ .carousel-inner > .item.prev.right,
+ .carousel-inner > .item.active {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ left: 0;
+ }
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ display: block;
+}
+.carousel-inner > .active {
+ left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.carousel-inner > .next {
+ left: 100%;
+}
+.carousel-inner > .prev {
+ left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+ left: 0;
+}
+.carousel-inner > .active.left {
+ left: -100%;
+}
+.carousel-inner > .active.right {
+ left: 100%;
+}
+.carousel-control {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 15%;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+ font-size: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+}
+.carousel-control.right {
+ left: auto;
+ right: 0;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+}
+.carousel-control:hover,
+.carousel-control:focus {
+ outline: 0;
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ margin-top: -10px;
+ z-index: 5;
+ display: inline-block;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+ left: 50%;
+ margin-left: -10px;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+ right: 50%;
+ margin-right: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ line-height: 1;
+ font-family: serif;
+}
+.carousel-control .icon-prev:before {
+ content: '\2039';
+}
+.carousel-control .icon-next:before {
+ content: '\203a';
+}
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ margin-left: -30%;
+ padding-left: 0;
+ list-style: none;
+ text-align: center;
+}
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ border: 1px solid #ffffff;
+ border-radius: 10px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
+}
+.carousel-indicators .active {
+ margin: 0;
+ width: 12px;
+ height: 12px;
+ background-color: #ffffff;
+}
+.carousel-caption {
+ position: absolute;
+ left: 15%;
+ right: 15%;
+ bottom: 20px;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.carousel-caption .btn {
+ text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ font-size: 30px;
+ }
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .icon-prev {
+ margin-left: -15px;
+ }
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-next {
+ margin-right: -15px;
+ }
+ .carousel-caption {
+ left: 20%;
+ right: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-footer:before,
+.modal-footer:after {
+ content: " ";
+ display: table;
+}
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-footer:after {
+ clear: both;
+}
+.center-block {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+.pull-right {
+ float: right !important;
+}
+.pull-left {
+ float: left !important;
+}
+.hide {
+ display: none !important;
+}
+.show {
+ display: block !important;
+}
+.invisible {
+ visibility: hidden;
+}
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+.hidden {
+ display: none !important;
+}
+.affix {
+ position: fixed;
+}
+@-ms-viewport {
+ width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+ display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ table.visible-xs {
+ display: table !important;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-block {
+ display: block !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline {
+ display: inline !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ table.visible-sm {
+ display: table !important;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-block {
+ display: block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ table.visible-md {
+ display: table !important;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-block {
+ display: block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ table.visible-lg {
+ display: table !important;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-block {
+ display: block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+}
+.visible-print {
+ display: none !important;
+}
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ table.visible-print {
+ display: table !important;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
+}
+.visible-print-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-block {
+ display: block !important;
+ }
+}
+.visible-print-inline {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline {
+ display: inline !important;
+ }
+}
+.visible-print-inline-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline-block {
+ display: inline-block !important;
+ }
+}
+@media print {
+ .hidden-print {
+ display: none !important;
+ }
+}
+/*!
+ * Font Awesome 4.3.0 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('../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.eot?v=4.3.0');
+ src: url('../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.svg?v=4.3.0#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;
+ transform: translate(0, 0);
+}
+/* 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;
+}
+.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 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ 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 {
+ 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-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: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-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.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-genderless:before,
+.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-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-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";
+}
+.alert {
+ border-width: 2px;
+ padding-left: 34px;
+ position: relative;
+}
+.alert .alert-link {
+ color: #0099d3;
+}
+.alert .alert-link:hover {
+ color: #00618a;
+}
+.alert > .pficon {
+ font-size: 20px;
+ position: absolute;
+ left: 7px;
+ top: 7px;
+}
+.alert .pficon-info {
+ color: #72767b;
+}
+.alert-dismissable .close {
+ right: -16px;
+ top: 1px;
+}
+.badge {
+ margin-left: 6px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 6px;
+}
+.breadcrumb {
+ padding-left: 0;
+}
+.breadcrumb > .active strong {
+ font-weight: 600;
+}
+.breadcrumb > li {
+ display: inline;
+ /* IE8 */
+}
+.breadcrumb > li + li:before {
+ color: #999999;
+ content: "\f101";
+ font-family: "FontAwesome";
+ font-size: 11px;
+ padding: 0 9px 0 7px;
+}
+.btn {
+ -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
+}
+.btn:active {
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ background-color: #f8f8f8 !important;
+ background-image: none !important;
+ border-color: #d1d1d1 !important;
+ color: #969696 !important;
+ opacity: 1;
+}
+.btn.disabled:active,
+.btn[disabled]:active,
+fieldset[disabled] .btn:active {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn.disabled.btn-link,
+.btn[disabled].btn-link,
+fieldset[disabled] .btn.btn-link {
+ background-color: transparent !important;
+ border: 0;
+}
+.btn-danger {
+ background-color: #a30000;
+ background-image: -webkit-linear-gradient(top, #cc0000 0%, #a30000 100%);
+ background-image: -o-linear-gradient(top, #cc0000 0%, #a30000 100%);
+ background-image: linear-gradient(to bottom, #cc0000 0%, #a30000 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);
+ border-color: #781919;
+ color: #ffffff;
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ background-color: #a30000;
+ background-image: none;
+ border-color: #781919;
+ color: #ffffff;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open .dropdown-toggle.btn-danger.focus {
+ background-color: #8a0000;
+ border-color: #5a1313;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #a30000;
+ border-color: #781919;
+}
+.btn-default {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.btn-default:hover,
+.btn-default:focus,
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open .dropdown-toggle.btn-default.focus {
+ background-color: #e2e2e2;
+ border-color: #a5a5a5;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.btn-link,
+.btn-link:active {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-primary {
+ background-color: #0085cf;
+ background-image: -webkit-linear-gradient(top, #00a8e1 0%, #0085cf 100%);
+ background-image: -o-linear-gradient(top, #00a8e1 0%, #0085cf 100%);
+ background-image: linear-gradient(to bottom, #00a8e1 0%, #0085cf 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00a8e1', endColorstr='#ff0085cf', GradientType=0);
+ border-color: #006e9c;
+ color: #ffffff;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ background-color: #0085cf;
+ background-image: none;
+ border-color: #006e9c;
+ color: #ffffff;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open .dropdown-toggle.btn-primary.focus {
+ background-color: #0075b6;
+ border-color: #005578;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.btn-xs,
+.btn-group-xs .btn,
+.btn-group-xs > .btn {
+ font-weight: 400;
+}
+.caret {
+ font-family: "FontAwesome";
+ font-weight: normal;
+ height: 9px;
+ position: relative;
+ vertical-align: baseline;
+ width: 12px;
+}
+.caret:before {
+ bottom: 0;
+ content: "\f107";
+ left: 0;
+ line-height: 12px;
+ position: absolute;
+ text-align: center;
+ top: -1px;
+ right: 0;
+}
+.dropdown-menu .divider {
+ background-color: #e5e5e5;
+ height: 1px;
+ margin: 4px 1px;
+ overflow: hidden;
+}
+.dropdown-menu > li > a {
+ border-color: transparent;
+ border-style: solid;
+ border-width: 1px 0;
+ padding: 1px 10px;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ border-color: #b3d3e7;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dropdown-menu > li > a:active {
+ background-color: #0099d3;
+ border-color: #0076b7;
+ color: #ffffff !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ background-color: #0099d3 !important;
+ border-color: #0076b7 !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ border-color: transparent;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ border-color: transparent;
+}
+.dropdown-header {
+ padding-left: 10px;
+ padding-right: 10px;
+ text-transform: uppercase;
+}
+.btn-group > .dropdown-menu,
+.input-group-btn > .dropdown-menu {
+ margin-top: -1px;
+}
+.dropup .dropdown-menu {
+ margin-bottom: -1px;
+}
+.dropdown-submenu {
+ position: relative;
+}
+.dropdown-submenu:hover > a {
+ background-color: #d4edfa;
+ border-color: #b3d3e7;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+ display: block;
+}
+.dropdown-submenu.pull-left {
+ float: none !important;
+}
+.dropdown-submenu.pull-left > .dropdown-menu {
+ left: auto;
+ margin-left: 10px;
+ right: 100%;
+}
+.dropdown-submenu > a {
+ padding-right: 20px !important;
+}
+.dropdown-submenu > a:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 2px;
+}
+.dropdown-submenu > .dropdown-menu {
+ left: 100%;
+ margin-top: 0;
+ top: -6px;
+}
+.dropup .dropdown-submenu > .dropdown-menu {
+ bottom: -5px;
+ top: auto;
+}
+.open .dropdown-submenu.active > .dropdown-menu {
+ display: block;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ border-color: #d4d4d4 !important;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #969696;
+}
+.form-control:hover {
+ border-color: #7bb2dd;
+}
+.has-error .form-control:hover {
+ border-color: #843534;
+}
+.has-success .form-control:hover {
+ border-color: #2b542c;
+}
+.has-warning .form-control:hover {
+ border-color: #bb6106;
+}
+.input-group .input-group-btn .btn {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+label {
+ font-weight: 600;
+}
+.label {
+ border-radius: 0;
+ font-size: 100%;
+ font-weight: 600;
+}
+h1 .label,
+h2 .label,
+h3 .label,
+h4 .label,
+h5 .label,
+h6 .label {
+ font-size: 75%;
+}
+.list-group {
+ border-top: 1px solid #e9e8e8;
+}
+.list-group .list-group-item:first-child {
+ border-top: 0;
+}
+.list-group-item {
+ border-left: 0;
+ border-right: 0;
+}
+.list-group-item-heading {
+ font-weight: 700;
+}
+.modal-header {
+ background-color: #f8f8f8;
+ border-bottom: none;
+ padding: 10px 18px;
+}
+.modal-header .close {
+ margin-top: 2px;
+}
+.modal-title {
+ font-size: 13px;
+ font-weight: 700;
+}
+.modal-footer {
+ border-top: none;
+ margin-top: 15px;
+ padding: 14px 15px 15px;
+}
+.modal-footer > .btn {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+.modal-footer > .btn > .fa-angle-left {
+ margin-right: 5px;
+}
+.modal-footer > .btn > .fa-angle-right {
+ margin-left: 5px;
+}
+.pager li > a,
+.pager li > span {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+ font-weight: 600;
+ line-height: 22px;
+ padding: 2px 14px;
+}
+.pager li > a:hover,
+.pager li > span:hover,
+.pager li > a:focus,
+.pager li > span:focus,
+.pager li > a:active,
+.pager li > span:active,
+.pager li > a.active,
+.pager li > span.active,
+.open .dropdown-toggle.pager li > a,
+.open .dropdown-toggle.pager li > span {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.pager li > a:active,
+.pager li > span:active,
+.pager li > a.active,
+.pager li > span.active,
+.open .dropdown-toggle.pager li > a,
+.open .dropdown-toggle.pager li > span {
+ background-image: none;
+}
+.pager li > a:active:hover,
+.pager li > span:active:hover,
+.pager li > a.active:hover,
+.pager li > span.active:hover,
+.open .dropdown-toggle.pager li > a:hover,
+.open .dropdown-toggle.pager li > span:hover,
+.pager li > a:active:focus,
+.pager li > span:active:focus,
+.pager li > a.active:focus,
+.pager li > span.active:focus,
+.open .dropdown-toggle.pager li > a:focus,
+.open .dropdown-toggle.pager li > span:focus,
+.pager li > a:active.focus,
+.pager li > span:active.focus,
+.pager li > a.active.focus,
+.pager li > span.active.focus,
+.open .dropdown-toggle.pager li > a.focus,
+.open .dropdown-toggle.pager li > span.focus {
+ background-color: #e2e2e2;
+ border-color: #a5a5a5;
+}
+.pager li > a.disabled,
+.pager li > span.disabled,
+.pager li > a[disabled],
+.pager li > span[disabled],
+fieldset[disabled] .pager li > a,
+fieldset[disabled] .pager li > span,
+.pager li > a.disabled:hover,
+.pager li > span.disabled:hover,
+.pager li > a[disabled]:hover,
+.pager li > span[disabled]:hover,
+fieldset[disabled] .pager li > a:hover,
+fieldset[disabled] .pager li > span:hover,
+.pager li > a.disabled:focus,
+.pager li > span.disabled:focus,
+.pager li > a[disabled]:focus,
+.pager li > span[disabled]:focus,
+fieldset[disabled] .pager li > a:focus,
+fieldset[disabled] .pager li > span:focus,
+.pager li > a.disabled:active,
+.pager li > span.disabled:active,
+.pager li > a[disabled]:active,
+.pager li > span[disabled]:active,
+fieldset[disabled] .pager li > a:active,
+fieldset[disabled] .pager li > span:active,
+.pager li > a.disabled.active,
+.pager li > span.disabled.active,
+.pager li > a[disabled].active,
+.pager li > span[disabled].active,
+fieldset[disabled] .pager li > a.active,
+fieldset[disabled] .pager li > span.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.pager li > a > .i,
+.pager li > span > .i {
+ font-size: 18px;
+ vertical-align: top;
+ margin: 2px 0;
+}
+.pager li > a:hover > a:focus {
+ color: #4d5258;
+}
+.pager li a:active {
+ background-image: none;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ outline: 0;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > a:active,
+.pager .disabled > span {
+ background: #f5f5f5;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #969696;
+ cursor: default;
+}
+.pager .next > a > .i,
+.pager .next > span > .i {
+ margin-left: 5px;
+}
+.pager .previous > a > .i,
+.pager .previous > span > .i {
+ margin-right: 5px;
+}
+.pager-sm li > a,
+.pager-sm li > span {
+ font-weight: 400;
+ line-height: 16px;
+ padding: 1px 10px;
+}
+.pager-sm li > a > .i,
+.pager-sm li > span > .i {
+ font-size: 12px;
+}
+.pagination > li > a,
+.pagination > li > span {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+ cursor: default;
+ font-weight: 600;
+ padding: 2px 10px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus,
+.pagination > li > a:active,
+.pagination > li > span:active,
+.pagination > li > a.active,
+.pagination > li > span.active,
+.open .dropdown-toggle.pagination > li > a,
+.open .dropdown-toggle.pagination > li > span {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.pagination > li > a:active,
+.pagination > li > span:active,
+.pagination > li > a.active,
+.pagination > li > span.active,
+.open .dropdown-toggle.pagination > li > a,
+.open .dropdown-toggle.pagination > li > span {
+ background-image: none;
+}
+.pagination > li > a:active:hover,
+.pagination > li > span:active:hover,
+.pagination > li > a.active:hover,
+.pagination > li > span.active:hover,
+.open .dropdown-toggle.pagination > li > a:hover,
+.open .dropdown-toggle.pagination > li > span:hover,
+.pagination > li > a:active:focus,
+.pagination > li > span:active:focus,
+.pagination > li > a.active:focus,
+.pagination > li > span.active:focus,
+.open .dropdown-toggle.pagination > li > a:focus,
+.open .dropdown-toggle.pagination > li > span:focus,
+.pagination > li > a:active.focus,
+.pagination > li > span:active.focus,
+.pagination > li > a.active.focus,
+.pagination > li > span.active.focus,
+.open .dropdown-toggle.pagination > li > a.focus,
+.open .dropdown-toggle.pagination > li > span.focus {
+ background-color: #e2e2e2;
+ border-color: #a5a5a5;
+}
+.pagination > li > a.disabled,
+.pagination > li > span.disabled,
+.pagination > li > a[disabled],
+.pagination > li > span[disabled],
+fieldset[disabled] .pagination > li > a,
+fieldset[disabled] .pagination > li > span,
+.pagination > li > a.disabled:hover,
+.pagination > li > span.disabled:hover,
+.pagination > li > a[disabled]:hover,
+.pagination > li > span[disabled]:hover,
+fieldset[disabled] .pagination > li > a:hover,
+fieldset[disabled] .pagination > li > span:hover,
+.pagination > li > a.disabled:focus,
+.pagination > li > span.disabled:focus,
+.pagination > li > a[disabled]:focus,
+.pagination > li > span[disabled]:focus,
+fieldset[disabled] .pagination > li > a:focus,
+fieldset[disabled] .pagination > li > span:focus,
+.pagination > li > a.disabled:active,
+.pagination > li > span.disabled:active,
+.pagination > li > a[disabled]:active,
+.pagination > li > span[disabled]:active,
+fieldset[disabled] .pagination > li > a:active,
+fieldset[disabled] .pagination > li > span:active,
+.pagination > li > a.disabled.active,
+.pagination > li > span.disabled.active,
+.pagination > li > a[disabled].active,
+.pagination > li > span[disabled].active,
+fieldset[disabled] .pagination > li > a.active,
+fieldset[disabled] .pagination > li > span.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.pagination > li > a > .i,
+.pagination > li > span > .i {
+ font-size: 15px;
+ vertical-align: top;
+ margin: 2px 0;
+}
+.pagination > li > a:active,
+.pagination > li > span:active {
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ background-color: #eeeeee;
+ border-color: #bbbbbb;
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ color: #4d5258;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ cursor: default;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 1px;
+ border-top-left-radius: 1px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 1px;
+ border-top-right-radius: 1px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ font-weight: 400;
+}
+.pagination-sm > li > a > .i,
+.pagination-sm > li > span > .i {
+ font-size: 12px;
+ margin-top: 2px;
+}
+.panel-title {
+ font-weight: 700;
+}
+.panel-group .panel {
+ color: #4d5258;
+}
+.panel-group .panel + .panel {
+ margin-top: -1px;
+}
+.panel-group .panel-default {
+ border-color: #bebdbd;
+ border-top-color: #c4c3c3;
+}
+.panel-group .panel-heading {
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.panel-group .panel-heading + .panel-collapse .panel-body {
+ border-top: 1px solid #cecdcd;
+}
+.panel-group .panel-title {
+ font-weight: 500;
+ line-height: 1;
+}
+.panel-group .panel-title > a {
+ color: #4d5258;
+ font-weight: 600;
+}
+.panel-group .panel-title > a:before {
+ content: "\f107";
+ font-family: "FontAwesome";
+ font-size: 13px;
+ margin-right: 5px;
+ vertical-align: 0;
+}
+.panel-group .panel-title > a:focus {
+ outline: none;
+ text-decoration: none;
+}
+.panel-group .panel-title > a:hover {
+ text-decoration: none;
+}
+.panel-group .panel-title > a.collapsed:before {
+ content: "\f105";
+ margin-left: 4px;
+ margin-right: 7px;
+}
+.popover {
+ -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.08);
+ box-shadow: 0 2px 2px rgba(0, 0, 0, 0.08);
+ padding: 0;
+}
+.popover-content {
+ color: #4d5258;
+ line-height: 18px;
+ padding: 10px 14px;
+}
+.popover-title {
+ border-bottom: none;
+ border-radius: 0;
+ color: #4d5258;
+ font-size: 13px;
+ font-weight: 700;
+ min-height: 34px;
+}
+.popover-title .close {
+ height: 22px;
+ position: absolute;
+ right: 8px;
+ top: 6px;
+}
+.popover-title.closable {
+ padding-right: 30px;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+.progress {
+ -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.25);
+ box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.25);
+}
+.progress.progress-label-left,
+.progress.progress-label-top-right {
+ overflow: visible;
+ position: relative;
+}
+.progress.progress-label-left {
+ margin-left: 40px;
+}
+.progress.progress-sm {
+ height: 14px;
+ margin-bottom: 14px;
+}
+.progress.progress-xs {
+ height: 6px;
+ margin-bottom: 6px;
+}
+td > .progress:first-child:last-child {
+ margin-bottom: 0;
+ margin-top: 3px;
+}
+.progress-bar {
+ box-shadow: none;
+}
+.progress-label-left .progress-bar span,
+.progress-label-top-right .progress-bar span {
+ color: #333333;
+ font-size: 14px;
+ position: absolute;
+ text-align: right;
+}
+.progress-label-left .progress-bar span {
+ left: -40px;
+ top: 0;
+ width: 35px;
+}
+.progress-label-top-right .progress-bar span {
+ max-width: 25%;
+ overflow: hidden;
+ right: 0;
+ text-overflow: ellipsis;
+ top: -31px;
+ white-space: nowrap;
+}
+.progress-label-left.progress-sm .progress-bar span,
+.progress-label-top-right.progress-sm .progress-bar span {
+ font-size: 12px;
+}
+.progress-sm .progress-bar {
+ line-height: 14px;
+}
+.progress-xs .progress-bar {
+ line-height: 6px;
+}
+.progress-description {
+ margin-bottom: 10px;
+ max-width: 74%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.progress-description .count {
+ font-size: 20.004px;
+ font-weight: 300;
+ line-height: 1;
+ margin-right: 5px;
+}
+.progress-description .fa,
+.progress-description .pficon {
+ font-size: 14px;
+ margin-right: 3px;
+}
+.progress-description .tooltip {
+ white-space: normal;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 2px 10px 3px;
+}
+.table > thead > tr > th > a:hover,
+.table > tbody > tr > th > a:hover,
+.table > tfoot > tr > th > a:hover,
+.table > thead > tr > td > a:hover,
+.table > tbody > tr > td > a:hover,
+.table > tfoot > tr > td > a:hover {
+ text-decoration: none;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+}
+.table > thead {
+ background-clip: padding-box;
+ background-color: #f9f9f9;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+}
+.table-bordered {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #d1d1d1;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 1px;
+}
+.table-striped > tbody > tr:nth-of-type(even) {
+ background-color: #f5f5f5;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: transparent;
+}
+.table-hover > tbody > tr:hover > td,
+.table-hover > tbody > tr:hover > th {
+ background-color: #d5ecf9;
+ border-bottom-color: #a7cadf;
+}
+.nav-tabs {
+ font-size: 14px;
+}
+.nav-tabs > li > a {
+ color: #4d5258;
+ margin-right: -1px;
+ padding-bottom: 5px;
+ padding-top: 5px;
+}
+.nav-tabs > li > a:active,
+.nav-tabs > li > a:focus,
+.nav-tabs > li > a:hover {
+ background: transparent;
+ border-color: #e9e8e8;
+ color: #222222;
+}
+.nav-tabs > li > .dropdown-menu {
+ border-top: 0;
+ border-color: #e9e8e8;
+}
+.nav-tabs > li > .dropdown-menu.pull-right {
+ right: -1px;
+}
+.nav-tabs + .nav-tabs-pf {
+ font-size: 12px;
+}
+.nav-tabs + .nav-tabs-pf > li:first-child > a {
+ padding-left: 15px;
+}
+.nav-tabs + .nav-tabs-pf > li:first-child > a:before {
+ left: 15px !important;
+}
+.nav-tabs .open > a,
+.nav-tabs .open > a:hover,
+.nav-tabs .open > a:focus {
+ background-color: transparent;
+ border-color: #e9e8e8;
+}
+@media (min-width: 768px) {
+ .nav-tabs-pf.nav-justified {
+ border-bottom: 1px solid #e9e8e8;
+ }
+}
+.nav-tabs-pf.nav-justified > li:first-child > a {
+ padding-left: 15px;
+}
+.nav-tabs-pf.nav-justified > li > a {
+ border-bottom: 0;
+}
+.nav-tabs-pf.nav-justified > li > a:before {
+ left: 0 !important;
+ right: 0 !important;
+}
+.nav-tabs-pf > li {
+ margin-bottom: 0;
+}
+.nav-tabs-pf > li.active > a:before {
+ background: #0099d3;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 15px;
+ position: absolute;
+ right: 15px;
+}
+.nav-tabs-pf > li.active > a,
+.nav-tabs-pf > li.active > a:active,
+.nav-tabs-pf > li.active > a:focus,
+.nav-tabs-pf > li.active > a:hover {
+ background-color: transparent;
+ border: 0 !important;
+ color: #0099d3;
+}
+.nav-tabs-pf > li.active > a:before,
+.nav-tabs-pf > li.active > a:active:before,
+.nav-tabs-pf > li.active > a:focus:before,
+.nav-tabs-pf > li.active > a:hover:before {
+ background: #0099d3;
+}
+.nav-tabs-pf > li:first-child > a {
+ padding-left: 0;
+}
+.nav-tabs-pf > li:first-child > a:before {
+ left: 0 !important;
+}
+.nav-tabs-pf > li > a {
+ border: 0;
+ line-height: 1;
+ margin-right: 0;
+ padding-bottom: 10px;
+ padding-top: 10px;
+}
+.nav-tabs-pf > li > a:active:before,
+.nav-tabs-pf > li > a:focus:before,
+.nav-tabs-pf > li > a:hover:before {
+ background: #aaaaaa;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 15px;
+ position: absolute;
+ right: 15px;
+}
+.nav-tabs-pf > li > .dropdown-menu {
+ left: 15px;
+ margin-top: 1px;
+}
+.nav-tabs-pf > li > .dropdown-menu.pull-right {
+ left: auto;
+ right: 15px;
+}
+.nav-tabs-pf .open > a,
+.nav-tabs-pf .open > a:hover,
+.nav-tabs-pf .open > a:focus {
+ background-color: transparent;
+}
+.tooltip {
+ font-size: 12px;
+ line-height: 1.4;
+}
+.tooltip-inner {
+ padding: 7px 12px;
+ text-align: left;
+}
+h1,
+.h1,
+h2,
+.h2 {
+ font-weight: 300;
+}
+.page-header .actions {
+ margin-top: 8px;
+}
+.page-header .actions a > .pficon {
+ margin-right: 4px;
+}
+@media (min-width: 767px) {
+ .page-header-bleed-left {
+ margin-left: -20px;
+ }
+ .page-header-bleed-right {
+ margin-right: -20px;
+ }
+ .page-header-bleed-right .actions {
+ margin-right: 20px;
+ }
+}
+/* Bootstrap overrides */
+/* RCUE-specific */
+/*# sourceMappingURL=rcue.css.map */
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.css.map
new file mode 100644
index 0000000..f844afc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["components/patternfly/less/fonts.less","components/patternfly/components/bootstrap/less/normalize.less","components/patternfly/components/bootstrap/less/print.less","components/patternfly/components/bootstrap/less/glyphicons.less","components/patternfly/components/bootstrap/less/scaffolding.less","components/patternfly/components/bootstrap/less/mixins/vendor-prefixes.less","components/patternfly/less/variables.less","components/patternfly/components/bootstrap/less/mixins/tab-focus.less","components/patternfly/components/bootstrap/less/thumbnails.less","components/patternfly/components/bootstrap/less/carousel.less","components/patternfly/components/bootstrap/less/mixins/image.less","components/patternfly/components/bootstrap/less/type.less","components/patternfly/components/bootstrap/less/mixins/text-emphasis.less","components/patternfly/components/bootstrap/less/mixins/background-variant.less","components/patternfly/components/bootstrap/less/mixins/text-overflow.less","components/patternfly/components/bootstrap/less/code.less","components/patternfly/components/bootstrap/less/grid.less","components/patternfly/components/bootstrap/less/mixins/grid.less","components/patternfly/components/bootstrap/less/mixins/grid-framework.less","components/patternfly/components/bootstrap/less/tables.less","components/patternfly/components/bootstrap/less/mixins/table-row.less","components/patternfly/components/bootstrap/less/forms.less","components/patternfly/components/bootstrap/less/mixins/forms.less","components/patternfly/less/mixins.less","components/patternfly/components/bootstrap/less/buttons.less","components/patternfly/components/bootstrap/less/mixins/buttons.less","components/patternfly/components/bootstrap/less/mixins/opacity.less","components/patternfly/components/bootstrap/less/button-groups.less","components/patternfly/components/bootstrap/less/component-animations.less","components/patternfly/components/bootstrap/less/dropdowns.less","components/patternfly/components/bootstrap/less/mixins/nav-divider.less","components/patternfly/components/bootstrap/less/mixins/reset-filter.less","components/patternfly/components/bootstrap/less/mixins/border-radius.less","components/patternfly/components/bootstrap/less/input-groups.less","components/patternfly/components/bootstrap/less/navs.less","components/patternfly/components/bootstrap/less/navbar.less","components/patternfly/components/bootstrap/less/mixins/nav-vertical-align.less","components/patternfly/components/bootstrap/less/utilities.less","components/patternfly/components/font-awesome/less/bordered-pulled.less","components/patternfly/components/bootstrap/less/breadcrumbs.less","components/patternfly/components/bootstrap/less/pagination.less","components/patternfly/components/bootstrap/less/mixins/pagination.less","components/patternfly/components/bootstrap/less/pager.less","components/patternfly/components/bootstrap/less/labels.less","components/patternfly/components/bootstrap/less/mixins/labels.less","components/patternfly/components/bootstrap/less/badges.less","components/patternfly/components/bootstrap/less/jumbotron.less","components/patternfly/components/bootstrap/less/alerts.less","components/patternfly/components/bootstrap/less/mixins/alerts.less","components/patternfly/components/bootstrap/less/progress-bars.less","components/patternfly/components/bootstrap/less/mixins/gradients.less","components/patternfly/components/bootstrap/less/mixins/progress-bar.less","components/patternfly/components/bootstrap/less/media.less","components/patternfly/components/bootstrap/less/list-group.less","components/patternfly/components/bootstrap/less/mixins/list-group.less","components/patternfly/components/bootstrap/less/panels.less","components/patternfly/components/bootstrap/less/mixins/panels.less","components/patternfly/components/bootstrap/less/responsive-embed.less","components/patternfly/components/bootstrap/less/wells.less","components/patternfly/components/bootstrap/less/close.less","components/patternfly/components/bootstrap/less/modals.less","components/patternfly/components/bootstrap/less/tooltip.less","components/patternfly/components/bootstrap/less/mixins/reset-text.less","components/patternfly/components/bootstrap/less/popovers.less","components/patternfly/components/bootstrap/less/mixins/clearfix.less","components/patternfly/components/bootstrap/less/mixins/center-block.less","components/patternfly/components/bootstrap/less/mixins/hide-text.less","components/patternfly/components/bootstrap/less/responsive-utilities.less","components/patternfly/components/bootstrap/less/mixins/responsive-visibility.less","components/patternfly/components/font-awesome/less/path.less","components/patternfly/components/font-awesome/less/core.less","components/patternfly/components/font-awesome/less/larger.less","components/patternfly/components/font-awesome/less/fixed-width.less","components/patternfly/components/font-awesome/less/list.less","components/patternfly/components/font-awesome/less/animated.less","components/patternfly/components/font-awesome/less/rotated-flipped.less","components/patternfly/components/font-awesome/less/mixins.less","components/patternfly/components/font-awesome/less/stacked.less","components/patternfly/components/font-awesome/less/icons.less","components/patternfly/components/font-awesome/less/variables.less","components/patternfly/less/alerts.less","components/patternfly/less/badges.less","components/patternfly/less/breadcrumbs.less","components/patternfly/less/buttons.less","components/patternfly/less/dropdowns.less","components/patternfly/less/forms.less","components/patternfly/less/labels.less","components/patternfly/less/list-group.less","components/patternfly/less/modals.less","components/patternfly/less/pager.less","components/patternfly/less/pagination.less","components/patternfly/less/panels.less","components/patternfly/less/popovers.less","components/patternfly/less/progress-bars.less","components/patternfly/less/tables.less","components/patternfly/less/tabs.less","components/patternfly/less/tooltip.less","components/patternfly/less/type.less"],"names":[],"mappings":";;AAIA;EACE,aAAa,WAAb;EACA,kBAAA;EACA,gBAAA;EACA,SAAS,oEAAT;EACA,SAAS,4EAAkD,OAAO,0BACzD,sEAA4C,OAAO,aACnD,qEAA2C,OAAO,iBAClD,mFAAyD,OAAO,MAHzE;;AAKF;EACE,aAAa,WAAb;EACA,kBAAA;EACA,gBAAA;EACA,SAAS,sEAAT;EACA,SAAS,8EAAoD,OAAO,0BAC3D,wEAA8C,OAAO,aACrD,uEAA6C,OAAO,iBACpD,uFAA6D,OAAO,MAH7E;;AAKF;EACE,aAAa,WAAb;EACA,kBAAA;EACA,gBAAA;EACA,SAAS,uEAAT;EACA,SAAS,+EAAqD,OAAO,0BAC5D,yEAA+C,OAAO,aACtD,wEAA8C,OAAO,iBACrD,yFAA+D,OAAO,MAH/E;;AAKF;EACE,aAAa,WAAb;EACA,kBAAA;EACA,gBAAA;EACA,SAAS,mEAAT;EACA,SAAS,2EAAiD,OAAO,0BACxD,qEAA2C,OAAO,aAClD,oEAA0C,OAAO,iBACjD,iFAAuD,OAAO,MAHvE;;AAKF;EACE,aAAa,WAAb;EACA,kBAAA;EACA,gBAAA;EACA,SAAS,wEAAT;EACA,SAAS,gFAAsD,OAAO,0BAC7D,0EAAgD,OAAO,aACvD,yEAA+C,OAAO,iBACtD,2FAAiE,OAAO,MAHjF;;;;;;;;ACzCF;EACE,uBAAA;EACA,0BAAA;EACA,8BAAA;;AAOF;EACE,SAAA;;AAaF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,cAAA;;AAQF;AACA;AACA;AACA;EACE,qBAAA;EACA,wBAAA;;AAQF,KAAK,IAAI;EACP,aAAA;EACA,SAAA;;AAQF;AACA;EACE,aAAA;;AAUF;EACE,6BAAA;;AAQF,CAAC;AACD,CAAC;EACC,UAAA;;AAUF,IAAI;EACF,yBAAA;;AAOF;AACA;EACE,iBAAA;;AAOF;EACE,kBAAA;;AAQF;EACE,cAAA;EACA,gBAAA;;AAOF;EACE,gBAAA;EACA,WAAA;;AAOF;EACE,cAAA;;AAOF;AACA;EACE,cAAA;EACA,cAAA;EACA,kBAAA;EACA,wBAAA;;AAGF;EACE,WAAA;;AAGF;EACE,eAAA;;AAUF;EACE,SAAA;;AAOF,GAAG,IAAI;EACL,gBAAA;;AAUF;EACE,gBAAA;;AAOF;EACE,uBAAA;EACA,SAAA;;AAOF;EACE,cAAA;;AAOF;AACA;AACA;AACA;EACE,iCAAA;EACA,cAAA;;AAkBF;AACA;AACA;AACA;AACA;EACE,cAAA;EACA,aAAA;EACA,SAAA;;AAOF;EACE,iBAAA;;AAUF;AACA;EACE,oBAAA;;AAWF;AACA,IAAK,MAAK;AACV,KAAK;AACL,KAAK;EACH,0BAAA;EACA,eAAA;;AAOF,MAAM;AACN,IAAK,MAAK;EACR,eAAA;;AAOF,MAAM;AACN,KAAK;EACH,SAAA;EACA,UAAA;;AAQF;EACE,mBAAA;;AAWF,KAAK;AACL,KAAK;EACH,sBAAA;EACA,UAAA;;AASF,KAAK,eAAe;AACpB,KAAK,eAAe;EAClB,YAAA;;AAQF,KAAK;EACH,6BAAA;EACA,uBAAA;;AASF,KAAK,eAAe;AACpB,KAAK,eAAe;EAClB,wBAAA;;AAOF;EACE,yBAAA;EACA,aAAA;EACA,8BAAA;;AAQF;EACE,SAAA;EACA,UAAA;;AAOF;EACE,cAAA;;AAQF;EACE,iBAAA;;AAUF;EACE,yBAAA;EACA,iBAAA;;AAGF;AACA;EACE,UAAA;;;ACjUF;EA7FI;EACA,CAAC;EACD,CAAC;IACG,kCAAA;IACA,sBAAA;IACA,2BAAA;IACA,4BAAA;;EAGJ;EACA,CAAC;IACG,0BAAA;;EAGJ,CAAC,MAAM;IACH,SAAS,KAAK,WAAW,GAAzB;;EAGJ,IAAI,OAAO;IACP,SAAS,KAAK,YAAY,GAA1B;;EAKJ,CAAC,WAAW;EACZ,CAAC,qBAAqB;IAClB,SAAS,EAAT;;EAGJ;EACA;IACI,sBAAA;IACA,wBAAA;;EAGJ;IACI,2BAAA;;EAGJ;EACA;IACI,wBAAA;;EAGJ;IACI,0BAAA;;EAGJ;EACA;EACA;IACI,UAAA;IACA,SAAA;;EAGJ;EACA;IACI,uBAAA;;EAMJ;IACI,aAAA;;EAEJ,IAEI;EADJ,OAAQ,OACJ;IACI,iCAAA;;EAGR;IACI,sBAAA;;EAGJ;IACI,oCAAA;;EADJ,MAGI;EAHJ,MAII;IACI,iCAAA;;EAGR,eACI;EADJ,eAEI;IACI,iCAAA;;;ACrFZ;EACE,aAAa,sBAAb;EACA,SAAS,+FAAT;EACA,SAAS,uGAAiD,OAAO,0BACxD,kGAA4C,OAAO,cACnD,iGAA2C,OAAO,aAClD,gGAA0C,OAAO,iBACjD,4HAA8D,OAAO,MAJ9E;;AAQF;EACE,kBAAA;EACA,QAAA;EACA,qBAAA;EACA,aAAa,sBAAb;EACA,kBAAA;EACA,mBAAA;EACA,cAAA;EACA,mCAAA;EACA,kCAAA;;AAIkC,mBAAC;EAAU,SAAS,KAAT;;AACX,eAAC;EAAU,SAAS,KAAT;;AAEX,eAAC;AAAD,cAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,aAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,aAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,2BAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,0BAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,6BAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,0BAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,2BAAC;EAAU,SAAS,OAAT;;AACX,+BAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,6BAAC;EAAU,SAAS,OAAT;;AACX,iCAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AACX,aAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AASX,gBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,iBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,eAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,mBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,2BAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,0BAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,cAAC;EAAU,SAAS,OAAT;;AACX,gBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,0BAAC;EAAU,SAAS,OAAT;;AACX,2BAAC;EAAU,SAAS,OAAT;;AACX,8BAAC;EAAU,SAAS,OAAT;;AACX,kCAAC;EAAU,SAAS,OAAT;;AACX,4BAAC;EAAU,SAAS,OAAT;;AACX,gCAAC;EAAU,SAAS,OAAT;;AACX,6BAAC;EAAU,SAAS,OAAT;;AACX,yBAAC;EAAU,SAAS,OAAT;;AACX,wBAAC;EAAU,SAAS,OAAT;;AACX,0BAAC;EAAU,SAAS,OAAT;;AACX,uBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;AACX,sBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,qBAAC;EAAU,SAAS,OAAT;;AACX,oBAAC;EAAU,SAAS,OAAT;;AACX,kBAAC;EAAU,SAAS,OAAT;;ACtS/C;ECgEE,8BAAA;EACG,2BAAA;EACK,sBAAA;;AD/DV,CAAC;AACD,CAAC;EC4DC,8BAAA;EACG,2BAAA;EACK,sBAAA;;ADvDV;EACE,eAAA;EACA,6CAAA;;AAGF;EACE,aEgGkE,yCFhGlE;EACA,eAAA;EACA,uBAAA;EACA,cAAA;EACA,yBAAA;;AAIF;AACA;AACA;AACA;EACE,oBAAA;EACA,kBAAA;EACA,oBAAA;;AAMF;EACE,cAAA;EACA,qBAAA;;AAEA,CAAC;AACD,CAAC;EACC,cAAA;EACA,0BAAA;;AAGF,CAAC;EGrDD,oBAAA;EAEA,0CAAA;EACA,oBAAA;;AH6DF;EACE,SAAA;;AAMF;EACE,sBAAA;;AAIF;AI1EA,UAUE;AAVF,UAWE,EAAE;ACPJ,eAKE,QAME;AAXJ,eAKE,QAOE,IAAI;ECbN,cAAA;EACA,eAAA;EACA,YAAA;;AN0EF;EACE,kBAAA;;AAMF;EACE,YAAA;EACA,uBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;EC6FA,wCAAA;EACK,mCAAA;EACG,gCAAA;EKvLR,qBAAA;EACA,eAAA;EACA,YAAA;;AN8FF;EACE,kBAAA;;AAMF;EACE,gBAAA;EACA,mBAAA;EACA,SAAA;EACA,6BAAA;;AAQF;EACE,kBAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,gBAAA;EACA,MAAM,gBAAN;EACA,SAAA;;AAQA,kBAAC;AACD,kBAAC;EACC,gBAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,iBAAA;EACA,UAAA;;AAWJ;EACE,eAAA;;AOvJF;AAAI;AAAI;AAAI;AAAI;AAAI;AACpB;AAAK;AAAK;AAAK;AAAK;AAAK;EACvB,oBAAA;EACA,gBAAA;EACA,gBAAA;EACA,cAAA;;AALF,EAOE;AAPE,EAOF;AAPM,EAON;AAPU,EAOV;AAPc,EAOd;AAPkB,EAOlB;AANF,GAME;AANG,GAMH;AANQ,GAMR;AANa,GAMb;AANkB,GAMlB;AANuB,GAMvB;AAPF,EAQE;AARE,EAQF;AARM,EAQN;AARU,EAQV;AARc,EAQd;AARkB,EAQlB;AAPF,GAOE;AAPG,GAOH;AAPQ,GAOR;AAPa,GAOb;AAPkB,GAOlB;AAPuB,GAOvB;EACE,mBAAA;EACA,cAAA;EACA,cAAA;;AAIJ;AAAI;AACJ;AAAI;AACJ;AAAI;EACF,gBAAA;EACA,mBAAA;;AAJF,EAME;AANE,GAMF;AALF,EAKE;AALE,GAKF;AAJF,EAIE;AAJE,GAIF;AANF,EAOE;AAPE,GAOF;AANF,EAME;AANE,GAMF;AALF,EAKE;AALE,GAKF;EACE,cAAA;;AAGJ;AAAI;AACJ;AAAI;AACJ;AAAI;EACF,gBAAA;EACA,mBAAA;;AAJF,EAME;AANE,GAMF;AALF,EAKE;AALE,GAKF;AAJF,EAIE;AAJE,GAIF;AANF,EAOE;AAPE,GAOF;AANF,EAME;AANE,GAMF;AALF,EAKE;AALE,GAKF;EACE,cAAA;;AAIJ;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AACV;AAAI;EAAM,eAAA;;AAMV;EACE,gBAAA;;AAGF;EACE,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;;AAKF,QAHqC;EAGrC;IAFI,eAAA;;;AASJ;AACA;EACE,cAAA;;AAGF;AACA;EACE,yBAAA;EACA,aAAA;;AAIF;EAAuB,gBAAA;;AACvB;EAAuB,iBAAA;;AACvB;EAAuB,kBAAA;;AACvB;EAAuB,mBAAA;;AACvB;EAAuB,mBAAA;;AAGvB;EAAuB,yBAAA;;AACvB;EAAuB,yBAAA;;AACvB;EAAuB,0BAAA;;AAGvB;EACE,cAAA;;AAEF;ECrGE,cAAA;;AACA,CAAC,aAAC;AACF,CAAC,aAAC;EACA,cAAA;;ADqGJ;ECxGE,cAAA;;AACA,CAAC,aAAC;AACF,CAAC,aAAC;EACA,cAAA;;ADwGJ;EC3GE,cAAA;;AACA,CAAC,UAAC;AACF,CAAC,UAAC;EACA,cAAA;;AD2GJ;EC9GE,cAAA;;AACA,CAAC,aAAC;AACF,CAAC,aAAC;EACA,cAAA;;AD8GJ;ECjHE,cAAA;;AACA,CAAC,YAAC;AACF,CAAC,YAAC;EACA,cAAA;;ADqHJ;EAGE,WAAA;EE3HA,yBAAA;;AACA,CAAC,WAAC;AACF,CAAC,WAAC;EACA,yBAAA;;AF2HJ;EE9HE,yBAAA;;AACA,CAAC,WAAC;AACF,CAAC,WAAC;EACA,yBAAA;;AF8HJ;EEjIE,yBAAA;;AACA,CAAC,QAAC;AACF,CAAC,QAAC;EACA,yBAAA;;AFiIJ;EEpIE,yBAAA;;AACA,CAAC,WAAC;AACF,CAAC,WAAC;EACA,yBAAA;;AFoIJ;EEvIE,yBAAA;;AACA,CAAC,UAAC;AACF,CAAC,UAAC;EACA,yBAAA;;AF4IJ;EACE,mBAAA;EACA,mBAAA;EACA,gCAAA;;AAQF;AACA;EACE,aAAA;EACA,mBAAA;;AAHF,EAIE;AAHF,EAGE;AAJF,EAKE;AAJF,EAIE;EACE,gBAAA;;AAOJ;EACE,eAAA;EACA,gBAAA;;AAIF;EALE,eAAA;EACA,gBAAA;EAMA,iBAAA;;AAFF,YAIE;EACE,qBAAA;EACA,iBAAA;EACA,kBAAA;;AAKJ;EACE,aAAA;EACA,mBAAA;;AAEF;AACA;EACE,uBAAA;;AAEF;EACE,iBAAA;;AAEF;EACE,cAAA;;AAyBF,QAZ6C;EAY7C,cAXI;IACE,WAAA;IACA,YAAA;IACA,WAAA;IACA,iBAAA;IGtNJ,gBAAA;IACA,uBAAA;IACA,mBAAA;;EH2NF,cAJI;IACE,kBAAA;;;AAUN,IAAI;AAEJ,IAAI;EACF,YAAA;EACA,iCAAA;;AAEF;EACE,cAAA;EA9IqB,yBAAA;;AAmJvB;EACE,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,8BAAA;;AAKE,UAHF,EAGG;AAAD,UAFF,GAEG;AAAD,UADF,GACG;EACC,gBAAA;;AAVN,UAgBE;AAhBF,UAiBE;AAjBF,UAkBE;EACE,cAAA;EACA,cAAA;EACA,uBAAA;EACA,cAAA;;AAEA,UARF,OAQG;AAAD,UAPF,MAOG;AAAD,UANF,OAMG;EACC,SAAS,aAAT;;AAQN;AACA,UAAU;EACR,mBAAA;EACA,eAAA;EACA,+BAAA;EACA,cAAA;EACA,iBAAA;;AAME,mBAHF,OAGG;AAAD,UAXM,WAQR,OAGG;AAAD,mBAFF,MAEG;AAAD,UAXM,WASR,MAEG;AAAD,mBADF,OACG;AAAD,UAXM,WAUR,OACG;EAAU,SAAS,EAAT;;AACX,mBAJF,OAIG;AAAD,UAZM,WAQR,OAIG;AAAD,mBAHF,MAGG;AAAD,UAZM,WASR,MAGG;AAAD,mBAFF,OAEG;AAAD,UAZM,WAUR,OAEG;EACC,SAAS,aAAT;;AAMN;EACE,mBAAA;EACA,kBAAA;EACA,uBAAA;;AItSF;AACA;AACA;AACA;EACE,+CAAA;;AAIF;EACE,gBAAA;EACA,cAAA;EACA,cAAA;EACA,yBAAA;EACA,kBAAA;;AAIF;EACE,gBAAA;EACA,cAAA;EACA,cAAA;EACA,yBAAA;EACA,kBAAA;EACA,8CAAA;;AANF,GAQE;EACE,UAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;;AAKJ;EACE,cAAA;EACA,cAAA;EACA,gBAAA;EACA,eAAA;EACA,uBAAA;EACA,qBAAA;EACA,qBAAA;EACA,cAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;;AAXF,GAcE;EACE,UAAA;EACA,kBAAA;EACA,cAAA;EACA,qBAAA;EACA,6BAAA;EACA,gBAAA;;AAKJ;EACE,iBAAA;EACA,kBAAA;;AC1DF;ECHE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,mBAAA;;ADMA,QAHmC;EAGnC;IAFE,YAAA;;;AAKF,QAHmC;EAGnC;IAFE,YAAA;;;AAKJ,QAHqC;EAGrC;IAFI,aAAA;;;AAUJ;ECvBE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,mBAAA;;AD6BF;ECvBE,kBAAA;EACA,mBAAA;;ACAE;EACE,kBAAA;EAEA,eAAA;EAEA,kBAAA;EACA,mBAAA;;AAgBF;EACE,WAAA;;AAOJ,KAAK,EAAQ,CAAC;EACZ,WAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,UAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,UAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,UAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,mBAAA;;AADF,KAAK,EAAQ,CAAC;EACZ,kBAAA;;AAcF,KAAK,EAAQ,MAAM;EACjB,WAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,UAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,UAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,UAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,mBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AAIF,KAAK,EAAQ;EACX,WAAA;;AAhBF,KAAK,EAAQ,MAAM;EACjB,UAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,SAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,SAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,SAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,kBAAA;;AADF,KAAK,EAAQ,MAAM;EACjB,iBAAA;;AAIF,KAAK,EAAQ;EACX,UAAA;;AAcF,KAAK,EAAQ,QAAQ;EACnB,iBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,gBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,gBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,gBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,yBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,wBAAA;;AADF,KAAK,EAAQ,QAAQ;EACnB,eAAA;;AFAJ,QATmC;EEzB/B;IACE,WAAA;;EAOJ,KAAK,EAAQ,CAAC;IACZ,WAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,kBAAA;;EAcF,KAAK,EAAQ,MAAM;IACjB,WAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EAIF,KAAK,EAAQ;IACX,WAAA;;EAhBF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,iBAAA;;EAIF,KAAK,EAAQ;IACX,UAAA;;EAcF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,wBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,eAAA;;;AFSJ,QATmC;EElC/B;IACE,WAAA;;EAOJ,KAAK,EAAQ,CAAC;IACZ,WAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,kBAAA;;EAcF,KAAK,EAAQ,MAAM;IACjB,WAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EAIF,KAAK,EAAQ;IACX,WAAA;;EAhBF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,iBAAA;;EAIF,KAAK,EAAQ;IACX,UAAA;;EAcF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,wBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,eAAA;;;AFYJ,QAHmC;EE3C/B;IACE,WAAA;;EAOJ,KAAK,EAAQ,CAAC;IACZ,WAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,UAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,mBAAA;;EADF,KAAK,EAAQ,CAAC;IACZ,kBAAA;;EAcF,KAAK,EAAQ,MAAM;IACjB,WAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,mBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EAIF,KAAK,EAAQ;IACX,WAAA;;EAhBF,KAAK,EAAQ,MAAM;IACjB,UAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,SAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,kBAAA;;EADF,KAAK,EAAQ,MAAM;IACjB,iBAAA;;EAIF,KAAK,EAAQ;IACX,UAAA;;EAcF,KAAK,EAAQ,QAAQ;IACnB,iBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,gBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,yBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,wBAAA;;EADF,KAAK,EAAQ,QAAQ;IACnB,eAAA;;;ACnEJ;EACE,6BAAA;;AAEF;EACE,iBAAA;EACA,oBAAA;EACA,cAAA;EACA,gBAAA;;AAEF;EACE,gBAAA;;AAMF;EACE,WAAA;EACA,eAAA;EACA,mBAAA;;AAHF,MAKE,QAGE,KACE;AATN,MAME,QAEE,KACE;AATN,MAOE,QACE,KACE;AATN,MAKE,QAGE,KAEE;AAVN,MAME,QAEE,KAEE;AAVN,MAOE,QACE,KAEE;EACE,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,6BAAA;;AAdR,MAmBE,QAAQ,KAAK;EACX,sBAAA;EACA,gCAAA;;AArBJ,MAwBE,UAAU,QAGR,KAAI,YACF;AA5BN,MAyBE,WAAW,QAET,KAAI,YACF;AA5BN,MA0BE,QAAO,YACL,KAAI,YACF;AA5BN,MAwBE,UAAU,QAGR,KAAI,YAEF;AA7BN,MAyBE,WAAW,QAET,KAAI,YAEF;AA7BN,MA0BE,QAAO,YACL,KAAI,YAEF;EACE,aAAA;;AA9BR,MAmCE,QAAQ;EACN,6BAAA;;AApCJ,MAwCE;EACE,yBAAA;;AAOJ,gBACE,QAGE,KACE;AALN,gBAEE,QAEE,KACE;AALN,gBAGE,QACE,KACE;AALN,gBACE,QAGE,KAEE;AANN,gBAEE,QAEE,KAEE;AANN,gBAGE,QACE,KAEE;EACE,YAAA;;AAWR;EACE,yBAAA;;AADF,eAEE,QAGE,KACE;AANN,eAGE,QAEE,KACE;AANN,eAIE,QACE,KACE;AANN,eAEE,QAGE,KAEE;AAPN,eAGE,QAEE,KAEE;AAPN,eAIE,QACE,KAEE;EACE,yBAAA;;AARR,eAYE,QAAQ,KACN;AAbJ,eAYE,QAAQ,KAEN;EACE,wBAAA;;AAUN,cACE,QAAQ,KAAI,YAAY;EACtB,yBAAA;;AASJ,YACE,QAAQ,KAAI;EACV,yBAAA;;AASJ,KAAM,IAAG;EACP,gBAAA;EACA,WAAA;EACA,qBAAA;;AAKE,KAFF,GAEG;AAAD,KADF,GACG;EACC,gBAAA;EACA,WAAA;EACA,mBAAA;;AC5IJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,MAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,MAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,MAAS;AACX,MANK,QAAQ,KAMZ,CAAC,MAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,MAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,MAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,MAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,MAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,MAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,MAAO,IAAG;AACX,YALW,QAAQ,KAKlB,CAAC,MAAQ,MAAO;EACf,yBAAA;;AAnBJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,OAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,OAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,OAAS;AACX,MANK,QAAQ,KAMZ,CAAC,OAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,OAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,OAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,OAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,OAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,OAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,MAAO,IAAG;AACX,YALW,QAAQ,KAKlB,CAAC,OAAQ,MAAO;EACf,yBAAA;;AAnBJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,IAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,IAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,IAAS;AACX,MANK,QAAQ,KAMZ,CAAC,IAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,IAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,IAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,IAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,IAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,IAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,MAAO,IAAG;AACX,YALW,QAAQ,KAKlB,CAAC,IAAQ,MAAO;EACf,yBAAA;;AAnBJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,OAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,OAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,OAAS;AACX,MANK,QAAQ,KAMZ,CAAC,OAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,OAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,OAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,OAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,OAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,OAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,MAAO,IAAG;AACX,YALW,QAAQ,KAKlB,CAAC,OAAQ,MAAO;EACf,yBAAA;;AAnBJ,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AADP,MAAO,QAAQ,KACb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAIb,KAAI,CAAC;AAHP,MAAO,QAAQ,KAGb,KAAI,CAAC;AAFP,MAAO,QAAQ,KAEb,KAAI,CAAC;AACL,MALK,QAAQ,KAKZ,CAAC,MAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,MAAS;AAAX,MAHK,QAAQ,KAGZ,CAAC,MAAS;AACX,MANK,QAAQ,KAMZ,CAAC,MAAS;AAAX,MALK,QAAQ,KAKZ,CAAC,MAAS;AAAX,MAJK,QAAQ,KAIZ,CAAC,MAAS;EACT,yBAAA;;AAMJ,YAAa,QAAQ,KACnB,KAAI,CAAC,MAAQ;AADf,YAAa,QAAQ,KAEnB,KAAI,CAAC,MAAQ;AACb,YAHW,QAAQ,KAGlB,CAAC,MAAQ,MAAO;AACjB,YAJW,QAAQ,KAIlB,MAAO,IAAG;AACX,YALW,QAAQ,KAKlB,CAAC,MAAQ,MAAO;EACf,yBAAA;;ADkJN;EACE,gBAAA;EACA,iBAAA;;AA6DF,mBA3DgD;EA2DhD;IA1DI,WAAA;IACA,mBAAA;IACA,kBAAA;IACA,4CAAA;IACA,yBAAA;;EAsDJ,iBAnDI;IACE,gBAAA;;EAkDN,iBAnDI,SAIE,QAGE,KACE;EA2CV,iBAnDI,SAKE,QAEE,KACE;EA2CV,iBAnDI,SAME,QACE,KACE;EA2CV,iBAnDI,SAIE,QAGE,KAEE;EA0CV,iBAnDI,SAKE,QAEE,KAEE;EA0CV,iBAnDI,SAME,QACE,KAEE;IACE,mBAAA;;EAyCZ,iBAlCI;IACE,SAAA;;EAiCN,iBAlCI,kBAIE,QAGE,KACE,KAAI;EA0Bd,iBAlCI,kBAKE,QAEE,KACE,KAAI;EA0Bd,iBAlCI,kBAME,QACE,KACE,KAAI;EA0Bd,iBAlCI,kBAIE,QAGE,KAEE,KAAI;EAyBd,iBAlCI,kBAKE,QAEE,KAEE,KAAI;EAyBd,iBAlCI,kBAME,QACE,KAEE,KAAI;IACF,cAAA;;EAwBZ,iBAlCI,kBAIE,QAGE,KAKE,KAAI;EAsBd,iBAlCI,kBAKE,QAEE,KAKE,KAAI;EAsBd,iBAlCI,kBAME,QACE,KAKE,KAAI;EAsBd,iBAlCI,kBAIE,QAGE,KAME,KAAI;EAqBd,iBAlCI,kBAKE,QAEE,KAME,KAAI;EAqBd,iBAlCI,kBAME,QACE,KAME,KAAI;IACF,eAAA;;EAoBZ,iBAlCI,kBAsBE,QAEE,KAAI,WACF;EASV,iBAlCI,kBAuBE,QACE,KAAI,WACF;EASV,iBAlCI,kBAsBE,QAEE,KAAI,WAEF;EAQV,iBAlCI,kBAuBE,QACE,KAAI,WAEF;IACE,gBAAA;;;AEzNZ;EACE,UAAA;EACA,SAAA;EACA,SAAA;EAIA,YAAA;;AAGF;EACE,cAAA;EACA,WAAA;EACA,UAAA;EACA,mBAAA;EACA,eAAA;EACA,oBAAA;EACA,cAAA;EACA,SAAA;EACA,gCAAA;;AAGF;EACE,qBAAA;EACA,eAAA;EACA,kBAAA;EACA,iBAAA;;AAWF,KAAK;EhB4BH,8BAAA;EACG,2BAAA;EACK,sBAAA;;AgBzBV,KAAK;AACL,KAAK;EACH,eAAA;EACA,kBAAA;EACA,mBAAA;;AAGF,KAAK;EACH,cAAA;;AAIF,KAAK;EACH,cAAA;EACA,WAAA;;AAIF,MAAM;AACN,MAAM;EACJ,YAAA;;AAIF,KAAK,aAAa;AAClB,KAAK,cAAc;AACnB,KAAK,iBAAiB;EdzEpB,oBAAA;EAEA,0CAAA;EACA,oBAAA;;Ac2EF;EACE,cAAA;EACA,gBAAA;EACA,eAAA;EACA,uBAAA;EACA,cAAA;;AA0BF;EACE,cAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;EACA,eAAA;EACA,uBAAA;EACA,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,yBAAA;EACA,kBAAA;EhBxDA,wDAAA;EACQ,gDAAA;EAyHR,8EAAA;EACK,yEAAA;EACG,sEAAA;;AiBxIR,aAAC;EACC,qBAAA;EACA,UAAA;EjBUF,sFAAA;EACQ,8EAAA;;AAiCR,aAAC;EACC,cAAA;EACA,UAAA;;AAEF,aAAC;EAAyB,cAAA;;AAC1B,aAAC;EAA+B,cAAA;;AkB7BhC,aAAC;EAA+B,cAAA;EAAe,kBAAA;;AAC/C,aAAC;EAA+B,cAAA;EAAe,kBAAA;;AAC/C,aAAC;EAA+B,cAAA;EAAe,kBAAA;;AAC/C,aAAC;EAA+B,cAAA;EAAe,kBAAA;;AF0D/C,aAAC;AACD,aAAC;AACD,QAAQ,UAAW;EACjB,yBAAA;EACA,UAAA;;AAGF,aAAC;AACD,QAAQ,UAAW;EACjB,mBAAA;;AAIF,QAAQ;EACN,YAAA;;AAYJ,KAAK;EACH,wBAAA;;AAwCF,mBA3BsD;EAKlD,KAJG,aAIF;EAAD,KAHG,aAGF;EAAD,KAFG,uBAEF;EAAD,KADG,cACF;IACC,iBAAA;;EAGF,KARG,aAQF;EAAD,KAPG,aAOF;EAAD,KANG,uBAMF;EAAD,KALG,cAKF;EACD,eAAgB,MATb;EASH,eAAgB,MARb;EAQH,eAAgB,MAPb;EAOH,eAAgB,MANb;IAOD,iBAAA;;EAGF,KAbG,aAaF;EAAD,KAZG,aAYF;EAAD,KAXG,uBAWF;EAAD,KAVG,cAUF;EACD,eAAgB,MAdb;EAcH,eAAgB,MAbb;EAaH,eAAgB,MAZb;EAYH,eAAgB,MAXb;IAYD,iBAAA;;;AAWN;EACE,mBAAA;;AAQF;AACA;EACE,kBAAA;EACA,cAAA;EACA,gBAAA;EACA,mBAAA;;AALF,MAOE;AANF,SAME;EACE,gBAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,eAAA;;AAGJ,MAAO,MAAK;AACZ,aAAc,MAAK;AACnB,SAAU,MAAK;AACf,gBAAiB,MAAK;EACpB,kBAAA;EACA,kBAAA;EACA,kBAAA;;AAGF,MAAO;AACP,SAAU;EACR,gBAAA;;AAIF;AACA;EACE,kBAAA;EACA,qBAAA;EACA,kBAAA;EACA,gBAAA;EACA,sBAAA;EACA,mBAAA;EACA,eAAA;;AAEF,aAAc;AACd,gBAAiB;EACf,aAAA;EACA,iBAAA;;AASA,KAFG,cAEF;AAAD,KADG,iBACF;AACD,KAHG,cAGF;AAAD,KAFG,iBAEF;AACD,QAAQ,UAAW,MAJhB;AAIH,QAAQ,UAAW,MAHhB;EAID,mBAAA;;AAMF,aAAC;AAAD,gBAAC;AACD,QAAQ,UAAW;AAAnB,QAAQ,UAAW;EACjB,mBAAA;;AAMF,MAAC,SAEC;AAFF,SAAC,SAEC;AADF,QAAQ,UAAW,OACjB;AADF,QAAQ,UAAW,UACjB;EACE,mBAAA;;AAWN;EAEE,gBAAA;EACA,mBAAA;EAEA,gBAAA;EACA,gBAAA;;AAEA,oBAAC;AACD,oBAAC;EACC,eAAA;EACA,gBAAA;;AAaJ;EC7PE,YAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;AAEA,MAAM;EACJ,YAAA;EACA,iBAAA;;AAGF,QAAQ;AACR,MAAM,UAAU;EACd,YAAA;;ADmPJ,cACE;EACE,YAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;AANJ,cAQE,OAAM;EACJ,YAAA;EACA,iBAAA;;AAVJ,cAYE,SAAQ;AAZV,cAaE,OAAM,UAAU;EACd,YAAA;;AAdJ,cAgBE;EACE,YAAA;EACA,gBAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;;AAIJ;ECzRE,YAAA;EACA,iBAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;;AAEA,MAAM;EACJ,YAAA;EACA,iBAAA;;AAGF,QAAQ;AACR,MAAM,UAAU;EACd,YAAA;;AD+QJ,cACE;EACE,YAAA;EACA,iBAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;;AANJ,cAQE,OAAM;EACJ,YAAA;EACA,iBAAA;;AAVJ,cAYE,SAAQ;AAZV,cAaE,OAAM,UAAU;EACd,YAAA;;AAdJ,cAgBE;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,sBAAA;;AASJ;EAEE,kBAAA;;AAFF,aAKE;EACE,qBAAA;;AAIJ;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,UAAA;EACA,cAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;;AAEF,SAAU;AACV,eAAgB;AAChB,cAAe,cAAc;EAC3B,WAAA;EACA,YAAA;EACA,iBAAA;;AAEF,SAAU;AACV,eAAgB;AAChB,cAAe,cAAc;EAC3B,WAAA;EACA,YAAA;EACA,iBAAA;;AAIF,YC9ZE;AD8ZF,YC7ZE;AD6ZF,YC5ZE;AD4ZF,YC3ZE;AD2ZF,YC1ZE;AD0ZF,YCzZE;AACA,YAAC,MAAO;AACR,YAAC,SAAU;AACX,YAAC,aAAc;AACf,YAAC,gBAAiB;EAChB,cAAA;;ADoZJ,YCjZE;EACE,qBAAA;EjB+CF,wDAAA;EACQ,gDAAA;;AiB9CN,YAHF,cAGG;EACC,qBAAA;EjB4CJ,yEAAA;EACQ,iEAAA;;AgBgWV,YCvYE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;;ADoYJ,YCjYE;EACE,cAAA;;ADmYJ,YCjaE;ADiaF,YChaE;ADgaF,YC/ZE;AD+ZF,YC9ZE;AD8ZF,YC7ZE;AD6ZF,YC5ZE;AACA,YAAC,MAAO;AACR,YAAC,SAAU;AACX,YAAC,aAAc;AACf,YAAC,gBAAiB;EAChB,cAAA;;ADuZJ,YCpZE;EACE,qBAAA;EjB+CF,wDAAA;EACQ,gDAAA;;AiB9CN,YAHF,cAGG;EACC,qBAAA;EjB4CJ,yEAAA;EACQ,iEAAA;;AgBmWV,YC1YE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;;ADuYJ,YCpYE;EACE,cAAA;;ADsYJ,UCpaE;ADoaF,UCnaE;ADmaF,UClaE;ADkaF,UCjaE;ADiaF,UChaE;ADgaF,UC/ZE;AACA,UAAC,MAAO;AACR,UAAC,SAAU;AACX,UAAC,aAAc;AACf,UAAC,gBAAiB;EAChB,cAAA;;AD0ZJ,UCvZE;EACE,qBAAA;EjB+CF,wDAAA;EACQ,gDAAA;;AiB9CN,UAHF,cAGG;EACC,qBAAA;EjB4CJ,yEAAA;EACQ,iEAAA;;AgBsWV,UC7YE;EACE,cAAA;EACA,qBAAA;EACA,yBAAA;;AD0YJ,UCvYE;EACE,cAAA;;AD6YF,aAFY,MAEV;EACC,SAAA;;AAEH,aALY,MAKX,QAAS;EACP,MAAA;;AAUL;EACE,cAAA;EACA,eAAA;EACA,mBAAA;EACA,cAAA;;AAmFF,QAjEqC;EAiErC,YA/DI;IACE,qBAAA;IACA,gBAAA;IACA,sBAAA;;EA4DN,YAxDI;IACE,qBAAA;IACA,WAAA;IACA,sBAAA;;EAqDN,YAjDI;IACE,qBAAA;;EAgDN,YA7CI;IACE,qBAAA;IACA,sBAAA;;EA2CN,YA7CI,aAIE;EAyCN,YA7CI,aAKE;EAwCN,YA7CI,aAME;IACE,WAAA;;EAsCR,YAjCI,aAAa;IACX,WAAA;;EAgCN,YA7BI;IACE,gBAAA;IACA,sBAAA;;EA2BN,YAtBI;EAsBJ,YArBI;IACE,qBAAA;IACA,aAAA;IACA,gBAAA;IACA,sBAAA;;EAiBN,YAtBI,OAOE;EAeN,YArBI,UAME;IACE,eAAA;;EAcR,YAXI,OAAO,MAAK;EAWhB,YAVI,UAAU,MAAK;IACb,kBAAA;IACA,cAAA;;EAQN,YAJI,cAAc;IACZ,MAAA;;;AAWN,gBAKE;AALF,gBAME;AANF,gBAOE;AAPF,gBAQE;EACE,aAAA;EACA,gBAAA;EACA,gBAAA;;AAXJ,gBAeE;AAfF,gBAgBE;EACE,gBAAA;;AAjBJ,gBAqBE;EJriBA,kBAAA;EACA,mBAAA;;AIsjBA,QAZmC;EAYnC,gBAXE;IACE,iBAAA;IACA,gBAAA;IACA,gBAAA;;;AA/BN,gBAuCE,cAAc;EACZ,WAAA;;AAcF,QANqC;EAMrC,gBAPA,eAEI;IACE,wBAAA;IACA,eAAA;;;AAWN,QANqC;EAMrC,gBAPA,eAEI;IACE,gBAAA;IACA,eAAA;;;AGllBR;EACE,qBAAA;EACA,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,sBAAA;EACA,0BAAA;EACA,eAAA;EACA,sBAAA;EACA,6BAAA;EACA,mBAAA;EC6CA,gBAAA;EACA,eAAA;EACA,uBAAA;EACA,kBAAA;EpB4JA,yBAAA;EACG,sBAAA;EACC,qBAAA;EACI,iBAAA;;AmBxMN,IAAC;AAAD,IAFD,OAEE;AAAD,IADD,OACE;AACD,IAAC;AAAD,IAHD,OAGE;AAAD,IAFD,OAEE;EjBtBH,oBAAA;EAEA,0CAAA;EACA,oBAAA;;AiBwBA,IAAC;AACD,IAAC;AACD,IAAC;EACC,cAAA;EACA,qBAAA;;AAGF,IAAC;AACD,IAAC;EACC,UAAA;EACA,sBAAA;EnB2BF,wDAAA;EACQ,gDAAA;;AmBxBR,IAAC;AACD,IAAC;AACD,QAAQ,UAAW;EACjB,mBAAA;EE7CF,aAAA;EAGA,yBAAA;ErB8DA,wBAAA;EACQ,gBAAA;;AmBfN,CADD,IACE;AACD,QAAQ,UAAW,EAFpB;EAGG,oBAAA;;AASN;EC3DE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;AACD,YAAC;AACD,KAAM,mBAAkB;EACtB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEJ,YAPD,OAOE;AAAD,YAND,OAME;AAAD,KALI,mBAAkB,YAKrB;AACD,YARD,OAQE;AAAD,YAPD,OAOE;AAAD,KANI,mBAAkB,YAMrB;AACD,YATD,OASE;AAAD,YARD,OAQE;AAAD,KAPI,mBAAkB,YAOrB;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAGR,YAAC;AACD,YAAC;AACD,KAAM,mBAAkB;EACtB,sBAAA;;AAKA,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;AACD,YARD,SAQE;AAAD,YAPD,UAOE;AAAD,QANM,UAAW,aAMhB;EACC,yBAAA;EACI,qBAAA;;ADcV,YCVE;EACE,cAAA;EACA,yBAAA;;ADWJ;EC9DE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;AACD,YAAC;AACD,KAAM,mBAAkB;EACtB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEJ,YAPD,OAOE;AAAD,YAND,OAME;AAAD,KALI,mBAAkB,YAKrB;AACD,YARD,OAQE;AAAD,YAPD,OAOE;AAAD,KANI,mBAAkB,YAMrB;AACD,YATD,OASE;AAAD,YARD,OAQE;AAAD,KAPI,mBAAkB,YAOrB;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAGR,YAAC;AACD,YAAC;AACD,KAAM,mBAAkB;EACtB,sBAAA;;AAKA,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;AACD,YARD,SAQE;AAAD,YAPD,UAOE;AAAD,QANM,UAAW,aAMhB;EACC,yBAAA;EACI,qBAAA;;ADiBV,YCbE;EACE,cAAA;EACA,yBAAA;;ADeJ;EClEE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;AACD,YAAC;AACD,KAAM,mBAAkB;EACtB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEJ,YAPD,OAOE;AAAD,YAND,OAME;AAAD,KALI,mBAAkB,YAKrB;AACD,YARD,OAQE;AAAD,YAPD,OAOE;AAAD,KANI,mBAAkB,YAMrB;AACD,YATD,OASE;AAAD,YARD,OAQE;AAAD,KAPI,mBAAkB,YAOrB;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAGR,YAAC;AACD,YAAC;AACD,KAAM,mBAAkB;EACtB,sBAAA;;AAKA,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;AACD,YARD,SAQE;AAAD,YAPD,UAOE;AAAD,QANM,UAAW,aAMhB;EACC,yBAAA;EACI,qBAAA;;ADqBV,YCjBE;EACE,cAAA;EACA,yBAAA;;ADmBJ;ECtEE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,SAAC;AACD,SAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,SAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,SAAC;AACD,SAAC;AACD,KAAM,mBAAkB;EACtB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEJ,SAPD,OAOE;AAAD,SAND,OAME;AAAD,KALI,mBAAkB,SAKrB;AACD,SARD,OAQE;AAAD,SAPD,OAOE;AAAD,KANI,mBAAkB,SAMrB;AACD,SATD,OASE;AAAD,SARD,OAQE;AAAD,KAPI,mBAAkB,SAOrB;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAGR,SAAC;AACD,SAAC;AACD,KAAM,mBAAkB;EACtB,sBAAA;;AAKA,SAHD;AAGC,SAFD;AAEC,QADM,UAAW;AAEjB,SAJD,SAIE;AAAD,SAHD,UAGE;AAAD,QAFM,UAAW,UAEhB;AACD,SALD,SAKE;AAAD,SAJD,UAIE;AAAD,QAHM,UAAW,UAGhB;AACD,SAND,SAME;AAAD,SALD,UAKE;AAAD,QAJM,UAAW,UAIhB;AACD,SAPD,SAOE;AAAD,SAND,UAME;AAAD,QALM,UAAW,UAKhB;AACD,SARD,SAQE;AAAD,SAPD,UAOE;AAAD,QANM,UAAW,UAMhB;EACC,yBAAA;EACI,qBAAA;;ADyBV,SCrBE;EACE,cAAA;EACA,yBAAA;;ADuBJ;EC1EE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,YAAC;AACD,YAAC;AACD,KAAM,mBAAkB;EACtB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEJ,YAPD,OAOE;AAAD,YAND,OAME;AAAD,KALI,mBAAkB,YAKrB;AACD,YARD,OAQE;AAAD,YAPD,OAOE;AAAD,KANI,mBAAkB,YAMrB;AACD,YATD,OASE;AAAD,YARD,OAQE;AAAD,KAPI,mBAAkB,YAOrB;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAGR,YAAC;AACD,YAAC;AACD,KAAM,mBAAkB;EACtB,sBAAA;;AAKA,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;AACD,YARD,SAQE;AAAD,YAPD,UAOE;AAAD,QANM,UAAW,aAMhB;EACC,yBAAA;EACI,qBAAA;;AD6BV,YCzBE;EACE,cAAA;EACA,yBAAA;;AD2BJ;EC9EE,cAAA;EACA,yBAAA;EACA,qBAAA;;AAEA,WAAC;AACD,WAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,WAAC;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEN,WAAC;AACD,WAAC;AACD,KAAM,mBAAkB;EACtB,cAAA;EACA,yBAAA;EACI,qBAAA;;AAEJ,WAPD,OAOE;AAAD,WAND,OAME;AAAD,KALI,mBAAkB,WAKrB;AACD,WARD,OAQE;AAAD,WAPD,OAOE;AAAD,KANI,mBAAkB,WAMrB;AACD,WATD,OASE;AAAD,WARD,OAQE;AAAD,KAPI,mBAAkB,WAOrB;EACC,cAAA;EACA,yBAAA;EACI,qBAAA;;AAGR,WAAC;AACD,WAAC;AACD,KAAM,mBAAkB;EACtB,sBAAA;;AAKA,WAHD;AAGC,WAFD;AAEC,QADM,UAAW;AAEjB,WAJD,SAIE;AAAD,WAHD,UAGE;AAAD,QAFM,UAAW,YAEhB;AACD,WALD,SAKE;AAAD,WAJD,UAIE;AAAD,QAHM,UAAW,YAGhB;AACD,WAND,SAME;AAAD,WALD,UAKE;AAAD,QAJM,UAAW,YAIhB;AACD,WAPD,SAOE;AAAD,WAND,UAME;AAAD,QALM,UAAW,YAKhB;AACD,WARD,SAQE;AAAD,WAPD,UAOE;AAAD,QANM,UAAW,YAMhB;EACC,yBAAA;EACI,qBAAA;;ADiCV,WC7BE;EACE,cAAA;EACA,yBAAA;;ADoCJ;EACE,cAAA;EACA,mBAAA;EACA,gBAAA;;AAEA;AACA,SAAC;AACD,SAAC;AACD,SAAC;AACD,QAAQ,UAAW;EACjB,6BAAA;EnBnCF,wBAAA;EACQ,gBAAA;;AmBqCR;AACA,SAAC;AACD,SAAC;AACD,SAAC;EACC,yBAAA;;AAEF,SAAC;AACD,SAAC;EACC,cAAA;EACA,0BAAA;EACA,6BAAA;;AAIA,SAFD,UAEE;AAAD,QADM,UAAW,UAChB;AACD,SAHD,UAGE;AAAD,QAFM,UAAW,UAEhB;EACC,cAAA;EACA,qBAAA;;AASN;AGnCA,aAAc;EFlCZ,iBAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;;ADsEF;AGxCA,aAAc;EFjCZ,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;AD0EF;AG7CA,aAAc;EFhCZ,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;ADkFF;EACE,cAAA;EACA,WAAA;;AAIF,UAAW;EACT,eAAA;;AAOA,KAHG,eAGF;AAAD,KAFG,cAEF;AAAD,KADG,eACF;EACC,WAAA;;AI1JJ;EACE,UAAA;EvBoLA,wCAAA;EACK,mCAAA;EACG,gCAAA;;AuBpLR,KAAC;EACC,UAAA;;AAIJ;EACE,aAAA;;AAEA,SAAC;EAAW,cAAA;;AACZ,EAAE,SAAC;EAAS,kBAAA;;AACZ,KAAK,SAAC;EAAM,wBAAA;;AAGd;EACE,kBAAA;EACA,SAAA;EACA,gBAAA;EvBuKA,+CAAA;EACQ,uCAAA;EAOR,kCAAA;EACQ,0BAAA;EAGR,wCAAA;EACQ,gCAAA;;AwB1MV;EACE,qBAAA;EACA,QAAA;EACA,SAAA;EACA,gBAAA;EACA,sBAAA;EACA,oBAAA;EACA,sBAAA;EACA,iCAAA;EACA,gCAAA;;AAIF;AACA;EACE,kBAAA;;AAIF,gBAAgB;EACd,UAAA;;AAIF;EACE,kBAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;EACA,aAAA;EACA,WAAA;EACA,gBAAA;EACA,cAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,yBAAA;EAEA,yBAAA;EACA,kBAAA;ExBsBA,mDAAA;EACQ,2CAAA;EwBrBR,4BAAA;;AAKA,cAAC;EACC,QAAA;EACA,UAAA;;AAzBJ,cA6BE;ECrDA,aAAA;EPgEA,yBAAA;EACA,WAAA;EACA,eAAA;EACA,gBAAA;;AM3CF,cAkCE,KAAK;EACH,cAAA;EACA,iBAAA;EACA,WAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;EACA,mBAAA;;AAMF,cADa,KAAK,IACjB;AACD,cAFa,KAAK,IAEjB;EACC,qBAAA;EACA,cAAA;EACA,yBAAA;;AAMF,cADa,UAAU;AAEvB,cAFa,UAAU,IAEtB;AACD,cAHa,UAAU,IAGtB;EACC,cAAA;EACA,qBAAA;EACA,UAAA;EACA,yBAAA;;AASF,cADa,YAAY;AAEzB,cAFa,YAAY,IAExB;AACD,cAHa,YAAY,IAGxB;EACC,cAAA;;AAIF,cARa,YAAY,IAQxB;AACD,cATa,YAAY,IASxB;EACC,qBAAA;EACA,6BAAA;EACA,sBAAA;EE3GF,mEAAA;EF6GE,mBAAA;;AAKJ,KAEE;EACE,cAAA;;AAHJ,KAOE;EACE,UAAA;;AAQJ;EACE,UAAA;EACA,QAAA;;AAQF;EACE,OAAA;EACA,WAAA;;AAIF;EACE,cAAA;EACA,iBAAA;EACA,eAAA;EACA,uBAAA;EACA,cAAA;EACA,mBAAA;;AAIF;EACE,eAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,MAAA;EACA,YAAA;;AAIF,WAAY;EACV,QAAA;EACA,UAAA;;AAQF,OAGE;AAFF,oBAAqB,UAEnB;EACE,aAAA;EACA,uBAAA;EACA,yBAAA;EACA,SAAS,EAAT;;AAPJ,OAUE;AATF,oBAAqB,UASnB;EACE,SAAA;EACA,YAAA;EACA,kBAAA;;AAqBJ,QAZ2C;EACzC,aACE;IArEF,UAAA;IACA,QAAA;;EAmEA,aAME;IAhEF,OAAA;IACA,WAAA;;;AF/IF;AACA;EACE,kBAAA;EACA,qBAAA;EACA,sBAAA;;AAJF,UAKE;AAJF,mBAIE;EACE,kBAAA;EACA,WAAA;;AAEA,UAJF,OAIG;AAAD,mBAJF,OAIG;AACD,UALF,OAKG;AAAD,mBALF,OAKG;AACD,UANF,OAMG;AAAD,mBANF,OAMG;AACD,UAPF,OAOG;AAAD,mBAPF,OAOG;EACC,UAAA;;AAMN,UACE,KAAK;AADP,UAEE,KAAK;AAFP,UAGE,WAAW;AAHb,UAIE,WAAW;EACT,iBAAA;;AAKJ;EACE,iBAAA;;AADF,YAIE;AAJF,YAKE;AALF,YAME;EACE,WAAA;;AAPJ,YASE;AATF,YAUE;AAVF,YAWE;EACE,gBAAA;;AAIJ,UAAW,OAAM,IAAI,cAAc,IAAI,aAAa,IAAI;EACtD,gBAAA;;AAIF,UAAW,OAAM;EACf,cAAA;;AACA,UAFS,OAAM,YAEd,IAAI,aAAa,IAAI;EKlDtB,6BAAA;EACG,0BAAA;;ALsDL,UAAW,OAAM,WAAW,IAAI;AAChC,UAAW,mBAAkB,IAAI;EKhD/B,4BAAA;EACG,yBAAA;;ALoDL,UAAW;EACT,WAAA;;AAEF,UAAW,aAAY,IAAI,cAAc,IAAI,aAAc;EACzD,gBAAA;;AAEF,UAAW,aAAY,YAAY,IAAI,aACrC,OAAM;AADR,UAAW,aAAY,YAAY,IAAI,aAErC;EKrEA,6BAAA;EACG,0BAAA;;ALwEL,UAAW,aAAY,WAAW,IAAI,cAAe,OAAM;EKjEzD,4BAAA;EACG,yBAAA;;ALqEL,UAAW,iBAAgB;AAC3B,UAAU,KAAM;EACd,UAAA;;AAiBF,UAAW,OAAO;EAChB,iBAAA;EACA,kBAAA;;AAEF,UAAW,UAAU;EACnB,kBAAA;EACA,mBAAA;;AAKF,UAAU,KAAM;EtB/Cd,wDAAA;EACQ,gDAAA;;AsBkDR,UAJQ,KAAM,iBAIb;EtBnDD,wBAAA;EACQ,gBAAA;;AsByDV,IAAK;EACH,cAAA;;AAGF,OAAQ;EACN,mBAAA;EACA,sBAAA;;AAGF,OAAQ,QAAQ;EACd,mBAAA;;AAOF,mBACE;AADF,mBAEE;AAFF,mBAGE,aAAa;EACX,cAAA;EACA,WAAA;EACA,WAAA;EACA,eAAA;;AAPJ,mBAWE,aAEE;EACE,WAAA;;AAdN,mBAkBE,OAAO;AAlBT,mBAmBE,OAAO;AAnBT,mBAoBE,aAAa;AApBf,mBAqBE,aAAa;EACX,gBAAA;EACA,cAAA;;AAKF,mBADkB,OACjB,IAAI,cAAc,IAAI;EACrB,gBAAA;;AAEF,mBAJkB,OAIjB,YAAY,IAAI;EACf,4BAAA;EKpKF,6BAAA;EACC,4BAAA;;ALsKD,mBARkB,OAQjB,WAAW,IAAI;EACd,8BAAA;EKhLF,0BAAA;EACC,yBAAA;;ALmLH,mBAAoB,aAAY,IAAI,cAAc,IAAI,aAAc;EAClE,gBAAA;;AAEF,mBAAoB,aAAY,YAAY,IAAI,aAC9C,OAAM;AADR,mBAAoB,aAAY,YAAY,IAAI,aAE9C;EKjLA,6BAAA;EACC,4BAAA;;ALoLH,mBAAoB,aAAY,WAAW,IAAI,cAAe,OAAM;EK7LlE,0BAAA;EACC,yBAAA;;ALoMH;EACE,cAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;;AAJF,oBAKE;AALF,oBAME;EACE,WAAA;EACA,mBAAA;EACA,SAAA;;AATJ,oBAWE,aAAa;EACX,WAAA;;AAZJ,oBAeE,aAAa;EACX,UAAA;;AAiBJ,uBACE,OAEE,MAAK;AAHT,uBAEE,aAAa,OACX,MAAK;AAHT,uBACE,OAGE,MAAK;AAJT,uBAEE,aAAa,OAEX,MAAK;EACH,kBAAA;EACA,MAAM,gBAAN;EACA,oBAAA;;AM1ON;EACE,kBAAA;EACA,cAAA;EACA,yBAAA;;AAGA,YAAC;EACC,WAAA;EACA,eAAA;EACA,gBAAA;;AATJ,YAYE;EAGE,kBAAA;EACA,UAAA;EAKA,WAAA;EAEA,WAAA;EACA,gBAAA;;AASJ,eAAgB;AAChB,eAAgB;AAChB,eAAgB,mBAAmB;EX4BjC,YAAA;EACA,iBAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;;AAEA,MAAM,eWpCQ;AXoCd,MAAM,eWnCQ;AXmCd,MAAM,eWlCQ,mBAAmB;EXmC/B,YAAA;EACA,iBAAA;;AAGF,QAAQ,eWzCM;AXyCd,QAAQ,eWxCM;AXwCd,QAAQ,eWvCM,mBAAmB;AXwCjC,MAAM,UAAU,eW1CF;AX0Cd,MAAM,UAAU,eWzCF;AXyCd,MAAM,UAAU,eWxCF,mBAAmB;EXyC/B,YAAA;;AWtCJ,eAAgB;AAChB,eAAgB;AAChB,eAAgB,mBAAmB;EXuBjC,YAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;AAEA,MAAM,eW/BQ;AX+Bd,MAAM,eW9BQ;AX8Bd,MAAM,eW7BQ,mBAAmB;EX8B/B,YAAA;EACA,iBAAA;;AAGF,QAAQ,eWpCM;AXoCd,QAAQ,eWnCM;AXmCd,QAAQ,eWlCM,mBAAmB;AXmCjC,MAAM,UAAU,eWrCF;AXqCd,MAAM,UAAU,eWpCF;AXoCd,MAAM,UAAU,eWnCF,mBAAmB;EXoC/B,YAAA;;AW7BJ;AACA;AACA,YAAa;EACX,mBAAA;;AAEA,kBAAC,IAAI,cAAc,IAAI;AAAvB,gBAAC,IAAI,cAAc,IAAI;AAAvB,YAHW,cAGV,IAAI,cAAc,IAAI;EACrB,gBAAA;;AAIJ;AACA;EACE,SAAA;EACA,mBAAA;EACA,sBAAA;;AAKF;EACE,gBAAA;EACA,eAAA;EACA,mBAAA;EACA,cAAA;EACA,cAAA;EACA,kBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;;AAGA,kBAAC;EACC,gBAAA;EACA,eAAA;EACA,kBAAA;;AAEF,kBAAC;EACC,iBAAA;EACA,eAAA;EACA,kBAAA;;AApBJ,kBAwBE,MAAK;AAxBP,kBAyBE,MAAK;EACH,aAAA;;AAKJ,YAAa,cAAa;AAC1B,kBAAkB;AAClB,gBAAgB,YAAa;AAC7B,gBAAgB,YAAa,aAAa;AAC1C,gBAAgB,YAAa;AAC7B,gBAAgB,WAAY,OAAM,IAAI,aAAa,IAAI;AACvD,gBAAgB,WAAY,aAAY,IAAI,aAAc;EDtGxD,6BAAA;EACG,0BAAA;;ACwGL,kBAAkB;EAChB,eAAA;;AAEF,YAAa,cAAa;AAC1B,kBAAkB;AAClB,gBAAgB,WAAY;AAC5B,gBAAgB,WAAY,aAAa;AACzC,gBAAgB,WAAY;AAC5B,gBAAgB,YAAa,OAAM,IAAI;AACvC,gBAAgB,YAAa,aAAY,IAAI,cAAe;ED1G1D,4BAAA;EACG,yBAAA;;AC4GL,kBAAkB;EAChB,cAAA;;AAKF;EACE,kBAAA;EAGA,YAAA;EACA,mBAAA;;AALF,gBASE;EACE,kBAAA;;AAVJ,gBASE,OAEE;EACE,iBAAA;;AAGF,gBANF,OAMG;AACD,gBAPF,OAOG;AACD,gBARF,OAQG;EACC,UAAA;;AAKJ,gBAAC,YACC;AADF,gBAAC,YAEC;EACE,kBAAA;;AAGJ,gBAAC,WACC;AADF,gBAAC,WAEC;EACE,UAAA;EACA,iBAAA;;AC3JN;EACE,gBAAA;EACA,eAAA;EACA,gBAAA;;AAHF,IAME;EACE,kBAAA;EACA,cAAA;;AARJ,IAME,KAIE;EACE,kBAAA;EACA,cAAA;EACA,kBAAA;;AACA,IARJ,KAIE,IAIG;AACD,IATJ,KAIE,IAKG;EACC,qBAAA;EACA,yBAAA;;AAKJ,IAhBF,KAgBG,SAAU;EACT,cAAA;;AAEA,IAnBJ,KAgBG,SAAU,IAGR;AACD,IApBJ,KAgBG,SAAU,IAIR;EACC,cAAA;EACA,qBAAA;EACA,6BAAA;EACA,mBAAA;;AAOJ,IADF,MAAM;AAEJ,IAFF,MAAM,IAEH;AACD,IAHF,MAAM,IAGH;EACC,yBAAA;EACA,qBAAA;;AAzCN,IAkDE;EJpDA,aAAA;EPgEA,yBAAA;EACA,WAAA;EACA,eAAA;EACA,gBAAA;;AWjEF,IAyDE,KAAK,IAAI;EACP,eAAA;;AASJ;EACE,gCAAA;;AADF,SAEE;EACE,WAAA;EAEA,mBAAA;;AALJ,SAEE,KAME;EACE,iBAAA;EACA,uBAAA;EACA,6BAAA;EACA,0BAAA;;AACA,SAXJ,KAME,IAKG;EACC,6CAAA;;AAMF,SAlBJ,KAiBG,OAAQ;AAEP,SAnBJ,KAiBG,OAAQ,IAEN;AACD,SApBJ,KAiBG,OAAQ,IAGN;EACC,cAAA;EACA,yBAAA;EACA,yBAAA;EACA,gCAAA;EACA,eAAA;;AAKN,SAAC;EAqDD,WAAA;EA8BA,gBAAA;;AAnFA,SAAC,cAuDD;EACE,WAAA;;AAxDF,SAAC,cAuDD,KAEE;EACE,kBAAA;EACA,kBAAA;;AA3DJ,SAAC,cA+DD,YAAY;EACV,SAAA;EACA,UAAA;;AAYJ,QATqC;EASrC,SA7EG,cAqEC;IACE,mBAAA;IACA,SAAA;;EAMN,SA7EG,cAqEC,KAGE;IACE,gBAAA;;;AAzEN,SAAC,cAqFD,KAAK;EAEH,eAAA;EACA,kBAAA;;AAxFF,SAAC,cA2FD,UAAU;AA3FV,SAAC,cA4FD,UAAU,IAAG;AA5Fb,SAAC,cA6FD,UAAU,IAAG;EACX,yBAAA;;AAcJ,QAXqC;EAWrC,SA5GG,cAkGC,KAAK;IACH,gCAAA;IACA,0BAAA;;EAQN,SA5GG,cAsGC,UAAU;EAMd,SA5GG,cAuGC,UAAU,IAAG;EAKjB,SA5GG,cAwGC,UAAU,IAAG;IACX,4BAAA;;;AAhGN,UACE;EACE,WAAA;;AAFJ,UACE,KAIE;EACE,kBAAA;;AANN,UACE,KAOE;EACE,gBAAA;;AAKA,UAbJ,KAYG,OAAQ;AAEP,UAdJ,KAYG,OAAQ,IAEN;AACD,UAfJ,KAYG,OAAQ,IAGN;EACC,cAAA;EACA,yBAAA;;AAQR,YACE;EACE,WAAA;;AAFJ,YACE,KAEE;EACE,eAAA;EACA,cAAA;;AAYN;EACE,WAAA;;AADF,cAGE;EACE,WAAA;;AAJJ,cAGE,KAEE;EACE,kBAAA;EACA,kBAAA;;AAPN,cAWE,YAAY;EACV,SAAA;EACA,UAAA;;AAYJ,QATqC;EASrC,cARI;IACE,mBAAA;IACA,SAAA;;EAMN,cARI,KAGE;IACE,gBAAA;;;AASR;EACE,gBAAA;;AADF,mBAGE,KAAK;EAEH,eAAA;EACA,kBAAA;;AANJ,mBASE,UAAU;AATZ,mBAUE,UAAU,IAAG;AAVf,mBAWE,UAAU,IAAG;EACX,yBAAA;;AAcJ,QAXqC;EAWrC,mBAVI,KAAK;IACH,gCAAA;IACA,0BAAA;;EAQN,mBANI,UAAU;EAMd,mBALI,UAAU,IAAG;EAKjB,mBAJI,UAAU,IAAG;IACX,4BAAA;;;AAUN,YACE;EACE,aAAA;;AAFJ,YAIE;EACE,cAAA;;AASJ,SAAU;EAER,gBAAA;EF3OA,0BAAA;EACC,yBAAA;;AGMH;EACE,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,6BAAA;;AAQF,QAH6C;EAG7C;IAFI,kBAAA;;;AAgBJ,QAH6C;EAG7C;IAFI,WAAA;;;AAeJ;EACE,mBAAA;EACA,mBAAA;EACA,kBAAA;EACA,iCAAA;EACA,kDAAA;EAEA,iCAAA;;AAEA,gBAAC;EACC,gBAAA;;AA4BJ,QAzB6C;EAyB7C;IAxBI,WAAA;IACA,aAAA;IACA,gBAAA;;EAEA,gBAAC;IACC,yBAAA;IACA,uBAAA;IACA,iBAAA;IACA,4BAAA;;EAGF,gBAAC;IACC,mBAAA;;EAKF,iBAAkB;EAClB,kBAAmB;EACnB,oBAAqB;IACnB,eAAA;IACA,gBAAA;;;AAKN,iBAEE;AADF,oBACE;EACE,iBAAA;;AAKF,QAH4C,8BAA6B;EAGzE,iBANA;EAMA,oBANA;IAII,iBAAA;;;AAUN,UAEE;AADF,gBACE;AAFF,UAGE;AAFF,gBAEE;EACE,mBAAA;EACA,kBAAA;;AAMF,QAJ6C;EAI7C,UATA;EASA,gBATA;EASA,UARA;EAQA,gBARA;IAKI,eAAA;IACA,cAAA;;;AAaN;EACE,aAAA;EACA,qBAAA;;AAKF,QAH6C;EAG7C;IAFI,gBAAA;;;AAKJ;AACA;EACE,eAAA;EACA,QAAA;EACA,OAAA;EACA,aAAA;;AAMF,QAH6C;EAG7C;EAAA;IAFI,gBAAA;;;AAGJ;EACE,MAAA;EACA,qBAAA;;AAEF;EACE,SAAA;EACA,gBAAA;EACA,qBAAA;;AAMF;EACE,WAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,YAAA;;AAEA,aAAC;AACD,aAAC;EACC,qBAAA;;AATJ,aAYE;EACE,cAAA;;AASJ,QAN6C;EACzC,OAAQ,aAAa;EACrB,OAAQ,mBAAmB;IACzB,kBAAA;;;AAWN;EACE,kBAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EC9LA,eAAA;EACA,kBAAA;ED+LA,6BAAA;EACA,sBAAA;EACA,6BAAA;EACA,kBAAA;;AAIA,cAAC;EACC,UAAA;;AAdJ,cAkBE;EACE,cAAA;EACA,WAAA;EACA,WAAA;EACA,kBAAA;;AAtBJ,cAwBE,UAAU;EACR,eAAA;;AAMJ,QAH6C;EAG7C;IAFI,aAAA;;;AAUJ;EACE,mBAAA;;AADF,WAGE,KAAK;EACH,iBAAA;EACA,oBAAA;EACA,iBAAA;;AA4BF,QAzB+C;EAyB/C,WAvBE,MAAM;IACJ,gBAAA;IACA,WAAA;IACA,WAAA;IACA,aAAA;IACA,6BAAA;IACA,SAAA;IACA,gBAAA;;EAgBJ,WAvBE,MAAM,eAQJ,KAAK;EAeT,WAvBE,MAAM,eASJ;IACE,0BAAA;;EAaN,WAvBE,MAAM,eAYJ,KAAK;IACH,iBAAA;;EACA,WAdJ,MAAM,eAYJ,KAAK,IAEF;EACD,WAfJ,MAAM,eAYJ,KAAK,IAGF;IACC,sBAAA;;;AAmBV,QAZ6C;EAY7C;IAXI,WAAA;IACA,SAAA;;EAUJ,WARI;IACE,WAAA;;EAON,WARI,KAEE;IACE,iBAAA;IACA,oBAAA;;;AAYR;EACE,kBAAA;EACA,mBAAA;EACA,kBAAA;EACA,iCAAA;EACA,oCAAA;E9B9NA,4FAAA;EACQ,oFAAA;E+B/DR,gBAAA;EACA,mBAAA;;AfghBF,QAjEqC;EAiErC,YA/DI;IACE,qBAAA;IACA,gBAAA;IACA,sBAAA;;EA4DN,YAxDI;IACE,qBAAA;IACA,WAAA;IACA,sBAAA;;EAqDN,YAjDI;IACE,qBAAA;;EAgDN,YA7CI;IACE,qBAAA;IACA,sBAAA;;EA2CN,YA7CI,aAIE;EAyCN,YA7CI,aAKE;EAwCN,YA7CI,aAME;IACE,WAAA;;EAsCR,YAjCI,aAAa;IACX,WAAA;;EAgCN,YA7BI;IACE,gBAAA;IACA,sBAAA;;EA2BN,YAtBI;EAsBJ,YArBI;IACE,qBAAA;IACA,aAAA;IACA,gBAAA;IACA,sBAAA;;EAiBN,YAtBI,OAOE;EAeN,YArBI,UAME;IACE,eAAA;;EAcR,YAXI,OAAO,MAAK;EAWhB,YAVI,UAAU,MAAK;IACb,kBAAA;IACA,cAAA;;EAQN,YAJI,cAAc;IACZ,MAAA;;;AcnOJ,QAPiD;EAOjD,YARA;IAEI,kBAAA;;EAEA,YAJJ,YAIK;IACC,gBAAA;;;AAkBR,QAT6C;EAS7C;IARI,WAAA;IACA,SAAA;IACA,cAAA;IACA,eAAA;IACA,cAAA;IACA,iBAAA;I9BzPF,wBAAA;IACQ,gBAAA;;;A8BiQV,WAAY,KAAK;EACf,aAAA;EHpUA,0BAAA;EACC,yBAAA;;AGuUH,oBAAqB,YAAY,KAAK;EACpC,gBAAA;EHzUA,4BAAA;EACC,2BAAA;EAOD,6BAAA;EACC,4BAAA;;AG0UH;EChVE,gBAAA;EACA,mBAAA;;ADkVA,WAAC;ECnVD,gBAAA;EACA,mBAAA;;ADqVA,WAAC;ECtVD,gBAAA;EACA,mBAAA;;AD+VF;EChWE,gBAAA;EACA,mBAAA;;ADuWF,QAL6C;EAK7C;IAJI,WAAA;IACA,iBAAA;IACA,kBAAA;;;AA8BJ,QAjB2C;EACzC;IExWA,sBAAA;ICRW,WAAA;;EHiXX;IE5WA,uBAAA;ICNY,YAAA;IHoXV,mBAAA;;EAFF,aAIE;IACE,eAAA;;;AAUN;EACE,yBAAA;EACA,qBAAA;;AAFF,eAIE;EACE,cAAA;;AACA,eAFF,cAEG;AACD,eAHF,cAGG;EACC,cAAA;EACA,6BAAA;;AATN,eAaE;EACE,cAAA;;AAdJ,eAiBE,YACE,KAAK;EACH,cAAA;;AAEA,eAJJ,YACE,KAAK,IAGF;AACD,eALJ,YACE,KAAK,IAIF;EACC,cAAA;EACA,6BAAA;;AAIF,eAXJ,YAUE,UAAU;AAER,eAZJ,YAUE,UAAU,IAEP;AACD,eAbJ,YAUE,UAAU,IAGP;EACC,cAAA;EACA,yBAAA;;AAIF,eAnBJ,YAkBE,YAAY;AAEV,eApBJ,YAkBE,YAAY,IAET;AACD,eArBJ,YAkBE,YAAY,IAGT;EACC,cAAA;EACA,6BAAA;;AAxCR,eA6CE;EACE,qBAAA;;AACA,eAFF,eAEG;AACD,eAHF,eAGG;EACC,yBAAA;;AAjDN,eA6CE,eAME;EACE,yBAAA;;AApDN,eAwDE;AAxDF,eAyDE;EACE,qBAAA;;AAOE,eAHJ,YAEE,QAAQ;AAEN,eAJJ,YAEE,QAAQ,IAEL;AACD,eALJ,YAEE,QAAQ,IAGL;EACC,yBAAA;EACA,cAAA;;AAiCN,QA7BiD;EA6BjD,eAxCA,YAaI,MAAM,eACJ,KAAK;IACH,cAAA;;EACA,eAhBR,YAaI,MAAM,eACJ,KAAK,IAEF;EACD,eAjBR,YAaI,MAAM,eACJ,KAAK,IAGF;IACC,cAAA;IACA,6BAAA;;EAIF,eAvBR,YAaI,MAAM,eASJ,UAAU;EAER,eAxBR,YAaI,MAAM,eASJ,UAAU,IAEP;EACD,eAzBR,YAaI,MAAM,eASJ,UAAU,IAGP;IACC,cAAA;IACA,yBAAA;;EAIF,eA/BR,YAaI,MAAM,eAiBJ,YAAY;EAEV,eAhCR,YAaI,MAAM,eAiBJ,YAAY,IAET;EACD,eAjCR,YAaI,MAAM,eAiBJ,YAAY,IAGT;IACC,cAAA;IACA,6BAAA;;;AAjGZ,eA6GE;EACE,cAAA;;AACA,eAFF,aAEG;EACC,cAAA;;AAhHN,eAoHE;EACE,cAAA;;AACA,eAFF,UAEG;AACD,eAHF,UAGG;EACC,cAAA;;AAIA,eARJ,UAMG,UAEE;AAAD,QADM,UAAW,gBAPrB,UAQK;AACD,eATJ,UAMG,UAGE;AAAD,QAFM,UAAW,gBAPrB,UASK;EACC,cAAA;;AAQR;EACE,yBAAA;EACA,qBAAA;;AAFF,eAIE;EACE,cAAA;;AACA,eAFF,cAEG;AACD,eAHF,cAGG;EACC,cAAA;EACA,6BAAA;;AATN,eAaE;EACE,cAAA;;AAdJ,eAiBE,YACE,KAAK;EACH,cAAA;;AAEA,eAJJ,YACE,KAAK,IAGF;AACD,eALJ,YACE,KAAK,IAIF;EACC,cAAA;EACA,6BAAA;;AAIF,eAXJ,YAUE,UAAU;AAER,eAZJ,YAUE,UAAU,IAEP;AACD,eAbJ,YAUE,UAAU,IAGP;EACC,cAAA;EACA,yBAAA;;AAIF,eAnBJ,YAkBE,YAAY;AAEV,eApBJ,YAkBE,YAAY,IAET;AACD,eArBJ,YAkBE,YAAY,IAGT;EACC,cAAA;EACA,6BAAA;;AAxCR,eA8CE;EACE,qBAAA;;AACA,eAFF,eAEG;AACD,eAHF,eAGG;EACC,yBAAA;;AAlDN,eA8CE,eAME;EACE,yBAAA;;AArDN,eAyDE;AAzDF,eA0DE;EACE,qBAAA;;AAME,eAFJ,YACE,QAAQ;AAEN,eAHJ,YACE,QAAQ,IAEL;AACD,eAJJ,YACE,QAAQ,IAGL;EACC,yBAAA;EACA,cAAA;;AAuCN,QAnCiD;EAmCjD,eA7CA,YAYI,MAAM,eACJ;IACE,qBAAA;;EA+BR,eA7CA,YAYI,MAAM,eAIJ;IACE,yBAAA;;EA4BR,eA7CA,YAYI,MAAM,eAOJ,KAAK;IACH,cAAA;;EACA,eArBR,YAYI,MAAM,eAOJ,KAAK,IAEF;EACD,eAtBR,YAYI,MAAM,eAOJ,KAAK,IAGF;IACC,cAAA;IACA,6BAAA;;EAIF,eA5BR,YAYI,MAAM,eAeJ,UAAU;EAER,eA7BR,YAYI,MAAM,eAeJ,UAAU,IAEP;EACD,eA9BR,YAYI,MAAM,eAeJ,UAAU,IAGP;IACC,cAAA;IACA,yBAAA;;EAIF,eApCR,YAYI,MAAM,eAuBJ,YAAY;EAEV,eArCR,YAYI,MAAM,eAuBJ,YAAY,IAET;EACD,eAtCR,YAYI,MAAM,eAuBJ,YAAY,IAGT;IACC,cAAA;IACA,6BAAA;;;AAvGZ,eA8GE;EACE,cAAA;;AACA,eAFF,aAEG;EACC,cAAA;;AAjHN,eAqHE;EACE,cAAA;;AACA,eAFF,UAEG;AACD,eAHF,UAGG;EACC,cAAA;;AAIA,eARJ,UAMG,UAEE;AAAD,QADM,UAAW,gBAPrB,UAQK;AACD,eATJ,UAMG,UAGE;AAAD,QAFM,UAAW,gBAPrB,UASK;EACC,cAAA;;AI1oBR;EACE,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,6BAAA;EACA,kBAAA;;AALF,WAOE;EACE,qBAAA;;AARJ,WAOE,KAGE,KAAI;EACF,SAAS,YAAT;EACA,cAAA;EACA,cAAA;;AAbN,WAiBE;EACE,cAAA;;ACpBJ;EACE,qBAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;;AAJF,WAME;EACE,eAAA;;AAPJ,WAME,KAEE;AARJ,WAME,KAGE;EACE,kBAAA;EACA,WAAA;EACA,gBAAA;EACA,uBAAA;EACA,qBAAA;EACA,cAAA;EACA,yBAAA;EACA,yBAAA;EACA,iBAAA;;AAEF,WAdF,KAcG,YACC;AADF,WAdF,KAcG,YAEC;EACE,cAAA;ERXN,8BAAA;EACG,2BAAA;;AQcD,WArBF,KAqBG,WACC;AADF,WArBF,KAqBG,WAEC;ERzBJ,+BAAA;EACG,4BAAA;;AQgCD,WAFF,KAAK,IAEF;AAAD,WADF,KAAK,OACF;AACD,WAHF,KAAK,IAGF;AAAD,WAFF,KAAK,OAEF;EACC,UAAA;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAMF,WAFF,UAAU;AAER,WADF,UAAU;AAER,WAHF,UAAU,IAGP;AAAD,WAFF,UAAU,OAEP;AACD,WAJF,UAAU,IAIP;AAAD,WAHF,UAAU,OAGP;EACC,UAAA;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;;AAvDN,WA2DE,YACE;AA5DJ,WA2DE,YAEE,OAAM;AA7DV,WA2DE,YAGE,OAAM;AA9DV,WA2DE,YAIE;AA/DJ,WA2DE,YAKE,IAAG;AAhEP,WA2DE,YAME,IAAG;EACD,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,mBAAA;;AASN,cC9EE,KACE;AD6EJ,cC9EE,KAEE;EACE,iBAAA;EACA,eAAA;EACA,sBAAA;;AAEF,cAPF,KAOG,YACC;AADF,cAPF,KAOG,YAEC;ETGJ,8BAAA;EACG,2BAAA;;ASAD,cAbF,KAaG,WACC;AADF,cAbF,KAaG,WAEC;ETXJ,+BAAA;EACG,4BAAA;;AQ8EL,cCnFE,KACE;ADkFJ,cCnFE,KAEE;EACE,gBAAA;EACA,eAAA;EACA,gBAAA;;AAEF,cAPF,KAOG,YACC;AADF,cAPF,KAOG,YAEC;ETGJ,8BAAA;EACG,2BAAA;;ASAD,cAbF,KAaG,WACC;AADF,cAbF,KAaG,WAEC;ETXJ,+BAAA;EACG,4BAAA;;AUHL;EACE,eAAA;EACA,cAAA;EACA,gBAAA;EACA,kBAAA;;AAJF,MAME;EACE,eAAA;;AAPJ,MAME,GAEE;AARJ,MAME,GAGE;EACE,qBAAA;EACA,iBAAA;EACA,yBAAA;EACA,yBAAA;EACA,gBAAA;;AAdN,MAME,GAWE,IAAG;AAjBP,MAME,GAYE,IAAG;EACD,qBAAA;EACA,yBAAA;;AApBN,MAwBE,MACE;AAzBJ,MAwBE,MAEE;EACE,YAAA;;AA3BN,MA+BE,UACE;AAhCJ,MA+BE,UAEE;EACE,WAAA;;AAlCN,MAsCE,UACE;AAvCJ,MAsCE,UAEE,IAAG;AAxCP,MAsCE,UAGE,IAAG;AAzCP,MAsCE,UAIE;EACE,cAAA;EACA,yBAAA;EACA,mBAAA;;AC9CN;EACE,eAAA;EACA,uBAAA;EACA,cAAA;EACA,iBAAA;EACA,cAAA;EACA,cAAA;EACA,kBAAA;EACA,mBAAA;EACA,wBAAA;EACA,oBAAA;;AAIE,CADD,MACE;AACD,CAFD,MAEE;EACC,cAAA;EACA,qBAAA;EACA,eAAA;;AAKJ,MAAC;EACC,aAAA;;AAIF,IAAK;EACH,kBAAA;EACA,SAAA;;AAOJ;ECtCE,yBAAA;;AAGE,cADD,MACE;AACD,cAFD,MAEE;EACC,yBAAA;;ADqCN;EC1CE,yBAAA;;AAGE,cADD,MACE;AACD,cAFD,MAEE;EACC,yBAAA;;ADyCN;EC9CE,yBAAA;;AAGE,cADD,MACE;AACD,cAFD,MAEE;EACC,yBAAA;;AD6CN;EClDE,yBAAA;;AAGE,WADD,MACE;AACD,WAFD,MAEE;EACC,yBAAA;;ADiDN;ECtDE,yBAAA;;AAGE,cADD,MACE;AACD,cAFD,MAEE;EACC,yBAAA;;ADqDN;EC1DE,yBAAA;;AAGE,aADD,MACE;AACD,aAFD,MAEE;EACC,yBAAA;;ACFN;EACE,qBAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;EACA,cAAA;EACA,sBAAA;EACA,mBAAA;EACA,kBAAA;EACA,yBAAA;EACA,kBAAA;;AAGA,MAAC;EACC,aAAA;;AAIF,IAAK;EACH,kBAAA;EACA,SAAA;;AAGF,OAAQ;AACR,aAAc,OAAO;EACnB,MAAA;EACA,gBAAA;;AAKA,CADD,MACE;AACD,CAFD,MAEE;EACC,cAAA;EACA,qBAAA;EACA,eAAA;;AAKJ,gBAAgB,OAAQ;AACxB,UAAW,UAAU,IAAI;EACvB,cAAA;EACA,yBAAA;;AAGF,gBAAiB;EACf,YAAA;;AAGF,gBAAiB,SAAI;EACnB,iBAAA;;AAGF,UAAW,KAAK,IAAI;EAClB,gBAAA;;AC1DJ;EACE,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,cAAA;EACA,yBAAA;;AALF,UAOE;AAPF,UAQE;EACE,cAAA;;AATJ,UAYE;EACE,mBAAA;EACA,eAAA;EACA,gBAAA;;AAfJ,UAkBE;EACE,yBAAA;;AAGF,UAAW;AACX,gBAAiB;EACf,kBAAA;;AAxBJ,UA2BE;EACE,eAAA;;AAkBJ,mBAfgD;EAehD;IAdI,iBAAA;IACA,oBAAA;;EAEA,UAAW;EACX,gBAAiB;IACf,kBAAA;IACA,mBAAA;;EAQN,UALI;EAKJ,UAJI;IACE,eAAA;;;AtC1CN;EACE,cAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;EHiLA,2CAAA;EACK,sCAAA;EACG,mCAAA;;AG1LV,UAUE;AAVF,UAWE,EAAE;EAEA,iBAAA;EACA,kBAAA;;AAIF,CAAC,UAAC;AACF,CAAC,UAAC;AACF,CAAC,UAAC;EACA,qBAAA;;AArBJ,UAyBE;EACE,YAAA;EACA,cAAA;;AuCzBJ;EACE,YAAA;EACA,mBAAA;EACA,6BAAA;EACA,kBAAA;;AAJF,MAOE;EACE,aAAA;EAEA,cAAA;;AAVJ,MAcE;EACE,gBAAA;;AAfJ,MAmBE;AAnBF,MAoBE;EACE,gBAAA;;AArBJ,MAwBE,IAAI;EACF,eAAA;;AAQJ;AACA;EACE,mBAAA;;AAFF,kBAKE;AAJF,kBAIE;EACE,kBAAA;EACA,SAAA;EACA,YAAA;EACA,cAAA;;AAQJ;ECvDE,yBAAA;EACA,qBAAA;EACA,cAAA;;ADqDF,cCnDE;EACE,yBAAA;;ADkDJ,cChDE;EACE,cAAA;;ADmDJ;EC3DE,yBAAA;EACA,qBAAA;EACA,cAAA;;ADyDF,WCvDE;EACE,yBAAA;;ADsDJ,WCpDE;EACE,cAAA;;ADuDJ;EC/DE,yBAAA;EACA,qBAAA;EACA,cAAA;;AD6DF,cC3DE;EACE,yBAAA;;AD0DJ,cCxDE;EACE,cAAA;;AD2DJ;ECnEE,yBAAA;EACA,qBAAA;EACA,cAAA;;ADiEF,aC/DE;EACE,yBAAA;;AD8DJ,aC5DE;EACE,cAAA;;ACFJ;EACE;IAAQ,2BAAA;;EACR;IAAQ,wBAAA;;;AAIV;EACE;IAAQ,2BAAA;;EACR;IAAQ,wBAAA;;;AAQV;EACE,gBAAA;EACA,YAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;E5CsCA,sDAAA;EACQ,8CAAA;;A4ClCV;EACE,WAAA;EACA,SAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;EACA,kBAAA;EACA,yBAAA;E5CyBA,sDAAA;EACQ,8CAAA;EAyHR,mCAAA;EACK,8BAAA;EACG,2BAAA;;A4C3IV,iBAAkB;AAClB;ECAI,kBAAkB,2LAAlB;EACA,kBAAkB,sLAAlB;EACA,kBAAkB,mLAAlB;E3BOA,kBAAkB,0QAAlB;EACA,kBAAkB,kQAAlB;E0BRF,0BAAA;;AAOF,SAAS,OAAQ;AACjB,aAAa;E5C7CX,0DAAA;EACK,qDAAA;EACG,kDAAA;;A4CmDV;EErEE,yBAAA;;AAGA,iBAAkB;EDgDhB,kBAAkB,2LAAlB;EACA,kBAAkB,sLAAlB;EACA,kBAAkB,mLAAlB;E3BOA,kBAAkB,0QAAlB;EACA,kBAAkB,kQAAlB;;A0BYJ;EEzEE,yBAAA;;AAGA,iBAAkB;EDgDhB,kBAAkB,2LAAlB;EACA,kBAAkB,sLAAlB;EACA,kBAAkB,mLAAlB;E3BOA,kBAAkB,0QAAlB;EACA,kBAAkB,kQAAlB;;A0BgBJ;EE7EE,yBAAA;;AAGA,iBAAkB;EDgDhB,kBAAkB,2LAAlB;EACA,kBAAkB,sLAAlB;EACA,kBAAkB,mLAAlB;E3BOA,kBAAkB,0QAAlB;EACA,kBAAkB,kQAAlB;;A0BoBJ;EEjFE,yBAAA;;AAGA,iBAAkB;EDgDhB,kBAAkB,2LAAlB;EACA,kBAAkB,sLAAlB;EACA,kBAAkB,mLAAlB;E3BOA,kBAAkB,0QAAlB;EACA,kBAAkB,kQAAlB;;A6BhEJ;EAEE,gBAAA;;AAEA,MAAC;EACC,aAAA;;AAIJ;AACA;EACE,OAAA;EACA,gBAAA;;AAGF;EACE,cAAA;;AAGF;EACE,cAAA;;AAGA,aAAC;EACC,eAAA;;AAIJ;AACA,MAAO;EACL,kBAAA;;AAGF;AACA,MAAO;EACL,mBAAA;;AAGF;AACA;AACA;EACE,mBAAA;EACA,mBAAA;;AAGF;EACE,sBAAA;;AAGF;EACE,sBAAA;;AAIF;EACE,aAAA;EACA,kBAAA;;AAMF;EACE,eAAA;EACA,gBAAA;;ACvDF;EAEE,mBAAA;EACA,eAAA;;AAQF;EACE,kBAAA;EACA,cAAA;EACA,kBAAA;EAEA,mBAAA;EACA,yBAAA;EACA,yBAAA;;AAGA,gBAAC;ErB3BD,0BAAA;EACC,yBAAA;;AqB6BD,gBAAC;EACC,gBAAA;ErBvBF,6BAAA;EACC,4BAAA;;AqBiCH,CAAC;AACD,MAAM;EACJ,cAAA;;AAFF,CAAC,gBAIC;AAHF,MAAM,gBAGJ;EACE,cAAA;;AAIF,CATD,gBASE;AAAD,MARI,gBAQH;AACD,CAVD,gBAUE;AAAD,MATI,gBASH;EACC,qBAAA;EACA,cAAA;EACA,yBAAA;;AAIJ,MAAM;EACJ,WAAA;EACA,gBAAA;;AAKA,gBAAC;AACD,gBAAC,SAAS;AACV,gBAAC,SAAS;EACR,yBAAA;EACA,cAAA;EACA,mBAAA;;AALF,gBAAC,SAQC;AAPF,gBAAC,SAAS,MAOR;AANF,gBAAC,SAAS,MAMR;EACE,cAAA;;AATJ,gBAAC,SAWC;AAVF,gBAAC,SAAS,MAUR;AATF,gBAAC,SAAS,MASR;EACE,cAAA;;AAKJ,gBAAC;AACD,gBAAC,OAAO;AACR,gBAAC,OAAO;EACN,UAAA;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AANF,gBAAC,OASC;AARF,gBAAC,OAAO,MAQN;AAPF,gBAAC,OAAO,MAON;AATF,gBAAC,OAUC,yBAAyB;AAT3B,gBAAC,OAAO,MASN,yBAAyB;AAR3B,gBAAC,OAAO,MAQN,yBAAyB;AAV3B,gBAAC,OAWC,yBAAyB;AAV3B,gBAAC,OAAO,MAUN,yBAAyB;AAT3B,gBAAC,OAAO,MASN,yBAAyB;EACvB,cAAA;;AAZJ,gBAAC,OAcC;AAbF,gBAAC,OAAO,MAaN;AAZF,gBAAC,OAAO,MAYN;EACE,cAAA;;AClGJ,iBAAiB;EACf,cAAA;EACA,yBAAA;;AAEA,CAAC,iBAJc;AAKf,MAAM,iBALS;EAMb,cAAA;;AAFF,CAAC,iBAJc,OAQb;AAHF,MAAM,iBALS,OAQb;EACE,cAAA;;AAGF,CARD,iBAJc,OAYZ;AAAD,MAPI,iBALS,OAYZ;AACD,CATD,iBAJc,OAaZ;AAAD,MARI,iBALS,OAaZ;EACC,cAAA;EACA,yBAAA;;AAEF,CAbD,iBAJc,OAiBZ;AAAD,MAZI,iBALS,OAiBZ;AACD,CAdD,iBAJc,OAkBZ,OAAO;AAAR,MAbI,iBALS,OAkBZ,OAAO;AACR,CAfD,iBAJc,OAmBZ,OAAO;AAAR,MAdI,iBALS,OAmBZ,OAAO;EACN,WAAA;EACA,yBAAA;EACA,qBAAA;;AAtBN,iBAAiB;EACf,cAAA;EACA,yBAAA;;AAEA,CAAC,iBAJc;AAKf,MAAM,iBALS;EAMb,cAAA;;AAFF,CAAC,iBAJc,IAQb;AAHF,MAAM,iBALS,IAQb;EACE,cAAA;;AAGF,CARD,iBAJc,IAYZ;AAAD,MAPI,iBALS,IAYZ;AACD,CATD,iBAJc,IAaZ;AAAD,MARI,iBALS,IAaZ;EACC,cAAA;EACA,yBAAA;;AAEF,CAbD,iBAJc,IAiBZ;AAAD,MAZI,iBALS,IAiBZ;AACD,CAdD,iBAJc,IAkBZ,OAAO;AAAR,MAbI,iBALS,IAkBZ,OAAO;AACR,CAfD,iBAJc,IAmBZ,OAAO;AAAR,MAdI,iBALS,IAmBZ,OAAO;EACN,WAAA;EACA,yBAAA;EACA,qBAAA;;AAtBN,iBAAiB;EACf,cAAA;EACA,yBAAA;;AAEA,CAAC,iBAJc;AAKf,MAAM,iBALS;EAMb,cAAA;;AAFF,CAAC,iBAJc,OAQb;AAHF,MAAM,iBALS,OAQb;EACE,cAAA;;AAGF,CARD,iBAJc,OAYZ;AAAD,MAPI,iBALS,OAYZ;AACD,CATD,iBAJc,OAaZ;AAAD,MARI,iBALS,OAaZ;EACC,cAAA;EACA,yBAAA;;AAEF,CAbD,iBAJc,OAiBZ;AAAD,MAZI,iBALS,OAiBZ;AACD,CAdD,iBAJc,OAkBZ,OAAO;AAAR,MAbI,iBALS,OAkBZ,OAAO;AACR,CAfD,iBAJc,OAmBZ,OAAO;AAAR,MAdI,iBALS,OAmBZ,OAAO;EACN,WAAA;EACA,yBAAA;EACA,qBAAA;;AAtBN,iBAAiB;EACf,cAAA;EACA,yBAAA;;AAEA,CAAC,iBAJc;AAKf,MAAM,iBALS;EAMb,cAAA;;AAFF,CAAC,iBAJc,MAQb;AAHF,MAAM,iBALS,MAQb;EACE,cAAA;;AAGF,CARD,iBAJc,MAYZ;AAAD,MAPI,iBALS,MAYZ;AACD,CATD,iBAJc,MAaZ;AAAD,MARI,iBALS,MAaZ;EACC,cAAA;EACA,yBAAA;;AAEF,CAbD,iBAJc,MAiBZ;AAAD,MAZI,iBALS,MAiBZ;AACD,CAdD,iBAJc,MAkBZ,OAAO;AAAR,MAbI,iBALS,MAkBZ,OAAO;AACR,CAfD,iBAJc,MAmBZ,OAAO;AAAR,MAdI,iBALS,MAmBZ,OAAO;EACN,WAAA;EACA,yBAAA;EACA,qBAAA;;ADiGR;EACE,aAAA;EACA,kBAAA;;AAEF;EACE,gBAAA;EACA,gBAAA;;AE1HF;EACE,mBAAA;EACA,yBAAA;EACA,6BAAA;EACA,kBAAA;ElD0DA,iDAAA;EACQ,yCAAA;;AkDtDV;EACE,aAAA;;AAKF;EACE,kBAAA;EACA,oCAAA;EvBpBA,4BAAA;EACC,2BAAA;;AuBiBH,cAKE,YAAY;EACV,cAAA;;AAKJ;EACE,aAAA;EACA,gBAAA;EACA,eAAA;EACA,cAAA;;AAJF,YAME;AANF,YAOE;AAPF,YAQE;AARF,YASE,QAAQ;AATV,YAUE,SAAS;EACP,cAAA;;AAKJ;EACE,kBAAA;EACA,yBAAA;EACA,6BAAA;EvBxCA,+BAAA;EACC,8BAAA;;AuBiDH,MACE;AADF,MAEE,kBAAkB;EAChB,gBAAA;;AAHJ,MACE,cAIE;AALJ,MAEE,kBAAkB,cAGhB;EACE,mBAAA;EACA,gBAAA;;AAIF,MAVF,cAUG,YACC,iBAAgB;AADlB,MATF,kBAAkB,cASf,YACC,iBAAgB;EACd,aAAA;EvBvEN,4BAAA;EACC,2BAAA;;AuB4EC,MAlBF,cAkBG,WACC,iBAAgB;AADlB,MAjBF,kBAAkB,cAiBf,WACC,iBAAgB;EACd,gBAAA;EvBvEN,+BAAA;EACC,8BAAA;;AuBiDH,MA0BE,iBAAiB,kBAAkB,cACjC,iBAAgB;EvBrFlB,0BAAA;EACC,yBAAA;;AuB0FH,cAAe,cACb,iBAAgB;EACd,mBAAA;;AAGJ,WAAY;EACV,mBAAA;;AAQF,MACE;AADF,MAEE,oBAAoB;AAFtB,MAGE,kBAAkB;EAChB,gBAAA;;AAJJ,MACE,SAKE;AANJ,MAEE,oBAAoB,SAIlB;AANJ,MAGE,kBAAkB,SAGhB;EACE,kBAAA;EACA,mBAAA;;AARN,MAYE,SAAQ;AAZV,MAaE,oBAAmB,YAAa,SAAQ;EvBtHxC,4BAAA;EACC,2BAAA;;AuBwGH,MAYE,SAAQ,YAIN,QAAO,YAEL,KAAI;AAlBV,MAaE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YAEL,KAAI;AAlBV,MAYE,SAAQ,YAKN,QAAO,YACL,KAAI;AAlBV,MAaE,oBAAmB,YAAa,SAAQ,YAItC,QAAO,YACL,KAAI;EACF,2BAAA;EACA,4BAAA;;AApBR,MAYE,SAAQ,YAIN,QAAO,YAEL,KAAI,YAIF,GAAE;AAtBV,MAaE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YAEL,KAAI,YAIF,GAAE;AAtBV,MAYE,SAAQ,YAKN,QAAO,YACL,KAAI,YAIF,GAAE;AAtBV,MAaE,oBAAmB,YAAa,SAAQ,YAItC,QAAO,YACL,KAAI,YAIF,GAAE;AAtBV,MAYE,SAAQ,YAIN,QAAO,YAEL,KAAI,YAKF,GAAE;AAvBV,MAaE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YAEL,KAAI,YAKF,GAAE;AAvBV,MAYE,SAAQ,YAKN,QAAO,YACL,KAAI,YAKF,GAAE;AAvBV,MAaE,oBAAmB,YAAa,SAAQ,YAItC,QAAO,YACL,KAAI,YAKF,GAAE;EACA,2BAAA;;AAxBV,MAYE,SAAQ,YAIN,QAAO,YAEL,KAAI,YAQF,GAAE;AA1BV,MAaE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YAEL,KAAI,YAQF,GAAE;AA1BV,MAYE,SAAQ,YAKN,QAAO,YACL,KAAI,YAQF,GAAE;AA1BV,MAaE,oBAAmB,YAAa,SAAQ,YAItC,QAAO,YACL,KAAI,YAQF,GAAE;AA1BV,MAYE,SAAQ,YAIN,QAAO,YAEL,KAAI,YASF,GAAE;AA3BV,MAaE,oBAAmB,YAAa,SAAQ,YAGtC,QAAO,YAEL,KAAI,YASF,GAAE;AA3BV,MAYE,SAAQ,YAKN,QAAO,YACL,KAAI,YASF,GAAE;AA3BV,MAaE,oBAAmB,YAAa,SAAQ,YAItC,QAAO,YACL,KAAI,YASF,GAAE;EACA,4BAAA;;AA5BV,MAkCE,SAAQ;AAlCV,MAmCE,oBAAmB,WAAY,SAAQ;EvBpIvC,+BAAA;EACC,8BAAA;;AuBgGH,MAkCE,SAAQ,WAIN,QAAO,WAEL,KAAI;AAxCV,MAmCE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WAEL,KAAI;AAxCV,MAkCE,SAAQ,WAKN,QAAO,WACL,KAAI;AAxCV,MAmCE,oBAAmB,WAAY,SAAQ,WAIrC,QAAO,WACL,KAAI;EACF,8BAAA;EACA,+BAAA;;AA1CR,MAkCE,SAAQ,WAIN,QAAO,WAEL,KAAI,WAIF,GAAE;AA5CV,MAmCE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WAEL,KAAI,WAIF,GAAE;AA5CV,MAkCE,SAAQ,WAKN,QAAO,WACL,KAAI,WAIF,GAAE;AA5CV,MAmCE,oBAAmB,WAAY,SAAQ,WAIrC,QAAO,WACL,KAAI,WAIF,GAAE;AA5CV,MAkCE,SAAQ,WAIN,QAAO,WAEL,KAAI,WAKF,GAAE;AA7CV,MAmCE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WAEL,KAAI,WAKF,GAAE;AA7CV,MAkCE,SAAQ,WAKN,QAAO,WACL,KAAI,WAKF,GAAE;AA7CV,MAmCE,oBAAmB,WAAY,SAAQ,WAIrC,QAAO,WACL,KAAI,WAKF,GAAE;EACA,8BAAA;;AA9CV,MAkCE,SAAQ,WAIN,QAAO,WAEL,KAAI,WAQF,GAAE;AAhDV,MAmCE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WAEL,KAAI,WAQF,GAAE;AAhDV,MAkCE,SAAQ,WAKN,QAAO,WACL,KAAI,WAQF,GAAE;AAhDV,MAmCE,oBAAmB,WAAY,SAAQ,WAIrC,QAAO,WACL,KAAI,WAQF,GAAE;AAhDV,MAkCE,SAAQ,WAIN,QAAO,WAEL,KAAI,WASF,GAAE;AAjDV,MAmCE,oBAAmB,WAAY,SAAQ,WAGrC,QAAO,WAEL,KAAI,WASF,GAAE;AAjDV,MAkCE,SAAQ,WAKN,QAAO,WACL,KAAI,WASF,GAAE;AAjDV,MAmCE,oBAAmB,WAAY,SAAQ,WAIrC,QAAO,WACL,KAAI,WASF,GAAE;EACA,+BAAA;;AAlDV,MAuDE,cAAc;AAvDhB,MAwDE,cAAc;AAxDhB,MAyDE,SAAS;AAzDX,MA0DE,oBAAoB;EAClB,6BAAA;;AA3DJ,MA6DE,SAAS,QAAO,YAAa,KAAI,YAAa;AA7DhD,MA8DE,SAAS,QAAO,YAAa,KAAI,YAAa;EAC5C,aAAA;;AA/DJ,MAiEE;AAjEF,MAkEE,oBAAoB;EAClB,SAAA;;AAnEJ,MAiEE,kBAGE,QAGE,KACE,KAAI;AAxEZ,MAkEE,oBAAoB,kBAElB,QAGE,KACE,KAAI;AAxEZ,MAiEE,kBAIE,QAEE,KACE,KAAI;AAxEZ,MAkEE,oBAAoB,kBAGlB,QAEE,KACE,KAAI;AAxEZ,MAiEE,kBAKE,QACE,KACE,KAAI;AAxEZ,MAkEE,oBAAoB,kBAIlB,QACE,KACE,KAAI;AAxEZ,MAiEE,kBAGE,QAGE,KAEE,KAAI;AAzEZ,MAkEE,oBAAoB,kBAElB,QAGE,KAEE,KAAI;AAzEZ,MAiEE,kBAIE,QAEE,KAEE,KAAI;AAzEZ,MAkEE,oBAAoB,kBAGlB,QAEE,KAEE,KAAI;AAzEZ,MAiEE,kBAKE,QACE,KAEE,KAAI;AAzEZ,MAkEE,oBAAoB,kBAIlB,QACE,KAEE,KAAI;EACF,cAAA;;AA1EV,MAiEE,kBAGE,QAGE,KAKE,KAAI;AA5EZ,MAkEE,oBAAoB,kBAElB,QAGE,KAKE,KAAI;AA5EZ,MAiEE,kBAIE,QAEE,KAKE,KAAI;AA5EZ,MAkEE,oBAAoB,kBAGlB,QAEE,KAKE,KAAI;AA5EZ,MAiEE,kBAKE,QACE,KAKE,KAAI;AA5EZ,MAkEE,oBAAoB,kBAIlB,QACE,KAKE,KAAI;AA5EZ,MAiEE,kBAGE,QAGE,KAME,KAAI;AA7EZ,MAkEE,oBAAoB,kBAElB,QAGE,KAME,KAAI;AA7EZ,MAiEE,kBAIE,QAEE,KAME,KAAI;AA7EZ,MAkEE,oBAAoB,kBAGlB,QAEE,KAME,KAAI;AA7EZ,MAiEE,kBAKE,QACE,KAME,KAAI;AA7EZ,MAkEE,oBAAoB,kBAIlB,QACE,KAME,KAAI;EACF,eAAA;;AA9EV,MAiEE,kBAiBE,QAEE,KAAI,YACF;AArFR,MAkEE,oBAAoB,kBAgBlB,QAEE,KAAI,YACF;AArFR,MAiEE,kBAkBE,QACE,KAAI,YACF;AArFR,MAkEE,oBAAoB,kBAiBlB,QACE,KAAI,YACF;AArFR,MAiEE,kBAiBE,QAEE,KAAI,YAEF;AAtFR,MAkEE,oBAAoB,kBAgBlB,QAEE,KAAI,YAEF;AAtFR,MAiEE,kBAkBE,QACE,KAAI,YAEF;AAtFR,MAkEE,oBAAoB,kBAiBlB,QACE,KAAI,YAEF;EACE,gBAAA;;AAvFV,MAiEE,kBA0BE,QAEE,KAAI,WACF;AA9FR,MAkEE,oBAAoB,kBAyBlB,QAEE,KAAI,WACF;AA9FR,MAiEE,kBA2BE,QACE,KAAI,WACF;AA9FR,MAkEE,oBAAoB,kBA0BlB,QACE,KAAI,WACF;AA9FR,MAiEE,kBA0BE,QAEE,KAAI,WAEF;AA/FR,MAkEE,oBAAoB,kBAyBlB,QAEE,KAAI,WAEF;AA/FR,MAiEE,kBA2BE,QACE,KAAI,WAEF;AA/FR,MAkEE,oBAAoB,kBA0BlB,QACE,KAAI,WAEF;EACE,gBAAA;;AAhGV,MAqGE;EACE,SAAA;EACA,gBAAA;;AAUJ;EACE,mBAAA;;AADF,YAIE;EACE,gBAAA;EACA,kBAAA;;AANJ,YAIE,OAIE;EACE,eAAA;;AATN,YAaE;EACE,gBAAA;;AAdJ,YAaE,eAGE,kBAAkB;AAhBtB,YAaE,eAIE,kBAAkB;EAChB,6BAAA;;AAlBN,YAsBE;EACE,aAAA;;AAvBJ,YAsBE,cAEE,kBAAkB;EAChB,gCAAA;;AAON;EC1PE,qBAAA;;AAEA,cAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,cAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AANJ,cAAE,iBAQA;EACE,cAAA;EACA,yBAAA;;AAGJ,cAAE,gBACA,kBAAkB;EAChB,4BAAA;;AD4ON;EC7PE,qBAAA;;AAEA,cAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,cAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AANJ,cAAE,iBAQA;EACE,cAAA;EACA,yBAAA;;AAGJ,cAAE,gBACA,kBAAkB;EAChB,4BAAA;;AD+ON;EChQE,qBAAA;;AAEA,cAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,cAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AANJ,cAAE,iBAQA;EACE,cAAA;EACA,yBAAA;;AAGJ,cAAE,gBACA,kBAAkB;EAChB,4BAAA;;ADkPN;ECnQE,qBAAA;;AAEA,WAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,WAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AANJ,WAAE,iBAQA;EACE,cAAA;EACA,yBAAA;;AAGJ,WAAE,gBACA,kBAAkB;EAChB,4BAAA;;ADqPN;ECtQE,qBAAA;;AAEA,cAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,cAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AANJ,cAAE,iBAQA;EACE,cAAA;EACA,yBAAA;;AAGJ,cAAE,gBACA,kBAAkB;EAChB,4BAAA;;ADwPN;ECzQE,qBAAA;;AAEA,aAAE;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,aAAE,iBAKA,kBAAkB;EAChB,yBAAA;;AANJ,aAAE,iBAQA;EACE,cAAA;EACA,yBAAA;;AAGJ,aAAE,gBACA,kBAAkB;EAChB,4BAAA;;AChBN;EACE,kBAAA;EACA,cAAA;EACA,SAAA;EACA,UAAA;EACA,gBAAA;;AALF,iBAOE;AAPF,iBAQE;AARF,iBASE;AATF,iBAUE;AAVF,iBAWE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,YAAA;EACA,WAAA;EACA,SAAA;;AAKJ;EACE,sBAAA;;AAIF;EACE,mBAAA;;AC3BF;EACE,gBAAA;EACA,aAAA;EACA,mBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;ErDwDA,uDAAA;EACQ,+CAAA;;AqD/DV,KAQE;EACE,kBAAA;EACA,iCAAA;;AAKJ;EACE,aAAA;EACA,kBAAA;;AAEF;EACE,YAAA;EACA,kBAAA;;ACtBF;EACE,YAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;EACA,cAAA;EACA,4BAAA;EjCRA,YAAA;EAGA,yBAAA;;AiCQA,MAAC;AACD,MAAC;EACC,cAAA;EACA,qBAAA;EACA,eAAA;EjCfF,YAAA;EAGA,yBAAA;;AiCoBA,MAAM;EACJ,UAAA;EACA,eAAA;EACA,uBAAA;EACA,SAAA;EACA,wBAAA;;ACrBJ;EACE,gBAAA;;AAIF;EACE,aAAA;EACA,gBAAA;EACA,eAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;EACA,iCAAA;EAIA,UAAA;;AAGA,MAAC,KAAM;EvD+GP,mBAAmB,kBAAnB;EACI,eAAe,kBAAf;EACC,cAAc,kBAAd;EACG,WAAW,kBAAX;EAkER,mDAAA;EACG,6CAAA;EACE,yCAAA;EACG,mCAAA;;AuDnLR,MAAC,GAAI;EvD2GL,mBAAmB,eAAnB;EACI,eAAe,eAAf;EACC,cAAc,eAAd;EACG,WAAW,eAAX;;AuD5GV,WAAY;EACV,kBAAA;EACA,gBAAA;;AAIF;EACE,kBAAA;EACA,WAAA;EACA,YAAA;;AAIF;EACE,kBAAA;EACA,yBAAA;EACA,yBAAA;EACA,oCAAA;EACA,kBAAA;EvDaA,gDAAA;EACQ,wCAAA;EuDZR,4BAAA;EAEA,UAAA;;AAIF;EACE,eAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,aAAA;EACA,yBAAA;;AAEA,eAAC;ElCrED,UAAA;EAGA,wBAAA;;AkCmEA,eAAC;ElCtED,YAAA;EAGA,yBAAA;;AkCwEF;EACE,aAAA;EACA,gCAAA;EACA,yBAAA;;AAGF,aAAc;EACZ,gBAAA;;AAIF;EACE,SAAA;EACA,uBAAA;;AAKF;EACE,kBAAA;EACA,aAAA;;AAIF;EACE,aAAA;EACA,iBAAA;EACA,6BAAA;;AAHF,aAOE,KAAK;EACH,gBAAA;EACA,gBAAA;;AATJ,aAYE,WAAW,KAAK;EACd,iBAAA;;AAbJ,aAgBE,WAAW;EACT,cAAA;;AAKJ;EACE,kBAAA;EACA,YAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;;AAkBF,QAdmC;EAEjC;IACE,YAAA;IACA,iBAAA;;EAEF;IvDvEA,iDAAA;IACQ,yCAAA;;EuD2ER;IAAY,YAAA;;;AAMd,QAHmC;EACjC;IAAY,YAAA;;;AC9Id;EACE,kBAAA;EACA,aAAA;EACA,cAAA;ECRA,axD0HkE,yCwD1HlE;EAEA,kBAAA;EACA,mBAAA;EACA,sBAAA;EACA,gBAAA;EACA,uBAAA;EACA,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kBAAA;EACA,oBAAA;EACA,iBAAA;EDHA,eAAA;EnCVA,UAAA;EAGA,wBAAA;;AmCWA,QAAC;EnCdD,YAAA;EAGA,yBAAA;;AmCYA,QAAC;EAAU,gBAAA;EAAmB,cAAA;;AAC9B,QAAC;EAAU,gBAAA;EAAmB,cAAA;;AAC9B,QAAC;EAAU,eAAA;EAAmB,cAAA;;AAC9B,QAAC;EAAU,iBAAA;EAAmB,cAAA;;AAIhC;EACE,gBAAA;EACA,gBAAA;EACA,cAAA;EACA,kBAAA;EACA,yBAAA;EACA,kBAAA;;AAIF;EACE,kBAAA;EACA,QAAA;EACA,SAAA;EACA,yBAAA;EACA,mBAAA;;AAIA,QAAC,IAAK;EACJ,SAAA;EACA,SAAA;EACA,iBAAA;EACA,uBAAA;EACA,yBAAA;;AAEF,QAAC,SAAU;EACT,SAAA;EACA,UAAA;EACA,mBAAA;EACA,uBAAA;EACA,yBAAA;;AAEF,QAAC,UAAW;EACV,SAAA;EACA,SAAA;EACA,mBAAA;EACA,uBAAA;EACA,yBAAA;;AAEF,QAAC,MAAO;EACN,QAAA;EACA,OAAA;EACA,gBAAA;EACA,2BAAA;EACA,2BAAA;;AAEF,QAAC,KAAM;EACL,QAAA;EACA,QAAA;EACA,gBAAA;EACA,2BAAA;EACA,0BAAA;;AAEF,QAAC,OAAQ;EACP,MAAA;EACA,SAAA;EACA,iBAAA;EACA,uBAAA;EACA,4BAAA;;AAEF,QAAC,YAAa;EACZ,MAAA;EACA,UAAA;EACA,gBAAA;EACA,uBAAA;EACA,4BAAA;;AAEF,QAAC,aAAc;EACb,MAAA;EACA,SAAA;EACA,gBAAA;EACA,uBAAA;EACA,4BAAA;;AE7FJ;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,aAAA;EACA,aAAA;EACA,gBAAA;EACA,YAAA;EDXA,axD0HkE,yCwD1HlE;EAEA,kBAAA;EACA,mBAAA;EACA,sBAAA;EACA,gBAAA;EACA,uBAAA;EACA,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kBAAA;EACA,oBAAA;EACA,iBAAA;ECAA,eAAA;EAEA,yBAAA;EACA,4BAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBAAA;E1D8CA,iDAAA;EACQ,yCAAA;;A0D3CR,QAAC;EAAW,iBAAA;;AACZ,QAAC;EAAW,iBAAA;;AACZ,QAAC;EAAW,gBAAA;;AACZ,QAAC;EAAW,kBAAA;;AAGd;EACE,SAAA;EACA,iBAAA;EACA,eAAA;EACA,yBAAA;EACA,gCAAA;EACA,0BAAA;;AAGF;EACE,iBAAA;;AAQA,QADO;AAEP,QAFO,SAEN;EACC,kBAAA;EACA,cAAA;EACA,QAAA;EACA,SAAA;EACA,yBAAA;EACA,mBAAA;;AAGJ,QAAS;EACP,kBAAA;;AAEF,QAAS,SAAQ;EACf,kBAAA;EACA,SAAS,EAAT;;AAIA,QAAC,IAAK;EACJ,SAAA;EACA,kBAAA;EACA,sBAAA;EACA,yBAAA;EACA,yBAAA;EACA,aAAA;;AACA,QAPD,IAAK,SAOH;EACC,SAAS,GAAT;EACA,WAAA;EACA,kBAAA;EACA,sBAAA;EACA,yBAAA;;AAGJ,QAAC,MAAO;EACN,QAAA;EACA,WAAA;EACA,iBAAA;EACA,oBAAA;EACA,2BAAA;EACA,2BAAA;;AACA,QAPD,MAAO,SAOL;EACC,SAAS,GAAT;EACA,SAAA;EACA,aAAA;EACA,oBAAA;EACA,2BAAA;;AAGJ,QAAC,OAAQ;EACP,SAAA;EACA,kBAAA;EACA,mBAAA;EACA,4BAAA;EACA,4BAAA;EACA,UAAA;;AACA,QAPD,OAAQ,SAON;EACC,SAAS,GAAT;EACA,QAAA;EACA,kBAAA;EACA,mBAAA;EACA,4BAAA;;AAIJ,QAAC,KAAM;EACL,QAAA;EACA,YAAA;EACA,iBAAA;EACA,qBAAA;EACA,0BAAA;EACA,0BAAA;;AACA,QAPD,KAAM,SAOJ;EACC,SAAS,GAAT;EACA,UAAA;EACA,qBAAA;EACA,0BAAA;EACA,aAAA;;AtDzHN;EACE,kBAAA;;AAGF;EACE,kBAAA;EACA,gBAAA;EACA,WAAA;;AAHF,eAKE;EACE,aAAA;EACA,kBAAA;EJ6KF,yCAAA;EACK,oCAAA;EACG,iCAAA;;AItLV,eAKE,QAME;AAXJ,eAKE,QAOE,IAAI;EAEF,cAAA;;AA0BJ;EAAA,eAnCA;IJoMA,sDAAA;IACG,gDAAA;IACE,4CAAA;IACG,sCAAA;IA7JR,mCAAA;IACG,gCAAA;IACK,2BAAA;IA+GR,2BAAA;IACG,wBAAA;IACK,mBAAA;;EI3IJ,eAlBJ,QAkBK;EACD,eAnBJ,QAmBK,OAAO;IJkHZ,mBAAmB,uBAAnB;IACQ,WAAW,uBAAX;IIjHF,OAAA;;EAEF,eAvBJ,QAuBK;EACD,eAxBJ,QAwBK,OAAO;IJ6GZ,mBAAmB,wBAAnB;IACQ,WAAW,wBAAX;II5GF,OAAA;;EAEF,eA5BJ,QA4BK,KAAK;EACN,eA7BJ,QA6BK,KAAK;EACN,eA9BJ,QA8BK;IJuGL,mBAAmB,oBAAnB;IACQ,WAAW,oBAAX;IItGF,OAAA;;;AArCR,eA0CE;AA1CF,eA2CE;AA3CF,eA4CE;EACE,cAAA;;AA7CJ,eAgDE;EACE,OAAA;;AAjDJ,eAoDE;AApDF,eAqDE;EACE,kBAAA;EACA,MAAA;EACA,WAAA;;AAxDJ,eA2DE;EACE,UAAA;;AA5DJ,eA8DE;EACE,WAAA;;AA/DJ,eAiEE,QAAO;AAjET,eAkEE,QAAO;EACL,OAAA;;AAnEJ,eAsEE,UAAS;EACP,WAAA;;AAvEJ,eAyEE,UAAS;EACP,UAAA;;AAQJ;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EiB9FA,YAAA;EAGA,yBAAA;EjB6FA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,yCAAA;;AAKA,iBAAC;EyClGC,kBAAkB,gFAAlB;EACA,kBAAkB,2EAAlB;EACA,kBAAkB,4EAAlB;EACA,2BAAA;EACA,sHAAA;;AzCiGF,iBAAC;EACC,UAAA;EACA,QAAA;EyCvGA,kBAAkB,gFAAlB;EACA,kBAAkB,2EAAlB;EACA,kBAAkB,4EAAlB;EACA,2BAAA;EACA,sHAAA;;AzCwGF,iBAAC;AACD,iBAAC;EACC,UAAA;EACA,cAAA;EACA,qBAAA;EiBtHF,YAAA;EAGA,yBAAA;;AjBsFF,iBAkCE;AAlCF,iBAmCE;AAnCF,iBAoCE;AApCF,iBAqCE;EACE,kBAAA;EACA,QAAA;EACA,iBAAA;EACA,UAAA;EACA,qBAAA;;AA1CJ,iBA4CE;AA5CF,iBA6CE;EACE,SAAA;EACA,kBAAA;;AA/CJ,iBAiDE;AAjDF,iBAkDE;EACE,UAAA;EACA,mBAAA;;AApDJ,iBAsDE;AAtDF,iBAuDE;EACE,WAAA;EACA,YAAA;EACA,cAAA;EACA,kBAAA;;AAKA,iBADF,WACG;EACC,SAAS,OAAT;;AAIF,iBADF,WACG;EACC,SAAS,OAAT;;AAUN;EACE,kBAAA;EACA,YAAA;EACA,SAAA;EACA,WAAA;EACA,UAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;;AATF,oBAWE;EACE,qBAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,mBAAA;EACA,eAAA;EAWA,yBAAA;EACA,kCAAA;;AA/BJ,oBAiCE;EACE,SAAA;EACA,WAAA;EACA,YAAA;EACA,yBAAA;;AAOJ;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,iBAAA;EACA,oBAAA;EACA,cAAA;EACA,kBAAA;EACA,yCAAA;;AACA,iBAAE;EACA,iBAAA;;AAyCJ,mBAnC8C;EAG5C,iBACE;EADF,iBAEE;EAFF,iBAGE;EAHF,iBAIE;IACE,WAAA;IACA,YAAA;IACA,iBAAA;IACA,eAAA;;EARJ,iBAUE;EAVF,iBAWE;IACE,kBAAA;;EAZJ,iBAcE;EAdF,iBAeE;IACE,mBAAA;;EAKJ;IACE,SAAA;IACA,UAAA;IACA,oBAAA;;EAIF;IACE,YAAA;;;AuD7PF,SAAC;AACD,SAAC;ArDkMH,cACE,GqDpMC;ArDmMH,cACE,GqDnMC;AhDLH,UgDIG;AhDJH,UgDKG;AhDeH,gBgDhBG;AhDgBH,gBgDfG;AhDwBH,IgDzBG;AhDyBH,IgDxBG;A3CihBH,gBAqBE,Y2CviBC;A3CkhBH,gBAqBE,Y2CtiBC;ArCoBH,YqCrBG;ArCqBH,YqCpBG;ArCiIH,mBAWE,aqC7IC;ArCkIH,mBAWE,aqC5IC;A9BNH,I8BKG;A9BLH,I8BMG;A7BJH,O6BGG;A7BHH,O6BIG;A7BgBH,c6BjBG;A7BiBH,c6BhBG;A7BmCH,gB6BpCG;A7BoCH,gB6BnCG;AtBTH,MsBQG;AtBRH,MsBSG;ATCH,WSFG;ATEH,WSDG;AJwFH,aIzFG;AJyFH,aIxFG;EACC,SAAS,GAAT;EACA,cAAA;;AAEF,SAAC;ArD8LH,cACE,GqD/LC;AhDTH,UgDSG;AhDWH,gBgDXG;AhDoBH,IgDpBG;A3C6gBH,gBAqBE,Y2CliBC;ArCgBH,YqChBG;ArC6HH,mBAWE,aqCxIC;A9BVH,I8BUG;A7BRH,O6BQG;A7BYH,c6BZG;A7B+BH,gB6B/BG;AtBbH,MsBaG;ATHH,WSGG;AJoFH,aIpFG;EACC,WAAA;;A3BRJ;E4BRE,cAAA;EACA,iBAAA;EACA,kBAAA;;A5BSF;EACE,uBAAA;;AAEF;EACE,sBAAA;;AAQF;EACE,wBAAA;;AAEF;EACE,yBAAA;;AAEF;EACE,kBAAA;;AAEF;E6BzBE,WAAA;EACA,kBAAA;EACA,iBAAA;EACA,6BAAA;EACA,SAAA;;A7B8BF;EACE,wBAAA;;AAOF;EACE,eAAA;;A8BjCF;EACE,mBAAA;;AAMF;AACA;AACA;AACA;ECjBE,wBAAA;;ADqBF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,wBAAA;;AAOF,QAHqC;EAGrC;IChDE,yBAAA;;EACA,KAAK;IAAK,yBAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;ADiDZ,QAHqC;EAGrC;IAFI,yBAAA;;;AAOJ,QAHqC;EAGrC;IAFI,0BAAA;;;AAOJ,QAHqC;EAGrC;IAFI,qBAAA;;;AAQJ,QAHqC,uBAAgC;EAGrE;ICrEE,yBAAA;;EACA,KAAK;IAAK,yBAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;ADsEZ,QAHqC,uBAAgC;EAGrE;IAFI,yBAAA;;;AAOJ,QAHqC,uBAAgC;EAGrE;IAFI,0BAAA;;;AAOJ,QAHqC,uBAAgC;EAGrE;IAFI,qBAAA;;;AAQJ,QAHqC,uBAAgC;EAGrE;IC1FE,yBAAA;;EACA,KAAK;IAAK,yBAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;AD2FZ,QAHqC,uBAAgC;EAGrE;IAFI,yBAAA;;;AAOJ,QAHqC,uBAAgC;EAGrE;IAFI,0BAAA;;;AAOJ,QAHqC,uBAAgC;EAGrE;IAFI,qBAAA;;;AAQJ,QAHqC;EAGrC;IC/GE,yBAAA;;EACA,KAAK;IAAK,yBAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;ADgHZ,QAHqC;EAGrC;IAFI,yBAAA;;;AAOJ,QAHqC;EAGrC;IAFI,0BAAA;;;AAOJ,QAHqC;EAGrC;IAFI,qBAAA;;;AAQJ,QAHqC;EAGrC;IC5HE,wBAAA;;;ADiIF,QAHqC,uBAAgC;EAGrE;ICjIE,wBAAA;;;ADsIF,QAHqC,uBAAgC;EAGrE;ICtIE,wBAAA;;;AD2IF,QAHqC;EAGrC;IC3IE,wBAAA;;;ADmJF;ECnJE,wBAAA;;ADyJF;EAAA;ICjKE,yBAAA;;EACA,KAAK;IAAK,yBAAA;;EACV,EAAE;IAAQ,kBAAA;;EACV,EAAE;EACF,EAAE;IAAQ,mBAAA;;;AD8JZ;EACE,wBAAA;;AAKF;EAAA;IAFI,yBAAA;;;AAGJ;EACE,wBAAA;;AAKF;EAAA;IAFI,0BAAA;;;AAGJ;EACE,wBAAA;;AAKF;EAAA;IAFI,qBAAA;;;AAQJ;EAAA;ICpLE,wBAAA;;;;;;;;;ACVF;EACE,aAAa,aAAb;EACA,SAAS,4FAAT;EACA,SAAS,oGAAkE,OAAO,0BAC5E,+FAA6D,OAAO,cACpE,8FAA4D,OAAO,aACnE,6FAA2D,OAAO,iBAClE,gHAA8E,OAAO,MAJ3F;EAMA,mBAAA;EACA,kBAAA;;ACVF,CAAC;EACC,qBAAA;EACA,6CAAA;EACA,kBAAA;EACA,oBAAA;EACA,mCAAA;EACA,kCAAA;EACA,WAAW,eAAX;;;ACNF,CAAC,EAAgB;EACf,uBAAA;EACA,mBAAA;EACA,oBAAA;;AAEF,CAAC,EAAgB;EAAM,cAAA;;AACvB,CAAC,EAAgB;EAAM,cAAA;;AACvB,CAAC,EAAgB;EAAM,cAAA;;AACvB,CAAC,EAAgB;EAAM,cAAA;;ACVvB,CAAC,EAAgB;EACf,mBAAA;EACA,kBAAA;;ACDF,CAAC,EAAgB;EACf,eAAA;EACA,yBAAA;EACA,qBAAA;;AAHF,CAAC,EAAgB,GAIf;EAAO,kBAAA;;AAET,CAAC,EAAgB;EACf,kBAAA;EACA,mBAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;;AACA,CAND,EAAgB,GAMd,CAAC,EAAgB;EAChB,mBAAA;;AnCbJ,CAAC,EAAgB;EACf,yBAAA;EACA,4BAAA;EACA,mBAAA;;AAGF;EAAc,YAAA;;AACd;EAAa,WAAA;;AAGX,CADD,EACE;EAAa,kBAAA;;AACd,CAFD,EAEE;EAAc,iBAAA;;AoCXjB,CAAC,EAAgB;EACf,6CAAA;EACQ,qCAAA;;AAGV,CAAC,EAAgB;EACf,uCAAuC,QAAvC;EACQ,+BAA+B,QAA/B;;AAGV;EACE;IACE,mBAAmB,YAAnB;IACQ,WAAW,YAAX;;EAEV;IACE,mBAAmB,cAAnB;IACQ,WAAW,cAAX;;;AAIZ;EACE;IACE,mBAAmB,YAAnB;IACQ,WAAW,YAAX;;EAEV;IACE,mBAAmB,cAAnB;IACQ,WAAW,cAAX;;;AC5BZ,CAAC,EAAgB;ECYf,QAAQ,wDAAR;EACA,mBAAmB,aAAnB;EACI,eAAe,aAAf;EACI,WAAW,aAAX;;ADdV,CAAC,EAAgB;ECWf,QAAQ,wDAAR;EACA,mBAAmB,cAAnB;EACI,eAAe,cAAf;EACI,WAAW,cAAX;;ADbV,CAAC,EAAgB;ECUf,QAAQ,wDAAR;EACA,mBAAmB,cAAnB;EACI,eAAe,cAAf;EACI,WAAW,cAAX;;ADXV,CAAC,EAAgB;ECef,QAAQ,kEAAR;EACA,mBAAmB,YAAnB;EACI,eAAe,YAAf;EACI,WAAW,YAAX;;ADjBV,CAAC,EAAgB;ECcf,QAAQ,kEAAR;EACA,mBAAmB,YAAnB;EACI,eAAe,YAAf;EACI,WAAW,YAAX;;ADZV,KAAM,EAAC,EAAgB;AACvB,KAAM,EAAC,EAAgB;AACvB,KAAM,EAAC,EAAgB;AACvB,KAAM,EAAC,EAAgB;AACvB,KAAM,EAAC,EAAgB;EACrB,YAAA;;AEfF,CAAC,EAAgB;EACf,kBAAA;EACA,qBAAA;EACA,UAAA;EACA,WAAA;EACA,gBAAA;EACA,sBAAA;;AAEF,CAAC,EAAgB;AAAW,CAAC,EAAgB;EAC3C,kBAAA;EACA,OAAA;EACA,WAAA;EACA,kBAAA;;AAEF,CAAC,EAAgB;EAAY,oBAAA;;AAC7B,CAAC,EAAgB;EAAY,cAAA;;AAC7B,CAAC,EAAgB;EAAW,cAAA;;;;AChB5B,CAAC,EAAgB,MAAM;EAAU,SCoQlB,ODpQkB;;AACjC,CAAC,EAAgB,MAAM;EAAU,SC0WlB,OD1WkB;;AACjC,CAAC,EAAgB,OAAO;EAAU,SCmblB,ODnbkB;;AAClC,CAAC,EAAgB,WAAW;EAAU,SCmLlB,ODnLkB;;AACtC,CAAC,EAAgB,MAAM;EAAU,SCkRlB,ODlRkB;;AACjC,CAAC,EAAgB,KAAK;EAAU,SCkelB,ODlekB;;AAChC,CAAC,EAAgB,OAAO;EAAU,SCselB,ODtekB;;AAClC,CAAC,EAAgB,KAAK;EAAU,SC+iBlB,OD/iBkB;;AAChC,CAAC,EAAgB,KAAK;EAAU,SCyNlB,ODzNkB;;AAChC,CAAC,EAAgB,SAAS;EAAU,SCggBlB,ODhgBkB;;AACpC,CAAC,EAAgB,GAAG;EAAU,SC8flB,OD9fkB;;AAC9B,CAAC,EAAgB,QAAQ;EAAU,SC+flB,OD/fkB;;AACnC,CAAC,EAAgB,MAAM;EAAU,SCoGlB,ODpGkB;;AACjC,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,MAAM;EAAU,SCkgBlB,ODlgBkB;;AACjC,CAAC,EAAgB,YAAY;EAAU,SCualB,ODvakB;;AACvC,CAAC,EAAgB,aAAa;EAAU,SCqalB,ODrakB;;AACxC,CAAC,EAAgB,UAAU;EAAU,SC+XlB,OD/XkB;;AACrC,CAAC,EAAgB,OAAO;EAAU,SCsblB,ODtbkB;;AAClC,CAAC,EAAgB,KAAK;AACtB,CAAC,EAAgB,IAAI;EAAU,SCwHlB,ODxHkB;;AAC/B,CAAC,EAAgB,QAAQ;EAAU,SCygBlB,ODzgBkB;;AACnC,CAAC,EAAgB,KAAK;EAAU,SCmQlB,ODnQkB;;AAChC,CAAC,EAAgB,OAAO;EAAU,SC6LlB,OD7LkB;;AAClC,CAAC,EAAgB,QAAQ;EAAU,SC0GlB,OD1GkB;;AACnC,CAAC,EAAgB,KAAK;EAAU,SC+YlB,OD/YkB;;AAChC,CAAC,EAAgB,SAAS;EAAU,SCiJlB,ODjJkB;;AACpC,CAAC,EAAgB,oBAAoB;EAAU,SCIlB,ODJkB;;AAC/C,CAAC,EAAgB,kBAAkB;EAAU,SCMlB,ODNkB;;AAC7C,CAAC,EAAgB,MAAM;EAAU,SCkQlB,ODlQkB;;AACjC,CAAC,EAAgB,cAAc;EAAU,SC4WlB,OD5WkB;;AACzC,CAAC,EAAgB,aAAa;AAC9B,CAAC,EAAgB,OAAO;EAAU,SCmYlB,ODnYkB;;AAClC,CAAC,EAAgB,QAAQ;EAAU,SC8XlB,OD9XkB;;AACnC,CAAC,EAAgB,SAAS;EAAU,SCiSlB,ODjSkB;;AACpC,CAAC,EAAgB,KAAK;EAAU,SCoSlB,ODpSkB;;AAChC,CAAC,EAAgB,KAAK;EAAU,SCgMlB,ODhMkB;;AAChC,CAAC,EAAgB,WAAW;EAAU,SC+OlB,OD/OkB;;AACtC,CAAC,EAAgB,WAAW;EAAU,SC8hBlB,OD9hBkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SC4hBlB,OD5hBkB;;AACvC,CAAC,EAAgB,UAAU;EAAU,SC6hBlB,OD7hBkB;;AACrC,CAAC,EAAgB,OAAO;EAAU,SC2WlB,OD3WkB;;AAClC,CAAC,EAAgB,QAAQ;EAAU,SCWlB,ODXkB;;AACnC,CAAC,EAAgB,IAAI;EAAU,SCodlB,ODpdkB;;AAC/B,CAAC,EAAgB,KAAK;EAAU,SCodlB,ODpdkB;;AAChC,CAAC,EAAgB,KAAK;EAAU,SC2BlB,OD3BkB;;AAChC,CAAC,EAAgB,SAAS;EAAU,SC2BlB,OD3BkB;;AACpC,CAAC,EAAgB,MAAM;EAAU,SCkWlB,ODlWkB;;AACjC,CAAC,EAAgB,OAAO;EAAU,SCwClB,ODxCkB;;AAClC,CAAC,EAAgB,KAAK;EAAU,SC8LlB,OD9LkB;;AAChC,CAAC,EAAgB,KAAK;EAAU,SCmBlB,ODnBkB;;AAChC,CAAC,EAAgB,OAAO;EAAU,SCoPlB,ODpPkB;;AAClC,CAAC,EAAgB,YAAY;EAAU,SCidlB,ODjdkB;;AACvC,CAAC,EAAgB,WAAW;EAAU,SCidlB,ODjdkB;;AACtC,CAAC,EAAgB,WAAW;EAAU,SC1ClB,OD0CkB;;AACtC,CAAC,EAAgB,aAAa;EAAU,SC7ClB,OD6CkB;;AACxC,CAAC,EAAgB,YAAY;EAAU,SC3ClB,OD2CkB;;AACvC,CAAC,EAAgB,cAAc;EAAU,SC9ClB,OD8CkB;;AACzC,CAAC,EAAgB,KAAK;EAAU,SCwQlB,ODxQkB;;AAChC,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,QAAQ;EAAU,SCmTlB,ODnTkB;;AACnC,CAAC,EAAgB,OAAO;EAAU,SCmOlB,ODnOkB;;AAClC,CAAC,EAAgB,aAAa;EAAU,SCigBlB,ODjgBkB;;AACxC,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,UAAU;EAAU,SC+TlB,OD/TkB;;AACrC,CAAC,EAAgB,OAAO;EAAU,SCwTlB,ODxTkB;;AAClC,CAAC,EAAgB,WAAW;EAAU,SC+QlB,OD/QkB;;AACtC,CAAC,EAAgB,OAAO;EAAU,SC5DlB,OD4DkB;;AAClC,CAAC,EAAgB,KAAK;EAAU,SC8clB,OD9ckB;;AAChC,CAAC,EAAgB,KAAK;AACtB,CAAC,EAAgB,gBAAgB;EAAU,SCqTlB,ODrTkB;;AAC3C,CAAC,EAAgB,eAAe;EAAU,SCuXlB,ODvXkB;;AAC1C,CAAC,EAAgB,eAAe;EAAU,SC0ClB,OD1CkB;;AAC1C,CAAC,EAAgB,OAAO;EAAU,SCjClB,ODiCkB;;AAClC,CAAC,EAAgB,cAAc;EAAU,SCmalB,ODnakB;;AACzC,CAAC,EAAgB,cAAc;EAAU,SC4HlB,OD5HkB;;AACzC,CAAC,EAAgB,SAAS;EAAU,SC7BlB,OD6BkB;;AACpC,CAAC,EAAgB,KAAK;EAAU,SC0TlB,OD1TkB;;AAChC,CAAC,EAAgB,MAAM;EAAU,SCwSlB,ODxSkB;;AACjC,CAAC,EAAgB,KAAK;EAAU,SCialB,ODjakB;;AAChC,CAAC,EAAgB,QAAQ;EAAU,SCgKlB,ODhKkB;;AACnC,CAAC,EAAgB,aAAa;EAAU,SCuHlB,ODvHkB;;AACxC,CAAC,EAAgB,aAAa;EAAU,SC4ZlB,OD5ZkB;;AACxC,CAAC,EAAgB,MAAM;EAAU,SC4FlB,OD5FkB;;AACjC,CAAC,EAAgB,aAAa;EAAU,SCoClB,ODpCkB;;AACxC,CAAC,EAAgB,cAAc;EAAU,SCoClB,ODpCkB;;AACzC,CAAC,EAAgB,YAAY;EAAU,SCsTlB,ODtTkB;;AACvC,CAAC,EAAgB,aAAa;EAAU,SCyQlB,ODzQkB;;AACxC,CAAC,EAAgB,aAAa;EAAU,SCwblB,ODxbkB;;AACxC,CAAC,EAAgB,aAAa;EAAU,SCsBlB,ODtBkB;;AACxC,CAAC,EAAgB,gBAAgB;EAAU,SC2TlB,OD3TkB;;AAC3C,CAAC,EAAgB,YAAY;EAAU,SCsMlB,ODtMkB;;AACvC,CAAC,EAAgB,WAAW;EAAU,SC6DlB,OD7DkB;;AACtC,CAAC,EAAgB,eAAe;EAAU,SCoblB,ODpbkB;;AAC1C,CAAC,EAAgB,eAAe;EAAU,SCkBlB,ODlBkB;;AAC1C,CAAC,EAAgB,IAAI;EAAU,SC/ClB,OD+CkB;;AAC/B,CAAC,EAAgB,WAAW;EAAU,SC3DlB,OD2DkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SC3DlB,OD2DkB;;AACvC,CAAC,EAAgB,SAAS;EAAU,SC3DlB,OD2DkB;;AACpC,CAAC,EAAgB,WAAW;EAAU,SC/DlB,OD+DkB;;AACtC,CAAC,EAAgB,aAAa;AAC9B,CAAC,EAAgB,MAAM;EAAU,SCqVlB,ODrVkB;;AACjC,CAAC,EAAgB,OAAO;EAAU,SCuFlB,ODvFkB;;AAClC,CAAC,EAAgB,SAAS;EAAU,SC4ClB,OD5CkB;;AACpC,CAAC,EAAgB,KAAK;EAAU,SCmSlB,ODnSkB;;AAChC,CAAC,EAAgB,MAAM;EAAU,SCsPlB,ODtPkB;;AACjC,CAAC,EAAgB,SAAS;EAAU,SC9DlB,OD8DkB;;AACpC,CAAC,EAAgB,mBAAmB;EAAU,SCgFlB,ODhFkB;;AAC9C,CAAC,EAAgB,KAAK;EAAU,SC+IlB,OD/IkB;;AAChC,CAAC,EAAgB,KAAK;EAAU,SCoMlB,ODpMkB;;AAChC,CAAC,EAAgB,KAAK;EAAU,SCmHlB,ODnHkB;;AAChC,CAAC,EAAgB,IAAI;EAAU,SCiFlB,ODjFkB;;AAC/B,CAAC,EAAgB,UAAU;EAAU,SCiFlB,ODjFkB;;AACrC,CAAC,EAAgB,QAAQ;AACzB,CAAC,EAAgB,qBAAqB;EAAU,SC0ElB,OD1EkB;;AAChD,CAAC,EAAgB,MAAM;EAAU,SCmRlB,ODnRkB;;AACjC,CAAC,EAAgB,SAAS;EAAU,SC/BlB,OD+BkB;;AACpC,CAAC,EAAgB,OAAO;EAAU,SCoSlB,ODpSkB;;AAClC,CAAC,EAAgB,QAAQ;EAAU,SCwBlB,ODxBkB;;AACnC,CAAC,EAAgB,OAAO;EAAU,SCqNlB,ODrNkB;;AAClC,CAAC,EAAgB,WAAW;EAAU,SCElB,ODFkB;;AACtC,CAAC,EAAgB,aAAa;EAAU,SCFlB,ODEkB;;AACxC,CAAC,EAAgB,QAAQ;EAAU,SC2SlB,OD3SkB;;AACnC,CAAC,EAAgB,cAAc;EAAU,SCyUlB,ODzUkB;;AACzC,CAAC,EAAgB,OAAO;EAAU,SC8GlB,OD9GkB;;AAClC,CAAC,EAAgB,YAAY;EAAU,SC+GlB,OD/GkB;;AACvC,CAAC,EAAgB,SAAS;EAAU,SCnFlB,ODmFkB;;AACpC,CAAC,EAAgB,SAAS;EAAU,SCrFlB,ODqFkB;;AACpC,CAAC,EAAgB,YAAY;AAC7B,CAAC,EAAgB,UAAU;EAAU,SC/ElB,OD+EkB;;AACrC,CAAC,EAAgB,eAAe;EAAU,SCualB,ODvakB;;AAC1C,CAAC,EAAgB,gBAAgB;EAAU,SCmElB,ODnEkB;;AAC3C,CAAC,EAAgB,aAAa;EAAU,SC5ClB,OD4CkB;;AACxC,CAAC,EAAgB,IAAI;EAAU,SCqKlB,ODrKkB;;AAC/B,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,KAAK;EAAU,SCKlB,ODLkB;;AAChC,CAAC,EAAgB,SAAS;EAAU,SCQlB,ODRkB;;AACpC,CAAC,EAAgB,YAAY;EAAU,SCmYlB,ODnYkB;;AACvC,CAAC,EAAgB,cAAc;EAAU,SCiYlB,ODjYkB;;AACzC,CAAC,EAAgB,UAAU;EAAU,SC2VlB,OD3VkB;;AACrC,CAAC,EAAgB,QAAQ;EAAU,SCyIlB,ODzIkB;;AACnC,CAAC,EAAgB,SAAS;EAAU,SCyTlB,ODzTkB;;AACpC,CAAC,EAAgB,gBAAgB;EAAU,SCiLlB,ODjLkB;;AAC3C,CAAC,EAAgB,WAAW;EAAU,SC0XlB,OD1XkB;;AACtC,CAAC,EAAgB,cAAc;EAAU,SC8ClB,OD9CkB;;AACzC,CAAC,EAAgB,QAAQ;EAAU,SCoTlB,ODpTkB;;AACnC,CAAC,EAAgB,OAAO;EAAU,SC8YlB,OD9YkB;;AAClC,CAAC,EAAgB,cAAc;EAAU,SC6GlB,OD7GkB;;AACzC,CAAC,EAAgB,OAAO;EAAU,SC8ZlB,OD9ZkB;;AAClC,CAAC,EAAgB,QAAQ;EAAU,SC+JlB,OD/JkB;;AACnC,CAAC,EAAgB,MAAM;EAAU,SCsOlB,ODtOkB;;AACjC,CAAC,EAAgB,SAAS;EAAU,SC2UlB,OD3UkB;;AACpC,CAAC,EAAgB,WAAW;EAAU,SC/ElB,OD+EkB;;AACtC,CAAC,EAAgB,aAAa;EAAU,SCoOlB,ODpOkB;;AACxC,CAAC,EAAgB,QAAQ;EAAU,SC8YlB,OD9YkB;;AACnC,CAAC,EAAgB,WAAW;AAC5B,CAAC,EAAgB,SAAS;EAAU,SCuClB,ODvCkB;;AACpC,CAAC,EAAgB,OAAO;EAAU,SCiGlB,ODjGkB;;AAClC,CAAC,EAAgB,OAAO;EAAU,SCiZlB,ODjZkB;;AAClC,CAAC,EAAgB,YAAY;EAAU,SCRlB,ODQkB;;AACvC,CAAC,EAAgB,IAAI;EAAU,SC4QlB,OD5QkB;;AAC/B,CAAC,EAAgB,MAAM;EAAU,SCgHlB,ODhHkB;;AACjC,CAAC,EAAgB,SAAS;EAAU,SCnFlB,ODmFkB;;AACpC,CAAC,EAAgB,KAAK;EAAU,SCzGlB,ODyGkB;;AAChC,CAAC,EAAgB,YAAY;EAAU,SCzDlB,ODyDkB;;AACvC,CAAC,EAAgB,aAAa;EAAU,SC0GlB,OD1GkB;;AACxC,CAAC,EAAgB,YAAY;EAAU,SCwGlB,ODxGkB;;AACvC,CAAC,EAAgB,UAAU;EAAU,SCyGlB,ODzGkB;;AACrC,CAAC,EAAgB,YAAY;EAAU,SCqGlB,ODrGkB;;AACvC,CAAC,EAAgB,kBAAkB;EAAU,SC5IlB,OD4IkB;;AAC7C,CAAC,EAAgB,mBAAmB;EAAU,SCxIlB,ODwIkB;;AAC9C,CAAC,EAAgB,gBAAgB;EAAU,SCxIlB,ODwIkB;;AAC3C,CAAC,EAAgB,kBAAkB;EAAU,SChJlB,ODgJkB;;AAC7C,CAAC,EAAgB,MAAM;EAAU,SCsFlB,ODtFkB;;AACjC,CAAC,EAAgB,OAAO;EAAU,SCialB,ODjakB;;AAClC,CAAC,EAAgB,MAAM;EAAU,SCiVlB,ODjVkB;;AACjC,CAAC,EAAgB,OAAO;EAAU,SCgDlB,ODhDkB;;AAClC,CAAC,EAAgB,UAAU;EAAU,SCvGlB,ODuGkB;;AACrC,CAAC,EAAgB,WAAW;EAAU,SCzIlB,ODyIkB;;AACtC,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,MAAM;EAAU,SCqYlB,ODrYkB;;AACjC,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,KAAK;EAAU,SCuIlB,ODvIkB;;AAChC,CAAC,EAAgB,MAAM;EAAU,SCpDlB,ODoDkB;;AACjC,CAAC,EAAgB,MAAM;EAAU,SC+ClB,OD/CkB;;AACjC,CAAC,EAAgB,IAAI;AACrB,CAAC,EAAgB,SAAS;EAAU,SCwPlB,ODxPkB;;AACpC,CAAC,EAAgB,KAAK;AACtB,CAAC,EAAgB,QAAQ;EAAU,SCkClB,ODlCkB;;AACnC,CAAC,EAAgB,UAAU;EAAU,SCsLlB,ODtLkB;;AACrC,CAAC,EAAgB,KAAK;AACtB,CAAC,EAAgB,SAAS;EAAU,SC0ClB,OD1CkB;;AACpC,CAAC,EAAgB,OAAO;EAAU,SCiSlB,ODjSkB;;AAClC,CAAC,EAAgB,QAAQ;AACzB,CAAC,EAAgB,QAAQ;AACzB,CAAC,EAAgB,KAAK;EAAU,SC9IlB,OD8IkB;;AAChC,CAAC,EAAgB,QAAQ;EAAU,SCgIlB,ODhIkB;;AACnC,CAAC,EAAgB,QAAQ;EAAU,SC8HlB,OD9HkB;;AACnC,CAAC,EAAgB,cAAc;EAAU,SC4SlB,OD5SkB;;AACzC,CAAC,EAAgB,UAAU;EAAU,SCoWlB,ODpWkB;;AACrC,CAAC,EAAgB,MAAM;EAAU,SCmTlB,ODnTkB;;AACjC,CAAC,EAAgB,MAAM;EAAU,SCkIlB,ODlIkB;;AACjC,CAAC,EAAgB,MAAM;EAAU,SCuVlB,ODvVkB;;AACjC,CAAC,EAAgB,UAAU;EAAU,SCwLlB,ODxLkB;;AACrC,CAAC,EAAgB,iBAAiB;EAAU,SCyLlB,ODzLkB;;AAC5C,CAAC,EAAgB,mBAAmB;EAAU,SCyDlB,ODzDkB;;AAC9C,CAAC,EAAgB,YAAY;EAAU,SCuDlB,ODvDkB;;AACvC,CAAC,EAAgB,MAAM;EAAU,SCsJlB,ODtJkB;;AACjC,CAAC,EAAgB,WAAW;EAAU,SCtHlB,ODsHkB;;AACtC,CAAC,EAAgB,SAAS;EAAU,SChHlB,ODgHkB;;AACpC,CAAC,EAAgB,WAAW;EAAU,SCvHlB,ODuHkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SCvHlB,ODuHkB;;AACvC,CAAC,EAAgB,QAAQ;EAAU,SCvElB,ODuEkB;;AACnC,CAAC,EAAgB,SAAS;AAC1B,CAAC,EAAgB,KAAK;EAAU,SC2PlB,OD3PkB;;AAChC,CAAC,EAAgB,UAAU;AAC3B,CAAC,EAAgB,UAAU;EAAU,SC+PlB,OD/PkB;;AACrC,CAAC,EAAgB,QAAQ;AACzB,CAAC,EAAgB,SAAS;EAAU,SC4PlB,OD5PkB;;AACpC,CAAC,EAAgB,SAAS;EAAU,SCxClB,ODwCkB;;AACpC,CAAC,EAAgB,SAAS;EAAU,SCkGlB,ODlGkB;;AACpC,CAAC,EAAgB,YAAY;AAC7B,CAAC,EAAgB,KAAK;EAAU,SC8UlB,OD9UkB;;AAChC,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,MAAM;EAAU,SCqBlB,ODrBkB;;AACjC,CAAC,EAAgB,UAAU;AAC3B,CAAC,EAAgB,WAAW;EAAU,SC2RlB,OD3RkB;;AACtC,CAAC,EAAgB,UAAU;EAAU,SCpFlB,ODoFkB;;AACrC,CAAC,EAAgB,WAAW;EAAU,SCnFlB,ODmFkB;;AACtC,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,KAAK;EAAU,SCjKlB,ODiKkB;;AAChC,CAAC,EAAgB,QAAQ;EAAU,SCkOlB,ODlOkB;;AACnC,CAAC,EAAgB,SAAS;EAAU,SCkUlB,ODlUkB;;AACpC,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,UAAU;EAAU,SC1GlB,OD0GkB;;AACrC,CAAC,EAAgB,YAAY;EAAU,SCgFlB,ODhFkB;;AACvC,CAAC,EAAgB,SAAS;EAAU,SCnDlB,ODmDkB;;AACpC,CAAC,EAAgB,eAAe;EAAU,SCzGlB,ODyGkB;;AAC1C,CAAC,EAAgB,aAAa;EAAU,SCzGlB,ODyGkB;;AACxC,CAAC,EAAgB,QAAQ;EAAU,SCsUlB,ODtUkB;;AACnC,CAAC,EAAgB,YAAY;EAAU,SC+PlB,OD/PkB;;AACvC,CAAC,EAAgB,SAAS;EAAU,SCsQlB,ODtQkB;;AACpC,CAAC,EAAgB,OAAO;EAAU,SCvLlB,ODuLkB;;AAClC,CAAC,EAAgB,OAAO;EAAU,SCzGlB,ODyGkB;;AAClC,CAAC,EAAgB,QAAQ;EAAU,SCtFlB,ODsFkB;;AACnC,CAAC,EAAgB,YAAY;EAAU,SC3BlB,OD2BkB;;AACvC,CAAC,EAAgB,WAAW;EAAU,SCxKlB,ODwKkB;;AACtC,CAAC,EAAgB,WAAW;EAAU,SCkClB,ODlCkB;;AACtC,CAAC,EAAgB,UAAU;EAAU,SC3OlB,OD2OkB;;AACrC,CAAC,EAAgB,OAAO;EAAU,SCiGlB,ODjGkB;;AAClC,CAAC,EAAgB,YAAY;EAAU,SC/ClB,OD+CkB;;AACvC,CAAC,EAAgB,KAAK;EAAU,SCpMlB,ODoMkB;;AAChC,CAAC,EAAgB,SAAS;EAAU,SCelB,ODfkB;;AACpC,CAAC,EAAgB,YAAY;EAAU,SCgJlB,ODhJkB;;AACvC,CAAC,EAAgB,kBAAkB;EAAU,SC5OlB,OD4OkB;;AAC7C,CAAC,EAAgB,mBAAmB;EAAU,SC5OlB,OD4OkB;;AAC9C,CAAC,EAAgB,gBAAgB;EAAU,SC5OlB,OD4OkB;;AAC3C,CAAC,EAAgB,kBAAkB;EAAU,SChPlB,ODgPkB;;AAC7C,CAAC,EAAgB,WAAW;EAAU,SC5OlB,OD4OkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SC5OlB,OD4OkB;;AACvC,CAAC,EAAgB,SAAS;EAAU,SC5OlB,OD4OkB;;AACpC,CAAC,EAAgB,WAAW;EAAU,SChPlB,ODgPkB;;AACtC,CAAC,EAAgB,QAAQ;EAAU,SClGlB,ODkGkB;;AACnC,CAAC,EAAgB,OAAO;EAAU,SCuClB,ODvCkB;;AAClC,CAAC,EAAgB,OAAO;EAAU,SCoPlB,ODpPkB;;AAClC,CAAC,EAAgB,aAAa;AAC9B,CAAC,EAAgB,OAAO;EAAU,SCyFlB,ODzFkB;;AAClC,CAAC,EAAgB,SAAS;EAAU,SC9IlB,OD8IkB;;AACpC,CAAC,EAAgB,WAAW;EAAU,SC0IlB,OD1IkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SC0IlB,OD1IkB;;AACvC,CAAC,EAAgB,QAAQ;EAAU,SCgNlB,ODhNkB;;AACnC,CAAC,EAAgB,OAAO;EAAU,SCnJlB,ODmJkB;;AAClC,CAAC,EAAgB,WAAW;AAC5B,CAAC,EAAgB,MAAM;EAAU,SCkJlB,ODlJkB;;AACjC,CAAC,EAAgB,WAAW;EAAU,SCnBlB,ODmBkB;;AACtC,CAAC,EAAgB,SAAS;EAAU,SCxClB,ODwCkB;;AACpC,CAAC,EAAgB,cAAc;EAAU,SCvClB,ODuCkB;;AACzC,CAAC,EAAgB,QAAQ;EAAU,SC0LlB,OD1LkB;;AACnC,CAAC,EAAgB,QAAQ;EAAU,SCpClB,ODoCkB;;AACnC,CAAC,EAAgB,MAAM;EAAU,SCoElB,ODpEkB;;AACjC,CAAC,EAAgB,QAAQ;EAAU,SCpClB,ODoCkB;;AACnC,CAAC,EAAgB,WAAW;EAAU,SCkBlB,ODlBkB;;AACtC,CAAC,EAAgB,OAAO;EAAU,SCrDlB,ODqDkB;;AAClC,CAAC,EAAgB,eAAe;EAAU,SCvDlB,ODuDkB;;AAC1C,CAAC,EAAgB,SAAS;EAAU,SCuOlB,ODvOkB;;AACpC,CAAC,EAAgB,KAAK;EAAU,SCtJlB,ODsJkB;;AAChC,CAAC,EAAgB,eAAe;AAChC,CAAC,EAAgB,UAAU;EAAU,SCqIlB,ODrIkB;;AACrC,CAAC,EAAgB,gBAAgB;AACjC,CAAC,EAAgB,eAAe;AAChC,CAAC,EAAgB,YAAY;EAAU,SCuMlB,ODvMkB;;AACvC,CAAC,EAAgB,eAAe;EAAU,SCkClB,ODlCkB;;AAC1C,CAAC,EAAgB,KAAK;EAAU,SC5IlB,OD4IkB;;AAChC,CAAC,EAAgB,UAAU;EAAU,SC7JlB,OD6JkB;;AACrC,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,aAAa;EAAU,SC1LlB,OD0LkB;;AACxC,CAAC,EAAgB,SAAS;EAAU,SC4GlB,OD5GkB;;AACpC,CAAC,EAAgB,KAAK;EAAU,SCTlB,ODSkB;;AAChC,CAAC,EAAgB,YAAY;EAAU,SChHlB,ODgHkB;;AACvC,CAAC,EAAgB,YAAY;EAAU,SC8MlB,OD9MkB;;AACvC,CAAC,EAAgB,UAAU;EAAU,SCyMlB,ODzMkB;;AACrC,CAAC,EAAgB,OAAO;EAAU,SCvHlB,ODuHkB;;AAClC,CAAC,EAAgB,aAAa;EAAU,SCmGlB,ODnGkB;;AACxC,CAAC,EAAgB,WAAW;EAAU,SC8ClB,OD9CkB;;AACtC,CAAC,EAAgB,iBAAiB;EAAU,SC8ClB,OD9CkB;;AAC5C,CAAC,EAAgB,OAAO;EAAU,SCgJlB,ODhJkB;;AAClC,CAAC,EAAgB,WAAW;EAAU,SC5NlB,OD4NkB;;AACtC,CAAC,EAAgB,kBAAkB;EAAU,SCjFlB,ODiFkB;;AAC7C,CAAC,EAAgB,OAAO;EAAU,SCoHlB,ODpHkB;;AAClC,CAAC,EAAgB,OAAO;EAAU,SCkClB,ODlCkB;;AAClC,CAAC,EAAgB,oBAAoB;EAAU,SClMlB,ODkMkB;;AAC/C,CAAC,EAAgB,qBAAqB;EAAU,SClMlB,ODkMkB;;AAChD,CAAC,EAAgB,kBAAkB;EAAU,SClMlB,ODkMkB;;AAC7C,CAAC,EAAgB,oBAAoB;EAAU,SCtMlB,ODsMkB;;AAC/C,CAAC,EAAgB,MAAM;EAAU,SC/BlB,OD+BkB;;AACjC,CAAC,EAAgB,KAAK;EAAU,SCjKlB,ODiKkB;;AAChC,CAAC,EAAgB,OAAO;EAAU,SC9SlB,OD8SkB;;AAClC,CAAC,EAAgB,WAAW;EAAU,SCmPlB,ODnPkB;;AACtC,CAAC,EAAgB,SAAS;EAAU,SC9OlB,OD8OkB;;AACpC,CAAC,EAAgB,WAAW;EAAU,SC/IlB,OD+IkB;;AACtC,CAAC,EAAgB,WAAW;EAAU,SC/IlB,OD+IkB;;AACtC,CAAC,EAAgB,WAAW;EAAU,SC4GlB,OD5GkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SCsElB,ODtEkB;;AACvC,CAAC,EAAgB,OAAO;EAAU,SC2MlB,OD3MkB;;AAClC,CAAC,EAAgB,aAAa;EAAU,SC6BlB,OD7BkB;;AACxC,CAAC,EAAgB,eAAe;EAAU,SC6BlB,OD7BkB;;AAC1C,CAAC,EAAgB,SAAS;EAAU,SChBlB,ODgBkB;;AACpC,CAAC,EAAgB,WAAW;EAAU,SClBlB,ODkBkB;;AACtC,CAAC,EAAgB,aAAa;EAAU,SCvNlB,ODuNkB;;AACxC,CAAC,EAAgB,cAAc;EAAU,SCiDlB,ODjDkB;;AACzC,CAAC,EAAgB,qBAAqB;EAAU,SC3IlB,OD2IkB;;AAChD,CAAC,EAAgB,aAAa;EAAU,SCkHlB,ODlHkB;;AACxC,CAAC,EAAgB,QAAQ;EAAU,SC1LlB,OD0LkB;;AACnC,CAAC,EAAgB,YAAY;AAC7B,CAAC,EAAgB,oBAAoB;EAAU,SCjPlB,ODiPkB;;AAC/C,CAAC,EAAgB,UAAU;AAC3B,CAAC,EAAgB,kBAAkB;EAAU,SChPlB,ODgPkB;;AAC7C,CAAC,EAAgB,aAAa;AAC9B,CAAC,EAAgB,qBAAqB;EAAU,SCnPlB,ODmPkB;;AAChD,CAAC,EAAgB,KAAK;AACtB,CAAC,EAAgB,IAAI;EAAU,SC7JlB,OD6JkB;;AAC/B,CAAC,EAAgB,IAAI;EAAU,SC/FlB,OD+FkB;;AAC/B,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,IAAI;EAAU,SC4NlB,OD5NkB;;AAC/B,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,IAAI;EAAU,SCvDlB,ODuDkB;;AAC/B,CAAC,EAAgB,IAAI;AACrB,CAAC,EAAgB,IAAI;AACrB,CAAC,EAAgB,IAAI;AACrB,CAAC,EAAgB,IAAI;EAAU,SCrDlB,ODqDkB;;AAC/B,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,IAAI;EAAU,SC8ElB,OD9EkB;;AAC/B,CAAC,EAAgB,IAAI;AACrB,CAAC,EAAgB,IAAI;EAAU,SCtDlB,ODsDkB;;AAC/B,CAAC,EAAgB,QAAQ;AACzB,CAAC,EAAgB,IAAI;EAAU,SCzRlB,ODyRkB;;AAC/B,CAAC,EAAgB,KAAK;EAAU,SCzJlB,ODyJkB;;AAChC,CAAC,EAAgB,UAAU;EAAU,SC7IlB,OD6IkB;;AACrC,CAAC,EAAgB,eAAe;EAAU,SC2GlB,OD3GkB;;AAC1C,CAAC,EAAgB,gBAAgB;EAAU,SC2GlB,OD3GkB;;AAC3C,CAAC,EAAgB,gBAAgB;EAAU,SC2GlB,OD3GkB;;AAC3C,CAAC,EAAgB,iBAAiB;EAAU,SC2GlB,OD3GkB;;AAC5C,CAAC,EAAgB,iBAAiB;EAAU,SC8GlB,OD9GkB;;AAC5C,CAAC,EAAgB,kBAAkB;EAAU,SC8GlB,OD9GkB;;AAC7C,CAAC,EAAgB,UAAU;EAAU,SCgKlB,ODhKkB;;AACrC,CAAC,EAAgB,YAAY;EAAU,SC4JlB,OD5JkB;;AACvC,CAAC,EAAgB,eAAe;EAAU,SCwOlB,ODxOkB;;AAC1C,CAAC,EAAgB,QAAQ;EAAU,SCqOlB,ODrOkB;;AACnC,CAAC,EAAgB,KAAK;EAAU,SC+NlB,OD/NkB;;AAChC,CAAC,EAAgB,YAAY;EAAU,SC+NlB,OD/NkB;;AACvC,CAAC,EAAgB,aAAa;EAAU,SCmOlB,ODnOkB;;AACxC,CAAC,EAAgB,QAAQ;EAAU,SCxMlB,ODwMkB;;AACnC,CAAC,EAAgB,eAAe;EAAU,SC+GlB,OD/GkB;;AAC1C,CAAC,EAAgB,UAAU;EAAU,SCnFlB,ODmFkB;;AACrC,CAAC,EAAgB,OAAO;EAAU,SC/IlB,OD+IkB;;AAClC,CAAC,EAAgB,IAAI;EAAU,SChXlB,ODgXkB;;AAC/B,CAAC,EAAgB,UAAU;EAAU,SCxTlB,ODwTkB;;AACrC,CAAC,EAAgB,iBAAiB;EAAU,SCxTlB,ODwTkB;;AAC5C,CAAC,EAAgB,OAAO;EAAU,SCyKlB,ODzKkB;;AAClC,CAAC,EAAgB,cAAc;EAAU,SCyKlB,ODzKkB;;AACzC,CAAC,EAAgB,gBAAgB;EAAU,SCtDlB,ODsDkB;;AAC3C,CAAC,EAAgB,cAAc;EAAU,SCpDlB,ODoDkB;;AACzC,CAAC,EAAgB,gBAAgB;EAAU,SCvDlB,ODuDkB;;AAC3C,CAAC,EAAgB,iBAAiB;EAAU,SCvDlB,ODuDkB;;AAC5C,CAAC,EAAgB,MAAM;EAAU,SCxWlB,ODwWkB;;AACjC,CAAC,EAAgB,QAAQ;EAAU,SC0MlB,OD1MkB;;AACnC,CAAC,EAAgB,QAAQ;EAAU,SCpXlB,ODoXkB;;AACnC,CAAC,EAAgB,MAAM;EAAU,SCpElB,ODoEkB;;AACjC,CAAC,EAAgB,SAAS;EAAU,SC1NlB,OD0NkB;;AACpC,CAAC,EAAgB,MAAM;EAAU,SCqElB,ODrEkB;;AACjC,CAAC,EAAgB,WAAW;EAAU,SCtJlB,ODsJkB;;AACtC,CAAC,EAAgB,OAAO;EAAU,SCuJlB,ODvJkB;;AAClC,CAAC,EAAgB,OAAO;EAAU,SC/LlB,OD+LkB;;AAClC,CAAC,EAAgB,KAAK;EAAU,SC1DlB,OD0DkB;;AAChC,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,SAAS;EAAU,SCnIlB,ODmIkB;;AACpC,CAAC,EAAgB,MAAM;EAAU,SC2GlB,OD3GkB;;AACjC,CAAC,EAAgB,OAAO;EAAU,SCxClB,ODwCkB;;AAClC,CAAC,EAAgB,QAAQ;EAAU,SCrXlB,ODqXkB;;AACnC,CAAC,EAAgB,IAAI;EAAU,SCpUlB,ODoUkB;;AAC/B,CAAC,EAAgB,GAAG;EAAU,SCgLlB,ODhLkB;;AAC9B,CAAC,EAAgB,MAAM;EAAU,SCqLlB,ODrLkB;;AACjC,CAAC,EAAgB,OAAO;EAAU,SCalB,ODbkB;;AAClC,CAAC,EAAgB,UAAU;EAAU,SCrClB,ODqCkB;;AACrC,CAAC,EAAgB,eAAe;EAAU,SC8ElB,OD9EkB;;AAC1C,CAAC,EAAgB,qBAAqB;EAAU,SCtXlB,ODsXkB;;AAChD,CAAC,EAAgB,oBAAoB;EAAU,SCxXlB,ODwXkB;;AAC/C,CAAC,EAAgB,YAAY;AAC7B,CAAC,EAAgB,oBAAoB;EAAU,SC3TlB,OD2TkB;;AAC/C,CAAC,EAAgB,aAAa;EAAU,SCjPlB,ODiPkB;;AACxC,CAAC,EAAgB,WAAW;EAAU,SC+KlB,OD/KkB;;AACtC,CAAC,EAAgB,aAAa;EAAU,SCmKlB,ODnKkB;;AACxC,CAAC,EAAgB,aAAa;AAC9B,CAAC,EAAgB,IAAI;EAAU,SCoIlB,ODpIkB;;AAC/B,CAAC,EAAgB,cAAc;EAAU,SCjBlB,ODiBkB;;AACzC,CAAC,EAAgB,cAAc;EAAU,SC6DlB,OD7DkB;;AACzC,CAAC,EAAgB,MAAM;EAAU,SC2ClB,OD3CkB;;AACjC,CAAC,EAAgB,gBAAgB;EAAU,SC7OlB,OD6OkB;;AAC3C,CAAC,EAAgB,UAAU;EAAU,SC2KlB,OD3KkB;;AACrC,CAAC,EAAgB,OAAO;EAAU,SCvDlB,ODuDkB;;AAClC,CAAC,EAAgB,YAAY;AAC7B,CAAC,EAAgB,KAAK;AACtB,CAAC,EAAgB,WAAW;EAAU,SCsIlB,ODtIkB;;AACtC,CAAC,EAAgB,aAAa;AAC9B,CAAC,EAAgB,eAAe;EAAU,SCjKlB,ODiKkB;;AAC1C,CAAC,EAAgB,MAAM;EAAU,SCwKlB,ODxKkB;;AACjC,CAAC,EAAgB,OAAO;EAAU,SCvKlB,ODuKkB;;AAClC,CAAC,EAAgB,OAAO;EAAU,SChBlB,ODgBkB;;AAClC,CAAC,EAAgB,cAAc;EAAU,SChBlB,ODgBkB;;AACzC,CAAC,EAAgB,mBAAmB;EAAU,SCsElB,ODtEkB;;AAC9C,CAAC,EAAgB,YAAY;EAAU,SCoElB,ODpEkB;;AACvC,CAAC,EAAgB,UAAU;EAAU,SC7QlB,OD6QkB;;AACrC,CAAC,EAAgB,KAAK;EAAU,SC1QlB,OD0QkB;;AAChC,CAAC,EAAgB,WAAW;EAAU,SCjDlB,ODiDkB;;AACtC,CAAC,EAAgB,eAAe;EAAU,SCjDlB,ODiDkB;;AAC1C,CAAC,EAAgB,OAAO;EAAU,SCvQlB,ODuQkB;;AAClC,CAAC,EAAgB,OAAO;EAAU,SC9IlB,OD8IkB;;AAClC,CAAC,EAAgB,SAAS;EAAU,SCzIlB,ODyIkB;;AACpC,CAAC,EAAgB,IAAI;EAAU,SC9OlB,OD8OkB;;AAC/B,CAAC,EAAgB,SAAS;EAAU,SC3WlB,OD2WkB;;AACpC,CAAC,EAAgB,MAAM;EAAU,SC9TlB,OD8TkB;;AACjC,CAAC,EAAgB,IAAI;EAAU,SCnElB,ODmEkB;;AAC/B,CAAC,EAAgB,MAAM;EAAU,SCoClB,ODpCkB;;AACjC,CAAC,EAAgB,KAAK;EAAU,SCjSlB,ODiSkB;;AAChC,CAAC,EAAgB,MAAM;EAAU,SCjSlB,ODiSkB;;AACjC,CAAC,EAAgB,QAAQ;EAAU,SCtYlB,ODsYkB;;AACnC,CAAC,EAAgB,eAAe;EAAU,SCtYlB,ODsYkB;;AAC1C,CAAC,EAAgB,MAAM;EAAU,SC2ClB,OD3CkB;;AACjC,CAAC,EAAgB,aAAa;EAAU,SC2ClB,OD3CkB;;AACxC,CAAC,EAAgB,QAAQ;EAAU,SCvClB,ODuCkB;;AACnC,CAAC,EAAgB,WAAW;AAC5B,CAAC,EAAgB,IAAI;EAAU,SC3WlB,OD2WkB;;AAC/B,CAAC,EAAgB,IAAI;AACrB,CAAC,EAAgB,KAAK;EAAU,SC2DlB,OD3DkB;;AAChC,CAAC,EAAgB,KAAK;EAAU,SCuFlB,ODvFkB;;AAChC,CAAC,EAAgB,QAAQ;EAAU,SCwBlB,ODxBkB;;AACnC,CAAC,EAAgB,WAAW;EAAU,SCpSlB,ODoSkB;;AACtC,CAAC,EAAgB,WAAW;EAAU,SCkBlB,ODlBkB;;AACtC,CAAC,EAAgB,SAAS;EAAU,SC1SlB,OD0SkB;;AACpC,CAAC,EAAgB,WAAW;EAAU,SCxPlB,ODwPkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SCjPlB,ODiPkB;;AACvC,CAAC,EAAgB,aAAa;EAAU,SC9PlB,OD8PkB;;AACxC,CAAC,EAAgB,kBAAkB;EAAU,SCxPlB,ODwPkB;;AAC7C,CAAC,EAAgB,aAAa;AAC9B,CAAC,EAAgB,eAAe;AAChC,CAAC,EAAgB,aAAa;EAAU,SCjQlB,ODiQkB;;AACxC,CAAC,EAAgB,WAAW;AAC5B,CAAC,EAAgB,eAAe;EAAU,SCvQlB,ODuQkB;;AAC1C,CAAC,EAAgB,aAAa;AAC9B,CAAC,EAAgB,aAAa;EAAU,SCxQlB,ODwQkB;;AACxC,CAAC,EAAgB,aAAa;AAC9B,CAAC,EAAgB,aAAa;EAAU,SC7PlB,OD6PkB;;AACxC,CAAC,EAAgB,YAAY;EAAU,SC1QlB,OD0QkB;;AACvC,CAAC,EAAgB,KAAK;EAAU,SCsGlB,ODtGkB;;AAChC,CAAC,EAAgB,QAAQ;EAAU,SClVlB,ODkVkB;;AACnC,CAAC,EAAgB,SAAS;EAAU,SCnLlB,ODmLkB;;AACpC,CAAC,EAAgB,UAAU;AAC3B,CAAC,EAAgB,UAAU;AAC3B,CAAC,EAAgB,WAAW;AAC5B,CAAC,EAAgB,QAAQ;AACzB,CAAC,EAAgB,UAAU;EAAU,SCxKlB,ODwKkB;;AACrC,CAAC,EAAgB,eAAe;EAAU,SCpWlB,ODoWkB;;AAC1C,CAAC,EAAgB,GAAG;AACpB,CAAC,EAAgB,MAAM;EAAU,SC1ElB,OD0EkB;;AACjC,CAAC,EAAgB,GAAG;AACpB,CAAC,EAAgB,OAAO;EAAU,SCpTlB,ODoTkB;;AAClC,CAAC,EAAgB,WAAW;EAAU,SC1OlB,OD0OkB;;AACtC,CAAC,EAAgB,IAAI;EAAU,SC5OlB,OD4OkB;;AAC/B,CAAC,EAAgB,YAAY;EAAU,SC7NlB,OD6NkB;;AACvC,CAAC,EAAgB,cAAc;EAAU,SCwBlB,ODxBkB;;AACzC,CAAC,EAAgB,GAAG;EAAU,SCzFlB,ODyFkB;;AAC9B,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,OAAO;EAAU,SC2FlB,OD3FkB;;AAClC,CAAC,EAAgB,KAAK;AACtB,CAAC,EAAgB,YAAY;EAAU,SC9HlB,OD8HkB;;AACvC,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,cAAc;EAAU,SC/HlB,OD+HkB;;AACzC,CAAC,EAAgB,QAAQ;EAAU,SC3NlB,OD2NkB;;AACnC,CAAC,EAAgB,WAAW;AAC5B,CAAC,EAAgB,YAAY;EAAU,SCrXlB,ODqXkB;;AACvC,CAAC,EAAgB,OAAO;EAAU,SCnOlB,ODmOkB;;AAClC,CAAC,EAAgB,UAAU;EAAU,SClIlB,ODkIkB;;AACrC,CAAC,EAAgB,QAAQ;EAAU,SC1ClB,OD0CkB;;AACnC,CAAC,EAAgB,UAAU;EAAU,SC7DlB,OD6DkB;;AACrC,CAAC,EAAgB,iBAAiB;EAAU,SC7DlB,OD6DkB;;AAC5C,CAAC,EAAgB,KAAK;EAAU,SCpblB,ODobkB;;AAChC,CAAC,EAAgB,cAAc;AAC/B,CAAC,EAAgB,SAAS;EAAU,SCzQlB,ODyQkB;;AACpC,CAAC,EAAgB,IAAI;EAAU,SCsClB,ODtCkB;;AAC/B,CAAC,EAAgB,WAAW;EAAU,SC/blB,OD+bkB;;AACtC,CAAC,EAAgB,KAAK;EAAU,SCrHlB,ODqHkB;;AAChC,CAAC,EAAgB,WAAW;EAAU,SClDlB,ODkDkB;;AACtC,CAAC,EAAgB,OAAO;EAAU,SCsClB,ODtCkB;;AAClC,CAAC,EAAgB,KAAK;EAAU,SCiFlB,ODjFkB;;AAChC,CAAC,EAAgB,YAAY;EAAU,SCvJlB,ODuJkB;;AACvC,CAAC,EAAgB,KAAK;EAAU,SCuElB,ODvEkB;;AAChC,CAAC,EAAgB,WAAW;EAAU,SCjblB,ODibkB;;AACtC,CAAC,EAAgB,OAAO;EAAU,SC9IlB,OD8IkB;;AAClC,CAAC,EAAgB,cAAc;EAAU,SChQlB,ODgQkB;;AACzC,CAAC,EAAgB,QAAQ;EAAU,SC9ZlB,OD8ZkB;;AACnC,CAAC,EAAgB,cAAc;EAAU,SClalB,ODkakB;;AACzC,CAAC,EAAgB,YAAY;EAAU,SCpalB,ODoakB;;AACvC,CAAC,EAAgB,QAAQ;EAAU,SCtalB,ODsakB;;AACnC,CAAC,EAAgB,UAAU;EAAU,SCpalB,ODoakB;;AACrC,CAAC,EAAgB,UAAU;EAAU,SCpalB,ODoakB;;AACrC,CAAC,EAAgB,WAAW;EAAU,SCldlB,ODkdkB;;AACtC,CAAC,EAAgB,aAAa;EAAU,SCldlB,ODkdkB;;AACxC,CAAC,EAAgB,MAAM;EAAU,SCYlB,ODZkB;;AACjC,CAAC,EAAgB,UAAU;EAAU,SC3XlB,OD2XkB;;AACrC,CAAC,EAAgB,GAAG;EAAU,SCrelB,ODqekB;;AAC9B,CAAC,EAAgB,WAAW;EAAU,SCjVlB,ODiVkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SCpKlB,ODoKkB;;AACvC,CAAC,EAAgB,cAAc;EAAU,SCrdlB,ODqdkB;;AACzC,CAAC,EAAgB,WAAW;EAAU,SC3flB,OD2fkB;;AACtC,CAAC,EAAgB,UAAU;EAAU,SCvJlB,ODuJkB;;AACrC,CAAC,EAAgB,WAAW;EAAU,SC5NlB,OD4NkB;;AACtC,CAAC,EAAgB,OAAO;EAAU,SC1OlB,OD0OkB;;AAClC,CAAC,EAAgB,cAAc;EAAU,SC1OlB,OD0OkB;;AACzC,CAAC,EAAgB,WAAW;EAAU,SCNlB,ODMkB;;AACtC,CAAC,EAAgB,UAAU;EAAU,SCNlB,ODMkB;;AACrC,CAAC,EAAgB,QAAQ;EAAU,SC/dlB,OD+dkB;;AACnC,CAAC,EAAgB,IAAI;EAAU,SC7clB,OD6ckB;;AAC/B,CAAC,EAAgB,QAAQ;EAAU,SC1PlB,OD0PkB;;AACnC,CAAC,EAAgB,UAAU;EAAU,SChhBlB,ODghBkB;;AACrC,CAAC,EAAgB,GAAG;EAAU,SC7blB,OD6bkB;;AAC9B,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,OAAO;AACxB,CAAC,EAAgB,IAAI;EAAU,SCxQlB,ODwQkB;;AAC/B,CAAC,EAAgB,SAAS;EAAU,SC7MlB,OD6MkB;;AACpC,CAAC,EAAgB,WAAW;EAAU,SCpdlB,ODodkB;;AACtC,CAAC,EAAgB,eAAe;EAAU,SCnZlB,ODmZkB;;AAC1C,CAAC,EAAgB,SAAS;EAAU,SCxYlB,ODwYkB;;AACpC,CAAC,EAAgB,SAAS;EAAU,SC1TlB,OD0TkB;;AACpC,CAAC,EAAgB,QAAQ;EAAU,SCxPlB,ODwPkB;;AACnC,CAAC,EAAgB,OAAO;EAAU,SCrHlB,ODqHkB;;AAClC,CAAC,EAAgB,aAAa;EAAU,SCzGlB,ODyGkB;;AACxC,CAAC,EAAgB,YAAY;EAAU,SCrGlB,ODqGkB;;AACvC,CAAC,EAAgB,SAAS;EAAU,SCpGlB,ODoGkB;;AACpC,CAAC,EAAgB,UAAU;EAAU,SC5clB,OD4ckB;;AACrC,CAAC,EAAgB,gBAAgB;EAAU,SC9clB,OD8ckB;;AAC3C,CAAC,EAAgB,QAAQ;EAAU,SC3YlB,OD2YkB;;AACnC,CAAC,EAAgB,KAAK;EAAU,SChHlB,ODgHkB;;AAChC,CAAC,EAAgB,YAAY;EAAU,SCIlB,ODJkB;;AACvC,CAAC,EAAgB,WAAW;EAAU,SC5MlB,OD4MkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SCpElB,ODoEkB;;AACvC,CAAC,EAAgB,UAAU;EAAU,SChSlB,ODgSkB;;AACrC,CAAC,EAAgB,MAAM;EAAU,SCGlB,ODHkB;;AACjC,CAAC,EAAgB,KAAK;EAAU,SCtOlB,ODsOkB;;AAChC,CAAC,EAAgB,QAAQ;EAAU,SC7NlB,OD6NkB;;AACnC,CAAC,EAAgB,YAAY;EAAU,SChClB,ODgCkB;;AACvC,CAAC,EAAgB,gBAAgB;EAAU,SChClB,ODgCkB;;AAC3C,CAAC,EAAgB,aAAa;EAAU,SCDlB,ODCkB;;AACxC,CAAC,EAAgB,YAAY;EAAU,SC1OlB,OD0OkB;;AACvC,CAAC,EAAgB,WAAW;EAAU,SCFlB,ODEkB;;AACtC,CAAC,EAAgB,YAAY;EAAU,SC3OlB,OD2OkB;;AACvC,CAAC,EAAgB,cAAc;EAAU,SC1OlB,OD0OkB;;AACzC,CAAC,EAAgB,cAAc;EAAU,SC5OlB,OD4OkB;;AACzC,CAAC,EAAgB,OAAO;EAAU,SCvNlB,ODuNkB;;AAClC,CAAC,EAAgB,kBAAkB;EAAU,SC9XlB,OD8XkB;;AAC7C,CAAC,EAAgB,YAAY;EAAU,SChMlB,ODgMkB;;AACvC,CAAC,EAAgB,SAAS;EAAU,SCIlB,ODJkB;;AACpC,CAAC,EAAgB,OAAO;EAAU,SC7IlB,OD6IkB;;AAClC,CAAC,EAAgB,UAAU;EAAU,SCjBlB,ODiBkB;;AACrC,CAAC,EAAgB,WAAW;EAAU,SChBlB,ODgBkB;;AACtC,CAAC,EAAgB,MAAM;AACvB,CAAC,EAAgB,IAAI;EAAU,SCphBlB,ODohBkB;;AAC/B,CAAC,EAAgB,QAAQ;EAAU,SCdlB,ODckB;;AACnC,CAAC,EAAgB,MAAM;EAAU,SCnDlB,ODmDkB;;AACjC,CAAC,EAAgB,OAAO;EAAU,SCvFlB,ODuFkB;;AAClC,CAAC,EAAgB,OAAO;EAAU,SCrPlB,ODqPkB;;AE/kBlC;EACE,iBAAA;EACA,kBAAA;EACA,kBAAA;;AAHF,MAIE;EACE,cAAA;;AACA,MAFF,YAEG;EACC,cAAA;;AAPN,MAUE;EACE,eAAA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;;AAdJ,MAgBE;EACE,cAAA;;AAIJ,kBAAmB;EACjB,YAAA;EACA,QAAA;;ACvBF;EACE,gBAAA;;AAGF,UAAW,KAAK,IAAI;EAClB,gBAAA;;ACLF;EACE,eAAA;;AADF,WAEE,UAAU;EACR,gBAAA;;AAHJ,WAKE;EACI,eAAA;;;AANN,WAKE,KAEI,KAAI;EACJ,cAAA;EACA,SHWsB,OGXtB;EACA,a5EW8D,a4EX9D;EACA,eAAA;EACA,oBAAA;;ACZN;E9EgEE,gDAAA;EACQ,wCAAA;;A8E/DR,IAAC;E9E8DD,sDAAA;EACQ,8CAAA;;A8E5DR,IAAC;AACD,IAAC;AACD,QAAQ,UAAW;EACjB,oCAAA;EACA,iCAAA;EACA,gCAAA;EACA,yBAAA;EACA,UAAA;;AACA,IARD,SAQE;AAAD,IAPD,UAOE;AAAD,QANM,UAAW,KAMhB;E9EmDH,wBAAA;EACQ,gBAAA;;A8EjDN,IAXD,SAWE;AAAD,IAVD,UAUE;AAAD,QATM,UAAW,KAShB;EACC,wCAAA;EACA,SAAA;;AAKN;E5DjBE,yBAAA;E2BWE,kBAAkB,sDAAlB;EACA,kBAAkB,iDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;E3BbF,qBAAA;EACA,cAAA;;AAEA,WAAC;AACD,WAAC;AACD,WAAC;AACD,WAAC;AACD,KAAM,iBAAgB;EACpB,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,cAAA;;AAEF,WAAC;AACD,WAAC;AACD,KAAM,iBAAgB;EACpB,sBAAA;;AACA,WAJD,OAIE;AAAD,WAHD,OAGE;AAAD,KAFI,iBAAgB,WAEnB;AACD,WALD,OAKE;AAAD,WAJD,OAIE;AAAD,KAHI,iBAAgB,WAGnB;AACD,WAND,OAME;AAAD,WALD,OAKE;AAAD,KAJI,iBAAgB,WAInB;EACC,yBAAA;EACI,qBAAA;;AAMN,WAHD;AAGC,WAFD;AAEC,QADM,UAAW;AAEjB,WAJD,SAIE;AAAD,WAHD,UAGE;AAAD,QAFM,UAAW,YAEhB;AACD,WALD,SAKE;AAAD,WAJD,UAIE;AAAD,QAHM,UAAW,YAGhB;AACD,WAND,SAME;AAAD,WALD,UAKE;AAAD,QAJM,UAAW,YAIhB;AACD,WAPD,SAOE;AAAD,WAND,UAME;AAAD,QALM,UAAW,YAKhB;EACC,yBAAA;EACA,qBAAA;;A4DdN;E5DrBE,yBAAA;E2BWE,kBAAkB,sDAAlB;EACA,kBAAkB,iDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;E3BbF,qBAAA;EACA,cAAA;;AAEA,YAAC;AACD,YAAC;AACD,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,cAAA;;AAEF,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,sBAAA;;AACA,YAJD,OAIE;AAAD,YAHD,OAGE;AAAD,KAFI,iBAAgB,YAEnB;AACD,YALD,OAKE;AAAD,YAJD,OAIE;AAAD,KAHI,iBAAgB,YAGnB;AACD,YAND,OAME;AAAD,YALD,OAKE;AAAD,KAJI,iBAAgB,YAInB;EACC,yBAAA;EACI,qBAAA;;AAMN,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;EACC,yBAAA;EACA,qBAAA;;A4DTJ;AAAG,SAAC;E9EgCJ,wBAAA;EACQ,gBAAA;;A8E5BV;E5D/BE,yBAAA;E2BWE,kBAAkB,sDAAlB;EACA,kBAAkB,iDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;E3BbF,qBAAA;EACA,cAAA;;AAEA,YAAC;AACD,YAAC;AACD,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,cAAA;;AAEF,YAAC;AACD,YAAC;AACD,KAAM,iBAAgB;EACpB,sBAAA;;AACA,YAJD,OAIE;AAAD,YAHD,OAGE;AAAD,KAFI,iBAAgB,YAEnB;AACD,YALD,OAKE;AAAD,YAJD,OAIE;AAAD,KAHI,iBAAgB,YAGnB;AACD,YAND,OAME;AAAD,YALD,OAKE;AAAD,KAJI,iBAAgB,YAInB;EACC,yBAAA;EACI,qBAAA;;AAMN,YAHD;AAGC,YAFD;AAEC,QADM,UAAW;AAEjB,YAJD,SAIE;AAAD,YAHD,UAGE;AAAD,QAFM,UAAW,aAEhB;AACD,YALD,SAKE;AAAD,YAJD,UAIE;AAAD,QAHM,UAAW,aAGhB;AACD,YAND,SAME;AAAD,YALD,UAKE;AAAD,QAJM,UAAW,aAIhB;AACD,YAPD,SAOE;AAAD,YAND,UAME;AAAD,QALM,UAAW,aAKhB;EACC,yBAAA;EACA,qBAAA;;A4DAN;AAAS,aAAc;AxDkDvB,aAAc;EwDjDZ,gBAAA;;ACvCF;EACE,a9EiBkE,a8EjBlE;EACA,mBAAA;EACA,WAAA;EACA,kBAAA;EACA,wBAAA;EACA,WAAA;;AACA,MAAC;EACC,SAAA;EACA,SLUgB,OKVhB;EACA,OAAA;EACA,iBAAA;EACA,kBAAA;EACA,kBAAA;EACA,SAAA;EACA,QAAA;;AAKJ,cAEE;E7DyCA,yBAAA;EACA,WAAA;EACA,eAAA;EACA,gBAAA;;A6D9CF,cAME,KAAK;EACH,yBAAA;EACA,mBAAA;EACA,mBAAA;EACA,iBAAA;;AAMF,cADa,KAAK,IACjB;AAAQ,cADI,KAAK,IACR;EACR,qBAAA;ErDtCF,mEAAA;;AqDyCA,cALa,KAAK,IAKjB;EACC,yBAAA;EACA,qBAAA;EACA,cAAA;ErD5CF,mEAAA;;AqDmDA,cADa,UAAU;AAEvB,cAFa,UAAU,IAEtB;AACD,cAHa,UAAU,IAGtB;EACC,yBAAA;EACA,qBAAA;ErDvDF,mEAAA;;AqD8DA,cADa,YAAY;AAEzB,cAFa,YAAY,IAExB;AACD,cAHa,YAAY,IAGxB;EACC,yBAAA;;AAKF,cADa,YAAY,IACxB;AACD,cAFa,YAAY,IAExB;EACC,yBAAA;;AAKJ;EACE,kBAAA;EACA,mBAAA;EACA,yBAAA;;AAIF,UACE;AADU,gBACV;EACE,gBAAA;;AAKJ,OAAQ;EACN,mBAAA;;AAIF;EACE,kBAAA;;AACA,iBAAC,MACC;EACE,yBAAA;EACA,qBAAA;;AAHJ,iBAAC,MAKC;EACE,cAAA;;AAGJ,iBAAC;EACC,sBAAA;;AADF,iBAAC,UAEC;EACE,UAAA;EACA,iBAAA;EACA,WAAA;;AAhBN,iBAmBE;EACE,8BAAA;;AACA,iBAFF,IAEG;EACC,SLhGe,OKgGf;EACA,a9EpG8D,a8EoG9D;EACA,cAAA;EACA,kBAAA;EACA,WAAA;EACA,QAAA;;AA3BN,iBA8BE;EACE,UAAA;EACA,aAAA;EACA,SAAA;;AAEF,OAAQ,kBAAE;EACR,YAAA;EACA,SAAA;;AAEF,KAAM,kBAAC,OAAQ;EACb,cAAA;;ACzIF,aAAC;AAAY,aAAC;AAAY,QAAQ,UAAW;EAC3C,qBAAA;EhF8DF,wBAAA;EACQ,gBAAA;EgF7DN,cAAA;;AAEF,aAAC;EACC,qBAAA;;AACA,UAAW,cAFZ;EAGG,qBAAA;;AAEF,YAAa,cALd;EAMG,qBAAA;;AAEF,YAAa,cARd;EASG,qBAAA;;AAKN,YAAa,iBAAiB;EhF4C5B,wBAAA;EACQ,gBAAA;;AgFzCV;EACE,gBAAA;;ACzBF;EACE,gBAAA;EACA,eAAA;EACA,gBAAA;;AACA,EAAG;AAAG,EAAG;AAAG,EAAG;AAAG,EAAG;AAAG,EAAG;AAAG,EAAG;EAC/B,cAAA;;ACLJ;EACE,6BAAA;;AADF,WAEE,iBAAgB;EACd,aAAA;;AAGJ;EACE,cAAA;EACA,eAAA;;AAGF;EACE,gBAAA;;ACVF;EACE,yBAAA;EACA,mBAAA;EACA,kBAAA;;AAGF,aAAc;EACZ,eAAA;;AAIF;EACE,eAAA;EACA,gBAAA;;AAIF;EACE,gBAAA;EACA,gBAAA;EACA,uBAAA;;AAHF,aAIE;EACE,kBAAA;EACA,mBAAA;;AANJ,aAIE,OAGE;EACE,iBAAA;;AARN,aAIE,OAME;EACE,gBAAA;;AC9BN,MACE,GACE;AAFJ,MACE,GAEE;ElEGF,yBAAA;E2BWE,kBAAkB,sDAAlB;EACA,kBAAkB,iDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;E3BbF,qBAAA;EkEHI,cAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;;AlEGJ,MkEVA,GACE,IlESD;AAAD,MkEVA,GAEE,OlEQD;AACD,MkEXA,GACE,IlEUD;AAAD,MkEXA,GAEE,OlESD;AACD,MkEZA,GACE,IlEWD;AAAD,MkEZA,GAEE,OlEUD;AACD,MkEbA,GACE,IlEYD;AAAD,MkEbA,GAEE,OlEWD;AACD,KAAM,iBAAgB,MkEdtB,GACE;AlEaF,KAAM,iBAAgB,MkEdtB,GAEE;ElEaA,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,cAAA;;AAEF,MkEpBA,GACE,IlEmBD;AAAD,MkEpBA,GAEE,OlEkBD;AACD,MkErBA,GACE,IlEoBD;AAAD,MkErBA,GAEE,OlEmBD;AACD,KAAM,iBAAgB,MkEtBtB,GACE;AlEqBF,KAAM,iBAAgB,MkEtBtB,GAEE;ElEqBA,sBAAA;;AACA,MkExBF,GACE,IlEmBD,OAIE;AAAD,MkExBF,GAEE,OlEkBD,OAIE;AAAD,MkExBF,GACE,IlEoBD,OAGE;AAAD,MkExBF,GAEE,OlEmBD,OAGE;AAAD,KAFI,iBAAgB,MkEtBtB,GACE,IlEuBC;AAAD,KAFI,iBAAgB,MkEtBtB,GAEE,OlEsBC;AACD,MkEzBF,GACE,IlEmBD,OAKE;AAAD,MkEzBF,GAEE,OlEkBD,OAKE;AAAD,MkEzBF,GACE,IlEoBD,OAIE;AAAD,MkEzBF,GAEE,OlEmBD,OAIE;AAAD,KAHI,iBAAgB,MkEtBtB,GACE,IlEwBC;AAAD,KAHI,iBAAgB,MkEtBtB,GAEE,OlEuBC;AACD,MkE1BF,GACE,IlEmBD,OAME;AAAD,MkE1BF,GAEE,OlEkBD,OAME;AAAD,MkE1BF,GACE,IlEoBD,OAKE;AAAD,MkE1BF,GAEE,OlEmBD,OAKE;AAAD,KAJI,iBAAgB,MkEtBtB,GACE,IlEyBC;AAAD,KAJI,iBAAgB,MkEtBtB,GAEE,OlEwBC;EACC,yBAAA;EACI,qBAAA;;AAMN,MkElCF,GACE,IlE8BD;AAGC,MkElCF,GAEE,OlE6BD;AAGC,MkElCF,GACE,IlE+BD;AAEC,MkElCF,GAEE,OlE8BD;AAEC,QADM,UAAW,OkEjCnB,GACE;AlEiCA,QADM,UAAW,OkEjCnB,GAEE;AlEiCA,MkEnCF,GACE,IlE8BD,SAIE;AAAD,MkEnCF,GAEE,OlE6BD,SAIE;AAAD,MkEnCF,GACE,IlE+BD,UAGE;AAAD,MkEnCF,GAEE,OlE8BD,UAGE;AAAD,QAFM,UAAW,OkEjCnB,GACE,IlEkCC;AAAD,QAFM,UAAW,OkEjCnB,GAEE,OlEiCC;AACD,MkEpCF,GACE,IlE8BD,SAKE;AAAD,MkEpCF,GAEE,OlE6BD,SAKE;AAAD,MkEpCF,GACE,IlE+BD,UAIE;AAAD,MkEpCF,GAEE,OlE8BD,UAIE;AAAD,QAHM,UAAW,OkEjCnB,GACE,IlEmCC;AAAD,QAHM,UAAW,OkEjCnB,GAEE,OlEkCC;AACD,MkErCF,GACE,IlE8BD,SAME;AAAD,MkErCF,GAEE,OlE6BD,SAME;AAAD,MkErCF,GACE,IlE+BD,UAKE;AAAD,MkErCF,GAEE,OlE8BD,UAKE;AAAD,QAJM,UAAW,OkEjCnB,GACE,IlEoCC;AAAD,QAJM,UAAW,OkEjCnB,GAEE,OlEmCC;AACD,MkEtCF,GACE,IlE8BD,SAOE;AAAD,MkEtCF,GAEE,OlE6BD,SAOE;AAAD,MkEtCF,GACE,IlE+BD,UAME;AAAD,MkEtCF,GAEE,OlE8BD,UAME;AAAD,QALM,UAAW,OkEjCnB,GACE,IlEqCC;AAAD,QALM,UAAW,OkEjCnB,GAEE,OlEoCC;EACC,yBAAA;EACA,qBAAA;;AkEzCN,MACE,GACE,IAOE;AATN,MACE,GAEE,OAME;EACE,eAAA;EACA,mBAAA;EACA,aAAA;;AAZR,MACE,GAcE,IAAG,MACH,IAAG;EACD,cAAA;;AAjBN,MACE,GAkBE,EAAC;EACC,sBAAA;EpF4CJ,wDAAA;EACQ,gDAAA;EoF3CJ,UAAA;;AAtBN,MAyBE,UACE;AA1BJ,MAyBE,UAEE,IAAG;AA3BP,MAyBE,UAGE,IAAG;AA5BP,MAyBE,UAIE,IAAG;AA7BP,MAyBE,UAKE;EACE,mBAAA;EpFiCJ,wBAAA;EACQ,gBAAA;EoFhCJ,cAAA;EACA,eAAA;;AAlCN,MAqCE,MACG,IAEE;AAxCP,MAqCE,MAEG,OACE;EACG,gBAAA;;AAzCV,MA6CE,UACG,IAEE;AAhDP,MA6CE,UAEG,OACE;EACG,iBAAA;;AAMV,SACE,GACE;AAFJ,SACE,GAEE;EACE,gBAAA;EACA,iBAAA;EACA,iBAAA;;AANN,SACE,GACE,IAKE;AAPN,SACE,GAEE,OAIE;EACE,eAAA;;AC/DR,WACE,KACE;AAFJ,WACE,KAEE;EnEGF,yBAAA;E2BWE,kBAAkB,sDAAlB;EACA,kBAAkB,iDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;E3BbF,qBAAA;EACA,cAAA;EmEJI,eAAA;EACA,gBAAA;EACA,iBAAA;;AnEIJ,WmEVA,KACE,InESD;AAAD,WmEVA,KAEE,OnEQD;AACD,WmEXA,KACE,InEUD;AAAD,WmEXA,KAEE,OnESD;AACD,WmEZA,KACE,InEWD;AAAD,WmEZA,KAEE,OnEUD;AACD,WmEbA,KACE,InEYD;AAAD,WmEbA,KAEE,OnEWD;AACD,KAAM,iBAAgB,WmEdtB,KACE;AnEaF,KAAM,iBAAgB,WmEdtB,KAEE;EnEaA,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,cAAA;;AAEF,WmEpBA,KACE,InEmBD;AAAD,WmEpBA,KAEE,OnEkBD;AACD,WmErBA,KACE,InEoBD;AAAD,WmErBA,KAEE,OnEmBD;AACD,KAAM,iBAAgB,WmEtBtB,KACE;AnEqBF,KAAM,iBAAgB,WmEtBtB,KAEE;EnEqBA,sBAAA;;AACA,WmExBF,KACE,InEmBD,OAIE;AAAD,WmExBF,KAEE,OnEkBD,OAIE;AAAD,WmExBF,KACE,InEoBD,OAGE;AAAD,WmExBF,KAEE,OnEmBD,OAGE;AAAD,KAFI,iBAAgB,WmEtBtB,KACE,InEuBC;AAAD,KAFI,iBAAgB,WmEtBtB,KAEE,OnEsBC;AACD,WmEzBF,KACE,InEmBD,OAKE;AAAD,WmEzBF,KAEE,OnEkBD,OAKE;AAAD,WmEzBF,KACE,InEoBD,OAIE;AAAD,WmEzBF,KAEE,OnEmBD,OAIE;AAAD,KAHI,iBAAgB,WmEtBtB,KACE,InEwBC;AAAD,KAHI,iBAAgB,WmEtBtB,KAEE,OnEuBC;AACD,WmE1BF,KACE,InEmBD,OAME;AAAD,WmE1BF,KAEE,OnEkBD,OAME;AAAD,WmE1BF,KACE,InEoBD,OAKE;AAAD,WmE1BF,KAEE,OnEmBD,OAKE;AAAD,KAJI,iBAAgB,WmEtBtB,KACE,InEyBC;AAAD,KAJI,iBAAgB,WmEtBtB,KAEE,OnEwBC;EACC,yBAAA;EACI,qBAAA;;AAMN,WmElCF,KACE,InE8BD;AAGC,WmElCF,KAEE,OnE6BD;AAGC,WmElCF,KACE,InE+BD;AAEC,WmElCF,KAEE,OnE8BD;AAEC,QADM,UAAW,YmEjCnB,KACE;AnEiCA,QADM,UAAW,YmEjCnB,KAEE;AnEiCA,WmEnCF,KACE,InE8BD,SAIE;AAAD,WmEnCF,KAEE,OnE6BD,SAIE;AAAD,WmEnCF,KACE,InE+BD,UAGE;AAAD,WmEnCF,KAEE,OnE8BD,UAGE;AAAD,QAFM,UAAW,YmEjCnB,KACE,InEkCC;AAAD,QAFM,UAAW,YmEjCnB,KAEE,OnEiCC;AACD,WmEpCF,KACE,InE8BD,SAKE;AAAD,WmEpCF,KAEE,OnE6BD,SAKE;AAAD,WmEpCF,KACE,InE+BD,UAIE;AAAD,WmEpCF,KAEE,OnE8BD,UAIE;AAAD,QAHM,UAAW,YmEjCnB,KACE,InEmCC;AAAD,QAHM,UAAW,YmEjCnB,KAEE,OnEkCC;AACD,WmErCF,KACE,InE8BD,SAME;AAAD,WmErCF,KAEE,OnE6BD,SAME;AAAD,WmErCF,KACE,InE+BD,UAKE;AAAD,WmErCF,KAEE,OnE8BD,UAKE;AAAD,QAJM,UAAW,YmEjCnB,KACE,InEoCC;AAAD,QAJM,UAAW,YmEjCnB,KAEE,OnEmCC;AACD,WmEtCF,KACE,InE8BD,SAOE;AAAD,WmEtCF,KAEE,OnE6BD,SAOE;AAAD,WmEtCF,KACE,InE+BD,UAME;AAAD,WmEtCF,KAEE,OnE8BD,UAME;AAAD,QALM,UAAW,YmEjCnB,KACE,InEqCC;AAAD,QALM,UAAW,YmEjCnB,KAEE,OnEoCC;EACC,yBAAA;EACA,qBAAA;;AmEzCN,WACE,KACE,IAME;AARN,WACE,KAEE,OAKE;EACE,eAAA;EACA,mBAAA;EACA,aAAA;;AAMJ,WAFF,KAAK,IAEF;AAAD,WADF,KAAK,OACF;ErF+CH,sDAAA;EACQ,8CAAA;;AqF1CN,WAFF,UAAU;AAER,WADF,UAAU;AAER,WAHF,UAAU,IAGP;AAAD,WAFF,UAAU,OAEP;AACD,WAJF,UAAU,IAIP;AAAD,WAHF,UAAU,OAGP;EACC,yBAAA;EACA,qBAAA;ErFqCJ,sDAAA;EACQ,8CAAA;EqFpCJ,cAAA;ExCZF,kBAAkB,sDAAlB;EACA,kBAAkB,iDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;AwCrBJ,WAiCE,YACE;AAlCJ,WAiCE,YAEE,OAAM;AAnCV,WAiCE,YAGE,OAAM;AApCV,WAiCE,YAIE;AArCJ,WAiCE,YAKE,IAAG;AAtCP,WAiCE,YAME,IAAG;ErFyBL,wBAAA;EACQ,gBAAA;EqFxBJ,eAAA;ExCxBF,kBAAkB,sDAAlB;EACA,kBAAkB,iDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;AwC0BJ,cjDhDE,KACE;AiD+CJ,cjDhDE,KAEE;EACE,gBAAA;EACA,eAAA;EACA,gBAAA;;AAEF,cAPF,KAOG,YACC;AADF,cAPF,KAOG,YAEC;ETGJ,8BAAA;EACG,2BAAA;;ASAD,cAbF,KAaG,WACC;AADF,cAbF,KAaG,WAEC;ETXJ,+BAAA;EACG,4BAAA;;A0D2CL,cAEE,KACE;AAHJ,cAEE,KAEE;EACE,gBAAA;;AALN,cAEE,KACE,IAGE;AANN,cAEE,KAEE,OAEE;EACE,eAAA;EACA,eAAA;;ACvDR;EACE,gBAAA;;AAOF,YACE;EACE,cAAA;;AAFJ,YACE,OAEE;EACE,gBAAA;;AAJN,YAOE;EACE,qBAAA;EACA,yBAAA;;AATJ,YAWE;EzCFE,kBAAkB,sDAAlB;EACA,kBAAkB,iDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;AyCbJ,YAWE,eAEE,kBAAkB;EAChB,6BAAA;;AAdN,YAiBE;EACE,gBAAA;EACA,cAAA;;AAnBJ,YAiBE,aAGE;EACE,cAAA;EACA,gBAAA;;AACA,YANJ,aAGE,IAGG;EACC,SAAS,OAAT;EACA,arFZ4D,aqFY5D;EACA,eAAA;EACA,iBAAA;EACA,iBAAA;;AAEF,YAbJ,aAGE,IAUG;EACC,aAAA;EACA,qBAAA;;AAEF,YAjBJ,aAGE,IAcG;EACC,qBAAA;;AAEF,YApBJ,aAGE,IAiBG,UAAU;EACT,SAAS,OAAT;EACA,gBAAA;EACA,iBAAA;;AChDR;EvFgEE,iDAAA;EACQ,yCAAA;EuF/DR,UAAA;;AAGF;EACE,cAAA;EACA,iBAAA;EACA,kBAAA;;AAGF;EACE,mBAAA;EACA,gBAAA;EACA,cAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;;AANF,cAOE;EACE,YAAA;EACA,kBAAA;EACA,UAAA;EACA,QAAA;;AAEF,cAAC;EACC,mBAAA;;ACxBJ;EACE;IAAQ,wBAAA;;EACR;IAAQ,2BAAA;;;AAIV;EACE;IAAQ,wBAAA;;EACR;IAAQ,2BAAA;;;AAGV;ExFoDE,qDAAA;EACQ,6CAAA;;AwFnDR,SAAC;AAAsB,SAAC;EACtB,iBAAA;EACA,kBAAA;;AAEF,SAAC;EACC,iBAAA;;AAEF,SAAC;EACC,YAAA;EACA,mBAAA;;AAEF,SAAC;EACC,WAAA;EACA,kBAAA;;AAEF,EAAG,YAAG,YAAY;EAChB,gBAAA;EACA,eAAA;;AAIJ;EACE,gBAAA;;AACA,oBAAqB,cAAE;AAAM,yBAA0B,cAAE;EACvD,cAAA;EACA,eAAA;EACA,kBAAA;EACA,iBAAA;;AAEF,oBAAqB,cAAE;EACrB,WAAA;EACA,MAAA;EACA,WAAA;;AAEF,yBAA0B,cAAE;EAC1B,cAAA;EACA,gBAAA;EACA,QAAA;EACA,uBAAA;EACA,UAAA;EACA,mBAAA;;AAEF,oBAAoB,YAAa,cAAE;AAAM,yBAAyB,YAAa,cAAE;EAC/E,eAAA;;AAEF,YAAa;EACX,iBAAA;;AAEF,YAAa;EACX,gBAAA;;AAIJ;EACE,mBAAA;EACA,cAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;;AALF,qBAME;EACE,mBAAA;EACA,gBAAA;EACA,cAAA;EACA,iBAAA;;AAVJ,qBAYE;AAZF,qBAYO;EACH,eAAA;EACA,iBAAA;;AAdJ,qBAgBE;EACE,mBAAA;;ACpFJ,MACE,QAGE,KACE;AALN,MAEE,QAEE,KACE;AALN,MAGE,QACE,KACE;AALN,MACE,QAGE,KAEE;AANN,MAEE,QAEE,KAEE;AANN,MAGE,QACE,KAEE;EACE,qBAAA;;AAPR,MACE,QAGE,KACE,KAGE,IAAG;AARX,MAEE,QAEE,KACE,KAGE,IAAG;AARX,MAGE,QACE,KACE,KAGE,IAAG;AARX,MACE,QAGE,KAEE,KAEE,IAAG;AARX,MAEE,QAEE,KAEE,KAEE,IAAG;AARX,MAGE,QACE,KAEE,KAEE,IAAG;EACD,qBAAA;;AATV,MACE,QAGE,KAQE;AAZN,MAEE,QAEE,KAQE;AAZN,MAGE,QACE,KAQE;EACE,aAAa,WAAb;EACA,kBAAA;EACA,gBAAA;;AAfR,MAmBE;EACE,4BAAA;EACA,yBAAA;E5CJA,kBAAkB,sDAAlB;EACA,kBAAkB,iDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;A4CKJ;EACE,yBAAA;;AADF,eAEE,QAGE,KACE;AANN,eAGE,QAEE,KACE;AANN,eAIE,QACE,KACE;AANN,eAEE,QAGE,KAEE;AAPN,eAGE,QAEE,KAEE;AAPN,eAIE,QACE,KAEE;EACE,yBAAA;;AARR,eAYE,QAAQ,KACN;AAbJ,eAYE,QAAQ,KAEN;EACE,wBAAA;;AAOF,cADF,QAAQ,KACL,YAAY;EACX,yBAAA;;AAEF,cAJF,QAAQ,KAIL,YAAY;EACX,6BAAA;;AAKN,YACE,QAAQ,KAAI,MACV;AAFJ,YACE,QAAQ,KAAI,MAEV;EACE,yBAAA;EACA,4BAAA;;AC9DN;EACE,eAAA;;AADF,SAEE,KACE;EACE,cAAA;EACA,kBAAA;EACA,mBAAA;EACA,gBAAA;;AACA,SANJ,KACE,IAKG;AACD,SAPJ,KACE,IAMG;AACD,SARJ,KACE,IAOG;EACC,uBAAA;EACA,qBAAA;EACA,cAAA;;AAbR,SAEE,KAcE;EACE,aAAA;EACA,qBAAA;;AACA,SAjBJ,KAcE,iBAGG;EACC,WAAA;;AApBR,SAwBE;EACE,eAAA;;AAzBJ,SAwBE,eAEE,KAAI,YAAa;EACf,kBAAA;;AACA,SAJJ,eAEE,KAAI,YAAa,IAEd;EACC,qBAAA;;AAKJ,SADF,MAAM;AAEJ,SAFF,MAAM,IAEH;AACD,SAHF,MAAM,IAGH;EACC,6BAAA;EACA,qBAAA;;AAUF,QAH2C;EAG3C,YAJD;IAEG,gCAAA;;;AAGA,YALH,cAIC,KACG,YAAa;EACZ,kBAAA;;AANN,YAAC,cAIC,KAIE;EACE,gBAAA;;AACA,YAVL,cAIC,KAIE,IAEG;EACC,kBAAA;EACA,mBAAA;;AAbV,YAkBE;EACE,gBAAA;;AxEsBF,YwEvBA,KAEG,OAAQ,IxEqBV;EACC,mBAAA;EACA,YAAA;EACA,SAAS,EAAT;EACA,cAAA;EACA,WAAA;EACA,UAAA;EACA,kBAAA;EACA,WAAA;;AwE3BE,YAJJ,KAEG,OAAQ;AAGP,YALJ,KAEG,OAAQ,IAGN;AACD,YANJ,KAEG,OAAQ,IAIN;AACD,YAPJ,KAEG,OAAQ,IAKN;EACC,6BAAA;EACA,oBAAA;EACA,cAAA;;AACA,YAXN,KAEG,OAAQ,IASJ;AAAD,YAXN,KAEG,OAAQ,IAGN,OAME;AAAD,YAXN,KAEG,OAAQ,IAIN,MAKE;AAAD,YAXN,KAEG,OAAQ,IAKN,MAIE;EACC,mBAAA;;AAIN,YAhBF,KAgBG,YACC;EACE,eAAA;;AACA,YAnBN,KAgBG,YACC,IAEG;EACC,kBAAA;;AAtCV,YAkBE,KAwBE;EACE,SAAA;EACA,cAAA;EACA,eAAA;EACA,oBAAA;EACA,iBAAA;;AxENJ,YwEvBA,KAwBE,IAMG,OxEPJ;AAAD,YwEvBA,KAwBE,IAOG,MxERJ;AAAD,YwEvBA,KAwBE,IAQG,MxETJ;EACC,mBAAA;EACA,YAAA;EACA,SAAS,EAAT;EACA,cAAA;EACA,WAAA;EACA,UAAA;EACA,kBAAA;EACA,WAAA;;AwEjDJ,YAkBE,KAoCE;EACE,UAAA;EACA,eAAA;;AACA,YAvCJ,KAoCE,iBAGG;EACC,UAAA;EACA,WAAA;;AAKJ,YADF,MAAM;AAEJ,YAFF,MAAM,IAEH;AACD,YAHF,MAAM,IAGH;EACC,6BAAA;;AC7GN;EACE,eAAA;EACA,gBAAA;;AAIF;EACE,iBAAA;EACA,gBAAA;;ACTF;AAAI;AAAK;AAAI;EAAM,gBAAA;;AAEnB,YAAa;EACX,eAAA;;AADF,YAAa,SAEX,EAAE;EACA,iBAAA;;AAcH,QAV8C;EAC7C;IACE,kBAAA;;EAEF;IACE,mBAAA;;EADF,wBAEE;IACE,kBAAA","sourcesContent":["//\n// Fonts\n// --------------------------------------------------\n\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 300;\n src: url('@{font-path}/OpenSans-Light-webfont.eot');\n src: url('@{font-path}/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-Light-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-Light-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');\n}\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 400;\n src: url('@{font-path}/OpenSans-Regular-webfont.eot');\n src: url('@{font-path}/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-Regular-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-Regular-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');\n}\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 600;\n src: url('@{font-path}/OpenSans-Semibold-webfont.eot');\n src: url('@{font-path}/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-Semibold-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-Semibold-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');\n}\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 700;\n src: url('@{font-path}/OpenSans-Bold-webfont.eot');\n src: url('@{font-path}/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-Bold-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-Bold-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');\n}\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 800;\n src: url('@{font-path}/OpenSans-ExtraBold-webfont.eot');\n src: url('@{font-path}/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/OpenSans-ExtraBold-webfont.woff') format('woff'),\n url('@{font-path}/OpenSans-ExtraBold-webfont.ttf') format('truetype'),\n url('@{font-path}/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') format('svg');\n}","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","//\n// Variables\n// --------------------------------------------------\n// Bootstrap overrides and PatternFly-specific variables\n\n// PatternFly-specific\n// -------------------\n@btn-default-bg-img-start: #fafafa;\n@btn-default-bg-img-stop: #ededed;\n@btn-xs-font-weight: 400;\n@card-pf-accented-border-top-color: #39a5dc;\n@card-pf-bg-color: #fff;\n@card-pf-border-color: #d1d1d1;\n@card-pf-border-top-color: transparent;\n@card-pf-container-bg-color: #f5f5f5;\n@card-pf-footer-bg-color: #fafafa;\n@dropdown-divider-margin: 4px 1px;\n@dropdown-link-active-border-color: #0076b7;\n@dropdown-link-hover-border-color: #b3d3e7;\n@dropdown-link-focus-color: #fff;\n@font-family-monospace: Menlo, Monaco, Consolas, monospace;\n@fa-font-path: \"../../components/font-awesome/fonts\";\n@font-path: \"../fonts\";\n@gray-light-pf: #aaa;\n@gray-pf: #4d5258;\n@icon-font-name-fa: \"FontAwesome\";\n@icon-font-name-pf: \"PatternFlyIcons-webfont\";\n@icon-prefix: pficon;\n@img-bg-login: \"bg-login.jpg\";\n@img-path: \"../img\";\n@img-spinner: \"spinner.gif\";\n@img-spinner-lg: \"spinner-lg.gif\";\n@img-spinner-sm: \"spinner-sm.gif\";\n@img-spinner-xs: \"spinner-xs.gif\";\n@input-border-disabled: #d4d4d4;\n@input-border-hover: #7BB2DD;\n@list-group-top-border: #e9e8e8;\n@login-bg-color: #080808;\n@login-container-bg-color: #181818;\n@login-container-bg-color-rgba: rgba(255, 255, 255, 0.055);\n@modal-title-padding-horizontal: 18px;\n@modal-title-padding-vertical: 10px;\n@navbar-pf-active-color: #f1f1f1;\n@navbar-pf-bg-color: #030303; //#393F45\n@navbar-pf-border-color: #199dde;\n@navbar-pf-color: #cfcfcf;\n@navbar-pf-icon-bar-bg-color: #fff;\n@navbar-pf-navbar-navbar-brand-min-width: 270px;\n@navbar-pf-navbar-navbar-brand-padding: 8px 0 7px;\n@navbar-pf-navbar-navbar-persistent-bg-color: #f6f6f6;\n@navbar-pf-navbar-navbar-persistent-border-color: #cecdcd;\n@pagination-padding-small-vertical: 0;\n@panel-default-border-color: #bebdbd;\n@sidebar-pf-bg: #fafafa;\n@sidebar-pf-border-color: #d0d0d0;\n@table-border-hover: #a7cadf;\n@table-cell-padding-bottom: 3px;\n@table-cell-padding-top: 2px;\n// Reference variables declared in block above\n@img-path-alt: @img-path;\n@navbar-pf-navbar-header-border-color: lighten(@navbar-pf-bg-color, 15%);\n@navbar-pf-navbar-nav-active-active-bg-color: lighten(@navbar-pf-bg-color, 8%);\n@navbar-pf-navbar-nav-active-active-open-bg-color: lighten(@navbar-pf-bg-color, 11%);\n@navbar-pf-navbar-nav-active-bg-color: lighten(@navbar-pf-bg-color, 12.5%);\n@navbar-pf-navbar-primary-bg-color-start: lighten(@navbar-pf-bg-color, 10%); // #474C50;\n@navbar-pf-navbar-primary-bg-color-stop: @navbar-pf-bg-color; // #383F43;\n@navbar-pf-navbar-utility-border-color: lighten(@navbar-pf-bg-color, 15.5%);\n@navbar-pf-navbar-utility-color: @navbar-pf-color;\n@navbar-pf-navbar-utility-hover-bg-color: lighten(@navbar-pf-bg-color, 12.5%);\n@nav-tabs-color: @gray-pf;\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-context-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 8.5%);\n@navbar-pf-navbar-primary-context-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 11%);\n@navbar-pf-navbar-primary-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 10%);\n@navbar-pf-navbar-primary-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 10%);\n@navbar-pf-navbar-primary-hover-border-color: lighten(@navbar-pf-navbar-header-border-color, 20%);\n@navbar-pf-navbar-primary-context-border-color: lighten(@navbar-pf-navbar-header-border-color, 8%);\n@navbar-pf-navbar-primary-context-border-top-color: lighten(@navbar-pf-navbar-header-border-color, 7%);\n@navbar-pf-navbar-utility-hover-border-color: lighten(@navbar-pf-navbar-utility-border-color, 5%);\n@navbar-pf-navbar-utility-open-bg-color: lighten(@navbar-pf-navbar-utility-hover-bg-color, 7.5%);\n@navbar-pf-navbar-utility-open-border-color: lighten(@navbar-pf-navbar-utility-hover-border-color, 5%);\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-active-bg-color-start: lighten(@navbar-pf-navbar-primary-hover-bg-color-start, 5%);\n@navbar-pf-navbar-primary-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-hover-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-active-border-color: lighten(@navbar-pf-navbar-primary-hover-border-color, 5%);\n@navbar-pf-navbar-primary-context-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-context-bg-color-start, 5%);\n@navbar-pf-navbar-primary-context-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-context-hover-border-color: lighten(@navbar-pf-navbar-primary-context-border-color, 5%);\n@navbar-pf-navbar-primary-context-hover-border-top-color: lighten(@navbar-pf-navbar-primary-context-border-top-color, 6%);\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-context-active-bg-color-start: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-start, 5%);\n@navbar-pf-navbar-primary-context-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-context-active-border-color: lighten(@navbar-pf-navbar-primary-context-hover-border-color, 5%);\n@navbar-pf-navbar-primary-context-active-border-top-color: lighten(@navbar-pf-navbar-primary-context-hover-border-top-color, 6%);\n// References variable declared in block above\n@navbar-pf-navbar-primary-context-active-border-right-color: @navbar-pf-navbar-primary-context-active-border-color;\n\n\n// Bootstrap overrides\n// -------------------\n@alert-info-border: #ccc;\n@alert-link-font-weight: 500;\n@alert-padding: 7px;\n@body-bg: #ffffff;\n@border-radius-base: 1px;\n@brand-danger: #cc0000;\n@brand-info: #006e9c;\n@brand-primary: #00a8e1;\n@brand-success: #3f9c35;\n@brand-warning: #ec7a08;\n@breadcrumb-bg: transparent;\n@breadcrumb-separator: \"\\f105\";\n@btn-danger-bg: #a30000;\n@btn-danger-border: #781919;\n@btn-default-border: #b7b7b7;\n@btn-font-weight: 600;\n@btn-primary-bg: #0085cf;\n@btn-primary-border: #006e9c;\n@caret-width-base: 0;\n@dropdown-border: #b6b6b6;\n@dropdown-divider-bg: #e5e5e5;\n@dropdown-link-active-color: #fff;\n@dropdown-link-hover-bg: #d4edfa;\n@font-family-base: \"Open Sans\", Helvetica, Arial, sans-serif;\n@font-size-base: 12px;\n@gray-dark: lighten(#000, 20%); // #333\n@gray-darker: lighten(#000, 13.5%); // #222\n@gray-light: lighten(#000, 60%); // #999\n@gray-lighter: lighten(#000, 93.5%); // #eee\n@grid-gutter-width: 40px;\n@icon-font-path: \"../../components/bootstrap/dist/fonts/\";\n@input-bg-disabled: #F8F8F8;\n@input-border: #BABABA;\n@line-height-base: 1.66666667; // 20/12\n@link-color: #0099d3;\n@list-group-border: #f2f2f2;\n@list-group-border-radius: 0;\n@list-group-hover-bg: #d4edfa;\n@link-hover-color: #00618a;\n@nav-tabs-border-color: #e9e8e8;\n@nav-tabs-link-hover-border-color: transparent;\n@padding-large-horizontal: 10px;\n@padding-base-horizontal: 6px;\n@padding-base-vertical: 2px;\n@padding-large-vertical: 6px;\n@pager-border-radius: 0;\n@pager-disabled-color: #969696;\n@pagination-bg: #f5f5f5;\n@pagination-border: #bbbbbb;\n@pagination-hover-bg: #ededed;\n@panel-inner-border: #cecdcd;\n@popover-arrow-color: #fff;\n@popover-arrow-outer-color: #bbb;\n@popover-border-color: #bbb;\n@popover-max-width: 220px;\n@popover-title-bg: #f5f5f5;\n@pre-bg: #fcfcfc;\n@progress-bg: #ededed;\n@table-bg-accent: #f5f5f5;\n@table-bg-hover: #d5ecf9;\n@table-border-color: #d1d1d1;\n@table-cell-padding: 10px;\n@tooltip-arrow-width: 8px;\n@tooltip-bg: #434343;\n@tooltip-max-width: 220px;\n// Reference variables declared in block above\n@alert-danger-bg: @body-bg;\n@alert-danger-border: @brand-danger;\n@alert-danger-text: @gray-dark;\n@alert-info-bg: @body-bg;\n@alert-info-text: @gray-dark;\n@alert-success-bg: @body-bg;\n@alert-success-border: @brand-success;\n@alert-success-text: @gray-dark;\n@alert-warning-bg: @body-bg;\n@alert-warning-border: @brand-warning;\n@alert-warning-text: @gray-dark;\n@badge-border-radius: @border-radius-base;\n@border-radius-large: @border-radius-base;\n@border-radius-small: @border-radius-base;\n@breadcrumb-active-color: @gray-pf;\n@breadcrumb-color: @gray-pf;\n@btn-default-bg: @gray-lighter;\n@btn-default-color: @gray-pf;\n@caret-width-large: @caret-width-base;\n@dropdown-fallback-border: @dropdown-border;\n@dropdown-link-active-bg: @link-color;\n@dropdown-link-hover-color: @gray-pf;\n@font-size-h1: ceil(@font-size-base * 2); // ~24px\n@font-size-h2: ceil(@font-size-base * 1.8333); // ~22px\n@font-size-h3: ceil(@font-size-base * 1.3333); // ~16px\n@font-size-h5: ceil(@font-size-base * 1.0833); // ~13px\n@font-size-large: ceil(@font-size-base * 1.1666); // ~14px\n@font-size-small: ceil(@font-size-base * .9166); // ~11px\n@input-color: @gray-dark;\n@nav-tabs-active-link-hover-color: @link-color;\n@nav-tabs-justified-link-border-color: @nav-tabs-border-color;\n@padding-small-horizontal: @padding-base-horizontal;\n@padding-small-vertical: @padding-base-vertical;\n@panel-danger-border: @brand-danger;\n@panel-danger-heading-bg: @brand-danger;\n@panel-info-border: @brand-info;\n@panel-info-heading-bg: @brand-info;\n@panel-primary-text: @body-bg;\n@panel-success-border: @brand-success;\n@panel-success-heading-bg: @brand-success;\n@panel-warning-border: @brand-warning;\n@panel-warning-heading-bg: @brand-warning;\n@state-warning-text: @brand-warning;\n// Reference variable declared in block above\n@panel-danger-text: @panel-primary-text;\n@panel-info-text: @panel-primary-text;\n@panel-success-text: @panel-primary-text;\n@panel-warning-text: @panel-primary-text;\n\n// PatternFly-specific variables based on Bootstrap overides\n// ---------------------------------------------------------\n@btn-danger-bg-img-start: @brand-danger;\n@btn-danger-bg-img-stop: @btn-danger-bg;\n@btn-primary-bg-img-start: @brand-primary;\n@btn-primary-bg-img-stop: @btn-primary-bg;\n@dropdown-link-focus-bg: @link-color;\n@line-height-computed: floor((@font-size-base * @line-height-base));\n@progress-sm: @line-height-computed - 6;\n@progress-xs: @line-height-computed - 14;\n@syntax-1: @btn-danger-bg;\n@syntax-2: @gray-dark;\n@syntax-3: @brand-success;\n@syntax-4: @brand-info;\n@tooltip-font-size: @font-size-base;\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n .transition-transform(~'0.6s ease-in-out');\n .backface-visibility(~'hidden');\n .perspective(1000px);\n\n &.next,\n &.active.right {\n .translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n .translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n .translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 8.3, iOS doesn't support `datetime` or `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n &.form-control {\n line-height: @input-height-base;\n }\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n min-height: (@line-height-computed + @font-size-base);\n\n &.input-lg,\n &.input-sm {\n padding-left: 0;\n padding-right: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n .form-control {\n height: @input-height-small;\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n border-radius: @input-border-radius-small;\n }\n select.form-control {\n height: @input-height-small;\n line-height: @input-height-small;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-small;\n min-height: (@line-height-computed + @font-size-small);\n padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n }\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n .form-control {\n height: @input-height-large;\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n border-radius: @input-border-radius-large;\n }\n select.form-control {\n height: @input-height-large;\n line-height: @input-height-large;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-large;\n min-height: (@line-height-computed + @font-size-large);\n padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: floor((@grid-gutter-width / 2));\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: ((@padding-large-vertical * @line-height-large) + 1);\n font-size: @font-size-large;\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n font-size: @font-size-small;\n }\n }\n }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Mixins\n// --------------------------------------------------\n// Bootstrap overrides and PatternFly-specific mixins\n\n// Bootstrap overrides\n// -------------------\n\n// Button variants\n.button-variant(@color; @background; @background-image-start; @background-image-stop; @border) {\n background-color: @background;\n #gradient > .vertical(@background-image-start, @background-image-stop);\n border-color: @border;\n color: @color;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-color: @background;\n background-image: none;\n border-color: @border;\n color: @color;\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n &:hover,\n &:focus,\n &.focus {\n background-color: darken(@background, 5%);\n border-color: darken(@border, 7%);\n }\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border\n }\n }\n}\n\n// Form control outline\n.form-control-outline(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0 !important;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Gradients\n#gradient {\n .striped(@color: rgba(0,0,0,.15); @angle: -45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);\n background-image: linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);\n }\n}\n\n// Horizontal dividers\n.nav-divider(@color: #e5e5e5, @margin: 4px 1px) {\n background-color: @color;\n height: 1px;\n margin: @margin;\n overflow: hidden;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &:-moz-placeholder { color: @color; font-style: italic; } // Firefox 4-18\n &::-moz-placeholder { color: @color; font-style: italic;} // Firefox 19+\n &:-ms-input-placeholder { color: @color; font-style: italic; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; font-style: italic; } // Safari and Chrome\n}\n\n// PatternFly-specific\n// -------------------\n\n.tab-indicator(@background: @gray-light-pf, @left: 15px, @right: 15px) {\n &:before {\n background: @background;\n bottom: -1px;\n content: '';\n display: block;\n height: 2px;\n left: @left;\n position: absolute;\n right: @right;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @btn-border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @btn-border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","// Bordered & Pulled\n// -------------------------\n\n.@{fa-css-prefix}-border {\n padding: .2em .25em .15em;\n border: solid .08em @fa-border-color;\n border-radius: .1em;\n}\n\n.pull-right { float: right; }\n.pull-left { float: left; }\n\n.@{fa-css-prefix} {\n &.pull-left { margin-right: .3em; }\n &.pull-right { margin-left: .3em; }\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a&,\n button& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n > .panel-heading + .panel-collapse > .list-group {\n .list-group-item:first-child {\n .border-top-radius(0);\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-small;\n\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n",".reset-text() {\n font-family: @font-family-base;\n // We deliberately do NOT reset font-size.\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: @line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-base;\n\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table !important; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n","/* FONT PATH\n * -------------------------- */\n\n@font-face {\n font-family: 'FontAwesome';\n src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');\n src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),\n url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),\n url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),\n url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),\n url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');\n// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts\n font-weight: normal;\n font-style: normal;\n}\n","// Base Class Definition\n// -------------------------\n\n.@{fa-css-prefix} {\n display: inline-block;\n font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration\n font-size: inherit; // can't have font-size inherit on line above, so need to override\n text-rendering: auto; // optimizelegibility throws things off #1094\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n transform: translate(0, 0); // ensures no half-pixel rendering in firefox\n\n}\n","// Icon Sizes\n// -------------------------\n\n/* makes the font 33% larger relative to the icon container */\n.@{fa-css-prefix}-lg {\n font-size: (4em / 3);\n line-height: (3em / 4);\n vertical-align: -15%;\n}\n.@{fa-css-prefix}-2x { font-size: 2em; }\n.@{fa-css-prefix}-3x { font-size: 3em; }\n.@{fa-css-prefix}-4x { font-size: 4em; }\n.@{fa-css-prefix}-5x { font-size: 5em; }\n","// Fixed Width Icons\n// -------------------------\n.@{fa-css-prefix}-fw {\n width: (18em / 14);\n text-align: center;\n}\n","// List Icons\n// -------------------------\n\n.@{fa-css-prefix}-ul {\n padding-left: 0;\n margin-left: @fa-li-width;\n list-style-type: none;\n > li { position: relative; }\n}\n.@{fa-css-prefix}-li {\n position: absolute;\n left: -@fa-li-width;\n width: @fa-li-width;\n top: (2em / 14);\n text-align: center;\n &.@{fa-css-prefix}-lg {\n left: (-@fa-li-width + (4em / 14));\n }\n}\n","// Animated Icons\n// --------------------------\n\n.@{fa-css-prefix}-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.@{fa-css-prefix}-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n","// Rotated & Flipped Icons\n// -------------------------\n\n.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }\n.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }\n.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }\n\n.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }\n.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }\n\n// Hook for IE8-9\n// -------------------------\n\n:root .@{fa-css-prefix}-rotate-90,\n:root .@{fa-css-prefix}-rotate-180,\n:root .@{fa-css-prefix}-rotate-270,\n:root .@{fa-css-prefix}-flip-horizontal,\n:root .@{fa-css-prefix}-flip-vertical {\n filter: none;\n}\n","// Mixins\n// --------------------------\n\n.fa-icon() {\n display: inline-block;\n font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration\n font-size: inherit; // can't have font-size inherit on line above, so need to override\n text-rendering: auto; // optimizelegibility throws things off #1094\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n transform: translate(0, 0); // ensures no half-pixel rendering in firefox\n\n}\n\n.fa-icon-rotate(@degrees, @rotation) {\n filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n\n.fa-icon-flip(@horiz, @vert, @rotation) {\n filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);\n -webkit-transform: scale(@horiz, @vert);\n -ms-transform: scale(@horiz, @vert);\n transform: scale(@horiz, @vert);\n}\n","// Stacked Icons\n// -------------------------\n\n.@{fa-css-prefix}-stack {\n position: relative;\n display: inline-block;\n width: 2em;\n height: 2em;\n line-height: 2em;\n vertical-align: middle;\n}\n.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {\n position: absolute;\n left: 0;\n width: 100%;\n text-align: center;\n}\n.@{fa-css-prefix}-stack-1x { line-height: inherit; }\n.@{fa-css-prefix}-stack-2x { font-size: 2em; }\n.@{fa-css-prefix}-inverse { color: @fa-inverse; }\n","/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n readers do not read off random characters that represent icons */\n\n.@{fa-css-prefix}-glass:before { content: @fa-var-glass; }\n.@{fa-css-prefix}-music:before { content: @fa-var-music; }\n.@{fa-css-prefix}-search:before { content: @fa-var-search; }\n.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; }\n.@{fa-css-prefix}-heart:before { content: @fa-var-heart; }\n.@{fa-css-prefix}-star:before { content: @fa-var-star; }\n.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; }\n.@{fa-css-prefix}-user:before { content: @fa-var-user; }\n.@{fa-css-prefix}-film:before { content: @fa-var-film; }\n.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; }\n.@{fa-css-prefix}-th:before { content: @fa-var-th; }\n.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; }\n.@{fa-css-prefix}-check:before { content: @fa-var-check; }\n.@{fa-css-prefix}-remove:before,\n.@{fa-css-prefix}-close:before,\n.@{fa-css-prefix}-times:before { content: @fa-var-times; }\n.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; }\n.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; }\n.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; }\n.@{fa-css-prefix}-signal:before { content: @fa-var-signal; }\n.@{fa-css-prefix}-gear:before,\n.@{fa-css-prefix}-cog:before { content: @fa-var-cog; }\n.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; }\n.@{fa-css-prefix}-home:before { content: @fa-var-home; }\n.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; }\n.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; }\n.@{fa-css-prefix}-road:before { content: @fa-var-road; }\n.@{fa-css-prefix}-download:before { content: @fa-var-download; }\n.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; }\n.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; }\n.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; }\n.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; }\n.@{fa-css-prefix}-rotate-right:before,\n.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; }\n.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; }\n.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }\n.@{fa-css-prefix}-lock:before { content: @fa-var-lock; }\n.@{fa-css-prefix}-flag:before { content: @fa-var-flag; }\n.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; }\n.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; }\n.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; }\n.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; }\n.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; }\n.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; }\n.@{fa-css-prefix}-tag:before { content: @fa-var-tag; }\n.@{fa-css-prefix}-tags:before { content: @fa-var-tags; }\n.@{fa-css-prefix}-book:before { content: @fa-var-book; }\n.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; }\n.@{fa-css-prefix}-print:before { content: @fa-var-print; }\n.@{fa-css-prefix}-camera:before { content: @fa-var-camera; }\n.@{fa-css-prefix}-font:before { content: @fa-var-font; }\n.@{fa-css-prefix}-bold:before { content: @fa-var-bold; }\n.@{fa-css-prefix}-italic:before { content: @fa-var-italic; }\n.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; }\n.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; }\n.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }\n.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; }\n.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; }\n.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; }\n.@{fa-css-prefix}-list:before { content: @fa-var-list; }\n.@{fa-css-prefix}-dedent:before,\n.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; }\n.@{fa-css-prefix}-indent:before { content: @fa-var-indent; }\n.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; }\n.@{fa-css-prefix}-photo:before,\n.@{fa-css-prefix}-image:before,\n.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; }\n.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; }\n.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; }\n.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; }\n.@{fa-css-prefix}-tint:before { content: @fa-var-tint; }\n.@{fa-css-prefix}-edit:before,\n.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; }\n.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; }\n.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; }\n.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; }\n.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; }\n.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; }\n.@{fa-css-prefix}-backward:before { content: @fa-var-backward; }\n.@{fa-css-prefix}-play:before { content: @fa-var-play; }\n.@{fa-css-prefix}-pause:before { content: @fa-var-pause; }\n.@{fa-css-prefix}-stop:before { content: @fa-var-stop; }\n.@{fa-css-prefix}-forward:before { content: @fa-var-forward; }\n.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; }\n.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; }\n.@{fa-css-prefix}-eject:before { content: @fa-var-eject; }\n.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; }\n.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; }\n.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; }\n.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; }\n.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }\n.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }\n.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }\n.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }\n.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; }\n.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; }\n.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; }\n.@{fa-css-prefix}-ban:before { content: @fa-var-ban; }\n.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; }\n.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; }\n.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; }\n.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; }\n.@{fa-css-prefix}-mail-forward:before,\n.@{fa-css-prefix}-share:before { content: @fa-var-share; }\n.@{fa-css-prefix}-expand:before { content: @fa-var-expand; }\n.@{fa-css-prefix}-compress:before { content: @fa-var-compress; }\n.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }\n.@{fa-css-prefix}-minus:before { content: @fa-var-minus; }\n.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; }\n.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; }\n.@{fa-css-prefix}-gift:before { content: @fa-var-gift; }\n.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; }\n.@{fa-css-prefix}-fire:before { content: @fa-var-fire; }\n.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }\n.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; }\n.@{fa-css-prefix}-warning:before,\n.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; }\n.@{fa-css-prefix}-plane:before { content: @fa-var-plane; }\n.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; }\n.@{fa-css-prefix}-random:before { content: @fa-var-random; }\n.@{fa-css-prefix}-comment:before { content: @fa-var-comment; }\n.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; }\n.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; }\n.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; }\n.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; }\n.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; }\n.@{fa-css-prefix}-folder:before { content: @fa-var-folder; }\n.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; }\n.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; }\n.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; }\n.@{fa-css-prefix}-bar-chart-o:before,\n.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; }\n.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; }\n.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; }\n.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; }\n.@{fa-css-prefix}-key:before { content: @fa-var-key; }\n.@{fa-css-prefix}-gears:before,\n.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }\n.@{fa-css-prefix}-comments:before { content: @fa-var-comments; }\n.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; }\n.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; }\n.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; }\n.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; }\n.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }\n.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; }\n.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; }\n.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; }\n.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; }\n.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; }\n.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; }\n.@{fa-css-prefix}-upload:before { content: @fa-var-upload; }\n.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; }\n.@{fa-css-prefix}-phone:before { content: @fa-var-phone; }\n.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; }\n.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }\n.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }\n.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }\n.@{fa-css-prefix}-facebook-f:before,\n.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }\n.@{fa-css-prefix}-github:before { content: @fa-var-github; }\n.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }\n.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }\n.@{fa-css-prefix}-rss:before { content: @fa-var-rss; }\n.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; }\n.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }\n.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }\n.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; }\n.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; }\n.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; }\n.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; }\n.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; }\n.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; }\n.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; }\n.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; }\n.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; }\n.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }\n.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; }\n.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }\n.@{fa-css-prefix}-filter:before { content: @fa-var-filter; }\n.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; }\n.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; }\n.@{fa-css-prefix}-group:before,\n.@{fa-css-prefix}-users:before { content: @fa-var-users; }\n.@{fa-css-prefix}-chain:before,\n.@{fa-css-prefix}-link:before { content: @fa-var-link; }\n.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }\n.@{fa-css-prefix}-flask:before { content: @fa-var-flask; }\n.@{fa-css-prefix}-cut:before,\n.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; }\n.@{fa-css-prefix}-copy:before,\n.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; }\n.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; }\n.@{fa-css-prefix}-save:before,\n.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; }\n.@{fa-css-prefix}-square:before { content: @fa-var-square; }\n.@{fa-css-prefix}-navicon:before,\n.@{fa-css-prefix}-reorder:before,\n.@{fa-css-prefix}-bars:before { content: @fa-var-bars; }\n.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }\n.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; }\n.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; }\n.@{fa-css-prefix}-underline:before { content: @fa-var-underline; }\n.@{fa-css-prefix}-table:before { content: @fa-var-table; }\n.@{fa-css-prefix}-magic:before { content: @fa-var-magic; }\n.@{fa-css-prefix}-truck:before { content: @fa-var-truck; }\n.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; }\n.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; }\n.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; }\n.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; }\n.@{fa-css-prefix}-money:before { content: @fa-var-money; }\n.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; }\n.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; }\n.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; }\n.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; }\n.@{fa-css-prefix}-columns:before { content: @fa-var-columns; }\n.@{fa-css-prefix}-unsorted:before,\n.@{fa-css-prefix}-sort:before { content: @fa-var-sort; }\n.@{fa-css-prefix}-sort-down:before,\n.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; }\n.@{fa-css-prefix}-sort-up:before,\n.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; }\n.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }\n.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; }\n.@{fa-css-prefix}-rotate-left:before,\n.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }\n.@{fa-css-prefix}-legal:before,\n.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; }\n.@{fa-css-prefix}-dashboard:before,\n.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; }\n.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; }\n.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; }\n.@{fa-css-prefix}-flash:before,\n.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; }\n.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; }\n.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; }\n.@{fa-css-prefix}-paste:before,\n.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; }\n.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; }\n.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; }\n.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; }\n.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; }\n.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; }\n.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; }\n.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; }\n.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; }\n.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; }\n.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; }\n.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; }\n.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; }\n.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; }\n.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; }\n.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; }\n.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; }\n.@{fa-css-prefix}-beer:before { content: @fa-var-beer; }\n.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; }\n.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; }\n.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; }\n.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; }\n.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; }\n.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; }\n.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; }\n.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; }\n.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; }\n.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; }\n.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }\n.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }\n.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; }\n.@{fa-css-prefix}-mobile-phone:before,\n.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; }\n.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; }\n.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }\n.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; }\n.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; }\n.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }\n.@{fa-css-prefix}-mail-reply:before,\n.@{fa-css-prefix}-reply:before { content: @fa-var-reply; }\n.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; }\n.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; }\n.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; }\n.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; }\n.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; }\n.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; }\n.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; }\n.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; }\n.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; }\n.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; }\n.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; }\n.@{fa-css-prefix}-code:before { content: @fa-var-code; }\n.@{fa-css-prefix}-mail-reply-all:before,\n.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; }\n.@{fa-css-prefix}-star-half-empty:before,\n.@{fa-css-prefix}-star-half-full:before,\n.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; }\n.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; }\n.@{fa-css-prefix}-crop:before { content: @fa-var-crop; }\n.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; }\n.@{fa-css-prefix}-unlink:before,\n.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; }\n.@{fa-css-prefix}-question:before { content: @fa-var-question; }\n.@{fa-css-prefix}-info:before { content: @fa-var-info; }\n.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; }\n.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; }\n.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; }\n.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; }\n.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; }\n.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; }\n.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; }\n.@{fa-css-prefix}-shield:before { content: @fa-var-shield; }\n.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; }\n.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; }\n.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }\n.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; }\n.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; }\n.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; }\n.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; }\n.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; }\n.@{fa-css-prefix}-html5:before { content: @fa-var-html5; }\n.@{fa-css-prefix}-css3:before { content: @fa-var-css3; }\n.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; }\n.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; }\n.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; }\n.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; }\n.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; }\n.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; }\n.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; }\n.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; }\n.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; }\n.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; }\n.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; }\n.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; }\n.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; }\n.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; }\n.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; }\n.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; }\n.@{fa-css-prefix}-compass:before { content: @fa-var-compass; }\n.@{fa-css-prefix}-toggle-down:before,\n.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; }\n.@{fa-css-prefix}-toggle-up:before,\n.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; }\n.@{fa-css-prefix}-toggle-right:before,\n.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; }\n.@{fa-css-prefix}-euro:before,\n.@{fa-css-prefix}-eur:before { content: @fa-var-eur; }\n.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; }\n.@{fa-css-prefix}-dollar:before,\n.@{fa-css-prefix}-usd:before { content: @fa-var-usd; }\n.@{fa-css-prefix}-rupee:before,\n.@{fa-css-prefix}-inr:before { content: @fa-var-inr; }\n.@{fa-css-prefix}-cny:before,\n.@{fa-css-prefix}-rmb:before,\n.@{fa-css-prefix}-yen:before,\n.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; }\n.@{fa-css-prefix}-ruble:before,\n.@{fa-css-prefix}-rouble:before,\n.@{fa-css-prefix}-rub:before { content: @fa-var-rub; }\n.@{fa-css-prefix}-won:before,\n.@{fa-css-prefix}-krw:before { content: @fa-var-krw; }\n.@{fa-css-prefix}-bitcoin:before,\n.@{fa-css-prefix}-btc:before { content: @fa-var-btc; }\n.@{fa-css-prefix}-file:before { content: @fa-var-file; }\n.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; }\n.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; }\n.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; }\n.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; }\n.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; }\n.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; }\n.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; }\n.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; }\n.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; }\n.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; }\n.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; }\n.@{fa-css-prefix}-xing:before { content: @fa-var-xing; }\n.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; }\n.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; }\n.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; }\n.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; }\n.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }\n.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; }\n.@{fa-css-prefix}-adn:before { content: @fa-var-adn; }\n.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; }\n.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; }\n.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; }\n.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; }\n.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; }\n.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; }\n.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; }\n.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; }\n.@{fa-css-prefix}-apple:before { content: @fa-var-apple; }\n.@{fa-css-prefix}-windows:before { content: @fa-var-windows; }\n.@{fa-css-prefix}-android:before { content: @fa-var-android; }\n.@{fa-css-prefix}-linux:before { content: @fa-var-linux; }\n.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; }\n.@{fa-css-prefix}-skype:before { content: @fa-var-skype; }\n.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; }\n.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }\n.@{fa-css-prefix}-female:before { content: @fa-var-female; }\n.@{fa-css-prefix}-male:before { content: @fa-var-male; }\n.@{fa-css-prefix}-gittip:before,\n.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; }\n.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }\n.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }\n.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }\n.@{fa-css-prefix}-bug:before { content: @fa-var-bug; }\n.@{fa-css-prefix}-vk:before { content: @fa-var-vk; }\n.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; }\n.@{fa-css-prefix}-renren:before { content: @fa-var-renren; }\n.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; }\n.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; }\n.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; }\n.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; }\n.@{fa-css-prefix}-toggle-left:before,\n.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; }\n.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; }\n.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; }\n.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; }\n.@{fa-css-prefix}-turkish-lira:before,\n.@{fa-css-prefix}-try:before { content: @fa-var-try; }\n.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; }\n.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; }\n.@{fa-css-prefix}-slack:before { content: @fa-var-slack; }\n.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; }\n.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; }\n.@{fa-css-prefix}-openid:before { content: @fa-var-openid; }\n.@{fa-css-prefix}-institution:before,\n.@{fa-css-prefix}-bank:before,\n.@{fa-css-prefix}-university:before { content: @fa-var-university; }\n.@{fa-css-prefix}-mortar-board:before,\n.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; }\n.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; }\n.@{fa-css-prefix}-google:before { content: @fa-var-google; }\n.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; }\n.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; }\n.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; }\n.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; }\n.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; }\n.@{fa-css-prefix}-digg:before { content: @fa-var-digg; }\n.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; }\n.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; }\n.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; }\n.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; }\n.@{fa-css-prefix}-language:before { content: @fa-var-language; }\n.@{fa-css-prefix}-fax:before { content: @fa-var-fax; }\n.@{fa-css-prefix}-building:before { content: @fa-var-building; }\n.@{fa-css-prefix}-child:before { content: @fa-var-child; }\n.@{fa-css-prefix}-paw:before { content: @fa-var-paw; }\n.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; }\n.@{fa-css-prefix}-cube:before { content: @fa-var-cube; }\n.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; }\n.@{fa-css-prefix}-behance:before { content: @fa-var-behance; }\n.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; }\n.@{fa-css-prefix}-steam:before { content: @fa-var-steam; }\n.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; }\n.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; }\n.@{fa-css-prefix}-automobile:before,\n.@{fa-css-prefix}-car:before { content: @fa-var-car; }\n.@{fa-css-prefix}-cab:before,\n.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; }\n.@{fa-css-prefix}-tree:before { content: @fa-var-tree; }\n.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; }\n.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; }\n.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; }\n.@{fa-css-prefix}-database:before { content: @fa-var-database; }\n.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; }\n.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; }\n.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; }\n.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; }\n.@{fa-css-prefix}-file-photo-o:before,\n.@{fa-css-prefix}-file-picture-o:before,\n.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; }\n.@{fa-css-prefix}-file-zip-o:before,\n.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; }\n.@{fa-css-prefix}-file-sound-o:before,\n.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; }\n.@{fa-css-prefix}-file-movie-o:before,\n.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; }\n.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; }\n.@{fa-css-prefix}-vine:before { content: @fa-var-vine; }\n.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; }\n.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; }\n.@{fa-css-prefix}-life-bouy:before,\n.@{fa-css-prefix}-life-buoy:before,\n.@{fa-css-prefix}-life-saver:before,\n.@{fa-css-prefix}-support:before,\n.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }\n.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; }\n.@{fa-css-prefix}-ra:before,\n.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; }\n.@{fa-css-prefix}-ge:before,\n.@{fa-css-prefix}-empire:before { content: @fa-var-empire; }\n.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; }\n.@{fa-css-prefix}-git:before { content: @fa-var-git; }\n.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; }\n.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; }\n.@{fa-css-prefix}-qq:before { content: @fa-var-qq; }\n.@{fa-css-prefix}-wechat:before,\n.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; }\n.@{fa-css-prefix}-send:before,\n.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; }\n.@{fa-css-prefix}-send-o:before,\n.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; }\n.@{fa-css-prefix}-history:before { content: @fa-var-history; }\n.@{fa-css-prefix}-genderless:before,\n.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; }\n.@{fa-css-prefix}-header:before { content: @fa-var-header; }\n.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; }\n.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; }\n.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; }\n.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; }\n.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; }\n.@{fa-css-prefix}-soccer-ball-o:before,\n.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; }\n.@{fa-css-prefix}-tty:before { content: @fa-var-tty; }\n.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; }\n.@{fa-css-prefix}-plug:before { content: @fa-var-plug; }\n.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; }\n.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; }\n.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; }\n.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; }\n.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; }\n.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; }\n.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; }\n.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; }\n.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; }\n.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; }\n.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; }\n.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; }\n.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; }\n.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; }\n.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; }\n.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; }\n.@{fa-css-prefix}-trash:before { content: @fa-var-trash; }\n.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; }\n.@{fa-css-prefix}-at:before { content: @fa-var-at; }\n.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; }\n.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; }\n.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; }\n.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; }\n.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; }\n.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; }\n.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; }\n.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; }\n.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; }\n.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; }\n.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; }\n.@{fa-css-prefix}-bus:before { content: @fa-var-bus; }\n.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; }\n.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; }\n.@{fa-css-prefix}-cc:before { content: @fa-var-cc; }\n.@{fa-css-prefix}-shekel:before,\n.@{fa-css-prefix}-sheqel:before,\n.@{fa-css-prefix}-ils:before { content: @fa-var-ils; }\n.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; }\n.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; }\n.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; }\n.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; }\n.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; }\n.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; }\n.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; }\n.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; }\n.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; }\n.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; }\n.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; }\n.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; }\n.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; }\n.@{fa-css-prefix}-ship:before { content: @fa-var-ship; }\n.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; }\n.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; }\n.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; }\n.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; }\n.@{fa-css-prefix}-venus:before { content: @fa-var-venus; }\n.@{fa-css-prefix}-mars:before { content: @fa-var-mars; }\n.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; }\n.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; }\n.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; }\n.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; }\n.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; }\n.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; }\n.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; }\n.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; }\n.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; }\n.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; }\n.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; }\n.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; }\n.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; }\n.@{fa-css-prefix}-server:before { content: @fa-var-server; }\n.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; }\n.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; }\n.@{fa-css-prefix}-hotel:before,\n.@{fa-css-prefix}-bed:before { content: @fa-var-bed; }\n.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; }\n.@{fa-css-prefix}-train:before { content: @fa-var-train; }\n.@{fa-css-prefix}-subway:before { content: @fa-var-subway; }\n.@{fa-css-prefix}-medium:before { content: @fa-var-medium; }\n","// Variables\n// --------------------------\n\n@fa-font-path: \"../fonts\";\n@fa-font-size-base: 14px;\n//@fa-font-path: \"//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts\"; // for referencing Bootstrap CDN font files directly\n@fa-css-prefix: fa;\n@fa-version: \"4.3.0\";\n@fa-border-color: #eee;\n@fa-inverse: #fff;\n@fa-li-width: (30em / 14);\n\n@fa-var-adjust: \"\\f042\";\n@fa-var-adn: \"\\f170\";\n@fa-var-align-center: \"\\f037\";\n@fa-var-align-justify: \"\\f039\";\n@fa-var-align-left: \"\\f036\";\n@fa-var-align-right: \"\\f038\";\n@fa-var-ambulance: \"\\f0f9\";\n@fa-var-anchor: \"\\f13d\";\n@fa-var-android: \"\\f17b\";\n@fa-var-angellist: \"\\f209\";\n@fa-var-angle-double-down: \"\\f103\";\n@fa-var-angle-double-left: \"\\f100\";\n@fa-var-angle-double-right: \"\\f101\";\n@fa-var-angle-double-up: \"\\f102\";\n@fa-var-angle-down: \"\\f107\";\n@fa-var-angle-left: \"\\f104\";\n@fa-var-angle-right: \"\\f105\";\n@fa-var-angle-up: \"\\f106\";\n@fa-var-apple: \"\\f179\";\n@fa-var-archive: \"\\f187\";\n@fa-var-area-chart: \"\\f1fe\";\n@fa-var-arrow-circle-down: \"\\f0ab\";\n@fa-var-arrow-circle-left: \"\\f0a8\";\n@fa-var-arrow-circle-o-down: \"\\f01a\";\n@fa-var-arrow-circle-o-left: \"\\f190\";\n@fa-var-arrow-circle-o-right: \"\\f18e\";\n@fa-var-arrow-circle-o-up: \"\\f01b\";\n@fa-var-arrow-circle-right: \"\\f0a9\";\n@fa-var-arrow-circle-up: \"\\f0aa\";\n@fa-var-arrow-down: \"\\f063\";\n@fa-var-arrow-left: \"\\f060\";\n@fa-var-arrow-right: \"\\f061\";\n@fa-var-arrow-up: \"\\f062\";\n@fa-var-arrows: \"\\f047\";\n@fa-var-arrows-alt: \"\\f0b2\";\n@fa-var-arrows-h: \"\\f07e\";\n@fa-var-arrows-v: \"\\f07d\";\n@fa-var-asterisk: \"\\f069\";\n@fa-var-at: \"\\f1fa\";\n@fa-var-automobile: \"\\f1b9\";\n@fa-var-backward: \"\\f04a\";\n@fa-var-ban: \"\\f05e\";\n@fa-var-bank: \"\\f19c\";\n@fa-var-bar-chart: \"\\f080\";\n@fa-var-bar-chart-o: \"\\f080\";\n@fa-var-barcode: \"\\f02a\";\n@fa-var-bars: \"\\f0c9\";\n@fa-var-bed: \"\\f236\";\n@fa-var-beer: \"\\f0fc\";\n@fa-var-behance: \"\\f1b4\";\n@fa-var-behance-square: \"\\f1b5\";\n@fa-var-bell: \"\\f0f3\";\n@fa-var-bell-o: \"\\f0a2\";\n@fa-var-bell-slash: \"\\f1f6\";\n@fa-var-bell-slash-o: \"\\f1f7\";\n@fa-var-bicycle: \"\\f206\";\n@fa-var-binoculars: \"\\f1e5\";\n@fa-var-birthday-cake: \"\\f1fd\";\n@fa-var-bitbucket: \"\\f171\";\n@fa-var-bitbucket-square: \"\\f172\";\n@fa-var-bitcoin: \"\\f15a\";\n@fa-var-bold: \"\\f032\";\n@fa-var-bolt: \"\\f0e7\";\n@fa-var-bomb: \"\\f1e2\";\n@fa-var-book: \"\\f02d\";\n@fa-var-bookmark: \"\\f02e\";\n@fa-var-bookmark-o: \"\\f097\";\n@fa-var-briefcase: \"\\f0b1\";\n@fa-var-btc: \"\\f15a\";\n@fa-var-bug: \"\\f188\";\n@fa-var-building: \"\\f1ad\";\n@fa-var-building-o: \"\\f0f7\";\n@fa-var-bullhorn: \"\\f0a1\";\n@fa-var-bullseye: \"\\f140\";\n@fa-var-bus: \"\\f207\";\n@fa-var-buysellads: \"\\f20d\";\n@fa-var-cab: \"\\f1ba\";\n@fa-var-calculator: \"\\f1ec\";\n@fa-var-calendar: \"\\f073\";\n@fa-var-calendar-o: \"\\f133\";\n@fa-var-camera: \"\\f030\";\n@fa-var-camera-retro: \"\\f083\";\n@fa-var-car: \"\\f1b9\";\n@fa-var-caret-down: \"\\f0d7\";\n@fa-var-caret-left: \"\\f0d9\";\n@fa-var-caret-right: \"\\f0da\";\n@fa-var-caret-square-o-down: \"\\f150\";\n@fa-var-caret-square-o-left: \"\\f191\";\n@fa-var-caret-square-o-right: \"\\f152\";\n@fa-var-caret-square-o-up: \"\\f151\";\n@fa-var-caret-up: \"\\f0d8\";\n@fa-var-cart-arrow-down: \"\\f218\";\n@fa-var-cart-plus: \"\\f217\";\n@fa-var-cc: \"\\f20a\";\n@fa-var-cc-amex: \"\\f1f3\";\n@fa-var-cc-discover: \"\\f1f2\";\n@fa-var-cc-mastercard: \"\\f1f1\";\n@fa-var-cc-paypal: \"\\f1f4\";\n@fa-var-cc-stripe: \"\\f1f5\";\n@fa-var-cc-visa: \"\\f1f0\";\n@fa-var-certificate: \"\\f0a3\";\n@fa-var-chain: \"\\f0c1\";\n@fa-var-chain-broken: \"\\f127\";\n@fa-var-check: \"\\f00c\";\n@fa-var-check-circle: \"\\f058\";\n@fa-var-check-circle-o: \"\\f05d\";\n@fa-var-check-square: \"\\f14a\";\n@fa-var-check-square-o: \"\\f046\";\n@fa-var-chevron-circle-down: \"\\f13a\";\n@fa-var-chevron-circle-left: \"\\f137\";\n@fa-var-chevron-circle-right: \"\\f138\";\n@fa-var-chevron-circle-up: \"\\f139\";\n@fa-var-chevron-down: \"\\f078\";\n@fa-var-chevron-left: \"\\f053\";\n@fa-var-chevron-right: \"\\f054\";\n@fa-var-chevron-up: \"\\f077\";\n@fa-var-child: \"\\f1ae\";\n@fa-var-circle: \"\\f111\";\n@fa-var-circle-o: \"\\f10c\";\n@fa-var-circle-o-notch: \"\\f1ce\";\n@fa-var-circle-thin: \"\\f1db\";\n@fa-var-clipboard: \"\\f0ea\";\n@fa-var-clock-o: \"\\f017\";\n@fa-var-close: \"\\f00d\";\n@fa-var-cloud: \"\\f0c2\";\n@fa-var-cloud-download: \"\\f0ed\";\n@fa-var-cloud-upload: \"\\f0ee\";\n@fa-var-cny: \"\\f157\";\n@fa-var-code: \"\\f121\";\n@fa-var-code-fork: \"\\f126\";\n@fa-var-codepen: \"\\f1cb\";\n@fa-var-coffee: \"\\f0f4\";\n@fa-var-cog: \"\\f013\";\n@fa-var-cogs: \"\\f085\";\n@fa-var-columns: \"\\f0db\";\n@fa-var-comment: \"\\f075\";\n@fa-var-comment-o: \"\\f0e5\";\n@fa-var-comments: \"\\f086\";\n@fa-var-comments-o: \"\\f0e6\";\n@fa-var-compass: \"\\f14e\";\n@fa-var-compress: \"\\f066\";\n@fa-var-connectdevelop: \"\\f20e\";\n@fa-var-copy: \"\\f0c5\";\n@fa-var-copyright: \"\\f1f9\";\n@fa-var-credit-card: \"\\f09d\";\n@fa-var-crop: \"\\f125\";\n@fa-var-crosshairs: \"\\f05b\";\n@fa-var-css3: \"\\f13c\";\n@fa-var-cube: \"\\f1b2\";\n@fa-var-cubes: \"\\f1b3\";\n@fa-var-cut: \"\\f0c4\";\n@fa-var-cutlery: \"\\f0f5\";\n@fa-var-dashboard: \"\\f0e4\";\n@fa-var-dashcube: \"\\f210\";\n@fa-var-database: \"\\f1c0\";\n@fa-var-dedent: \"\\f03b\";\n@fa-var-delicious: \"\\f1a5\";\n@fa-var-desktop: \"\\f108\";\n@fa-var-deviantart: \"\\f1bd\";\n@fa-var-diamond: \"\\f219\";\n@fa-var-digg: \"\\f1a6\";\n@fa-var-dollar: \"\\f155\";\n@fa-var-dot-circle-o: \"\\f192\";\n@fa-var-download: \"\\f019\";\n@fa-var-dribbble: \"\\f17d\";\n@fa-var-dropbox: \"\\f16b\";\n@fa-var-drupal: \"\\f1a9\";\n@fa-var-edit: \"\\f044\";\n@fa-var-eject: \"\\f052\";\n@fa-var-ellipsis-h: \"\\f141\";\n@fa-var-ellipsis-v: \"\\f142\";\n@fa-var-empire: \"\\f1d1\";\n@fa-var-envelope: \"\\f0e0\";\n@fa-var-envelope-o: \"\\f003\";\n@fa-var-envelope-square: \"\\f199\";\n@fa-var-eraser: \"\\f12d\";\n@fa-var-eur: \"\\f153\";\n@fa-var-euro: \"\\f153\";\n@fa-var-exchange: \"\\f0ec\";\n@fa-var-exclamation: \"\\f12a\";\n@fa-var-exclamation-circle: \"\\f06a\";\n@fa-var-exclamation-triangle: \"\\f071\";\n@fa-var-expand: \"\\f065\";\n@fa-var-external-link: \"\\f08e\";\n@fa-var-external-link-square: \"\\f14c\";\n@fa-var-eye: \"\\f06e\";\n@fa-var-eye-slash: \"\\f070\";\n@fa-var-eyedropper: \"\\f1fb\";\n@fa-var-facebook: \"\\f09a\";\n@fa-var-facebook-f: \"\\f09a\";\n@fa-var-facebook-official: \"\\f230\";\n@fa-var-facebook-square: \"\\f082\";\n@fa-var-fast-backward: \"\\f049\";\n@fa-var-fast-forward: \"\\f050\";\n@fa-var-fax: \"\\f1ac\";\n@fa-var-female: \"\\f182\";\n@fa-var-fighter-jet: \"\\f0fb\";\n@fa-var-file: \"\\f15b\";\n@fa-var-file-archive-o: \"\\f1c6\";\n@fa-var-file-audio-o: \"\\f1c7\";\n@fa-var-file-code-o: \"\\f1c9\";\n@fa-var-file-excel-o: \"\\f1c3\";\n@fa-var-file-image-o: \"\\f1c5\";\n@fa-var-file-movie-o: \"\\f1c8\";\n@fa-var-file-o: \"\\f016\";\n@fa-var-file-pdf-o: \"\\f1c1\";\n@fa-var-file-photo-o: \"\\f1c5\";\n@fa-var-file-picture-o: \"\\f1c5\";\n@fa-var-file-powerpoint-o: \"\\f1c4\";\n@fa-var-file-sound-o: \"\\f1c7\";\n@fa-var-file-text: \"\\f15c\";\n@fa-var-file-text-o: \"\\f0f6\";\n@fa-var-file-video-o: \"\\f1c8\";\n@fa-var-file-word-o: \"\\f1c2\";\n@fa-var-file-zip-o: \"\\f1c6\";\n@fa-var-files-o: \"\\f0c5\";\n@fa-var-film: \"\\f008\";\n@fa-var-filter: \"\\f0b0\";\n@fa-var-fire: \"\\f06d\";\n@fa-var-fire-extinguisher: \"\\f134\";\n@fa-var-flag: \"\\f024\";\n@fa-var-flag-checkered: \"\\f11e\";\n@fa-var-flag-o: \"\\f11d\";\n@fa-var-flash: \"\\f0e7\";\n@fa-var-flask: \"\\f0c3\";\n@fa-var-flickr: \"\\f16e\";\n@fa-var-floppy-o: \"\\f0c7\";\n@fa-var-folder: \"\\f07b\";\n@fa-var-folder-o: \"\\f114\";\n@fa-var-folder-open: \"\\f07c\";\n@fa-var-folder-open-o: \"\\f115\";\n@fa-var-font: \"\\f031\";\n@fa-var-forumbee: \"\\f211\";\n@fa-var-forward: \"\\f04e\";\n@fa-var-foursquare: \"\\f180\";\n@fa-var-frown-o: \"\\f119\";\n@fa-var-futbol-o: \"\\f1e3\";\n@fa-var-gamepad: \"\\f11b\";\n@fa-var-gavel: \"\\f0e3\";\n@fa-var-gbp: \"\\f154\";\n@fa-var-ge: \"\\f1d1\";\n@fa-var-gear: \"\\f013\";\n@fa-var-gears: \"\\f085\";\n@fa-var-genderless: \"\\f1db\";\n@fa-var-gift: \"\\f06b\";\n@fa-var-git: \"\\f1d3\";\n@fa-var-git-square: \"\\f1d2\";\n@fa-var-github: \"\\f09b\";\n@fa-var-github-alt: \"\\f113\";\n@fa-var-github-square: \"\\f092\";\n@fa-var-gittip: \"\\f184\";\n@fa-var-glass: \"\\f000\";\n@fa-var-globe: \"\\f0ac\";\n@fa-var-google: \"\\f1a0\";\n@fa-var-google-plus: \"\\f0d5\";\n@fa-var-google-plus-square: \"\\f0d4\";\n@fa-var-google-wallet: \"\\f1ee\";\n@fa-var-graduation-cap: \"\\f19d\";\n@fa-var-gratipay: \"\\f184\";\n@fa-var-group: \"\\f0c0\";\n@fa-var-h-square: \"\\f0fd\";\n@fa-var-hacker-news: \"\\f1d4\";\n@fa-var-hand-o-down: \"\\f0a7\";\n@fa-var-hand-o-left: \"\\f0a5\";\n@fa-var-hand-o-right: \"\\f0a4\";\n@fa-var-hand-o-up: \"\\f0a6\";\n@fa-var-hdd-o: \"\\f0a0\";\n@fa-var-header: \"\\f1dc\";\n@fa-var-headphones: \"\\f025\";\n@fa-var-heart: \"\\f004\";\n@fa-var-heart-o: \"\\f08a\";\n@fa-var-heartbeat: \"\\f21e\";\n@fa-var-history: \"\\f1da\";\n@fa-var-home: \"\\f015\";\n@fa-var-hospital-o: \"\\f0f8\";\n@fa-var-hotel: \"\\f236\";\n@fa-var-html5: \"\\f13b\";\n@fa-var-ils: \"\\f20b\";\n@fa-var-image: \"\\f03e\";\n@fa-var-inbox: \"\\f01c\";\n@fa-var-indent: \"\\f03c\";\n@fa-var-info: \"\\f129\";\n@fa-var-info-circle: \"\\f05a\";\n@fa-var-inr: \"\\f156\";\n@fa-var-instagram: \"\\f16d\";\n@fa-var-institution: \"\\f19c\";\n@fa-var-ioxhost: \"\\f208\";\n@fa-var-italic: \"\\f033\";\n@fa-var-joomla: \"\\f1aa\";\n@fa-var-jpy: \"\\f157\";\n@fa-var-jsfiddle: \"\\f1cc\";\n@fa-var-key: \"\\f084\";\n@fa-var-keyboard-o: \"\\f11c\";\n@fa-var-krw: \"\\f159\";\n@fa-var-language: \"\\f1ab\";\n@fa-var-laptop: \"\\f109\";\n@fa-var-lastfm: \"\\f202\";\n@fa-var-lastfm-square: \"\\f203\";\n@fa-var-leaf: \"\\f06c\";\n@fa-var-leanpub: \"\\f212\";\n@fa-var-legal: \"\\f0e3\";\n@fa-var-lemon-o: \"\\f094\";\n@fa-var-level-down: \"\\f149\";\n@fa-var-level-up: \"\\f148\";\n@fa-var-life-bouy: \"\\f1cd\";\n@fa-var-life-buoy: \"\\f1cd\";\n@fa-var-life-ring: \"\\f1cd\";\n@fa-var-life-saver: \"\\f1cd\";\n@fa-var-lightbulb-o: \"\\f0eb\";\n@fa-var-line-chart: \"\\f201\";\n@fa-var-link: \"\\f0c1\";\n@fa-var-linkedin: \"\\f0e1\";\n@fa-var-linkedin-square: \"\\f08c\";\n@fa-var-linux: \"\\f17c\";\n@fa-var-list: \"\\f03a\";\n@fa-var-list-alt: \"\\f022\";\n@fa-var-list-ol: \"\\f0cb\";\n@fa-var-list-ul: \"\\f0ca\";\n@fa-var-location-arrow: \"\\f124\";\n@fa-var-lock: \"\\f023\";\n@fa-var-long-arrow-down: \"\\f175\";\n@fa-var-long-arrow-left: \"\\f177\";\n@fa-var-long-arrow-right: \"\\f178\";\n@fa-var-long-arrow-up: \"\\f176\";\n@fa-var-magic: \"\\f0d0\";\n@fa-var-magnet: \"\\f076\";\n@fa-var-mail-forward: \"\\f064\";\n@fa-var-mail-reply: \"\\f112\";\n@fa-var-mail-reply-all: \"\\f122\";\n@fa-var-male: \"\\f183\";\n@fa-var-map-marker: \"\\f041\";\n@fa-var-mars: \"\\f222\";\n@fa-var-mars-double: \"\\f227\";\n@fa-var-mars-stroke: \"\\f229\";\n@fa-var-mars-stroke-h: \"\\f22b\";\n@fa-var-mars-stroke-v: \"\\f22a\";\n@fa-var-maxcdn: \"\\f136\";\n@fa-var-meanpath: \"\\f20c\";\n@fa-var-medium: \"\\f23a\";\n@fa-var-medkit: \"\\f0fa\";\n@fa-var-meh-o: \"\\f11a\";\n@fa-var-mercury: \"\\f223\";\n@fa-var-microphone: \"\\f130\";\n@fa-var-microphone-slash: \"\\f131\";\n@fa-var-minus: \"\\f068\";\n@fa-var-minus-circle: \"\\f056\";\n@fa-var-minus-square: \"\\f146\";\n@fa-var-minus-square-o: \"\\f147\";\n@fa-var-mobile: \"\\f10b\";\n@fa-var-mobile-phone: \"\\f10b\";\n@fa-var-money: \"\\f0d6\";\n@fa-var-moon-o: \"\\f186\";\n@fa-var-mortar-board: \"\\f19d\";\n@fa-var-motorcycle: \"\\f21c\";\n@fa-var-music: \"\\f001\";\n@fa-var-navicon: \"\\f0c9\";\n@fa-var-neuter: \"\\f22c\";\n@fa-var-newspaper-o: \"\\f1ea\";\n@fa-var-openid: \"\\f19b\";\n@fa-var-outdent: \"\\f03b\";\n@fa-var-pagelines: \"\\f18c\";\n@fa-var-paint-brush: \"\\f1fc\";\n@fa-var-paper-plane: \"\\f1d8\";\n@fa-var-paper-plane-o: \"\\f1d9\";\n@fa-var-paperclip: \"\\f0c6\";\n@fa-var-paragraph: \"\\f1dd\";\n@fa-var-paste: \"\\f0ea\";\n@fa-var-pause: \"\\f04c\";\n@fa-var-paw: \"\\f1b0\";\n@fa-var-paypal: \"\\f1ed\";\n@fa-var-pencil: \"\\f040\";\n@fa-var-pencil-square: \"\\f14b\";\n@fa-var-pencil-square-o: \"\\f044\";\n@fa-var-phone: \"\\f095\";\n@fa-var-phone-square: \"\\f098\";\n@fa-var-photo: \"\\f03e\";\n@fa-var-picture-o: \"\\f03e\";\n@fa-var-pie-chart: \"\\f200\";\n@fa-var-pied-piper: \"\\f1a7\";\n@fa-var-pied-piper-alt: \"\\f1a8\";\n@fa-var-pinterest: \"\\f0d2\";\n@fa-var-pinterest-p: \"\\f231\";\n@fa-var-pinterest-square: \"\\f0d3\";\n@fa-var-plane: \"\\f072\";\n@fa-var-play: \"\\f04b\";\n@fa-var-play-circle: \"\\f144\";\n@fa-var-play-circle-o: \"\\f01d\";\n@fa-var-plug: \"\\f1e6\";\n@fa-var-plus: \"\\f067\";\n@fa-var-plus-circle: \"\\f055\";\n@fa-var-plus-square: \"\\f0fe\";\n@fa-var-plus-square-o: \"\\f196\";\n@fa-var-power-off: \"\\f011\";\n@fa-var-print: \"\\f02f\";\n@fa-var-puzzle-piece: \"\\f12e\";\n@fa-var-qq: \"\\f1d6\";\n@fa-var-qrcode: \"\\f029\";\n@fa-var-question: \"\\f128\";\n@fa-var-question-circle: \"\\f059\";\n@fa-var-quote-left: \"\\f10d\";\n@fa-var-quote-right: \"\\f10e\";\n@fa-var-ra: \"\\f1d0\";\n@fa-var-random: \"\\f074\";\n@fa-var-rebel: \"\\f1d0\";\n@fa-var-recycle: \"\\f1b8\";\n@fa-var-reddit: \"\\f1a1\";\n@fa-var-reddit-square: \"\\f1a2\";\n@fa-var-refresh: \"\\f021\";\n@fa-var-remove: \"\\f00d\";\n@fa-var-renren: \"\\f18b\";\n@fa-var-reorder: \"\\f0c9\";\n@fa-var-repeat: \"\\f01e\";\n@fa-var-reply: \"\\f112\";\n@fa-var-reply-all: \"\\f122\";\n@fa-var-retweet: \"\\f079\";\n@fa-var-rmb: \"\\f157\";\n@fa-var-road: \"\\f018\";\n@fa-var-rocket: \"\\f135\";\n@fa-var-rotate-left: \"\\f0e2\";\n@fa-var-rotate-right: \"\\f01e\";\n@fa-var-rouble: \"\\f158\";\n@fa-var-rss: \"\\f09e\";\n@fa-var-rss-square: \"\\f143\";\n@fa-var-rub: \"\\f158\";\n@fa-var-ruble: \"\\f158\";\n@fa-var-rupee: \"\\f156\";\n@fa-var-save: \"\\f0c7\";\n@fa-var-scissors: \"\\f0c4\";\n@fa-var-search: \"\\f002\";\n@fa-var-search-minus: \"\\f010\";\n@fa-var-search-plus: \"\\f00e\";\n@fa-var-sellsy: \"\\f213\";\n@fa-var-send: \"\\f1d8\";\n@fa-var-send-o: \"\\f1d9\";\n@fa-var-server: \"\\f233\";\n@fa-var-share: \"\\f064\";\n@fa-var-share-alt: \"\\f1e0\";\n@fa-var-share-alt-square: \"\\f1e1\";\n@fa-var-share-square: \"\\f14d\";\n@fa-var-share-square-o: \"\\f045\";\n@fa-var-shekel: \"\\f20b\";\n@fa-var-sheqel: \"\\f20b\";\n@fa-var-shield: \"\\f132\";\n@fa-var-ship: \"\\f21a\";\n@fa-var-shirtsinbulk: \"\\f214\";\n@fa-var-shopping-cart: \"\\f07a\";\n@fa-var-sign-in: \"\\f090\";\n@fa-var-sign-out: \"\\f08b\";\n@fa-var-signal: \"\\f012\";\n@fa-var-simplybuilt: \"\\f215\";\n@fa-var-sitemap: \"\\f0e8\";\n@fa-var-skyatlas: \"\\f216\";\n@fa-var-skype: \"\\f17e\";\n@fa-var-slack: \"\\f198\";\n@fa-var-sliders: \"\\f1de\";\n@fa-var-slideshare: \"\\f1e7\";\n@fa-var-smile-o: \"\\f118\";\n@fa-var-soccer-ball-o: \"\\f1e3\";\n@fa-var-sort: \"\\f0dc\";\n@fa-var-sort-alpha-asc: \"\\f15d\";\n@fa-var-sort-alpha-desc: \"\\f15e\";\n@fa-var-sort-amount-asc: \"\\f160\";\n@fa-var-sort-amount-desc: \"\\f161\";\n@fa-var-sort-asc: \"\\f0de\";\n@fa-var-sort-desc: \"\\f0dd\";\n@fa-var-sort-down: \"\\f0dd\";\n@fa-var-sort-numeric-asc: \"\\f162\";\n@fa-var-sort-numeric-desc: \"\\f163\";\n@fa-var-sort-up: \"\\f0de\";\n@fa-var-soundcloud: \"\\f1be\";\n@fa-var-space-shuttle: \"\\f197\";\n@fa-var-spinner: \"\\f110\";\n@fa-var-spoon: \"\\f1b1\";\n@fa-var-spotify: \"\\f1bc\";\n@fa-var-square: \"\\f0c8\";\n@fa-var-square-o: \"\\f096\";\n@fa-var-stack-exchange: \"\\f18d\";\n@fa-var-stack-overflow: \"\\f16c\";\n@fa-var-star: \"\\f005\";\n@fa-var-star-half: \"\\f089\";\n@fa-var-star-half-empty: \"\\f123\";\n@fa-var-star-half-full: \"\\f123\";\n@fa-var-star-half-o: \"\\f123\";\n@fa-var-star-o: \"\\f006\";\n@fa-var-steam: \"\\f1b6\";\n@fa-var-steam-square: \"\\f1b7\";\n@fa-var-step-backward: \"\\f048\";\n@fa-var-step-forward: \"\\f051\";\n@fa-var-stethoscope: \"\\f0f1\";\n@fa-var-stop: \"\\f04d\";\n@fa-var-street-view: \"\\f21d\";\n@fa-var-strikethrough: \"\\f0cc\";\n@fa-var-stumbleupon: \"\\f1a4\";\n@fa-var-stumbleupon-circle: \"\\f1a3\";\n@fa-var-subscript: \"\\f12c\";\n@fa-var-subway: \"\\f239\";\n@fa-var-suitcase: \"\\f0f2\";\n@fa-var-sun-o: \"\\f185\";\n@fa-var-superscript: \"\\f12b\";\n@fa-var-support: \"\\f1cd\";\n@fa-var-table: \"\\f0ce\";\n@fa-var-tablet: \"\\f10a\";\n@fa-var-tachometer: \"\\f0e4\";\n@fa-var-tag: \"\\f02b\";\n@fa-var-tags: \"\\f02c\";\n@fa-var-tasks: \"\\f0ae\";\n@fa-var-taxi: \"\\f1ba\";\n@fa-var-tencent-weibo: \"\\f1d5\";\n@fa-var-terminal: \"\\f120\";\n@fa-var-text-height: \"\\f034\";\n@fa-var-text-width: \"\\f035\";\n@fa-var-th: \"\\f00a\";\n@fa-var-th-large: \"\\f009\";\n@fa-var-th-list: \"\\f00b\";\n@fa-var-thumb-tack: \"\\f08d\";\n@fa-var-thumbs-down: \"\\f165\";\n@fa-var-thumbs-o-down: \"\\f088\";\n@fa-var-thumbs-o-up: \"\\f087\";\n@fa-var-thumbs-up: \"\\f164\";\n@fa-var-ticket: \"\\f145\";\n@fa-var-times: \"\\f00d\";\n@fa-var-times-circle: \"\\f057\";\n@fa-var-times-circle-o: \"\\f05c\";\n@fa-var-tint: \"\\f043\";\n@fa-var-toggle-down: \"\\f150\";\n@fa-var-toggle-left: \"\\f191\";\n@fa-var-toggle-off: \"\\f204\";\n@fa-var-toggle-on: \"\\f205\";\n@fa-var-toggle-right: \"\\f152\";\n@fa-var-toggle-up: \"\\f151\";\n@fa-var-train: \"\\f238\";\n@fa-var-transgender: \"\\f224\";\n@fa-var-transgender-alt: \"\\f225\";\n@fa-var-trash: \"\\f1f8\";\n@fa-var-trash-o: \"\\f014\";\n@fa-var-tree: \"\\f1bb\";\n@fa-var-trello: \"\\f181\";\n@fa-var-trophy: \"\\f091\";\n@fa-var-truck: \"\\f0d1\";\n@fa-var-try: \"\\f195\";\n@fa-var-tty: \"\\f1e4\";\n@fa-var-tumblr: \"\\f173\";\n@fa-var-tumblr-square: \"\\f174\";\n@fa-var-turkish-lira: \"\\f195\";\n@fa-var-twitch: \"\\f1e8\";\n@fa-var-twitter: \"\\f099\";\n@fa-var-twitter-square: \"\\f081\";\n@fa-var-umbrella: \"\\f0e9\";\n@fa-var-underline: \"\\f0cd\";\n@fa-var-undo: \"\\f0e2\";\n@fa-var-university: \"\\f19c\";\n@fa-var-unlink: \"\\f127\";\n@fa-var-unlock: \"\\f09c\";\n@fa-var-unlock-alt: \"\\f13e\";\n@fa-var-unsorted: \"\\f0dc\";\n@fa-var-upload: \"\\f093\";\n@fa-var-usd: \"\\f155\";\n@fa-var-user: \"\\f007\";\n@fa-var-user-md: \"\\f0f0\";\n@fa-var-user-plus: \"\\f234\";\n@fa-var-user-secret: \"\\f21b\";\n@fa-var-user-times: \"\\f235\";\n@fa-var-users: \"\\f0c0\";\n@fa-var-venus: \"\\f221\";\n@fa-var-venus-double: \"\\f226\";\n@fa-var-venus-mars: \"\\f228\";\n@fa-var-viacoin: \"\\f237\";\n@fa-var-video-camera: \"\\f03d\";\n@fa-var-vimeo-square: \"\\f194\";\n@fa-var-vine: \"\\f1ca\";\n@fa-var-vk: \"\\f189\";\n@fa-var-volume-down: \"\\f027\";\n@fa-var-volume-off: \"\\f026\";\n@fa-var-volume-up: \"\\f028\";\n@fa-var-warning: \"\\f071\";\n@fa-var-wechat: \"\\f1d7\";\n@fa-var-weibo: \"\\f18a\";\n@fa-var-weixin: \"\\f1d7\";\n@fa-var-whatsapp: \"\\f232\";\n@fa-var-wheelchair: \"\\f193\";\n@fa-var-wifi: \"\\f1eb\";\n@fa-var-windows: \"\\f17a\";\n@fa-var-won: \"\\f159\";\n@fa-var-wordpress: \"\\f19a\";\n@fa-var-wrench: \"\\f0ad\";\n@fa-var-xing: \"\\f168\";\n@fa-var-xing-square: \"\\f169\";\n@fa-var-yahoo: \"\\f19e\";\n@fa-var-yelp: \"\\f1e9\";\n@fa-var-yen: \"\\f157\";\n@fa-var-youtube: \"\\f167\";\n@fa-var-youtube-play: \"\\f16a\";\n@fa-var-youtube-square: \"\\f166\";\n\n","//\n// Alerts\n// --------------------------------------------------\n\n.alert {\n border-width: 2px;\n padding-left: 34px;\n position: relative;\n .alert-link {\n color: @link-color;\n &:hover {\n color: @link-hover-color;\n }\n }\n > .pficon {\n font-size: 20px;\n position: absolute;\n left: 7px;\n top: 7px;\n }\n .pficon-info {\n color: #72767b;\n }\n}\n\n.alert-dismissable .close {\n right: -16px;\n top: 1px;\n}","//\n// Badges\n// --------------------------------------------------\n\n.badge {\n margin-left: 6px;\n}\n\n.nav-pills > li > a > .badge {\n margin-left: 6px;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n.breadcrumb {\n padding-left: 0;\n > .active strong {\n font-weight: 600;\n }\n > li {\n display: inline; /* IE8 */\n + li:before {\n color: @gray-light;\n content: @fa-var-angle-double-right;\n font-family: @icon-font-name-fa;\n font-size: @font-size-base - 1;\n padding: 0 9px 0 7px;\n }\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n.btn {\n .box-shadow(0 2px 3px rgba(0,0,0,.1));\n &:active {\n .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n background-color: #f8f8f8 !important;\n background-image: none !important;\n border-color: #d1d1d1 !important;\n color: #969696 !important;\n opacity: 1;\n &:active {\n .box-shadow(none);\n }\n &.btn-link {\n background-color: transparent !important;\n border: 0;\n }\n }\n}\n\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-bg-img-start; @btn-danger-bg-img-stop; @btn-danger-border);\n}\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);\n}\n\n.btn-link {\n &, &:active {\n .box-shadow(none);\n }\n}\n\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-bg-img-start; @btn-primary-bg-img-stop; @btn-primary-border);\n}\n\n.btn-xs, .btn-group-xs .btn {\n font-weight: @btn-xs-font-weight;\n}","//\n// Dropdowns\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n// Modified to use Font Awesome's angle-down icon\n.caret {\n font-family: @icon-font-name-fa;\n font-weight: normal;\n height: @font-size-base - 3;\n position: relative;\n vertical-align: baseline;\n width: @font-size-base;\n &:before {\n bottom: 0;\n content: @fa-var-angle-down;\n left: 0;\n line-height: @font-size-base;\n position: absolute;\n text-align: center;\n top: -1px;\n right: 0;\n }\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg, @dropdown-divider-margin);\n }\n // Links within the dropdown menu\n > li > a {\n border-color: transparent;\n border-style: solid;\n border-width: 1px 0;\n padding: 1px 10px;\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover, &:focus {\n border-color: @dropdown-link-hover-border-color;\n .reset-filter();\n }\n &:active {\n background-color: @dropdown-link-focus-bg;\n border-color: @dropdown-link-active-border-color;\n color: @dropdown-link-focus-color !important;\n .reset-filter();\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n background-color: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n .reset-filter();\n }\n}\n\n// Disabled state\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n border-color: transparent;\n }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disabled > a {\n &:hover,\n &:focus {\n border-color: transparent;\n }\n}\n\n// Dropdown section headers\n.dropdown-header {\n padding-left: 10px;\n padding-right: 10px;\n text-transform: uppercase;\n}\n\n// Position Menu closer to button\n.btn-group, .input-group-btn {\n > .dropdown-menu {\n margin-top: -1px;\n }\n}\n\n// Position Menu closer to button (dropup-menu)\n.dropup .dropdown-menu {\n margin-bottom: -1px;\n}\n\n// Add back styles for dropdown-submenu\n.dropdown-submenu {\n position:relative;\n &:hover {\n > a {\n background-color: @dropdown-link-hover-bg;\n border-color: @dropdown-link-hover-border-color;\n }\n > .dropdown-menu {\n display: block;\n }\n }\n &.pull-left {\n float: none !important;\n > .dropdown-menu {\n left: auto;\n margin-left: 10px;\n right: 100%;\n }\n }\n > a {\n padding-right: 20px !important;\n &:after {\n content: @fa-var-angle-right;\n font-family: @icon-font-name-fa;\n display: block;\n position: absolute;\n right: 10px;\n top: 2px;\n }\n }\n > .dropdown-menu {\n left: 100%;\n margin-top: 0;\n top: -6px;\n }\n .dropup & > .dropdown-menu {\n bottom: -5px;\n top: auto;\n }\n .open &.active > .dropdown-menu {\n display: block;\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n.form-control {\n &[disabled], &[readonly], fieldset[disabled] & {\n border-color: @input-border-disabled !important;\n .box-shadow(none);\n color: #969696;\n }\n &:hover {\n border-color: @input-border-hover;\n .has-error & {\n border-color: darken(@state-danger-text, 10%);\n }\n .has-success & {\n border-color: darken(@state-success-text, 10%);\n }\n .has-warning & {\n border-color: darken(@state-warning-text, 10%);\n }\n }\n}\n\n.input-group .input-group-btn .btn {\n .box-shadow(none);\n}\n\nlabel {\n font-weight: 600;\n}","//\n// Labels\n// --------------------------------------------------\n\n.label {\n border-radius: 0;\n font-size: 100%;\n font-weight: 600;\n h1 &, h2 &, h3 &, h4 &, h5 &, h6 & {\n font-size: 75%;\n }\n}","//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-top: 1px solid @list-group-top-border;\n .list-group-item:first-child {\n border-top: 0;\n }\n}\n.list-group-item {\n border-left: 0;\n border-right: 0;\n}\n\n.list-group-item-heading {\n font-weight: 700;\n}","//\n// Modals\n// --------------------------------------------------\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n background-color: #f8f8f8;\n border-bottom: none;\n padding: @modal-title-padding-vertical @modal-title-padding-horizontal;\n}\n// Close icon\n.modal-header .close {\n margin-top: 2px;\n}\n\n// Title text within header\n.modal-title {\n font-size: 13px;\n font-weight: 700;\n}\n\n// Footer (for actions)\n.modal-footer {\n border-top: none;\n margin-top: 15px;\n padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;\n > .btn {\n padding-left: 10px;\n padding-right: 10px;\n > .fa-angle-left {\n margin-right: 5px;\n }\n > .fa-angle-right {\n margin-left: 5px;\n }\n }\n}","//\n// Pager\n// --------------------------------------------------\n\n.pager {\n li {\n > a,\n > span {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);\n color: @gray-pf;\n font-weight: 600;\n line-height: 22px;\n padding: 2px 14px;\n > .i {\n font-size: 18px;\n vertical-align: top;\n margin: 2px 0;\n }\n }\n > a:hover\n > a:focus {\n color: @gray-pf;\n }\n a:active {\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n outline: 0;\n }\n }\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > a:active,\n > span {\n background: @pagination-bg;\n .box-shadow(none);\n color: @pager-disabled-color;\n cursor: default;\n }\n }\n .next {\n > a,\n > span {\n > .i {\n margin-left: 5px;\n }\n }\n }\n .previous {\n > a,\n > span {\n > .i {\n margin-right: 5px;\n }\n }\n }\n}\n\n.pager-sm {\n li {\n > a,\n > span {\n font-weight: 400;\n line-height: 16px;\n padding: 1px 10px;\n > .i {\n font-size: 12px;\n }\n }\n }\n}\n","//\n// Pagination\n// --------------------------------------------------\n\n.pagination {\n > li {\n > a,\n > span {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);\n cursor: default;\n font-weight: 600;\n padding: @padding-base-vertical @padding-large-horizontal;\n > .i {\n font-size: 15px;\n vertical-align: top;\n margin: 2px 0;\n }\n }\n }\n > li > a,\n > li > span {\n &:active {\n .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));\n }\n }\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n background-color: @btn-default-bg;\n border-color: @pagination-border;\n .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));\n color: @btn-default-color;\n #gradient > .vertical(@btn-default-bg-img-start; @btn-default-bg-img-stop);\n }\n }\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n .box-shadow(none);\n cursor: default;\n #gradient > .vertical(@btn-default-bg-img-start; @btn-default-bg-img-stop);\n }\n }\n}\n\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n > li {\n > a,\n > span {\n font-weight: 400;\n > .i {\n font-size: 12px;\n margin-top: 2px;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n.panel-title {\n font-weight: 700;\n}\n\n//\n// Collapsable panels (aka, accordion)\n// --------------------------------------------------\n\n.panel-group {\n .panel {\n color: @gray-pf;\n + .panel {\n margin-top: -1px;\n }\n }\n .panel-default {\n border-color: @panel-default-border-color;\n border-top-color: #c4c3c3;\n }\n .panel-heading {\n #gradient > .vertical(@btn-default-bg-img-start, @btn-default-bg-img-stop);\n + .panel-collapse .panel-body {\n border-top: 1px solid @panel-inner-border;\n }\n }\n .panel-title {\n font-weight: 500;\n line-height: 1;\n > a {\n color: @gray-pf;\n font-weight: @btn-font-weight;\n &:before {\n content: \"\\f107\";\n font-family: @icon-font-name-fa;\n font-size: 13px;\n margin-right: 5px;\n vertical-align: 0;\n }\n &:focus {\n outline: none;\n text-decoration: none;\n }\n &:hover {\n text-decoration: none;\n }\n &.collapsed:before {\n content: \"\\f105\";\n margin-left: 4px;\n margin-right: 7px;\n }\n }\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n.popover {\n .box-shadow(0 2px 2px rgba(0,0,0,.08));\n padding: 0;\n}\n\n.popover-content {\n color: @gray-pf;\n line-height: 18px;\n padding: 10px 14px;\n}\n\n.popover-title {\n border-bottom: none;\n border-radius: 0;\n color: @gray-pf;\n font-size: @font-size-base + 1;\n font-weight: 700;\n min-height: 34px;\n .close {\n height: 22px;\n position: absolute;\n right: 8px;\n top: 6px;\n }\n &.closable {\n padding-right: 30px;\n }\n}","//\n// Progress Bar\n// --------------------------------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 0 0; }\n to { background-position: 40px 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 0 0; }\n to { background-position: 40px 0; }\n}\n\n.progress {\n .box-shadow(inset 0 0 1px rgba(0, 0, 0, 0.25));\n &.progress-label-left, &.progress-label-top-right {\n overflow: visible;\n position: relative;\n }\n &.progress-label-left {\n margin-left: 40px;\n }\n &.progress-sm {\n height: @progress-sm;\n margin-bottom: @progress-sm;\n }\n &.progress-xs {\n height: @progress-xs;\n margin-bottom: @progress-xs;\n }\n td > &:first-child:last-child {\n margin-bottom: 0;\n margin-top: 3px;\n }\n}\n\n.progress-bar {\n box-shadow: none;\n .progress-label-left & span, .progress-label-top-right & span {\n color: @text-color;\n font-size: @font-size-large;\n position: absolute;\n text-align: right;\n }\n .progress-label-left & span {\n left: -40px;\n top: 0;\n width: 35px;\n }\n .progress-label-top-right & span {\n max-width: 25%;\n overflow: hidden;\n right: 0;\n text-overflow: ellipsis;\n top: -(@line-height-computed*1.5+1);\n white-space: nowrap;\n }\n .progress-label-left.progress-sm & span, .progress-label-top-right.progress-sm & span {\n font-size: @font-size-base;\n }\n .progress-sm & {\n line-height: @progress-sm;\n }\n .progress-xs & {\n line-height: @progress-xs;\n }\n}\n\n.progress-description {\n margin-bottom: @line-height-computed/2;\n max-width: 74%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n .count {\n font-size: @font-size-base*1.667;\n font-weight: 300;\n line-height: 1;\n margin-right: 5px;\n }\n .fa, .pficon {\n font-size: 14px;\n margin-right: 3px;\n }\n .tooltip {\n white-space: normal;\n }\n}","//\n// Tables\n// --------------------------------------------------\n\n.table {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding-top @table-cell-padding @table-cell-padding-bottom;\n > a:hover {\n text-decoration: none;\n }\n }\n > th {\n font-family: 'Open Sans';\n font-style: normal;\n font-weight: 600;\n }\n }\n }\n > thead {\n background-clip: padding-box;\n background-color: #f9f9f9;\n #gradient > .vertical(@start-color: #fafafa; @end-color: #ededed; @start-percent: 0%; @end-percent: 100%);\n }\n}\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 1px;\n }\n }\n}\n\n.table-striped {\n > tbody > tr{\n &:nth-of-type(even) {\n background-color: @table-bg-accent;\n }\n &:nth-of-type(odd) {\n background-color: transparent;\n }\n }\n}\n\n.table-hover {\n > tbody > tr:hover {\n > td,\n > th {\n background-color: @table-bg-hover;\n border-bottom-color: @table-border-hover;\n }\n }\n}\n","//\n// Tabs\n// --------------------------------------------------\n\n.nav-tabs {\n font-size: @font-size-large;\n > li {\n > a {\n color: @nav-tabs-color;\n margin-right: -1px;\n padding-bottom: 5px;\n padding-top: 5px;\n &:active,\n &:focus,\n &:hover {\n background: transparent;\n border-color: @nav-tabs-border-color;\n color: @gray-darker;\n }\n }\n > .dropdown-menu {\n border-top: 0;\n border-color: @nav-tabs-border-color;\n &.pull-right {\n right: -1px;\n }\n }\n }\n + .nav-tabs-pf {\n font-size: @font-size-base;\n > li:first-child > a {\n padding-left: 15px;\n &:before {\n left: 15px !important;\n }\n }\n }\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: transparent;\n border-color: @nav-tabs-border-color;\n }\n }\n}\n\n.nav-tabs-pf {\n &.nav-justified {\n @media (min-width: @grid-float-breakpoint) {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n }\n > li {\n &:first-child > a {\n padding-left: 15px;\n }\n > a {\n border-bottom: 0;\n &:before {\n left: 0 !important;\n right: 0 !important;\n }\n }\n }\n }\n > li {\n margin-bottom: 0;\n &.active > a {\n .tab-indicator(@background: @nav-tabs-active-link-hover-color);\n &,\n &:active,\n &:focus,\n &:hover {\n background-color: transparent;\n border: 0 !important;\n color: @link-color;\n &:before {\n background: @nav-tabs-active-link-hover-color;\n }\n }\n }\n &:first-child {\n > a {\n padding-left: 0;\n &:before {\n left: 0 !important;\n }\n }\n }\n > a {\n border: 0;\n line-height: 1;\n margin-right: 0;\n padding-bottom: 10px;\n padding-top: 10px;\n &:active,\n &:focus,\n &:hover {\n .tab-indicator()\n }\n }\n > .dropdown-menu {\n left: 15px;\n margin-top: 1px;\n &.pull-right {\n left: auto;\n right: 15px;\n }\n }\n }\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: transparent;\n }\n }\n}","//\n// Tooltips\n// --------------------------------------------------\n\n// Base class\n.tooltip {\n font-size: @tooltip-font-size;\n line-height: 1.4\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n padding: 7px 12px;\n text-align: left;\n}","//\n// Typography\n// --------------------------------------------------\n\nh1, .h1, h2, .h2 { font-weight: 300; }\n\n.page-header .actions {\n margin-top: 8px;\n a > .pficon {\n margin-right: 4px;\n }\n}\n\n@media (min-width: @grid-float-breakpoint-max) {\n .page-header-bleed-left {\n margin-left: -@grid-gutter-width/2;\n }\n .page-header-bleed-right {\n margin-right: -@grid-gutter-width/2;\n .actions {\n margin-right: @grid-gutter-width/2;\n }\n }\n}"]}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.min.css
new file mode 100644
index 0000000..647ae0a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.min.css
@@ -0,0 +1,9 @@
+body,figure{margin:0}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left}.fa,.glyphicon{-moz-osx-font-smoothing:grayscale}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:url(../../components/patternfly/dist/fonts/OpenSans-Light-webfont.eot);src:url(../../components/patternfly/dist/fonts/OpenSans-Light-webfont.eot?#iefix) format('embedded-opentype'),url(../../components/patternfly/dist/fonts/OpenSans-Light-webfont.woff) format('woff'),url(../../components/patternfly/dist/fonts/OpenSans-Light-webfont.ttf) format('truetype'),url(../../components/patternfly/dist/fonts/OpenSans-Light-webfont.svg#OpenSansLight) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:url(../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.eot);src:url(../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.eot?#iefix) format('embedded-opentype'),url(../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.woff) format('woff'),url(../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.ttf) format('truetype'),url(../../components/patternfly/dist/fonts/OpenSans-Regular-webfont.svg#OpenSansRegular) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:url(../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.eot);src:url(../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.eot?#iefix) format('embedded-opentype'),url(../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff) format('woff'),url(../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.ttf) format('truetype'),url(../../components/patternfly/dist/fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:url(../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.eot);src:url(../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.eot?#iefix) format('embedded-opentype'),url(../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.woff) format('woff'),url(../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf) format('truetype'),url(../../components/patternfly/dist/fonts/OpenSans-Bold-webfont.svg#OpenSansBold) format('svg')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:url(../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.eot);src:url(../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.eot?#iefix) format('embedded-opentype'),url(../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.woff) format('woff'),url(../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.ttf) format('truetype'),url(../../components/patternfly/dist/fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold) format('svg')}/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:10px;-webkit-tap-highlight-color:transparent}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0;vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.img-thumbnail,body{background-color:#fff}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}@font-face{font-family:'Glyphicons Halflings';src:url(../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot);src:url(../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff) format('woff'),url(../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../../components/patternfly/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.66666667;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#0099d3;text-decoration:none}a:focus,a:hover{color:#00618a;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:1px}.img-thumbnail{padding:4px;line-height:1.66666667;border:1px solid #ddd;border-radius:1px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;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}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#999}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:24px}.h2,h2{font-size:22px}.h3,h3{font-size:16px}.h4,h4{font-size:15px}.h5,h5{font-size:13px}.h6,h6{font-size:11px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:13px;font-weight:300;line-height:1.4}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.66666667}dt,kbd kbd{font-weight:700}@media (min-width:768px){.lead{font-size:18px}}.small,small{font-size:91%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{list-style:none;padding-left:0}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999}.text-primary{color:#00a8e1}a.text-primary:focus,a.text-primary:hover{color:#0082ae}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#ec7a08}a.text-warning:focus,a.text-warning:hover{color:#bb6106}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#00a8e1}a.bg-primary:focus,a.bg-primary:hover{background-color:#0082ae}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}ol,ul{margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:15px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#999}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}caption,th{text-align:left}code,kbd{padding:2px 4px;font-size:90%;border-radius:1px}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}.checkbox label,.checkbox-inline,.radio label,.radio-inline{margin-bottom:0;cursor:pointer;padding-left:20px;font-weight:400}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:11px;word-break:break-all;word-wrap:break-word;color:#333;background-color:#fcfcfc;border:1px solid #ccc;border-radius:1px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:20px;padding-right:20px}.pre-scrollable{overflow-y:scroll}@media (min-width:768px){.container{width:760px}}@media (min-width:992px){.container{width:980px}}@media (min-width:1200px){.container{width:1180px}}.row{margin-left:-20px;margin-right:-20px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:20px;padding-right:20px}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:10px;padding-bottom:10px;color:#999}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{line-height:1.66666667;vertical-align:top;border-top:1px solid #d1d1d1}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #d1d1d1}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #d1d1d1}.table .table{background-color:#fff}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#d5ecf9}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#bfe2f6}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #d1d1d1}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;font-size:18px;line-height:inherit;color:#333;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{display:block;font-size:12px;line-height:1.66666667;color:#333}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:3px}.form-control{width:100%;height:26px;padding:2px 6px;background-color:#fff;border:1px solid #bababa;border-radius:1px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{opacity:1;color:#999;font-style:italic}.form-control:-ms-input-placeholder{color:#999;font-style:italic}.form-control::-webkit-input-placeholder{color:#999;font-style:italic}.form-control:-moz-placeholder{color:#999;font-style:italic}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#f8f8f8;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:26px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:22px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:33px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.collapsing,.dropdown,.dropup,.has-feedback{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;vertical-align:middle}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:3px;padding-bottom:3px;margin-bottom:0;min-height:32px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{font-size:11px;padding:2px 6px;border-radius:1px}.input-sm{height:22px;line-height:1.5}select.input-sm{height:22px;line-height:22px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:22px;line-height:1.5}.form-group-sm select.form-control{height:22px;line-height:22px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:22px;min-height:31px;padding:3px 6px;font-size:11px;line-height:1.5}.form-group-lg .form-control,.input-lg{font-size:14px;padding:6px 10px;border-radius:1px}.input-lg{height:33px;line-height:1.3333333}select.input-lg{height:33px;line-height:33px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:33px;line-height:1.3333333}.form-group-lg select.form-control{height:33px;line-height:33px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:33px;min-height:34px;padding:7px 10px;font-size:14px;line-height:1.3333333}.has-feedback .form-control{padding-right:32.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:26px;height:26px;line-height:26px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:33px;height:33px;line-height:33px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:22px;height:22px;line-height:22px}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#ec7a08}.has-warning .form-control{border-color:#ec7a08;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60}.has-warning .input-group-addon{color:#ec7a08;border-color:#ec7a08;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:3px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:23px}.form-horizontal .form-group{margin-left:-20px;margin-right:-20px}.form-horizontal .has-feedback .form-control-feedback{right:20px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:3px}.form-horizontal .form-group-lg .control-label{padding-top:9px;font-size:14px}.form-horizontal .form-group-sm .control-label{padding-top:3px;font-size:11px}}.btn{display:inline-block;margin-bottom:0;font-weight:600;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:2px 6px;font-size:12px;line-height:1.66666667;border-radius:1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#4d5258;text-decoration:none}.btn.active,.btn:active{outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default.focus,.btn-default:focus{color:#4d5258;background-color:#d5d5d5;border-color:#777}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#4d5258;background-color:#d5d5d5;border-color:#989898}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#4d5258;background-color:#c3c3c3;border-color:#777}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#eee;border-color:#b7b7b7}.btn-default .badge{color:#eee;background-color:#4d5258}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#00649c;border-color:#00141d}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#00649c;border-color:#00435f}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#004d78;border-color:#00141d}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0085cf;border-color:#006e9c}.btn-primary .badge{color:#0085cf;background-color:#fff}.btn-success{color:#fff;background-color:#3f9c35;border-color:#37892f}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#307628;border-color:#112a0e}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#307628;border-color:#255b1f}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#255b1f;border-color:#112a0e}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#3f9c35;border-color:#37892f}.btn-success .badge{color:#3f9c35;background-color:#fff}.btn-info{color:#fff;background-color:#006e9c;border-color:#005c83}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#004a69;border-color:#000203}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#004a69;border-color:#003145}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#003145;border-color:#000203}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#006e9c;border-color:#005c83}.btn-info .badge{color:#006e9c;background-color:#fff}.btn-warning{color:#fff;background-color:#ec7a08;border-color:#d36d07}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#bb6106;border-color:#582e03}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#bb6106;border-color:#984f05}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#984f05;border-color:#582e03}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ec7a08;border-color:#d36d07}.btn-warning .badge{color:#ec7a08;background-color:#fff}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#700000;border-color:#0e0303}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#700000;border-color:#450e0e}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#4c0000;border-color:#0e0303}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#781919}.btn-danger .badge{color:#a30000;background-color:#fff}.btn-link{color:#0099d3;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#00618a;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:6px 10px;font-size:14px;line-height:1.3333333;border-radius:1px}.btn-group-sm>.btn,.btn-sm{padding:2px 6px;font-size:11px;line-height:1.5;border-radius:1px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:1px}.dropdown-header,.dropdown-menu>li>a{white-space:nowrap;line-height:1.66666667}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;margin-left:2px;border-top:0 dashed;border-top:0 solid\9;border-right:0 solid transparent;border-left:0 solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;text-align:left;background-color:#fff;border:1px solid #b6b6b6;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-menu>li>a{display:block;clear:both;font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#4d5258;background-color:#d4edfa}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#999}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:11px;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{left:auto;top:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:0 dashed;border-bottom:0 solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn-lg .caret,.dropup .btn-lg .caret{border-width:0}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:1px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:33px;padding:6px 10px;font-size:14px;line-height:1.3333333;border-radius:1px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:33px;line-height:33px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:22px;padding:2px 6px;font-size:11px;line-height:1.5;border-radius:1px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:22px;line-height:22px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.nav>li,.nav>li>a{position:relative;display:block}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:2px 6px;font-size:12px;font-weight:400;line-height:1;color:#333;text-align:center;background-color:#eee;border:1px solid #bababa;border-radius:1px}.input-group-addon.input-sm{padding:2px 6px;font-size:11px;border-radius:1px}.input-group-addon.input-lg{padding:6px 10px;font-size:14px;border-radius:1px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#0099d3}.nav .nav-divider{background-color:#e5e5e5;height:1px;margin:4px 1px;overflow:hidden}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #e9e8e8}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{line-height:1.66666667;border:1px solid transparent;border-radius:1px 1px 0 0}.nav-tabs>li>a:hover{border-color:transparent transparent #e9e8e8}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#0099d3;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:1px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #e9e8e8}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #e9e8e8;border-radius:1px 1px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:1px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#00a8e1}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:1px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #e9e8e8}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #e9e8e8;border-radius:1px 1px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:20px;padding-left:20px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:1px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-20px;margin-left:-20px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 20px;font-size:14px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-20px}}.navbar-toggle{position:relative;float:right;margin-right:20px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:1px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -20px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-danger,.progress-striped .progress-bar-info,.progress-striped .progress-bar-success,.progress-striped .progress-bar-warning{background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 20px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:12px -20px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.btn .badge,.btn .label{position:relative;top:-1px}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:1px 1px 0 0}.navbar-btn{margin-top:12px;margin-bottom:12px}.navbar-btn.btn-sm,.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:20px;margin-right:20px}.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-20px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#bfbfbf}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#bfbfbf}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#bfbfbf}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#bfbfbf}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#bfbfbf}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:transparent;border-radius:1px}.breadcrumb>.active{color:#4d5258}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:1px}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;line-height:1.66666667;text-decoration:none;border:1px solid #bbb;margin-left:-1px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span,.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#00618a;background-color:#ededed;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#999;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:6px 10px;font-size:14px;line-height:1.3333333}.badge,.label{text-align:center;line-height:1;white-space:nowrap}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;border:1px solid #bbb;border-radius:0}.badge,.container .jumbotron,.container-fluid .jumbotron{border-radius:1px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#ededed}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#969696;background-color:#f5f5f5;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;color:#fff;vertical-align:baseline}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:focus,.label-default[href]:hover{background-color:grey}.label-primary{background-color:#00a8e1}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#0082ae}.label-success{background-color:#3f9c35}.label-success[href]:focus,.label-success[href]:hover{background-color:#307628}.label-info{background-color:#006e9c}.label-info[href]:focus,.label-info[href]:hover{background-color:#004a69}.label-warning{background-color:#ec7a08}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#bb6106}.label-danger{background-color:#c00}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#900}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:11px;font-weight:700;color:#fff;vertical-align:middle;background-color:#999}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#0099d3;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.alert-danger,.alert-info,.alert-success,.alert-warning,.thumbnail{background-color:#fff}.jumbotron p{margin-bottom:15px;font-size:18px;font-weight:200}.alert,.thumbnail{margin-bottom:20px}.jumbotron>hr{border-top-color:#d5d5d5}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:54px}}.thumbnail{padding:4px;line-height:1.66666667;border:1px solid #ddd;border-radius:1px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#0099d3}.thumbnail .caption{padding:9px;color:#333}.alert{padding:7px;border:1px solid transparent;border-radius:1px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:500}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:27px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{right:0;bottom:0;left:0}.alert-success{border-color:#3f9c35;color:#333}.alert-success hr{border-top-color:#37892f}.alert-success .alert-link{color:#1a1a1a}.alert-info{border-color:#ccc;color:#333}.alert-info hr{border-top-color:#bfbfbf}.alert-info .alert-link{color:#1a1a1a}.alert-warning{border-color:#ec7a08;color:#333}.alert-warning hr{border-top-color:#d36d07}.alert-warning .alert-link{color:#1a1a1a}.alert-danger{border-color:#c00;color:#333}.alert-danger hr{border-top-color:#b30000}.alert-danger .alert-link{color:#1a1a1a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;background-color:#ededed;border-radius:1px}.progress-bar{float:left;width:0;height:100%;font-size:11px;line-height:20px;color:#fff;text-align:center;background-color:#00a8e1;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3f9c35}.progress-striped .progress-bar-success{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.progress-bar-info{background-color:#006e9c}.progress-striped .progress-bar-info{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.progress-bar-warning{background-color:#ec7a08}.progress-striped .progress-bar-warning{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.progress-bar-danger{background-color:#c00}.progress-striped .progress-bar-danger{background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,rgba(0,0,0,.15) 26%,transparent 27%,transparent 49%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 51%,transparent 52%,transparent 74%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.15) 76%,transparent 77%)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #f2f2f2}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#d4edfa}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#999}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#00a8e1;border-color:#00a8e1}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#aeeaff}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#ec7a08;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#ec7a08}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#ec7a08;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#ec7a08;border-color:#ec7a08}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:1px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-heading,.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-footer,.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel-title{margin-top:0;font-size:14px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #cecdcd}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:0}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:0}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:0}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #d1d1d1}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:1px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #cecdcd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #cecdcd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#00a8e1}.panel-primary>.panel-heading{color:#fff;background-color:#00a8e1;border-color:#00a8e1}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#00a8e1}.panel-primary>.panel-heading .badge{color:#00a8e1;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#00a8e1}.panel-success{border-color:#3f9c35}.panel-success>.panel-heading{color:#fff;background-color:#3f9c35;border-color:#3f9c35}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3f9c35}.panel-success>.panel-heading .badge{color:#3f9c35;background-color:#fff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3f9c35}.panel-info{border-color:#006e9c}.panel-info>.panel-heading{color:#fff;background-color:#006e9c;border-color:#006e9c}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#006e9c}.panel-info>.panel-heading .badge{color:#006e9c;background-color:#fff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#006e9c}.panel-warning{border-color:#ec7a08}.panel-warning>.panel-heading{color:#fff;background-color:#ec7a08;border-color:#ec7a08}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ec7a08}.panel-warning>.panel-heading .badge{color:#ec7a08;background-color:#fff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ec7a08}.panel-danger{border-color:#c00}.panel-danger>.panel-heading{color:#fff;background-color:#c00;border-color:#c00}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#c00}.panel-danger>.panel-heading .badge{color:#c00;background-color:#fff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#c00}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:1px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well-lg,.well-sm{border-radius:1px}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px}.well-sm{padding:9px}.close{float:right;font-size:18px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.popover{line-height:1.66666667}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.btn-danger,.btn-default,.btn-primary,.carousel-control.left,.carousel-control.right,.pager li>a,.pager li>span{background-repeat:repeat-x}.modal{display:none;position:fixed;top:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:1px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{top:0;border-width:0 8px 8px;border-bottom-color:#434343}.modal-backdrop{position:fixed;top:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{text-align:right}.popover,.tooltip{text-decoration:none;position:absolute;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-8px;border-width:8px 8px 0;border-top-color:#434343}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{z-index:1070;display:block;text-align:start;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:8px 0}.tooltip.right{margin-left:3px;padding:0 8px}.tooltip.bottom{margin-top:3px;padding:8px 0}.tooltip.left{margin-left:-3px;padding:0 8px}.tooltip-inner{max-width:220px;color:#fff;background-color:#434343;border-radius:1px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-8px;border-width:8px 8px 0;border-top-color:#434343}.tooltip.top-left .tooltip-arrow{right:8px}.tooltip.top-right .tooltip-arrow{left:8px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-8px;border-width:8px 8px 8px 0;border-right-color:#434343}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-8px;border-width:8px 0 8px 8px;border-left-color:#434343}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-8px}.tooltip.bottom-left .tooltip-arrow{right:8px;margin-top:-8px}.tooltip.bottom-right .tooltip-arrow{left:8px;margin-top:-8px}.popover{top:0;left:0;z-index:1060;display:none;max-width:220px;text-align:start;font-size:12px;background-color:#fff;border:1px solid #bbb;border-radius:1px}.carousel-caption,.carousel-control{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6)}.caret:before,.carousel-caption,.carousel-control,.carousel-indicators,.fa-fw,.fa-li{text-align:center}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;background-color:#f5f5f5}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#bbb;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{content:" ";bottom:-10px}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#bbb}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#bbb;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#bbb}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px}.carousel-caption .btn,.text-hide{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}.fa,.fa-stack{display:inline-block}/*!
+ * Font Awesome 4.3.0 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(../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.eot?v=4.3.0);src:url(../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../../components/patternfly/components/font-awesome/fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.breadcrumb>li+li:before,.caret,.dropdown-submenu>a:after,.panel-group .panel-title>a:before{font-family:"FontAwesome"}.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}.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}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.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(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{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{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-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;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-close:before,.fa-remove: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-cog:before,.fa-gear: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-repeat:before,.fa-rotate-right: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-image:before,.fa-photo: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-exclamation-triangle:before,.fa-warning: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-cogs:before,.fa-gears: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-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-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder: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-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste: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-chain-broken:before,.fa-unlink: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-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won: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-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira: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-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board: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: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-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-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-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.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-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless: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-futbol-o:before,.fa-soccer-ball-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-ils:before,.fa-shekel:before,.fa-sheqel: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-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-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-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.alert{border-width:2px;padding-left:34px;position:relative}.alert .alert-link{color:#0099d3}.alert .alert-link:hover{color:#00618a}.alert>.pficon{font-size:20px;position:absolute;left:7px;top:7px}.alert .pficon-info{color:#72767b}.alert-dismissable .close{right:-16px;top:1px}.badge,.nav-pills>li>a>.badge{margin-left:6px}.breadcrumb{padding-left:0}.breadcrumb>.active strong{font-weight:600}.btn-group-xs .btn,.btn-group-xs>.btn,.btn-xs,.caret{font-weight:400}.breadcrumb>li{display:inline}.breadcrumb>li+li:before{color:#999;content:"\f101";font-size:11px;padding:0 9px 0 7px}.btn{-webkit-box-shadow:0 2px 3px rgba(0,0,0,.1);box-shadow:0 2px 3px rgba(0,0,0,.1)}.btn:active{-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#f8f8f8!important;background-image:none!important;border-color:#d1d1d1!important;color:#969696!important;opacity:1}.btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none}.btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0}.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0,#a30000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#781919;color:#fff}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#781919;color:#fff}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open .dropdown-toggle.btn-danger.focus,.open .dropdown-toggle.btn-danger:focus,.open .dropdown-toggle.btn-danger:hover{background-color:#8a0000;border-color:#5a1313}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#781919}.btn-default{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#b7b7b7;color:#4d5258}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open .dropdown-toggle.btn-default.focus,.open .dropdown-toggle.btn-default:focus,.open .dropdown-toggle.btn-default:hover{background-color:#e2e2e2;border-color:#a5a5a5}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#eee;border-color:#b7b7b7}.btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none}.btn-primary{background-color:#0085cf;background-image:-webkit-linear-gradient(top,#00a8e1 0,#0085cf 100%);background-image:-o-linear-gradient(top,#00a8e1 0,#0085cf 100%);background-image:linear-gradient(to bottom,#00a8e1 0,#0085cf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00a8e1', endColorstr='#ff0085cf', GradientType=0);border-color:#006e9c;color:#fff}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#0085cf;background-image:none;border-color:#006e9c;color:#fff}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary.focus,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#0075b6;border-color:#005578}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0085cf;border-color:#006e9c}.caret{height:9px;position:relative;vertical-align:baseline;width:12px}.label,label{font-weight:600}.caret:before{bottom:0;content:"\f107";left:0;line-height:12px;position:absolute;top:-1px;right:0}.dropdown-menu .divider{background-color:#e5e5e5;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{border-color:transparent;border-style:solid;border-width:1px 0;padding:1px 10px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{border-color:#b3d3e7;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>li>a:active{background-color:#0099d3;border-color:#0076b7;color:#fff!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0099d3!important;border-color:#0076b7!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.pager li>a,.pager li>span,.pagination>li>a,.pagination>li>span{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-header{padding-left:10px;padding-right:10px;text-transform:uppercase}.btn-group>.dropdown-menu,.input-group-btn>.dropdown-menu{margin-top:-1px}.dropup .dropdown-menu{margin-bottom:-1px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a{background-color:#d4edfa;border-color:#b3d3e7}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:auto;margin-left:10px;right:100%}.dropdown-submenu>a{padding-right:20px!important}.dropdown-submenu>a:after{content:"\f105";display:block;position:absolute;right:10px;top:2px}.dropdown-submenu>.dropdown-menu{left:100%;margin-top:0;top:-6px}.dropup .dropdown-submenu>.dropdown-menu{bottom:-5px;top:auto}.open .dropdown-submenu.active>.dropdown-menu{display:block}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{border-color:#d4d4d4!important;-webkit-box-shadow:none;box-shadow:none;color:#969696}.form-control:hover{border-color:#7bb2dd}.has-error .form-control:hover{border-color:#843534}.has-success .form-control:hover{border-color:#2b542c}.has-warning .form-control:hover{border-color:#bb6106}.input-group .input-group-btn .btn{-webkit-box-shadow:none;box-shadow:none}.label{border-radius:0;font-size:100%}.list-group-item-heading,.modal-title{font-weight:700}h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%}.list-group{border-top:1px solid #e9e8e8}.list-group .list-group-item:first-child{border-top:0}.list-group-item{border-left:0;border-right:0}.modal-header{min-height:16.67px;background-color:#f8f8f8;border-bottom:none;padding:10px 18px}.modal-header .close{margin-top:2px}.modal-title{font-size:13px}.modal-footer{border-top:none;margin-top:15px;padding:14px 15px 15px}.modal-footer>.btn{padding-left:10px;padding-right:10px}.modal-footer>.btn>.fa-angle-left{margin-right:5px}.modal-footer>.btn>.fa-angle-right{margin-left:5px}.pager li>a,.pager li>span{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);border-color:#b7b7b7;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li a:active,.pager li>a.active,.pager li>a:active,.pager li>span.active,.pager li>span:active{background-image:none}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>a:focus,.pager li>a:hover,.pager li>span.active,.pager li>span:active,.pager li>span:focus,.pager li>span:hover{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.open .dropdown-toggle.pager li>a.focus,.open .dropdown-toggle.pager li>a:focus,.open .dropdown-toggle.pager li>a:hover,.open .dropdown-toggle.pager li>span.focus,.open .dropdown-toggle.pager li>span:focus,.open .dropdown-toggle.pager li>span:hover,.pager li>a.active.focus,.pager li>a.active:focus,.pager li>a.active:hover,.pager li>a:active.focus,.pager li>a:active:focus,.pager li>a:active:hover,.pager li>span.active.focus,.pager li>span.active:focus,.pager li>span.active:hover,.pager li>span:active.focus,.pager li>span:active:focus,.pager li>span:active:hover{background-color:#e2e2e2;border-color:#a5a5a5}.pager li>a.disabled,.pager li>a.disabled.active,.pager li>a.disabled:active,.pager li>a.disabled:focus,.pager li>a.disabled:hover,.pager li>a[disabled],.pager li>a[disabled].active,.pager li>a[disabled]:active,.pager li>a[disabled]:focus,.pager li>a[disabled]:hover,.pager li>span.disabled,.pager li>span.disabled.active,.pager li>span.disabled:active,.pager li>span.disabled:focus,.pager li>span.disabled:hover,.pager li>span[disabled],.pager li>span[disabled].active,.pager li>span[disabled]:active,.pager li>span[disabled]:focus,.pager li>span[disabled]:hover,fieldset[disabled] .pager li>a,fieldset[disabled] .pager li>a.active,fieldset[disabled] .pager li>a:active,fieldset[disabled] .pager li>a:focus,fieldset[disabled] .pager li>a:hover,fieldset[disabled] .pager li>span,fieldset[disabled] .pager li>span.active,fieldset[disabled] .pager li>span:active,fieldset[disabled] .pager li>span:focus,fieldset[disabled] .pager li>span:hover{background-color:#eee;border-color:#b7b7b7}.pager li>a>.i,.pager li>span>.i{font-size:18px;vertical-align:top;margin:2px 0}.pager li>a:hover>a:focus{color:#4d5258}.pager li a:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125);outline:0}.pager .disabled>a,.pager .disabled>a:active,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{background:#f5f5f5;-webkit-box-shadow:none;box-shadow:none;color:#969696;cursor:default}.pager .next>a>.i,.pager .next>span>.i{margin-left:5px}.pager .previous>a>.i,.pager .previous>span>.i{margin-right:5px}.pager-sm li>a,.pager-sm li>span{font-weight:400;line-height:16px;padding:1px 10px}.pager-sm li>a>.i,.pager-sm li>span>.i{font-size:12px}.pagination>li>a,.pagination>li>span{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;border-color:#b7b7b7;color:#4d5258;cursor:default;font-weight:600;padding:2px 10px}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span.active,.pagination>li>span:active,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>span.active,.pagination>li>span:active{background-image:none}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover,.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover,.panel-group .panel-heading,.table>thead{background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.open .dropdown-toggle.pagination>li>a.focus,.open .dropdown-toggle.pagination>li>a:focus,.open .dropdown-toggle.pagination>li>a:hover,.open .dropdown-toggle.pagination>li>span.focus,.open .dropdown-toggle.pagination>li>span:focus,.open .dropdown-toggle.pagination>li>span:hover,.pagination>li>a.active.focus,.pagination>li>a.active:focus,.pagination>li>a.active:hover,.pagination>li>a:active.focus,.pagination>li>a:active:focus,.pagination>li>a:active:hover,.pagination>li>span.active.focus,.pagination>li>span.active:focus,.pagination>li>span.active:hover,.pagination>li>span:active.focus,.pagination>li>span:active:focus,.pagination>li>span:active:hover{background-color:#e2e2e2;border-color:#a5a5a5}.pagination>li>a.disabled,.pagination>li>a.disabled.active,.pagination>li>a.disabled:active,.pagination>li>a.disabled:focus,.pagination>li>a.disabled:hover,.pagination>li>a[disabled],.pagination>li>a[disabled].active,.pagination>li>a[disabled]:active,.pagination>li>a[disabled]:focus,.pagination>li>a[disabled]:hover,.pagination>li>span.disabled,.pagination>li>span.disabled.active,.pagination>li>span.disabled:active,.pagination>li>span.disabled:focus,.pagination>li>span.disabled:hover,.pagination>li>span[disabled],.pagination>li>span[disabled].active,.pagination>li>span[disabled]:active,.pagination>li>span[disabled]:focus,.pagination>li>span[disabled]:hover,fieldset[disabled] .pagination>li>a,fieldset[disabled] .pagination>li>a.active,fieldset[disabled] .pagination>li>a:active,fieldset[disabled] .pagination>li>a:focus,fieldset[disabled] .pagination>li>a:hover,fieldset[disabled] .pagination>li>span,fieldset[disabled] .pagination>li>span.active,fieldset[disabled] .pagination>li>span:active,fieldset[disabled] .pagination>li>span:focus,fieldset[disabled] .pagination>li>span:hover{background-color:#eee;border-color:#b7b7b7}.pagination>li>a>.i,.pagination>li>span>.i{font-size:15px;vertical-align:top;margin:2px 0}.pagination>li>a:active,.pagination>li>span:active{-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#eee;border-color:#bbb;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2);color:#4d5258;background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%)}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{-webkit-box-shadow:none;box-shadow:none;cursor:default;background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%)}.pagination-sm>li>a,.pagination-sm>li>span{padding:2px 6px;font-size:11px;line-height:1.5;font-weight:400}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a>.i,.pagination-sm>li>span>.i{font-size:12px;margin-top:2px}.panel-title{font-weight:700}.panel-group .panel{color:#4d5258}.panel-group .panel+.panel{margin-top:-1px}.panel-group .panel-default{border-color:#c4c3c3 #bebdbd #bebdbd}.panel-group .panel-heading{background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%)}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #cecdcd}.panel-group .panel-title{font-weight:500;line-height:1}.panel-group .panel-title>a{color:#4d5258;font-weight:600}.panel-group .panel-title>a:before{content:"\f107";font-size:13px;margin-right:5px;vertical-align:0}.panel-group .panel-title>a:focus{outline:0;text-decoration:none}.panel-group .panel-title>a:hover{text-decoration:none}.panel-group .panel-title>a.collapsed:before{content:"\f105";margin-left:4px;margin-right:7px}.popover{-webkit-box-shadow:0 2px 2px rgba(0,0,0,.08);box-shadow:0 2px 2px rgba(0,0,0,.08);padding:0}.popover-content{color:#4d5258;line-height:18px;padding:10px 14px}.popover-title{border-bottom:none;border-radius:0;color:#4d5258;font-size:13px;font-weight:700;min-height:34px}.popover-title .close{height:22px;position:absolute;right:8px;top:6px}.popover-title.closable{padding-right:30px}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{-webkit-box-shadow:inset 0 0 1px rgba(0,0,0,.25);box-shadow:inset 0 0 1px rgba(0,0,0,.25)}.progress.progress-label-left,.progress.progress-label-top-right{overflow:visible;position:relative}.progress.progress-label-left{margin-left:40px}.progress.progress-sm{height:14px;margin-bottom:14px}.progress.progress-xs{height:6px;margin-bottom:6px}td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}.progress-bar{box-shadow:none}.progress-label-left .progress-bar span,.progress-label-top-right .progress-bar span{color:#333;font-size:14px;position:absolute;text-align:right}.progress-label-left .progress-bar span{left:-40px;top:0;width:35px}.progress-label-top-right .progress-bar span{max-width:25%;overflow:hidden;right:0;text-overflow:ellipsis;top:-31px;white-space:nowrap}.progress-label-left.progress-sm .progress-bar span,.progress-label-top-right.progress-sm .progress-bar span{font-size:12px}.progress-sm .progress-bar{line-height:14px}.progress-xs .progress-bar{line-height:6px}.progress-description{margin-bottom:10px;max-width:74%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-description .count{font-size:20px;font-weight:300;line-height:1;margin-right:5px}.progress-description .fa,.progress-description .pficon{font-size:14px;margin-right:3px}.progress-description .tooltip{white-space:normal}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:2px 10px 3px}.nav-tabs+.nav-tabs-pf>li:first-child>a,.nav-tabs-pf.nav-justified>li:first-child>a{padding-left:15px}.table>tbody>tr>td>a:hover,.table>tbody>tr>th>a:hover,.table>tfoot>tr>td>a:hover,.table>tfoot>tr>th>a:hover,.table>thead>tr>td>a:hover,.table>thead>tr>th>a:hover{text-decoration:none}.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>th{font-family:'Open Sans';font-style:normal;font-weight:600}.table>thead{background-clip:padding-box;background-color:#f9f9f9;background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%)}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #d1d1d1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:1px}.table-striped>tbody>tr:nth-of-type(even){background-color:#f5f5f5}.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#d5ecf9;border-bottom-color:#a7cadf}.nav-tabs{font-size:14px}.nav-tabs+.nav-tabs-pf,.tooltip{font-size:12px}.nav-tabs>li>a{color:#4d5258;margin-right:-1px;padding-bottom:5px;padding-top:5px}.nav-tabs>li>a:active,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background:0 0;border-color:#e9e8e8;color:#222}.nav-tabs>li>.dropdown-menu{border-top:0;border-color:#e9e8e8}.nav-tabs>li>.dropdown-menu.pull-right{right:-1px}.nav-tabs+.nav-tabs-pf>li:first-child>a:before{left:15px!important}.nav-tabs .open>a,.nav-tabs .open>a:focus,.nav-tabs .open>a:hover{background-color:transparent;border-color:#e9e8e8}@media (min-width:768px){.nav-tabs-pf.nav-justified{border-bottom:1px solid #e9e8e8}}.nav-tabs-pf.nav-justified>li>a{border-bottom:0}.nav-tabs-pf.nav-justified>li>a:before{left:0!important;right:0!important}.nav-tabs-pf>li{margin-bottom:0}.nav-tabs-pf>li.active>a:before{background:#0099d3;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li.active>a,.nav-tabs-pf>li.active>a:active,.nav-tabs-pf>li.active>a:focus,.nav-tabs-pf>li.active>a:hover{background-color:transparent;border:0!important;color:#0099d3}.nav-tabs-pf>li.active>a:active:before,.nav-tabs-pf>li.active>a:before,.nav-tabs-pf>li.active>a:focus:before,.nav-tabs-pf>li.active>a:hover:before{background:#0099d3}.nav-tabs-pf>li:first-child>a{padding-left:0}.nav-tabs-pf>li:first-child>a:before{left:0!important}.nav-tabs-pf>li>a{border:0;line-height:1;margin-right:0;padding-bottom:10px;padding-top:10px}.nav-tabs-pf>li>a:active:before,.nav-tabs-pf>li>a:focus:before,.nav-tabs-pf>li>a:hover:before{background:#aaa;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li>.dropdown-menu{left:15px;margin-top:1px}.nav-tabs-pf>li>.dropdown-menu.pull-right{left:auto;right:15px}.nav-tabs-pf .open>a,.nav-tabs-pf .open>a:focus,.nav-tabs-pf .open>a:hover{background-color:transparent}.tooltip{line-height:1.4}.tooltip-inner{padding:7px 12px;text-align:left}.h1,.h2,h1,h2{font-weight:300}.page-header .actions{margin-top:8px}.page-header .actions a>.pficon{margin-right:4px}@media (min-width:767px){.page-header-bleed-left{margin-left:-20px}.page-header-bleed-right{margin-right:-20px}.page-header-bleed-right .actions{margin-right:20px}}
+/*# sourceMappingURL=rcue.min.css.map */
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.min.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.min.css.map
new file mode 100644
index 0000000..2fefcb5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["components/patternfly/components/bootstrap/less/scaffolding.less","components/patternfly/components/bootstrap/less/navbar.less","components/patternfly/components/bootstrap/less/code.less","components/patternfly/components/bootstrap/less/button-groups.less","components/patternfly/components/bootstrap/less/mixins/grid-framework.less","components/patternfly/components/bootstrap/less/dropdowns.less","components/patternfly/components/font-awesome/less/core.less","components/patternfly/components/bootstrap/less/glyphicons.less","components/patternfly/less/fonts.less","components/patternfly/components/bootstrap/less/normalize.less","components/patternfly/components/bootstrap/less/print.less","components/patternfly/components/bootstrap/less/buttons.less","components/patternfly/components/bootstrap/less/mixins/buttons.less","components/patternfly/components/bootstrap/less/forms.less","components/patternfly/components/bootstrap/less/mixins/vendor-prefixes.less","components/patternfly/less/variables.less","components/patternfly/components/bootstrap/less/mixins/tab-focus.less","components/patternfly/components/bootstrap/less/carousel.less","components/patternfly/components/bootstrap/less/thumbnails.less","components/patternfly/components/bootstrap/less/mixins/image.less","components/patternfly/components/bootstrap/less/type.less","components/patternfly/components/bootstrap/less/tables.less","components/patternfly/components/bootstrap/less/mixins/text-emphasis.less","components/patternfly/components/bootstrap/less/mixins/background-variant.less","components/patternfly/components/bootstrap/less/mixins/text-overflow.less","components/patternfly/components/bootstrap/less/input-groups.less","components/patternfly/components/bootstrap/less/grid.less","components/patternfly/components/bootstrap/less/mixins/grid.less","components/patternfly/components/bootstrap/less/mixins/table-row.less","components/patternfly/components/bootstrap/less/mixins/forms.less","components/patternfly/less/mixins.less","components/patternfly/components/bootstrap/less/component-animations.less","components/patternfly/components/bootstrap/less/mixins/opacity.less","components/patternfly/components/bootstrap/less/mixins/reset-filter.less","components/patternfly/components/bootstrap/less/navs.less","components/patternfly/components/bootstrap/less/mixins/border-radius.less","components/patternfly/components/bootstrap/less/responsive-embed.less","components/patternfly/components/bootstrap/less/modals.less","components/patternfly/components/bootstrap/less/progress-bars.less","components/patternfly/components/bootstrap/less/mixins/nav-vertical-align.less","components/patternfly/components/bootstrap/less/mixins/progress-bar.less","components/patternfly/components/bootstrap/less/mixins/gradients.less","components/patternfly/components/bootstrap/less/badges.less","components/patternfly/components/bootstrap/less/labels.less","components/patternfly/components/bootstrap/less/alerts.less","components/patternfly/components/bootstrap/less/utilities.less","components/patternfly/components/font-awesome/less/bordered-pulled.less","components/patternfly/components/bootstrap/less/breadcrumbs.less","components/patternfly/components/bootstrap/less/pagination.less","components/patternfly/components/bootstrap/less/pager.less","components/patternfly/components/bootstrap/less/mixins/pagination.less","components/patternfly/components/bootstrap/less/jumbotron.less","components/patternfly/components/bootstrap/less/mixins/labels.less","components/patternfly/components/bootstrap/less/media.less","components/patternfly/components/bootstrap/less/mixins/alerts.less","components/patternfly/components/bootstrap/less/list-group.less","components/patternfly/components/bootstrap/less/mixins/list-group.less","components/patternfly/components/bootstrap/less/panels.less","components/patternfly/components/bootstrap/less/mixins/panels.less","components/patternfly/components/bootstrap/less/wells.less","components/patternfly/components/bootstrap/less/close.less","components/patternfly/components/bootstrap/less/popovers.less","components/patternfly/less/buttons.less","components/patternfly/less/pager.less","components/patternfly/components/bootstrap/less/tooltip.less","components/patternfly/less/tables.less","components/patternfly/components/bootstrap/less/mixins/reset-text.less","components/patternfly/less/dropdowns.less","components/patternfly/components/font-awesome/less/fixed-width.less","components/patternfly/components/font-awesome/less/list.less","components/patternfly/components/bootstrap/less/mixins/hide-text.less","components/patternfly/components/bootstrap/less/mixins/clearfix.less","components/patternfly/components/bootstrap/less/mixins/center-block.less","components/patternfly/components/bootstrap/less/responsive-utilities.less","components/patternfly/components/bootstrap/less/mixins/responsive-visibility.less","components/patternfly/components/font-awesome/less/stacked.less","components/patternfly/components/font-awesome/less/path.less","components/patternfly/less/breadcrumbs.less","components/patternfly/less/panels.less","components/patternfly/components/font-awesome/less/larger.less","components/patternfly/components/font-awesome/less/animated.less","components/patternfly/components/font-awesome/less/rotated-flipped.less","components/patternfly/components/font-awesome/less/mixins.less","components/patternfly/components/font-awesome/less/icons.less","components/patternfly/less/alerts.less","components/patternfly/less/badges.less","components/patternfly/less/labels.less","components/patternfly/less/forms.less","components/patternfly/less/pagination.less","components/patternfly/less/list-group.less","components/patternfly/less/modals.less","components/patternfly/less/popovers.less","components/patternfly/less/progress-bars.less","components/patternfly/less/tabs.less","components/patternfly/less/tooltip.less","components/patternfly/less/type.less"],"names":[],"mappings":"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B,MAAA,aADiB,eACjB,MAAA,YAIW,eACX,MAAA,KAhBiB,gBACjB,KAAA,KADiB,gBACjB,KAAA,aADiB,gBACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,YAIW,eACX,KAAA,KAcmB,kBACnB,YAAA,KADmB,kBACnB,YAAA,aADmB,kBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,YADmB,iBACnB,YAAA,EsBT+B,yBtBzB/B,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UACE,MAAA,KAOU,WACZ,MAAA,KADY,WACZ,MAAA,aADY,WACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,YAciB,gBACjB,MAAA,KADiB,gBACjB,MAAA,aADiB,gBACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,YAIW,eACX,MAAA,KAhBiB,gBACjB,KAAA,KADiB,gBACjB,KAAA,aADiB,gBACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,YAIW,eACX,KAAA,KAcmB,kBACnB,YAAA,KADmB,kBACnB,YAAA,aADmB,kBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,YADmB,iBACnB,YAAA,GsBA+B,yBtBlC/B,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UACE,MAAA,KAOU,WACZ,MAAA,KADY,WACZ,MAAA,aADY,WACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,aADY,UACZ,MAAA,IADY,UACZ,MAAA,aADY,UACZ,MAAA,YAciB,gBACjB,MAAA,KADiB,gBACjB,MAAA,aADiB,gBACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,aADiB,eACjB,MAAA,IADiB,eACjB,MAAA,aADiB,eACjB,MAAA,YAIW,eACX,MAAA,KAhBiB,gBACjB,KAAA,KADiB,gBACjB,KAAA,aADiB,gBACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,aADiB,eACjB,KAAA,IADiB,eACjB,KAAA,aADiB,eACjB,KAAA,YAIW,eACX,KAAA,KAcmB,kBACnB,YAAA,KADmB,kBACnB,YAAA,aADmB,kBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,IADmB,iBACnB,YAAA,aADmB,iBACnB,YAAA,YADmB,iBACnB,YAAA,GsBS+B,0BtB3C/B,UAAA,WAA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"}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.css
new file mode 100644
index 0000000..bd0a521
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.css
@@ -0,0 +1,3450 @@
+/* PatternFly additions to Bootstrap */
+.form-search .combobox-container,
+.form-inline .combobox-container {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: top;
+}
+.form-search .combobox-container .input-group-addon,
+.form-inline .combobox-container .input-group-addon {
+ width: auto;
+}
+.combobox-selected .caret {
+ display: none;
+}
+/* :not doesn't work in IE8 */
+.combobox-container:not(.combobox-selected) .glyphicon-remove {
+ display: none;
+}
+.typeahead-long {
+ max-height: 300px;
+ overflow-y: auto;
+}
+.control-group.error .combobox-container .add-on {
+ color: #B94A48;
+ border-color: #B94A48;
+}
+.control-group.error .combobox-container .caret {
+ border-top-color: #B94A48;
+}
+.control-group.warning .combobox-container .add-on {
+ color: #C09853;
+ border-color: #C09853;
+}
+.control-group.warning .combobox-container .caret {
+ border-top-color: #C09853;
+}
+.control-group.success .combobox-container .add-on {
+ color: #468847;
+ border-color: #468847;
+}
+.control-group.success .combobox-container .caret {
+ border-top-color: #468847;
+}
+.datepicker {
+ padding: 4px;
+ border-radius: 4px;
+ direction: ltr;
+}
+.datepicker-inline {
+ width: 220px;
+}
+.datepicker.datepicker-rtl {
+ direction: rtl;
+}
+.datepicker.datepicker-rtl table tr td span {
+ float: right;
+}
+.datepicker-dropdown {
+ top: 0;
+ left: 0;
+}
+.datepicker-dropdown:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-top: 0;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+}
+.datepicker-dropdown:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-top: 0;
+ position: absolute;
+}
+.datepicker-dropdown.datepicker-orient-left:before {
+ left: 6px;
+}
+.datepicker-dropdown.datepicker-orient-left:after {
+ left: 7px;
+}
+.datepicker-dropdown.datepicker-orient-right:before {
+ right: 6px;
+}
+.datepicker-dropdown.datepicker-orient-right:after {
+ right: 7px;
+}
+.datepicker-dropdown.datepicker-orient-top:before {
+ top: -7px;
+}
+.datepicker-dropdown.datepicker-orient-top:after {
+ top: -6px;
+}
+.datepicker-dropdown.datepicker-orient-bottom:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #999;
+}
+.datepicker-dropdown.datepicker-orient-bottom:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #fff;
+}
+.datepicker > div {
+ display: none;
+}
+.datepicker.days .datepicker-days,
+.datepicker.months .datepicker-months,
+.datepicker.years .datepicker-years {
+ display: block;
+}
+.datepicker table {
+ margin: 0;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.datepicker table tr td,
+.datepicker table tr th {
+ text-align: center;
+ width: 30px;
+ height: 30px;
+ border-radius: 4px;
+ border: none;
+}
+.table-striped .datepicker table tr td,
+.table-striped .datepicker table tr th {
+ background-color: transparent;
+}
+.datepicker table tr td.day:hover,
+.datepicker table tr td.day.focused {
+ background: #eeeeee;
+ cursor: pointer;
+}
+.datepicker table tr td.old,
+.datepicker table tr td.new {
+ color: #999999;
+}
+.datepicker table tr td.disabled,
+.datepicker table tr td.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td.today,
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today.disabled:hover {
+ color: #000000;
+ background-color: #ffdb99;
+ border-color: #ffb733;
+}
+.datepicker table tr td.today:focus,
+.datepicker table tr td.today:hover:focus,
+.datepicker table tr td.today.disabled:focus,
+.datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today.focus,
+.datepicker table tr td.today:hover.focus,
+.datepicker table tr td.today.disabled.focus,
+.datepicker table tr td.today.disabled:hover.focus {
+ color: #000000;
+ background-color: #ffc966;
+ border-color: #b37400;
+}
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today:hover:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover:hover {
+ color: #000000;
+ background-color: #ffc966;
+ border-color: #f59e00;
+}
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.today,
+.open > .dropdown-toggle.datepicker table tr td.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+ color: #000000;
+ background-color: #ffc966;
+ border-color: #f59e00;
+}
+.datepicker table tr td.today:active:hover,
+.datepicker table tr td.today:hover:active:hover,
+.datepicker table tr td.today.disabled:active:hover,
+.datepicker table tr td.today.disabled:hover:active:hover,
+.datepicker table tr td.today.active:hover,
+.datepicker table tr td.today:hover.active:hover,
+.datepicker table tr td.today.disabled.active:hover,
+.datepicker table tr td.today.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.today:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today:active:focus,
+.datepicker table tr td.today:hover:active:focus,
+.datepicker table tr td.today.disabled:active:focus,
+.datepicker table tr td.today.disabled:hover:active:focus,
+.datepicker table tr td.today.active:focus,
+.datepicker table tr td.today:hover.active:focus,
+.datepicker table tr td.today.disabled.active:focus,
+.datepicker table tr td.today.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.today:focus,
+.open > .dropdown-toggle.datepicker table tr td.today:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today:active.focus,
+.datepicker table tr td.today:hover:active.focus,
+.datepicker table tr td.today.disabled:active.focus,
+.datepicker table tr td.today.disabled:hover:active.focus,
+.datepicker table tr td.today.active.focus,
+.datepicker table tr td.today:hover.active.focus,
+.datepicker table tr td.today.disabled.active.focus,
+.datepicker table tr td.today.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.today.focus,
+.open > .dropdown-toggle.datepicker table tr td.today:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover.focus {
+ color: #000000;
+ background-color: #ffbc42;
+ border-color: #b37400;
+}
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.today,
+.open > .dropdown-toggle.datepicker table tr td.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled,
+.open > .dropdown-toggle.datepicker table tr td.today.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today:hover.disabled,
+.datepicker table tr td.today.disabled.disabled,
+.datepicker table tr td.today.disabled:hover.disabled,
+.datepicker table tr td.today[disabled],
+.datepicker table tr td.today:hover[disabled],
+.datepicker table tr td.today.disabled[disabled],
+.datepicker table tr td.today.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.today,
+fieldset[disabled] .datepicker table tr td.today:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today:hover.disabled:hover,
+.datepicker table tr td.today.disabled.disabled:hover,
+.datepicker table tr td.today.disabled:hover.disabled:hover,
+.datepicker table tr td.today[disabled]:hover,
+.datepicker table tr td.today:hover[disabled]:hover,
+.datepicker table tr td.today.disabled[disabled]:hover,
+.datepicker table tr td.today.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.today:hover,
+fieldset[disabled] .datepicker table tr td.today:hover:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today.disabled:focus,
+.datepicker table tr td.today:hover.disabled:focus,
+.datepicker table tr td.today.disabled.disabled:focus,
+.datepicker table tr td.today.disabled:hover.disabled:focus,
+.datepicker table tr td.today[disabled]:focus,
+.datepicker table tr td.today:hover[disabled]:focus,
+.datepicker table tr td.today.disabled[disabled]:focus,
+.datepicker table tr td.today.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.today:focus,
+fieldset[disabled] .datepicker table tr td.today:hover:focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
+.datepicker table tr td.today.disabled.focus,
+.datepicker table tr td.today:hover.disabled.focus,
+.datepicker table tr td.today.disabled.disabled.focus,
+.datepicker table tr td.today.disabled:hover.disabled.focus,
+.datepicker table tr td.today[disabled].focus,
+.datepicker table tr td.today:hover[disabled].focus,
+.datepicker table tr td.today.disabled[disabled].focus,
+.datepicker table tr td.today.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td.today.focus,
+fieldset[disabled] .datepicker table tr td.today:hover.focus,
+fieldset[disabled] .datepicker table tr td.today.disabled.focus,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover.focus,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today:hover.disabled:active,
+.datepicker table tr td.today.disabled.disabled:active,
+.datepicker table tr td.today.disabled:hover.disabled:active,
+.datepicker table tr td.today[disabled]:active,
+.datepicker table tr td.today:hover[disabled]:active,
+.datepicker table tr td.today.disabled[disabled]:active,
+.datepicker table tr td.today.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.today:active,
+fieldset[disabled] .datepicker table tr td.today:hover:active,
+fieldset[disabled] .datepicker table tr td.today.disabled:active,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today:hover.disabled.active,
+.datepicker table tr td.today.disabled.disabled.active,
+.datepicker table tr td.today.disabled:hover.disabled.active,
+.datepicker table tr td.today[disabled].active,
+.datepicker table tr td.today:hover[disabled].active,
+.datepicker table tr td.today.disabled[disabled].active,
+.datepicker table tr td.today.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.today.active,
+fieldset[disabled] .datepicker table tr td.today:hover.active,
+fieldset[disabled] .datepicker table tr td.today.disabled.active,
+fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
+ background-color: #ffdb99;
+ border-color: #ffb733;
+}
+.datepicker table tr td.today .badge,
+.datepicker table tr td.today:hover .badge,
+.datepicker table tr td.today.disabled .badge,
+.datepicker table tr td.today.disabled:hover .badge {
+ color: #ffdb99;
+ background-color: #000000;
+}
+.datepicker table tr td.today:hover:hover {
+ color: #000;
+}
+.datepicker table tr td.today.active:hover {
+ color: #fff;
+}
+.datepicker table tr td.range,
+.datepicker table tr td.range:hover,
+.datepicker table tr td.range.disabled,
+.datepicker table tr td.range.disabled:hover {
+ background: #eeeeee;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today,
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today.disabled:hover {
+ color: #000000;
+ background-color: #f7ca77;
+ border-color: #f1a417;
+ border-radius: 0;
+}
+.datepicker table tr td.range.today:focus,
+.datepicker table tr td.range.today:hover:focus,
+.datepicker table tr td.range.today.disabled:focus,
+.datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today.focus,
+.datepicker table tr td.range.today:hover.focus,
+.datepicker table tr td.range.today.disabled.focus,
+.datepicker table tr td.range.today.disabled:hover.focus {
+ color: #000000;
+ background-color: #f4b747;
+ border-color: #815608;
+}
+.datepicker table tr td.range.today:hover,
+.datepicker table tr td.range.today:hover:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover:hover {
+ color: #000000;
+ background-color: #f4b747;
+ border-color: #bf800c;
+}
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.range.today,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+ color: #000000;
+ background-color: #f4b747;
+ border-color: #bf800c;
+}
+.datepicker table tr td.range.today:active:hover,
+.datepicker table tr td.range.today:hover:active:hover,
+.datepicker table tr td.range.today.disabled:active:hover,
+.datepicker table tr td.range.today.disabled:hover:active:hover,
+.datepicker table tr td.range.today.active:hover,
+.datepicker table tr td.range.today:hover.active:hover,
+.datepicker table tr td.range.today.disabled.active:hover,
+.datepicker table tr td.range.today.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today:active:focus,
+.datepicker table tr td.range.today:hover:active:focus,
+.datepicker table tr td.range.today.disabled:active:focus,
+.datepicker table tr td.range.today.disabled:hover:active:focus,
+.datepicker table tr td.range.today.active:focus,
+.datepicker table tr td.range.today:hover.active:focus,
+.datepicker table tr td.range.today.disabled.active:focus,
+.datepicker table tr td.range.today.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today:focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today:active.focus,
+.datepicker table tr td.range.today:hover:active.focus,
+.datepicker table tr td.range.today.disabled:active.focus,
+.datepicker table tr td.range.today.disabled:hover:active.focus,
+.datepicker table tr td.range.today.active.focus,
+.datepicker table tr td.range.today:hover.active.focus,
+.datepicker table tr td.range.today.disabled.active.focus,
+.datepicker table tr td.range.today.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover.focus {
+ color: #000000;
+ background-color: #f2aa25;
+ border-color: #815608;
+}
+.datepicker table tr td.range.today:active,
+.datepicker table tr td.range.today:hover:active,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.active,
+.datepicker table tr td.range.today:hover.active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.range.today,
+.open > .dropdown-toggle.datepicker table tr td.range.today:hover,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled,
+.open > .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.range.today.disabled,
+.datepicker table tr td.range.today:hover.disabled,
+.datepicker table tr td.range.today.disabled.disabled,
+.datepicker table tr td.range.today.disabled:hover.disabled,
+.datepicker table tr td.range.today[disabled],
+.datepicker table tr td.range.today:hover[disabled],
+.datepicker table tr td.range.today.disabled[disabled],
+.datepicker table tr td.range.today.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.range.today,
+fieldset[disabled] .datepicker table tr td.range.today:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover,
+.datepicker table tr td.range.today:hover.disabled:hover,
+.datepicker table tr td.range.today.disabled.disabled:hover,
+.datepicker table tr td.range.today.disabled:hover.disabled:hover,
+.datepicker table tr td.range.today[disabled]:hover,
+.datepicker table tr td.range.today:hover[disabled]:hover,
+.datepicker table tr td.range.today.disabled[disabled]:hover,
+.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.range.today:hover,
+fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
+.datepicker table tr td.range.today.disabled:focus,
+.datepicker table tr td.range.today:hover.disabled:focus,
+.datepicker table tr td.range.today.disabled.disabled:focus,
+.datepicker table tr td.range.today.disabled:hover.disabled:focus,
+.datepicker table tr td.range.today[disabled]:focus,
+.datepicker table tr td.range.today:hover[disabled]:focus,
+.datepicker table tr td.range.today.disabled[disabled]:focus,
+.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.range.today:focus,
+fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
+.datepicker table tr td.range.today.disabled.focus,
+.datepicker table tr td.range.today:hover.disabled.focus,
+.datepicker table tr td.range.today.disabled.disabled.focus,
+.datepicker table tr td.range.today.disabled:hover.disabled.focus,
+.datepicker table tr td.range.today[disabled].focus,
+.datepicker table tr td.range.today:hover[disabled].focus,
+.datepicker table tr td.range.today.disabled[disabled].focus,
+.datepicker table tr td.range.today.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td.range.today.focus,
+fieldset[disabled] .datepicker table tr td.range.today:hover.focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled.focus,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.focus,
+.datepicker table tr td.range.today.disabled:active,
+.datepicker table tr td.range.today:hover.disabled:active,
+.datepicker table tr td.range.today.disabled.disabled:active,
+.datepicker table tr td.range.today.disabled:hover.disabled:active,
+.datepicker table tr td.range.today[disabled]:active,
+.datepicker table tr td.range.today:hover[disabled]:active,
+.datepicker table tr td.range.today.disabled[disabled]:active,
+.datepicker table tr td.range.today.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.range.today:active,
+fieldset[disabled] .datepicker table tr td.range.today:hover:active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
+.datepicker table tr td.range.today.disabled.active,
+.datepicker table tr td.range.today:hover.disabled.active,
+.datepicker table tr td.range.today.disabled.disabled.active,
+.datepicker table tr td.range.today.disabled:hover.disabled.active,
+.datepicker table tr td.range.today[disabled].active,
+.datepicker table tr td.range.today:hover[disabled].active,
+.datepicker table tr td.range.today.disabled[disabled].active,
+.datepicker table tr td.range.today.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.range.today.active,
+fieldset[disabled] .datepicker table tr td.range.today:hover.active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
+fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
+ background-color: #f7ca77;
+ border-color: #f1a417;
+}
+.datepicker table tr td.range.today .badge,
+.datepicker table tr td.range.today:hover .badge,
+.datepicker table tr td.range.today.disabled .badge,
+.datepicker table tr td.range.today.disabled:hover .badge {
+ color: #f7ca77;
+ background-color: #000000;
+}
+.datepicker table tr td.selected,
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected.disabled:hover {
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #555555;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.selected:focus,
+.datepicker table tr td.selected:hover:focus,
+.datepicker table tr td.selected.disabled:focus,
+.datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected.focus,
+.datepicker table tr td.selected:hover.focus,
+.datepicker table tr td.selected.disabled.focus,
+.datepicker table tr td.selected.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #808080;
+ border-color: #161616;
+}
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected:hover:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover:hover {
+ color: #ffffff;
+ background-color: #808080;
+ border-color: #373737;
+}
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.selected,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+ color: #ffffff;
+ background-color: #808080;
+ border-color: #373737;
+}
+.datepicker table tr td.selected:active:hover,
+.datepicker table tr td.selected:hover:active:hover,
+.datepicker table tr td.selected.disabled:active:hover,
+.datepicker table tr td.selected.disabled:hover:active:hover,
+.datepicker table tr td.selected.active:hover,
+.datepicker table tr td.selected:hover.active:hover,
+.datepicker table tr td.selected.disabled.active:hover,
+.datepicker table tr td.selected.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected:active:focus,
+.datepicker table tr td.selected:hover:active:focus,
+.datepicker table tr td.selected.disabled:active:focus,
+.datepicker table tr td.selected.disabled:hover:active:focus,
+.datepicker table tr td.selected.active:focus,
+.datepicker table tr td.selected:hover.active:focus,
+.datepicker table tr td.selected.disabled.active:focus,
+.datepicker table tr td.selected.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.selected:focus,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected:active.focus,
+.datepicker table tr td.selected:hover:active.focus,
+.datepicker table tr td.selected.disabled:active.focus,
+.datepicker table tr td.selected.disabled:hover:active.focus,
+.datepicker table tr td.selected.active.focus,
+.datepicker table tr td.selected:hover.active.focus,
+.datepicker table tr td.selected.disabled.active.focus,
+.datepicker table tr td.selected.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.focus,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #6e6e6e;
+ border-color: #161616;
+}
+.datepicker table tr td.selected:active,
+.datepicker table tr td.selected:hover:active,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.active,
+.datepicker table tr td.selected:hover.active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.selected,
+.open > .dropdown-toggle.datepicker table tr td.selected:hover,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled,
+.open > .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected:hover.disabled,
+.datepicker table tr td.selected.disabled.disabled,
+.datepicker table tr td.selected.disabled:hover.disabled,
+.datepicker table tr td.selected[disabled],
+.datepicker table tr td.selected:hover[disabled],
+.datepicker table tr td.selected.disabled[disabled],
+.datepicker table tr td.selected.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.selected,
+fieldset[disabled] .datepicker table tr td.selected:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected.disabled:hover,
+.datepicker table tr td.selected:hover.disabled:hover,
+.datepicker table tr td.selected.disabled.disabled:hover,
+.datepicker table tr td.selected.disabled:hover.disabled:hover,
+.datepicker table tr td.selected[disabled]:hover,
+.datepicker table tr td.selected:hover[disabled]:hover,
+.datepicker table tr td.selected.disabled[disabled]:hover,
+.datepicker table tr td.selected.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.selected:hover,
+fieldset[disabled] .datepicker table tr td.selected:hover:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
+.datepicker table tr td.selected.disabled:focus,
+.datepicker table tr td.selected:hover.disabled:focus,
+.datepicker table tr td.selected.disabled.disabled:focus,
+.datepicker table tr td.selected.disabled:hover.disabled:focus,
+.datepicker table tr td.selected[disabled]:focus,
+.datepicker table tr td.selected:hover[disabled]:focus,
+.datepicker table tr td.selected.disabled[disabled]:focus,
+.datepicker table tr td.selected.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.selected:focus,
+fieldset[disabled] .datepicker table tr td.selected:hover:focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
+.datepicker table tr td.selected.disabled.focus,
+.datepicker table tr td.selected:hover.disabled.focus,
+.datepicker table tr td.selected.disabled.disabled.focus,
+.datepicker table tr td.selected.disabled:hover.disabled.focus,
+.datepicker table tr td.selected[disabled].focus,
+.datepicker table tr td.selected:hover[disabled].focus,
+.datepicker table tr td.selected.disabled[disabled].focus,
+.datepicker table tr td.selected.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td.selected.focus,
+fieldset[disabled] .datepicker table tr td.selected:hover.focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled.focus,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover.focus,
+.datepicker table tr td.selected.disabled:active,
+.datepicker table tr td.selected:hover.disabled:active,
+.datepicker table tr td.selected.disabled.disabled:active,
+.datepicker table tr td.selected.disabled:hover.disabled:active,
+.datepicker table tr td.selected[disabled]:active,
+.datepicker table tr td.selected:hover[disabled]:active,
+.datepicker table tr td.selected.disabled[disabled]:active,
+.datepicker table tr td.selected.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.selected:active,
+fieldset[disabled] .datepicker table tr td.selected:hover:active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
+.datepicker table tr td.selected.disabled.active,
+.datepicker table tr td.selected:hover.disabled.active,
+.datepicker table tr td.selected.disabled.disabled.active,
+.datepicker table tr td.selected.disabled:hover.disabled.active,
+.datepicker table tr td.selected[disabled].active,
+.datepicker table tr td.selected:hover[disabled].active,
+.datepicker table tr td.selected.disabled[disabled].active,
+.datepicker table tr td.selected.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.selected.active,
+fieldset[disabled] .datepicker table tr td.selected:hover.active,
+fieldset[disabled] .datepicker table tr td.selected.disabled.active,
+fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
+ background-color: #999999;
+ border-color: #555555;
+}
+.datepicker table tr td.selected .badge,
+.datepicker table tr td.selected:hover .badge,
+.datepicker table tr td.selected.disabled .badge,
+.datepicker table tr td.selected.disabled:hover .badge {
+ color: #999999;
+ background-color: #ffffff;
+}
+.datepicker table tr td.active,
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active.disabled:hover {
+ color: #ffffff;
+ background-color: #0085cf;
+ border-color: #006e9c;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td.active:focus,
+.datepicker table tr td.active:hover:focus,
+.datepicker table tr td.active.disabled:focus,
+.datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active.focus,
+.datepicker table tr td.active:hover.focus,
+.datepicker table tr td.active.disabled.focus,
+.datepicker table tr td.active.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00141d;
+}
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active:hover:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.active,
+.open > .dropdown-toggle.datepicker table tr td.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.datepicker table tr td.active:active:hover,
+.datepicker table tr td.active:hover:active:hover,
+.datepicker table tr td.active.disabled:active:hover,
+.datepicker table tr td.active.disabled:hover:active:hover,
+.datepicker table tr td.active.active:hover,
+.datepicker table tr td.active:hover.active:hover,
+.datepicker table tr td.active.disabled.active:hover,
+.datepicker table tr td.active.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.active:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active:active:focus,
+.datepicker table tr td.active:hover:active:focus,
+.datepicker table tr td.active.disabled:active:focus,
+.datepicker table tr td.active.disabled:hover:active:focus,
+.datepicker table tr td.active.active:focus,
+.datepicker table tr td.active:hover.active:focus,
+.datepicker table tr td.active.disabled.active:focus,
+.datepicker table tr td.active.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.active:focus,
+.open > .dropdown-toggle.datepicker table tr td.active:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active:active.focus,
+.datepicker table tr td.active:hover:active.focus,
+.datepicker table tr td.active.disabled:active.focus,
+.datepicker table tr td.active.disabled:hover:active.focus,
+.datepicker table tr td.active.active.focus,
+.datepicker table tr td.active:hover.active.focus,
+.datepicker table tr td.active.disabled.active.focus,
+.datepicker table tr td.active.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.active.focus,
+.open > .dropdown-toggle.datepicker table tr td.active:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #004d78;
+ border-color: #00141d;
+}
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td.active,
+.open > .dropdown-toggle.datepicker table tr td.active:hover,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled,
+.open > .dropdown-toggle.datepicker table tr td.active.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active:hover.disabled,
+.datepicker table tr td.active.disabled.disabled,
+.datepicker table tr td.active.disabled:hover.disabled,
+.datepicker table tr td.active[disabled],
+.datepicker table tr td.active:hover[disabled],
+.datepicker table tr td.active.disabled[disabled],
+.datepicker table tr td.active.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td.active,
+fieldset[disabled] .datepicker table tr td.active:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active:hover.disabled:hover,
+.datepicker table tr td.active.disabled.disabled:hover,
+.datepicker table tr td.active.disabled:hover.disabled:hover,
+.datepicker table tr td.active[disabled]:hover,
+.datepicker table tr td.active:hover[disabled]:hover,
+.datepicker table tr td.active.disabled[disabled]:hover,
+.datepicker table tr td.active.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td.active:hover,
+fieldset[disabled] .datepicker table tr td.active:hover:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active.disabled:focus,
+.datepicker table tr td.active:hover.disabled:focus,
+.datepicker table tr td.active.disabled.disabled:focus,
+.datepicker table tr td.active.disabled:hover.disabled:focus,
+.datepicker table tr td.active[disabled]:focus,
+.datepicker table tr td.active:hover[disabled]:focus,
+.datepicker table tr td.active.disabled[disabled]:focus,
+.datepicker table tr td.active.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td.active:focus,
+fieldset[disabled] .datepicker table tr td.active:hover:focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
+.datepicker table tr td.active.disabled.focus,
+.datepicker table tr td.active:hover.disabled.focus,
+.datepicker table tr td.active.disabled.disabled.focus,
+.datepicker table tr td.active.disabled:hover.disabled.focus,
+.datepicker table tr td.active[disabled].focus,
+.datepicker table tr td.active:hover[disabled].focus,
+.datepicker table tr td.active.disabled[disabled].focus,
+.datepicker table tr td.active.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td.active.focus,
+fieldset[disabled] .datepicker table tr td.active:hover.focus,
+fieldset[disabled] .datepicker table tr td.active.disabled.focus,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover.focus,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active:hover.disabled:active,
+.datepicker table tr td.active.disabled.disabled:active,
+.datepicker table tr td.active.disabled:hover.disabled:active,
+.datepicker table tr td.active[disabled]:active,
+.datepicker table tr td.active:hover[disabled]:active,
+.datepicker table tr td.active.disabled[disabled]:active,
+.datepicker table tr td.active.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td.active:active,
+fieldset[disabled] .datepicker table tr td.active:hover:active,
+fieldset[disabled] .datepicker table tr td.active.disabled:active,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active:hover.disabled.active,
+.datepicker table tr td.active.disabled.disabled.active,
+.datepicker table tr td.active.disabled:hover.disabled.active,
+.datepicker table tr td.active[disabled].active,
+.datepicker table tr td.active:hover[disabled].active,
+.datepicker table tr td.active.disabled[disabled].active,
+.datepicker table tr td.active.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td.active.active,
+fieldset[disabled] .datepicker table tr td.active:hover.active,
+fieldset[disabled] .datepicker table tr td.active.disabled.active,
+fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.datepicker table tr td.active .badge,
+.datepicker table tr td.active:hover .badge,
+.datepicker table tr td.active.disabled .badge,
+.datepicker table tr td.active.disabled:hover .badge {
+ color: #0085cf;
+ background-color: #ffffff;
+}
+.datepicker table tr td span {
+ display: block;
+ width: 23%;
+ height: 54px;
+ line-height: 54px;
+ float: left;
+ margin: 1%;
+ cursor: pointer;
+ border-radius: 4px;
+}
+.datepicker table tr td span:hover {
+ background: #eeeeee;
+}
+.datepicker table tr td span.disabled,
+.datepicker table tr td span.disabled:hover {
+ background: none;
+ color: #999999;
+ cursor: default;
+}
+.datepicker table tr td span.active,
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active.disabled:hover {
+ color: #ffffff;
+ background-color: #0085cf;
+ border-color: #006e9c;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td span.active:focus,
+.datepicker table tr td span.active:hover:focus,
+.datepicker table tr td span.active.disabled:focus,
+.datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active.focus,
+.datepicker table tr td span.active:hover.focus,
+.datepicker table tr td span.active.disabled.focus,
+.datepicker table tr td span.active.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00141d;
+}
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active:hover:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td span.active,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+ color: #ffffff;
+ background-color: #00649c;
+ border-color: #00435f;
+}
+.datepicker table tr td span.active:active:hover,
+.datepicker table tr td span.active:hover:active:hover,
+.datepicker table tr td span.active.disabled:active:hover,
+.datepicker table tr td span.active.disabled:hover:active:hover,
+.datepicker table tr td span.active.active:hover,
+.datepicker table tr td span.active:hover.active:hover,
+.datepicker table tr td span.active.disabled.active:hover,
+.datepicker table tr td span.active.disabled:hover.active:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active:active:focus,
+.datepicker table tr td span.active:hover:active:focus,
+.datepicker table tr td span.active.disabled:active:focus,
+.datepicker table tr td span.active.disabled:hover:active:focus,
+.datepicker table tr td span.active.active:focus,
+.datepicker table tr td span.active:hover.active:focus,
+.datepicker table tr td span.active.disabled.active:focus,
+.datepicker table tr td span.active.disabled:hover.active:focus,
+.open > .dropdown-toggle.datepicker table tr td span.active:focus,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover:focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active:active.focus,
+.datepicker table tr td span.active:hover:active.focus,
+.datepicker table tr td span.active.disabled:active.focus,
+.datepicker table tr td span.active.disabled:hover:active.focus,
+.datepicker table tr td span.active.active.focus,
+.datepicker table tr td span.active:hover.active.focus,
+.datepicker table tr td span.active.disabled.active.focus,
+.datepicker table tr td span.active.disabled:hover.active.focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.focus,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover.focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled.focus,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover.focus {
+ color: #ffffff;
+ background-color: #004d78;
+ border-color: #00141d;
+}
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.open > .dropdown-toggle.datepicker table tr td span.active,
+.open > .dropdown-toggle.datepicker table tr td span.active:hover,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled,
+.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
+ background-image: none;
+}
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active:hover.disabled,
+.datepicker table tr td span.active.disabled.disabled,
+.datepicker table tr td span.active.disabled:hover.disabled,
+.datepicker table tr td span.active[disabled],
+.datepicker table tr td span.active:hover[disabled],
+.datepicker table tr td span.active.disabled[disabled],
+.datepicker table tr td span.active.disabled:hover[disabled],
+fieldset[disabled] .datepicker table tr td span.active,
+fieldset[disabled] .datepicker table tr td span.active:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active:hover.disabled:hover,
+.datepicker table tr td span.active.disabled.disabled:hover,
+.datepicker table tr td span.active.disabled:hover.disabled:hover,
+.datepicker table tr td span.active[disabled]:hover,
+.datepicker table tr td span.active:hover[disabled]:hover,
+.datepicker table tr td span.active.disabled[disabled]:hover,
+.datepicker table tr td span.active.disabled:hover[disabled]:hover,
+fieldset[disabled] .datepicker table tr td span.active:hover,
+fieldset[disabled] .datepicker table tr td span.active:hover:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active.disabled:focus,
+.datepicker table tr td span.active:hover.disabled:focus,
+.datepicker table tr td span.active.disabled.disabled:focus,
+.datepicker table tr td span.active.disabled:hover.disabled:focus,
+.datepicker table tr td span.active[disabled]:focus,
+.datepicker table tr td span.active:hover[disabled]:focus,
+.datepicker table tr td span.active.disabled[disabled]:focus,
+.datepicker table tr td span.active.disabled:hover[disabled]:focus,
+fieldset[disabled] .datepicker table tr td span.active:focus,
+fieldset[disabled] .datepicker table tr td span.active:hover:focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
+.datepicker table tr td span.active.disabled.focus,
+.datepicker table tr td span.active:hover.disabled.focus,
+.datepicker table tr td span.active.disabled.disabled.focus,
+.datepicker table tr td span.active.disabled:hover.disabled.focus,
+.datepicker table tr td span.active[disabled].focus,
+.datepicker table tr td span.active:hover[disabled].focus,
+.datepicker table tr td span.active.disabled[disabled].focus,
+.datepicker table tr td span.active.disabled:hover[disabled].focus,
+fieldset[disabled] .datepicker table tr td span.active.focus,
+fieldset[disabled] .datepicker table tr td span.active:hover.focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled.focus,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active:hover.disabled:active,
+.datepicker table tr td span.active.disabled.disabled:active,
+.datepicker table tr td span.active.disabled:hover.disabled:active,
+.datepicker table tr td span.active[disabled]:active,
+.datepicker table tr td span.active:hover[disabled]:active,
+.datepicker table tr td span.active.disabled[disabled]:active,
+.datepicker table tr td span.active.disabled:hover[disabled]:active,
+fieldset[disabled] .datepicker table tr td span.active:active,
+fieldset[disabled] .datepicker table tr td span.active:hover:active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active:hover.disabled.active,
+.datepicker table tr td span.active.disabled.disabled.active,
+.datepicker table tr td span.active.disabled:hover.disabled.active,
+.datepicker table tr td span.active[disabled].active,
+.datepicker table tr td span.active:hover[disabled].active,
+.datepicker table tr td span.active.disabled[disabled].active,
+.datepicker table tr td span.active.disabled:hover[disabled].active,
+fieldset[disabled] .datepicker table tr td span.active.active,
+fieldset[disabled] .datepicker table tr td span.active:hover.active,
+fieldset[disabled] .datepicker table tr td span.active.disabled.active,
+fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
+ background-color: #0085cf;
+ border-color: #006e9c;
+}
+.datepicker table tr td span.active .badge,
+.datepicker table tr td span.active:hover .badge,
+.datepicker table tr td span.active.disabled .badge,
+.datepicker table tr td span.active.disabled:hover .badge {
+ color: #0085cf;
+ background-color: #ffffff;
+}
+.datepicker table tr td span.old,
+.datepicker table tr td span.new {
+ color: #999999;
+}
+.datepicker .datepicker-switch {
+ width: 145px;
+}
+.datepicker thead tr:first-child th,
+.datepicker tfoot tr th {
+ cursor: pointer;
+}
+.datepicker thead tr:first-child th:hover,
+.datepicker tfoot tr th:hover {
+ background: #eeeeee;
+}
+.datepicker .cw {
+ font-size: 10px;
+ width: 12px;
+ padding: 0 2px 0 5px;
+ vertical-align: middle;
+}
+.datepicker thead tr:first-child .cw {
+ cursor: default;
+ background-color: transparent;
+}
+.input-group.date .input-group-addon {
+ cursor: pointer;
+}
+.input-daterange {
+ width: 100%;
+}
+.input-daterange input {
+ text-align: center;
+}
+.input-daterange input:first-child {
+ border-radius: 3px 0 0 3px;
+}
+.input-daterange input:last-child {
+ border-radius: 0 3px 3px 0;
+}
+.input-daterange .input-group-addon {
+ width: auto;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: 1.66666667;
+ text-align: center;
+ text-shadow: 0 1px 0 #fff;
+ vertical-align: middle;
+ background-color: #eeeeee;
+ border: solid #bababa;
+ border-width: 1px 0;
+ margin-left: -5px;
+ margin-right: -5px;
+}
+.bootstrap-select {
+ width: 220px \0;
+ /*IE9 and below*/
+}
+.bootstrap-select > .dropdown-toggle {
+ width: 100%;
+ padding-right: 25px;
+}
+.has-error .bootstrap-select .dropdown-toggle,
+.error .bootstrap-select .dropdown-toggle {
+ border-color: #b94a48;
+}
+.bootstrap-select.fit-width {
+ width: auto !important;
+}
+.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
+ width: 220px;
+}
+.bootstrap-select .dropdown-toggle:focus {
+ outline: thin dotted #333333 !important;
+ outline: 5px auto -webkit-focus-ring-color !important;
+ outline-offset: -2px;
+}
+.bootstrap-select.form-control {
+ margin-bottom: 0;
+ padding: 0;
+ border: none;
+}
+.bootstrap-select.form-control:not([class*="col-"]) {
+ width: 100%;
+}
+.bootstrap-select.form-control.input-group-btn {
+ z-index: auto;
+}
+.bootstrap-select.btn-group:not(.input-group-btn),
+.bootstrap-select.btn-group[class*="col-"] {
+ float: none;
+ display: inline-block;
+ margin-left: 0;
+}
+.bootstrap-select.btn-group.dropdown-menu-right,
+.bootstrap-select.btn-group[class*="col-"].dropdown-menu-right,
+.row .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right {
+ float: right;
+}
+.form-inline .bootstrap-select.btn-group,
+.form-horizontal .bootstrap-select.btn-group,
+.form-group .bootstrap-select.btn-group {
+ margin-bottom: 0;
+}
+.form-group-lg .bootstrap-select.btn-group.form-control,
+.form-group-sm .bootstrap-select.btn-group.form-control {
+ padding: 0;
+}
+.form-inline .bootstrap-select.btn-group .form-control {
+ width: 100%;
+}
+.bootstrap-select.btn-group.disabled,
+.bootstrap-select.btn-group > .disabled {
+ cursor: not-allowed;
+}
+.bootstrap-select.btn-group.disabled:focus,
+.bootstrap-select.btn-group > .disabled:focus {
+ outline: none !important;
+}
+.bootstrap-select.btn-group .dropdown-toggle .filter-option {
+ display: inline-block;
+ overflow: hidden;
+ width: 100%;
+ text-align: left;
+}
+.bootstrap-select.btn-group .dropdown-toggle .caret {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ margin-top: -2px;
+ vertical-align: middle;
+}
+.bootstrap-select.btn-group[class*="col-"] .dropdown-toggle {
+ width: 100%;
+}
+.bootstrap-select.btn-group .dropdown-menu {
+ min-width: 100%;
+ z-index: 1035;
+ box-sizing: border-box;
+}
+.bootstrap-select.btn-group .dropdown-menu.inner {
+ position: static;
+ float: none;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ box-shadow: none;
+}
+.bootstrap-select.btn-group .dropdown-menu li {
+ position: relative;
+}
+.bootstrap-select.btn-group .dropdown-menu li.active small {
+ color: #fff;
+}
+.bootstrap-select.btn-group .dropdown-menu li.disabled a {
+ cursor: not-allowed;
+}
+.bootstrap-select.btn-group .dropdown-menu li a {
+ cursor: pointer;
+}
+.bootstrap-select.btn-group .dropdown-menu li a.opt {
+ position: relative;
+ padding-left: 2.25em;
+}
+.bootstrap-select.btn-group .dropdown-menu li a span.check-mark {
+ display: none;
+}
+.bootstrap-select.btn-group .dropdown-menu li a span.text {
+ display: inline-block;
+}
+.bootstrap-select.btn-group .dropdown-menu li small {
+ padding-left: 0.5em;
+}
+.bootstrap-select.btn-group .dropdown-menu .notify {
+ position: absolute;
+ bottom: 5px;
+ width: 96%;
+ margin: 0 2%;
+ min-height: 26px;
+ padding: 3px 5px;
+ background: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ pointer-events: none;
+ opacity: 0.9;
+ box-sizing: border-box;
+}
+.bootstrap-select.btn-group .no-results {
+ padding: 3px;
+ background: #f5f5f5;
+ margin: 0 5px;
+ white-space: nowrap;
+}
+.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {
+ position: static;
+}
+.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {
+ position: static;
+ top: auto;
+ margin-top: -1px;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {
+ position: absolute;
+ display: inline-block;
+ right: 15px;
+ margin-top: 5px;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {
+ margin-right: 34px;
+}
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle {
+ z-index: 1036;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:before {
+ content: '';
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid rgba(204, 204, 204, 0.2);
+ position: absolute;
+ bottom: -4px;
+ left: 9px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:after {
+ content: '';
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid white;
+ position: absolute;
+ bottom: -4px;
+ left: 10px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {
+ bottom: auto;
+ top: -3px;
+ border-top: 7px solid rgba(204, 204, 204, 0.2);
+ border-bottom: 0;
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {
+ bottom: auto;
+ top: -3px;
+ border-top: 6px solid white;
+ border-bottom: 0;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {
+ right: 12px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {
+ right: 13px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {
+ display: block;
+}
+.bs-searchbox,
+.bs-actionsbox,
+.bs-donebutton {
+ padding: 4px 8px;
+}
+.bs-actionsbox {
+ float: left;
+ width: 100%;
+ box-sizing: border-box;
+}
+.bs-actionsbox .btn-group button {
+ width: 50%;
+}
+.bs-donebutton {
+ float: left;
+ width: 100%;
+ box-sizing: border-box;
+}
+.bs-donebutton .btn-group button {
+ width: 100%;
+}
+.bs-searchbox + .bs-actionsbox {
+ padding: 0 8px 4px;
+}
+.bs-searchbox .form-control {
+ margin-bottom: 0;
+ width: 100%;
+}
+select.bs-select-hidden,
+select.selectpicker {
+ display: none !important;
+}
+select.mobile-device {
+ position: absolute !important;
+ top: 0;
+ left: 0;
+ display: block !important;
+ width: 100%;
+ height: 100% !important;
+ opacity: 0;
+}
+/*-- Chart --*/
+.c3 svg {
+ font: 10px sans-serif;
+}
+.c3 path,
+.c3 line {
+ fill: none;
+ stroke: #000;
+}
+.c3 text {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+.c3-legend-item-tile,
+.c3-xgrid-focus,
+.c3-ygrid,
+.c3-event-rect,
+.c3-bars path {
+ shape-rendering: crispEdges;
+}
+.c3-chart-arc path {
+ stroke: #fff;
+}
+.c3-chart-arc text {
+ fill: #fff;
+ font-size: 13px;
+}
+/*-- Axis --*/
+/*-- Grid --*/
+.c3-grid line {
+ stroke: #aaa;
+}
+.c3-grid text {
+ fill: #aaa;
+}
+.c3-xgrid,
+.c3-ygrid {
+ stroke-dasharray: 3 3;
+}
+/*-- Text on Chart --*/
+.c3-text.c3-empty {
+ fill: #808080;
+ font-size: 2em;
+}
+/*-- Line --*/
+.c3-line {
+ stroke-width: 1px;
+}
+/*-- Point --*/
+.c3-circle._expanded_ {
+ stroke-width: 1px;
+ stroke: white;
+}
+.c3-selected-circle {
+ fill: white;
+ stroke-width: 2px;
+}
+/*-- Bar --*/
+.c3-bar {
+ stroke-width: 0;
+}
+.c3-bar._expanded_ {
+ fill-opacity: 0.75;
+}
+/*-- Focus --*/
+.c3-target.c3-focused {
+ opacity: 1;
+}
+.c3-target.c3-focused path.c3-line,
+.c3-target.c3-focused path.c3-step {
+ stroke-width: 2px;
+}
+.c3-target.c3-defocused {
+ opacity: 0.3 !important;
+}
+/*-- Region --*/
+.c3-region {
+ fill: steelblue;
+ fill-opacity: 0.1;
+}
+/*-- Brush --*/
+.c3-brush .extent {
+ fill-opacity: 0.1;
+}
+/*-- Select - Drag --*/
+/*-- Legend --*/
+.c3-legend-item {
+ font-size: 12px;
+}
+.c3-legend-item-hidden {
+ opacity: 0.15;
+}
+.c3-legend-background {
+ opacity: 0.75;
+ fill: white;
+ stroke: lightgray;
+ stroke-width: 1;
+}
+/*-- Tooltip --*/
+.c3-tooltip-container {
+ z-index: 10;
+}
+.c3-tooltip {
+ border-collapse: collapse;
+ border-spacing: 0;
+ background-color: #fff;
+ empty-cells: show;
+ -webkit-box-shadow: 7px 7px 12px -9px #777777;
+ -moz-box-shadow: 7px 7px 12px -9px #777777;
+ box-shadow: 7px 7px 12px -9px #777777;
+ opacity: 0.9;
+}
+.c3-tooltip tr {
+ border: 1px solid #CCC;
+}
+.c3-tooltip th {
+ background-color: #aaa;
+ font-size: 14px;
+ padding: 2px 5px;
+ text-align: left;
+ color: #FFF;
+}
+.c3-tooltip td {
+ font-size: 13px;
+ padding: 3px 6px;
+ background-color: #fff;
+ border-left: 1px dotted #999;
+}
+.c3-tooltip td > span {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin-right: 6px;
+}
+.c3-tooltip td.value {
+ text-align: right;
+}
+/*-- Area --*/
+.c3-area {
+ stroke-width: 0;
+ opacity: 0.2;
+}
+/*-- Arc --*/
+.c3-chart-arcs-title {
+ dominant-baseline: middle;
+ font-size: 1.3em;
+}
+.c3-chart-arcs .c3-chart-arcs-background {
+ fill: #e0e0e0;
+ stroke: none;
+}
+.c3-chart-arcs .c3-chart-arcs-gauge-unit {
+ fill: #000;
+ font-size: 16px;
+}
+.c3-chart-arcs .c3-chart-arcs-gauge-max {
+ fill: #777;
+}
+.c3-chart-arcs .c3-chart-arcs-gauge-min {
+ fill: #777;
+}
+.c3-chart-arc .c3-gauge-value {
+ fill: #000;
+ /* font-size: 28px !important;*/
+}
+.blank-slate-pf {
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 1px;
+ margin-bottom: 20px;
+ padding: 30px;
+ text-align: center;
+}
+@media (min-width: 768px) {
+ .blank-slate-pf {
+ padding: 60px 60px;
+ }
+}
+@media (min-width: 992px) {
+ .blank-slate-pf {
+ padding: 90px 120px;
+ }
+}
+.blank-slate-pf .blank-slate-pf-icon {
+ color: #999999;
+ font-size: 57.6px;
+ line-height: 57.6px;
+}
+.blank-slate-pf .blank-slate-pf-main-action {
+ margin-top: 20px;
+}
+.blank-slate-pf .blank-slate-pf-secondary-action {
+ margin-top: 20px;
+}
+.combobox-container.combobox-selected .glyphicon-remove {
+ display: inline-block;
+}
+.combobox-container .caret {
+ margin-left: 0;
+}
+.combobox-container .combobox::-ms-clear {
+ display: none;
+}
+.combobox-container .dropdown-menu {
+ margin-top: -1px;
+ width: 100%;
+}
+.combobox-container .glyphicon-remove {
+ display: none;
+ top: auto;
+ width: 12px;
+}
+.combobox-container .glyphicon-remove:before {
+ content: "\e60b";
+ font-family: "PatternFlyIcons-webfont";
+}
+.combobox-container .input-group-addon {
+ background-color: #eeeeee;
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
+ border-color: #b7b7b7;
+ color: #4d5258;
+ position: relative;
+}
+.combobox-container .input-group-addon:hover,
+.combobox-container .input-group-addon:focus,
+.combobox-container .input-group-addon:active,
+.combobox-container .input-group-addon.active,
+.open .dropdown-toggle.combobox-container .input-group-addon {
+ background-color: #eeeeee;
+ background-image: none;
+ border-color: #b7b7b7;
+ color: #4d5258;
+}
+.combobox-container .input-group-addon:active,
+.combobox-container .input-group-addon.active,
+.open .dropdown-toggle.combobox-container .input-group-addon {
+ background-image: none;
+}
+.combobox-container .input-group-addon:active:hover,
+.combobox-container .input-group-addon.active:hover,
+.open .dropdown-toggle.combobox-container .input-group-addon:hover,
+.combobox-container .input-group-addon:active:focus,
+.combobox-container .input-group-addon.active:focus,
+.open .dropdown-toggle.combobox-container .input-group-addon:focus,
+.combobox-container .input-group-addon:active.focus,
+.combobox-container .input-group-addon.active.focus,
+.open .dropdown-toggle.combobox-container .input-group-addon.focus {
+ background-color: #e2e2e2;
+ border-color: #a5a5a5;
+}
+.combobox-container .input-group-addon.disabled,
+.combobox-container .input-group-addon[disabled],
+fieldset[disabled] .combobox-container .input-group-addon,
+.combobox-container .input-group-addon.disabled:hover,
+.combobox-container .input-group-addon[disabled]:hover,
+fieldset[disabled] .combobox-container .input-group-addon:hover,
+.combobox-container .input-group-addon.disabled:focus,
+.combobox-container .input-group-addon[disabled]:focus,
+fieldset[disabled] .combobox-container .input-group-addon:focus,
+.combobox-container .input-group-addon.disabled:active,
+.combobox-container .input-group-addon[disabled]:active,
+fieldset[disabled] .combobox-container .input-group-addon:active,
+.combobox-container .input-group-addon.disabled.active,
+.combobox-container .input-group-addon[disabled].active,
+fieldset[disabled] .combobox-container .input-group-addon.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
+}
+.combobox-container .input-group-addon:active {
+ -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.2);
+}
+.datepicker {
+ border-radius: 1px;
+}
+.datepicker .datepicker-switch,
+.datepicker tfoot .today {
+ font-size: 14px;
+ font-weight: 500;
+}
+.datepicker .next,
+.datepicker .prev {
+ font-weight: 500;
+}
+.datepicker table tr td,
+.datepicker table tr th {
+ border-radius: 1px;
+}
+.datepicker table tr td.active.active,
+.datepicker table tr td.active.active:hover,
+.datepicker table tr td.active.active.disabled,
+.datepicker table tr td.active.active.disabled:hover {
+ background: #0099d3 !important;
+ color: #fff !important;
+ text-shadow: none;
+}
+.datepicker table tr td.day:hover,
+.datepicker table tr td.day.focused {
+ background: #d4edfa;
+}
+.datepicker table tr td.selected,
+.datepicker table tr td.selected:hover,
+.datepicker table tr td.selected.disabled,
+.datepicker table tr td.selected.disabled:hover {
+ text-shadow: none;
+}
+.datepicker table tr td span {
+ border-radius: 1px;
+}
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active.active:hover,
+.datepicker table tr td span.active.active.disabled,
+.datepicker table tr td span.active.active.disabled:hover {
+ background: #0099d3;
+ text-shadow: none;
+}
+.datepicker table tr td span:hover {
+ background: #d4edfa;
+}
+.datepicker thead tr:first-child th:hover,
+.datepicker tfoot tr th:hover {
+ background: #d4edfa;
+}
+.input-daterange input:first-child {
+ border-radius: 1px 0 0 1px;
+}
+.input-daterange input:last-child {
+ border-radius: 0 1px 1px 0;
+}
+.input-daterange .input-group-addon {
+ background-color: #eeeeee;
+ border-color: #bababa;
+ line-height: 1.66666667;
+ padding: 2px 6px;
+}
+.bootstrap-select.btn-group.form-control {
+ margin-bottom: 0;
+}
+.bootstrap-select.btn-group .btn {
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.bootstrap-select.btn-group .btn:hover {
+ border-color: #7bb2dd;
+}
+.bootstrap-select.btn-group .btn .caret {
+ margin-top: -4px;
+}
+.bootstrap-select.btn-group .btn:focus {
+ border-color: #66afe9;
+ outline: 0 !important;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.has-error .bootstrap-select.btn-group .btn {
+ border-color: #a94442;
+}
+.has-error .bootstrap-select.btn-group .btn:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+}
+.has-success .bootstrap-select.btn-group .btn {
+ border-color: #3c763d;
+}
+.has-success .bootstrap-select.btn-group .btn:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+}
+.has-warning .bootstrap-select.btn-group .btn {
+ border-color: #ec7a08;
+}
+.has-warning .bootstrap-select.btn-group .btn:focus {
+ border-color: #bb6106;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60;
+}
+.bootstrap-select.btn-group .dropdown-menu > .active > a,
+.bootstrap-select.btn-group .dropdown-menu > .active > a:active {
+ background-color: #d4edfa !important;
+ border-color: #b3d3e7 !important;
+ color: #333333 !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .active > a small,
+.bootstrap-select.btn-group .dropdown-menu > .active > a:active small {
+ color: #999999 !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .disabled > a {
+ color: #999999 !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .selected > a {
+ background-color: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #fff !important;
+}
+.bootstrap-select.btn-group .dropdown-menu > .selected > a small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+}
+.bootstrap-select.btn-group .dropdown-menu .divider {
+ background: #e5e5e5 !important;
+ margin: 4px 1px !important;
+}
+.bootstrap-select.btn-group .dropdown-menu dt {
+ color: #969696;
+ font-weight: normal;
+ padding: 1px 10px;
+}
+.bootstrap-select.btn-group .dropdown-menu li > a.opt {
+ padding: 1px 10px;
+}
+.bootstrap-select.btn-group .dropdown-menu li a:active small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+}
+.bootstrap-select.btn-group .dropdown-menu li a:hover small,
+.bootstrap-select.btn-group .dropdown-menu li a:focus small {
+ color: #999999;
+}
+.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small,
+.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small {
+ color: #999999;
+}
+.treeview .list-group {
+ border-top: 0;
+}
+.treeview .list-group-item {
+ background: transparent;
+ border-bottom: 1px solid transparent !important;
+ border-top: 1px solid transparent !important;
+ margin-bottom: 0;
+ padding: 0 10px;
+}
+.treeview .list-group-item:hover {
+ background: #d4edfa !important;
+ border-color: #b3d3e7 !important;
+}
+.treeview .list-group-item.node-selected {
+ background: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #ffffff !important;
+}
+.treeview span.icon {
+ display: inline-block;
+ font-size: 13px;
+ min-width: 10px;
+ text-align: center;
+}
+.treeview span.icon > [class*="fa-angle"] {
+ font-size: 15px;
+}
+.treeview span.indent {
+ margin-right: 5px;
+}
+.container-cards-pf {
+ margin-top: 20px;
+}
+.card-pf {
+ background: #ffffff;
+ border-top: 2px solid transparent;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.175);
+ padding: 0 20px;
+ margin: 0 -10px 20px;
+}
+.card-pf.card-pf-accented {
+ border-top-color: #39a5dc;
+}
+.card-pf-body {
+ margin: 20px 0;
+ padding: 0 0 20px;
+}
+.card-pf-body > *:last-child {
+ margin-bottom: 0;
+}
+.card-pf-footer {
+ background-color: #fafafa;
+ border-top: 1px solid #d1d1d1;
+ margin: 0 -20px !important;
+ padding: 20px 20px 10px;
+}
+.card-pf-footer a .fa,
+.card-pf-footer a .pficon {
+ margin-right: 5px;
+}
+.card-pf-heading {
+ border-bottom: 1px solid #d1d1d1;
+ margin: 0 -20px 20px;
+ padding: 0 20px 0;
+}
+.card-pf-title {
+ font-size: 16px;
+ font-weight: 300;
+ margin: 20px 0;
+ padding: 0;
+}
+.cards-pf {
+ background: #f5f5f5;
+}
+.row-cards-pf {
+ margin-left: -10px;
+ margin-right: -10px;
+}
+.c3 path {
+ stroke: #d1d1d1;
+}
+.c3 svg {
+ font-family: "Open Sans", Helvetica, Arial, sans-serif;
+}
+.c3-axis-x .tick line {
+ stroke: #d1d1d1;
+}
+.c3-axis-y .tick line {
+ display: none;
+}
+.c3-chart-arc path {
+ stroke: #fff;
+}
+.c3-grid line {
+ stroke: #d1d1d1;
+}
+.c3-line {
+ stroke-width: 2px;
+}
+.c3-tooltip {
+ background: #434343;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.c3-tooltip td {
+ background: transparent;
+ border: 0;
+ color: #fff;
+ font-size: 12px;
+ padding: 5px 10px;
+}
+.c3-tooltip th {
+ background: transparent;
+ font-size: 12px;
+ padding: 5px 10px 0;
+}
+.c3-tooltip tr {
+ border: 0;
+}
+.c3-tooltip tr + tr > td {
+ padding-top: 0;
+}
+.c3-tooltip-sparkline {
+ background: #434343;
+ color: #fff;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+ padding: 2px 6px;
+}
+.c3-xgrid,
+.c3-ygrid {
+ stroke-dasharray: 0 0;
+}
+.close {
+ text-shadow: none;
+ opacity: 0.6;
+ filter: alpha(opacity=60);
+}
+.close:hover,
+.close:focus {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.ColVis_Button:active:focus {
+ outline: none;
+}
+.ColVis_catcher {
+ position: absolute;
+ z-index: 999;
+}
+.ColVis_collection {
+ background-color: #ffffff;
+ border: 1px solid #b6b6b6;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+ list-style: none;
+ margin: -1px 0 0 0;
+ padding: 5px 10px;
+ width: 150px;
+ z-index: 1000;
+}
+.ColVis_collection label {
+ font-weight: normal;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding-left: 20px;
+}
+.ColVis_collectionBackground {
+ background-color: #fff;
+ height: 100%;
+ left: 0;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 998;
+}
+.dataTables_header {
+ background-color: #f6f6f6;
+ border: 1px solid #d1d1d1;
+ border-bottom: none;
+ padding: 5px;
+ position: relative;
+ text-align: center;
+}
+.dataTables_header .btn {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.dataTables_header .ColVis {
+ position: absolute;
+ right: 5px;
+ text-align: left;
+ top: 5px;
+}
+.dataTables_header .ColVis + .dataTables_info {
+ padding-right: 30px;
+}
+.dataTables_header .dataTables_filter {
+ position: absolute;
+}
+.dataTables_header .dataTables_filter input {
+ border: 1px solid #bbb;
+ height: 24px;
+}
+@media (max-width: 767px) {
+ .dataTables_header .dataTables_filter input {
+ width: 100px;
+ }
+}
+.dataTables_header .dataTables_info {
+ padding: 2px 0;
+}
+@media (max-width: 480px) {
+ .dataTables_header .dataTables_info {
+ text-align: right;
+ }
+}
+.dataTables_header .dataTables_info b {
+ font-weight: bold;
+}
+.dataTables_footer {
+ background-color: #fff;
+ border: 1px solid #d1d1d1;
+ border-top: none;
+ overflow: hidden;
+}
+.dataTables_paginate {
+ background: #fafafa;
+ float: right;
+ margin: 0;
+}
+.dataTables_paginate .pagination {
+ float: left;
+ margin: 0;
+}
+.dataTables_paginate .pagination > li > span {
+ border-color: #ffffff #e1e1e1 #f4f4f4;
+ border-width: 0 1px;
+ font-size: 16px;
+ font-weight: normal;
+ padding: 0;
+ text-align: center;
+ width: 31px;
+}
+.dataTables_paginate .pagination > li > span:hover,
+.dataTables_paginate .pagination > li > span:focus {
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dataTables_paginate .pagination > li.last > span {
+ border-right: none;
+}
+.dataTables_paginate .pagination > li.disabled > span {
+ background: #f5f5f5;
+ border-left-color: #ececec;
+ border-right-color: #ececec;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.dataTables_paginate .pagination-input {
+ float: left;
+ font-size: 12px;
+ line-height: 1em;
+ padding: 4px 15px 0;
+ text-align: right;
+}
+.dataTables_paginate .pagination-input .paginate_input {
+ border: 1px solid #d3d3d3;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ font-size: 12px;
+ font-weight: 600;
+ height: 19px;
+ margin-right: 8px;
+ padding-right: 3px;
+ text-align: right;
+ width: 30px;
+}
+.dataTables_paginate .pagination-input .paginate_of {
+ position: relative;
+}
+.dataTables_paginate .pagination-input .paginate_of b {
+ margin-left: 3px;
+}
+.dataTables_wrapper {
+ margin: 20px 0;
+}
+@media (max-width: 767px) {
+ .dataTables_wrapper .table-responsive {
+ margin-bottom: 0;
+ }
+}
+.DTCR_clonedTable {
+ background-color: rgba(255, 255, 255, 0.7);
+ z-index: 202;
+}
+.DTCR_pointer {
+ background-color: #0099d3;
+ width: 1px;
+ z-index: 201;
+}
+table.datatable {
+ margin-bottom: 0;
+ max-width: none !important;
+}
+table.datatable thead .sorting,
+table.datatable thead .sorting_asc,
+table.datatable thead .sorting_desc,
+table.datatable thead .sorting_asc_disabled,
+table.datatable thead .sorting_desc_disabled {
+ cursor: pointer;
+ *cursor: hand;
+}
+table.datatable thead .sorting_asc,
+table.datatable thead .sorting_desc {
+ border: 0;
+ color: #0099d3 !important;
+ display: block;
+ position: relative;
+}
+table.datatable thead .sorting_asc:after,
+table.datatable thead .sorting_desc:after {
+ content: "\f107";
+ font-family: "FontAwesome";
+ font-size: 10px;
+ font-weight: normal;
+ height: 9px;
+ left: 7px;
+ line-height: 12px;
+ position: relative;
+ top: 2px;
+ vertical-align: baseline;
+ width: 12px;
+}
+table.datatable thead .sorting_asc:before,
+table.datatable thead .sorting_desc:before {
+ background: #0099d3;
+ content: '';
+ height: 2px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+}
+table.datatable thead .sorting_asc:after {
+ content: "\f106";
+ top: -3px;
+}
+table.datatable th:active {
+ outline: none;
+}
+@font-face {
+ font-family: 'PatternFlyIcons-webfont';
+ src: url('../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.eot');
+ src: url('../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.eot?#iefix') format('embedded-opentype'), url('../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf') format('truetype'), url('../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.woff') format('woff'), url('../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.svg#PatternFlyIcons-webfont') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+[class^="pficon-"],
+[class*=" pficon-"] {
+ display: inline-block;
+ font-family: 'PatternFlyIcons-webfont';
+ font-style: normal;
+ font-variant: normal;
+ font-weight: normal;
+ line-height: 1;
+ speak: none;
+ text-transform: none;
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.pficon-screen:before {
+ content: "\e600";
+}
+.pficon-save:before {
+ content: "\e601";
+}
+.pficon-ok:before {
+ color: #3f9c35;
+ content: "\e602";
+}
+.pficon-messages:before,
+.pficon-flag:before {
+ content: "\e603";
+}
+.pficon-info:before {
+ content: "\e604";
+}
+.pficon-help:before {
+ content: "\e605";
+}
+.pficon-folder-open:before {
+ content: "\e606";
+}
+.pficon-folder-close:before {
+ content: "\e607";
+}
+.pficon-edit:before {
+ content: "\e60a";
+}
+.pficon-close:before {
+ content: "\e60b";
+}
+.pficon-user:before {
+ content: "\e60e";
+}
+.pficon-users:before {
+ content: "\e60f";
+}
+.pficon-add-circle-o:before {
+ content: "\e61b";
+}
+.pficon-warning-triangle-o:before {
+ color: #ec7a08;
+ content: "\e61c";
+}
+.pficon-error-circle-o:before {
+ color: #cc0000;
+ content: "\e61d";
+}
+.pficon-service:before {
+ content: "\e61e";
+}
+.pficon-image:before {
+ content: "\e61f";
+}
+.pficon-settings:before {
+ content: "\e610";
+}
+.pficon-delete:before {
+ content: "\e611";
+}
+.pficon-print:before {
+ content: "\e612";
+}
+.pficon-refresh:before,
+.pficon-restart:before {
+ content: "\e613";
+}
+.pficon-running:before {
+ content: "\e614";
+}
+.pficon-import:before {
+ content: "\e615";
+}
+.pficon-export:before {
+ content: "\e616";
+}
+.pficon-history:before {
+ content: "\e617";
+}
+.pficon-home:before {
+ content: "\e618";
+}
+.pficon-cluster:before {
+ content: "\e620";
+}
+.pficon-container-node:before {
+ content: "\e621";
+}
+.pficon-project:before {
+ content: "\e622";
+}
+.pficon-registry:before {
+ content: "\e623";
+}
+.pficon-replicator:before {
+ content: "\e624";
+}
+.pficon-route:before {
+ content: "\e625";
+}
+.pficon-openshift:before {
+ content: "\e626";
+}
+.pficon-kubernetes:before {
+ content: "\e627";
+}
+.navbar-nav > li > .dropdown-menu.infotip {
+ border-top-width: 1px !important;
+ margin-top: 10px;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-nav .open .dropdown-menu.infotip {
+ background-color: #fff !important;
+ margin-top: 0;
+ }
+}
+.infotip {
+ min-width: 235px;
+ padding: 0;
+}
+.infotip .list-group {
+ border-top: 0;
+ margin: 0;
+ padding: 8px 0;
+}
+.infotip .list-group .list-group-item {
+ border: none;
+ margin: 0 15px 0 34px;
+ padding: 5px 0;
+}
+.infotip .list-group .list-group-item > .i {
+ color: #4d5258;
+ font-size: 13px;
+ left: -20px;
+ position: absolute;
+ top: 8px;
+}
+.infotip .list-group .list-group-item > a {
+ color: #4d5258;
+ line-height: 13px;
+}
+.infotip .list-group .list-group-item > .close {
+ float: right;
+}
+.infotip .footer {
+ background-color: #f5f5f5;
+ padding: 6px 15px;
+}
+.infotip .footer a:hover {
+ color: #0099d3;
+}
+.infotip .arrow,
+.infotip .arrow:after {
+ border-color: transparent;
+ border-style: solid;
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+.infotip .arrow {
+ border-width: 11px;
+}
+.infotip .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+.infotip.bottom .arrow,
+.infotip.bottom-left .arrow,
+.infotip.bottom-right .arrow {
+ border-bottom-color: #999999;
+ border-bottom-color: #bbbbbb;
+ border-top-width: 0;
+ left: 50%;
+ margin-left: -11px;
+ top: -11px;
+}
+.infotip.bottom .arrow:after,
+.infotip.bottom-left .arrow:after,
+.infotip.bottom-right .arrow:after {
+ border-top-width: 0;
+ border-bottom-color: #ffffff;
+ content: " ";
+ margin-left: -10px;
+ top: 1px;
+}
+.infotip.bottom-left .arrow {
+ left: 20%;
+}
+.infotip.bottom-right .arrow {
+ left: 80%;
+}
+.infotip.top .arrow {
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: #bbbbbb;
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+}
+.infotip.top .arrow:after {
+ border-bottom-width: 0;
+ border-top-color: #f5f5f5;
+ bottom: 1px;
+ content: " ";
+ margin-left: -10px;
+}
+.infotip.right .arrow {
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: #bbbbbb;
+ left: -11px;
+ margin-top: -11px;
+ top: 50%;
+}
+.infotip.right .arrow:after {
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #ffffff;
+ content: " ";
+ left: 1px;
+}
+.infotip.left .arrow {
+ border-left-color: #999999;
+ border-left-color: #bbbbbb;
+ border-right-width: 0;
+ margin-top: -11px;
+ right: -11px;
+ top: 50%;
+}
+.infotip.left .arrow:after {
+ border-left-color: #ffffff;
+ border-right-width: 0;
+ bottom: -10px;
+ content: " ";
+ right: 1px;
+}
+.login-pf {
+ height: 100%;
+}
+.login-pf #brand {
+ position: relative;
+ top: -70px;
+}
+.login-pf #brand img {
+ display: block;
+ height: 18px;
+ margin: 0 auto;
+ max-width: 100%;
+}
+@media (min-width: 768px) {
+ .login-pf #brand img {
+ margin: 0;
+ text-align: left;
+ }
+}
+.login-pf #badge {
+ display: block;
+ margin: 20px auto 70px;
+ position: relative;
+ text-align: center;
+}
+@media (min-width: 768px) {
+ .login-pf #badge {
+ float: right;
+ margin-right: 64px;
+ margin-top: 50px;
+ }
+}
+.login-pf body {
+ background: #1a1a1a url("../img/bg-login.png") repeat-x 50% 0;
+ background-size: auto;
+}
+@media (min-width: 768px) {
+ .login-pf body {
+ background-size: 100% auto;
+ }
+}
+.login-pf .container {
+ background-color: transparent;
+ clear: right;
+ color: #fff;
+ padding-bottom: 40px;
+ padding-top: 20px;
+ width: auto;
+}
+@media (min-width: 768px) {
+ .login-pf .container {
+ bottom: 13%;
+ padding-left: 80px;
+ position: absolute;
+ width: 100%;
+ }
+}
+.login-pf .container [class^='alert'] {
+ background: transparent;
+ color: #fff;
+}
+.login-pf .container .details p:first-child {
+ border-top: 1px solid #474747;
+ padding-top: 25px;
+ margin-top: 25px;
+}
+@media (min-width: 768px) {
+ .login-pf .container .details {
+ border-left: 1px solid #474747;
+ padding-left: 40px;
+ }
+ .login-pf .container .details p:first-child {
+ border-top: 0;
+ padding-top: 0;
+ margin-top: 0;
+ }
+}
+.login-pf .container .details p {
+ margin-bottom: 2px;
+}
+.login-pf .container .form-horizontal .control-label {
+ font-size: 13px;
+ font-weight: 400;
+ text-align: left;
+}
+.login-pf .container .form-horizontal .form-group:last-child,
+.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child {
+ margin-bottom: 0;
+}
+.login-pf .container .help-block {
+ color: #fff;
+}
+@media (min-width: 768px) {
+ .login-pf .container .login {
+ padding-right: 40px;
+ }
+}
+.login-pf .container .submit {
+ text-align: right;
+}
+.navbar-pf {
+ background: #393f45;
+ border: 0;
+ border-radius: 0;
+ border-top: 3px solid #cc0000;
+ margin-bottom: 0;
+ min-height: 0;
+}
+.navbar-pf .navbar-brand {
+ color: #ffffff;
+ height: auto;
+ padding: 12px 0;
+ margin: 0 0 0 20px;
+}
+.navbar-pf .navbar-brand img {
+ display: block;
+}
+.navbar-pf .navbar-collapse {
+ border-top: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ padding: 0;
+}
+.navbar-pf .navbar-header {
+ border-bottom: 1px solid #53565b;
+ float: none;
+}
+.navbar-pf .navbar-nav {
+ margin: 0;
+}
+.navbar-pf .navbar-nav > .active > a,
+.navbar-pf .navbar-nav > .active > a:hover,
+.navbar-pf .navbar-nav > .active > a:focus {
+ background-color: #454c53;
+ color: #ffffff;
+}
+.navbar-pf .navbar-nav > li > a {
+ color: #dbdada;
+ line-height: 1;
+ padding: 10px 20px;
+ text-shadow: none;
+}
+.navbar-pf .navbar-nav > li > a:hover,
+.navbar-pf .navbar-nav > li > a:focus {
+ color: #ffffff;
+}
+.navbar-pf .navbar-nav > .open > a,
+.navbar-pf .navbar-nav > .open > a:hover,
+.navbar-pf .navbar-nav > .open > a:focus {
+ background-color: #454c53;
+ color: #ffffff;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-nav .active .navbar-persistent,
+ .navbar-pf .navbar-nav .active .dropdown-menu,
+ .navbar-pf .navbar-nav .open .dropdown-menu {
+ background-color: #3c434a !important;
+ margin-left: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent > .active > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu > .active > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a,
+ .navbar-pf .navbar-nav .active .navbar-persistent > .active > a:hover,
+ .navbar-pf .navbar-nav .active .dropdown-menu > .active > a:hover,
+ .navbar-pf .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a:hover,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a:hover,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a:hover,
+ .navbar-pf .navbar-nav .active .navbar-persistent > .active > a:focus,
+ .navbar-pf .navbar-nav .active .dropdown-menu > .active > a:focus,
+ .navbar-pf .navbar-nav .open .dropdown-menu > .active > a:focus,
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a:focus,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a:focus,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a:focus {
+ background-color: #424950 !important;
+ color: #ffffff;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent > li > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu > li > a {
+ background-color: transparent;
+ border: 0;
+ color: #dbdada;
+ outline: none;
+ padding-left: 30px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent > li > a:hover,
+ .navbar-pf .navbar-nav .active .dropdown-menu > li > a:hover,
+ .navbar-pf .navbar-nav .open .dropdown-menu > li > a:hover {
+ color: #ffffff;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .divider,
+ .navbar-pf .navbar-nav .active .dropdown-menu .divider,
+ .navbar-pf .navbar-nav .open .dropdown-menu .divider {
+ background-color: #53565b;
+ margin: 0 1px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding-bottom: 0;
+ padding-left: 30px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle {
+ color: #ffffff;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left {
+ float: none !important;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu > a:after,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu > a:after,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu > a:after {
+ display: none;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header {
+ padding-left: 45px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu {
+ border: 0;
+ bottom: auto;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ display: block;
+ float: none;
+ margin: 0;
+ min-width: 0;
+ padding: 0;
+ position: relative;
+ left: auto;
+ right: auto;
+ top: auto;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu > li > a {
+ padding: 5px 15px 5px 45px;
+ line-height: 20px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu > li > a,
+ .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu > li > a {
+ padding-left: 60px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu {
+ display: block;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu > a:after {
+ display: inline-block !important;
+ position: relative;
+ right: auto;
+ top: 1px;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu {
+ display: none;
+ }
+ .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu > a:after {
+ display: none !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu {
+ background-color: #fff !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a:active {
+ background-color: #d4edfa !important;
+ border-color: #b3d3e7 !important;
+ color: #333333 !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a small,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a:active small {
+ color: #999999 !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .disabled > a {
+ color: #999999 !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a:active {
+ background-color: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #fff !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a small,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a:active small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li > a.opt {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ color: #333333;
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:active small {
+ color: #70c8e7 !important;
+ color: rgba(225, 255, 255, 0.5) !important;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:hover small,
+ .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:focus small {
+ color: #999999;
+ }
+ .navbar-pf .navbar-nav .context-bootstrap-select > .open > .dropdown-menu {
+ padding-bottom: 5px;
+ padding-top: 5px;
+ }
+}
+.navbar-pf .navbar-persistent {
+ display: none;
+}
+.navbar-pf .active > .navbar-persistent {
+ display: block;
+}
+.navbar-pf .navbar-primary {
+ float: none;
+}
+.navbar-pf .navbar-primary .context {
+ border-bottom: 1px solid #53565b;
+}
+.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,
+.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*="span"] {
+ margin: 8px 20px 9px;
+ width: auto;
+}
+.navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a {
+ position: relative;
+}
+.navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a:after {
+ content: "\f107";
+ display: inline-block;
+ font-family: "FontAwesome";
+ font-weight: normal;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a:after {
+ height: 10px;
+ margin-left: 4px;
+ vertical-align: baseline;
+ }
+}
+.navbar-pf .navbar-toggle {
+ border: 0;
+ margin: 0;
+ padding: 10px 20px;
+}
+.navbar-pf .navbar-toggle:hover,
+.navbar-pf .navbar-toggle:focus {
+ background-color: transparent;
+ outline: none;
+}
+.navbar-pf .navbar-toggle:hover .icon-bar,
+.navbar-pf .navbar-toggle:focus .icon-bar {
+ -webkit-box-shadow: 0 0 3px #ffffff;
+ box-shadow: 0 0 3px #ffffff;
+}
+.navbar-pf .navbar-toggle .icon-bar {
+ background-color: #ffffff;
+}
+.navbar-pf .navbar-utility {
+ border-bottom: 1px solid #53565b;
+}
+.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle {
+ padding-left: 36px;
+ position: relative;
+}
+.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user {
+ left: 20px;
+ position: absolute;
+ top: 10px;
+}
+@media (max-width: 767px) {
+ .navbar-pf .navbar-utility > li + li {
+ border-top: 1px solid #53565b;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-pf .navbar-brand {
+ padding: 7px 0 8px;
+ }
+ .navbar-pf .navbar-nav > li > a {
+ padding-bottom: 14px;
+ padding-top: 14px;
+ }
+ .navbar-pf .navbar-persistent {
+ font-size: 14px;
+ }
+ .navbar-pf .navbar-primary {
+ font-size: 14px;
+ background-image: -webkit-linear-gradient(top, #474c50 0%, #383f43 100%);
+ background-image: -o-linear-gradient(top, #474c50 0%, #383f43 100%);
+ background-image: linear-gradient(to bottom, #474c50 0%, #383f43 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff474c50', endColorstr='#ff383f43', GradientType=0);
+ }
+ .navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu {
+ top: auto;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu {
+ bottom: -5px;
+ top: auto;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li {
+ position: static;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li.active {
+ margin-bottom: 32px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li.active > .navbar-persistent {
+ display: block;
+ left: 0;
+ position: absolute;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent {
+ background: #f6f6f6;
+ border-bottom: 1px solid #cecdcd;
+ padding: 0;
+ width: 100%;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent a {
+ text-decoration: none !important;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:before,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:hover:before {
+ background: #0099d3;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 20px;
+ position: absolute;
+ right: 20px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active > a,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active > a:hover,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:hover > a {
+ color: #0099d3 !important;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active .active > a {
+ color: #ffffff;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu:hover > .dropdown-menu {
+ display: none;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-menu {
+ display: block;
+ left: 20px;
+ margin-top: 1px;
+ top: 100%;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-toggle {
+ color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-toggle:after {
+ border-top-color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu > .dropdown-toggle {
+ padding-right: 35px !important;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu > .dropdown-toggle:after {
+ position: absolute;
+ right: 20px;
+ top: 10px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover:before,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open:before {
+ background: #aaaaaa;
+ bottom: -1px;
+ content: '';
+ display: block;
+ height: 2px;
+ left: 20px;
+ position: absolute;
+ right: 20px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover > a,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open > a {
+ color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover > a:after,
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open > a:after {
+ border-top-color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a {
+ background-color: transparent;
+ display: block;
+ line-height: 1;
+ padding: 9px 20px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a.dropdown-toggle {
+ padding-right: 35px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a.dropdown-toggle:after {
+ font-size: 15px;
+ position: absolute;
+ right: 20px;
+ top: 9px;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a:hover {
+ color: #222222;
+ }
+ .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li a {
+ color: #4d5258;
+ }
+ .navbar-pf .navbar-primary > li > a {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ position: relative;
+ margin: -1px 0 0;
+ }
+ .navbar-pf .navbar-primary > li > a:hover {
+ background-color: #4b5053;
+ border-top-color: #949699;
+ color: #dbdada;
+ background-image: -webkit-linear-gradient(top, #5c6165 0%, #4b5053 100%);
+ background-image: -o-linear-gradient(top, #5c6165 0%, #4b5053 100%);
+ background-image: linear-gradient(to bottom, #5c6165 0%, #4b5053 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5c6165', endColorstr='#ff4b5053', GradientType=0);
+ }
+ .navbar-pf .navbar-primary > .active > a,
+ .navbar-pf .navbar-primary > .active > a:hover,
+ .navbar-pf .navbar-primary > .active > a:focus,
+ .navbar-pf .navbar-primary > .open > a,
+ .navbar-pf .navbar-primary > .open > a:hover,
+ .navbar-pf .navbar-primary > .open > a:focus {
+ background-color: #64686c;
+ border-bottom-color: #64686c;
+ border-top-color: #949699;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #ffffff;
+ background-image: -webkit-linear-gradient(top, #72757a 0%, #64686c 100%);
+ background-image: -o-linear-gradient(top, #72757a 0%, #64686c 100%);
+ background-image: linear-gradient(to bottom, #72757a 0%, #64686c 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff72757a', endColorstr='#ff64686c', GradientType=0);
+ }
+ .navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option {
+ max-width: 160px;
+ text-overflow: ellipsis;
+ }
+ .navbar-pf .navbar-primary li.context.dropdown {
+ border-bottom: 0;
+ }
+ .navbar-pf .navbar-primary li.context > a,
+ .navbar-pf .navbar-primary li.context.context-bootstrap-select {
+ background-color: #505458;
+ border-bottom-color: #65696d;
+ border-right: 1px solid #65696d;
+ border-top-color: #64696d;
+ font-weight: 600;
+ background-image: -webkit-linear-gradient(top, #585d61 0%, #505458 100%);
+ background-image: -o-linear-gradient(top, #585d61 0%, #505458 100%);
+ background-image: linear-gradient(to bottom, #585d61 0%, #505458 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff585d61', endColorstr='#ff505458', GradientType=0);
+ }
+ .navbar-pf .navbar-primary li.context > a:hover,
+ .navbar-pf .navbar-primary li.context.context-bootstrap-select:hover {
+ background-color: #5a5e62;
+ border-bottom-color: #6e7276;
+ border-right-color: #6e7276;
+ border-top-color: #6c7276;
+ background-image: -webkit-linear-gradient(top, #62676b 0%, #5a5e62 100%);
+ background-image: -o-linear-gradient(top, #62676b 0%, #5a5e62 100%);
+ background-image: linear-gradient(to bottom, #62676b 0%, #5a5e62 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62676b', endColorstr='#ff5a5e62', GradientType=0);
+ }
+ .navbar-pf .navbar-primary li.context.open > a {
+ background-color: #65696d;
+ border-bottom-color: #6e7276;
+ border-right-color: #777a7e;
+ border-top-color: #767a7e;
+ background-image: -webkit-linear-gradient(top, #6b7175 0%, #65696d 100%);
+ background-image: -o-linear-gradient(top, #6b7175 0%, #65696d 100%);
+ background-image: linear-gradient(to bottom, #6b7175 0%, #65696d 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff6b7175', endColorstr='#ff65696d', GradientType=0);
+ }
+ .navbar-pf .navbar-utility {
+ border-bottom: 0;
+ font-size: 11px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
+ .navbar-pf .navbar-utility > .active > a,
+ .navbar-pf .navbar-utility > .active > a:hover,
+ .navbar-pf .navbar-utility > .active > a:focus,
+ .navbar-pf .navbar-utility > .open > a,
+ .navbar-pf .navbar-utility > .open > a:hover,
+ .navbar-pf .navbar-utility > .open > a:focus {
+ background: #5b6165;
+ color: #ffffff;
+ }
+ .navbar-pf .navbar-utility > li > a {
+ border-left: 1px solid #53565b;
+ color: #ffffff !important;
+ padding: 7px 10px;
+ }
+ .navbar-pf .navbar-utility > li > a:hover {
+ background: #4a5053;
+ border-left-color: #636466;
+ }
+ .navbar-pf .navbar-utility > li.open > a {
+ border-left-color: #6c6e70;
+ color: #ffffff !important;
+ }
+ .navbar-pf .navbar-utility li.dropdown > .dropdown-toggle {
+ padding-left: 26px;
+ }
+ .navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user {
+ left: 10px;
+ top: 7px;
+ }
+ .navbar-pf .navbar-utility .open .dropdown-menu {
+ left: auto;
+ right: 0;
+ }
+ .navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu {
+ left: auto;
+ right: 100%;
+ }
+ .navbar-pf .open .dropdown-menu {
+ border-top-width: 0 !important;
+ }
+ .navbar-pf .open.bootstrap-select .dropdown-menu,
+ .navbar-pf .open .dropdown-submenu > .dropdown-menu {
+ border-top-width: 1px !important;
+ }
+}
+@media (max-width: 360px) {
+ .navbar-pf .navbar-brand {
+ margin-left: 10px;
+ width: 75%;
+ }
+ .navbar-pf .navbar-brand img {
+ height: auto;
+ max-width: 100%;
+ }
+ .navbar-pf .navbar-toggle {
+ padding-left: 0;
+ }
+}
+.search-pf.has-button {
+ border-collapse: separate;
+ display: table;
+}
+.search-pf.has-button .form-group {
+ display: table-cell;
+ width: 100%;
+}
+.search-pf.has-button .form-group .btn {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ float: left;
+ margin-left: -1px;
+}
+.search-pf.has-button .form-group .btn.btn-lg {
+ font-size: 14.5px;
+}
+.search-pf.has-button .form-group .btn.btn-sm {
+ font-size: 10.7px;
+}
+.search-pf.has-button .form-group .form-control {
+ float: left;
+}
+.search-pf .has-clear .clear {
+ background: transparent;
+ background: rgba(255, 255, 255, 0);
+ border: 0;
+ height: 25px;
+ line-height: 1;
+ padding: 0;
+ position: absolute;
+ right: 1px;
+ top: 1px;
+ width: 28px;
+}
+.search-pf .has-clear .clear:focus {
+ outline: none;
+}
+.search-pf .has-clear .form-control {
+ padding-right: 30px;
+}
+.search-pf .has-clear .form-control::-ms-clear {
+ display: none;
+}
+.search-pf .has-clear .input-lg + .clear {
+ height: 31px;
+ width: 28px;
+}
+.search-pf .has-clear .input-sm + .clear {
+ height: 20px;
+ width: 28px;
+}
+.search-pf .has-clear .input-sm + .clear span {
+ font-size: 10px;
+}
+.search-pf .has-clear .search-pf-input-group {
+ position: relative;
+}
+.sidebar-header {
+ border-bottom: 1px solid #e9e9e9;
+ padding-bottom: 11px;
+ margin: 50px 0 20px;
+}
+.sidebar-header .actions {
+ margin-top: -2px;
+}
+.sidebar-pf .sidebar-header + .list-group {
+ border-top: 0;
+ margin-top: -10px;
+}
+.sidebar-pf .sidebar-header + .list-group .list-group-item {
+ background: transparent;
+ border-color: #e9e9e9;
+ padding-left: 0;
+}
+.sidebar-pf .sidebar-header + .list-group .list-group-item-heading {
+ font-size: 12px;
+}
+.sidebar-pf .nav-category h2 {
+ color: #999999;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 21px;
+ margin: 0;
+ padding: 8px 0;
+}
+.sidebar-pf .nav-category + .nav-category {
+ margin-top: 10px;
+}
+.sidebar-pf .nav-pills > li.active > a {
+ background: #0099d3 !important;
+ border-color: #0076b7 !important;
+ color: #fff;
+}
+@media (min-width: 768px) {
+ .sidebar-pf .nav-pills > li.active > a:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 1px;
+ }
+}
+.sidebar-pf .nav-pills > li.active > a .fa {
+ color: #fff;
+}
+.sidebar-pf .nav-pills > li > a {
+ border-bottom: 1px solid transparent;
+ border-radius: 0;
+ border-top: 1px solid transparent;
+ color: #333333;
+ font-size: 13px;
+ line-height: 21px;
+ padding: 1px 20px;
+}
+.sidebar-pf .nav-pills > li > a:hover {
+ background: #d4edfa;
+ border-color: #b3d3e7;
+}
+.sidebar-pf .nav-pills > li > a .fa {
+ color: #6a7079;
+ font-size: 15px;
+ margin-right: 10px;
+ text-align: center;
+ vertical-align: middle;
+ width: 15px;
+}
+.sidebar-pf .nav-stacked {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+.sidebar-pf .nav-stacked li + li {
+ margin-top: 0;
+}
+.sidebar-pf .panel {
+ background: transparent;
+}
+.sidebar-pf .panel-body {
+ padding: 6px 20px;
+}
+.sidebar-pf .panel-body .nav-pills > li > a {
+ padding-left: 37px;
+}
+.sidebar-pf .panel-heading {
+ padding: 9px 20px;
+}
+.sidebar-pf .panel-title {
+ font-size: 12px;
+}
+.sidebar-pf .panel-title > a:before {
+ display: inline-block;
+ margin-left: 1px;
+ margin-right: 4px;
+ width: 9px;
+}
+.sidebar-pf .panel-title > a.collapsed:before {
+ margin-left: 3px;
+ margin-right: 2px;
+}
+@media (min-width: 767px) {
+ .sidebar-header-bleed-left {
+ margin-left: -20px;
+ }
+ .sidebar-header-bleed-left > h2 {
+ margin-left: 20px;
+ }
+ .sidebar-header-bleed-right {
+ margin-right: -20px;
+ }
+ .sidebar-header-bleed-right .actions {
+ margin-right: 20px;
+ }
+ .sidebar-header-bleed-right > h2 {
+ margin-right: 20px;
+ }
+ .sidebar-header-bleed-right + .list-group {
+ margin-right: -20px;
+ }
+ .sidebar-pf .panel-group .panel-default,
+ .sidebar-pf .treeview {
+ border-left: 0;
+ border-right: 0;
+ margin-left: -20px;
+ margin-right: -20px;
+ }
+ .sidebar-pf .treeview {
+ margin-top: 5px;
+ }
+ .sidebar-pf .treeview .list-group-item {
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+ .sidebar-pf .treeview .list-group-item.node-selected:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ display: block;
+ position: absolute;
+ right: 10px;
+ top: 1px;
+ }
+}
+@media (min-width: 768px) {
+ .sidebar-pf {
+ background: #fafafa;
+ }
+ .sidebar-pf.sidebar-pf-left {
+ border-right: 1px solid #d0d0d0;
+ }
+ .sidebar-pf.sidebar-pf-right {
+ border-left: 1px solid #d0d0d0;
+ }
+ .sidebar-pf > .nav-category,
+ .sidebar-pf > .nav-stacked {
+ margin-top: 5px;
+ }
+}
+@-webkit-keyframes rotation {
+ from {
+ -webkit-transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(359deg);
+ }
+}
+@keyframes rotation {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(359deg);
+ }
+}
+.spinner {
+ -webkit-animation: rotation .6s infinite linear;
+ animation: rotation .6s infinite linear;
+ border-bottom: 4px solid rgba(0, 0, 0, 0.25);
+ border-left: 4px solid rgba(0, 0, 0, 0.25);
+ border-right: 4px solid rgba(0, 0, 0, 0.25);
+ border-radius: 100%;
+ border-top: 4px solid rgba(0, 0, 0, 0.75);
+ height: 24px;
+ margin: 0 auto;
+ position: relative;
+ width: 24px;
+}
+.spinner.spinner-inline {
+ display: inline-block;
+ margin-right: 3px;
+}
+.spinner.spinner-lg {
+ border-width: 5px;
+ height: 30px;
+ width: 30px;
+}
+.spinner.spinner-sm {
+ border-width: 3px;
+ height: 18px;
+ width: 18px;
+}
+.spinner.spinner-xs {
+ border-width: 2px;
+ height: 12px;
+ width: 12px;
+}
+.ie9 .spinner {
+ background: url("../img/spinner.gif") no-repeat;
+ border: 0;
+}
+.ie9 .spinner.spinner-lg {
+ background-image: url("../img/spinner-lg.gif");
+}
+.ie9 .spinner.spinner-sm {
+ background-image: url("../img/spinner-sm.gif");
+}
+.ie9 .spinner.spinner-xs {
+ background-image: url("../img/spinner-xs.gif");
+}
+.prettyprint .atn,
+.prettyprint .com,
+.prettyprint .fun,
+.prettyprint .var {
+ color: #3f9c35;
+}
+.prettyprint .atv,
+.prettyprint .str {
+ color: #a30000;
+}
+.prettyprint .clo,
+.prettyprint .dec,
+.prettyprint .kwd,
+.prettyprint .opn,
+.prettyprint .pln,
+.prettyprint .pun {
+ color: #333333;
+}
+.prettyprint .lit,
+.prettyprint .tag,
+.prettyprint .typ {
+ color: #006e9c;
+}
+.prettyprint ol.linenums {
+ margin-bottom: 0;
+}
+/* Bootstrap overrides */
+/* RCUE-specific */
+.login-pf {
+ background-color: #1a1a1a;
+}
+@media (min-width: 768px) {
+ .login-pf {
+ background-image: url("../img/bg-login-2.png");
+ background-position: 100% 100%;
+ background-repeat: no-repeat;
+ background-size: 30%;
+ }
+}
+@media (min-width: 992px) {
+ .login-pf {
+ background-size: auto;
+ }
+}
+.login-pf #badge {
+ margin-bottom: 50px;
+}
+.login-pf body {
+ background: transparent;
+}
+@media (min-width: 768px) {
+ .login-pf body {
+ background-image: url("../img/bg-login.png");
+ background-repeat: no-repeat;
+ background-size: 30%;
+ height: 100%;
+ }
+}
+@media (min-width: 992px) {
+ .login-pf body {
+ background-size: auto;
+ }
+}
+.login-pf #brand {
+ top: -30px;
+}
+@media (min-width: 768px) {
+ .login-pf #brand {
+ top: -40px;
+ }
+ .login-pf #brand + .alert {
+ margin-top: -20px;
+ }
+}
+.login-pf .container {
+ padding-top: 0;
+}
+@media (min-width: 992px) {
+ .login-pf .container {
+ bottom: 20%;
+ padding-right: 120px;
+ }
+}
+/*# sourceMappingURL=rcue-additions.css.map */
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.css.map
new file mode 100644
index 0000000..c214245
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["components/patternfly/components/bootstrap-combobox/less/combobox.less","components/patternfly/components/bootstrap-datepicker/less/datepicker3.less","components/patternfly/components/bootstrap/less/mixins/buttons.less","components/patternfly/components/bootstrap-select/less/bootstrap-select.less","components/patternfly/components/c3/c3.css","components/patternfly/less/blank-slate.less","components/patternfly/less/bootstrap-combobox.less","components/patternfly/less/variables.less","components/patternfly/less/mixins.less","components/patternfly/components/bootstrap/less/mixins/gradients.less","components/patternfly/components/bootstrap/less/mixins/vendor-prefixes.less","components/patternfly/less/bootstrap-datepicker.less","components/patternfly/less/bootstrap-select.less","components/patternfly/less/bootstrap-treeview.less","components/patternfly/less/cards.less","components/patternfly/less/charts.less","components/patternfly/components/bootstrap/less/mixins/opacity.less","components/patternfly/less/close.less","components/patternfly/less/datatables.less","components/patternfly/components/bootstrap/less/mixins/reset-filter.less","components/patternfly/components/font-awesome/less/variables.less","components/patternfly/less/icons.less","components/patternfly/less/infotip.less","components/patternfly/less/login.less","components/patternfly/less/navbar.less","components/patternfly/less/search.less","components/patternfly/less/sidebar.less","components/patternfly/less/spinner.less","components/patternfly/less/syntax-highlighting.less","less/login.less"],"names":[],"mappings":"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","sourcesContent":[".form-search, .form-inline {\n .combobox-container {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: top;\n .input-group-addon{\n width: auto;\n }\n }\n}\n\n.combobox-selected .caret {\n display: none;\n}\n\n/* :not doesn't work in IE8 */\n.combobox-container:not(.combobox-selected) .glyphicon-remove {\n display: none;\n}\n\n.typeahead-long {\n max-height: 300px;\n overflow-y: auto;\n}\n\n.control-group.error .combobox-container{\n .add-on {\n color: #B94A48;\n border-color: #B94A48;\n }\n .caret {\n border-top-color: #B94A48;\n }\n}\n\n.control-group.warning .combobox-container {\n .add-on {\n color: #C09853;\n border-color: #C09853;\n }\n .caret {\n border-top-color: #C09853;\n }\n}\n\n.control-group.success .combobox-container{\n .add-on {\n color: #468847;\n border-color: #468847;\n }\n .caret {\n border-top-color: #468847;\n }\n}\n",".datepicker {\n\tpadding: 4px;\n\tborder-radius: 4px;\n\t&-inline {\n\t\twidth: 220px;\n\t}\n\tdirection: ltr;\n\t&&-rtl {\n\t\tdirection: rtl;\n\t\ttable tr td span {\n\t\t\tfloat: right;\n\t\t}\n\t}\n\t&-dropdown {\n\t\ttop: 0;\n\t\tleft: 0;\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left: 7px solid transparent;\n\t\t\tborder-right: 7px solid transparent;\n\t\t\tborder-bottom: 7px solid #ccc;\n\t\t\tborder-top: 0;\n\t\t\tborder-bottom-color: rgba(0,0,0,.2);\n\t\t\tposition: absolute;\n\t\t}\n\t\t&:after {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left: 6px solid transparent;\n\t\t\tborder-right: 6px solid transparent;\n\t\t\tborder-bottom: 6px solid #fff;\n\t\t\tborder-top: 0;\n\t\t\tposition: absolute;\n\t\t}\n\t\t&.datepicker-orient-left:before { left: 6px; }\n\t\t&.datepicker-orient-left:after { left: 7px; }\n\t\t&.datepicker-orient-right:before { right: 6px; }\n\t\t&.datepicker-orient-right:after { right: 7px; }\n\t\t&.datepicker-orient-top:before { top: -7px; }\n\t\t&.datepicker-orient-top:after { top: -6px; }\n\t\t&.datepicker-orient-bottom:before {\n\t\t\tbottom: -7px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top: 7px solid #999;\n\t\t}\n\t\t&.datepicker-orient-bottom:after {\n\t\t\tbottom: -6px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top: 6px solid #fff;\n\t\t}\n\t}\n\t> div {\n\t\tdisplay: none;\n\t}\n\t&.days .datepicker-days,\n\t&.months .datepicker-months,\n\t&.years .datepicker-years {\n\t\tdisplay: block;\n\t}\n\ttable {\n\t\tmargin: 0;\n\t\t-webkit-touch-callout: none;\n\t\t-webkit-user-select: none;\n\t\t-khtml-user-select: none;\n\t\t-moz-user-select: none;\n\t\t-ms-user-select: none;\n\t\tuser-select: none;\n\t\ttr {\n\t\t\ttd, th {\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\tborder-radius: 4px;\n\n\t\t\t\tborder: none;\n\t\t\t}\n\t\t}\n\t}\n\t// Inline display inside a table presents some problems with\n\t// border and background colors.\n\t.table-striped & table tr {\n\t\ttd, th {\n\t\t\tbackground-color:transparent;\n\t\t}\n\t}\n\ttable tr td {\n\t\t&.day:hover, &.day.focused {\n\t\t\tbackground: @gray-lighter;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&.old,\n\t\t&.new {\n\t\t\tcolor: @btn-link-disabled-color;\n\t\t}\n\t\t&.disabled,\n\t\t&.disabled:hover {\n\t\t\tbackground: none;\n\t\t\tcolor: @btn-link-disabled-color;\n\t\t\tcursor: default;\n\t\t}\n\t\t&.today,\n\t\t&.today:hover,\n\t\t&.today.disabled,\n\t\t&.today.disabled:hover {\n\t\t\t@today-bg: lighten(orange, 30%);\n\t\t\t.button-variant(#000, @today-bg, darken(@today-bg, 20%));\n\t\t}\n\t\t&.today:hover:hover { // Thank bootstrap 2.0 for this selector...\n\t\t\t// TODO: Bump min BS to 2.1, use @textColor in buttonBackground above\n\t\t\tcolor: #000;\n\t\t}\n\t\t&.today.active:hover {\n\t\t\tcolor: #fff;\n\t\t}\n\t\t&.range,\n\t\t&.range:hover,\n\t\t&.range.disabled,\n\t\t&.range.disabled:hover {\n\t\t\tbackground:@gray-lighter;\n\t\t\tborder-radius: 0;\n\t\t}\n\t\t&.range.today,\n\t\t&.range.today:hover,\n\t\t&.range.today.disabled,\n\t\t&.range.today.disabled:hover {\n\t\t\t@today-bg: mix(orange, @gray-lighter, 50%);\n\t\t\t.button-variant(#000, @today-bg, darken(@today-bg, 20%));\n\t\t\tborder-radius: 0;\n\t\t}\n\t\t&.selected,\n\t\t&.selected:hover,\n\t\t&.selected.disabled,\n\t\t&.selected.disabled:hover {\n\t\t\t.button-variant(#fff, @gray-light, @gray);\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\t&.active,\n\t\t&.active:hover,\n\t\t&.active.disabled,\n\t\t&.active.disabled:hover {\n\t\t\t.button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border);\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\tspan {\n\t\t\tdisplay: block;\n\t\t\twidth: 23%;\n\t\t\theight: 54px;\n\t\t\tline-height: 54px;\n\t\t\tfloat: left;\n\t\t\tmargin: 1%;\n\t\t\tcursor: pointer;\n\t\t\tborder-radius: 4px;\n\t\t\t&:hover {\n\t\t\t\tbackground: @gray-lighter;\n\t\t\t}\n\t\t\t&.disabled,\n\t\t\t&.disabled:hover {\n\t\t\t\tbackground: none;\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t\tcursor: default;\n\t\t\t}\n\t\t\t&.active,\n\t\t\t&.active:hover,\n\t\t\t&.active.disabled,\n\t\t\t&.active.disabled:hover {\n\t\t\t\t.button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border);\n\t\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t\t}\n\t\t\t&.old,\n\t\t\t&.new {\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t}\n\t\t}\n\t}\n\n\t.datepicker-switch {\n\t\twidth: 145px;\n\t}\n\n\tthead tr:first-child th,\n\ttfoot tr th {\n\t\tcursor: pointer;\n\t\t&:hover {\n\t\t\tbackground: @gray-lighter;\n\t\t}\n\t}\n\n\t// Basic styling for calendar-week cells\n\t.cw {\n\t\tfont-size: 10px;\n\t\twidth: 12px;\n\t\tpadding: 0 2px 0 5px;\n\t\tvertical-align: middle;\n\t}\n\tthead tr:first-child .cw {\n\t\tcursor: default;\n\t\tbackground-color: transparent;\n\t}\n}\n.input-group.date .input-group-addon {\n\tcursor: pointer;\n}\n.input-daterange {\n\twidth: 100%;\n\tinput {\n\t\ttext-align:center;\n\t}\n\tinput:first-child {\n\t\tborder-radius: 3px 0 0 3px;\n\t}\n\tinput:last-child {\n\t\tborder-radius: 0 3px 3px 0;\n\t}\n\t.input-group-addon {\n\t\twidth: auto;\n\t\tmin-width: 16px;\n\t\tpadding: 4px 5px;\n\t\tfont-weight: normal;\n\t\tline-height: @line-height-base;\n\t\ttext-align: center;\n\t\ttext-shadow: 0 1px 0 #fff;\n\t\tvertical-align: middle;\n\t\tbackground-color: @input-group-addon-bg;\n\t\tborder: solid @input-group-addon-border-color;\n\t\tborder-width: 1px 0;\n\t\tmargin-left:-5px;\n\t\tmargin-right:-5px;\n\t}\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","@import \"variables\";\n\n// Mixins\n.cursor-disabled() {\n cursor: not-allowed;\n}\n\n// Rules\n.bootstrap-select {\n width: 220px \\0; /*IE9 and below*/\n\n // The selectpicker button\n > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n }\n\n // Error display\n .has-error & .dropdown-toggle,\n .error & .dropdown-toggle {\n border-color: @color-red-error;\n }\n\n &.fit-width {\n width: auto !important;\n }\n\n &:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: @width-default;\n }\n\n .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n }\n}\n\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n\n &:not([class*=\"col-\"]) {\n width: 100%;\n }\n\n &.input-group-btn {\n z-index: auto;\n }\n}\n\n// The selectpicker components\n.bootstrap-select.btn-group {\n &:not(.input-group-btn),\n &[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n }\n\n // Forces the pull to the right, if necessary\n &,\n &[class*=\"col-\"],\n .row &[class*=\"col-\"] {\n &.dropdown-menu-right {\n float: right;\n }\n }\n\n .form-inline &,\n .form-horizontal &,\n .form-group & {\n margin-bottom: 0;\n }\n\n .form-group-lg &.form-control,\n .form-group-sm &.form-control {\n padding: 0;\n }\n\n // Set the width of the live search (and any other form control within an inline form)\n // see https://github.com/silviomoreto/bootstrap-select/issues/685\n .form-inline & .form-control {\n width: 100%;\n }\n\n &.disabled,\n > .disabled {\n .cursor-disabled();\n\n &:focus {\n outline: none !important;\n }\n }\n\n // The selectpicker button\n .dropdown-toggle {\n .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n }\n\n .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n }\n }\n\n &[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n }\n\n // The selectpicker dropdown\n .dropdown-menu {\n min-width: 100%;\n z-index: @zindex-select-dropdown;\n box-sizing: border-box;\n\n &.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n }\n\n li {\n position: relative;\n\n &.active small {\n color: #fff;\n }\n\n &.disabled a {\n .cursor-disabled();\n }\n\n a {\n cursor: pointer;\n\n &.opt {\n position: relative;\n padding-left: 2.25em;\n }\n\n span.check-mark {\n display: none;\n }\n\n span.text {\n display: inline-block;\n }\n }\n\n small {\n padding-left: 0.5em;\n }\n }\n\n .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: rgb(245, 245, 245);\n border: 1px solid rgb(227, 227, 227);\n box-shadow: inset 0 1px 1px fade(rgb(0, 0, 0), 5%);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n }\n }\n\n .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n }\n\n &.fit-width .dropdown-toggle {\n .filter-option {\n position: static;\n }\n\n .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n }\n }\n\n &.show-tick .dropdown-menu li {\n &.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n }\n\n a span.text {\n margin-right: 34px;\n }\n }\n}\n\n.bootstrap-select.show-menu-arrow {\n &.open > .dropdown-toggle {\n z-index: (@zindex-select-dropdown + 1);\n }\n\n .dropdown-toggle {\n &:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid @color-grey-arrow;\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n }\n\n &:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n }\n }\n\n &.dropup .dropdown-toggle {\n &:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid @color-grey-arrow;\n border-bottom: 0;\n }\n\n &:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n }\n }\n\n &.pull-right .dropdown-toggle {\n &:before {\n right: 12px;\n left: auto;\n }\n\n &:after {\n right: 13px;\n left: auto;\n }\n }\n\n &.open > .dropdown-toggle {\n &:before,\n &:after {\n display: block;\n }\n }\n}\n\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n\n.bs-actionsbox {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 50%;\n }\n}\n\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 100%;\n }\n}\n\n.bs-searchbox {\n & + .bs-actionsbox {\n padding: 0 8px 4px;\n }\n\n & .form-control {\n margin-bottom: 0;\n width: 100%;\n }\n}\n\nselect.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\n\nselect.mobile-device {\n position: absolute !important;\n top: 0;\n left: 0;\n display: block !important;\n width: 100%;\n height: 100% !important;\n opacity: 0;\n}\n","/*-- Chart --*/\n.c3 svg {\n font: 10px sans-serif; }\n\n.c3 path, .c3 line {\n fill: none;\n stroke: #000; }\n\n.c3 text {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none; }\n\n.c3-legend-item-tile, .c3-xgrid-focus, .c3-ygrid, .c3-event-rect, .c3-bars path {\n shape-rendering: crispEdges; }\n\n.c3-chart-arc path {\n stroke: #fff; }\n\n.c3-chart-arc text {\n fill: #fff;\n font-size: 13px; }\n\n/*-- Axis --*/\n/*-- Grid --*/\n.c3-grid line {\n stroke: #aaa; }\n\n.c3-grid text {\n fill: #aaa; }\n\n.c3-xgrid, .c3-ygrid {\n stroke-dasharray: 3 3; }\n\n/*-- Text on Chart --*/\n.c3-text.c3-empty {\n fill: #808080;\n font-size: 2em; }\n\n/*-- Line --*/\n.c3-line {\n stroke-width: 1px; }\n\n/*-- Point --*/\n.c3-circle._expanded_ {\n stroke-width: 1px;\n stroke: white; }\n\n.c3-selected-circle {\n fill: white;\n stroke-width: 2px; }\n\n/*-- Bar --*/\n.c3-bar {\n stroke-width: 0; }\n\n.c3-bar._expanded_ {\n fill-opacity: 0.75; }\n\n/*-- Focus --*/\n.c3-target.c3-focused {\n opacity: 1; }\n\n.c3-target.c3-focused path.c3-line, .c3-target.c3-focused path.c3-step {\n stroke-width: 2px; }\n\n.c3-target.c3-defocused {\n opacity: 0.3 !important; }\n\n/*-- Region --*/\n.c3-region {\n fill: steelblue;\n fill-opacity: 0.1; }\n\n/*-- Brush --*/\n.c3-brush .extent {\n fill-opacity: 0.1; }\n\n/*-- Select - Drag --*/\n/*-- Legend --*/\n.c3-legend-item {\n font-size: 12px; }\n\n.c3-legend-item-hidden {\n opacity: 0.15; }\n\n.c3-legend-background {\n opacity: 0.75;\n fill: white;\n stroke: lightgray;\n stroke-width: 1; }\n\n/*-- Tooltip --*/\n.c3-tooltip-container {\n z-index: 10; }\n\n.c3-tooltip {\n border-collapse: collapse;\n border-spacing: 0;\n background-color: #fff;\n empty-cells: show;\n -webkit-box-shadow: 7px 7px 12px -9px #777777;\n -moz-box-shadow: 7px 7px 12px -9px #777777;\n box-shadow: 7px 7px 12px -9px #777777;\n opacity: 0.9; }\n\n.c3-tooltip tr {\n border: 1px solid #CCC; }\n\n.c3-tooltip th {\n background-color: #aaa;\n font-size: 14px;\n padding: 2px 5px;\n text-align: left;\n color: #FFF; }\n\n.c3-tooltip td {\n font-size: 13px;\n padding: 3px 6px;\n background-color: #fff;\n border-left: 1px dotted #999; }\n\n.c3-tooltip td > span {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin-right: 6px; }\n\n.c3-tooltip td.value {\n text-align: right; }\n\n/*-- Area --*/\n.c3-area {\n stroke-width: 0;\n opacity: 0.2; }\n\n/*-- Arc --*/\n.c3-chart-arcs-title {\n dominant-baseline: middle;\n font-size: 1.3em; }\n\n.c3-chart-arcs .c3-chart-arcs-background {\n fill: #e0e0e0;\n stroke: none; }\n\n.c3-chart-arcs .c3-chart-arcs-gauge-unit {\n fill: #000;\n font-size: 16px; }\n\n.c3-chart-arcs .c3-chart-arcs-gauge-max {\n fill: #777; }\n\n.c3-chart-arcs .c3-chart-arcs-gauge-min {\n fill: #777; }\n\n.c3-chart-arc .c3-gauge-value {\n fill: #000;\n /* font-size: 28px !important;*/ }\n","//\n// Blank Slate\n// --------------------------------------------------\n\n.blank-slate-pf{\n @media (min-width: @screen-sm-min) {\n padding: @jumbotron-padding*2 @jumbotron-padding*2;\n }\n @media (min-width: @screen-md-min) {\n padding: @jumbotron-padding*3 @jumbotron-padding*4;\n }\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n margin-bottom: 20px;\n padding: @jumbotron-padding;\n text-align: center;\n .blank-slate-pf-icon{\n color: @gray-light;\n font-size: @font-size-h1 * 2.4;\n line-height: @font-size-h1 * 2.4;\n }\n .blank-slate-pf-main-action{\n margin-top: @line-height-computed;\n }\n .blank-slate-pf-secondary-action{\n margin-top: @line-height-computed;\n }\n}","//\n// Bootstrap-Combobox\n// --------------------------------------------------\n\n.combobox-container {\n &.combobox-selected .glyphicon-remove {\n display: inline-block;\n }\n .caret {\n margin-left: 0;\n }\n .combobox::-ms-clear {\n display: none;\n }\n .dropdown-menu {\n margin-top: -1px;\n width: 100%;\n }\n .glyphicon-remove {\n display: none;\n top: auto;\n width: 12px;\n &:before {\n content: \"\\e60b\";\n font-family: @icon-font-name-pf;\n }\n }\n .input-group-addon {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-bg-img-start; @btn-default-bg-img-stop; @btn-default-border);\n position: relative; // IE8\n &:active {\n .box-shadow(inset 0 2px 8px rgba(0,0,0,.2));\n }\n }\n}","//\n// Variables\n// --------------------------------------------------\n// Bootstrap overrides and PatternFly-specific variables\n\n// PatternFly-specific\n// -------------------\n@btn-default-bg-img-start: #fafafa;\n@btn-default-bg-img-stop: #ededed;\n@btn-xs-font-weight: 400;\n@card-pf-accented-border-top-color: #39a5dc;\n@card-pf-bg-color: #fff;\n@card-pf-border-color: #d1d1d1;\n@card-pf-border-top-color: transparent;\n@card-pf-container-bg-color: #f5f5f5;\n@card-pf-footer-bg-color: #fafafa;\n@dropdown-divider-margin: 4px 1px;\n@dropdown-link-active-border-color: #0076b7;\n@dropdown-link-hover-border-color: #b3d3e7;\n@dropdown-link-focus-color: #fff;\n@font-family-monospace: Menlo, Monaco, Consolas, monospace;\n@fa-font-path: \"../../components/font-awesome/fonts\";\n@font-path: \"../fonts\";\n@gray-light-pf: #aaa;\n@gray-pf: #4d5258;\n@icon-font-name-fa: \"FontAwesome\";\n@icon-font-name-pf: \"PatternFlyIcons-webfont\";\n@icon-prefix: pficon;\n@img-bg-login: \"bg-login.jpg\";\n@img-path: \"../img\";\n@img-spinner: \"spinner.gif\";\n@img-spinner-lg: \"spinner-lg.gif\";\n@img-spinner-sm: \"spinner-sm.gif\";\n@img-spinner-xs: \"spinner-xs.gif\";\n@input-border-disabled: #d4d4d4;\n@input-border-hover: #7BB2DD;\n@list-group-top-border: #e9e8e8;\n@login-bg-color: #080808;\n@login-container-bg-color: #181818;\n@login-container-bg-color-rgba: rgba(255, 255, 255, 0.055);\n@modal-title-padding-horizontal: 18px;\n@modal-title-padding-vertical: 10px;\n@navbar-pf-active-color: #f1f1f1;\n@navbar-pf-bg-color: #030303; //#393F45\n@navbar-pf-border-color: #199dde;\n@navbar-pf-color: #cfcfcf;\n@navbar-pf-icon-bar-bg-color: #fff;\n@navbar-pf-navbar-navbar-brand-min-width: 270px;\n@navbar-pf-navbar-navbar-brand-padding: 8px 0 7px;\n@navbar-pf-navbar-navbar-persistent-bg-color: #f6f6f6;\n@navbar-pf-navbar-navbar-persistent-border-color: #cecdcd;\n@pagination-padding-small-vertical: 0;\n@panel-default-border-color: #bebdbd;\n@sidebar-pf-bg: #fafafa;\n@sidebar-pf-border-color: #d0d0d0;\n@table-border-hover: #a7cadf;\n@table-cell-padding-bottom: 3px;\n@table-cell-padding-top: 2px;\n// Reference variables declared in block above\n@img-path-alt: @img-path;\n@navbar-pf-navbar-header-border-color: lighten(@navbar-pf-bg-color, 15%);\n@navbar-pf-navbar-nav-active-active-bg-color: lighten(@navbar-pf-bg-color, 8%);\n@navbar-pf-navbar-nav-active-active-open-bg-color: lighten(@navbar-pf-bg-color, 11%);\n@navbar-pf-navbar-nav-active-bg-color: lighten(@navbar-pf-bg-color, 12.5%);\n@navbar-pf-navbar-primary-bg-color-start: lighten(@navbar-pf-bg-color, 10%); // #474C50;\n@navbar-pf-navbar-primary-bg-color-stop: @navbar-pf-bg-color; // #383F43;\n@navbar-pf-navbar-utility-border-color: lighten(@navbar-pf-bg-color, 15.5%);\n@navbar-pf-navbar-utility-color: @navbar-pf-color;\n@navbar-pf-navbar-utility-hover-bg-color: lighten(@navbar-pf-bg-color, 12.5%);\n@nav-tabs-color: @gray-pf;\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-context-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 8.5%);\n@navbar-pf-navbar-primary-context-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 11%);\n@navbar-pf-navbar-primary-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-bg-color-start, 10%);\n@navbar-pf-navbar-primary-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-bg-color-stop, 10%);\n@navbar-pf-navbar-primary-hover-border-color: lighten(@navbar-pf-navbar-header-border-color, 20%);\n@navbar-pf-navbar-primary-context-border-color: lighten(@navbar-pf-navbar-header-border-color, 8%);\n@navbar-pf-navbar-primary-context-border-top-color: lighten(@navbar-pf-navbar-header-border-color, 7%);\n@navbar-pf-navbar-utility-hover-border-color: lighten(@navbar-pf-navbar-utility-border-color, 5%);\n@navbar-pf-navbar-utility-open-bg-color: lighten(@navbar-pf-navbar-utility-hover-bg-color, 7.5%);\n@navbar-pf-navbar-utility-open-border-color: lighten(@navbar-pf-navbar-utility-hover-border-color, 5%);\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-active-bg-color-start: lighten(@navbar-pf-navbar-primary-hover-bg-color-start, 5%);\n@navbar-pf-navbar-primary-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-hover-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-active-border-color: lighten(@navbar-pf-navbar-primary-hover-border-color, 5%);\n@navbar-pf-navbar-primary-context-hover-bg-color-start: lighten(@navbar-pf-navbar-primary-context-bg-color-start, 5%);\n@navbar-pf-navbar-primary-context-hover-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-context-hover-border-color: lighten(@navbar-pf-navbar-primary-context-border-color, 5%);\n@navbar-pf-navbar-primary-context-hover-border-top-color: lighten(@navbar-pf-navbar-primary-context-border-top-color, 6%);\n// Reference variables declared in block above\n@navbar-pf-navbar-primary-context-active-bg-color-start: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-start, 5%);\n@navbar-pf-navbar-primary-context-active-bg-color-stop: lighten(@navbar-pf-navbar-primary-context-hover-bg-color-stop, 7.5%);\n@navbar-pf-navbar-primary-context-active-border-color: lighten(@navbar-pf-navbar-primary-context-hover-border-color, 5%);\n@navbar-pf-navbar-primary-context-active-border-top-color: lighten(@navbar-pf-navbar-primary-context-hover-border-top-color, 6%);\n// References variable declared in block above\n@navbar-pf-navbar-primary-context-active-border-right-color: @navbar-pf-navbar-primary-context-active-border-color;\n\n\n// Bootstrap overrides\n// -------------------\n@alert-info-border: #ccc;\n@alert-link-font-weight: 500;\n@alert-padding: 7px;\n@body-bg: #ffffff;\n@border-radius-base: 1px;\n@brand-danger: #cc0000;\n@brand-info: #006e9c;\n@brand-primary: #00a8e1;\n@brand-success: #3f9c35;\n@brand-warning: #ec7a08;\n@breadcrumb-bg: transparent;\n@breadcrumb-separator: \"\\f105\";\n@btn-danger-bg: #a30000;\n@btn-danger-border: #781919;\n@btn-default-border: #b7b7b7;\n@btn-font-weight: 600;\n@btn-primary-bg: #0085cf;\n@btn-primary-border: #006e9c;\n@caret-width-base: 0;\n@dropdown-border: #b6b6b6;\n@dropdown-divider-bg: #e5e5e5;\n@dropdown-link-active-color: #fff;\n@dropdown-link-hover-bg: #d4edfa;\n@font-family-base: \"Open Sans\", Helvetica, Arial, sans-serif;\n@font-size-base: 12px;\n@gray-dark: lighten(#000, 20%); // #333\n@gray-darker: lighten(#000, 13.5%); // #222\n@gray-light: lighten(#000, 60%); // #999\n@gray-lighter: lighten(#000, 93.5%); // #eee\n@grid-gutter-width: 40px;\n@icon-font-path: \"../../components/bootstrap/dist/fonts/\";\n@input-bg-disabled: #F8F8F8;\n@input-border: #BABABA;\n@line-height-base: 1.66666667; // 20/12\n@link-color: #0099d3;\n@list-group-border: #f2f2f2;\n@list-group-border-radius: 0;\n@list-group-hover-bg: #d4edfa;\n@link-hover-color: #00618a;\n@nav-tabs-border-color: #e9e8e8;\n@nav-tabs-link-hover-border-color: transparent;\n@padding-large-horizontal: 10px;\n@padding-base-horizontal: 6px;\n@padding-base-vertical: 2px;\n@padding-large-vertical: 6px;\n@pager-border-radius: 0;\n@pager-disabled-color: #969696;\n@pagination-bg: #f5f5f5;\n@pagination-border: #bbbbbb;\n@pagination-hover-bg: #ededed;\n@panel-inner-border: #cecdcd;\n@popover-arrow-color: #fff;\n@popover-arrow-outer-color: #bbb;\n@popover-border-color: #bbb;\n@popover-max-width: 220px;\n@popover-title-bg: #f5f5f5;\n@pre-bg: #fcfcfc;\n@progress-bg: #ededed;\n@table-bg-accent: #f5f5f5;\n@table-bg-hover: #d5ecf9;\n@table-border-color: #d1d1d1;\n@table-cell-padding: 10px;\n@tooltip-arrow-width: 8px;\n@tooltip-bg: #434343;\n@tooltip-max-width: 220px;\n// Reference variables declared in block above\n@alert-danger-bg: @body-bg;\n@alert-danger-border: @brand-danger;\n@alert-danger-text: @gray-dark;\n@alert-info-bg: @body-bg;\n@alert-info-text: @gray-dark;\n@alert-success-bg: @body-bg;\n@alert-success-border: @brand-success;\n@alert-success-text: @gray-dark;\n@alert-warning-bg: @body-bg;\n@alert-warning-border: @brand-warning;\n@alert-warning-text: @gray-dark;\n@badge-border-radius: @border-radius-base;\n@border-radius-large: @border-radius-base;\n@border-radius-small: @border-radius-base;\n@breadcrumb-active-color: @gray-pf;\n@breadcrumb-color: @gray-pf;\n@btn-default-bg: @gray-lighter;\n@btn-default-color: @gray-pf;\n@caret-width-large: @caret-width-base;\n@dropdown-fallback-border: @dropdown-border;\n@dropdown-link-active-bg: @link-color;\n@dropdown-link-hover-color: @gray-pf;\n@font-size-h1: ceil(@font-size-base * 2); // ~24px\n@font-size-h2: ceil(@font-size-base * 1.8333); // ~22px\n@font-size-h3: ceil(@font-size-base * 1.3333); // ~16px\n@font-size-h5: ceil(@font-size-base * 1.0833); // ~13px\n@font-size-large: ceil(@font-size-base * 1.1666); // ~14px\n@font-size-small: ceil(@font-size-base * .9166); // ~11px\n@input-color: @gray-dark;\n@nav-tabs-active-link-hover-color: @link-color;\n@nav-tabs-justified-link-border-color: @nav-tabs-border-color;\n@padding-small-horizontal: @padding-base-horizontal;\n@padding-small-vertical: @padding-base-vertical;\n@panel-danger-border: @brand-danger;\n@panel-danger-heading-bg: @brand-danger;\n@panel-info-border: @brand-info;\n@panel-info-heading-bg: @brand-info;\n@panel-primary-text: @body-bg;\n@panel-success-border: @brand-success;\n@panel-success-heading-bg: @brand-success;\n@panel-warning-border: @brand-warning;\n@panel-warning-heading-bg: @brand-warning;\n@state-warning-text: @brand-warning;\n// Reference variable declared in block above\n@panel-danger-text: @panel-primary-text;\n@panel-info-text: @panel-primary-text;\n@panel-success-text: @panel-primary-text;\n@panel-warning-text: @panel-primary-text;\n\n// PatternFly-specific variables based on Bootstrap overides\n// ---------------------------------------------------------\n@btn-danger-bg-img-start: @brand-danger;\n@btn-danger-bg-img-stop: @btn-danger-bg;\n@btn-primary-bg-img-start: @brand-primary;\n@btn-primary-bg-img-stop: @btn-primary-bg;\n@dropdown-link-focus-bg: @link-color;\n@line-height-computed: floor((@font-size-base * @line-height-base));\n@progress-sm: @line-height-computed - 6;\n@progress-xs: @line-height-computed - 14;\n@syntax-1: @btn-danger-bg;\n@syntax-2: @gray-dark;\n@syntax-3: @brand-success;\n@syntax-4: @brand-info;\n@tooltip-font-size: @font-size-base;\n","//\n// Mixins\n// --------------------------------------------------\n// Bootstrap overrides and PatternFly-specific mixins\n\n// Bootstrap overrides\n// -------------------\n\n// Button variants\n.button-variant(@color; @background; @background-image-start; @background-image-stop; @border) {\n background-color: @background;\n #gradient > .vertical(@background-image-start, @background-image-stop);\n border-color: @border;\n color: @color;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-color: @background;\n background-image: none;\n border-color: @border;\n color: @color;\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n &:hover,\n &:focus,\n &.focus {\n background-color: darken(@background, 5%);\n border-color: darken(@border, 7%);\n }\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border\n }\n }\n}\n\n// Form control outline\n.form-control-outline(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0 !important;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Gradients\n#gradient {\n .striped(@color: rgba(0,0,0,.15); @angle: -45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);\n background-image: linear-gradient(@angle, @color 25%, @color 26%, transparent 27%, transparent 49%, @color 50%, @color 51%, transparent 52%, transparent 74%, @color 75%, @color 76%, transparent 77%);\n }\n}\n\n// Horizontal dividers\n.nav-divider(@color: #e5e5e5, @margin: 4px 1px) {\n background-color: @color;\n height: 1px;\n margin: @margin;\n overflow: hidden;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &:-moz-placeholder { color: @color; font-style: italic; } // Firefox 4-18\n &::-moz-placeholder { color: @color; font-style: italic;} // Firefox 19+\n &:-ms-input-placeholder { color: @color; font-style: italic; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; font-style: italic; } // Safari and Chrome\n}\n\n// PatternFly-specific\n// -------------------\n\n.tab-indicator(@background: @gray-light-pf, @left: 15px, @right: 15px) {\n &:before {\n background: @background;\n bottom: -1px;\n content: '';\n display: block;\n height: 2px;\n left: @left;\n position: absolute;\n right: @right;\n }\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","//\n// Bootstrap-Datepicker\n// --------------------------------------------------\n\n.datepicker {\n border-radius: @border-radius-base;\n .datepicker-switch, tfoot .today {\n font-size: @font-size-large;\n font-weight: 500;\n }\n .next, .prev {\n font-weight: 500;\n }\n table tr {\n td, th {\n border-radius: @border-radius-base;\n }\n td {\n &.active.active,\n &.active.active:hover,\n &.active.active.disabled,\n &.active.active.disabled:hover {\n background: @dropdown-link-active-bg !important;\n color: #fff !important;\n text-shadow: none;\n }\n &.day:hover, &.day.focused {\n background: @dropdown-link-hover-bg;\n }\n &.selected,\n &.selected:hover,\n &.selected.disabled,\n &.selected.disabled:hover {\n text-shadow: none;\n }\n span {\n border-radius: @border-radius-base;\n &.active.active,\n &.active.active:hover,\n &.active.active.disabled,\n &.active.active.disabled:hover {\n background: @dropdown-link-active-bg;\n text-shadow: none;\n }\n &:hover {\n background: @dropdown-link-hover-bg;\n }\n }\n }\n }\n thead tr:first-child th, tfoot tr th {\n &:hover {\n background: @dropdown-link-hover-bg;\n }\n }\n}\n\n.input-daterange {\n input:first-child {\n border-radius: @border-radius-base 0 0 @border-radius-base;\n }\n input:last-child {\n border-radius: 0 @border-radius-base @border-radius-base 0;\n }\n .input-group-addon {\n background-color: @input-group-addon-bg;\n border-color: @input-group-addon-border-color;\n line-height: @line-height-base;\n padding: @padding-base-vertical @padding-base-horizontal;\n }\n}","//\n// Bootstrap-select\n// --------------------------------------------------\n\n.bootstrap-select.btn-group {\n &.form-control {\n margin-bottom: 0;\n }\n .btn {\n &:hover {\n border-color: @input-border-hover;\n }\n .caret {\n margin-top: -4px;\n }\n .form-control-outline();\n .has-error & {\n border-color: @state-danger-text;\n &:focus {\n border-color: darken(@state-danger-text, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-danger-text, 20%);\n .box-shadow(@shadow);\n }\n }\n .has-success & {\n border-color: @state-success-text;\n &:focus {\n border-color: darken(@state-success-text, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-success-text, 20%);\n .box-shadow(@shadow);\n }\n }\n .has-warning & {\n border-color: @state-warning-text;\n &:focus {\n border-color: darken(@state-warning-text, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-warning-text, 20%);\n .box-shadow(@shadow);\n }\n }\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n }\n .dropdown-menu { // Also see navbar.less\n > .active > a {\n &, &:active {\n background-color: @dropdown-link-hover-bg !important;\n border-color: @dropdown-link-hover-border-color !important;\n color: @gray-dark !important;\n small {\n color: @gray-light !important;\n }\n }\n }\n > .disabled > a {\n color: @gray-light !important;\n }\n > .selected > a {\n background-color: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n color: #fff !important;\n small {\n color: #70c8e7 !important;\n color:rgba(225, 255, 255, 0.5) !important;\n }\n }\n .divider {\n background: @dropdown-divider-bg !important;\n margin: @dropdown-divider-margin !important;\n }\n dt {\n color: #969696;\n font-weight:normal;\n padding: 1px 10px;\n }\n li {\n & > a.opt {\n padding: 1px 10px;\n }\n & a {\n &:active small {\n color: #70c8e7 !important;\n color:rgba(225, 255, 255, 0.5) !important;\n }\n &:hover, &:focus {\n small {\n color: @gray-light;\n }\n }\n }\n &:not(.disabled) {\n a:hover, a:focus {\n small {\n color: @gray-light;\n }\n }\n }\n }\n }\n}","//\n// Bootstrap Tree View\n// --------------------------------------------------\n\n.treeview {\n .list-group {\n border-top: 0;\n }\n .list-group-item {\n background: transparent;\n border-bottom: 1px solid transparent !important;\n border-top: 1px solid transparent !important;\n margin-bottom: 0;\n padding: 0 10px;\n &:hover {\n background: @dropdown-link-hover-bg !important;\n border-color: @dropdown-link-hover-border-color !important;\n }\n &.node-selected {\n background: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n color: @dropdown-link-active-color !important;\n }\n }\n span.icon {\n display: inline-block;\n font-size: @font-size-base + 1;\n min-width: 10px;\n text-align: center;\n > [class*=\"fa-angle\"] {\n font-size: @font-size-base + 3;\n }\n }\n span.indent {\n margin-right: 5px;\n }\n}","//\n// Cards\n// --------------------------------------------------\n\n.container-cards-pf {\n margin-top: @grid-gutter-width/2;\n}\n\n.card-pf {\n background: @card-pf-bg-color;\n border-top: 2px solid @card-pf-border-top-color;\n .box-shadow(0 1px 1px rgba(0,0,0,.175));\n padding: 0 @grid-gutter-width/2;\n margin: 0 (-(@grid-gutter-width/4)) @grid-gutter-width/2;\n &.card-pf-accented {\n border-top-color: @card-pf-accented-border-top-color;\n }\n}\n\n.card-pf-body {\n margin: @grid-gutter-width/2 0;\n padding: 0 0 @grid-gutter-width/2;\n > *:last-child {\n margin-bottom: 0;\n }\n}\n\n.card-pf-footer {\n background-color: @card-pf-footer-bg-color;\n border-top: 1px solid @card-pf-border-color;\n margin: 0 (-(@grid-gutter-width/2)) !important;\n padding: @grid-gutter-width/2 @grid-gutter-width/2 @grid-gutter-width/4;\n a > {\n .fa, .pficon {\n margin-right: 5px;\n }\n }\n}\n\n.card-pf-heading {\n border-bottom: 1px solid @card-pf-border-color;\n margin: 0 (-(@grid-gutter-width/2)) @grid-gutter-width/2;\n padding: 0 @grid-gutter-width/2 0;\n}\n\n.card-pf-title {\n font-size: @font-size-h3;\n font-weight: 300;\n margin: @grid-gutter-width/2 0;\n padding: 0;\n}\n\n.cards-pf {\n background: @card-pf-container-bg-color;\n}\n\n.row-cards-pf {\n margin-left: -(@grid-gutter-width/4);\n margin-right: -(@grid-gutter-width/4);\n}\n","//\n// Charts\n// --------------------------------------------------\n\n.c3 {\n path {\n stroke: @table-border-color;\n }\n svg {\n font-family: @font-family-base;\n }\n}\n\n.c3-axis-x .tick line {\n stroke: @table-border-color;\n}\n\n.c3-axis-y .tick line {\n display: none;\n}\n\n.c3-chart-arc path {\n stroke: #fff;\n}\n\n.c3-grid line { \n stroke: @table-border-color;\n}\n\n.c3-line {\n stroke-width: 2px;\n}\n\n.c3-tooltip {\n background: @tooltip-bg;\n .box-shadow(none);\n .opacity(@tooltip-opacity);\n\n td {\n background: transparent;\n border: 0;\n color: #fff;\n font-size: @font-size-base;\n padding: 5px 10px;\n }\n\n th {\n background: transparent;\n font-size: @font-size-base;\n padding: 5px 10px 0;\n }\n\n tr {\n border: 0;\n + tr > td {\n padding-top: 0;\n }\n }\n}\n\n.c3-tooltip-sparkline {\n background: @tooltip-bg;\n color: #fff;\n .opacity(@tooltip-opacity);\n padding: 2px 6px;\n}\n\n.c3-xgrid, .c3-ygrid {\n stroke-dasharray: 0 0;\n}\n\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n text-shadow: none;\n .opacity(.6);\n &:hover,\n &:focus {\n .opacity(.9);\n }\n}\n","//\n// Datatables\n// --------------------------------------------------\n\n.ColVis_Button {\n &:active {\n &:focus {\n outline: none;\n }\n }\n}\n\n.ColVis_catcher {\n position: absolute;\n z-index: 999;\n}\n\n.ColVis_collection {\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n list-style: none;\n margin: -1px 0 0 0;\n padding: 5px 10px;\n width: 150px;\n z-index: @zindex-dropdown;\n label {\n font-weight: normal;\n margin-bottom: 5px;\n margin-top: 5px;\n padding-left: 20px;\n }\n}\n\n.ColVis_collectionBackground {\n background-color: #fff;\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 998;\n}\n\n.dataTables_header {\n background-color: #f6f6f6;\n border: 1px solid @table-border-color;\n border-bottom: none;\n padding: 5px;\n position: relative;\n text-align: center;\n .btn {\n .box-shadow(none);\n }\n .ColVis {\n position: absolute;\n right: 5px;\n text-align: left;\n top: 5px;\n + .dataTables_info {\n padding-right: 30px;\n }\n }\n .dataTables_filter {\n position: absolute;\n input {\n border: 1px solid #bbb;\n height: 24px;\n @media (max-width: @screen-xs-max) {\n width: 100px;\n }\n }\n }\n .dataTables_info {\n padding: 2px 0;\n @media (max-width: @screen-xs) {\n text-align: right;\n }\n b {\n font-weight: bold;\n }\n }\n}\n\n.dataTables_footer {\n background-color: #fff;\n border: 1px solid @table-border-color;\n border-top: none;\n overflow: hidden;\n}\n\n.dataTables_paginate {\n background: #fafafa;\n float: right;\n margin: 0;\n .pagination {\n float: left;\n margin: 0;\n > li {\n > span {\n border-color: #ffffff #e1e1e1 #f4f4f4;\n border-width: 0 1px;\n font-size: @font-size-base + 4;\n font-weight: normal;\n padding: 0;\n text-align: center;\n width: 31px;\n &:hover,\n &:focus {\n .reset-filter();\n }\n }\n &.last > span {\n border-right: none;\n }\n &.disabled > span {\n background: #f5f5f5;\n border-left-color: #ececec;\n border-right-color: #ececec;\n .reset-filter();\n }\n }\n }\n .pagination-input {\n float: left;\n font-size: @font-size-base;\n line-height: 1em;\n padding: 4px 15px 0;\n text-align: right;\n .paginate_input {\n border: 1px solid #d3d3d3;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n font-size: @font-size-base;\n font-weight: 600;\n height: 19px;\n margin-right: 8px;\n padding-right: 3px;\n text-align: right;\n width: 30px;\n }\n .paginate_of {\n position: relative;\n b {\n margin-left: 3px;\n }\n }\n }\n}\n\n.dataTables_wrapper {\n margin: @line-height-computed 0;\n @media (max-width: @screen-xs-max) {\n .table-responsive {\n margin-bottom: 0;\n }\n }\n}\n\n.DTCR_clonedTable {\n background-color: rgba(255, 255, 255, 0.7);\n z-index: 202;\n}\n\n.DTCR_pointer {\n background-color: @link-color;\n width: 1px;\n z-index: 201;\n}\n\ntable.datatable {\n margin-bottom: 0;\n max-width: none !important;\n thead {\n .sorting,\n .sorting_asc,\n .sorting_desc,\n .sorting_asc_disabled,\n .sorting_desc_disabled {\n cursor: pointer;\n *cursor: hand;\n }\n .sorting_asc,\n .sorting_desc {\n border: 0;\n color: @link-color !important;\n display: block;\n position: relative;\n &:after {\n content: @fa-var-angle-down;\n font-family: @icon-font-name-fa;\n font-size: @font-size-base - 2;\n font-weight: normal;\n height: @font-size-base - 3;\n left: 7px;\n line-height: @font-size-base;\n position: relative;\n top: 2px;\n vertical-align: baseline;\n width: @font-size-base;\n }\n &:before {\n background: @link-color;\n content: '';\n height: 2px;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n }\n }\n .sorting_asc:after {\n content: @fa-var-angle-up;\n top: -3px;\n }\n }\n th:active {\n outline: none;\n }\n}","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","// Variables\n// --------------------------\n\n@fa-font-path: \"../fonts\";\n@fa-font-size-base: 14px;\n//@fa-font-path: \"//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts\"; // for referencing Bootstrap CDN font files directly\n@fa-css-prefix: fa;\n@fa-version: \"4.3.0\";\n@fa-border-color: #eee;\n@fa-inverse: #fff;\n@fa-li-width: (30em / 14);\n\n@fa-var-adjust: \"\\f042\";\n@fa-var-adn: \"\\f170\";\n@fa-var-align-center: \"\\f037\";\n@fa-var-align-justify: \"\\f039\";\n@fa-var-align-left: \"\\f036\";\n@fa-var-align-right: \"\\f038\";\n@fa-var-ambulance: \"\\f0f9\";\n@fa-var-anchor: \"\\f13d\";\n@fa-var-android: \"\\f17b\";\n@fa-var-angellist: \"\\f209\";\n@fa-var-angle-double-down: \"\\f103\";\n@fa-var-angle-double-left: \"\\f100\";\n@fa-var-angle-double-right: \"\\f101\";\n@fa-var-angle-double-up: \"\\f102\";\n@fa-var-angle-down: \"\\f107\";\n@fa-var-angle-left: \"\\f104\";\n@fa-var-angle-right: \"\\f105\";\n@fa-var-angle-up: \"\\f106\";\n@fa-var-apple: \"\\f179\";\n@fa-var-archive: \"\\f187\";\n@fa-var-area-chart: \"\\f1fe\";\n@fa-var-arrow-circle-down: \"\\f0ab\";\n@fa-var-arrow-circle-left: \"\\f0a8\";\n@fa-var-arrow-circle-o-down: \"\\f01a\";\n@fa-var-arrow-circle-o-left: \"\\f190\";\n@fa-var-arrow-circle-o-right: \"\\f18e\";\n@fa-var-arrow-circle-o-up: \"\\f01b\";\n@fa-var-arrow-circle-right: \"\\f0a9\";\n@fa-var-arrow-circle-up: \"\\f0aa\";\n@fa-var-arrow-down: \"\\f063\";\n@fa-var-arrow-left: \"\\f060\";\n@fa-var-arrow-right: \"\\f061\";\n@fa-var-arrow-up: \"\\f062\";\n@fa-var-arrows: \"\\f047\";\n@fa-var-arrows-alt: \"\\f0b2\";\n@fa-var-arrows-h: \"\\f07e\";\n@fa-var-arrows-v: \"\\f07d\";\n@fa-var-asterisk: \"\\f069\";\n@fa-var-at: \"\\f1fa\";\n@fa-var-automobile: \"\\f1b9\";\n@fa-var-backward: \"\\f04a\";\n@fa-var-ban: \"\\f05e\";\n@fa-var-bank: \"\\f19c\";\n@fa-var-bar-chart: \"\\f080\";\n@fa-var-bar-chart-o: \"\\f080\";\n@fa-var-barcode: \"\\f02a\";\n@fa-var-bars: \"\\f0c9\";\n@fa-var-bed: \"\\f236\";\n@fa-var-beer: \"\\f0fc\";\n@fa-var-behance: \"\\f1b4\";\n@fa-var-behance-square: \"\\f1b5\";\n@fa-var-bell: \"\\f0f3\";\n@fa-var-bell-o: \"\\f0a2\";\n@fa-var-bell-slash: \"\\f1f6\";\n@fa-var-bell-slash-o: \"\\f1f7\";\n@fa-var-bicycle: \"\\f206\";\n@fa-var-binoculars: \"\\f1e5\";\n@fa-var-birthday-cake: \"\\f1fd\";\n@fa-var-bitbucket: \"\\f171\";\n@fa-var-bitbucket-square: \"\\f172\";\n@fa-var-bitcoin: \"\\f15a\";\n@fa-var-bold: \"\\f032\";\n@fa-var-bolt: \"\\f0e7\";\n@fa-var-bomb: \"\\f1e2\";\n@fa-var-book: \"\\f02d\";\n@fa-var-bookmark: \"\\f02e\";\n@fa-var-bookmark-o: \"\\f097\";\n@fa-var-briefcase: \"\\f0b1\";\n@fa-var-btc: \"\\f15a\";\n@fa-var-bug: \"\\f188\";\n@fa-var-building: \"\\f1ad\";\n@fa-var-building-o: \"\\f0f7\";\n@fa-var-bullhorn: \"\\f0a1\";\n@fa-var-bullseye: \"\\f140\";\n@fa-var-bus: \"\\f207\";\n@fa-var-buysellads: \"\\f20d\";\n@fa-var-cab: \"\\f1ba\";\n@fa-var-calculator: \"\\f1ec\";\n@fa-var-calendar: \"\\f073\";\n@fa-var-calendar-o: \"\\f133\";\n@fa-var-camera: \"\\f030\";\n@fa-var-camera-retro: \"\\f083\";\n@fa-var-car: \"\\f1b9\";\n@fa-var-caret-down: \"\\f0d7\";\n@fa-var-caret-left: \"\\f0d9\";\n@fa-var-caret-right: \"\\f0da\";\n@fa-var-caret-square-o-down: \"\\f150\";\n@fa-var-caret-square-o-left: \"\\f191\";\n@fa-var-caret-square-o-right: \"\\f152\";\n@fa-var-caret-square-o-up: \"\\f151\";\n@fa-var-caret-up: \"\\f0d8\";\n@fa-var-cart-arrow-down: \"\\f218\";\n@fa-var-cart-plus: \"\\f217\";\n@fa-var-cc: \"\\f20a\";\n@fa-var-cc-amex: \"\\f1f3\";\n@fa-var-cc-discover: \"\\f1f2\";\n@fa-var-cc-mastercard: \"\\f1f1\";\n@fa-var-cc-paypal: \"\\f1f4\";\n@fa-var-cc-stripe: \"\\f1f5\";\n@fa-var-cc-visa: \"\\f1f0\";\n@fa-var-certificate: \"\\f0a3\";\n@fa-var-chain: \"\\f0c1\";\n@fa-var-chain-broken: \"\\f127\";\n@fa-var-check: \"\\f00c\";\n@fa-var-check-circle: \"\\f058\";\n@fa-var-check-circle-o: \"\\f05d\";\n@fa-var-check-square: \"\\f14a\";\n@fa-var-check-square-o: \"\\f046\";\n@fa-var-chevron-circle-down: \"\\f13a\";\n@fa-var-chevron-circle-left: \"\\f137\";\n@fa-var-chevron-circle-right: \"\\f138\";\n@fa-var-chevron-circle-up: \"\\f139\";\n@fa-var-chevron-down: \"\\f078\";\n@fa-var-chevron-left: \"\\f053\";\n@fa-var-chevron-right: \"\\f054\";\n@fa-var-chevron-up: \"\\f077\";\n@fa-var-child: \"\\f1ae\";\n@fa-var-circle: \"\\f111\";\n@fa-var-circle-o: \"\\f10c\";\n@fa-var-circle-o-notch: \"\\f1ce\";\n@fa-var-circle-thin: \"\\f1db\";\n@fa-var-clipboard: \"\\f0ea\";\n@fa-var-clock-o: \"\\f017\";\n@fa-var-close: \"\\f00d\";\n@fa-var-cloud: \"\\f0c2\";\n@fa-var-cloud-download: \"\\f0ed\";\n@fa-var-cloud-upload: \"\\f0ee\";\n@fa-var-cny: \"\\f157\";\n@fa-var-code: \"\\f121\";\n@fa-var-code-fork: \"\\f126\";\n@fa-var-codepen: \"\\f1cb\";\n@fa-var-coffee: \"\\f0f4\";\n@fa-var-cog: \"\\f013\";\n@fa-var-cogs: \"\\f085\";\n@fa-var-columns: \"\\f0db\";\n@fa-var-comment: \"\\f075\";\n@fa-var-comment-o: \"\\f0e5\";\n@fa-var-comments: \"\\f086\";\n@fa-var-comments-o: \"\\f0e6\";\n@fa-var-compass: \"\\f14e\";\n@fa-var-compress: \"\\f066\";\n@fa-var-connectdevelop: \"\\f20e\";\n@fa-var-copy: \"\\f0c5\";\n@fa-var-copyright: \"\\f1f9\";\n@fa-var-credit-card: \"\\f09d\";\n@fa-var-crop: \"\\f125\";\n@fa-var-crosshairs: \"\\f05b\";\n@fa-var-css3: \"\\f13c\";\n@fa-var-cube: \"\\f1b2\";\n@fa-var-cubes: \"\\f1b3\";\n@fa-var-cut: \"\\f0c4\";\n@fa-var-cutlery: \"\\f0f5\";\n@fa-var-dashboard: \"\\f0e4\";\n@fa-var-dashcube: \"\\f210\";\n@fa-var-database: \"\\f1c0\";\n@fa-var-dedent: \"\\f03b\";\n@fa-var-delicious: \"\\f1a5\";\n@fa-var-desktop: \"\\f108\";\n@fa-var-deviantart: \"\\f1bd\";\n@fa-var-diamond: \"\\f219\";\n@fa-var-digg: \"\\f1a6\";\n@fa-var-dollar: \"\\f155\";\n@fa-var-dot-circle-o: \"\\f192\";\n@fa-var-download: \"\\f019\";\n@fa-var-dribbble: \"\\f17d\";\n@fa-var-dropbox: \"\\f16b\";\n@fa-var-drupal: \"\\f1a9\";\n@fa-var-edit: \"\\f044\";\n@fa-var-eject: \"\\f052\";\n@fa-var-ellipsis-h: \"\\f141\";\n@fa-var-ellipsis-v: \"\\f142\";\n@fa-var-empire: \"\\f1d1\";\n@fa-var-envelope: \"\\f0e0\";\n@fa-var-envelope-o: \"\\f003\";\n@fa-var-envelope-square: \"\\f199\";\n@fa-var-eraser: \"\\f12d\";\n@fa-var-eur: \"\\f153\";\n@fa-var-euro: \"\\f153\";\n@fa-var-exchange: \"\\f0ec\";\n@fa-var-exclamation: \"\\f12a\";\n@fa-var-exclamation-circle: \"\\f06a\";\n@fa-var-exclamation-triangle: \"\\f071\";\n@fa-var-expand: \"\\f065\";\n@fa-var-external-link: \"\\f08e\";\n@fa-var-external-link-square: \"\\f14c\";\n@fa-var-eye: \"\\f06e\";\n@fa-var-eye-slash: \"\\f070\";\n@fa-var-eyedropper: \"\\f1fb\";\n@fa-var-facebook: \"\\f09a\";\n@fa-var-facebook-f: \"\\f09a\";\n@fa-var-facebook-official: \"\\f230\";\n@fa-var-facebook-square: \"\\f082\";\n@fa-var-fast-backward: \"\\f049\";\n@fa-var-fast-forward: \"\\f050\";\n@fa-var-fax: \"\\f1ac\";\n@fa-var-female: \"\\f182\";\n@fa-var-fighter-jet: \"\\f0fb\";\n@fa-var-file: \"\\f15b\";\n@fa-var-file-archive-o: \"\\f1c6\";\n@fa-var-file-audio-o: \"\\f1c7\";\n@fa-var-file-code-o: \"\\f1c9\";\n@fa-var-file-excel-o: \"\\f1c3\";\n@fa-var-file-image-o: \"\\f1c5\";\n@fa-var-file-movie-o: \"\\f1c8\";\n@fa-var-file-o: \"\\f016\";\n@fa-var-file-pdf-o: \"\\f1c1\";\n@fa-var-file-photo-o: \"\\f1c5\";\n@fa-var-file-picture-o: \"\\f1c5\";\n@fa-var-file-powerpoint-o: \"\\f1c4\";\n@fa-var-file-sound-o: \"\\f1c7\";\n@fa-var-file-text: \"\\f15c\";\n@fa-var-file-text-o: \"\\f0f6\";\n@fa-var-file-video-o: \"\\f1c8\";\n@fa-var-file-word-o: \"\\f1c2\";\n@fa-var-file-zip-o: \"\\f1c6\";\n@fa-var-files-o: \"\\f0c5\";\n@fa-var-film: \"\\f008\";\n@fa-var-filter: \"\\f0b0\";\n@fa-var-fire: \"\\f06d\";\n@fa-var-fire-extinguisher: \"\\f134\";\n@fa-var-flag: \"\\f024\";\n@fa-var-flag-checkered: \"\\f11e\";\n@fa-var-flag-o: \"\\f11d\";\n@fa-var-flash: \"\\f0e7\";\n@fa-var-flask: \"\\f0c3\";\n@fa-var-flickr: \"\\f16e\";\n@fa-var-floppy-o: \"\\f0c7\";\n@fa-var-folder: \"\\f07b\";\n@fa-var-folder-o: \"\\f114\";\n@fa-var-folder-open: \"\\f07c\";\n@fa-var-folder-open-o: \"\\f115\";\n@fa-var-font: \"\\f031\";\n@fa-var-forumbee: \"\\f211\";\n@fa-var-forward: \"\\f04e\";\n@fa-var-foursquare: \"\\f180\";\n@fa-var-frown-o: \"\\f119\";\n@fa-var-futbol-o: \"\\f1e3\";\n@fa-var-gamepad: \"\\f11b\";\n@fa-var-gavel: \"\\f0e3\";\n@fa-var-gbp: \"\\f154\";\n@fa-var-ge: \"\\f1d1\";\n@fa-var-gear: \"\\f013\";\n@fa-var-gears: \"\\f085\";\n@fa-var-genderless: \"\\f1db\";\n@fa-var-gift: \"\\f06b\";\n@fa-var-git: \"\\f1d3\";\n@fa-var-git-square: \"\\f1d2\";\n@fa-var-github: \"\\f09b\";\n@fa-var-github-alt: \"\\f113\";\n@fa-var-github-square: \"\\f092\";\n@fa-var-gittip: \"\\f184\";\n@fa-var-glass: \"\\f000\";\n@fa-var-globe: \"\\f0ac\";\n@fa-var-google: \"\\f1a0\";\n@fa-var-google-plus: \"\\f0d5\";\n@fa-var-google-plus-square: \"\\f0d4\";\n@fa-var-google-wallet: \"\\f1ee\";\n@fa-var-graduation-cap: \"\\f19d\";\n@fa-var-gratipay: \"\\f184\";\n@fa-var-group: \"\\f0c0\";\n@fa-var-h-square: \"\\f0fd\";\n@fa-var-hacker-news: \"\\f1d4\";\n@fa-var-hand-o-down: \"\\f0a7\";\n@fa-var-hand-o-left: \"\\f0a5\";\n@fa-var-hand-o-right: \"\\f0a4\";\n@fa-var-hand-o-up: \"\\f0a6\";\n@fa-var-hdd-o: \"\\f0a0\";\n@fa-var-header: \"\\f1dc\";\n@fa-var-headphones: \"\\f025\";\n@fa-var-heart: \"\\f004\";\n@fa-var-heart-o: \"\\f08a\";\n@fa-var-heartbeat: \"\\f21e\";\n@fa-var-history: \"\\f1da\";\n@fa-var-home: \"\\f015\";\n@fa-var-hospital-o: \"\\f0f8\";\n@fa-var-hotel: \"\\f236\";\n@fa-var-html5: \"\\f13b\";\n@fa-var-ils: \"\\f20b\";\n@fa-var-image: \"\\f03e\";\n@fa-var-inbox: \"\\f01c\";\n@fa-var-indent: \"\\f03c\";\n@fa-var-info: \"\\f129\";\n@fa-var-info-circle: \"\\f05a\";\n@fa-var-inr: \"\\f156\";\n@fa-var-instagram: \"\\f16d\";\n@fa-var-institution: \"\\f19c\";\n@fa-var-ioxhost: \"\\f208\";\n@fa-var-italic: \"\\f033\";\n@fa-var-joomla: \"\\f1aa\";\n@fa-var-jpy: \"\\f157\";\n@fa-var-jsfiddle: \"\\f1cc\";\n@fa-var-key: \"\\f084\";\n@fa-var-keyboard-o: \"\\f11c\";\n@fa-var-krw: \"\\f159\";\n@fa-var-language: \"\\f1ab\";\n@fa-var-laptop: \"\\f109\";\n@fa-var-lastfm: \"\\f202\";\n@fa-var-lastfm-square: \"\\f203\";\n@fa-var-leaf: \"\\f06c\";\n@fa-var-leanpub: \"\\f212\";\n@fa-var-legal: \"\\f0e3\";\n@fa-var-lemon-o: \"\\f094\";\n@fa-var-level-down: \"\\f149\";\n@fa-var-level-up: \"\\f148\";\n@fa-var-life-bouy: \"\\f1cd\";\n@fa-var-life-buoy: \"\\f1cd\";\n@fa-var-life-ring: \"\\f1cd\";\n@fa-var-life-saver: \"\\f1cd\";\n@fa-var-lightbulb-o: \"\\f0eb\";\n@fa-var-line-chart: \"\\f201\";\n@fa-var-link: \"\\f0c1\";\n@fa-var-linkedin: \"\\f0e1\";\n@fa-var-linkedin-square: \"\\f08c\";\n@fa-var-linux: \"\\f17c\";\n@fa-var-list: \"\\f03a\";\n@fa-var-list-alt: \"\\f022\";\n@fa-var-list-ol: \"\\f0cb\";\n@fa-var-list-ul: \"\\f0ca\";\n@fa-var-location-arrow: \"\\f124\";\n@fa-var-lock: \"\\f023\";\n@fa-var-long-arrow-down: \"\\f175\";\n@fa-var-long-arrow-left: \"\\f177\";\n@fa-var-long-arrow-right: \"\\f178\";\n@fa-var-long-arrow-up: \"\\f176\";\n@fa-var-magic: \"\\f0d0\";\n@fa-var-magnet: \"\\f076\";\n@fa-var-mail-forward: \"\\f064\";\n@fa-var-mail-reply: \"\\f112\";\n@fa-var-mail-reply-all: \"\\f122\";\n@fa-var-male: \"\\f183\";\n@fa-var-map-marker: \"\\f041\";\n@fa-var-mars: \"\\f222\";\n@fa-var-mars-double: \"\\f227\";\n@fa-var-mars-stroke: \"\\f229\";\n@fa-var-mars-stroke-h: \"\\f22b\";\n@fa-var-mars-stroke-v: \"\\f22a\";\n@fa-var-maxcdn: \"\\f136\";\n@fa-var-meanpath: \"\\f20c\";\n@fa-var-medium: \"\\f23a\";\n@fa-var-medkit: \"\\f0fa\";\n@fa-var-meh-o: \"\\f11a\";\n@fa-var-mercury: \"\\f223\";\n@fa-var-microphone: \"\\f130\";\n@fa-var-microphone-slash: \"\\f131\";\n@fa-var-minus: \"\\f068\";\n@fa-var-minus-circle: \"\\f056\";\n@fa-var-minus-square: \"\\f146\";\n@fa-var-minus-square-o: \"\\f147\";\n@fa-var-mobile: \"\\f10b\";\n@fa-var-mobile-phone: \"\\f10b\";\n@fa-var-money: \"\\f0d6\";\n@fa-var-moon-o: \"\\f186\";\n@fa-var-mortar-board: \"\\f19d\";\n@fa-var-motorcycle: \"\\f21c\";\n@fa-var-music: \"\\f001\";\n@fa-var-navicon: \"\\f0c9\";\n@fa-var-neuter: \"\\f22c\";\n@fa-var-newspaper-o: \"\\f1ea\";\n@fa-var-openid: \"\\f19b\";\n@fa-var-outdent: \"\\f03b\";\n@fa-var-pagelines: \"\\f18c\";\n@fa-var-paint-brush: \"\\f1fc\";\n@fa-var-paper-plane: \"\\f1d8\";\n@fa-var-paper-plane-o: \"\\f1d9\";\n@fa-var-paperclip: \"\\f0c6\";\n@fa-var-paragraph: \"\\f1dd\";\n@fa-var-paste: \"\\f0ea\";\n@fa-var-pause: \"\\f04c\";\n@fa-var-paw: \"\\f1b0\";\n@fa-var-paypal: \"\\f1ed\";\n@fa-var-pencil: \"\\f040\";\n@fa-var-pencil-square: \"\\f14b\";\n@fa-var-pencil-square-o: \"\\f044\";\n@fa-var-phone: \"\\f095\";\n@fa-var-phone-square: \"\\f098\";\n@fa-var-photo: \"\\f03e\";\n@fa-var-picture-o: \"\\f03e\";\n@fa-var-pie-chart: \"\\f200\";\n@fa-var-pied-piper: \"\\f1a7\";\n@fa-var-pied-piper-alt: \"\\f1a8\";\n@fa-var-pinterest: \"\\f0d2\";\n@fa-var-pinterest-p: \"\\f231\";\n@fa-var-pinterest-square: \"\\f0d3\";\n@fa-var-plane: \"\\f072\";\n@fa-var-play: \"\\f04b\";\n@fa-var-play-circle: \"\\f144\";\n@fa-var-play-circle-o: \"\\f01d\";\n@fa-var-plug: \"\\f1e6\";\n@fa-var-plus: \"\\f067\";\n@fa-var-plus-circle: \"\\f055\";\n@fa-var-plus-square: \"\\f0fe\";\n@fa-var-plus-square-o: \"\\f196\";\n@fa-var-power-off: \"\\f011\";\n@fa-var-print: \"\\f02f\";\n@fa-var-puzzle-piece: \"\\f12e\";\n@fa-var-qq: \"\\f1d6\";\n@fa-var-qrcode: \"\\f029\";\n@fa-var-question: \"\\f128\";\n@fa-var-question-circle: \"\\f059\";\n@fa-var-quote-left: \"\\f10d\";\n@fa-var-quote-right: \"\\f10e\";\n@fa-var-ra: \"\\f1d0\";\n@fa-var-random: \"\\f074\";\n@fa-var-rebel: \"\\f1d0\";\n@fa-var-recycle: \"\\f1b8\";\n@fa-var-reddit: \"\\f1a1\";\n@fa-var-reddit-square: \"\\f1a2\";\n@fa-var-refresh: \"\\f021\";\n@fa-var-remove: \"\\f00d\";\n@fa-var-renren: \"\\f18b\";\n@fa-var-reorder: \"\\f0c9\";\n@fa-var-repeat: \"\\f01e\";\n@fa-var-reply: \"\\f112\";\n@fa-var-reply-all: \"\\f122\";\n@fa-var-retweet: \"\\f079\";\n@fa-var-rmb: \"\\f157\";\n@fa-var-road: \"\\f018\";\n@fa-var-rocket: \"\\f135\";\n@fa-var-rotate-left: \"\\f0e2\";\n@fa-var-rotate-right: \"\\f01e\";\n@fa-var-rouble: \"\\f158\";\n@fa-var-rss: \"\\f09e\";\n@fa-var-rss-square: \"\\f143\";\n@fa-var-rub: \"\\f158\";\n@fa-var-ruble: \"\\f158\";\n@fa-var-rupee: \"\\f156\";\n@fa-var-save: \"\\f0c7\";\n@fa-var-scissors: \"\\f0c4\";\n@fa-var-search: \"\\f002\";\n@fa-var-search-minus: \"\\f010\";\n@fa-var-search-plus: \"\\f00e\";\n@fa-var-sellsy: \"\\f213\";\n@fa-var-send: \"\\f1d8\";\n@fa-var-send-o: \"\\f1d9\";\n@fa-var-server: \"\\f233\";\n@fa-var-share: \"\\f064\";\n@fa-var-share-alt: \"\\f1e0\";\n@fa-var-share-alt-square: \"\\f1e1\";\n@fa-var-share-square: \"\\f14d\";\n@fa-var-share-square-o: \"\\f045\";\n@fa-var-shekel: \"\\f20b\";\n@fa-var-sheqel: \"\\f20b\";\n@fa-var-shield: \"\\f132\";\n@fa-var-ship: \"\\f21a\";\n@fa-var-shirtsinbulk: \"\\f214\";\n@fa-var-shopping-cart: \"\\f07a\";\n@fa-var-sign-in: \"\\f090\";\n@fa-var-sign-out: \"\\f08b\";\n@fa-var-signal: \"\\f012\";\n@fa-var-simplybuilt: \"\\f215\";\n@fa-var-sitemap: \"\\f0e8\";\n@fa-var-skyatlas: \"\\f216\";\n@fa-var-skype: \"\\f17e\";\n@fa-var-slack: \"\\f198\";\n@fa-var-sliders: \"\\f1de\";\n@fa-var-slideshare: \"\\f1e7\";\n@fa-var-smile-o: \"\\f118\";\n@fa-var-soccer-ball-o: \"\\f1e3\";\n@fa-var-sort: \"\\f0dc\";\n@fa-var-sort-alpha-asc: \"\\f15d\";\n@fa-var-sort-alpha-desc: \"\\f15e\";\n@fa-var-sort-amount-asc: \"\\f160\";\n@fa-var-sort-amount-desc: \"\\f161\";\n@fa-var-sort-asc: \"\\f0de\";\n@fa-var-sort-desc: \"\\f0dd\";\n@fa-var-sort-down: \"\\f0dd\";\n@fa-var-sort-numeric-asc: \"\\f162\";\n@fa-var-sort-numeric-desc: \"\\f163\";\n@fa-var-sort-up: \"\\f0de\";\n@fa-var-soundcloud: \"\\f1be\";\n@fa-var-space-shuttle: \"\\f197\";\n@fa-var-spinner: \"\\f110\";\n@fa-var-spoon: \"\\f1b1\";\n@fa-var-spotify: \"\\f1bc\";\n@fa-var-square: \"\\f0c8\";\n@fa-var-square-o: \"\\f096\";\n@fa-var-stack-exchange: \"\\f18d\";\n@fa-var-stack-overflow: \"\\f16c\";\n@fa-var-star: \"\\f005\";\n@fa-var-star-half: \"\\f089\";\n@fa-var-star-half-empty: \"\\f123\";\n@fa-var-star-half-full: \"\\f123\";\n@fa-var-star-half-o: \"\\f123\";\n@fa-var-star-o: \"\\f006\";\n@fa-var-steam: \"\\f1b6\";\n@fa-var-steam-square: \"\\f1b7\";\n@fa-var-step-backward: \"\\f048\";\n@fa-var-step-forward: \"\\f051\";\n@fa-var-stethoscope: \"\\f0f1\";\n@fa-var-stop: \"\\f04d\";\n@fa-var-street-view: \"\\f21d\";\n@fa-var-strikethrough: \"\\f0cc\";\n@fa-var-stumbleupon: \"\\f1a4\";\n@fa-var-stumbleupon-circle: \"\\f1a3\";\n@fa-var-subscript: \"\\f12c\";\n@fa-var-subway: \"\\f239\";\n@fa-var-suitcase: \"\\f0f2\";\n@fa-var-sun-o: \"\\f185\";\n@fa-var-superscript: \"\\f12b\";\n@fa-var-support: \"\\f1cd\";\n@fa-var-table: \"\\f0ce\";\n@fa-var-tablet: \"\\f10a\";\n@fa-var-tachometer: \"\\f0e4\";\n@fa-var-tag: \"\\f02b\";\n@fa-var-tags: \"\\f02c\";\n@fa-var-tasks: \"\\f0ae\";\n@fa-var-taxi: \"\\f1ba\";\n@fa-var-tencent-weibo: \"\\f1d5\";\n@fa-var-terminal: \"\\f120\";\n@fa-var-text-height: \"\\f034\";\n@fa-var-text-width: \"\\f035\";\n@fa-var-th: \"\\f00a\";\n@fa-var-th-large: \"\\f009\";\n@fa-var-th-list: \"\\f00b\";\n@fa-var-thumb-tack: \"\\f08d\";\n@fa-var-thumbs-down: \"\\f165\";\n@fa-var-thumbs-o-down: \"\\f088\";\n@fa-var-thumbs-o-up: \"\\f087\";\n@fa-var-thumbs-up: \"\\f164\";\n@fa-var-ticket: \"\\f145\";\n@fa-var-times: \"\\f00d\";\n@fa-var-times-circle: \"\\f057\";\n@fa-var-times-circle-o: \"\\f05c\";\n@fa-var-tint: \"\\f043\";\n@fa-var-toggle-down: \"\\f150\";\n@fa-var-toggle-left: \"\\f191\";\n@fa-var-toggle-off: \"\\f204\";\n@fa-var-toggle-on: \"\\f205\";\n@fa-var-toggle-right: \"\\f152\";\n@fa-var-toggle-up: \"\\f151\";\n@fa-var-train: \"\\f238\";\n@fa-var-transgender: \"\\f224\";\n@fa-var-transgender-alt: \"\\f225\";\n@fa-var-trash: \"\\f1f8\";\n@fa-var-trash-o: \"\\f014\";\n@fa-var-tree: \"\\f1bb\";\n@fa-var-trello: \"\\f181\";\n@fa-var-trophy: \"\\f091\";\n@fa-var-truck: \"\\f0d1\";\n@fa-var-try: \"\\f195\";\n@fa-var-tty: \"\\f1e4\";\n@fa-var-tumblr: \"\\f173\";\n@fa-var-tumblr-square: \"\\f174\";\n@fa-var-turkish-lira: \"\\f195\";\n@fa-var-twitch: \"\\f1e8\";\n@fa-var-twitter: \"\\f099\";\n@fa-var-twitter-square: \"\\f081\";\n@fa-var-umbrella: \"\\f0e9\";\n@fa-var-underline: \"\\f0cd\";\n@fa-var-undo: \"\\f0e2\";\n@fa-var-university: \"\\f19c\";\n@fa-var-unlink: \"\\f127\";\n@fa-var-unlock: \"\\f09c\";\n@fa-var-unlock-alt: \"\\f13e\";\n@fa-var-unsorted: \"\\f0dc\";\n@fa-var-upload: \"\\f093\";\n@fa-var-usd: \"\\f155\";\n@fa-var-user: \"\\f007\";\n@fa-var-user-md: \"\\f0f0\";\n@fa-var-user-plus: \"\\f234\";\n@fa-var-user-secret: \"\\f21b\";\n@fa-var-user-times: \"\\f235\";\n@fa-var-users: \"\\f0c0\";\n@fa-var-venus: \"\\f221\";\n@fa-var-venus-double: \"\\f226\";\n@fa-var-venus-mars: \"\\f228\";\n@fa-var-viacoin: \"\\f237\";\n@fa-var-video-camera: \"\\f03d\";\n@fa-var-vimeo-square: \"\\f194\";\n@fa-var-vine: \"\\f1ca\";\n@fa-var-vk: \"\\f189\";\n@fa-var-volume-down: \"\\f027\";\n@fa-var-volume-off: \"\\f026\";\n@fa-var-volume-up: \"\\f028\";\n@fa-var-warning: \"\\f071\";\n@fa-var-wechat: \"\\f1d7\";\n@fa-var-weibo: \"\\f18a\";\n@fa-var-weixin: \"\\f1d7\";\n@fa-var-whatsapp: \"\\f232\";\n@fa-var-wheelchair: \"\\f193\";\n@fa-var-wifi: \"\\f1eb\";\n@fa-var-windows: \"\\f17a\";\n@fa-var-won: \"\\f159\";\n@fa-var-wordpress: \"\\f19a\";\n@fa-var-wrench: \"\\f0ad\";\n@fa-var-xing: \"\\f168\";\n@fa-var-xing-square: \"\\f169\";\n@fa-var-yahoo: \"\\f19e\";\n@fa-var-yelp: \"\\f1e9\";\n@fa-var-yen: \"\\f157\";\n@fa-var-youtube: \"\\f167\";\n@fa-var-youtube-play: \"\\f16a\";\n@fa-var-youtube-square: \"\\f166\";\n\n","//\n// Icons\n// --------------------------------------------------\n// Custom icons and selections from IcoMoon - Free (http://icomoon.io/#icons)\n\n@font-face {\n font-family: '@{icon-font-name-pf}';\n src:url('@{font-path}/@{icon-font-name-pf}.eot');\n src:url('@{font-path}/@{icon-font-name-pf}.eot?#iefix') format('embedded-opentype'),\n url('@{font-path}/@{icon-font-name-pf}.ttf') format('truetype'),\n url('@{font-path}/@{icon-font-name-pf}.woff') format('woff'),\n url('@{font-path}/@{icon-font-name-pf}.svg#@{icon-font-name-pf}') format('svg');\n font-weight: normal;\n font-style: normal;\n}\n\n[class^=\"@{icon-prefix}-\"], [class*=\" @{icon-prefix}-\"] {\n display: inline-block;\n font-family: '@{icon-font-name-pf}';\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n speak: none;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.@{icon-prefix}-screen:before {\n content: \"\\e600\";\n}\n.@{icon-prefix}-save:before {\n content: \"\\e601\";\n}\n.@{icon-prefix}-ok:before {\n color: @brand-success;\n content: \"\\e602\";\n}\n.@{icon-prefix}-messages:before, // class name deprecated\n.@{icon-prefix}-flag:before {\n content: \"\\e603\";\n}\n.@{icon-prefix}-info:before {\n content: \"\\e604\";\n}\n.@{icon-prefix}-help:before {\n content: \"\\e605\";\n}\n.@{icon-prefix}-folder-open:before {\n content: \"\\e606\";\n}\n.@{icon-prefix}-folder-close:before {\n content: \"\\e607\";\n}\n.@{icon-prefix}-edit:before {\n content: \"\\e60a\";\n}\n.@{icon-prefix}-close:before {\n content: \"\\e60b\";\n}\n.@{icon-prefix}-user:before {\n content: \"\\e60e\";\n}\n.@{icon-prefix}-users:before {\n content: \"\\e60f\";\n}\n.@{icon-prefix}-add-circle-o:before {\n content: \"\\e61b\";\n}\n.@{icon-prefix}-warning-triangle-o:before {\n color: @brand-warning;\n content: \"\\e61c\";\n}\n.@{icon-prefix}-error-circle-o:before {\n color: @brand-danger;\n content: \"\\e61d\";\n}\n.@{icon-prefix}-service:before {\n content: \"\\e61e\";\n}\n.@{icon-prefix}-image:before {\n content: \"\\e61f\";\n}\n.@{icon-prefix}-settings:before {\n content: \"\\e610\";\n}\n.@{icon-prefix}-delete:before {\n content: \"\\e611\";\n}\n.@{icon-prefix}-print:before {\n content: \"\\e612\";\n}\n.@{icon-prefix}-refresh:before, // class name deprecated\n.@{icon-prefix}-restart:before {\n content: \"\\e613\";\n}\n.@{icon-prefix}-running:before {\n content: \"\\e614\";\n}\n.@{icon-prefix}-import:before {\n content: \"\\e615\";\n}\n.@{icon-prefix}-export:before {\n content: \"\\e616\";\n}\n.@{icon-prefix}-history:before {\n content: \"\\e617\";\n}\n.@{icon-prefix}-home:before {\n content: \"\\e618\";\n}\n.@{icon-prefix}-cluster:before {\n content: \"\\e620\";\n}\n.@{icon-prefix}-container-node:before {\n content: \"\\e621\";\n}\n.@{icon-prefix}-project:before {\n content: \"\\e622\";\n}\n.@{icon-prefix}-registry:before {\n content: \"\\e623\";\n}\n.@{icon-prefix}-replicator:before {\n content: \"\\e624\";\n}\n.@{icon-prefix}-route:before {\n content: \"\\e625\";\n}\n.@{icon-prefix}-openshift:before {\n content: \"\\e626\";\n}\n.@{icon-prefix}-kubernetes:before {\n content: \"\\e627\";\n}","//\n// Info Tip\n// --------------------------------------------------\n\n// Overwrites for navbar.less\n.navbar-nav > li > .dropdown-menu.infotip {\n border-top-width: 1px !important;\n margin-top: @popover-arrow-width;\n}\n\n// Overwrites for PatternFly - navbar.less\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar-pf .navbar-nav .open .dropdown-menu.infotip {\n background-color: #fff !important;\n margin-top: 0;\n }\n}\n\n// Extends \"dropdown-menu\"\n.infotip {\n min-width: 235px;\n padding: 0;\n .list-group {\n border-top: 0;\n margin: 0;\n padding: 8px 0;\n .list-group-item {\n border: none;\n margin: 0 15px 0 34px;\n padding: 5px 0;\n > .i {\n color: @gray-pf;\n font-size: 13px;\n left: -20px;\n position: absolute;\n top: 8px;\n }\n > a {\n color: @gray-pf;\n line-height: 13px;\n }\n > .close {\n float: right;\n }\n }\n }\n .footer {\n background-color: #f5f5f5;\n padding: 6px 15px;\n a:hover {\n color: @link-color;\n }\n }\n}\n\n// Arrows (Copy from popovers.less)\n//\n// .arrow is outer, .arrow:after is inner\n\n.infotip .arrow {\n &,\n &:after {\n border-color: transparent;\n border-style: solid;\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n }\n}\n.infotip .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.infotip .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.infotip {\n &.bottom .arrow,\n &.bottom-left .arrow,\n &.bottom-right .arrow {\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n border-top-width: 0;\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n top: -@popover-arrow-outer-width;\n &:after {\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n content: \" \";\n margin-left: -@popover-arrow-width;\n top: 1px;\n }\n }\n &.bottom-left .arrow {\n left: 20%;\n }\n // Default:\n &.bottom-right .arrow {\n left: 80%;\n }\n &.top .arrow {\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n &:after {\n border-bottom-width: 0;\n border-top-color: #f5f5f5;\n bottom: 1px;\n content: \" \";\n margin-left: -@popover-arrow-width;\n }\n }\n &.right .arrow {\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n top: 50%;\n &:after {\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n content: \" \";\n left: 1px;\n }\n }\n &.left .arrow {\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n border-right-width: 0;\n margin-top: -@popover-arrow-outer-width;\n right: -@popover-arrow-outer-width;\n top: 50%;\n &:after {\n border-left-color: @popover-arrow-color;\n border-right-width: 0;\n bottom: -@popover-arrow-width;\n content: \" \";\n right: 1px;\n }\n }\n}","//\n// Login\n// --------------------------------------------------\n\n.login-pf {\n height: 100%;\n #brand {\n position: relative;\n top: -70px;\n img {\n display: block;\n height: 18px;\n margin: 0 auto;\n max-width: 100%;\n @media (min-width: @screen-sm-min) {\n margin: 0;\n text-align: left;\n }\n }\n }\n #badge {\n display: block;\n margin: 20px auto 70px;\n position: relative;\n text-align: center;\n @media (min-width: @screen-sm-min) { \n float: right;\n margin-right: 64px;\n margin-top: 50px;\n }\n }\n body {\n background: @login-bg-color url(\"@{img-path}/@{img-bg-login}\") repeat-x 50% 0;\n background-size: auto;\n @media (min-width: @screen-sm-min) {\n background-size: 100% auto;\n }\n }\n .container {\n background-color: @login-container-bg-color;\n background-color: @login-container-bg-color-rgba;\n clear: right;\n color: #fff;\n padding-bottom: 40px;\n padding-top: 20px;\n width: auto;\n @media (min-width: @screen-sm-min) { \n bottom: 13%;\n padding-left: 80px;\n position: absolute;\n width: 100%;\n }\n [class^='alert'] {\n background: transparent;\n color: #fff;\n }\n .details {\n p:first-child {\n border-top: 1px solid #474747;\n padding-top: 25px;\n margin-top: 25px;\n }\n @media (min-width: @screen-sm-min) {\n p:first-child {\n border-top: 0;\n padding-top: 0;\n margin-top: 0;\n }\n border-left: 1px solid #474747;\n padding-left: 40px;\n }\n p {\n margin-bottom: 2px;\n }\n }\n .form-horizontal {\n .control-label {\n font-size: @font-size-base + 1;\n font-weight: 400;\n text-align: left;\n }\n .form-group:last-child {\n &, .help-block:last-child {\n margin-bottom: 0;\n }\n }\n }\n .help-block {\n color: #fff;\n }\n .login {\n @media (min-width: @screen-sm-min) {\n padding-right: 40px;\n }\n }\n .submit {\n text-align: right;\n }\n }\n}\n","//\n// Navbar\n// --------------------------------------------------\n\n.navbar-pf {\n background: @navbar-pf-bg-color;\n border: 0;\n border-radius: 0;\n border-top: 3px solid @navbar-pf-border-color;\n margin-bottom: 0;\n min-height: 0;\n .navbar-brand {\n color: @navbar-pf-active-color;\n height: auto;\n padding: 12px 0;\n margin: 0 0 0 20px;\n img {\n display: block;\n }\n }\n .navbar-collapse {\n border-top: 0;\n .box-shadow(none);\n padding: 0;\n }\n .navbar-header {\n border-bottom: 1px solid @navbar-pf-navbar-header-border-color;\n float: none;\n }\n .navbar-nav {\n margin: 0;\n > .active > a, > .active > a:hover, > .active > a:focus {\n background-color: @navbar-pf-navbar-nav-active-bg-color;\n color: @navbar-pf-active-color;\n }\n > li > a {\n color: @navbar-pf-color;\n line-height: 1;\n padding: 10px 20px;\n text-shadow: none;\n &:hover, &:focus {\n color: @navbar-pf-active-color;\n }\n }\n > .open {\n > a {\n &, &:hover, &:focus {\n background-color: @navbar-pf-navbar-nav-active-bg-color;\n color: @navbar-pf-active-color;\n }\n }\n }\n @media (max-width: @grid-float-breakpoint-max) {\n .active .navbar-persistent, .active .dropdown-menu, .open .dropdown-menu {\n background-color: @navbar-pf-navbar-nav-active-active-bg-color !important;\n margin-left: 0;\n padding-bottom: 0;\n padding-top: 0;\n > .active > a, .dropdown-submenu.open > a {\n &, &:hover, &:focus {\n background-color: @navbar-pf-navbar-nav-active-active-open-bg-color !important;\n color: @navbar-pf-active-color;\n }\n }\n > li > a {\n background-color: transparent;\n border: 0;\n color: @navbar-pf-color;\n outline: none;\n padding-left: 30px;\n &:hover {\n color: @navbar-pf-active-color;\n }\n }\n .divider {\n background-color: @navbar-pf-navbar-header-border-color;\n margin: 0 1px;\n }\n .dropdown-header {\n padding-bottom: 0;\n padding-left: 30px;\n }\n .dropdown-submenu {\n &.open .dropdown-toggle {\n color: @navbar-pf-active-color;\n }\n &.pull-left {\n float: none !important;\n }\n > a:after {\n display: none;\n }\n .dropdown-header {\n padding-left: 45px;\n }\n .dropdown-menu {\n border: 0;\n bottom: auto;\n .box-shadow(none);\n display: block;\n float: none;\n margin: 0;\n min-width: 0;\n padding: 0;\n position: relative;\n left: auto;\n right: auto;\n top: auto;\n > li > a {\n padding: 5px 15px 5px 45px;\n line-height: 20px;\n }\n .dropdown-menu > li > a {\n padding-left: 60px;\n }\n }\n }\n }\n .active .navbar-persistent {\n .dropdown-submenu {\n &.open .dropdown-menu {\n display: block;\n }\n > a:after {\n display: inline-block !important;\n position: relative;\n right: auto;\n top: 1px;\n }\n .dropdown-menu {\n display: none;\n }\n .dropdown-submenu > a:after {\n display: none !important;\n }\n }\n }\n .context-bootstrap-select { // Also see bootstrap-select.less\n .open > .dropdown-menu {\n background-color: #fff !important;\n > .active > a {\n &, &:active {\n background-color: @dropdown-link-hover-bg !important;\n border-color: @dropdown-link-hover-border-color !important;\n color: @gray-dark !important;\n small {\n color: @gray-light !important;\n }\n }\n }\n > .disabled > a {\n color: @gray-light !important;\n }\n > .selected > a {\n &, &:active {\n background-color: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n color: #fff !important;\n small {\n color: #70c8e7 !important;\n color:rgba(225, 255, 255, 0.5) !important;\n }\n }\n }\n li {\n > a.opt {\n border-bottom: 1px solid transparent;\n border-top: 1px solid transparent;\n color: @gray-dark;\n padding-left: 10px;\n padding-right: 10px;\n }\n & a {\n &:active small {\n color: #70c8e7 !important;\n color:rgba(225, 255, 255, 0.5) !important;\n }\n &:hover, &:focus {\n small {\n color: @gray-light;\n }\n }\n }\n }\n }\n > .open > .dropdown-menu {\n padding-bottom: 5px;\n padding-top: 5px;\n }\n }\n }\n }\n .navbar-persistent {\n display: none;\n }\n .active > .navbar-persistent {\n display: block;\n }\n .navbar-primary {\n float: none;\n .context {\n border-bottom: 1px solid @navbar-pf-navbar-header-border-color;\n &.context-bootstrap-select .bootstrap-select.btn-group {\n &, &[class*=\"span\"] {\n margin: 8px 20px 9px;\n width: auto; // known bug: IE8 will make it as wide as the longest string\n }\n }\n }\n > li > .navbar-persistent > .dropdown-submenu > a {\n position: relative;\n &:after {\n content: @fa-var-angle-down;\n display: inline-block;\n font-family: @icon-font-name-fa;\n font-weight: normal;\n @media (max-width: @grid-float-breakpoint-max) {\n height: 10px;\n margin-left: 4px;\n vertical-align: baseline;\n }\n }\n }\n }\n .navbar-toggle {\n border: 0;\n margin: 0;\n padding: 10px 20px;\n &:hover, &:focus {\n background-color: transparent;\n outline: none;\n .icon-bar {\n .box-shadow(0 0 3px rgba(255,255,255,1));\n }\n }\n .icon-bar {\n background-color: @navbar-pf-icon-bar-bg-color;\n }\n }\n .navbar-utility {\n border-bottom: 1px solid @navbar-pf-navbar-header-border-color;\n li.dropdown > .dropdown-toggle {\n padding-left: 36px;\n position: relative;\n .pficon-user {\n left: 20px;\n position: absolute;\n top: 10px;\n }\n }\n @media (max-width: @grid-float-breakpoint-max) {\n > li + li {\n border-top: 1px solid @navbar-pf-navbar-header-border-color;\n }\n }\n }\n}\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-pf {\n .navbar-brand {\n padding: @navbar-pf-navbar-navbar-brand-padding;\n }\n .navbar-nav > li > a {\n padding-bottom: 14px;\n padding-top: 14px;\n }\n .navbar-persistent {\n font-size: @font-size-large;\n }\n .navbar-primary {\n font-size: @font-size-large;\n #gradient > .vertical(@navbar-pf-navbar-primary-bg-color-start, @navbar-pf-navbar-primary-bg-color-stop);\n &.persistent-secondary {\n .context {\n .dropdown-menu {\n top: auto;\n }\n }\n .dropup .dropdown-menu {\n bottom: -5px;\n top: auto;\n }\n > li {\n position: static;\n &.active {\n margin-bottom: 32px;\n > .navbar-persistent {\n display: block;\n left: 0;\n position: absolute;\n }\n }\n > .navbar-persistent {\n background: @navbar-pf-navbar-navbar-persistent-bg-color;\n border-bottom: 1px solid @navbar-pf-navbar-navbar-persistent-border-color;\n padding: 0;\n width: 100%;\n a {\n text-decoration: none !important;\n }\n > li {\n &.active {\n &, &:hover {\n .tab-indicator(@background: @nav-tabs-active-link-hover-color, @left: 20px, @right: 20px);\n }\n > a, > a:hover, &:hover > a {\n color: @link-color !important;\n }\n .active > a { \n color: @navbar-pf-active-color;\n }\n }\n &.dropdown-submenu {\n &:hover > .dropdown-menu {\n display: none;\n }\n &.open {\n > .dropdown-menu {\n display: block;\n left: 20px;\n margin-top: 1px;\n top: 100%;\n }\n > .dropdown-toggle {\n color: @gray-darker;\n &:after {\n border-top-color: @gray-darker;\n }\n }\n }\n > .dropdown-toggle {\n padding-right: 35px !important;\n &:after {\n position: absolute;\n right: 20px;\n top: 10px;\n }\n }\n }\n &:hover, &.open {\n .tab-indicator(@left: 20px, @right: 20px);\n > a {\n color: @gray-darker;\n &:after {\n border-top-color: @gray-darker;\n }\n }\n }\n > a {\n background-color: transparent;\n display: block;\n line-height: 1;\n padding: 9px 20px;\n &.dropdown-toggle {\n padding-right: 35px;\n &:after {\n font-size: @font-size-large + 1;\n position: absolute;\n right: 20px;\n top: 9px;\n }\n }\n &:hover {\n color: @gray-darker;\n }\n }\n a {\n color: @gray-pf;\n }\n }\n }\n }\n }\n > li > a {\n border-bottom: 1px solid transparent;\n border-top: 1px solid transparent;\n position: relative;\n margin: -1px 0 0;\n &:hover {\n background-color: @navbar-pf-navbar-primary-hover-bg-color-stop;\n border-top-color: @navbar-pf-navbar-primary-hover-border-color;\n color: @navbar-pf-color;\n #gradient > .vertical(@navbar-pf-navbar-primary-hover-bg-color-start, @navbar-pf-navbar-primary-hover-bg-color-stop);\n }\n }\n > .active > a, > .active > a:hover, > .active > a:focus, > .open > a, > .open > a:hover, > .open > a:focus {\n background-color: @navbar-pf-navbar-primary-active-bg-color-stop;\n border-bottom-color: @navbar-pf-navbar-primary-active-bg-color-stop;\n border-top-color: @navbar-pf-navbar-primary-active-border-color;\n .box-shadow(none);\n color: @navbar-pf-active-color;\n #gradient > .vertical(@navbar-pf-navbar-primary-active-bg-color-start, @navbar-pf-navbar-primary-active-bg-color-stop);\n }\n li.context {\n &.context-bootstrap-select .filter-option {\n max-width: 160px;\n text-overflow: ellipsis;\n }\n &.dropdown {\n border-bottom: 0;\n }\n > a, &.context-bootstrap-select {\n background-color: @navbar-pf-navbar-primary-context-bg-color-stop;\n border-bottom-color: @navbar-pf-navbar-primary-context-border-color;\n border-right: 1px solid @navbar-pf-navbar-primary-context-border-color;\n border-top-color: @navbar-pf-navbar-primary-context-border-top-color;\n font-weight: 600;\n #gradient > .vertical(@navbar-pf-navbar-primary-context-bg-color-start, @navbar-pf-navbar-primary-context-bg-color-stop);\n &:hover {\n background-color: @navbar-pf-navbar-primary-context-hover-bg-color-stop;\n border-bottom-color: @navbar-pf-navbar-primary-context-hover-border-color;\n border-right-color: @navbar-pf-navbar-primary-context-hover-border-color;\n border-top-color: @navbar-pf-navbar-primary-context-hover-border-top-color;\n #gradient > .vertical(@navbar-pf-navbar-primary-context-hover-bg-color-start, @navbar-pf-navbar-primary-context-hover-bg-color-stop);\n }\n }\n &.open > a {\n background-color: @navbar-pf-navbar-primary-context-active-bg-color-stop;\n border-bottom-color: @navbar-pf-navbar-primary-context-active-border-color;\n border-right-color: @navbar-pf-navbar-primary-context-active-border-right-color;\n border-top-color: @navbar-pf-navbar-primary-context-active-border-top-color;\n #gradient > .vertical(@navbar-pf-navbar-primary-context-active-bg-color-start, @navbar-pf-navbar-primary-context-active-bg-color-stop);\n }\n }\n }\n .navbar-utility {\n border-bottom: 0;\n font-size: @font-size-small;\n position: absolute;\n right: 0;\n top: 0;\n > .active > a, > .active > a:hover, > .active > a:focus, > .open > a, > .open > a:hover, > .open > a:focus {\n background: @navbar-pf-navbar-utility-open-bg-color;\n color: @navbar-pf-navbar-utility-color;\n }\n > li > a {\n border-left: 1px solid @navbar-pf-navbar-utility-border-color;\n color: @navbar-pf-navbar-utility-color !important;\n padding: 7px 10px;\n &:hover {\n background: @navbar-pf-navbar-utility-hover-bg-color;\n border-left-color: @navbar-pf-navbar-utility-hover-border-color;\n }\n }\n > li.open > a {\n border-left-color: @navbar-pf-navbar-utility-open-border-color;\n color: @navbar-pf-active-color !important;\n }\n li.dropdown > .dropdown-toggle {\n padding-left: 26px;\n .pficon-user {\n left: 10px;\n top: 7px;\n }\n }\n .open .dropdown-menu {\n left: auto;\n right: 0;\n .dropdown-menu {\n left: auto;\n right: 100%;\n }\n }\n }\n .open {\n .dropdown-menu {\n border-top-width: 0 !important;\n }\n &.bootstrap-select .dropdown-menu, .dropdown-submenu > .dropdown-menu {\n border-top-width: 1px !important;\n }\n }\n }\n}\n@media (max-width: 360px) {\n .navbar-pf {\n .navbar-brand {\n margin-left: 10px;\n width: 75%;\n img {\n height: auto;\n max-width: 100%;\n }\n }\n .navbar-toggle {\n padding-left: 0;\n }\n }\n}","//\n// Search\n// --------------------------------------------------\n\n.search-pf {\n &.has-button {\n border-collapse: separate;\n display: table;\n .form-group {\n display: table-cell;\n width: 100%;\n .btn {\n .box-shadow(none);\n float: left;\n margin-left: -1px;\n &.btn-lg {\n font-size: @font-size-large + .5; // to make button height consistent across browsers!\n }\n &.btn-sm {\n font-size: @font-size-small - .3; // to make button height consistent across browsers!\n }\n }\n .form-control {\n float: left;\n }\n }\n }\n .has-clear {\n .clear {\n background: transparent; // IE8\n background: rgba(255,255,255,0); // to make the whole button clickable in IE9+ \n border: 0;\n height: @input-height-base - 1;\n line-height: 1;\n padding: 0;\n position: absolute;\n right: 1px;\n top: 1px;\n width: 28px;\n &:focus {\n outline: none;\n }\n }\n .form-control {\n padding-right: 30px;\n &::-ms-clear {\n display: none;\n }\n }\n .input-lg + .clear {\n height: @input-height-large - 2;\n width: 28px;\n }\n .input-sm + .clear {\n height: @input-height-small - 2;\n width: 28px;\n span {\n font-size: @font-size-base - 2;\n }\n }\n .search-pf-input-group {\n position: relative;\n }\n }\n}","//\n// Sidebar\n// --------------------------------------------------\n\n.sidebar-header {\n border-bottom: 1px solid darken(@page-header-border-color, 2%);\n padding-bottom: ((@line-height-computed / 2) + 1);\n margin: (@line-height-computed * 2)+10 0 @line-height-computed;\n .actions {\n margin-top: -2px;\n }\n}\n\n.sidebar-pf {\n .sidebar-header + .list-group {\n border-top: 0;\n margin-top: -@grid-gutter-width/2/2;\n .list-group-item {\n background: transparent;\n border-color: darken(@page-header-border-color, 2%);\n padding-left: 0;\n }\n .list-group-item-heading {\n font-size: @font-size-base;\n }\n }\n .nav-category {\n h2 {\n color: @dropdown-header-color;\n font-size: @font-size-base;\n font-weight: 400;\n line-height: @line-height-computed + 1;\n margin: 0;\n padding: 8px 0;\n }\n + .nav-category {\n margin-top: @grid-gutter-width/4;\n }\n }\n .nav-pills > li {\n &.active > a {\n background: @dropdown-link-active-bg !important;\n border-color: @dropdown-link-active-border-color !important;\n color: #fff;\n @media (min-width: @grid-float-breakpoint) {\n &:after {\n content: @fa-var-angle-right;\n font-family: @icon-font-name-fa;\n display: block;\n position: absolute;\n right: @grid-gutter-width/2/2;\n top: 1px;\n }\n }\n .fa {\n color: #fff;\n }\n }\n > a {\n border-bottom: 1px solid transparent;\n border-radius: 0;\n border-top: 1px solid transparent;\n color: @text-color;\n font-size: @font-size-base + 1;\n line-height: @line-height-computed + 1;\n padding: 1px @grid-gutter-width/2;\n &:hover {\n background: @dropdown-link-hover-bg;\n border-color: @dropdown-link-hover-border-color;\n }\n .fa {\n color: lighten(@gray-pf, 12%);\n font-size: @font-size-base + 3;\n margin-right: @grid-gutter-width/4;\n text-align: center;\n vertical-align: middle;\n width: @font-size-base + 3;\n }\n }\n }\n .nav-stacked {\n margin-left: -@grid-gutter-width/2;\n margin-right: -@grid-gutter-width/2;\n li + li {\n margin-top: 0;\n }\n }\n .panel {\n background: transparent;\n }\n .panel-body {\n padding: 6px @grid-gutter-width/2;\n .nav-pills > li > a {\n padding-left: @grid-gutter-width/2 + 17;\n }\n }\n .panel-heading {\n padding: 9px @grid-gutter-width/2;\n }\n .panel-title {\n font-size: @font-size-base;\n > a {\n &:before {\n display: inline-block;\n margin-left: 1px;\n margin-right: 4px;\n width: 9px;\n }\n &.collapsed:before {\n margin-left: 3px;\n margin-right: 2px;\n }\n }\n }\n}\n\n@media (min-width: @grid-float-breakpoint-max) {\n .sidebar-header-bleed-left {\n margin-left: -@grid-gutter-width/2;\n > h2 {\n margin-left: @grid-gutter-width/2;\n }\n }\n .sidebar-header-bleed-right {\n margin-right: -@grid-gutter-width/2;\n .actions {\n margin-right: @grid-gutter-width/2;\n }\n > h2 {\n margin-right: @grid-gutter-width/2;\n }\n + .list-group {\n margin-right: -@grid-gutter-width/2;\n }\n }\n .sidebar-pf {\n .panel-group .panel-default, .treeview {\n border-left: 0;\n border-right: 0;\n margin-left: -@grid-gutter-width/2;\n margin-right: -@grid-gutter-width/2;\n }\n .treeview {\n margin-top: 5px;\n .list-group-item {\n padding-left: @grid-gutter-width/2;\n padding-right: @grid-gutter-width/2;\n &.node-selected:after {\n content: @fa-var-angle-right;\n font-family: @icon-font-name-fa;\n display: block;\n position: absolute;\n right: @grid-gutter-width/2/2;\n top: 1px;\n }\n }\n }\n }\n}\n\n@media (min-width: @grid-float-breakpoint) {\n .sidebar-pf {\n background: @sidebar-pf-bg;\n &.sidebar-pf-left {\n border-right: 1px solid @sidebar-pf-border-color;\n }\n &.sidebar-pf-right {\n border-left: 1px solid @sidebar-pf-border-color;\n }\n > .nav-category, > .nav-stacked {\n margin-top: 5px;\n }\n }\n}","//\n// Spinner\n// --------------------------------------------------\n\n@-webkit-keyframes rotation {\n from {-webkit-transform: rotate(0deg);}\n to {-webkit-transform: rotate(359deg);}\n}\n\n@keyframes rotation {\n from {transform: rotate(0deg);}\n to {transform: rotate(359deg);}\n}\n\n.spinner {\n -webkit-animation: rotation .6s infinite linear;\n animation: rotation .6s infinite linear;\n border-bottom: 4px solid rgba(0,0,0,.25);\n border-left: 4px solid rgba(0,0,0,.25);\n border-right: 4px solid rgba(0,0,0,.25);\n border-radius: 100%;\n border-top: 4px solid rgba(0,0,0,.75);\n height: @font-size-base*2;\n margin: 0 auto;\n position: relative;\n width: @font-size-base*2;\n &.spinner-inline {\n display: inline-block;\n margin-right: 3px;\n }\n &.spinner-lg {\n border-width: 5px;\n height: @font-size-base*2.5;\n width: @font-size-base*2.5;\n }\n &.spinner-sm {\n border-width: 3px;\n height: @font-size-base*1.5;\n width: @font-size-base*1.5;\n }\n &.spinner-xs {\n border-width: 2px;\n height: @font-size-base;\n width: @font-size-base;\n }\n}\n\n.ie9 .spinner {\n background: url(\"@{img-path}/@{img-spinner}\") no-repeat;\n border: 0;\n &.spinner-lg {\n background-image: url(\"@{img-path}/@{img-spinner-lg}\");\n }\n &.spinner-sm {\n background-image: url(\"@{img-path}/@{img-spinner-sm}\");\n }\n &.spinner-xs {\n background-image: url(\"@{img-path}/@{img-spinner-xs}\");\n }\n}\n","//\n// Syntax Highlighting for google-code-prettify\n// --------------------------------------------------\n\n.prettyprint {\n .atn, .com, .fun, .var {\n color: @syntax-3;\n }\n\n .atv, .str {\n color: @syntax-1;\n }\n\n .clo, .dec, .kwd, .opn, .pln, .pun {\n color: @syntax-2;\n }\n\n .lit, .tag, .typ {\n color: @syntax-4;\n }\n\n ol.linenums {\n margin-bottom: 0;\n }\n}","//\n// Login\n// --------------------------------------------------\n\n.login-pf {\n background-color: @login-bg-color;\n @media (min-width: @screen-sm-min) {\n background-image: url(\"@{img-path}/@{img-bg-login-2}\");\n background-position: 100% 100%;\n background-repeat: no-repeat;\n background-size: 30%;\n }\n @media (min-width: @screen-md-min) {\n background-size: auto;\n }\n #badge {\n margin-bottom: 50px;\n }\n body {\n background: transparent;\n @media (min-width: @screen-sm-min) {\n background-image: url(\"@{img-path}/@{img-bg-login}\");\n background-repeat: no-repeat;\n background-size: 30%;\n height: 100%;\n }\n @media (min-width: @screen-md-min) {\n background-size: auto;\n }\n }\n #brand {\n top: -30px;\n @media (min-width: @screen-sm-min) {\n top: -40px;\n + .alert {\n margin-top: -20px;\n }\n }\n }\n .container {\n padding-top: 0;\n @media (min-width: @screen-md-min) {\n bottom: 20%;\n padding-right: 120px;\n }\n }\n}\n"]}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.min.css
new file mode 100644
index 0000000..e5ce938
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.min.css
@@ -0,0 +1,2 @@
+.form-inline .combobox-container,.form-search .combobox-container{display:inline-block;margin-bottom:0;vertical-align:top}.form-inline .combobox-container .input-group-addon,.form-search .combobox-container .input-group-addon{width:auto}.combobox-container:not(.combobox-selected) .glyphicon-remove,.combobox-selected .caret{display:none}.typeahead-long{max-height:300px;overflow-y:auto}.control-group.error .combobox-container .add-on{color:#B94A48;border-color:#B94A48}.control-group.error .combobox-container .caret{border-top-color:#B94A48}.control-group.warning .combobox-container .add-on{color:#C09853;border-color:#C09853}.control-group.warning .combobox-container .caret{border-top-color:#C09853}.control-group.success .combobox-container .add-on{color:#468847;border-color:#468847}.control-group.success .combobox-container .caret{border-top-color:#468847}.datepicker-dropdown:after,.datepicker-dropdown:before{content:'';position:absolute;display:inline-block;border-top:0}.datepicker{padding:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2)}.datepicker-dropdown:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-khtml-user-select:none;-ms-user-select:none;user-select:none}.c3 text,.datepicker table{-webkit-user-select:none;-moz-user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.disabled.focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover.focus,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.focus,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover.focus,.datepicker table tr td.today:hover:focus{color:#000;background-color:#ffc966;border-color:#b37400}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:hover,.open>.dropdown-toggle.datepicker table tr td.today,.open>.dropdown-toggle.datepicker table tr td.today.disabled,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffc966;border-color:#f59e00}.datepicker table tr td.today.active.focus,.datepicker table tr td.today.active:focus,.datepicker table tr td.today.active:hover,.datepicker table tr td.today.disabled.active.focus,.datepicker table tr td.today.disabled.active:focus,.datepicker table tr td.today.disabled.active:hover,.datepicker table tr td.today.disabled:active.focus,.datepicker table tr td.today.disabled:active:focus,.datepicker table tr td.today.disabled:active:hover,.datepicker table tr td.today.disabled:hover.active.focus,.datepicker table tr td.today.disabled:hover.active:focus,.datepicker table tr td.today.disabled:hover.active:hover,.datepicker table tr td.today.disabled:hover:active.focus,.datepicker table tr td.today.disabled:hover:active:focus,.datepicker table tr td.today.disabled:hover:active:hover,.datepicker table tr td.today:active.focus,.datepicker table tr td.today:active:focus,.datepicker table tr td.today:active:hover,.datepicker table tr td.today:hover.active.focus,.datepicker table tr td.today:hover.active:focus,.datepicker table tr td.today:hover.active:hover,.datepicker table tr td.today:hover:active.focus,.datepicker table tr td.today:hover:active:focus,.datepicker table tr td.today:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td.today.disabled.focus,.open>.dropdown-toggle.datepicker table tr td.today.disabled:focus,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td.today.focus,.open>.dropdown-toggle.datepicker table tr td.today:focus,.open>.dropdown-toggle.datepicker table tr td.today:hover,.open>.dropdown-toggle.datepicker table tr td.today:hover.focus,.open>.dropdown-toggle.datepicker table tr td.today:hover:focus,.open>.dropdown-toggle.datepicker table tr td.today:hover:hover{color:#000;background-color:#ffbc42;border-color:#b37400}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open>.dropdown-toggle.datepicker table tr td.today,.open>.dropdown-toggle.datepicker table tr td.today.disabled,.open>.dropdown-toggle.datepicker table tr td.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled.focus,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled.focus,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled.focus,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled].focus,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled].focus,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled.focus,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled].focus,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled].focus,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled.focus,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover.focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today.focus,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover.focus,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today .badge,.datepicker table tr td.today.disabled .badge,.datepicker table tr td.today.disabled:hover .badge,.datepicker table tr td.today:hover .badge{color:#ffdb99;background-color:#000}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open>.dropdown-toggle.datepicker table tr td.active,.open>.dropdown-toggle.datepicker table tr td.active.disabled,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.active:hover,.open>.dropdown-toggle.datepicker table tr td.range.today,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.range.today:hover,.open>.dropdown-toggle.datepicker table tr td.selected,.open>.dropdown-toggle.datepicker table tr td.selected.disabled,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.disabled.focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover.focus,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.focus,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover.focus,.datepicker table tr td.range.today:hover:focus{color:#000;background-color:#f4b747;border-color:#815608}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:hover,.open>.dropdown-toggle.datepicker table tr td.range.today,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4b747;border-color:#bf800c}.datepicker table tr td.range.today.active.focus,.datepicker table tr td.range.today.active:focus,.datepicker table tr td.range.today.active:hover,.datepicker table tr td.range.today.disabled.active.focus,.datepicker table tr td.range.today.disabled.active:focus,.datepicker table tr td.range.today.disabled.active:hover,.datepicker table tr td.range.today.disabled:active.focus,.datepicker table tr td.range.today.disabled:active:focus,.datepicker table tr td.range.today.disabled:active:hover,.datepicker table tr td.range.today.disabled:hover.active.focus,.datepicker table tr td.range.today.disabled:hover.active:focus,.datepicker table tr td.range.today.disabled:hover.active:hover,.datepicker table tr td.range.today.disabled:hover:active.focus,.datepicker table tr td.range.today.disabled:hover:active:focus,.datepicker table tr td.range.today.disabled:hover:active:hover,.datepicker table tr td.range.today:active.focus,.datepicker table tr td.range.today:active:focus,.datepicker table tr td.range.today:active:hover,.datepicker table tr td.range.today:hover.active.focus,.datepicker table tr td.range.today:hover.active:focus,.datepicker table tr td.range.today:hover.active:hover,.datepicker table tr td.range.today:hover:active.focus,.datepicker table tr td.range.today:hover:active:focus,.datepicker table tr td.range.today:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled.focus,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:focus,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td.range.today.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td.range.today.focus,.open>.dropdown-toggle.datepicker table tr td.range.today:focus,.open>.dropdown-toggle.datepicker table tr td.range.today:hover,.open>.dropdown-toggle.datepicker table tr td.range.today:hover.focus,.open>.dropdown-toggle.datepicker table tr td.range.today:hover:focus,.open>.dropdown-toggle.datepicker table tr td.range.today:hover:hover{color:#000;background-color:#f2aa25;border-color:#815608}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled.focus,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled.focus,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled.focus,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled].focus,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled].focus,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled.focus,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled].focus,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled].focus,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled.focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today.focus,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover.focus,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today .badge,.datepicker table tr td.range.today.disabled .badge,.datepicker table tr td.range.today.disabled:hover .badge,.datepicker table tr td.range.today:hover .badge{color:#f7ca77;background-color:#000}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555}.datepicker table tr td.selected.disabled.focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover.focus,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.focus,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover.focus,.datepicker table tr td.selected:hover:focus{color:#fff;background-color:grey;border-color:#161616}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:hover,.open>.dropdown-toggle.datepicker table tr td.selected,.open>.dropdown-toggle.datepicker table tr td.selected.disabled,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:grey;border-color:#373737}.datepicker table tr td.selected.active.focus,.datepicker table tr td.selected.active:focus,.datepicker table tr td.selected.active:hover,.datepicker table tr td.selected.disabled.active.focus,.datepicker table tr td.selected.disabled.active:focus,.datepicker table tr td.selected.disabled.active:hover,.datepicker table tr td.selected.disabled:active.focus,.datepicker table tr td.selected.disabled:active:focus,.datepicker table tr td.selected.disabled:active:hover,.datepicker table tr td.selected.disabled:hover.active.focus,.datepicker table tr td.selected.disabled:hover.active:focus,.datepicker table tr td.selected.disabled:hover.active:hover,.datepicker table tr td.selected.disabled:hover:active.focus,.datepicker table tr td.selected.disabled:hover:active:focus,.datepicker table tr td.selected.disabled:hover:active:hover,.datepicker table tr td.selected:active.focus,.datepicker table tr td.selected:active:focus,.datepicker table tr td.selected:active:hover,.datepicker table tr td.selected:hover.active.focus,.datepicker table tr td.selected:hover.active:focus,.datepicker table tr td.selected:hover.active:hover,.datepicker table tr td.selected:hover:active.focus,.datepicker table tr td.selected:hover:active:focus,.datepicker table tr td.selected:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td.selected.disabled.focus,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:focus,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td.selected.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td.selected.focus,.open>.dropdown-toggle.datepicker table tr td.selected:focus,.open>.dropdown-toggle.datepicker table tr td.selected:hover,.open>.dropdown-toggle.datepicker table tr td.selected:hover.focus,.open>.dropdown-toggle.datepicker table tr td.selected:hover:focus,.open>.dropdown-toggle.datepicker table tr td.selected:hover:hover{color:#fff;background-color:#6e6e6e;border-color:#161616}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled.focus,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled.focus,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled.focus,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled].focus,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled].focus,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled.focus,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled].focus,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled].focus,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled.focus,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected.focus,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover.focus,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.selected .badge,.datepicker table tr td.selected.disabled .badge,.datepicker table tr td.selected.disabled:hover .badge,.datepicker table tr td.selected:hover .badge{color:#999;background-color:#fff}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#0085cf;border-color:#006e9c;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.disabled.focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover.focus,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.focus,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover.focus,.datepicker table tr td.active:hover:focus{color:#fff;background-color:#00649c;border-color:#00141d}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:hover,.open>.dropdown-toggle.datepicker table tr td.active,.open>.dropdown-toggle.datepicker table tr td.active.disabled,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:#00649c;border-color:#00435f}.datepicker table tr td.active.active.focus,.datepicker table tr td.active.active:focus,.datepicker table tr td.active.active:hover,.datepicker table tr td.active.disabled.active.focus,.datepicker table tr td.active.disabled.active:focus,.datepicker table tr td.active.disabled.active:hover,.datepicker table tr td.active.disabled:active.focus,.datepicker table tr td.active.disabled:active:focus,.datepicker table tr td.active.disabled:active:hover,.datepicker table tr td.active.disabled:hover.active.focus,.datepicker table tr td.active.disabled:hover.active:focus,.datepicker table tr td.active.disabled:hover.active:hover,.datepicker table tr td.active.disabled:hover:active.focus,.datepicker table tr td.active.disabled:hover:active:focus,.datepicker table tr td.active.disabled:hover:active:hover,.datepicker table tr td.active:active.focus,.datepicker table tr td.active:active:focus,.datepicker table tr td.active:active:hover,.datepicker table tr td.active:hover.active.focus,.datepicker table tr td.active:hover.active:focus,.datepicker table tr td.active:hover.active:hover,.datepicker table tr td.active:hover:active.focus,.datepicker table tr td.active:hover:active:focus,.datepicker table tr td.active:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td.active.disabled.focus,.open>.dropdown-toggle.datepicker table tr td.active.disabled:focus,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td.active.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td.active.focus,.open>.dropdown-toggle.datepicker table tr td.active:focus,.open>.dropdown-toggle.datepicker table tr td.active:hover,.open>.dropdown-toggle.datepicker table tr td.active:hover.focus,.open>.dropdown-toggle.datepicker table tr td.active:hover:focus,.open>.dropdown-toggle.datepicker table tr td.active:hover:hover{color:#fff;background-color:#004d78;border-color:#00141d}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled.focus,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled.focus,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled.focus,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled].focus,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled].focus,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled.focus,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled].focus,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled].focus,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled.focus,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover.focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active.focus,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover.focus,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#0085cf;border-color:#006e9c}.datepicker table tr td.active .badge,.datepicker table tr td.active.disabled .badge,.datepicker table tr td.active.disabled:hover .badge,.datepicker table tr td.active:hover .badge{color:#0085cf;background-color:#fff}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#0085cf;border-color:#006e9c;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover.focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.focus,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover.focus,.datepicker table tr td span.active:hover:focus{color:#fff;background-color:#00649c;border-color:#00141d}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:hover,.open>.dropdown-toggle.datepicker table tr td span.active,.open>.dropdown-toggle.datepicker table tr td span.active.disabled,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:#00649c;border-color:#00435f}.datepicker table tr td span.active.active.focus,.datepicker table tr td span.active.active:focus,.datepicker table tr td span.active.active:hover,.datepicker table tr td span.active.disabled.active.focus,.datepicker table tr td span.active.disabled.active:focus,.datepicker table tr td span.active.disabled.active:hover,.datepicker table tr td span.active.disabled:active.focus,.datepicker table tr td span.active.disabled:active:focus,.datepicker table tr td span.active.disabled:active:hover,.datepicker table tr td span.active.disabled:hover.active.focus,.datepicker table tr td span.active.disabled:hover.active:focus,.datepicker table tr td span.active.disabled:hover.active:hover,.datepicker table tr td span.active.disabled:hover:active.focus,.datepicker table tr td span.active.disabled:hover:active:focus,.datepicker table tr td span.active.disabled:hover:active:hover,.datepicker table tr td span.active:active.focus,.datepicker table tr td span.active:active:focus,.datepicker table tr td span.active:active:hover,.datepicker table tr td span.active:hover.active.focus,.datepicker table tr td span.active:hover.active:focus,.datepicker table tr td span.active:hover.active:hover,.datepicker table tr td span.active:hover:active.focus,.datepicker table tr td span.active:hover:active:focus,.datepicker table tr td span.active:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td span.active.disabled.focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td span.active.focus,.open>.dropdown-toggle.datepicker table tr td span.active:focus,.open>.dropdown-toggle.datepicker table tr td span.active:hover,.open>.dropdown-toggle.datepicker table tr td span.active:hover.focus,.open>.dropdown-toggle.datepicker table tr td span.active:hover:focus,.open>.dropdown-toggle.datepicker table tr td span.active:hover:hover{color:#fff;background-color:#004d78;border-color:#00141d}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open>.dropdown-toggle.datepicker table tr td span.active,.open>.dropdown-toggle.datepicker table tr td span.active.disabled,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled.focus,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled.focus,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled].focus,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled].focus,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled.focus,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled].focus,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled].focus,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active.focus,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover.focus,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#0085cf;border-color:#006e9c}.datepicker table tr td span.active .badge,.datepicker table tr td span.active.disabled .badge,.datepicker table tr td span.active.disabled:hover .badge,.datepicker table tr td span.active:hover .badge{color:#0085cf;background-color:#fff}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li.disabled a,.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange .input-group-addon{width:auto;min-width:16px;font-weight:400;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;border:solid #bababa;border-width:1px 0;margin-left:-5px;margin-right:-5px}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle,.bootstrap-select.form-control:not([class*=col-]),.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select .dropdown-toggle:focus{outline:#333 dotted thin!important;outline:-webkit-focus-ring-color auto 5px!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li a,table.datatable thead .sorting,table.datatable thead .sorting_asc,table.datatable thead .sorting_asc_disabled,table.datatable thead .sorting_desc,table.datatable thead .sorting_desc_disabled{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1036}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%}select.bs-select-hidden,select.selectpicker{display:none!important}select.mobile-device{position:absolute!important;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}.c3-tooltip td>span,.combobox-container.combobox-selected .glyphicon-remove{display:inline-block}.c3 svg{font:10px sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid text{fill:#aaa}.c3-text.c3-empty{fill:grey;font-size:2em}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-moz-box-shadow:7px 7px 12px -9px #777}.c3-tooltip th{background-color:#aaa;text-align:left;color:#FFF}.c3-tooltip td{background-color:#fff}.c3-tooltip td>span{width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 path,.c3-axis-x .tick line{stroke:#d1d1d1}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max,.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}.blank-slate-pf{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:1px;margin-bottom:20px;padding:30px;text-align:center}.datepicker,.datepicker table tr td,.datepicker table tr td span,.datepicker table tr th{border-radius:1px}@media (min-width:768px){.blank-slate-pf{padding:60px}}@media (min-width:992px){.blank-slate-pf{padding:90px 120px}}.blank-slate-pf .blank-slate-pf-icon{color:#999;font-size:57.6px;line-height:57.6px}.blank-slate-pf .blank-slate-pf-main-action,.blank-slate-pf .blank-slate-pf-secondary-action{margin-top:20px}.combobox-container .caret{margin-left:0}.combobox-container .combobox::-ms-clear{display:none}.combobox-container .dropdown-menu{margin-top:-1px;width:100%}.combobox-container .glyphicon-remove{display:none;top:auto;width:12px}.combobox-container .glyphicon-remove:before{content:"\e60b";font-family:"PatternFlyIcons-webfont"}.combobox-container .input-group-addon{background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#b7b7b7;color:#4d5258;position:relative}.c3-tooltip,.c3-tooltip-sparkline{opacity:.9;filter:alpha(opacity=90)}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.combobox-container .input-group-addon:focus,.combobox-container .input-group-addon:hover,.open .dropdown-toggle.combobox-container .input-group-addon{background-color:#eee;background-image:none;border-color:#b7b7b7;color:#4d5258}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.open .dropdown-toggle.combobox-container .input-group-addon{background-image:none}.combobox-container .input-group-addon.active.focus,.combobox-container .input-group-addon.active:focus,.combobox-container .input-group-addon.active:hover,.combobox-container .input-group-addon:active.focus,.combobox-container .input-group-addon:active:focus,.combobox-container .input-group-addon:active:hover,.open .dropdown-toggle.combobox-container .input-group-addon.focus,.open .dropdown-toggle.combobox-container .input-group-addon:focus,.open .dropdown-toggle.combobox-container .input-group-addon:hover{background-color:#e2e2e2;border-color:#a5a5a5}.combobox-container .input-group-addon.disabled,.combobox-container .input-group-addon.disabled.active,.combobox-container .input-group-addon.disabled:active,.combobox-container .input-group-addon.disabled:focus,.combobox-container .input-group-addon.disabled:hover,.combobox-container .input-group-addon[disabled],.combobox-container .input-group-addon[disabled].active,.combobox-container .input-group-addon[disabled]:active,.combobox-container .input-group-addon[disabled]:focus,.combobox-container .input-group-addon[disabled]:hover,fieldset[disabled] .combobox-container .input-group-addon,fieldset[disabled] .combobox-container .input-group-addon.active,fieldset[disabled] .combobox-container .input-group-addon:active,fieldset[disabled] .combobox-container .input-group-addon:focus,fieldset[disabled] .combobox-container .input-group-addon:hover{background-color:#eee;border-color:#b7b7b7}.combobox-container .input-group-addon:active{-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.2);box-shadow:inset 0 2px 8px rgba(0,0,0,.2)}.datepicker .datepicker-switch,.datepicker tfoot .today{font-size:14px;font-weight:500}.datepicker .next,.datepicker .prev{font-weight:500}.datepicker table tr td.active.active,.datepicker table tr td.active.active.disabled,.datepicker table tr td.active.active.disabled:hover,.datepicker table tr td.active.active:hover{background:#0099d3!important;color:#fff!important;text-shadow:none}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#d4edfa}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{text-shadow:none}.datepicker table tr td span.active.active,.datepicker table tr td span.active.active.disabled,.datepicker table tr td span.active.active.disabled:hover,.datepicker table tr td span.active.active:hover{background:#0099d3;text-shadow:none}.datepicker table tr td span:hover,.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#d4edfa}.input-daterange input:first-child{border-radius:1px 0 0 1px}.input-daterange input:last-child{border-radius:0 1px 1px 0}.input-daterange .input-group-addon{background-color:#eee;border-color:#bababa;line-height:1.66666667;padding:2px 6px}.bootstrap-select.btn-group.form-control{margin-bottom:0}.bootstrap-select.btn-group .btn{-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-select.btn-group .btn:hover{border-color:#7bb2dd}.bootstrap-select.btn-group .btn .caret{margin-top:-4px}.bootstrap-select.btn-group .btn:focus{border-color:#66afe9;outline:0!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ColVis_Button:active:focus,.search-pf .has-clear .clear:focus,table.datatable th:active{outline:0}.has-error .bootstrap-select.btn-group .btn{border-color:#a94442}.has-error .bootstrap-select.btn-group .btn:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-success .bootstrap-select.btn-group .btn{border-color:#3c763d}.has-success .bootstrap-select.btn-group .btn:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-warning .bootstrap-select.btn-group .btn{border-color:#ec7a08}.has-warning .bootstrap-select.btn-group .btn:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #faad60}.bootstrap-select.btn-group .dropdown-menu>.active>a,.bootstrap-select.btn-group .dropdown-menu>.active>a:active{background-color:#d4edfa!important;border-color:#b3d3e7!important;color:#333!important}.bootstrap-select.btn-group .dropdown-menu>.active>a small,.bootstrap-select.btn-group .dropdown-menu>.active>a:active small,.bootstrap-select.btn-group .dropdown-menu>.disabled>a{color:#999!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a{background-color:#0099d3!important;border-color:#0076b7!important;color:#fff!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu .divider{background:#e5e5e5!important;margin:4px 1px!important}.bootstrap-select.btn-group .dropdown-menu dt{color:#969696;font-weight:400;padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li>a.opt{padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li a:active small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu li a:focus small,.bootstrap-select.btn-group .dropdown-menu li a:hover small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small{color:#999}.treeview .list-group{border-top:0}.treeview .list-group-item{background:0 0;border-bottom:1px solid transparent!important;border-top:1px solid transparent!important;margin-bottom:0;padding:0 10px}.treeview .list-group-item:hover{background:#d4edfa!important;border-color:#b3d3e7!important}.treeview .list-group-item.node-selected{background:#0099d3!important;border-color:#0076b7!important;color:#fff!important}.treeview span.icon{display:inline-block;font-size:13px;min-width:10px;text-align:center}.treeview span.icon>[class*=fa-angle]{font-size:15px}.treeview span.indent{margin-right:5px}.container-cards-pf{margin-top:20px}.card-pf{background:#fff;border-top:2px solid transparent;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.175);box-shadow:0 1px 1px rgba(0,0,0,.175);padding:0 20px;margin:0 -10px 20px}.card-pf.card-pf-accented{border-top-color:#39a5dc}.card-pf-body{margin:20px 0;padding:0 0 20px}.card-pf-body>:last-child{margin-bottom:0}.card-pf-footer{background-color:#fafafa;border-top:1px solid #d1d1d1;margin:0 -20px!important;padding:20px 20px 10px}.card-pf-footer a .fa,.card-pf-footer a .pficon{margin-right:5px}.card-pf-heading{border-bottom:1px solid #d1d1d1;margin:0 -20px 20px;padding:0 20px}.card-pf-title{font-size:16px;font-weight:300;margin:20px 0;padding:0}.cards-pf{background:#f5f5f5}.row-cards-pf{margin-left:-10px;margin-right:-10px}.c3 svg{font-family:"Open Sans",Helvetica,Arial,sans-serif}.c3-axis-y .tick line{display:none}.c3-chart-arc path{stroke:#fff}.c3-grid line{stroke:#d1d1d1}.c3-line{stroke-width:2px}.c3-tooltip{background:#434343;-webkit-box-shadow:none;box-shadow:none}.c3-tooltip td,.c3-tooltip th{background:0 0;font-size:12px}.c3-tooltip td{border:0;color:#fff;padding:5px 10px}.c3-tooltip th{padding:5px 10px 0}.c3-tooltip tr{border:0}.c3-tooltip tr+tr>td{padding-top:0}.c3-tooltip-sparkline{background:#434343;color:#fff;padding:2px 6px}.c3-xgrid,.c3-ygrid{stroke-dasharray:0 0}.close{text-shadow:none;opacity:.6;filter:alpha(opacity=60)}.close:focus,.close:hover{opacity:.9;filter:alpha(opacity=90)}.dataTables_paginate .pagination>li.disabled>span,.dataTables_paginate .pagination>li>span:focus,.dataTables_paginate .pagination>li>span:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.ColVis_catcher{position:absolute;z-index:999}.ColVis_collection{background-color:#fff;border:1px solid #b6b6b6;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box;list-style:none;margin:-1px 0 0;padding:5px 10px;width:150px;z-index:1000}.ColVis_collection label{font-weight:400;margin-bottom:5px;margin-top:5px;padding-left:20px}.ColVis_collectionBackground{background-color:#fff;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}.dataTables_header{background-color:#f6f6f6;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative;text-align:center}.dataTables_header .btn{-webkit-box-shadow:none;box-shadow:none}.dataTables_header .ColVis{position:absolute;right:5px;text-align:left;top:5px}.dataTables_header .ColVis+.dataTables_info{padding-right:30px}.dataTables_header .dataTables_filter{position:absolute}.dataTables_header .dataTables_filter input{border:1px solid #bbb;height:24px}@media (max-width:767px){.dataTables_header .dataTables_filter input{width:100px}}.dataTables_header .dataTables_info{padding:2px 0}@media (max-width:480px){.dataTables_header .dataTables_info{text-align:right}}.dataTables_header .dataTables_info b{font-weight:700}.dataTables_footer{background-color:#fff;border:1px solid #d1d1d1;border-top:none;overflow:hidden}.dataTables_paginate{background:#fafafa;float:right;margin:0}.dataTables_paginate .pagination{float:left;margin:0}.dataTables_paginate .pagination>li>span{border-color:#fff #e1e1e1 #f4f4f4;border-width:0 1px;font-size:16px;font-weight:400;padding:0;text-align:center;width:31px}.dataTables_paginate .pagination>li.last>span{border-right:none}.dataTables_paginate .pagination>li.disabled>span{background:#f5f5f5;border-left-color:#ececec;border-right-color:#ececec}.dataTables_paginate .pagination-input{float:left;font-size:12px;line-height:1em;padding:4px 15px 0;text-align:right}.dataTables_paginate .pagination-input .paginate_input{border:1px solid #d3d3d3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);font-size:12px;font-weight:600;height:19px;margin-right:8px;padding-right:3px;text-align:right;width:30px}.dataTables_paginate .pagination-input .paginate_of{position:relative}.dataTables_paginate .pagination-input .paginate_of b{margin-left:3px}.dataTables_wrapper{margin:20px 0}.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}.DTCR_pointer{background-color:#0099d3;width:1px;z-index:201}table.datatable{margin-bottom:0;max-width:none!important}table.datatable thead .sorting_asc,table.datatable thead .sorting_desc{border:0;color:#0099d3!important;display:block;position:relative}table.datatable thead .sorting_asc:after,table.datatable thead .sorting_desc:after{content:"\f107";font-family:"FontAwesome";font-size:10px;font-weight:400;height:9px;left:7px;line-height:12px;position:relative;top:2px;vertical-align:baseline;width:12px}table.datatable thead .sorting_asc:before,table.datatable thead .sorting_desc:before{background:#0099d3;content:'';height:2px;position:absolute;left:0;top:0;width:100%}table.datatable thead .sorting_asc:after{content:"\f106";top:-3px}@font-face{font-family:'PatternFlyIcons-webfont';src:url(../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.eot);src:url(../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.eot?#iefix) format('embedded-opentype'),url(../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf) format('truetype'),url(../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.woff) format('woff'),url(../../components/patternfly/dist/fonts/PatternFlyIcons-webfont.svg#PatternFlyIcons-webfont) format('svg');font-weight:400;font-style:normal}[class*=" pficon-"],[class^=pficon-]{display:inline-block;font-family:'PatternFlyIcons-webfont';font-style:normal;font-variant:normal;font-weight:400;line-height:1;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pficon-screen:before{content:"\e600"}.pficon-save:before{content:"\e601"}.pficon-ok:before{color:#3f9c35;content:"\e602"}.pficon-flag:before,.pficon-messages:before{content:"\e603"}.pficon-info:before{content:"\e604"}.pficon-help:before{content:"\e605"}.pficon-folder-open:before{content:"\e606"}.pficon-folder-close:before{content:"\e607"}.pficon-edit:before{content:"\e60a"}.pficon-close:before{content:"\e60b"}.pficon-user:before{content:"\e60e"}.pficon-users:before{content:"\e60f"}.pficon-add-circle-o:before{content:"\e61b"}.pficon-warning-triangle-o:before{color:#ec7a08;content:"\e61c"}.pficon-error-circle-o:before{color:#c00;content:"\e61d"}.pficon-service:before{content:"\e61e"}.pficon-image:before{content:"\e61f"}.pficon-settings:before{content:"\e610"}.pficon-delete:before{content:"\e611"}.pficon-print:before{content:"\e612"}.pficon-refresh:before,.pficon-restart:before{content:"\e613"}.pficon-running:before{content:"\e614"}.pficon-import:before{content:"\e615"}.pficon-export:before{content:"\e616"}.pficon-history:before{content:"\e617"}.pficon-home:before{content:"\e618"}.pficon-cluster:before{content:"\e620"}.pficon-container-node:before{content:"\e621"}.pficon-project:before{content:"\e622"}.pficon-registry:before{content:"\e623"}.pficon-replicator:before{content:"\e624"}.pficon-route:before{content:"\e625"}.pficon-openshift:before{content:"\e626"}.pficon-kubernetes:before{content:"\e627"}.navbar-nav>li>.dropdown-menu.infotip{border-top-width:1px!important;margin-top:10px}@media (max-width:767px){.dataTables_wrapper .table-responsive{margin-bottom:0}.navbar-pf .navbar-nav .open .dropdown-menu.infotip{background-color:#fff!important;margin-top:0}}.infotip{min-width:235px;padding:0}.infotip .list-group{border-top:0;margin:0;padding:8px 0}.infotip .list-group .list-group-item{border:none;margin:0 15px 0 34px;padding:5px 0}.infotip .list-group .list-group-item>.i{color:#4d5258;font-size:13px;left:-20px;position:absolute;top:8px}.infotip .list-group .list-group-item>a{color:#4d5258;line-height:13px}.infotip .list-group .list-group-item>.close{float:right}.infotip .footer{background-color:#f5f5f5;padding:6px 15px}.infotip .footer a:hover{color:#0099d3}.infotip .arrow,.infotip .arrow:after{border-color:transparent;border-style:solid;display:block;height:0;position:absolute;width:0}.login-pf #badge,.login-pf #brand{position:relative}.infotip .arrow{border-width:11px}.infotip .arrow:after{border-width:10px;content:""}.infotip.bottom .arrow,.infotip.bottom-left .arrow,.infotip.bottom-right .arrow{border-bottom-color:#bbb;border-top-width:0;left:50%;margin-left:-11px;top:-11px}.infotip.bottom .arrow:after,.infotip.bottom-left .arrow:after,.infotip.bottom-right .arrow:after{border-top-width:0;border-bottom-color:#fff;content:" ";margin-left:-10px;top:1px}.infotip.bottom-left .arrow{left:20%}.infotip.bottom-right .arrow{left:80%}.infotip.top .arrow{border-bottom-width:0;border-top-color:#bbb;bottom:-11px;left:50%;margin-left:-11px}.infotip.top .arrow:after{border-bottom-width:0;border-top-color:#f5f5f5;bottom:1px;content:" ";margin-left:-10px}.infotip.left .arrow:after,.infotip.right .arrow:after{bottom:-10px;content:" "}.infotip.right .arrow{border-left-width:0;border-right-color:#bbb;left:-11px;margin-top:-11px;top:50%}.infotip.right .arrow:after{border-left-width:0;border-right-color:#fff;left:1px}.infotip.left .arrow{border-left-color:#bbb;border-right-width:0;margin-top:-11px;right:-11px;top:50%}.infotip.left .arrow:after{border-left-color:#fff;border-right-width:0;right:1px}.login-pf{height:100%}.login-pf #brand img{display:block;height:18px;margin:0 auto;max-width:100%}@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}}.login-pf #badge{display:block;margin:20px auto 70px;text-align:center}.login-pf body{background-size:auto}.login-pf .container{background-color:transparent;clear:right;color:#fff;padding-bottom:40px;width:auto}@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}.login-pf body{background-size:100% auto}.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}}.login-pf .container [class^=alert]{background:0 0;color:#fff}.login-pf .container .details p:first-child{border-top:1px solid #474747;padding-top:25px;margin-top:25px}.login-pf .container .details p{margin-bottom:2px}.login-pf .container .form-horizontal .form-group:last-child,.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child,.navbar-pf{margin-bottom:0}.login-pf .container .form-horizontal .control-label{font-size:13px;font-weight:400;text-align:left}.login-pf .container .help-block{color:#fff}@media (min-width:768px){.login-pf .container .details{border-left:1px solid #474747;padding-left:40px}.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}.login-pf .container .login{padding-right:40px}}.login-pf .container .submit{text-align:right}.navbar-pf{background:#393f45;border:0;border-radius:0;border-top:3px solid #c00;min-height:0}.navbar-pf .navbar-brand{color:#fff;height:auto;padding:12px 0;margin:0 0 0 20px}.navbar-pf .navbar-brand img{display:block}.navbar-pf .navbar-collapse{border-top:0;-webkit-box-shadow:none;box-shadow:none;padding:0}.navbar-pf .navbar-header{border-bottom:1px solid #53565b;float:none}.navbar-pf .navbar-nav{margin:0}.navbar-pf .navbar-nav>.active>a,.navbar-pf .navbar-nav>.active>a:focus,.navbar-pf .navbar-nav>.active>a:hover{background-color:#454c53;color:#fff}.navbar-pf .navbar-nav>li>a{color:#dbdada;line-height:1;padding:10px 20px;text-shadow:none}.navbar-pf .navbar-nav>li>a:focus,.navbar-pf .navbar-nav>li>a:hover{color:#fff}.navbar-pf .navbar-nav>.open>a,.navbar-pf .navbar-nav>.open>a:focus,.navbar-pf .navbar-nav>.open>a:hover{background-color:#454c53;color:#fff}@media (max-width:767px){.navbar-pf .navbar-nav .active .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent,.navbar-pf .navbar-nav .open .dropdown-menu{background-color:#3c434a!important;margin-left:0;padding-bottom:0;padding-top:0}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#424950!important;color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent>li>a,.navbar-pf .navbar-nav .open .dropdown-menu>li>a{background-color:transparent;border:0;color:#dbdada;outline:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .dropdown-menu>li>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .navbar-persistent>li>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu .divider,.navbar-pf .navbar-nav .active .navbar-persistent .divider,.navbar-pf .navbar-nav .open .dropdown-menu .divider{background-color:#53565b;margin:0 1px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header{padding-bottom:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left{float:none!important}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu>a:after,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu>a:after{display:none}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header{padding-left:45px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu{border:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;display:block;float:none;margin:0;min-width:0;padding:0;position:relative;left:auto;right:auto;top:auto}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu>li>a{padding:5px 15px 5px 45px;line-height:20px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a{padding-left:60px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu{display:block}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after{display:inline-block!important;position:relative;right:auto;top:1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu>a:after{display:none!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu{background-color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active{background-color:#d4edfa!important;border-color:#b3d3e7!important;color:#333!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.disabled>a{color:#999!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active{background-color:#0099d3!important;border-color:#0076b7!important;color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li>a.opt{border-bottom:1px solid transparent;border-top:1px solid transparent;color:#333;padding-left:10px;padding-right:10px}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:active small{color:#70c8e7!important;color:rgba(225,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:focus small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:hover small{color:#999}.navbar-pf .navbar-nav .context-bootstrap-select>.open>.dropdown-menu{padding-bottom:5px;padding-top:5px}}.navbar-pf .navbar-persistent{display:none}.navbar-pf .active>.navbar-persistent{display:block}.navbar-pf .navbar-primary{float:none}.navbar-pf .navbar-primary .context{border-bottom:1px solid #53565b}.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*=span]{margin:8px 20px 9px;width:auto}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a{position:relative}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{content:"\f107";display:inline-block;font-family:"FontAwesome";font-weight:400}@media (max-width:767px){.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{height:10px;margin-left:4px;vertical-align:baseline}}.navbar-pf .navbar-toggle{border:0;margin:0;padding:10px 20px}.navbar-pf .navbar-toggle:focus,.navbar-pf .navbar-toggle:hover{background-color:transparent;outline:0}.navbar-pf .navbar-toggle:focus .icon-bar,.navbar-pf .navbar-toggle:hover .icon-bar{-webkit-box-shadow:0 0 3px #fff;box-shadow:0 0 3px #fff}.navbar-pf .navbar-toggle .icon-bar{background-color:#fff}.navbar-pf .navbar-utility{border-bottom:1px solid #53565b}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:36px;position:relative}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:20px;position:absolute;top:10px}@media (max-width:767px){.navbar-pf .navbar-utility>li+li{border-top:1px solid #53565b}}@media (min-width:768px){.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a:after{border-top-color:#222}.navbar-pf .navbar-brand{padding:7px 0 8px}.navbar-pf .navbar-nav>li>a{padding-bottom:14px;padding-top:14px}.navbar-pf .navbar-persistent{font-size:14px}.navbar-pf .navbar-primary{font-size:14px;background-image:-webkit-linear-gradient(top,#474c50 0,#383f43 100%);background-image:-o-linear-gradient(top,#474c50 0,#383f43 100%);background-image:linear-gradient(to bottom,#474c50 0,#383f43 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff474c50', endColorstr='#ff383f43', GradientType=0)}.navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu{top:auto}.navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu{bottom:-5px;top:auto}.navbar-pf .navbar-primary.persistent-secondary>li{position:static}.navbar-pf .navbar-primary.persistent-secondary>li.active{margin-bottom:32px}.navbar-pf .navbar-primary.persistent-secondary>li.active>.navbar-persistent{display:block;left:0;position:absolute}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent{background:#f6f6f6;border-bottom:1px solid #cecdcd;padding:0;width:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent a{text-decoration:none!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover:before{background:#0099d3;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a:hover{color:#0099d3!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active .active>a{color:#fff}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a:hover{color:#222}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu:hover>.dropdown-menu{display:none}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-menu{display:block;left:20px;margin-top:1px;top:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle{padding-right:35px!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle:after{position:absolute;right:20px;top:10px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover:before{background:#aaa;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a{background-color:transparent;display:block;line-height:1;padding:9px 20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle{padding-right:35px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle:after{font-size:15px;position:absolute;right:20px;top:9px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li a{color:#4d5258}.navbar-pf .navbar-primary>li>a{border-bottom:1px solid transparent;border-top:1px solid transparent;position:relative;margin:-1px 0 0}.navbar-pf .navbar-primary>li>a:hover{background-color:#4b5053;border-top-color:#949699;color:#dbdada;background-image:-webkit-linear-gradient(top,#5c6165 0,#4b5053 100%);background-image:-o-linear-gradient(top,#5c6165 0,#4b5053 100%);background-image:linear-gradient(to bottom,#5c6165 0,#4b5053 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5c6165', endColorstr='#ff4b5053', GradientType=0)}.navbar-pf .navbar-primary>.active>a,.navbar-pf .navbar-primary>.active>a:focus,.navbar-pf .navbar-primary>.active>a:hover,.navbar-pf .navbar-primary>.open>a,.navbar-pf .navbar-primary>.open>a:focus,.navbar-pf .navbar-primary>.open>a:hover{background-color:#64686c;border-bottom-color:#64686c;border-top-color:#949699;-webkit-box-shadow:none;box-shadow:none;color:#fff;background-image:-webkit-linear-gradient(top,#72757a 0,#64686c 100%);background-image:-o-linear-gradient(top,#72757a 0,#64686c 100%);background-image:linear-gradient(to bottom,#72757a 0,#64686c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff72757a', endColorstr='#ff64686c', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:160px;text-overflow:ellipsis}.navbar-pf .navbar-primary li.context.dropdown{border-bottom:0}.navbar-pf .navbar-primary li.context.context-bootstrap-select,.navbar-pf .navbar-primary li.context>a{background-color:#505458;border-bottom-color:#65696d;border-right:1px solid #65696d;border-top-color:#64696d;font-weight:600;background-image:-webkit-linear-gradient(top,#585d61 0,#505458 100%);background-image:-o-linear-gradient(top,#585d61 0,#505458 100%);background-image:linear-gradient(to bottom,#585d61 0,#505458 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff585d61', endColorstr='#ff505458', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select:hover,.navbar-pf .navbar-primary li.context>a:hover{background-color:#5a5e62;border-bottom-color:#6e7276;border-right-color:#6e7276;border-top-color:#6c7276;background-image:-webkit-linear-gradient(top,#62676b 0,#5a5e62 100%);background-image:-o-linear-gradient(top,#62676b 0,#5a5e62 100%);background-image:linear-gradient(to bottom,#62676b 0,#5a5e62 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62676b', endColorstr='#ff5a5e62', GradientType=0)}.navbar-pf .navbar-primary li.context.open>a{background-color:#65696d;border-bottom-color:#6e7276;border-right-color:#777a7e;border-top-color:#767a7e;background-image:-webkit-linear-gradient(top,#6b7175 0,#65696d 100%);background-image:-o-linear-gradient(top,#6b7175 0,#65696d 100%);background-image:linear-gradient(to bottom,#6b7175 0,#65696d 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff6b7175', endColorstr='#ff65696d', GradientType=0)}.navbar-pf .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}.navbar-pf .navbar-utility>.active>a,.navbar-pf .navbar-utility>.active>a:focus,.navbar-pf .navbar-utility>.active>a:hover,.navbar-pf .navbar-utility>.open>a,.navbar-pf .navbar-utility>.open>a:focus,.navbar-pf .navbar-utility>.open>a:hover{background:#5b6165;color:#fff}.navbar-pf .navbar-utility>li>a{border-left:1px solid #53565b;color:#fff!important;padding:7px 10px}.navbar-pf .navbar-utility>li>a:hover{background:#4a5053;border-left-color:#636466}.navbar-pf .navbar-utility>li.open>a{border-left-color:#6c6e70;color:#fff!important}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:26px}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:10px;top:7px}.navbar-pf .navbar-utility .open .dropdown-menu{left:auto;right:0}.navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu{left:auto;right:100%}.navbar-pf .open .dropdown-menu{border-top-width:0!important}.navbar-pf .open .dropdown-submenu>.dropdown-menu,.navbar-pf .open.bootstrap-select .dropdown-menu{border-top-width:1px!important}}@media (max-width:360px){.navbar-pf .navbar-brand{margin-left:10px;width:75%}.navbar-pf .navbar-brand img{height:auto;max-width:100%}.navbar-pf .navbar-toggle{padding-left:0}}.search-pf.has-button{border-collapse:separate;display:table}.search-pf.has-button .form-group{display:table-cell;width:100%}.search-pf.has-button .form-group .btn{-webkit-box-shadow:none;box-shadow:none;float:left;margin-left:-1px}.search-pf.has-button .form-group .btn.btn-lg{font-size:14.5px}.search-pf.has-button .form-group .btn.btn-sm{font-size:10.7px}.search-pf.has-button .form-group .form-control{float:left}.search-pf .has-clear .clear{background:0 0;background:rgba(255,255,255,0);border:0;height:25px;line-height:1;padding:0;position:absolute;right:1px;top:1px;width:28px}.search-pf .has-clear .form-control{padding-right:30px}.search-pf .has-clear .form-control::-ms-clear{display:none}.search-pf .has-clear .input-lg+.clear{height:31px;width:28px}.search-pf .has-clear .input-sm+.clear{height:20px;width:28px}.search-pf .has-clear .input-sm+.clear span{font-size:10px}.search-pf .has-clear .search-pf-input-group{position:relative}.sidebar-header{border-bottom:1px solid #e9e9e9;padding-bottom:11px;margin:50px 0 20px}.sidebar-header .actions{margin-top:-2px}.sidebar-pf .sidebar-header+.list-group{border-top:0;margin-top:-10px}.sidebar-pf .sidebar-header+.list-group .list-group-item{background:0 0;border-color:#e9e9e9;padding-left:0}.sidebar-pf .sidebar-header+.list-group .list-group-item-heading{font-size:12px}.sidebar-pf .nav-category h2{color:#999;font-size:12px;font-weight:400;line-height:21px;margin:0;padding:8px 0}.sidebar-pf .nav-category+.nav-category{margin-top:10px}.sidebar-pf .nav-pills>li.active>a{background:#0099d3!important;border-color:#0076b7!important;color:#fff}@media (min-width:768px){.sidebar-pf .nav-pills>li.active>a:after{content:"\f105";font-family:"FontAwesome";display:block;position:absolute;right:10px;top:1px}}.sidebar-pf .nav-pills>li.active>a .fa{color:#fff}.sidebar-pf .nav-pills>li>a{border-bottom:1px solid transparent;border-radius:0;border-top:1px solid transparent;color:#333;font-size:13px;line-height:21px;padding:1px 20px}.sidebar-pf .nav-pills>li>a:hover{background:#d4edfa;border-color:#b3d3e7}.sidebar-pf .nav-pills>li>a .fa{color:#6a7079;font-size:15px;margin-right:10px;text-align:center;vertical-align:middle;width:15px}.sidebar-pf .nav-stacked{margin-left:-20px;margin-right:-20px}.sidebar-pf .nav-stacked li+li{margin-top:0}.sidebar-pf .panel{background:0 0}.sidebar-pf .panel-body{padding:6px 20px}.sidebar-pf .panel-body .nav-pills>li>a{padding-left:37px}.sidebar-pf .panel-heading{padding:9px 20px}.sidebar-pf .panel-title{font-size:12px}.sidebar-pf .panel-title>a:before{display:inline-block;margin-left:1px;margin-right:4px;width:9px}.sidebar-pf .panel-title>a.collapsed:before{margin-left:3px;margin-right:2px}@media (min-width:767px){.sidebar-header-bleed-left{margin-left:-20px}.sidebar-header-bleed-left>h2{margin-left:20px}.sidebar-header-bleed-right{margin-right:-20px}.sidebar-header-bleed-right .actions,.sidebar-header-bleed-right>h2{margin-right:20px}.sidebar-header-bleed-right+.list-group{margin-right:-20px}.sidebar-pf .panel-group .panel-default,.sidebar-pf .treeview{border-left:0;border-right:0;margin-left:-20px;margin-right:-20px}.sidebar-pf .treeview{margin-top:5px}.sidebar-pf .treeview .list-group-item{padding-left:20px;padding-right:20px}.sidebar-pf .treeview .list-group-item.node-selected:after{content:"\f105";font-family:"FontAwesome";display:block;position:absolute;right:10px;top:1px}}@media (min-width:768px){.sidebar-pf{background:#fafafa}.sidebar-pf.sidebar-pf-left{border-right:1px solid #d0d0d0}.sidebar-pf.sidebar-pf-right{border-left:1px solid #d0d0d0}.sidebar-pf>.nav-category,.sidebar-pf>.nav-stacked{margin-top:5px}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(0,0,0,.25);border-left:4px solid rgba(0,0,0,.25);border-right:4px solid rgba(0,0,0,.25);border-radius:100%;border-top:4px solid rgba(0,0,0,.75);height:24px;margin:0 auto;position:relative;width:24px}.spinner.spinner-inline{display:inline-block;margin-right:3px}.spinner.spinner-lg{border-width:5px;height:30px;width:30px}.spinner.spinner-sm{border-width:3px;height:18px;width:18px}.spinner.spinner-xs{border-width:2px;height:12px;width:12px}.ie9 .spinner{background:url(../img/spinner.gif) no-repeat;border:0}.ie9 .spinner.spinner-lg{background-image:url(../img/spinner-lg.gif)}.ie9 .spinner.spinner-sm{background-image:url(../img/spinner-sm.gif)}.ie9 .spinner.spinner-xs{background-image:url(../img/spinner-xs.gif)}.prettyprint .atn,.prettyprint .com,.prettyprint .fun,.prettyprint .var{color:#3f9c35}.prettyprint .atv,.prettyprint .str{color:#a30000}.prettyprint .clo,.prettyprint .dec,.prettyprint .kwd,.prettyprint .opn,.prettyprint .pln,.prettyprint .pun{color:#333}.prettyprint .lit,.prettyprint .tag,.prettyprint .typ{color:#006e9c}.prettyprint ol.linenums{margin-bottom:0}.login-pf{background-color:#1a1a1a}@media (min-width:768px){.login-pf{background-image:url(../img/bg-login-2.png);background-position:100% 100%;background-repeat:no-repeat;background-size:30%}}@media (min-width:992px){.login-pf{background-size:auto}}.login-pf #badge{margin-bottom:50px}.login-pf body{background:0 0}.login-pf #brand{top:-30px}@media (min-width:768px){.login-pf body{background-image:url(../img/bg-login.png);background-repeat:no-repeat;background-size:30%;height:100%}.login-pf #brand{top:-40px}.login-pf #brand+.alert{margin-top:-20px}}.login-pf .container{padding-top:0}@media (min-width:992px){.login-pf body{background-size:auto}.login-pf .container{bottom:20%;padding-right:120px}}
+/*# sourceMappingURL=rcue-additions.min.css.map */
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.min.css.map b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.min.css.map
new file mode 100644
index 0000000..752291c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/rcue-additions.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["components/patternfly/components/bootstrap-combobox/less/combobox.less","components/patternfly/components/bootstrap-datepicker/less/datepicker3.less","components/patternfly/components/bootstrap-select/less/bootstrap-select.less","components/patternfly/components/c3/c3.css","components/patternfly/components/bootstrap/less/mixins/buttons.less","components/patternfly/less/datatables.less","components/patternfly/less/bootstrap-combobox.less","components/patternfly/less/charts.less","components/patternfly/less/blank-slate.less","components/patternfly/less/bootstrap-datepicker.less","components/patternfly/less/mixins.less","components/patternfly/components/bootstrap/less/mixins/gradients.less","components/patternfly/components/bootstrap/less/mixins/opacity.less","components/patternfly/components/bootstrap/less/mixins/vendor-prefixes.less","components/patternfly/less/bootstrap-select.less","components/patternfly/less/search.less","components/patternfly/less/navbar.less","components/patternfly/less/bootstrap-treeview.less","components/patternfly/less/cards.less","components/patternfly/less/variables.less","components/patternfly/less/close.less","components/patternfly/components/bootstrap/less/mixins/reset-filter.less","components/patternfly/less/icons.less","components/patternfly/less/infotip.less","components/patternfly/less/login.less","components/patternfly/less/sidebar.less","components/patternfly/less/spinner.less","components/patternfly/less/syntax-highlighting.less","less/login.less"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles.css
new file mode 120000
index 0000000..5252dc1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles.css
@@ -0,0 +1 @@
+rcue.css
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles.min.css
new file mode 120000
index 0000000..ad1b109
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles.min.css
@@ -0,0 +1 @@
+rcue.min.css
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles-additions.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles-additions.css
new file mode 120000
index 0000000..a8c5470
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles-additions.css
@@ -0,0 +1 @@
+rcue-additions.css
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles-additions.min.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles-additions.min.css
new file mode 120000
index 0000000..23bb8b3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/css/styles-additions.min.css
@@ -0,0 +1 @@
+rcue-additions.min.css
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-114.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-114.png
new file mode 100644
index 0000000..b175ccb
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-114.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-120.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-120.png
new file mode 100644
index 0000000..f849f0f
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-120.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-144.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-144.png
new file mode 100644
index 0000000..90ee089
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-144.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-152.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-152.png
new file mode 100644
index 0000000..83f8b7e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-152.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-180.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-180.png
new file mode 100644
index 0000000..895ae14
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-180.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-57.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-57.png
new file mode 100644
index 0000000..460d280
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-57.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-72.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-72.png
new file mode 100755
index 0000000..7550886
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-72.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-76.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-76.png
new file mode 100644
index 0000000..9d2134b
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/apple-touch-icon-precomposed-76.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login.jpg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login.jpg
new file mode 100644
index 0000000..b60fae0
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login.jpg differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login.png
new file mode 100644
index 0000000..c408a65
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login-2.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login-2.png
new file mode 100644
index 0000000..531d563
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/bg-login-2.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/brand.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/brand.svg
new file mode 100644
index 0000000..53e5963
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/brand.svg
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="237px" height="10px" viewBox="0 0 237 10" enable-background="new 0 0 237 10" xml:space="preserve">
+<g>
+ <path fill="#FFFFFF" d="M4.653,9.793l-1.39-2.871H2.312v2.871H0V1.276h3.808c0.494,0,0.947,0.051,1.356,0.152
+ c0.41,0.102,0.761,0.262,1.053,0.48c0.292,0.22,0.518,0.505,0.676,0.857C7.05,3.12,7.129,3.545,7.129,4.05
+ c0,0.641-0.138,1.163-0.414,1.569C6.438,6.025,6.064,6.332,5.592,6.543l1.707,3.25H4.653z M4.543,3.454
+ c-0.159-0.17-0.428-0.256-0.801-0.256h-1.43V5.06h1.394c0.392,0,0.668-0.08,0.831-0.243C4.7,4.655,4.782,4.419,4.782,4.111
+ C4.782,3.844,4.702,3.625,4.543,3.454z"/>
+ <path fill="#FFFFFF" d="M8.71,9.793V1.276h6.521V3.26h-4.184v1.144h2.518v1.947h-2.518v1.46h4.269v1.982H8.71z"/>
+ <path fill="#FFFFFF" d="M23.891,7.512C23.698,8.06,23.407,8.5,23.017,8.838c-0.391,0.337-0.87,0.578-1.443,0.729
+ c-0.57,0.149-1.234,0.226-1.988,0.226h-2.761V1.276h2.979c0.665,0,1.271,0.068,1.812,0.207c0.542,0.138,1.004,0.371,1.381,0.699
+ s0.669,0.76,0.876,1.295c0.206,0.536,0.31,1.205,0.31,2.008C24.184,6.287,24.086,6.963,23.891,7.512z M21.66,4.514
+ c-0.07-0.285-0.182-0.515-0.334-0.694c-0.155-0.179-0.358-0.31-0.608-0.396c-0.252-0.085-0.56-0.128-0.924-0.128h-0.586v4.478
+ h0.512c0.365,0,0.678-0.039,0.937-0.115c0.259-0.076,0.472-0.203,0.638-0.378c0.167-0.174,0.286-0.403,0.359-0.692
+ c0.073-0.287,0.109-0.644,0.109-1.065C21.763,5.133,21.729,4.796,21.66,4.514z"/>
+ <path fill="#FFFFFF" d="M34.681,9.793V6.436H32.03v3.357h-2.409V1.276h2.409v3.103h2.651V1.276h2.409v8.517H34.681z"/>
+ <path fill="#FFFFFF" d="M44.316,9.793l-0.462-1.498H41.3l-0.463,1.498h-2.53l3.09-8.517h2.385l3.089,8.517H44.316z M43.125,5.862
+ c-0.073-0.276-0.139-0.515-0.195-0.719c-0.057-0.201-0.107-0.385-0.152-0.547c-0.045-0.162-0.083-0.31-0.115-0.443
+ c-0.032-0.133-0.061-0.274-0.086-0.42c-0.023,0.146-0.052,0.288-0.085,0.425c-0.032,0.138-0.07,0.289-0.114,0.451
+ c-0.045,0.161-0.096,0.344-0.153,0.547c-0.056,0.203-0.121,0.438-0.194,0.705l-0.158,0.561h1.41L43.125,5.862z"/>
+ <path fill="#FFFFFF" d="M51.324,3.333v6.459h-2.36V3.333h-2.385V1.276h7.129v2.057H51.324z"/>
+ <path fill="#FFFFFF" d="M59.002,2.241c-0.081,0.194-0.192,0.363-0.337,0.506c-0.144,0.144-0.311,0.255-0.506,0.337
+ c-0.195,0.081-0.405,0.122-0.632,0.122c-0.227,0-0.438-0.041-0.633-0.122s-0.364-0.192-0.507-0.337
+ c-0.143-0.144-0.255-0.312-0.335-0.506c-0.082-0.194-0.123-0.405-0.123-0.632s0.041-0.439,0.123-0.633
+ c0.079-0.194,0.191-0.363,0.335-0.506c0.144-0.143,0.312-0.255,0.507-0.336c0.195-0.082,0.406-0.123,0.633-0.123
+ c0.227,0,0.438,0.041,0.632,0.123c0.194,0.08,0.363,0.192,0.506,0.336c0.144,0.143,0.255,0.312,0.337,0.506
+ c0.081,0.193,0.122,0.406,0.122,0.633C59.124,1.836,59.083,2.046,59.002,2.241z M58.7,1.084c-0.065-0.159-0.153-0.293-0.265-0.405
+ c-0.112-0.112-0.247-0.199-0.403-0.262c-0.156-0.062-0.323-0.093-0.504-0.093c-0.184,0-0.352,0.031-0.507,0.093
+ c-0.156,0.062-0.289,0.148-0.4,0.262c-0.112,0.112-0.2,0.246-0.266,0.405c-0.064,0.157-0.097,0.331-0.097,0.524
+ c0,0.191,0.032,0.366,0.097,0.523c0.065,0.159,0.153,0.293,0.266,0.405c0.111,0.111,0.245,0.199,0.4,0.262
+ c0.155,0.062,0.323,0.093,0.507,0.093c0.181,0,0.348-0.031,0.504-0.093c0.157-0.062,0.291-0.149,0.403-0.262
+ c0.111-0.112,0.199-0.246,0.265-0.405c0.064-0.157,0.097-0.332,0.097-0.523C58.796,1.416,58.764,1.242,58.7,1.084z M57.81,2.437
+ l-0.282-0.584h-0.194v0.584H56.86V0.701h0.778c0.203,0,0.366,0.044,0.49,0.129c0.125,0.086,0.187,0.232,0.187,0.438
+ c0,0.133-0.029,0.239-0.087,0.321c-0.057,0.081-0.132,0.144-0.227,0.188l0.344,0.659L57.81,2.437L57.81,2.437z M57.788,1.146
+ c-0.033-0.034-0.088-0.051-0.164-0.051h-0.291v0.376h0.283c0.079,0,0.136-0.016,0.169-0.048c0.035-0.033,0.051-0.08,0.051-0.143
+ C57.836,1.226,57.821,1.182,57.788,1.146z"/>
+ <path fill="#FFFFFF" d="M69.351,3.759c-0.153-0.291-0.354-0.52-0.601-0.681c-0.248-0.162-0.566-0.244-0.955-0.244
+ c-0.315,0-0.601,0.067-0.852,0.2c-0.252,0.135-0.462,0.321-0.633,0.561c-0.169,0.238-0.3,0.523-0.389,0.852
+ c-0.089,0.327-0.134,0.69-0.134,1.089c0,0.381,0.045,0.735,0.134,1.063c0.089,0.329,0.221,0.614,0.396,0.858
+ c0.173,0.242,0.387,0.434,0.637,0.57c0.251,0.139,0.537,0.209,0.853,0.209c0.39,0,0.707-0.086,0.954-0.257
+ c0.247-0.17,0.484-0.444,0.713-0.828l1.435,0.853c-0.292,0.609-0.695,1.082-1.21,1.418c-0.516,0.338-1.162,0.506-1.941,0.506
+ c-0.56,0-1.066-0.104-1.52-0.311c-0.455-0.207-0.847-0.5-1.175-0.882s-0.582-0.842-0.76-1.381
+ c-0.179-0.541-0.268-1.146-0.268-1.819c0-0.647,0.093-1.243,0.278-1.782c0.188-0.539,0.446-1.002,0.779-1.387
+ c0.332-0.385,0.729-0.686,1.191-0.9c0.462-0.214,0.974-0.322,1.532-0.322c0.397,0,0.759,0.047,1.084,0.14
+ c0.323,0.094,0.613,0.224,0.869,0.391c0.255,0.166,0.478,0.364,0.67,0.596c0.19,0.231,0.354,0.485,0.491,0.761L69.351,3.759z"/>
+ <path fill="#FFFFFF" d="M79.101,7.371c-0.182,0.543-0.439,1.004-0.772,1.381S77.6,9.418,77.137,9.621
+ c-0.462,0.203-0.968,0.307-1.521,0.307c-0.56,0-1.068-0.102-1.526-0.301c-0.459-0.196-0.852-0.483-1.18-0.863
+ c-0.329-0.378-0.584-0.836-0.767-1.374C71.96,6.85,71.87,6.235,71.87,5.545c0-0.688,0.091-1.306,0.273-1.85
+ c0.183-0.541,0.439-1.002,0.773-1.38c0.332-0.377,0.729-0.667,1.191-0.869c0.462-0.203,0.973-0.305,1.532-0.305
+ c0.552,0,1.057,0.1,1.515,0.298c0.458,0.198,0.851,0.486,1.181,0.864c0.327,0.377,0.584,0.836,0.766,1.374
+ c0.183,0.541,0.273,1.154,0.273,1.843C79.374,6.211,79.284,6.828,79.101,7.371z M77.064,3.54c-0.372-0.471-0.859-0.706-1.459-0.706
+ c-0.601,0-1.08,0.231-1.442,0.694c-0.36,0.461-0.541,1.127-0.541,1.993c0,0.868,0.187,1.538,0.559,2.009
+ c0.374,0.471,0.86,0.705,1.46,0.705s1.081-0.23,1.442-0.693c0.36-0.461,0.541-1.127,0.541-1.994S77.437,4.01,77.064,3.54z"/>
+ <path fill="#FFFFFF" d="M87.355,9.793V6.666c0-0.113,0.002-0.26,0.007-0.438c0.003-0.177,0.006-0.36,0.006-0.546
+ c0-0.188,0.001-0.361,0.006-0.523c0.004-0.162,0.006-0.283,0.006-0.365c-0.064,0.162-0.151,0.378-0.262,0.645
+ c-0.109,0.269-0.222,0.524-0.336,0.769L85.05,9.989l-1.722-3.784c-0.113-0.244-0.225-0.5-0.334-0.769
+ c-0.109-0.267-0.196-0.482-0.261-0.645c0,0.081,0.001,0.203,0.006,0.365c0.004,0.162,0.006,0.338,0.006,0.523
+ s0.003,0.369,0.006,0.546c0.005,0.18,0.007,0.325,0.007,0.438v3.127h-1.666V1.276h1.643l1.771,3.854
+ c0.057,0.123,0.112,0.25,0.169,0.385c0.057,0.134,0.111,0.266,0.164,0.396c0.052,0.129,0.101,0.25,0.146,0.365
+ c0.044,0.112,0.079,0.206,0.103,0.279c0.058-0.162,0.138-0.38,0.244-0.651s0.217-0.528,0.33-0.772l1.719-3.855h1.667v8.516H87.355
+ L87.355,9.793z"/>
+ <path fill="#FFFFFF" d="M97.513,9.793V6.666c0-0.113,0.002-0.26,0.007-0.438c0.003-0.177,0.006-0.36,0.006-0.546
+ c0-0.188,0.001-0.361,0.006-0.523c0.004-0.163,0.006-0.284,0.006-0.366c-0.065,0.162-0.152,0.377-0.262,0.645
+ c-0.109,0.268-0.222,0.523-0.336,0.768l-1.732,3.783l-1.723-3.783c-0.113-0.242-0.225-0.5-0.333-0.768
+ c-0.109-0.268-0.197-0.482-0.262-0.645c0,0.081,0.002,0.203,0.007,0.366c0.005,0.161,0.006,0.336,0.006,0.522
+ s0.002,0.369,0.006,0.546c0.005,0.18,0.008,0.325,0.008,0.439v3.125h-1.669V1.276h1.642l1.773,3.854
+ c0.057,0.123,0.112,0.25,0.169,0.385c0.057,0.134,0.111,0.266,0.164,0.396c0.052,0.129,0.101,0.25,0.145,0.365
+ c0.045,0.112,0.079,0.206,0.104,0.279c0.056-0.162,0.137-0.38,0.243-0.651c0.106-0.271,0.216-0.528,0.329-0.772l1.72-3.855h1.667
+ v8.516H97.513L97.513,9.793z"/>
+ <path fill="#FFFFFF" d="M108.163,7.371c-0.183,0.543-0.44,1.004-0.772,1.381c-0.333,0.377-0.73,0.666-1.192,0.869
+ c-0.461,0.203-0.969,0.307-1.52,0.307c-0.561,0-1.069-0.102-1.527-0.301c-0.458-0.196-0.852-0.483-1.18-0.863
+ c-0.329-0.378-0.584-0.836-0.767-1.374c-0.183-0.54-0.273-1.154-0.273-1.845c0-0.688,0.091-1.306,0.273-1.85
+ c0.183-0.541,0.439-1.002,0.773-1.38c0.331-0.377,0.729-0.667,1.19-0.869c0.463-0.203,0.975-0.305,1.533-0.305
+ c0.552,0,1.057,0.1,1.515,0.298c0.458,0.198,0.851,0.486,1.181,0.864c0.327,0.377,0.583,0.836,0.766,1.374
+ c0.184,0.541,0.273,1.154,0.273,1.843C108.436,6.211,108.346,6.828,108.163,7.371z M106.124,3.54
+ c-0.372-0.471-0.859-0.706-1.46-0.706c-0.6,0-1.079,0.231-1.441,0.694c-0.36,0.461-0.541,1.127-0.541,1.993
+ c0,0.868,0.187,1.538,0.56,2.009s0.859,0.705,1.459,0.705c0.601,0,1.081-0.23,1.442-0.693c0.36-0.461,0.541-1.127,0.541-1.994
+ S106.498,4.01,106.124,3.54z"/>
+ <path fill="#FFFFFF" d="M115.54,9.793l-3.125-4.648c-0.106-0.162-0.219-0.334-0.336-0.517c-0.117-0.182-0.205-0.329-0.261-0.443
+ c0,0.08,0.002,0.2,0.006,0.358c0.003,0.158,0.006,0.331,0.006,0.517c0,0.179,0.002,0.358,0.006,0.535
+ c0.005,0.179,0.006,0.329,0.006,0.45v3.748h-1.69V1.276h1.643l3.008,4.501c0.104,0.162,0.216,0.334,0.334,0.518
+ c0.116,0.183,0.202,0.33,0.261,0.443c0-0.082-0.003-0.201-0.007-0.359c-0.005-0.157-0.007-0.325-0.007-0.504
+ c0-0.188-0.002-0.369-0.006-0.547c-0.005-0.18-0.007-0.33-0.007-0.451V1.276h1.69v8.517H115.54z"/>
+ <path fill="#FFFFFF" d="M128.68,8.91c-0.605,0.676-1.453,1.018-2.537,1.018c-0.512,0-0.979-0.088-1.402-0.256
+ c-0.426-0.172-0.787-0.42-1.086-0.75c-0.301-0.328-0.533-0.731-0.699-1.209c-0.166-0.479-0.25-1.03-0.25-1.654V1.276h1.691v4.757
+ c0,0.688,0.154,1.231,0.463,1.629c0.311,0.396,0.736,0.597,1.283,0.597c0.545,0,0.975-0.194,1.287-0.583
+ c0.312-0.391,0.469-0.928,0.469-1.618V1.275h1.691v4.756C129.592,7.272,129.287,8.232,128.68,8.91z"/>
+ <path fill="#FFFFFF" d="M137.779,8.322c-0.131,0.332-0.334,0.617-0.609,0.856c-0.275,0.237-0.621,0.424-1.041,0.553
+ c-0.416,0.131-0.918,0.195-1.502,0.195c-0.713,0-1.363-0.142-1.947-0.414c-0.582-0.276-1.037-0.654-1.361-1.134l1.229-1.094
+ c0.301,0.349,0.635,0.599,1.004,0.748c0.369,0.15,0.762,0.225,1.174,0.225c0.514,0,0.887-0.073,1.125-0.221
+ c0.24-0.146,0.359-0.382,0.359-0.705c0-0.138-0.023-0.258-0.072-0.358s-0.141-0.195-0.273-0.285
+ c-0.133-0.089-0.326-0.174-0.576-0.255c-0.252-0.08-0.578-0.167-0.975-0.256c-0.391-0.09-0.748-0.194-1.076-0.316
+ c-0.33-0.122-0.611-0.275-0.848-0.462c-0.234-0.187-0.416-0.422-0.547-0.705c-0.129-0.284-0.193-0.637-0.193-1.06
+ c0-0.389,0.078-0.736,0.238-1.045c0.156-0.309,0.375-0.57,0.65-0.784c0.273-0.216,0.598-0.38,0.965-0.494
+ c0.371-0.113,0.768-0.17,1.188-0.17c0.664,0,1.248,0.119,1.746,0.355s0.951,0.568,1.357,0.993l-1.23,1.195
+ c-0.275-0.285-0.568-0.502-0.881-0.652c-0.311-0.149-0.664-0.225-1.053-0.225c-0.227,0-0.418,0.022-0.57,0.066
+ c-0.154,0.045-0.279,0.104-0.377,0.176c-0.1,0.074-0.166,0.154-0.207,0.243c-0.041,0.09-0.062,0.184-0.062,0.279
+ c0,0.138,0.027,0.253,0.08,0.347c0.053,0.093,0.143,0.176,0.271,0.249c0.131,0.073,0.307,0.142,0.523,0.206
+ c0.221,0.064,0.498,0.138,0.84,0.219c0.34,0.081,0.678,0.177,1.016,0.286c0.336,0.109,0.641,0.261,0.912,0.454
+ c0.271,0.194,0.492,0.441,0.662,0.74c0.172,0.301,0.256,0.682,0.256,1.143C137.971,7.623,137.908,7.99,137.779,8.322z"/>
+ <path fill="#FFFFFF" d="M139.773,9.793V1.276h5.898v1.666h-4.209v1.46h2.445v1.666h-2.445v2.057h4.393v1.668H139.773z"/>
+ <path fill="#FFFFFF" d="M152.615,9.793l-1.525-3.066h-1.719v3.066h-1.689V1.276h3.965c0.398,0,0.775,0.055,1.133,0.164
+ c0.355,0.109,0.668,0.278,0.936,0.505c0.268,0.228,0.48,0.509,0.633,0.846c0.154,0.337,0.23,0.732,0.23,1.187
+ c0,0.641-0.135,1.165-0.406,1.575c-0.271,0.407-0.68,0.719-1.223,0.93l1.629,3.31H152.615L152.615,9.793z M152.502,3.191
+ c-0.217-0.166-0.516-0.249-0.898-0.249h-2.232v2.179h2.232c0.814,0,1.223-0.367,1.223-1.102
+ C152.826,3.632,152.717,3.355,152.502,3.191z"/>
+ <path fill="#FFFFFF" d="M159.893,9.793V1.276h5.9v1.666h-4.209v1.46h2.443v1.666h-2.443v2.057h4.391v1.668H159.893z"/>
+ <path fill="#FFFFFF" d="M172.664,9.793l-0.766-1.289c-0.072-0.131-0.156-0.274-0.25-0.434c-0.092-0.158-0.182-0.316-0.268-0.474
+ c-0.084-0.158-0.164-0.306-0.236-0.438c-0.074-0.134-0.131-0.24-0.17-0.322c-0.041,0.082-0.096,0.188-0.164,0.322
+ c-0.068,0.133-0.146,0.278-0.23,0.432c-0.086,0.154-0.174,0.312-0.268,0.475s-0.182,0.309-0.262,0.439l-0.768,1.289h-2.031
+ l2.701-4.356l-2.58-4.159h2.033l0.645,1.095c0.072,0.13,0.154,0.274,0.248,0.432c0.094,0.158,0.184,0.315,0.268,0.474
+ c0.086,0.158,0.164,0.304,0.238,0.438c0.072,0.134,0.129,0.241,0.17,0.322c0.039-0.081,0.098-0.188,0.17-0.322
+ c0.072-0.134,0.152-0.278,0.236-0.432c0.086-0.154,0.172-0.311,0.262-0.469c0.09-0.158,0.176-0.306,0.256-0.443l0.645-1.095h2.031
+ l-2.59,4.159l2.713,4.356H172.664z"/>
+ <path fill="#FFFFFF" d="M182.762,5.248c-0.156,0.354-0.369,0.645-0.645,0.871c-0.277,0.226-0.605,0.393-0.982,0.498
+ c-0.379,0.104-0.787,0.156-1.227,0.156h-1.877v3.02h-1.691V1.276h3.723c0.396,0,0.775,0.055,1.131,0.164
+ c0.357,0.109,0.67,0.278,0.938,0.505c0.268,0.228,0.48,0.509,0.633,0.846c0.154,0.337,0.23,0.732,0.23,1.187
+ C182.992,4.473,182.916,4.896,182.762,5.248z M180.906,3.203c-0.225-0.173-0.527-0.26-0.91-0.26h-1.965v2.165h1.988
+ c0.812,0,1.221-0.365,1.221-1.095C181.24,3.645,181.129,3.374,180.906,3.203z"/>
+ <path fill="#FFFFFF" d="M184.611,9.793V1.276h5.898v1.666h-4.209v1.46h2.445v1.666h-2.445v2.057h4.393v1.668H184.611z"/>
+ <path fill="#FFFFFF" d="M197.453,9.793l-1.525-3.066h-1.719v3.066h-1.691V1.276h3.969c0.395,0,0.773,0.055,1.131,0.164
+ c0.355,0.109,0.67,0.278,0.938,0.505c0.268,0.228,0.479,0.509,0.633,0.846c0.152,0.337,0.23,0.732,0.23,1.187
+ c0,0.641-0.137,1.165-0.408,1.575c-0.271,0.407-0.68,0.719-1.221,0.93l1.629,3.31H197.453L197.453,9.793z M197.34,3.191
+ c-0.217-0.166-0.514-0.249-0.895-0.249h-2.234v2.179h2.234c0.812,0,1.219-0.367,1.219-1.102
+ C197.662,3.632,197.557,3.355,197.34,3.191z"/>
+ <path fill="#FFFFFF" d="M201.326,9.793V1.276h1.689v8.517H201.326z"/>
+ <path fill="#FFFFFF" d="M205.338,9.793V1.276h5.902v1.666h-4.211v1.46h2.445v1.666h-2.445v2.057h4.391v1.668H205.338z"/>
+ <path fill="#FFFFFF" d="M218.635,9.793l-3.125-4.648c-0.104-0.162-0.219-0.334-0.336-0.517c-0.117-0.182-0.205-0.329-0.26-0.443
+ c0,0.08,0.002,0.2,0.006,0.358c0.004,0.158,0.006,0.331,0.006,0.517c0,0.179,0.002,0.358,0.006,0.535
+ c0.004,0.179,0.006,0.329,0.006,0.45v3.748h-1.688V1.276h1.641l3.008,4.501c0.105,0.162,0.217,0.334,0.334,0.518
+ c0.117,0.183,0.203,0.33,0.26,0.443c0-0.082-0.002-0.201-0.006-0.359c-0.004-0.157-0.008-0.325-0.008-0.504
+ c0-0.188-0.002-0.369-0.006-0.547c-0.004-0.179-0.006-0.329-0.006-0.451V1.276h1.691v8.517H218.635z"/>
+ <path fill="#FFFFFF" d="M227.199,3.759c-0.154-0.291-0.355-0.52-0.602-0.681c-0.248-0.162-0.566-0.244-0.953-0.244
+ c-0.318,0-0.602,0.067-0.854,0.2c-0.25,0.135-0.463,0.321-0.631,0.561c-0.172,0.238-0.305,0.523-0.393,0.852
+ c-0.09,0.327-0.133,0.69-0.133,1.089c0,0.381,0.043,0.735,0.133,1.063c0.088,0.329,0.223,0.614,0.396,0.858
+ c0.174,0.242,0.387,0.434,0.639,0.57c0.25,0.139,0.535,0.209,0.854,0.209c0.389,0,0.707-0.086,0.951-0.257
+ c0.248-0.17,0.484-0.444,0.715-0.828l1.436,0.853c-0.293,0.609-0.695,1.082-1.211,1.418c-0.516,0.338-1.162,0.506-1.939,0.506
+ c-0.561,0-1.068-0.104-1.521-0.311s-0.846-0.5-1.174-0.882s-0.582-0.842-0.76-1.381c-0.18-0.541-0.268-1.146-0.268-1.819
+ c0-0.647,0.092-1.243,0.279-1.782c0.186-0.539,0.443-1.002,0.775-1.387c0.332-0.385,0.73-0.686,1.191-0.9
+ c0.463-0.215,0.975-0.322,1.533-0.322c0.396,0,0.76,0.047,1.084,0.14c0.324,0.094,0.613,0.224,0.869,0.391
+ c0.256,0.166,0.479,0.364,0.668,0.596c0.191,0.231,0.355,0.485,0.494,0.761L227.199,3.759z"/>
+ <path fill="#FFFFFF" d="M230.484,9.793V1.276h5.898v1.666h-4.207v1.46h2.445v1.666h-2.445v2.057h4.391v1.668H230.484z"/>
+</g>
+</svg>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/favicon.ico b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/favicon.ico
new file mode 100644
index 0000000..dad490b
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/favicon.ico differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/logo.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/logo.svg
new file mode 100644
index 0000000..d58ffc9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/logo.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.2" baseProfile="tiny" id="logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+ x="0px" y="0px" width="137px" height="44px" viewBox="0 0 137 44" overflow="visible" xml:space="preserve">
+<g id="logo_1_">
+ <g id="white">
+ <path fill="#FFFFFF" d="M40.505,33.932c-0.846-0.195-1.743-0.315-2.651-0.315c-1.553,0-2.965,0.268-4.008,0.704
+ c-0.114,0.056-0.197,0.176-0.197,0.312c0,0.05,0.014,0.101,0.031,0.142c0.124,0.357-0.079,0.745-1.087,0.966
+ c-1.494,0.328-2.44,1.873-2.979,2.384c-0.636,0.604-2.426,0.974-2.157,0.614c0.21-0.28,1.018-1.157,1.508-2.103
+ c0.438-0.846,0.829-1.087,1.367-1.894c0.156-0.236,0.77-1.069,0.947-1.725c0.201-0.643,0.134-1.448,0.21-1.78
+ c0.11-0.48,0.563-1.517,0.596-2.104c0.021-0.333-1.384,0.474-2.05,0.474c-0.666,0-1.315-0.4-1.912-0.428
+ c-0.736-0.033-1.208,0.568-1.876,0.463c-0.379-0.061-0.701-0.396-1.365-0.421c-0.948-0.034-2.104,0.526-4.279,0.456
+ c-2.137-0.068-4.113-2.702-4.382-3.119c-0.315-0.491-0.702-0.491-1.122-0.107c-0.421,0.387-0.939,0.084-1.087-0.176
+ c-0.279-0.489-1.029-1.922-2.191-2.226c-1.605-0.416-2.419,0.89-2.312,1.929c0.107,1.054,0.787,1.349,1.104,1.912
+ c0.315,0.559,0.477,0.919,1.07,1.168c0.421,0.177,0.577,0.437,0.453,0.78c-0.111,0.301-0.549,0.371-0.837,0.384
+ c-0.61,0.03-1.04-0.136-1.354-0.336c-0.363-0.231-0.659-0.553-0.978-1.1c-0.368-0.604-0.945-0.866-1.62-0.866
+ c-0.321,0-0.621,0.084-0.889,0.221c-1.057,0.552-2.313,0.877-3.667,0.877H1.267C4.195,37.7,12.405,43.953,22.074,43.953
+ C29.8,43.951,36.594,39.966,40.505,33.932z"/>
+ </g>
+ <g id="black">
+ <g>
+ <path fill="#FFFFFF" d="M43.807,32.761h0.198l0.299,0.49h0.192l-0.323-0.501c0.168-0.021,0.295-0.108,0.295-0.309
+ c0-0.226-0.133-0.324-0.4-0.324h-0.431v1.134h0.171L43.807,32.761L43.807,32.761z M43.807,32.615v-0.352h0.233
+ c0.119,0,0.247,0.025,0.247,0.165c0,0.176-0.129,0.187-0.273,0.187H43.807L43.807,32.615z"/>
+ <path fill="#FFFFFF" d="M45.119,32.686c0,0.611-0.496,1.11-1.108,1.11c-0.614,0-1.11-0.499-1.11-1.11s0.496-1.11,1.11-1.11
+ C44.623,31.575,45.119,32.074,45.119,32.686z M44.011,31.773c-0.505,0-0.915,0.409-0.915,0.912c0,0.505,0.41,0.912,0.915,0.912
+ c0.503,0,0.913-0.407,0.913-0.912C44.922,32.183,44.514,31.773,44.011,31.773z"/>
+ </g>
+ <g>
+ <path d="M40.505,33.934c-0.846-0.194-1.743-0.315-2.651-0.315c-1.553,0-2.965,0.27-4.008,0.702
+ c-0.114,0.058-0.197,0.176-0.197,0.314c0,0.048,0.014,0.101,0.031,0.142c0.124,0.357-0.079,0.745-1.087,0.967
+ c-1.494,0.327-2.44,1.87-2.979,2.383c-0.636,0.602-2.426,0.974-2.157,0.614c0.21-0.28,1.018-1.157,1.508-2.102
+ c0.438-0.845,0.829-1.088,1.367-1.893c0.156-0.238,0.77-1.069,0.947-1.727c0.201-0.643,0.134-1.448,0.21-1.78
+ c0.11-0.48,0.563-1.517,0.596-2.104c0.021-0.332-1.384,0.472-2.05,0.472c-0.666,0-1.315-0.398-1.912-0.426
+ c-0.736-0.035-1.208,0.568-1.876,0.461c-0.379-0.061-0.701-0.395-1.365-0.421c-0.948-0.034-2.104,0.528-4.279,0.456
+ c-2.137-0.068-4.113-2.7-4.382-3.117c-0.315-0.493-0.702-0.493-1.122-0.107c-0.421,0.385-0.939,0.082-1.087-0.176
+ c-0.279-0.491-1.029-1.924-2.191-2.225c-1.605-0.419-2.419,0.889-2.312,1.928c0.107,1.052,0.787,1.347,1.104,1.908
+ c0.315,0.561,0.477,0.923,1.07,1.173c0.421,0.174,0.577,0.436,0.453,0.779c-0.111,0.301-0.549,0.369-0.837,0.384
+ c-0.61,0.03-1.04-0.138-1.354-0.338c-0.363-0.231-0.659-0.553-0.978-1.1c-0.368-0.604-0.945-0.866-1.62-0.866
+ c-0.321,0-0.621,0.086-0.889,0.221c-1.057,0.552-2.313,0.877-3.667,0.877H1.267c-0.743-2.203-1.146-4.564-1.146-7.017
+ c0-12.127,9.83-21.955,21.953-21.955c12.125,0,21.954,9.828,21.954,21.955C44.028,26.4,42.734,30.496,40.505,33.934z"/>
+ </g>
+ <path fill="#FFFFFF" d="M55.219,23.384c0-2.012-0.042-3.494-0.122-4.832h3.293l0.14,2.855h0.108
+ c0.739-2.116,2.494-3.196,4.117-3.196c0.372,0,0.586,0.013,0.892,0.082v3.582c-0.356-0.068-0.688-0.108-1.146-0.108
+ c-1.813,0-3.07,1.154-3.409,2.878c-0.064,0.333-0.099,0.736-0.099,1.146v7.801h-3.805L55.219,23.384z"/>
+ <path fill="#FFFFFF" d="M68.239,27.096c0.101,2.726,2.21,3.918,4.646,3.918c1.748,0,3.001-0.273,4.151-0.697l0.561,2.617
+ c-1.285,0.547-3.071,0.954-5.255,0.954c-4.885,0-7.746-3.016-7.746-7.624c0-4.149,2.518-8.079,7.358-8.079
+ c4.89,0,6.48,4.022,6.48,7.315c0,0.708-0.063,1.273-0.134,1.625L68.239,27.096z M74.852,24.445
+ c0.019-1.394-0.588-3.664-3.136-3.664c-2.339,0-3.314,2.125-3.486,3.664H74.852z"/>
+ <path fill="#FFFFFF" d="M91.019,27.069c0,0.398-0.026,0.77-0.114,1.11c-0.383,1.646-1.73,2.707-3.283,2.707
+ c-2.396,0-3.765-2.021-3.765-4.783c0-2.79,1.358-4.95,3.807-4.95c1.711,0,2.935,1.207,3.27,2.671
+ c0.065,0.306,0.086,0.688,0.086,0.99V27.069L91.019,27.069z M94.819,12.761l-3.801-1.072v8.484h-0.064
+ c-0.672-1.112-2.156-1.959-4.214-1.959c-3.617,0-6.767,2.993-6.742,8.032c0,4.622,2.844,7.687,6.436,7.687
+ c2.17,0,3.983-1.035,4.884-2.719h0.066l0.17,2.382h3.388c-0.07-1.022-0.124-2.679-0.124-4.218V12.761H94.819z"/>
+ <path fill="#FFFFFF" d="M104.876,18.196c-1.145,0-2.172,0.33-3.034,0.862c-0.895,0.524-1.622,1.333-2.056,2.17h-0.061v-7.039
+ l-1.491-0.44v19.843h1.491v-9.205c0-0.612,0.047-1.036,0.202-1.481c0.644-1.875,2.407-3.411,4.54-3.411
+ c3.081,0,4.148,2.471,4.148,5.182v8.915h1.488v-9.078C110.104,18.907,106.302,18.196,104.876,18.196z"/>
+ <path fill="#FFFFFF" d="M123.465,30.016c0,1.19,0.049,2.424,0.222,3.575h-1.371l-0.219-2.157h-0.071
+ c-0.73,1.16-2.406,2.5-4.798,2.5c-3.028,0-4.438-2.131-4.438-4.139c0-3.473,3.067-5.566,9.191-5.502v-0.402
+ c0-1.489-0.29-4.458-3.852-4.435c-1.316,0-2.69,0.353-3.777,1.121l-0.474-1.083c1.376-0.931,3.053-1.3,4.414-1.3
+ c4.346,0,5.175,3.262,5.175,5.95v5.872H123.465z M121.979,25.546c-3.277-0.094-7.608,0.402-7.608,4.018
+ c0,2.163,1.428,3.136,2.996,3.136c2.51,0,3.935-1.554,4.455-3.02c0.107-0.321,0.157-0.645,0.157-0.9V25.546L121.979,25.546z"/>
+ <path fill="#FFFFFF" d="M129.393,15.222v3.317h4.291v1.208h-4.291v9.783c0,1.915,0.594,3.112,2.212,3.112
+ c0.777,0,1.323-0.1,1.71-0.236l0.182,1.155c-0.486,0.202-1.17,0.36-2.079,0.36c-1.097,0-2.008-0.346-2.596-1.068
+ c-0.684-0.791-0.917-2.054-0.917-3.59v-9.517h-2.54v-1.208h2.54v-2.767L129.393,15.222z"/>
+ <g>
+ <path fill="#FFFFFF" d="M135.564,32.791h0.198l0.298,0.489h0.193l-0.322-0.502c0.166-0.018,0.294-0.105,0.294-0.308
+ c0-0.226-0.134-0.324-0.401-0.324h-0.43v1.134h0.172v-0.489H135.564z M135.564,32.644v-0.351h0.232
+ c0.118,0,0.247,0.025,0.247,0.165c0,0.175-0.129,0.186-0.275,0.186H135.564L135.564,32.644z"/>
+ <path fill="#FFFFFF" d="M136.879,32.715c0,0.614-0.499,1.109-1.11,1.109s-1.11-0.495-1.11-1.109c0-0.611,0.499-1.109,1.11-1.109
+ C136.381,31.605,136.879,32.104,136.879,32.715z M135.769,31.801c-0.505,0-0.914,0.411-0.914,0.914
+ c0,0.502,0.409,0.909,0.914,0.909c0.503,0,0.911-0.407,0.911-0.909C136.68,32.212,136.271,31.801,135.769,31.801z"/>
+ </g>
+ <path d="M26.91,31.919c0.113,0.111,0.308,0.483,0.07,0.952c-0.134,0.249-0.277,0.423-0.534,0.631
+ c-0.309,0.245-0.913,0.531-1.742,0.008c-0.444-0.283-0.471-0.379-1.085-0.298c-0.44,0.057-0.614-0.386-0.457-0.756
+ c0.158-0.367,0.807-0.666,1.614-0.192c0.362,0.214,0.927,0.664,1.423,0.266c0.206-0.166,0.327-0.273,0.613-0.604
+ c0.013-0.015,0.03-0.023,0.051-0.023C26.881,31.902,26.898,31.911,26.91,31.919z"/>
+ </g>
+ <path id="red" fill="#CC0000" d="M20.367,10.501c-2.536,0.183-2.799,0.457-3.274,0.962c-0.67,0.713-1.553-0.925-1.553-0.925
+ c-0.529-0.111-1.171-0.965-0.825-1.763c0.34-0.788,0.97-0.552,1.169-0.306c0.24,0.299,0.753,0.787,1.419,0.771
+ c0.665-0.018,1.434-0.158,2.504-0.158c1.085,0,1.815,0.405,1.855,0.753C21.698,10.134,21.576,10.413,20.367,10.501z M23.03,6.31
+ c-0.003,0-0.007,0-0.012,0c-0.039,0-0.071-0.029-0.071-0.065c0-0.026,0.017-0.049,0.041-0.061c0.492-0.259,1.225-0.467,2.064-0.551
+ c0.252-0.028,0.499-0.04,0.735-0.042c0.042,0,0.084,0,0.126,0c1.408,0.032,2.533,0.59,2.516,1.248
+ c-0.017,0.659-1.169,1.167-2.577,1.135c-0.455-0.011-0.883-0.077-1.25-0.183c-0.044-0.011-0.075-0.049-0.075-0.091
+ c0-0.044,0.031-0.083,0.075-0.094c0.879-0.203,1.472-0.535,1.43-0.849c-0.054-0.416-1.204-0.643-2.565-0.505
+ C23.316,6.269,23.172,6.288,23.03,6.31z M34.464,16.16c-0.218,0.729-0.526,1.661-1.898,2.367c-0.2,0.102-0.277-0.065-0.184-0.223
+ c0.518-0.882,0.611-1.104,0.761-1.449c0.211-0.511,0.321-1.233-0.098-2.744c-0.827-2.972-2.548-6.944-3.8-8.231
+ c-1.208-1.244-3.397-1.594-5.376-1.086c-0.73,0.188-2.154,0.929-4.799,0.334c-4.576-1.031-5.254,1.261-5.516,2.258
+ c-0.261,0.999-0.893,3.835-0.893,3.835c-0.21,1.156-0.485,3.165,6.62,4.52c3.31,0.628,3.478,1.484,3.623,2.1
+ c0.264,1.104,0.683,1.734,1.157,2.049c0.473,0.317,0,0.579-0.524,0.63c-1.409,0.147-6.62-1.346-9.702-3.098
+ c-2.522-1.541-2.564-2.929-1.987-4.105c-3.809-0.411-6.669,0.357-7.186,2.16c-0.892,3.095,6.803,8.381,15.563,11.034
+ c9.195,2.785,18.651,0.842,19.703-4.937C40.404,18.943,38.192,17,34.464,16.16z"/>
+</g>
+</svg>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner.gif
new file mode 100644
index 0000000..4c9ea91
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-lg.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-lg.gif
new file mode 100644
index 0000000..0effa66
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-lg.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-sm.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-sm.gif
new file mode 100644
index 0000000..eeaddc2
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-sm.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-xs.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-xs.gif
new file mode 100644
index 0000000..8bfd1bc
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/rcue/img/spinner-xs.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/component.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/component.json
new file mode 100644
index 0000000..ec47566
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/component.json
@@ -0,0 +1,8 @@
+{
+ "name": "select2",
+ "version": "3.4.1",
+ "main": ["select2.js", "select2.css", "select2.png", "select2x2.png", "select2-spinner.gif"],
+ "dependencies": {
+ "jquery": ">= 1.7.1"
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/LICENSE b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/LICENSE
new file mode 100644
index 0000000..3c98f3d
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/LICENSE
@@ -0,0 +1,18 @@
+Copyright 2012 Igor Vaynberg
+
+Version: @@ver@@ Timestamp: @@timestamp@@
+
+This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
+General Public License version 2 (the "GPL License"). You may choose either license to govern your
+use of this software only upon the condition that you accept all of the terms of either the Apache
+License or the GPL License.
+
+You may obtain a copy of the Apache License and the GPL License at:
+
+http://www.apache.org/licenses/LICENSE-2.0
+http://www.gnu.org/licenses/gpl-2.0.html
+
+Unless required by applicable law or agreed to in writing, software distributed under the Apache License
+or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+either express or implied. See the Apache License and the GPL License for the specific language governing
+permissions and limitations under the Apache License and the GPL License.
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/README.md b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/README.md
new file mode 100644
index 0000000..cb0be3c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/README.md
@@ -0,0 +1,83 @@
+Select2
+=======
+
+Select2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.
+
+To get started, checkout examples and documentation at http://ivaynberg.github.com/select2
+
+Use cases
+---------
+
+* Enhancing native selects with search.
+* Enhancing native selects with a better multi-select interface.
+* Loading data from JavaScript: easily load items via ajax and have them searchable.
+* Nesting optgroups: native selects only support one level of nested. Select2 does not have this restriction.
+* Tagging: ability to add new items on the fly.
+* Working with large, remote datasets: ability to partially load a dataset based on the search term.
+* Paging of large datasets: easy support for loading more pages when the results are scrolled to the end.
+* Templating: support for custom rendering of results and selections.
+
+Browser compatibility
+---------------------
+* IE 8+
+* Chrome 8+
+* Firefox 10+
+* Safari 3+
+* Opera 10.6+
+
+Integrations
+------------
+
+* [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / [Apache Wicket](http://wicket.apache.org))
+* [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails)
+* [AngularUI](http://angular-ui.github.com/#directives-select2) ([AngularJS](angularjs.org))
+* [Django](https://github.com/applegrew/django-select2)
+* [Symfony](https://github.com/19Gerhard85/sfSelect2WidgetsPlugin)
+* [Bootstrap](https://github.com/t0m/select2-bootstrap-css) (CSS skin)
+* [Yii](https://github.com/tonybolzan/yii-select2)
+
+Internationalization (i18n)
+---------------------------
+
+Select2 supports multiple languages by simply including the right
+language JS file (`select2_locale_it.js`, `select2_locale_nl.js`, etc.).
+
+Missing a language? Just copy `select2_locale_en.js.template`, translate
+it, and make a pull request back to Select2 here on GitHub.
+
+Bug tracker
+-----------
+
+Have a bug? Please create an issue here on GitHub!
+
+https://github.com/ivaynberg/select2/issues
+
+Mailing list
+------------
+
+Have a question? Ask on our mailing list!
+
+select2@googlegroups.com
+
+https://groups.google.com/d/forum/select2
+
+
+Copyright and license
+---------------------
+
+Copyright 2012 Igor Vaynberg
+
+This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
+General Public License version 2 (the "GPL License"). You may choose either license to govern your
+use of this software only upon the condition that you accept all of the terms of either the Apache
+License or the GPL License.
+
+You may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at:
+
+http://www.apache.org/licenses/LICENSE-2.0
+http://www.gnu.org/licenses/gpl-2.0.html
+
+Unless required by applicable law or agreed to in writing, software distributed under the Apache License
+or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+either express or implied. See the Apache License and the GPL License for the specific language governing
+permissions and limitations under the Apache License and the GPL License.
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/release.sh b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/release.sh
new file mode 100755
index 0000000..0a315ab
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/release.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+set -e
+
+echo -n "Enter the version for this release: "
+
+read ver
+
+if [ ! $ver ]; then
+ echo "Invalid version."
+ exit
+fi
+
+name="select2"
+js="$name.js"
+mini="$name.min.js"
+css="$name.css"
+release="$name-$ver"
+tag="$ver"
+branch="build-$ver"
+curbranch=`git branch | grep "*" | sed "s/* //"`
+timestamp=$(date)
+tokens="s/@@ver@@/$ver/g;s/\@@timestamp@@/$timestamp/g"
+remote="github"
+
+echo "Updating Version Identifiers"
+
+sed -E -e "s/\"version\": \"([0-9\.]+)\",/\"version\": \"$ver\",/g" -i "" component.json select2.jquery.json
+git add component.json
+git add select2.jquery.json
+git commit -m "modified version identifiers in descriptors for release $ver"
+git push
+
+git branch "$branch"
+git checkout "$branch"
+
+echo "Tokenizing..."
+
+find . -name "$js" | xargs -I{} sed -e "$tokens" -i "" {}
+find . -name "$css" | xargs -I{} sed -e "$tokens" -i "" {}
+sed -e "s/latest/$ver/g" -i "" component.json
+
+git add "$js"
+git add "$css"
+
+echo "Minifying..."
+
+echo "/*" > "$mini"
+cat LICENSE | sed "$tokens" >> "$mini"
+echo "*/" >> "$mini"
+
+curl -s \
+ --data-urlencode "js_code@$js" \
+ http://marijnhaverbeke.nl/uglifyjs \
+ >> "$mini"
+
+git add "$mini"
+
+git commit -m "release $ver"
+
+echo "Tagging..."
+git tag -a "$tag" -m "tagged version $ver"
+git push "$remote" --tags
+
+echo "Cleaning Up..."
+
+git checkout "$curbranch"
+git branch -D "$branch"
+
+echo "Done"
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.css
new file mode 100644
index 0000000..48c85b4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.css
@@ -0,0 +1,680 @@
+/*
+Version: 3.4.1 Timestamp: Thu Jun 27 18:02:10 PDT 2013
+*/
+.select2-container {
+ margin: 0;
+ position: relative;
+ display: inline-block;
+ /* inline-block for ie7 */
+ zoom: 1;
+ *display: inline;
+ vertical-align: middle;
+}
+
+.select2-container,
+.select2-drop,
+.select2-search,
+.select2-search input{
+ /*
+ Force border-box so that % widths fit the parent
+ container without overlap because of margin/padding.
+
+ More Info : http://www.quirksmode.org/css/box.html
+ */
+ -webkit-box-sizing: border-box; /* webkit */
+ -khtml-box-sizing: border-box; /* konqueror */
+ -moz-box-sizing: border-box; /* firefox */
+ -ms-box-sizing: border-box; /* ie */
+ box-sizing: border-box; /* css3 */
+}
+
+.select2-container .select2-choice {
+ display: block;
+ height: 26px;
+ padding: 0 0 0 8px;
+ overflow: hidden;
+ position: relative;
+
+ border: 1px solid #aaa;
+ white-space: nowrap;
+ line-height: 26px;
+ color: #444;
+ text-decoration: none;
+
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+ background-color: #fff;
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.5, white));
+ background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 50%);
+ background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 50%);
+ background-image: -o-linear-gradient(bottom, #eeeeee 0%, #ffffff 50%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #eeeeee 50%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);
+ background-image: linear-gradient(top, #ffffff 0%, #eeeeee 50%);
+}
+
+.select2-container.select2-drop-above .select2-choice {
+ border-bottom-color: #aaa;
+
+ -webkit-border-radius:0 0 4px 4px;
+ -moz-border-radius:0 0 4px 4px;
+ border-radius:0 0 4px 4px;
+
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.9, white));
+ background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 90%);
+ background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 90%);
+ background-image: -o-linear-gradient(bottom, #eeeeee 0%, white 90%);
+ background-image: -ms-linear-gradient(top, #eeeeee 0%,#ffffff 90%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee',GradientType=0 );
+ background-image: linear-gradient(top, #eeeeee 0%,#ffffff 90%);
+}
+
+.select2-container.select2-allowclear .select2-choice .select2-chosen {
+ margin-right: 42px;
+}
+
+.select2-container .select2-choice > .select2-chosen {
+ margin-right: 26px;
+ display: block;
+ overflow: hidden;
+
+ white-space: nowrap;
+
+ -ms-text-overflow: ellipsis;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+}
+
+.select2-container .select2-choice abbr {
+ display: none;
+ width: 12px;
+ height: 12px;
+ position: absolute;
+ right: 24px;
+ top: 8px;
+
+ font-size: 1px;
+ text-decoration: none;
+
+ border: 0;
+ background: url('select2.png') right top no-repeat;
+ cursor: pointer;
+ outline: 0;
+}
+
+.select2-container.select2-allowclear .select2-choice abbr {
+ display: inline-block;
+}
+
+.select2-container .select2-choice abbr:hover {
+ background-position: right -11px;
+ cursor: pointer;
+}
+
+.select2-drop-undermask {
+ border: 0;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 9998;
+ background-color: transparent;
+ filter: alpha(opacity=0);
+}
+
+.select2-drop-mask {
+ border: 0;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 9998;
+ /* styles required for IE to work */
+ background-color: #fff;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+
+.select2-drop {
+ width: 100%;
+ margin-top: -1px;
+ position: absolute;
+ z-index: 9999;
+ top: 100%;
+
+ background: #fff;
+ color: #000;
+ border: 1px solid #aaa;
+ border-top: 0;
+
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+
+ -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
+ -moz-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
+ box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
+}
+
+.select2-drop-auto-width {
+ border-top: 1px solid #aaa;
+ width: auto;
+}
+
+.select2-drop-auto-width .select2-search {
+ padding-top: 4px;
+}
+
+.select2-drop.select2-drop-above {
+ margin-top: 1px;
+ border-top: 1px solid #aaa;
+ border-bottom: 0;
+
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+
+ -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
+ -moz-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
+ box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
+}
+
+.select2-drop-active {
+ border: 1px solid #5897fb;
+ border-top: none;
+}
+
+.select2-drop.select2-drop-above.select2-drop-active {
+ border-top: 1px solid #5897fb;
+}
+
+.select2-container .select2-choice .select2-arrow {
+ display: inline-block;
+ width: 18px;
+ height: 100%;
+ position: absolute;
+ right: 0;
+ top: 0;
+
+ border-left: 1px solid #aaa;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+
+ background: #ccc;
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
+ background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
+ background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
+ background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);
+ background-image: -ms-linear-gradient(top, #cccccc 0%, #eeeeee 60%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);
+ background-image: linear-gradient(top, #cccccc 0%, #eeeeee 60%);
+}
+
+.select2-container .select2-choice .select2-arrow b {
+ display: block;
+ width: 100%;
+ height: 100%;
+ background: url('select2.png') no-repeat 0 1px;
+}
+
+.select2-search {
+ display: inline-block;
+ width: 100%;
+ min-height: 26px;
+ margin: 0;
+ padding-left: 4px;
+ padding-right: 4px;
+
+ position: relative;
+ z-index: 10000;
+
+ white-space: nowrap;
+}
+
+.select2-search input {
+ width: 100%;
+ height: auto !important;
+ min-height: 26px;
+ padding: 4px 20px 4px 5px;
+ margin: 0;
+
+ outline: 0;
+ font-family: sans-serif;
+ font-size: 1em;
+
+ border: 1px solid #aaa;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+
+ background: #fff url('select2.png') no-repeat 100% -22px;
+ background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));
+ background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);
+ background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
+ background: url('select2.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
+ background: url('select2.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);
+ background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%, #eeeeee 99%);
+}
+
+.select2-drop.select2-drop-above .select2-search input {
+ margin-top: 4px;
+}
+
+.select2-search input.select2-active {
+ background: #fff url('select2-spinner.gif') no-repeat 100%;
+ background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));
+ background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);
+ background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
+ background: url('select2-spinner.gif') no-repeat 100%, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
+ background: url('select2-spinner.gif') no-repeat 100%, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);
+ background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #ffffff 85%, #eeeeee 99%);
+}
+
+.select2-container-active .select2-choice,
+.select2-container-active .select2-choices {
+ border: 1px solid #5897fb;
+ outline: none;
+
+ -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);
+ -moz-box-shadow: 0 0 5px rgba(0,0,0,.3);
+ box-shadow: 0 0 5px rgba(0,0,0,.3);
+}
+
+.select2-dropdown-open .select2-choice {
+ border-bottom-color: transparent;
+ -webkit-box-shadow: 0 1px 0 #fff inset;
+ -moz-box-shadow: 0 1px 0 #fff inset;
+ box-shadow: 0 1px 0 #fff inset;
+
+ -webkit-border-bottom-left-radius: 0;
+ -moz-border-radius-bottomleft: 0;
+ border-bottom-left-radius: 0;
+
+ -webkit-border-bottom-right-radius: 0;
+ -moz-border-radius-bottomright: 0;
+ border-bottom-right-radius: 0;
+
+ background-color: #eee;
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, white), color-stop(0.5, #eeeeee));
+ background-image: -webkit-linear-gradient(center bottom, white 0%, #eeeeee 50%);
+ background-image: -moz-linear-gradient(center bottom, white 0%, #eeeeee 50%);
+ background-image: -o-linear-gradient(bottom, white 0%, #eeeeee 50%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%,#eeeeee 50%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff',GradientType=0 );
+ background-image: linear-gradient(top, #ffffff 0%,#eeeeee 50%);
+}
+
+.select2-dropdown-open.select2-drop-above .select2-choice,
+.select2-dropdown-open.select2-drop-above .select2-choices {
+ border: 1px solid #5897fb;
+ border-top-color: transparent;
+
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, white), color-stop(0.5, #eeeeee));
+ background-image: -webkit-linear-gradient(center top, white 0%, #eeeeee 50%);
+ background-image: -moz-linear-gradient(center top, white 0%, #eeeeee 50%);
+ background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
+ background-image: -ms-linear-gradient(bottom, #ffffff 0%,#eeeeee 50%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff',GradientType=0 );
+ background-image: linear-gradient(bottom, #ffffff 0%,#eeeeee 50%);
+}
+
+.select2-dropdown-open .select2-choice .select2-arrow {
+ background: transparent;
+ border-left: none;
+ filter: none;
+}
+.select2-dropdown-open .select2-choice .select2-arrow b {
+ background-position: -18px 1px;
+}
+
+/* results */
+.select2-results {
+ max-height: 200px;
+ padding: 0 0 0 4px;
+ margin: 4px 4px 4px 0;
+ position: relative;
+ overflow-x: hidden;
+ overflow-y: auto;
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+}
+
+.select2-results ul.select2-result-sub {
+ margin: 0;
+ padding-left: 0;
+}
+
+.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }
+.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }
+
+.select2-results li {
+ list-style: none;
+ display: list-item;
+ background-image: none;
+}
+
+.select2-results li.select2-result-with-children > .select2-result-label {
+ font-weight: bold;
+}
+
+.select2-results .select2-result-label {
+ padding: 3px 7px 4px;
+ margin: 0;
+ cursor: pointer;
+
+ min-height: 1em;
+
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.select2-results .select2-highlighted {
+ background: #3875d7;
+ color: #fff;
+}
+
+.select2-results li em {
+ background: #feffde;
+ font-style: normal;
+}
+
+.select2-results .select2-highlighted em {
+ background: transparent;
+}
+
+.select2-results .select2-highlighted ul {
+ background: white;
+ color: #000;
+}
+
+
+.select2-results .select2-no-results,
+.select2-results .select2-searching,
+.select2-results .select2-selection-limit {
+ background: #f4f4f4;
+ display: list-item;
+}
+
+/*
+disabled look for disabled choices in the results dropdown
+*/
+.select2-results .select2-disabled.select2-highlighted {
+ color: #666;
+ background: #f4f4f4;
+ display: list-item;
+ cursor: default;
+}
+.select2-results .select2-disabled {
+ background: #f4f4f4;
+ display: list-item;
+ cursor: default;
+}
+
+.select2-results .select2-selected {
+ display: none;
+}
+
+.select2-more-results.select2-active {
+ background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;
+}
+
+.select2-more-results {
+ background: #f4f4f4;
+ display: list-item;
+}
+
+/* disabled styles */
+
+.select2-container.select2-container-disabled .select2-choice {
+ background-color: #f4f4f4;
+ background-image: none;
+ border: 1px solid #ddd;
+ cursor: default;
+}
+
+.select2-container.select2-container-disabled .select2-choice .select2-arrow {
+ background-color: #f4f4f4;
+ background-image: none;
+ border-left: 0;
+}
+
+.select2-container.select2-container-disabled .select2-choice abbr {
+ display: none;
+}
+
+
+/* multiselect */
+
+.select2-container-multi .select2-choices {
+ height: auto !important;
+ height: 1%;
+ margin: 0;
+ padding: 0;
+ position: relative;
+
+ border: 1px solid #aaa;
+ cursor: text;
+ overflow: hidden;
+
+ background-color: #fff;
+ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
+ background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+ background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+ background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+ background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+ background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+}
+
+.select2-locked {
+ padding: 3px 5px 3px 5px !important;
+}
+
+.select2-container-multi .select2-choices {
+ min-height: 26px;
+}
+
+.select2-container-multi.select2-container-active .select2-choices {
+ border: 1px solid #5897fb;
+ outline: none;
+
+ -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);
+ -moz-box-shadow: 0 0 5px rgba(0,0,0,.3);
+ box-shadow: 0 0 5px rgba(0,0,0,.3);
+}
+.select2-container-multi .select2-choices li {
+ float: left;
+ list-style: none;
+}
+.select2-container-multi .select2-choices .select2-search-field {
+ margin: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.select2-container-multi .select2-choices .select2-search-field input {
+ padding: 5px;
+ margin: 1px 0;
+
+ font-family: sans-serif;
+ font-size: 100%;
+ color: #666;
+ outline: 0;
+ border: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ background: transparent !important;
+}
+
+.select2-container-multi .select2-choices .select2-search-field input.select2-active {
+ background: #fff url('select2-spinner.gif') no-repeat 100% !important;
+}
+
+.select2-default {
+ color: #999 !important;
+}
+
+.select2-container-multi .select2-choices .select2-search-choice {
+ padding: 3px 5px 3px 18px;
+ margin: 3px 0 3px 5px;
+ position: relative;
+
+ line-height: 13px;
+ color: #333;
+ cursor: default;
+ border: 1px solid #aaaaaa;
+
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+
+ -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
+ -moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
+ box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
+
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+ background-color: #e4e4e4;
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0 );
+ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
+ background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+ background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+ background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+ background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+ background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+}
+.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {
+ cursor: default;
+}
+.select2-container-multi .select2-choices .select2-search-choice-focus {
+ background: #d4d4d4;
+}
+
+.select2-search-choice-close {
+ display: block;
+ width: 12px;
+ height: 13px;
+ position: absolute;
+ right: 3px;
+ top: 4px;
+
+ font-size: 1px;
+ outline: none;
+ background: url('select2.png') right top no-repeat;
+}
+
+.select2-container-multi .select2-search-choice-close {
+ left: 3px;
+}
+
+.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
+ background-position: right -11px;
+}
+.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
+ background-position: right -11px;
+}
+
+/* disabled styles */
+.select2-container-multi.select2-container-disabled .select2-choices{
+ background-color: #f4f4f4;
+ background-image: none;
+ border: 1px solid #ddd;
+ cursor: default;
+}
+
+.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
+ padding: 3px 5px 3px 5px;
+ border: 1px solid #ddd;
+ background-image: none;
+ background-color: #f4f4f4;
+}
+
+.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;
+ background:none;
+}
+/* end multiselect */
+
+
+.select2-result-selectable .select2-match,
+.select2-result-unselectable .select2-match {
+ text-decoration: underline;
+}
+
+.select2-offscreen, .select2-offscreen:focus {
+ clip: rect(0 0 0 0);
+ width: 1px;
+ height: 1px;
+ border: 0;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+ position: absolute;
+ outline: 0;
+ left: 0px;
+}
+
+.select2-display-none {
+ display: none;
+}
+
+.select2-measure-scrollbar {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+ width: 100px;
+ height: 100px;
+ overflow: scroll;
+}
+/* Retina-ize icons */
+
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) {
+ .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice .select2-arrow b {
+ background-image: url('select2x2.png') !important;
+ background-repeat: no-repeat !important;
+ background-size: 60px 40px !important;
+ }
+ .select2-search input {
+ background-position: 100% -21px !important;
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.jquery.json b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.jquery.json
new file mode 100644
index 0000000..af9cab7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.jquery.json
@@ -0,0 +1,36 @@
+{
+ "name": "select2",
+ "title": "Select2",
+ "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
+ "keywords": [
+ "select",
+ "autocomplete",
+ "typeahead",
+ "dropdown",
+ "multiselect",
+ "tag",
+ "tagging"
+ ],
+ "version": "3.4.1",
+ "author": {
+ "name": "Igor Vaynberg",
+ "url": "https://github.com/ivaynberg"
+ },
+ "licenses": [
+ {
+ "type": "Apache",
+ "url": "http://www.apache.org/licenses/LICENSE-2.0"
+ },
+ {
+ "type": "GPL v2",
+ "url": "http://www.gnu.org/licenses/gpl-2.0.html"
+ }
+ ],
+ "bugs": "https://github.com/ivaynberg/select2/issues",
+ "homepage": "http://ivaynberg.github.com/select2",
+ "docs": "http://ivaynberg.github.com/select2/",
+ "download": "https://github.com/ivaynberg/select2/tags",
+ "dependencies": {
+ "jquery": ">=1.7.1"
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.js
new file mode 100644
index 0000000..a496071
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.js
@@ -0,0 +1,3137 @@
+/*
+Copyright 2012 Igor Vaynberg
+
+Version: 3.4.1 Timestamp: Thu Jun 27 18:02:10 PDT 2013
+
+This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
+General Public License version 2 (the "GPL License"). You may choose either license to govern your
+use of this software only upon the condition that you accept all of the terms of either the Apache
+License or the GPL License.
+
+You may obtain a copy of the Apache License and the GPL License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+ http://www.gnu.org/licenses/gpl-2.0.html
+
+Unless required by applicable law or agreed to in writing, software distributed under the
+Apache License or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for
+the specific language governing permissions and limitations under the Apache License and the GPL License.
+*/
+(function ($) {
+ if(typeof $.fn.each2 == "undefined") {
+ $.fn.extend({
+ /*
+ * 4-10 times faster .each replacement
+ * use it carefully, as it overrides jQuery context of element on each iteration
+ */
+ each2 : function (c) {
+ var j = $([0]), i = -1, l = this.length;
+ while (
+ ++i < l
+ && (j.context = j[0] = this[i])
+ && c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object
+ );
+ return this;
+ }
+ });
+ }
+})(jQuery);
+
+(function ($, undefined) {
+ "use strict";
+ /*global document, window, jQuery, console */
+
+ if (window.Select2 !== undefined) {
+ return;
+ }
+
+ var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,
+ lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,
+
+ KEY = {
+ TAB: 9,
+ ENTER: 13,
+ ESC: 27,
+ SPACE: 32,
+ LEFT: 37,
+ UP: 38,
+ RIGHT: 39,
+ DOWN: 40,
+ SHIFT: 16,
+ CTRL: 17,
+ ALT: 18,
+ PAGE_UP: 33,
+ PAGE_DOWN: 34,
+ HOME: 36,
+ END: 35,
+ BACKSPACE: 8,
+ DELETE: 46,
+ isArrow: function (k) {
+ k = k.which ? k.which : k;
+ switch (k) {
+ case KEY.LEFT:
+ case KEY.RIGHT:
+ case KEY.UP:
+ case KEY.DOWN:
+ return true;
+ }
+ return false;
+ },
+ isControl: function (e) {
+ var k = e.which;
+ switch (k) {
+ case KEY.SHIFT:
+ case KEY.CTRL:
+ case KEY.ALT:
+ return true;
+ }
+
+ if (e.metaKey) return true;
+
+ return false;
+ },
+ isFunctionKey: function (k) {
+ k = k.which ? k.which : k;
+ return k >= 112 && k <= 123;
+ }
+ },
+ MEASURE_SCROLLBAR_TEMPLATE = "<div class='select2-measure-scrollbar'></div>";
+
+ $document = $(document);
+
+ nextUid=(function() { var counter=1; return function() { return counter++; }; }());
+
+ function indexOf(value, array) {
+ var i = 0, l = array.length;
+ for (; i < l; i = i + 1) {
+ if (equal(value, array[i])) return i;
+ }
+ return -1;
+ }
+
+ function measureScrollbar () {
+ var $template = $( MEASURE_SCROLLBAR_TEMPLATE );
+ $template.appendTo('body');
+
+ var dim = {
+ width: $template.width() - $template[0].clientWidth,
+ height: $template.height() - $template[0].clientHeight
+ };
+ $template.remove();
+
+ return dim;
+ }
+
+ /**
+ * Compares equality of a and b
+ * @param a
+ * @param b
+ */
+ function equal(a, b) {
+ if (a === b) return true;
+ if (a === undefined || b === undefined) return false;
+ if (a === null || b === null) return false;
+ // Check whether 'a' or 'b' is a string (primitive or object).
+ // The concatenation of an empty string (+'') converts its argument to a string's primitive.
+ if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object
+ if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object
+ return false;
+ }
+
+ /**
+ * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty
+ * strings
+ * @param string
+ * @param separator
+ */
+ function splitVal(string, separator) {
+ var val, i, l;
+ if (string === null || string.length < 1) return [];
+ val = string.split(separator);
+ for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);
+ return val;
+ }
+
+ function getSideBorderPadding(element) {
+ return element.outerWidth(false) - element.width();
+ }
+
+ function installKeyUpChangeEvent(element) {
+ var key="keyup-change-value";
+ element.on("keydown", function () {
+ if ($.data(element, key) === undefined) {
+ $.data(element, key, element.val());
+ }
+ });
+ element.on("keyup", function () {
+ var val= $.data(element, key);
+ if (val !== undefined && element.val() !== val) {
+ $.removeData(element, key);
+ element.trigger("keyup-change");
+ }
+ });
+ }
+
+ $document.on("mousemove", function (e) {
+ lastMousePosition.x = e.pageX;
+ lastMousePosition.y = e.pageY;
+ });
+
+ /**
+ * filters mouse events so an event is fired only if the mouse moved.
+ *
+ * filters out mouse events that occur when mouse is stationary but
+ * the elements under the pointer are scrolled.
+ */
+ function installFilteredMouseMove(element) {
+ element.on("mousemove", function (e) {
+ var lastpos = lastMousePosition;
+ if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {
+ $(e.target).trigger("mousemove-filtered", e);
+ }
+ });
+ }
+
+ /**
+ * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made
+ * within the last quietMillis milliseconds.
+ *
+ * @param quietMillis number of milliseconds to wait before invoking fn
+ * @param fn function to be debounced
+ * @param ctx object to be used as this reference within fn
+ * @return debounced version of fn
+ */
+ function debounce(quietMillis, fn, ctx) {
+ ctx = ctx || undefined;
+ var timeout;
+ return function () {
+ var args = arguments;
+ window.clearTimeout(timeout);
+ timeout = window.setTimeout(function() {
+ fn.apply(ctx, args);
+ }, quietMillis);
+ };
+ }
+
+ /**
+ * A simple implementation of a thunk
+ * @param formula function used to lazily initialize the thunk
+ * @return {Function}
+ */
+ function thunk(formula) {
+ var evaluated = false,
+ value;
+ return function() {
+ if (evaluated === false) { value = formula(); evaluated = true; }
+ return value;
+ };
+ };
+
+ function installDebouncedScroll(threshold, element) {
+ var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);});
+ element.on("scroll", function (e) {
+ if (indexOf(e.target, element.get()) >= 0) notify(e);
+ });
+ }
+
+ function focus($el) {
+ if ($el[0] === document.activeElement) return;
+
+ /* set the focus in a 0 timeout - that way the focus is set after the processing
+ of the current event has finished - which seems like the only reliable way
+ to set focus */
+ window.setTimeout(function() {
+ var el=$el[0], pos=$el.val().length, range;
+
+ $el.focus();
+
+ /* make sure el received focus so we do not error out when trying to manipulate the caret.
+ sometimes modals or others listeners may steal it after its set */
+ if ($el.is(":visible") && el === document.activeElement) {
+
+ /* after the focus is set move the caret to the end, necessary when we val()
+ just before setting focus */
+ if(el.setSelectionRange)
+ {
+ el.setSelectionRange(pos, pos);
+ }
+ else if (el.createTextRange) {
+ range = el.createTextRange();
+ range.collapse(false);
+ range.select();
+ }
+ }
+ }, 0);
+ }
+
+ function getCursorInfo(el) {
+ el = $(el)[0];
+ var offset = 0;
+ var length = 0;
+ if ('selectionStart' in el) {
+ offset = el.selectionStart;
+ length = el.selectionEnd - offset;
+ } else if ('selection' in document) {
+ el.focus();
+ var sel = document.selection.createRange();
+ length = document.selection.createRange().text.length;
+ sel.moveStart('character', -el.value.length);
+ offset = sel.text.length - length;
+ }
+ return { offset: offset, length: length };
+ }
+
+ function killEvent(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ function killEventImmediately(event) {
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ }
+
+ function measureTextWidth(e) {
+ if (!sizer){
+ var style = e[0].currentStyle || window.getComputedStyle(e[0], null);
+ sizer = $(document.createElement("div")).css({
+ position: "absolute",
+ left: "-10000px",
+ top: "-10000px",
+ display: "none",
+ fontSize: style.fontSize,
+ fontFamily: style.fontFamily,
+ fontStyle: style.fontStyle,
+ fontWeight: style.fontWeight,
+ letterSpacing: style.letterSpacing,
+ textTransform: style.textTransform,
+ whiteSpace: "nowrap"
+ });
+ sizer.attr("class","select2-sizer");
+ $("body").append(sizer);
+ }
+ sizer.text(e.val());
+ return sizer.width();
+ }
+
+ function syncCssClasses(dest, src, adapter) {
+ var classes, replacements = [], adapted;
+
+ classes = dest.attr("class");
+ if (classes) {
+ classes = '' + classes; // for IE which returns object
+ $(classes.split(" ")).each2(function() {
+ if (this.indexOf("select2-") === 0) {
+ replacements.push(this);
+ }
+ });
+ }
+ classes = src.attr("class");
+ if (classes) {
+ classes = '' + classes; // for IE which returns object
+ $(classes.split(" ")).each2(function() {
+ if (this.indexOf("select2-") !== 0) {
+ adapted = adapter(this);
+ if (adapted) {
+ replacements.push(this);
+ }
+ }
+ });
+ }
+ dest.attr("class", replacements.join(" "));
+ }
+
+
+ function markMatch(text, term, markup, escapeMarkup) {
+ var match=text.toUpperCase().indexOf(term.toUpperCase()),
+ tl=term.length;
+
+ if (match<0) {
+ markup.push(escapeMarkup(text));
+ return;
+ }
+
+ markup.push(escapeMarkup(text.substring(0, match)));
+ markup.push("<span class='select2-match'>");
+ markup.push(escapeMarkup(text.substring(match, match + tl)));
+ markup.push("</span>");
+ markup.push(escapeMarkup(text.substring(match + tl, text.length)));
+ }
+
+ function defaultEscapeMarkup(markup) {
+ var replace_map = {
+ '\\': '\',
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ "/": '/'
+ };
+
+ return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
+ return replace_map[match];
+ });
+ }
+
+ /**
+ * Produces an ajax-based query function
+ *
+ * @param options object containing configuration paramters
+ * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax
+ * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax
+ * @param options.url url for the data
+ * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.
+ * @param options.dataType request data type: ajax, jsonp, other datatatypes supported by jQuery's $.ajax function or the transport function if specified
+ * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often
+ * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2.
+ * The expected format is an object containing the following keys:
+ * results array of objects that will be used as choices
+ * more (optional) boolean indicating whether there are more results available
+ * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}
+ */
+ function ajax(options) {
+ var timeout, // current scheduled but not yet executed request
+ requestSequence = 0, // sequence used to drop out-of-order responses
+ handler = null,
+ quietMillis = options.quietMillis || 100,
+ ajaxUrl = options.url,
+ self = this;
+
+ return function (query) {
+ window.clearTimeout(timeout);
+ timeout = window.setTimeout(function () {
+ requestSequence += 1; // increment the sequence
+ var requestNumber = requestSequence, // this request's sequence number
+ data = options.data, // ajax data function
+ url = ajaxUrl, // ajax url string or function
+ transport = options.transport || $.fn.select2.ajaxDefaults.transport,
+ // deprecated - to be removed in 4.0 - use params instead
+ deprecated = {
+ type: options.type || 'GET', // set type of request (GET or POST)
+ cache: options.cache || false,
+ jsonpCallback: options.jsonpCallback||undefined,
+ dataType: options.dataType||"json"
+ },
+ params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);
+
+ data = data ? data.call(self, query.term, query.page, query.context) : null;
+ url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;
+
+ if (handler) { handler.abort(); }
+
+ if (options.params) {
+ if ($.isFunction(options.params)) {
+ $.extend(params, options.params.call(self));
+ } else {
+ $.extend(params, options.params);
+ }
+ }
+
+ $.extend(params, {
+ url: url,
+ dataType: options.dataType,
+ data: data,
+ success: function (data) {
+ if (requestNumber < requestSequence) {
+ return;
+ }
+ // TODO - replace query.page with query so users have access to term, page, etc.
+ var results = options.results(data, query.page);
+ query.callback(results);
+ }
+ });
+ handler = transport.call(self, params);
+ }, quietMillis);
+ };
+ }
+
+ /**
+ * Produces a query function that works with a local array
+ *
+ * @param options object containing configuration parameters. The options parameter can either be an array or an
+ * object.
+ *
+ * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.
+ *
+ * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain
+ * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'
+ * key can either be a String in which case it is expected that each element in the 'data' array has a key with the
+ * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract
+ * the text.
+ */
+ function local(options) {
+ var data = options, // data elements
+ dataText,
+ tmp,
+ text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search
+
+ if ($.isArray(data)) {
+ tmp = data;
+ data = { results: tmp };
+ }
+
+ if ($.isFunction(data) === false) {
+ tmp = data;
+ data = function() { return tmp; };
+ }
+
+ var dataItem = data();
+ if (dataItem.text) {
+ text = dataItem.text;
+ // if text is not a function we assume it to be a key name
+ if (!$.isFunction(text)) {
+ dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available
+ text = function (item) { return item[dataText]; };
+ }
+ }
+
+ return function (query) {
+ var t = query.term, filtered = { results: [] }, process;
+ if (t === "") {
+ query.callback(data());
+ return;
+ }
+
+ process = function(datum, collection) {
+ var group, attr;
+ datum = datum[0];
+ if (datum.children) {
+ group = {};
+ for (attr in datum) {
+ if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];
+ }
+ group.children=[];
+ $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });
+ if (group.children.length || query.matcher(t, text(group), datum)) {
+ collection.push(group);
+ }
+ } else {
+ if (query.matcher(t, text(datum), datum)) {
+ collection.push(datum);
+ }
+ }
+ };
+
+ $(data().results).each2(function(i, datum) { process(datum, filtered.results); });
+ query.callback(filtered);
+ };
+ }
+
+ // TODO javadoc
+ function tags(data) {
+ var isFunc = $.isFunction(data);
+ return function (query) {
+ var t = query.term, filtered = {results: []};
+ $(isFunc ? data() : data).each(function () {
+ var isObject = this.text !== undefined,
+ text = isObject ? this.text : this;
+ if (t === "" || query.matcher(t, text)) {
+ filtered.results.push(isObject ? this : {id: this, text: this});
+ }
+ });
+ query.callback(filtered);
+ };
+ }
+
+ /**
+ * Checks if the formatter function should be used.
+ *
+ * Throws an error if it is not a function. Returns true if it should be used,
+ * false if no formatting should be performed.
+ *
+ * @param formatter
+ */
+ function checkFormatter(formatter, formatterName) {
+ if ($.isFunction(formatter)) return true;
+ if (!formatter) return false;
+ throw new Error(formatterName +" must be a function or a falsy value");
+ }
+
+ function evaluate(val) {
+ return $.isFunction(val) ? val() : val;
+ }
+
+ function countResults(results) {
+ var count = 0;
+ $.each(results, function(i, item) {
+ if (item.children) {
+ count += countResults(item.children);
+ } else {
+ count++;
+ }
+ });
+ return count;
+ }
+
+ /**
+ * Default tokenizer. This function uses breaks the input on substring match of any string from the
+ * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those
+ * two options have to be defined in order for the tokenizer to work.
+ *
+ * @param input text user has typed so far or pasted into the search field
+ * @param selection currently selected choices
+ * @param selectCallback function(choice) callback tho add the choice to selection
+ * @param opts select2's opts
+ * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value
+ */
+ function defaultTokenizer(input, selection, selectCallback, opts) {
+ var original = input, // store the original so we can compare and know if we need to tell the search to update its text
+ dupe = false, // check for whether a token we extracted represents a duplicate selected choice
+ token, // token
+ index, // position at which the separator was found
+ i, l, // looping variables
+ separator; // the matched separator
+
+ if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;
+
+ while (true) {
+ index = -1;
+
+ for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {
+ separator = opts.tokenSeparators[i];
+ index = input.indexOf(separator);
+ if (index >= 0) break;
+ }
+
+ if (index < 0) break; // did not find any token separator in the input string, bail
+
+ token = input.substring(0, index);
+ input = input.substring(index + separator.length);
+
+ if (token.length > 0) {
+ token = opts.createSearchChoice.call(this, token, selection);
+ if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {
+ dupe = false;
+ for (i = 0, l = selection.length; i < l; i++) {
+ if (equal(opts.id(token), opts.id(selection[i]))) {
+ dupe = true; break;
+ }
+ }
+
+ if (!dupe) selectCallback(token);
+ }
+ }
+ }
+
+ if (original!==input) return input;
+ }
+
+ /**
+ * Creates a new class
+ *
+ * @param superClass
+ * @param methods
+ */
+ function clazz(SuperClass, methods) {
+ var constructor = function () {};
+ constructor.prototype = new SuperClass;
+ constructor.prototype.constructor = constructor;
+ constructor.prototype.parent = SuperClass.prototype;
+ constructor.prototype = $.extend(constructor.prototype, methods);
+ return constructor;
+ }
+
+ AbstractSelect2 = clazz(Object, {
+
+ // abstract
+ bind: function (func) {
+ var self = this;
+ return function () {
+ func.apply(self, arguments);
+ };
+ },
+
+ // abstract
+ init: function (opts) {
+ var results, search, resultsSelector = ".select2-results", disabled, readonly;
+
+ // prepare options
+ this.opts = opts = this.prepareOpts(opts);
+
+ this.id=opts.id;
+
+ // destroy if called on an existing component
+ if (opts.element.data("select2") !== undefined &&
+ opts.element.data("select2") !== null) {
+ opts.element.data("select2").destroy();
+ }
+
+ this.container = this.createContainer();
+
+ this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid());
+ this.containerSelector="#"+this.containerId.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
+ this.container.attr("id", this.containerId);
+
+ // cache the body so future lookups are cheap
+ this.body = thunk(function() { return opts.element.closest("body"); });
+
+ syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
+
+ this.container.css(evaluate(opts.containerCss));
+ this.container.addClass(evaluate(opts.containerCssClass));
+
+ this.elementTabIndex = this.opts.element.attr("tabindex");
+
+ // swap container for the element
+ this.opts.element
+ .data("select2", this)
+ .attr("tabindex", "-1")
+ .before(this.container);
+ this.container.data("select2", this);
+
+ this.dropdown = this.container.find(".select2-drop");
+ this.dropdown.addClass(evaluate(opts.dropdownCssClass));
+ this.dropdown.data("select2", this);
+
+ this.results = results = this.container.find(resultsSelector);
+ this.search = search = this.container.find("input.select2-input");
+
+ this.resultsPage = 0;
+ this.context = null;
+
+ // initialize the container
+ this.initContainer();
+
+ installFilteredMouseMove(this.results);
+ this.dropdown.on("mousemove-filtered touchstart touchmove touchend", resultsSelector, this.bind(this.highlightUnderEvent));
+
+ installDebouncedScroll(80, this.results);
+ this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded));
+
+ // do not propagate change event from the search field out of the component
+ $(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();});
+ $(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();});
+
+ // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel
+ if ($.fn.mousewheel) {
+ results.mousewheel(function (e, delta, deltaX, deltaY) {
+ var top = results.scrollTop(), height;
+ if (deltaY > 0 && top - deltaY <= 0) {
+ results.scrollTop(0);
+ killEvent(e);
+ } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {
+ results.scrollTop(results.get(0).scrollHeight - results.height());
+ killEvent(e);
+ }
+ });
+ }
+
+ installKeyUpChangeEvent(search);
+ search.on("keyup-change input paste", this.bind(this.updateResults));
+ search.on("focus", function () { search.addClass("select2-focused"); });
+ search.on("blur", function () { search.removeClass("select2-focused");});
+
+ this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) {
+ if ($(e.target).closest(".select2-result-selectable").length > 0) {
+ this.highlightUnderEvent(e);
+ this.selectHighlighted(e);
+ }
+ }));
+
+ // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening
+ // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's
+ // dom it will trigger the popup close, which is not what we want
+ this.dropdown.on("click mouseup mousedown", function (e) { e.stopPropagation(); });
+
+ if ($.isFunction(this.opts.initSelection)) {
+ // initialize selection based on the current value of the source element
+ this.initSelection();
+
+ // if the user has provided a function that can set selection based on the value of the source element
+ // we monitor the change event on the element and trigger it, allowing for two way synchronization
+ this.monitorSource();
+ }
+
+ if (opts.maximumInputLength !== null) {
+ this.search.attr("maxlength", opts.maximumInputLength);
+ }
+
+ var disabled = opts.element.prop("disabled");
+ if (disabled === undefined) disabled = false;
+ this.enable(!disabled);
+
+ var readonly = opts.element.prop("readonly");
+ if (readonly === undefined) readonly = false;
+ this.readonly(readonly);
+
+ // Calculate size of scrollbar
+ scrollBarDimensions = scrollBarDimensions || measureScrollbar();
+
+ this.autofocus = opts.element.prop("autofocus")
+ opts.element.prop("autofocus", false);
+ if (this.autofocus) this.focus();
+ },
+
+ // abstract
+ destroy: function () {
+ var element=this.opts.element, select2 = element.data("select2");
+
+ if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }
+
+ if (select2 !== undefined) {
+ select2.container.remove();
+ select2.dropdown.remove();
+ element
+ .removeClass("select2-offscreen")
+ .removeData("select2")
+ .off(".select2")
+ .prop("autofocus", this.autofocus || false);
+ if (this.elementTabIndex) {
+ element.attr({tabindex: this.elementTabIndex});
+ } else {
+ element.removeAttr("tabindex");
+ }
+ element.show();
+ }
+ },
+
+ // abstract
+ optionToData: function(element) {
+ if (element.is("option")) {
+ return {
+ id:element.prop("value"),
+ text:element.text(),
+ element: element.get(),
+ css: element.attr("class"),
+ disabled: element.prop("disabled"),
+ locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true)
+ };
+ } else if (element.is("optgroup")) {
+ return {
+ text:element.attr("label"),
+ children:[],
+ element: element.get(),
+ css: element.attr("class")
+ };
+ }
+ },
+
+ // abstract
+ prepareOpts: function (opts) {
+ var element, select, idKey, ajaxUrl, self = this;
+
+ element = opts.element;
+
+ if (element.get(0).tagName.toLowerCase() === "select") {
+ this.select = select = opts.element;
+ }
+
+ if (select) {
+ // these options are not allowed when attached to a select because they are picked up off the element itself
+ $.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () {
+ if (this in opts) {
+ throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a <select> element.");
+ }
+ });
+ }
+
+ opts = $.extend({}, {
+ populateResults: function(container, results, query) {
+ var populate, data, result, children, id=this.opts.id;
+
+ populate=function(results, container, depth) {
+
+ var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;
+
+ results = opts.sortResults(results, container, query);
+
+ for (i = 0, l = results.length; i < l; i = i + 1) {
+
+ result=results[i];
+
+ disabled = (result.disabled === true);
+ selectable = (!disabled) && (id(result) !== undefined);
+
+ compound=result.children && result.children.length > 0;
+
+ node=$("<li></li>");
+ node.addClass("select2-results-dept-"+depth);
+ node.addClass("select2-result");
+ node.addClass(selectable ? "select2-result-selectable" : "select2-result-unselectable");
+ if (disabled) { node.addClass("select2-disabled"); }
+ if (compound) { node.addClass("select2-result-with-children"); }
+ node.addClass(self.opts.formatResultCssClass(result));
+
+ label=$(document.createElement("div"));
+ label.addClass("select2-result-label");
+
+ formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);
+ if (formatted!==undefined) {
+ label.html(formatted);
+ }
+
+ node.append(label);
+
+ if (compound) {
+
+ innerContainer=$("<ul></ul>");
+ innerContainer.addClass("select2-result-sub");
+ populate(result.children, innerContainer, depth+1);
+ node.append(innerContainer);
+ }
+
+ node.data("select2-data", result);
+ container.append(node);
+ }
+ };
+
+ populate(results, container, 0);
+ }
+ }, $.fn.select2.defaults, opts);
+
+ if (typeof(opts.id) !== "function") {
+ idKey = opts.id;
+ opts.id = function (e) { return e[idKey]; };
+ }
+
+ if ($.isArray(opts.element.data("select2Tags"))) {
+ if ("tags" in opts) {
+ throw "tags specified as both an attribute 'data-select2-tags' and in options of Select2 " + opts.element.attr("id");
+ }
+ opts.tags=opts.element.data("select2Tags");
+ }
+
+ if (select) {
+ opts.query = this.bind(function (query) {
+ var data = { results: [], more: false },
+ term = query.term,
+ children, placeholderOption, process;
+
+ process=function(element, collection) {
+ var group;
+ if (element.is("option")) {
+ if (query.matcher(term, element.text(), element)) {
+ collection.push(self.optionToData(element));
+ }
+ } else if (element.is("optgroup")) {
+ group=self.optionToData(element);
+ element.children().each2(function(i, elm) { process(elm, group.children); });
+ if (group.children.length>0) {
+ collection.push(group);
+ }
+ }
+ };
+
+ children=element.children();
+
+ // ignore the placeholder option if there is one
+ if (this.getPlaceholder() !== undefined && children.length > 0) {
+ placeholderOption = this.getPlaceholderOption();
+ if (placeholderOption) {
+ children=children.not(placeholderOption);
+ }
+ }
+
+ children.each2(function(i, elm) { process(elm, data.results); });
+
+ query.callback(data);
+ });
+ // this is needed because inside val() we construct choices from options and there id is hardcoded
+ opts.id=function(e) { return e.id; };
+ opts.formatResultCssClass = function(data) { return data.css; };
+ } else {
+ if (!("query" in opts)) {
+
+ if ("ajax" in opts) {
+ ajaxUrl = opts.element.data("ajax-url");
+ if (ajaxUrl && ajaxUrl.length > 0) {
+ opts.ajax.url = ajaxUrl;
+ }
+ opts.query = ajax.call(opts.element, opts.ajax);
+ } else if ("data" in opts) {
+ opts.query = local(opts.data);
+ } else if ("tags" in opts) {
+ opts.query = tags(opts.tags);
+ if (opts.createSearchChoice === undefined) {
+ opts.createSearchChoice = function (term) { return {id: term, text: term}; };
+ }
+ if (opts.initSelection === undefined) {
+ opts.initSelection = function (element, callback) {
+ var data = [];
+ $(splitVal(element.val(), opts.separator)).each(function () {
+ var id = this, text = this, tags=opts.tags;
+ if ($.isFunction(tags)) tags=tags();
+ $(tags).each(function() { if (equal(this.id, id)) { text = this.text; return false; } });
+ data.push({id: id, text: text});
+ });
+
+ callback(data);
+ };
+ }
+ }
+ }
+ }
+ if (typeof(opts.query) !== "function") {
+ throw "query function not defined for Select2 " + opts.element.attr("id");
+ }
+
+ return opts;
+ },
+
+ /**
+ * Monitor the original element for changes and update select2 accordingly
+ */
+ // abstract
+ monitorSource: function () {
+ var el = this.opts.element, sync;
+
+ el.on("change.select2", this.bind(function (e) {
+ if (this.opts.element.data("select2-change-triggered") !== true) {
+ this.initSelection();
+ }
+ }));
+
+ sync = this.bind(function () {
+
+ var enabled, readonly, self = this;
+
+ // sync enabled state
+ var disabled = el.prop("disabled");
+ if (disabled === undefined) disabled = false;
+ this.enable(!disabled);
+
+ var readonly = el.prop("readonly");
+ if (readonly === undefined) readonly = false;
+ this.readonly(readonly);
+
+ syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
+ this.container.addClass(evaluate(this.opts.containerCssClass));
+
+ syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);
+ this.dropdown.addClass(evaluate(this.opts.dropdownCssClass));
+
+ });
+
+ // mozilla and IE
+ el.on("propertychange.select2 DOMAttrModified.select2", sync);
+
+
+ // hold onto a reference of the callback to work around a chromium bug
+ if (this.mutationCallback === undefined) {
+ this.mutationCallback = function (mutations) {
+ mutations.forEach(sync);
+ }
+ }
+
+ // safari and chrome
+ if (typeof WebKitMutationObserver !== "undefined") {
+ if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }
+ this.propertyObserver = new WebKitMutationObserver(this.mutationCallback);
+ this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });
+ }
+ },
+
+ // abstract
+ triggerSelect: function(data) {
+ var evt = $.Event("select2-selecting", { val: this.id(data), object: data });
+ this.opts.element.trigger(evt);
+ return !evt.isDefaultPrevented();
+ },
+
+ /**
+ * Triggers the change event on the source element
+ */
+ // abstract
+ triggerChange: function (details) {
+
+ details = details || {};
+ details= $.extend({}, details, { type: "change", val: this.val() });
+ // prevents recursive triggering
+ this.opts.element.data("select2-change-triggered", true);
+ this.opts.element.trigger(details);
+ this.opts.element.data("select2-change-triggered", false);
+
+ // some validation frameworks ignore the change event and listen instead to keyup, click for selects
+ // so here we trigger the click event manually
+ this.opts.element.click();
+
+ // ValidationEngine ignorea the change event and listens instead to blur
+ // so here we trigger the blur event manually if so desired
+ if (this.opts.blurOnChange)
+ this.opts.element.blur();
+ },
+
+ //abstract
+ isInterfaceEnabled: function()
+ {
+ return this.enabledInterface === true;
+ },
+
+ // abstract
+ enableInterface: function() {
+ var enabled = this._enabled && !this._readonly,
+ disabled = !enabled;
+
+ if (enabled === this.enabledInterface) return false;
+
+ this.container.toggleClass("select2-container-disabled", disabled);
+ this.close();
+ this.enabledInterface = enabled;
+
+ return true;
+ },
+
+ // abstract
+ enable: function(enabled) {
+ if (enabled === undefined) enabled = true;
+ if (this._enabled === enabled) return false;
+ this._enabled = enabled;
+
+ this.opts.element.prop("disabled", !enabled);
+ this.enableInterface();
+ return true;
+ },
+
+ // abstract
+ readonly: function(enabled) {
+ if (enabled === undefined) enabled = false;
+ if (this._readonly === enabled) return false;
+ this._readonly = enabled;
+
+ this.opts.element.prop("readonly", enabled);
+ this.enableInterface();
+ return true;
+ },
+
+ // abstract
+ opened: function () {
+ return this.container.hasClass("select2-dropdown-open");
+ },
+
+ // abstract
+ positionDropdown: function() {
+ var $dropdown = this.dropdown,
+ offset = this.container.offset(),
+ height = this.container.outerHeight(false),
+ width = this.container.outerWidth(false),
+ dropHeight = $dropdown.outerHeight(false),
+ viewPortRight = $(window).scrollLeft() + $(window).width(),
+ viewportBottom = $(window).scrollTop() + $(window).height(),
+ dropTop = offset.top + height,
+ dropLeft = offset.left,
+ enoughRoomBelow = dropTop + dropHeight <= viewportBottom,
+ enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(),
+ dropWidth = $dropdown.outerWidth(false),
+ enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight,
+ aboveNow = $dropdown.hasClass("select2-drop-above"),
+ bodyOffset,
+ above,
+ css,
+ resultsListNode;
+
+ if (this.opts.dropdownAutoWidth) {
+ resultsListNode = $('.select2-results', $dropdown)[0];
+ $dropdown.addClass('select2-drop-auto-width');
+ $dropdown.css('width', '');
+ // Add scrollbar width to dropdown if vertical scrollbar is present
+ dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);
+ dropWidth > width ? width = dropWidth : dropWidth = width;
+ enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;
+ }
+ else {
+ this.container.removeClass('select2-drop-auto-width');
+ }
+
+ //console.log("below/ droptop:", dropTop, "dropHeight", dropHeight, "sum", (dropTop+dropHeight)+" viewport bottom", viewportBottom, "enough?", enoughRoomBelow);
+ //console.log("above/ offset.top", offset.top, "dropHeight", dropHeight, "top", (offset.top-dropHeight), "scrollTop", this.body().scrollTop(), "enough?", enoughRoomAbove);
+
+ // fix positioning when body has an offset and is not position: static
+ if (this.body().css('position') !== 'static') {
+ bodyOffset = this.body().offset();
+ dropTop -= bodyOffset.top;
+ dropLeft -= bodyOffset.left;
+ }
+
+ // always prefer the current above/below alignment, unless there is not enough room
+ if (aboveNow) {
+ above = true;
+ if (!enoughRoomAbove && enoughRoomBelow) above = false;
+ } else {
+ above = false;
+ if (!enoughRoomBelow && enoughRoomAbove) above = true;
+ }
+
+ if (!enoughRoomOnRight) {
+ dropLeft = offset.left + width - dropWidth;
+ }
+
+ if (above) {
+ dropTop = offset.top - dropHeight;
+ this.container.addClass("select2-drop-above");
+ $dropdown.addClass("select2-drop-above");
+ }
+ else {
+ this.container.removeClass("select2-drop-above");
+ $dropdown.removeClass("select2-drop-above");
+ }
+
+ css = $.extend({
+ top: dropTop,
+ left: dropLeft,
+ width: width
+ }, evaluate(this.opts.dropdownCss));
+
+ $dropdown.css(css);
+ },
+
+ // abstract
+ shouldOpen: function() {
+ var event;
+
+ if (this.opened()) return false;
+
+ if (this._enabled === false || this._readonly === true) return false;
+
+ event = $.Event("select2-opening");
+ this.opts.element.trigger(event);
+ return !event.isDefaultPrevented();
+ },
+
+ // abstract
+ clearDropdownAlignmentPreference: function() {
+ // clear the classes used to figure out the preference of where the dropdown should be opened
+ this.container.removeClass("select2-drop-above");
+ this.dropdown.removeClass("select2-drop-above");
+ },
+
+ /**
+ * Opens the dropdown
+ *
+ * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,
+ * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().
+ */
+ // abstract
+ open: function () {
+
+ if (!this.shouldOpen()) return false;
+
+ this.opening();
+
+ return true;
+ },
+
+ /**
+ * Performs the opening of the dropdown
+ */
+ // abstract
+ opening: function() {
+ var cid = this.containerId,
+ scroll = "scroll." + cid,
+ resize = "resize."+cid,
+ orient = "orientationchange."+cid,
+ mask, maskCss;
+
+ this.container.addClass("select2-dropdown-open").addClass("select2-container-active");
+
+ this.clearDropdownAlignmentPreference();
+
+ if(this.dropdown[0] !== this.body().children().last()[0]) {
+ this.dropdown.detach().appendTo(this.body());
+ }
+
+ // create the dropdown mask if doesnt already exist
+ mask = $("#select2-drop-mask");
+ if (mask.length == 0) {
+ mask = $(document.createElement("div"));
+ mask.attr("id","select2-drop-mask").attr("class","select2-drop-mask");
+ mask.hide();
+ mask.appendTo(this.body());
+ mask.on("mousedown touchstart click", function (e) {
+ var dropdown = $("#select2-drop"), self;
+ if (dropdown.length > 0) {
+ self=dropdown.data("select2");
+ if (self.opts.selectOnBlur) {
+ self.selectHighlighted({noFocus: true});
+ }
+ self.close();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ });
+ }
+
+ // ensure the mask is always right before the dropdown
+ if (this.dropdown.prev()[0] !== mask[0]) {
+ this.dropdown.before(mask);
+ }
+
+ // move the global id to the correct dropdown
+ $("#select2-drop").removeAttr("id");
+ this.dropdown.attr("id", "select2-drop");
+
+ // show the elements
+ maskCss=_makeMaskCss();
+
+ mask.css(maskCss).show();
+
+ this.dropdown.show();
+ this.positionDropdown();
+
+ this.dropdown.addClass("select2-drop-active");
+
+ // attach listeners to events that can change the position of the container and thus require
+ // the position of the dropdown to be updated as well so it does not come unglued from the container
+ var that = this;
+ this.container.parents().add(window).each(function () {
+ $(this).on(resize+" "+scroll+" "+orient, function (e) {
+ var maskCss=_makeMaskCss();
+ $("#select2-drop-mask").css(maskCss);
+ that.positionDropdown();
+ });
+ });
+
+ function _makeMaskCss() {
+ return {
+ width : Math.max(document.documentElement.scrollWidth, $(window).width()),
+ height : Math.max(document.documentElement.scrollHeight, $(window).height())
+ }
+ }
+ },
+
+ // abstract
+ close: function () {
+ if (!this.opened()) return;
+
+ var cid = this.containerId,
+ scroll = "scroll." + cid,
+ resize = "resize."+cid,
+ orient = "orientationchange."+cid;
+
+ // unbind event listeners
+ this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });
+
+ this.clearDropdownAlignmentPreference();
+
+ $("#select2-drop-mask").hide();
+ this.dropdown.removeAttr("id"); // only the active dropdown has the select2-drop id
+ this.dropdown.hide();
+ this.container.removeClass("select2-dropdown-open");
+ this.results.empty();
+
+
+ this.clearSearch();
+ this.search.removeClass("select2-active");
+ this.opts.element.trigger($.Event("select2-close"));
+ },
+
+ /**
+ * Opens control, sets input value, and updates results.
+ */
+ // abstract
+ externalSearch: function (term) {
+ this.open();
+ this.search.val(term);
+ this.updateResults(false);
+ },
+
+ // abstract
+ clearSearch: function () {
+
+ },
+
+ //abstract
+ getMaximumSelectionSize: function() {
+ return evaluate(this.opts.maximumSelectionSize);
+ },
+
+ // abstract
+ ensureHighlightVisible: function () {
+ var results = this.results, children, index, child, hb, rb, y, more;
+
+ index = this.highlight();
+
+ if (index < 0) return;
+
+ if (index == 0) {
+
+ // if the first element is highlighted scroll all the way to the top,
+ // that way any unselectable headers above it will also be scrolled
+ // into view
+
+ results.scrollTop(0);
+ return;
+ }
+
+ children = this.findHighlightableChoices().find('.select2-result-label');
+
+ child = $(children[index]);
+
+ hb = child.offset().top + child.outerHeight(true);
+
+ // if this is the last child lets also make sure select2-more-results is visible
+ if (index === children.length - 1) {
+ more = results.find("li.select2-more-results");
+ if (more.length > 0) {
+ hb = more.offset().top + more.outerHeight(true);
+ }
+ }
+
+ rb = results.offset().top + results.outerHeight(true);
+ if (hb > rb) {
+ results.scrollTop(results.scrollTop() + (hb - rb));
+ }
+ y = child.offset().top - results.offset().top;
+
+ // make sure the top of the element is visible
+ if (y < 0 && child.css('display') != 'none' ) {
+ results.scrollTop(results.scrollTop() + y); // y is negative
+ }
+ },
+
+ // abstract
+ findHighlightableChoices: function() {
+ return this.results.find(".select2-result-selectable:not(.select2-selected):not(.select2-disabled)");
+ },
+
+ // abstract
+ moveHighlight: function (delta) {
+ var choices = this.findHighlightableChoices(),
+ index = this.highlight();
+
+ while (index > -1 && index < choices.length) {
+ index += delta;
+ var choice = $(choices[index]);
+ if (choice.hasClass("select2-result-selectable") && !choice.hasClass("select2-disabled") && !choice.hasClass("select2-selected")) {
+ this.highlight(index);
+ break;
+ }
+ }
+ },
+
+ // abstract
+ highlight: function (index) {
+ var choices = this.findHighlightableChoices(),
+ choice,
+ data;
+
+ if (arguments.length === 0) {
+ return indexOf(choices.filter(".select2-highlighted")[0], choices.get());
+ }
+
+ if (index >= choices.length) index = choices.length - 1;
+ if (index < 0) index = 0;
+
+ this.results.find(".select2-highlighted").removeClass("select2-highlighted");
+
+ choice = $(choices[index]);
+ choice.addClass("select2-highlighted");
+
+ this.ensureHighlightVisible();
+
+ data = choice.data("select2-data");
+ if (data) {
+ this.opts.element.trigger({ type: "select2-highlight", val: this.id(data), choice: data });
+ }
+ },
+
+ // abstract
+ countSelectableResults: function() {
+ return this.findHighlightableChoices().length;
+ },
+
+ // abstract
+ highlightUnderEvent: function (event) {
+ var el = $(event.target).closest(".select2-result-selectable");
+ if (el.length > 0 && !el.is(".select2-highlighted")) {
+ var choices = this.findHighlightableChoices();
+ this.highlight(choices.index(el));
+ } else if (el.length == 0) {
+ // if we are over an unselectable item remove al highlights
+ this.results.find(".select2-highlighted").removeClass("select2-highlighted");
+ }
+ },
+
+ // abstract
+ loadMoreIfNeeded: function () {
+ var results = this.results,
+ more = results.find("li.select2-more-results"),
+ below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible
+ offset = -1, // index of first element without data
+ page = this.resultsPage + 1,
+ self=this,
+ term=this.search.val(),
+ context=this.context;
+
+ if (more.length === 0) return;
+ below = more.offset().top - results.offset().top - results.height();
+
+ if (below <= this.opts.loadMorePadding) {
+ more.addClass("select2-active");
+ this.opts.query({
+ element: this.opts.element,
+ term: term,
+ page: page,
+ context: context,
+ matcher: this.opts.matcher,
+ callback: this.bind(function (data) {
+
+ // ignore a response if the select2 has been closed before it was received
+ if (!self.opened()) return;
+
+
+ self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});
+ self.postprocessResults(data, false, false);
+
+ if (data.more===true) {
+ more.detach().appendTo(results).text(self.opts.formatLoadMore(page+1));
+ window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
+ } else {
+ more.remove();
+ }
+ self.positionDropdown();
+ self.resultsPage = page;
+ self.context = data.context;
+ })});
+ }
+ },
+
+ /**
+ * Default tokenizer function which does nothing
+ */
+ tokenize: function() {
+
+ },
+
+ /**
+ * @param initial whether or not this is the call to this method right after the dropdown has been opened
+ */
+ // abstract
+ updateResults: function (initial) {
+ var search = this.search,
+ results = this.results,
+ opts = this.opts,
+ data,
+ self = this,
+ input,
+ term = search.val(),
+ lastTerm=$.data(this.container, "select2-last-term");
+
+ // prevent duplicate queries against the same term
+ if (initial !== true && lastTerm && equal(term, lastTerm)) return;
+
+ $.data(this.container, "select2-last-term", term);
+
+ // if the search is currently hidden we do not alter the results
+ if (initial !== true && (this.showSearchInput === false || !this.opened())) {
+ return;
+ }
+
+ function postRender() {
+ search.removeClass("select2-active");
+ self.positionDropdown();
+ }
+
+ function render(html) {
+ results.html(html);
+ postRender();
+ }
+
+ var maxSelSize = this.getMaximumSelectionSize();
+ if (maxSelSize >=1) {
+ data = this.data();
+ if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, "formatSelectionTooBig")) {
+ render("<li class='select2-selection-limit'>" + opts.formatSelectionTooBig(maxSelSize) + "</li>");
+ return;
+ }
+ }
+
+ if (search.val().length < opts.minimumInputLength) {
+ if (checkFormatter(opts.formatInputTooShort, "formatInputTooShort")) {
+ render("<li class='select2-no-results'>" + opts.formatInputTooShort(search.val(), opts.minimumInputLength) + "</li>");
+ } else {
+ render("");
+ }
+ if (initial && this.showSearch) this.showSearch(true);
+ return;
+ }
+
+ if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {
+ if (checkFormatter(opts.formatInputTooLong, "formatInputTooLong")) {
+ render("<li class='select2-no-results'>" + opts.formatInputTooLong(search.val(), opts.maximumInputLength) + "</li>");
+ } else {
+ render("");
+ }
+ return;
+ }
+
+ if (opts.formatSearching && this.findHighlightableChoices().length === 0) {
+ render("<li class='select2-searching'>" + opts.formatSearching() + "</li>");
+ }
+
+ search.addClass("select2-active");
+
+ // give the tokenizer a chance to pre-process the input
+ input = this.tokenize();
+ if (input != undefined && input != null) {
+ search.val(input);
+ }
+
+ this.resultsPage = 1;
+
+ opts.query({
+ element: opts.element,
+ term: search.val(),
+ page: this.resultsPage,
+ context: null,
+ matcher: opts.matcher,
+ callback: this.bind(function (data) {
+ var def; // default choice
+
+ // ignore a response if the select2 has been closed before it was received
+ if (!this.opened()) {
+ this.search.removeClass("select2-active");
+ return;
+ }
+
+ // save context, if any
+ this.context = (data.context===undefined) ? null : data.context;
+ // create a default choice and prepend it to the list
+ if (this.opts.createSearchChoice && search.val() !== "") {
+ def = this.opts.createSearchChoice.call(self, search.val(), data.results);
+ if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {
+ if ($(data.results).filter(
+ function () {
+ return equal(self.id(this), self.id(def));
+ }).length === 0) {
+ data.results.unshift(def);
+ }
+ }
+ }
+
+ if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, "formatNoMatches")) {
+ render("<li class='select2-no-results'>" + opts.formatNoMatches(search.val()) + "</li>");
+ return;
+ }
+
+ results.empty();
+ self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});
+
+ if (data.more === true && checkFormatter(opts.formatLoadMore, "formatLoadMore")) {
+ results.append("<li class='select2-more-results'>" + self.opts.escapeMarkup(opts.formatLoadMore(this.resultsPage)) + "</li>");
+ window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
+ }
+
+ this.postprocessResults(data, initial);
+
+ postRender();
+
+ this.opts.element.trigger({ type: "select2-loaded", items: data });
+ })});
+ },
+
+ // abstract
+ cancel: function () {
+ this.close();
+ },
+
+ // abstract
+ blur: function () {
+ // if selectOnBlur == true, select the currently highlighted option
+ if (this.opts.selectOnBlur)
+ this.selectHighlighted({noFocus: true});
+
+ this.close();
+ this.container.removeClass("select2-container-active");
+ // synonymous to .is(':focus'), which is available in jquery >= 1.6
+ if (this.search[0] === document.activeElement) { this.search.blur(); }
+ this.clearSearch();
+ this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
+ },
+
+ // abstract
+ focusSearch: function () {
+ focus(this.search);
+ },
+
+ // abstract
+ selectHighlighted: function (options) {
+ var index=this.highlight(),
+ highlighted=this.results.find(".select2-highlighted"),
+ data = highlighted.closest('.select2-result').data("select2-data");
+
+ if (data) {
+ this.highlight(index);
+ this.onSelect(data, options);
+ } else if (options && options.noFocus) {
+ this.close();
+ }
+ },
+
+ // abstract
+ getPlaceholder: function () {
+ var placeholderOption;
+ return this.opts.element.attr("placeholder") ||
+ this.opts.element.attr("data-placeholder") || // jquery 1.4 compat
+ this.opts.element.data("placeholder") ||
+ this.opts.placeholder ||
+ ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);
+ },
+
+ // abstract
+ getPlaceholderOption: function() {
+ if (this.select) {
+ var firstOption = this.select.children().first();
+ if (this.opts.placeholderOption !== undefined ) {
+ //Determine the placeholder option based on the specified placeholderOption setting
+ return (this.opts.placeholderOption === "first" && firstOption) ||
+ (typeof this.opts.placeholderOption === "function" && this.opts.placeholderOption(this.select));
+ } else if (firstOption.text() === "" && firstOption.val() === "") {
+ //No explicit placeholder option specified, use the first if it's blank
+ return firstOption;
+ }
+ }
+ },
+
+ /**
+ * Get the desired width for the container element. This is
+ * derived first from option `width` passed to select2, then
+ * the inline 'style' on the original element, and finally
+ * falls back to the jQuery calculated element width.
+ */
+ // abstract
+ initContainerWidth: function () {
+ function resolveContainerWidth() {
+ var style, attrs, matches, i, l;
+
+ if (this.opts.width === "off") {
+ return null;
+ } else if (this.opts.width === "element"){
+ return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';
+ } else if (this.opts.width === "copy" || this.opts.width === "resolve") {
+ // check if there is inline style on the element that contains width
+ style = this.opts.element.attr('style');
+ if (style !== undefined) {
+ attrs = style.split(';');
+ for (i = 0, l = attrs.length; i < l; i = i + 1) {
+ matches = attrs[i].replace(/\s/g, '')
+ .match(/width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);
+ if (matches !== null && matches.length >= 1)
+ return matches[1];
+ }
+ }
+
+ if (this.opts.width === "resolve") {
+ // next check if css('width') can resolve a width that is percent based, this is sometimes possible
+ // when attached to input type=hidden or elements hidden via css
+ style = this.opts.element.css('width');
+ if (style.indexOf("%") > 0) return style;
+
+ // finally, fallback on the calculated width of the element
+ return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');
+ }
+
+ return null;
+ } else if ($.isFunction(this.opts.width)) {
+ return this.opts.width();
+ } else {
+ return this.opts.width;
+ }
+ };
+
+ var width = resolveContainerWidth.call(this);
+ if (width !== null) {
+ this.container.css("width", width);
+ }
+ }
+ });
+
+ SingleSelect2 = clazz(AbstractSelect2, {
+
+ // single
+
+ createContainer: function () {
+ var container = $(document.createElement("div")).attr({
+ "class": "select2-container"
+ }).html([
+ "<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>",
+ " <span class='select2-chosen'> </span><abbr class='select2-search-choice-close'></abbr>",
+ " <span class='select2-arrow'><b></b></span>",
+ "</a>",
+ "<input class='select2-focusser select2-offscreen' type='text'/>",
+ "<div class='select2-drop select2-display-none'>",
+ " <div class='select2-search'>",
+ " <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'/>",
+ " </div>",
+ " <ul class='select2-results'>",
+ " </ul>",
+ "</div>"].join(""));
+ return container;
+ },
+
+ // single
+ enableInterface: function() {
+ if (this.parent.enableInterface.apply(this, arguments)) {
+ this.focusser.prop("disabled", !this.isInterfaceEnabled());
+ }
+ },
+
+ // single
+ opening: function () {
+ var el, range, len;
+
+ if (this.opts.minimumResultsForSearch >= 0) {
+ this.showSearch(true);
+ }
+
+ this.parent.opening.apply(this, arguments);
+
+ if (this.showSearchInput !== false) {
+ // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range
+ // all other browsers handle this just fine
+
+ this.search.val(this.focusser.val());
+ }
+ this.search.focus();
+ // move the cursor to the end after focussing, otherwise it will be at the beginning and
+ // new text will appear *before* focusser.val()
+ el = this.search.get(0);
+ if (el.createTextRange) {
+ range = el.createTextRange();
+ range.collapse(false);
+ range.select();
+ } else if (el.setSelectionRange) {
+ len = this.search.val().length;
+ el.setSelectionRange(len, len);
+ }
+
+ this.focusser.prop("disabled", true).val("");
+ this.updateResults(true);
+ this.opts.element.trigger($.Event("select2-open"));
+ },
+
+ // single
+ close: function () {
+ if (!this.opened()) return;
+ this.parent.close.apply(this, arguments);
+ this.focusser.removeAttr("disabled");
+ this.focusser.focus();
+ },
+
+ // single
+ focus: function () {
+ if (this.opened()) {
+ this.close();
+ } else {
+ this.focusser.removeAttr("disabled");
+ this.focusser.focus();
+ }
+ },
+
+ // single
+ isFocused: function () {
+ return this.container.hasClass("select2-container-active");
+ },
+
+ // single
+ cancel: function () {
+ this.parent.cancel.apply(this, arguments);
+ this.focusser.removeAttr("disabled");
+ this.focusser.focus();
+ },
+
+ // single
+ initContainer: function () {
+
+ var selection,
+ container = this.container,
+ dropdown = this.dropdown;
+
+ if (this.opts.minimumResultsForSearch < 0) {
+ this.showSearch(false);
+ } else {
+ this.showSearch(true);
+ }
+
+ this.selection = selection = container.find(".select2-choice");
+
+ this.focusser = container.find(".select2-focusser");
+
+ // rewrite labels from original element to focusser
+ this.focusser.attr("id", "s2id_autogen"+nextUid());
+
+ $("label[for='" + this.opts.element.attr("id") + "']")
+ .attr('for', this.focusser.attr('id'));
+
+ this.focusser.attr("tabindex", this.elementTabIndex);
+
+ this.search.on("keydown", this.bind(function (e) {
+ if (!this.isInterfaceEnabled()) return;
+
+ if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
+ // prevent the page from scrolling
+ killEvent(e);
+ return;
+ }
+
+ switch (e.which) {
+ case KEY.UP:
+ case KEY.DOWN:
+ this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
+ killEvent(e);
+ return;
+ case KEY.ENTER:
+ this.selectHighlighted();
+ killEvent(e);
+ return;
+ case KEY.TAB:
+ this.selectHighlighted({noFocus: true});
+ return;
+ case KEY.ESC:
+ this.cancel(e);
+ killEvent(e);
+ return;
+ }
+ }));
+
+ this.search.on("blur", this.bind(function(e) {
+ // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.
+ // without this the search field loses focus which is annoying
+ if (document.activeElement === this.body().get(0)) {
+ window.setTimeout(this.bind(function() {
+ this.search.focus();
+ }), 0);
+ }
+ }));
+
+ this.focusser.on("keydown", this.bind(function (e) {
+ if (!this.isInterfaceEnabled()) return;
+
+ if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {
+ return;
+ }
+
+ if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {
+ killEvent(e);
+ return;
+ }
+
+ if (e.which == KEY.DOWN || e.which == KEY.UP
+ || (e.which == KEY.ENTER && this.opts.openOnEnter)) {
+
+ if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;
+
+ this.open();
+ killEvent(e);
+ return;
+ }
+
+ if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {
+ if (this.opts.allowClear) {
+ this.clear();
+ }
+ killEvent(e);
+ return;
+ }
+ }));
+
+
+ installKeyUpChangeEvent(this.focusser);
+ this.focusser.on("keyup-change input", this.bind(function(e) {
+ if (this.opts.minimumResultsForSearch >= 0) {
+ e.stopPropagation();
+ if (this.opened()) return;
+ this.open();
+ }
+ }));
+
+ selection.on("mousedown", "abbr", this.bind(function (e) {
+ if (!this.isInterfaceEnabled()) return;
+ this.clear();
+ killEventImmediately(e);
+ this.close();
+ this.selection.focus();
+ }));
+
+ selection.on("mousedown", this.bind(function (e) {
+
+ if (!this.container.hasClass("select2-container-active")) {
+ this.opts.element.trigger($.Event("select2-focus"));
+ }
+
+ if (this.opened()) {
+ this.close();
+ } else if (this.isInterfaceEnabled()) {
+ this.open();
+ }
+
+ killEvent(e);
+ }));
+
+ dropdown.on("mousedown", this.bind(function() { this.search.focus(); }));
+
+ selection.on("focus", this.bind(function(e) {
+ killEvent(e);
+ }));
+
+ this.focusser.on("focus", this.bind(function(){
+ if (!this.container.hasClass("select2-container-active")) {
+ this.opts.element.trigger($.Event("select2-focus"));
+ }
+ this.container.addClass("select2-container-active");
+ })).on("blur", this.bind(function() {
+ if (!this.opened()) {
+ this.container.removeClass("select2-container-active");
+ this.opts.element.trigger($.Event("select2-blur"));
+ }
+ }));
+ this.search.on("focus", this.bind(function(){
+ if (!this.container.hasClass("select2-container-active")) {
+ this.opts.element.trigger($.Event("select2-focus"));
+ }
+ this.container.addClass("select2-container-active");
+ }));
+
+ this.initContainerWidth();
+ this.opts.element.addClass("select2-offscreen");
+ this.setPlaceholder();
+
+ },
+
+ // single
+ clear: function(triggerChange) {
+ var data=this.selection.data("select2-data");
+ if (data) { // guard against queued quick consecutive clicks
+ var placeholderOption = this.getPlaceholderOption();
+ this.opts.element.val(placeholderOption ? placeholderOption.val() : "");
+ this.selection.find(".select2-chosen").empty();
+ this.selection.removeData("select2-data");
+ this.setPlaceholder();
+
+ if (triggerChange !== false){
+ this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data });
+ this.triggerChange({removed:data});
+ }
+ }
+ },
+
+ /**
+ * Sets selection based on source element's value
+ */
+ // single
+ initSelection: function () {
+ var selected;
+ if (this.isPlaceholderOptionSelected()) {
+ this.updateSelection([]);
+ this.close();
+ this.setPlaceholder();
+ } else {
+ var self = this;
+ this.opts.initSelection.call(null, this.opts.element, function(selected){
+ if (selected !== undefined && selected !== null) {
+ self.updateSelection(selected);
+ self.close();
+ self.setPlaceholder();
+ }
+ });
+ }
+ },
+
+ isPlaceholderOptionSelected: function() {
+ var placeholderOption;
+ return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.is(':selected')) ||
+ (this.opts.element.val() === "") ||
+ (this.opts.element.val() === undefined) ||
+ (this.opts.element.val() === null);
+ },
+
+ // single
+ prepareOpts: function () {
+ var opts = this.parent.prepareOpts.apply(this, arguments),
+ self=this;
+
+ if (opts.element.get(0).tagName.toLowerCase() === "select") {
+ // install the selection initializer
+ opts.initSelection = function (element, callback) {
+ var selected = element.find(":selected");
+ // a single select box always has a value, no need to null check 'selected'
+ callback(self.optionToData(selected));
+ };
+ } else if ("data" in opts) {
+ // install default initSelection when applied to hidden input and data is local
+ opts.initSelection = opts.initSelection || function (element, callback) {
+ var id = element.val();
+ //search in data by id, storing the actual matching item
+ var match = null;
+ opts.query({
+ matcher: function(term, text, el){
+ var is_match = equal(id, opts.id(el));
+ if (is_match) {
+ match = el;
+ }
+ return is_match;
+ },
+ callback: !$.isFunction(callback) ? $.noop : function() {
+ callback(match);
+ }
+ });
+ };
+ }
+
+ return opts;
+ },
+
+ // single
+ getPlaceholder: function() {
+ // if a placeholder is specified on a single select without a valid placeholder option ignore it
+ if (this.select) {
+ if (this.getPlaceholderOption() === undefined) {
+ return undefined;
+ }
+ }
+
+ return this.parent.getPlaceholder.apply(this, arguments);
+ },
+
+ // single
+ setPlaceholder: function () {
+ var placeholder = this.getPlaceholder();
+
+ if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {
+
+ // check for a placeholder option if attached to a select
+ if (this.select && this.getPlaceholderOption() === undefined) return;
+
+ this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder));
+
+ this.selection.addClass("select2-default");
+
+ this.container.removeClass("select2-allowclear");
+ }
+ },
+
+ // single
+ postprocessResults: function (data, initial, noHighlightUpdate) {
+ var selected = 0, self = this, showSearchInput = true;
+
+ // find the selected element in the result list
+
+ this.findHighlightableChoices().each2(function (i, elm) {
+ if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) {
+ selected = i;
+ return false;
+ }
+ });
+
+ // and highlight it
+ if (noHighlightUpdate !== false) {
+ if (initial === true && selected >= 0) {
+ this.highlight(selected);
+ } else {
+ this.highlight(0);
+ }
+ }
+
+ // hide the search box if this is the first we got the results and there are enough of them for search
+
+ if (initial === true) {
+ var min = this.opts.minimumResultsForSearch;
+ if (min >= 0) {
+ this.showSearch(countResults(data.results) >= min);
+ }
+ }
+ },
+
+ // single
+ showSearch: function(showSearchInput) {
+ if (this.showSearchInput === showSearchInput) return;
+
+ this.showSearchInput = showSearchInput;
+
+ this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput);
+ this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput);
+ //add "select2-with-searchbox" to the container if search box is shown
+ $(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput);
+ },
+
+ // single
+ onSelect: function (data, options) {
+
+ if (!this.triggerSelect(data)) { return; }
+
+ var old = this.opts.element.val(),
+ oldData = this.data();
+
+ this.opts.element.val(this.id(data));
+ this.updateSelection(data);
+
+ this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data });
+
+ this.close();
+
+ if (!options || !options.noFocus)
+ this.selection.focus();
+
+ if (!equal(old, this.id(data))) { this.triggerChange({added:data,removed:oldData}); }
+ },
+
+ // single
+ updateSelection: function (data) {
+
+ var container=this.selection.find(".select2-chosen"), formatted, cssClass;
+
+ this.selection.data("select2-data", data);
+
+ container.empty();
+ formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);
+ if (formatted !== undefined) {
+ container.append(formatted);
+ }
+ cssClass=this.opts.formatSelectionCssClass(data, container);
+ if (cssClass !== undefined) {
+ container.addClass(cssClass);
+ }
+
+ this.selection.removeClass("select2-default");
+
+ if (this.opts.allowClear && this.getPlaceholder() !== undefined) {
+ this.container.addClass("select2-allowclear");
+ }
+ },
+
+ // single
+ val: function () {
+ var val,
+ triggerChange = false,
+ data = null,
+ self = this,
+ oldData = this.data();
+
+ if (arguments.length === 0) {
+ return this.opts.element.val();
+ }
+
+ val = arguments[0];
+
+ if (arguments.length > 1) {
+ triggerChange = arguments[1];
+ }
+
+ if (this.select) {
+ this.select
+ .val(val)
+ .find(":selected").each2(function (i, elm) {
+ data = self.optionToData(elm);
+ return false;
+ });
+ this.updateSelection(data);
+ this.setPlaceholder();
+ if (triggerChange) {
+ this.triggerChange({added: data, removed:oldData});
+ }
+ } else {
+ // val is an id. !val is true for [undefined,null,'',0] - 0 is legal
+ if (!val && val !== 0) {
+ this.clear(triggerChange);
+ return;
+ }
+ if (this.opts.initSelection === undefined) {
+ throw new Error("cannot call val() if initSelection() is not defined");
+ }
+ this.opts.element.val(val);
+ this.opts.initSelection(this.opts.element, function(data){
+ self.opts.element.val(!data ? "" : self.id(data));
+ self.updateSelection(data);
+ self.setPlaceholder();
+ if (triggerChange) {
+ self.triggerChange({added: data, removed:oldData});
+ }
+ });
+ }
+ },
+
+ // single
+ clearSearch: function () {
+ this.search.val("");
+ this.focusser.val("");
+ },
+
+ // single
+ data: function(value, triggerChange) {
+ var data;
+
+ if (arguments.length === 0) {
+ data = this.selection.data("select2-data");
+ if (data == undefined) data = null;
+ return data;
+ } else {
+ if (!value || value === "") {
+ this.clear(triggerChange);
+ } else {
+ data = this.data();
+ this.opts.element.val(!value ? "" : this.id(value));
+ this.updateSelection(value);
+ if (triggerChange) {
+ this.triggerChange({added: value, removed:data});
+ }
+ }
+ }
+ }
+ });
+
+ MultiSelect2 = clazz(AbstractSelect2, {
+
+ // multi
+ createContainer: function () {
+ var container = $(document.createElement("div")).attr({
+ "class": "select2-container select2-container-multi"
+ }).html([
+ "<ul class='select2-choices'>",
+ " <li class='select2-search-field'>",
+ " <input type='text' autocomplete='off' autocorrect='off' autocapitilize='off' spellcheck='false' class='select2-input'>",
+ " </li>",
+ "</ul>",
+ "<div class='select2-drop select2-drop-multi select2-display-none'>",
+ " <ul class='select2-results'>",
+ " </ul>",
+ "</div>"].join(""));
+ return container;
+ },
+
+ // multi
+ prepareOpts: function () {
+ var opts = this.parent.prepareOpts.apply(this, arguments),
+ self=this;
+
+ // TODO validate placeholder is a string if specified
+
+ if (opts.element.get(0).tagName.toLowerCase() === "select") {
+ // install sthe selection initializer
+ opts.initSelection = function (element, callback) {
+
+ var data = [];
+
+ element.find(":selected").each2(function (i, elm) {
+ data.push(self.optionToData(elm));
+ });
+ callback(data);
+ };
+ } else if ("data" in opts) {
+ // install default initSelection when applied to hidden input and data is local
+ opts.initSelection = opts.initSelection || function (element, callback) {
+ var ids = splitVal(element.val(), opts.separator);
+ //search in data by array of ids, storing matching items in a list
+ var matches = [];
+ opts.query({
+ matcher: function(term, text, el){
+ var is_match = $.grep(ids, function(id) {
+ return equal(id, opts.id(el));
+ }).length;
+ if (is_match) {
+ matches.push(el);
+ }
+ return is_match;
+ },
+ callback: !$.isFunction(callback) ? $.noop : function() {
+ // reorder matches based on the order they appear in the ids array because right now
+ // they are in the order in which they appear in data array
+ var ordered = [];
+ for (var i = 0; i < ids.length; i++) {
+ var id = ids[i];
+ for (var j = 0; j < matches.length; j++) {
+ var match = matches[j];
+ if (equal(id, opts.id(match))) {
+ ordered.push(match);
+ matches.splice(j, 1);
+ break;
+ }
+ }
+ }
+ callback(ordered);
+ }
+ });
+ };
+ }
+
+ return opts;
+ },
+
+ selectChoice: function (choice) {
+
+ var selected = this.container.find(".select2-search-choice-focus");
+ if (selected.length && choice && choice[0] == selected[0]) {
+
+ } else {
+ if (selected.length) {
+ this.opts.element.trigger("choice-deselected", selected);
+ }
+ selected.removeClass("select2-search-choice-focus");
+ if (choice && choice.length) {
+ this.close();
+ choice.addClass("select2-search-choice-focus");
+ this.opts.element.trigger("choice-selected", choice);
+ }
+ }
+ },
+
+ // multi
+ initContainer: function () {
+
+ var selector = ".select2-choices", selection;
+
+ this.searchContainer = this.container.find(".select2-search-field");
+ this.selection = selection = this.container.find(selector);
+
+ var _this = this;
+ this.selection.on("mousedown", ".select2-search-choice", function (e) {
+ //killEvent(e);
+ _this.search[0].focus();
+ _this.selectChoice($(this));
+ })
+
+ // rewrite labels from original element to focusser
+ this.search.attr("id", "s2id_autogen"+nextUid());
+ $("label[for='" + this.opts.element.attr("id") + "']")
+ .attr('for', this.search.attr('id'));
+
+ this.search.on("input paste", this.bind(function() {
+ if (!this.isInterfaceEnabled()) return;
+ if (!this.opened()) {
+ this.open();
+ }
+ }));
+
+ this.search.attr("tabindex", this.elementTabIndex);
+
+ this.keydowns = 0;
+ this.search.on("keydown", this.bind(function (e) {
+ if (!this.isInterfaceEnabled()) return;
+
+ ++this.keydowns;
+ var selected = selection.find(".select2-search-choice-focus");
+ var prev = selected.prev(".select2-search-choice:not(.select2-locked)");
+ var next = selected.next(".select2-search-choice:not(.select2-locked)");
+ var pos = getCursorInfo(this.search);
+
+ if (selected.length &&
+ (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {
+ var selectedChoice = selected;
+ if (e.which == KEY.LEFT && prev.length) {
+ selectedChoice = prev;
+ }
+ else if (e.which == KEY.RIGHT) {
+ selectedChoice = next.length ? next : null;
+ }
+ else if (e.which === KEY.BACKSPACE) {
+ this.unselect(selected.first());
+ this.search.width(10);
+ selectedChoice = prev.length ? prev : next;
+ } else if (e.which == KEY.DELETE) {
+ this.unselect(selected.first());
+ this.search.width(10);
+ selectedChoice = next.length ? next : null;
+ } else if (e.which == KEY.ENTER) {
+ selectedChoice = null;
+ }
+
+ this.selectChoice(selectedChoice);
+ killEvent(e);
+ if (!selectedChoice || !selectedChoice.length) {
+ this.open();
+ }
+ return;
+ } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)
+ || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {
+
+ this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last());
+ killEvent(e);
+ return;
+ } else {
+ this.selectChoice(null);
+ }
+
+ if (this.opened()) {
+ switch (e.which) {
+ case KEY.UP:
+ case KEY.DOWN:
+ this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
+ killEvent(e);
+ return;
+ case KEY.ENTER:
+ this.selectHighlighted();
+ killEvent(e);
+ return;
+ case KEY.TAB:
+ this.selectHighlighted({noFocus:true});
+ this.close();
+ return;
+ case KEY.ESC:
+ this.cancel(e);
+ killEvent(e);
+ return;
+ }
+ }
+
+ if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)
+ || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {
+ return;
+ }
+
+ if (e.which === KEY.ENTER) {
+ if (this.opts.openOnEnter === false) {
+ return;
+ } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {
+ return;
+ }
+ }
+
+ this.open();
+
+ if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
+ // prevent the page from scrolling
+ killEvent(e);
+ }
+
+ if (e.which === KEY.ENTER) {
+ // prevent form from being submitted
+ killEvent(e);
+ }
+
+ }));
+
+ this.search.on("keyup", this.bind(function (e) {
+ this.keydowns = 0;
+ this.resizeSearch();
+ })
+ );
+
+ this.search.on("blur", this.bind(function(e) {
+ this.container.removeClass("select2-container-active");
+ this.search.removeClass("select2-focused");
+ this.selectChoice(null);
+ if (!this.opened()) this.clearSearch();
+ e.stopImmediatePropagation();
+ this.opts.element.trigger($.Event("select2-blur"));
+ }));
+
+ this.container.on("click", selector, this.bind(function (e) {
+ if (!this.isInterfaceEnabled()) return;
+ if ($(e.target).closest(".select2-search-choice").length > 0) {
+ // clicked inside a select2 search choice, do not open
+ return;
+ }
+ this.selectChoice(null);
+ this.clearPlaceholder();
+ if (!this.container.hasClass("select2-container-active")) {
+ this.opts.element.trigger($.Event("select2-focus"));
+ }
+ this.open();
+ this.focusSearch();
+ e.preventDefault();
+ }));
+
+ this.container.on("focus", selector, this.bind(function () {
+ if (!this.isInterfaceEnabled()) return;
+ if (!this.container.hasClass("select2-container-active")) {
+ this.opts.element.trigger($.Event("select2-focus"));
+ }
+ this.container.addClass("select2-container-active");
+ this.dropdown.addClass("select2-drop-active");
+ this.clearPlaceholder();
+ }));
+
+ this.initContainerWidth();
+ this.opts.element.addClass("select2-offscreen");
+
+ // set the placeholder if necessary
+ this.clearSearch();
+ },
+
+ // multi
+ enableInterface: function() {
+ if (this.parent.enableInterface.apply(this, arguments)) {
+ this.search.prop("disabled", !this.isInterfaceEnabled());
+ }
+ },
+
+ // multi
+ initSelection: function () {
+ var data;
+ if (this.opts.element.val() === "" && this.opts.element.text() === "") {
+ this.updateSelection([]);
+ this.close();
+ // set the placeholder if necessary
+ this.clearSearch();
+ }
+ if (this.select || this.opts.element.val() !== "") {
+ var self = this;
+ this.opts.initSelection.call(null, this.opts.element, function(data){
+ if (data !== undefined && data !== null) {
+ self.updateSelection(data);
+ self.close();
+ // set the placeholder if necessary
+ self.clearSearch();
+ }
+ });
+ }
+ },
+
+ // multi
+ clearSearch: function () {
+ var placeholder = this.getPlaceholder(),
+ maxWidth = this.getMaxSearchWidth();
+
+ if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) {
+ this.search.val(placeholder).addClass("select2-default");
+ // stretch the search box to full width of the container so as much of the placeholder is visible as possible
+ // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944
+ this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width"));
+ } else {
+ this.search.val("").width(10);
+ }
+ },
+
+ // multi
+ clearPlaceholder: function () {
+ if (this.search.hasClass("select2-default")) {
+ this.search.val("").removeClass("select2-default");
+ }
+ },
+
+ // multi
+ opening: function () {
+ this.clearPlaceholder(); // should be done before super so placeholder is not used to search
+ this.resizeSearch();
+
+ this.parent.opening.apply(this, arguments);
+
+ this.focusSearch();
+
+ this.updateResults(true);
+ this.search.focus();
+ this.opts.element.trigger($.Event("select2-open"));
+ },
+
+ // multi
+ close: function () {
+ if (!this.opened()) return;
+ this.parent.close.apply(this, arguments);
+ },
+
+ // multi
+ focus: function () {
+ this.close();
+ this.search.focus();
+ },
+
+ // multi
+ isFocused: function () {
+ return this.search.hasClass("select2-focused");
+ },
+
+ // multi
+ updateSelection: function (data) {
+ var ids = [], filtered = [], self = this;
+
+ // filter out duplicates
+ $(data).each(function () {
+ if (indexOf(self.id(this), ids) < 0) {
+ ids.push(self.id(this));
+ filtered.push(this);
+ }
+ });
+ data = filtered;
+
+ this.selection.find(".select2-search-choice").remove();
+ $(data).each(function () {
+ self.addSelectedChoice(this);
+ });
+ self.postprocessResults();
+ },
+
+ // multi
+ tokenize: function() {
+ var input = this.search.val();
+ input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);
+ if (input != null && input != undefined) {
+ this.search.val(input);
+ if (input.length > 0) {
+ this.open();
+ }
+ }
+
+ },
+
+ // multi
+ onSelect: function (data, options) {
+
+ if (!this.triggerSelect(data)) { return; }
+
+ this.addSelectedChoice(data);
+
+ this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data });
+
+ if (this.select || !this.opts.closeOnSelect) this.postprocessResults();
+
+ if (this.opts.closeOnSelect) {
+ this.close();
+ this.search.width(10);
+ } else {
+ if (this.countSelectableResults()>0) {
+ this.search.width(10);
+ this.resizeSearch();
+ if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {
+ // if we reached max selection size repaint the results so choices
+ // are replaced with the max selection reached message
+ this.updateResults(true);
+ }
+ this.positionDropdown();
+ } else {
+ // if nothing left to select close
+ this.close();
+ this.search.width(10);
+ }
+ }
+
+ // since its not possible to select an element that has already been
+ // added we do not need to check if this is a new element before firing change
+ this.triggerChange({ added: data });
+
+ if (!options || !options.noFocus)
+ this.focusSearch();
+ },
+
+ // multi
+ cancel: function () {
+ this.close();
+ this.focusSearch();
+ },
+
+ addSelectedChoice: function (data) {
+ var enableChoice = !data.locked,
+ enabledItem = $(
+ "<li class='select2-search-choice'>" +
+ " <div></div>" +
+ " <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a>" +
+ "</li>"),
+ disabledItem = $(
+ "<li class='select2-search-choice select2-locked'>" +
+ "<div></div>" +
+ "</li>");
+ var choice = enableChoice ? enabledItem : disabledItem,
+ id = this.id(data),
+ val = this.getVal(),
+ formatted,
+ cssClass;
+
+ formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup);
+ if (formatted != undefined) {
+ choice.find("div").replaceWith("<div>"+formatted+"</div>");
+ }
+ cssClass=this.opts.formatSelectionCssClass(data, choice.find("div"));
+ if (cssClass != undefined) {
+ choice.addClass(cssClass);
+ }
+
+ if(enableChoice){
+ choice.find(".select2-search-choice-close")
+ .on("mousedown", killEvent)
+ .on("click dblclick", this.bind(function (e) {
+ if (!this.isInterfaceEnabled()) return;
+
+ $(e.target).closest(".select2-search-choice").fadeOut('fast', this.bind(function(){
+ this.unselect($(e.target));
+ this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
+ this.close();
+ this.focusSearch();
+ })).dequeue();
+ killEvent(e);
+ })).on("focus", this.bind(function () {
+ if (!this.isInterfaceEnabled()) return;
+ this.container.addClass("select2-container-active");
+ this.dropdown.addClass("select2-drop-active");
+ }));
+ }
+
+ choice.data("select2-data", data);
+ choice.insertBefore(this.searchContainer);
+
+ val.push(id);
+ this.setVal(val);
+ },
+
+ // multi
+ unselect: function (selected) {
+ var val = this.getVal(),
+ data,
+ index;
+
+ selected = selected.closest(".select2-search-choice");
+
+ if (selected.length === 0) {
+ throw "Invalid argument: " + selected + ". Must be .select2-search-choice";
+ }
+
+ data = selected.data("select2-data");
+
+ if (!data) {
+ // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued
+ // and invoked on an element already removed
+ return;
+ }
+
+ index = indexOf(this.id(data), val);
+
+ if (index >= 0) {
+ val.splice(index, 1);
+ this.setVal(val);
+ if (this.select) this.postprocessResults();
+ }
+ selected.remove();
+
+ this.opts.element.trigger({ type: "removed", val: this.id(data), choice: data });
+ this.triggerChange({ removed: data });
+ },
+
+ // multi
+ postprocessResults: function (data, initial, noHighlightUpdate) {
+ var val = this.getVal(),
+ choices = this.results.find(".select2-result"),
+ compound = this.results.find(".select2-result-with-children"),
+ self = this;
+
+ choices.each2(function (i, choice) {
+ var id = self.id(choice.data("select2-data"));
+ if (indexOf(id, val) >= 0) {
+ choice.addClass("select2-selected");
+ // mark all children of the selected parent as selected
+ choice.find(".select2-result-selectable").addClass("select2-selected");
+ }
+ });
+
+ compound.each2(function(i, choice) {
+ // hide an optgroup if it doesnt have any selectable children
+ if (!choice.is('.select2-result-selectable')
+ && choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) {
+ choice.addClass("select2-selected");
+ }
+ });
+
+ if (this.highlight() == -1 && noHighlightUpdate !== false){
+ self.highlight(0);
+ }
+
+ //If all results are chosen render formatNoMAtches
+ if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){
+ if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) {
+ if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) {
+ this.results.append("<li class='select2-no-results'>" + self.opts.formatNoMatches(self.search.val()) + "</li>");
+ }
+ }
+ }
+
+ },
+
+ // multi
+ getMaxSearchWidth: function() {
+ return this.selection.width() - getSideBorderPadding(this.search);
+ },
+
+ // multi
+ resizeSearch: function () {
+ var minimumWidth, left, maxWidth, containerLeft, searchWidth,
+ sideBorderPadding = getSideBorderPadding(this.search);
+
+ minimumWidth = measureTextWidth(this.search) + 10;
+
+ left = this.search.offset().left;
+
+ maxWidth = this.selection.width();
+ containerLeft = this.selection.offset().left;
+
+ searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;
+
+ if (searchWidth < minimumWidth) {
+ searchWidth = maxWidth - sideBorderPadding;
+ }
+
+ if (searchWidth < 40) {
+ searchWidth = maxWidth - sideBorderPadding;
+ }
+
+ if (searchWidth <= 0) {
+ searchWidth = minimumWidth;
+ }
+
+ this.search.width(searchWidth);
+ },
+
+ // multi
+ getVal: function () {
+ var val;
+ if (this.select) {
+ val = this.select.val();
+ return val === null ? [] : val;
+ } else {
+ val = this.opts.element.val();
+ return splitVal(val, this.opts.separator);
+ }
+ },
+
+ // multi
+ setVal: function (val) {
+ var unique;
+ if (this.select) {
+ this.select.val(val);
+ } else {
+ unique = [];
+ // filter out duplicates
+ $(val).each(function () {
+ if (indexOf(this, unique) < 0) unique.push(this);
+ });
+ this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator));
+ }
+ },
+
+ // multi
+ buildChangeDetails: function (old, current) {
+ var current = current.slice(0),
+ old = old.slice(0);
+
+ // remove intersection from each array
+ for (var i = 0; i < current.length; i++) {
+ for (var j = 0; j < old.length; j++) {
+ if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {
+ current.splice(i, 1);
+ i--;
+ old.splice(j, 1);
+ j--;
+ }
+ }
+ }
+
+ return {added: current, removed: old};
+ },
+
+
+ // multi
+ val: function (val, triggerChange) {
+ var oldData, self=this, changeDetails;
+
+ if (arguments.length === 0) {
+ return this.getVal();
+ }
+
+ oldData=this.data();
+ if (!oldData.length) oldData=[];
+
+ // val is an id. !val is true for [undefined,null,'',0] - 0 is legal
+ if (!val && val !== 0) {
+ this.opts.element.val("");
+ this.updateSelection([]);
+ this.clearSearch();
+ if (triggerChange) {
+ this.triggerChange({added: this.data(), removed: oldData});
+ }
+ return;
+ }
+
+ // val is a list of ids
+ this.setVal(val);
+
+ if (this.select) {
+ this.opts.initSelection(this.select, this.bind(this.updateSelection));
+ if (triggerChange) {
+ this.triggerChange(this.buildChangeDetails(oldData, this.data()));
+ }
+ } else {
+ if (this.opts.initSelection === undefined) {
+ throw new Error("val() cannot be called if initSelection() is not defined");
+ }
+
+ this.opts.initSelection(this.opts.element, function(data){
+ var ids=$.map(data, self.id);
+ self.setVal(ids);
+ self.updateSelection(data);
+ self.clearSearch();
+ if (triggerChange) {
+ self.triggerChange(this.buildChangeDetails(oldData, this.data()));
+ }
+ });
+ }
+ this.clearSearch();
+ },
+
+ // multi
+ onSortStart: function() {
+ if (this.select) {
+ throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");
+ }
+
+ // collapse search field into 0 width so its container can be collapsed as well
+ this.search.width(0);
+ // hide the container
+ this.searchContainer.hide();
+ },
+
+ // multi
+ onSortEnd:function() {
+
+ var val=[], self=this;
+
+ // show search and move it to the end of the list
+ this.searchContainer.show();
+ // make sure the search container is the last item in the list
+ this.searchContainer.appendTo(this.searchContainer.parent());
+ // since we collapsed the width in dragStarted, we resize it here
+ this.resizeSearch();
+
+ // update selection
+ this.selection.find(".select2-search-choice").each(function() {
+ val.push(self.opts.id($(this).data("select2-data")));
+ });
+ this.setVal(val);
+ this.triggerChange();
+ },
+
+ // multi
+ data: function(values, triggerChange) {
+ var self=this, ids, old;
+ if (arguments.length === 0) {
+ return this.selection
+ .find(".select2-search-choice")
+ .map(function() { return $(this).data("select2-data"); })
+ .get();
+ } else {
+ old = this.data();
+ if (!values) { values = []; }
+ ids = $.map(values, function(e) { return self.opts.id(e); });
+ this.setVal(ids);
+ this.updateSelection(values);
+ this.clearSearch();
+ if (triggerChange) {
+ this.triggerChange(this.buildChangeDetails(old, this.data()));
+ }
+ }
+ }
+ });
+
+ $.fn.select2 = function () {
+
+ var args = Array.prototype.slice.call(arguments, 0),
+ opts,
+ select2,
+ method, value, multiple,
+ allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "readonly", "positionDropdown", "data", "search"],
+ valueMethods = ["val", "opened", "isFocused", "container", "data"],
+ methodsMap = { search: "externalSearch" };
+
+ this.each(function () {
+ if (args.length === 0 || typeof(args[0]) === "object") {
+ opts = args.length === 0 ? {} : $.extend({}, args[0]);
+ opts.element = $(this);
+
+ if (opts.element.get(0).tagName.toLowerCase() === "select") {
+ multiple = opts.element.prop("multiple");
+ } else {
+ multiple = opts.multiple || false;
+ if ("tags" in opts) {opts.multiple = multiple = true;}
+ }
+
+ select2 = multiple ? new MultiSelect2() : new SingleSelect2();
+ select2.init(opts);
+ } else if (typeof(args[0]) === "string") {
+
+ if (indexOf(args[0], allowedMethods) < 0) {
+ throw "Unknown method: " + args[0];
+ }
+
+ value = undefined;
+ select2 = $(this).data("select2");
+ if (select2 === undefined) return;
+
+ method=args[0];
+
+ if (method === "container") {
+ value = select2.container;
+ } else if (method === "dropdown") {
+ value = select2.dropdown;
+ } else {
+ if (methodsMap[method]) method = methodsMap[method];
+
+ value = select2[method].apply(select2, args.slice(1));
+ }
+ if (indexOf(args[0], valueMethods) >= 0) {
+ return false;
+ }
+ } else {
+ throw "Invalid arguments to select2 plugin: " + args;
+ }
+ });
+ return (value === undefined) ? this : value;
+ };
+
+ // plugin defaults, accessible to users
+ $.fn.select2.defaults = {
+ width: "copy",
+ loadMorePadding: 0,
+ closeOnSelect: true,
+ openOnEnter: true,
+ containerCss: {},
+ dropdownCss: {},
+ containerCssClass: "",
+ dropdownCssClass: "",
+ formatResult: function(result, container, query, escapeMarkup) {
+ var markup=[];
+ markMatch(result.text, query.term, markup, escapeMarkup);
+ return markup.join("");
+ },
+ formatSelection: function (data, container, escapeMarkup) {
+ return data ? escapeMarkup(data.text) : undefined;
+ },
+ sortResults: function (results, container, query) {
+ return results;
+ },
+ formatResultCssClass: function(data) {return undefined;},
+ formatSelectionCssClass: function(data, container) {return undefined;},
+ formatNoMatches: function () { return "No matches found"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1? "" : "s"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1? "" : "s"); },
+ formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "Loading more results..."; },
+ formatSearching: function () { return "Searching..."; },
+ minimumResultsForSearch: 0,
+ minimumInputLength: 0,
+ maximumInputLength: null,
+ maximumSelectionSize: 0,
+ id: function (e) { return e.id; },
+ matcher: function(term, text) {
+ return (''+text).toUpperCase().indexOf((''+term).toUpperCase()) >= 0;
+ },
+ separator: ",",
+ tokenSeparators: [],
+ tokenizer: defaultTokenizer,
+ escapeMarkup: defaultEscapeMarkup,
+ blurOnChange: false,
+ selectOnBlur: false,
+ adaptContainerCssClass: function(c) { return c; },
+ adaptDropdownCssClass: function(c) { return null; }
+ };
+
+ $.fn.select2.ajaxDefaults = {
+ transport: $.ajax,
+ params: {
+ type: "GET",
+ cache: false,
+ dataType: "json"
+ }
+ };
+
+ // exports
+ window.Select2 = {
+ query: {
+ ajax: ajax,
+ local: local,
+ tags: tags
+ }, util: {
+ debounce: debounce,
+ markMatch: markMatch,
+ escapeMarkup: defaultEscapeMarkup
+ }, "class": {
+ "abstract": AbstractSelect2,
+ "single": SingleSelect2,
+ "multi": MultiSelect2
+ }
+ };
+
+}(jQuery));
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.min.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.min.js
new file mode 100644
index 0000000..1537edc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.min.js
@@ -0,0 +1,22 @@
+/*
+Copyright 2012 Igor Vaynberg
+
+Version: 3.4.1 Timestamp: Thu Jun 27 18:02:10 PDT 2013
+
+This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
+General Public License version 2 (the "GPL License"). You may choose either license to govern your
+use of this software only upon the condition that you accept all of the terms of either the Apache
+License or the GPL License.
+
+You may obtain a copy of the Apache License and the GPL License at:
+
+http://www.apache.org/licenses/LICENSE-2.0
+http://www.gnu.org/licenses/gpl-2.0.html
+
+Unless required by applicable law or agreed to in writing, software distributed under the Apache License
+or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+either express or implied. See the Apache License and the GPL License for the specific language governing
+permissions and limitations under the Apache License and the GPL License.
+*/
+(function(a){a.fn.each2===void 0&&a.fn.extend({each2:function(b){for(var c=a([0]),d=-1,e=this.length;e>++d&&(c.context=c[0]=this[d])&&b.call(c[0],d,c)!==!1;);return this}})})(jQuery),function(a,b){"use strict";function m(a,b){for(var c=0,d=b.length;d>c;c+=1)if(o(a,b[c]))return c;return-1}function n(){var b=a(l);b.appendTo("body");var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function o(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function p(b,c){var d,e,f;if(null===b||1>b.length)return[];for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d}function q(a){return a.outerWidth(!1)-a.width()}function r(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function s(c){c.on("mousemove",function(c){var d=i;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function t(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function u(a){var c,b=!1;return function(){return b===!1&&(c=a(),b=!0),c}}function v(a,b){var c=t(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){m(a.target,b.get())>=0&&c(a)})}function w(a){a[0]!==document.activeElement&&window.setTimeout(function(){var d,b=a[0],c=a.val().length;a.focus(),a.is(":visible")&&b===document.activeElement&&(b.setSelectionRange?b.setSelectionRange(c,c):b.createTextRange&&(d=b.createTextRange(),d.collapse(!1),d.select()))},0)}function x(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function y(a){a.preventDefault(),a.stopPropagation()}function z(a){a.preventDefault(),a.stopImmediatePropagation()}function A(b){if(!h){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);h=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),h.attr("class","select2-sizer"),a("body").append(h)}return h.text(b.val()),h.width()}function B(b,c,d){var e,g,f=[];e=b.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0===this.indexOf("select2-")&&f.push(this)})),e=c.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0!==this.indexOf("select2-")&&(g=d(this),g&&f.push(this))})),b.attr("class",f.join(" "))}function C(a,c,d,e){var f=a.toUpperCase().indexOf(c.toUpperCase()),g=c.length;return 0>f?(d.push(e(a)),b):(d.push(e(a.substring(0,f))),d.push("<span class='select2-match'>"),d.push(e(a.substring(f,f+g))),d.push("</span>"),d.push(e(a.substring(f+g,a.length))),b)}function D(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return(a+"").replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function E(c){var d,e=0,f=null,g=c.quietMillis||100,h=c.url,i=this;return function(j){window.clearTimeout(d),d=window.setTimeout(function(){e+=1;var d=e,g=c.data,k=h,l=c.transport||a.fn.select2.ajaxDefaults.transport,m={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},n=a.extend({},a.fn.select2.ajaxDefaults.params,m);g=g?g.call(i,j.term,j.page,j.context):null,k="function"==typeof k?k.call(i,j.term,j.page,j.context):k,f&&f.abort(),c.params&&(a.isFunction(c.params)?a.extend(n,c.params.call(i)):a.extend(n,c.params)),a.extend(n,{url:k,dataType:c.dataType,data:g,success:function(a){if(!(e>d)){var b=c.results(a,j.page);j.callback(b)}}}),f=l.call(i,n)},g)}}function F(c){var e,f,d=c,g=function(a){return""+a.text};a.isArray(d)&&(f=d,d={results:f}),a.isFunction(d)===!1&&(f=d,d=function(){return f});var h=d();return h.text&&(g=h.text,a.isFunction(g)||(e=h.text,g=function(a){return a[e]})),function(c){var h,e=c.term,f={results:[]};return""===e?(c.callback(d()),b):(h=function(b,d){var f,i;if(b=b[0],b.children){f={};for(i in b)b.hasOwnProperty(i)&&(f[i]=b[i]);f.children=[],a(b.children).each2(function(a,b){h(b,f.children)}),(f.children.length||c.matcher(e,g(f),b))&&d.push(f)}else c.matcher(e,g(b),b)&&d.push(b)},a(d().results).each2(function(a,b){h(b,f.results)}),c.callback(f),b)}}function G(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]};a(d?c():c).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g)}}function H(b,c){if(a.isFunction(b))return!0;if(!b)return!1;throw Error(c+" must be a function or a falsy value")}function I(b){return a.isFunction(b)?b():b}function J(b){var c=0;return a.each(b,function(a,b){b.children?c+=J(b.children):c++}),c}function K(a,c,d,e){var h,i,j,k,l,f=a,g=!1;if(!e.createSearchChoice||!e.tokenSeparators||1>e.tokenSeparators.length)return b;for(;;){for(i=-1,j=0,k=e.tokenSeparators.length;k>j&&(l=e.tokenSeparators[j],i=a.indexOf(l),!(i>=0));j++);if(0>i)break;if(h=a.substring(0,i),a=a.substring(i+l.length),h.length>0&&(h=e.createSearchChoice.call(this,h,c),h!==b&&null!==h&&e.id(h)!==b&&null!==e.id(h))){for(g=!1,j=0,k=c.length;k>j;j++)if(o(e.id(h),e.id(c[j]))){g=!0;break}g||d(h)}}return f!==a?a:b}function L(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var c,d,e,f,g,h,j,k,i={x:0,y:0},c={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case c.LEFT:case c.RIGHT:case c.UP:case c.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case c.SHIFT:case c.CTRL:case c.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},l="<div class='select2-measure-scrollbar'></div>";j=a(document),g=function(){var a=1;return function(){return a++}}(),j.on("mousemove",function(a){i.x=a.pageX,i.y=a.pageY}),d=L(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,h,i,f=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+g()),this.containerSelector="#"+this.containerId.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.body=u(function(){return c.element.closest("body")}),B(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.css(I(c.containerCss)),this.container.addClass(I(c.containerCssClass)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),this.dropdown.addClass(I(c.dropdownCssClass)),this.dropdown.data("select2",this),this.results=d=this.container.find(f),this.search=e=this.container.find("input.select2-input"),this.resultsPage=0,this.context=null,this.initContainer(),s(this.results),this.dropdown.on("mousemove-filtered touchstart touchmove touchend",f,this.bind(this.highlightUnderEvent)),v(80,this.results),this.dropdown.on("scroll-debounced",f,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),y(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),y(a))}),r(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",f,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown",function(a){a.stopPropagation()}),a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),k=k||n(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus()},destroy:function(){var a=this.opts.element,c=a.data("select2");this.propertyObserver&&(delete this.propertyObserver,this.propertyObserver=null),c!==b&&(c.container.remove(),c.dropdown.remove(),a.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show())},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:o(a.attr("locked"),"locked")||o(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:b},prepareOpts:function(c){var d,e,f,g,h=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw Error("Option '"+this+"' is not allowed for Select2 when attached to a <select> element.")}),c=a.extend({},{populateResults:function(d,e,f){var g,l=this.opts.id;g=function(d,e,i){var j,k,m,n,o,p,q,r,s,t;for(d=c.sortResults(d,e,f),j=0,k=d.length;k>j;j+=1)m=d[j],o=m.disabled===!0,n=!o&&l(m)!==b,p=m.children&&m.children.length>0,q=a("<li></li>"),q.addClass("select2-results-dept-"+i),q.addClass("select2-result"),q.addClass(n?"select2-result-selectable":"select2-result-unselectable"),o&&q.addClass("select2-disabled"),p&&q.addClass("select2-result-with-children"),q.addClass(h.opts.formatResultCssClass(m)),r=a(document.createElement("div")),r.addClass("select2-result-label"),t=c.formatResult(m,r,f,h.opts.escapeMarkup),t!==b&&r.html(t),q.append(r),p&&(s=a("<ul></ul>"),s.addClass("select2-result-sub"),g(m.children,s,i+1),q.append(s)),q.data("select2-data",m),e.append(q)},g(e,d,0)}},a.fn.select2.defaults,c),"function"!=typeof c.id&&(f=c.id,c.id=function(a){return a[f]}),a.isArray(c.element.data("select2Tags"))){if("tags"in c)throw"tags specified as both an attribute 'data-select2-tags' and in options of Select2 "+c.element.attr("id");c.tags=c.element.data("select2Tags")}if(e?(c.query=this.bind(function(a){var f,g,i,c={results:[],more:!1},e=a.term;i=function(b,c){var d;b.is("option")?a.matcher(e,b.text(),b)&&c.push(h.optionToData(b)):b.is("optgroup")&&(d=h.optionToData(b),b.children().each2(function(a,b){i(b,d.children)}),d.children.length>0&&c.push(d))},f=d.children(),this.getPlaceholder()!==b&&f.length>0&&(g=this.getPlaceholderOption(),g&&(f=f.not(g))),f.each2(function(a,b){i(b,c.results)}),a.callback(c)}),c.id=function(a){return a.id},c.formatResultCssClass=function(a){return a.css}):"query"in c||("ajax"in c?(g=c.element.data("ajax-url"),g&&g.length>0&&(c.ajax.url=g),c.query=E.call(c.element,c.ajax)):"data"in c?c.query=F(c.data):"tags"in c&&(c.query=G(c.tags),c.createSearchChoice===b&&(c.createSearchChoice=function(a){return{id:a,text:a}}),c.initSelection===b&&(c.initSelection=function(d,e){var f=[];a(p(d.val(),c.separator)).each(function(){var d=this,e=this,g=c.tags;a.isFunction(g)&&(g=g()),a(g).each(function(){return o(this.id,d)?(e=this.text,!1):b}),f.push({id:d,text:e})}),e(f)}))),"function"!=typeof c.query)throw"query function not defined for Select2 "+c.element.attr("id");return c},monitorSource:function(){var c,a=this.opts.element;a.on("change.select2",this.bind(function(){this.opts.element.data("select2-change-triggered")!==!0&&this.initSelection()})),c=this.bind(function(){var d,f=a.prop("disabled");f===b&&(f=!1),this.enable(!f);var d=a.prop("readonly");d===b&&(d=!1),this.readonly(d),B(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.addClass(I(this.opts.containerCssClass)),B(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(I(this.opts.dropdownCssClass))}),a.on("propertychange.select2 DOMAttrModified.select2",c),this.mutationCallback===b&&(this.mutationCallback=function(a){a.forEach(c)}),"undefined"!=typeof WebKitMutationObserver&&(this.propertyObserver&&(delete this.propertyObserver,this.propertyObserver=null),this.propertyObserver=new WebKitMutationObserver(this.mutationCallback),this.propertyObserver.observe(a.get(0),{attributes:!0,subtree:!1}))},triggerSelect:function(b){var c=a.Event("select2-selecting",{val:this.id(b),object:b});return this.opts.element.trigger(c),!c.isDefaultPrevented()},triggerChange:function(b){b=b||{},b=a.extend({},b,{type:"change",val:this.val()}),this.opts.element.data("select2-change-triggered",!0),this.opts.element.trigger(b),this.opts.element.data("select2-change-triggered",!1),this.opts.element.click(),this.opts.blurOnChange&&this.opts.element.blur()},isInterfaceEnabled:function(){return this.enabledInterface===!0},enableInterface:function(){var a=this._enabled&&!this._readonly,b=!a;return a===this.enabledInterface?!1:(this.container.toggleClass("select2-container-disabled",b),this.close(),this.enabledInterface=a,!0)},enable:function(a){return a===b&&(a=!0),this._enabled===a?!1:(this._enabled=a,this.opts.element.prop("disabled",!a),this.enableInterface(),!0)},readonly:function(a){return a===b&&(a=!1),this._readonly===a?!1:(this._readonly=a,this.opts.element.prop("readonly",a),this.enableInterface(),!0)},opened:function(){return this.container.hasClass("select2-dropdown-open")},positionDropdown:function(){var q,r,s,t,b=this.dropdown,c=this.container.offset(),d=this.container.outerHeight(!1),e=this.container.outerWidth(!1),f=b.outerHeight(!1),g=a(window).scrollLeft()+a(window).width(),h=a(window).scrollTop()+a(window).height(),i=c.top+d,j=c.left,l=h>=i+f,m=c.top-f>=this.body().scrollTop(),n=b.outerWidth(!1),o=g>=j+n,p=b.hasClass("select2-drop-above");this.opts.dropdownAutoWidth?(t=a(".select2-results",b)[0],b.addClass("select2-drop-auto-width"),b.css("width",""),n=b.outerWidth(!1)+(t.scrollHeight===t.clientHeight?0:k.width),n>e?e=n:n=e,o=g>=j+n):this.container.removeClass("select2-drop-auto-width"),"static"!==this.body().css("position")&&(q=this.body().offset(),i-=q.top,j-=q.left),p?(r=!0,!m&&l&&(r=!1)):(r=!1,!l&&m&&(r=!0)),o||(j=c.left+e-n),r?(i=c.top-f,this.container.addClass("select2-drop-above"),b.addClass("select2-drop-above")):(this.container.removeClass("select2-drop-above"),b.removeClass("select2-drop-above")),s=a.extend({top:i,left:j,width:e},I(this.opts.dropdownCss)),b.css(s)},shouldOpen:function(){var b;return this.opened()?!1:this._enabled===!1||this._readonly===!0?!1:(b=a.Event("select2-opening"),this.opts.element.trigger(b),!b.isDefaultPrevented())},clearDropdownAlignmentPreference:function(){this.container.removeClass("select2-drop-above"),this.dropdown.removeClass("select2-drop-above")},open:function(){return this.shouldOpen()?(this.opening(),!0):!1},opening:function(){function i(){return{width:Math.max(document.documentElement.scrollWidth,a(window).width()),height:Math.max(document.documentElement.scrollHeight,a(window).height())}}var f,g,b=this.containerId,c="scroll."+b,d="resize."+b,e="orientationchange."+b;this.container.addClass("select2-dropdown-open").addClass("select2-container-active"),this.clearDropdownAlignmentPreference(),this.dropdown[0]!==this.body().children().last()[0]&&this.dropdown.detach().appendTo(this.body()),f=a("#select2-drop-mask"),0==f.length&&(f=a(document.createElement("div")),f.attr("id","select2-drop-mask").attr("class","select2-drop-mask"),f.hide(),f.appendTo(this.body()),f.on("mousedown touchstart click",function(b){var d,c=a("#select2-drop");c.length>0&&(d=c.data("select2"),d.opts.selectOnBlur&&d.selectHighlighted({noFocus:!0}),d.close(),b.preventDefault(),b.stopPropagation())})),this.dropdown.prev()[0]!==f[0]&&this.dropdown.before(f),a("#select2-drop").removeAttr("id"),this.dropdown.attr("id","select2-drop"),g=i(),f.css(g).show(),this.dropdown.show(),this.positionDropdown(),this.dropdown.addClass("select2-drop-active");var h=this;this.container.parents().add(window).each(function(){a(this).on(d+" "+c+" "+e,function(){var c=i();a("#select2-drop-mask").css(c),h.positionDropdown()})})},close:function(){if(this.opened()){var b=this.containerId,c="scroll."+b,d="resize."+b,e="orientationchange."+b;this.container.parents().add(window).each(function(){a(this).off(c).off(d).off(e)}),this.clearDropdownAlignmentPreference(),a("#select2-drop-mask").hide(),this.dropdown.removeAttr("id"),this.dropdown.hide(),this.container.removeClass("select2-dropdown-open"),this.results.empty(),this.clearSearch(),this.search.removeClass("select2-active"),this.opts.element.trigger(a.Event("select2-close"))}},externalSearch:function(a){this.open(),this.search.val(a),this.updateResults(!1)},clearSearch:function(){},getMaximumSelectionSize:function(){return I(this.opts.maximumSelectionSize)},ensureHighlightVisible:function(){var d,e,f,g,h,i,j,c=this.results;if(e=this.highlight(),!(0>e)){if(0==e)return c.scrollTop(0),b;d=this.findHighlightableChoices().find(".select2-result-label"),f=a(d[e]),g=f.offset().top+f.outerHeight(!0),e===d.length-1&&(j=c.find("li.select2-more-results"),j.length>0&&(g=j.offset().top+j.outerHeight(!0))),h=c.offset().top+c.outerHeight(!0),g>h&&c.scrollTop(c.scrollTop()+(g-h)),i=f.offset().top-c.offset().top,0>i&&"none"!=f.css("display")&&c.scrollTop(c.scrollTop()+i)}},findHighlightableChoices:function(){return this.results.find(".select2-result-selectable:not(.select2-selected):not(.select2-disabled)")},moveHighlight:function(b){for(var c=this.findHighlightableChoices(),d=this.highlight();d>-1&&c.length>d;){d+=b;var e=a(c[d]);if(e.hasClass("select2-result-selectable")&&!e.hasClass("select2-disabled")&&!e.hasClass("select2-selected")){this.highlight(d);break}}},highlight:function(c){var e,f,d=this.findHighlightableChoices();return 0===arguments.length?m(d.filter(".select2-highlighted")[0],d.get()):(c>=d.length&&(c=d.length-1),0>c&&(c=0),this.results.find(".select2-highlighted").removeClass("select2-highlighted"),e=a(d[c]),e.addClass("select2-highlighted"),this.ensureHighlightVisible(),f=e.data("select2-data"),f&&this.opts.element.trigger({type:"select2-highlight",val:this.id(f),choice:f}),b)},countSelectableResults:function(){return this.findHighlightableChoices().length},highlightUnderEvent:function(b){var c=a(b.target).closest(".select2-result-selectable");if(c.length>0&&!c.is(".select2-highlighted")){var d=this.findHighlightableChoices();this.highlight(d.index(c))}else 0==c.length&&this.results.find(".select2-highlighted").removeClass("select2-highlighted")},loadMoreIfNeeded:function(){var c,a=this.results,b=a.find("li.select2-more-results"),e=this.resultsPage+1,f=this,g=this.search.val(),h=this.context;0!==b.length&&(c=b.offset().top-a.offset().top-a.height(),this.opts.loadMorePadding>=c&&(b.addClass("select2-active"),this.opts.query({element:this.opts.element,term:g,page:e,context:h,matcher:this.opts.matcher,callback:this.bind(function(c){f.opened()&&(f.opts.populateResults.call(this,a,c.results,{term:g,page:e,context:h}),f.postprocessResults(c,!1,!1),c.more===!0?(b.detach().appendTo(a).text(f.opts.formatLoadMore(e+1)),window.setTimeout(function(){f.loadMoreIfNeeded()},10)):b.remove(),f.positionDropdown(),f.resultsPage=e,f.context=c.context)})})))},tokenize:function(){},updateResults:function(c){function l(){d.removeClass("select2-active"),h.positionDropdown()}function m(a){e.html(a),l()}var g,i,d=this.search,e=this.results,f=this.opts,h=this,j=d.val(),k=a.data(this.container,"select2-last-term");if((c===!0||!k||!o(j,k))&&(a.data(this.container,"select2-last-term",j),c===!0||this.showSearchInput!==!1&&this.opened())){var n=this.getMaximumSelectionSize();if(n>=1&&(g=this.data(),a.isArray(g)&&g.length>=n&&H(f.formatSelectionTooBig,"formatSelectionTooBig")))return m("<li class='select2-selection-limit'>"+f.formatSelectionTooBig(n)+"</li>"),b;if(d.val().length<f.minimumInputLength)return H(f.formatInputTooShort,"formatInputTooShort")?m("<li class='select2-no-results'>"+f.formatInputTooShort(d.val(),f.minimumInputLength)+"</li>"):m(""),c&&this.showSearch&&this.showSearch(!0),b;if(f.maximumInputLength&&d.val().length>f.maximumInputLength)return H(f.formatInputTooLong,"formatInputTooLong")?m("<li class='select2-no-results'>"+f.formatInputTooLong(d.val(),f.maximumInputLength)+"</li>"):m(""),b;f.formatSearching&&0===this.findHighlightableChoices().length&&m("<li class='select2-searching'>"+f.formatSearching()+"</li>"),d.addClass("select2-active"),i=this.tokenize(),i!=b&&null!=i&&d.val(i),this.resultsPage=1,f.query({element:f.element,term:d.val(),page:this.resultsPage,context:null,matcher:f.matcher,callback:this.bind(function(g){var i;return this.opened()?(this.context=g.context===b?null:g.context,this.opts.createSearchChoice&&""!==d.val()&&(i=this.opts.createSearchChoice.call(h,d.val(),g.results),i!==b&&null!==i&&h.id(i)!==b&&null!==h.id(i)&&0===a(g.results).filter(function(){return o(h.id(this),h.id(i))}).length&&g.results.unshift(i)),0===g.results.length&&H(f.formatNoMatches,"formatNoMatches")?(m("<li class='select2-no-results'>"+f.formatNoMatches(d.val())+"</li>"),b):(e.empty(),h.opts.populateResults.call(this,e,g.results,{term:d.val(),page:this.resultsPage,context:null}),g.more===!0&&H(f.formatLoadMore,"formatLoadMore")&&(e.append("<li class='select2-more-results'>"+h.opts.escapeMarkup(f.formatLoadMore(this.resultsPage))+"</li>"),window.setTimeout(function(){h.loadMoreIfNeeded()},10)),this.postprocessResults(g,c),l(),this.opts.element.trigger({type:"select2-loaded",items:g}),b)):(this.search.removeClass("select2-active"),b)})})}},cancel:function(){this.close()},blur:function(){this.opts.selectOnBlur&&this.selectHighlighted({noFocus:!0}),this.close(),this.container.removeClass("select2-container-active"),this.search[0]===document.activeElement&&this.search.blur(),this.clearSearch(),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus")},focusSearch:function(){w(this.search)},selectHighlighted:function(a){var b=this.highlight(),c=this.results.find(".select2-highlighted"),d=c.closest(".select2-result").data("select2-data");d?(this.highlight(b),this.onSelect(d,a)):a&&a.noFocus&&this.close()},getPlaceholder:function(){var a;return this.opts.element.attr("placeholder")||this.opts.element.attr("data-placeholder")||this.opts.element.data("placeholder")||this.opts.placeholder||((a=this.getPlaceholderOption())!==b?a.text():b)},getPlaceholderOption:function(){if(this.select){var a=this.select.children().first();if(this.opts.placeholderOption!==b)return"first"===this.opts.placeholderOption&&a||"function"==typeof this.opts.placeholderOption&&this.opts.placeholderOption(this.select);if(""===a.text()&&""===a.val())return a}},initContainerWidth:function(){function c(){var c,d,e,f,g;if("off"===this.opts.width)return null;if("element"===this.opts.width)return 0===this.opts.element.outerWidth(!1)?"auto":this.opts.element.outerWidth(!1)+"px";if("copy"===this.opts.width||"resolve"===this.opts.width){if(c=this.opts.element.attr("style"),c!==b)for(d=c.split(";"),f=0,g=d.length;g>f;f+=1)if(e=d[f].replace(/\s/g,"").match(/width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i),null!==e&&e.length>=1)return e[1];return"resolve"===this.opts.width?(c=this.opts.element.css("width"),c.indexOf("%")>0?c:0===this.opts.element.outerWidth(!1)?"auto":this.opts.element.outerWidth(!1)+"px"):null}return a.isFunction(this.opts.width)?this.opts.width():this.opts.width}var d=c.call(this);null!==d&&this.container.css("width",d)}}),e=L(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container"}).html(["<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>"," <span class='select2-chosen'> </span><abbr class='select2-search-choice-close'></abbr>"," <span class='select2-arrow'><b></b></span>","</a>","<input class='select2-focusser select2-offscreen' type='text'/>","<div class='select2-drop select2-display-none'>"," <div class='select2-search'>"," <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'/>"," </div>"," <ul class='select2-results'>"," </ul>","</div>"].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var b,c,d;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.search.focus(),b=this.search.get(0),b.createTextRange?(c=b.createTextRange(),c.collapse(!1),c.select()):b.setSelectionRange&&(d=this.search.val().length,b.setSelectionRange(d,d)),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.removeAttr("disabled"),this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.removeAttr("disabled"),this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.removeAttr("disabled"),this.focusser.focus()},initContainer:function(){var d,e=this.container,f=this.dropdown;0>this.opts.minimumResultsForSearch?this.showSearch(!1):this.showSearch(!0),this.selection=d=e.find(".select2-choice"),this.focusser=e.find(".select2-focusser"),this.focusser.attr("id","s2id_autogen"+g()),a("label[for='"+this.opts.element.attr("id")+"']").attr("for",this.focusser.attr("id")),this.focusser.attr("tabindex",this.elementTabIndex),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()){if(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)return y(a),b;switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),y(a),b;case c.ENTER:return this.selectHighlighted(),y(a),b;case c.TAB:return this.selectHighlighted({noFocus:!0}),b;case c.ESC:return this.cancel(a),y(a),b}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body().get(0)&&window.setTimeout(this.bind(function(){this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.ESC){if(this.opts.openOnEnter===!1&&a.which===c.ENTER)return y(a),b;if(a.which==c.DOWN||a.which==c.UP||a.which==c.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),y(a),b}return a.which==c.DELETE||a.which==c.BACKSPACE?(this.opts.allowClear&&this.clear(),y(a),b):b}})),r(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),d.on("mousedown","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),z(a),this.close(),this.selection.focus())})),d.on("mousedown",this.bind(function(b){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),y(b)})),f.on("mousedown",this.bind(function(){this.search.focus()})),d.on("focus",this.bind(function(a){y(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(a){var b=this.selection.data("select2-data");if(b){var c=this.getPlaceholderOption();this.opts.element.val(c?c.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),a!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(b),choice:b}),this.triggerChange({removed:b}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection([]),this.close(),this.setPlaceholder();else{var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.setPlaceholder())})}},isPlaceholderOptionSelected:function(){var a;return(a=this.getPlaceholderOption())!==b&&a.is(":selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val()},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find(":selected");b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var g=o(e,b.id(d));return g&&(f=d),g},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,c,d){var e=0,f=this;if(this.findHighlightableChoices().each2(function(a,c){return o(f.id(c.data("select2-data")),f.opts.element.val())?(e=a,!1):b}),d!==!1&&(c===!0&&e>=0?this.highlight(e):this.highlight(0)),c===!0){var h=this.opts.minimumResultsForSearch;h>=0&&this.showSearch(J(a.results)>=h)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.close(),b&&b.noFocus||this.selection.focus(),o(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var d,e,c=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),c.empty(),d=this.opts.formatSelection(a,c,this.opts.escapeMarkup),d!==b&&c.append(d),e=this.opts.formatSelectionCssClass(a,c),e!==b&&c.addClass(e),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")
+},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find(":selected").each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return this.clear(c),b;if(this.opts.initSelection===b)throw Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a,c){var d;return 0===arguments.length?(d=this.selection.data("select2-data"),d==b&&(d=null),d):(a&&""!==a?(d=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),c&&this.triggerChange({added:a,removed:d})):this.clear(c),b)}}),f=L(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["<ul class='select2-choices'>"," <li class='select2-search-field'>"," <input type='text' autocomplete='off' autocorrect='off' autocapitilize='off' spellcheck='false' class='select2-input'>"," </li>","</ul>","<div class='select2-drop select2-drop-multi select2-display-none'>"," <ul class='select2-results'>"," </ul>","</div>"].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find(":selected").each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=p(c.val(),b.separator),f=[];b.query({matcher:function(c,d,g){var h=a.grep(e,function(a){return o(a,b.id(g))}).length;return h&&f.push(g),h},callback:a.isFunction(d)?function(){for(var a=[],c=0;e.length>c;c++)for(var g=e[c],h=0;f.length>h;h++){var i=f[h];if(o(g,b.id(i))){a.push(i),f.splice(h,1);break}}d(a)}:a.noop})}),b},selectChoice:function(a){var b=this.container.find(".select2-search-choice-focus");b.length&&a&&a[0]==b[0]||(b.length&&this.opts.element.trigger("choice-deselected",b),b.removeClass("select2-search-choice-focus"),a&&a.length&&(this.close(),a.addClass("select2-search-choice-focus"),this.opts.element.trigger("choice-selected",a)))},initContainer:function(){var e,d=".select2-choices";this.searchContainer=this.container.find(".select2-search-field"),this.selection=e=this.container.find(d);var f=this;this.selection.on("mousedown",".select2-search-choice",function(){f.search[0].focus(),f.selectChoice(a(this))}),this.search.attr("id","s2id_autogen"+g()),a("label[for='"+this.opts.element.attr("id")+"']").attr("for",this.search.attr("id")),this.search.on("input paste",this.bind(function(){this.isInterfaceEnabled()&&(this.opened()||this.open())})),this.search.attr("tabindex",this.elementTabIndex),this.keydowns=0,this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()){++this.keydowns;var d=e.find(".select2-search-choice-focus"),f=d.prev(".select2-search-choice:not(.select2-locked)"),g=d.next(".select2-search-choice:not(.select2-locked)"),h=x(this.search);if(d.length&&(a.which==c.LEFT||a.which==c.RIGHT||a.which==c.BACKSPACE||a.which==c.DELETE||a.which==c.ENTER)){var i=d;return a.which==c.LEFT&&f.length?i=f:a.which==c.RIGHT?i=g.length?g:null:a.which===c.BACKSPACE?(this.unselect(d.first()),this.search.width(10),i=f.length?f:g):a.which==c.DELETE?(this.unselect(d.first()),this.search.width(10),i=g.length?g:null):a.which==c.ENTER&&(i=null),this.selectChoice(i),y(a),i&&i.length||this.open(),b}if((a.which===c.BACKSPACE&&1==this.keydowns||a.which==c.LEFT)&&0==h.offset&&!h.length)return this.selectChoice(e.find(".select2-search-choice:not(.select2-locked)").last()),y(a),b;if(this.selectChoice(null),this.opened())switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),y(a),b;case c.ENTER:return this.selectHighlighted(),y(a),b;case c.TAB:return this.selectHighlighted({noFocus:!0}),this.close(),b;case c.ESC:return this.cancel(a),y(a),b}if(a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.BACKSPACE&&a.which!==c.ESC){if(a.which===c.ENTER){if(this.opts.openOnEnter===!1)return;if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return}this.open(),(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)&&y(a),a.which===c.ENTER&&y(a)}}})),this.search.on("keyup",this.bind(function(){this.keydowns=0,this.resizeSearch()})),this.search.on("blur",this.bind(function(b){this.container.removeClass("select2-container-active"),this.search.removeClass("select2-focused"),this.selectChoice(null),this.opened()||this.clearSearch(),b.stopImmediatePropagation(),this.opts.element.trigger(a.Event("select2-blur"))})),this.container.on("click",d,this.bind(function(b){this.isInterfaceEnabled()&&(a(b.target).closest(".select2-search-choice").length>0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",d,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),this.updateResults(!0),this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],e=this;a(b).each(function(){0>m(e.id(this),c)&&(c.push(e.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){e.addSelectedChoice(this)}),e.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,b){this.triggerSelect(a)&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()&&this.updateResults(!0),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),b&&b.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var j,k,d=!c.locked,e=a("<li class='select2-search-choice'> <div></div> <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a></li>"),f=a("<li class='select2-search-choice select2-locked'><div></div></li>"),g=d?e:f,h=this.id(c),i=this.getVal();j=this.opts.formatSelection(c,g.find("div"),this.opts.escapeMarkup),j!=b&&g.find("div").replaceWith("<div>"+j+"</div>"),k=this.opts.formatSelectionCssClass(c,g.find("div")),k!=b&&g.addClass(k),d&&g.find(".select2-search-choice-close").on("mousedown",y).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(a(b.target).closest(".select2-search-choice").fadeOut("fast",this.bind(function(){this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),this.close(),this.focusSearch()})).dequeue(),y(b))})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),g.data("select2-data",c),g.insertBefore(this.searchContainer),i.push(h),this.setVal(i)},unselect:function(a){var c,d,b=this.getVal();if(a=a.closest(".select2-search-choice"),0===a.length)throw"Invalid argument: "+a+". Must be .select2-search-choice";c=a.data("select2-data"),c&&(d=m(this.id(c),b),d>=0&&(b.splice(d,1),this.setVal(b),this.select&&this.postprocessResults()),a.remove(),this.opts.element.trigger({type:"removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))},postprocessResults:function(a,b,c){var d=this.getVal(),e=this.results.find(".select2-result"),f=this.results.find(".select2-result-with-children"),g=this;e.each2(function(a,b){var c=g.id(b.data("select2-data"));m(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),f.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&g.highlight(0),!this.opts.createSearchChoice&&!e.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&H(g.opts.formatNoMatches,"formatNoMatches")&&this.results.append("<li class='select2-no-results'>"+g.opts.formatNoMatches(g.search.val())+"</li>")},getMaxSearchWidth:function(){return this.selection.width()-q(this.search)},resizeSearch:function(){var a,b,c,d,e,f=q(this.search);a=A(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(e)},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),p(a,this.opts.separator))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){0>m(this,c)&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;b.length>c;c++)for(var d=0;a.length>d;d++)o(this.opts.id(b[c]),this.opts.id(a[d]))&&(b.splice(c,1),c--,a.splice(d,1),d--);return{added:b,removed:a}},val:function(c,d){var e,f=this;if(0===arguments.length)return this.getVal();if(e=this.data(),e.length||(e=[]),!c&&0!==c)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),d&&this.triggerChange({added:this.data(),removed:e}),b;if(this.setVal(c),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),d&&this.triggerChange(this.buildChangeDetails(e,this.data()));else{if(this.opts.initSelection===b)throw Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(b){var c=a.map(b,f.id);f.setVal(c),f.updateSelection(b),f.clearSearch(),d&&f.triggerChange(this.buildChangeDetails(e,this.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(c,d){var f,g,e=this;return 0===arguments.length?this.selection.find(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(g=this.data(),c||(c=[]),f=a.map(c,function(a){return e.opts.id(a)}),this.setVal(f),this.updateSelection(c),this.clearSearch(),d&&this.triggerChange(this.buildChangeDetails(g,this.data())),b)}}),a.fn.select2=function(){var d,g,h,i,j,c=Array.prototype.slice.call(arguments,0),k=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","readonly","positionDropdown","data","search"],l=["val","opened","isFocused","container","data"],n={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])d=0===c.length?{}:a.extend({},c[0]),d.element=a(this),"select"===d.element.get(0).tagName.toLowerCase()?j=d.element.prop("multiple"):(j=d.multiple||!1,"tags"in d&&(d.multiple=j=!0)),g=j?new f:new e,g.init(d);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(0>m(c[0],k))throw"Unknown method: "+c[0];if(i=b,g=a(this).data("select2"),g===b)return;if(h=c[0],"container"===h?i=g.container:"dropdown"===h?i=g.dropdown:(n[h]&&(h=n[h]),i=g[h].apply(g,c.slice(1))),m(c[0],l)>=0)return!1}}),i===b?this:i},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return C(a.text,c.term,e,d),e.join("")},formatSelection:function(a,c,d){return a?d(a.text):b},sortResults:function(a){return a},formatResultCssClass:function(){return b},formatSelectionCssClass:function(){return b},formatNoMatches:function(){return"No matches found"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results..."},formatSearching:function(){return"Searching..."},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a.id},matcher:function(a,b){return(""+b).toUpperCase().indexOf((""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:K,escapeMarkup:D,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null}},a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:E,local:F,tags:G},util:{debounce:t,markMatch:C,escapeMarkup:D},"class":{"abstract":d,single:e,multi:f}}}}(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.png
new file mode 100644
index 0000000..1d804ff
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ar.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ar.js
new file mode 100644
index 0000000..5ce0106
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ar.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 Arabic translation.
+ *
+ * Author: Your Name <amedhat3@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "لا توجد نتائج"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "من فضلك أدخل " + n + " حروف أكثر"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "من فضلك أحذف " + n + " حروف"; },
+ formatSelectionTooBig: function (limit) { return "يمكنك ان تختار " + limit + " أختيارات فقط"; },
+ formatLoadMore: function (pageNumber) { return "تحمل المذيد من النتائج ..."; },
+ formatSearching: function () { return "جاري البحث ..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ca.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ca.js
new file mode 100644
index 0000000..bdcdaa7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ca.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 Catalan translation.
+ *
+ * Author: David Planella <david.planella@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "No s'ha trobat cap coincidència"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; },
+ formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats..."; },
+ formatSearching: function () { return "S'està cercant..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_cs.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_cs.js
new file mode 100644
index 0000000..b3c748c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_cs.js
@@ -0,0 +1,49 @@
+/**
+ * Select2 Czech translation.
+ *
+ * Author: Michal Marek <ahoj@michal-marek.cz>
+ * Author - sklonovani: David Vallner <david@vallner.net>
+ */
+(function ($) {
+ "use strict";
+ // use text for the numbers 2 through 4
+ var smallNumbers = {
+ 2: function(masc) { return (masc ? "dva" : "dvě"); },
+ 3: function() { return "tři"; },
+ 4: function() { return "čtyři"; }
+ }
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Nenalezeny žádné položky"; },
+ formatInputTooShort: function (input, min) {
+ var n = min - input.length;
+ if (n == 1) {
+ return "Prosím zadejte ještě jeden znak";
+ } else if (n <= 4) {
+ return "Prosím zadejte ještě další "+smallNumbers[n](true)+" znaky";
+ } else {
+ return "Prosím zadejte ještě dalších "+n+" znaků";
+ }
+ },
+ formatInputTooLong: function (input, max) {
+ var n = input.length - max;
+ if (n == 1) {
+ return "Prosím zadejte o jeden znak méně";
+ } else if (n <= 4) {
+ return "Prosím zadejte o "+smallNumbers[n](true)+" znaky méně";
+ } else {
+ return "Prosím zadejte o "+n+" znaků méně";
+ }
+ },
+ formatSelectionTooBig: function (limit) {
+ if (limit == 1) {
+ return "Můžete zvolit jen jednu položku";
+ } else if (limit <= 4) {
+ return "Můžete zvolit maximálně "+smallNumbers[limit](false)+" položky";
+ } else {
+ return "Můžete zvolit maximálně "+limit+" položek";
+ }
+ },
+ formatLoadMore: function (pageNumber) { return "Načítají se další výsledky..."; },
+ formatSearching: function () { return "Vyhledávání..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_da.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_da.js
new file mode 100644
index 0000000..dbce3e1
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_da.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 Danish translation.
+ *
+ * Author: Anders Jenbo <anders@jenbo.dk>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Ingen resultater fundet"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; },
+ formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); },
+ formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; },
+ formatSearching: function () { return "Søger…"; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_de.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_de.js
new file mode 100644
index 0000000..01f94ed
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_de.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 German translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; },
+ formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; },
+ formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse..."; },
+ formatSearching: function () { return "Suche..."; }
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_el.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_el.js
new file mode 100644
index 0000000..65b6e07
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_el.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 <Language> translation.
+ *
+ * Author: Your Name <your@email>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Δεν βρέθηκαν αποτελέσματα"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Παρακαλούμε εισάγετε " + n + " περισσότερους χαρακτήρες" + (n == 1 ? "" : "s"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Παρακαλούμε διαγράψτε " + n + " χαρακτήρες" + (n == 1 ? "" : "s"); },
+ formatSelectionTooBig: function (limit) { return "Μπορείτε να επιλέξετε μόνο " + limit + " αντικείμενο" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "Φόρτωση περισσότερων..."; },
+ formatSearching: function () { return "Αναζήτηση..."; }
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_en.js.template b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_en.js.template
new file mode 100644
index 0000000..f76b374
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_en.js.template
@@ -0,0 +1,17 @@
+/**
+ * Select2 <Language> translation.
+ *
+ * Author: Your Name <your@email>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "No matches found"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1 ? "" : "s"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); },
+ formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "Loading more results..."; },
+ formatSearching: function () { return "Searching..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_es.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_es.js
new file mode 100644
index 0000000..1b0a021
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_es.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 Spanish translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "No se encontraron resultados"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor adicione " + n + " caracter" + (n == 1? "" : "es"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor elimine " + n + " caracter" + (n == 1? "" : "es"); },
+ formatSelectionTooBig: function (limit) { return "Solo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "Cargando más resultados..."; },
+ formatSearching: function () { return "Buscando..."; }
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_et.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_et.js
new file mode 100644
index 0000000..a4045d2
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_et.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 Estonian translation.
+ *
+ * Author: Kuldar Kalvik <kuldar@kalvik.ee>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Tulemused puuduvad"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; },
+ formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; },
+ formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; },
+ formatSearching: function () { return "Otsin.."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_eu.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_eu.js
new file mode 100644
index 0000000..05665f5
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_eu.js
@@ -0,0 +1,43 @@
+/**
+ * Select2 Basque translation.
+ *
+ * Author: Julen Ruiz Aizpuru <julenx at gmail dot com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () {
+ return "Ez da bat datorrenik aurkitu";
+ },
+ formatInputTooShort: function (input, min) {
+ var n = min - input.length;
+ if (n === 1) {
+ return "Idatzi karaktere bat gehiago";
+ } else {
+ return "Idatzi " + n + " karaktere gehiago";
+ }
+ },
+ formatInputTooLong: function (input, max) {
+ var n = input.length - max;
+ if (n === 1) {
+ return "Idatzi karaktere bat gutxiago";
+ } else {
+ return "Idatzi " + n + " karaktere gutxiago";
+ }
+ },
+ formatSelectionTooBig: function (limit) {
+ if (limit === 1 ) {
+ return "Elementu bakarra hauta dezakezu";
+ } else {
+ return limit + " elementu hauta ditzakezu soilik";
+ }
+ },
+ formatLoadMore: function (pageNumber) {
+ return "Emaitza gehiago kargatzen...";
+ },
+ formatSearching: function () {
+ return "Bilatzen...";
+ }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_fi.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_fi.js
new file mode 100644
index 0000000..fa0917f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_fi.js
@@ -0,0 +1,28 @@
+/**
+ * Select2 Finnish translation
+ */
+(function ($) {
+ "use strict";
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () {
+ return "Ei tuloksia";
+ },
+ formatInputTooShort: function (input, min) {
+ var n = min - input.length;
+ return "Ole hyvä ja anna " + n + " merkkiä lisää.";
+ },
+ formatInputTooLong: function (input, max) {
+ var n = input.length - max;
+ return "Ole hyvä ja annar " + n + " merkkiä vähemmän.";
+ },
+ formatSelectionTooBig: function (limit) {
+ return "Voit valita ainoastaan " + limit + " kpl";
+ },
+ formatLoadMore: function (pageNumber) {
+ return "Ladataan lisää tuloksia...";
+ },
+ formatSearching: function () {
+ return "Etsitään...";
+ }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_fr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_fr.js
new file mode 100644
index 0000000..f8d3e48
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_fr.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 French translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Aucun résultat trouvé"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1? "" : "s") + " de plus"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de supprimer " + n + " caractère" + (n == 1? "" : "s"); },
+ formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires..."; },
+ formatSearching: function () { return "Recherche en cours..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_gl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_gl.js
new file mode 100644
index 0000000..1017c20
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_gl.js
@@ -0,0 +1,43 @@
+/**
+ * Select2 Galician translation
+ *
+ * Author: Leandro Regueiro <leandro.regueiro@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () {
+ return "Non se atoparon resultados";
+ },
+ formatInputTooShort: function (input, min) {
+ var n = min - input.length;
+ if (n === 1) {
+ return "Engada un carácter";
+ } else {
+ return "Engada " + n + " caracteres";
+ }
+ },
+ formatInputTooLong: function (input, max) {
+ var n = input.length - max;
+ if (n === 1) {
+ return "Elimine un carácter";
+ } else {
+ return "Elimine " + n + " caracteres";
+ }
+ },
+ formatSelectionTooBig: function (limit) {
+ if (limit === 1 ) {
+ return "Só pode seleccionar un elemento";
+ } else {
+ return "Só pode seleccionar " + limit + " elementos";
+ }
+ },
+ formatLoadMore: function (pageNumber) {
+ return "Cargando máis resultados...";
+ },
+ formatSearching: function () {
+ return "Buscando...";
+ }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_he.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_he.js
new file mode 100644
index 0000000..dd72eaa
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_he.js
@@ -0,0 +1,17 @@
+/**
+* Select2 Hebrew translation.
+*
+* Author: Yakir Sitbon <http://www.yakirs.net/>
+*/
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "לא נמצאו התאמות"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "נא להזין עוד " + n + " תווים נוספים"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "נא להזין פחות " + n + " תווים"; },
+ formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטים"; },
+ formatLoadMore: function (pageNumber) { return "טוען תוצאות נוספות..."; },
+ formatSearching: function () { return "מחפש..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_hr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_hr.js
new file mode 100644
index 0000000..b061540
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_hr.js
@@ -0,0 +1,42 @@
+/**
+ * Select2 Croatian translation.
+ *
+ * Author: Edi Modrić <edi.modric@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ var specialNumbers = {
+ 1: function(n) { return (n % 100 != 11 ? "znak" : "znakova"); },
+ 2: function(n) { return (n % 100 != 12 ? "znaka" : "znakova"); },
+ 3: function(n) { return (n % 100 != 13 ? "znaka" : "znakova"); },
+ 4: function(n) { return (n % 100 != 14 ? "znaka" : "znakova"); }
+ };
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Nema rezultata"; },
+ formatInputTooShort: function (input, min) {
+ var n = min - input.length;
+ var nMod10 = n % 10;
+
+ if (nMod10 > 0 && nMod10 < 5) {
+ return "Unesite još " + n + " " + specialNumbers[nMod10](n);
+ }
+
+ return "Unesite još " + n + " znakova";
+ },
+ formatInputTooLong: function (input, max) {
+ var n = input.length - max;
+ var nMod10 = n % 10;
+
+ if (nMod10 > 0 && nMod10 < 5) {
+ return "Unesite " + n + " " + specialNumbers[nMod10](n) + " manje";
+ }
+
+ return "Unesite " + n + " znakova manje";
+ },
+ formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; },
+ formatLoadMore: function (pageNumber) { return "Učitavanje rezultata..."; },
+ formatSearching: function () { return "Pretraga..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_hu.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_hu.js
new file mode 100644
index 0000000..572dea9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_hu.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 Hungarian translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Nincs találat."; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " kerekterrel több mint kellene."; },
+ formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; },
+ formatLoadMore: function (pageNumber) { return "Töltés..."; },
+ formatSearching: function () { return "Keresés..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_id.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_id.js
new file mode 100644
index 0000000..59a896a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_id.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 Indonesian translation.
+ *
+ * Author: Ibrahim Yusuf <ibrahim7usuf@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Tidak ada data yang sesuai"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); },
+ formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "Mengambil data..."; },
+ formatSearching: function () { return "Mencari..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_is.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_is.js
new file mode 100644
index 0000000..b10073b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_is.js
@@ -0,0 +1,16 @@
+/**
+ * Select2 Icelandic translation.
+ *
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Ekkert fannst"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n == 1 ? "" : "i") + " í viðbót"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n == 1 ? "" : "i"); },
+ formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; },
+ formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður..."; },
+ formatSearching: function () { return "Leita..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_it.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_it.js
new file mode 100644
index 0000000..98369dd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_it.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 Italian translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Nessuna corrispondenza trovata"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; },
+ formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); },
+ formatLoadMore: function (pageNumber) { return "Caricamento in corso..."; },
+ formatSearching: function () { return "Ricerca..."; }
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ja.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ja.js
new file mode 100644
index 0000000..81106e7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ja.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 Japanese translation.
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "該当なし"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れてください"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列が" + n + "文字長すぎます"; },
+ formatSelectionTooBig: function (limit) { return "最多で" + limit + "項目までしか選択できません"; },
+ formatLoadMore: function (pageNumber) { return "読込中・・・"; },
+ formatSearching: function () { return "検索中・・・"; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ko.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ko.js
new file mode 100644
index 0000000..864906b
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ko.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 <Language> translation.
+ *
+ * Author: Swen Mun <longfinfunnel@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "결과 없음"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"글자 더 입력해주세요."; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 깁니다. "+n+"글자 지워주세요."; },
+ formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 선택하실 수 있습니다."; },
+ formatLoadMore: function (pageNumber) { return "불러오는 중…"; },
+ formatSearching: function () { return "검색 중…"; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_lt.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_lt.js
new file mode 100644
index 0000000..dbb1f09
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_lt.js
@@ -0,0 +1,29 @@
+/**
+ * Select2 lithuanian translation.
+ *
+ * Author: CRONUS Karmalakas <cronus dot karmalakas at gmail dot com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Atitikmenų nerasta"; },
+ formatInputTooShort: function (input, min) {
+ var n = min - input.length,
+ suffix = (n % 10 == 1) && (n % 100 != 11) ? 'į' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'ius' : 'ių');
+ return "Įrašykite dar " + n + " simbol" + suffix;
+ },
+ formatInputTooLong: function (input, max) {
+ var n = input.length - max,
+ suffix = (n % 10 == 1) && (n % 100 != 11) ? 'į' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'ius' : 'ių');
+ return "Pašalinkite " + n + " simbol" + suffix;
+ },
+ formatSelectionTooBig: function (limit) {
+ var n = limit,
+ suffix = (n % 10 == 1) && (n % 100 != 11) ? 'ą' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'us' : 'ų');
+ return "Jūs galite pasirinkti tik " + limit + " element" + suffix;
+ },
+ formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų..."; },
+ formatSearching: function () { return "Ieškoma..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_lv.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_lv.js
new file mode 100644
index 0000000..2c05cfd
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_lv.js
@@ -0,0 +1,16 @@
+/**
+ * Select2 Latvian translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Sakritību nav"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Lūdzu ievadiet vēl " + n + " simbol" + (n == 11 ? "us" : (/^\d*[1]$/im.test(n)? "u" : "us")); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Lūdzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : (/^\d*[1]$/im.test(n)? "u" : "iem")) + " mazāk"; },
+ formatSelectionTooBig: function (limit) { return "Jūs varat izvēlēties ne vairāk kā " + limit + " element" + (limit == 11 ? "us" : (/^\d*[1]$/im.test(limit)? "u" : "us")); },
+ formatLoadMore: function (pageNumber) { return "Datu ielāde..."; },
+ formatSearching: function () { return "Meklēšana..."; }
+ });
+
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_mk.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_mk.js
new file mode 100644
index 0000000..69e3981
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_mk.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 Macedonian translation.
+ *
+ * Author: Marko Aleksic <psybaron@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Нема пронајдено совпаѓања"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внесете уште " + n + " карактер" + (n == 1 ? "" : "и"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внесете " + n + " помалку карактер" + (n == 1? "" : "и"); },
+ formatSelectionTooBig: function (limit) { return "Можете да изберете само " + limit + " ставк" + (limit == 1 ? "а" : "и"); },
+ formatLoadMore: function (pageNumber) { return "Вчитување резултати..."; },
+ formatSearching: function () { return "Пребарување..."; }
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_nl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_nl.js
new file mode 100644
index 0000000..2ee2662
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_nl.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 Dutch translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Geen resultaten gevonden"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " meer in"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " minder in"; },
+ formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; },
+ formatLoadMore: function (pageNumber) { return "Meer resultaten laden..."; },
+ formatSearching: function () { return "Zoeken..."; },
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_no.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_no.js
new file mode 100644
index 0000000..0831360
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_no.js
@@ -0,0 +1,18 @@
+/**
+ * Select2 Norwegian translation.
+ *
+ * Author: Torgeir Veimo <torgeir.veimo@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Ingen treff"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; },
+ formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; },
+ formatLoadMore: function (pageNumber) { return "Laster flere resultater..."; },
+ formatSearching: function () { return "Søker..."; }
+ });
+})(jQuery);
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pl.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pl.js
new file mode 100644
index 0000000..1d5b327
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pl.js
@@ -0,0 +1,37 @@
+/**
+ * Select2 Polish translation.
+ *
+ * Author: Jan Kondratowicz <jan@kondratowicz.pl>
+ */
+(function ($) {
+ "use strict";
+
+ var pl_suffix = function(n) {
+ if(n == 1) return "";
+ if((n%100 > 1 && n%100 < 5) || (n%100 > 20 && n%10 > 1 && n%10 < 5)) return "i";
+ return "ów";
+ };
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () {
+ return "Brak wyników.";
+ },
+ formatInputTooShort: function (input, min) {
+ var n = min - input.length;
+ return "Wpisz jeszcze " + n + " znak" + pl_suffix(n) + ".";
+ },
+ formatInputTooLong: function (input, max) {
+ var n = input.length - max;
+ return "Wpisana fraza jest za długa o " + n + " znak" + pl_suffix(n) + ".";
+ },
+ formatSelectionTooBig: function (limit) {
+ return "Możesz zaznaczyć najwyżej " + limit + " element" + pl_suffix(limit) + ".";
+ },
+ formatLoadMore: function (pageNumber) {
+ return "Ładowanie wyników...";
+ },
+ formatSearching: function () {
+ return "Szukanie...";
+ }
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pt-BR.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pt-BR.js
new file mode 100644
index 0000000..701fb7f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pt-BR.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 Brazilian Portuguese translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Nenhum resultado encontrado"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Informe " + n + " caracter" + (n == 1? "" : "es"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caracter" + (n == 1? "" : "es"); },
+ formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "Carregando mais resultados..."; },
+ formatSearching: function () { return "Buscando..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pt-PT.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pt-PT.js
new file mode 100644
index 0000000..008653e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_pt-PT.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 Portuguese (Portugal) translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Nenhum resultado encontrado"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " caracter" + (n == 1 ? "" : "es"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caracter" + (n == 1 ? "" : "es"); },
+ formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "A carregar mais resultados..."; },
+ formatSearching: function () { return "A pesquisar..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ro.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ro.js
new file mode 100644
index 0000000..88b3ac4
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ro.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 Romanian translation.
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Nu a fost găsit nimic"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); },
+ formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); },
+ formatLoadMore: function (pageNumber) { return "Se încarcă..."; },
+ formatSearching: function () { return "Căutare..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ru.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ru.js
new file mode 100644
index 0000000..3da956a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ru.js
@@ -0,0 +1,15 @@
+/**
+ * Select2 Russian translation
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Совпадений не найдено"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Пожалуйста, введите еще " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5) ? "а" : "ов")); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Пожалуйста, введите на " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5)? "а" : "ов")) + " меньше"; },
+ formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit == 1 ? "а" : "ов"); },
+ formatLoadMore: function (pageNumber) { return "Загрузка данных..."; },
+ formatSearching: function () { return "Поиск..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_sk.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_sk.js
new file mode 100644
index 0000000..8d4e46a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_sk.js
@@ -0,0 +1,48 @@
+/**
+ * Select2 Slovak translation.
+ *
+ * Author: David Vallner <david@vallner.net>
+ */
+(function ($) {
+ "use strict";
+ // use text for the numbers 2 through 4
+ var smallNumbers = {
+ 2: function(masc) { return (masc ? "dva" : "dve"); },
+ 3: function() { return "tri"; },
+ 4: function() { return "štyri"; }
+ }
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Nenašli sa žiadne položky"; },
+ formatInputTooShort: function (input, min) {
+ var n = min - input.length;
+ if (n == 1) {
+ return "Prosím zadajte ešte jeden znak";
+ } else if (n <= 4) {
+ return "Prosím zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky";
+ } else {
+ return "Prosím zadajte ešte ďalších "+n+" znakov";
+ }
+ },
+ formatInputTooLong: function (input, max) {
+ var n = input.length - max;
+ if (n == 1) {
+ return "Prosím zadajte o jeden znak menej";
+ } else if (n <= 4) {
+ return "Prosím zadajte o "+smallNumbers[n](true)+" znaky menej";
+ } else {
+ return "Prosím zadajte o "+n+" znakov menej";
+ }
+ },
+ formatSelectionTooBig: function (limit) {
+ if (limit == 1) {
+ return "Môžete zvoliť len jednu položku";
+ } else if (limit <= 4) {
+ return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky";
+ } else {
+ return "Môžete zvoliť najviac "+limit+" položiek";
+ }
+ },
+ formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky..."; },
+ formatSearching: function () { return "Vyhľadávanie..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_sv.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_sv.js
new file mode 100644
index 0000000..9f09de3
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_sv.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 Swedish translation.
+ *
+ * Author: Jens Rantil <jens.rantil@telavox.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Inga träffar"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; },
+ formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; },
+ formatLoadMore: function (pageNumber) { return "Laddar fler resultat..."; },
+ formatSearching: function () { return "Söker..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_tr.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_tr.js
new file mode 100644
index 0000000..b47a2fa
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_tr.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 Turkish translation.
+ *
+ * Author: Salim KAYABAŞI <salim.kayabasi@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Sonuç bulunamadı"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; },
+ formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; },
+ formatLoadMore: function (pageNumber) { return "Daha fazla..."; },
+ formatSearching: function () { return "Aranıyor..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ua.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ua.js
new file mode 100644
index 0000000..58d31e7
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_ua.js
@@ -0,0 +1,17 @@
+/**
+ * Select2 <Language> translation.
+ *
+ * Author: bigmihail <bigmihail@bigmir.net>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Нічого не знайдено"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка ще " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ]; },
+ formatInputTooLong: function (input, max) { var n = input.length - max, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка на " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ] + " менше"; },
+ formatSelectionTooBig: function (limit) {var s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Ви можете вибрати лише " + limit + " елемент" + s[ (limit%100>4 && limit%100<=20)? 2 : p[Math.min(limit%10, 5)] ]; },
+ formatLoadMore: function (pageNumber) { return "Завантаження даних..."; },
+ formatSearching: function () { return "Пошук..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_vi.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_vi.js
new file mode 100644
index 0000000..0a45dfc
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_vi.js
@@ -0,0 +1,18 @@
+/**
+ * Select2 Vietnamese translation.
+ *
+ * Author: Long Nguyen <olragon@gmail.com>
+ */
+(function ($) {
+ "use strict";
+
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "Không tìm thấy kết quả"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiều hơn " + n + " ký tự" + (n == 1 ? "" : "s"); },
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hơn " + n + " ký tự" + (n == 1? "" : "s"); },
+ formatSelectionTooBig: function (limit) { return "Chỉ có thể chọn được " + limit + " tùy chọn" + (limit == 1 ? "" : "s"); },
+ formatLoadMore: function (pageNumber) { return "Đang lấy thêm kết quả..."; },
+ formatSearching: function () { return "Đang tìm..."; }
+ });
+})(jQuery);
+
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_zh-CN.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_zh-CN.js
new file mode 100644
index 0000000..49d8e59
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_zh-CN.js
@@ -0,0 +1,14 @@
+/**
+ * Select2 Chinese translation
+ */
+(function ($) {
+ "use strict";
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "没有找到匹配项"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";},
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";},
+ formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; },
+ formatLoadMore: function (pageNumber) { return "加载结果中..."; },
+ formatSearching: function () { return "搜索中..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_zh-TW.js b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_zh-TW.js
new file mode 100755
index 0000000..3d447d6
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2_locale_zh-TW.js
@@ -0,0 +1,14 @@
+/**
+ * Select2 Traditional Chinese translation
+ */
+(function ($) {
+ "use strict";
+ $.extend($.fn.select2.defaults, {
+ formatNoMatches: function () { return "沒有找到相符的項目"; },
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "請再輸入" + n + "個字元";},
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";},
+ formatSelectionTooBig: function (limit) { return "你只能選擇最多" + limit + "項"; },
+ formatLoadMore: function (pageNumber) { return "載入中..."; },
+ formatSearching: function () { return "搜尋中..."; }
+ });
+})(jQuery);
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2-spinner.gif b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2-spinner.gif
new file mode 100644
index 0000000..5b33f7e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2-spinner.gif differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2x2.png b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2x2.png
new file mode 100644
index 0000000..4bdd5c9
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/select2-3.4.1/select2x2.png differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial.css b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial.css
new file mode 100644
index 0000000..c55a66e
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial.css
@@ -0,0 +1,505 @@
+@charset "UTF-8";
+
+/*!
+ Zocial Butons
+ http://zocial.smcllns.com
+ by Sam Collins (@smcllns)
+ License: http://opensource.org/licenses/mit-license.php
+*/
+
+
+/* Button structure */
+
+.zocial,
+a.zocial {
+ border: 1px solid #777;
+ border-color: rgba(0,0,0,0.2);
+ border-bottom-color: #333;
+ border-bottom-color: rgba(0,0,0,0.4);
+ color: #fff;
+ -moz-box-shadow: inset 0 0.08em 0 rgba(255,255,255,0.4), inset 0 0 0.1em rgba(255,255,255,0.9);
+ -webkit-box-shadow: inset 0 0.08em 0 rgba(255,255,255,0.4), inset 0 0 0.1em rgba(255,255,255,0.9);
+ box-shadow: inset 0 0.08em 0 rgba(255,255,255,0.4), inset 0 0 0.1em rgba(255,255,255,0.9);
+ cursor: pointer;
+ display: inline-block;
+ font: bold 100%/2.1 "Lucida Grande", Tahoma, sans-serif;
+ padding: 0 .95em 0 0;
+ text-align: center;
+ text-decoration: none;
+ text-shadow: 0 1px 0 rgba(0,0,0,0.5);
+ white-space: nowrap;
+
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+
+ position: relative;
+
+ -moz-border-radius: .3em;
+ -webkit-border-radius: .3em;
+ border-radius: .3em;
+}
+
+.zocial:before {
+ content: "";
+ border-right: 0.075em solid rgba(0,0,0,0.1);
+ float: left;
+ font: 120%/1.65 zocial;
+ font-style: normal;
+ font-weight: normal;
+ margin: 0 0.5em 0 0;
+ padding: 0 0.5em;
+ text-align: center;
+ text-decoration: none;
+ text-transform: none;
+
+ -moz-box-shadow: 0.075em 0 0 rgba(255,255,255,0.25);
+ -webkit-box-shadow: 0.075em 0 0 rgba(255,255,255,0.25);
+ box-shadow: 0.075em 0 0 rgba(255,255,255,0.25);
+
+ -moz-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ font-smoothing: antialiased;
+}
+
+.zocial:active {
+ outline: none; /* outline is visible on :focus */
+}
+
+.zocial:hover,
+.zocial:focus {
+ color: #fff;
+}
+
+/* Buttons can be displayed as standalone icons by adding a class of "icon" */
+
+.zocial.icon {
+ overflow: hidden;
+ max-width: 2.4em;
+ padding-left: 0;
+ padding-right: 0;
+ max-height: 2.15em;
+ white-space: nowrap;
+}
+.zocial.icon:before {
+ padding: 0;
+ width: 2em;
+ height: 2em;
+
+ box-shadow: none;
+ border: none;
+}
+
+/* Gradients */
+
+.zocial {
+ background-image: -moz-linear-gradient(rgba(255,255,255,.1), rgba(255,255,255,.05) 49%, rgba(0,0,0,.05) 51%, rgba(0,0,0,.1));
+ background-image: -ms-linear-gradient(rgba(255,255,255,.1), rgba(255,255,255,.05) 49%, rgba(0,0,0,.05) 51%, rgba(0,0,0,.1));
+ background-image: -o-linear-gradient(rgba(255,255,255,.1), rgba(255,255,255,.05) 49%, rgba(0,0,0,.05) 51%, rgba(0,0,0,.1));
+ background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,.1)), color-stop(49%, rgba(255,255,255,.05)), color-stop(51%, rgba(0,0,0,.05)), to(rgba(0,0,0,.1)));
+ background-image: -webkit-linear-gradient(rgba(255,255,255,.1), rgba(255,255,255,.05) 49%, rgba(0,0,0,.05) 51%, rgba(0,0,0,.1));
+ background-image: linear-gradient(rgba(255,255,255,.1), rgba(255,255,255,.05) 49%, rgba(0,0,0,.05) 51%, rgba(0,0,0,.1));
+}
+
+.zocial:hover, .zocial:focus {
+ background-image: -moz-linear-gradient(rgba(255,255,255,.15) 49%, rgba(0,0,0,.1) 51%, rgba(0,0,0,.15));
+ background-image: -ms-linear-gradient(rgba(255,255,255,.15) 49%, rgba(0,0,0,.1) 51%, rgba(0,0,0,.15));
+ background-image: -o-linear-gradient(rgba(255,255,255,.15) 49%, rgba(0,0,0,.1) 51%, rgba(0,0,0,.15));
+ background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,.15)), color-stop(49%, rgba(255,255,255,.15)), color-stop(51%, rgba(0,0,0,.1)), to(rgba(0,0,0,.15)));
+ background-image: -webkit-linear-gradient(rgba(255,255,255,.15) 49%, rgba(0,0,0,.1) 51%, rgba(0,0,0,.15));
+ background-image: linear-gradient(rgba(255,255,255,.15) 49%, rgba(0,0,0,.1) 51%, rgba(0,0,0,.15));
+}
+
+.zocial:active {
+ background-image: -moz-linear-gradient(bottom, rgba(255,255,255,.1), rgba(255,255,255,0) 30%, transparent 50%, rgba(0,0,0,.1));
+ background-image: -ms-linear-gradient(bottom, rgba(255,255,255,.1), rgba(255,255,255,0) 30%, transparent 50%, rgba(0,0,0,.1));
+ background-image: -o-linear-gradient(bottom, rgba(255,255,255,.1), rgba(255,255,255,0) 30%, transparent 50%, rgba(0,0,0,.1));
+ background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,.1)), color-stop(30%, rgba(255,255,255,0)), color-stop(50%, transparent), to(rgba(0,0,0,.1)));
+ background-image: -webkit-linear-gradient(bottom, rgba(255,255,255,.1), rgba(255,255,255,0) 30%, transparent 50%, rgba(0,0,0,.1));
+ background-image: linear-gradient(bottom, rgba(255,255,255,.1), rgba(255,255,255,0) 30%, transparent 50%, rgba(0,0,0,.1));
+}
+
+/* Adjustments for light background buttons */
+
+.zocial.acrobat,
+.zocial.bitcoin,
+.zocial.cloudapp,
+.zocial.dropbox,
+.zocial.email,
+.zocial.eventful,
+.zocial.github,
+.zocial.gmail,
+.zocial.instapaper,
+.zocial.itunes,
+.zocial.ninetyninedesigns,
+.zocial.openid,
+.zocial.plancast,
+.zocial.pocket,
+.zocial.posterous,
+.zocial.reddit,
+.zocial.secondary,
+.zocial.stackoverflow,
+.zocial.viadeo,
+.zocial.weibo,
+.zocial.wikipedia {
+ border: 1px solid #aaa;
+ border-color: rgba(0,0,0,0.3);
+ border-bottom-color: #777;
+ border-bottom-color: rgba(0,0,0,0.5);
+ -moz-box-shadow: inset 0 0.08em 0 rgba(255,255,255,0.7), inset 0 0 0.08em rgba(255,255,255,0.5);
+ -webkit-box-shadow: inset 0 0.08em 0 rgba(255,255,255,0.7), inset 0 0 0.08em rgba(255,255,255,0.5);
+ box-shadow: inset 0 0.08em 0 rgba(255,255,255,0.7), inset 0 0 0.08em rgba(255,255,255,0.5);
+ text-shadow: 0 1px 0 rgba(255,255,255,0.8);
+}
+
+/* :hover adjustments for light background buttons */
+
+.zocial.acrobat:focus,
+.zocial.acrobat:hover,
+.zocial.bitcoin:focus,
+.zocial.bitcoin:hover,
+.zocial.dropbox:focus,
+.zocial.dropbox:hover,
+.zocial.email:focus,
+.zocial.email:hover,
+.zocial.eventful:focus,
+.zocial.eventful:hover,
+.zocial.github:focus,
+.zocial.github:hover,
+.zocial.gmail:focus,
+.zocial.gmail:hover,
+.zocial.instapaper:focus,
+.zocial.instapaper:hover,
+.zocial.itunes:focus,
+.zocial.itunes:hover,
+.zocial.ninetyninedesigns:focus,
+.zocial.ninetyninedesigns:hover,
+.zocial.openid:focus,
+.zocial.openid:hover,
+.zocial.plancast:focus,
+.zocial.plancast:hover,
+.zocial.pocket:focus,
+.zocial.pocket:hover,
+.zocial.posterous:focus,
+.zocial.posterous:hover,
+.zocial.reddit:focus,
+.zocial.reddit:hover,
+.zocial.secondary:focus,
+.zocial.secondary:hover,
+.zocial.stackoverflow:focus,
+.zocial.stackoverflow:hover,
+.zocial.twitter:focus,
+.zocial.viadeo:focus,
+.zocial.viadeo:hover,
+.zocial.weibo:focus,
+.zocial.weibo:hover,
+.zocial.wikipedia:focus,
+.zocial.wikipedia:hover {
+ background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0.5)), color-stop(49%, rgba(255,255,255,0.2)), color-stop(51%, rgba(0,0,0,0.05)), to(rgba(0,0,0,0.15)));
+ background-image: -moz-linear-gradient(top, rgba(255,255,255,0.5), rgba(255,255,255,0.2) 49%, rgba(0,0,0,0.05) 51%, rgba(0,0,0,0.15));
+ background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.5), rgba(255,255,255,0.2) 49%, rgba(0,0,0,0.05) 51%, rgba(0,0,0,0.15));
+ background-image: -o-linear-gradient(top, rgba(255,255,255,0.5), rgba(255,255,255,0.2) 49%, rgba(0,0,0,0.05) 51%, rgba(0,0,0,0.15));
+ background-image: -ms-linear-gradient(top, rgba(255,255,255,0.5), rgba(255,255,255,0.2) 49%, rgba(0,0,0,0.05) 51%, rgba(0,0,0,0.15));
+ background-image: linear-gradient(top, rgba(255,255,255,0.5), rgba(255,255,255,0.2) 49%, rgba(0,0,0,0.05) 51%, rgba(0,0,0,0.15));
+}
+
+/* :active adjustments for light background buttons */
+
+.zocial.acrobat:active,
+.zocial.bitcoin:active,
+.zocial.dropbox:active,
+.zocial.email:active,
+.zocial.eventful:active,
+.zocial.github:active,
+.zocial.gmail:active,
+.zocial.instapaper:active,
+.zocial.itunes:active,
+.zocial.ninetyninedesigns:active,
+.zocial.openid:active,
+.zocial.plancast:active,
+.zocial.pocket:active,
+.zocial.posterous:active,
+.zocial.reddit:active,
+.zocial.secondary:active,
+.zocial.stackoverflow:active,
+.zocial.viadeo:active,
+.zocial.weibo:active,
+.zocial.wikipedia:active {
+ background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0)), color-stop(30%, rgba(255,255,255,0)), color-stop(50%, rgba(0,0,0,0)), to(rgba(0,0,0,0.1)));
+ background-image: -moz-linear-gradient(bottom, rgba(255,255,255,0), rgba(255,255,255,0) 30%, rgba(0,0,0,0) 50%, rgba(0,0,0,0.1));
+ background-image: -webkit-linear-gradient(bottom, rgba(255,255,255,0), rgba(255,255,255,0) 30%, rgba(0,0,0,0) 50%, rgba(0,0,0,0.1));
+ background-image: -o-linear-gradient(bottom, rgba(255,255,255,0), rgba(255,255,255,0) 30%, rgba(0,0,0,0) 50%, rgba(0,0,0,0.1));
+ background-image: -ms-linear-gradient(bottom, rgba(255,255,255,0), rgba(255,255,255,0) 30%, rgba(0,0,0,0) 50%, rgba(0,0,0,0.1));
+ background-image: linear-gradient(bottom, rgba(255,255,255,0), rgba(255,255,255,0) 30%, rgba(0,0,0,0) 50%, rgba(0,0,0,0.1));
+}
+
+/* Button icon */
+.zocial.acrobat:before { content: "\f100"; }
+.zocial.amazon:before { content: "\f101"; }
+.zocial.android:before { content: "\f102"; }
+.zocial.angellist:before { content: "\f103"; }
+.zocial.aol:before { content: "\f104"; }
+.zocial.appnet:before { content: "\f105"; }
+.zocial.appstore:before { content: "\f106"; }
+.zocial.bitbucket:before { content: "\f107"; }
+.zocial.bitcoin:before { content: "\f108"; }
+.zocial.blogger:before { content: "\f109"; }
+.zocial.buffer:before { content: "\f10a"; }
+.zocial.cal:before { content: "\f10b"; }
+.zocial.call:before { content: "\f10c"; }
+.zocial.cart:before { content: "\f10d"; }
+.zocial.chrome:before { content: "\f10e"; }
+.zocial.cloudapp:before { content: "\f10f"; }
+.zocial.creativecommons:before { content: "\f110"; }
+.zocial.delicious:before { content: "\f111"; }
+.zocial.digg:before { content: "\f112"; }
+.zocial.disqus:before { content: "\f113"; }
+.zocial.dribbble:before { content: "\f114"; }
+.zocial.dropbox:before { content: "\f115"; }
+.zocial.drupal:before { content: "\f116"; }
+.zocial.dwolla:before { content: "\f118"; }
+.zocial.email:before { content: "\f119"; }
+.zocial.eventasaurus:before { content: "\f11a"; }
+.zocial.eventbrite:before { content: "\f11b"; }
+.zocial.eventful:before { content: "\f11c"; }
+.zocial.evernote:before { content: "\f11d"; }
+.zocial.facebook:before { content: "\f11e"; }
+.zocial.fivehundredpx:before { content: "\f11f"; }
+.zocial.flattr:before { content: "\f120"; }
+.zocial.flickr:before { content: "\f121"; }
+.zocial.forrst:before { content: "\f122"; }
+.zocial.foursquare:before { content: "\f123"; }
+.zocial.github:before { content: "\f124"; }
+.zocial.gmail:before { content: "\f125"; }
+.zocial.google:before { content: "\f126"; }
+.zocial.googleplay:before { content: "\f127"; }
+.zocial.googleplus:before { content: "\f128"; }
+.zocial.gowalla:before { content: "\f129"; }
+.zocial.grooveshark:before { content: "\f12a"; }
+.zocial.guest:before { content: "\f12b"; }
+.zocial.html5:before { content: "\f12c"; }
+.zocial.ie:before { content: "\f12d"; }
+.zocial.instagram:before { content: "\f12e"; }
+.zocial.instapaper:before { content: "\f12f"; }
+.zocial.intensedebate:before { content: "\f130"; }
+.zocial.itunes:before { content: "\f131"; }
+.zocial.klout:before { content: "\f132"; }
+.zocial.lanyrd:before { content: "\f133"; }
+.zocial.lastfm:before { content: "\f134"; }
+.zocial.lego:before { content: "\f135"; }
+.zocial.linkedin:before { content: "\f136"; }
+.zocial.lkdto:before { content: "\f137"; }
+.zocial.logmein:before { content: "\f138"; }
+.zocial.macstore:before { content: "\f139"; }
+.zocial.meetup:before { content: "\f13a"; }
+.zocial.myspace:before { content: "\f13b"; }
+.zocial.ninetyninedesigns:before { content: "\f13c"; }
+.zocial.openid:before { content: "\f13d"; }
+.zocial.opentable:before { content: "\f13e"; }
+.zocial.paypal:before { content: "\f13f"; }
+.zocial.persona:before { content: "\f164"; }
+.zocial.pinboard:before { content: "\f140"; }
+.zocial.pinterest:before { content: "\f141"; }
+.zocial.plancast:before { content: "\f142"; }
+.zocial.plurk:before { content: "\f143"; }
+.zocial.pocket:before { content: "\f144"; }
+.zocial.podcast:before { content: "\f145"; }
+.zocial.posterous:before { content: "\f146"; }
+.zocial.print:before { content: "\f147"; }
+.zocial.quora:before { content: "\f148"; }
+.zocial.reddit:before { content: "\f149"; }
+.zocial.rss:before { content: "\f14a"; }
+.zocial.scribd:before { content: "\f14b"; }
+.zocial.skype:before { content: "\f14c"; }
+.zocial.smashing:before { content: "\f14d"; }
+.zocial.songkick:before { content: "\f14e"; }
+.zocial.soundcloud:before { content: "\f14f"; }
+.zocial.spotify:before { content: "\f150"; }
+.zocial.stackoverflow:before { content: "\f151"; }
+.zocial.statusnet:before { content: "\f152"; }
+.zocial.steam:before { content: "\f153"; }
+.zocial.stripe:before { content: "\f154"; }
+.zocial.stumbleupon:before { content: "\f155"; }
+.zocial.tumblr:before { content: "\f156"; }
+.zocial.twitter:before { content: "\f157"; }
+.zocial.viadeo:before { content: "\f158"; }
+.zocial.vimeo:before { content: "\f159"; }
+.zocial.vk:before { content: "\f15a"; }
+.zocial.weibo:before { content: "\f15b"; }
+.zocial.wikipedia:before { content: "\f15c"; }
+.zocial.windows:before { content: "\f15d"; }
+.zocial.wordpress:before { content: "\f15e"; }
+.zocial.xing:before { content: "\f15f"; }
+.zocial.yahoo:before { content: "\f160"; }
+.zocial.ycombinator:before { content: "\f161"; }
+.zocial.yelp:before { content: "\f162"; }
+.zocial.youtube:before { content: "\f163"; }
+
+/* Button color */
+.zocial.acrobat:before {color: #FB0000;}
+.zocial.bitcoin:before {color: #f7931a;}
+.zocial.dropbox:before {color: #1f75cc;}
+.zocial.drupal:before {color: #fff;}
+.zocial.email:before {color: #312c2a;}
+.zocial.eventasaurus:before {color: #9de428;}
+.zocial.eventful:before {color: #0066CC;}
+.zocial.fivehundredpx:before {color: #29b6ff;}
+.zocial.forrst:before {color: #50894f;}
+.zocial.gmail:before {color: #f00;}
+.zocial.itunes:before {color: #1a6dd2;}
+.zocial.lego:before {color:#fff900;}
+.zocial.ninetyninedesigns:before {color: #f50;}
+.zocial.openid:before {color: #ff921d;}
+.zocial.pocket:before {color:#ee4056;}
+.zocial.persona:before {color:#fff;}
+.zocial.reddit:before {color: red;}
+.zocial.scribd:before {color: #00d5ea;}
+.zocial.stackoverflow:before {color: #ff7a15;}
+.zocial.statusnet:before {color: #fff;}
+.zocial.viadeo:before {color: #f59b20;}
+.zocial.weibo:before {color: #e6162d;}
+
+/* Button background and text color */
+
+.zocial.acrobat {background-color: #fff; color: #000;}
+.zocial.amazon {background-color: #ffad1d; color: #030037; text-shadow: 0 1px 0 rgba(255,255,255,0.5);}
+.zocial.android {background-color: #a4c639;}
+.zocial.angellist {background-color: #000;}
+.zocial.aol {background-color: #f00;}
+.zocial.appnet {background-color: #3178bd;}
+.zocial.appstore {background-color: #000;}
+.zocial.bitbucket {background-color: #205081;}
+.zocial.bitcoin {background-color: #efefef; color: #4d4d4d;}
+.zocial.blogger {background-color: #ee5a22;}
+.zocial.buffer {background-color: #232323;}
+.zocial.call {background-color: #008000;}
+.zocial.cal {background-color: #d63538;}
+.zocial.cart {background-color: #333;}
+.zocial.chrome {background-color: #006cd4;}
+.zocial.cloudapp {background-color: #fff; color: #312c2a;}
+.zocial.creativecommons {background-color: #000;}
+.zocial.delicious {background-color: #3271cb;}
+.zocial.digg {background-color: #164673;}
+.zocial.disqus {background-color: #5d8aad;}
+.zocial.dribbble {background-color: #ea4c89;}
+.zocial.dropbox {background-color: #fff; color: #312c2a;}
+.zocial.drupal {background-color: #0077c0; color: #fff;}
+.zocial.dwolla {background-color: #e88c02;}
+.zocial.email {background-color: #f0f0eb; color: #312c2a;}
+.zocial.eventasaurus {background-color: #192931; color: #fff;}
+.zocial.eventbrite {background-color: #ff5616;}
+.zocial.eventful {background-color: #fff; color: #47ab15;}
+.zocial.evernote {background-color: #6bb130; color: #fff;}
+.zocial.facebook {background-color: #4863ae;}
+.zocial.fivehundredpx {background-color: #333;}
+.zocial.flattr {background-color: #8aba42;}
+.zocial.flickr {background-color: #ff0084;}
+.zocial.forrst {background-color: #1e360d;}
+.zocial.foursquare {background-color: #44a8e0;}
+.zocial.github {background-color: #fbfbfb; color: #050505;}
+.zocial.gmail {background-color: #efefef; color: #222;}
+.zocial.google {background-color: #4e6cf7;}
+.zocial.googleplay {background-color: #000;}
+.zocial.googleplus {background-color: #dd4b39;}
+.zocial.gowalla {background-color: #ff720a;}
+.zocial.grooveshark {background-color: #111; color:#eee;}
+.zocial.guest {background-color: #1b4d6d;}
+.zocial.html5 {background-color: #ff3617;}
+.zocial.ie {background-color: #00a1d9;}
+.zocial.instapaper {background-color: #eee; color: #222;}
+.zocial.instagram {background-color: #3f729b;}
+.zocial.intensedebate {background-color: #0099e1;}
+.zocial.klout {background-color: #e34a25;}
+.zocial.itunes {background-color: #efefeb; color: #312c2a;}
+.zocial.lanyrd {background-color: #2e6ac2;}
+.zocial.lastfm {background-color: #dc1a23;}
+.zocial.lego {background-color: #fb0000;}
+.zocial.linkedin {background-color: #0083a8;}
+.zocial.lkdto {background-color: #7c786f;}
+.zocial.logmein {background-color: #000;}
+.zocial.macstore {background-color: #007dcb}
+.zocial.meetup {background-color: #ff0026;}
+.zocial.myspace {background-color: #000;}
+.zocial.ninetyninedesigns {background-color: #fff; color: #072243;}
+.zocial.openid {background-color: #f5f5f5; color: #333;}
+.zocial.opentable {background-color: #990000;}
+.zocial.paypal {background-color: #fff; color: #32689a; text-shadow: 0 1px 0 rgba(255,255,255,0.5);}
+.zocial.persona {background-color: #1258a1; color: #fff;}
+.zocial.pinboard {background-color: blue;}
+.zocial.pinterest {background-color: #c91618;}
+.zocial.plancast {background-color: #e7ebed; color: #333;}
+.zocial.plurk {background-color: #cf682f;}
+.zocial.pocket {background-color: #fff; color: #777;}
+.zocial.podcast {background-color: #9365ce;}
+.zocial.posterous {background-color: #ffd959; color: #bc7134;}
+.zocial.print {background-color: #f0f0eb; color: #222; text-shadow: 0 1px 0 rgba(255,255,255,0.8);}
+.zocial.quora {background-color: #a82400;}
+.zocial.reddit {background-color: #fff; color: #222;}
+.zocial.rss {background-color: #ff7f25;}
+.zocial.scribd {background-color: #231c1a;}
+.zocial.skype {background-color: #00a2ed;}
+.zocial.smashing {background-color: #ff4f27;}
+.zocial.songkick {background-color: #ff0050;}
+.zocial.soundcloud {background-color: #ff4500;}
+.zocial.spotify {background-color: #60af00;}
+.zocial.stackoverflow {background-color: #fff; color: #555;}
+.zocial.statusnet {background-color: #829d25;}
+.zocial.steam {background-color: #000;}
+.zocial.stripe {background-color: #2f7ed6;}
+.zocial.stumbleupon {background-color: #eb4924;}
+.zocial.tumblr {background-color: #374a61;}
+.zocial.twitter {background-color: #46c0fb;}
+.zocial.viadeo {background-color: #fff; color: #000;}
+.zocial.vimeo {background-color: #00a2cd;}
+.zocial.vk {background-color: #45688E;}
+.zocial.weibo {background-color: #faf6f1; color: #000;}
+.zocial.wikipedia {background-color: #fff; color: #000;}
+.zocial.windows {background-color: #0052a4; color: #fff;}
+.zocial.wordpress {background-color: #464646;}
+.zocial.xing {background-color: #0a5d5e;}
+.zocial.yahoo {background-color: #a200c2;}
+.zocial.ycombinator {background-color: #ff6600;}
+.zocial.yelp {background-color: #e60010;}
+.zocial.youtube {background-color: #f00;}
+
+/*
+The Miscellaneous Buttons
+These button have no icons and can be general purpose buttons while ensuring consistent button style
+Credit to @guillermovs for suggesting
+*/
+
+.zocial.primary, .zocial.secondary {margin: 0.1em 0; padding: 0 1em;}
+.zocial.primary:before, .zocial.secondary:before {display: none;}
+.zocial.primary {background-color: #333;}
+.zocial.secondary {background-color: #f0f0eb; color: #222; text-shadow: 0 1px 0 rgba(255,255,255,0.8);}
+
+/* Any browser-specific adjustments */
+
+button:-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/* Reference icons from font-files
+** Base 64-encoded version recommended to resolve cross-site font-loading issues
+*/
+
+@font-face {
+ font-family: "zocial";
+ src: url("./zocial.eot");
+ src: url("./zocial.eot?#iefix") format("embedded-opentype"),
+ url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAEVIAA0AAAAAY9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABFLAAAABkAAAAcc+CDZk9TLzIAAAGgAAAASQAAAGBQBl3KY21hcAAAAqAAAABMAAABUvFF+FhjdnQgAAAC7AAAAAQAAAAEABEBRGdhc3AAAEUkAAAACAAAAAj//wADZ2x5ZgAAA8QAAD7MAABY4HVSYx5oZWFkAAABMAAAADAAAAA2A/nHeWhoZWEAAAFgAAAAIAAAACQEdwEbaG10eAAAAewAAACzAAAA2gWL/3lsb2NhAAAC8AAAANIAAADSYgpLMG1heHAAAAGAAAAAHwAAACAAvgE3bmFtZQAAQpAAAAEjAAAB9XSZ105wb3N0AABDtAAAAW0AAAQSQQeQ6XjaY2BkYGAA4k+d//nj+W2+MnAzMYDARX/nRBj9f8H/DUxzmLiAXA4GsDQATKILwnjaY2BkYGDi+r+BQY+J4f+C/6lMcxiAIiiAFQCI6gWUeNpjYGRgYMhgZGMQYQABJiBmZACJOTDogQQAEJMA9wB42mNgYfzDOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGAQYECEhzTWFoYFD4mMJ44P8BBj0mLoYAkBokJQoMjABG1At0AAAAeNodjjEPAUEQhV8USkGlkUiIS5xahEZEqSHX6vwV/0OluM6VnOIql2gQEQmF0MlJVCQKz9vdzc6b2S/zZrBEDub4ejGQkjBBFgMGvMBBhR/LW3B5FzuYgjdUFb8oYWxpGTW4CLnQ7xt17qU7jNR9RUe8iyEy0gln1h8MGfHHjfGiz4RrPrmyXm1NbPKkzNM6BW6VOZaAZ4UGX5yjzwCeOoo8MtZ9MBJLc4o8ema7PyjoUM0AeNpjYGBgZoBgGQZGBhDwAfIYwXwWBgMgzQGETEBa4aPYx5T//8Esho8S////f8zPws8M1QUGjGwMcC4jSA8TAypghFg1nAEA45cLgQARAUQAAAAqACoAKgAqAJQBYgH0AxIDsARSBKoFFAWmBfQGwgeEB9AILgiMCLIJSAlcCcAJ6gpaCowLKguUC84MMAxqDMINhA2iDiYOYA58Dp4O4g9cD44QBhAqEKYRLhGOEdISKBLiExQTOhRIFI4UsBTyFWQWQBZ8FvIXRhfyGVYZZhqeGvobQhuMG6QcFBzqHQAdgB3WHhQePh6KH3QfpCAeII4g6iFkIjwiuiL0I4okICSAJMIk9iVCJe4mUCc+KGwpBCmCKfwqFiqGKqArRCwaLHAAAHjalbwJmCRXdSYa996Ie2Pft9z3zMpaMrNyrb2q925Vq7vV6lZ3q6VuSa2lJYEACQmQARlkJJmxZPbVyFg2ZvPCJpABNQJ7jPADbL9nMBjsAZv5nj3j5c0bjz22cdU7NzKr1TKe73tTWZkZceNGZMSNs/z/OeeGgAVHEIT3opMCEZjQ+iQS2iufYqLwN91PUun7K58iGBaFTxLeLPHmTzGKfrzyKcTbe07PafScivPYq26/HZ3c+riDenA0Igjbn8MCekZYEjaEA4IQ9IejyERsOBqO6oN+r5tHgc8a9QYN/GgNjSLK8iga9rrQWqGVcoMy+GzhRp3v0KBR2OuO+pW1ohy16ezZsufEuqZiA8lUxBS+qdtvV+KzGOPiYP/LT23OiYzKWPzlvSf6RferrbQsbvbSi45m933zM3v2DOeXsa7JDBmymvJzalVBR8qjvRmxSmlQ1QoPYywh8c1Zq75vbd1BNlyTuP1ft38PR+h3hFg4I9wtvFUQGsPkvPhFDUNGmYkq5XoDrm/UT9pGg36jPoPguilLmuFKe90oLwZhDvlhBC+4XrhUGIh6o4XGV10f+XDUYW8I3Qf9VVRmNEoO1xvyPWDPpBsMDd/eqFegA4O9Oj6RXv/OCzdjScJMYYo5e3fv6M8tkPdWctkpo8C0UHRiEctLCpL3zulLRUmRRIxkQhQiTotUlmFHouJsxk01uqd8G1MUaJTmrLk/QtjQPVeSQgl7DsEIEaQqWIoUzdBgdUUUD9UQxojoEpPT2VEXE/S2yryhS4jIJc3Crq1iBi88N0Pykq44VNPwg2YgiZokiqRKJJFSiWAL52WpM/RjREMlYsw2ROObGCtEQghTQonbseDnxbCgSIQiDC+4N6pgb/9H9Ffo7wRdCIWsUBW6wopwlXCtcINwURDgPoBoJSNXrkeDUuDTGVSGGzLshkHDj0Z8EL3LfeAWDNzkHgz69Z9sHzePIjhqGe6ElxxmfGzHM0zXzXhnUM0z/rPpnnrVqf83JacxEmXPMjz+Jpqs6Lp9zjfH65Fu65pD5RTTKXsJ7OtlvMffDNsM/lH/9rfh81+WDx9efgrPiS20dd50PeMi/0C/buu6LOtbv/kTTSVxDkmeYWx9/fKRBCpcs/0J9Bz6AozNY8IHhc8Il4Svw9j0xyoJ4tWNxsILSwU0TBrG8jmRUy5z/DXyo0R2uehzAeQvLoSgyuEygp1Am5MXb8ghxjuUZ5Af+MkhuHqMfmJ3+r86atLObwGczk6bBy1gFrgOcNW4rAXXWHpacT1H1mNN142g1pdF0mv6uq5rUc4whwsnS8V8nDZM6G0G2Xxt99wswbLRnGppRIxTy5ZMRKx4nhzoukRxpCoISVJsxakUdJMCRxIJFS1TkYnqtmRm24ZORSJyRVBAg2QWwU9JCgJZ1iqmQplEyElJUlWQcKLOlyPdELHEFFU/WHRtFqiO64r7q9NOyjTfnZKVd5pGZM7UdzE/bJ9dWoSDxels3nAcN2Na3fnN2NCorihw0oGiSZKmMMbMwHc1y5GIDNqZIsQOojgURZFZLE8IFjXZ8xgLr2G2GQSaSmBLlA5cJsvsj91adZUgdEdT10Rp6+9NXWcIVO0uulFvwvUQw6px2/fJ7efwQfSccEg4ATr1KrB9/TXMBSTKE5ANbuJApeD+9Hud7jzcq8Q2cQPe6Iy4JQPByKOxSvGbZSFq4XrUX0eggj7sGvndVdQvB8k3l4J18BA93sY7812Co8PrLnQttrw4d2x/E0kvPz5cF+9YIgiTtK/HAZF6u6VmAawQFvENomxqinmdDsOOsRgNxfmXZzHJkhH5QKdzvtNmpsNacSp26YG9zIn/y/DkfBoR12xvXNeh5MjdoZUB20JFG9RSdm1sBNw60jDUFfpcCAMjdx+UFwJpFe8S8UoUfTX5v/G8ZZ2/kS9a73+/FYFpEvD297afxmX0rLDJbVGdDwb85wkfOzSWeXhB45CvT1QHxifPu42GMMYmabRIohHgYzB8uxT2xWPHk7wSJW7U+X2oqaVUp21n4sCzZJlSHSwrCCgYWbGrtDOJISUwJBI6LqZnHEkmyojJUqY8bVtp25NERSUE6UsHj5dmZ4wwbWVjw1AU3aBU1USdIM+s7c6ljEefGjUrMkYSMwxVZXIsy4YsK4pC47dgTUMUKZpKmW6QH7iLdRk7WFasSimlE2KYkSxbDkUo382wVAEVX3anr6oYPIBoGmD0bYp9kRwvnlEk0+VjKDS2/wj9AH1LmBGWwWbxMUwsArcLHFeApUnGDhbL3OWWaSUxIGBrJn534mkrU6LnL+WCNdtcjjN9P1UAZaykHTucSVlxFON43p5u5Qz1WzhjzvooZQWB/63pXL4ShtmUMRcbrhs3lHpcaiJdDdH+2W6jojwus3LRiRGTK0VP0wRJqG5/Ds73GcEU5oQFwEAHBWHsSBJl4SjB4zAIzrqAumDy1jBoQnKKk62X/Q8NucvhC9zPgJepvfHsDW+siXe++06xNgTvHV+dTotM9vzarEVlpIn01AOnJMU9sbR84sT9Jw42l6anl6ifD4I8uqcwM1Og34tnZ+M/2voRBnsRgi/HsqtjGaG1IFUC4UEnwNzohut8iO85fTIbBNkAbMA/gByr6HlBE1aFY8IFkOU1nMcmbgF+g9vAohHcA/iE0x0NG/w9ajBANfBZbyMWhRY4h355ntE2ikbdvMRMUm6RdZRnMCikhZXyuYcfu7mefJ6viQbRcxqxRC2rx40cs6cLEl3Xs5poEy2ryWqD+SYyQJpdogbHLOSpHkgoxlRRTdWU9cDAKtNkTQJBk3XNlq3fevSWevn8w8nniiqiFpwe/2yLQdAKWXnWb7M5wDZz0E7UPFi/AUJXAfgI1sDsM9UAUCkSGDBydgGsA7RJskIpWGOCpAnufQ5tgZ0sgKSOBAHM13AZwbDkaaLuBQL3l2OPoc9dJdxWvnLF8vk9ryht2nBShMMpSWFLIgOQhs7t/vye829yjc+C/I0/zow/bn52z3mxW0YyZlQ15CpgWgJQ7uHd588fT7tu2v1w8jnB5OgfQCZ7wh3CE4IwWMNwExILlFikxNrkJfD1JuaKBDenjVoiKNGkI+/L+4CwQkc0n8dX9OUAliR919Gk84u2c9/A3QENclS1PBK/VHUipC7ZuK4zSzFFHcChFBSk8HRILMXRlUdJJp314HYGedjDJ+F1oeqGuNKWAk+R7YioMuwRFqX4epf4asReGpNGsTBu+5Qdl0T/mI9LEdg6NyPG52NiKo6mvI7iFfD5XQaOUFKR1sWigaQ0Qx7cWLCGYCjBJGg6VmdULEsMrSM9QblPyNyJa0idgi8D2QHWwfyJBibg4kWma0SfkbEG96unYdu0RfwEb7yW+UitKcjQx34fay0NjksReK50IGHuI3xhaftP0PPo14Q+WIsVsBd7hcOgYyeE0+BtbxfuEu4R7hUeEH5a+BnAbj8nvEUQIqfXH4AP7uZxDvUGnIEMo2Tgx+uDYZcbyaSRtzi1oDdo9AaVweQ9mjhc7yfaJ173f2PLcluUnZQti1lwLrKjq4YCuANnwLYQJGLRVHRHFttb7zgw+avW660jk78Nz/e9eGftOt/zfHJw8ldHj1vAOgBZybHo+5JmI1cSJQ67iWmKiq5KIlJJsnXrvrNLS9qqtkdbbNn2HsfZevr/7zq/B0iY2f4n9DX0PqEFtnq4joYFBBaLAhCDhYiDl6QtjyxgdBXawm2U0Db4Zqsy6YospKhg20zT+pZKM0y+HpR4jShian3YMg1JkYOgAC5DlleZcqMshyDWHcdhqlaG3tIA+M0q+OmgUjWgs5JOd3fBedHtP9/+C1xErwebUhVmhQ7IyAqoMzcsXTi1UgLUOZ9OzqtUBlsLTKWAeutImLgMrxdUeqMe23Eh4N9erehAm88QakvgmNEK0dnWD2UDj25XjUvFf0a1rW9nG5lMQzq5eR+61uhnG9lsA8FGRe7BXeCyL35NVlT5B8Y1D4k/tfU/6rA9I2y32+2nG8li4reF7S+hbbCHQ5BpAZjS2HFzPmGiBtiRwZqY4PdRmXESEHFv3UgGe8S4HxwlHI1zq9gvvHbXngeL6UOvPaxOl22sAK5BJPX42w6JcnevhOSLt6lrNUUuLb+sXP7g6Oho4eqFzzSOlwar167N7rr6VevIPbwEGM+kgEt0vVmcRuhwT1Ii547frLXQ44cGg83GwkID3ok8bP9fQgZr6LPA9wHtDntRvz7mkVGPD2KlXCm10NzhPkInV/rHVHnl5MkVEW99p7f/A4PDgEHRysk9/ZOvPkmuEkTuF7AA45AC63tEuJOPxWhCsXaCAAnBauEredAOE0rIDY3GJI0lDZxbQZdoEjLo/y+2AJLw6lfdeffhmuu5XrXe7vTmO3ObddCAQqFWm2nW68UV28qvnjq9knfsjTAotoMy+B25rCh2pBQ1xw3L0++YKXZ8YLsK482hWtRc168EwXPdTqu2uVltzw0Gc61qDZTX2zzbn2o0cgXLtu380pnZaiO3tpavN5rVMKg5AMjnfEMPLE9Tp2vVmZoDvGMO2FbSEgSJzDyHJRgrHo8SAqfkePAGzo+EDYS2toXt5FPe/uH2fwe92A94xBMyQkWYFxaFA8JRuFuD/jLib8evNLjNgkGJ+HoA65PvaLx9Juk3uNyLr1R2No0mrXl6PevSGyq0zF5Ju8krTd/B3k7PNsusQu9n198MK+9Y4B1Gl9hutvVPbJrdxd5xiV1iP6qwCvvRJba1xaosxZs/w1LJ6j2wzHWkvv1lwIqXBENIc7s+nCgIv30jjgy4FHARqK9df/CW6onjh99/1ZKaw0dnWyc2y84I/Rc1zmy8/k37Nq7HM7Onjh6T+LhN5E0DiSsDFukBZtsvCCtojXtnPwGZSeQNOAVIsk9HXGbqDRN5Lyxwkl0pj+l3xMlHQlOgad/9P3f/Pv6RGabu6sns9O2+ipgWXnd1oz21tLF0qF5T8+2bFubq+yvLV6cPM7U+VyiIrdJ8Wmn2pFoh++DkAPv2feHYaueU7ppZTHso2tcKDm79Y8s6dVy9Fh1q7c/NdT/opES8fzj/is1j6eNtIiSxuH/afh4z4FSaYIP3hHEDlDmKRgA/WcNCg2gUkGjUIKMeLNGXvvQXL979vttu+8DFi93OxXe9+z3vBkR1R/83r7324pkzF06cOn/sWDmXPfpZtHz+tuu27vzs0UIRfkMoTjB8SVgDX/wSHitZI1eQroS/5cUkrNEC9hEltLcHjd3h5J5RBlsqZrJxtEYG9bFOwn0dddfE3hgoAVC+rOPFMFv3FREslKTKSijWHGPeUJ16Onz47Mod6zejyC4GS/O6tiBr0G7b2kFdn+qmyu2LlMarWsoQEQ2mGw6WmiKQMExFWZRVAKgEU8Af1AaSZsrvrG40q6aEKEAXSpnTnNPliFGj1txdO//g4u1WydLyebSAVCNVsdIdlM2huddQKZCQKouMSjZck6hKYOWQJIoS4CBqAnIiBh370lu3P4E+iL4AOGYcYUroaRLNnbzWMXxE3PD5CQadQMadYMLEIHL/S+u35ixjSVSdjLggE5dZnkg4IKjkTZWYBQxmSRXFDDAhSXJlmVHHdhXdA7iG5zxbmZ2nDVeVUsT2CtLe5azLYAOMh6jagOcVSfbrVs4zTUkqEDFNacbP2Z5t+yoQB0YkyVcUwGzchguzcL2PCVRwQOJKcGVOHySu7g17pW5kcRzARZCCD64B33R8htBHP4JDoNr/URI/Gs7OhR/56O5dHxOlrWURrX8Y401AE8pbnmJoDeO3uNWq+/xTg8FT+HNvkaStPxfpxBZS0ONlYQ/4DKfPfyrMceBRaWEQGYDXlWCGjxILmDSiFobRm/gPrrVg6QAR7OCA2RK6rdqpexkk+ZZSrDrr/Qh4TA0AAEZmMzKGf8BjtIj17tztn4hK8dGtJ4o1dLNmaprpoBtK3Xo1z4iIZBIjCaAXYyx3QqVmMxODJGCDARMNrOzReTTPd1ETWagAJ/o++rJQE4QQbroL/IFDF+77eNSIAXlMvsHu8bGrV4lI1yjVs/nX5o76gSQ5Vvqbqc+Emm2Gz6T+tGTk/a3/bLl2wY3QYpQOVBzFkf8q3PKdh2bnnAR3TMNv/gH85rywdFkCL3tb+DH/BRc7ujLUuRNa7000ctoys7lms7ur1Yrizux3LCtOZwPbtmzDCGTb0VRNS8XVauvu5ZV7nwfGMjudznx51OmUy65XzHfne53sTLFsO1TSdEOPZE31nCgEXmTs2/fkRrFYLCW8cQbO9ztwn+8THubczEvOmLNCAACDyQq/rd3xNVxGDSZJ/D8wAZT0D3nYlQZ+yMNxlbJPfRqChuHxoSYxkTLHipN43eQ1Gow6PR6xTYJxoODDXhj1G3wIZmRJVs15piMqu1Ko5n1PNLSs27VDEAGCZZOZZqxo3kJdjXVmmCBAPISIiIZESaZAyIDE23nb8+bsDMBhahDD2lU1qKKAYRJvRFiSOo6BUVEzIreAbCajsq/IQLZkTSvooIgEyXIEDJdms8daudA8PR1mbFCv9HSU0RAP+GEiEknhrFmkhCkSNlONDAiS2kOonNUNUbap5XQ6gbMf3UBUU5sGCvYujOQZpGpjm/XFRGaeAzQhjIDVcIAdgAkH8hRUgsrg2SP7548ckfVbbrnw67fMDzZvcfTuLX/zN3xfsv1bQglvoJOgpUeF8+CNejvBTjgACBRP/AQVynoc/kb8I7F3BbRGkpjQOOVlEp4/4vezxsM/I67hFAjdzpG4Ydy/ilNBnM/FfkbPGqIvffR1DBB8xV6K9flSaib2MYyBaxWLfmthob2yINqOmsnYxXmzcKizjuR00JhyzIrlp75qeEU7TKVDIzYM/Q1BqpyKiymUeVm2Wy2q+qBQ9kNuHkhgp9S1dnvXHmI7IALl/O75tTDdcU2/6FuOnQ2DHFA+Y4z3n0V/jX5bCIQmx27cXplipcxhlAk0lHGnl+NDs4pGDlz2qTMoRTrDpSkkx4VqVj9G5gfJykrrvlNnKGI33Ebmh0s1+Rjz6/lHfmOyUl1+5N6tf7rhtiS++j9g7G1UBtRjCUJ9YuqGk29t8+6rrrr7Dzbv2ty86yV8cTNp2IT7PTvRORdQVwZVBqMGS96VoMGiYO5b3372FDvWZTPtWbm/gYUtYd9stllJ56K5Y/lS9cbkvv/h9iU8hb4EKKQkTI95AqA3cAMBRyItlOTyRlFtgBqTaN4OoWkfHc3uM0vX/OBn3c8/Nbra29N27Feg2a3vtNQ95/akegd6vQN/Ojw83ygd+dHv3+k9/STaHLQ2xFv/+v1b39wM49auXdce7HVr1e6EZ30FeNZvg+we5yiPG4zEUCQ2jet5Qit4OHQnLDpKLAn0gq5AcNmO/QPvMnxxBoa//Ob59p3tc80gaJ6DhfNNf2Z6X6CZabed1k1Nkr1UYbXguzZjhpbO2qkgHeyZmXacXG6qOdOcbuRzjvPzF9s3TQXB1E2d2zs3T/l+86YLBxcXombeRETUs1fVs/kKZjYPJFOEKvlsfTHnKDK2cs1oceHg7FQjn3Vc187lG1OCtP0H23+GF9CvAQZ0Qd5i4AACc3pRadRzKoNSMAhKgwZrsAQYsmjQPiehX5XOnN7aRE9/ojn7iQ98YPpTn3rgA0X0dfC2PYL3Nus/U6redv8bjr/3vd9+4H8mei3cuH0JfQTub13YJZzkngSMAh++sdGFFVZJUtkmfIQJC38hg7uTAJm8ErvKQ6STDFcLNcZZsxvP7sqGsqQO9pwY/GKll8rMeXrWLMQnDuw7t7Q8tzoCmyYTMPQSAaDje3iuXC7RXh7nXANJ3QJ8m9nZ/X5sWWhPp70vpfQL7arlGGpODdvl1r7+cnV+rqZSqipgJCUChpTQOPWvzSWUCXOy0lxA6SAnc8xb3X4aMO9nQaIYjKvF+YiBapGFnIHE5gHt1JCwDbqz7+Kfon379j3wwEH0462trb0rP4228Bf3wt8Yn/8A9GJ9Mm6bwqlEM/63Rq7+4lelzoeuFw5bmEpgnHvB2CgXz+7KBHzs9p4YvmjsDu49t7iSjB2MnpiMHqOy5Hut/WUYu0JF7a1WUfn29B13pC8P3nxrf1rpFTpV0zWUvBq2KlcMniTxTDUMnwQehqLuv04to9E1C3jYT91xB/wnergBevg8cLnpnbwzxxZ5HPgmY73wykwZbBskydTEvidegHN3fvkJeYChqnBHDvuUOb/gLh5UljfxAQJaUaa7Ts9MLURz02ksiapoEhtdh0JnteIrMwi8zL6Ybip+OaRZndXN3TOFuGUFiFwALo1pqqTrxYhK2C/HxSl/3/WfH8y+Mg7VoJ6iuqEY1CQmqnlvqBc6OpMza4TiymZ4yJ9upGxNUhv5vOOklpW6EjuiLMXU1UozcdRuIJ26UeQGee1UYpcuAQ/9UpIz+LfsE8wTt1MwFMALLifCeDgaTwSAXyQfMV7xcJlzEpen4QLZYBxnUN+Ps1HoxEFseaoEaIOZmZOdcr65ZhFEX/MCzyyBTUGBm22sM0zASUqqmvLTfikH8ML1jVRM5TBotjRrbRqrODXGBLvBRzyPHhdmExTJ2e+4asBnifDSy2Rlvlyh85XLiGoP1XfNNDdObzSGh2oAgFzwnKrnI0LW0lNTkiIaijetB3OH7GJ3dm1tdr7knV1oM0mRDRHADAbAo5iKgRXGz4MKx7d/Bz2Dvggayj1NUxjyGKBXIqzhcF2AdwX8VgENehZqo0oBraNKozdqDMZqEg2ACPM+bNAIxtpzHN1efuvbogCGUtPfJ813yRy94azxy+LHxafX/LAfA6gLbXt3WERntt45PY3evDeK9obhnY+hJdOs7MtkHmvNvSuK5ubm9sbx3koaxeW9cxHYTBPG7O/BF50T7hUeAsw/Zn0Dk1ioztMDPNVAeChhHQ3ziOc6G0MeRS0DmE3SoiELShTUIuoC3+5xiAsvGFsTWTx1QicB2SR60SINOur1ASo1YH9XpH5m6fb86mxZkZGbzaoKZpoWlosNt7TbcdJZkpgDDTkAMLGcStWc6qgU8aA/2voLbAaBzLAM9I+8Sy7Wpz1YUpSmWdjruXExg3hUWySZYj9HZFYvVVTtTY/pvs8YUVKuxWr6we7L9jOjOV3XtfxiI88YAouhAC6V4jQgqbDsurpBcrVAAWEUFUenxal2GLquqgdFSwY2rfhmYT4P0JoQROIMwvGelCdJiGAF2Q5gO8spuO7HvSxP1DMjI0zyTk+Dnn0WLHYkFHaQV5eT0IRSuf8mh5gP0PuCfD7Yuj3I33729WfPvr6xcmJl5UT0QnMelR66/vqHrv9t3r7KdeFNYNt+Gj0rhOAVuI1yuJKCLHHK4YANDyqP9E3bNvv/3LesfP+fO0TTZtHJaV0npokNfXrr47MhMRP/8KHtL+JlrAqPCx8SPi58AS6By0gSW8cTrQI5SFJNayicSEy9zCXAlJJgKI+nwLZxlDQ08XhPHk6BfULKVxt1fqRokkgHwWqh5AAT4jMpG+EL9Yo3LnwB9FPhdQejnr/DBDlfirhL4rYpj1kLsevPOKaiUJKkfsCYGKKLTTNlUma4ajqVLTtEyefnwtRM2hVF2VQtJZZDQkw77UWy74SNlnZbKqXQIFaUxqBkDdJa0yOKiVRJZl6qkZ6tmCZgqSD0s8FsxvOCqUwo0agQuZJt0Xa+Uc+rdmgvKEGnMnMxHZF+EFY6gdLv9x+VkC4VdTBwxK6oaOB4VlFPA1MHKoY4dTdrihLl9OmSKYM4hyFRfUV1NcvjP23JYOhZ4CqKbaS9QNZkbE830/l2JaLUt6mc7QUiXF7Byk5rumcTRQNTldEMrOtgYH3dAW+hSTQdyJgytLhWAt+HG3a49Z+uLbnVudL+cpwqhmHVPZ/LZh92XfBAiPiYusyg4k4OdRK79Hgu5kqvgSdyTJJ492AUmOM6Lr7Cxgjisp9wX/2xV7/6Y+nYZeydKFUMYofJd8SOHb4Qe0Q27/Lqre86MX5v+vfsKLRh6S7vzXYqHOcA/iv4rxj8l5dgy6A3HPWShFBSXgCS8jP3z5x++0cuzM9/Ip7vRrfvwsKl9Yf+nj66sV7eu7/0jeQY24Ahf4S+whmRXef5DhAkl2sQN2KcwZtSkhsFQIgYc7SIZmcl45j3s3k5pLoiqs3qgirlUuVc2hMV08bBIQe9QVMZ4B6sM7OytbUwpxCsxQOdubojIlXRmASmpDJkG3/S4+fwhe3/ic+ix4RjCUNKIsw8P5tEQPrJbw8mKQSAFUFSmwimeNwtcXQ8T93GCeoYY5SIVzvue+D4+k1peVFzirFYBraoBF6wPlrqbhSno3JU4Kwc64ojYlXU6KjdqC+g3mrINuxDszxfMr3PTWevaR1/6a/ev7HsPhKnPeR6OdM1ZRrMz7ZGS2EhG1FdlIjIwLdzXXM77W652G47b220T7765ExlpdwYY87nhBE+hBaEA8JrhbeDXQEWXp8gMLiC3iT3BNLI42XjxjHvThw6v5xx+RvgLu6Ukh68Q42nrS7zdI7b+jyyOylx42MxEUHeYWw1ol5SdkLGPzKJKo16FMa7ksC7Ma/aMMR24KSj2rRmu1MNK2ukfEOSqaIWkVzTQT8zaTcuOCVbw6I6LSqyBMNYmMqWVMRsRXUylShdD92MqClgLTCWHEv3SZDzMhTn/EylYusfCZWUYsaVaFWTDc+L6lWrj4ilq0gxTRAixTGuZmrptcWUk9ksFiuxlXYo1jzsi1Iex4ak604sB7qv6ami4rmqjPx05E95SyAaWdOP/IJDdBBiy6LUnHGtlIVsD/SapRftILAsI5jaiLM5YzlVTeenoGnB9byppq7LRqfMOfS/bv8h6PslQQdsMwUgun85HFcpE6fn9Ib9Ri+HBhPzPBn9HMLlbMZxHfDymXtWEbqnurG4/56FIMdEdHe3aNuZyHa2HkObW0+/81ftNkKjw4cufXIztlXntxK9/D0hjzvouHBNkjFKfpQDi3FYsH858wZfCfLuvShCmCR/d9hx4MOOsFsBJVLEcf3wuj37F1Vn3mf1WsF1CBENLz9VmRFxbrmx3kIzRC4WWo51YEFLOtV1xTIsgj3k825Sfrm2Z6bEyCfcxesW1XAjQ+u+k8GSptpGUF8UST49M7PHclqlokwW9HAjzerwGw5gkVyA/PoCLaanUbFlCC+qx9aEBo8kX2lTR/4y4nn9GQCP4+9yDvlJ7CuIJtt40GaymIwI9AkuG9qaeb0Jd9/kX+D+nzDyWjPQiupCOUewGhr3/ocHgCn+hwf27o0NI2X8NbyTr4yu/8wg/Yu6/vG1oqvpcJ48p/ccTgF2VOBMM4Bk9sDduYnnXhoTzsgz2y008tYQT8Uz4ChtwJG9CCf2dCc0GnLH/285ZCOaFPLOIH77Qp7jD8dJflgPEzwK2BPMcJ7RR5cPU7ZWzhD8C0QVyxLG7yeaWH7PcrlzO2C6dByBUsVRSDkQ0O3jvMKOM0TOEQn68KslWZb2YqyXACN4ko5tqpmSRoIaEkW9CIfDTfmRqym7Q361V9VEZMFuHtbErf/GF26+4w60oiBSazaNcHZ2ZhopLhGRyL5CFU1RdJ3HnRWVfYPRqyVZIfHaUxqQFiIVdFkmRCoetKko0WknBF4mCMr2R7f/BZ9GbaEP48nrNx8GzPWfhB/zqqVGfzSuURrHwnmtHIgyrJcblaSOjvqsUeaDBkswfmNY1L+cyGf1Mi/jnyQcEhLPa/OSGAfPWSflwOPdxt14C+8VLqOkD9yqUb3X7YW9Ce/lpXw8i82tNrj7sbfikBAa4QVOv8K1cwBykHQOI+ZHQBqHq6CFYZRF3JrzOHiSQh1XR3JbPDHQcJQ6T7WjcQG9iU8hQwdIJCXwnoiKZCmE6CFPikgO8TUATqIF6MxG2NYAh39WDkwJ7gehGYloquiKCgmCKMqLWOKFW/pwyjHhYKoEuNDRTKYiLfDKOZzEy+H29BAYTKCqskRCVSQIEV6kqlGKxKLIiYHFA9rpi7wATBKRpOoSwkS1eBGarKpK9XZR5rXvqhFZbqB0SkgRAbhJcsXPMN1hH/Uqot6WRctikmE4jKDsy2JE+31jl4FwKiAKECUZZalRzEjIDywT0IPMy9DlQgMYtKjoRns9Dzgi7RsMYSrplkYkzZ+Ck2AG+CGTGEiWrWUrtEDIjUAtOqbKeIEAjBVGVJcVOCAAQlVzIzhXWfURCDY28znipGFP2KQjhmQLOiJqiS4QMBFYEHgz3fPKQ9lWahFC2tVpqRFYhlpNj/GYkMOx8Ic8w82pRwne/kH0Cwdzn77rrk+DnP/u9ufxIvqCcB1I+X3CzwnvFZ4SPi98VfheUjHTS2plh9yTBDSYSPtw1A2ZT4MQ4E6QREAB8iTizlPelPkzE1Pvz4eJ/wfJA/EFneGIDcQ4qg9oNK7a8HeKevmxk5KNSc0nF8VBEu4YVS7HuUBFhhxvedztJJHZf6f7T/YeH30cFktOkHUWQag0RUIAbJBk6FSpq9/4GhgMHMyBXMWhkVdg9AH86yafNAHS9Z7399LZBcQnUSA2rg8mHlBiVcdyqCEuhQiV35D97G5J08S/+zHq9KdmO3PFkeZSvxBkKPKrpdlO5GVNDBfsRa35Lx2oovzwocZgaqYzVxrudAyu7OfGnzNlJQb9MQzgFqA9EkH3cbXBSCkqlBUskHQ+1aPCyytDytn67rc+ehiujVFeE0n5ZTYCODsCiJBKhLGs/2R3fm5qvXoAdS884FdFKlEKKBir8uaTb98g/cw9teFq5+rpgojqcHgnqIaz9SAdSHKumtv6e8kHki/J7o95ryPNf7/X9zFaeOvDx5NxmXnrzx/DmGOXvwZ/FQNXmRJmeWVyA/D9OoKrCxIzAwibJ3mCMbiHf8kZOd6Ai8goaIwSp+Si9EyvP2OY+U4h4som0nTZdfOK2j3WdRSAgzwqcBBw8lX+6IPTmhb4/v3FUTVrqxitEStMxT4Fs6BpTiqgFBoHUrroqq7iZJVfQ9/sbk0htgTWJCy8ruHKsswQYOUvAh84iM6Dl42EitAe+9edaSyjAaAD4PMcHURXLO+08z57zzx05szrz7wNbZxZR2j9zMbd+JVP3YfxfU+98j60eecm2rx789m0l816aT+TeYupmiavyjX/eynXaORK2amp/yM0g8AMrSBI6qO+hP4VxlEXcoBQ4HwCj8dNk2pZC416oyQs2giTBmBiPHsBIIpHOblCVy78MNVpWLJ1+95zxWvoPaUb991uqXbVtG/bd644HW6AjMf2RjWekfCygp5368tT+469ZyH97qP75+sz+/YffQ9qnMOW+zpUTfFKIx7vgHNKeKgqCM4o4DkEnkx46n033fr8X9xsP4zSH1p7Irrrh1+75bqnkv7L28+i54ErXs3zt3x2xJgw1BtsEtPgQGPQaeGxo20hXh28UxLOaHg5Ych9X1I1y2VmJdM73j1+8cz+aEoOMMgp/DGwpBKf+8SVoCTSUuwFkmgSmoua/Y2lXcd8TvUxkqU8YKTi+qh0697T94bWNYrvgQDIiggbiWGBYTD0+DE5YnJpJuXpjjNnROUbds2vX7tUjmQFe5iKRF/hGFLd/geQdQfGY59wCyCy+wFFvA5wxCPCE8J7+Fy4cQkxd9b5ZAIHXMtokPhcHpwpAz1nXCESHDBOd+JKkoni9Yp8CtvEek4C4I2kvoFnPWHwhslA8dHkRahDPkrRenIsxi0jGw2inYTfcJJBqJRVeowVgviq+uwxX41EpoLTMV1HVWLJw7hh4MDCpbIbzLVXVlyVBA5FmQIYIiuOZXyfaBbCXdnScb/SBl6jpHONUr6ddjC50VZ129ZVg9smTDsIZdKaZeqmrpmpLDLs0LZDXUoS0Y8ccOfuClOZqap3c55YUsRwOgOCqSggZMaZpg4uVkorXkGk2FQVdSruXYNgY4ux+dByc2H93CuPqOCV49n1a4qFj/FD21WAdiJYqExGBEFIlcBLJu0NwJ6YjesuF7YvoedAFiVA0kLklJxawAt2F9GjW99HX//6bixsncM3PfN/8/zpH29/BheBGzR4hqs1DpbNcwnt8oqCHmghL8uhHDuZGEzZiO6U64RdXgre66+jiS9tjSc7muNJXy1YLsoqwB5KKCUHtpod1c3iOQrIAJxBrXrzbRdP7bHvNqaLqK7IRYNqiiZRCVEkpYHalZEcZfPALIwUNaPI8+qK8Uvfz8LRJF7PxCf6EMmy0rJSlu/6qc7cQIv6J3pvNjcKqMFYyHEI/DaSsBinbLdl+zbzOE9JiXIU+l5aknnc4HKOwhFKwoDnKXiqJZmhSoMWAq7Zn5ShArBM1ldQ1F+TunkpsYQ7gpfwISS+45vvENG584+cF298443iSZEammuGpqsZVJzbmIsLs4XC7NMHHzxw4MGD4Obufsc77iYU779wYT9iePcNN+zG7IKTcQzKYSE1YHHl1Kmn50qluRLc1xPbz6GPoC8LMY8meb2oNxpbENClpPCXBRWnH/nRFeUH4IlO9ESJTF2350S2tVioLtowwEtLRF2o9tfX52uL4FGfWcN7bzva2ZyLcxlEvoIemXvC1quzR3avHm7VHDXhkHj7b9H30WOCNa64iwY8o8B4lrUy6EVBja9zIQsqZHkm20TvbuZml7ceP3Lpb37/DUfcj+8utV73ulZp98d/+aNH/rH4zNWJnMYgpz+Esc/CyAvDManggtbh4adgPOXwBQTUEhsDXgEDQJ8Hs4PU6sW1c48sdQE7GIHu2mk366Zyq3f293YME4ma4YG5XJ0p7r1p73tfd/fqo+dXLxYJ1jWNNETVKrG1Ny+fBGkzNAXNtZpLK8snTy4LCQ/9fbB1CzDOhwFJvlx4UHhMeLvwpPCRSYY/6g176yjq9LiqTAwTgMB6ozIOCwURr8zudHcmKvEr8icThBO9GFTgZvHqgElBJeBHPluCm74KJyU8b8wtX3S5/DkaV5SMeskk49Fle3jlTCGukuObPt8rFkO87w5cfS1AcOzG6XI5ncvjmxlGDDAAMMurs+A+dCr5emU+E74pkO1VZ20BV+aXsWOKsujk8Wzei1KNQaG7kGpU119RR5aRme2mZ+frR69qn4/qqXQtciNjlM8N7cDYV68d+MXYc+PY9eKH044XxZU0yzblQi0XfaUw507jn/WQhe1St9rgkX6UzmbzgPUCDwF/IXS+Ek9pt44UIikuctN72rJDTU8txfnl0Gjemu3VYolNzXiFMNOtZqjuVXeJHpgFN5XaHQEXL1aq98EJl9MxIm465Tmp1C95i6Uwk595UVxZFlwhLwj+ztiCTIGyV5JsBs/VVmD4pxam4P+G95+95cD+CxefffM1t+x+2XvjxampbK7xd7ecff8NF/Yf+I1brnnzsxdPvO+e3cJkjtpz6AdwfC4zwmjHtb9oQmtjp/zihVq0JB0+2nH7k1cnnOervHaj3hjVpcti0ChGUcktdytxbGie22zEgW0pbHp6uTFVjr1SGBclO1eZ9cCrpdK2I6OGRdnsg2fTgKqXaoMa/F8blUpRZNeDoOR7vqE7tml6nucHvVrVMTN2KioWI02Xi6nQcbzAcfwgIsX5TJqx6d27ESuk6/V0plYb1508h/4JrjkjnACUlOjGznVPqpom1xclVek8s9sSk2BbnnBHnqR4TRz43MVw0W6JMBLHl6bKbnTr49Q6vlQpRMGFJyTvFXb1TLozncrPDebyNd/P6AqvwWP27no020w1l5abcdbyMromW7oZoP7S8VB8/NZUOl9cOm6LT1xIxaV3BdFAi5vZfNO1FNdwHD6Hys+Y2bQS1NLlpqOHnuUDEfYczZ3U1YxlpsD9AlzfOkpwPdlBdmGUWN4GqUeT0p96oztGQR4fAQuNy+5s47biG6x0zq1E+V1BMzcnhY5sBOQE+uNKkFo3C615NJtjSYttXBUfWjqF9sNaXJs/35XMIGOFceTdYNl8SqqBbqK+F7jWqZSsU9vY+iAl0NepTC8e8vMvOu8F4SyfhbYugSt3eoPEbS+jQTl53MCowgbgyqUcsiRQg5YUjU0Jv0NRN5oIJU/J8tqEBhKZ7qY371bWxaJqVXJe5OksRqc29+8bWKHJAxnjHn++OV5tlnc1l71MKeNVc/ZUYbExCgqlrCTVGt6TewuFTC5KLWzdezcdmr6xwlylQR68+S+1KT0dVN05eafHwnh9X3l6Kl3WZaSpMTKn8tMNWONzgdTIHdvsPxFSuIn6gNcLwrxwUDgHGPVhsNrcZo8Sd87qSSyovxNf5g4miSIN+WTMIPSZPyb4Iz5HfdKYaCkfgEGy92DYjfyd3cuNpDOfbjUat0c+bBnQJESW1GDxjuO1+qTUdDydfecZBI1+Hai3BDy2BBwY/inhU5qRNC0REWgsAJ02D0RJQH55gLED3yriZS1g2BGe53xU5x8EvkiHgGElyUcTIYCUsix1D4mWmZuZyf0eEdGtShbjPGM5LJaNVAZ4/26ixzEVRWleN7pEFJesNeDcmbThh0EmY0mS0plPG31Rkvai3GCkUer0+lkjjhmlNE4ZfhzkMw5jTiYfxD7ajWS2G6FPK8qnEdpQlI17pmsSD6Whq4a0tadFSb4Lvh6Q6Q6/coE9rwlHhdNXIi+WpJrYpIKuByO5hCaVQZwtjOPtiRXl87ImrbyghDeNhpPgfDSumZnMWGhUCqfnR+fyM50TuiKiq548BIOm6Nrxk6eOqzERGSa7DhzYhbEsYmn/0aMHpFjSRiuLIx1wpDjau3tZrXgLxaXmcLnzpf0P7N37wP7ejdX6dG+2dtvDspHPG7JBi0V2Gjh2NouowsRCQTpmSOmYAbbFmaz0m3FuNiMwYbj9OeCKz0yqrDxg4TzaDZiqx3hMq8ZrNUYRa1zxBsAB9BMjobn1355/XvyaeEn/iv5k9OvRqcoDVX2mNHPwW7/28T96+czhWX/mJdOj6SdrF+v/Z+pX0j9iX5WTeWT/z/bncIwuge+rC6Pk6RjneDaQJ9h5xItR8H3jshsRkEq9MaS8xiIhBDxROal1GTbq0QTUjBs4VnGhK8h2C+FkNmmdZ97tTu7I0ULoEU2xUxkeklFVLw5jNV5aDbPKzIEFdebA57RhIZ9TjZadAlqrx9kiWmvP7VrwYy74NBUspjUtC5BfyypeHLV9P4rbyq+8di4bhMV4bSEVDGolUA6Jykw3AemrKI7et3+RH145BEdWR8WqI8VMNjql5p+0d63PL8xaM+A4/OyMPYNG2aymmWZW2/rHtqr6bf4RCdL2J4QaPobOCEWwoNcKN/IZW5O8qZQ8i+IyAJs89KXGfV2CUXcc/GgYdQuIm1DpMrNnL8z2GpcKjclqsmmCF7hbOTaVjWsSQo6LJLQ4qNcHg/op0khD49a242bDXMDL7MFQUIvJjKXMfJBDL7FyQS4XMDGwmChSC3g+ExXl0WoqVYV3lPX9XM73sz9YnCpEd6jomvpguDlcT1f52l4/B3prMcZDsyLCaib/pUwugMPK1IYDyTbllQ7i7/YqlV5lhR8pyGbHNVKHt59GH0Vf5JX2XlLrE/LpLmwCdtgOpkli7yBVySyQcFz9dQUoOi7tL05P3ToDhkwRwQ3bVtUSbSuTUpeMVm348z1eUo4kxcpoJykyNFOzxFDO6RmkHenFuq7HgbvqIsrNJ3gsTZNlWj08M71uh1I28EI/NJAoY6+hexIDVdclx5lK6oc/CfzvGHCQHK824FFlXmTAYzM8HsYaCbSePP+lxmcWjTf3Ejx25N4gH5x+8My+lg/fq2un0b2tfX7ev+/0T505ceMNPML13ZUTJ1faQdi0fN/69uqp06vnwuA833LTjWunT4/HkPO6t4AtLPOqwYRKjyscd+YpBPSF56+sopP5IMhIh17zGlEynLBRL2YyhXI267qy/LeHVNcZ1t947OFZw2Ba+hqbUkWxbc+pfVpA21/c/iJeRb8r9ASBjSd6AQ5IqBXiyRNeBsAzKpOENo9h8zdXdVIp77Gtsweny07ENNN1WivZYqbozj9+jXj1aLExV7em67XUlG2tn35w/0tloE8po+hjSTnYxra7WK4UVg+KjjG8elqNOinJbuTc/mBw0+Ysx+a57d8GHvg7YJkOCw+MZ2xww80uP1jmigmRw9EkOVyPRjvTR/n9Guf48kliMFEzEzM+kZcn9vg70T0rKQGiFT75FLYlRWmDYb4zOl7O6zhOLzabnlssNGrFoutpkW/2e9ccv+PnZSWVz4U8bUcw1nVfkkJdFGU+ZTzq1V+OVYVmNdUrwMmKmFAaysx1RrnZgFEgN4VSTlUM9NDmaEWNfWV6dqVRKnmu65bL9VJaNCpTh0cLLx+KYlBY2NdLZbJ5yjRR0XTLVGV5UNGNuayi+UFpYz1GBwPdYAYhYlbX81XHcIzIAfOqZuxySlWB0JV9g+DQJTxf8i3AgUWQK6AoZI2so2SusDSeYHvl9NIr56KaIiAWntrAjRafTjSTXWyW+HMOVBl+TKGyaPuaEYRpE0mhxNxYW5ydo6zvKUQZrB8a+EGdBw+vURBRzdhEg1I/wx8aRaRUcbo2a24Ms7n5OGRShmFzz1QBidNe2nT6L712c87Qg6ztAcYDCET0ZP7Q9le3t/Eiul342LhKjD9iiD8yo8tThtGLn6PCJ9MlqXtwSskzZ3phkBQU8tSMP54aM3nYCk/+DZPAlT8+JrfE3Ynk0MsvE0V+UioTXlHeAQNW4aWHSWA3mbU7sWItvEgZo+DKNIk4YJpFjRImMeRnkZSUr4AVZcTEMlFskdUKGVExNZGqhE+fwnwKlcQzfliNY3BmVJY1STUcJnmmrWLsKopiJtP2gC4DzBOJimqBbxiGqWkgYSop14ihmAxgssjKpje1qx4NOoiXlFKCjoBo8qe/IFW1yXQTToLgcbEpwkuqXOeVddhSOJQkElZ1kWh2IOm6okZwL/lBDFTo63DKspYkiOA0RCtn6cCkGLgPSbT4dENRVFApk9EUldfZEjqDbVVGOF0BqRWLtdzem7EiS5JlCgzu7SW8kdSJrwunhJcJrxd+Q/jOOCf9wqysEG7TZDEhMONwFwCTK6zCYCzHkyxx/SenVydZ6393XnXg83b+uIQEt9DAe2H3iTy8YH5hy2BSvc93LyfVPv1//+fGQGAHsvKWhXMrq9kgMk0GGFOaP+ww+BKl4tz0wXvW9rzq6Ia03F6xrKP9Nl3qwEL/ROhfyxS7FsWm2bAV2ZqKQtepmcTgcmbKIFQ64HBmMnoIS3wOFAUuoRL8ISRSxXXSqZlVBeyUAiIjqiLwCExnC65j6LwkXnaJqKhKOWWJWAQ5lQhJnm+i6TafJiBJ8u3Xnl+OddOIbQAWGAehZluBxICCzBYL6/3y1JF0v5DC8nS9JYm9QgpoC7A2sWZZrluyNVEt2q7tVB2VajMGHFI0ZBAQnR9clxVS4882wYrCn0cEfnuZT03gUx3MvbNw7jEPCwEcAHhHkONpRrGjwjVK+zFcJpxDxgll2dABrSM+nHAF1NQNhEQpsRt/JTCwfW8U7gK7MRj1Ij61baz/vVFSy8ZdadLOURyv6ktm4sJ9KkN7N9nAw6cWfmHLzh6JbSDmTpI4EQf+CtFDCHyymDpNFpnYUE1epn4blmRgclK9KUvElrie53cjSVNEnQzxbvEigFcj4XT3IylSNfbTkqFRb3ZgBpZ9mw2KFTB0P+i/KiKVymuff4WlXu2ngf4ReHNVJIqiXX2tTXnZgML7idRlt4qPoH8wWfKUPBUh2BkpsrP1ZzqT9drN9wAqrH97KqAANCf1c0nM8znBBz62wisF2Yi7TS7UwMPaHMtWzMSX9kZXNprIG3Gvm0x/HiV5Lv7cgRe3VfiDmdYHbp8XYffCgTtnGK4lm+bS/DBpzPTDgTebNGaWvzHw5nRYVDLL1s7mxpBvdmzYbMFxQD7SfeWSqoEZ0oJnTZcPq/5Xl1QdSWpwyXTBiiF96293lrRxVxUpO321cd8XcVFNcIRdwsHxLKorZyuEEaEjbjtCwPz8iYGNcn1YQJcbEpuQRLY63d44TQ+92zxByUuHQWIu10vNH1p5hV+34wboJM1c16/pBgWmv5aqg5Cw9MnI85FGKI4cjPbcuHrxlmKlWUOH7huu57D7IK+jeoBXVH1h3705NGgd5eacbL/vNgzfnPrD2tbRFbtUQp5kqtRJrS1t3a2a5KvPFF66sdbXjFJ/HK+k25fQXyY5Ik0Q1lGjB/zS65Gowk7vfvnu04c++apP3vuq6992//1vA1O79bWv8Xz3B4U6vgnG6YCwyZ+0QACrjouqTDQPalCJRhWuWaBuHd6aTDPltdgIdIZPT82h0qDfS2a2AmJro0qbj24tIg0GFPcmJP4Y1IBUgN7cf9eyovPpnD8gQAikvW/kdcJI3ERk6x+ptcgdy9sXFT6VBZ87P1008QJGj4l8AijDElIJeucFUceI8WgKo0QVX5PkRO+QMcrnwNyJFyj7BE8O7Ra3/gxfWMSLHIe7wMv/Eni5nmRXwggQQo8AF3evvS2ViYsXjn59L3rmfY3OTPvdW9/97ncT2dm7/RX0HPBqD/RmQzgjvGIyVyQpJvSTZ7lxVzCaeJXRC9WNXEsmXi6HrkD448eWjdFauOOD+HE4UuNPZ5wAtfFcojafV7VPxCa7yNOOknYnszCZBRhqTLdwhA2TEE0+jA/yafIGksETiF4qpau/QOTdIsVYoUaW78juBtOMqCZJd4J1xSzHK5cUskzflvFUDU+LiqRKqljETDHDf+EFb4pkM++XphwRGa/a+sRJDUsuJq9gvMpJVRUm009TSZFvAMsjG3M2eCfCcAb1FVwFFCRK1G7osnQzMDUBZLC+/UX0A/TNZAbDPGjhUeF64aJwr/BG4UnhV3h2aPI8PD4e44svJ1HMZP7LoJJkw3q81KwyGKMxjxfyBzwjRZMpqFc8BzRJKSXljjyP5PUG4eTZRmxQiXh9EHSqlD1OBuEYyfQa2Cfyk24VP/ABSXLmDzxwkrOPBn3YqU5wJdP7Zi9b5kivnO19o5+p4EIxX7ixnPexW4j0PJdwgiqebaXTmsQyzdBxAt9zgoymM4VVMqoVpw01k5GopjKaYUzJZCzbW/b8qSx/HKXe93w3zMSDhVGmzCOB5Uz7YDsz/snM+z/84SxKHTlyuIauuRqwAbiPrTenXPst96jKy3590/F85yovCAG1HeFPcth6FfjVY1Vz/SPXU/OwjtIP3qNqL32L7f6tn5pT+RMieHVQkKl5UezyZ7rYnDNvg6/4BfRlYVYAtal1QU36LcLvRnl+MEnfo/LkEaBR0Kkk1QwWClFESuX6wOH1Echt7dM1RBVb8yoUeYom4fpCA0yy6iFW9pwQLAEKv/e9rdOqCWhGavEnzGr5VCzKihg5Od1Q5crMTEVWDT1vR6Ii0/kgkNDbtrcFU0W/LymM/H+MAQzaeNp1jsFKw0AYhGfbNCIU8e5l9dRCE3ZDK9KT0JIHKNL7NoQ00CRlmx6amy/ka/guPoE3nSQrXjRL+L/dnZ0ZADd4g0D/3eHJsYCPneMBrnBxPMQD3h171Hw6HuFW3Dv24YtnKoV3zd1j96plgTFeHA+YmzseYo1Xxx41H45HkPhy7GMsIqxQ4cgulm8z7FFTMUGCKWcEBY0FZuSG9wX7GyoKYFUdLzbP9rWcJFMZKb2YySYvdqbmZUPPhHqDAzdVkhvODVIGnHlkGIZNmp0PhhBTXNK0nZaKtAsOGS2x7IJ/zfoTzRVgzv+nIOKqrOPKZqmMQiWXsg8laB3Mg7beP622zLM48bhtIenXOobdbBtgm9pTXpVSKR0qpeTfPt9tQUr6AHjabc/HblRBEEbhe8aAyZiMyTmH6e6qa5tknMbknHOUYMOO9+PNAMFZ8kuls/xU3aD7u18/u8nuf/v65+gG3RgDxljBSlYxzmrWsJZ1rGcDG9nEBJvZwla2sZ0d7GQXk+xmD3vZx34OcJBDHOYIRznGcU5wklOc5gxnOcd5LjCkUGkESc8U08xwkUtc5gpXmeUac8yzwCJLjFjmOje4yS1uc4e73OM+D3jIIx7zhKc84zkveMkrXvOGt7zjPR/4yCc+82X8x/dvozIc2mKrbTZs2t5O2Wk7Y+fsvF2wi3bJjv616Bf9ol/0i37RL/pFt+gW3aJbdItu0S26VbfqVt2qW3WrbtWt/l31q37Vr/pVv+pX/arf9Jt+02/6Tb/pN/2m3/SbftNv+k2/6Tf9ph/6oR/6oR/6oR/6oR/6oR/6oR/6oR/6oZ/6qZ/6qZ/6qZ/6qZ/6qZ/6qZ/6qZ/6qd/r9/q9fq/fx29bHvQPAAAAAAAAAf//AAJ42mNgYGBkAIKLjn8Wg2l/50QYDQBKNwY7AAAA),
+ url("./zocial.woff") format("woff"),
+ url("./zocial.ttf") format("truetype"),
+ url("./zocial.svg#zocial") format("svg");
+ font-weight: normal;
+ font-style: normal;
+}
+
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ @font-face {
+ font-family: "zocial";
+ src: url("./zocial.svg#zocial") format("svg");
+ }
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.eot b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.eot
new file mode 100644
index 0000000..050bc1c
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.eot differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.svg b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.svg
new file mode 100644
index 0000000..a789a2a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.svg
@@ -0,0 +1,1107 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<!--
+2015-4-11: Created with FontForge (http://fontforge.org)
+-->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
+<metadata>
+Created by FontForge 20150401 at Sat Apr 11 22:32:17 2015
+ By zimbatm
+Copyright (c) 2015, zimbatm
+</metadata>
+<defs>
+<font id="zocial" horiz-adv-x="512" >
+ <font-face
+ font-family="zocial"
+ font-weight="400"
+ font-stretch="normal"
+ units-per-em="512"
+ panose-1="2 0 5 3 0 0 0 0 0 0"
+ ascent="448"
+ descent="-64"
+ bbox="-96 -79.3604 667.062 521.728"
+ underline-thickness="25.6"
+ underline-position="-51.2"
+ unicode-range="U+0020-F164"
+ />
+ <missing-glyph />
+ <glyph glyph-name="space" unicode=" " horiz-adv-x="200"
+ />
+ <glyph glyph-name="uniF122" unicode=""
+d="M44.9922 -64l213.504 512l213.504 -512h-188.928v69.1201l87.04 43.5361l-6.65625 28.1602l-80.3838 -40.4648v34.3203l50.1758 26.624l-7.15234 29.1846l-43.0078 -23.0244v44.5283h-47.1035v-80.3682l-44.0166 30.1914l-8.19141 -32.752l52.2236 -35.8398v-93.2158
+h-191.008z" />
+ <glyph glyph-name="uniF150" unicode=""
+d="M0 191.488c0 46.4212 11.4346 89.2585 34.3037 128.512c22.8698 39.2533 53.9313 70.3145 93.1846 93.1836c39.2533 22.8698 82.0905 34.3047 128.512 34.3047c46.4212 0 89.2585 -11.4349 128.512 -34.3047c39.2533 -22.8691 70.3148 -53.9303 93.1846 -93.1836
+c22.8691 -39.2533 34.3037 -82.0905 34.3037 -128.512c0 -34.4746 -6.48535 -67.2428 -19.4561 -98.3047c-12.9707 -31.0612 -31.2321 -58.3678 -54.7842 -81.9199c-20.4798 24.9173 -45.3118 44.3734 -74.4961 58.3682c-29.1836 13.9948 -60.3301 20.9922 -93.4395 20.9922
+c-36.5228 0 -70.4857 -8.44792 -101.889 -25.3438c-31.4023 -16.8965 -57.1729 -39.8512 -77.3115 -68.8643c-28.3307 24.2344 -50.5173 53.2477 -66.5596 87.04c-16.043 33.7917 -24.0645 69.8024 -24.0645 108.032zM83.9678 265.216
+c0 -5.80273 2.04818 -10.8372 6.14453 -15.1035c4.0957 -4.26693 9.21549 -6.40039 15.3594 -6.40039c2.04818 0 3.58431 0.170573 4.6084 0.511719c49.1517 19.7975 100.01 29.6963 152.576 29.6963c52.5651 0 103.424 -9.89876 152.576 -29.6963
+c0.341146 0 1.02376 -0.0852865 2.04785 -0.255859s1.87728 -0.255859 2.55957 -0.255859c5.80273 0 10.8376 2.13346 15.1045 6.40039c4.26628 4.26628 6.39941 9.30078 6.39941 15.1035c0 8.5332 -3.92513 14.848 -11.7754 18.9443
+c-54.2721 21.5039 -109.91 32.2559 -166.912 32.2559c-58.0267 0 -114.176 -10.9225 -168.448 -32.7676c-6.82682 -4.4375 -10.2402 -10.5817 -10.2402 -18.4326zM107.52 188.928l3.07227 -8.19141c2.73112 -4.4375 6.65658 -6.65625 11.7764 -6.65625
+c1.02409 0 2.5599 0.341146 4.60742 1.02344c43.3496 18.7734 88.5765 28.1602 135.681 28.1602c47.4453 0 93.0133 -9.55729 136.704 -28.6719c1.36523 -0.682292 2.5599 -1.02344 3.58398 -1.02344c5.11979 0 9.04492 2.21842 11.7754 6.65527l2.56055 8.7041
+c0 4.4375 -1.70671 8.02148 -5.12012 10.752c-47.1042 21.1628 -96.9388 31.7441 -149.504 31.7441c-52.224 0 -102.229 -10.5814 -150.017 -31.7441c-3.41341 -3.41341 -5.12012 -6.9974 -5.12012 -10.752zM132.096 115.2c3.41341 -8.5332 8.7041 -11.264 15.8721 -8.19238
+c36.8639 17.4082 75.0934 26.1123 114.688 26.1123c38.2292 0 75.6051 -8.19206 112.128 -24.5762c8.19206 -4.4375 14.1654 -2.38932 17.9199 6.14453c1.70638 4.43685 1.70638 8.36198 0 11.7754c-1.70703 3.41341 -4.09635 5.97331 -7.16797 7.67969
+c-36.1816 18.0911 -77.1416 27.1367 -122.88 27.1367c-43.6908 0 -85.3337 -9.38672 -124.929 -28.1602c-6.48503 -3.41341 -8.3623 -9.38672 -5.63184 -17.9199zM163.328 -47.1035c12.6296 16.3835 28.2454 29.3538 46.8477 38.9111
+c18.6029 9.55729 38.4857 14.3359 59.6484 14.3359c38.9121 0 71.8506 -14.6771 98.8154 -44.0312c-35.4987 -17.7493 -73.0452 -26.624 -112.64 -26.624c-32.0853 0 -62.9759 5.80273 -92.6719 17.4082z" />
+ <glyph glyph-name="uniF145" unicode=""
+d="M0 180.736c0 48.1276 11.4346 92.5863 34.3037 133.376c22.8698 40.7891 53.9313 73.0449 93.1846 96.7676s82.0905 35.584 128.512 35.584c46.4212 0 89.2585 -11.8613 128.512 -35.584s70.3148 -55.9785 93.1846 -96.7676
+c22.8691 -40.7897 34.3037 -85.2484 34.3037 -133.376c0 -1.36523 -0.0852865 -3.07194 -0.255859 -5.12012s-0.255859 -3.75488 -0.255859 -5.12012c-2.73112 70.9974 -28.7578 131.243 -78.0801 180.736c-49.3229 49.4928 -108.459 74.2393 -177.408 74.2393
+s-128.085 -24.7464 -177.408 -74.2393c-49.3223 -49.4935 -75.349 -109.739 -78.0801 -180.736c0 1.36523 -0.0852865 3.07194 -0.255859 5.12012c-0.170573 2.04818 -0.255859 3.75488 -0.255859 5.12012zM93.6963 181.248c0 46.4212 15.8717 86.1012 47.6152 119.04
+c31.7441 32.9388 69.9736 49.4082 114.688 49.4082s82.9443 -16.4694 114.688 -49.4082c31.7435 -32.9388 47.6152 -72.6188 47.6152 -119.04c0 -1.02409 -0.0852865 -2.73079 -0.255859 -5.12012s-0.255859 -4.09603 -0.255859 -5.12012
+c-2.73047 44.0319 -19.6266 81.4079 -50.6885 112.128c-31.0612 30.7201 -68.0957 46.0801 -111.104 46.0801s-80.0423 -15.36 -111.104 -46.0801c-31.0618 -30.7201 -47.958 -68.096 -50.6885 -112.128c0 1.02409 -0.0852865 2.73079 -0.255859 5.12012
+s-0.255859 4.09603 -0.255859 5.12012zM178.688 81.4082c0 11.2637 0.767904 21.333 2.30371 30.208c1.53581 8.87435 3.3278 16.2129 5.37598 22.0156s5.2054 10.7523 9.47168 14.8486c4.26693 4.0957 8.19238 7.16764 11.7764 9.21582
+c3.58398 2.04753 8.44792 3.66862 14.5918 4.86328s11.4346 1.8776 15.8721 2.04883c4.4375 0.170573 10.4108 0.255859 17.9199 0.255859c7.50911 0 13.4824 -0.0852865 17.9199 -0.255859c4.4375 -0.171224 9.72819 -0.854167 15.8721 -2.04883
+s11.0078 -2.81576 14.5918 -4.86328c3.58398 -2.04818 7.50944 -5.12012 11.7764 -9.21582c4.26628 -4.09635 7.4235 -9.0459 9.47168 -14.8486s3.84017 -13.1413 5.37598 -22.0156c1.53581 -8.875 2.30371 -18.9443 2.30371 -30.208
+c0 -40.2773 -7.5944 -74.8376 -22.7832 -103.681c-15.1895 -28.8424 -33.3656 -43.2637 -54.5283 -43.2637c-21.1628 0 -39.3389 14.4212 -54.5283 43.2637c-15.1888 28.8431 -22.7832 63.4033 -22.7832 103.681zM202.752 224.768c0 15.0189 5.2054 27.9896 15.6162 38.9121
+c10.4108 10.9232 22.9548 16.3848 37.6318 16.3848c14.6771 0 27.221 -5.46159 37.6318 -16.3848c10.4108 -10.9225 15.6162 -23.8932 15.6162 -38.9121c0 -15.0182 -5.2054 -27.9886 -15.6162 -38.9111c-10.4108 -10.9232 -22.9548 -16.3848 -37.6318 -16.3848
+c-14.6771 0 -27.221 5.46159 -37.6318 16.3848c-10.4108 10.9225 -15.6162 23.8929 -15.6162 38.9111z" />
+ <glyph glyph-name="uniF123" unicode=""
+d="M-46.5283 221.184c0 35.8408 13.0566 66.4648 39.168 91.9043c26.1123 25.4238 57.6006 38.1445 94.4639 38.1445c29.0088 0 55.04 -8.19238 78.0801 -24.5762s39.168 -37.5527 48.3848 -63.4883l33.792 32.7676l80.8955 -77.8232l223.744 228.352v-207.36
+l-136.72 -105.472l17.4238 -18.416l-185.856 -180.752l-161.792 157.2c-36.5273 0.671875 -67.584 13.6641 -93.1836 38.9121s-38.4004 55.4395 -38.4004 90.6074zM-27.584 221.184c0 -30.7197 11.0879 -56.8477 33.2803 -78.3359
+c22.1914 -21.4873 48.9756 -32.2559 80.3838 -32.2559c11.2637 0 22.3516 1.53613 33.2803 4.6084l112.64 -99.8398l299.52 235.52l0.512695 154.624l-295.937 -305.168l-46.0801 74.752c6.81641 14.6885 10.2402 30.0479 10.2402 46.0957
+c0 30.3682 -11.1836 56.4004 -33.5361 78.0801c-22.3682 21.6807 -49.248 32.5127 -80.6396 32.5127c-31.4082 0 -58.1924 -10.832 -80.3838 -32.5127c-22.1924 -21.6797 -33.2803 -47.6953 -33.2803 -78.0801zM-3.00781 220.16c0 23.9043 8.44824 44.2881 25.3438 61.1836
+c16.8965 16.8965 37.2959 25.3447 61.1836 25.3447c23.8887 0 44.2881 -8.35254 61.1846 -25.0889c16.8955 -16.7197 25.3438 -37.2158 25.3438 -61.4395c0 -23.8877 -8.44824 -44.2881 -25.3438 -61.1846c-16.8965 -16.8955 -37.2959 -25.3438 -61.1846 -25.3438
+c-23.8877 0 -44.2871 8.44824 -61.1836 25.3438c-16.8955 16.8965 -25.3438 37.2969 -25.3438 61.1846z" />
+ <glyph glyph-name="uniF127" unicode=""
+d="M36.6084 -72.1924v507.904l256.512 -253.968zM36.6084 -72.1924l256.512 253.937l68.6074 -68.0957l-103.439 -59.9043l-221.68 -128v2.06348zM36.6084 435.712v2.04785l325.119 -187.903l-68.6074 -68.1123zM293.12 181.744l68.6074 68.1123l118.272 -68.1123
+l-118.272 -68.0957z" />
+ <glyph glyph-name="uniF137" unicode=""
+d="M-53.8877 176.128v17.4082c0 38.5762 14.3359 72.1914 43.0078 100.864c28.6719 28.6719 65.3604 43.0078 110.08 43.0078c46.416 0 88.5762 -19.1045 126.464 -57.3438c7.16797 -6.83203 16.3838 -17.4082 27.6475 -31.7441l49.1367 -64.5127
+c13.3115 -17.7432 22.1914 -28.8477 26.624 -33.2793c25.2637 -25.2646 50.3359 -37.8887 75.2793 -37.8887c20.1289 0 36.5127 6.83203 49.1367 20.4805c11.2637 11.248 17.7441 25.7598 19.4561 43.5195c0.335938 1.69629 0.511719 4.09668 0.511719 7.16797
+c0 7.50391 -1.00781 14.4961 -3.07227 20.9922c-3.05566 10.5918 -8.6875 20.3203 -16.8955 29.1846c0 0.335938 -0.176758 0.511719 -0.512695 0.511719c-12.9756 13.6475 -29.1836 20.4795 -48.624 20.4795c-26.624 0 -51.7119 -12.6396 -75.2793 -37.8877
+l-43.5205 56.832c-2.04785 2.71973 -3.74414 4.94434 -5.10352 6.65625c18.7676 20.4795 38.0635 35.0723 57.8398 43.7754c19.8076 8.7041 42.6719 13.0566 68.6084 13.0566c42.3359 0 78.8633 -14.3359 109.584 -43.0078h0.495117l0.512695 -0.512695
+c28.3359 -28.3359 42.5117 -65.0234 42.5117 -110.08c0 -10.2559 -0.864258 -20.9912 -2.55957 -32.2559c-5.45605 -30.3838 -18.96 -56.4961 -40.4482 -78.3359c-20.8164 -21.1514 -46.4004 -34.6562 -76.7998 -40.4482
+c-11.2646 -1.69531 -21.8408 -2.54395 -31.7285 -2.54395c-47.792 0 -90.1279 18.5928 -126.992 55.792c-7.85547 7.85645 -17.4072 19.2959 -28.6719 34.3047l-49.1514 63.5039c-13.3125 17.7441 -22.1924 28.832 -26.624 33.2793
+c-25.2646 25.2646 -50.6885 37.8887 -76.2881 37.8887c-7.50391 0 -14.3359 -1.02441 -20.4805 -3.07227c-9.9043 -2.73633 -19.2803 -8.52832 -28.1602 -17.4082c-9.90332 -10.9277 -16.0312 -23.04 -18.4316 -36.3516
+c-1.02441 -4.76855 -1.53613 -9.55176 -1.53613 -14.3359c0 -19.4727 6.32031 -36.0166 18.9443 -49.6641l1.02344 -1.00781c13.3125 -13.6641 29.8721 -20.4805 49.6641 -20.4805c26.9766 0 52.0479 12.7998 75.2646 38.3838l43.0078 -56.3193l4.60742 -6.14453
+c-19.4561 -20.832 -39.0879 -35.6641 -58.8799 -44.5439s-41.9834 -13.3281 -66.5596 -13.3281c-44.7041 0 -81.584 14.1602 -110.592 42.4961v0.496094c-21.5049 21.5205 -34.8164 47.6318 -39.9365 78.3359c-1.71191 8.54395 -2.55957 16.5762 -2.55957 24.0801z" />
+ <glyph glyph-name="uniF129" unicode=""
+d="M64.832 185.856v52.7354c0 29.6963 14.6719 63.8242 44.0322 102.4c29.3594 38.5762 58.5439 65.8721 87.5518 81.9199c26.624 15.0078 58.5439 22.5283 95.7441 22.5283c15.0234 0 30.1279 -1.69629 45.3115 -5.12012
+c15.1846 -3.42383 29.7764 -8.7041 43.7764 -15.8721s25.3438 -17.0566 34.0479 -29.6963c8.7041 -12.624 13.04 -27.1357 13.04 -43.5195c0 -4.43262 -0.335938 -8.62402 -1.00781 -12.5439c-0.688477 -3.9209 -1.8877 -8.0166 -3.58398 -12.2881
+c-1.71191 -4.27246 -3.24805 -7.85645 -4.62402 -10.752c-1.36035 -2.89648 -3.74414 -6.48047 -7.15234 -10.752c-3.4082 -4.27246 -5.80762 -7.4248 -7.16797 -9.47266c-1.35938 -2.04785 -4.35156 -5.37598 -8.95996 -9.9834
+c-4.62402 -4.6084 -7.43945 -7.50488 -8.44824 -8.7041c-1.00781 -1.2002 -4.17578 -4.17676 -9.4873 -8.95996c-5.28027 -4.76855 -8.27246 -7.50391 -8.94434 -8.19238h86c0.688477 -24.5762 1.02441 -43.0078 1.02441 -55.2959
+c0 -86.3525 -7.16797 -142 -21.5039 -166.912c-11.9521 -20.8164 -28.0801 -39.248 -48.3848 -55.2959c-20.3037 -16.0479 -42.0801 -27.9844 -65.2793 -35.8242c-13.3125 -5.12012 -22.8643 -7.67969 -28.6729 -7.67969h-43.0078
+c-1.02344 0 -9.21582 2.91211 -24.5918 8.7041c-40.96 18.0801 -61.4238 47.7754 -61.4238 89.0713c0 1.37598 0.0800781 3.24805 0.255859 5.64844s0.255859 4.0957 0.255859 5.10352c-45.7441 23.5684 -76.4639 60.2568 -92.1602 110.097
+c-4.43164 14.3193 -6.63965 23.8721 -6.63965 28.6562v0zM139.584 252.416c0 -13.6484 1.63184 -27.4717 4.86426 -41.4717c3.23145 -14 8.11133 -27.4727 14.5918 -40.4482c6.47949 -12.9766 15.4404 -23.5684 26.8799 -31.7441
+c11.4404 -8.17578 24.4961 -12.2881 39.1836 -12.2881c4.09668 0 10.832 2.56055 20.2246 7.66406c9.37598 5.12012 17.8242 7.67969 25.3438 7.67969c4.78418 0 13.4717 -1.79199 26.1123 -5.3916c12.6396 -3.56836 18.96 -6.91211 18.96 -9.96777
+c0 -7.16797 -4.43262 -10.752 -13.3125 -10.752c-44.3672 0 -66.5596 -12.9766 -66.5596 -38.9287c0 -19.792 7.15234 -34.7354 21.5039 -44.7998c14.3516 -10.0635 31.9043 -15.0879 52.7363 -15.0879c16.0479 0 31.7275 2.81641 47.1035 8.43164
+c15.3438 5.63281 27.8086 14.0801 37.376 25.3447c14.3359 17.0557 21.5039 45.0557 21.5039 83.9678c0 6.47949 -0.175781 15.9521 -0.511719 28.4004c-0.335938 12.4639 -0.511719 21.7598 -0.511719 27.9199c0 16.3838 0.863281 30.0312 2.55957 40.96h-98.8154
+c-0.335938 -2.73633 -0.512695 -6.65625 -0.512695 -11.7764c0 -3.74414 0.176758 -9.55176 0.512695 -17.4082c0.335938 -7.85547 0.511719 -13.8232 0.511719 -17.9199c0 -11.9521 -1.36035 -21.5039 -4.1123 -28.6719
+c-1.67969 -0.335938 -4.5918 -0.496094 -8.6875 -0.496094c-16.3848 0 -30.0479 5.53613 -40.9766 16.624c-10.9277 11.0879 -18.4316 23.8086 -22.5273 38.1445c-4.09668 14.3359 -6.16016 29.5518 -6.16016 45.5996c0 15.3604 1.95215 30.8965 5.8877 46.5918
+c3.91992 15.6963 11.2637 30.0322 22.0156 43.0078c10.752 12.9766 23.9844 19.4561 39.6641 19.4561c3.4248 0 7.00879 -0.511719 10.752 -1.53613c-1.35938 -7.50391 -2.03125 -13.3115 -2.03125 -17.4072c0 -11.9521 3.23145 -21.8398 9.71191 -29.6963
+c6.47949 -7.85645 15.5361 -11.7764 27.1514 -11.7764c11.6162 0 21.3281 3.91992 29.168 11.7764c7.85645 7.85645 11.7764 17.7441 11.7764 29.6963c0 14 -5.28027 25.9521 -15.8721 35.8398c-10.5596 9.9043 -22.5283 16.7197 -35.8398 20.4795
+c-13.2959 3.76074 -26.7842 5.63281 -40.4316 5.63281c-46.0801 0 -84.1445 -14.5127 -114.177 -43.5205c-30.0312 -29.0078 -45.0557 -66.3838 -45.0557 -112.128z" />
+ <glyph glyph-name="uniF148" unicode=""
+d="M24.832 215.552c0 41.6484 10.1602 80.208 30.4639 115.712c20.3203 35.5039 47.8721 63.5684 82.6885 84.2246c34.8154 20.6553 72.8799 30.9756 114.176 30.9756c62.7998 0 116.479 -22.5283 161.008 -67.584c44.5596 -45.0557 66.832 -99.5039 66.832 -163.328
+c0 -40.624 -9.72754 -78.2402 -29.1836 -112.896c-19.4561 -34.6562 -45.7285 -62.3682 -78.8643 -83.2002c0.335938 -0.671875 0.959961 -1.79199 1.80762 -3.32812c0.848633 -1.53613 2.81641 -4.27148 5.87207 -8.19238
+c3.07227 -3.93555 6.65625 -7.67969 10.752 -11.2637c4.09668 -3.58398 9.72852 -7.24805 16.9121 -11.0078c7.15234 -3.74414 14.8477 -6.65625 23.0244 -8.68848v-38.9277c-12.2881 -2.38379 -23.7119 -3.58398 -34.3047 -3.58398
+c-17.0713 0 -31.584 3.05566 -43.5195 9.21582c-19.1201 9.88867 -34.6562 25.9365 -46.5918 48.1279c-16.3848 -4.43164 -34.3203 -6.65527 -53.7607 -6.65527c-40.96 0 -78.9277 10.3193 -113.92 30.9756c-34.9912 20.6562 -62.6396 48.6396 -82.9434 83.9678
+c-20.2881 35.3281 -30.4482 73.8086 -30.4482 115.456zM137.984 185.344c0 -39.5996 11.3438 -73.4717 34.0479 -101.632c22.6875 -28.1602 50.0801 -42.2559 82.1758 -42.2559c8.87988 0 17.7441 1.37598 26.624 4.0957
+c-0.688477 1.02441 -1.63184 2.48047 -2.81641 4.35254c-1.18359 1.87207 -3.66406 5.02344 -7.43945 9.47168c-3.74414 4.43164 -7.74414 8.44824 -12.0322 12.0322c-4.27148 3.58398 -9.55176 6.92773 -15.8555 9.9834
+c-6.32031 3.07227 -12.5449 4.78418 -18.6885 5.12012v45.0566c3.4082 0.335938 6.81641 0.496094 10.2402 0.496094c40.624 0 75.2637 -15.3604 103.936 -46.0801c21.5039 27.6475 32.2559 60.7676 32.2559 99.3271v59.3926c0 39.5996 -11.3438 73.4717 -34.0312 101.632
+c-22.7207 28.1602 -50.0967 42.2402 -82.1924 42.2402c-32.0801 0 -59.4717 -14.0801 -82.1758 -42.2402s-34.0479 -62.0322 -34.0479 -101.632v-59.3604z" />
+ <glyph glyph-name="uniF152" unicode=""
+d="M-16 226.048c0 41.4717 15.8721 77.2324 47.6162 107.264c19.792 18.7686 42.5762 31.5684 68.3516 38.4004c25.7764 6.83203 51.8887 6.57617 78.3359 -0.767578c26.4482 -7.34473 49.9199 -21.7607 70.4004 -43.2646c15.0078 -15.6953 25.6797 -33.9678 32 -54.7832
+c6.32031 -20.8164 8.87988 -40.5449 7.66406 -59.1367c-1.18457 -18.6074 -5.18457 -36.0957 -12.0322 -52.4795c-6.47949 -14 -6.99219 -29.8721 -1.53613 -47.6318c5.47266 -17.7441 12.2881 -32.8486 20.4805 -45.3125
+c8.19141 -12.4482 16.8154 -24.1436 25.8555 -35.0557c9.02441 -10.9287 13.5684 -16.5605 13.5684 -16.9121l-5.63184 4.62402c-3.42383 3.4082 -7.08789 6.91211 -11.0078 10.4795c-3.9209 3.56836 -9.2002 7.93652 -15.8564 13.0566
+c-6.65625 5.10352 -13.1523 9.72754 -19.4717 13.8232c-6.32031 4.09668 -13.5684 8.35254 -21.7607 12.8008c-8.19141 4.44727 -15.8721 7.59961 -23.04 9.47168s-14.7676 3.15234 -22.7832 3.83984c-8.0166 0.671875 -15.2803 -0.511719 -21.7607 -3.58398
+c-16.0312 -6.49609 -33.6953 -9.9043 -52.9912 -10.2559c-19.2803 -0.335938 -39.248 3.4082 -59.9043 11.2637c-20.6562 7.85645 -38.1445 19.6318 -52.4805 35.3281c-29.3438 31.1045 -44.0156 67.3604 -44.0156 108.832zM51.584 236.032
+c-3.07227 -23.5518 2.63965 -44.7998 17.1523 -63.7441c14.5117 -18.9443 33.5361 -29.9365 57.0879 -33.0078c23.5518 -3.07227 44.7197 2.63965 63.4873 17.1357c18.7686 14.5117 29.6963 33.5518 32.7686 57.0879c3.07227 23.5518 -2.56055 44.7197 -16.8965 63.4883
+c-14.3359 18.7676 -33.2793 29.6963 -56.832 32.7676c-23.5518 3.07227 -44.7998 -2.55957 -63.7432 -16.8955c-18.9443 -14.3359 -29.9521 -33.2803 -33.0244 -56.832zM296.32 386.56c7.16797 20.1289 19.8076 35.0723 37.9033 44.8008
+c18.0801 9.72754 37.376 11.1836 57.8408 4.35156c19.792 -6.14355 34.5596 -18.4316 44.2871 -36.8643c9.72852 -18.4316 11.1846 -38.2236 4.35254 -59.3916c-8.19238 -24.5762 -27.6484 -42.3203 -58.3525 -53.248c-10.5918 -3.75977 -20.0635 -9.47168 -28.416 -17.1523
+c-8.35156 -7.67969 -14.2559 -14.1592 -17.6631 -19.4561c-3.4082 -5.2959 -7.34473 -12.208 -11.7764 -20.7354c7.53613 32.0801 3.42383 59.2158 -12.2881 81.4082c-18.7842 27.3115 -24.0801 52.7354 -15.8877 76.2871zM315.776 133.12
+c0.6875 31.4082 11.4395 57.8555 32.2559 79.3604c20.8154 21.5039 46.7676 32.2559 77.8242 32.2559c30.3672 0 56.3359 -10.4961 77.8232 -31.4883c21.4883 -20.9922 32.2559 -47.6963 32.2559 -80.1279c0 -37.5684 -18.7832 -70.832 -56.3193 -99.8398
+c-12.9766 -9.9043 -23.5684 -22.0166 -31.7441 -36.3359c-8.19238 -14.3359 -13.4082 -25.9521 -15.6318 -34.832c-2.22461 -8.87988 -4.33594 -20.3047 -6.38379 -34.3047c-1.36035 13.6641 -3.07227 25.0889 -5.12012 34.3047s-7.16797 21.0713 -15.3604 35.584
+c-8.19238 14.5117 -19.2803 27.0557 -33.2803 37.6475c-37.8721 28.3203 -56.6553 60.9121 -56.3193 97.7764zM335.232 374.784c-3.76074 -9.21582 -3.66406 -18.5117 0.255859 -27.9043c3.91992 -9.3916 10.4961 -15.9678 19.7119 -19.7119
+c9.2002 -3.75977 18.416 -3.75977 27.6475 0c9.2168 3.74414 15.6963 10.2402 19.4727 19.4561c3.74414 9.55176 3.74414 18.9443 0 28.1602c-3.77637 9.21582 -10.2559 15.6963 -19.4727 19.4561c-9.21582 3.74414 -18.5117 3.74414 -27.9033 0
+c-9.37598 -3.75977 -15.9521 -10.2402 -19.7119 -19.4561zM369.28 111.36c6.31934 -15.5361 17.5039 -26.7041 33.5361 -33.5361c15.6953 -6.48047 31.4072 -6.40039 47.1035 0.255859s26.7998 17.8242 33.2803 33.5518c6.47949 15.6797 6.47949 31.3125 0 46.8486
+c-6.48047 15.5352 -17.5684 26.6875 -33.2803 33.5195c-15.6963 6.48047 -31.4082 6.48047 -47.1035 0c-15.6807 -6.48047 -26.7842 -17.584 -33.2803 -33.2803c-6.49609 -16.0312 -6.56055 -31.8232 -0.255859 -47.3594z" />
+ <glyph glyph-name="uniF144" unicode=""
+d="M-36.3359 270.848c-2.56055 73.3926 -0.608398 119.473 5.8877 138.24c1.36035 3.07227 2.97656 5.71191 4.84863 7.93652c1.87207 2.22363 4.27148 4.35156 7.16797 6.39941c2.91211 2.04785 5.21582 3.66406 6.91211 4.86426
+c1.71191 1.2002 4.6875 2.89551 8.95996 5.12012c4.27148 2.22363 7.08789 3.66406 8.46387 4.35156c46.416 0 112.304 0.335938 197.632 1.02441c85.3281 0.6875 141.472 1.02344 168.448 1.02344h48.1279s9.40723 -0.0800781 28.1758 -0.255859
+c18.7676 -0.175781 28.416 -0.607422 28.9277 -1.2793c0.511719 -0.688477 8.19238 -1.71289 23.04 -3.07227c14.8477 -1.36035 20.3838 -3.07227 16.6406 -5.12012c5.47168 -3.07227 10.0635 -7.16797 13.8076 -12.2881
+c3.75977 -5.12012 6.57617 -10.1436 8.44824 -15.1035c1.8877 -4.96094 3.15137 -11.7764 3.83984 -20.4805c0.671875 -8.7041 1.00781 -15.8721 1.00781 -21.5039s-0.0800781 -14.1602 -0.255859 -25.6006c-0.175781 -11.4238 -0.255859 -19.8877 -0.255859 -25.3438
+c0 -70.6562 -3.93652 -126.464 -11.7764 -167.408c-7.83984 -40.9756 -24.2402 -77.3115 -49.1523 -109.056c-23.8877 -30.0322 -51.9678 -53.8398 -84.2236 -71.4238s-65.1836 -28.2559 -98.8164 -32c-33.6318 -3.75977 -67.7598 -1.8877 -102.399 5.63184
+c-34.6396 7.52051 -66.4639 20.0479 -95.4883 37.6484c-29.0078 17.5674 -54.7842 40.2881 -77.3115 68.0957c-22.5283 27.8076 -38.9121 58.7842 -49.1523 92.9277c-5.12012 17.7119 -8.94434 63.2803 -11.5039 136.672zM82.1758 271.872
+c-8.87988 -9.56836 -6.31934 -24.832 7.68066 -45.8242s31.7432 -42.0801 53.2471 -63.2314c0.688477 -0.688477 7.4248 -7.50488 20.2246 -20.4648c12.7998 -12.9756 21.9355 -21.8398 27.3916 -26.624c5.45605 -4.7832 13.4883 -10.8477 24.0645 -18.1914
+c10.5918 -7.34375 20.3193 -12.1924 29.1836 -14.5918c3.74414 -1.00879 7.60059 -1.53613 11.5205 -1.53613c3.93555 0 7.26367 0.175781 9.9834 0.511719c2.75195 0.335938 6.06445 1.45605 10 3.32812c3.91992 1.87207 6.65625 3.15234 8.19238 3.83984
+c1.53613 0.688477 4.19238 2.63965 7.93555 5.87207c3.74414 3.24805 5.79199 5.02441 6.14453 5.37598c0.351562 0.352539 2.38379 2.22363 6.14355 5.64844l1.53613 1.53516c3.07227 3.07227 13.4082 12.6406 30.9922 28.6729
+c17.584 16.0479 32.2725 29.7754 44.0322 41.2158c11.7598 11.4395 23.2959 24.9277 34.5596 40.4482c11.2646 15.5195 17.2324 28.416 17.9199 38.6553c-5.12012 13.6484 -11.6162 23.2002 -19.4717 28.6719c-7.83984 5.45605 -16.4639 6.91211 -25.8398 4.35254
+c-9.39258 -2.56055 -18.9443 -7.00781 -28.6719 -13.3125c-9.72852 -6.31934 -19.792 -14.5117 -30.208 -24.5752c-10.416 -10.0645 -19.9688 -19.6328 -28.6885 -28.6729c-8.6875 -9.04004 -17.1357 -17.7432 -25.3438 -26.1113
+c-8.19238 -8.36816 -14.4961 -13.9199 -18.9443 -16.6562c-9.21582 5.47168 -21.584 15.6318 -37.1201 30.4639c-15.5361 14.8477 -29.5195 28.8477 -41.9834 41.9844c-12.4639 13.1357 -25.0078 24.0635 -37.6318 32.7676
+c-12.6406 8.7041 -22.0166 11.1846 -28.1602 7.42383c-8.54395 -5.10352 -18.0967 -12.0957 -28.6885 -20.9756z" />
+ <glyph glyph-name="uniF101" unicode=""
+d="M-19.9238 59.8457c1.68164 2.70605 4.37402 2.85254 8.08887 0.49707c84.2168 -48.8594 175.865 -73.2744 274.9 -73.2744c66.0186 0 131.219 12.2881 195.584 36.8789c1.66797 0.672852 4.11035 1.68164 7.31445 3.02734
+c3.18945 1.36133 5.4707 2.34082 6.81738 3.04297c5.06152 2.01855 9.01074 0.995117 11.8779 -3.04297c2.85254 -4.02246 1.93066 -7.73828 -2.7793 -11.1172c-6.04199 -4.38867 -13.8096 -9.43555 -23.2305 -15.1553
+c-28.9502 -17.1738 -61.3232 -30.501 -97.0605 -39.9209c-35.6934 -9.4502 -70.5537 -14.1611 -104.594 -14.1611c-52.5459 0 -102.254 9.18652 -149.065 27.5459c-46.8262 18.3584 -88.7812 44.1924 -125.835 77.5752c-2.01855 1.66797 -3.04297 3.34961 -3.04297 5.07617
+c0 0.995117 0.336914 2.00391 1.02441 3.02832zM132.169 203.864c0 23.2441 5.73438 43.125 17.1885 59.6406c11.4541 16.501 27.1221 28.9639 46.9873 37.3906c18.1836 7.75293 40.6084 13.3115 67.2178 16.6758c9.09961 1.00977 23.9326 2.35547 44.457 4.05273v8.57227
+c0 21.5625 -2.35547 36.0449 -7.06641 43.4609c-7.06543 10.1084 -18.1826 15.1553 -33.3379 15.1553h-4.03809c-11.1318 -1.00879 -20.7285 -4.54883 -28.8027 -10.6201c-8.08984 -6.07031 -13.3125 -14.4824 -15.668 -25.2637
+c-1.3457 -6.74316 -4.72461 -10.6201 -10.1084 -11.6299l-58.1338 7.08105c-5.73438 1.3457 -8.58691 4.3877 -8.58691 9.09863c0 1.00879 0.161133 2.19434 0.49707 3.54004c5.73438 29.9736 19.793 52.209 42.2041 66.7061s48.5957 22.5723 78.584 24.2539h12.625
+c38.415 0 68.418 -9.93262 89.9512 -29.8271c3.34961 -3.36426 6.46582 -6.99219 9.3623 -10.8545c2.85254 -3.87695 5.12012 -7.31445 6.80176 -10.3574c1.69727 -3.02734 3.21875 -7.40137 4.5498 -13.1357c1.36035 -5.73438 2.37012 -9.68457 3.04297 -11.8789
+c0.6875 -2.17969 1.18457 -6.9043 1.52148 -14.1455c0.350586 -7.25586 0.49707 -11.542 0.49707 -12.8877v-122.295c0 -8.7627 1.25781 -16.7646 3.78906 -24.0059c2.53027 -7.24121 4.97363 -12.4775 7.34375 -15.667c2.35449 -3.20312 6.23145 -8.32324 11.6289 -15.418
+c2.00488 -3.04297 3.02832 -5.73535 3.02832 -8.08984c0 -2.7207 -1.36035 -5.04688 -4.03711 -7.06543c-27.9697 -24.2549 -43.125 -37.3906 -45.4805 -39.4102c-4.05176 -3.02734 -8.90918 -3.36426 -14.6582 -1.00879c-4.70996 4.03711 -8.83496 7.91406 -12.375 11.6445
+c-3.54004 3.68555 -6.07129 6.39258 -7.57812 8.07422c-1.52148 1.68262 -3.96387 4.97363 -7.3584 9.8457c-3.34961 4.88574 -5.70508 8.17676 -7.05078 9.84473c-18.8564 -20.5381 -37.4053 -33.3389 -55.5889 -38.3857
+c-11.4541 -3.36426 -25.6143 -5.06152 -42.4521 -5.06152c-25.9355 0 -47.25 8.00195 -63.9414 24.0205c-16.6758 15.9893 -25.0146 38.6484 -25.0146 67.9502zM219.092 213.957c0 -13.1211 3.29199 -23.6689 9.86035 -31.5977
+c6.56738 -7.89941 15.418 -11.8779 26.5361 -11.8779c1.00879 0 2.42773 0.175781 4.28613 0.511719c1.85742 0.336914 3.11523 0.498047 3.80273 0.498047c14.1465 3.7002 25.0889 12.7998 32.8564 27.2969c3.70117 6.40723 6.46582 13.3848 8.30859 20.9619
+c1.87305 7.57812 2.86719 13.7363 3.04297 18.4473c0.175781 4.70996 0.249023 12.4629 0.249023 23.2441v12.6396c-19.5293 0 -34.3779 -1.3457 -44.457 -4.03809c-29.666 -8.39648 -44.4854 -27.1064 -44.4854 -56.0859zM431.309 51.2588
+c0.6875 1.3457 1.69727 2.70605 3.05762 4.03711c8.42578 5.70508 16.501 9.61133 24.2686 11.6152c12.7852 3.36426 25.249 5.2373 37.3906 5.54395c3.36523 0.322266 6.58301 0.175781 9.59668 -0.49707c15.1406 -1.3457 24.2539 -3.87695 27.2969 -7.57812
+c1.3457 -2.01855 2.01855 -5.04688 2.01855 -9.08398v-3.54004c0 -11.8057 -3.21777 -25.6875 -9.59668 -41.7061c-6.40723 -16.0186 -15.3301 -28.8916 -26.7842 -38.6484c-1.68262 -1.36035 -3.21875 -2.04785 -4.5498 -2.04785
+c-0.672852 0 -1.375 0.189453 -2.0332 0.526367c-2.0332 0.995117 -2.53125 2.85254 -1.52148 5.55859c12.4492 29.2861 18.6807 49.6787 18.6807 61.1182c0 3.71582 -0.658203 6.40723 -2.01855 8.11914c-3.36523 4.02246 -12.7998 6.04102 -28.292 6.04102
+c-5.73438 0 -12.4922 -0.321289 -20.2168 -1.00879c-8.44043 -0.995117 -16.1641 -1.98926 -23.2734 -2.99902c-2.01953 0 -3.36523 0.322266 -4.05273 1.00977c-0.643555 0.658203 -0.833984 1.33105 -0.482422 1.98926
+c0.0292969 0.350586 0.219727 0.87793 0.511719 1.55078z" />
+ <glyph glyph-name="uniF106" unicode=""
+d="M40.208 212.992c2.38379 28.3359 9.8877 52.0479 22.5117 71.168c13.3125 20.1436 29.6162 35.9199 48.9121 47.3594c19.2803 11.4404 38.832 17.1523 58.624 17.1523c13.9844 0 31.3125 -3.66406 51.9678 -11.0078c20.6562 -7.34375 36.0801 -11.0078 46.3359 -11.0078
+c9.53613 0 24.1289 3.66406 43.7607 11.0078s37.6475 11.0078 54.0156 11.0078c17.7441 0 35.3281 -4.60742 52.7363 -13.8242c17.4082 -9.21582 32.6074 -22.0156 45.584 -38.3994c-16.7363 -9.21582 -30.1279 -21.248 -40.208 -36.0967
+c-10.0801 -14.8477 -15.7764 -30.4639 -17.1367 -46.8477v-12.2881c-0.351562 -11.9521 1.18457 -23.9043 4.59277 -35.8398c4.43164 -16.0322 12.624 -30.5439 24.5762 -43.5195c11.9512 -12.9766 26.4639 -22.7041 43.5195 -29.1846
+c-11.5996 -24.9277 -22.6885 -45.584 -33.2803 -61.9521c-14.6719 -21.8398 -29.168 -39.584 -43.5039 -53.248s-29.8721 -20.6553 -46.5918 -20.9912c-9.91992 0 -22.8799 3.74316 -38.9277 11.2637c-15.3604 6.81543 -30.8965 10.2402 -46.5928 10.2402h-2.04785
+c-16.0312 0 -32.2559 -3.58398 -48.6396 -10.752s-29.6963 -10.752 -39.9355 -10.752c-28.3369 0.335938 -57.6807 23.7275 -88.0645 70.1436c-19.4561 29.6963 -33.6162 61.1035 -42.4961 94.208c-6.83203 25.9521 -10.2402 50.5117 -10.2402 73.7275
+c0 6.14453 0.176758 12.2881 0.52832 18.4326zM252.688 345.088c-1.02441 5.12012 -1.55273 10.2402 -1.55273 15.3604c0 22.1914 9.04004 44.208 27.1367 66.0479c9.21582 11.2637 21.0713 20.8154 35.5996 28.6719c14.4961 7.83984 28.5762 12.2881 42.2236 13.3125
+c0.688477 -5.12012 1.02441 -10.2402 1.02441 -15.3604c0 -23.5518 -8.52832 -46.0801 -25.6006 -67.584c-9.56738 -12.2881 -21.5039 -22.1924 -35.8398 -29.6963c-14 -7.51953 -27.6641 -11.0879 -40.9756 -10.752h-2.01562z" />
+ <glyph glyph-name="uniF132" unicode=""
+d="M-20.0322 -65.0244v512h131.584v-189.951h117.248c29.0078 41.9834 72.8799 105.312 131.584 189.951h146.433l-167.937 -244.224c0 -4.0957 16.4639 -28.4961 49.4082 -73.2158s65.792 -88.4004 98.5596 -131.056l49.1523 -63.5049h-175.632
+c-16.0322 22.5283 -40.4326 56.5928 -73.2002 102.16c-32.7676 45.5684 -57.1836 79.7764 -73.2158 102.656h-102.4v-204.816h-131.584z" />
+ <glyph glyph-name="uniF151" unicode=""
+d="M54.5918 -72.1924v213.504l38.9121 -0.511719l-1.53613 -171.52h256.513v171.008h40.4473v-212.464h-334.336v-0.0166016zM117.568 39.9355h200.704v-42.4951h-200.704v42.4951zM118.08 73.2158l4.0957 43.5205l201.216 -19.4561l-4.0957 -43.5361zM128.832 161.776
+l11.7764 42l194.56 -54.7686l-12.3037 -42zM165.184 264.704l22.5283 37.376l173.072 -104.448l-23.0566 -37.376zM250.688 369.664l35.3271 25.5996l117.761 -164.352l-35.8408 -25.6006zM379.712 432.64l43.0078 7.16797l33.2803 -199.168l-43.0078 -7.16797z" />
+ <glyph glyph-name="uniF113" unicode=""
+d="M38.1436 -55.2959v489.984c41.2969 7.16797 91.9844 10.752 152.064 10.752c47.792 0 87.9844 -4.09668 120.592 -12.2881c32.5918 -8.19238 60.832 -21.3281 84.7197 -39.4248c56.3203 -42.6719 84.4805 -105.808 84.4805 -189.439
+c0 -88.752 -27.4883 -156.16 -82.416 -202.24c-50.5283 -43.0078 -127.504 -64.5117 -230.928 -64.5117c-48.8164 0 -91.6484 2.38379 -128.513 7.16797zM150.784 27.6641c6.47949 -1.37598 19.6318 -2.06445 39.4238 -2.06445h2.04785
+c52.2246 0 93.1846 14.5127 122.88 43.5361c30.3682 29.3447 45.5684 73.0244 45.5684 131.072c0 52.5596 -13.9043 92.1602 -41.7119 118.784c-27.8398 26.6074 -66.832 39.9199 -117.008 39.9199c-22.5283 0 -39.6006 -1.53613 -51.2002 -4.6084v-326.64z" />
+ <glyph glyph-name="uniF11F" unicode=""
+d="M-70.1602 128.512h60.9277c1.71289 -13.6641 6.73633 -24.5762 15.1045 -32.7676c8.36816 -8.19238 19.376 -12.3037 33.0244 -12.3037c16.3838 0 29.4395 5.55176 39.168 16.6396c9.72754 11.0879 14.5918 24.9922 14.5918 41.7275
+c0 16.3848 -4.78418 29.8564 -14.3359 40.4482c-9.56836 10.5762 -22.3525 15.8564 -38.4004 15.8564c-12.9756 0 -24.0635 -4.17676 -33.2803 -12.5439c-9.21582 -8.36816 -17.9199 -12.5439 -26.1113 -12.5439c-18.0801 0 -31.7441 0.335938 -40.96 1.00781
+c3.07129 17.7441 7.93555 45.1357 14.5918 82.1758c6.65625 37.0244 11.5195 65.1035 14.5918 84.2236h168.96v-50.1758h-124.4c-4.7832 -24.2402 -8.87988 -47.1035 -12.2871 -68.6074h1.53516c5.80859 7.16797 14.416 12.6396 25.8564 16.3838
+c11.4404 3.75977 22.624 5.63184 33.5361 5.63184c38.5762 0 65.8721 -17.584 81.9199 -52.7363c8.19238 20.4805 20.4795 36.5283 36.8643 48.1279c16.3838 11.6162 35.3281 17.4082 56.832 17.4082c16.7197 0 32.2559 -3.32812 46.6074 -9.9834
+c14.3359 -6.65625 25.6006 -13.7441 33.7764 -21.248c8.17578 -7.50488 18.9443 -18.7686 32.2559 -33.792c1.02441 -1.02441 1.80762 -1.87207 2.32031 -2.56055c0.511719 -0.6875 1.18359 -1.45605 2.04785 -2.30371l2.30371 -2.30371
+c11.9678 13.6631 20.4961 23.1191 25.6162 28.416c5.12012 5.2959 12.9756 12.208 23.5518 20.7354c10.5918 8.54395 21.168 14.416 31.7441 17.6641s22.4961 4.91211 35.8076 4.91211c30.7207 0 55.4727 -10.3359 74.2402 -30.9756
+c18.7686 -20.6406 28.1602 -46.5127 28.1602 -77.5684c0 -31.7285 -9.4082 -58.3525 -28.1758 -79.8564c-18.7686 -21.5195 -43.8564 -32.2715 -75.2646 -32.2715c-39.5996 0 -78.1592 22.3516 -115.712 67.0723c-2.36719 -2.40039 -9.02344 -8.97656 -19.9678 -19.7119
+c-10.9121 -10.7529 -18.1602 -17.5049 -21.7441 -20.2246c-3.59961 -2.73633 -9.90332 -7.08789 -18.9434 -13.0557s-17.9199 -9.9043 -26.624 -11.7764c-8.7207 -1.87207 -18.5283 -2.81543 -29.4404 -2.81543c-21.5039 0 -40.4482 5.63184 -56.832 16.9111
+c-16.3838 11.248 -29.0078 26.9766 -37.8877 47.0889c-21.168 -43.6963 -55.8086 -65.5361 -103.952 -65.5361c-32.416 0 -59.1357 8.11133 -80.1279 24.3193s-31.4883 39.8564 -31.4883 70.9121zM193.52 143.872c0 -14.3359 4.35254 -25.9365 13.0566 -34.8164
+s20.2236 -13.3115 34.5596 -13.3115c25.6162 0 52.0479 16.208 79.3604 48.624c-11.5996 11.9521 -19.792 20.2402 -24.5605 24.8477c-4.7832 4.6084 -12.9111 10.2402 -24.3359 16.8965c-11.4395 6.65527 -22.2715 9.9834 -32.5117 9.9834
+c-13.3115 0 -24.2402 -5.2959 -32.7676 -15.8721c-8.52832 -10.5752 -12.8008 -22.6875 -12.8008 -36.3516zM392.688 143.872c9.21582 -9.9043 16.9912 -17.6641 23.3115 -23.2959c6.32031 -5.64844 14.6562 -11.168 25.0723 -16.6406
+c10.416 -5.47168 20.9121 -8.19141 31.4873 -8.19141c14.6885 0 26.208 4.6875 34.5605 14.0801c8.36816 9.3916 12.5439 21.4238 12.5439 36.0957c0 14.3359 -4.35254 26.2881 -13.04 35.8242c-8.71973 9.56738 -20.2402 14.3359 -34.5596 14.3359
+c-8.52832 0 -16.9121 -1.96777 -25.0889 -5.8877c-8.19141 -3.93652 -14.416 -7.60059 -18.6875 -11.0088c-4.28809 -3.42383 -10.6719 -9.56738 -19.2002 -18.4316s-14 -14.4795 -16.3994 -16.8799z" />
+ <glyph glyph-name="uniF158" unicode=""
+d="M29.8398 127.488c0 49.8232 16.208 93.0078 48.6406 129.552c36.1914 40.2881 81.584 60.416 136.191 60.416c23.2002 0 44.5439 -3.58398 64 -10.752c-7.83984 -16.0322 -12.4482 -30.7197 -13.8242 -44.0322c-16.0312 6.48047 -32.752 9.72852 -50.1758 9.72852
+c-37.8877 0 -70.4795 -14.1602 -97.792 -42.4961c-27.2959 -29.0244 -40.96 -63.4883 -40.96 -103.424c0 -26.2881 6.32031 -50.5283 18.9443 -72.7207c11.9355 -21.8398 28.6719 -39.0557 50.1758 -51.6953c20.832 -12.2881 44.0322 -18.416 69.6318 -18.416
+c24.9121 0 47.9521 6.11133 69.1201 18.416c21.168 11.9512 38.0479 29.1836 50.6885 51.6953c12.2871 22.5283 18.416 46.7842 18.416 72.7207c0 21.4873 -3.74414 40.9434 -11.248 58.3516c15.3594 3.07227 29.8555 8.86426 43.5195 17.4082
+c9.21582 -23.2002 13.8242 -48.1279 13.8242 -74.752c0 -50.8643 -17.248 -94.7207 -51.7119 -131.584c-34.4639 -37.5527 -78.6719 -56.3203 -132.608 -56.3203c-54.2715 0 -98.6396 18.7676 -133.12 56.3203c-34.4795 37.5518 -51.7119 81.4072 -51.7119 131.584z
+M173.2 -2.04785l8.17578 3.58398c5.45605 2.73633 12.4482 7.58398 20.9922 14.5918c8.54395 6.99219 17.8398 15.7764 27.9043 26.3682c10.0635 10.5762 19.8711 25.168 29.4395 43.7764c9.55176 18.5918 18 39.3271 25.3438 62.208
+c7.32812 22.8633 12.5605 51.376 15.6162 85.5039c1.71191 17.0557 2.56055 34.4795 2.56055 52.2236c-0.335938 18.4316 -1.18457 37.5518 -2.56055 57.3438l2.56055 6.65625c1.71191 4.44824 2.71973 10.416 3.05566 17.9199v3.58398
+c0 6.48047 -0.671875 13.1357 -2.03223 19.9678c-1.71191 8.19238 -6.49609 17.2324 -14.3359 27.1367c-8.19238 9.56738 -18.9443 17.7432 -32.2559 24.5752l5.63184 -8.70312c3.4082 -5.45605 8.78418 -16.8965 16.1279 -34.3047s14.7686 -37.7119 22.2881 -60.9277
+l4.5918 -12.7998c2.75195 -8.52832 5.39258 -20.2246 7.93652 -35.0723c2.55957 -14.8477 4.7041 -31.6641 6.39941 -50.4316c0.688477 -6.48047 1.02441 -13.3125 1.02441 -20.4805c0 -13.3115 -1.02441 -26.9756 -3.07227 -40.96
+c-3.07227 -21.8398 -8.35156 -43.3604 -15.8555 -64.5117c-7.52051 -21.168 -19.8887 -42.3359 -37.1201 -63.4883c-17.248 -21.168 -38.4805 -39.7764 -63.7441 -55.8076zM314 324.096c1.37598 13.6641 5.2959 24.5762 11.7764 32.7686l9.21582 12.7998
+c4.0957 4.78418 10.752 9.31152 19.9678 13.5684c9.21582 4.25586 17.4082 7.42383 24.5596 9.47168l10.7529 3.07227c12.3037 2.73535 23.6631 8.7041 34.0635 17.9199s17.8242 17.9199 22.2725 26.1113l6.65527 11.7764c14 -19.4561 22.3525 -41.4717 25.0879 -66.0479
+c1.36035 -10.9277 1.87207 -20.6562 1.53613 -29.1846c0 -11.5996 -1.00781 -21.6631 -3.07129 -30.208l-5.63281 -23.04c-4.0957 -11.2637 -9.80762 -21.5039 -17.1514 -30.7197s-13.5684 -15.5361 -18.6885 -18.9434l-7.67969 -5.63281
+c-11.5996 -6.81543 -23.0244 -10.2393 -34.2881 -10.2393l-55.8076 27.1357c19.7754 10.9277 37.0234 22.0156 51.6953 33.2803c14.6719 11.2637 25.5205 21.0713 32.5127 29.4395c7.00781 8.36816 12.624 15.9678 16.9121 22.7842
+c4.25586 6.81641 6.71973 12.1123 7.40723 15.8721l1.02441 5.12012c-6.16016 -13.6641 -14.416 -26.1123 -24.8477 -37.376c-10.4004 -11.2646 -20.9922 -20.1445 -31.7285 -26.624c-10.7363 -6.48047 -21.0723 -12.0322 -30.9922 -16.6406
+c-9.8877 -4.60742 -17.9033 -7.75977 -24.0635 -9.47168l-9.21582 -2.55957c-8.52832 15.0078 -12.7842 28.4961 -12.7842 40.4473c0.015625 1.69629 0.175781 3.4082 0.511719 5.12012z" />
+ <glyph glyph-name="uniF153" unicode=""
+d="M-79.7441 252.416c0 18.7676 6.57617 34.8164 19.7119 48.1279c13.1357 13.3125 29.1045 19.9678 47.8721 19.9678c16.0322 0 30.2881 -5.04004 42.752 -15.1035c12.4639 -10.0645 20.3838 -22.7842 23.8086 -38.1445l257.023 -103.424
+c10.9277 6.48047 22.5283 9.71191 34.832 9.71191c0.671875 0 1.77637 -0.0800781 3.3125 -0.255859c1.53516 -0.175781 2.81543 -0.255859 3.83984 -0.255859l56.3193 81.3916c0.336914 24.9287 9.4082 46.1602 27.1523 63.7441s39.0557 26.3682 64 26.3682
+c25.248 0 46.752 -8.87988 64.4961 -26.624s26.624 -39.2314 26.624 -64.4795s-8.87988 -46.752 -26.624 -64.5127c-17.7441 -17.7441 -39.248 -26.624 -64.4961 -26.624l-87.04 -63.5039c-1.69629 -17.4082 -9.04004 -32 -22.0156 -43.7754
+c-12.9766 -11.7607 -28.1602 -17.6641 -45.5684 -17.6641c-16.3838 0 -30.7197 5.12012 -43.0078 15.3594c-12.2881 10.2402 -20.1445 23.04 -23.5518 38.3838l-257.04 102.944c-10.9287 -6.47949 -22.5283 -9.72754 -34.8164 -9.72754
+c-18.7676 0 -34.7363 6.65527 -47.8721 19.9678c-13.1357 13.3115 -19.7119 29.3604 -19.7119 48.1279zM-61.8242 252.416c0 -13.6484 4.86426 -25.3438 14.5918 -35.0723c9.72852 -9.72754 21.4248 -14.5918 35.0723 -14.5918c3.07227 0 6.65625 0.335938 10.752 1.02441
+l-20.9922 8.19141v0.512695c-9.55176 4.43164 -16.3838 11.5996 -20.4795 21.5039c-2.04785 4.7832 -3.07227 9.55176 -3.07227 14.3359c0 5.12012 1.02441 10.2393 3.07227 15.3594c4.0957 10.2402 10.9277 17.4082 20.4795 21.5039
+c5.12012 2.38477 10.416 3.4082 15.8721 3.07227c4.43262 0 9.04004 -0.847656 13.8242 -2.55957v0.511719l25.0879 -10.2402c-9.90332 17.7441 -24.7354 26.624 -44.5439 26.624c-13.6641 0 -25.3438 -4.86426 -35.0723 -14.5918
+c-9.72754 -9.72754 -14.5918 -21.5996 -14.5918 -35.584zM301.68 81.9199c9.9043 -17.7441 24.752 -26.624 44.5605 -26.624c13.6641 0 25.4238 4.86426 35.3115 14.5918c9.9043 9.72852 14.8486 21.584 14.8486 35.584c0 13.6641 -4.84863 25.3447 -14.5762 35.0723
+c-9.72852 9.72852 -21.6006 14.5762 -35.584 14.5762c-4.78418 0 -8.36816 -0.335938 -10.752 -1.00781l20.4639 -8.19238c10.2559 -4.0957 17.584 -11.2637 22.0156 -21.5195c2.38379 -5.10449 3.58398 -10.2402 3.58398 -15.3447
+c0 -4.7832 -1.00781 -9.72754 -3.05566 -14.8477c-4.0957 -10.5918 -11.2637 -17.9355 -21.5039 -22.0322c-5.12012 -2.04785 -10.2559 -3.05566 -15.376 -3.05566c-4.78418 0 -9.71191 1.00781 -14.8486 3.05566c-2.71973 1.02441 -6.91113 2.65625 -12.5273 4.87988
+c-5.63184 2.22461 -9.80859 3.85645 -12.5605 4.86426zM439.936 253.44c0 -16.7207 5.96875 -31.0566 17.9209 -43.0088c11.9512 -11.9512 26.2871 -17.9199 43.0078 -17.9199c17.0557 0 31.5674 5.96875 43.5039 17.9199c11.9521 11.9521 17.9355 26.2881 17.9355 43.0088
+c0 16.7197 -5.9834 31.0557 -17.9355 43.0078c-11.9365 11.9521 -26.4326 17.9199 -43.5039 17.9199c-16.7363 0 -31.0566 -5.98438 -43.0078 -17.9199c-11.9521 -11.9365 -17.9209 -26.2881 -17.9209 -43.0078zM452.736 253.952c0 13.3115 4.7041 24.7363 14.0801 34.3037
+c9.3916 9.55176 20.8955 14.3359 34.5596 14.3359c13.3281 0 24.752 -4.78418 34.3203 -14.3359c9.56738 -9.56738 14.3359 -20.9922 14.3359 -34.3037c0 -13.6484 -4.76855 -25.248 -14.3359 -34.8164c-9.56836 -9.55176 -21.0078 -14.3359 -34.3203 -14.3359
+c-13.6484 0 -25.168 4.78418 -34.5596 14.3359c-9.37598 9.55273 -14.0801 21.1523 -14.0801 34.8164z" />
+ <glyph glyph-name="uniF126" unicode=""
+d="M93.248 27.6641c0 29.6797 15.1836 56.1436 45.5684 79.3438c30.3672 23.2158 67.0713 34.832 110.08 34.832h27.6475c-14.3359 13.6484 -21.5195 28.3359 -21.5195 44.0322c0 9.9043 2.75195 19.792 8.20801 29.6963
+c-3.4248 -0.335938 -8.35254 -0.512695 -14.8643 -0.512695c-35.4883 0 -64.4961 11.0879 -87.0244 33.2803c-22.5273 22.1924 -33.792 49.4883 -33.792 81.9199c0 31.0557 14 58.1924 41.9844 81.4082c27.9834 23.2158 59.9043 34.8164 95.7441 34.8164h158.72
+l-35.3281 -25.6006h-50.1758c16.0322 -6.14355 28.5918 -17.7441 37.6318 -34.8154c9.04004 -17.0566 13.5684 -36 13.5684 -56.832c0 -31.7441 -15.0078 -59.3926 -45.04 -82.9443c-12.624 -9.9043 -20.832 -17.7441 -24.5762 -23.5518
+c-3.74414 -5.80859 -5.63184 -12.9766 -5.63184 -21.5039c0 -6.48047 4.5918 -14.6729 13.8076 -24.5762c9.21582 -9.88867 18.4326 -18.2725 27.6641 -25.0723c20.8164 -14.6875 35.248 -29.6963 43.2637 -45.0557c8.0166 -15.376 12.0322 -34.6562 12.0322 -57.8564
+c0 -30.7197 -13.9834 -57.4238 -41.9834 -80.1279s-65.8721 -34.0479 -113.664 -34.0479c-45.4082 0 -83.8086 8.52832 -115.217 25.5996c-31.3916 17.0244 -47.1035 39.5684 -47.1035 67.5684zM150.592 44.5439c0 -23.5518 9.98438 -43.6162 29.9521 -60.1758
+c19.9678 -16.5439 44.7998 -24.8164 74.4805 -24.8164c40.624 0 70.0635 7.50391 88.3359 22.5127c18.2715 15.0078 27.3916 34.9912 27.3916 59.9033c0 6.48047 -0.6875 11.9521 -2.04785 16.3838c-1.00781 3.74414 -2.22363 7.24805 -3.58398 10.4961
+c-1.37598 3.23242 -3.4082 6.46387 -6.16016 9.71191c-2.71973 3.24805 -5.10352 5.96875 -7.15234 8.19238c-2.04785 2.22363 -5.37598 5.02441 -9.9834 8.44824c-4.6084 3.42383 -8.1123 5.96777 -10.4961 7.66406c-2.38379 1.71191 -6.65625 4.7041 -12.7998 8.97559
+c-6.16016 4.27246 -10.5928 7.24805 -13.3125 8.95996c-13.3115 4.1123 -26.4482 6.14453 -39.4238 6.14453h-2.04785c-29.6963 0 -55.8086 -8.0166 -78.3359 -24.0645c-23.2002 -16.3516 -34.8164 -35.8242 -34.8164 -58.3359zM184.368 330.752
+c3.75977 -26.96 14.0957 -50.1758 30.9922 -69.6318c16.8955 -19.4561 35.584 -29.3438 56.0801 -29.6963h2.03125c19.1201 0 34.4639 8.87988 46.0967 26.624c9.21582 14.3359 13.8076 31.2324 13.8076 50.6885c0 5.45605 -0.335938 11.2637 -1.02441 17.4072
+c-3.40723 26.9766 -13.5674 49.8408 -30.4473 68.6084s-35.584 28.4961 -56.0645 29.1836h-2.04785c-19.4717 0 -35.0078 -8.70312 -46.5918 -26.1113c-9.21582 -14 -13.8242 -30.7207 -13.8242 -50.1758c-0.015625 -5.45605 0.320312 -11.0889 0.992188 -16.8965z" />
+ <glyph glyph-name="uniF12E" unicode=""
+d="M0 -23.04v409.6c0 13.9948 5.03451 26.027 15.1035 36.0967c10.0697 10.069 22.1019 15.1035 36.0967 15.1035h409.6c13.9948 0 26.027 -5.03451 36.0967 -15.1035c10.069 -10.0697 15.1035 -22.1019 15.1035 -36.0967v-409.6
+c0 -13.9948 -5.03451 -26.0267 -15.1035 -36.0957c-10.0697 -10.0697 -22.1019 -15.1045 -36.0967 -15.1045h-409.6c-13.9948 0 -26.027 5.03483 -36.0967 15.1045c-10.069 10.069 -15.1035 22.1009 -15.1035 36.0957zM102.4 181.76
+c0 -42.3249 15.0186 -78.5062 45.0557 -108.544c30.0371 -30.0371 66.2184 -45.0557 108.544 -45.0557c42.3255 0 78.5068 15.0186 108.544 45.0557c30.0371 30.0378 45.0557 66.2191 45.0557 108.544c0 42.3255 -15.0186 78.5068 -45.0557 108.544
+c-30.0371 30.0378 -66.2184 45.0566 -108.544 45.0566c-42.3255 0 -78.5068 -15.0189 -108.544 -45.0566c-30.0371 -30.0371 -45.0557 -66.2184 -45.0557 -108.544zM153.6 181.76c0 27.9896 10.0693 52.0537 30.208 72.1924s44.2028 30.208 72.1924 30.208
+c27.9896 0 52.0537 -10.0693 72.1924 -30.208s30.208 -44.2028 30.208 -72.1924c0 -27.9889 -10.0693 -52.0527 -30.208 -72.1914s-44.2028 -30.208 -72.1924 -30.208c-27.9896 0 -52.0537 10.0693 -72.1924 30.208s-30.208 44.2025 -30.208 72.1914z" />
+ <glyph glyph-name="uniF157" unicode=""
+d="M-67.3838 -8.42773c10.4199 -1.01465 20.8262 -1.54785 31.2207 -1.54785c61.0479 0 115.527 18.7314 163.386 56.1699c-28.4238 0.351562 -53.9326 9.04102 -76.4766 26.043c-22.5693 16.9893 -37.9844 38.6748 -46.3232 65.0557
+c6.93359 -1.41797 15.1025 -2.09473 24.4561 -2.09473c12.1494 0 23.7666 1.57422 34.8623 4.68359c-30.5176 5.86621 -55.7666 20.8916 -75.709 44.9961c-19.9551 24.1309 -29.9199 51.9688 -29.9199 83.5273v1.57422c18.3945 -10.4199 38.3105 -15.8057 59.8262 -16.1309
+c-18.0166 11.7988 -32.3389 27.3047 -42.915 46.5703c-10.5752 19.2393 -15.8701 40.1309 -15.8701 62.6748c0 23.5977 6.08789 45.6074 18.2119 66.0957c32.5996 -40.5859 72.418 -72.9385 119.431 -97.0557c47 -24.0918 97.3682 -37.5293 151.158 -40.3262
+c-2.43262 11.4473 -3.65527 21.5156 -3.65527 30.1797c0 36.085 12.8398 66.9541 38.5049 92.6201c25.6787 25.666 56.7041 38.5049 93.1533 38.5049c37.79 0 69.7002 -13.8799 95.7295 -41.6396c30.167 6.25684 57.9268 17.0146 83.2549 32.2607
+c-9.71777 -31.5586 -28.8145 -55.8457 -57.2373 -72.8477c25.3271 3.10938 50.3037 10.0557 74.9287 20.8135c-16.6514 -26.0166 -38.3359 -48.7422 -65.0557 -68.1514v-17.1973c0 -34.9922 -5.125 -70.1279 -15.3496 -105.355
+c-10.2119 -35.2139 -25.8486 -68.8535 -46.8311 -100.972c-20.9951 -32.0654 -46.0498 -60.6191 -75.1885 -85.5693c-29.126 -24.9766 -64.0801 -44.8535 -104.849 -59.5918c-40.7549 -14.752 -84.5547 -22.0889 -131.398 -22.0889
+c-72.4834 0.0136719 -139.606 19.6045 -201.345 58.7988z" />
+ <glyph glyph-name="uniF156" unicode=""
+d="M84.6084 238.08v72.7041c20.4795 6.83203 37.7119 16.2236 51.7119 28.1602c14 11.2637 25.4238 25.9355 34.3037 44.0312c8.87988 18.0801 14.8643 39.7607 17.9199 65.0244h73.2002v-129.536h121.344v-80.3838h-121.344v-131.072
+c0 -29.3438 1.55176 -48.4482 4.5918 -57.3438c3.07227 -8.19238 8.89648 -14.8477 17.4404 -19.9678c11.6152 -6.81641 24.5596 -10.2402 38.9121 -10.2402c26.2871 0 52.0479 8.35156 77.3115 25.0879v-80.3838c-21.5039 -10.5605 -41.2959 -17.9043 -59.3916 -22.0166
+c-17.7285 -4.0957 -36.8965 -6.14355 -57.3447 -6.14355c-23.2158 0 -44.0312 2.91211 -62.4639 8.7041c-18.7676 6.47949 -33.9678 15.0078 -45.5674 25.6162c-12.3047 10.5596 -21.168 22.208 -26.624 34.8154c-4.78418 11.584 -7.16797 29.5205 -7.16797 53.7441v179.2
+h-56.832z" />
+ <glyph glyph-name="uniF13E" unicode=""
+d="M-67.7764 188.928v26.1123c0 12.9756 14.8486 24.0635 44.5439 33.2803c29.6963 9.21582 65.6963 13.8232 108.032 13.8232c42.3203 0 78.3359 -4.60742 108.032 -13.8232c29.6963 -9.2168 44.5439 -20.3203 44.5439 -33.2803v-26.1123
+c-0.335938 -12.9756 -15.3604 -23.9834 -45.0557 -33.0234c-29.6963 -9.04004 -65.5361 -13.5684 -107.521 -13.5684c-41.9834 0 -77.8242 4.51172 -107.52 13.5684c-29.6963 9.05566 -44.7207 20.0479 -45.0566 33.0234zM79.168 313.344v13.8242
+c0.671875 6.49609 11.5996 12.0322 32.7676 16.6396c21.1523 4.6084 46.5928 6.91211 76.2881 6.91211c29.6963 0 55.04 -2.30371 76.0322 -6.91211c20.9922 -4.60742 31.8242 -10.1436 32.5117 -16.6396h0.512695v-13.8242h-0.512695
+c-0.6875 -6.83203 -11.5195 -12.5439 -32.5117 -17.1514c-20.9922 -4.6084 -46.3359 -6.91211 -76.0322 -6.91211c-29.6953 0 -55.1357 2.30371 -76.2881 6.91211c-21.168 4.60742 -32.0957 10.3193 -32.7676 17.1514zM187.2 60.4004v32.7832
+c1.35938 19.1045 21.3281 35.248 59.9033 48.3682c38.5762 13.1523 84.8164 19.7119 138.736 19.7119c53.9365 0 100.096 -6.55957 138.496 -19.7119c38.4004 -13.1201 58.2881 -29.2637 59.6641 -48.3682v-32.7832c-1.02441 -18.7686 -20.832 -34.8164 -59.4082 -48.1279
+c-38.5596 -13.3125 -84.8154 -19.9688 -138.752 -19.9688c-53.9199 0 -100.176 6.57617 -138.736 19.7119c-38.5596 13.1367 -58.5439 29.2959 -59.9033 48.3848zM303.936 235.008v21.5039c0.672852 9.88867 13.5684 18.2559 38.6562 25.0879
+c25.0723 6.83203 55.0244 10.2402 89.8398 10.2402c34.8164 0 64.7842 -3.4082 89.8564 -10.2402s37.9844 -15.1992 38.6562 -25.0879v-21.5039c0 -9.9043 -12.5439 -18.4316 -37.6484 -25.5996c-25.0723 -7.16797 -55.376 -10.752 -90.8799 -10.752
+s-65.7764 3.58398 -90.8799 10.752c-25.0723 7.16797 -37.6006 15.6953 -37.6006 25.5996z" />
+ <glyph glyph-name="uniF125" unicode=""
+d="M-47.4082 -31.7441v459.264h94.7197l4.6084 -4.0957h422.4l4.60742 4.0957h89.0723v-460.8h-87.5518v3.60059h-437.76v-2.06445h-90.0967zM42.6885 35.8398v-40.9756h437.76v37.8877l-176.641 132.608l-40.4473 -33.2803l-44.0322 35.8398zM42.6885 66.5596
+l157.184 117.248l-157.184 129.024v-246.272zM85.2002 394.752l178.176 -152.576l177.664 152.576h-355.84zM323.28 181.248l157.168 -117.76v247.808z" />
+ <glyph glyph-name="uniF15B" unicode=""
+d="M-56.3203 102.4c0 54.9434 31.4082 114.176 94.208 177.664c39.9365 39.5996 80.2246 67.2471 120.832 82.9434c19.1201 7.85645 35.6641 11.7764 49.6641 11.7764c15.3604 0 27.6484 -4.6084 36.8643 -13.8242c8.87988 -8.87988 13.3115 -21.168 13.3115 -36.8643
+c0 -10.5762 -2.04785 -22.8633 -6.14355 -36.8633c-1.36035 -4.78418 -0.847656 -7.76074 1.53613 -8.95996c2.38379 -1.2002 5.12012 -1.28027 8.19141 -0.256836l5.12012 2.04883c32.752 13.6631 61.792 20.4795 87.04 20.4795s43.3447 -7.16797 54.2881 -21.5039
+c5.10449 -7.50391 7.66406 -16.3838 7.66406 -26.624c0 -10.5762 -2.73633 -22.6885 -8.20801 -36.3516c-2.36816 -3.4082 -2.81543 -6.32031 -1.28027 -8.7041c1.55273 -2.38477 2.91211 -3.91992 4.1123 -4.6084c1.2002 -0.671875 3.66406 -1.53613 7.42383 -2.55957
+c21.1523 -6.49609 39.248 -17.0723 54.2881 -31.7607c15.0078 -14.6553 22.5117 -32.9434 22.5117 -54.7832c0 -20.1289 -6.99121 -40.6885 -20.9912 -61.6807s-33.0244 -40.1914 -57.0879 -57.5996c-24.0645 -17.4082 -54.4326 -31.7441 -91.1201 -43.0078
+c-36.7041 -11.2646 -75.6963 -16.8965 -116.992 -16.8965c-44.7197 0 -86.96 6.56055 -126.72 19.6963c-39.7607 13.1357 -72.7842 32.7676 -99.0723 58.8955c-26.2881 26.1123 -39.4404 55.9043 -39.4404 89.3447zM7.67969 77.8242
+c3.4082 -34.4805 24.752 -61.9521 64 -82.4326c31.4082 -16.7354 67.0723 -25.0713 107.009 -25.0713c9.90332 0 20.1436 0.496094 30.7197 1.53613c52.2236 5.11914 95.7441 21.6631 130.56 49.6631c31.4082 25.6006 47.1045 53.7607 47.1045 84.4805
+c0 3.07227 -0.175781 6.14355 -0.512695 9.21582c-3.40723 34.1445 -24.752 61.4404 -64 81.9199c-31.7432 16.7207 -67.584 25.0879 -107.52 25.0879c-9.9043 0 -19.9678 -0.511719 -30.208 -1.53516c-34.4639 -3.4082 -65.6963 -12.1123 -93.6963 -26.1123
+c-27.9834 -14 -49.4873 -31.2324 -64.5117 -51.7119c-12.9756 -18.0967 -19.4561 -36.6885 -19.4561 -55.8086c0 -3.08789 0.175781 -6.14355 0.511719 -9.23145zM89.6162 46.0801c-4.43262 9.8877 -6.65625 19.9678 -6.65625 30.208
+c0 11.9521 3.07227 23.9043 9.21582 35.8398c10.5918 21.8398 28.3359 38.2402 53.248 49.1523c15.3604 6.83203 30.8965 10.2393 46.5918 10.2393c9.2168 0 18.4326 -1.18359 27.6484 -3.58398c25.9355 -6.83203 44.5439 -20.8154 55.8076 -41.9834
+c5.79199 -10.9277 8.68848 -22.1924 8.68848 -33.792c0 -10.9277 -2.54395 -22.0166 -7.66406 -33.2803c-10.5762 -24.2236 -29.1846 -41.9678 -55.8076 -53.248c-15.0088 -6.46387 -30.0322 -9.71191 -45.0566 -9.71191c-11.6162 0 -23.04 1.87207 -34.3037 5.63184
+c-24.9277 7.83984 -42.1602 22.6885 -51.7119 44.5283zM118.288 55.8076c2.04785 -8.52734 7.16797 -14.4961 15.3604 -17.9199c4.43164 -2.04785 9.04004 -3.07129 13.8232 -3.07129c4.09668 0 8.19238 0.6875 12.2881 2.06348
+c9.56836 3.05566 16.8965 8.68848 22.0166 16.8799c3.40723 5.47266 5.12012 10.9443 5.12012 16.3838c0 2.38477 -0.512695 4.95996 -1.53613 7.68066c-2.04883 8.19141 -7.16797 13.9834 -15.3604 17.4082c-4.43164 1.69531 -8.87988 2.54395 -13.3115 2.54395
+c-4.09668 0 -8.35254 -0.672852 -12.8008 -2.03223c-9.21582 -3.07227 -16.2236 -8.52832 -20.9912 -16.3838c-3.76074 -5.45605 -5.63281 -11.0879 -5.63281 -16.8965c0 -2.38379 0.335938 -4.60742 1.02441 -6.65625zM190.464 96.2559
+c1.02441 -3.05566 3.24805 -5.28027 6.65625 -6.65625c1.71191 -0.6875 3.32812 -1.00781 4.86426 -1.00781c1.53516 0 3.15137 0.335938 4.86328 1.00781c3.74414 1.37598 6.48047 3.60059 8.19238 6.65625c1.71191 3.07227 2.04785 6.16016 1.02441 9.21582
+c-1.02441 3.07227 -3.07227 5.2959 -6.14453 6.65625c-3.07227 1.02441 -6.40039 0.944336 -9.98438 -0.255859s-6.23926 -3.32812 -7.93555 -6.40039c-1.02441 -2.04785 -1.53613 -4.0957 -1.53613 -6.14355v-3.07227zM354.816 414.208
+c-0.335938 1.69629 -0.496094 3.4082 -0.496094 5.12012c0 4.43164 1.37598 8.7041 4.0957 12.7998c3.4082 5.45605 8.36816 9.04004 14.8477 10.752c11.6162 2.38379 23.2168 3.58398 34.8164 3.58398c17.4082 0 34.4795 -2.55957 51.2158 -7.67969
+c28.3037 -9.21582 52.7041 -25.0879 73.1846 -47.6162c20.4795 -22.5283 33.792 -48.6396 39.9355 -78.3359c2.40039 -11.9521 3.58398 -23.5518 3.58398 -34.8164c0 -17.4072 -2.71973 -34.1279 -8.19238 -50.1758v-0.511719
+c-2.04785 -6.14453 -5.96777 -10.752 -11.7754 -13.8242c-3.74414 -1.69629 -7.50391 -2.55957 -11.248 -2.55957c-2.40039 0 -4.95996 0.335938 -7.68066 1.02344c-6.47949 2.04785 -11.0879 5.96777 -13.8076 11.7764c-1.71191 3.75977 -2.55957 7.34375 -2.55957 10.752
+c0 2.71973 0.335938 5.2959 1.00781 7.66406v0.511719c3.75977 11.6162 5.64746 23.5518 5.64746 35.8398c0 7.83984 -0.6875 16.0322 -2.06348 24.5762c-4.43164 21.168 -13.9844 39.7598 -28.6562 55.8086c-14.6875 16.0312 -32.0957 27.3115 -52.2402 33.792
+c-11.9512 3.40723 -23.8877 5.11914 -35.8232 5.11914c-8.20801 0 -16.5605 -0.863281 -25.0889 -2.55957c-1.71191 -0.335938 -3.40723 -0.511719 -5.11914 -0.511719c-4.78418 0 -9.2168 1.35938 -13.3125 4.0957c-5.48828 3.77637 -8.89551 8.87988 -10.2715 15.376z
+M375.312 333.824c-0.335938 1.69531 -0.527344 3.4082 -0.527344 5.12012c0 3.40723 1.02344 6.99121 3.08789 10.752c3.05566 4.78418 7.50391 7.85547 13.2959 9.21582c6.48047 1.36035 12.7998 2.04785 18.96 2.04785c22.8799 0 42.4961 -9.04004 58.8799 -27.1357
+c9.9043 -11.2646 16.3682 -24.0645 19.4561 -38.4004c1.00781 -5.79199 1.55176 -11.4238 1.55176 -16.8955c0 -8.19238 -1.37598 -16.3848 -4.0957 -24.5762c-1.71191 -5.45605 -5.12012 -9.39258 -10.2559 -11.7764
+c-3.05566 -1.69531 -6.16016 -2.55957 -9.21582 -2.55957c-2.38379 0 -4.6084 0.335938 -6.65625 1.02344c-5.47168 1.69629 -9.56836 5.12012 -12.2881 10.2402c-1.37598 3.07227 -2.06348 6.14453 -2.06348 9.21582c0 2.38477 0.335938 4.6084 1.02344 6.65625
+c1.37598 4.78418 2.04785 9.21582 2.04785 13.3125c0 9.56738 -3.58398 18.0957 -10.752 25.5996c-7.51953 8.87988 -16.7354 13.3115 -27.6475 13.3115c-3.42383 0 -6.84863 -0.335938 -10.2559 -1.02344c-1.68066 -0.335938 -3.2168 -0.511719 -4.57617 -0.511719
+c-3.76074 0 -7.34473 1.19922 -10.7686 3.58398c-4.76758 3.07129 -7.83984 7.32715 -9.2002 12.7998z" />
+ <glyph glyph-name="uniF15F" unicode=""
+d="M6.7041 89.5996l88.5762 146.433l-66.5605 117.248h112.145l66.5439 -117.248l-88.5762 -146.433h-112.128zM192.048 135.68l177.168 311.296h118.784l-176.656 -311.296l113.664 -200.72h-118.768z" />
+ <glyph glyph-name="uniF141" unicode=""
+d="M59.7119 262.656c0 21.5039 4.52832 42.832 13.5684 64s22.0156 40.7842 38.9121 58.8799c16.8955 18.0801 39.0879 32.7676 66.5596 44.0322c27.4717 11.2637 57.9521 16.8955 91.3916 16.8955c54.2725 0 98.8164 -16.7197 133.633 -50.1758
+c34.8154 -33.4561 52.2236 -72.8799 52.2236 -118.272c0 -58.3672 -14.752 -106.575 -44.2881 -144.64s-67.6641 -57.0879 -114.432 -57.0879c-15.3447 0 -29.7764 3.59961 -43.248 10.752c-13.5039 7.18359 -22.9766 15.8721 -28.416 26.1279l-20.4805 -80.9121
+c-1.69531 -6.46387 -3.91992 -13.04 -6.65527 -19.6963c-2.7207 -6.65527 -5.71289 -13.0557 -8.96094 -19.1992c-3.24707 -6.14453 -6.47949 -11.9365 -9.72754 -17.4082s-6.48047 -10.5918 -9.72754 -15.3604c-3.24805 -4.78418 -6.06445 -8.7998 -8.44824 -12.0322
+c-2.38379 -3.23145 -4.6084 -6.06348 -6.65625 -8.44727l-3.08789 -4.1123c-1.02441 -1.37598 -2.38379 -1.87207 -4.0957 -1.53613c-1.69629 0.335938 -2.7207 1.36035 -3.07227 3.05566c0 0.336914 -0.255859 2.73633 -0.768555 7.16895
+c-0.511719 4.43164 -1.02344 9.13574 -1.53516 14.0791c-0.512695 4.95996 -1.02441 11.3447 -1.53613 19.2002c-0.512695 7.85645 -0.671875 15.4561 -0.512695 22.7842c0.176758 7.34375 0.672852 15.4561 1.53613 24.3359
+c0.848633 8.87988 2.12793 17.0557 3.83984 24.5605c3.76074 16.0479 16.3848 69.4717 37.8887 160.271c-2.73633 5.45605 -4.95996 12.0322 -6.65625 19.7119c-1.71191 7.67969 -2.55957 13.9043 -2.55957 18.6885l-0.496094 7.67969
+c0 21.8398 5.53613 40.0156 16.6396 54.5283c11.0879 14.4961 24.4961 21.7598 40.1924 21.7598c12.6396 0 22.4473 -4.17578 29.4395 -12.5439c7.00781 -8.35254 10.4961 -18.8643 10.4961 -31.4883c0 -7.85547 -1.43945 -17.4883 -4.33594 -28.9277
+c-2.89551 -11.4404 -6.75195 -24.5762 -11.5361 -39.4238c-4.76758 -14.8486 -8.19141 -26.8799 -10.2402 -36.0967c-3.40723 -15.376 -0.416016 -28.6875 8.95996 -39.9355c9.4082 -11.2637 21.9365 -16.9121 37.6484 -16.9121c26.9756 0 49.2324 15.2803 66.832 45.8242
+c17.5684 30.5596 26.3516 67.5039 26.3516 110.848c0 33.1045 -10.752 60.1602 -32.2715 81.1523c-21.5039 20.9922 -51.5361 31.4883 -90.0957 31.4883c-43.0088 0 -77.9199 -13.8242 -104.704 -41.4727c-26.7998 -27.6475 -40.1924 -60.752 -40.1924 -99.3281
+c0 -22.8633 6.48047 -42.1436 19.4561 -57.8555c4.43164 -5.12012 5.80762 -10.5918 4.0957 -16.3838c-0.6875 -1.71289 -1.71191 -5.63281 -3.07129 -11.7764c-1.36035 -6.14453 -2.38477 -10.0645 -3.07227 -11.7764
+c-0.671875 -3.74414 -2.38379 -6.22363 -5.12012 -7.40723c-2.73633 -1.2002 -5.80762 -1.12012 -9.21582 0.255859c-20.1602 8.19141 -35.2637 22.2715 -45.3438 42.2393c-10.0801 19.9688 -15.1045 43.2646 -15.1045 69.8887z" />
+ <glyph glyph-name="uniF138" unicode=""
+d="M0 183.808c0 46.4219 11.4346 89.2594 34.3037 128.513c22.8698 39.2533 53.9313 70.3145 93.1846 93.1836s82.0905 34.3037 128.512 34.3037c46.4212 0 89.2585 -11.4346 128.512 -34.3037s70.3148 -53.9303 93.1846 -93.1836
+c22.8691 -39.2533 34.3037 -82.0908 34.3037 -128.513c0 -46.4212 -11.4346 -89.2585 -34.3037 -128.512c-22.8698 -39.2533 -53.9313 -70.3145 -93.1846 -93.1836c-39.2533 -22.8698 -82.0905 -34.3047 -128.512 -34.3047c-46.4212 0 -89.2585 11.4349 -128.512 34.3047
+c-39.2533 22.8691 -70.3148 53.9303 -93.1846 93.1836c-22.8691 39.2533 -34.3037 82.0905 -34.3037 128.512zM106.496 20.4805c0 -8.875 4.43717 -13.3125 13.3115 -13.3125h90.1123c9.55729 0 14.3359 4.4375 14.3359 13.3125v24.5752
+c0 8.875 -4.77865 13.3125 -14.3359 13.3125h-14.8477v235.52h14.8477c9.55729 0 14.3359 4.4375 14.3359 13.3125v24.5762c0 8.87435 -4.77865 13.3115 -14.3359 13.3115h-90.1123c-8.87435 0 -13.3115 -4.43717 -13.3115 -13.3115v-24.5762
+c0 -8.875 4.43717 -13.3125 13.3115 -13.3125h15.8721v-235.52h-15.8721c-8.87435 0 -13.3115 -4.4375 -13.3115 -13.3125v-24.5752zM248.32 18.4316c0 -8.19206 4.09603 -12.2881 12.2881 -12.2881h30.208c7.50911 0 11.2637 4.09603 11.2637 12.2881v131.584
+c0 35.1576 13.4827 52.7363 40.4482 52.7363c14.3359 0 21.5039 -8.7041 21.5039 -26.1123v-158.208c0 -8.19206 3.75456 -12.2881 11.2637 -12.2881h31.2324c7.16797 0 10.752 4.09603 10.752 12.2881v170.496c0 41.6426 -18.7734 62.4639 -56.3203 62.4639
+c-22.8691 0 -43.6904 -10.9225 -62.4639 -32.7676l-3.58398 18.4316c-1.36523 7.50977 -5.46126 11.2646 -12.2881 11.2646h-22.0156c-8.19206 0 -12.2881 -4.26693 -12.2881 -12.8008v-217.088z" />
+ <glyph glyph-name="uniF15C" unicode=""
+d="M-22.2881 372.736v10.752l1.02441 1.02344h127.504l1.02344 -1.02344v-10.2402c0 -2.73633 -1.71191 -4.0957 -5.12012 -4.0957l-13.3271 -0.512695c-11.248 -0.335938 -16.8809 -3.75977 -16.8809 -10.2393c0 -4.43262 1.2002 -9.2168 3.58398 -14.3359
+c17.0723 -41.6484 54.9609 -124.24 113.664 -247.809l3.07227 -0.496094l56.832 113.185c-4.43164 10.2236 -8.19141 18.5918 -11.2637 25.0713l-38.9121 76.8008l-10.2402 20.4795c-8.87988 17.3926 -14.6719 27.7119 -17.4082 30.96
+c-2.73535 3.24805 -8.36719 5.55176 -16.8955 6.91211c-4.78418 0.671875 -7.18457 1.85645 -7.18457 3.56836v10.752l1.53613 1.02344h100.88l2.54395 -0.511719v-10.752c0 -2.73633 -1.69531 -4.0957 -5.11914 -4.0957l-7.68066 -1.02441
+c-4.43164 -0.671875 -7.67969 -1.53613 -9.72754 -2.55957c-2.04785 -1.02441 -2.99219 -3.07227 -2.81641 -6.14453s0.848633 -6.04785 2.04785 -8.95996c1.2002 -2.89551 3.66406 -8.0957 7.4248 -15.6162l37.376 -76.7998l41.4717 82.9443
+c5.47168 10.9277 6.32031 18.2559 2.55957 22.0156c-2.06348 2.71973 -8.36816 4.6084 -18.9756 5.63184l-4.62402 0.512695c-1.36035 0 -2.52832 0.511719 -3.58398 1.53613c-0.992188 0.335938 -1.55176 1.35938 -1.55176 3.07129v9.72852l1.55176 1.02344
+c19.4561 0.335938 51.168 0.335938 95.2002 0l1.02344 -1.02344v-10.2402c0 -2.73633 -1.53613 -4.0957 -4.62402 -4.0957c-7.50391 -0.335938 -12.7041 -1.10449 -15.5996 -2.33594c-2.91211 -1.18457 -5.71191 -3.84082 -8.46387 -7.93652
+c-7.83984 -11.6162 -12.9766 -19.792 -15.3438 -24.5762l-53.7441 -100.352l-1.47266 -3.55176l65.5684 -134.145l4.0957 -1.53613l103.44 246.272c4.0957 9.55176 3.59961 16.5596 -1.56836 20.9922c-4.44824 4.0957 -11.1035 6.31934 -19.9834 6.65527l-9.71289 0.512695
+c-1.02344 0 -2.06348 0.511719 -3.05566 1.53613c-1.37598 0.6875 -2.06348 1.69531 -2.06348 3.07129v10.2402l1.53516 1.02441h117.248l1.02441 -1.02441v-10.2402c0 -2.38379 -1.56836 -3.91992 -4.62402 -4.60742
+c-15.6797 -0.688477 -26.9756 -3.93652 -33.7764 -9.72852c-6.83203 -5.45605 -12.624 -13.8242 -17.4072 -25.0879l-128 -290.304c-3.4248 -7.83984 -7.24805 -13.0566 -11.5361 -15.6318c-4.25586 -2.54395 -8.33594 -2.36816 -12.2881 0.527344
+c-3.93652 2.89648 -7.75977 8.09668 -11.5684 15.6162c-12.9756 25.5996 -33.7441 70.4805 -62.4482 134.656c-35.8398 -73.7285 -58.1914 -118.8 -67.0713 -135.168c-14 -24.2559 -26.1123 -24.4004 -36.3525 -0.496094
+c-10.9277 25.5996 -33.1035 74.1602 -66.5596 145.664s-55.6484 120.399 -66.5605 146.688c-5.45605 14.3359 -10.2393 23.2158 -14.3359 26.624c-3.71191 3.39258 -12.5918 5.61621 -26.5752 6.64062c-4.78418 0.6875 -7.18457 1.87207 -7.18457 3.58398z" />
+ <glyph glyph-name="uniF118" unicode=""
+d="M100.096 6.14355c0 25.9521 9.72852 45.0566 29.1846 57.3447c9.90332 6.47949 19.1035 11.4395 27.6475 14.8633c38.9287 16.7207 59.7285 25.9365 62.4639 27.6484c-7.16797 10.5762 -16.3838 22.1924 -27.6475 34.8164
+c-17.4082 20.4795 -27.6641 32.6074 -30.7197 36.3516c-37.2002 45.0557 -53.248 87.2002 -48.1279 126.464c2.38379 18.752 9.55176 34.2881 21.5039 46.5762c4.43164 4.76758 11.5996 10.2402 21.5039 16.3838c12.6396 7.16797 20.3193 11.4238 23.04 12.7998
+c1.71191 0.688477 5.56738 2.30469 11.5361 4.86426c5.96777 2.56055 11.0078 4.68848 15.0879 6.40039l24.0635 10.752l35.3438 15.3594c19.7764 8.54395 34.4648 15.3604 44.0322 20.4805c6.81641 3.74414 11.0879 2.71973 12.7842 -3.07227
+c0 -3.74414 -4.5918 -8.01562 -13.8076 -12.7998c-20.832 -13.6641 -31.7441 -33.1035 -32.7842 -58.3682c-0.335938 -9.9043 0.527344 -19.7119 2.55957 -29.4395c2.06445 -9.72852 4.19238 -17.7441 6.40039 -24.0645c2.22363 -6.32031 6.55957 -14.1602 13.0557 -23.5518
+c6.46387 -9.39258 11.0879 -15.792 13.8086 -19.2002c2.73535 -3.4082 8.62402 -10.2402 17.6641 -20.4795c9.03906 -10.2402 14.415 -16.3848 16.1279 -18.4326c2.04785 -2.38379 7.00781 -7.93555 14.8633 -16.6396c7.83984 -8.7041 13.4727 -15.1045 16.8799 -19.2002
+c3.4248 -4.0957 8.20801 -10.5762 14.3369 -19.4561c6.15918 -8.87988 10.5918 -16.7363 13.3115 -23.5518c2.73633 -6.84863 5.37598 -15.1045 7.93555 -24.8486c2.56055 -9.71191 3.84082 -19.7119 3.84082 -29.9355c0 -12.9922 -2.22461 -24.5918 -6.65625 -34.832
+c-4.0957 -10.9277 -8.97656 -19.6963 -14.5918 -26.3516c-5.61621 -6.65625 -13.7441 -13.4082 -24.3203 -20.2402c-11.9521 -7.16797 -20.9922 -12.2881 -27.1357 -15.3604c-7.85645 -4.0957 -18.2725 -8.7041 -31.2324 -13.8076
+c-5.47168 -2.06445 -11.5361 -4.62402 -18.1914 -7.68066c-6.65625 -3.05566 -10.4805 -4.7832 -11.5049 -5.11914l-45.5518 -19.9688l-18.416 -9.21582c-10.9434 -5.45605 -19.4717 -9.02344 -25.6162 -10.752c-29.0078 -7.15234 -51.7119 -3.05566 -68.0957 12.3037
+c-16.3838 15.3604 -24.5762 36.3359 -24.5762 62.96z" />
+ <glyph glyph-name="uniF147" unicode=""
+d="M2.55957 -17.9199v170.496l59.3926 66.0479h43.5195v-32.7676h-28.6719l-40.96 -45.5684v-125.44h407.04v125.44l-40.96 45.5684h-28.6719v32.7676h43.5195l58.8809 -66.0479v-170.496h-473.089zM105.472 145.408v168.96l77.3125 77.3115h190.464v-246.271h-267.776z
+M136.192 176.64h206.336v184.32h-129.024v-77.3115h-77.3115v-107.009z" />
+ <glyph glyph-name="uniF121" unicode=""
+d="M-10.624 161.28c0 35.5039 12.4639 65.6953 37.376 90.624c24.9121 24.9121 55.1201 37.376 90.624 37.376s65.6963 -12.4639 90.624 -37.376c24.9121 -24.9287 37.376 -55.1201 37.376 -90.624s-12.4639 -65.7119 -37.376 -90.624
+c-24.9277 -24.9287 -55.1201 -37.376 -90.624 -37.376s-65.6963 12.4473 -90.624 37.376c-24.9121 24.9121 -37.376 55.1201 -37.376 90.624zM272 161.28c0 35.5039 12.4639 65.6953 37.376 90.624c24.9121 24.9121 55.1201 37.376 90.624 37.376
+s65.6963 -12.4639 90.624 -37.376c24.9121 -24.9121 37.376 -55.1201 37.376 -90.624s-12.4639 -65.7119 -37.376 -90.624c-24.9277 -24.9287 -55.1201 -37.376 -90.624 -37.376s-65.7119 12.4473 -90.624 37.376c-24.9121 24.9121 -37.376 55.1201 -37.376 90.624z" />
+ <glyph glyph-name="uniF119" unicode=""
+d="M0.993164 75.1396v285.976c0 0.330729 0.496419 3.47526 1.48926 9.43359l168.309 -143.981l-167.812 -161.357c-1.32357 4.63411 -1.98535 7.94401 -1.98535 9.92969zM23.335 390.408c2.31706 0.992839 5.13053 1.48926 8.44043 1.48926h453.29
+c2.97917 0 5.95801 -0.496419 8.93652 -1.48926l-168.805 -144.478l-22.3418 -17.873l-44.1865 -36.2441l-44.1875 36.2441l-22.3418 17.873zM23.8311 45.8477l169.302 162.351l65.5361 -53.124l65.5361 53.124l169.301 -162.351
+c-2.64779 -0.99349 -5.46126 -1.49023 -8.44043 -1.49023h-453.29c-2.64844 0 -5.29655 0.496745 -7.94434 1.49023zM346.547 226.567l167.812 143.981c0.992839 -2.97917 1.48926 -6.1237 1.48926 -9.43359v-285.976c0 -2.97852 -0.496419 -6.28841 -1.48926 -9.92969z" />
+ <glyph glyph-name="uniF149" unicode=""
+d="M-48.9756 193.536c0 21.1523 8.44727 39.248 25.3438 54.2715c16.8955 15.0244 36.0957 22.5283 57.5996 22.5283c21.168 0 39.0723 -6.14355 53.7598 -18.4316h2.56055c45.7275 27.9834 102.912 41.9834 171.52 41.9834l2.56055 2.04785l35.8398 136.704
+l123.904 -18.4316c0 -0.335938 0.335938 -0.511719 1.00781 -0.511719c0.335938 0 0.335938 0.175781 0 0.511719c0.6875 0.335938 2.63965 2.99219 5.8877 7.93555c3.24805 4.95996 5.71191 8.1123 7.42383 9.47266c11.6328 10.9277 25.6328 16.3838 42 16.3838
+c16.7207 0 30.8164 -5.55176 42.2568 -16.6396c11.4395 -11.0879 17.1357 -24.9922 17.1357 -41.7285c0 -16.7354 -5.69629 -31.0557 -17.1357 -43.0078c-11.4404 -11.9521 -25.5361 -17.9199 -42.2568 -17.9199c-19.4561 0 -34.3193 6.57617 -44.5273 19.7119
+c-10.2559 13.1357 -15.376 29.6162 -15.376 49.4082c-0.688477 -0.335938 -17.3125 1.87207 -49.9043 6.65625c-32.6084 4.76758 -51.2959 7.66309 -56.0645 8.70312h-1.55176c-0.671875 -0.6875 -3.50391 -9.80762 -8.44824 -27.3916
+c-4.94336 -17.584 -10.0635 -36.1758 -15.3438 -55.8076c-5.31152 -19.6328 -8.28809 -30.4648 -8.97559 -32.5127v-1.53613l2.55957 -2.04785c24.5605 0 49.7441 -3.50391 75.5205 -10.4961c25.7754 -6.99121 48.0479 -16.8154 66.8154 -29.4395l1.55273 -1.02441
+c0.335938 0.335938 0.671875 0.512695 1.00781 0.512695s0.671875 0.175781 1.00781 0.511719c8.52832 6.14355 14.5918 10.3994 18.1924 12.7998c3.58398 2.38379 8.62305 4.6084 15.0879 6.65625c6.49609 2.04785 13.8232 3.07227 22.0312 3.07227
+c23.2002 0 43.0088 -8.19238 59.376 -24.5762c16.4004 -16.3848 24.6084 -36.3525 24.6084 -59.9043c0 -16.0479 -4.52832 -30.7197 -13.584 -44.0322c-9.05566 -13.3115 -20.9121 -23.5674 -35.584 -30.7197c0 -66.5596 -44.3682 -118.288 -133.12 -155.136
+c-14 -6.14453 -23.5684 -10.0645 -28.6719 -11.7607c-10.9277 -3.42383 -26.4482 -6.65527 -46.5918 -9.72754c-20.1445 -3.07227 -36.0166 -4.62402 -47.6162 -4.62402c-40.96 0 -80.3838 5.96777 -118.272 17.9199c-0.6875 0.671875 -12.9756 7.16797 -36.8633 19.4561
+c-32.4326 17.4082 -58.4482 37.2002 -78.0801 59.3916c-19.6318 22.1924 -29.4404 48.8164 -29.4404 79.8721h-2.55957c-11.2646 5.79199 -21.3281 14.3359 -30.208 25.6162l-4.6084 6.12793c-5.12012 9.21582 -8.35156 16.9922 -9.72754 23.3125
+c-1.37598 6.31934 -2.04785 14.9121 -2.04785 25.8398zM-31.5684 187.392c0 -22.5117 9.72852 -41.6475 29.1846 -57.3438c1.69531 20.1445 9.90332 39.9365 24.5762 59.3926c14.6719 19.4561 31.9199 36.6875 51.7119 51.7119
+c-12.6406 8.86328 -26.624 13.3115 -41.9844 13.3115c-16.7197 0 -31.4883 -6.91211 -44.2881 -20.7363c-12.7998 -13.8232 -19.2002 -29.2637 -19.2002 -46.3359zM20.6719 112.64c0 -18.416 5.2959 -36.1758 15.8721 -53.248
+c10.5762 -17.0557 24.1445 -31.6641 40.7041 -43.7598c16.5596 -12.1279 34.0479 -22.2881 52.4795 -30.4639c18.4326 -8.17578 36.3525 -14 53.7607 -17.4082c25.5996 -4.78418 50.5273 -7.16797 74.752 -7.16797c41.9834 0 81.7441 6.73633 119.296 20.2246
+c37.5361 13.4873 69.1201 34.3838 94.7197 62.7354h-1.53613c10.2402 12.9766 17.5684 24.6562 22 35.0566c4.43262 10.3994 6.65625 22.7832 6.65625 37.1191c0 18.416 -4.51172 36 -13.5684 52.7207c-9.02344 16.7354 -20.9111 31.0713 -35.584 43.0078
+c-14.6719 11.9521 -30.3838 22.2715 -47.1035 30.9756s-33.7764 15.2803 -51.1846 19.7119c-29.0234 7.85645 -59.9033 11.7764 -92.6719 11.7764c-25.2637 0 -51.1201 -3.07227 -77.5674 -9.21582c-26.4482 -6.14453 -52.0479 -15.3604 -76.7998 -27.6484
+c-24.7529 -12.2881 -44.9766 -29.2637 -60.6729 -50.9434c-15.7119 -21.6807 -23.5518 -46.1768 -23.5518 -73.4727zM115.904 150.016c0 12.6406 3.83984 22.7842 11.5195 30.4648c7.66406 7.67969 17.8242 11.5195 30.4639 11.5195
+c12.624 0 23.2158 -3.83984 31.7441 -11.5195c8.52832 -7.68066 12.7998 -17.8242 12.7998 -30.4648c0 -12.3037 -4.35156 -22.5273 -13.0557 -30.7197c-8.7041 -8.20801 -19.2002 -12.3037 -31.4883 -12.3037s-22.3516 4.0957 -30.208 12.3037
+c-7.85547 8.19238 -11.7754 18.416 -11.7754 30.7197zM134.336 66.0479h22.5283c8.54395 -15.3594 22.0957 -27.04 40.7041 -35.0723c18.6074 -8.01562 37.6318 -12.0312 57.0879 -12.0312c19.792 0 38.5762 4.01562 56.3193 12.0312
+c17.7441 8.03223 32.0967 19.7129 43.0088 35.0723h20.9912c-8.52734 -21.168 -24.3994 -37.5518 -47.6318 -49.1357c-23.2002 -11.6318 -47.4395 -17.4238 -72.6875 -17.4238c-24.5762 0 -48.7207 5.8877 -72.4482 17.6641
+c-23.7275 11.792 -39.6963 28.0635 -47.8721 48.8955zM306.352 150.016c0 12.9766 3.9209 23.2002 11.7607 30.7207c7.87207 7.50391 18.2881 11.2637 31.2637 11.2637c11.5996 0 21.5039 -4.0957 29.6797 -12.2881c8.19238 -8.20801 12.2881 -18.0957 12.2881 -29.6963
+c0 -11.5996 -4.0957 -21.6641 -12.2881 -30.208c-8.19141 -8.54395 -18.0957 -12.8154 -29.6797 -12.8154c-12.6396 0 -22.9756 4.01562 -30.9922 12.0322c-8.01562 8.03125 -12.0322 18.3672 -12.0322 30.9912zM436.928 389.632
+c0 -11.9521 4.27246 -22.1914 12.7998 -30.7197c8.52832 -8.54395 18.7842 -12.7998 30.7207 -12.7998c12.2881 0 22.3516 4.19141 30.2236 12.5439c7.83984 8.35156 11.7598 18.6875 11.7598 30.9756c0 11.6006 -4.0957 21.5039 -12.3037 29.6963
+c-8.19238 8.19141 -18.0801 12.2881 -29.6797 12.2881c-11.6006 0 -21.7441 -4.17578 -30.4639 -12.5439c-8.7041 -8.36816 -13.0566 -18.1758 -13.0566 -29.4404zM444.096 245.76c18.7686 -12.2881 34.9766 -28.0635 48.624 -47.3594
+c13.6641 -19.2803 23.2158 -39.6807 28.6885 -61.1846c20.1279 14.6719 30.208 31.0566 30.208 49.1523c0 19.792 -6.06445 36.8643 -18.1758 51.2002c-12.1289 14.3359 -27.9043 21.5039 -47.376 21.5039c-15.3447 0 -29.3447 -4.43262 -41.9688 -13.3125z" />
+ <glyph glyph-name="uniF10D" unicode=""
+d="M-29.4404 357.888c0 6.83203 2.22461 12.4482 6.65625 16.8965c4.43262 4.44824 10.0801 6.65625 16.8965 6.65625h120.319c5.45605 0 10.3203 -1.61621 14.5928 -4.86426c4.27148 -3.24805 7.08789 -7.58398 8.44727 -13.0566l12.2881 -50.1758h345.072l3.59961 10.752
+c3.4082 10.9287 10.752 16.3848 22.0166 16.3848c3.07129 0 5.2959 -0.336914 6.65527 -1.02441c5.10449 -1.36035 9.2002 -4.0957 12.2881 -8.19238c3.08887 -4.0957 4.6084 -8.7041 4.6084 -13.8232c0 -1.69629 -0.335938 -3.9209 -1.02441 -6.65625l-60.416 -201.216
+c-1.37598 -5.12012 -4.0957 -9.2168 -8.19141 -12.2881c-4.0957 -3.07227 -8.71973 -4.6084 -13.8242 -4.6084h-286.208c-5.45605 0 -10.3203 1.69629 -14.5918 5.10449c-4.27246 3.42383 -7.08789 7.67969 -8.44824 12.8154l-55.2959 224.256h-101.888
+c-6.48047 0 -12.0322 2.22461 -16.6406 6.65625c-4.60742 4.43164 -6.91211 9.9043 -6.91211 16.3838zM161.024 266.752l31.7432 -126.976h250.368l1.00781 4.5918l36.8809 122.368h-320v0.015625zM182.528 18.9443c0 12.9756 4.6875 24.0635 14.0801 33.2793
+c9.3916 9.2168 20.5752 13.8242 33.5352 13.8242s24.0645 -4.60742 33.2803 -13.8242c9.21582 -9.21582 13.8242 -20.3193 13.8242 -33.2793s-4.6084 -24.0645 -13.8242 -33.2803s-20.3203 -13.8076 -33.2803 -13.8076s-24.1436 4.5918 -33.5352 13.8076
+c-9.37598 9.21582 -14.0801 20.3037 -14.0801 33.2803zM215.808 226.816h84.9922v-47.0889h-74.7676zM341.248 179.712l0.511719 47.0879h82.9443l-12.2881 -47.0879h-71.168zM360.192 18.9443c0 12.9756 4.7041 24.0635 14.0957 33.2793
+c9.37598 9.2168 20.5596 13.8242 33.5361 13.8242c12.9756 0 24.0635 -4.60742 33.2793 -13.8242c9.2168 -9.21582 13.8086 -20.3193 13.8086 -33.2793s-4.5918 -24.0645 -13.8086 -33.2803c-9.21582 -9.21582 -20.3193 -13.8076 -33.2793 -13.8076
+s-24.1602 4.5918 -33.5361 13.8076c-9.3916 9.21582 -14.0957 20.3037 -14.0957 33.2803z" />
+ <glyph glyph-name="uniF12A" unicode=""
+d="M0 190.976c0 46.4219 11.4346 89.2594 34.3037 128.513c22.8698 39.2533 53.9313 70.3145 93.1846 93.1836s82.0905 34.3037 128.512 34.3037c46.4212 0 89.2585 -11.4346 128.512 -34.3037s70.3148 -53.9303 93.1846 -93.1836
+c22.8691 -39.2533 34.3037 -82.0908 34.3037 -128.513c0 -46.4212 -11.4346 -89.2585 -34.3037 -128.512c-22.8698 -39.2533 -53.9313 -70.3145 -93.1846 -93.1836c-39.2533 -22.8698 -82.0905 -34.3047 -128.512 -34.3047c-46.4212 0 -89.2585 11.4349 -128.512 34.3047
+c-39.2533 22.8691 -70.3148 53.9303 -93.1846 93.1836c-22.8691 39.2533 -34.3037 82.0905 -34.3037 128.512zM66.0479 190.976c0 -22.1862 6.14421 -35.3275 18.4326 -39.4238c1.70638 -0.682292 4.60742 -1.36491 8.70312 -2.04785
+c14.3366 -0.341146 28.8434 6.48568 43.5205 20.4805c13.9948 12.2878 23.8936 27.6478 29.6963 46.0801c8.5332 26.2826 10.2396 60.4157 5.11914 102.399c-0.682292 4.09635 -1.02344 6.99772 -1.02344 8.7041c-1.02409 2.04818 -1.02409 3.58431 0 4.6084
+c0.341146 1.02344 2.5599 0.852539 6.65625 -0.512695c12.9707 -3.41341 26.2826 -8.36263 39.9355 -14.8477c15.7012 -7.16797 33.109 -19.1146 52.2236 -35.8398c15.36 -13.3118 30.2083 -28.5013 44.5449 -45.5684c11.2637 -13.3118 24.917 -31.0612 40.96 -53.248
+c13.9941 -19.4557 29.0127 -32.597 45.0557 -39.4238c9.89844 -3.41341 18.0052 -4.60807 24.3203 -3.58398c6.31445 1.02409 11.2637 4.4375 14.8477 10.2402s6.14388 12.1172 7.67969 18.9434c1.53646 6.82682 2.30469 14.5068 2.30469 23.04
+c0 16.3841 -2.04818 32.7682 -6.14453 49.1523c-1.02409 4.09635 -2.38932 8.875 -4.0957 14.3359c-4.77865 14.6777 -11.776 29.0137 -20.9922 43.0078c-17.7493 26.9655 -40.8747 48.1283 -69.376 63.4883s-58.7946 23.04 -90.8799 23.04
+c-22.528 0 -43.8613 -3.75456 -64 -11.2637c-27.3066 -9.55729 -51.2855 -24.7467 -71.9365 -45.5684c-20.6504 -20.8216 -35.7542 -45.0563 -45.3115 -72.7041c-0.341146 -1.70638 -1.02376 -4.18099 -2.04785 -7.42383s-1.8776 -5.54688 -2.56055 -6.91211
+c-4.0957 -17.0664 -5.97298 -33.4505 -5.63184 -49.1523z" />
+ <glyph glyph-name="uniF12C" unicode=""
+d="M82.1123 345.088h357.888l-33.792 -363.52l-145.408 -41.4727l-145.408 41.4727zM115.392 375.808v68.0967h23.04v-22.5283h20.4805v22.5283h22.5283v-68.0967h-22.5283v22.5283h-20.4805v-22.5283h-23.04zM148.672 270.848l12.2881 -136.191l0.511719 1.02344h153.601
+l-5.12012 -57.8555l-49.1523 -13.8242l-49.6641 14.3359l-3.07129 34.8164h-45.0566l6.14453 -69.6484l91.6475 -26.1123l91.6641 26.1123l12.7998 136.704h-163.344l-4.0957 45.5684h171.52l4.1123 45.0557h-224.784v0.015625zM191.68 420.864v23.04h62.4639v-23.04
+h-19.9678v-45.0566h-22.5117v45.0566h-19.9844zM263.872 375.808v68.0967h24.0635l13.8242 -23.5527l14.3359 23.5527h24.0645v-68.0967h-22.0322v34.8164l-16.3682 -25.5996v0.511719l-15.376 24.0635v-33.792h-22.5117zM351.936 375.808v68.0967h22.5283v-45.0566h31.7285
+v-23.04h-54.2568z" />
+ <glyph glyph-name="uniF11C" unicode=""
+d="M42.1123 193.024c0 36.5273 4.95996 71.0078 14.8477 103.424c9.55176 31.4082 23.7119 58.5439 42.4961 81.4082c19.1201 22.8633 42.1602 40.2715 69.1201 52.2236c27.6475 12.2881 58.0156 18.4316 91.1357 18.4316c43.6797 0 80.7363 -10.416 111.104 -31.2314
+c30.7197 -20.1445 53.9199 -46.9443 69.6475 -80.3838c15.6797 -32.4326 23.5361 -65.8887 23.5361 -100.353c0 -31.7441 -8.01562 -52.2236 -24.0801 -61.4561c-16.0322 -9.2002 -38.5596 -13.8076 -67.5684 -13.8076h-216.575
+c0 -29.0078 5.12012 -54.2881 15.3594 -75.7764c9.9043 -22.1924 22.8643 -38.5596 38.9121 -49.1523c17.0557 -11.248 35.1523 -16.8955 54.2881 -16.8955c13.9844 0 26.0957 1.69629 36.3359 5.12012c10.5762 3.42383 21.1523 9.04004 31.7441 16.8955
+c10.5596 7.52051 20.1279 15.5361 28.6562 24.0645c8.52734 8.52832 19.8076 20.3203 33.792 35.3438c5.12012 5.45605 13.1357 8.19238 24.0635 8.19238c11.6162 0 20.832 -3.60059 27.6484 -10.752c7.18359 -7.18457 10.7676 -17.0723 10.7676 -29.6963
+c0 -10.9277 -3.91992 -24.2402 -11.7754 -39.9355c-7.16797 -14.6729 -19.1045 -29.1846 -35.8242 -43.5205c-15.7119 -14 -35.5039 -25.5996 -59.4082 -34.8164c-24.2236 -9.21582 -51.6963 -13.8232 -82.4316 -13.8232c-71.3281 0 -126.801 23.04 -166.385 69.1035
+c-39.6152 46.4326 -59.4072 108.88 -59.4072 187.393zM155.776 232.96h200.704c-2.40039 42.6719 -12.624 74.752 -30.7207 96.2559c-17.4082 21.1523 -40.624 31.7441 -69.6475 31.7441c-28 0 -50.6885 -10.752 -68.0967 -32.2559
+c-17.7275 -21.5039 -28.4795 -53.4238 -32.2393 -95.7441z" />
+ <glyph glyph-name="uniF105" unicode=""
+d="M-31.8398 216.32c3.24805 54.0957 15.9521 99.4072 38.1436 135.936c16.7207 27.3125 33.0244 46.6885 48.8965 58.1123c15.8721 11.4395 39.5039 19.8877 70.9121 25.3438c10.2393 1.71191 19.9678 2.65625 29.1836 2.81641s17.8398 -0.512695 25.8564 -2.04785
+c8.01562 -1.53613 15.5361 -3.50488 22.5273 -5.88867c7.00879 -2.38379 13.6641 -5.80762 19.9688 -10.2402c6.31934 -4.43164 12.0312 -8.7832 17.1514 -13.0557c5.12012 -4.27148 10.2402 -9.64746 15.3604 -16.1279c5.12012 -6.49609 9.64746 -12.3682 13.5518 -17.6641
+c3.93652 -5.2959 8.03223 -11.8555 12.3037 -19.7119c4.27246 -7.85645 7.85645 -14.5918 10.7686 -20.2236c2.89551 -5.63281 6.38379 -12.5439 10.4795 -20.7363c2.38477 -4.76758 4.78418 -9.8877 7.16797 -15.3604c2.36816 -5.45605 4.94434 -11.5195 7.68066 -18.1758
+c2.71973 -6.65625 4.94336 -11.8555 6.65527 -15.6162c2.7207 16.3848 12.3525 48.4639 28.9121 96.2559c16.5605 47.7764 28.0967 72.5283 34.5605 74.2402c31.0557 7.16797 55.8076 7.16797 74.2559 0c1.37598 -0.671875 2.91211 -2.04785 4.60742 -4.0957
+c1.69629 -2.04785 2.89648 -3.4082 3.58496 -4.0957c-0.336914 -6.14453 -1.36035 -12.7207 -3.05664 -19.7119c-1.71191 -7.00879 -3.15137 -12.5449 -4.35156 -16.6406s-3.42383 -10.3359 -6.65625 -18.6875c-3.23242 -8.36816 -5.2002 -13.5684 -5.8877 -15.6162
+l-81.9199 -224.769c-2.40039 -11.6152 0.751953 -26.9756 9.47168 -46.0791c8.6875 -19.1045 20.2236 -34.9922 34.5596 -47.6162c14.3359 -12.6406 26.96 -16.3838 37.8721 -11.2803c3.4082 1.71191 6.49609 5.2959 9.21582 10.752
+c2.73633 5.47168 5.12012 9.05566 7.16797 10.752c6.14453 5.12012 18.2725 7.77637 36.3525 7.93652c18.0801 0.191406 29.5195 -2.97656 34.3037 -9.47266c5.45605 -9.8877 7.32812 -20.5596 5.63184 -32c-1.69531 -11.4395 -6.99121 -22.6875 -15.8555 -33.7754
+s-19.0244 -20.832 -30.4639 -29.1846c-11.4404 -8.36816 -24.0645 -14.5918 -37.8887 -18.6875c-13.8232 -4.09668 -26.3516 -4.95996 -37.6475 -2.56055c-9.8877 2.04785 -19.1045 5.2002 -27.6484 9.47266c-8.52734 4.28711 -15.5361 8.62402 -20.9912 13.0557
+c-5.47266 4.43164 -11.2803 10.6562 -17.4082 18.6875c-6.16016 8.0166 -10.8486 14.5928 -14.0967 19.7129c-3.24805 5.10352 -7.83984 12.7832 -13.8076 23.0234c-5.98438 10.2559 -10.3359 17.7441 -13.0557 22.5283
+c-1.37598 -0.688477 -2.38477 -1.37598 -3.05664 -2.06445c-8.20801 -19.7754 -22.0312 -37.9678 -41.4873 -54.5117s-41.1201 -29.3604 -65.0244 -38.3838c-23.8877 -9.05664 -49.4883 -12.3682 -76.7998 -10c-27.3125 2.38379 -52.0479 11.6162 -74.2402 27.6641
+c-29.0078 21.1514 -51.3604 55.8877 -67.0723 104.191c-15.7119 48.3047 -21.9199 99.5039 -18.6875 153.601zM46.2402 222.72c-4.43262 -36.8633 -2.89648 -72.8799 4.60742 -108.031c7.50391 -35.1523 19.9688 -59.2168 37.376 -72.1924
+c9.55273 -7.16797 19.1201 -12.3682 28.6729 -15.6318c9.55176 -3.23242 18.3359 -5.2002 26.3672 -5.87207c8.0166 -0.688477 16.3848 0.943359 25.0879 4.86426c8.7041 3.91992 16.0488 7.51953 22.0166 10.752c5.9834 3.23145 12.9756 9.21582 20.9922 17.9199
+c8.01562 8.7041 14.0801 15.4395 18.1758 20.2236s9.72754 12.624 16.8955 23.5684c7.16797 10.9121 11.8564 18.2559 14.0801 22c2.22461 3.75977 6.38477 10.9434 12.5439 21.5195c1.69629 3.07227 3.05664 5.45605 4.09668 7.16797
+c-12.9766 54.9443 -23.9043 93.0078 -32.7686 114.176c-24.9121 59.04 -59.3916 85.5049 -103.424 79.3604c-19.1201 -2.75195 -32.9443 -6.49609 -41.4717 -11.2803c-8.54395 -4.7832 -17.0723 -13.1357 -25.6006 -25.0879
+c-13.9834 -18.7676 -23.2158 -46.5918 -27.6475 -83.4561z" />
+ <glyph glyph-name="uniF100" unicode=""
+d="M0 -50.6885c0 17.4082 10.4108 35.5843 31.2324 54.5283c20.821 18.944 41.8128 34.0482 62.9756 45.3125l7.67969 -11.2646c-15.0182 -10.9225 -30.4635 -25.0023 -46.3359 -42.2393c-15.8717 -17.2376 -25.8558 -32.5124 -29.9521 -45.8242
+c29.696 9.21615 74.9229 73.8988 135.681 194.048c22.1862 44.7148 39.7646 89.2588 52.7354 133.632c-11.2637 36.5228 -16.8955 70.9974 -16.8955 103.424c0 39.2533 8.02116 58.8799 24.0635 58.8799c7.85091 0 13.6536 -0.341146 17.4082 -1.02344
+c3.75456 -0.682943 7.25326 -2.90169 10.4961 -6.65625s4.86426 -9.55729 4.86426 -17.4082c0 -5.11979 -0.512044 -9.89844 -1.53613 -14.3359l-13.8242 0.512695c-0.682292 8.87435 -3.58366 15.8714 -8.7041 20.9912
+c-4.0957 -6.82617 -6.14355 -18.6022 -6.14355 -35.3281c0 -12.9707 1.53581 -29.0133 4.60742 -48.1279c1.02409 6.14453 2.47493 15.2754 4.35254 27.3926c1.87695 12.1172 3.49837 21.2477 4.86426 27.3916l13.3115 -1.53613
+c-0.682292 -51.8822 -3.07161 -89.0872 -7.16797 -111.615c12.2878 -36.5228 27.0505 -66.2191 44.2881 -89.0889c17.2376 -22.8691 41.5576 -43.1784 72.96 -60.9277c23.2109 2.38932 43.0081 3.58398 59.3916 3.58398c60.7578 0 91.1367 -11.9466 91.1367 -35.8398
+c0 -3.75456 -0.853516 -7.85059 -2.56055 -12.2881l-1.53613 0.511719c-1.70638 -14.3359 -13.141 -21.5039 -34.3037 -21.5039c-35.4987 0 -76.4587 12.2881 -122.88 36.8643c-75.0931 -7.50911 -141.482 -21.5039 -199.168 -41.9844
+c-50.1758 -87.7227 -90.2826 -131.584 -120.32 -131.584c-2.38932 0 -4.77865 0.341471 -7.16797 1.02441s-4.52246 1.45085 -6.39941 2.30371c-1.8776 0.853516 -4.18164 2.04818 -6.91211 3.58398c-2.73112 1.53646 -4.7793 2.64583 -6.14453 3.32812
+c-2.73047 2.73047 -4.0957 6.48503 -4.0957 11.2637zM162.816 79.8721c45.7383 18.4316 96.5967 32.9382 152.575 43.5195c-35.1569 24.9173 -63.1462 60.5869 -83.9678 107.009c-12.2878 -41.3014 -35.1569 -91.4775 -68.6074 -150.528zM411.648 105.472
+c30.7194 -11.9466 54.9538 -17.9199 72.7031 -17.9199c5.12044 0 8.87533 0.512044 11.2646 1.53613c0 10.9225 -24.7467 16.3838 -74.2402 16.3838h-9.72754z" />
+ <glyph glyph-name="uniF14F" unicode=""
+d="M-37.5684 100.336c0 5.47168 0.592773 12.9756 1.79199 22.5283c1.2002 9.55176 2.81641 14.8477 4.86426 15.8721c2.04785 -1.02441 3.83984 -6.56055 5.37598 -16.6406c1.53613 -10.0635 2.30371 -17.3281 2.30371 -21.7598
+c0 -4.78418 -0.767578 -12.0322 -2.30371 -21.7441s-3.32812 -15.1035 -5.37598 -16.1279c-4.43164 2.38379 -6.65625 15.0244 -6.65625 37.8721zM-4.7998 100.336c0 8.52832 0.864258 21.168 2.55957 37.9043c1.69629 16.7197 2.73633 27.1201 3.07227 31.2158
+c0 2.04785 1.02441 3.07227 3.07227 3.07227c1.35938 0 2.38379 -1.02441 3.07129 -3.07227c4.09668 -44.0156 6.14453 -67.0557 6.14453 -69.1201c0 -8.19238 -0.944336 -20.3037 -2.81641 -36.3359c-1.8877 -16.0479 -2.99219 -26.1123 -3.32812 -30.2236
+c-0.6875 -2.36816 -1.71191 -3.56836 -3.07129 -3.56836c-2.04785 0 -3.07227 1.18359 -3.07227 3.56836c-0.335938 3.75977 -1.36035 13.7432 -3.07227 29.9678c-1.69531 16.208 -2.55957 28.416 -2.55957 36.5918zM36.6719 100.336
+c0 8.20801 0.847656 20.752 2.56055 37.6484c1.71191 16.8955 2.55957 26.208 2.55957 27.9033c0 3.07227 1.2002 4.6084 3.58398 4.6084c2.71973 0 4.0957 -1.53613 4.0957 -4.6084c3.76074 -38.5762 5.63184 -60.416 5.63184 -65.5518
+c0 -5.10352 -1.87109 -28.3203 -5.63184 -69.6318c0 -2.71973 -1.35938 -4.0957 -4.0957 -4.0957c-2.38379 0 -3.58398 1.37598 -3.58398 4.0957c0 2.38379 -0.847656 12.3682 -2.55957 29.9521c-1.69629 17.5996 -2.56055 30.8154 -2.56055 39.6797zM83.7764 100.336
+c0 12.9756 0.255859 26.7197 0.767578 41.2158c0.511719 14.5127 1.2002 30.7207 2.04785 48.6562c0.864258 17.9199 1.45605 31.8242 1.79199 41.7275c0 3.4082 1.53613 5.12012 4.6084 5.12012c3.4082 0 5.12012 -1.69531 5.12012 -5.12012
+c0.335938 -5.45508 1.2793 -24.4951 2.81543 -57.0879c1.53613 -32.5918 2.30469 -57.4238 2.30469 -74.4961c0 -8.87988 -0.848633 -22 -2.56055 -39.4072c-1.71191 -17.4248 -2.55957 -27.3125 -2.55957 -29.6963c0 -3.42383 -1.69629 -5.12012 -5.12012 -5.12012
+c-3.07227 0 -4.6084 1.69629 -4.6084 5.12012c-3.05566 45.04 -4.60742 68.0801 -4.60742 69.0879zM131.904 100.336c0 18.7842 0.511719 46 1.53613 81.6641c1.02344 35.6641 1.69531 57.5996 2.04785 65.792c0.6875 4.0957 2.73535 6.14355 6.14355 6.14355
+s5.45605 -2.04785 6.14453 -6.14355c0.335938 -10.9277 1.10352 -33.6162 2.30371 -68.0801c1.2002 -34.4795 1.79199 -60.9443 1.79199 -79.376c0 -8.52832 -0.591797 -20.8164 -1.79199 -36.8643s-1.96777 -26.4473 -2.30371 -31.2314
+c-0.672852 -4.09668 -2.7207 -6.14453 -6.14453 -6.14453s-5.45605 2.04785 -6.14355 6.14453c0 3.74414 -0.591797 13.8242 -1.79199 30.2236c-1.18457 16.3838 -1.79199 29.0078 -1.79199 37.8721zM180.544 100.336c0 13.6641 0.175781 28.1758 0.511719 43.5361
+s0.768555 32.416 1.28027 51.2002c0.511719 18.7676 0.944336 33.2793 1.28027 43.5195c0.671875 5.12012 3.07227 7.68066 7.16797 7.68066s6.47949 -2.56055 7.16797 -7.68066c0.335938 -10.2402 0.767578 -24.752 1.28027 -43.5195
+c0.511719 -18.7686 0.943359 -35.8398 1.2793 -51.2002s0.512695 -29.8721 0.512695 -43.5361c0 -0.671875 -1.02441 -23.0244 -3.07227 -67.0557v0.496094c-0.688477 -5.10449 -3.07227 -7.66406 -7.16797 -7.66406s-6.48047 2.38379 -7.16797 7.16797
+c-2.04785 44.0312 -3.07227 66.3838 -3.07227 67.0557zM229.184 99.8398c0 1.02441 1.02441 60.9277 3.07227 179.712c0.688477 6.14453 3.4082 9.21582 8.19238 9.21582s7.50391 -3.07129 8.19141 -9.21582c2.04883 -118.784 3.07227 -178.672 3.07227 -179.712
+c0 -0.335938 -1.02344 -22.0156 -3.07227 -65.0234c-0.6875 -5.79199 -3.40723 -8.7041 -8.19141 -8.7041s-7.50391 2.91211 -8.19238 8.7041c-2.04785 43.0078 -3.07227 64.6875 -3.07227 65.0234zM270.16 208.64c0 28.1602 0.160156 54.6885 0.496094 79.6162
+c-0.335938 3.4082 1.79199 6.48047 6.39941 9.21582c4.6084 2.73633 10.1602 4.68848 16.6406 5.88867c6.47949 1.19922 12.3682 2.12793 17.6641 2.81543c5.2793 0.688477 9.47168 1.02441 12.5273 1.02441c33.1045 0 61.9521 -12.3682 86.5283 -37.1201
+c24.5762 -24.7363 38.2236 -55.2158 40.9756 -91.3916c9.55273 4.43164 18.9443 6.65527 28.1602 6.65527c19.7764 0 36.7842 -7.75977 50.9443 -23.2959s21.3438 -34.3838 21.5039 -56.5762c0.192383 -22.1914 -6.91211 -41.0234 -21.248 -56.5596
+s-31.4082 -23.3125 -51.1836 -23.3125h-201.232c-2.04785 0 -3.83984 1.02441 -5.37598 3.07227s-2.32031 4.27246 -2.32031 6.65625c0 18.7676 -0.0800781 45.3115 -0.255859 79.6162c-0.143555 34.3037 -0.223633 65.5361 -0.223633 93.6953z" />
+ <glyph glyph-name="uniF116" unicode=""
+d="M32 148.992c0 23.8721 3.58398 46.5918 10.752 68.0801c7.16797 21.5039 15.4404 39.0879 24.832 52.7354c9.37598 13.6484 20.3838 26.3682 33.0244 38.1445c12.624 11.7754 22.3516 19.9678 29.1836 24.5762c6.83203 4.60742 13.3115 8.62402 19.4561 12.0312
+c3.4082 1.69629 8.44824 4.27246 15.1035 7.68066c6.65625 3.4082 11.8564 6.14355 15.6162 8.19141c3.75977 2.04883 8.62402 4.95996 14.5918 8.7041c5.96875 3.74414 11.8564 8.0166 17.6641 12.7998c14.3359 11.6006 22.8643 30.8965 25.584 57.8564
+c24.9443 -30.0322 43.0088 -48.7998 54.2881 -56.3203c8.52832 -5.79199 21.0723 -12.4473 37.6318 -19.9678c16.5605 -7.50391 29.1045 -13.8242 37.6484 -18.9443c6.48047 -3.75977 12.6396 -7.75977 18.416 -12.0312c5.80762 -4.24023 15.0244 -12.5283 27.6484 -24.8164
+s23.2959 -25.2637 32 -38.9121c8.70312 -13.6475 16.6396 -31.5674 23.8076 -53.7598c7.15234 -22.1924 10.752 -45.5684 10.752 -70.1279c0 -63.5039 -21.7441 -115.568 -65.2803 -156.176c-43.5195 -40.6084 -95.8232 -60.9287 -156.943 -60.9287
+c-39.6006 0 -76.5283 9.47266 -110.832 28.4004c-34.3047 18.96 -62.0322 45.4883 -83.2002 79.6318c-21.168 34.1279 -31.7441 71.8398 -31.7441 113.152zM129.28 71.6797c-0.688477 -21.5195 6.47949 -37.376 21.5039 -47.6318
+c10.5918 -7.15137 26.624 -10.752 48.1279 -10.752c14 0 30.6396 5.02441 49.9199 15.0879c19.2959 10.0801 37.2002 20.0645 53.7598 29.9678c16.5605 9.88867 28.5918 14.6729 36.0967 14.3369c7.83984 -0.336914 21.0713 -9.88867 39.6797 -28.6729
+c18.5918 -18.7832 30.624 -28.3359 36.0957 -28.6719c6.81641 -0.335938 12.5283 1.10449 17.1523 4.35254c4.5918 3.23145 9.96777 9.2959 16.1279 18.1758c11.248 16.7197 16.8955 36.6875 16.8955 59.8877c0 9.9043 -2.55957 19.2158 -7.66406 27.9043
+c-5.11914 8.71973 -13.1514 13.0557 -24.0635 13.0557c-7.53613 0 -23.2158 -8.01562 -47.1201 -24.0635c-23.8721 -16.0322 -39.9199 -24.2402 -48.1279 -24.5762c-7.50391 0 -17.9043 4.7041 -31.2158 14.0801c-13.3125 9.3916 -28.416 18.8643 -45.3125 28.416
+c-16.9121 9.55176 -33.7119 14.3359 -50.4316 14.3359c-22.1924 -0.335938 -41.2158 -8.01562 -57.0879 -23.0244c-15.8887 -15.0078 -23.9844 -32.416 -24.3359 -52.208zM234.256 -20.4805c-4.1123 -3.40723 -4.1123 -6.83105 0 -10.2393
+c15.6797 -14.3359 43.8398 -19.6318 84.4639 -15.8721c7.83984 0.6875 15.9688 2.65625 24.3203 5.8877c8.36816 3.23242 14.6875 6.24023 18.96 8.95996c4.27246 2.73633 7.07227 4.78418 8.44824 6.16016c1.35938 1.36035 2.03223 4.0957 2.03223 8.19238
+c-1.00879 4.0957 -3.4082 4.60742 -7.15234 1.53516c-14 -10.9277 -35.1523 -16.3672 -63.5039 -16.3672c-25.6006 0 -44.3525 4.7832 -56.3203 14.3359c-1.02344 0.6875 -2.36816 1.00781 -4.0957 1.00781c-1.71191 -0.0322266 -4.09668 -1.21582 -7.15234 -3.60059z
+M280.32 6.14355c2.39941 -2.73535 7.16797 -0.863281 14.3359 5.64844c0.6875 0.335938 2.04785 1.36035 4.0957 3.05566c2.04785 1.71191 3.4082 2.81641 4.0957 3.32812c0.688477 0.512695 2.06445 1.36035 4.09668 2.56055
+c2.06348 1.19922 3.74414 1.95215 5.12012 2.30371s3.32715 0.6875 5.8877 1.02441c2.55957 0.335938 5.2002 0.511719 7.93555 0.511719c5.45605 0 9.88867 -0.768555 13.3125 -2.30371c3.42383 -1.55273 5.55176 -2.91211 6.38379 -4.1123
+c0.864258 -1.18457 2.14355 -3.32812 3.83984 -6.38379c1.71191 -3.4248 3.00781 -5.37598 3.83984 -5.88867c0.832031 -0.511719 2.12793 -0.416016 3.83984 0.255859c4.09668 2.38477 5.28027 5.79199 3.58496 10.2402
+c-3.07227 8.87988 -6.83203 14.6885 -11.2646 17.4082c-4.0957 3.08789 -11.4395 4.62402 -22.0156 4.62402c-8.87988 0 -15.8564 -1.02441 -20.9922 -3.07227c-5.80762 -2.38379 -13.3125 -7.85547 -22.5283 -16.3838
+c-5.10352 -4.1123 -6.28809 -8.38379 -3.56738 -12.8164z" />
+ <glyph glyph-name="uniF139" unicode=""
+d="M-30.2881 134.144v77.3125c0 3.4082 1.2002 6.40039 3.58398 8.95996s5.45605 3.83984 9.21582 3.83984h135.681l-58.8809 -102.912h-76.7998c-3.74414 0 -6.81543 1.18457 -9.21582 3.60059c-2.38379 2.36719 -3.58398 5.43945 -3.58398 9.19922zM32.1758 9.21582
+l33.792 -19.4717zM37.3115 31.4883c-1.02344 3.58398 -0.6875 6.92773 1.02441 9.9834l155.648 270.336c1.69531 3.07227 4.27148 5.04004 7.67969 5.88867c3.4082 0.847656 6.65625 0.431641 9.72754 -1.28027l33.2803 -18.9443
+c3.4082 -1.69531 5.55176 -4.35156 6.40039 -7.93555c0.847656 -3.58398 0.431641 -6.91211 -1.28027 -9.98438l-155.136 -270.336c-1.71191 -3.07227 -4.35254 -5.02344 -7.93652 -5.8877s-6.91211 -0.416016 -9.9834 1.28027l-33.2803 19.4561
+c-3.08789 1.37598 -5.12012 3.83984 -6.14453 7.42383zM195.008 121.344l58.8799 102.912h34.3203l48.1279 -102.912h-141.328zM234.944 441.344c0.335938 3.07227 1.35938 5.12012 3.07129 6.14453c3.4082 1.71191 9.47266 -3.58398 18.1768 -15.8721
+s20.9111 -32.0801 36.6074 -59.3926c15.7119 -27.3115 26.2881 -45.2314 31.7441 -53.7598c9.56836 -15.0078 22.4316 -37.2959 38.6562 -66.8154c16.2236 -29.5205 31.7441 -58.3682 46.5918 -86.5283s22.2881 -42.4004 22.2881 -42.752
+c3.74414 -6.49609 3.4082 -12.6406 -1.02441 -18.4326c-4.43164 -5.80762 -9.71191 -9.90332 -15.8721 -12.2871c-6.14355 -2.75195 -10.2393 -4.28809 -12.2871 -4.62402c-2.06445 -0.335938 -7.16895 0.863281 -15.377 3.59961
+c-10.2236 5.12012 -42.6553 72.1924 -97.2637 201.216c-1.69629 3.74414 -4.01562 8.95996 -6.92773 15.6162s-5.79199 13.1357 -8.68848 19.4561c-2.91211 6.32031 -6.06348 13.4717 -9.4873 21.5039c-3.4248 8.03223 -6.57617 15.5361 -9.47266 22.5283
+c-2.91211 6.99121 -5.80762 14.1592 -8.7041 21.5039c-2.91113 7.34375 -5.21582 14 -6.91113 19.9678c-1.69629 5.98438 -3.07227 11.5195 -4.09668 16.6396c-1.02344 5.12012 -1.37598 9.2168 -1.02344 12.2881zM402.88 224.256h120.32
+c3.4082 0 6.39941 -1.28027 8.97559 -3.83984c2.56055 -2.55957 3.83984 -5.55176 3.83984 -8.95996v-77.3125c0 -3.40723 -1.2793 -6.38379 -3.83984 -8.95996c-2.55957 -2.5752 -5.56738 -3.83984 -8.97559 -3.83984h-68.0967
+c-1.37598 5.47266 -2.71973 9.39258 -4.0957 11.7764l-12.2881 23.5518c-21.8398 41.3125 -33.792 63.8242 -35.8398 67.584zM409.536 62.2236c1.00781 3.56836 3.23145 6.22461 6.65625 7.91992l18.9434 9.72852c3.4082 1.69629 7.00781 1.96777 10.752 0.767578
+c3.74414 -1.19922 6.49609 -3.50391 8.19238 -6.92773l15.8721 -30.7197c4.0957 -8.19238 2.39941 -14.8486 -5.12012 -19.9678l-13.8076 -8.19238c-3.4082 -1.69629 -7.00879 -2.12793 -10.752 -1.28027c-3.74414 0.864258 -6.65625 3.00781 -8.7207 6.40039
+l-20.4639 31.7441c-2.08008 3.42383 -2.5918 6.92773 -1.55176 10.5273zM448.688 -11.7764c0.191406 5.47266 0.863281 9.04004 2.06348 10.752c1.18359 1.71289 3.3125 4.09668 6.38379 7.16797l12.3047 4.6084c20.8154 4.0957 33.0879 -7.83984 36.8633 -35.8398
+c1.00781 -10.9121 0.864258 -23.8877 -0.511719 -38.9121c-1.37598 4.0957 -8.87988 9.12012 -22.5283 15.0879c-13.6641 5.98438 -23.0234 12.5605 -28.1602 19.7119c-4.44727 6.17578 -6.5752 11.9678 -6.41504 17.4238z" />
+ <glyph glyph-name="uniF131" unicode=""
+d="M0 192c0 46.4212 11.4346 89.2585 34.3037 128.512c22.8698 39.2533 53.9313 70.3148 93.1846 93.1846c39.2533 22.8691 82.0905 34.3037 128.512 34.3037c46.4212 0 89.2585 -11.4346 128.512 -34.3037c39.2533 -22.8698 70.3148 -53.9313 93.1846 -93.1846
+c22.8691 -39.2533 34.3037 -82.0905 34.3037 -128.512s-11.4346 -89.2585 -34.3037 -128.512c-22.8698 -39.2533 -53.9313 -70.3148 -93.1846 -93.1846c-39.2533 -22.8691 -82.0905 -34.3037 -128.512 -34.3037c-46.4212 0 -89.2585 11.4346 -128.512 34.3037
+c-39.2533 22.8698 -70.3148 53.9313 -93.1846 93.1846c-22.8691 39.2533 -34.3037 82.0905 -34.3037 128.512zM51.2002 192c0 -56.6615 19.9678 -104.96 59.9033 -144.896c39.9362 -39.9355 88.235 -59.9033 144.896 -59.9033c56.6615 0 104.96 19.9678 144.896 59.9033
+c39.9355 39.9362 59.9033 88.235 59.9033 144.896s-19.9678 104.96 -59.9033 144.896c-39.9362 39.9355 -88.235 59.9033 -144.896 59.9033c-56.6615 0 -104.96 -19.9678 -144.896 -59.9033c-39.9355 -39.9362 -59.9033 -88.235 -59.9033 -144.896zM144.896 101.888
+c0 11.2643 4.0957 20.9925 12.2871 29.1846c8.19206 8.19206 18.0908 12.2881 29.6963 12.2881c4.4375 0 9.21615 -0.853516 14.3359 -2.56055v153.601l148.48 25.5996v-201.728c-0.341797 -10.5814 -4.69401 -19.7975 -13.0566 -27.6484
+s-17.8346 -11.7764 -28.416 -11.7764s-19.4561 3.6696 -26.624 11.0088c-7.16797 7.33854 -10.752 16.2985 -10.752 26.8799c0 11.2637 4.09603 20.9915 12.2881 29.1836s17.9202 12.2881 29.1846 12.2881c4.43685 0 9.21549 -0.85319 14.3359 -2.55957v106.495
+l-102.4 -18.9434v-137.729c0 -11.2637 -4.09603 -20.9915 -12.2881 -29.1836s-17.9199 -12.2881 -29.1836 -12.2881c-10.5814 0 -19.5413 3.66927 -26.8799 11.0078s-11.0078 16.2985 -11.0078 26.8799z" />
+ <glyph glyph-name="uniF13C" unicode=""
+d="M-56.752 370.688c-0.335938 1.69531 0.0800781 3.32715 1.28027 4.86328c1.19922 1.53613 2.63965 2.46387 4.35156 2.81641c3.75977 0.671875 9.05566 1.79199 15.8721 3.32812s11.5996 2.65527 14.3359 3.32812c0 5.80762 0.160156 14.2559 0.511719 25.3438
+c0.352539 11.0879 0.512695 19.3594 0.512695 24.832c0.6875 4.0957 2.89551 6.14355 6.65527 6.14355c4.76855 0 7.16797 -2.38379 7.16797 -7.16797c-0.671875 -20.4795 -1.02344 -36 -1.02344 -46.5918c3.75977 0.671875 9.72754 1.87207 17.9199 3.58398
+c8.19238 1.69629 14.1602 3.07227 17.9199 4.0957c6.14453 1.36035 15.5205 3.07227 28.1602 5.12012s22.1914 3.75977 28.6719 5.12012c137.216 23.5518 272.72 35.8398 406.544 36.8643c2.03223 0 3.66406 -0.768555 4.84766 -2.30371
+c1.2002 -1.53613 1.63281 -3.32812 1.28027 -5.37598c0 -3.74414 -0.335938 -9.37695 -1.00781 -16.8965c-0.671875 -7.50391 -1.00781 -13.1357 -1.00781 -16.8955c14.3359 -1.02441 36.1758 -2.91211 65.5361 -5.63281c1.69531 0 3.24805 -0.767578 4.5918 -2.30371
+c1.37598 -1.53613 1.8877 -3.15234 1.55176 -4.86426c-7.85547 -46.752 -19.4561 -117.071 -34.832 -210.943c-15.3438 -93.8721 -26.96 -164.353 -34.8154 -211.473c17.0713 -2.71973 30.0479 -4.7832 38.9277 -6.12793
+c2.73535 -0.335938 4.51172 -1.71191 5.37598 -4.11133c0.864258 -2.40039 0.767578 -4.6084 -0.272461 -6.65625c-1.00781 -2.04785 -2.71973 -3.07227 -5.10352 -3.07227h-1.55176c-4.43262 0.688477 -11.0889 1.79199 -19.9688 3.34375
+c-8.87988 1.53613 -15.5361 2.64062 -19.9678 3.3125c-0.335938 -4.0957 -1.18359 -9.37598 -2.54395 -15.8564c-0.6875 -3.07129 -2.38379 -4.95996 -5.12012 -5.64746c-0.335938 -0.335938 -1.00781 -0.496094 -2.04785 -0.496094h-2.04785
+c-101.376 25.5996 -203.76 45.5674 -307.2 59.9043c-34.1279 0.671875 -59.5684 1.00781 -76.2881 1.00781c-18.7676 0 -46.9443 -0.335938 -84.4795 -1.00781v-0.52832c0.335938 -0.335938 0.511719 -0.671875 0.511719 -1.00781
+c0.335938 -2.04785 -0.335938 -3.82422 -2.04785 -5.37598c-1.71191 -1.53613 -3.58398 -2.30469 -5.63184 -2.30469c-3.76074 0 -5.80859 1.87207 -6.14453 5.63281c0 1.69531 -0.255859 4.33594 -0.767578 7.93555c-0.512695 3.59961 -0.944336 6.40039 -1.28027 8.43164
+h-6.65625c-2.71973 0 -4.52734 1.2002 -5.37598 3.60059c-0.847656 2.39941 -0.671875 4.6875 0.511719 6.91211c1.2002 2.22363 3.16895 3.34375 5.88867 3.34375h4.0957l-3.07227 27.6475c-2.04785 13.6484 -6.31934 46.8486 -12.7998 99.584
+c-6.47949 52.7363 -12.5439 95.6641 -18.1758 128.769c-5.63184 33.1035 -12.9121 65.6963 -21.792 97.7764zM-41.3916 366.592c7.16797 -26.624 14.5117 -60.9277 22.0156 -102.912c-1.02441 23.8887 -1.53613 59.5684 -1.53613 107.009
+c-5.45605 -0.688477 -12.2881 -2.04883 -20.4795 -4.09668zM-7.08789 320c0.335938 -65.8721 3.91992 -138.256 10.752 -217.088c1.02441 -13.6641 2.91211 -32.2559 5.63184 -55.8086c0.335938 -3.05566 0.768555 -6.31934 1.28027 -9.71191
+c0.511719 -3.3916 1.10352 -7.15137 1.79199 -11.2637c0.6875 -4.0957 1.2002 -7.32812 1.53613 -9.72754c22.8633 -1.00879 55.6475 -3.23242 98.3037 -6.65625c42.6719 -3.4082 73.7275 -5.63184 93.1836 -6.65625c120.832 -6.81543 203.265 -12.7842 247.297 -17.9043
+c3.74316 54.6084 9.31152 132.272 16.6396 232.96c7.34375 100.688 12.3682 170.849 15.1035 210.433c-159.743 -1.39258 -323.584 -19.6641 -491.52 -54.8164c-0.335938 -18.0957 -0.335938 -36.0156 0 -53.7598zM40.0156 236.544
+c0 24.9121 8.7041 46.4316 26.1123 64.5117c17.4082 18.0967 39.4238 27.1367 66.0479 27.1367c29.0078 0 51.5361 -10.1445 67.584 -30.4648c16.0479 -20.3037 24.0645 -46.5117 24.0645 -78.5918c0 -51.5518 -14.8486 -91.3115 -44.5439 -119.296
+c-21.8398 -20.4795 -51.0244 -32.0957 -87.5527 -34.8154c-7.51953 -0.688477 -17.2314 -1.02441 -29.1836 -1.02441v38.4004c4.0957 -0.688477 12.9756 -0.335938 26.624 1.00781c20.4805 1.71191 37.7119 8.20801 51.7119 19.4561
+c17.7441 14 28.8477 32.9434 33.2803 56.8477h-1.02441c-13.6475 -14.6875 -32.2559 -22.0322 -55.8076 -22.0322c-22.5283 0 -41.0557 7.34473 -55.5518 22.0322c-14.4961 14.6719 -21.7607 33.6162 -21.7607 56.832zM88.1436 239.616
+c0 -13.6484 3.76074 -24.9277 11.2646 -33.792c7.50391 -8.87988 17.7441 -13.3125 30.7197 -13.3125c18.7842 0 32.5918 7.16797 41.4717 21.5039c1.71191 3.4082 2.56055 7.85645 2.56055 13.3125c0.335938 18.7676 -3.23242 34.2236 -10.752 46.3359
+c-7.52051 12.1123 -18.6084 18.1758 -33.2803 18.1758h-0.511719c-12.2881 0 -22.2725 -4.86426 -29.9521 -14.5918c-7.67969 -9.72852 -11.5205 -22.2725 -11.5205 -37.6318zM133.712 -4.6084l49.1523 -5.10352l190.976 -20.4961
+c47.7764 -10.2236 83.4561 -18.416 107.008 -24.5596l1.53613 9.21582c-18.7676 3.05566 -46.9277 7.34375 -84.4639 12.7998c-85.0078 11.9355 -173.072 21.3115 -264.208 28.1436zM232.016 236.544c0 24.9121 8.78418 46.4316 26.3682 64.5117
+c17.584 18.0967 39.6807 27.1367 66.3047 27.1367c28.6719 0 51.0234 -10.1445 67.0713 -30.4648c16.0479 -20.3037 24.0645 -46.5117 24.0645 -78.5918c0 -52.2393 -14.8643 -91.9834 -44.5439 -119.296c-21.8564 -20.4795 -51.04 -32.0957 -87.5684 -34.8154
+c-7.50391 -0.688477 -17.2158 -1.02441 -29.168 -1.02441v38.4004c4.0957 -0.688477 12.96 -0.352539 26.624 1.00781c20.4961 1.71191 37.8877 8.20801 52.2236 19.4561c17.4248 14 28.3359 32.9434 32.7686 56.8477h-0.496094
+c-14 -14.6875 -32.7842 -22.0322 -56.3359 -22.0322c-22.1924 0 -40.6084 7.34473 -55.2959 22.0322c-14.6719 14.6719 -22.0166 33.6162 -22.0166 56.832zM280.16 239.616c0 -13.6484 3.74414 -24.9277 11.2314 -33.792
+c7.52051 -8.87988 17.7441 -13.3125 30.7207 -13.3125c18.7842 0 32.5918 7.16797 41.4717 21.5039c1.71191 3.4082 2.55957 7.85645 2.55957 13.3125c0.336914 18.7676 -3.23145 34.2236 -10.752 46.3359c-7.50391 12.1123 -18.5918 18.1758 -33.2793 18.1758h-0.496094
+c-11.9521 0 -21.8398 -4.86426 -29.6963 -14.5918c-7.85547 -9.72852 -11.7598 -22.2725 -11.7598 -37.6318zM462.944 -28.6719c9.55176 -1.36035 16.8955 -2.38379 22 -3.07227c6.84766 40.9766 17.8398 107.872 33.0234 200.72
+c15.1846 92.832 26.8799 164 35.0566 213.488c-4.43262 0.335938 -10.4805 0.864258 -18.1445 1.53613c-7.67969 0.671875 -14.7842 1.28027 -21.248 1.79199c-6.49609 0.511719 -12.624 0.944336 -18.4316 1.28027c-2.04785 -29.0078 -6.65625 -91.5684 -13.8242 -187.648
+s-12.4482 -170.399 -15.8564 -222.992c0 -1.67969 -0.6875 -3.23145 -2.06348 -4.5918c-0.368164 0 -0.511719 -0.175781 -0.511719 -0.511719z" />
+ <glyph glyph-name="uniF109" unicode=""
+d="M0 97.2803v188.928c0 44.373 15.8721 82.4316 47.6162 114.176s69.8027 47.6162 114.176 47.6162h113.152c22.1862 -2.73047 45.8236 -12.4583 70.9121 -29.1836c25.0879 -16.7259 42.9225 -36.3529 53.5039 -58.8809
+c0.341146 -0.682292 1.19434 -2.30339 2.55957 -4.86328s2.21875 -4.2666 2.56055 -5.12012c0.341146 -0.853516 0.938477 -2.47493 1.79199 -4.86426c0.852865 -2.38932 1.53548 -4.52246 2.04785 -6.39941c0.511719 -1.8776 1.10905 -4.52311 1.79199 -7.93652
+c0.682292 -3.41341 1.36491 -7.16797 2.04785 -11.2637c0.682292 -4.09635 1.36491 -9.0459 2.04785 -14.8486c3.07227 -23.8932 7.50944 -38.3997 13.3115 -43.5195c4.7793 -4.4375 16.8968 -6.91211 36.3525 -7.42383c19.4557 -0.51237 30.5492 -1.79232 33.2803 -3.83984
+l7.16797 -5.63281l4.0957 -8.7041l1.53613 -7.16797l-1.02441 -131.071c-0.341146 -44.3737 -16.2132 -82.347 -47.6162 -113.92c-31.4023 -31.5736 -69.29 -47.3604 -113.663 -47.3604h-185.856c-44.373 0 -82.4316 15.7868 -114.176 47.3604
+c-31.7441 31.5729 -47.6162 69.5462 -47.6162 113.92zM132.608 99.8398c0 -8.5332 3.07194 -15.7865 9.21582 -21.7598s13.4824 -8.95996 22.0156 -8.95996h182.272c8.5332 0 15.7865 2.98665 21.7598 8.95996s8.95996 13.2266 8.95996 21.7598
+s-2.98665 15.7865 -8.95996 21.7598s-13.2266 8.95996 -21.7598 8.95996h-182.272c-8.5332 0 -15.8717 -2.98665 -22.0156 -8.95996s-9.21582 -13.2266 -9.21582 -21.7598zM132.608 285.184c0 -8.5332 3.07194 -15.8717 9.21582 -22.0156s13.4824 -9.21582 22.0156 -9.21582
+h89.6006c8.5332 0 15.7865 3.07194 21.7598 9.21582s8.95996 13.4824 8.95996 22.0156c0 8.53385 -2.98665 15.7874 -8.95996 21.7607s-13.2266 8.95996 -21.7598 8.95996h-89.6006c-8.5332 0 -15.8717 -2.98665 -22.0156 -8.95996s-9.21582 -13.2269 -9.21582 -21.7607z
+" />
+ <glyph glyph-name="uniF14D" unicode=""
+d="M0 326.144c0 8.53385 2.73079 16.2995 8.19238 23.2969c5.46094 6.99674 12.458 11.5192 20.9912 13.5674l100.864 24.0645c-21.5039 -24.5762 -32.2559 -53.2484 -32.2559 -86.0166c0 -63.1465 43.1787 -111.445 129.536 -144.896
+c9.55729 -3.75456 18.7731 -7.93587 27.6475 -12.5439c8.875 -4.60807 18.1764 -10.3255 27.9043 -17.1523c9.72786 -6.82682 17.5785 -14.7627 23.5518 -23.8076c5.97331 -9.04557 8.95996 -18.5176 8.95996 -28.416c0 -14.6777 -5.97331 -26.1126 -17.9199 -34.3047
+c-11.9466 -8.19141 -25.5999 -12.2871 -40.96 -12.2871c-19.7969 0 -40.4476 3.83984 -61.9521 11.5195c-21.5039 7.68034 -39.4238 18.0055 -53.7598 30.9756l-40.4482 -91.6475c19.1152 -10.5814 43.6914 -20.9922 73.7285 -31.2324
+c-3.41341 -0.682292 -8.78939 -2.13281 -16.1279 -4.35156s-13.9092 -3.92546 -19.7119 -5.12012s-11.264 -1.79199 -16.3838 -1.79199c-8.53385 0 -16.2995 2.73079 -23.2969 8.19238c-6.99674 5.46094 -11.5192 12.458 -13.5674 20.9912l-83.9678 351.744
+c-0.682943 4.09635 -1.02441 7.16829 -1.02441 9.21582zM214.528 302.592c0 12.9707 5.97331 22.9548 17.9199 29.9521s24.9173 10.4961 38.9121 10.4961c16.7253 0 35.4984 -2.98665 56.3193 -8.95996c20.8216 -5.97331 35.8405 -13.9092 45.0566 -23.8076l31.2314 87.0391
+c-30.7201 16.3841 -62.4639 27.1364 -95.2314 32.2568c0.682292 0 8.3623 2.04785 23.04 6.14355c14.6771 4.09635 26.8796 7.16829 36.6074 9.21582c9.72786 2.04818 16.9811 3.07227 21.7598 3.07227c8.53385 0 16.2995 -2.73079 23.2969 -8.19238
+c6.99674 -5.46094 11.5192 -12.458 13.5674 -20.9912l83.9678 -351.744c0.682943 -4.09635 1.02441 -7.16829 1.02441 -9.21582c0 -8.53385 -2.73079 -16.2995 -8.19238 -23.2969c-5.46094 -6.99674 -12.458 -11.5192 -20.9912 -13.5674l-74.2402 -17.4082
+c16.0423 23.8932 24.0635 49.8346 24.0635 77.8242c0 37.888 -12.0319 69.0345 -36.0957 93.4395c-24.0638 24.4056 -55.5518 43.0938 -94.4639 56.0645c-58.3678 19.7975 -87.5518 43.6908 -87.5518 71.6797z" />
+ <glyph glyph-name="uniF111" unicode=""
+d="M0 -64v256.512h256.512v-256.512h-256.512zM260.608 191.488v256.512h256v-256.512h-256z" />
+ <glyph glyph-name="uniF10F" unicode=""
+d="M-44.6719 156.672c0 35.5039 12.5439 65.8721 37.6318 91.1357c25.0879 25.2646 55.2158 37.8887 90.3682 37.8887l0.511719 -0.512695c0 1.02441 -0.0800781 2.22461 -0.255859 3.58398c-0.175781 1.36035 -0.255859 2.38477 -0.255859 3.07227
+c0 40.2725 14.0801 74.5762 42.2402 102.912c28.1592 28.3359 62.208 42.4961 102.144 42.4961c35.1523 0 66.0479 -11.2637 92.6719 -33.792s43.0078 -50.8643 49.1523 -84.9922h8.7041c39.9199 0 73.9834 -14.1602 102.144 -42.4961s42.2559 -62.6396 42.2559 -102.912
+c0 -40.2881 -14.0957 -74.5918 -42.2559 -102.928s-62.2236 -42.4795 -102.144 -42.4795c-2.73633 0 -4.78418 0.15918 -6.14453 0.495117v-0.495117h-295.952v0.511719c-33.792 1.71191 -62.3672 15.0234 -85.7598 39.9355
+c-23.376 24.9121 -35.0557 54.4326 -35.0557 88.5762z" />
+ <glyph glyph-name="uniF114" unicode=""
+d="M0 192c0 46.4212 11.4346 89.2585 34.3037 128.512c22.8698 39.2533 53.9313 70.3148 93.1846 93.1846c39.2533 22.8691 82.0905 34.3037 128.512 34.3037c46.4212 0 89.2585 -11.4346 128.512 -34.3037c39.2533 -22.8698 70.3148 -53.9313 93.1846 -93.1846
+c22.8691 -39.2533 34.3037 -82.0905 34.3037 -128.512s-11.4346 -89.2585 -34.3037 -128.512c-22.8698 -39.2533 -53.9313 -70.3148 -93.1846 -93.1846c-39.2533 -22.8691 -82.0905 -34.3037 -128.512 -34.3037c-46.4212 0 -89.2585 11.4346 -128.512 34.3037
+c-39.2533 22.8698 -70.3148 53.9313 -93.1846 93.1846c-22.8691 39.2533 -34.3037 82.0905 -34.3037 128.512zM42.4961 192c0 -53.248 17.9199 -100.181 53.7598 -140.8c16.3841 32.0853 42.3255 62.6344 77.8242 91.6475c35.4987 29.0137 70.1439 47.2751 103.936 54.7842
+c-5.11979 11.9466 -10.069 22.6986 -14.8477 32.2559c-58.7096 -18.7734 -122.198 -28.1602 -190.464 -28.1602c-13.3118 0 -23.2106 0.170898 -29.6963 0.512695c0 -1.36523 -0.0852865 -3.07194 -0.255859 -5.12012s-0.255859 -3.75488 -0.255859 -5.12012z
+M49.1523 244.736c7.50911 -0.682943 18.6022 -1.02441 33.2793 -1.02441c57.0026 0 111.104 7.68001 162.305 23.04c-25.9414 46.0801 -54.4427 84.4801 -85.5039 115.2c-26.9655 -13.6536 -50.0908 -32.5977 -69.376 -56.832
+c-19.2858 -24.235 -32.8538 -51.0296 -40.7041 -80.3838zM125.44 23.5518c38.5703 -30.0371 82.0902 -45.0557 130.56 -45.0557c25.2585 0 50.3464 4.77865 75.2637 14.3359c-6.82617 58.3678 -20.138 114.858 -39.9355 169.472
+c-31.403 -6.82617 -63.0618 -24.0635 -94.9766 -51.7119c-31.9141 -27.6478 -55.5511 -56.6611 -70.9111 -87.04zM203.776 398.336c30.0371 -31.0612 57.8558 -69.8024 83.4561 -116.224c46.4212 19.4557 81.4079 44.2021 104.96 74.2393
+c-39.5951 32.7682 -84.9925 49.1523 -136.192 49.1523c-17.4082 0 -34.8161 -2.38932 -52.2236 -7.16797zM305.664 245.76c5.11979 -10.9225 10.9225 -24.7464 17.4082 -41.4717c25.2585 2.38932 52.7357 3.58398 82.4316 3.58398
+c21.1628 0 42.1549 -0.512044 62.9766 -1.53613c-2.73112 46.4212 -19.4567 87.7227 -50.1768 123.904c-22.1862 -33.1094 -59.7327 -61.2695 -112.64 -84.4805zM335.872 168.448c17.4082 -50.5176 29.1842 -102.4 35.3281 -155.648
+c26.9655 17.4082 48.9814 39.7656 66.0479 67.0723s27.3063 56.832 30.7197 88.5762c-24.9173 1.70638 -47.6159 2.55957 -68.0957 2.55957c-18.7734 0 -40.1068 -0.85319 -64 -2.55957z" />
+ <glyph glyph-name="uniF11D" unicode=""
+d="M43.4404 289.792c0 13.6641 2.55957 23.5518 7.67969 29.6963c3.07227 4.78418 7.51953 8.36816 13.3115 10.752c6.14453 3.07129 14.1602 4.60742 24.0645 4.60742h48.1436c5.12012 0 9.55273 1.88867 13.3125 5.64844c3.75977 3.74414 5.63184 8.19238 5.63184 13.3115
+c0 7.16797 -0.160156 14.6729 -0.511719 22.5283v30.1924c0 8.52734 2.04785 16.0312 6.14355 22.5273c5.12012 7.16797 13.6641 12.4639 25.6006 15.8721c3.74316 2.04785 12.7832 3.07227 27.1191 3.07227h9.72852c20.1436 -0.671875 36.8643 -3.58398 50.1758 -8.7041
+c12.9766 -5.45605 20.6562 -16.0479 23.0244 -31.7441c8.87988 0.335938 17.0557 0.512695 24.5918 0.512695c18.0957 0 33.2803 -0.848633 45.5684 -2.56055c33.0879 -4.0957 55.1191 -8.19238 66.0312 -12.2881c14.3359 -4.43164 23.4082 -15.8721 27.1523 -34.3037
+c3.4082 -18.7686 6.46387 -54.624 9.21582 -107.521c1.67969 -30.3672 2.56055 -55.4717 2.56055 -75.2637c0 -15.0078 -0.52832 -27.1201 -1.56836 -36.3359c-5.44043 -58.7197 -12.7842 -102.064 -22 -130.064c-4.78418 -14.3359 -9.56836 -26.0156 -14.3359 -35.0557
+c-4.76855 -9.04004 -9.47168 -16.3037 -14.0645 -21.7441c-4.62402 -5.47168 -10.8477 -9.4082 -18.6875 -11.7754c-7.87207 -2.38477 -15.1201 -3.84082 -21.7764 -4.35254c-6.65527 -0.511719 -16.6074 -0.799805 -29.9199 -0.799805
+c-36.8799 0 -61.7119 4.33594 -74.4961 13.0557c-12.7998 8.68848 -19.2002 26.8799 -19.2002 54.5283c0 15.3438 1.63281 27.5684 4.86426 36.5918c3.24805 9.04004 8.87988 15.4561 16.9121 19.2002c8 3.75977 15.9365 5.98438 23.8076 6.65625
+c5.12012 0.335938 11.9365 0.511719 20.4648 0.511719h14.3359c1.34375 0 2.31934 -0.255859 2.81543 -0.78418c0.496094 -0.496094 0.591797 -1.34375 0.255859 -2.54395s-0.751953 -2.47949 -1.2793 -3.83984c-0.496094 -1.36035 -1.02441 -3.23242 -1.53613 -5.64844
+c-0.496094 -2.36719 -0.78418 -4.5918 -0.78418 -6.65527c0 -3.05664 0.335938 -6.22461 1.02441 -9.47266c0.6875 -3.23145 0.847656 -5.2793 0.527344 -6.14355c-0.335938 -0.864258 -1.56738 -1.26367 -3.59961 -1.26367h-10.2559
+s-1.68066 -0.0966797 -5.12012 -0.272461c-3.4082 -0.175781 -5.12012 -0.416016 -5.12012 -0.767578c0 -0.352539 -1.44043 -0.78418 -4.33594 -1.28027c-2.91211 -0.511719 -4.25586 -1.18359 -4.0957 -2.04785c0.191406 -0.864258 -0.751953 -1.88867 -2.81641 -3.07227
+c-2.03223 -1.18359 -2.71973 -2.71973 -2.03223 -4.6084c0.65625 -1.87109 0.496094 -3.82324 -0.527344 -5.8877c0 -4.78418 0.6875 -8.6875 2.06348 -11.7598c1.34375 -3.07227 2.62402 -5.47168 3.83984 -7.16797c1.18457 -1.69629 4.25586 -2.91211 9.18457 -3.60059
+c4.97559 -0.671875 8.71973 -1.00781 11.2793 -1.00781h16.624c19.4727 0 31.9365 2.30469 37.376 6.92871c5.47266 4.5918 8.22461 15.4395 8.22461 32.4951c0 25.9365 -3.15234 43.4404 -9.50391 52.4805c-6.32031 9.04004 -15.9365 14.416 -28.9121 16.1279
+c-30.0322 3.07227 -50.3359 6.48047 -60.9443 10.2402c-18.0957 6.84766 -27.1201 27.1357 -27.1201 60.9434c0 0.688477 -0.431641 1.02441 -1.2793 1.02441c-0.864258 0 -1.28027 -0.335938 -1.28027 -1.02441c0 -22.8799 -3.07227 -43.3438 -9.21582 -61.4395
+l-4.09668 -12.2881c-3.74414 -8.54395 -10.0635 -12.9922 -18.9434 -13.3115h-3.07227c-8.19238 0 -17.4082 1.35938 -27.6484 4.0957c-43.3438 5.45605 -77.1357 13.4717 -101.376 24.0635c-8.19141 3.74414 -14.5117 10.5762 -18.9434 20.4639
+c-5.80859 11.9521 -11.8564 33.8721 -18.1768 65.792c-6.31934 31.9209 -10.3193 54.6885 -12.0312 68.3525c-1.36035 11.2803 -2.04785 19.9844 -2.04785 26.1279zM46.5117 350.72v1.02441l93.6963 92.1602c0 0.335938 0.175781 0.511719 0.511719 0.511719
+l-1.53613 -3.07227c-3.74316 -6.83203 -5.63184 -15.0078 -5.63184 -24.5762c0 -7.50391 0.175781 -25.0879 0.512695 -52.7354c0 -3.4082 -1.71289 -5.12012 -5.12012 -5.12012h-47.6162c-11.6162 0 -21.6797 -1.8877 -30.208 -5.63184
+c-1.69629 -1.02441 -3.23242 -1.87207 -4.6084 -2.56055zM337.344 202.24c7.15234 1.02344 15.0078 1.53613 23.5361 1.53613c15.376 -0.335938 29.1846 -3.4082 41.4717 -9.2168c0 29.0088 -10.3994 43.8564 -31.2158 44.5439h-1.53613
+c-10.2559 0 -17.7432 -3.40723 -22.5273 -10.2393c-5.13672 -7.16797 -8.38379 -16.0479 -9.72852 -26.624z" />
+ <glyph glyph-name="uniF12B" unicode=""
+d="M66.8799 42.4961c0 7.53613 2.04785 18.4316 6.14453 32.7842c7.83984 29.6797 22.6074 56.6553 44.2871 80.9121c21.6807 24.2236 46.8486 41.792 75.5205 52.7197c-26.9756 21.5039 -40.4482 48.9922 -40.4482 82.4316c0 29.3604 10.6719 54.2725 32 74.752
+c21.3281 20.4805 46.6719 30.7207 76.0322 30.7207c29.3438 0 54.6875 -10.2402 76.0322 -30.7207c21.3281 -20.4795 32 -45.3916 32 -74.752c0 -33.1035 -13.1367 -60.416 -39.4238 -81.9199c36.1758 -12.9756 66.3838 -34.6396 90.6074 -65.0078
+c24.2559 -30.3682 36.3525 -64.1924 36.3525 -101.376c0 -31.4082 -12.4482 -49.5039 -37.376 -54.2881c-1.00879 -3.4082 -3.23242 -7.83984 -6.65625 -13.3115c-2.04785 -5.47266 -6.04785 -10.3203 -12.0322 -14.5928
+c-5.96777 -4.25586 -14.2559 -7.74414 -24.832 -10.4961c-10.5918 -2.71973 -19.0234 -4.7832 -25.3438 -6.12793c-6.32031 -1.37598 -15.9678 -2.91211 -28.9443 -4.62402c-12.9756 -1.67969 -19.6318 -2.55957 -19.9678 -2.55957
+c-0.671875 0 -1.87207 -0.160156 -3.58398 -0.496094s-2.86426 -0.543945 -3.55176 -0.543945h-61.4561c-17.4082 0 -39.4082 2.84766 -66.0322 8.46387s-41.8076 13.2158 -45.5684 22.7842c-5.79199 5.80762 -10.0635 12.9756 -12.7998 21.5039
+c-8.52832 1.71191 -15.6963 5.28027 -21.5039 10.752c-12.9756 5.12012 -19.4561 19.4717 -19.4561 42.9922z" />
+ <glyph glyph-name="uniF135" unicode=""
+d="M-63.6797 76.7998h12.2881c-2.38477 4.78418 -3.58398 10.5762 -3.58398 17.4238c0 22.1768 7.75977 53.8408 23.2959 94.9766s30.4639 72.4482 44.7998 93.9521c10.9277 16.7197 25.2637 25.0879 43.0078 25.0879c15.3604 0 23.04 -5.80859 23.04 -17.4082
+c0 -17.7441 -12.2881 -51.7119 -36.8643 -101.888h41.9844c6.83203 21.168 15.8721 42.6719 27.1357 64.5117c11.6162 23.2158 24.0645 38.7363 37.376 46.5918c13.3125 7.85645 33.1045 11.7764 59.3926 11.7764c9.90332 0 19.5352 -2.38379 28.9277 -7.16797
+c9.3916 -4.78418 14.0801 -11.6162 14.0801 -20.4805s-2.22461 -16.0322 -6.65625 -21.5039s-10.8477 -9.31152 -19.2002 -11.5195c-8.35156 -2.20801 -15.792 -3.66406 -22.2715 -4.35254c-6.48047 -0.671875 -14.3359 -1.02344 -23.5527 -1.02344h-4.60742
+c-5.12012 -7.50391 -9.9043 -17.4082 -14.3359 -29.6963c6.14355 1.02344 12.4482 1.53613 18.9434 1.53613c21.8408 0 32.7686 -6.48047 32.7686 -19.4561c0 -3.07227 -0.511719 -6.14453 -1.53613 -9.21582v0c-5.45605 -20.1445 -20.4795 -30.208 -45.0557 -30.208
+c-7.85645 0 -16.3848 0.847656 -25.6006 2.55957c-5.45605 -16.3682 -9.04004 -28.8477 -10.752 -37.376c17.7441 3.4082 30.8965 5.12012 39.4238 5.12012c8.54395 0 15.8721 -1.96777 22.0166 -5.9043c6.14355 -3.90332 9.21582 -9.96777 9.21582 -18.1602
+c0 -11.6318 -4 -21.3438 -12.0322 -29.1836c-8.01562 -7.85645 -17.1514 -13.1523 -27.3916 -15.8721c-10.2402 -2.73633 -21.168 -4.0957 -32.7686 -4.0957c-22.1758 0 -38.5752 7.00781 -49.1514 20.9922v0c-6.83203 8.20801 -10.2402 18.7676 -10.2402 31.7432
+c0 7.84082 0.511719 15.5361 1.53613 23.04c2.71973 17.0566 7.50391 36.1768 14.3359 57.3281h-41.9844c-3.07129 -6.49609 -7.50391 -15.9678 -13.3115 -28.416c-5.80859 -12.4473 -10.0645 -21.7598 -12.7998 -27.9033h-0.52832l-3.58398 -7.16797
+c7.51953 0.6875 13.3115 1.02344 17.4082 1.02344c20.1279 0 30.208 -6.83203 30.208 -20.4795c0 -17.4082 -6.65625 -29.9521 -19.9688 -37.6484c-13.3115 -7.66406 -29.1836 -11.5195 -47.6152 -11.5195c-22.1768 0 -36.6885 6.65527 -43.5205 19.9678h-12.2715v0.015625z
+M211.76 116.736c0 12.9756 2.65625 29.1836 7.93652 48.6396c5.2793 19.4561 11.0078 36.3516 17.1514 50.6885c6.48047 15.3594 12.624 28 18.4326 37.8877c5.80762 9.8877 13.1357 19.5361 22.0156 28.9277c8.87988 9.37598 19.1846 16.3838 30.9766 20.9922
+s25.5195 6.91211 41.2158 6.91211c17.0557 0 31.9033 -3.32812 44.5273 -9.98438c12.6406 -6.65625 18.96 -17.6641 18.96 -33.0234c0 -12.9766 -3.58398 -24.6562 -10.752 -35.0723c-7.16797 -10.4004 -16.8955 -15.6162 -29.1836 -15.6162
+c-17.7441 0 -26.624 5.63184 -26.624 16.8965c0 2.04785 0.608398 5.02344 1.79199 8.95996c1.18359 3.91992 1.77637 7.07129 1.77637 9.47168c0 4.43164 -3.74414 6.65625 -11.248 6.65625c-5.80859 0 -11.3447 -2.38379 -16.6562 -7.16797
+c-5.28027 -4.78418 -10.2236 -12.208 -14.8477 -22.2725c-4.59277 -10.0635 -7.66406 -16.9922 -9.2168 -20.7354c-1.53516 -3.76074 -4 -10.416 -7.40723 -19.9688v0c-10.9287 -28.6719 -16.3682 -48.9922 -16.3682 -60.9277c0 -9.9043 4.76758 -14.8477 14.3359 -14.8477
+c8.52734 0 16.0479 4.19141 22.5273 12.5273c6.48047 8.36816 10.9287 17.3281 13.3125 26.8965c-14.3359 0.671875 -21.5039 6.65625 -21.5039 17.9199c0 12.624 4.78418 21.8398 14.3359 27.6475c9.55176 5.80859 20.8164 8.7041 33.7764 8.7041
+c17.7432 0 28.8477 -5.96777 33.2793 -17.9199v0c1.37598 -3.75977 2.04785 -8.19141 2.04785 -13.3115c0 -17.0723 -4.86328 -35.1523 -14.5918 -54.2881c-9.72754 -19.1357 -21.4238 -33.9678 -35.0713 -44.5439v0c-18.0801 -13.9844 -38.5605 -20.9922 -61.4404 -20.9922
+c-23.2002 0 -40.2725 7.00781 -51.2002 20.9922v0c-8.17578 9.9043 -12.2881 23.2158 -12.2881 39.9521zM380.224 76.7998h21.5039c-6.14355 8.87988 -9.21582 20.1445 -9.21582 33.792c0 26.9766 8.36816 61.7764 25.0879 104.448
+c6.48047 16.0479 12.0322 28.6719 16.6406 37.8877c4.60742 9.21582 10.9277 18.6885 18.96 28.416c8 9.72852 17.7441 16.8164 29.168 21.248c11.4395 4.43262 24.832 6.65625 40.208 6.65625c40.96 0 61.4395 -19.6318 61.4395 -58.8799
+c0 -17.0566 -3.75977 -37.5518 -11.2793 -61.4404v0c-5.10449 -17.4082 -12.1123 -36.1758 -20.9922 -56.3193v0c-12.624 -26.2881 -25.0723 -44.8965 -37.376 -55.8086v0c-15.6963 -13.9834 -36.0166 -20.9922 -60.9277 -20.9922
+c-24.5762 0 -41.8086 7.00879 -51.7129 20.9922h-21.5039zM453.936 132.608h1.55273c-2.04785 -11.9521 1.69531 -17.9199 11.2637 -17.9199c7.83984 0 15.1836 6.47949 22 19.4551h-1.00781c5.79199 12.3047 13.4883 32 23.04 59.1367
+c9.56738 27.1357 14.3359 44.624 14.3359 52.4795c0 8.19238 -3.58398 12.2881 -10.752 12.2881c-6.83203 0 -12.4482 -2.71973 -16.8965 -8.19141c-6.16016 -8.88086 -15.0234 -29.1846 -26.624 -60.9287v0c-8.52734 -22.8633 -14.1758 -41.6475 -16.9121 -56.3193z" />
+ <glyph glyph-name="uniF10E" unicode=""
+d="M0 180.224c0 25.6003 3.92546 52.139 11.7764 79.6162c7.85026 27.4772 18.4313 52.1387 31.7432 73.9844c21.1628 35.4987 52.3096 63.4027 93.4404 83.7119s83.5417 30.4639 127.232 30.4639c44.373 0 86.9541 -13.9092 127.743 -41.7275
+c40.7897 -27.819 71.9365 -62.2087 93.4404 -103.169c17.0664 -29.3542 25.5996 -65.8766 25.5996 -109.567c0 -51.1999 -12.1172 -96.5973 -36.3516 -136.192c-24.2344 -39.5944 -57.0023 -69.8024 -98.3037 -90.624c-41.3014 -20.821 -87.3815 -31.0609 -138.24 -30.7197
+c6.82682 12.2878 17.2373 30.9759 31.2314 56.0645c13.9948 25.0879 26.5391 47.3597 37.6328 66.8154c11.0931 19.4564 22.1009 37.8883 33.0234 55.2959l0.512695 1.02441c1.02344 1.70638 3.07129 4.86361 6.14355 9.47168
+c3.07227 4.60807 5.20573 7.9362 6.40039 9.98438c1.19466 2.04753 2.81576 4.94889 4.86328 8.7041c2.04818 3.75456 3.6696 7.33854 4.86426 10.752s2.13346 6.9974 2.81641 10.752c2.04753 8.19206 3.07129 16.3841 3.07129 24.5762
+c0 27.3066 -8.19173 51.541 -24.5752 72.7031l140.8 41.4727c-97.2799 0 -170.326 -0.170898 -219.137 -0.512695c-2.38932 0.341797 -6.14388 0.512695 -11.2637 0.512695c-33.7917 0 -62.0371 -12.6296 -84.7363 -37.8887
+c-22.6986 -25.2585 -32.1706 -54.7835 -28.416 -88.5752c-0.682292 3.07161 -1.02344 7.85026 -1.02344 14.3359c0 15.0182 2.5599 28.1595 7.67969 39.4238l-104.448 102.912l101.377 -174.592c6.48503 -24.5762 20.0527 -44.6296 40.7031 -60.1602
+c20.651 -15.5306 43.6058 -23.2959 68.8643 -23.2959c5.80273 0 11.4349 0.511719 16.8965 1.53516l-33.792 -141.312c-39.2533 0 -77.3122 12.1172 -114.177 36.3516c-36.8639 24.235 -66.7305 54.2725 -89.5996 90.1123c-22.528 34.8164 -33.792 74.0697 -33.792 117.76z
+M159.744 189.952c0 25.9414 9.21582 48.2132 27.6475 66.8154c18.4323 18.6029 40.7897 27.9043 67.0723 27.9043c26.2826 0 48.64 -9.30143 67.0723 -27.9043c18.4316 -18.6022 27.6475 -40.874 27.6475 -66.8154c0 -26.2826 -9.30111 -48.7253 -27.9033 -67.3281
+c-18.6029 -18.6029 -40.875 -27.9043 -66.8164 -27.9043s-48.2132 9.30143 -66.8154 27.9043c-18.6029 18.6029 -27.9043 41.0456 -27.9043 67.3281z" />
+ <glyph glyph-name="uniF13B" unicode=""
+d="M-20.0479 29.1836v179.2h71.6797v-105.983h412.16v105.983h72.208v-179.2h-556.048z" />
+ <glyph glyph-name="uniF108" unicode=""
+d="M7.67969 252.416c11.2643 45.056 32.6829 83.8828 64.2559 116.48c31.5736 32.597 69.2057 55.2103 112.896 67.8398c43.6908 12.6289 88.0641 13.3115 133.12 2.04785c45.056 -11.2643 83.8825 -32.6829 116.479 -64.2559
+c32.5977 -31.5736 55.2113 -69.2057 67.8408 -112.896c12.6289 -43.6908 13.3115 -88.0641 2.04785 -133.12c-11.2643 -45.056 -32.6829 -83.8825 -64.2559 -116.479c-31.5736 -32.5977 -69.2057 -55.2109 -112.896 -67.8398
+c-43.6908 -12.6296 -88.0641 -13.3125 -133.12 -2.04883c-45.056 11.2643 -83.8825 32.6833 -116.479 64.2568c-32.5977 31.5729 -55.2113 69.2048 -67.8408 112.896c-12.6289 43.6908 -13.3115 88.0641 -2.04785 133.12zM124.416 113.664l36.8643 -9.21582
+c2.38932 -0.341797 5.80241 -1.19531 10.2393 -2.56055c4.4375 -1.36523 7.68034 -2.21842 9.72852 -2.55957l-11.7764 -46.5918l28.1602 -7.16797l11.2646 46.0801c2.04753 -0.682943 5.63151 -1.62174 10.752 -2.81641
+c5.11979 -1.19466 9.04492 -2.13346 11.7754 -2.81641l-11.2637 -46.0801l28.1602 -6.65527l11.2637 46.5918c16.3841 -2.73047 30.9762 -4.01042 43.7764 -3.83984c12.7995 0.170573 24.0635 3.66927 33.792 10.4961c9.72786 6.82617 16.9811 17.2367 21.7598 31.2314
+c10.9225 30.7201 2.21842 53.4189 -26.1123 68.0967c20.4798 4.43685 32.4264 18.0902 35.8398 40.96c4.4375 29.3542 -14.3356 50.8581 -56.3193 64.5117l11.7754 46.5918l-28.1602 6.65625l-11.2637 -45.0566c-2.73047 0.682943 -6.6556 1.62174 -11.7754 2.81641
+c-5.12044 1.19466 -8.70475 2.13346 -10.7529 2.81641l11.2646 45.0557l-28.1602 7.16797l-11.2637 -46.0801c-5.12044 0.682943 -11.0938 2.04818 -17.9199 4.0957l-38.9121 9.72852l-7.16797 -30.208l19.9678 -4.6084c9.55729 -2.38932 13.9945 -7.85059 13.3115 -16.3838
+l-13.3115 -52.7363c0.682292 0 1.70638 -0.341146 3.07227 -1.02344c-0.341797 0.341146 -0.853841 0.511719 -1.53613 0.511719c-0.682943 0 -1.19499 0.170573 -1.53613 0.511719l-18.4326 -73.7275c-1.70638 -6.14388 -5.97298 -8.36263 -12.7998 -6.65625
+l-20.4795 5.12012zM218.112 125.44l15.3594 61.9512c0.341797 0 3.66992 -0.682617 9.98438 -2.04785s11.0931 -2.5599 14.3359 -3.58398c3.24284 -1.02409 8.02148 -2.5599 14.3359 -4.60742c6.31445 -2.04818 11.1784 -4.26693 14.5918 -6.65625
+s6.9974 -5.2054 10.752 -8.44824s6.22949 -6.9974 7.4248 -11.2637c1.19466 -4.26693 1.10905 -8.96029 -0.256836 -14.0801c-1.02409 -3.75456 -2.5599 -6.9974 -4.60742 -9.72852c-2.04818 -2.73047 -4.6084 -4.77832 -7.68066 -6.14355
+c-3.07161 -1.36523 -6.22884 -2.5599 -9.47168 -3.58398s-7.16829 -1.45085 -11.7764 -1.28027c-4.60742 0.170573 -8.61784 0.426758 -12.0312 0.768555c-3.41341 0.341146 -7.50944 1.02376 -12.2881 2.04785s-8.44792 1.79199 -11.0078 2.30371
+c-2.56055 0.51237 -5.88867 1.28027 -9.98438 2.30371c-4.0957 1.02409 -6.6556 1.70703 -7.67969 2.04883zM240.64 215.552l13.8242 56.3203c1.02409 -0.341146 3.15755 -0.85319 6.40039 -1.53613c3.24219 -0.682943 6.05794 -1.28027 8.44727 -1.79199
+c2.38997 -0.511719 5.46224 -1.36491 9.2168 -2.55957s6.99707 -2.30404 9.72754 -3.32812s5.80241 -2.47493 9.21582 -4.35254c3.41341 -1.87695 5.97363 -3.75423 7.68066 -5.63184c1.70638 -1.87695 3.66895 -4.18099 5.8877 -6.91211
+c2.21875 -2.73047 3.24284 -5.54655 3.07227 -8.44824c-0.170573 -2.90104 -0.426758 -6.22884 -0.768555 -9.9834c-1.02409 -4.4375 -2.81608 -8.10677 -5.37598 -11.0078c-2.5599 -2.90169 -5.80241 -4.86458 -9.72754 -5.88867
+c-3.92578 -1.02344 -7.76595 -1.79134 -11.5205 -2.30371c-3.75456 -0.511719 -8.27702 -0.341146 -13.5674 0.511719c-5.29102 0.853516 -9.38704 1.53646 -12.2881 2.04883c-2.90169 0.511719 -6.82715 1.4502 -11.7764 2.81543s-7.7653 2.04785 -8.44824 2.04785z" />
+ <glyph glyph-name="uniF10C" unicode=""
+d="M47.3281 325.632c0.671875 5.80859 3.24805 11.2646 7.67969 16.3838l61.4404 61.4404c4.78418 4.0957 8.36816 3.4082 10.752 -2.04785l49.6641 -93.1846c2.73535 -5.45605 1.87207 -10.752 -2.56055 -15.8721l-22.5273 -22.5273
+c-4.09668 -4.09668 -6.48047 -9.39258 -7.16797 -15.8721c0 -10.2402 5.2959 -23.376 15.8721 -39.4238c10.5752 -16.0479 20.9912 -29.6963 31.2314 -40.9766l15.8721 -16.3682c4.78418 -4.7832 10.9121 -10.6719 18.4482 -17.6641
+c7.50391 -6.99121 19.8721 -16.208 37.1035 -27.6475c17.2324 -11.4404 30.8164 -17.1523 40.7041 -17.1523c6.48047 0 11.9521 2.22461 16.3838 6.65625l26.6406 26.624c4.78418 4.78418 9.8877 5.47168 15.3438 2.04785l89.6162 -52.7363
+c2.38379 -1.37598 3.75977 -3.15137 4.0957 -5.37598c0.335938 -2.22363 -0.335938 -4.19141 -2.04785 -5.8877l-61.4404 -61.4395c-5.12012 -4.43262 -10.5918 -7.00879 -16.3672 -7.66406c-16.7363 -2.40039 -35.6006 -0.0966797 -56.5928 6.91211
+c-20.9912 7.00781 -40.4316 16.3037 -58.3516 27.9033c-17.9199 11.6006 -34.5605 23.376 -49.9199 35.3125c-15.3604 11.9521 -27.6484 22.1914 -36.8643 30.7197l-13.3115 12.8164c-3.4082 3.40723 -7.93652 8.0957 -13.5684 14.0801
+c-5.63184 5.9834 -15.4717 17.7275 -29.4717 35.3115s-26.1123 34.7363 -36.3525 51.4561s-19.1035 35.7598 -26.624 57.0879c-7.50391 21.3281 -10.0635 40.3682 -7.67969 57.0879z" />
+ <glyph glyph-name="uniF133" unicode=""
+d="M-0.255859 390.144c-0.170573 3.75521 0.853516 7.25391 3.07227 10.4961c2.2181 3.24284 4.52181 6.05892 6.91113 8.44824s6.40007 5.03483 12.0322 7.93652c5.63216 2.90104 10.2402 5.11947 13.8242 6.65527c3.58398 1.53646 9.21615 3.92578 16.8965 7.16797
+c7.67969 3.24284 13.5674 5.71777 17.6631 7.4248c18.4323 7.50911 34.987 10.2396 49.6641 8.19141c14.6777 -2.04818 23.8939 -8.02148 27.6484 -17.9199c8.5332 -22.8691 26.0264 -77.3971 52.4795 -163.584c26.4538 -86.1868 46.166 -147.883 59.1367 -185.088
+c91.4772 30.0371 147.115 47.957 166.912 53.7598c5.46094 2.04818 11.8607 2.73079 19.1992 2.04785c7.33919 -0.682292 12.8861 -4.60742 16.6406 -11.7754c7.85026 -16.043 13.3968 -32.8538 16.6396 -50.4326s3.32812 -30.2933 0.255859 -38.1436
+c-6.48503 -5.11979 -16.6396 -10.5811 -30.4639 -16.3838s-26.7096 -10.7523 -38.6562 -14.8486c-11.9466 -4.0957 -27.221 -9.04492 -45.8232 -14.8477c-18.6029 -5.80273 -31.1471 -9.72819 -37.6328 -11.7764c-3.41276 -1.02409 -9.89779 -3.24251 -19.4551 -6.65527
+c-9.55794 -3.41341 -18.6035 -6.57096 -27.1367 -9.47266c-8.5332 -2.90104 -18.4316 -6.14355 -29.6953 -9.72754c-11.2643 -3.58398 -21.6751 -6.57064 -31.2324 -8.95996s-18.7734 -4.35221 -27.6484 -5.88867c-8.87435 -1.53581 -16.4688 -2.13314 -22.7832 -1.79199
+c-6.3151 0.341797 -10.6673 1.87793 -13.0566 4.6084c-6.14388 6.14388 -11.6051 15.0186 -16.3838 26.624s-9.72786 26.4535 -14.8477 44.5439c-5.12044 18.0905 -8.36328 29.3545 -9.72852 33.792c-14.3359 42.6667 -33.6211 100.438 -57.8555 173.312
+c-24.235 72.8743 -41.9844 126.208 -53.248 160c-2.04818 4.43685 -3.15755 8.53255 -3.32812 12.2871z" />
+ <glyph glyph-name="uniF110" unicode=""
+d="M0 192c0 33.4505 6.48535 66.0479 19.4561 97.792c12.6296 30.7201 31.403 58.5387 56.3203 83.4561c49.1517 49.8346 109.056 74.752 179.712 74.752c71.3385 0 132.267 -24.9173 182.784 -74.752c24.2344 -24.2344 42.4954 -51.8825 54.7832 -82.9443
+c12.6296 -30.3783 18.9443 -63.1462 18.9443 -98.3037c0 -35.4987 -6.14388 -68.2666 -18.4316 -98.3037c-12.2884 -30.3789 -30.5498 -57.515 -54.7842 -81.4082c-25.2585 -24.5762 -53.5892 -43.5202 -84.9922 -56.832
+c-32.0853 -12.9707 -64.8532 -19.4561 -98.3037 -19.4561c-33.1094 0 -65.5361 6.48535 -97.2803 19.4561c-30.3789 12.6296 -58.027 31.403 -82.9443 56.3203c-24.9173 24.9173 -43.6904 52.5651 -56.3193 82.9434c-12.6296 30.3789 -18.9443 62.8057 -18.9443 97.2803z
+M46.0801 192c0 -26.9655 5.46126 -53.4189 16.3838 -79.3604c10.5814 -25.5996 26.112 -48.2982 46.5918 -68.0957c20.4805 -20.4798 43.1794 -35.6693 68.0967 -45.5684c24.5755 -10.5814 51.0286 -15.8721 79.3594 -15.8721c27.6484 0 54.2725 5.29069 79.8721 15.8721
+c25.2591 10.5814 48.4697 25.9414 69.6318 46.0801c39.9362 38.9121 59.9043 87.8936 59.9043 146.944c0 29.013 -5.29069 55.8076 -15.8721 80.3838c-10.2396 25.9414 -25.2581 48.4694 -45.0557 67.584c-40.9603 41.3014 -90.4538 61.9521 -148.48 61.9521
+c-58.3678 0 -107.52 -20.4798 -147.456 -61.4395c-20.1387 -20.1387 -35.6693 -43.0081 -46.5918 -68.6084c-10.9225 -25.9414 -16.3838 -52.5654 -16.3838 -79.8721zM110.08 192c0 24.2344 7.16797 43.5199 21.5039 57.8564
+c13.9948 14.3359 31.9147 21.5039 53.7598 21.5039c31.403 0 54.1019 -12.2881 68.0967 -36.8643l-34.3047 -17.9199c-3.75456 8.19206 -8.36263 13.4827 -13.8242 15.8721c-5.11979 3.07161 -10.069 4.60742 -14.8477 4.60742
+c-22.8691 0 -34.3037 -15.0186 -34.3037 -45.0557c0 -13.3118 2.90137 -24.2344 8.7041 -32.7676c6.14388 -8.19206 14.6771 -12.2881 25.5996 -12.2881c15.0189 0 25.6003 7.16797 31.7441 21.5039l31.7441 -15.8721
+c-7.16797 -12.2884 -16.5547 -22.0166 -28.1602 -29.1846c-11.9466 -7.16797 -25.0879 -10.752 -39.4238 -10.752c-22.8691 0 -41.3011 6.9974 -55.2959 20.9922c-13.9948 13.9948 -20.9922 33.4508 -20.9922 58.3682zM258.048 192
+c0 24.2344 7.16797 43.5199 21.5039 57.8564c14.3359 14.3359 32.2559 21.5039 53.7598 21.5039c31.7441 0 54.2725 -12.2881 67.585 -36.8643l-33.793 -17.9199c-3.75456 7.85026 -8.19173 13.141 -13.3115 15.8721c-5.80273 3.07161 -10.9229 4.60742 -15.3604 4.60742
+c-22.8691 0 -34.3037 -15.0186 -34.3037 -45.0557c0 -13.9948 2.90137 -24.9173 8.7041 -32.7676c5.80273 -8.19206 14.3359 -12.2881 25.5996 -12.2881c14.6777 0 25.0885 7.16797 31.2324 21.5039l32.2559 -15.8721
+c-7.50911 -12.6296 -17.0664 -22.3577 -28.6719 -29.1846c-11.9466 -7.16797 -24.7467 -10.752 -38.4004 -10.752c-23.5521 0 -42.1546 6.9974 -55.8076 20.9922c-13.9948 13.9948 -20.9922 33.4508 -20.9922 58.3682z" />
+ <glyph glyph-name="uniF15E" unicode=""
+d="M0 191.488c0 46.4212 11.4346 89.2585 34.3037 128.512c22.8698 39.2533 53.9313 70.3145 93.1846 93.1836c39.2533 22.8698 82.0905 34.3047 128.512 34.3047c46.4212 0 89.2585 -11.4349 128.512 -34.3047c39.2533 -22.8691 70.3148 -53.9303 93.1846 -93.1836
+c22.8691 -39.2533 34.3037 -82.0905 34.3037 -128.512s-11.4346 -89.2588 -34.3037 -128.513c-22.8698 -39.2533 -53.9313 -70.3145 -93.1846 -93.1836s-82.0905 -34.3037 -128.512 -34.3037c-46.4212 0 -89.2585 11.4346 -128.512 34.3037
+s-70.3148 53.9303 -93.1846 93.1836c-22.8691 39.2539 -34.3037 82.0915 -34.3037 128.513zM19.9678 191.488c0 -46.0801 12.2028 -88.2347 36.6084 -126.464c24.4049 -38.2298 56.5755 -66.902 96.5117 -86.0166l-112.64 308.736
+c-13.6536 -30.3789 -20.4805 -62.4642 -20.4805 -96.2559zM58.3682 321.024h15.3594c16.3841 0 37.3763 1.02376 62.9766 3.07129c4.0957 0.341797 7.08236 -1.02344 8.95996 -4.0957s2.13346 -6.31478 0.767578 -9.72754
+c-1.36523 -3.41341 -4.0957 -5.29102 -8.19141 -5.63281l-27.1367 -2.55957l86.0166 -255.488l51.7119 154.624l-36.8643 100.864c-8.19206 1.02409 -16.3841 1.87728 -24.5762 2.55957c-4.0957 0.341797 -6.82617 2.2194 -8.19141 5.63281
+c-1.36523 3.41276 -1.10938 6.65527 0.767578 9.72754c1.8776 3.07227 4.86426 4.4375 8.95996 4.0957l61.9521 -3.07129c16.7253 0 37.7174 1.02376 62.9766 3.07129c4.0957 0.341797 7.08236 -1.02344 8.95996 -4.0957
+c1.87695 -3.07227 2.13281 -6.31478 0.767578 -9.72754c-1.36523 -3.41341 -4.09603 -5.29102 -8.19238 -5.63281l-26.624 -2.55957l84.9922 -253.952l23.5518 78.8477c12.2884 39.9362 18.4326 65.3656 18.4326 76.2881c0 21.8457 -6.65592 43.6911 -19.9678 65.5361
+c-0.682943 1.02409 -2.81641 4.60807 -6.40039 10.752s-5.88802 10.1546 -6.91211 12.0322s-2.5599 5.12012 -4.60742 9.72754c-2.04818 4.60807 -3.41374 8.61882 -4.09668 12.0322c-0.682292 3.41341 -1.02344 6.9974 -1.02344 10.752
+c0 11.2643 3.83984 21.0778 11.5195 29.4404c7.68034 8.36263 17.1523 12.5439 28.416 12.5439c0.341146 0 0.85319 -0.0852865 1.53613 -0.255859s1.19499 -0.255859 1.53613 -0.255859c-44.7148 41.3008 -97.9629 61.9512 -159.744 61.9512
+c-40.6185 0 -78.3359 -9.55729 -113.152 -28.6719c-34.8158 -19.1146 -62.9756 -45.0557 -84.4795 -77.8232zM189.44 -35.3281c21.1621 -6.14388 43.3486 -9.21582 66.5596 -9.21582c27.3066 0 53.4186 4.43717 78.3359 13.3115l-1.53613 3.07227l-72.7041 199.168z
+M374.784 -12.7998c35.8398 20.821 64.3411 49.4076 85.5039 85.7598c21.1628 36.3522 31.7441 75.8617 31.7441 118.528c0 40.9596 -9.55729 78.6768 -28.6719 113.151c1.02409 -7.16797 1.53613 -15.1891 1.53613 -24.0635c0 -21.5039 -5.97363 -49.6641 -17.9209 -84.4805
+z" />
+ <glyph glyph-name="uniF120" unicode=""
+d="M0 -6.14355v263.168c0 61.0983 14.4212 108.544 43.2637 142.336c28.8431 33.7917 73.1312 50.6875 132.864 50.6875h280.576c-1.70703 -1.70638 -10.667 -10.7516 -26.8799 -27.1357c-16.2135 -16.3841 -33.2803 -33.6214 -51.2002 -51.7119
+s-36.5225 -36.7786 -55.8076 -56.0645c-19.2858 -19.2852 -35.4993 -35.1572 -48.6406 -47.6162c-13.1413 -12.4583 -20.224 -18.6875 -21.248 -18.6875c-5.11979 0 -7.67969 2.73079 -7.67969 8.19238v79.8721h-24.5762c-20.1387 0 -36.2666 -1.10938 -48.3838 -3.32812
+s-22.8691 -6.65625 -32.2559 -13.3125c-9.38672 -6.6556 -16.0426 -16.2982 -19.9678 -28.9277c-3.92578 -12.6296 -5.88867 -29.0137 -5.88867 -49.1523v-134.144zM34.3037 -66.0479c1.70703 1.70638 10.667 10.7516 26.8799 27.1357
+c16.2135 16.3841 33.2803 33.6214 51.2002 51.7119s36.5228 36.7786 55.8086 56.0645c19.2852 19.2852 35.4984 35.1572 48.6396 47.6162c13.1413 12.4583 20.224 18.6875 21.248 18.6875c5.11979 0 7.67969 -2.73079 7.67969 -8.19238v-79.8721h24.5762
+c39.5944 0 67.1572 6.05892 82.6885 18.1768c15.5306 12.1172 23.2959 37.6318 23.2959 76.5439v134.144l114.688 114.176v-263.168c0 -61.0983 -14.4212 -108.544 -43.2637 -142.336c-28.8424 -33.7917 -73.1305 -50.6875 -132.864 -50.6875h-280.576z" />
+ <glyph glyph-name="uniF140" unicode=""
+d="M0 282.112l161.792 165.376v-62.9766l154.112 -141.823l95.7441 23.5518l-99.8408 -106.496l200.192 -224.256l-227.328 200.704l-96.2559 -98.3047l15.3604 86.5283l-130.561 161.792z" />
+ <glyph glyph-name="uniF13F" unicode=""
+d="M0 -8.7041l99.3281 456.192h224.256c17.0664 0 33.5358 -3.07194 49.4082 -9.21582c15.8717 -6.14453 30.293 -15.6165 43.2637 -28.416c12.9707 -12.8001 21.9307 -28.9284 26.8799 -48.3848c4.94922 -19.4557 4.86393 -42.4958 -0.255859 -69.1201
+c-9.89844 -46.4212 -31.8291 -82.9437 -65.792 -109.567c-33.9629 -26.6243 -73.8135 -39.9365 -119.552 -39.9365h-93.6963l-32.2559 -151.552h-131.584zM51.2002 -64.5117l5.63184 25.0879h110.592l32.2559 151.04h93.6963c45.7389 0 85.5895 13.3118 119.552 39.9355
+c33.9629 26.6243 55.8936 63.1471 65.792 109.568c7.16797 32.7682 5.12012 61.7816 -6.14355 87.04c24.2344 -28.6719 31.5729 -66.0479 22.0156 -112.128c-10.2396 -46.4212 -32.2555 -82.944 -66.0479 -109.568c-33.7917 -26.6237 -73.557 -39.9355 -119.296 -39.9355
+h-94.208l-32.2559 -151.04h-131.584zM182.784 229.888h42.4961l21.5039 93.6963h64c0.682292 0 3.58366 -0.512044 8.7041 -1.53613c-2.73112 9.89909 -8.1071 17.8353 -16.1279 23.8086c-8.02148 5.97331 -17.4935 8.95996 -28.416 8.95996h-64zM246.784 230.4
+c16.3841 0.682292 31.6589 6.99674 45.8242 18.9434c14.1654 11.9466 23.1253 26.2826 26.8799 43.0078c0 0.682943 0.170573 1.70703 0.511719 3.07227s0.511719 2.38932 0.511719 3.07227h-58.3682z" />
+ <glyph glyph-name="uniF160" unicode=""
+d="M-96 392.192v4.0957c0.671875 2.04785 2.38379 3.24805 5.12012 3.58398h251.904c0.6875 0 1.37598 -0.335938 2.04785 -1.02441c0.6875 -0.6875 1.02344 -1.53613 1.02344 -2.55957v-7.16797c0 -1.69629 -0.416016 -3.24805 -1.2793 -4.6084
+c-0.864258 -1.35938 -1.63281 -2.22363 -2.30469 -2.55957c-0.6875 -0.335938 -1.2002 -0.511719 -1.53613 -0.511719l-34.8154 -10.752c-3.07227 -1.69629 -6.83203 -2.38477 -11.2637 -2.04883h-20.9922l116.735 -148.991l105.984 99.8398h-58.8799l-9.21582 3.58398
+l-11.7764 11.7754l-1.02441 2.04883c-1.02344 1.02344 -1.96777 2.63965 -2.81543 4.86328c-0.847656 2.22461 -1.10449 4.35254 -0.768555 6.40039l3.58398 3.07227h224.24c0.352539 0 0.864258 -0.256836 1.55176 -0.768555
+c0.672852 -0.511719 1.2002 -1.28027 1.53613 -2.30371v-7.2002c0 -3.75977 -1.02344 -6.83203 -3.07129 -9.21582l-8.7041 -9.72852c-3.05664 -2.38379 -6.16016 -3.58398 -9.21582 -3.58398h-68.0967c-86.3516 -81.2158 -131.408 -123.728 -135.168 -127.472
+l-1.53613 -1.55176c-1.02344 -1.02441 -1.95215 -2.22461 -2.81543 -3.58398c-0.848633 -1.37598 -1.10449 -2.57617 -0.768555 -3.60059v-103.424c0 -5.10352 1.53613 -7.66406 4.6084 -7.66406h74.7363c0.6875 0 1.47168 -0.335938 2.31934 -1.02344
+c0.848633 -0.688477 1.28027 -1.53613 1.28027 -2.56055v-29.1836h-264.192v28.1758c0 3.07227 1.71191 4.6084 5.12012 4.6084c10.2402 1.02344 34.4639 1.53613 72.7041 1.53613h1.53613c1.02441 0.335938 1.96777 1.18359 2.81641 2.55957
+c0.847656 1.36035 1.2793 3.4082 1.2793 6.14355v98.3047c0 4.44727 -1.8877 8.71973 -5.63184 12.8154l-146.944 176.128h-56.8311l-9.72852 5.12012l-1.02441 1.02441c-0.6875 0.335938 -1.63184 1.18359 -2.81543 2.55957
+c-1.18457 1.37598 -2.48047 3.07227 -3.83984 5.12012zM513.28 448l94.7197 -3.58398l-42.4961 -290.304l-31.2158 1.53613zM519.936 57.3438l2.04883 56.3359l56.3359 -2.06348l-2.06445 -56.3203z" />
+ <glyph glyph-name="uniF12F" unicode=""
+d="M133.632 -47.6318c34.7998 2.06348 56.9922 6.65625 66.5605 13.8398c10.2559 7.15234 15.376 25.4238 15.376 54.7842v340.992c0 28 -5.12012 46.0801 -15.376 54.2715c-9.56836 7.85645 -31.7441 12.624 -66.5605 14.3359v14.3359h250.368v-14.3359
+c-34.8164 -1.35938 -57.168 -6.14355 -67.0557 -14.3359c-10.2559 -8.19141 -15.376 -26.2881 -15.376 -54.2715v-340.992c0 -29.3604 5.12012 -47.6318 15.376 -54.7842c10.2393 -7.18359 32.5918 -11.7764 67.0557 -13.8398v-14.3359h-250.368v14.3359z" />
+ <glyph glyph-name="uniF161" unicode=""
+d="M18.4961 439.808h82.4316l100.864 -154.111c16.7197 -25.6006 34.1279 -54.6084 52.2402 -87.04c16.3682 29.0078 34.9756 59.2158 55.792 90.624l99.3281 150.527h78.8477l-204.288 -294.896v-217.088h-68.0957v217.088z" />
+ <glyph glyph-name="uniF112" unicode=""
+d="M-30.4639 54.7842v190.464c0 4.43164 2.22363 6.65625 6.65625 6.65625h90.1113v66.0479c0 4.78418 2.22461 7.16797 6.65625 7.16797h50.1758v-263.168c0 -4.78418 -2.04785 -7.16797 -6.14355 -7.16797h-147.456zM25.3438 97.2803h34.3047
+c4.43164 0 6.65527 2.38379 6.65527 7.15137v105.488h-34.3037c-4.43164 0 -6.65625 -2.38379 -6.65625 -7.16797v-105.472zM140.544 54.7842v190.464c0 4.43164 2.22363 6.65625 6.65625 6.65625h50.1758v-189.952c0 -4.78418 -2.04785 -7.16797 -6.14355 -7.16797
+h-50.6885zM140.544 282.624v35.3281c0 4.78418 2.04785 7.16797 6.14453 7.16797h50.6875v-35.3281c0 -4.76758 -2.04785 -7.16797 -6.14355 -7.16797h-50.6885zM216.832 54.7842v190.464c0 4.43164 2.22363 6.65625 6.65625 6.65625h147.472v-258.048
+c0 -4.43262 -2.22363 -6.65625 -6.65625 -6.65625h-147.472l0.511719 35.3281c0 4.7832 2.04785 7.15137 6.14453 7.15137h90.1279v25.0879h-96.7842v0.0166016zM273.136 97.2803h34.3203c4.0957 0 6.16016 2.38379 6.16016 7.15137v105.488h-34.3203
+c-4.0957 0 -6.16016 -2.38379 -6.16016 -7.16797v-105.472zM390.384 22.5283c0 4.7832 2.22461 7.15137 6.65625 7.15137h90.1279v25.0879h-96.7842v190.48c0 4.43164 2.22461 6.65625 6.65625 6.65625h146.96v-258.048c0 -4.43262 -2.04785 -6.65625 -6.14355 -6.65625
+h-147.473v35.3281zM446.208 97.2803h34.3203c4.43164 0 6.65527 2.38379 6.65527 7.15137v105.488h-34.3193c-4.43262 0 -6.65625 -2.38379 -6.65625 -7.16797v-105.472z" />
+ <glyph glyph-name="uniF103" unicode=""
+d="M81.4082 72.1924c0 21.5039 4.76758 38.2393 14.3359 50.1914c7.85547 10.5762 20.4795 18.2559 37.8877 23.0244c-5.45605 13.6475 -8.19141 23.7119 -8.19141 30.2236c0 11.2646 5.96777 23.2002 17.9199 35.8242c12.6396 11.9521 24.3994 17.9199 35.3281 17.9199
+c5.80762 0 12.623 -1.53613 20.4795 -4.6084c-16.3838 46.7686 -28.1602 82.2725 -35.3281 106.496c-8.19141 27.6484 -12.2881 47.2803 -12.2881 58.8799c0 16.3848 4.09668 29.1846 12.2881 38.4004c8.52832 9.55176 19.9678 14.3359 34.3203 14.3359
+c24.5596 0 54.0957 -50.3516 88.5596 -151.04l8.7207 -25.0879c2.03125 5.12012 4.0957 10.752 6.12793 16.8965c34.1436 99.6631 64.8633 149.504 92.1758 149.504c13.6475 0 24.3838 -4.6084 32.2559 -13.8242c8.20801 -9.21582 12.3037 -21.168 12.3037 -35.8398
+c0 -9.55273 -4.0957 -28.832 -12.3037 -57.8564c-7.16797 -24.9121 -18.416 -59.0557 -33.792 -102.399c19.4717 -4.78418 33.4717 -14 42 -27.6484c9.2002 -14.6719 13.792 -37.3604 13.792 -68.0957c0 -60.752 -18.0957 -110.416 -54.2725 -148.992
+c-36.8633 -38.5762 -83.6475 -57.8564 -140.304 -57.8564c-22.5273 0 -44.1914 4.09668 -65.0078 12.3047c-20.1436 7.15137 -38.4004 18.416 -54.7842 33.7754c-17.4082 16.3682 -30.3682 33.2803 -38.9121 50.6885c-8.86328 18.4316 -13.3115 36.6875 -13.3115 54.7842z
+M114.688 74.752c0 -8.52832 2.38379 -18.5918 7.16797 -30.208c4.43164 -10.9277 11.0879 -22.3516 19.9678 -34.3037c14 -18.0967 30.5439 -31.9199 49.6641 -41.4883c19.4395 -9.55176 41.4717 -14.3359 66.0312 -14.3359c44.0322 0 81.0723 16.5439 111.104 49.6641
+c29.6963 32.7842 44.5439 74.2559 44.5439 124.416c0 15.6963 -1.02441 27.8076 -3.05566 36.3516c-1.71191 7.50391 -4.97656 13.2959 -9.72852 17.4082c-9.21582 7.83984 -27.3115 14.6719 -54.2715 20.4639c-26.9766 6.14453 -55.6641 9.21582 -86.0322 9.21582
+c-7.50391 0 -12.2881 -1.02344 -14.3359 -3.07129c-2.38379 -1.02441 -3.58398 -4.43262 -3.58398 -10.2402c0 -14 7.83984 -23.8877 23.5518 -29.6797c17.0557 -7.18457 45.2324 -10.752 84.4805 -10.752h14.3359c5.45605 0 9.3916 -1.88867 11.7598 -5.64844
+c2.75195 -2.73633 4.62402 -8.01562 5.64746 -15.8721c-5.79199 -5.79199 -15.1836 -11.0879 -28.1592 -15.8721c-12.3047 -4.43164 -21.3281 -8.87988 -27.1367 -13.3115c-13.6641 -9.88867 -24.5596 -21.6641 -32.7676 -35.3281
+c-7.85645 -13.3125 -11.7598 -25.9365 -11.7598 -37.8721c0 -7.18457 1.67969 -15.8721 5.10352 -26.1279c3.75977 -11.248 5.64844 -18.5918 5.64844 -22.0166v-3.07129l-2.06445 -7.66406c-15.0078 1.00781 -25.9355 8.01562 -32.752 20.9922
+c-5.80762 10.9434 -9.05566 24.9434 -9.74414 42c-1.00781 -0.335938 -3.05566 -0.512695 -6.12793 -0.512695h-5.64746c0.335938 -1.69531 0.511719 -3.75977 0.511719 -6.14355c0 -10.2559 -3.93652 -18.96 -11.7764 -26.1279
+c-7.83984 -7.15234 -17.0557 -10.752 -27.6641 -10.752c-16.0312 0 -32.2393 7.67969 -48.6396 23.04c-16.3516 15.7275 -24.5439 31.0879 -24.5439 46.0957c0 2.73633 0.511719 5.47168 1.53613 8.19238c0.335938 2.38379 3.07227 6.15918 8.19141 11.2637
+c8.52832 -10.5762 14.3369 -17.9199 17.4082 -22.0156c14.3359 -20.1289 27.3125 -30.208 38.9121 -30.208c3.05566 0 5.96777 1.00781 8.7041 3.07129c2.04785 2.03223 3.07227 3.74414 3.07227 5.10449c0 2.73535 -2.06445 7.66406 -6.16016 14.8643
+c-2.71973 5.10352 -9.02441 14.1592 -18.9443 27.1191c-9.55176 12.2881 -17.248 20.8164 -23.04 25.6006c-5.12012 4.78418 -8.87988 7.16797 -11.2637 7.16797c-6.48047 0 -12.7998 -3.74414 -18.9443 -11.2637c-6.12793 -7.48828 -9.19922 -16.8809 -9.19922 -28.1445z
+M160.768 172.544c0 -4.43164 2.7207 -12.1123 8.19238 -23.04c4.78418 -9.21582 12.4639 -20.8154 23.04 -34.8154c10.5918 -13.6641 20.1436 -24.2402 28.6719 -31.7441c8.20801 -6.81641 14.3359 -10.2402 18.4316 -10.2402c2.38477 0 4.76855 1.2002 7.16895 3.58398
+c2.36719 2.73633 3.58398 5.47168 3.58398 8.20801c0 4.0957 -3.07227 13.9844 -9.2168 29.6797c-7.16797 17.4238 -15.0078 33.1045 -23.5518 47.1045c-7.51953 11.9355 -14.1602 20.3193 -19.9678 25.0879c-5.47168 5.12012 -10.752 7.67969 -15.8721 7.67969
+c-3.74414 0 -8.01562 -2.55957 -12.7998 -7.67969c-5.12012 -5.12012 -7.68066 -9.72852 -7.68066 -13.8242zM183.808 393.728c0 -11.5996 4.09668 -29.8711 12.2881 -54.7832c7.52051 -24.2402 18.7842 -56.6719 33.792 -97.2803
+c3.42383 2.04785 8.20801 3.07227 14.3359 3.07227c0.335938 0 1.47266 -0.0800781 3.34473 -0.255859c1.87207 -0.176758 3.66406 -0.256836 5.37598 -0.256836c1.35938 0 5.79199 -0.335938 13.3115 -1.02344l-35.3438 102.399
+c-9.55176 27.3125 -17.0557 45.0566 -22.5117 53.248c-4.44824 7.16797 -8.88086 10.752 -13.3281 10.752c-3.07227 0 -5.63184 -1.35938 -7.66406 -4.0957c-2.41602 -3.07227 -3.60059 -6.99219 -3.60059 -11.7764zM268.816 132.608
+c3.05566 -7.85645 6.31934 -16.3848 9.71191 -25.6162c6.83203 7.85547 13.6641 14.3359 20.4639 19.4717c-1.68066 0.335938 -4.25586 0.768555 -7.66406 1.28027c-3.42383 0.496094 -5.96777 0.944336 -7.66406 1.28027c-6.83203 1.35938 -11.792 2.5752 -14.8477 3.58398
+zM322.56 237.056l34.3203 -6.14355c15.3438 42.3203 27.1201 76.2881 35.3125 101.888c8.52734 27.6484 12.8154 44.0322 12.8154 49.1523c0 5.45605 -1.2002 9.72754 -3.59961 12.7998c-1.36035 2.38379 -3.91992 3.58398 -7.66406 3.58398
+c-4.78418 0 -10.0801 -4.6084 -15.8721 -13.8242c-6.49609 -9.90332 -13.8398 -27.1357 -22.0322 -51.7119z" />
+ <glyph glyph-name="uniF14A" unicode=""
+d="M0 4.6084c0 18.7728 6.65592 34.8154 19.9678 48.1279c13.3118 13.3118 29.3545 19.9678 48.1279 19.9678s34.8161 -6.65592 48.1279 -19.9678c13.3125 -13.3125 19.9688 -29.3551 19.9688 -48.1279c0 -19.1152 -6.65625 -35.2435 -19.9688 -48.3848
+c-13.3118 -13.1413 -29.3545 -19.7119 -48.1279 -19.7119s-34.8161 6.65625 -48.1279 19.9688c-13.3118 13.3118 -19.9678 29.3545 -19.9678 48.1279zM0 176.128v97.792c61.099 0 117.59 -15.1038 169.472 -45.3115c51.8828 -30.2083 92.9284 -71.2539 123.137 -123.137
+c30.2077 -51.8822 45.3115 -108.373 45.3115 -169.472h-98.3037c0 66.2188 -23.3815 122.709 -70.1445 169.472c-47.1035 47.1042 -103.594 70.6562 -169.472 70.6562zM0 349.696v98.3037c69.2904 0 135.509 -13.568 198.656 -40.7041
+c63.1465 -27.1361 117.589 -63.5732 163.328 -109.312c45.7383 -45.7389 82.1755 -100.182 109.312 -163.328c27.1361 -63.1471 40.7041 -129.366 40.7041 -198.656h-98.3037c0 55.9785 -10.9229 109.568 -32.7686 160.768
+c-21.8451 51.2005 -51.2848 95.2327 -88.3193 132.097c-37.0352 36.8639 -81.0674 66.2184 -132.097 88.0635c-51.0293 21.8457 -104.533 32.7686 -160.512 32.7686z" />
+ <glyph glyph-name="uniF155" unicode=""
+d="M-78.2236 84.4805v92.6719h114.688v-91.6641c0 -9.56836 3.4082 -17.8242 10.2402 -24.832s15.1836 -10.4961 25.0879 -10.4961s18.3359 3.42383 25.3438 10.2402c7.00781 6.84766 10.4961 15.1992 10.4961 25.0879v216.592c0 39.9355 14.752 73.9844 44.2881 102.144
+c29.5361 28.1602 64.6084 42.2402 105.216 42.2402c40.6084 0 75.6807 -14.1602 105.216 -42.4961c29.5205 -28.3359 44.3047 -62.6396 44.3047 -102.912v-47.1035l-68.624 -20.4805l-45.5684 21.5039v40.96c0 9.9043 -3.4082 18.2568 -10.2559 25.0889
+c-6.81641 6.83203 -15.1836 10.2393 -25.0723 10.2393c-9.90332 0 -18.3359 -3.40723 -25.3438 -10.2393s-10.4961 -15.1846 -10.4961 -25.0889v-213.504c0 -40.9756 -14.6719 -75.8721 -44.0322 -104.72c-29.3438 -28.8477 -64.5117 -43.248 -105.472 -43.248
+c-41.3115 0 -76.6396 14.5918 -105.984 43.7764c-29.3438 29.1836 -44.0312 64.6074 -44.0312 106.24zM292.464 82.9443v93.6953l45.5684 -21.5195l68.624 20.4961v-94.2246c0 -9.90332 3.4082 -18.3359 10.2236 -25.3438
+c6.84766 -7.00781 15.2002 -10.4961 25.0879 -10.4961c9.9043 0 18.2725 3.50391 25.0879 10.4961c6.81641 6.99219 10.2559 15.4404 10.2559 25.3438v95.7441h114.688v-92.6719c0 -41.2959 -14.5918 -76.6396 -43.7764 -105.983
+c-29.1836 -29.3604 -64.4316 -44.0322 -105.728 -44.0322s-76.624 14.4961 -105.984 43.5195c-29.3594 29.04 -44.0479 64.0166 -44.0479 104.977z" />
+ <glyph glyph-name="uniF159" unicode=""
+d="M-42.752 308.736c18.7676 22.1914 37.5518 41.9834 56.3203 59.3916c18.7676 17.4082 35.0713 30.6396 48.8955 39.6797s26.1924 16.3848 37.1201 22.0166s19.1201 9.2959 24.5762 11.0078l8.7041 2.04785c4.0957 0.688477 8.19141 1.02441 12.2881 1.02441
+c6.47949 0 12.4473 -1.02441 17.9199 -3.07227c8.87988 -3.4082 16.1279 -9.2959 21.7598 -17.6641s10.5762 -17.7441 14.8477 -28.1602c4.27246 -10.416 7.93652 -22.6875 11.0088 -36.8643c3.07129 -14.1592 5.63184 -27.3916 7.67969 -39.6797
+s4.35156 -25.8555 6.91211 -40.7041c2.55957 -14.8477 5.04004 -26.8799 7.42383 -36.0957c10.9277 -42.6719 19.7119 -72.96 26.3516 -90.8799c6.65625 -17.9043 13.7441 -26.8799 21.248 -26.8799c8.22461 0 19.5684 9.47168 34.0645 28.3994
+c14.4961 18.96 30.4639 44.7842 47.8721 77.584c8.87988 16.3848 13.3115 31.9199 13.3115 46.5928c0 4.43164 -0.335938 8.33594 -1.00781 11.7754c-3.05566 17.7441 -11.7764 28.8477 -26.1123 33.2803c-3.75977 1.36035 -7.85547 2.04785 -12.3193 2.04785
+c-11.9365 0 -26.1123 -4.43164 -42.4961 -13.3115c7.53613 44.3672 30.3838 80.0312 68.624 107.008c29.0078 20.4795 58.7354 30.7197 89.0879 30.7197c4.1123 0 8.20801 -0.175781 12.3037 -0.511719c34.8164 -2.7207 58.5283 -18.0801 71.1523 -46.0801
+c6.16016 -12.9766 9.21582 -27.9844 9.21582 -45.0566c0 -9.90332 -1.02441 -20.3037 -3.05566 -31.2314c-6.16016 -34.8164 -18 -70.3203 -35.6006 -106.496c-17.5996 -36.1924 -36.8799 -68.1924 -57.8398 -96c-20.9922 -27.8076 -43.6318 -54.2881 -67.8398 -79.3604
+c-24.2559 -25.0879 -45.3125 -45.04 -63.2158 -59.9033c-17.9199 -14.8486 -33.376 -26.5439 -46.3359 -35.0723c-14.3682 -8.19238 -27.7607 -12.2881 -40.2246 -12.2881s-24.3193 3.59961 -35.584 10.752c-11.2637 7.16797 -20.8154 15.3604 -28.6719 24.5762
+c-7.85547 9.21582 -14.3359 18.96 -19.4561 29.1836c-6.14355 12.9766 -22.7842 63.9199 -49.9199 152.832c-27.1357 88.9287 -43.5996 136.784 -49.4082 143.616c-0.335938 0.688477 -1.02344 1.37598 -2.04785 2.04785
+c-1.02344 0.671875 -3.32812 1.45605 -6.91211 2.30371c-3.58398 0.848633 -7.67969 0.848633 -12.2881 0c-4.60742 -0.847656 -10.832 -3.24707 -18.6875 -7.16797c-7.85645 -3.91992 -16.3838 -9.47168 -25.6006 -16.6396z" />
+ <glyph glyph-name="uniF128" unicode=""
+d="M-32 27.7441c0 29.6797 15.2002 56.1602 45.6162 79.4082c30.3838 23.2158 67.1201 34.8477 110.16 34.8477h27.6797c-14.3682 13.6641 -21.5518 28.3359 -21.5518 44.0645c0 9.8877 2.73535 19.8076 8.19141 29.6953
+c-3.40723 -0.335938 -8.35156 -0.527344 -14.8633 -0.527344c-35.5049 0 -64.5439 11.1191 -87.0889 33.3271c-22.5439 22.1924 -33.8232 49.5205 -33.8232 82c0 31.0889 14 58.2246 42 81.4561c28.0479 23.248 60 34.8486 95.8555 34.8486h158.832l-35.3438 -25.6162
+h-50.1924c16.0479 -6.14453 28.624 -17.7764 37.6484 -34.8643c9.05566 -17.0557 13.5996 -36.0322 13.5996 -56.8799c0 -31.7598 -15.0234 -59.4238 -45.1035 -83.0078c-12.6406 -9.8877 -20.832 -17.7285 -24.5918 -23.5518
+c-3.76074 -5.82422 -5.64844 -12.9922 -5.64844 -21.5205c0 -6.47949 4.63965 -14.7041 13.8398 -24.6074c9.23242 -9.88867 18.4482 -18.2725 27.6641 -25.0723c20.8164 -14.6885 35.2803 -29.7441 43.3125 -45.0879c8.03125 -15.4082 12.0156 -34.6885 12.0156 -57.9043
+c0 -30.752 -14 -57.4717 -42 -80.1924c-28 -22.752 -65.9199 -34.0635 -113.76 -34.0635c-45.4238 0 -83.8721 8.49609 -115.28 25.5996c-31.4404 17.0879 -47.168 39.6162 -47.168 67.6484zM25.376 44.6562c0 -23.6006 10 -43.6641 29.9844 -60.2246
+c19.9834 -16.5918 44.832 -24.8477 74.5439 -24.8477c40.6719 0 70.1113 7.53613 88.3838 22.5283c18.3037 15.0234 27.4238 35.0078 27.4238 59.9355c0 6.49609 -0.671875 11.9678 -2.04785 16.4004c-1.00781 3.74414 -2.22363 7.24805 -3.56836 10.5273
+c-1.3916 3.2168 -3.43945 6.46484 -6.17578 9.71289c-2.7041 3.24707 -5.10352 5.96777 -7.13574 8.19141c-2.06445 2.22363 -5.39258 5.02441 -10.0166 8.46387c-4.60742 3.4082 -8.12793 5.96777 -10.5117 7.68066c-2.38379 1.67969 -6.63965 4.6875 -12.8154 8.97559
+c-6.12891 4.25586 -10.5928 7.24805 -13.3281 8.97559c-13.3281 4.09668 -26.4639 6.12793 -39.4404 6.12793c-30.752 0.336914 -57.6475 -7.66309 -80.6875 -24.0635c-23.04 -16.3838 -34.6084 -35.8564 -34.6084 -58.3838zM59.2158 331.056
+c3.75977 -26.9756 14.0957 -50.1914 31.0078 -69.6797c16.9287 -19.4561 35.6328 -29.3604 56.1123 -29.7119c20.1602 -0.671875 36.2236 8.19238 48.1758 26.6562c11.9521 18.4473 16.2246 41.1514 12.7842 68.1436c-3.4082 26.9766 -13.5684 49.8721 -30.4639 68.6719
+c-16.9277 18.7686 -35.6318 28.4961 -56.1436 29.2002c-20.4805 0.65625 -36.7041 -8.03223 -48.6729 -26.1602c-11.9512 -18.0957 -16.2236 -40.4639 -12.7998 -67.1201zM343.6 318.752v25.6318h102.465v102.48h25.6318v-102.48h103.008v-25.6318h-103.024v-102.992
+h-25.6318v102.992h-102.448z" />
+ <glyph glyph-name="uniF10B" unicode=""
+d="M58.6885 -37.8877v396.8h47.1035c0 9.9043 0.0800781 16.5596 0.255859 19.9678s0.848633 8.78418 2.04785 16.1279c1.2002 7.34375 3.15234 12.4639 5.88867 15.3604c2.73535 2.89551 6.91211 5.71191 12.5439 8.44824c5.63184 2.73535 12.5439 4.0957 20.7354 4.0957
+c8.19238 0 15.1045 -1.36035 20.7363 -4.0957c5.63184 -2.7207 9.72754 -5.45605 12.2881 -8.19238c2.55957 -2.73633 4.52832 -7.93555 5.8877 -15.6162c1.36035 -7.67969 2.04785 -13.0557 2.04785 -16.1279v-19.9678h28.1602v19.9678s0.671875 5.37598 2.04785 16.1279
+s3.32812 15.9678 5.88867 15.6162c2.54395 -0.335938 6.63965 2.38379 12.2881 8.19238c5.64746 5.80762 12.5439 7.16797 20.7354 4.0957c6.16016 0 11.4404 -0.688477 15.8721 -2.04785c4.43262 -1.36035 8.1123 -2.81641 11.0078 -4.35254
+c2.91211 -1.53613 5.37598 -4.43164 7.44043 -8.7041c2.04785 -4.27148 3.50391 -7.42383 4.33594 -9.47168c0.864258 -2.04785 1.53613 -6.22363 2.06445 -12.5439c0.495117 -6.32031 0.751953 -10.4961 0.751953 -12.5439v-14.3359h27.6641v14.3359
+s0.255859 4.17578 0.767578 12.5439s1.2002 12.5439 2.04785 12.5439c0.864258 0 2.32031 3.15234 4.33594 9.47168c2.06445 6.32031 4.52832 9.2168 7.44043 8.7041c2.91211 -0.511719 6.55957 0.944336 11.0078 4.35254s9.72754 4.0957 15.8721 2.04785
+c8.19141 0 15.1035 -1.36035 20.752 -4.0957c5.63184 -2.7207 9.71191 -5.45605 12.2881 -8.19238c2.55957 -2.73633 4.51172 -7.93555 5.87207 -15.6162c1.37598 -7.67969 2.06348 -13.0557 2.06348 -16.1279v-19.9678h47.0723v-396.8h-397.312zM91.9678 52.7363v-57.3447
+h71.168v57.3447h-71.168zM91.9678 64h71.168v60.9443h-71.168v-60.9443zM91.9678 136.192h71.168v66.5596h-71.168v-66.5596zM91.9678 213.504h71.168v57.3438h-71.168v-57.3438zM128.336 317.44c0 -11.2646 6.32031 -16.8965 18.9443 -16.8965
+c12.6396 0 18.9434 5.63184 18.9434 16.8965v66.5596c0 11.2637 -6.31934 16.8965 -18.9434 16.8965c-12.6406 0 -18.9443 -5.63281 -18.9443 -16.8965v-66.5596zM173.888 52.7363v-57.3447h77.8242v57.3447h-77.8242zM173.888 64h77.8242v60.9443h-77.8242v-60.9443z
+M173.888 136.192h77.8242v66.5596h-77.8242v-66.5596zM173.888 213.504h77.8242v57.3438h-77.8242v-57.3438zM238.4 317.44c0 -11.2646 6.31934 -16.8965 18.9434 -16.8965c12.9766 0 19.4727 5.63184 19.4727 16.8965v66.5596c0 11.2637 -6.49609 16.8965 -19.4727 16.8965
+c-12.624 0 -18.9434 -5.63281 -18.9434 -16.8965v-66.5596zM262.464 52.7363v-57.3447h77.8086v57.3447h-77.8086zM262.464 64h77.8086v60.9443h-77.8086v-60.9443zM262.464 136.192h77.8086v66.5596h-77.8086v-66.5596zM262.464 213.504h77.8086v57.3438h-77.8086v-57.3438
+zM348.48 317.44c0 -11.2646 6.47949 -16.8965 19.4551 -16.8965c12.624 0 18.9443 5.63184 18.9443 16.8965v66.5596c0 11.2637 -6.32031 16.8965 -18.9443 16.8965c-12.9756 0 -19.4551 -5.63281 -19.4551 -16.8965v-66.5596zM351.04 52.7363v-57.3447h71.6641v57.3447
+h-71.6641zM351.04 64h71.6641v60.9443h-71.6641v-60.9443zM351.04 136.192h71.6641v66.5596h-71.6641v-66.5596zM351.04 213.504h71.6641v57.3438h-71.6641v-57.3438z" />
+ <glyph glyph-name="uniF142" unicode=""
+d="M-9.59961 134.144c3.40723 47.4561 32.0801 76.9766 86.0156 88.5762c4.0957 30.3838 11.3438 63.1523 21.7598 98.3047c10.416 35.1514 22.624 60.0791 36.6084 74.752c16.3838 16.7197 36.8643 29.6152 61.4395 38.6553
+c24.5762 9.04004 49.5039 13.5684 74.7686 13.5684c29.3594 0 57.3438 -6.65625 83.9678 -19.9678c26.624 -13.3125 46.5762 -32.0801 59.8877 -56.3203c6.49609 -12.2881 13.584 -34.5596 21.248 -66.8154c7.68066 -32.2568 12.8965 -58.624 15.6318 -79.1045
+c5.12012 -2.04785 10.9287 -3.07227 17.4082 -3.07227c10.2559 0 15.3604 4.95996 15.3604 14.8486c0 3.74316 -1.00781 9.47168 -3.07227 17.1514c-2.03223 7.68066 -2.89551 13.7441 -2.55957 18.1768v2.04785h0.527344c9.2168 0 19.6328 -8.7041 31.2168 -26.1123
+c11.5996 -17.7441 17.3916 -31.5684 17.3916 -41.4717c0 -6.83203 -1.63184 -12.8799 -4.86426 -18.1768c-3.23145 -5.2959 -6.47949 -9.47168 -9.72754 -12.5439c-3.23242 -3.07129 -8.87988 -6.06348 -16.8965 -8.95996
+c-8.01562 -2.91211 -13.5674 -4.7041 -16.6396 -5.37598l-18.4316 -4.0957c-1.68066 -0.335938 -3.05664 -0.688477 -4.09668 -1.02441v-13.3115c0 -59.0557 -13.1201 -102.24 -39.4082 -129.536l12.7842 -12.8164c1.37598 -0.6875 5.64844 -2.63965 12.8164 -5.87109
+c7.15234 -3.24805 13.2158 -6.40039 18.1758 -9.48828s8.1123 -6.14453 9.47168 -9.2002c-22.1914 -17.4082 -44.7031 -26.1279 -67.584 -26.1279c-11.6152 0 -24.3994 2.91211 -38.3994 8.71973c-30.0322 -12.6396 -60.752 -18.96 -92.1602 -18.96
+c-40.2881 0 -80.208 10.4004 -119.808 31.2324c-12.2881 -2.73633 -21.6641 -5.96777 -28.1602 -9.72852c-2.38379 -1.35938 -6.91211 -4.43164 -13.5684 -9.19922c-6.65625 -4.78418 -12.8799 -8.80078 -18.6875 -12.0322
+c-5.80859 -3.23242 -10.5928 -4.86426 -14.3525 -4.86426c-1.02344 6.14355 -1.53613 12.4639 -1.53613 18.9443c0 26.9756 9.04004 48.4639 27.1367 64.5117c-20.4805 33.792 -31.0566 77.6641 -31.7441 131.584l-3.58398 0.52832h-1.53613
+c-10.2402 0.335938 -23.2158 -2.56055 -38.9121 -8.7207c-16.3838 -6.14355 -27.3125 -9.37598 -32.7686 -9.71191c-1.35938 -0.015625 -3.07129 0.335938 -5.11914 1.00781zM109.184 86.5283c0 -4.43262 1.2002 -9.04004 3.58398 -13.8242
+c9.2168 -32.7686 24.4004 -56.3359 45.5684 -70.6562c14.6719 -9.8877 32.7676 -17.8242 54.2725 -23.792c21.5039 -5.9834 41.4717 -8.97559 59.9033 -8.97559c22.5283 0 47.3604 4.78418 74.4961 14.3359s47.5361 21.8398 61.168 36.8643
+c23.2158 24.9277 34.832 68.7676 34.832 131.584c0 77.1357 -15.6963 141.823 -47.1035 194.048c-4.09668 6.83203 -7.07227 11.5195 -8.95996 14.0801c-1.88867 2.55957 -5.12012 5.19922 -9.72852 7.93555c-4.5918 2.73633 -10.1602 4.0957 -16.624 4.0957
+c-17.0723 0 -35.3438 -10.416 -54.7998 -31.2314c-25.9355 16.0322 -49.8242 24.0635 -71.6797 24.0635c-20.1445 0 -37.9688 -7.32812 -53.5039 -22.0156c-15.5361 -14.6885 -27.6328 -32.5117 -36.3359 -53.5039c-8.7041 -20.9922 -15.8721 -45.0557 -21.5049 -72.1924
+c-5.63184 -27.1357 -9.31152 -51.2002 -11.0078 -72.1914c-1.71191 -20.9922 -2.57617 -40.5283 -2.57617 -58.624zM201.856 294.912c0 7.50391 2.65527 13.9043 7.93555 19.2002c5.2959 5.2959 11.5195 7.93555 18.6885 7.93555
+c7.50391 0 13.9199 -2.63965 19.1992 -7.93555c5.2959 -5.2959 7.93652 -11.6807 7.93652 -19.2002c0 -7.52051 -2.65625 -13.8242 -7.93652 -18.9443c-5.2959 -5.12012 -11.6953 -7.67969 -19.1992 -7.67969c-7.16895 0 -13.3926 2.55957 -18.6885 7.67969
+c-5.28027 5.12012 -7.93555 11.4404 -7.93555 18.9443zM230.528 304.128c0 -4.0957 2.04785 -6.14355 6.14355 -6.14355c1.69629 0 3.15234 0.591797 4.35254 1.79199c1.19922 1.19922 1.79199 2.65527 1.79199 4.35156c0 1.71191 -0.592773 3.24805 -1.79199 4.6084
+c-1.2002 1.35938 -2.65625 2.04785 -4.35254 2.04785c-4.08008 0 -6.14355 -2.22461 -6.14355 -6.65625zM278.656 273.408l1.02344 1.02344l-0.511719 -1.53516zM281.216 275.968l26.624 26.624l26.1279 -26.624c-7.53613 -2.38379 -16.0635 -3.58398 -25.6162 -3.58398
+c-9.8877 0 -18.9434 1.2002 -27.1357 3.58398zM282.256 264.704c9.21582 -1.69629 17.7441 -2.56055 25.6006 -2.56055c7.51953 0 15.8711 0.864258 25.0879 2.56055l-25.0879 -25.0879zM336 272.896v1.53516l0.511719 -1.02344zM349.824 294.912
+c0 7.50391 2.63965 13.9043 7.93555 19.2002s11.6807 7.93555 19.2002 7.93555c7.50391 0 13.9043 -2.63965 19.1836 -7.93555c5.29688 -5.2959 7.93652 -11.6807 7.93652 -19.2002c0 -7.52051 -2.63965 -13.8242 -7.93652 -18.9443
+c-5.2793 -5.12012 -11.6797 -7.67969 -19.1836 -7.67969c-7.51953 0 -13.9043 2.55957 -19.2002 7.67969s-7.93555 11.4404 -7.93555 18.9443zM378.496 304.128c0 -1.69629 0.6875 -3.15234 2.04785 -4.35156c1.36035 -1.2002 2.73633 -1.79199 4.1123 -1.79199
+c1.67969 0 3.23145 0.591797 4.5918 1.79199c1.37598 1.19922 2.06348 2.65527 2.06348 4.35156c0 4.43164 -2.22363 6.65625 -6.65527 6.65625c-1.71191 0 -3.15234 -0.671875 -4.35254 -2.04785c-1.21582 -1.36035 -1.80762 -2.89648 -1.80762 -4.6084z" />
+ <glyph glyph-name="uniF143" unicode=""
+d="M56.832 -65.5361v512h391.168v-418.304l-292.352 1.51953v-95.2158h-98.8164zM154.624 118.288h204.288v230.384h-204.288v-230.384z" />
+ <glyph glyph-name="uniF14E" unicode=""
+d="M0 157.696v68.6074l1.28027 30.208l3.58398 31.4883l7.16797 27.1357l12.0322 28.416l18.1758 23.8086l25.8555 24.3193c49.8346 37.5469 110.592 56.3203 182.272 56.3203h8.19141v-397.824h63.4883v106.496c2.38932 -3.75456 9.04525 -14.5918 19.9678 -32.5117
+c10.9232 -17.9199 19.6273 -31.488 26.1123 -40.7041c9.89844 -13.6536 20.7357 -22.6989 32.5117 -27.1357c11.776 -4.4375 27.3923 -6.65625 46.8486 -6.65625h18.4316v60.416c-15.36 0 -26.112 1.19466 -32.2559 3.58398s-13.3118 9.38672 -21.5039 20.9922
+c-4.77865 6.14388 -11.0934 15.7865 -18.9443 28.9277c-7.85026 13.1413 -12.2874 20.5654 -13.3115 22.2725l87.5518 121.855h-75.7764l-69.6318 -96.7676v231.936c46.0801 -7.50911 86.6989 -24.5758 121.856 -51.2002
+c9.89844 -7.50911 18.5169 -15.6156 25.8555 -24.3193c7.33854 -8.70443 13.3971 -16.6406 18.1758 -23.8086s8.78939 -16.64 12.0322 -28.416s5.63216 -20.8213 7.16797 -27.1357c1.53646 -6.31445 2.73112 -16.8105 3.58398 -31.4883
+c0.853516 -14.6771 1.28027 -24.7464 1.28027 -30.208v-68.6074l-1.28027 -30.208l-3.58398 -31.4883l-7.16797 -27.1357l-12.0322 -28.416l-18.1758 -23.8086l-25.8555 -24.3193c-49.8346 -37.5469 -112.469 -56.3203 -187.904 -56.3203s-138.07 18.7734 -187.904 56.3203
+c-9.89844 7.50911 -18.5169 15.6156 -25.8555 24.3193c-7.33854 8.70443 -13.3971 16.6406 -18.1758 23.8086s-8.78939 16.64 -12.0322 28.416c-3.24284 11.776 -5.63216 20.8213 -7.16797 27.1357c-1.53646 6.31445 -2.73112 16.8105 -3.58398 31.4883
+c-0.853516 14.6771 -1.28027 24.7464 -1.28027 30.208zM41.4717 81.4082c22.528 -22.8698 55.2962 -34.3047 98.3047 -34.3047c27.3066 0 50.7731 6.9974 70.3994 20.9922c19.627 13.9948 29.4404 34.1335 29.4404 60.416c0 17.4082 -3.07194 31.8298 -9.21582 43.2646
+c-6.14453 11.4342 -13.8245 19.1995 -23.04 23.2959c-9.21615 4.0957 -19.2002 7.4235 -29.9521 9.9834c-10.752 2.56055 -20.736 4.09668 -29.9521 4.6084s-16.8962 2.47428 -23.04 5.8877c-6.14388 3.41341 -9.21582 8.53353 -9.21582 15.3604
+c0 16.0423 11.9466 23.8929 35.8398 23.5518c19.4557 0 34.3037 -4.94922 44.5439 -14.8477l39.9355 39.9355c-20.4798 20.4805 -49.4928 30.7207 -87.0391 30.7207c-26.6243 0 -49.0671 -7.08268 -67.3281 -21.248c-18.2617 -14.1654 -27.3926 -34.2188 -27.3926 -60.1602
+c0 -17.4082 3.4987 -31.6589 10.4961 -42.752c6.9974 -11.0938 15.7868 -18.6885 26.3682 -22.7842c10.5814 -4.09635 21.248 -6.99772 32 -8.7041s20.9066 -3.24251 30.4639 -4.6084c9.55729 -1.36523 15.8721 -3.75456 18.9443 -7.16797
+c3.41341 -3.75456 5.12012 -8.87435 5.12012 -15.3594c0 -15.7018 -12.2881 -23.5527 -36.8643 -23.5527c-26.2826 0 -45.568 6.14421 -57.8564 18.4326z" />
+ <glyph glyph-name="uniF15A" unicode=""
+d="M-56.6396 334.336c3.40723 2.71973 7.67969 4.78418 12.7998 6.14453c4.76758 1.35938 9.04004 2.04785 12.7998 2.04785h4.6084c3.40723 0 7.50391 -0.176758 12.2881 -0.512695c7.50391 -0.335938 12.9756 -0.511719 16.3838 -0.511719
+c2.04785 0 8.52734 0.335938 19.4561 1.02441c5.45605 0.335938 10.416 0.416016 14.8477 0.255859s8.36816 -0.255859 11.7764 -0.255859c6.83203 -0.688477 12.2881 -2.04785 16.3838 -4.09668c2.04785 -1.02344 4.27148 -3.24805 6.65625 -6.65527
+c2.38379 -3.4082 4.35156 -6.65625 5.8877 -9.72852s3.50391 -7.42383 5.8877 -13.0557s4.09668 -9.3125 5.12012 -11.0078c12.9766 -28 29.0078 -55.8086 48.1279 -83.4561c0.688477 -1.02441 1.88867 -2.91211 3.58398 -5.63184
+c1.69629 -2.73633 3.15234 -4.86426 4.35254 -6.40039c1.19922 -1.53613 2.73535 -3.50391 4.60742 -5.8877c1.87207 -2.38477 3.66406 -4.27246 5.37598 -5.63281c1.71191 -1.35938 3.50391 -2.81543 5.37598 -4.35156s3.83984 -2.48047 5.88867 -2.81641
+c2.04785 -0.335938 4.0957 -0.335938 6.14355 0c9.56836 1.69629 14.8477 21.6641 15.8721 59.9043c0.335938 6.48047 0.511719 12.4639 0.511719 17.9199c0 25.2646 -2.55957 42.6719 -7.67969 52.2246c-2.04785 3.74316 -4.68848 6.73535 -7.93555 8.95996
+c-3.24805 2.22363 -7.4248 4.27148 -12.5449 6.14355c-5.11914 1.87207 -9.03906 3.66406 -11.7754 5.37598c4.76758 9.55176 13.2314 15.8721 25.3438 18.9443c12.1123 3.07129 28.5918 4.60742 49.4082 4.60742h27.1357s4.43262 -0.0800781 13.3125 -0.255859
+s13.4873 -0.671875 13.8232 -1.53613l11.248 -2.81543s3.34473 -1.53613 10 -4.6084c6.65625 -3.07227 8.78418 -5.45605 6.40039 -7.16797c3.07227 -6.14355 4.94434 -13.3115 5.63184 -21.5039c0 -2.38379 0.160156 -4.78418 0.496094 -7.16797
+c0 -6.81641 -0.496094 -15.6963 -1.53613 -26.624c-1.35938 -14.3359 -2.04785 -23.2158 -2.04785 -26.624c-1.00781 -7.85645 -1.53613 -15.6963 -1.53613 -23.5518c0 -6.14453 0.335938 -12.624 1.00781 -19.4561c1.37598 -15.0244 6.49609 -25.4238 15.376 -31.2324
+c3.05664 0.335938 5.87207 1.02441 8.43262 2.04785c2.55957 1.02441 5.2002 2.91211 7.93555 5.63281c2.71973 2.73535 4.6084 4.6875 5.63184 5.8877c1.02441 1.2002 3.15234 4 6.40039 8.44824c3.24805 4.44727 5.02441 6.83203 5.37598 7.16797
+c16.0479 21.1514 32.0957 48.9756 48.1279 83.4561l4.6084 11.5195s1.96777 4.52832 5.8877 13.5684s5.96777 12.3682 6.14355 9.9834c0.176758 -2.38379 2.83203 -0.0800781 7.93652 6.91211c5.45605 2.38379 11.9521 3.58398 19.4561 3.58398h4.63965
+c6.83203 0 14.6719 -0.335938 23.5518 -1.02344c10.9443 -0.688477 18.96 -1.02441 24.0645 -1.02441c3.08789 0 7.77637 0.175781 14.0957 0.511719c6.32031 0.335938 11.8564 0.592773 16.6406 0.768555c4.76758 0.175781 9.80762 0.0800781 15.1035 -0.255859
+c5.28027 -0.335938 9.63184 -1.36035 13.04 -3.07227c3.42383 -1.69629 5.79199 -3.91992 7.16797 -6.65625c1.04004 -2.04785 1.53613 -4.27148 1.53613 -6.65625c0 -9.90332 -5.96777 -24.7354 -17.9199 -44.5439c-5.79199 -9.90332 -11.6797 -18.8633 -17.6641 -26.8799
+c-5.96777 -8.01562 -13.7119 -17.9199 -23.2803 -29.6953c-9.56738 -11.7764 -15.8721 -19.7129 -18.9434 -23.8086c-0.688477 -0.6875 -3.08887 -3.75977 -7.18457 -9.21582s-7.05566 -9.56836 -8.95996 -12.2881c-1.87207 -2.73633 -3.82422 -6.57617 -5.8877 -11.5361
+c-2.04785 -4.94336 -2.91211 -9.47168 -2.56055 -13.5674c0 -2.73633 0.512695 -5.28027 1.55273 -7.68066c1.00781 -2.36816 2.63965 -4.94336 4.86328 -7.66406c2.22461 -2.71973 3.93652 -4.7832 5.12012 -6.14355c1.18457 -1.37598 3.50391 -3.60059 6.91211 -6.65625
+c3.4082 -3.07227 5.47168 -4.95996 6.16016 -5.64746c24.2236 -22.1768 43.3438 -42.1445 57.3438 -59.8887c13.6484 -17.7441 20.4639 -30.5596 20.4639 -38.3994c0 -11.2646 -8.7041 -18.2725 -26.1113 -20.9922c-8.87988 -1.36035 -17.9199 -2.04785 -27.1367 -2.04785
+c-7.15137 0 -14.4951 0.511719 -22.0156 1.55176c-6.83203 0.671875 -13.1357 1.00781 -18.96 1.00781c-8.86426 0 -16.5439 -0.864258 -23.0244 -2.55957h-3.08789c-22.5273 3.75977 -46.2559 19.792 -71.168 48.1436c-1.35938 1.36035 -4.27148 4.86426 -8.7041 10.4805
+c-4.43164 5.64746 -8.19141 9.9834 -11.2637 13.0557s-7.00781 5.96777 -11.7764 8.7041c-4.76758 2.71973 -9.3916 3.74414 -13.8232 3.05566c-7.84082 -1.35938 -13.04 -6.31934 -15.6162 -14.8477s-4.0957 -18.6885 -4.6084 -30.4639
+c-0.496094 -11.7598 -2.12793 -20.0479 -4.86328 -24.832c-4.43262 -8.19238 -17.9209 -12.2881 -40.4482 -12.2881c-9.55176 0 -20.8164 0.671875 -33.792 2.04785c-26.624 2.71973 -50.7686 9.56836 -72.4482 20.4639c-21.6797 10.9443 -38.832 22.4482 -51.4561 34.5605
+c-12.624 12.1279 -26.4482 27.9033 -41.4717 47.376c-35.5039 45.3916 -69.1201 100.336 -100.864 164.863c-1.02441 2.04883 -2.89551 5.88867 -5.63184 11.5205c-2.73633 5.64746 -4.76855 10 -6.14453 13.0723c-1.37598 3.07129 -2.99121 7.08789 -4.86328 12.0312
+c-1.87207 4.94434 -3.24805 9.72852 -4.09668 14.3359c-0.847656 4.6084 -1.2793 9.13672 -1.2793 13.5684z" />
+ <glyph glyph-name="uniF136" unicode=""
+d="M-2.48242 387.926c0 16.5495 5.79232 30.2028 17.377 40.96c11.5846 10.7572 26.6445 16.1357 45.1797 16.1357c18.2044 0 32.9336 -5.2959 44.1875 -15.8877c11.5846 -10.9225 17.377 -25.1553 17.377 -42.6982c0 -15.8874 -5.62663 -29.127 -16.8799 -39.7188
+c-11.5853 -10.9225 -26.8109 -16.3838 -45.6768 -16.3838h-0.49707c-18.2044 0 -32.9333 5.46126 -44.1865 16.3838c-11.2539 10.9232 -16.8809 24.6595 -16.8809 41.209zM3.97168 -46.499v331.652h110.22v-331.652h-110.22zM175.259 -46.499
+c0.662109 99.959 0.993164 177.576 0.993164 232.852s-0.331055 88.209 -0.993164 98.8008h110.22v-47.166l-0.496094 -0.993164h0.496094v0.993164c23.8314 36.7396 57.096 55.1094 99.7939 55.1094c38.0638 0 68.6803 -12.6605 91.8496 -37.9814
+c23.1693 -25.3203 34.7539 -62.4736 34.7539 -111.46v-190.154h-110.22v177.245c0 49.9798 -18.5355 74.9697 -55.6064 74.9697c-14.2324 0 -26.0651 -3.88932 -35.498 -11.668c-9.43359 -7.77799 -16.4674 -17.2939 -21.1016 -28.5479
+c-2.64779 -6.28841 -3.97168 -15.2253 -3.97168 -26.8105v-185.188h-110.22z" />
+ <glyph glyph-name="uniF14C" unicode=""
+d="M0 308.224c0 38.571 13.6533 71.5098 40.96 98.8164s60.2454 40.96 98.8164 40.96c26.6237 0 51.3701 -7.16797 74.2393 -21.5039c12.2884 2.38932 25.9417 3.58398 40.96 3.58398c66.5605 0 123.393 -23.5521 170.496 -70.6562
+c47.1042 -47.1042 70.6562 -103.765 70.6562 -169.983c0 -16.7259 -1.87728 -33.9635 -5.63184 -51.7129c9.55729 -20.1387 14.3359 -40.7891 14.3359 -61.9512c0 -38.571 -13.6533 -71.5098 -40.96 -98.8164s-60.2454 -40.96 -98.8164 -40.96
+c-23.2103 0 -45.2262 5.46126 -66.0479 16.3838c-15.36 -2.73047 -30.0374 -4.0957 -44.0322 -4.0957c-66.2181 0 -122.879 23.5521 -169.983 70.6562c-47.1042 47.1035 -70.6562 103.936 -70.6562 170.496c0 16.0423 1.53613 32.085 4.6084 48.1279
+c-12.6296 22.1862 -18.9443 45.738 -18.9443 70.6553zM113.152 120.832c0 -13.9948 5.11979 -28.5016 15.3594 -43.5205c24.235 -35.498 66.2191 -53.2471 125.952 -53.2471c17.0671 0 33.5365 1.87728 49.4082 5.63184c15.8717 3.75456 30.805 9.55697 44.7998 17.4072
+c13.9948 7.85091 25.2588 18.6885 33.792 32.5127c8.5332 13.8236 12.7998 29.9515 12.7998 48.3838c0 19.7975 -5.03451 36.5228 -15.1035 50.1758c-10.0697 13.6536 -22.6136 23.5524 -37.6318 29.6963c-15.0189 6.14388 -31.3177 11.6904 -48.8965 16.6396
+s-33.8773 8.87467 -48.8955 11.7764c-15.0189 2.90104 -27.5632 7.33822 -37.6328 13.3115c-10.069 5.97331 -15.1035 13.568 -15.1035 22.7842c0 11.2643 6.22949 19.627 18.6885 25.0879c12.4583 5.46159 25.1729 8.19238 38.1436 8.19238
+c13.653 0 24.917 -2.13346 33.792 -6.40039c8.87435 -4.26628 15.3597 -9.38607 19.4561 -15.3594c4.0957 -5.97331 7.67969 -11.9466 10.752 -17.9199s7.25358 -11.0934 12.5439 -15.3604s12.0316 -6.40039 20.2236 -6.40039c9.21615 0 17.3229 3.24284 24.3203 9.72852
+c6.9974 6.48503 10.4961 14.3356 10.4961 23.5518s-2.5599 18.4323 -7.67969 27.6484c-10.2402 18.7728 -26.4538 32.4261 -48.6406 40.96c-22.1862 8.5332 -45.738 12.7998 -70.6553 12.7998c-15.7018 0 -30.8913 -1.53613 -45.5684 -4.6084
+c-14.6771 -3.07161 -28.8424 -8.02083 -42.4961 -14.8477c-13.653 -6.82682 -24.6611 -16.4694 -33.0244 -28.9277c-8.36263 -12.459 -12.5439 -27.2217 -12.5439 -44.2881c0 -22.528 6.82682 -40.7041 20.4805 -54.5283c13.653 -13.8242 30.2077 -23.5521 49.6641 -29.1836
+c19.4557 -5.63216 38.9971 -10.4964 58.624 -14.5928c19.6263 -4.0957 36.2663 -9.81283 49.9199 -17.1514c13.653 -7.33854 20.4795 -17.3226 20.4795 -29.9521c0 -9.89844 -3.92513 -18.2611 -11.7754 -25.0879c-7.85091 -6.82682 -16.4697 -11.4349 -25.8564 -13.8242
+s-19.0293 -3.58398 -28.9277 -3.58398c-12.9707 0 -23.9788 1.79199 -33.0244 5.37598c-9.04492 3.58398 -15.6156 8.19206 -19.7119 13.8242c-4.0957 5.63216 -7.93555 11.6055 -11.5195 17.9199s-6.65592 12.2878 -9.21582 17.9199
+c-2.56055 5.63216 -6.40072 10.2402 -11.5205 13.8242s-11.4342 5.37598 -18.9434 5.37598c-9.55794 0 -17.8353 -2.90137 -24.832 -8.7041c-6.9974 -5.80273 -10.4961 -13.4827 -10.4961 -23.04z" />
+ <glyph glyph-name="uniF11A" unicode=""
+d="M0 17.4082v347.136c0 22.528 7.33854 42.0693 22.0156 58.624c14.6777 16.5547 33.1097 24.832 55.2959 24.832h356.864c23.8932 0 43.776 -6.40007 59.6484 -19.2002c15.8717 -12.8001 23.8076 -30.9759 23.8076 -54.5273v-30.208
+c-25.2585 4.77865 -44.2025 8.19173 -56.832 10.2393c-18.0905 2.38932 -27.3063 3.58398 -27.6475 3.58398c-3.41341 1.02409 -8.44824 2.73079 -15.1045 5.12012c-6.6556 2.38932 -12.4583 4.18132 -17.4082 5.37598c-4.94922 1.19466 -10.4958 1.79199 -16.6396 1.79199
+c-21.1628 0 -43.6908 -8.02116 -67.584 -24.0635c-11.6055 -1.02409 -27.9043 -2.21875 -48.8965 -3.58398c-20.9915 -1.36523 -40.1061 -2.90137 -57.3438 -4.6084c-17.237 -1.70638 -33.5355 -4.0957 -48.8955 -7.16797h-1.02441l-0.511719 -0.511719h-2.04785
+l-0.512695 -0.512695h-0.511719c-24.5762 -4.77865 -39.4242 -9.21582 -44.5439 -13.3115c-6.14388 -5.11979 -9.55729 -17.237 -10.2402 -36.3516v-84.4805l-1.53613 -9.21582l269.312 -6.65625l40.96 13.8242c-15.0189 -26.9655 -26.9655 -49.4935 -35.8398 -67.584
+l-54.2725 -24.0645l-207.872 -3.58398c-1.02409 -1.02409 -2.73079 -1.62142 -5.12012 -1.79199s-4.2666 -0.938477 -5.63184 -2.30371c1.36523 -8.87435 2.5599 -15.5303 3.58398 -19.9678c4.09635 -17.7493 23.2113 -27.8187 57.3447 -30.208
+c70.3145 -4.4375 127.488 -6.65625 171.52 -6.65625c12.9707 0 33.4508 3.41341 61.4404 10.2402c27.9889 6.82682 49.6634 10.2402 65.0234 10.2402c22.1868 0 41.1309 -4.94954 56.832 -14.8486v-27.6475c0 -52.9069 -26.2826 -79.3604 -78.8477 -79.3604h-370.176
+c-20.8216 0 -37.4616 8.19206 -49.9199 24.5762c-12.459 16.3841 -18.6885 35.3281 -18.6885 56.832zM353.28 296.96c0 4.77865 1.70671 8.95996 5.12012 12.5439c3.41276 3.58398 7.50879 5.37598 12.2881 5.37598c4.77865 0 8.95996 -1.79199 12.5439 -5.37598
+s5.37598 -7.7653 5.37598 -12.5439s-1.79199 -8.87467 -5.37598 -12.2881s-7.7653 -5.12012 -12.5439 -5.12012c-4.7793 0 -8.87533 1.70671 -12.2881 5.12012c-3.41341 3.41341 -5.12012 7.50944 -5.12012 12.2881z" />
+ <glyph glyph-name="uniF12D" unicode=""
+d="M16 11.5195c-1.02441 12.1289 0.175781 22.2725 3.58398 30.4648c13.3125 47.792 29.0078 88.5752 47.1045 122.352c38.9111 73.7441 92.3193 133.824 160.256 180.24v7.16797c-20.1445 -8.52832 -40.3682 -19.7119 -60.6719 -33.5361
+c-20.3203 -13.8242 -37.7129 -27.6484 -52.2246 -41.4717c-14.5117 -13.8242 -27.4717 -27.04 -38.9121 -39.6807c-11.4238 -12.624 -20.0479 -22.8633 -25.8555 -30.7197l-8.7041 -11.7764c-0.688477 20.1289 2.04785 39.7607 8.19141 58.8809
+c6.14453 19.1191 13.8242 35.1514 23.04 48.1279c9.2168 12.9756 18.5283 24.3994 27.9043 34.3037c9.3916 9.9043 17.3125 17.2314 23.8076 22.0156l9.72852 6.65625c1.37598 0.688477 3.15234 1.61621 5.37598 2.81641c2.22363 1.19922 6.91211 3.50391 14.0801 6.91211
+c7.16797 3.40723 14.5918 6.5752 22.2715 9.47168c7.68066 2.91211 17.0566 5.80762 28.1602 8.7041c11.0879 2.91211 22.0166 4.95996 32.7686 6.14355c10.752 1.2002 22.6875 1.53613 35.8398 1.02441c13.1201 -0.512695 25.6797 -2.48047 37.6318 -5.88867
+c21.8398 16.0488 43.7764 28.4961 65.792 37.376c22.0156 8.88086 38.6396 13.8242 49.9199 14.8486l16.8965 1.53613c17.0557 1.71191 30.3037 -1.10449 39.6641 -8.44824c9.3916 -7.32812 14.6875 -16.7197 15.8711 -28.1602
+c1.2002 -11.4395 1.12012 -23.04 -0.255859 -34.8154c-1.37598 -11.7764 -3.40723 -21.9365 -6.16016 -30.4648l-4.5918 -12.2881l-2.55957 2.56055c7.15137 19.4561 10.6562 35.4082 10.4961 47.8721c-0.175781 12.4639 -3.15234 22.0957 -8.97656 28.9277
+c-5.79199 6.83203 -12.0312 11.7764 -18.6875 14.8477c-6.65625 3.07227 -12.8799 4.78418 -18.6885 5.12012l-8.19141 1.02441c-1.37598 0 -3.32812 -0.0800781 -5.88867 -0.255859c-2.55957 -0.175781 -8.01562 -1.02441 -16.3838 -2.56055
+c-8.33594 -1.53613 -16.7197 -3.66406 -25.0723 -6.39941c-8.35156 -2.7207 -18.6875 -6.99219 -30.9912 -12.7998c-12.2881 -5.80859 -24.0645 -12.8008 -35.3125 -20.9922c23.5361 -3.75977 44.5283 -10.9287 62.9766 -21.5039
+c18.4316 -10.5928 33.1035 -22.624 44.0312 -36.0967c10.9287 -13.4717 20.2246 -28 27.9043 -43.5195c7.67969 -15.5361 12.9756 -30.6396 15.8721 -45.3125c2.91211 -14.6719 5.12012 -28 6.65625 -39.9355c1.53613 -11.9365 2.12793 -21.5039 1.77539 -28.6719
+l-0.496094 -11.2803h-285.168c-1.02344 -14.3359 0.768555 -26.7842 5.37598 -37.376c4.6084 -10.5762 10.4004 -18.3359 17.4082 -23.2803c6.99219 -4.95996 14 -8.7998 20.9922 -11.5361c6.99219 -2.71973 13.0557 -4.27148 18.1602 -4.5918l7.67969 -0.527344
+c1.37598 0 3.32812 0.0957031 5.8877 0.271484c2.56055 0.175781 7.07227 1.10449 13.585 2.81641c6.46387 1.69531 12.3516 4.11133 17.6631 7.16797c5.28027 3.05566 10.5762 7.93555 15.8721 14.5918c5.28027 6.65625 8.95996 14.5918 11.0088 23.8076h149.504
+c-5.45605 -20.1602 -13.4727 -38.3994 -24.0645 -54.7832c-10.5762 -16.3848 -22.1914 -29.6328 -34.8154 -39.6807s-25.9365 -18.7842 -39.9365 -26.1279c-14 -7.32812 -27.3916 -12.7041 -40.1924 -16.1279c-12.8154 -3.4082 -24.3994 -6.14355 -34.8154 -8.19238
+c-10.416 -2.04785 -18.6885 -3.24805 -24.8477 -3.58398h-9.71289c-26.624 0 -44.8955 1.00879 -54.7832 3.07227c-20.4805 -16.0635 -42.0645 -28.5918 -64.7686 -37.6475c-22.7041 -9.05664 -40.3516 -14.0801 -52.9922 -15.1045l-18.4316 -1.50391
+c-15.6963 0 -28.9277 4 -39.6797 12.0322s-17.8398 17.584 -21.248 28.6719s-5.63184 22.7041 -6.65625 34.8154v0zM54.6562 14.3359c-0.175781 -8.20801 0.255859 -15.4561 1.2793 -21.7598c1.02441 -6.30371 2.38477 -11.168 4.09668 -14.5918l2.04785 -4.6084
+c1.36035 -1.02441 3.24805 -2.38379 5.63184 -4.0957s8.1123 -4.0166 17.1523 -6.91211c9.04004 -2.91211 18.7676 -4.28809 29.1836 -4.0957c10.416 0.15918 24.4004 2.97559 41.9844 8.43164s35.9355 14 55.04 25.5996
+c-2.7207 0.688477 -6.40039 1.63184 -11.0078 2.81641c-4.6084 1.2002 -13.2324 4.28809 -25.8564 9.21582c-12.6396 4.97559 -24.4004 10.3359 -35.3281 16.1445c-10.9277 5.80762 -22.2715 13.9033 -34.0479 24.3193s-20.9121 21.4238 -27.3916 33.0244
+c-7.50488 -11.6162 -13.1367 -23.04 -16.8965 -34.3203c-3.75977 -11.248 -5.71191 -20.9756 -5.8877 -29.168zM199.296 231.424h135.664c0.335938 12.2881 -1.63184 23.04 -5.87207 32.2559c-4.28809 9.2168 -9.72754 15.8721 -16.3838 19.9688
+c-6.65625 4.0957 -13.2324 7.32715 -19.6963 9.72754c-6.49609 2.38379 -12.1279 3.75977 -16.9121 4.0957l-7.15137 0.512695c-2.06445 0 -4.62402 -0.176758 -7.68066 -0.512695c-3.05566 -0.335938 -8.7041 -1.69531 -16.8955 -4.0957
+c-8.19238 -2.40039 -15.3604 -5.63184 -21.5039 -9.72754c-6.14453 -4.09668 -11.6963 -10.752 -16.6406 -19.9688c-4.95996 -9.21582 -7.26367 -19.9678 -6.92773 -32.2559z" />
+ <glyph glyph-name="uniF146" unicode=""
+d="M84.0322 440.32h51.2002l4.0957 -61.9521h5.12012l2.55957 1.53613c26.96 45.4072 68.9443 68.0957 125.968 68.0957c44.3682 0 80.624 -16.8164 108.784 -50.4316c28.1602 -33.6162 42.2402 -76.8965 42.2402 -129.792c0 -31.7441 -4.6084 -60.1602 -13.8242 -85.248
+c-9.2002 -25.0879 -21.584 -45.1367 -37.1035 -60.1602c-15.5361 -15.0244 -32.7842 -26.4639 -51.7119 -34.3203c-18.9287 -7.85547 -38.832 -11.7754 -59.6641 -11.7754c-23.5527 0 -44.9766 4.87988 -64.2559 14.5918
+c-19.2803 9.72754 -34.0488 23.2959 -44.2881 40.7197l-1.02441 1.53613h-5.63184l-1.53613 -3.58398v-193.536h-57.8564v389.632c0 30.0322 -1.02344 68.2725 -3.07129 114.688zM144.96 228.864c0 -10.5918 1.02441 -19.9678 3.07227 -28.1602
+c6.47949 -23.8877 19.1201 -43.168 37.8877 -57.8564c18.7686 -14.6719 40.2725 -22.0156 64.5117 -22.0156c34.4648 0 62.1279 13.0557 82.9443 39.168s31.2324 61.0078 31.2324 104.704c0 40.624 -10.416 73.7275 -31.2324 99.3281
+c-20.8164 25.5996 -47.6318 38.3994 -80.3682 38.3994c-24.5918 0 -46.4316 -7.75977 -65.5518 -23.2959c-19.1045 -15.5195 -31.7441 -35.584 -37.8877 -60.1602c-3.07227 -11.2637 -4.6084 -20.3037 -4.6084 -27.1357v-62.9756z" />
+ <glyph glyph-name="uniF14B" unicode=""
+d="M39.168 83.4561c0 15.0078 5.37598 27.9844 16.1279 38.9277c10.752 10.9121 23.8076 16.3682 39.168 16.3682c15.0078 0 28 -5.47168 38.9121 -16.3682c10.9277 -10.9434 16.3838 -23.9033 16.3838 -38.9277c0 -15.6963 -5.80762 -29.0078 -17.4082 -39.9365
+c22.1768 -25.2471 50 -37.8877 83.4561 -37.8877c23.5684 0 43.3604 7.00781 59.3926 20.9922c16.0479 14.3359 24.0635 32.416 24.0635 54.2881c0 13.3115 -4.27148 26.4316 -12.7998 39.4082c-7.85547 12.9756 -18.0957 23.9033 -30.7197 32.7832
+c-11.6162 7.84082 -31.2324 17.5684 -58.8799 29.1846c-25.6006 10.2402 -46.416 20.3037 -62.4639 30.208c-14.3359 9.21582 -26.8008 20.1279 -37.376 32.7676c-10.2402 12.2881 -18.0967 24.9121 -23.5527 37.8887c-4.7832 13.2959 -7.16797 26.7832 -7.16797 40.4316
+c0 34.4805 13.8242 63.8242 41.4727 88.0645c27.9834 24.2393 61.6152 36.3516 100.863 36.3516c26.3047 0 52.752 -5.63184 79.3604 -16.8965c22.5283 -9.55176 41.8242 -23.2158 57.8564 -40.96c12.624 -10.9277 18.9434 -24.5752 18.9434 -40.96
+c0 -15.3594 -5.45605 -28.416 -16.3682 -39.168s-23.9033 -16.1279 -38.9121 -16.1279c-15.376 0 -28.416 5.37598 -39.168 16.1279c-10.7676 10.752 -16.1279 23.8086 -16.1279 39.168c0 7.16797 1.69629 14.6729 5.10449 22.5283
+c-10.9277 5.45605 -25.9365 8.19238 -45.0557 8.19238c-23.5527 0 -42.6729 -5.2959 -57.3447 -15.8721s-22.0156 -24.2402 -22.0156 -40.96c0 -14.6719 6.47949 -27.6484 19.4561 -38.9121c13.6475 -11.2637 35.4883 -23.376 65.5361 -36.3525
+c31.4072 -13.6475 55.4717 -26.1113 72.208 -37.376c17.4072 -11.5996 31.3916 -24.2393 41.9678 -37.8877c11.2803 -14 19.4717 -28.4961 24.5762 -43.5195c0 -0.335938 0.175781 -0.864258 0.511719 -1.55273c0.335938 -0.671875 0.511719 -1.18359 0.511719 -1.53613
+c-25.6152 -21.168 -38.3994 -48.1279 -38.3994 -80.8955c0 -18.0957 4.78418 -35.8398 14.3359 -53.248c-3.74414 -4.43164 -7.83984 -9.04004 -12.2881 -13.8242c-29.6797 -27.9678 -64.8477 -41.9678 -105.472 -41.9678s-76.1123 10.9277 -106.496 32.7676
+c-30.3848 21.8408 -54.0967 54.96 -71.168 99.3281l1.53516 0.512695c-1.71191 5.10352 -2.55957 10.0801 -2.55957 14.8477zM353.024 45.0557c0 17.4082 6.14355 32.3525 18.4473 44.8008c12.2881 12.4473 27.3125 18.6875 45.0566 18.6875
+s32.752 -6.24023 45.0557 -18.6875c12.2725 -12.4648 18.416 -27.3926 18.416 -44.8008c0 -17.7441 -6.14355 -32.8477 -18.4482 -45.3115c-12.2881 -12.4639 -27.3115 -18.6885 -45.0557 -18.6885s-32.752 6.22461 -45.0557 18.6885
+c-12.2725 12.4482 -18.416 27.5674 -18.416 45.3115z" />
+ <glyph glyph-name="uniF13A" unicode=""
+d="M-86.5918 169.472c0 11.9521 0.335938 29.8721 1.02344 53.7607c8.19238 2.71973 16.3848 4.0957 24.5762 4.0957h9.21582c5.80859 -7.85645 12.6406 -19.792 20.4805 -35.8398s13.1357 -26.4482 15.8721 -31.2324c0.671875 2.40039 2.04785 8.62402 4.0957 18.6885
+c2.04785 10.0801 3.74414 17.3281 5.12012 21.7598s3.24805 10.6719 5.63184 18.6875c2.38379 8.0166 5.02441 14.9443 7.93652 20.7363c2.89551 5.80762 6.22363 11.0879 9.9834 15.8721c9.55273 -1.69629 17.4082 -2.55957 23.5527 -2.55957
+c2.04785 0 3.93555 0.175781 5.63184 0.511719c8.19141 -18.4326 15.9678 -46.2559 23.2959 -83.4561c7.34375 -37.2158 13.9199 -63.6641 19.7119 -79.376c-0.335938 0 -1.02441 0.191406 -2.04785 0.52832l-1.53613 0.511719
+c-3.07227 0 -7.52051 -0.944336 -13.3125 -2.81641c-5.80762 -1.87207 -9.56738 -2.99219 -11.2637 -3.32812c-13.6641 34.4805 -24.2402 69.1045 -31.7441 103.937c-5.12012 -8.87988 -7.67969 -24.0645 -7.67969 -45.584c0 -21.5039 -1.8877 -36.5117 -5.63184 -45.04
+l-2.56055 1.00781c-2.71973 0 -6.47949 -0.335938 -11.2637 -1.00781c-4.76855 -0.671875 -8.35254 -1.00781 -10.752 -1.00781h-9.21582c-9.2168 16.3682 -18.9443 31.5674 -29.1846 45.5674c-1.02344 -2.04785 -1.53613 -4.60742 -1.53613 -7.67969
+c0 -3.05566 0.432617 -7.50391 1.28027 -13.3115c0.847656 -5.79297 1.28027 -10.0645 1.28027 -12.8008l-0.511719 -6.14355c-10.2402 -5.12012 -19.1045 -7.67969 -26.624 -7.67969c-2.38477 0 -4.09668 0.191406 -5.12012 0.511719
+c-5.80859 19.0879 -8.7041 43.3438 -8.7041 72.6875zM95.168 130.56c0 9.2168 1.36035 19.0244 4.0957 29.4404c2.7207 10.4004 7.50391 20.1436 14.3359 29.1836c6.81641 9.04004 14.8486 13.5684 24.0645 13.5684c3.4082 0 8.19238 -0.847656 14.3359 -2.55957
+s10.0645 -2.73633 11.7764 -3.07227c3.07129 -13.6484 4.60742 -27.4717 4.60742 -41.4561c0 -9.56836 -1.02344 -18.96 -3.07227 -28.1758c-4.0957 1.35938 -10.5918 2.14355 -19.4551 2.30371c-8.88086 0.192383 -15.1846 0.78418 -18.9443 1.80762
+c-1.71191 -6.84766 -2.56055 -13.1514 -2.56055 -18.96c0 -7.16797 1.69629 -13.4873 5.12012 -18.96c3.4082 -5.45605 8.52832 -8.19141 15.3604 -8.19141c3.07227 0 7.50391 0.863281 13.3115 2.55957c5.80859 1.71191 10.2402 2.56055 13.3125 2.56055
+c5.80762 0 9.72754 -2.38477 11.7764 -7.16797c-14.3359 -5.45605 -28.3359 -8.19238 -41.9844 -8.19238c-15.6963 0 -27.3125 5.10352 -34.8164 15.3604c-7.50391 10.2559 -11.2637 23.5674 -11.2637 39.9512zM124.864 144.912l4.0957 0.496094
+c1.02441 0 2.38379 -0.335938 4.0957 -1.02441c1.69629 -0.671875 2.89648 -1.00781 3.58398 -1.00781l3.58398 1.55176c0.688477 4.76855 1.02441 8.52832 1.02441 11.248c0 6.16016 -0.864258 12.9766 -2.55957 20.4805
+c-7.50488 -8.54395 -12.1123 -19.1201 -13.8242 -31.7441zM181.184 117.248c0 41.9844 13.3125 73.04 39.9365 93.1836c10.9277 -1.02344 21.168 -4.94336 30.7197 -11.7754c-0.335938 -5.80859 -1.69629 -17.2324 -4.0957 -34.3203
+c-1.69629 -13.3115 -2.56055 -24.4004 -2.56055 -33.2803v-7.15137c-6.81543 -0.688477 -11.7754 -1.02441 -14.8477 -1.02441c-2.73633 0 -10.0635 0.864258 -22.0156 2.56055c-1.71191 -4.09668 -2.56055 -8.0166 -2.56055 -11.7764
+c0 -7.50391 2.89648 -13.9043 8.7041 -19.1836c5.80859 -5.29688 12.4639 -7.93652 19.9678 -7.93652c8.87988 0 15.8721 3.91992 20.9922 11.7764c6.14453 -2.06445 9.72852 -4.97656 10.752 -8.7207c-7.50391 -7.15137 -18.2559 -10.752 -32.2559 -10.752
+c-12.6396 0 -24.5762 3.4248 -35.8398 10.2559c-11.2637 6.80078 -16.8965 16.1924 -16.8965 28.1445zM209.856 139.264c1.35938 -2.04785 3.75977 -3.07129 7.16797 -3.07129h4.60742c3.07227 6.49609 4.6084 14.8477 4.6084 25.0879
+c0 4.43164 -1.02441 11.0879 -3.07227 19.9678c-1.02441 -2.73633 -2.71973 -7.00781 -5.12012 -12.8164c-2.38379 -5.77539 -4.35156 -11.0078 -5.8877 -15.6152c-1.53613 -4.59277 -2.30371 -9.12012 -2.30371 -13.5527zM260.544 148.992
+c-0.671875 8.87988 3.24805 13.3115 11.7764 13.3115c2.06348 0 5.12012 -0.191406 9.21582 -0.527344s7.00781 -0.496094 8.7041 -0.496094c1.02344 5.12012 1.55176 10.3994 1.55176 15.8721c0 9.8877 -1.28027 24.6553 -3.83984 44.2881
+c-2.56055 19.6318 -3.83984 34.3838 -3.83984 44.2871c0 14.6729 1.71191 26.9766 5.12012 36.8643c1.69531 -1.02344 6.22363 -1.96777 13.5674 -2.81543c7.34375 -0.848633 14.2559 -5.02441 20.7363 -12.5439c-2.04785 -8.88086 -3.07227 -20.3203 -3.07227 -34.3047
+c0 -6.83203 0.688477 -20.6553 2.06445 -41.4717c0.6875 -11.9521 1.00781 -22.3525 1.00781 -31.2324c0 -6.81543 -0.175781 -12.624 -0.511719 -17.4072h3.07129c2.38477 0 3.91992 1.02344 4.6084 3.07129c0.6875 2.04785 1.02344 4.17676 1.02344 6.38477
+s0.672852 3.34375 2.03223 3.34375c2.75195 0 5.9043 -1.47266 9.47266 -4.35254c3.59961 -2.91211 7.43945 -6.5752 11.5352 -11.0078c4.09668 -4.43164 6.65625 -7.15234 7.68066 -8.19141c-3.07227 -2.38477 -10 -3.9209 -20.752 -4.6084
+c-10.752 -0.671875 -17.3125 -1.36035 -19.6963 -2.04785c-0.335938 -4.09668 -0.511719 -10.2402 -0.511719 -18.4326c0 -5.45605 0.0957031 -11.0879 0.255859 -16.8955c0.191406 -5.79199 0.431641 -12.3037 0.78418 -19.4561
+c0.335938 -7.16797 0.496094 -12.7998 0.496094 -16.9121c-2.7207 -0.335938 -6.65625 -0.671875 -11.7764 -1.00781c-5.10449 -0.335938 -8.86426 -0.671875 -11.248 -1.00781v10.2393c0 7.16797 -0.511719 16.8965 -1.53613 29.168
+c-1.37598 15.0244 -2.06348 25.4404 -2.06348 31.248c-2.03223 0.672852 -7.50391 1.28027 -16.3682 1.77637c-8.91211 0.511719 -15.3926 2.14453 -19.4883 4.86426zM370.624 153.088c0 6.81641 0.335938 16.7197 1.02441 29.6797
+c3.74316 -0.335938 7.15137 -1.18359 10.2236 -2.55957c3.08789 -1.36035 6.65625 -3.15234 10.7676 -5.37598c4.09668 -2.22363 7.16797 -3.83984 9.2002 -4.86426l-0.496094 -13.8242c0 -20.1279 1.53613 -39.9355 4.6084 -59.3916
+c6.47949 2.38379 11.7598 6.33594 15.8555 11.7764c4.1123 5.45605 6.92871 12.5439 8.46484 21.2314c1.53516 8.7207 2.46387 15.8721 2.81543 21.5205c0.352539 5.64746 0.671875 13.2314 1.00781 22.7842v5.64746c1.00781 -0.335938 2.56055 -0.511719 4.6084 -0.511719
+c6.83203 -0.688477 15.1836 -4.95996 25.0879 -12.7998c0 -1.02441 0.0800781 -2.65625 0.255859 -4.88086c0.175781 -2.22363 0.255859 -3.83984 0.255859 -4.86328c0 -5.10449 -0.6875 -10.2402 -2.03125 -15.3604c-1.37598 -5.12012 -2.65625 -8.87988 -3.84082 -11.2637
+c-1.19922 -2.38379 -3.67969 -6.65625 -7.43945 -12.7998c-3.74414 -6.16016 -6.14453 -10.0645 -7.15234 -11.7764c-5.12012 -4.0957 -10.9434 -11.248 -17.4082 -21.5039c-7.16797 -2.38379 -13.6641 -3.60059 -19.4717 -3.60059
+c-24.208 0.0166016 -36.3359 24.2725 -36.3359 72.7363zM473.024 97.7764c2.36719 2.06348 6.46387 3.75977 12.2871 5.12012c0 1.02344 0.176758 2.55957 0.496094 4.60742c1.37598 11.9521 2.56055 21.5996 3.60059 28.9277
+c1.02344 7.34473 3.15137 17.4248 6.39941 30.2246c3.23242 12.7998 7.00879 22.96 11.248 30.4639c4.28809 7.50391 10.3359 14.2559 18.1924 20.2236c7.83984 5.98438 16.8955 8.95996 27.1201 8.95996c11.6162 0 24.5918 -4.0957 38.9277 -12.2881
+c5.79199 -12.624 8.7041 -25.4238 8.7041 -38.3838c0 -22.5283 -7.93555 -42.8477 -23.8076 -60.9434c-15.8721 -18.0967 -35.0566 -29.6807 -57.6006 -34.8164c-0.6875 -10.9277 -1.02344 -19.1201 -1.02344 -24.5762c0 -24.9277 3.07129 -44.8955 9.21582 -59.9043
+c-2.71973 0.688477 -9.04004 1.00879 -18.9443 1.00879c-5.12012 0 -8.87988 0.335938 -11.2637 1.02344c-3.07227 7.16797 -5.8877 23.5684 -8.44824 49.1523c-2.55957 25.584 -7.59961 42.6719 -15.1035 51.2002zM519.088 110.592
+c13.3125 3.4082 24.4961 11.6006 33.5518 24.5762c9.04004 12.9756 13.5684 26.4482 13.5684 40.4482c0 10.2402 -2.54395 19.792 -7.66406 28.6719c-7.85547 -7.16797 -14.5918 -16.6396 -20.2236 -28.416c-5.64844 -11.7764 -9.56836 -22.0156 -11.7764 -30.7197
+c-2.22363 -8.7207 -4.7041 -20.208 -7.45605 -34.5605z" />
+ <glyph glyph-name="uniF134" unicode=""
+d="M-68.6562 192c0 55.2324 19.5361 102.352 58.5918 141.408c39.0566 39.0557 86.1924 58.5918 141.408 58.5918c41.7598 0 78.6885 -10.6719 110.88 -32.0645c32.1445 -21.376 56.7842 -51.7598 73.9844 -91.168c5.04004 -12.1279 26.752 -62.6396 65.1357 -151.52
+c7.07227 -16.1445 13.376 -28.5439 18.96 -37.1201c5.55273 -8.5918 13.7764 -16.1123 24.7363 -22.7041c10.9443 -6.57617 24.3359 -10.1914 40.1758 -10.8955h3.52051c22.5596 0 41.248 6.08008 56.0801 18.1914c15.4717 12.7998 23.3916 28.9922 23.7275 48.4961
+c0 9.07227 -1.36035 16.6719 -4.04785 22.7363c-2.7041 6.04785 -7.66406 11.4395 -14.8965 16.1758c-7.23145 4.68848 -14.0479 8.30371 -20.4639 10.832c-6.39941 2.54395 -16.3359 5.98438 -29.8076 10.3516c-42.0645 13.8242 -72.3682 28.8643 -90.8965 45.2002
+c-18.5273 16.3359 -27.7754 39.1367 -27.7754 68.4326c0 30.6396 9.66406 55.1357 29.04 73.4873c19.3438 18.3525 45.6953 27.5361 79.0234 27.5361c42.7686 0 74.9443 -19.3594 96.4805 -58.0957l-42.4482 -21.6963c-15.1357 20.8643 -33.9844 31.3125 -56.5439 31.3125
+c-15.4883 0 -28.3516 -4.7998 -38.6396 -14.3848c-10.2725 -9.59961 -15.4248 -21.8076 -15.4248 -36.6396c0 -4.36816 0.336914 -8.49609 1.04004 -12.3682c0.672852 -3.8877 2.08008 -7.32812 4.30469 -10.3516c2.17578 -3.00781 4.19141 -5.72852 6.04785 -8.08008
+c1.83984 -2.35254 4.78418 -4.7998 8.84766 -7.32812c4 -2.49609 7.4082 -4.44824 10.0801 -5.80762c2.7041 -1.34473 6.91211 -3.12012 12.624 -5.3125c5.71191 -2.17578 10.1924 -3.77539 13.3926 -4.7998c3.19922 -1.02441 8.51172 -2.67188 15.9033 -5.02441
+c7.4082 -2.38379 12.9922 -4.06348 16.7041 -5.05566c36.3359 -12.1123 62.3359 -26.2559 78.0156 -42.416c15.6484 -16.1602 23.4883 -39.7275 23.4883 -70.7197c0 -33.6641 -12.7998 -61.6006 -38.3682 -83.8398c-25.2959 -21.8721 -56.5918 -32.8164 -93.9678 -32.8164
+h-1.51953c-33.6641 0 -60.7686 7.82422 -81.3125 23.4717c-20.5273 15.6641 -37.8721 39.3125 -52 71.0088l-7.07227 16.624l-64.1592 145.472c-11.1201 25.9355 -28.7041 46.7998 -52.7842 62.624c-24.0801 15.8398 -50.752 23.7275 -80.0479 23.7275
+c-40.0645 0 -74.3203 -14.2236 -102.769 -42.6553c-28.4639 -28.4805 -42.6875 -62.752 -42.6875 -102.816s14.2393 -74.3203 42.6719 -102.768c28.4482 -28.4482 62.7041 -42.7041 102.768 -42.7041c27.6162 0 52.8643 7.15137 75.7441 21.4717
+c22.9121 14.3359 40.5918 33.2324 53.04 56.8477l25.7598 -59.6152c-18.5273 -22.8965 -41.2314 -40.8486 -68.1758 -53.7607c-26.9443 -12.9912 -55.7275 -19.4717 -86.3682 -19.4717c-55.2158 0 -102.352 19.5518 -141.408 58.5762
+c-39.0557 39.0723 -58.5918 86.208 -58.5918 141.424z" />
+ <glyph glyph-name="uniF102" unicode=""
+d="M16.9756 141.312v137.729c0 8.87988 3.24805 16.4639 9.72852 22.7842c6.47949 6.31934 14 9.47168 22.5283 9.47168c8.87988 0 16.4639 -3.15234 22.7832 -9.47168c6.32031 -6.32031 9.47266 -13.9199 9.47266 -22.7842v-137.729
+c0 -8.87988 -3.16797 -16.4639 -9.47266 -22.7832c-6.30371 -6.32031 -13.9033 -9.47266 -22.7832 -9.47266c-8.88086 0 -16.4648 3.15234 -22.7842 9.47266c-6.32031 6.31934 -9.47266 13.9033 -9.47266 22.7832zM105.552 90.1123v214.016h293.889v-214.016
+c0 -8.87988 -3.15234 -16.4639 -9.47266 -22.7842c-6.31934 -6.32031 -13.9033 -9.47168 -22.7842 -9.47168h-229.392c-8.86426 0 -16.4639 3.15137 -22.7842 9.47168c-6.31934 6.32031 -9.45605 13.9043 -9.45605 22.7842zM105.552 328.192
+c0 39.248 14.4961 71.5039 43.5039 96.7676c29.0244 25.2637 63.4883 37.8877 103.44 37.8877c39.9199 0 74.416 -12.624 103.408 -37.8877c29.04 -25.2637 43.5361 -57.5195 43.5361 -96.7676h-293.889zM157.264 489.984c0 -1.02441 8.17676 -16.5605 24.5762 -46.5928
+l7.67969 4.09668l-25.0879 45.5674c-1.35938 0.688477 -2.55957 1.02441 -3.58398 1.02441c-2.38379 0 -3.58398 -1.36035 -3.58398 -4.0957zM164.944 76.7998c0 9.21582 3.24805 16.8965 9.72754 23.04c6.48047 6.14453 14.5117 9.21582 24.0645 9.21582
+c8.54395 0 16.0479 -3.24805 22.5273 -9.72754c6.48047 -6.48047 9.72852 -13.9844 9.72852 -22.5283v-103.424c0 -9.56836 -3.24805 -17.3115 -9.72852 -23.2959c-6.47949 -5.96777 -14.5117 -8.95996 -24.0635 -8.95996c-8.87988 0 -16.4639 3.15234 -22.7842 9.47168
+c-6.32031 6.32031 -9.47168 13.9043 -9.47168 22.7842v103.424zM167.504 394.24c0 -5.45605 1.95215 -10.2402 5.8877 -14.3359c3.93652 -4.09668 8.62402 -6.14453 14.0801 -6.14453c5.80859 0 10.6719 1.95215 14.5928 5.88867
+c3.91992 3.91992 5.8877 8.7832 5.8877 14.5918c0 5.45605 -1.95215 10.1436 -5.8877 14.0801c-3.9209 3.91992 -8.62402 5.8877 -14.0801 5.8877s-10.2402 -1.96777 -14.3359 -5.8877c-4.09668 -3.93652 -6.14453 -8.62402 -6.14453 -14.0801zM274 76.7998
+c0 9.21582 3.31152 16.8965 9.96777 23.04c6.65625 6.14453 14.5918 9.21582 23.8086 9.21582c8.87988 0 16.4639 -3.15137 22.7832 -9.47168c6.32031 -6.33594 9.47266 -13.9199 9.47266 -22.7998v-103.424c0 -9.56836 -3.23242 -17.3125 -9.71191 -23.2959
+c-6.48047 -5.96875 -14.4961 -8.96094 -24.0645 -8.96094c-8.87988 0 -16.4639 3.15234 -22.7842 9.47266c-6.31934 6.32031 -9.47168 13.9043 -9.47168 22.7842v103.439zM297.024 394.24c0 -5.45605 1.9834 -10.2402 5.90332 -14.3359
+c3.91992 -4.09668 8.62402 -6.14453 14.0801 -6.14453s10.2402 1.95215 14.3359 5.88867c4.09668 3.91992 6.14453 8.7832 6.14453 14.5918c0 5.45605 -1.96875 10.1436 -5.88867 14.0801c-3.93555 3.91992 -8.62402 5.8877 -14.0801 5.8877
+c-5.45508 0 -10.2393 -1.96777 -14.3359 -5.8877c-4.11133 -3.93652 -6.15918 -8.62402 -6.15918 -14.0801zM315.472 447.488l7.68066 -4.6084l24.5752 45.5684v1.02344c0 3.07227 -1.18359 4.6084 -3.58398 4.6084c-2.39941 0 -5.55176 -3.15234 -9.4873 -9.47168
+c-3.9043 -6.30469 -7.93652 -13.8242 -12.0322 -22.5283s-6.46387 -13.5684 -7.15234 -14.5918zM423.504 141.312v137.217c0 8.87988 3.15234 16.5596 9.47168 23.04c6.32031 6.47949 13.9043 9.72754 22.7842 9.72754s16.4639 -3.24805 22.7842 -9.72754
+c6.32031 -6.48047 9.47168 -14.1602 9.47168 -23.04v-137.217c0 -8.87988 -3.15137 -16.4639 -9.47168 -22.7832c-6.32031 -6.32031 -13.9043 -9.47266 -22.7842 -9.47266s-16.5596 3.15234 -23.0234 9.47266c-6.5127 6.31934 -9.58398 13.9033 -9.23242 22.7832z" />
+ <glyph glyph-name="uniF13D" unicode=""
+d="M-18.4961 116.736c-0.335938 21.5195 3.83984 41.3916 12.5439 59.6475c8.7041 18.2725 20.1279 33.4561 34.3037 45.584c14.1602 12.1123 29.8564 22.8643 47.1045 32.2559c17.2324 9.37598 34.4795 16.7207 51.7119 22.0166s33.0244 9.64746 47.3604 13.0557
+s25.9521 5.63184 34.8154 6.65625l13.3125 1.53613v-62.9766c-19.4561 -1.35938 -37.2959 -4.6875 -53.5039 -9.9834s-29.4404 -11.5205 -39.6807 -18.6885c-10.2393 -7.16797 -19.2959 -14.9434 -27.1357 -23.2959c-7.83984 -8.36816 -13.8242 -16.5596 -17.9199 -24.5762
+c-4.0957 -8.01562 -7.34375 -15.2637 -9.72754 -21.7598c-2.38477 -6.48047 -3.76074 -11.7764 -4.09668 -15.8721l-1.02344 -6.14355c-1.02441 -5.10449 -1.53613 -10.2402 -1.53613 -15.3604c0 -7.50391 1.18359 -14.6719 3.58398 -21.5039
+c4.0957 -11.6162 10.5918 -21.5039 19.4561 -29.6797c8.87988 -8.20801 18.9434 -15.792 30.208 -22.8008c11.2637 -6.99121 22.8799 -12.624 34.8154 -16.8955c11.9365 -4.27246 22.8643 -7.93652 32.7686 -11.0078c9.90332 -3.07227 17.9199 -5.2959 24.0635 -6.65625
+l9.72852 -1.55176v-52.7363c-33.1045 3.4082 -63.0566 9.3916 -89.8564 17.9199s-48.3838 18.1758 -64.7676 28.9277s-30.5605 22.2881 -42.4961 34.5605c-11.9365 12.2715 -20.6562 24.3193 -26.1123 36.0957s-9.64746 22.3525 -12.5439 31.7441
+c-2.89551 9.37598 -4.52832 16.9756 -4.86426 22.7842zM242.624 -64v461.824l72.6875 50.1758v-472.064zM332.736 238.592h-0.0166016v58.8799l26.624 -2.55957c18.0801 -1.71191 39.5205 -6.99219 64.2559 -15.8721c24.752 -8.87988 43.9521 -20.6562 57.6162 -35.3281
+l54.7842 31.2324v-125.44l-160.24 39.9365l42.4805 17.4072l-10.752 8.19238c-7.52051 5.12012 -18.4326 10.416 -32.7686 15.8721c-13.3115 4.76758 -26.4473 7.34375 -39.4395 7.67969h-2.54395z" />
+ <glyph glyph-name="uniF164" unicode=""
+d="M273.806 46.0225c103.522 0 138.494 4.68848 138.494 4.68848s-5.37891 82.5752 -43.1631 97.4131c-37.7842 14.8682 -47.0264 12.7559 -60.1533 20.6689c-0.320312 0.185547 -0.639648 0.381836 -0.96875 0.546875v22.2354
+c12.5703 11.0254 22.6064 27.6348 28.4492 46.6348c6.82031 7.32617 10.7568 15.9512 10.7568 25.1729c0 6.32617 -1.86523 12.3545 -5.24512 17.9082c-2.21484 46.5527 -31.8281 77.3613 -68.0771 77.3613c-36.2285 0 -65.8418 -30.8086 -68.0781 -77.3613
+c-3.36914 -5.55371 -5.24414 -11.582 -5.24414 -17.9082c0 -9.22168 3.93555 -17.8467 10.7568 -25.1729c5.86328 -19 15.8887 -35.6201 28.46 -46.6455v-22.2246c-0.320312 -0.165039 -0.649414 -0.361328 -0.979492 -0.546875
+c-13.0957 -7.91309 -22.3594 -5.80078 -60.123 -20.6689c-37.7842 -14.8379 -43.1934 -97.4131 -43.1934 -97.4131s34.7852 -4.68848 138.309 -4.68848zM447.745 448.491l219.317 -255.896l-219.317 -255.866h-423.468c-13.4678 0 -24.3691 10.8916 -24.3691 24.3486
+v463.045c0 13.457 10.9014 24.3682 24.3691 24.3682h423.468z" />
+ <glyph glyph-name="uniF10A" unicode=""
+d="M0 49.6641c3.75456 5.11979 9.13053 9.47168 16.1279 13.0557s15.36 6.9974 25.0879 10.2402s16.64 5.88835 20.7363 7.93652c6.48503 0 12.2021 -0.768229 17.1514 -2.30469c4.94987 -1.53581 10.6673 -4.0957 17.1523 -7.67969
+c6.48568 -3.58398 10.7523 -5.71745 12.7998 -6.40039c16.043 -7.16797 60.4163 -27.4772 133.12 -60.9277c6.48568 -1.36523 12.5443 -1.36523 18.1758 0c5.63216 1.36523 12.3737 4.35189 20.2246 8.95996c7.85026 4.60807 11.9463 7.08268 12.2881 7.42383
+c6.82617 3.07227 19.8822 8.96029 39.168 17.6641c19.2852 8.70443 34.2184 15.446 44.7998 20.2246c1.36523 0.682292 8.44792 4.26628 21.248 10.752c12.8001 6.48503 23.1253 10.5811 30.9756 12.2881c4.4375 0.682292 9.13086 0.511393 14.0801 -0.512695
+s8.95996 -2.30404 12.0322 -3.83984s6.99772 -3.75456 11.7764 -6.65625c4.77865 -2.90104 7.85059 -4.69303 9.21582 -5.37598c1.36523 -0.682292 4.01042 -1.70605 7.93555 -3.07129c3.92578 -1.36589 7.08333 -2.73145 9.47266 -4.09668
+s4.2666 -3.24251 5.63184 -5.63184c1.02409 -1.36523 1.70671 -3.75456 2.04785 -7.16797c-3.41341 -4.4375 -8.7041 -8.53353 -15.8721 -12.2881c-7.16797 -3.75456 -15.8721 -7.50911 -26.1123 -11.2637c-10.2396 -3.75456 -17.0661 -6.48535 -20.4795 -8.19238
+c-14.6777 -6.82682 -36.6084 -17.3229 -65.792 -31.4883c-29.1842 -14.1647 -51.1149 -24.6605 -65.792 -31.4873c-2.38932 -1.02409 -5.97331 -2.98698 -10.752 -5.88867c-4.77865 -2.90104 -8.78939 -5.11947 -12.0322 -6.65527
+c-3.24284 -1.53646 -7.59473 -3.41374 -13.0557 -5.63184c-5.46159 -2.21875 -10.1549 -3.41341 -14.0801 -3.58398c-3.92578 -0.171224 -8.96061 0.0846354 -15.1045 0.767578l-135.168 62.9756c-2.04818 1.02409 -7.50944 3.41341 -16.3838 7.16797
+c-8.875 3.75521 -17.6644 7.51009 -26.3682 11.2646c-8.70378 3.75456 -17.8343 7.85059 -27.3916 12.2881c-9.55729 4.43685 -17.4935 8.44727 -23.8086 12.0312c-6.31445 3.58398 -9.98372 6.40007 -11.0078 8.44824c-1.36523 1.36523 -2.04785 3.58398 -2.04785 6.65625z
+M0 186.88c3.75456 5.11979 9.13053 9.38639 16.1279 12.7998s15.5306 6.82682 25.5996 10.2402c10.0697 3.41341 17.1523 5.97331 21.248 7.67969c6.48568 0 12.2884 -0.767904 17.4082 -2.30371c5.12044 -1.53581 11.0085 -4.0957 17.6641 -7.67969
+c6.65625 -3.58398 11.0081 -5.88802 13.0557 -6.91211c14.3366 -6.48568 35.9261 -16.3844 64.7686 -29.6963s50.6025 -23.3812 65.2803 -30.208c6.48503 -1.70638 12.7995 -1.79167 18.9434 -0.255859c6.14388 1.53581 12.8001 4.43717 19.9688 8.7041
+c7.16797 4.26693 11.4346 6.74154 12.7998 7.42383c23.2103 10.9225 50.5169 23.2106 81.9199 36.8643c3.75456 1.70638 9.13053 4.52246 16.1279 8.44824c6.9974 3.92513 13.568 7.25293 19.7119 9.9834c6.14388 2.73112 12.2878 4.6084 18.4316 5.63184
+c5.46159 1.02409 10.8376 0.853516 16.1279 -0.511719c5.29102 -1.36523 11.6911 -4.2666 19.2002 -8.7041c7.50977 -4.4375 11.4352 -6.65625 11.7764 -6.65625c1.70638 -1.02344 4.35156 -2.13249 7.93555 -3.32715s6.65592 -2.56022 9.21582 -4.09668
+c2.56055 -1.53581 4.52344 -3.3278 5.88867 -5.37598c1.02409 -1.70638 1.70671 -4.0957 2.04785 -7.16797c-3.41341 -4.77865 -8.78939 -9.13053 -16.1279 -13.0557s-16.2985 -7.7653 -26.8799 -11.5205c-10.5814 -3.75456 -17.5788 -6.48503 -20.9922 -8.19141
+c-16.3841 -7.85091 -39.5094 -18.9443 -69.376 -33.2803s-50.7731 -24.4053 -62.7197 -30.208c-2.38932 -1.02409 -6.82682 -3.41341 -13.3125 -7.16797c-6.48503 -3.75456 -11.4342 -6.31445 -14.8477 -7.67969s-8.96029 -3.07194 -16.6406 -5.12012
+c-7.67969 -2.04818 -13.7383 -2.04818 -18.1758 0c-73.0449 34.4746 -117.418 55.2959 -133.12 62.4639c-2.04753 1.02409 -9.55664 4.2666 -22.5273 9.72754c-12.9707 5.46159 -24.832 10.5817 -35.584 15.3604s-21.248 9.81348 -31.4883 15.1045
+c-10.2402 5.29036 -16.043 9.13021 -17.4082 11.5195c-1.36523 1.36523 -2.04785 3.75456 -2.04785 7.16797zM0 323.584c3.41341 5.11979 8.78939 9.64258 16.1279 13.5684c7.33854 3.92513 16.2985 7.76497 26.8799 11.5195s17.5788 6.48535 20.9922 8.19238
+l178.176 82.9434c10.2402 0 19.3711 -1.19466 27.3926 -3.58398c8.02083 -2.38932 17.6634 -6.8265 28.9277 -13.3115c11.2637 -6.48568 18.0902 -10.2402 20.4795 -11.2637c13.3125 -6.14453 33.2806 -15.446 59.9043 -27.9043
+c26.6243 -12.459 46.5924 -21.7604 59.9043 -27.9043c1.36523 -0.682292 7.5944 -3.24219 18.6875 -7.67969c11.0938 -4.4375 20.3952 -8.53353 27.9043 -12.2881s12.1172 -7.16797 13.8242 -10.2402c1.02409 -1.36523 1.70671 -3.58398 2.04785 -6.65625
+c-3.07227 -4.43685 -7.50977 -8.27669 -13.3125 -11.5195c-5.80208 -3.24284 -13.2259 -6.48568 -22.2715 -9.72852c-9.04557 -3.24219 -14.9336 -5.5459 -17.6641 -6.91113c-16.043 -7.50977 -39.9362 -18.8594 -71.6797 -34.0488
+c-31.7441 -15.1888 -55.4668 -26.5381 -71.168 -34.0479c-2.04818 -1.02409 -5.46159 -2.90137 -10.2402 -5.63184s-8.7041 -4.86361 -11.7764 -6.39941c-3.07161 -1.53646 -7.33822 -3.32878 -12.7998 -5.37695c-5.46159 -2.04753 -10.0697 -3.07129 -13.8242 -3.07129
+c-3.75456 0 -8.5332 0.170573 -14.3359 0.511719c-83.6263 38.9121 -127.317 59.2214 -131.072 60.9277c-1.36523 0.682943 -12.1172 5.3763 -32.2559 14.0801c-20.1387 8.70443 -37.5465 16.6406 -52.2236 23.8086c-14.6771 7.16797 -22.8691 12.2878 -24.5762 15.3594
+c-1.36523 1.36523 -2.04785 3.58398 -2.04785 6.65625z" />
+ <glyph glyph-name="uniF104" unicode=""
+d="M-78.5283 233.984c0 35.8398 8.95996 67.9199 26.8799 96.2559c17.9209 28.3359 41.2168 50.7676 69.8887 67.3281c28.6719 16.5596 59.4717 29.1035 92.416 37.6318c32.9434 8.52734 66.1279 12.7998 99.584 12.7998c9.90332 0 17.248 -0.175781 22.0156 -0.511719
+c39.248 -2.04785 77.8242 -9.04004 115.712 -20.9922c29.6807 -9.56836 58.0322 -22.2725 84.9922 -38.1445c26.9756 -15.8711 51.9678 -34.4795 75.0078 -55.8076c23.0244 -21.3281 41.4727 -46.3359 55.2803 -75.0078c13.8398 -28.6719 20.752 -58.7041 20.752 -90.1123
+c0 -4.43164 -0.175781 -7.66406 -0.511719 -9.72754c-3.76074 -51.8721 -24.3359 -95.5684 -61.6963 -131.057c-37.3604 -35.4873 -83.1836 -60.5918 -137.472 -75.2637c-36.5283 -10.2559 -75.6006 -15.376 -117.265 -15.376h-4.0957
+c-68.6084 0 -122.368 9.04004 -161.28 27.1201c-2.04785 0.6875 -3.24805 1.71191 -3.58398 3.08789c0 0.671875 0.512695 1.00781 1.53613 1.00781c0.335938 0 0.944336 -0.0800781 1.79199 -0.271484c0.848633 -0.160156 1.45605 -0.255859 1.79199 -0.255859
+c17.0723 -4.09668 32.2559 -6.14453 45.5684 -6.14453c8.19141 0 16.208 0.767578 24.0635 2.30371c7.85645 1.53613 15.2803 4.95996 22.2725 10.2559c7.00781 5.28027 10.4961 12.0322 10.4961 20.2246c0 4.0957 -1.02441 8.19141 -3.07227 12.2881
+c-3.07227 5.47168 -13.0557 11.1836 -29.9521 17.1514c-16.8955 5.96875 -36.3516 11.6807 -58.3682 17.1523c-22.0156 5.47168 -34.8955 8.87988 -38.6553 10.2402c-27.3125 8.87988 -51.0244 20.1436 -71.168 33.792c0 0.335938 0.591797 1.96777 1.79199 4.86426
+c1.19922 2.91113 2.22363 5.3916 3.07129 7.42383c0.864258 2.06348 2.04785 4.0957 3.58398 6.16016c1.53613 2.03125 2.99219 3.05566 4.35254 3.05566h91.6475c3.07227 0 5.88867 -3.66406 8.44824 -11.0078c2.56055 -7.34473 6.14453 -14.7686 10.752 -22.2881
+c4.6084 -7.50391 10.6719 -11.248 18.1758 -11.248c6.14453 0 11.4404 1.95215 15.8721 5.87207c4.43262 3.93555 6.65625 8.97559 6.65625 15.1035c0 3.74414 -14.3359 37.7119 -43.0078 101.889c-28.6719 64.1592 -46.7686 103.6 -54.2725 118.271
+c-2.03125 5.15234 -4.76758 7.71191 -8.17578 7.71191c-2.71973 0 -4.94434 -1.53613 -6.65625 -4.60742l-1.53613 -3.07227c-2.73535 -5.12012 -11.6152 -24.5762 -26.623 -58.3682l-54.7842 -121.855l-3.58398 -7.68066
+c-32.4326 37.2002 -48.6406 77.1523 -48.6406 119.809v0zM33.0879 148.992c0 3.4082 9.21582 25.4238 27.6484 66.0322l2.55957 1.53516c2.04785 0 7.60059 -10.8477 16.6396 -32.5117c9.04004 -21.6641 13.5684 -33.5361 13.5684 -35.584
+c0 -1.36035 -0.847656 -2.04785 -2.55957 -2.04785h-55.2959c-1.71289 0.015625 -2.56055 0.864258 -2.56055 2.57617zM190.272 86.0156c0 -15.3594 8.01562 -23.04 24.0635 -23.04c16.0322 0 24.0645 7.68066 24.0645 23.04v198.656
+c0 15.3604 -8.0166 23.04 -24.0645 23.04s-24.0635 -7.67969 -24.0635 -23.04v-198.656zM284.992 86.0156c0 -15.3594 8 -23.04 24.0635 -23.04c16.0322 0 24.0645 7.68066 24.0645 23.04v92.6729l47.0879 -94.7207c4.43164 -9.90332 11.4404 -14.8477 20.9922 -14.8477
+c10.9121 0 18.7676 4.94434 23.5518 14.8477l46.5918 94.7207v-92.6729c0 -15.3594 8.0166 -23.04 24.0645 -23.04c16.3838 0 24.5762 7.68066 24.5762 23.04v198.656c0 15.3604 -8.03223 23.04 -24.0645 23.04c-11.9521 0 -19.9678 -4.94434 -24.0635 -14.8477
+l-70.6562 -154.624l-68.0801 154.624c-4.78418 9.90332 -12.9766 14.8477 -24.5918 14.8477c-15.6807 0 -23.5361 -7.67969 -23.5361 -23.04v-198.656z" />
+ <glyph glyph-name="uniF154" unicode=""
+d="M82.4961 267.264c-3.75977 51.5361 17.7441 94.5439 64.5117 129.024c21.5039 16.0322 46.2402 28 74.2402 35.8398c26.624 7.85645 56.4795 9.72852 89.5996 5.63184c33.1045 -4.0957 64 -14.1602 92.6719 -30.208c-0.671875 -13.6641 -0.671875 -26.624 0 -38.9121
+c2.04883 -40.624 0.336914 -66.7354 -5.10352 -78.3359c-3.07227 0.335938 -11.9521 2.7207 -26.624 7.16797c-12.3037 3.76074 -23.5684 6.48047 -33.792 8.19238c-10.5762 2.04785 -20.9922 3.4082 -31.2324 4.0957c-23.9033 2.04785 -40.7832 -4.43164 -50.6875 -19.4561
+c2.71973 -15.0234 9.21582 -26.2881 19.4561 -33.792c10.2402 -7.16797 24.2402 -13.4873 41.9834 -18.9434c16.7207 -4.78418 28.4961 -9.2168 35.3281 -13.3125c38.5762 -23.9043 62.3047 -61.2803 71.168 -112.128v-43.5195
+c0 -27.6484 -7.59961 -51.9688 -22.7832 -72.96c-15.1846 -20.9922 -35.4248 -36.7842 -60.6885 -47.376c-35.8242 -15.0088 -77.5684 -21.6006 -125.168 -19.6963c-47.6162 1.87207 -88.4961 12.0322 -122.624 30.4482c1.02441 14 1.02441 27.4873 0 40.4473
+c-1.02441 14.3359 -1.36035 28.1768 -1.02441 41.4883c0.672852 14.6719 2.7207 26.4316 6.14453 35.3125c6.14355 -1.00879 14.3359 -2.89648 24.5762 -5.63281c18.0801 -5.12012 30.7197 -8.35156 37.8877 -9.71191c56.3203 -12.3037 86.5283 -5.47168 90.624 20.4639
+c1.02441 7.50488 -0.767578 14.416 -5.37598 20.7363c-4.6084 6.33594 -10.4961 11.3604 -17.6641 15.1045c-9.56836 4.7832 -17.7441 8.52734 -24.5762 11.2637c-9.8877 4.0957 -16.2236 6.99219 -18.96 8.7041c-15.0078 7.83984 -25.0879 13.3115 -30.208 16.3682
+c-19.4561 11.6152 -33.1035 23.2158 -40.96 34.8154c-18.4316 26.3203 -28.6719 52.6084 -30.7197 78.8799z" />
+ <glyph glyph-name="uniF11B" unicode=""
+d="M37.1523 -0.511719c1.02344 10.5762 3.07129 21.8555 6.14355 33.792c3.74414 15.3594 16.0322 75.1836 36.8643 179.456c20.8154 104.271 32.9277 163.936 36.3516 178.943c4.09668 17.7441 8.19238 30.1279 12.2881 37.1201
+c4.09668 7.00781 10.752 12.0322 19.9678 15.1045c9.2168 3.07129 24.0645 4.60742 44.5439 4.60742h123.393c20.1436 0 43.168 -0.175781 69.1035 -0.511719c25.9521 -0.335938 45.7441 -0.511719 59.4082 -0.511719c14 0 22.5283 -7.68066 25.6006 -23.04
+c3.40723 -16.3838 -0.496094 -32.0801 -11.7764 -47.1045c-10.2402 -13.6641 -24.0645 -20.4795 -41.4717 -20.4795h-205.312l-25.5996 -119.296l180.224 -1.53613c15.0244 0 24.2402 -7.68066 27.6641 -23.04c3.4082 -15.3604 -0.192383 -29.6963 -10.752 -43.0078
+c-9.21582 -11.2646 -21.168 -16.8965 -35.8398 -16.8965h-184.336l-24.5762 -126.976h221.184c21.8408 0 34.9121 -7.42383 39.168 -22.2725c4.25684 -14.8477 1.36035 -29.7754 -8.70312 -44.8154c-10.0645 -15.0088 -21.6006 -22.5127 -34.5605 -22.5127h-283.136
+c-10.2402 0 -18.3525 2.89648 -24.3203 8.7041c-5.9834 5.79199 -9.64746 13.6641 -11.0078 23.5518c-1.36035 9.88867 -1.53613 20.1445 -0.511719 30.7207z" />
+ <glyph glyph-name="uniF115" unicode=""
+d="M-6.14355 174.592l109.567 83.4561l-109.567 82.9443l159.231 103.936l103.937 -89.0879l106.495 89.0879l154.624 -98.8154l-101.376 -84.4805l101.376 -87.04l-157.184 -94.7197l-103.936 79.8721l-103.937 -79.8721zM102.912 46.0801v29.1836l48.1279 -28.1602
+l103.936 79.3604l0.512695 -0.511719v-181.76zM105.472 259.072l150.528 -94.7207l151.552 100.353l-150.527 86.5283zM255.488 -55.8076l0.511719 181.76l1.02441 0.511719l103.424 -79.3604l51.2002 30.7207v-32.2559z" />
+ <glyph glyph-name="uniF107" unicode=""
+d="M36.6084 366.08c0 20.4795 21.6641 37.8877 65.0234 52.2236c43.3604 14.3359 95.5684 21.5039 156.672 21.5039c61.4404 0 113.744 -7.16797 156.944 -21.5039s64.752 -31.7441 64.752 -52.2236c0 -4.0957 -12.3037 -79.1836 -36.8643 -225.28
+c-3.07129 -15.6963 -22.0156 -30.8955 -56.8477 -45.5674c-34.8164 -14.6729 -77.4717 -22.0166 -128 -22.0166c-50.5117 0 -93.168 7.34375 -128 22.0166c-34.8164 14.6719 -53.584 29.8555 -56.3203 45.5674c-24.8955 141.312 -37.3594 216.4 -37.3594 225.28z
+M91.3916 68.6084v2.04785c0 5.80762 2.56055 8.7041 7.68066 8.7041c2.04785 0 4.0957 -0.864258 6.14355 -2.56055c16.0322 -12.624 36.8643 -22.5117 62.4639 -29.6963c25.6006 -7.15137 47.1045 -11.0879 64.5127 -11.7598l26.1113 -1.55176
+c2.75195 0 6.40039 0.0957031 11.0078 0.272461c4.6084 0.175781 13.585 1.00781 26.8965 2.55957c13.3115 1.53613 26.0156 3.66406 38.1279 6.38379c12.1279 2.73633 25.5361 7.00781 40.208 12.8164c14.6719 5.79199 27.1357 12.7998 37.376 20.9922l5.64844 2.55957
+c5.45605 0 8.19141 -2.89551 8.19141 -8.7041c0 -0.6875 -0.175781 -1.37598 -0.511719 -2.04785c-7.52051 -41.2959 -12.6396 -68.7842 -15.3604 -82.4316c-3.74414 -16.7207 -20.1436 -30.6406 -49.1514 -41.7285c-28.9922 -11.0879 -63.1367 -16.624 -102.4 -16.624
+c-39.248 0 -73.376 5.53613 -102.384 16.624s-45.2324 25.0078 -48.6406 41.7285c-6.52734 32.3994 -11.8232 59.8877 -15.9199 82.416zM116.48 373.76c0 -8.19141 13.9033 -15.2793 41.7275 -21.248c27.8242 -5.9834 61.1836 -8.95996 100.08 -8.95996
+c39.2637 0 72.7998 2.89648 100.624 8.7041c27.8076 5.80859 41.7119 12.7998 41.7119 20.9922c0 8.52832 -13.9043 15.7764 -41.7119 21.7598c-27.8242 5.98438 -61.3604 8.95996 -100.624 8.95996c-39.248 0 -72.6885 -2.91211 -100.336 -8.7041
+c-27.6484 -5.80762 -41.4717 -12.96 -41.4717 -21.5039zM187.648 193.024c0 -19.4561 6.91113 -36.0801 20.7354 -49.9365c13.8242 -13.8076 30.4639 -20.7197 49.9199 -20.7197c19.4727 0 36.0967 6.91211 49.9365 20.7197
+c13.8076 13.8398 20.7197 30.4639 20.7197 49.9365c0 19.4717 -6.91211 36.0957 -20.7197 49.9199c-13.8398 13.8232 -30.4639 20.7354 -49.9365 20.7354c-19.4561 0 -36.0801 -6.91211 -49.9199 -20.7354c-13.8242 -13.8242 -20.7354 -30.4639 -20.7354 -49.9199z
+M222.976 193.024c0 9.55176 3.4082 17.8398 10.2402 24.832c6.81641 6.99121 15.1846 10.4951 25.0723 10.4951c9.9043 0 18.2715 -3.50391 25.0879 -10.4951c6.83203 -6.99219 10.2559 -15.2803 10.2559 -24.832c0 -9.55273 -3.42383 -17.8242 -10.2559 -24.832
+c-6.7998 -6.99219 -15.1836 -10.4961 -25.0879 -10.4961c-9.8877 0 -18.2402 3.50391 -25.0723 10.4961c-6.83203 6.99121 -10.2402 15.2793 -10.2402 24.832z" />
+ <glyph glyph-name="uniF124" unicode=""
+d="M0 195.072c0 34.8158 6.82682 67.9251 20.4805 99.3281c26.9648 63.4876 72.1914 108.714 135.68 135.68c31.4023 13.653 64.5117 20.4795 99.3281 20.4795c34.8158 0 67.9251 -6.8265 99.3281 -20.4795c62.8053 -26.6243 108.032 -71.8509 135.68 -135.68
+c13.653 -32.4271 20.4795 -65.5365 20.4795 -99.3281c0 -33.7923 -6.8265 -66.9017 -20.4795 -99.3281c-27.6478 -64.1706 -72.8743 -109.739 -135.68 -136.704c-31.403 -13.6536 -64.5124 -20.4805 -99.3281 -20.4805c-34.8164 0 -67.9258 6.82682 -99.3281 20.4805
+c-63.4883 27.3066 -108.715 72.8747 -135.68 136.704c-13.6536 31.4023 -20.4805 64.5117 -20.4805 99.3281zM39.9355 195.072c0 -48.1283 14.3363 -91.1364 43.0088 -129.024c28.3307 -37.2051 65.3652 -63.6582 111.104 -79.3594v40.96
+c0 20.4798 6.82682 35.3278 20.4805 44.5439c-6.82682 0.341146 -14.8483 1.53581 -24.0645 3.58398c-17.4082 3.07161 -32.2562 8.53288 -44.5439 16.3838c-31.0612 18.7734 -46.5918 52.736 -46.5918 101.888c0 25.6003 8.5332 47.4456 25.5996 65.5361
+c-7.85026 20.1387 -6.99674 41.984 2.56055 65.5361h10.2393c3.41341 0 7.68034 -0.853516 12.8008 -2.56055c13.3118 -4.0957 28.1598 -11.6048 44.5439 -22.5273c20.821 5.46094 41.3008 8.19141 61.4395 8.19141s40.7894 -2.73047 61.9521 -8.19141
+c13.3118 8.87435 25.7705 15.7008 37.376 20.4795c10.9225 4.09635 18.7731 5.80306 23.5518 5.12012l6.14453 -0.511719c9.21615 -23.5521 10.0693 -45.3975 2.55957 -65.5361c17.0671 -18.0905 25.6006 -39.9359 25.6006 -65.5361
+c0 -38.2292 -9.38672 -67.0719 -28.1602 -86.5283c-10.2402 -10.9225 -23.723 -19.4557 -40.4482 -25.5996c-13.9948 -5.11979 -29.5254 -8.3623 -46.5918 -9.72754c13.9948 -9.89909 20.9922 -24.7471 20.9922 -44.5439v-40.96
+c44.0319 15.7012 80.3838 42.4958 109.056 80.3838c27.9896 37.5462 41.9844 80.2129 41.9844 128c0 29.013 -5.63216 57.0023 -16.8965 83.9678c-10.9225 25.9414 -26.2826 48.8109 -46.0801 68.6084c-19.1146 19.1146 -41.9837 34.3037 -68.6074 45.5674
+c-27.3066 11.6055 -55.1253 17.4082 -83.4561 17.4082c-27.9896 0 -55.9792 -5.80273 -83.9688 -17.4082c-25.5996 -10.9225 -48.4688 -26.1117 -68.6074 -45.5674c-19.1146 -19.7975 -34.4746 -42.667 -46.0801 -68.6084
+c-11.2643 -26.9655 -16.8965 -54.9548 -16.8965 -83.9678z" />
+ <glyph glyph-name="uniF162" unicode=""
+d="M68.6084 146.432c0.351562 17.7607 1.87207 32.7686 4.62402 45.0879c1.02344 6.83203 3.83984 12.0322 8.44727 15.6162c4.6084 3.58398 9.2959 4.86426 14.0801 3.83984l104.433 -42c7.85547 -2.36719 13.3115 -6.84766 16.3838 -13.3115
+c1.69629 -3.04004 2.54395 -6.27246 2.54395 -9.69629s-0.847656 -6.86426 -2.54395 -10.2715c-3.07227 -6.46387 -8.35254 -10.9443 -15.8721 -13.3125l-104.448 -32.2715c-5.12012 -1.71191 -10.0801 -1.28027 -14.8477 1.2793
+c-4.76855 2.56055 -8.0166 6.91211 -9.72852 13.04c-2.04785 8.87988 -3.07129 20.6562 -3.07129 35.3447v6.65527zM113.152 390.656c-1.71191 2.73535 -2.56055 5.45605 -2.56055 8.19141c0 3.07227 1.02441 6.14453 3.07227 9.2168
+c4.0957 5.80762 10.5918 10.416 19.4561 13.8232c27.6475 10.5762 56.832 18.4326 87.5518 23.5527h2.56055c15.3594 0 23.7275 -6.48047 25.0713 -19.4561c8.5127 -106.832 12.8164 -173.904 12.8164 -201.217c0 -11.2637 -4.6084 -18.0791 -13.8242 -20.4795
+c-2.04785 -0.671875 -4.0957 -1.02441 -6.14355 -1.02441c-7.16797 0 -13.5039 4.27246 -18.9443 12.8008c-50.5117 79.1836 -86.8643 137.392 -109.056 174.592zM148.48 -1.02441l71.1836 84.9922c6.44824 7.15234 12.9922 10.752 19.4395 10.752
+c2.76855 0 5.48828 -0.496094 8.22461 -1.53613c8.49609 -3.74316 12.7998 -11.4395 12.7998 -23.04c0 -1.69531 -0.160156 -3.40723 -0.479492 -5.10352v-113.12c-0.688477 -4.81641 -3.61621 -8.52832 -8.7207 -11.2637
+c-3.05566 -1.66406 -6.14355 -2.56055 -9.21582 -2.56055c-2.71973 0 -5.43945 0.512695 -8.20801 1.58398c-12.2881 2.03223 -26.7842 6.35254 -43.5195 13.0088c-16.7207 6.65527 -29.1846 13.0078 -37.376 19.1992c-6.14453 4.76855 -9.2168 9.83984 -9.2168 15.3447
+c-0.03125 3.74316 1.68066 7.64746 5.08887 11.7432zM299.008 171.52c-2.03223 4.1123 -3.02344 8.0166 -3.02344 11.7764c0 5.80762 2.55957 11.4404 7.66406 16.8965l66.5596 91.6475c2.36816 2.71973 5.79199 4.0957 10.2559 4.0957
+c0.992188 0 2.24023 -0.175781 3.60059 -0.511719c5.77539 -0.671875 10.752 -3.74414 14.8799 -9.21582c8.49609 -8.87988 17.5996 -20.9121 27.1035 -36.0957c9.58398 -15.1846 15.8721 -27.7285 18.9922 -37.6318c0.992188 -2.73633 1.53613 -5.29688 1.53613 -7.68066
+c0 -3.07227 -0.688477 -5.79199 -2.06445 -8.19141c-2.71973 -4.43262 -6.65527 -7.16797 -11.7598 -8.19238l-107.008 -27.1357c-2.71973 -0.688477 -5.44043 -1.02441 -8.19238 -1.02441c-7.95215 0 -14.1113 3.74414 -18.5439 11.2637v0zM305.152 107.52
+c4.0957 6.48047 9.72754 9.72852 16.8955 9.72852c3.07227 0 6.32031 -0.688477 9.72852 -2.04785l104.976 -35.8398c4.71973 -1.69629 8 -4.94434 9.71191 -9.72852c1.04004 -2.03223 1.53613 -4.25586 1.53613 -6.65625c0 -3.40723 -0.688477 -7.00781 -2.04785 -10.752
+c-4.41602 -10.5918 -11.5205 -22.4473 -21.248 -35.584c-9.72852 -13.1357 -19.2002 -23.8076 -28.416 -32c-4.75195 -4.73535 -10.416 -7.32812 -16.8965 -7.66406h-1.53516c-5.84082 0 -9.93652 1.56836 -12.3047 4.59277l-58.3516 97.2793
+c-4.43262 5.45605 -6.65625 10.9287 -6.65625 16.3848c0 4.0957 1.55176 8.19141 4.6084 12.2871z" />
+ <glyph glyph-name="uniF15D" unicode=""
+d="M-63.2959 -9.21582l53.7598 189.952c11.9521 6.83203 26.5439 12.1113 43.7764 15.8721c17.2314 3.74316 31.4873 5.96777 42.752 6.65527l17.4082 0.512695c17.0713 0 34.8154 -1.69629 53.248 -5.12012c34.4795 -6.83203 59.04 -17.2324 73.7275 -31.2324
+l-53.248 -189.439c-12.2881 9.55176 -25.8555 17.3271 -40.7041 23.2959c-14.8477 5.96777 -26.5439 9.47168 -35.0723 10.4961l-13.3115 2.04785c-11.5996 1.00781 -22.6885 1.53613 -33.2803 1.53613c-5.45605 0 -12.7041 -0.272461 -21.7598 -0.768555
+c-9.04004 -0.511719 -23.2959 -2.81543 -42.752 -6.91211c-19.4561 -4.08008 -34.3037 -9.72754 -44.5439 -16.8955zM1.21582 235.008l53.7598 189.952c11.9521 6.83203 26.624 12.208 44.0322 16.1279c17.4082 3.93652 31.7441 6.06445 43.0078 6.40039l16.8965 0.511719
+c17.4082 0 35.1523 -1.69629 53.248 -5.12012c34.4795 -6.83203 59.04 -17.248 73.7275 -31.2314l-53.248 -189.952c-12.2881 9.55176 -25.8555 17.3281 -40.7041 23.2959c-14.8477 5.9834 -26.5439 9.47168 -35.0713 10.4961l-13.3125 2.04785
+c-11.9521 1.02344 -22.8799 1.53613 -32.7676 1.53613c-5.45605 0 -12.7041 -0.255859 -21.7598 -0.768555c-9.04004 -0.511719 -23.376 -2.73535 -43.0088 -6.65527c-19.6318 -3.93652 -34.5596 -9.47266 -44.7998 -16.6406zM221.888 -27.6641l53.248 189.968
+c12.624 -9.56738 26.3525 -17.3281 41.2158 -23.3115c14.8486 -5.96777 26.5283 -9.47266 35.0566 -10.4805l12.8154 -2.04785c11.6006 -1.02344 22.6885 -1.53613 33.2646 -1.53613c5.45605 0 12.7197 0.255859 21.7598 0.751953
+c9.02441 0.52832 23.376 2.75195 43.0078 6.65625c19.6318 3.93652 34.4004 9.48828 44.3037 16.6562l-53.248 -189.968c-11.9512 -6.81641 -26.623 -12.1123 -44.0312 -15.8564c-17.4082 -3.75977 -31.7441 -5.79199 -43.0078 -6.14355l-16.8965 -1.02441
+c-17.4082 0 -35.1523 1.69629 -53.248 5.12012c-34.4639 6.81543 -59.2158 17.2314 -74.2402 31.2158zM283.328 215.552l53.248 189.44c12.624 -9.55176 26.3682 -17.3281 41.2158 -23.2959c14.8477 -5.96875 26.5283 -9.47266 35.0557 -10.4961l12.8164 -2.04785
+c11.5996 -1.02441 22.6875 -1.53613 33.2803 -1.53613c5.45605 0 12.7041 0.255859 21.7441 0.767578c9.03906 0.512695 23.2959 2.73633 42.752 6.65625c19.4717 3.93555 34.3193 9.47168 44.5439 16.6396l-53.248 -189.439
+c-11.9521 -6.83203 -26.624 -12.208 -44.0322 -16.1279s-31.9199 -6.04785 -43.5205 -6.38477l-16.9111 -1.02344c-17.7441 0 -35.3125 1.87207 -52.7207 5.63184c-34.4639 6.46387 -59.2158 16.8799 -74.2236 31.2158z" />
+ <glyph glyph-name="uniF163" unicode=""
+d="M38.1279 80.9121c0 18.416 1.02441 46.0635 3.07227 82.9443c1.35938 18.0957 7.85547 32.8477 19.4561 44.2871c11.5996 11.4404 26.4473 17.6641 44.5439 18.6885c34.1279 1.71191 85.5039 2.55957 154.111 2.55957c68.6084 0 119.984 -0.847656 154.129 -2.55957
+c18.0791 -1.02441 32.9434 -7.24805 44.5273 -18.6885c11.6162 -11.4238 18.0967 -26.1914 19.4727 -44.2871c1.67969 -30.7207 2.55957 -58.3682 2.55957 -82.9443c0 -24.5918 -0.879883 -52.2402 -2.55957 -82.96c-1.37598 -18.0957 -7.85645 -32.8643 -19.4727 -44.3037
+c-11.5996 -11.4248 -26.4482 -17.6484 -44.5273 -18.6729c-34.1445 -1.69531 -85.5205 -2.55957 -154.129 -2.55957c-68.6074 0 -119.983 0.864258 -154.111 2.55957c-18.0801 1.02441 -32.9277 7.24805 -44.5283 18.6885
+c-11.6162 11.4395 -18.0957 26.208 -19.4561 44.3037c-2.06348 36.8486 -3.08789 64.4961 -3.08789 82.9443zM72.4316 153.088h31.2324v-166.928h30.208v166.928h31.2314v28.1602h-92.6719v-28.1602zM105.712 461.824h30.7197l19.4561 -77.8242h2.04785l18.4326 77.8242
+h30.7197l-23.5518 -75.7764c-7.85645 -24.9121 -11.7764 -37.7119 -11.7764 -38.3994v-80.8965h-30.208v77.3125c-0.671875 4.7832 -1.61621 9.13574 -2.81543 13.0557c-1.18457 3.91992 -2.73633 8.44824 -4.6084 13.5684
+c-1.87207 5.11914 -3.32812 9.3916 -4.35156 12.7998zM165.104 8.7041c0 -16.3838 6.14453 -24.5762 18.4326 -24.5762c10.9277 0 21.3281 5.96777 31.2314 17.9199v-15.8721h26.6406v143.872h-26.6406v-109.567c-7.16797 -7.16895 -12.4639 -10.7686 -15.8711 -10.7686
+c-4.76855 0 -7.16895 3.24805 -7.16895 9.72852v110.592h-26.624v-121.328zM205.552 303.104v74.7529c0 11.5996 3.75977 20.5596 11.2646 26.8799c7.50391 6.31934 17.0713 9.47168 28.6719 9.47168c11.248 0 20.3838 -3.4082 27.376 -10.2402
+c7.00781 -6.83203 10.4961 -15.8721 10.4961 -27.1357v-74.2402c0 -12.2881 -3.4082 -21.9355 -10.2402 -28.9277s-16.3838 -10.4961 -28.6719 -10.4961c-11.9365 0 -21.4238 3.66406 -28.416 11.0078c-6.97656 7.34375 -10.4805 16.9766 -10.4805 28.9277zM233.2 299.52
+c0 -7.83984 3.75977 -11.7754 11.2637 -11.7754c7.83984 0 11.7764 4.27148 11.7764 12.7998v78.3359c0 3.07227 -1.2002 5.63184 -3.60059 7.67969c-2.36719 2.04883 -5.12012 3.07227 -8.19141 3.07227c-3.07227 0 -5.71191 -0.943359 -7.93652 -2.81543
+c-2.22363 -1.87207 -3.32812 -4.35254 -3.32812 -7.4248v-79.8721h0.0166016zM267.504 -13.8242h27.1357v10.7686c6.83203 -8.54395 15.3604 -12.8164 25.6162 -12.8164c16.0322 0 24.0645 10.5918 24.0645 31.7441v79.8721c0 24.2236 -8.7207 36.3359 -26.1279 36.3359
+c-8.52832 0 -16.3682 -4.6084 -23.5527 -13.8076v62.9756h-27.1357v-195.072zM294.64 13.3115v90.1123c3.76074 3.75977 7.52051 5.64844 11.2646 5.64844c7.50391 0 11.2637 -4.78418 11.2637 -14.3359v-75.7764c0 -8.19238 -3.23242 -12.2881 -9.72754 -12.2881
+c-4.78418 -0.015625 -9.04004 2.20801 -12.8008 6.63965zM306.416 289.28v121.344h26.624v-110.08c0 -6.47949 2.38379 -9.72754 7.16797 -9.72754c4.43164 0 9.71191 3.58398 15.8721 10.752v109.056h26.624v-143.872h-26.624v15.8721
+c-9.9043 -11.9521 -20.3203 -17.9199 -31.248 -17.9199c-12.2725 0 -18.416 8.19238 -18.416 24.5762zM364.784 26.624c0 -12.9756 3.24805 -23.6484 9.72754 -32c6.48047 -8.35156 16.208 -12.5439 29.1846 -12.5439c26.624 0 39.9199 14.8643 39.9199 44.5439v10.752
+h-27.6162c0 -0.6875 0.0644531 -2.99219 0.255859 -6.91211c0.160156 -3.93555 0.0800781 -6.75195 -0.255859 -8.44824c-0.335938 -1.69531 -0.78418 -4.01562 -1.28027 -6.92773c-0.527344 -2.89551 -1.63184 -4.94434 -3.34375 -6.12793
+c-1.69629 -1.2002 -4.0957 -1.79199 -7.15234 -1.79199c-7.85547 0 -11.7754 6.83203 -11.7754 20.4805v27.1191h51.1836v36.8809c0 12.9756 -3.15137 23.1992 -9.47168 30.7197c-6.32031 7.50391 -15.9365 11.248 -28.9277 11.248
+c-12.3047 0 -22.1123 -3.91992 -29.4404 -11.7598c-7.32812 -7.85645 -11.0078 -17.9209 -11.0078 -30.208v-65.0244zM392.432 77.3115v15.3604c0 10.5762 3.91992 15.8721 11.7764 15.8721c7.83984 0 11.7764 -5.2959 11.7764 -15.8721v-15.3604h-23.5527z" />
+ <glyph glyph-name="uniF11E" unicode=""
+d="M188.544 173.056v97.7764h78.8643v49.168c0 35.5039 11.5039 65.6963 34.5439 90.624c23.04 24.9121 50.96 37.376 83.7119 37.376h78.3359v-97.792h-78.3359c-5.10449 0 -9.71191 -2.81641 -13.8076 -8.44824c-4.09668 -5.63184 -6.14453 -12.5439 -6.14453 -20.7354
+v-50.1768h98.2881v-97.7754h-98.3037v-237.072h-98.3047v237.056h-78.8477z" />
+ <glyph glyph-name="uniF130" unicode=""
+d="M-90.3516 308.736c59.3916 11.2637 94.8955 23.376 106.495 36.3516c9.2168 10.2402 16.8965 25.7764 23.04 46.5918c6.14453 -7.85547 10.0645 -16.1279 11.7764 -24.832s1.87207 -15.4395 0.511719 -20.2236l-2.55957 -6.65625
+c-2.04785 -4.43164 -3.83984 -8.01562 -5.37598 -10.752c-1.53613 -2.73535 -2.81641 -5.04004 -3.83984 -6.91211c-1.02441 -1.87207 -2.64062 -3.75977 -4.86426 -5.63184s-3.91992 -3.32812 -5.12012 -4.35156c-1.18359 -1.02441 -3.91992 -2.89648 -8.19238 -5.63184
+c-4.27148 -2.73633 -7.75977 -5.12012 -10.4951 -7.16895c-11.9521 -9.21582 -17.6641 -19.8711 -17.1523 -32c0.511719 -12.1113 5.71191 -21.4072 15.6162 -27.9033c8.87988 -5.45605 17.4873 -4.43262 25.8555 3.07227c8.36816 7.50391 17.3281 20.8154 26.8799 39.9355
+c4.09668 8.52832 7.24805 19.792 9.47266 33.792c2.22363 14 5.55176 26.4482 9.9834 37.376c4.43262 10.9277 12.4639 20.9922 24.0645 30.208c6.81543 5.45605 14.5918 8.7041 23.2959 9.72754c8.7041 1.02441 17.248 1.2002 25.5996 0.512695
+c8.36816 -0.688477 17.1523 -0.688477 26.3682 0c9.21582 0.671875 19.4561 4.6875 30.7197 12.0322c11.2646 7.32715 22.7041 18.3359 34.3047 33.0234c1.71191 2.04785 4.0957 4.68848 7.16797 7.93652s9.55176 8.19141 19.4561 14.8477
+c9.90332 6.65625 19.9678 11.4395 30.2236 14.3359c10.2402 2.91211 22.8643 2.73633 37.8721 -0.511719c15.0244 -3.24805 29.6963 -10.8486 44.0322 -22.7842c-16.3682 7.16797 -31.7441 10.752 -46.0801 10.752s-25.8564 -2.56055 -34.5439 -7.67969
+c-8.71973 -5.12012 -16.1445 -10.752 -22.2881 -16.8965c-6.16016 -6.14355 -10.5918 -11.7764 -13.3125 -16.8955l-3.59961 -7.68066c-5.10352 -12.624 -9.98438 -23.1201 -14.5918 -31.4873c-4.6084 -8.36816 -8.62402 -14.9443 -12.0322 -19.7129
+c-3.4082 -4.76758 -7.67969 -8.62305 -12.7998 -11.5195s-9.21582 -4.86426 -12.2881 -5.8877c-3.07227 -1.02441 -8.52832 -2.46387 -16.3838 -4.35254c-7.85645 -1.87207 -14.3359 -3.4873 -19.4561 -4.86328c-14.6719 -4.43262 -23.2158 -13.6641 -25.6006 -27.6484
+c-2.04785 -12.2881 1.69629 -21.3281 11.2646 -27.1357c10.9277 -6.14453 24.9121 -3.74414 41.9834 7.16797c12.624 8.19141 22.7842 16.6396 30.4639 25.3438c7.68066 8.7041 12.8809 16.208 15.6162 22.5283c2.7207 6.31934 7.42383 13.0557 14.0801 20.2236
+s15.4561 13.4883 26.3525 18.9443c14.6875 7.16797 28.6875 12.0312 42 14.5918c13.3115 2.55957 27.4717 3.91992 42.4961 4.0957c15.0078 0.175781 26.4316 0.768555 34.2871 1.79199c67.248 10.9277 109.232 30.3838 125.969 58.3682
+c16.3682 26.96 24.752 49.1523 25.0879 66.5596c5.77539 -19.792 7.74414 -37.5518 5.87207 -53.2471c-1.87207 -15.6963 -6.40039 -29.4404 -13.5684 -41.2168c-7.16797 -11.7754 -14.6875 -21.5039 -22.5283 -29.1836
+c-7.83984 -7.67969 -14.8477 -13.3916 -20.9912 -17.1523l-9.2168 -5.63184c-26.2559 -13.6475 -48.1758 -23.1201 -65.7598 -28.416s-31.8242 -8.87988 -42.752 -10.752s-21.5039 -5.55176 -31.7441 -11.0078c-35.1514 -18.7686 -44.0312 -45.2324 -26.624 -79.3604
+c7.16797 -14 17.6641 -21.584 31.5039 -22.7842c13.8086 -1.19922 27.04 3.84082 39.6641 15.1045c2.04785 1.71191 4.43262 4.0957 7.16797 7.16797c2.7207 3.07227 6.56055 9.72754 11.5205 19.9678s7.59961 20.6562 7.93555 31.2324
+c6.83203 -19.1045 9.47266 -35.584 7.93652 -49.4082c-1.55176 -13.8242 -5.04004 -24.6719 -10.4961 -32.5117l-7.66406 -11.2646c-12.3037 -12.9756 -22.624 -22.1113 -30.9922 -27.3916c-8.35156 -5.2959 -19.1035 -8.44824 -32.2559 -9.47168
+c-13.1357 -1.02441 -28.416 1.53516 -45.8242 7.66406c-29.3438 7.16797 -49.7441 10.6719 -61.1836 10.4951c-11.4404 -0.175781 -21.9365 -3.15137 -31.4883 -8.95996c-9.55176 -5.47168 -16.8955 -12.7197 -22.0156 -21.7598s-5.45605 -17.3281 -1.02441 -24.832
+c4.78418 -8.52734 10.5762 -13.2314 17.4082 -14.0957c6.83203 -0.847656 17.7441 2.81543 32.7676 11.0078c13.3125 7.85645 24.5762 12.8965 33.792 15.1045c9.2168 2.20801 20.832 3.66406 34.8164 4.33594c29.6963 0.6875 53.4395 -5.79199 71.1836 -19.4561
+c12.624 -8.20801 25.248 -17.9199 37.8721 -29.1846c-13.6641 8.20801 -27.1201 13.3926 -40.4316 15.6162c-13.3125 2.22363 -24.5918 2.06445 -33.792 -0.496094c-9.21582 -2.55957 -17.4883 -5.63184 -24.832 -9.21582s-12.7197 -7.24805 -16.1279 -11.0078
+l-5.12012 -5.12012c-15.376 -17.4082 -28.2559 -29.6963 -38.6562 -36.8799c-10.416 -7.15234 -19.4561 -10.6562 -27.1357 -10.4805s-17.6641 2.64062 -29.9521 7.42383c-3.4082 1.36035 -10.1602 4.27246 -20.2236 8.7041
+c-10.0645 4.43262 -17.1523 7.16797 -21.248 8.19238v56.3359c0 41.2959 -15.6963 73.04 -47.1045 95.2324c-20.1436 13.6641 -43.0078 20.4795 -68.6074 20.4795c-25.9521 0 -48.8164 -6.65625 -68.6084 -19.9678c-6.83203 9.9043 -15.5361 15.5361 -26.1123 16.8955
+v38.4004c0 10.5918 -3.66406 19.5518 -11.0078 26.8799c-7.35938 7.34375 -16.3193 11.0244 -26.8955 11.0244h-9.21582zM-25.3281 19.9678v82.9443c0 22.1914 3.24805 39.0879 9.72852 50.6875c13.6641 24.2568 36.5273 36.3525 68.6074 36.3525
+c23.5518 0 42.416 -7.42383 56.5762 -22.2725c14.1602 -14.8633 21.248 -33.5518 21.248 -56.0635v-69.1201h-103.424v-34.3203c0 -16.3682 8.52734 -24.5596 25.5996 -24.5596c15.3604 0 23.9043 8.33594 25.6006 25.0723h52.2236
+c0 -21.1689 -7.00781 -39.0723 -20.9922 -53.7607c-14.6719 -14.6719 -33.6318 -22 -56.832 -22c-32.0801 0 -54.96 12.1123 -68.6074 36.3359c-6.48047 11.6162 -9.72852 28.5127 -9.72852 50.7041zM27.4082 81.9199h51.2002v28.6719
+c0 19.1045 -8.52832 28.6719 -25.6006 28.6719c-17.0557 0 -25.5996 -9.56738 -25.5996 -28.6719v-28.6719zM161.552 -19.9678c3.75977 12.2881 5.63184 24.3994 5.63184 36.3359c0 3.75977 -0.511719 7.18359 -1.53516 10.2559
+c8.19141 -1.37598 14 -2.22363 17.4072 -2.55957c21.168 -2.04883 35.6641 -9.9043 43.5205 -23.5527c0.671875 -1.02344 1.45605 -2.55957 2.30371 -4.60742s2.04785 -5.96875 3.58398 -11.7764c1.53613 -5.79199 1.44043 -11.0879 -0.255859 -15.8721
+c-10.5918 8.19238 -21.7598 13.3125 -33.5361 15.376c-11.7754 2.03223 -20.9121 1.87207 -27.3916 -0.52832z" />
+ </font>
+</defs></svg>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.ttf
new file mode 100644
index 0000000..e4ae46c
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.woff b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.woff
new file mode 100644
index 0000000..fe5cd39
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/common/resources/lib/zocial/zocial-regular-webfont.woff differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/brand.svg b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/brand.svg
new file mode 100644
index 0000000..a908d8c
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/brand.svg
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 223.4 12.5" style="enable-background:new 0 0 223.4 12.5;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:#FFFFFF;}
+</style>
+<g>
+ <g>
+ <g>
+ <path class="st0" d="M6.5,12.3l-2-4H3.2v4H0V0.3h5.3c0.7,0,1.3,0.1,1.9,0.2c0.6,0.1,1.1,0.4,1.5,0.7c0.4,0.3,0.7,0.7,0.9,1.2
+ C9.9,2.9,10,3.5,10,4.2c0,0.9-0.2,1.6-0.6,2.2C9,7,8.5,7.4,7.8,7.7l2.4,4.6H6.5z M6.4,3.4C6.1,3.1,5.8,3,5.2,3h-2v2.6h2
+ c0.5,0,0.9-0.1,1.2-0.3c0.2-0.2,0.3-0.6,0.3-1C6.7,3.9,6.6,3.6,6.4,3.4z"/>
+ </g>
+ <g>
+ <path class="st0" d="M12.2,12.3V0.3h9.1v2.8h-5.9v1.6H19v2.7h-3.5v2h6v2.8H12.2z"/>
+ </g>
+ <g>
+ <path class="st0" d="M33.5,9.1c-0.3,0.8-0.7,1.4-1.2,1.9c-0.5,0.5-1.2,0.8-2,1c-0.8,0.2-1.7,0.3-2.8,0.3h-3.9V0.3h4.2
+ c0.9,0,1.8,0.1,2.5,0.3c0.8,0.2,1.4,0.5,1.9,1c0.5,0.5,0.9,1.1,1.2,1.8c0.3,0.7,0.4,1.7,0.4,2.8C33.9,7.3,33.8,8.3,33.5,9.1z
+ M30.4,4.9c-0.1-0.4-0.3-0.7-0.5-1c-0.2-0.2-0.5-0.4-0.9-0.6c-0.4-0.1-0.8-0.2-1.3-0.2h-0.8v6.3h0.7c0.5,0,1-0.1,1.3-0.2
+ c0.4-0.1,0.7-0.3,0.9-0.5c0.2-0.2,0.4-0.6,0.5-1c0.1-0.4,0.2-0.9,0.2-1.5C30.5,5.7,30.5,5.3,30.4,4.9z"/>
+ </g>
+ <g>
+ <path class="st0" d="M48,12.3V7.6h-3.7v4.7h-3.4V0.3h3.4v4.4H48V0.3h3.4v11.9H48z"/>
+ </g>
+ <g>
+ <path class="st0" d="M61.5,12.3l-0.6-2.1h-3.6l-0.6,2.1h-3.5l4.3-11.9h3.3l4.3,11.9H61.5z M59.8,6.7c-0.1-0.4-0.2-0.7-0.3-1
+ c-0.1-0.3-0.2-0.5-0.2-0.8c-0.1-0.2-0.1-0.4-0.2-0.6c0-0.2-0.1-0.4-0.1-0.6C59,4,59,4.2,58.9,4.4c0,0.2-0.1,0.4-0.2,0.6
+ c-0.1,0.2-0.1,0.5-0.2,0.8c-0.1,0.3-0.2,0.6-0.3,1l-0.2,0.8h2L59.8,6.7z"/>
+ </g>
+ <g>
+ <path class="st0" d="M71.3,3.2v9.1H68V3.2h-3.3V0.3h10v2.9H71.3z"/>
+ </g>
+ </g>
+ <g>
+ <path class="st0" d="M78.6,2c-0.1,0.1-0.1,0.3-0.3,0.4c-0.1,0.1-0.2,0.2-0.4,0.3c-0.1,0.1-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1
+ c-0.1-0.1-0.3-0.1-0.4-0.3c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.1-0.3,0.3-0.4
+ c0.1-0.1,0.2-0.2,0.4-0.3c0.1-0.1,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.1,0.1,0.3,0.1,0.4,0.3c0.1,0.1,0.2,0.2,0.3,0.4
+ c0.1,0.1,0.1,0.3,0.1,0.5C78.7,1.7,78.6,1.8,78.6,2z M78.4,1.1c-0.1-0.1-0.1-0.2-0.2-0.3c-0.1-0.1-0.2-0.2-0.3-0.2
+ c-0.1-0.1-0.3-0.1-0.4-0.1c-0.1,0-0.3,0-0.4,0.1c-0.1,0.1-0.2,0.1-0.3,0.2c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.1,0.4
+ c0,0.1,0,0.3,0.1,0.4s0.1,0.2,0.2,0.3c0.1,0.1,0.2,0.2,0.3,0.2c0.1,0,0.3,0.1,0.4,0.1c0.1,0,0.3,0,0.4-0.1
+ c0.1-0.1,0.2-0.1,0.3-0.2c0.1-0.1,0.2-0.2,0.2-0.3c0.1-0.1,0.1-0.3,0.1-0.4C78.5,1.4,78.4,1.2,78.4,1.1z M77.9,1.5
+ c-0.1,0.1-0.1,0.1-0.2,0.1L78,2.1h-0.3l-0.3-0.5h-0.3v0.5H77V0.8h0.6c0.1,0,0.1,0,0.2,0c0.1,0,0.1,0,0.1,0.1C77.9,1,77.9,1,78,1
+ c0,0,0,0.1,0,0.2C78,1.3,78,1.4,77.9,1.5z M77.7,1.1c0,0-0.1,0-0.1,0h-0.3v0.4h0.3c0.1,0,0.1,0,0.1,0c0,0,0.1-0.1,0.1-0.1
+ C77.8,1.2,77.8,1.1,77.7,1.1z"/>
+ </g>
+ <g>
+ <path class="st0" d="M91.4,10.2c-0.2,0.5-0.5,0.9-0.9,1.2S89.6,12,89,12.2c-0.6,0.2-1.3,0.3-2.1,0.3c-1,0-1.9-0.2-2.8-0.6
+ c-0.8-0.4-1.5-0.9-1.9-1.6l1.7-1.6c0.4,0.5,0.9,0.8,1.4,1.1s1.1,0.3,1.7,0.3c0.7,0,1.3-0.1,1.6-0.3s0.5-0.5,0.5-1
+ c0-0.2,0-0.4-0.1-0.5C89,8.1,88.8,8,88.6,7.9c-0.2-0.1-0.5-0.2-0.8-0.4c-0.4-0.1-0.8-0.2-1.4-0.4c-0.6-0.1-1.1-0.3-1.5-0.4
+ C84.4,6.5,84,6.3,83.7,6c-0.3-0.3-0.6-0.6-0.8-1c-0.2-0.4-0.3-0.9-0.3-1.5c0-0.6,0.1-1,0.3-1.5c0.2-0.4,0.5-0.8,0.9-1.1
+ c0.4-0.3,0.8-0.5,1.4-0.7C85.8,0.1,86.4,0,87,0c0.9,0,1.8,0.2,2.5,0.5c0.7,0.3,1.3,0.8,1.9,1.4l-1.7,1.7c-0.4-0.4-0.8-0.7-1.3-0.9
+ s-0.9-0.3-1.5-0.3c-0.3,0-0.6,0-0.8,0.1c-0.2,0.1-0.4,0.1-0.5,0.2s-0.2,0.2-0.3,0.3c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.2,0,0.4,0.1,0.5
+ c0.1,0.1,0.2,0.2,0.4,0.4c0.2,0.1,0.4,0.2,0.7,0.3c0.3,0.1,0.7,0.2,1.2,0.3c0.5,0.1,1,0.2,1.4,0.4c0.5,0.2,0.9,0.4,1.3,0.6
+ C90.7,6.2,91,6.6,91.3,7c0.2,0.4,0.4,1,0.4,1.6C91.6,9.2,91.5,9.7,91.4,10.2z"/>
+ <path class="st0" d="M94.4,12.3V0.2h2.4v12.1H94.4z"/>
+ <path class="st0" d="M107.7,12.3l-4.4-6.6c-0.1-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
+ c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
+ c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H107.7z"/>
+ <path class="st0" d="M122.1,9.7c-0.2,0.6-0.6,1.1-1,1.5c-0.4,0.4-0.9,0.7-1.5,0.9c-0.6,0.2-1.2,0.3-1.9,0.3
+ c-0.8,0-1.5-0.1-2.2-0.4c-0.6-0.3-1.2-0.7-1.7-1.3c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6c0-0.9,0.1-1.8,0.4-2.5
+ c0.3-0.8,0.6-1.4,1.1-2s1-1,1.7-1.3c0.7-0.3,1.4-0.5,2.2-0.5c0.6,0,1.2,0.1,1.6,0.2c0.5,0.1,0.9,0.3,1.3,0.6s0.7,0.6,1,1
+ c0.3,0.4,0.5,0.8,0.7,1.3L120,4c-0.1-0.2-0.2-0.4-0.4-0.6s-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.5-0.1-0.8-0.1
+ c-0.4,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.5-0.9,0.8s-0.4,0.7-0.6,1.2c-0.1,0.5-0.2,1-0.2,1.5c0,0.6,0.1,1.1,0.2,1.5
+ c0.1,0.5,0.3,0.9,0.6,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.3c0.4,0,0.8,0,1.1-0.1c0.3-0.1,0.5-0.2,0.7-0.4
+ c0.2-0.2,0.3-0.4,0.4-0.6s0.2-0.5,0.2-0.7h-1.9V6h4.3v1.6C122.4,8.4,122.3,9.1,122.1,9.7z"/>
+ <path class="st0" d="M125,12.3V0.2h2.4v9.7h6.1v2.4H125z"/>
+ <path class="st0" d="M135.7,12.3V0.2h8.4v2.4h-6v2.1h3.5V7h-3.5v2.9h6.2v2.4H135.7z"/>
+ <path class="st0" d="M160.5,10.2c-0.2,0.5-0.5,0.9-0.9,1.2s-0.9,0.6-1.5,0.8c-0.6,0.2-1.3,0.3-2.1,0.3c-1,0-1.9-0.2-2.8-0.6
+ s-1.5-0.9-1.9-1.6l1.7-1.6c0.4,0.5,0.9,0.8,1.4,1.1s1.1,0.3,1.7,0.3c0.7,0,1.3-0.1,1.6-0.3c0.3-0.2,0.5-0.5,0.5-1
+ c0-0.2,0-0.4-0.1-0.5c-0.1-0.1-0.2-0.3-0.4-0.4c-0.2-0.1-0.5-0.2-0.8-0.4c-0.4-0.1-0.8-0.2-1.4-0.4C155,7,154.5,6.9,154,6.7
+ c-0.5-0.2-0.9-0.4-1.2-0.7c-0.3-0.3-0.6-0.6-0.8-1c-0.2-0.4-0.3-0.9-0.3-1.5c0-0.6,0.1-1,0.3-1.5c0.2-0.4,0.5-0.8,0.9-1.1
+ c0.4-0.3,0.8-0.5,1.4-0.7c0.5-0.2,1.1-0.2,1.7-0.2c0.9,0,1.8,0.2,2.5,0.5c0.7,0.3,1.3,0.8,1.9,1.4l-1.7,1.7
+ c-0.4-0.4-0.8-0.7-1.3-0.9s-0.9-0.3-1.5-0.3c-0.3,0-0.6,0-0.8,0.1c-0.2,0.1-0.4,0.1-0.5,0.2s-0.2,0.2-0.3,0.3
+ c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.2,0,0.4,0.1,0.5c0.1,0.1,0.2,0.2,0.4,0.4c0.2,0.1,0.4,0.2,0.7,0.3c0.3,0.1,0.7,0.2,1.2,0.3
+ c0.5,0.1,1,0.2,1.4,0.4c0.5,0.2,0.9,0.4,1.3,0.6c0.4,0.3,0.7,0.6,0.9,1.1c0.2,0.4,0.4,1,0.4,1.6C160.8,9.2,160.7,9.7,160.5,10.2z"
+ />
+ <path class="st0" d="M163.5,12.3V0.2h2.4v12.1H163.5z"/>
+ <path class="st0" d="M178.3,9.7c-0.2,0.6-0.6,1.1-1,1.5c-0.4,0.4-0.9,0.7-1.5,0.9c-0.6,0.2-1.2,0.3-1.9,0.3
+ c-0.8,0-1.5-0.1-2.2-0.4s-1.2-0.7-1.7-1.3c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6c0-0.9,0.1-1.8,0.4-2.5
+ c0.3-0.8,0.6-1.4,1.1-2s1-1,1.7-1.3c0.7-0.3,1.4-0.5,2.2-0.5c0.6,0,1.2,0.1,1.6,0.2c0.5,0.1,0.9,0.3,1.3,0.6c0.4,0.3,0.7,0.6,1,1
+ s0.5,0.8,0.7,1.3L176.2,4c-0.1-0.2-0.2-0.4-0.4-0.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.5-0.1-0.8-0.1
+ c-0.4,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.4,0.7-0.6,1.2c-0.1,0.5-0.2,1-0.2,1.5c0,0.6,0.1,1.1,0.2,1.5
+ c0.1,0.5,0.3,0.9,0.6,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.3c0.4,0,0.8,0,1.1-0.1c0.3-0.1,0.5-0.2,0.7-0.4
+ c0.2-0.2,0.3-0.4,0.4-0.6s0.2-0.5,0.2-0.7h-1.9V6h4.3v1.6C178.7,8.4,178.6,9.1,178.3,9.7z"/>
+ <path class="st0" d="M188.9,12.3l-4.4-6.6c-0.2-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
+ c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
+ c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H188.9z"/>
+ <path class="st0" d="M193.6,7.2V4.8h5v2.4H193.6z"/>
+ <path class="st0" d="M210.7,8.8c-0.3,0.8-0.6,1.4-1.1,2c-0.5,0.5-1,0.9-1.7,1.2c-0.7,0.3-1.4,0.4-2.2,0.4c-0.8,0-1.5-0.1-2.2-0.4
+ s-1.2-0.7-1.7-1.2c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6s0.1-1.9,0.4-2.6c0.3-0.8,0.6-1.4,1.1-2c0.5-0.5,1-0.9,1.7-1.2
+ c0.7-0.3,1.4-0.4,2.2-0.4c0.8,0,1.5,0.1,2.1,0.4s1.2,0.7,1.7,1.2c0.5,0.5,0.8,1.2,1.1,2c0.3,0.8,0.4,1.6,0.4,2.6
+ S211,8.1,210.7,8.8z M207.9,3.4c-0.5-0.7-1.2-1-2.1-1s-1.5,0.3-2,1S203,5,203,6.2c0,1.2,0.3,2.2,0.8,2.8c0.5,0.7,1.2,1,2.1,1
+ s1.5-0.3,2-1s0.8-1.6,0.8-2.8S208.4,4.1,207.9,3.4z"/>
+ <path class="st0" d="M221.2,12.3l-4.4-6.6c-0.2-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
+ c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
+ c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H221.2z"/>
+ </g>
+</g>
+</svg>
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/favicon.ico b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/favicon.ico
new file mode 100644
index 0000000..dad490b
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/favicon.ico differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/keycloak.css b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/keycloak.css
new file mode 100644
index 0000000..302f494
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/keycloak.css
@@ -0,0 +1,170 @@
+/*
+ ~ JBoss, Home of Professional Open Source.
+ ~ Copyright (c) 2011, Red Hat, Inc., and individual contributors
+ ~ as indicated by the @author tags. See the copyright.txt file in the
+ ~ distribution for a full listing of individual contributors.
+ ~
+ ~ This is free software; you can redistribute it and/or modify it
+ ~ under the terms of the GNU Lesser General Public License as
+ ~ published by the Free Software Foundation; either version 2.1 of
+ ~ the License, or (at your option) any later version.
+ ~
+ ~ This software is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public
+ ~ License along with this software; if not, write to the Free
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 300;
+ src: local('Open Sans Light'), local('OpenSans-Light'), url(OpenSans-Light.ttf) format('truetype');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Open Sans'), local('OpenSans'), url(OpenSans-Regular.ttf) format('truetype');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+ src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(OpenSans-Semibold.ttf) format('truetype');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Open Sans Bold'), local('OpenSans-Bold'), url(OpenSans-Bold.ttf) format('truetype');
+}
+
+body {
+ background-color: #ECECEC;
+ color: #4E5255;
+ font: 12px/1.4 "Open Sans","Lucida Sans Unicode","Lucida Grande",sans-serif;
+ margin: 0;
+}
+
+#container {
+ background: none repeat scroll 0 0 #FFFFFF;
+ border-left: 1px solid #CECECE;
+ border-right: 1px solid #CECECE;
+ box-shadow: 6px 6px 6px #E3E3E3, -6px 6px 6px #E3E3E3, 6px -6px 6px #E3E3E3, -6px -6px 6px #E3E3E3;
+ margin: 0 auto;
+ max-width: 1003px;
+}
+
+#content {
+ background-color: #ffffff;
+ margin-top: 4px;
+ height: 100%;
+}
+#content sub{
+ font-size: 12px;
+}
+
+
+#footer {
+ background-color: #F1F1F1;
+ border-top: 1px solid #CFCFCF;
+ height: 42px;
+ min-height: 42px;
+ width: 100%;
+ position: absolute;
+ bottom: 0;
+}
+
+.section {
+ margin-left: 170px;
+ margin-right: 170px;
+ padding-top: 20px;
+}
+
+a {
+ color: #009ADA;
+ outline: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a:active {
+ outline: none;
+}
+
+a:link {
+ outline: none;
+}
+
+H1 {
+ color: #656565;
+ font-size: 20px;
+ font-weight: 300 !important;
+ padding-bottom: 8px;
+}
+
+H2 {
+ color: #656565;
+ font-size: 14px;
+ font-weight: 300 !important;
+}
+
+sub {
+ color: #a3a7aa;
+}
+
+.prod-title {
+ position: relative;
+ top: 50%;
+ transform: translateY(-50%);
+ height: 11px;
+}
+
+.prod-img {
+ height: 100%;
+}
+
+.WarnBlock {
+ color: #000000;
+ padding: 15px;
+ background-color: #FFD272;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.header-top {
+ background-color: #383F45;
+ border-bottom: 1px solid #53565B;
+ height:32px;
+ max-height:32px;
+ padding-left:15px;
+}
+
+.header-bottom {
+ background-color: #46494E;
+ border-bottom: 1px solid #272A2F;
+ height:43px;
+ max-height:43px;
+}
+
+.header-line {
+ background-color: #C82E2E;
+ border-bottom: 1px solid #272A2F;
+ max-height:3px;
+ height:3px;
+}
+
+.header-panel {
+ height: 80px;
+ min-height: 80px;
+ width: 100%;
+}
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Bold.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Bold.ttf
new file mode 100755
index 0000000..fd79d43
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Bold.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-BoldItalic.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-BoldItalic.ttf
new file mode 100755
index 0000000..9bc8009
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-BoldItalic.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-ExtraBold.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-ExtraBold.ttf
new file mode 100755
index 0000000..21f6f84
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-ExtraBold.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-ExtraBoldItalic.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-ExtraBoldItalic.ttf
new file mode 100755
index 0000000..31cb688
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-ExtraBoldItalic.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Italic.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Italic.ttf
new file mode 100755
index 0000000..c90da48
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Italic.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Light.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Light.ttf
new file mode 100755
index 0000000..0d38189
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Light.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-LightItalic.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-LightItalic.ttf
new file mode 100755
index 0000000..68299c4
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-LightItalic.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Regular.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Regular.ttf
new file mode 100755
index 0000000..db43334
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Regular.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Semibold.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Semibold.ttf
new file mode 100755
index 0000000..1a7679e
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-Semibold.ttf differ
diff --git a/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-SemiboldItalic.ttf b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-SemiboldItalic.ttf
new file mode 100755
index 0000000..59b6d16
Binary files /dev/null and b/forms/common-themes/src/main/resources/theme/rh-sso/welcome/resources/OpenSans-SemiboldItalic.ttf differ
diff --git a/testsuite/integration/src/test/resources/META-INF/keycloak-server.json b/testsuite/integration/src/test/resources/META-INF/keycloak-server.json
index 41c2cf5..3481b0a 100755
--- a/testsuite/integration/src/test/resources/META-INF/keycloak-server.json
+++ b/testsuite/integration/src/test/resources/META-INF/keycloak-server.json
@@ -37,7 +37,7 @@
},
"theme": {
- "default": "keycloak",
+ "default": "rh-sso",
"staticMaxAge": "${keycloak.theme.staticMaxAge:2592000}",
"cacheTemplates": "${keycloak.theme.cacheTemplates:true}",
"cacheThemes": "${keycloak.theme.cacheThemes:true}",
@@ -85,4 +85,4 @@
"sessionsOwners": "${keycloak.connectionsInfinispan.sessionsOwners:2}"
}
}
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/META-INF/keycloak-server.json b/testsuite/integration-arquillian/tests/base/src/test/resources/META-INF/keycloak-server.json
index 0978231..6cded5e 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/resources/META-INF/keycloak-server.json
+++ b/testsuite/integration-arquillian/tests/base/src/test/resources/META-INF/keycloak-server.json
@@ -46,7 +46,7 @@
},
"theme": {
- "default": "keycloak",
+ "default": "rh-sso",
"staticMaxAge": "${keycloak.theme.staticMaxAge:2592000}",
"cacheTemplates": "${keycloak.theme.cacheTemplates:true}",
"cacheThemes": "${keycloak.theme.cacheThemes:true}",